XML
eXtensible Markup Language의 약자로 새로운 Markup 언어를 정의하기 위해 W3C에서 만든 메타 언어입니다. 
HTML과는 달리 새로운 태그를 정의하여 확장하고 데이터를 기술할 수 있는 특징을 가지고 있습니다.

XML 특징
 -유연하고 개방적인 표준 기반 형식을 채택함으로써 뛰어난 상호 운영성을 제공
 -기존 Web 기술(인터넷기반의 프로토콜 및 메커니즘)과 함께 사용 가능
 -프로그래밍 언어에 대해 독립적이고 여러 Application을 사용 가능하도록 지원
 -Unicode 기반

XML Document의 종류
 Well-formed document (잘 짜인 문서)
- XML 1.0 recommendation 스펙을 준수하여 작성된 문서를 의미
- TrustForm System에서는 Business Data를 저장하는 개념인 인스턴스를 구성하는 용도로 사용됨
 Valid document (유효한 문서)
- Well-formed document이면서 동시에 XML로 개발된 특정 Markup 언어에 맞게 작성된 문서를 의미
- TrustForm System에서는 XForms의 Host language 개념으로 XML 기반의 XHTML이 사용됨


XForms
HTML Form을 대체하기 위해 W3C에서 만든 XML 기반의 차세대 Form 기술입니다

XForms 특장점
 -Next generation of HTML forms
 -Richer and more flexible than HTML forms
 -Will be the forms standard in XHTML 2.0
 -Platform and device independent
 -Separates data and logic from presentation
 -Uses XML to define form data
 -Stores and transports data in XML documents
 -Contains features like calculations and validations of forms
 -Reduces or eliminates the need for scripting
 -W3C Recommendation

XForms 동작방식
 단독으로 수행되지 않고 다른 Markup 언어(Host language) 내부에 위치하여 사용됨
 Host language 내부에 XForms을 적용함으로써 다양한 클라이언트를 수용할 수 있음
 TrustForm System에서는 Host language로 XHTML이 사용됨

XForms 동작방식
 단독으로 수행되지 않고 다른 Markup 언어(Host language) 내부에 위치하여 사용됨
 Host language 내부에 XForms을 적용함으로써 다양한 클라이언트를 수용할 수 있음
 TrustForm System에서는 Host language로 XHTML이 사용됨

XForms 구성요소
 Model : Data section
- Form 내부에서 사용되는 데이터를 저장하고, 가공하거나 서버로 전달하는 역할
 UI controls : Presentation section
- User Interface를 구성하는 컨트롤
 Event handlers : Logic section
- User Interface에서 발생하는 이벤트를 처리하는 부분으로써 TrustForm System에서는 JavaScript나 VBScript 언어를 사용가능

XForms 문서구조
-HTML Form과 마찬가지로 화면을 구성하는 기본적인 컨트롤에 대한 정의가 있으며, XML 데이터를 서버와 통신하는 방법에 대한 정의도 함께 있습니다. XForms 문서는 크게 Data부분과 UI부분으로 구분됩니다.
 Head 영역
           -  Head 구간은 데이터와 관련된 객체들과 Global Script가 위치하게 됩니다
    Body 영역
           - Body 영역은 각 컨트롤 및 컨트롤의 이벤트를 처리하는 스크립트가 함께 오게 됩니다

XPath
XML 문서의 데이터 부분을 참조하기 위한 W3C의 표준 문법 규약으로 XML Element를 참조하기 위하여 파일 시스템에서 사용되는 개념과 유사한 경로(Path)를 사용합니다. 
XForms 스펙에서 분리된 데이터와 UI 컨트롤을 맵핑하기 위한 용도로 사용됩니다.

