xml约束
约束问题详情请参考api
1.dtd约束:
约束标签
<!ELEMENT 元素名称 类别> 或 <!ELEMENT 元素名称 (元素内容)>
类别:
空标签: EMPTY。 表示元素一定是空元素。
普通字符串: (#PCDATA)。表示元素的内容一定是普通字符串(不能含有子标签)。
任何内容: ANY。表示元素的内容可以是任意内容(包括子标签)
(元素内容):
顺序问题:
<!ELEMENT 元素名称 (子元素名称 1,子元素名称 2,.....)>: 按顺序出现子标签
次数问题:
标签 : 必须且只出现1次。
标签+ : 至少出现1次
标签* : 0或n次。
标签? : 0 或1次。
约束属性
<!ATTLIST 元素名称 属性名称 属性类型 默认值>
默认值:
#REQUIRED 属性值是必需的
#IMPLIED 属性不是必需的
#FIXED value 属性不是必须的,但属性值是固定的
属性类型:控制属性值的
CDATA :表示普通字符串
(en1|en2|..): 表示一定是任选其中的一个值
ID:表示在一个xml文档中该属性值必须唯一。值不能以数字开头
代码:
xml:
<?xml version="1.0"?> <!DOCTYPE note SYSTEM "note.dtd"> <note> <to id="a1"></to> <to id="a2"></to> <to id="a3"></to> <heading>Reminder</heading> <heading>Reminder</heading> <heading>Reminder</heading> <body>Don't forget me this weekend</body> <body>Don't forget me this weekend</body> <body>Don't forget me this weekend</body> </note>
dtd:
<!ELEMENT note (from?,to+,heading*,body+)> <!ELEMENT to EMPTY> <!ELEMENT from (#PCDATA)> <!ELEMENT heading (#PCDATA)> <!ELEMENT body (#PCDATA)> <!ATTLIST to id ID #REQUIRED>
2.schema约束:
名称空间:告诉xml文档的哪个元素被哪个schema文档约束。 在一个xml文档中,不同的标签可以受到不同的schema文档的约束。
1)一个名称空间受到schema文档约束的情况
2)多个名称空间受到多个schema文档约束的情况
3)默认名称空间的情况
4)没有名称空间的情况
代码:
xml:
<?xml version="1.0" encoding="UTF-8"?> <itcast:书架 xmlns:itcast="http://www.itcast.cn" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.itcast.cn book.xsd"> <itcast:书> <itcast:书名>JavaScript网页开发</itcast:书名> <itcast:作者>张孝祥</itcast:作者> <itcast:售价>28</itcast:售价> </itcast:书> </itcast:书架>
xsd:
<?xml version="1.0" encoding="UTF-8" ?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.itcast.cn" elementFormDefault="qualified"> <xs:element name='书架' > <xs:complexType> <xs:sequence maxOccurs='unbounded' > <xs:element name='书' > <xs:complexType> <xs:sequence> <xs:element name='书名' type='xs:string' /> <xs:element name='作者' type='xs:string' /> <xs:element name='售价' type='xs:integer' /> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:schema>