XML约束

来源:互联网 发布:php explode implode 编辑:程序博客网 时间:2024/05/16 04:56

DTD约束

指定元素<!ELEMENT [Element Name] [Element Definition /TYPE]>

嵌套的元素<!Element [Element Name] ([Nested Element] [,Nested Element]...)>

出现零次或一次<!ELEMENT MYElement (NestedElement+,AnotherElement?)>

(default 必须出现一次;?必须出现一次或根本不出现;+必须至少出现一次(1...N次);*可以出现任意次数,或者根本不出现)

分组<!ELEMENT GroupingExample ((Group1E11,Group1E12),(Group1E11,Group1E12)>

定义属性<!ATTLIST [Enclosing Element] [Attribute name] [type] [modifier]>

举例一个完整的DTD

<!ELEMENT JavaXML:Book (JavaXML:Title,

JavaXML:Contents,

JavaXML:Copyright)>

<!ATTLIST JavaXML:Book

xmlns:JavaXML CDATA #REQUIRED

>

<!ELEMENT JavaXML:Title(#PCDATA)>

<!ELEMENT JavaXML:Contents (JavaXML:Chapter+,JavaXML:SectionBreak?)+>

<!ELEMENT JavaXML:Chapter (JavaXML:Heading?,JavaXML:Topic)>

<!ATTLIST JavaXML:Chapter

focus (XML|Java) "Java"

>

<!ELEMENT JavaXML:Heading (#PCDATA)>

<!ELEMENT JavaXML:Topic (#PCDATA)>

<!ATTLIST JavaXML:Topic

subSections CDATA #IMPLTED

>

<!ELEMENT JavaXML :SectionBreak EMPTY>

<!ELEMENT JavaXML:copyright (#PCDATA)>

<!ENTITY OReillyCopyright SYSTEM "http://www.12345.com">


XMLschema约束的例子

<?xml version = "1.0"?>

<schema targetNamespace ="http://www.oreilly.com/catalog/javaxml"

xmlns="http://www.w3.org/1999/XMLSchema"

xmlns:JavaXML="http://www.oreilly.com/catalog/javaxml">

<element name="Book" type="JavaXML:BookType" />

<complexType name="BookType" >

<element name="Title" type="string" />

<element name="Contents" type="JavaXML:ContentsType" />

<element name="Copyright" type="string"/>

</complexType>

<complexType name="ContentsType">

<element name ="chapter" maxOccurs="*">

<complexType>

<element name="Heading" type="string" minOccurs="0"/>

<element name="Topic" maxOccurs="*">

<complexType content="string">

<attribute name ="subSections" type=“integer”/>

</complexType>

</element>

<attribute name="focus" default="Java">

<simpleType base="string">

<enumeration value="XML" />

<enumeration value="Java"/>

</simpleType>

</attribute>

</complexType>

</element>

<element name="SectionBreak" minOccurs="0" maxOccurs="*">

<complexType content ="empty" />

</element>

</complexType>

</schema>



备注:

sequence中定义的元素,在XML中必须按组内定义的先后顺序依次出现。choice中定义的元素就如同枚举一样,定义的一组元素在XML中只能任意出现一个。all定义的一组元素要出现就都出现,但先后顺序任意,all中的元素最多只能出现一次。










0 0
原创粉丝点击