XPath 특장점
 -XML 문서의 특정 부분을 자유 자재로 접근할 수 있는 기능 제공
 -파일 시스템의 디렉터리 구조와 유사한 개념으로 절대경로와 상대 경로를 지원
 -Node, Date, Time, String, Number, Boolean 데이터타입과 관련된 Method들을 제공
 -XML DOM 트리를 구성하는 노드나 노드셋에 접근하기 위해 Location Path와 XPath Method로 구성된 XPath expression을 사용하여 데이터에 접근하거나 검색할 수 있음



XML 기본 문법
 
인스턴스는 처음에 설명한 것과 같이 XML 문법을 사용합니다. 따라서 인스턴스를 구성하기 위해서는 기본적인 XML 문법에 대해서 알아야 합니다. 
물론 TrustForm에서 제공하는 기능인 인스턴스 창을 이용하여서 구성하면 간단한 인스턴스는 XML 기본문법을 몰라도 사용가능합니다. 
그러나 좀 더 복잡하고 많은 데이터를 다루기 위해서는 기본적인 XML 문법을 이해하고 인스턴스를 설계해야합니다.

 

1. XML 기본문법

XML 문법 중 가장 기본문법은 “Well-Formed XML”입니다.

Well-Formed XML 이란 XML 1.0 Spec에 정의된 특정문법규칙을 따르는 XML입니다.

 

XML 1.0 Spec은 다음과 같습니다.

1. 모든 Start-Tags는 하나의 End-Tags와 짝으로 구성되어야만 합니다.

2. Tag는 겹쳐서 쓸 수 없습니다.

3. XML 문서는 하나의 Root Element만을 갖습니다.

4. Element 이름은 Element 이름 작성규칙을 따릅니다.

5. XML은 대소문자를 구분합니다.

6. XML은 Tag안의 공백을 유지합니다.

 

1 <root> 
2       <name> 
3               <first>John</first> 
4               <middle>Fitzgerald Johansen</middle> 
5               <last>Doe</last> 
6       </name> 
7 </root>

 

위의 XML 문서는 Well-Formed XML 문서입니다. 위의 XML 문서를 살펴보면서 Well-Formed XML에 대해서 알아보겠습니다.

XML 문서를 보면 “<”와 “>”로 이루어진 부분이 있습니다. 이 부분이 Element입니다. Element는 XML 문서 내에서 데이터를 표현하기 위한 태그정의와 데이터를 말합니다. 위의 XML 문서에서 Element는 <root>, <name>, <first>, <middle>, <last>가 있습니다. 각각의 Element는 Start-tag와 End-tag로 이루어져 있습니다. Start-tag에 ‘/’를 붙여주면 End-tag가 됩니다.

 

1 <root> <name> <first> <middle> <last> <- Start-tag 
2 </last> </middle> </first> </name> </root> <- End-tag

 

위와 같이 Start-tag와 End-tag는 겹쳐지지 않고 순서대로 사용됩니다. 만약 위의 소스에서 <first>와 <middle> 사이에 </name>가 온다면 위의 XML 문서는 Well-Formed XML이 아닙니다.(2번 위반)

 

1 <root> <name> <first> </name> <middle> <last> 
2 </last> </middle> </first> </root>

 

또 다음과 같이 <root> Element가 XML 문서의 모든 Element를 포함하고 있지 않는다면 Well-Formed XML이 아닙니다.(3번 위반)

 

1 <root> 
2 </root> 
3 <name> 
4   <first>John</first> 
5   <middle>Fitzgerald Johansen</middle> 
6   <last>Doe</last> 
7 </name>

 

위의 XML 문서는 Root Element가 <root>와 <name> 두개가 존재하고 있습니다. (Root Element는 대부분 <root>로 사용하지만 꼭 <root>를 사용할 필요는 없습니다.) 위의 XML 문서에서 <root></root>를 제거하면 Well-Formed XML 조건을 만족하게 됩니다.

마지막으로 Element는 사용자가 정의할 수 있습니다. 즉 사용자가 임의로 이름을 붙여서 작성할 수 있습니다. 그러나 Element를 작성하는 데는 일정한 형식이 있습니다. Element 이름 작성 규칙에 대해서는 다음 장에서 자세하게 알아보겠습니다.

