简单定义schema复合元素(XML入门15)

      定义schema文档的简单元素(simpletype)就是基础入门。实际上使用更多的是复合元素(complextype)。复合元素就是包含其他元素的元素。例如:学校作为标记元素,学校下还有子元素,老师,学生等等。写schema文档就是定义具有结构的复合元素。复合元素比较难理解,我们从最简单学起。

       我们定义一个电话通讯录:

 <xs:element  name="phonebook">

 <xs:complexType>

 <xs:sequence>

   <xs:element name=“name” type=“xs:string”/>

   <xs:element name=“phone” type=“xs:string”/>

</xs:sequence>

</xs:complexType>

</xs:element>

       这就是简单的电话本,只有名字和电话号码。其中:sequence意思是子元素必须按顺序出现。在XML文档中可以这样写:

 <phonebook>

<name>张三</name>

<phone>18800335588</phone>

 </phonebook>

       如果我们再复杂一点,带有属性的简单元素如何定义?使用扩展(extension)指令或者使用约束(restriction)指令来达到目的。

        我们使用官网的例子,如果在XML文档中实现下面带属性的元素,例如:

<shoesize country=“法国”>35</shoesize>

         在schema文档上可以使用extension也可以使用restriction这两个指令。见下面的例子:

<xs:element  name="shoesize">

 <xs:complexType>

 <xs:simpleContent>

  <xs:extension base=“xs:integer”>

 <xs:attribute name=“country”  type=“xs:string”/>

</xs:extension>

</xs:simpleContent>

</xs:complexType>

</xs:element>

       好像很复杂,其实就是框架复杂了点,实际众星拱月,就中间的是定义属性,上下都是基本不变的。

        而simplecontent是内部简单文本指令。类似sequence顺序指令的用法。extension是扩展指令。

         这个定义,还可以有另外的方法。大同小异。增加了复杂性,但是如果元素多了,子元素都可以引用,比较方便,所以这里需要知道这种方法。

<xs:element  name="shoesize"  type=“shoetype”/>

 <xs:complexType name=“shoetype”>

 <xs:simpleContent>

  <xs:extension base=“xs:integer”>

 <xs:attribute  name=“country” type=“xs:string”/>

</xs:extension>

</xs:simpleContent>

</xs:complexType>

           复合元素定义比较难理解,要一点一点的学。先学简单的。如怎么定义简单元素(simpletype),怎么定义简单的属性,然后在接受复合元素(complextype)。这里大家一定要分清,约束(facets)与属性的区别。

           约束(facets)使用限定(restriction)限定用基础(base)设定,约束的是值(value),而且是类型(type)的值。今天,我们又看到了使用扩展(extension)也使用基础(base)。

           属性(attribute)是与元素(element)同档次的指令,使用名称(name)来设定。

           北荒客

           2020.3.6

你可能感兴趣的:(简单定义schema复合元素(XML入门15))