`
wind_bell
  • 浏览: 286784 次
  • 性别: Icon_minigender_2
  • 来自: 广州
社区版块
存档分类
最新评论

xml模式(Schema)

    博客分类:
  • xml
XML 
阅读更多
1. 最简单的Schema文档

hello.xml
<?xml version="1.0"?>
<greeting>Hello World!!</greeting>

hello.xsd
<?xml version="1.0"?>
    <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <xsd:element name="greeting" type="xsd:string"/>
</xsd:schema>

说明:XML Schema文档后缀名是.xsd,完全符合XML语法,根元素是schema,命名空间
xmlns:xsd="http://www.w3.org/2001/XMLSchema,用元素<element>定义实例文档中的元素,如greeting。

2、含子元素的Schema文档

customer.xml
<customer>
  <name>teiki</name>
  <address>No.237, Road Waitan, Shanghai</address>
</customer>

customer.xsd
<?xml version="1.0"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="customer">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="name" type="xsd:string"/>
<xsd:element name="address" type="xsd:string" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>

说明:实例文档customer.xml中,<customer>元素含有两个子元素,所以我们在Schema文档中采用ComplexType来定义该元素。sequence表示子元素依次出现的顺序。

3、含子元素和孙元素的Schema文档

customer.xml
<customer>
  <name>Teiki</name>
  <address>
    <prefecture>Zhejiang</prefecture>
    <city>Hangzhou</city>
    <street>Xilu Road, No.121, 7F</street>
  </address>
</customer>

address.xsd
<?xml version="1.0"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="customer">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="name" type="xsd:string"/>
<!-- 追加子元素address-->
<xsd:element name="address">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="prefecture" type="xsd:string"/>
<xsd:element name="city" type="xsd:string" />
<xsd:element name="street" type="xsd:string" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>

不过,我们还可以采用ref元素来重新编写这个Schema文档:


address2.xsd
<?xml version="1.0"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="customer">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="name" type="xsd:string"/>
<xsd:element ref="address"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="address">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="prefecture" type="xsd:string"/>
<xsd:element name="city" type="xsd:string" />
<xsd:element name="street" type="xsd:string" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
使用ref元素可以直接将其指向另一个模块,使文档更加具有可读性。
分享到:
评论
1 楼 fly_ever 2006-09-26  
你好,我是xml的初学者,可以问你一个问题吗?
怎么样使用schema写程序来验证xml文档的正确性啊。
比如

引用
hello.xml
-------------------
<?xml version="1.0"?>
<greeting>Hello World!!</greeting>

hello.xsd
----------
<?xml version="1.0"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="greeting" type="xsd:string"/>
</xsd:schema>

如果我的hello.xml写得有问题的话,我怎么知道呢?在hello.xml文件中没看到哪里与hello.xsd相关啊。

相关推荐

Global site tag (gtag.js) - Google Analytics