相关栏目
新闻资讯 >>
合作媒体 >>
展会知识 >>
当前位置:首页 >

Schema技术(三)-复合元素的四种类型XSD定义


XSD复合元素:

1、什么是复合元素?

复合元素指包含其他元素及/或属性的 XML 元素。

注意:上面说的是其他元素或属性,换句话来说就是,包含子元素的和含有属性的都是符合元素。

总结:

四种类型复合元素:

空元素包含其他元素的元素仅包含文本的元素包含元素和文本的元素

注释:上述元素均可包含属性!

2、复合元素的例子:

对应上面的四种类型:

分别的例子为:

1、复合元素,"product",是空的:

2、复合元素,"employee",仅包含其他元素:

John Smith

3、复合元素,"food",仅包含文本:

Ice cream

4、复合元素,"description",包含元素和文本:

It happened on 03.03.99 ....

3、如何定义符合元素?

对于以复合xml元素:

John Smith

在XML Schema中,我们有两种方式来定义复合元素:

1、通过命名此元素,可直接对"employee"元素进行声明,就像这样:

注意:假如您使用上面所描述的方法,那么仅有 "employee" 可使用所规定的复合类型。请注意其子元素,"firstname" 以及 "lastname",被包围在指示器 中。这意味着子元素必须以它们被声明的次序出现。

2、"employee" 元素可以使用 type 属性,这个属性的作用是引用要使用的复合类型的名称:

注意:如果您使用了上面所描述的方法,那么若干元素均可以使用相同的复合类型,比如这样:

3、您也可以在已有的复合元素之上以某个复合元素为基础,然后添加一些元素,就像这样:

4、针对四种类型,我们如何用XML Schema对其进行定义?

1、XSD复合空元素:

空的复合元素不能包含内容,只能含有属性。

一个空的 XML 元素:

上面的 "product" 元素根本没有内容。为了定义无内容的类型,我们就必须声明一个在其内容中只能包含元素的类型,但是实际上我们并不会声明任何元素,比如这样:

在上面的例子中,我们定义了一个带有复合内容的复合类型。complexContent 元素给出的信号是,我们打算限定或者拓展某个复合类型的内容模型,而 integer 限定则声明了一个属性但不会引入任何的元素内容。

不过,也可以更加紧凑地声明此 "product" 元素:

或者您可以为一个 complexType 元素起一个名字,然后为 "product" 元素设置一个 type 属性并引用这个 complexType 名称(通过使用此方法,若干个元素均可引用相同的复合类型):

2、XSD复合类型-仅含元素

仅含元素的复合类型元素是只能包含其他元素的元素。

XML 元素,"person",仅包含其他的元素:

John Smith

您可在 schema 中这样定义 "person" 元素:

请留意这个 。它意味着被定义的元素必须按上面的次序出现在 "person" 元素中。

或者您可以为 complexType 元素设定一个名称,并让 "person" 元素的 type 属性来引用此名称(如使用此方法,若干元素均可引用相同的复合类型):

3、XSD仅含文本复合元素

仅含文本的复合元素可包含文本和属性。

此类型仅包含简易的内容(文本和属性),因此我们要向此内容添加 simpleContent 元素。当使用简易内容时,我们就必须在 simpleContent 元素内定义扩展或限定,就像这样:

.... ....

或者:

.... ....

提示:请使用 extension 或 restriction 元素来扩展或限制元素的基本简易类型。

这里有一个 XML 元素的例子,"shoesize",其中仅包含文本:

35

下面这个例子声明了一个复合类型,其内容被定义为整数值,并且 "shoesize" 元素含有名为 "country" 的属性:

我们也可为 complexType 元素设定一个名称,并让 "shoesize" 元素的 type 属性来引用此名称(通过使用此方法,若干元素均可引用相同的复合类型):

4、XSD带有混合内容的复合类型:

混合的复合类型可包含属性、元素以及文本。

XML 元素,"letter",含有文本以及其他元素:

Dear Mr.John Smith. Your order 1032 will be shipped on 2001-07-13.

下面这个 schema 声明了这个 "letter" 元素:

注释:为了使字符数据可以出现在 "letter" 的子元素之间,mixed 属性必须被设置为 "true"。 标签 (name、orderid 以及 shipdate ) 意味着被定义的元素必须依次出现在 "letter" 元素内部。

我们也可以为 complexType 元素起一个名字,并让 "letter" 元素的 type 属性引用 complexType 的这个名称(通过这个方法,若干元素均可引用同一个复合类型):

--------------------------------------------------------------------未完待续------------------

------------------------------------------------------百战卓越049天------------------------

注明:本文章来源于互联网,如侵权请联系客服删除!