留做备份
XML Schema是XML文档,而DTD有自己的特殊语法。这样,只需要懂得XML的语法规则就可以编写Schema,无须学习其他的语法规则;XML文件与XML Schema文件可以用相同的解析器进行解析,无须两套解析器;XML Schema有强大、易用的扩展性。
XML Schema利用命名空间将文档中的特殊的节点与Schema说明相联系,一个XML文件可以有多个Schema,而对于DTD一个XML只能有一个相对应的DTD。
XML Schema内容模型是开发的,可以随意扩充,而DTD则无法解析扩充的内容。
DTD只能把内容类型定义为一个字符串,而XML Schema允许把内容类型定义为整形、浮点型、布尔型等等,而无须重定义。
综上,XML Schema较DTD有着优势,所以尽量把XML Schema作为首选为佳。
DTDの例:
<!ELEMENT 社員情報(社員)*>
<!ELEMENT 社員 (名前, 所属, 電話, メール)>
<!ELEMENT 名前 (#PCDATA)>
<!ELEMENT 所属 (#PCDATA)>
<!ELEMENT 電話 (#PCDATA)>
!ELEMENT メール(#PCDATA)>
<!ATTLIST 社員社員番号 CDATA #REQUIRED>
XMLスキーマの例:
<?xml version="1.0" encoding="Shift_JIS"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" >
<xs:element name="社員情報" type="EmployeeInfoType" />
<xs:complexType name="EmployInfoType">
<xs:sequence >
<xs:element ref="社員" minOccurs="0" maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
<xs:element name="社員" type="EmployeeType" />
<xs:complexType name="EmployeeType">
<xs:sequence >
<xs:element ref="名前" />
<xs:element ref="所属" />
<xs:element ref="電話" />
<xs:element ref="メール" />
</xs:sequence>
<xs:attribute name="社員番号" type="xs:int" use=“required”/>
</xs:complexType>
<xs:element name="名前" type="xs:string" />
<xs:element name="所属" type="xs:string" />
<xs:element name="電話" type="xs:string" />
<xs:element name="メール" type="xs:string" />
</xs:schema>