XML DTD 예제 - XML DTD yeje

�н� ��ǥ

  • ���������� DTD�� �ۼ��ϴ� ���, DTD�� �⺻ ������ ������.
    • <!DOCTYPE ... > ���� : ���� DTD, �ܺ� DTD, ȥ����
    • ���(Element) ������ : 5���� ������ �� - ����, �ڽĿ��, ȥ����, EMPTY, ANY
    • �Ӽ�(Attribute) ������
      • �Ӽ��� �⺻�� ���� : �ʱⰪ, #REQUIRED, #IMPLIED, #FIXED
      • �Ӽ��� ���� 10���� : ������, CDATA, ID, IDREF, ENTITY, NMTOKEN, NOTATION
    • ��ƼƼ(Entity) ���� : ����/����/����� ��ƼƼ, ����/�ܺ� ��ƼƼ, �Ϲ�/�Ķ���� ��ƼƼ
  • DTD�� �Ѱ�����?
    • XML Schema, Relax-NG

DTD ����

  • DTD �Ǵ� XML���� ����������  �ʿ伺
    • ������ ��ȯ �� ����
    • ������ ������ ����, �ϰ��� ����
    • ���� SW���� ���� ������ Ȱ���� ����
  • �ּҷ� ����    
  • DTD(Document Type Definition) �ۼ� => ������ �κ����� ����
    • �������� ���� (Document Type Declarations)  : <!DOCTYPE ... >
    • ��� ���� (Element Declarations)                    : <!ELEMENT ... >
    • �Ӽ� ���� (Attribute Declarations)                    : <!ATTLIST ... >
    • ��ƼƼ ���� (Entity Declarations)                     : <!ENTITY ... >
    • �����̼� ���� (Notation Declarations)             : <!NOTATION ... >

