發表於2008年08月18日 00:11 閱讀(0) 評論(0)
1. 外部DTD
testxml.dtd文件
<!ELEMENT xxx (aaa,bbb)>
<!ELEMENT aaa (#PCDATA)>
<!ELEMENT bbb (#PCDATA)>
testxml.xml文件
<?xml version="1.0" encoding="gb2312"?>
<!DOCTYPE testxml SYSTEM "testxml.dtd">
<xxx>
<aaa>start</aaa>
<bbb>end</bbb>
</xxx>
2. 內部DTD
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE test02 [
<!ELEMENT XXX (AAA?,BBB+)>
<!ELEMENT AAA (#PCDATA)>
<!ELEMENT BBB (#PCDATA)*>
]>
<XXX>
<AAA>zhao</AAA>
<BBB>zhao1</BBB>
<BBB>zhao2</BBB>
<BBB>zhao3</BBB>
</XXX>
3.以上DOCTYPE,ELEMENT等一定要大寫
4. 空元素
<this/> = <this> </this>
5. 添加屬性
<this reason=”haha” /> 屬性值要用” ”引號括起來。
6. 註釋
<!-- à
7. xml通用實體
實體引用解釋
< <
> >
& &
' ‘
"s; “
8. 符號描述
( ) 進行分組
, 必須要有的元素的分隔符
+ 命名無素根據需要出現一次或多次的標識符,
但至少出現一次。
* 運行命名素出現任意次數的標識符
? 命名元素出現一次或不出現的標識符
| “或”條件標識符,兩個元素只能出現其中一個
Xml元素出現的順序要按DTD的順序。
9. 用在<! ATTLIST >
#REQUIED 必填屬性
#IMPLIED 可選
用在<! ELEMENT >
#PCDATA 可解析字符數據
#CDATA 符合規範文檔約束的任何字符
#NMTOKEN 只能有字母,數字和小數點,下畫線,以及昌號。
#NMTOKENS 比#NMTOKEN多了空白字符
空白字符包括一個或多個空格符,回車符,換行符和製表符(tab)
例:
<!ELEMENT humpty (#PCDATA)>
<!ATTLIST humpty
arrtri1 CDATA# REQUIED
arrtri1 CDATA# IMPLIED
>
10. 使用ID
例:
<!ELEMENT element1 (#PCDATA)>
<!ATTLIST element1 id ID# REQUIED>
<!ELEMENT element2 (#PCDATA)>
<!ATTLIST element2 code ID # REQUIED>
在XML中:
< element1 id = “a1”/>
< element2 code=”qqq-123-223-12-3”/>
11. 使用
IDREF 指向文檔前面提及的唯一ID
IDREFS 引用多個ID
例:
<?xml version="1.0" encoding="gb2312"?>
<!ELEMENT Pastry (ele1+,ele2+,ele3+,ele4+)>
<!ELEMENT ele1 (#PCDATA)>
<!ELEMENT ele2 (#PCDATA)>
<!ELEMENT ele3 (#PCDATA)>
<!ELEMENT ele4 (#PCDATA)>
<!ATTLIST ele1 my1 ID #REQUIRED>
<!ATTLIST ele2 my2 ID #REQUIRED>
<!ATTLIST ele3 my3 IDREF #REQUIRED>
<!ATTLIST ele4 ref IDREFS #REQUIRED>
XML文件:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE test03 SYSTEM "test03.dtd">
<Pastry>
<ele1 my1="a"/>
<ele2 my2="b"/>
<ele3 my3="a"/>
<ele4 ref="a b"/>
</Pastry>
12. 枚舉屬性
例:test04.dtd
<?xml version="1.0" encoding="gb2312"?>
<!ELEMENT Root (AAA+,BBB+)>
<!ELEMENT elle1 (#PCDATA)>
<!ELEMENT elle2 (#PCDATA)>
<!ATTLIST elle1 true (yes|no) #REQUIRED>
<!ATTLIST elle2 month (1|2|3|4|5|6|7|8|9|10|11|12) #IMPLIED>
test04.xml
<?xml version="1.0" encoding="gb2312"?>
<!DOCTYPE ROOT SYSTEM "test04.dtd">
<Root>
<elle1 ture = "yes"/>
<elle1 ture = "no"/>
<elle1 ture = "yes"/>
<elle2 month = "8"/>
<elle2 ture = "2"/>
<elle2 ture = "12"/>
</Root>
13. ENTITY 與 ENTITIES
在XML 中使用的是通用實體
僅在DTD中使用的是參數實體
1. 解析實體
<?xml version="1.0" encoding="gb2312"?>
<!DOCTYPE fanclub[
<!ELEMENT fanclub (#PCDATA)>
<!ENTITY HR "HR is the test <!entity>">
]>
<fanclub>&HR;</fanclub> //在XML中使用&HR代表字符串
//"HR is the test <!entity>"
2. 參數實體???XXX
可以含(%)而通用實體不能
test06.DTD
<!ENTITY %HeadingAlign "align (left|cinter|right) #REQUIRED" >
<!ELEMENT elle1 (#PCDATA)>
<!ATTLIST elle1 %HeadingAlign> // 在DTD中使用%HeadingAlign代替
// "align (left|cinter|right) #REQUIRED" >
test06.XML
<?xml version="1.0" encoding="gb2312"?>
<elle1 align = "left" />
testxml.dtd文件
<!ELEMENT xxx (aaa,bbb)>
<!ELEMENT aaa (#PCDATA)>
<!ELEMENT bbb (#PCDATA)>
testxml.xml文件
<?xml version="1.0" encoding="gb2312"?>
<!DOCTYPE testxml SYSTEM "testxml.dtd">
<xxx>
<aaa>start</aaa>
<bbb>end</bbb>
</xxx>
2. 內部DTD
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE test02 [
<!ELEMENT XXX (AAA?,BBB+)>
<!ELEMENT AAA (#PCDATA)>
<!ELEMENT BBB (#PCDATA)*>
]>
<XXX>
<AAA>zhao</AAA>
<BBB>zhao1</BBB>
<BBB>zhao2</BBB>
<BBB>zhao3</BBB>
</XXX>
3.以上DOCTYPE,ELEMENT等一定要大寫
4. 空元素
<this/> = <this> </this>
5. 添加屬性
<this reason=”haha” /> 屬性值要用” ”引號括起來。
6. 註釋
<!-- à
7. xml通用實體
實體引用解釋
< <
> >
& &
' ‘
"s; “
8. 符號描述
( ) 進行分組
, 必須要有的元素的分隔符
+ 命名無素根據需要出現一次或多次的標識符,
但至少出現一次。
* 運行命名素出現任意次數的標識符
? 命名元素出現一次或不出現的標識符
| “或”條件標識符,兩個元素只能出現其中一個
Xml元素出現的順序要按DTD的順序。
9. 用在<! ATTLIST >
#REQUIED 必填屬性
#IMPLIED 可選
用在<! ELEMENT >
#PCDATA 可解析字符數據
#CDATA 符合規範文檔約束的任何字符
#NMTOKEN 只能有字母,數字和小數點,下畫線,以及昌號。
#NMTOKENS 比#NMTOKEN多了空白字符
空白字符包括一個或多個空格符,回車符,換行符和製表符(tab)
例:
<!ELEMENT humpty (#PCDATA)>
<!ATTLIST humpty
arrtri1 CDATA# REQUIED
arrtri1 CDATA# IMPLIED
>
10. 使用ID
例:
<!ELEMENT element1 (#PCDATA)>
<!ATTLIST element1 id ID# REQUIED>
<!ELEMENT element2 (#PCDATA)>
<!ATTLIST element2 code ID # REQUIED>
在XML中:
< element1 id = “a1”/>
< element2 code=”qqq-123-223-12-3”/>
11. 使用
IDREF 指向文檔前面提及的唯一ID
IDREFS 引用多個ID
例:
<?xml version="1.0" encoding="gb2312"?>
<!ELEMENT Pastry (ele1+,ele2+,ele3+,ele4+)>
<!ELEMENT ele1 (#PCDATA)>
<!ELEMENT ele2 (#PCDATA)>
<!ELEMENT ele3 (#PCDATA)>
<!ELEMENT ele4 (#PCDATA)>
<!ATTLIST ele1 my1 ID #REQUIRED>
<!ATTLIST ele2 my2 ID #REQUIRED>
<!ATTLIST ele3 my3 IDREF #REQUIRED>
<!ATTLIST ele4 ref IDREFS #REQUIRED>
XML文件:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE test03 SYSTEM "test03.dtd">
<Pastry>
<ele1 my1="a"/>
<ele2 my2="b"/>
<ele3 my3="a"/>
<ele4 ref="a b"/>
</Pastry>
12. 枚舉屬性
例:test04.dtd
<?xml version="1.0" encoding="gb2312"?>
<!ELEMENT Root (AAA+,BBB+)>
<!ELEMENT elle1 (#PCDATA)>
<!ELEMENT elle2 (#PCDATA)>
<!ATTLIST elle1 true (yes|no) #REQUIRED>
<!ATTLIST elle2 month (1|2|3|4|5|6|7|8|9|10|11|12) #IMPLIED>
test04.xml
<?xml version="1.0" encoding="gb2312"?>
<!DOCTYPE ROOT SYSTEM "test04.dtd">
<Root>
<elle1 ture = "yes"/>
<elle1 ture = "no"/>
<elle1 ture = "yes"/>
<elle2 month = "8"/>
<elle2 ture = "2"/>
<elle2 ture = "12"/>
</Root>
13. ENTITY 與 ENTITIES
在XML 中使用的是通用實體
僅在DTD中使用的是參數實體
1. 解析實體
<?xml version="1.0" encoding="gb2312"?>
<!DOCTYPE fanclub[
<!ELEMENT fanclub (#PCDATA)>
<!ENTITY HR "HR is the test <!entity>">
]>
<fanclub>&HR;</fanclub> //在XML中使用&HR代表字符串
//"HR is the test <!entity>"
2. 參數實體???XXX
可以含(%)而通用實體不能
test06.DTD
<!ENTITY %HeadingAlign "align (left|cinter|right) #REQUIRED" >
<!ELEMENT elle1 (#PCDATA)>
<!ATTLIST elle1 %HeadingAlign> // 在DTD中使用%HeadingAlign代替
// "align (left|cinter|right) #REQUIRED" >
test06.XML
<?xml version="1.0" encoding="gb2312"?>
<elle1 align = "left" />