Theory/Data Exchange

DTD

요소와 속성의 규칙의 목록으로 문서의 구조를 정의하여, XML 해석기가 문서가 규칙에 맞게 작성되었는지 검사하는데 사용한다.


DTD 선언

  • XML 파일 안에 DTD를 선언한다.
    <!DOCTYPE root-element [element-declarations]>
  • XML 파일 안에 외부 DTD 파일을 선언한다.
    <!DOCTYPE root-element SYSTEM "filename">


XML 구성 항목

  • 요소(Elements)
    • XML을 이루는 중요한 구성 항목이다.
    • 데이타(다른 요소, 문자 데이타, 속성 또는 이들을 혼합한 형태)를 감기 위해 사용한다.
  • 속성(Attributes)
    • 부가적인 정보를 담는다.
    • 요소가 담고 있는 데이타(문자 데이타)의 메타데이타를 정의할 때 사용한다.
  • 엔티티(Entities)
    • 문자 데이타나 특별한 문자의 단축 문자를 정의한다.
    • 엔티티는 세개의 부분으로 구성된다. 앰퍼샌드(&), 엔티티 이름, 세미콜론(;)
    • 몇몇 문자는 특별한 의미를 가진다. 예를 들면, '<' 문자는 XML 태크의 시작을 정의한다.
    • XML 해석기의 오류를 방지하는 몇몇 문자 참조가 있다. (XML 소개 참조)
  • PCDATA : 해석되는 문자 데이타
  • CDATA : 해석기가 해석하지 않는 문자 데이타 (XML 소개 참조)


요소 선언

<!ELEMENT element-name category>
<!-- or -->
<!ELEMENT element-name (element-content)>
  • category
    • EMPTY
    • ANY
  • element-content
    • #PCDATA
    • 자식 요소들
      • 개수를 지정할 수 있다.
      • 빈도 연산자 의미
        + 하나 이상
        * 0 또는 하나 이상
        ? 0 또는 하나
        없음 하나
    • 혼합
<!ELEMENT br EMPTY>
<!ELEMENT from (#PCDATA)>
<!ELEMENT note ANY>
<!ELEMENT note (to,from,heading,body)>
<!ELEMENT note (message+)>
<!ELEMENT note (message*)>
<!ELEMENT note (message?)>
<!ELEMENT note (to,from,header,(message|body))>
<!ELEMENT note (#PCDATA|to|from|header|message)*>


속성 선언

<!ATTLIST element-name attribute-name attribute-type default-value>
  • attribute-type

     

    설명
    CDATA 값으로 문자 데이타가 온다.
    (en1|en2|..) 값으로 반드시 나열된 값만 올 수 있다.
    ID 값으로 유일한 id가 온다.
    IDREF 값으로 다른 요소의 id가 온다.
    IDREFS 값으로 다른 요소의 id의 목록이 온다.
    NMTOKEN 값으로 유효한 XML 이름이 온다.
    NMTOKENS 값으로 유효한 XML 이름의 목록이 온다.
    ENTITY 값으로 DTD에 명시된 엔티티가 온다.
    ENTITIES 값으로 DTD에 명시된 엔티티 목록이 온다.
    NOTATION 값으로 DTD에 명시된 표기법(notation)만 가능하다.
    xml: 값으로 미리 정의한 xml 값이 온다.
  • default-value
      설명
    value 속성의 기본 값
    #REQUIRED 속성은 필수이다.
    #IMPLIED 속성은 생략 가능하다.
    #FIXED value 속성의 값은 고정이다.
<!ATTLIST payment type CDATA "check">
<!ATTLIST square width CDATA "0">
<!ATTLIST person number CDATA #REQUIRED>
<!ATTLIST contact fax CDATA #IMPLIED>
<!ATTLIST sender company CDATA #FIXED "Microsoft">
<!ATTLIST payment type (check|cash) "cash">


엔티티 선언

  • 내부 엔티티 선언
    <!ENTITY entity-name "entity-value">
  • 외부 엔티티 선언
    <!ENTITY entity-name SYSTEM "URI/URL">
<!ENTITY dj "Daniel Jun">
<!ENTITY c SYSTEM "http://unipro.pe.kr/entities.dtd">


관련 링크


신고

'Theory > Data Exchange' 카테고리의 다른 글

JSON  (0) 2017.02.01
XML 스키마  (0) 2012.12.28
DTD  (0) 2012.12.27
XML  (0) 2012.12.21

알림

이 블로그는 구글에서 제공한 크롬에 최적화 되어있고, 네이버에서 제공한 나눔글꼴이 적용되어 있습니다.

카운터

Today : 68
Yesterday : 341
Total : 179,320