验证一个xml是否正确,首先是标签是否成对出现,然后是是否遵从DTD规范。
DTD或者后来的schema都是限制xml的标签的,完全可以自定义。这里的限制指的是,根节点是什么,子节点又是什么,这些节点又有什么属性,完全遵从DTD。
xml的属性必须用引号。
<![CDATA[……]]>cdata区,表示里面的数据完整显示,不存在什么特殊字符不要通过转义的。
<?xml version="1.0" encoding="utf-8" standalone="yes">
上面这句的yes指没有与之匹配的DTD,
如果是no的话指有可能有与之匹配的DTD。
当你要在内容里面保留特殊符号比如:回车,空格,TAB的时候建议用<![CDATA[……]]>就可以了,当CDATA区里面有]]>的时候,最后那个用>实体字符。
实体码
> >
< <
& &
" "
' &apos
所有的xml的根节点都是“/”,你就想着,最上面层节点上还有一个“/”节点。这个只是点是在马士兵的xml视频77,15分时看到
两种不同的xml分析模型:(不必掌握,知道有这么2个东西,用到在查)
1、DOM--所有数据位于内存
2、SAX--流程性分析,不必把所有的数据Load到内存中,可分析大型的xml文件,常用于Server-side的xml-xhtml转换。
简易元素无法拥有属性。假如某个元素拥有属性,它就会被当作某种复合类型。但是属性本身总是作为简易类型被声明的。
注意:编写schema的时候,要将属性的设定,放在sequence之后。
当要扩展简单属性的时候
<title lang="en">Learning XML</title> 达到这种效果的时候,可以这么写
<element name="title">
<complexType> //不管什么类型,扩展了都是复合的了
<simpleContent> //简单类型的扩展
<extension base="string"> //基于什么类型的扩展
<attribute name="lang" type="string"></attribute>
</extension>
</simpleContent>
</complexType>
</element>
//复合类型的扩展
<complexType name="z">
<sequence>
<element name="color1" default="red" type="string" minOccurs="0"></element>
<element name="color2" type="string" fixed="black" minOccurs="0"></element>
</sequence>
</complexType>
<complexType name="zzz">
<complexContent> //复合类型的扩展
<extension base="tns:z">
<choice>
<element name="color3" type="string" minOccurs="0"></element>
<element name="color4" type="string" minOccurs="0"></element>
</choice>
</extension>
</complexContent>
</complexType>
限定只限于普通类型,因为不管复合类型最终的一层都是普通类型
<simpleType name="zz">
<restriction base="string"> //基于什么类型的限定
<enumeration value="red1" />
<enumeration value="red2" />
<enumeration value="red3" />
<enumeration value="red4" />
</restriction>
</simpleType>
<letter> Dear Mr.<name>John Smith</name>. Your order <orderid>1032</orderid> will be shipped on <shipdate>2001-07-13</shipdate>. </letter>
想达到这种混合类容的效果需要设置一个属性
<xs:element name="letter"> <xs:complexTypemixed="true"
> //mixed="true" <xs:sequence> <xs:element name="name" type="xs:string"/> <xs:element name="orderid" type="xs:positiveInteger"/> <xs:element name="shipdate" type="xs:date"/> </xs:sequence> </xs:complexType> </xs:element>
当2个以上的schema整合的时候用
<include schemaLocation=""></include>//好像要保证命名空间一致