이와 같이 기본적인 XML 문법을 만족해야만 XML 문서로 사용할 수 있습니다.

 

2. Element

XML 기본문법을 살펴보면서 간단하게 Element에 대해서 알아봤습니다. Element는 XML 문서 내에서 데이터를 표현하기 위한 태그정의와 데이터를 의미합니다. XML문서에서 Element의 이름은 사용자가 정의할 수 있습니다. 즉 <이름>, <나이>, <주소> 와 같은 것들이 XML 문서에서 모두 유효한 Element입니다. 그러나 Element를 정의할 때 Element 이름 작성규칙에 따라 정의해야만 합니다. 이를 위반하면 Well-Formed XML이 아니므로 XML 문서로 사용할 수 없습니다.

Element 이름 작성규칙은 다음과 같습니다.

1. 시작문자는 문자 또는 ‘_(Under Line)’만이 올 수 있습니다.

2. 첫 문자 다음에는 ‘-’, ‘.’, 숫자가 올 수 있습니다.

3. ‘:’ 문자를 포함할 수 없습니다.(NameSpace의 예약어임)

4. 대소문자 구분 없이 ‘XML’또는 ‘xml’로 시작할 수 없습니다.

5. ‘<’ 문자 뒤에 공백허용이 안됩니다. ‘>’앞에는 공백이 허용됩니다.

(주의! Empty Element인 ‘/>’ 사이에는 공백이 허용되지 않습니다.)

 

Element 이름 작성규칙에 대하여 올바르게 작성된 Element와 틀리게 작성된 Element의 간단한 예를 보면서 알아보겠습니다.

 

올바른 이름 작성규칙 적용의 예

<First.Name></First.name>

<First-Name></First-Name>

 

잘못된 이름 작성규칙 적용의 예

<XML-FirstName></XML-FirstName> (4번 규칙 위반)

<1.FirstName></1.FirstName> (1번 규칙 위반)

<First=Name></First=Name> (2번 규칙 위반)

<First Name></First Name> (5번 규칙 위반)

 

3. Empty Element

Empty Element란 내용이 없는 Element를 의미합니다.

 

1 <name> 
2   <first>John</first> 
3   <middle></middle> 
4   <last>Doe</last> 
5 </name>

 

위의 XML에서 <middle> Element와 같이 내용이 없는 Element인 경우

축약된 형태로 표현이 가능합니다.

다음의 두 XML은 동일한 의미를 갖습니다.

 

1 <middle></middle> 
2 <middle/>

 

4. Attribute

이번에는 Attribute에 대해서 알아보겠습니다. Attribute란 Element의 내용을 보충해 주는 속성입니다. 속성의 사용은 사용자가 정의하기에 따라서 달라질 수 있습니다. 다음 예를 살펴보면 속성의 사용이 어떤 의미를 갖는지를 알 수 있습니다.

 

1 <root> 
2   <cd serial="AB1102"> 
3       <title>CD1</title> 
4       <artist>Singer</artist> 
5       <date>20051215</date> 
6   </cd> 
7 </root>

 

위의 XML 문서는 CD의 정보를 보여주고 있습니다. <cd> Element를 살펴보면 Attribute로 “serial”을 포함하고 있습니다. 이 ‘serial' 속성은 특정 Application에서는 필요로 하지만 또 다른 Application에서는 필요로 하지 않을 수도 있습니다. 위의 ’serial'을 <cd> Element에 속한 다른 Element들과 같이 <serial> Element로 사용할 수 있지만 위와 같이 Attribute로 사용해서 ‘serial' 정보가 특정 Application에서만 사용되는 정보로 구분할 수가 있습니다.

 

Attribute도 Element와 같이 작성 규칙을 갖고 있습니다. Attribute의 작성규칙에 대해서 알아보겠습니다.

1. Start-Tag에 사용합니다.

2. 반드시 Name과 Value가 존재해야 합니다.

