xml约束

约束问题详情请参考api

1.dtd约束:

约束标签

<!ELEMENT 元素名称 类别>   <!ELEMENT 元素名称 (元素内容)>

 

类别

空标签: EMPTY。 表示元素一定是空元素。

普通字符串: (#PCDATA)。表示元素的内容一定是普通字符串(不能含有子标签)。

任何内容: ANY。表示元素的内容可以是任意内容(包括子标签)

 

(元素内容):

顺序问题:

<!ELEMENT 元素名称 (子元素名称 1,子元素名称 2,.....)> 按顺序出现子标签

 

次数问题:

标签     必须且只出现1次。

标签+  : 至少出现1

    标签*   0n次。

标签?   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:书架>
View Code

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>
View Code
原文地址:https://www.cnblogs.com/handsomecui/p/6046558.html