Schema初学者进阶(二)
简化Schema的设计
在我们上次的练习中,设计Schema所使用的方法是极其简单的。由于使用层层嵌套的的定义方法,当文档非常复杂时,由于嵌套层次过深,文档将不易阅读并且难以维护。同时这种方法和过去DTD的设计结构有非常大的差异,这使得人或者机器想把DTD转换成XML
Schema时会有困难。
因此,这里我们介绍另外一种非层次的设计方法,以上一章文档为例,我们首先定义文档中最基本的元素,然后在复杂元素中引用我们已经定义的基本元素的,这样使得我们的设计非常的简洁易懂。
<?xml version="1.0"
encoding="utf-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2000/10/XMLSchema">
<!-- definition of simple type elements
-->
<xsd:element name="title"
type="xsd:string"/>
<xsd:element name="author"
type="xsd:string"/>
<xsd:element name="name"
type="xsd:string"/>
<xsd:element name="friend-of"
type="xsd:string"/>
<xsd:element name="since"
type="xsd:date"/>
<xsd:element name="qualification"
type="xsd:string"/>
<!-- definition of attributes
-->
<xsd:attribute name="isbn"
type="xsd:string"/>
<!-- definition of complex type elements
-->
<xsd:element
name="character">
<xsd:complexType>
<xsd:sequence>
<!--
the simple type elements are referenced using the "ref" attribute
-->
<xsd:element ref="name"/>
<!-- the definition of
the cardinality is done when the elements are referenced
-->
<xsd:element ref="friend-of" minOccurs="0"
maxOccurs="unbounded"/>
<xsd:element
ref="since"/>
<xsd:element
ref="qualification"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element
name="book">
<xsd:complexType>
<xsd:sequence>
<xsd:element
ref="title"/>
<xsd:element ref="author"/>
<xsd:element
ref="character" minOccurs="0"
maxOccurs="unbounded"/>
</xsd:sequence>
<xsd:attribute
ref="isbn"/>
</xsd:complexType>
</xsd:element>
</xsd:schema>
引用的方法是非常有用的,就象是上面例子所示,我们可以先定义一些基本的元素和属性,然后在文档中的另一个位置通过引用机制进行复制。在下一章中我们将给大家展示我们如何定义"types",它使我们能够重用元素定义!
浏览:Schema初学者进阶(一)
Schema初学者进阶(三)
如果您希望与本文章的作者或其所在机构,进一步交流,请联系:畅享网 姜小姐
jill.jiang@amt.com.cn | 021-51096826-112 |
在线联系