3. Element 이름 작성규칙을 따라야 합니다.

4. 하나의 Element안의 Attribute는 유일해야 합니다.

 

올바르게 작성된 Attribute와 틀리게 작성된 Attribute의 예를 살펴보면서 설명하겠습니다.

올바른 Attribute 예

<Name NickName="SmileMan">John</Name>

 

잘못된 Attribute 예

<Name>John</Name NickName="SmileMan"> (1번 규칙 위반)

<Name NickName>John</Name> (2번 규칙 위반)

<Name NickName="SmileMan" NickName="SuperMan">John</Name> (4번 규칙 위반)

 

잘못된 Attribute 예에 대해서 몇 가지만 살펴보겠습니다. 두 번째 예는 Attribute가 Attribute 이름만 있고 값이 존재하지 않는 경우입니다. 이렇게 값이 존재하지 않는 Attribute를 사용할 때는 Value 부분을 쌍 따옴표(“”) 또는 홀 따옴표(‘’)를 사용해서 값이 없는 Attribute라는 것을 명시해 줘야 합니다. 세 번째 예는 하나의 Element에 동일한 이름을 갖는 Attribute 두개가 동시에 사용된 경우입니다. 이런 경우 두개의 Attribute를 구분할 수 없게 되므로 에러가 발생하게 됩니다.

 

5. 주석

XML 문서에서도 주석을 사용할 수 있습니다. 주석 역시 간단한 작성규칙이 있습니다. 주석의 작성규칙은 다음과 같습니다.

1. <!-- 문자열로 시작해서 --> 문자열로 종결됩니다.

2. Tag 안에는 사용할 수 없습니다.

3. “--” 문자를 사용할 수 없습니다.

 

다음은 주석이 사용된 예입니다.

 

1 <root> 
2   <!-- 다음은 이름을 나타내는 Element입니다.--> 
3   <name> 
4       <first>John</first> 
5       <middle>Fitzgerald Johansen</middle> 
6       <last>Doe</last> 
7   </name> 
8 </root>

 

6. Element 내용(PCDATA와 CDATA)

PCDATA와 CDATA에 대해서 알아보겠습니다. 이 두 데이터 타입은 Element의 내용을 표시할 때 사용되는 개념입니다. 다음 예를 보면서 두 데이터 타입에 대해서 알아보겠습니다.

 

1 <name> 
2   <first>John</first> 
3   <middle>Fitzgerald Johansen</middle> 
4   <last>Doe</last> 
5 </name>

 

<first>John</first>는 하나의 Element입니다. 이 Element에서 Start-Tag와 End-Tag사이에 있는 ‘John’이 PCDATA입니다. 이와 PCDATA는 Element의 태그사이에 있는 문자열부분으로 파싱된 문자 데이터(Parsed Character DATA)입니다.

PCDATA에서 사용할 수 없는 예약된 문자들이 있습니다. 예를 들면 “<”와 “&과 같은 문자입니다.

 

1 <비교문>x < 7 && x > 5</비교문>

 

위의 <비교문> Element는 Well-Formed XML이 아닙니다. 그 이유는 <비교문> Element의 내용인 PCDATA가 올바르지 않게 작성되어 있기 때문입니다. XML 처리기는 Element의 내용인 ‘x<7 && x>5’ 부분을 처리하면서 “< 7 && x >”를 하나의 태그로 인식하려고 할 것입니다. 이 부분은 Element 이름 작성규칙 중 5번(공백문자를 포함)을 위반하고 있습니다. 또 이 부분을 넘어간다고 해도 ‘&&’에서 예약어를 사용해서 또 에러가 발생합니다.

이러한 데이터를 Element의 내용으로 사용하는 방법은 두 가지가 있습니다. 첫 번째 방법은 위의 문자들을 이스케이프 문자를 사용해서 표현해주는 방법입니다. 두 번째 방법은 CDATA를 사용하는 방법이 있습니다.

 

6.1. 이스케이프 문자

