怎么使用XML Schema定义元素

  介绍

这篇文章主要介绍怎么使用XML Schema定义元素,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

XML模式比DTD更强大。为了说明XML Schema机制的强大功能,下面三个程序清单简要比较了表示元素的不同方式。清单1给出了一个XML文档段,清单2用DTD语法声明了这两个元素,清单3则是相应的XML Schema语法形式。要注意,清单3中所用的是相同的XML语法。通过模式,验证解析器可以检查元素InvoiceNo是否是正整数,元素ProductID的首字符是否为A到Z之间的字母,后面为六个阿拉伯数字。相反,引用DTD的验证解析器只能检查这些元素是否用字符串表示。

清单1:XML文档段

& lt; InvoiceNo> 123456789 & lt;/InvoiceNo>   & lt; ProductID> J123456

清单2:描述清单1中元素的DTD段

& lt; ! ELEMENT  InvoiceNo  (# PCDATA)比;   & lt; ! ELEMENT  ProductID  (# PCDATA)在

清单3:描述清单1中元素的XML Schema

& lt; ELEMENT  name=& # 39; InvoiceNo& # 39;, type=& # 39; positive-integer& # 39;/比;   & lt; element  name=& # 39; ProductID& # 39;, type=& # 39; productcode的# 39;/比;   & lt; simpleType  name=& # 39; productcode的# 39;,基地=& # 39;字符串# 39;比;   & lt; pattern 价值=https://www.yisu.com/zixun/' d [a - z] {1} {6} "/>   

在XML Schema中使用名称空间

在这个协作的世界中,一个人可能处理来自多个其他团体的文档,而不同的团体可能希望以不同的方式表示他们的数据元素。此外,他们还可能在一个文档中引用不同团体创建的同名元素。如何区分相同名字的不同定义呢? XML模式使用名称空间区分这些定义。

附:

DTD的局限性

(尽管作为描述结构化信息的一种机制,DTD成功地为SGML和HTML开发人员服务了20年,但与XML Schema相比,它存在着严重的局限性。

DTD要求元素由以下三种成分组成:

文本字符串

文本字符串与其他子元素的混合

一组子元素

DTD不使用XML语法,对类型和名称空间仅提供有限的支持。)

一个给定的XML模式定义了一组新名字,如元素名,类型名,属性名,属性组名,这些名字的定义和声明都写在模式中。清单3定义的名字包括InvoiceNo, ProductID和ProductCode。

我们说模式中定义的名字属于它的目标名称空间。名称空间本身有一个固定但没有限制的名字,必须符合URL语法。比如,对于清单3中模式段,您可以把名称空间的名字设为:http://www.SampleStore.com/Account。

名称空间的名字语法容易让人混淆,尽管以http://开始,那个URL并不指向一个包含模式定义的文件。事实上,这个URL http://www.SampleStore.com/Account根本没有指向任何文件,只是一个分配的名字。

模式中的定义和声明可能引用属于其他名称空间的名字。在本文中,我们称这些名称空间为源名称空间。每个模式都有一个目标名称空间,但可能有多个源名称空间。名称空间的名字可能相当长,但在XML文档中通过xmlns声明可使用简写形式。为了说明这些概念,我们可以向前述清单4中的示例模式中添加更多的内容。

清单4:目标名称空间和源名称空间

& lt; !——XML  Schema  fragment 拷贝file  schema1.xsd——比;      & lt; xsd: schema  targetNamespace=& # 39; http://www.SampleStore.com/Account& # 39;   xmlns: xsd=& # 39; http://www.w3.org/1999/XMLSchema& # 39;   xmlns: ACC=, & # 39; http://www.SampleStore.com/Account& # 39;比;   & lt; xsd: element  name=& # 39; InvoiceNo& # 39;, type=& # 39; xsd: positive-integer& # 39;/比;   & lt; xsd: element  name=& # 39; ProductID& # 39;, type=& # 39; ACC: productcode的# 39;/比;   & lt; xsd: simpleType  name=& # 39; productcode的# 39;,基地=& # 39;xsd: string # 39;比;   & lt; xsd: pattern 价值=https://www.yisu.com/zixun/[a - z] {1} d {6} '/>   

在清单4的XML模式中,targetNamespace的名字是www.SampleStore.com/Account,其中包含的名字有InvoiceNo, ProductID和ProductCode。模式,元素,simpleType,模式,字符串和正整数这些名字属于源名称空间www.w3.org/1999/XMLSchema,通过xmlns声明缩写为xsd。别名xsd没有任何特殊的地方,我们可以选择任何其他的名字。在本文后面的部分为了方便和简化起见,我们使用xsd代表名称空间www.w3.org/1999/XMLSchema,在一些代码段中省略了限定符xsd。在这个例子中,targetNamespace偶尔也作为一个源名称空间,因为要使用名字ProductCode定义其他的名字。

怎么使用XML Schema定义元素