반응형

◆ NMTOKEN
이 형식은 하나 이상의 알파벳, 숫자, 하이픈(-), 밑줄(_), 콜론(:), 마침표(.)로 구성된 값들만을 허용하며 공백을 포함 시킬 수 없습니다.
NMTOKEN 속성 값은 C++, Java, JavaScript의 변수에 적합한 이름과 매우 유사하므로 이들 이름을 내부 응용프로그램에서 자연스럽게 사용할 수 있습니다.

아래 예는 SHIP_STATE 라는 속성 이름을 선언하여 주문 내용이 선적되는 지역의 2글자 코드를 저장하도록 하고 이 속성을 NMTOKEN으로 하여 속성값이 하나 이상의 단어가 될 가능성을 배제시킵니다.
<?xml version = "1.0" standalone="yes"?>
<!DOCTYPE DOCUMENT [                           
<!ELEMENT DOCUMENT (CUSTOMER)*>                
<!ELEMENT CUSTOMER (NAME,DATE,ORDERS)>         
<!ELEMENT NAME (LAST_NAME,FIRST_NAME)>           
<!ELEMENT LAST_NAME (#PCDATA)>                  
<!ELEMENT FIRST_NAME (#PCDATA)>                 
<!ELEMENT DATE (#PCDATA)>                      
<!ELEMENT ORDERS (ITEM)*>                      
<!ELEMENT ITEM (PRODUCT,NUMBER,PRICE)>         
<!ELEMENT PRODUCT (#PCDATA)>                   
<!ELEMENT NUMBER (#PCDATA)> 
<!ELEMENT PRICE (#PCDATA)>                     
<!ATTLIST CUSTOMER
    SHIP_STATE NMTOKEN #REQUIRED>
]>
<DOCUMENT>
    <CUSTOMER SHIP_STATE = "CA">
        <NAME>
            <LAST_NAME>Smith</LAST_NAME>
            <FIRST_NAME>Sam</FIRST_NAME>
        </NAME>
        <DATE>October 15, 2003</DATE>
        <ORDERS>
            <ITEM>
                <PRODUCT>Tomatoes</PRODUCT>
                <NUMBER>8</NUMBER>
                <PRICE>$1.25</PRICE>
            </ITEM>
            <ITEM>
                <PRODUCT>Oranges</PRODUCT>
                <NUMBER>24</NUMBER>
                <PRICE>$4.98</PRICE>
            </ITEM>
        </ORDERS>
    </CUSTOMER>
    <CUSTOMER SHIP_STATE = "LA">
        <NAME>
            <LAST_NAME>Jones</LAST_NAME>
            <FIRST_NAME>Polly</FIRST_NAME>
        </NAME>
        <DATE>October 20, 2001</DATE>
        <ORDERS>
            <ITEM>
                <PRODUCT>Bread</PRODUCT>
                <NUMBER>12</NUMBER>
                <PRICE>$14.95</PRICE>
            </ITEM>
            <ITEM>
                <PRODUCT>Apples</PRODUCT>
                <NUMBER>6</NUMBER>
                <PRICE>$1.50</PRICE>
            </ITEM>
        </ORDERS>
    </CUSTOMER>
</DOCUMENT>


◆ NMTOKENS
NMTOKENS 속성 형식은 공백으로 구분되는 여러 개의 NMTOKEN들로 속성값을 구성하도록 지정할 수 있습니다.
아래 예는 CONTACT_NAME 속성에 NMTOKENS 형식을 지정해 성과 이름을 공백으로 구분하여 지정하도록 합니다.
<?xml version = "1.0" standalone="yes"?>
<!DOCTYPE DOCUMENT [                           
<!ELEMENT DOCUMENT (CUSTOMER)*>                
<!ELEMENT CUSTOMER (NAME,DATE,ORDERS)>         
<!ELEMENT NAME (LAST_NAME,FIRST_NAME)>           
<!ELEMENT LAST_NAME (#PCDATA)>                  
<!ELEMENT FIRST_NAME (#PCDATA)>                 
<!ELEMENT DATE (#PCDATA)>                      
<!ELEMENT ORDERS (ITEM)*>                      
<!ELEMENT ITEM (PRODUCT,NUMBER,PRICE)>         
<!ELEMENT PRODUCT (#PCDATA)>                   
<!ELEMENT NUMBER (#PCDATA)> 
<!ELEMENT PRICE (#PCDATA)>                     
<!ATTLIST CUSTOMER
    CONTACT_NAME NMTOKENS #IMPLIED>
]>
<DOCUMENT>
    <CUSTOMER CONTACT_NAME = "George Starr">
        <NAME>
            <LAST_NAME>Smith</LAST_NAME>
            <FIRST_NAME>Sam</FIRST_NAME>
        </NAME>
        <DATE>October 15, 2003</DATE>
        <ORDERS>
            <ITEM>
                <PRODUCT>Tomatoes</PRODUCT>
                <NUMBER>8</NUMBER>
                <PRICE>$1.25</PRICE>
            </ITEM>
            <ITEM>
                <PRODUCT>Oranges</PRODUCT>
                <NUMBER>24</NUMBER>
                <PRICE>$4.98</PRICE>
            </ITEM>
        </ORDERS>
    </CUSTOMER>
    <CUSTOMER CONTACT_NAME = "Ringo Harrison">
        <NAME>
            <LAST_NAME>Jones</LAST_NAME>
            <FIRST_NAME>Polly</FIRST_NAME>
        </NAME>
        <DATE>October 20, 2001</DATE>
        <ORDERS>
            <ITEM>
                <PRODUCT>Bread</PRODUCT>
                <NUMBER>12</NUMBER>
                <PRICE>$14.95</PRICE>
            </ITEM>
            <ITEM>
                <PRODUCT>Apples</PRODUCT>
                <NUMBER>6</NUMBER>
                <PRICE>$1.50</PRICE>
            </ITEM>
        </ORDERS>
    </CUSTOMER>
</DOCUMENT>

반응형

+ Recent posts