TA/Unity2016. 3. 22. 01:20

Well-formed XML Document

 

XML 1.0 스펙에 정의된 특정한 문법규칙을 따르는 XML.
XML문서를 설계하려면 게층구조의 트리로 표현하는것이 가장 바람직하다.

XML 문서는 Well-formed 를 만족시키기 위해 반드시 요소 작성 규칙을 따라야 한다.

 

XML의 문법

<?xml version="1.0"?>
<note>
    <to>철수</to>
    <from>다니엘</from>
    <heading>기억할 것!</heading>
    <body>이번 주 약속 잊지말길!</body>
</note>
* '<' 와 '>' 사이의 단어들은 xml태그이다.
* 정보는 시작 태그와 끝 태그 사이에 담겨지게 된다
* 태그는 짝을 이루고 있다.
요소의 시작 태그와 끝 태그 사이에 들어 있는 텍스트는 요소 컨텐츠(element content)라고
부른다. 태그 사이에 있는 컨텐츠는 대부분의 경우 다른 요소와 달리 그냥 데이터이다.
이런 경우에는 요소 컨텐츠는 파싱된 문자 데이터(Parsed Character DATA)라고 부른다.
보통 줄여서 PCDATA라고도 한다.
* XML요소 작성 규칙
1. 모든 XML 요소는 시작태그 다음에는 반드시 마침태그(closing tag)를 가져야 한다.
HTML에서는 마침 태그(closing tag)가 필요 없는 요소들도 있었다:
<p>이것은 하나의 ?騈甄?amp;lt;p>이것은 또 다른 문단이다
하지만 XML에서는 다음과 같이 마침 태그를 반드시 가져야 한다:
<p>이것은 하나의 문단이다</p>
<p>이것은 또 다른 문단이다</p>
2. XML 태그는 대소문자 구분이 있다.
XML 태그들은 대소문자 구분을 한다. 태그 <Letter>와 태그 <letter>는 서로 다르다.
그러므로 시작 태그와 마침 태그는 반드시 대소문자를 맞춰줘야 한다:
<Message>이렇게 하면 잘못된 것이다</message> 
<message>이렇게 해야 맞다</message>
3. 모든 XML 요소는 중첩 원리를 잘 지켜야 한다.
HTML에서 어떤 요소들은 다음과 같이 서로 부적절하게 중첩될 수 있었다:
<b><i>이 문장은 볼드체와 이탤릭체로 나타난다</b></i>
 
하지만 XML에서는 다음과 같이 서로 중첩을 잘 시켜줘야 한다:
<b><i>이 문장은 볼드체와 이탤릭체로 나타난다</i></b>
4. 모든 XML 문서는 반드시 최상위 요소를 하나만 가질수 있다.
모든 XML 문서는 한 쌍의 최상위 요소 태그를 포함해야 한다. 
모든 다른 요소들은 이 최상위 요소 하부로 중첩되어야 한다.
모든 요소들은 자신의 하부로 자식 요소들을 가질 수 있으며
모든 요소들은 시작 태그와 마침 태그의 쌍을 정확히 이뤄야 한다.
또한 모든 하위 요소들은 자신의 부모 밑에서 순서를 잘 지켜 중첩되어 있어야 한다:
<root>
  <child>
    <subchild>
    </subchild>
  </child>