앞에서 본 것과 같이 두 문자가 발생시키는 오류를 피하려면 ‘<’ 문자를 ‘&lt;’로 바꿔 쓰고 ‘&’ 문자를 &amp;로 바꿔서 쓰면 됩니다. 이렇게 하면 위에서 작성한 XML이 Well-Formed XML이 됩니다.

 

1 <비교문>x &lt; 7 &amp;&amp; x > 5</비교문>

 

XML 처리기는 위에서 사용한 이스케이프문자를 화면에 보여줄 때는 ‘&lt;’와 ‘&amp;’를 ‘<’와 ‘&’ 문자로 바꿔서 보여주게 됩니다.

‘&lt;’와 ‘&amp;’는 엔터티 레퍼런스(entity reference)라고 합니다. XML에는 다음과 같은 엔터티들이 정의되어 있습니다.

 

‣ &amp;  - & 문자

‣ &lt;     - < 문자

‣ &gt;     - > 문자

‣ &apos;  - ' 문자

‣ &quot;  - " 문자

 

6.2. CDATA

만약 이스케이프 문자를 많이 사용하게 되면 문서가 이해하기 힘들어지게 됩니다. 이럴 경우에는 CDATA 섹션을 사용할 수 있습니다.

CDATA 섹션은 파싱되지 않는 데이터(Character DATA)를 의미합니다. 즉 CDATA 섹션에 작성된 텍스트는 XML 처리기가 파싱하지 않습니다.

위에서 작성한 XML 문서를 다음과 같이 CDATA 섹션을 사용하면 Well-Formed XML이 됩니다.

 

1 <비교문><!CDATA[x &lt; 7 &amp;&amp; x > 5]]></비교문>


 

CDATA 섹션은 "<![CDATA["로 시작해서 “]]>”로 끝납니다. 이 사이에 있는 문자열은 모두 사용자가 작성한 그대로 화면에 표시됩니다.

이 CDATA 섹션은 TrustForm을 사용하면서 자주 볼 수 있습니다. 스크립트를 작성할 때 스크립트의 처리부분을 CDATA 섹션을 사용해서 작성합니다.

 

1 <script type="javascript"> 
2   <![CDATA[ 
3   function myFunc(){ 
4       alert("이곳은 스크립트의 CDATA 섹션입니다"); 
5   } 
6   ]]> 
7 </script>

   

위와 같이 스크립트를 사용할 때는 XML 처리기가 스크립트를 파싱하지 않게 CDATA 섹션을 사용해서 분리시킵니다.

 
 
 
출처 : TrustForm4.0  Help

'트러스트폼' 카테고리의 다른 글

트러스트폼 버튼 엑션(늘리고 줄이고)  (0) 2012.07.12
트러스트폼 단축키  (0) 2012.07.12
트러스트폼 단축키  (0) 2012.07.12
트러스트폼 엘리멘트  (0) 2012.07.12
트러스트 폼이란?  (0) 2012.07.12
Posted by 사라링
BLOG main image
.. by 사라링

카테고리

사라링님의 노트 (301)
JSP (31)
J-Query (41)
JAVA (24)
VM-WARE (0)
디자인패턴 (1)
스크랩 (0)
스트러츠 (3)
안드로이드 (11)
오라클 (45)
우분투-오라클 (1)
이클립스메뉴얼 (6)
스프링3.0 (23)
자바스크립트 (10)
HTML5.0 (17)
정보처리기사 (1)
기타(컴퓨터 관련) (1)
문제점 해결 (3)
프로젝트 (2)
AJAX (4)
하이버네이트 (3)
트러스트폼 (11)
Jeus (2)
재무관리(회계) (5)
정규식 (5)
아이바티스 (8)
취미 (2)
소프트웨어 보안 관련모음 (0)
정보보안기사 (6)
C언어 베이직 및 프로그램 (3)
보안 관련 용어 정리 (2)
넥사크로 (6)
Total :
Today : Yesterday :