SooBlending

[XML] 개념 및 기본 문법 본문

Programming/XML

[XML] 개념 및 기본 문법

블랜더 2017. 11. 30. 12:48

< XML의 개념 >


XML(eXtensible Markup Language, 확장성 마크업 언어) 

 : HTML 같은 고정된 형식이 아닌  확장이 가능한 언어이다. HTML은 태그가 한정되어 있는 반면 XML은 문서의 내용에 관련된 태그를 사용자가 직접 정의할 수 있으며 그 태그를 다른 사람들이 사용하도록 할 수 있다. XML은 본질적으로 다른 언어를 기술하기 위한 언어, 즉 메타언어이다.



[1]  document ::= prolog element Misc* 



[22]  prolog ::= XMLDecl? Misc* (doctypedecl Misc*)? 



[23]  XMLDecl ::= '<?xml' VersionInfo EncodingDecl? SDDecl? S? '?>'

 

[24]  VersionInfo ::= S 'version' Eq (' VersionNum ' | " VersionNum ") 


[3]  S ::= (#x20 | #x9 | #xD | #xA)+ 



[25]  Eq ::= S? '=' S? 


[26]  VersionNum ::= ([a-zA-Z0-9_.:] | '-')+ 


[27]  Misc ::= Comment | PI |  S 



[15]  Comment ::= '<!--' ((Char - '-') | ('-' (Char - '-')))* '-->' 


    <!--  comment  -->        (O)

    <!--  com-me-nt  -->      (O)

    <!--  com- -me-nt  -->    (O)    

    <!--  com--me-nt  -->     (X) 설명문내에 연속된 '--' 사용 불가!!



[39]  element ::= EmptyElemTag  | STag content ETag 


[44]  EmptyElemTag ::= '<' Name (S Attribute)* S? '/>' 


                        <태그명  속성명1="속성값" 속성명2="속성값" />


===============================================================


< XML문법정리 > ---> well-formed(잘 구성된) XML문서!!


1. 최소 한개이상의 element를 가져야 함.

   test.xml  ===>   <A/>

   

2. 문서 전체를 감싸는 한 개의 엘리먼트(Root Element)가 있어야 함.

   test.xml  ===>   <A/>

                    <B/>

                          ===> (X)


   test.xml  ===>  <ROOT>  

                    <A/>

                    <B/>

                   </ROOT>

                          ===> (O)

                          

3. 시작태그가 있다면 그것에 매핑되는 끝태그가 반드시 존재해야 함.

   태그종류)

    - 시작태그  <person>

    - 끝태그    </person>

    - 빈태그    <person/>

    

   예) 

      <root>

          <br>

      </root>

             ===> (X)                  

      <root>

          <br></br>

      </root>

             ===> (O)                  

      <root>

          <br/>

      </root>

             ===> (OO)                  


4. XML은 대소문자를 구분

    <person> </Person>  (X) ---> 끝태그 없음 에러 발생!!

    <person> </person>  (O)


5. 엘리먼트는 꼬이면 안된다.

    <a>

        <b></b>

        <c></c>

    </a>

    ----> (O)  b,c엘리먼트(자식)는 a엘리먼트(부모)에 포함됨.

    

    <a>

        <b></b>

        <c>

    </a>

        </c>

    ----> (X) a,c엘리먼트 누가 부모이고 자식인지 알 수 없음 : 에러!!

    

6. xml선언은 전체 생략가능하나 선언하는 것을 권장       

  <?xml version='1.0' encoding='UTF-8'   ?>

     ===> version은 생략 불가

     ===> version속성을 먼저, encoding속성은 나중에 기술.

     ===> '<?xml' 앞에 공백(whitespace)을 쓰면 안됨!!!


7. 태그의 내용(content)에 제한된 문자가 있다. 

   ===> '&'  '<'   ']]>'

         ===> 사용하면 에러

                  ===> 해결책) 

                           - 제한된 문자를 replace()메소드로 변환

                                    replace('<','&lt;')

                           - CDATA섹션을 사용                                    


   속성값에 제한된 문자.

    ===> '&'  '<'


8. 속성값은 반드시 인용부호(작은 따옴표, 큰 따옴표)를 사용.


9. 서로 다른 속성은 반드시 공백을 통해 구분

    <table border=1 cellpadding="5">    (X) 인용부호 없음

    <table border='1'cellpadding="5">   (X) 속성명앞에 공백없음

    <table border='1' cellpadding="5">  (O)

    <table border='1' 

    

           cellpadding="5">             (O)


10. 주석문(설명문,comment)에 제한된 문자

    ===>  '--'

    <!-- c-o-m-m-e-n- -t -->     (O)

    <!-- comm--ent -->           (X)



'Programming > XML' 카테고리의 다른 글

[XML] DOM 파싱 SAX 파싱 차이점  (0) 2022.11.24
Comments