</root>
5. 속성 값은 쿼테이션(' 또는 ")으로 감싸줘야 한다.
XML 요소들은 HTML에서와 마찬가지로 name과 value 속성을 가질 수 있다. 
XML에서 속성 값은 항상 쿼테이션(' 또는 ")으로 감싸줘야 한다.
아래 두 개의 XML 문서를 보면, 첫 번째 것은 틀렸고, 두 번째 것은 맞았다.
어떤 부분이 맞고 틀렸는지 살펴보기 바란다:
<?xml version="1.0"?>
<note date=12/11/99>
 <to>철수</to>
 <from>다니엘i</from>
 <heading>기억할 것</heading>
 <body>이번 주 약속 잊지말길!</body>
</note>
 
<?xml version="1.0"?>
<note date="12/11/99">
 <to>철수</to>
 <from>다니엘i</from>
 <heading>기억할 것</heading>
 <body>이번 주 약속 잊지말길!</body>
</note>
6. XML은 텍스트 안에 들어 있는 공백을 유지한다.
HTML에서는 두개 이상의 공백문자을 포함하기 위해서는 &nbsp;를 사용해야만 했다. 
<b>&nbsp; 텍스트 &nbsp;</b>
하지만 XML에서는 태그사이에 텍스트와 함께 사용된 공백문자는 그대로 유지된다.
<b> 텍스트 </b>
-------------------------------------------------------------------------------------------------------
* XML 요소이름 작성규칙
    -  시작문자 가능 ' 문자, '_'
    -  시작문자 불가능 ' 숫자, xml
    -  첫문자 뒤에는 '-'나 '.', 숫자를 사용할 수 있다.
    -  이름은 공백을 포함할 수 없다.
    - ':'를 포함하지 말자. 예약어 이다.
    -  대소문자를 확실히 구분한다.
    -  여는 문자('<') 뒤에 공백을 두면 안 된다.

* 빈요소
아무 데이터도 갖지 않는 요소
<name></name> // 다음과 같은 방법도 사용가능 : <name/>
빈 요소가 자주 쓰이는 장소는 PCDATA를 전혀 갖지 않거나 요소에서 모든 정보를
속성으로 지정하는 경우에 많이 쓰인다.


* XML 선언

문서가 어떤 특정한 타입이라고 알려줄 수 있는 것은 종종 매우 유용하다. XML은 파서에게 몇가지 정보를 알려줌으로써 XML이 어떤 문서인지를 알려 줄 수 있는 XML선언을 제공한다.

 

<?xml version='1.0' encoding='euc-kr' standalone='yes'?>

 

 위의 코딩은 전형적인 XML선언이다.
 XML선언은 "<?xml"문자로 시작해서 "?>"로 끝이 난다.
 선언문에 반드시 version 속성을 표시 해야 하지만 encoding과 standalone 속성은 선택적이다.  속성은 반드시 version, encoding, standalone 순으로 쓰여져야 한다.


Encoding : XML 파서에게 텍스트가 어떤 인코딩을 사용할 것인지 지정해 준다.
standalone : 이 속성의 값으로는 "yes"또는 "no"를 가져야만 한다.
    - Yes : 이 문서가 외부 파일의 요소에 의존하고 있지 않다는 것을 알림.
             (파서에게 이 문서가 갖고 있는 정보를 완벽하게 처리하기 위해 
               필요한 파일이 단지 이것 하나면 충분하다는 사실을 알림)
    - No : 이 문서가 다른 파일에 의존 한다.(외부 파일의 그림, 개체 등을 참조)
 

 


* 주석사용

 

    -  주석은 '<!--'로 시작해서 '-->'로 끝난다

    -  주석은 XML선언 이전에 표현할수 없다.

    -  태그 안에는 주석을 쓸수 없다.
        <first></first <!--이름을 나타낸다-->>

 

    -  주석문 안에다 '--'를 사용할 수 없다. 
        <!--여기 부터는 해석을 하지 않는다 --주석이니까^^-->


 

[사용예제]


    <?xml version="1.0" encoding="euc-kr"?>
    <birth>
          <!--생일의 월 정보-->
              <month>09</month>
          <!--생일의 날짜 정보-->
          <day>33</day>
    </birth>

 

IE에 포함되어 있는 XML파서는 주석을 애플리케이션에 전달한다. 그래서 IE는 우리가 작성한 주석을 화면에 표시한다. 하지만 대부분의 경우, 이런 정보는 오직 소스 파일을 읽는 사람만이 사용할 것이라고 가정하고 만들어졌기 때문에, 주석에 적혀 있는 정보가 애플리케이션에 전달될 지 안될 지는 어떤 파서를 사용하느냐에 달려 있는 것이다.

 

자료출처 : http://korea.internet.com

[출처] [펌] XML문법|작성자 메멘토


'TA > Unity' 카테고리의 다른 글

Unity 해상도 설정  (0) 2016.12.29
Unity Editer 단축키  (0) 2016.03.22
Unity json 파싱  (0) 2016.03.22
ngui 줄바꿈 버그 수정  (0) 2016.03.22
객체의 자식을 찾을 떄, 객체를 자식으로 넣을때..  (0) 2015.07.12
Posted by 프리랜서 디자이너