아래는 완벽한 XML문서입니다.
<?xml version = "1.0"?>
<contact-info>
<name>Tanmay Patil</name>
<company>TutorialsPoint</company>
<phone>(011) 123-4567</phone>
</contact-info>
위의 예에서두 가지의 정보가 있다는 사실을 알 수 있습니다.
- <contact-info>와 같은 Markup
- Tutorials Point나 전화번호과 같은 텍스트나 문자 데이터
아래는 XML 문서에서 다른 종류의 마크업과 텍스트를 쓰기 위한 문법 규칙을 묘사한 그림입니다.
위 그림 각각의 부분을 상세히 살펴봅시다.
XML Declaration
XML문서는 선택적으로 XML 선언을 가지고 있을 수 있습니다.
<?xml version = "1.0" encoding = "UTF-8"?>
위와 같은 형식으로 쓰여집니다. version은 XML 버전을 의미하고 encoding은 문서에서 사용되는 문자 인코딩을 의미합니다.
Syntax Rules for XML Declaration
- XML 선언은 대소문자를 구분합니다. <?xml> 부분의 xml은 반드시 소문자로 작성하여야 합니다.
- 문서가 XMl 선언을 포함한다면, XML선언은 XML 문서의 가장 첫 문장이 되어야 합니다.
- XMl 선언은 반드시 XML 문서의 가장 첫 문장이 되어야 합니다.
- HTTP 프로토콜은 XML 선언에 있는 인코딩 값을 덮어쓸 수 있습니다.
Tags and Elements
XML 파일은 몇개의 XML element로 구성되어 있습니다. 이 XML element는 XML node 또는 XML tag라고 불리기도 합니다. XML element의 이름은 아래처럼 <>로 둘러싸여 있습니다.
<element>
Syntax Rules for Tags and Elements
Element Syntax - 각 XML element는 start element와 end element로 둘러쌀 필요가 있습니다.
<element>....</element>
좀 더 간단한 경우는 아래와 같이 쓸 수 있습니다.
<element/>
Nesting of Elements - XML 엘레먼트는 여러개의 XML 엘레먼트를 자식처럼 가질 수 있습니다. 하지만 이 자식 element들은 구간이 겹칠 수 없습니다. 즉, 각 엘레먼트의 end tag는 가장 최근의 매치되지 않은 start tag와 같은 이름을 가져야 합니다.
<?xml version = "1.0"?>
<contact-info>
<company>TutorialsPoint
<contact-info>
</company>
위는 적절하지 못한 nested tag의 예입니다.
아래처럼 써야 합니다.
<?xml version = "1.0"?>
<contact-info>
<company>TutorialsPoint</company>
<contact-info>
Root Element - XML 문서는 오직 하나의 루트 엘레먼트를 가질 수 있습니다. 예를 들면, 아래와 같은 XML문서는 옳지 않습니다.
<x>...</x>
<y>...</y>
왜냐하면 x와 y 엘레먼트 모두 루트 엘레먼트 없이 top level에 나타났기 때문입니다.
아래와 같이 구현해야 맞습니다.
<root>
<x>...</x>
<y>...</y>
</root>
Case Sensitivity - XML 요소의 이름은 대소문자를 구별합니다. 즉, start element와 end element는 대소문자까지 정확히 일치해야 합니다.
예를 들어, <contact-info>는 <Contact-Info>와 다릅니다.
XML Attributes
attribute는 각 엘레먼트에 이름/값 짝을 사용해 하나의 속성을 지정합니다. XML element는 하나 이상의 attribute를 가질 수 있습니다. 예를 들어
<a href = "http://www.tutorialspoint.com/">Tutorialspoint!</a>
여기서 href는 attribute의 이름이고, http://www.tutorialspoint.com/은 attribute 값입니다.
Syntax Rules for XML Attributes
- XML에서 Attribute의 이름은 HTML과 달리 대소문자를 구분합니다. 즉, HREF와 href는 두 가지의 서로 다른 attribute로 인식됩니다.
- 같은 attribute는 두 개의 값을 가질 수 없습니다. 아래의 예는 attribute b가 두 번 중복되었기 때문에 적절하지 못합니다.
<a b = "x" c = "y" b = "z">....</a>
- attribute 이름은 쌍따옴표 없이 정의됩니다. 반면 attribute 값은 항상 쌍따옴표로 표시됩니다. 아래의 예는 옳지 못한 xml syntax입니다.
<a b = x>....</a>
위의 예에서 XML 값이 쌍따옴표 없이 정의되었습니다.
XML References
Reference들은 XML 문서에 추가적인 텍스트나 마크업을 더하거나 포함하도록 합니다. Reference는 항상 예약된 문자인 &심볼로 시작하고 end symbol은 ";"입니다. XML은 두 가지 종류의 reference를 가지고 있습니다.
- Entity References - entity reference는 시작과 끝 구분자 사이에 이름을 포함합니다. 예를 들어 & 같은 경우 amp는 이름입니다. 이름은 미리 정의된 text나 마크업의 문자열을 참조합니다.
- Character References - 이러한 reference는 A와 같은 레퍼런스를 포함합니다. #는 숫자 앞에 옵니다. #뒤의 숫자는 문자의 unicode를 참조합니다. A 는 알바벳 A를 의미합니다.
XML Text
XML element와 XML attribute의 이름은 대소문자를 구분합니다. 문자의 인코딩 문제를 피하기 위해서 모든 XML파일은 Unicode UTF-8 또는 UTF-16 파일로 저장됩니다.
XML element들과 XML attribute들 사이의 space나 tab, 새 줄과 같은 공백 문자는 무시됩니다.
몇몇 문자는 XML syntax 자체에 의해 예약되어 있습니다. 그러므로 그러한 문자는 바로 사용할 수 없습니다. 이러한 문자를 사용하기 위해서는 아래의 표와 같은 형식으로 사용해야 합니다.
Not Allowed Character | Replacement Entity | Character Description |
< | < | less than |
> | > | greater than |
& | & | ampersand |
' | ' | apostrophe |
" | " | quotation mark |
'XML' 카테고리의 다른 글
XML - Overview (0) | 2019.05.14 |
---|---|
XML - Home (0) | 2019.05.14 |
공지 (0) | 2019.05.14 |