1. 程式人生 > >編寫XML檔案的dtd約束

編寫XML檔案的dtd約束

一、瞭解dtd中的語法規則

1、元素宣告:

<!ELEMENT 元素名稱 類別> <!ELEMENT 元素名稱 (元素內容)>

如:

<!ELEMENT factory EMPTY> ,表示空元素 <!ELEMENT id (#PCDATA)>,元素內容為普通的文字,也就是被解析的字元資料 <!ELEMENT 元素名稱 (子元素名稱1 | 子元素名稱2)>,帶有子元素的寫法 <!ELEMENT 元素名稱 (子元素名稱1,子元素名稱 2)>,帶有子元素的寫法 <!ELEMENT books (book+)>,相同的元素至少出現一次 <!ELEMENT books (book*)>,同元素不出現或者多次出現 <!ELEMENT books (book?)>,同元素不出現或者出現一次

2、屬性

<!ATTLIST 元素名稱 屬性名稱 屬性型別 預設值>

屬性的預設值 #REQUIRED 屬性值是必需的 #IMPLIED 屬性不是必需的 #FIXED value 屬性值是固定的 如:

<!ATTLIST book alias CDATA #REQUIRED>

二、寫出想要的xml檔案內容

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

<books>
    <factory name="北京出版社" />

    <book alias="java">
        <id>111111</id>
        <name>java核心思想</name>
        <author>張聖誕</author>
    </book>

    <book alias="linux">
        <id>2222</id>
        <name>linux私房菜</name>
        <author>李四</author>
    </book>
</books>

三、根據xml檔案格式推匯出dtd的編寫

1、宣告所有元素

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

<!ELEMENT books ()>

<!ELEMENT factory EMPTY>

<!ELEMENT book ()>

<!ELEMENT id (#PCDATA)>

<!ELEMENT name (#PCDATA)>

<!ELEMENT author (#PCDATA)>

2、區分複雜元素和簡單元素 複雜元素:有子元素 簡單元素:沒有子元素

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

<!ELEMENT books (book+,factory?)+>

<!ELEMENT factory EMPTY>

<!ELEMENT book (id,name,author)>

<!ELEMENT id (#PCDATA)>

<!ELEMENT name (#PCDATA)>

<!ELEMENT author (#PCDATA)>

3、給元素增加屬性

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

<!-- book出現一次或者多次 -->
<!ELEMENT books (book+ | factory?)+ >

<!ELEMENT factory EMPTY>
<!-- name屬性不是必須的 -->
<!ATTLIST factory
name CDATA #IMPLIED>

<!-- id、name、author必須出現一次 -->
<!ELEMENT book (id,name,author)>
<!-- alias屬性是必須的 -->
<!ATTLIST book
alias CDATA #REQUIRED>

<!-- 元素內容是被解析的字元資料 -->
<!ELEMENT id (#PCDATA)>

<!ELEMENT name (#PCDATA)>

<!ELEMENT author (#PCDATA)>

四、在xml檔案中引用dtd 其中,xml檔案是跟dtd檔案放在一個目錄下

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE books SYSTEM "mydtd.dtd">

<books>
    <factory name="北京出版社" />

    <book alias="java">
        <id>111111</id>
        <name>java核心思想</name>
        <author>張聖誕</author>
    </book>

    <book alias="linux">
        <id>2222</id>
        <name>linux私房菜</name>
        <author>李四</author>
    </book>
</books>