�������� ���� (Document Type Declaration)

  • <!DOCTYPE  ��Ʈ��Ҹ�  [ ... DTD ���� ... ] >
    • ������ DTD�� ���Խ��� �����ϱ�
      • DTD�� �����ϰ� => ���/���� �ÿ� DOCTYPE ����
      • DTD (Document Type Definition) �� ���� �ʿ�
    • ���� DTD�� �ܺ� DTD�� ����
  • ���� DTD (Internal DTD)
    • �������� ���� ������ ��ȣ [ ... ] �ȿ� DTD ���� ����
    • ��)
    • <?xml version="1.0" encoding="EUC_KR"?>
      <!DOCTYPE  address-book  [
        <!ELEMENT address-book (entry+)      ...
        <
      !ELEMENT entry (name, pic?, address, tel*)>
        <!ELEMENT name  (#PCDATA)>
        <!ELEMENT address (#PCDATA)>

      ]>
      <address-book>
          <entry>
              <name>ȫ�浿</name>
              <address>����� ��걸 û�ĵ� 2�� 53-12</address>
          </entry>
      </address-book>

  • �ܺ� DTD (External DTD)
    • �������� ���𿡼� DTD ���� ������ �Ѵ�
      • <!DOCTYPE  ��Ʈ��Ҹ�  SYSTEM  "DTD ���ϸ�" >
    • SYSTEM �ĺ��� �̿� :
      • URI �������� ǥ��
      • ��)

      <!DOCTYPE  name  SYSTEM  "name.dtd">
      <!DOCTYPE  name  SYSTEM  "file:///C:/samples/name.dtd">
      <!DOCTYPE  name  SYSTEM  "http://mm.sm.ac.kr/lec/name.dtd">

    • PUBLIC �ĺ��� �̿�
      • ISO 9070 ǥ����� ���� ISO�� ��ϵ� �̸��� DTD�� ����
      • ���� : "�����ǥ//DTD������//Ŭ���� �̸� �� ����//���//����"
                 +(ISO�� ���), -(�̵��),  ���� : optional
      • XML ó���Ⱑ PUBLIC �ĺ��ڸ� ����� ã�� ���� �� �� ������ �ִ� URI ����
      • �뵵 : ���� DTD�� ��� (��, XHTML) ������ �ٿ���� �ʰ� ���� DTD ���
      • ��)

      <!DOCTYPE  HTML  PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> 
      <!DOCTYPE  html  PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
              "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
      <!DOCTYPE  svg  PUBLIC "-//W3C//DTD SVG 20010904//EN"
               "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/ svg10.dtd">

  • ����/�ܺ� ȥ���� DTD
    • ��)
    • <!DOCTYPE  address-book  SYSTEM  "ex03-02.dtd" [
          <!ELEMENT memo (#PCDATA)>
          <!ELEMENT bold ANY>
      ]>

���(Element) ����

    <!ELEMENT  ��Ҹ�  ������� >

    • ����� ���� : 5���� ���� �� (Content Model)
      • #PCDATA, �ڽĿ��(elements), ȥ��(mixed), EMPTY, ANY
    • ��)

    <!ELEMENT address-book (entry+)>
    <!ELEMENT entry (name, pic?, address, tel*, fax*, email*)>
    <!ELEMENT name (#PCDATA | fname | lname)*>
    <!ELEMENT pic EMPTY>
    <!ELEMENT address (postal-code?, region, (city|gun|gu), (eup|myun|dong), street)>
    <!ELEMENT postal-code (#PCDATA)>

  • ���ڵ�����(Text) ������
    • �׻� �ܸ�(leaf) ���
    • ��)

    <!ELEMENT name (#PCDATA) >
    <!ELEMENT postal-code (#PCDATA)>

    <name>ȫ�浿</name>
    <postal-code>140-742</postal-code>

  • �ڽ� ���(Element) ������
    • ������ - ����Ʈ ������ :
      • ,(�޸�) : AND ����, �ڽĿ�Ҹ� ����(sequences)������ ����
      • |(��) : Exclusive-OR ����, �ڽĿ�Ҹ� ����(choices)���� ����
    • ������ - Cardinality ������
      •   ����,  *,  +,  ?
    • ��ȣ : grouping
    • ��)
    <!ELEMENT address-book (entry+)>
    <!ELEMENT entry (name, pic?,
      address, tel*, fax*, email*)
    >
     ...

    <!ELEMENT address  (region, 
      (city|gun|gu), (eup|myun|dong))
    >
     ...
    ...
    <
    address> <region>�����</region><gu>��걸</gu><dong>û�ĵ�2��</dong> </address>
    ...
    <
    address><region>���</region><city>���ֽ�</city> <dong>������</dong></address>
  •   ȥ����(Mixed) ������
    • �ؽ�Ʈ�� �ڽĿ�Ұ� ȥ���ϴ� ���
    • DTD �ۼ� ��
    <!ELEMENT name (#PCDATA)>
    <name> ȫ�浿 </name>
    <!ELEMENT name 
        (#PCDATA |( fname, lname))>
    <name> ȫ�浿 </name>
    <name> <fname>�浿</fname>
            <lname>ȫ</lname> </name>
    • ȥ���� �������� �� 
      • ��Ģ : ���� ������ ���, �� �տ� #PCDATA, �� ���� (��ü) * ������
    <!ELEMENT name 
      
    (#PCDATA | fname | lname)*>
    <name>�浿<lname>ȫ</lname></name>
    <name><fname>�浿</fname>ȫ</name>
    <name> �츮�� ���۸� <fname>�浿</fname> 
                 <lname>ȫ</lname> </name>

    <!ELEMENT  p  (#PCDATA | b | i )*>

    <p><i>�츮�� <b>���۸�</b></i> �ڶ����� <b>ȫ�浿</b> ���� !!!</p>
  • ����(EMPTY) ������
    • ���� �ܵ� �±�, �׻� �ܸ�(leaf) ���
    • ��)

    <!ELEMENT  br  EMPTY>
    <!ELEMENT pic EMPTY>

    <br />
    <pic img="hong.gif" />

  • ���(ANY) ������
    •   � �����̳� ���� => ��� ��ġ, ��� ������ ����
    • ��)
    <!ELEMENT mark ANY>

    <mark> <name>ȫ�浿</name> </mark>
    <
    mark> <tel>710-9424</tel>
                <email></email> </
    mark>
    <name><
    mark>ȫ</mark>�浿</name> 

  •   ����) ���������� �µ��� DTD �����ϱ�
  • <?xml version="1.0" encoding="EUC-KR"?>
    <!DOCTYPE memo [
    <!ELEMENT memo (body) >
    <!ELEMENT body (p+) >
    <!ELEMENT p (#PCDATA) >
    ]>
    <memo>
      <body>
        <p>ȸ�ǰ� ���� 2�� ����,  ���� ���</p>
        <p>ȸ�� ���� ���θ� ȸ�� ���</p> 
      </body>
    </memo>
    <?xml version="1.0" encoding="EUC-KR"?>
    <!DOCTYPE memo  ... ... >
    <memo>
      <body>
        <p>ȸ�ǰ� ���� 2�� ����,  ���� ���</p>
      </body>
      <body>
        <p>ȸ�� ���� ���θ� ȸ�� ���</p> 
      </body>
    </memo>
    <?xml version="1.0" encoding="EUC-KR"?>
    <!DOCTYPE memo  ... ... >
    <memo>
      <body>
        <p>ȸ�ǰ� ���� 2�� ����,  ���� ���</p>
      </body>
      <p>ȸ�� ���� ���θ� ȸ�� ���</p>
    </memo>
    <?xml version="1.0" encoding="EUC-KR"?>
    <!DOCTYPE memo  ... ... >
    <memo>
      <body> </body>
      <body>
          <p> </p>
      </body>
    </memo>

�Ӽ�(Attribute) ����

    <!ATTLIST  ��Ҹ�  �Ӽ���   �Ӽ�����   �⺻������>
                                         ( �Ӽ�����Ʈ )

  • ��)
  • <ATTLIST tel preferred
                  (true|false) "false">
    <!ELEMENT name  (fname, lname))>
    <!ATTLIST  name  
    nickname
                  CDATA  #REQUIRED>

    <tel preferred="true">02-710-9424</tel>
    <
    tel>043-854-9919</tel>
     ...
    <name
    nickname="���۸�"> <fname>�浿</fname> <lname>ȫ</lname> </name>

  • �Ӽ��� �⺻�� ���� (���� 4���� �ϳ�)
    • default(�ʱⰪ) : �Ӽ� ���� �������� ���� �� �⺻ ������ ���
    • #REQUIRED : �Ӽ� ���� �ݵ�� �����Ǿ�� ��
    • #IMPLIED : �Ӽ� ���� ���� �� ���� (����SW���� ������ ���� ���)
    • #FIXED : DTD�� ����� ������ ���� ���
  • �Ӽ� �� ���� ��

    <!ATTLIST doc  version  CDATA  "1.00" >
     �� <doc version="1.00"> My Report </doc>
     �� <doc> My Report ... </doc>
     �� <doc version="2.00"> My Report </doc>

    default �Ӽ��� ����
    version="1.00"
    version="1.00" (�ļ��� ����)
    version="2.00"

    <!ATTLIST doc version  CDATA  #REQUIRED >
     
    �� <doc version="1.00"> My Report </doc>
     
    X  <doc> My Report ... </doc>
     
    �� <doc version="2.00"> My Report </doc>

    ����� ���� (�ʼ�)
    version="1.00"
    * ��ȿ�� ���� ����
    version="2.00"

    <!ATTLIST doc version  CDATA  #IMPLIED >
     
    �� <doc version="1.00"> My Report </doc>
     
    �� <doc> My Report ... </doc>
     
    �� <doc version="2.00"> My Report </doc>

    ����� ����
    version="1.00"
    version=? (���� SW���� ����)
    version="2.00"

    <!ATTLIST doc version  CDATA  #FIXED "1.00" >
     
    �� <doc version="1.00"> My Report </doc>
     
    �� <doc> My Report ... </doc>
     
    X  <doc version="2.00"> My Report </doc>

    ������ ���
    version="1.00"
    version="1.00" (�ļ��� ����)
    * ��ȿ�� ���� ����
  •   ���� (�߸� ���� ����?)
  • <!ELEMENT ��� (��ǰ��, ����, ������)>
      <!ELEMENT ��ǰ�� (#PCDATA)>
      <!ELEMENT ���� (#PCDATA)>
      <!ATTLIST ����  ���� CDATA
    #REQUIRED>
      <!ELEMENT ������ (#PCDATA)>
      <!ATTLIST ������  ���� CDATA  
    #IMPLIED >
    <���>
      <��ǰ��>��Ų</��ǰ��>
      <���� ����="�޷�">25</����>   
    <!--����-->
      <������ ����="��">3</������>  
    <!--����-->
    </���>
    <���>
      <��ǰ��>��Ų</��ǰ��>
      <����>25000</����>     
    <!--����-->
      <������>30</������>    
    <!-- ����=??? -->
    </���>
    <!ELEMENT ��� (��ǰ��, ����, ������)>
      <!ELEMENT ��ǰ�� (#PCDATA)>
      <!ELEMENT ���� (#PCDATA)>
      <!ATTLIST ����  ���� CDATA  #FIXED "��">
      <!ELEMENT ������ (#PCDATA)>
      <!ATTLIST ������  ���� CDATA  "%" >
    <���>
      <��ǰ��>��Ų</��ǰ��>
      <���� ����="�޷�">25</����>   
    <!--����-->
      <������ ����="��">3</������>  
    <!--����-->
    </���>
    <���>
      <��ǰ��>��Ų</��ǰ��>
      <����>25000</����>     
    <!-- ����="��" -->
      <������>30</������>    
    <!-- ����="%" -->
    </���>
  • �Ӽ� Ÿ�� : �Ӽ� ���� ���� (10����)
  • ������ Ÿ��

    ������ ����Ʈ ������ ���, |�� �����Ǵ� �� �߿� �ϳ� ���

    ���ڿ� Ÿ��

    CDATA   �ؽ�Ʈ ���ڿ� (��Ʈ��)

    ��ū Ÿ��

    ID �ش� ��Ҹ� ���� ���� �̸�, XML �̸� ��Ģ �ؼ�
    IDREF   ����� ID���� ���� �ִ� ��ҿ� ���� ����(��ũ)
    IDREFS  �������� �����Ǵ� IDREF�� ���
    ENTITY   �̸� ���ǵ� �ܺ� ��ƼƼ �̸��� ����
    ENTITIES  �������� �����Ǵ� ��ƼƼ�� ���
    NMTOKEN   �ϳ��� �̸� ��ū (������ ���� �ܾ�)
    NMTOKENS  �������� �����Ǵ� NMTOKEN�� ���

    ��Ÿ

    NOTATION  ���������� ����� NOTATION type ���
  • ������ �Ӽ�
    • ��)

    <!ELEMENT ���� (#PCDATA)>  
    <!ATTLIST ����  ���� (��|�޷�|��) "��">
    <!ELEMENT ������ (#PCDATA)>  
    <!ATTLIST ������ ���� (%|��)  
    #IMPLIED>

    <���� ����="��">25000</����>     <!--����-->
    <���� ����="�޷�">25</����>       <!--����-->
    <���� ����="����">20</����>       <!--����-->
    <������ ����="%">30</������>    
    <!--����-->
    <������ ����="����">0.3</������>
    <!--����-->
    <����>25000</����>      <!-- ����="��" -->
    <������>30</������>     
    <!-- ����=??? -->
  • CDATA�Ӽ� : �Ϲ����� ���� ������ ��
    • ��)

    <!ELEMENT list (name*)>
    <!ELEMENT name (#PCDATA)>
    <!ATTLIST name  nickname CDATA "Ȳ����">

    <list>
      <name nickname="���۸�">ȫ�浿</name>
      <name>�Ӽ���</name>
      <name nickname="Ȳ����">����</name>
    </list>

  • ID �Ӽ� : ��Ҹ� �����ϱ� ���� �̸�
    • ID �Ӽ����� ���� ������ ������ ��
    • ID �Ӽ�����  XML �̸� ��Ģ�� ����
    • �� ��ҿ��� �ϳ��� ID �Ӽ��� ����
    • ID �Ӽ����� #IMPLIED �Ǵ� #REQUIRED �� ���� ����
      ��) ID �Ӽ� ��� DTD �� �ش� ����

    <!ELEMENT �з� (#PCDATA)>
    <!ATTLIST �з� group_id ID
    #IMPLIED>

    <�з� group_id="c03">ȭ��ǰ</�з�>
    <�з� group_id="e07">������ǰ</�з�>
    <�з� group_id="d05">�Ź�</�з�>
    <�з�>�Ƿ�</�з�>
    <!ELEMENT person (name, email*, addr?) >
    <!ATTLIST person perIDID #REQUIRED >
    <person perID="sblim" > <name> �Ӽ���</name> </person>
    <person perID="hong01" > <name> ȫ�浿 </name> </person>
    • �߸��� DTD ��)
    • <!ATTLIST �з� group_id ID #IMPLIED
                              name_id ID
      #IMPLIED >
      ...
      <!ATTLIST person perID  ID #FIXED >

    • �߸� �ۼ��� ���� ��)
    • <�з� group_id="c03">ȭ��ǰ</�з�>
      <�з� group_id="c03">������ǰ</�з�>
      <�з� group_id="105">�Ź�</�з�>

      <person perID="sb%1" > <name> �Ӽ���</name> </person>

  • IDREF, IDREFS �Ӽ�
    • �������� ����� �ٸ� ����� ID�� ����
    • IDREFS ������ �������� ����
    • ��)

    ...
    <!ELEMENT �з� (#PCDATA)>  
    <!ATTLIST �з� group_id ID
    #IMPLIED >
    ...
    <!ELEMENT ��ǰ�� (#PCDATA)>  
    <!ATTLIST ��ǰ�� ���� IDREF #REQUIRED>

    <�з� group_id="c03">ȭ��ǰ</�з�>
    <�з� group_id="e07">������ǰ</�з�>
    <�з� group_id="d05">�Ź�</�з�>
    ...
    <��ǰ�� ����="c03">��Ų</��ǰ��>
    <��ǰ�� ����="e07">������ ī�޶�</��ǰ��>
    <��ǰ�� ����="d05">�ȭ</��ǰ��>
    <��ǰ�� ����="e07">������</��ǰ��>
    • ��)

    ...
    <!ELEMENT person (name, email*, addr?) >
    <!ATTLIST person perID ID #REQUIRED >
    ...
    <!ELEMENT book (title, pages, ... )>
    <!ELEMENT title (#PCDATA)>
    <!ATTLIST title author IDREF #IMPLIED
                          authors IDREFS #IMPLIED>

    <person perID="sblim" > <name> �Ӽ��� ...
    <person perID="hong01" > <name> ȫ�浿 ...
    ...
    <book>
      <title author="sblim">XML Ŭ����</title>
      <pages>458</pages>
    </book> 
    <book>
      <title authors="hong01 sblim">XML Bible </title> <pages>652</pages>
    </book> 
  • NMTOKEN, NMTOKENS �Ӽ�
    • XML �̸����� �ణ Ȯ��� ��Ģ�� ���� ���ڿ� : CDATA �� ���
      • NMTOKEN�� ���۹��ڿ� �߰����� ���о���. ��, ����, '.', '-'�ε� ������ �����ϴ�.
  • NMTOKENS �� �������� ���еǴ� �̸�
  • ��)

<!ELEMENT name (#PCDATA)>
<!ATTLIST name ���� CDATA
#IMPLIED
                       ��ȣ NMTOKEN #IMPLIED>

<name ����="���۸�" ��ȣ="�屺">ȫ�浿</name>
<name ����="386" ��ȣ="Ȳ����">�Ӽ���</name>
<name ����="õ��" ��ȣ="1004">�鼳</name>
                            
<!-- ���� �ƴ� (����) --> 

<!ATTLIST name honor
                           NMTOKENS #IMPLIED>

<name honor="Mr. Dr. Grand">ȫ�浿</name>
<name honor="Ms ����">������</name>
<name honor="���� 1004">�鼳</name>
                             
<!-- ���� �ƴ� (����) -->  

  • ENTITY, ENTITIES �Ӽ�
    • ENTITY ���� ����� �̸��� ��� (���� ����)
  • NOTATION �Ӽ�
    • NOTATION ���� ����� �̸��� ���������� ��� (���� ����)

ENTITY (��ü)

  • <!ENTITY ��ƼƼ�� "��ƼƼ����" >
    • XML�������� ��� ������ ǥ�� ������ ��ü (���� ��ü�� �ϳ��� entity�� �� �� �ִ�)
      • �뵵 : ���� ����, �ؽ�Ʈ ġȯ, �ٸ� ��� ����, �ܺ� ���� ���� ��
    • ó�� ���� : ����(declaration) => ����(reference) => ġȯ(replacement)
  • ��ƼƼ�� �з�
    • ���� : ���� ��ƼƼ, ���� ��ƼƼ, ����� ���� ��ƼƼ
    • ������� : ����(Internal) ��ƼƼ, �ܺ�(External) ��ƼƼ
    • ������ : �Ϲ�(General) ��ƼƼ, �Ķ����(Parameter) ��ƼƼ
    • �Ľ̿��� : Parsed ��ƼƼ, Unparsed ��ƼƼ
  • ���� ��ƼƼ (Character Entity)
    • &#�����ڵ�;�����ڵ� ���
    • ��) &#169;  &#x00a2;  &#x00a3;  &#x00a5;  =>  ©  ¢  £  ¥
  • ���� ��ƼƼ (Built-in Entity)
    • 5�� ���� : &amp;  &lt;  &gt;  &apos;  &quot;  =>  &  <  >  '  "
  • �Ϲ� ��ƼƼ (General Entity)
    • DTD ������ <!ENTITY ��ƼƼ�� "��ƼƼ����" > �� �����ϰ�,  
      ����������  &��ƼƼ��; ���� ���
      • ��ũ�� ó�� �̿�, �Ǵ� �ܺ� ����/�̹���/���� �� ����
    • ���� ��ƼƼ ����
      • ��ġ�Ǵ� ���ڿ��� ��ƼƼ ������ ���� ����
    • ��)
    <?xml version="1.0" encoding="EUC-KR"?>
    <!DOCTYPE memo [
      <!ENTITY hong "
    ȫ�浿, ��������">
      <!ENTITY sblim  
         "
    <entry>
            <name>�Ӽ���</name>
            <tel>02-710-9424</tel>
            <email href=''/>
          </entry>
    ">
    ]>
    <memo>
      <header>
         <to> To: &hong; </to>
         <from> From: &sblim; </from>
      </header>
      <body>ȸ�ǰ� ������ �� �����Ͻñ� �ٶ��ϴ�. </body>
    </memo>
    �ٸ� ��Ҹ� �����ϴ� ��ƼƼ�� ���

    * �� �� ��Ҹ� �������� ���� ����/�� ���� ��� ����
    * �����(recursive) ������ �ȵǵ��� ����


     ...
    <to> To: ȫ�浿, �������� </to>
    <from> From:
      
    <entry>
          <name>�Ӽ���</name>
          <tel>02-710-9424</tel>
          <email href=''/>
      </entry>
    </from>
     ...
    • �ܺ� ��ƼƼ ����
      • ��ġ�Ǵ� ���ڿ��� ������ �ܺ� ���Ͽ�
      • SYSTEM �Ǵ� PUBLIC �ĺ��� �̿�
    • ��)

    filename : hong.ent

    <?xml version="1.0" encoding="EUC-KR"?>
    <entry>
        <name>ȫ�浿</name>
        <tel>02-710-9379</tel>
    </entry>


    filename : sblim.ent

    <?xml version="1.0" encoding="EUC-KR"?>
    <entry>
        <name>�Ӽ���</name>
        <tel>02-710-9424</tel>
    </entry>


    <?xml version="1.0" encoding="EUC-KR"?>
    <!DOCTYPE address-book SYSTEM "address-book.dtd" [
       <!ENTITY hong SYSTEM "hong.ent">
       <!ENTITY sblim
    SYSTEM "sblim.ent">
    ]>
    <address-book>
         &hong;
         &sblim;
    </address-book>
    <address-book>  
      <entry>
          <name>ȫ�浿</name>
          <tel>02-710-9379</tel>
      </entry>
      <entry>
          <name>�Ӽ���</name>
          <tel>02-710-9424</tel>
      </entry>
    </address-book>
  • �Ķ���� ��ƼƼ (Parameter Entity)
    • DTD ������ <!ENTITY %��ƼƼ�� "��ƼƼ����" > �� �����ϰ�
      DTD ������
      %��ƼƼ��; ���� ���
    • DTD �������� ��� - DTD�� �����ϰ� ǥ���� ����, ��) ���� ����ϴ� �κ�
    • ���� �Ķ���� ��ƼƼ ����
      ��)
    <!ENTITY % bool '(true | false) "false" '>
    <!ELEMENT address-book (entry+)>
    <!ELEMENT entry (name, address, tel*, email*)>
     ...
    <!ELEMENT tel (#PCDATA)>
    <!ATTLIST tel preferred
    %bool;>
    <!ELEMENT email EMPTY>
    <!ATTLIST email href CDATA #REQUIRED  preferred   %bool;>
    <!ENTITY % prefer 'preferred (true | false) "false" '>
     ...
    <!ELEMENT tel (#PCDATA)>
    <!ATTLIST tel %prefer;>
    <!ELEMENT email EMPTY>
    <!ATTLIST email href CDATA #REQUIRED 
    %prefer;>
    •   �ܺ� �Ķ���� ��ƼƼ
      • �ܺ� ��ƼƼ ������ DTD ���� ���� : DTD �Ϻ� �Ǵ� ��ƼƼ ���
    • ��) DTD �Ϻ�
    <?xml version="1.0" encoding="EUC-KR"?>
    <!DOCTYPE address-book [
      <!ELEMENT address-book (entry+)>
      <!ELEMENT entry (name, address, tel*)>
      
    <!ELEMENT name (#PCDATA)>
      <!ENTITY % addr SYSTEM "address.dtd">
      %addr;
      
    <!ELEMENT tel (#PCDATA)>
      <!ATTLIST tel preferred (true | false) "false">
    ]>
    filename : address.dtd

    <?xml version="1.0" encoding="EUC-KR"?>
    <!ELEMENT address (postal-code?,
                   region, (city|gu), dong, street)>
    <!ELEMENT postal-code   (#PCDATA)>
    <!ELEMENT region        (#PCDATA)>
    <!ELEMENT city          (#PCDATA)>
    <!ELEMENT gu            (#PCDATA)>
    <!ELEMENT dong          (#PCDATA)>
    <!ELEMENT street        (#PCDATA)>

    • ��) ��ƼƼ ���
    <?xml version="1.0" encoding="EUC-KR"?>
    <!DOCTYPE memo [
       <!ELEMENT memo (payment+)>
       <!ELEMENT payment (#PCDATA)>
       <!ENTITY % s-name SYSTEM "initial.ent">
       %s-name;
    ]>
    <memo>
         <payment> &GD; &cent;75, &YY; &yen; 8000, &SB; &pound;5</payment>
    </memo>
    filename : initial.ent

    <?xml version="1.0" encoding="EUC-KR"?>
    <!ENTITY GD "ȫ�浿">
    <!ENTITY SB "�Ӽ���">
    <!ENTITY YY "������">
    <!ENTITY cent "&#x00a2;" > 
    <!ENTITY pound "&#x00a3;" > 
    <!ENTITY yen "&#x00a5;" > 


    ** ��ƼƼ�� ���� ���� => �Ը� ū DTD�� ���� ������ ���ȭ & ����

  • �Ľ̵��� �ʴ� ��ƼƼ (Unparsed Entity)- ���� ����
    • �Ϲ������� ��ƼƼ�� ���������� �Ľ�
      • ��, ���� �������� ���� �������� �ۼ��� ��ȿ�� ����
    • �� XML �����͸� ������ �� �ִ� ��Ŀ���� �ʿ�. ��, �̹��� ������
      • NDATA ������ ���� ǥ�� (�̸� NOTATION���� ���ǵ� ����)
    • ��

    <!ENTITY  myPhoto  SYSTEM  "http:/mm.../images/photo01.gif"  NDATA  gif >
    <!ENTITY  newPhoto  SYSTEM  "file:///C:/images/photo02.gif"  NDATA  gif >
    <!ENTITY w3c-logo  PUBLIC "-//...//...//EN"  NDATA  gif>
      . . .
    <!ATTLIST pic  image  ENTITY  #IMPLIED>
    <!ATTLIST pics  images  ENTITIES  #IMPLIED>
     . . .
    <pic  image="myPhoto"  ... >
    <pics 
    images="myPhoto  newPhoto  w3c-logo"  ... >

NOTATION- ���� ����

  • XML �ļ��� ó�� ���ϰ� �ܺ� ���ҽ��� ������ �ʿ�
    • unparsed entity�� ��� ���� ���� �� �ĺ��ڷ� �Ǵ��Ͽ� ����SW�� ����
    • ��
    <!NOTATION  GIF89a  PUBLIC 
            "-//CompuServe//NOTATION Graphics Interchange Format 89a//EN" 
            "C:\windows\kodakprv.exe">
    <!NOTATION  jpg  PUBLIC  "+//ISBN 0-7923-9432-1::Graphic Notation//NOTATION JPG Graphic Interchange Format//EN">
    <!NOTATION  GIF89a  SYSTEM "GIF">      <!-- MiME ���� -->
    <!NOTATION  GIF89a  SYSTEM "image/gif">
    <!NOTATION  jpeg  SYSTEM "JPG">
    <!NOTATION  bmp  SYSTEM "file:///c:/windows/paint.exe">     <!-- ���� ǥ�� -->
    <!NOTATION  memo  SYSTEM "file:///c:/windows/notepad.exe">

DTD�� �Ѱ�

  • ����
    • ���ø����̼ǰ� ���������� ��ȿ�� ������ ����
    • �Ӽ��� ���Ͽ� ���� ���� �����̳� �⺻�� ������ ����
    • ������ ���ȭ ����
  • ���� DTD ������
    • XML ������ �ٸ��� : SGML ������ ����
    • ������ ���Ŀ� ���� ���� ���� : ����� ������ �ؽ�Ʈ�� ����, ���� ó�� �Ұ���
    • ���� �� ����� �Ѱ� : ���/��ü���� ���� �ҿ���, �ݺ��� ���� �Ѱ� (��, "k�� �ݺ�" �Ұ���)
    • XML ���ӽ����̽� ������ �ҿ���
  • ���ο� ���� ���� ����� ���� ����
    • XML Schema
    • RELAX-NG (Regular Language description for XML - Next Generation)