xml架构定义主要有两种方式:一是通过DTD(分内部和外部),语法简单但功能有限;二是使用XML Schema(XSD),支持丰富数据类型和命名空间,更适用于复杂系统。1. DTD可嵌入文档或引用外部文件,如<!DOCTYPE note [<!ELEMENT …>]>或<!DOCTYPE note SYSTEM “note.dtd”>;2. XSD以XML语法编写,示例中通过xsi:noNamespaceSchemaLocation=”note.xsd”关联schema文件;3. 推荐在现代开发中优先使用XSD以确保数据一致性与可扩展性。

XML包含架构的方式主要有两种:内部DTD(文档类型定义)和外部DTD,以及使用XML Schema(XSD)。这些方式用于定义XML文档的结构、元素、属性和数据类型,确保文档符合预定义的规则。
1. 使用DTD定义架构
DTD可以嵌入在XML文档内部,也可以作为外部文件引用。它语法简单,但功能有限,不支持数据类型的精细控制。
内部DTD: 直接写在XML文档的DOCTYPE声明中。
示例:
<?xml version="1.0"?> <!DOCTYPE note [ <!ELEMENT note (to,from,heading,body)> <!ELEMENT to (#PCDATA)> <!ELEMENT from (#PCDATA)> <!ELEMENT heading (#PCDATA)> <!ELEMENT body (#PCDATA)> ]> <note> <to>张三</to> <from>李四</from> <heading>提醒</heading> <body>记得开会!</body> </note>
外部DTD: DTD定义在一个独立的文件中,通过SYSTEM或public引用。
例如,将上述DTD保存为note.dtd,然后在XML中引用:
<!DOCTYPE note SYSTEM "note.dtd">
2. 使用XML Schema(XSD)
XML Schema比DTD更强大,支持命名空间、丰富的数据类型(如字符串、整数、日期等),并且本身是用XML语法编写的,便于解析和扩展。
定义XSD文件: 创建一个描述XML结构的.xsd文件。
示例(note.xsd):
<?xml version="1.0" encoding="UTF-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="note"> <xs:complexType> <xs:sequence> <xs:element name="to" type="xs:string"/> <xs:element name="from" type="xs:string"/> <xs:element name="heading" type="xs:string"/> <xs:element name="body" type="xs:string"/> </xs:sequence> </xs:complexType> </xs:element> </xs:schema>
在XML中引用XSD: 使用xsi:schemaLocation或xsi:noNamespaceSchemaLocation。
示例:
<?xml version="1.0" encoding="UTF-8"?> <note xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="note.xsd"> <to>张三</to> <from>李四</from> <heading>提醒</heading> <body>记得开会!</body> </note>
3. 选择合适的方式
DTD适合简单场景,兼容性好,但功能弱;XSD适合复杂应用,支持强类型和命名空间,更适合现代系统集成。开发中推荐使用XSD来保证数据的一致性和可验证性。
基本上就这些。根据项目需求选择合适的架构方式即可。