Web develop/JDBC_XML

[XML] XML 자주쓰이는 문법 정리

ForA 2019. 7. 10. 19:13
728x90
  • Well-formed(잘 구성된) xml 문서
  1. 문서 안에 최소 한개 이상의 element를 가져야함

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

     <A/ >
     <B/ > 
     ==> X
    
     <root>
     <A/ >
     <B/ >
     </root> 
     ==> O. root 이름은 변경 가능
  3. 시작 태그가 있다면 그것에 매핑되는 끝태그가 반드시 존재해야 함

     태그종류)
                     -시작태그 <PERSON>
                     -끝태그   </PERSON>
                     -빈태그   <PERSON/>
  4. xml은 대소문자를 구분함 (참고: HTML은 태그명에 대소문자 구분 안함)

  5. 엘리먼트는 포함관계가 꼬이면 안됨

     <a>
             <b></b>
             <c></c>
     </a>
     ==> O. b,c 엘리먼트(자식)는 a엘리먼트(부모)에 포함됨
                  b와 c는 형제관계(sibling)
    
     <a>
             <b></b>
             <c>
     </a>
     </c>
     ==> X. a,c 엘리먼트: 누가 부모이고 자식인지 알 수 없음
  6. xml선언은 전체 생략가능하나 선언하는 것을 권장.

     <?xml version='1.0' encoding="UTF-8" ?>
                                             ----------------
                                             현재 작성되는 XML문서내에 다국어를 사용하겠음.
- version속성은 생략불가
- 반드시 version속성을 먼저, encoding속성을 나중에 기술
- 속성값은 ' '(작은 따옴표) 또는 " "(큰 따옴표) 사용
- `<?xml` 앞에 공백(whitespace)을 쓰면 절대 안됨
  1. 태그의 내용(content)에 제한된 문자가 있음

    • & , < , ]]> 사용불가

    • 해결책) 제한된 문자를 replace() 메소드로 변환 혹은 CDATA 섹션을 사용

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

    • 속성값에 제한된 문자 & , <

    • CDSect* : Character Data Section. 문자 데이터를 표현하는 영역

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

     HTML의 경우)
     <table border=1 bgcolor=yellow></table> => O
    
     XML의 경우)
     <table border=1 bgcolor=yellow></table> => X
     <table border='1' bgcolor="yellow"></table> => O
  3. 서로 다른 속성은 반드시 공백을 통해 구분

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

    <!--' ((Char - '-') | ('-' (Char - '-')))* '-->
    -------------
    <!-- 설명문 -->
    <!-- comment   -->   (O)
    <!-- com-ment  -->  (O)
    <!-- com-me-nt -->  (O)
    <!-- com--ment -->  (X)
    <!-- com- -ment -->  (O)

document

prolog element Misc*

XML문서의구성 ⇒ 선언 엘리먼트 기타* ⇒ 선언과 엘리먼트가 반드시 존재하여야함

prolog

XMLDecl? Misc* (doctypedec1 Misc*)?

XMLDecl

'<?xml' VersionInfo EncodingDecl? SDDecl? S? '?>'
                      <?xml version ='1.0' ?>

버전은 생략 불가, 인코딩과 SD선언은 생략가능.
전체 정의시 순서 지킬것
<?xml version="1.0" encoding="UTF-8" ?>

Misc

Comment | PI | S

Character Reference

(#x20 | #x9 | #xD | #xA)+
----- ---- --- ----
space tab CR LF

CharData

[^<&]* - ([^<&]* ']]>' [^<&]*)
제외문자=> '<' , '&' , ']]>' // 예약된문자이기 때문