下面以一个门生名册的xml作为例子
<?xml version="1.0" encoding="utf-8"?> <门生名册> <门生 学号="A1"> <姓名>CIACs</姓名> <性别>男</性别> <岁数>22</岁数> </门生> <门生 学号="A2"> <姓名>zhihao</姓名> <性别>男</性别> <岁数>23</岁数> </门生> </门生名册>
花样优越的xml文档,XMLSpy的输出窗口会输出以下效果
xml的首行肯定如果<?xml version="1.0"?>处置惩罚指令,且”<?xml”之间不能有空缺,xml元素严厉辨别大小写,文档编码花样默以为“UTF-8”,版本只要1.0。上面的xml文档只能说是花样优越的xml文档,不能说是有用的(Vaild)xml文档。下面我们用两种体式格局去考证它。
首先是经由过程DTD来对它举行考证
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE 门生名册 [ <!ELEMENT 门生名册 (门生+)> <!ELEMENT 门生 (名字,性别,岁数)> <!ELEMENT 名字 (#PCDATA)> <!ELEMENT 性别 (#PCDATA)> <!ELEMENT 岁数 (#PCDATA)> <!ATTLIST 门生 学号 ID #REQUIRED> <!ENTITY sex "男"> ]> <门生名册> <门生 学号="A1"> <名字>CIACs</名字> <性别>&sex;</性别> <岁数>22</岁数> </门生> <门生 学号="A2"> <名字>zhihao</名字> <性别>&sex;</性别> <岁数>23</岁数> </门生> </门生名册>
假如考证经由过程的话,XMLSpy输出窗口会有以下的效果显现
不然就算是多了一个空格都不会经由过程考证。这里我把dtd的考证写到了xml中,固然你也可以把它写到另一个文件中,该文件的后缀名为“.dtd”,然后把它关联到要考证的xml文档中,语法以下
1 <!DOCTYPE 根元素名 SYSTEM "*.dtd">
此处ID值彷佛要以字符开首,假如只是数字通不过考证。
门生信息中的性别,我把它定义为实体,然后经由过程实体援用它的值,要注意实体援用的语法是"&实体名;"。
下面经由过程XML Schema体式格局来考证
要考证的xml文档
<?xml version="1.0" encoding="utf-8"?> <门生名册 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="门生名册.xsd"> <门生 学号="A1"> <姓名>CIACs</姓名> <性别>男</性别> <岁数>22</岁数> </门生> <门生 学号="A2"> <姓名>zhihao</姓名> <性别>男</性别> <岁数>23</岁数> </门生> </门生名册>
XML Schema考证文档
<?xml version="1.0" encoding="UTF-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified"> <xs:element name="门生名册"> <xs:complexType> <xs:sequence minOccurs="1" maxOccurs="unbounded"> <xs:element ref="门生"/> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="门生"> <xs:complexType> <xs:sequence> <xs:element name="姓名" type="xs:string"/> <xs:element name="性别"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:enumeration value="男"/> <xs:enumeration value="女"/> </xs:restriction> </xs:simpleType> </xs:element> <xs:element name="岁数"> <xs:simpleType> <xs:restriction base="xs:integer"> <xs:minExclusive value="0"/> <xs:maxExclusive value="120"/> </xs:restriction> </xs:simpleType> </xs:element> </xs:sequence> <xs:attribute name="学号" type="xs:string" use="required"/> </xs:complexType> </xs:element> </xs:schema>
XMLSpy输出窗口的输出效果
要考证的xml的文档经由过程在根元素最先标签中到场下面的信息关联XML Schema文档
1 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="门生名册.xsd"
以上的文档都是放在统一途径下的,所以直接援用文件名就好了。
从上面的两种考证体式格局我们可以很清晰的看出DTD跟XML Schema考证的区分,二者同样是举行xml文档考证的,XML Schema供应了比DTD更加壮大的功用和更细粒度的数据范例,而且Schema还可以自定义数据范例,其自身就是xml文件,但dtd的语法跟xml的语法差别。虽然从代码量来看Schema大于dtd,然则当你学过Schema后你就会更喜好用Schema。
学好xml和它的考证体式格局,关于背面进修web service编程很主要。
以上就是细致引见XML DTD于XML Schema进修的示例代码(图文)的细致内容,更多请关注ki4网别的相干文章!