xml笔记(马士兵)

验证一个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区里面有]]>的时候,最后那个用&gt实体字符。

实体码

>      &gt

<      &lt

&      &amp

"       &quot

'        &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:complexType mixed="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>//好像要保证命名空间一致
1.这里只记录一些学习笔记 2.这里只记录一些学习心得,如果心得方向有错,请留言 2.这里只记录一些日记(只为提升英语,暂时有点忙,等转行了开始写)
原文地址:https://www.cnblogs.com/liyang31tg/p/3524165.html