日期:2014-05-18  浏览次数:20841 次

XML Schema 简易类型说法怎么自相矛盾啊
这句话摘自W3:http://www.w3school.com.cn/schema/schema_simple_attributes.asp
所有的属性均作为简易类型来声明。简易元素无法拥有属性。假如某个元素拥有属性,它就会被当作某种复合类型。但是属性本身总是作为简易类型被声明的。

摘自W3:http://www.w3school.com.cn/schema/el_attribute.asp
attribute 元素定义一个属性。并且列举了很多attribute 元素的属性


我的问题:
既然属性是作为简易类型来声明的,而简易元素又无法拥有属性,而作为定义属性的attribute 元素,其又具有多个属性,比如
<xs:attribute name="code">,这句就带有属性,因此就不应该是简易类型啊,应该是复合类型啊,怎么又说是作为简易类型来声明的?自相矛盾吧


哎,XML Schema 真难学,请高人指点!!!



------解决方案--------------------
作为简易类型来声明的
说的是那个属性,不是元素
------解决方案--------------------
<xs:attribute> 是 XML Schema 中定义的一个标签,用于表示这是xml node中的一个属性。
好比HTML里 <a href="xxx"></a> 这里的a标签也是HTML中规定死了的,它表示这是一个超链接。

例1:
<Book title="">
<author></author>
</Book>

例2:
<Book></Book>

如上所示,Book是一个节点元素(node element),他可以是一个简易类型或是一个复合类型。
若是复合类型就好比例1;若是简易类型就好比例2。
复合类型表明Book可以含有子节点或属性;而简易类型就不行,只能表示叶节点,不能含有子节点或属性。
title是一个属性(attribute),只能是基本类型。

综上所述:
<xs:attribute name="code"> 是一个XML Schema中的标签声明,表明XML文档中的一个属性,
这些标签是规定死的,有其意义的。
不能将XML Schema与XML文档混在一起。
XML Schema只是定义了XML文档的结构。

建议LZ先把什么是XML Schema搞清楚,可能对于你理解XML Schema更好些。