以文本方式查看主题

-  中文XML论坛 - 专业的XML技术讨论区  (http://bbs.xml.org.cn/index.asp)
--  『 DTD/XML Schema 』  (http://bbs.xml.org.cn/list.asp?boardid=23)
----  [求助]定义元素时,type属性和ref属性有何区别?  (http://bbs.xml.org.cn/dispbbs.asp?boardid=23&rootid=&id=38031)


--  作者:baoyibao99
--  发布时间:9/19/2006 12:41:00 AM

--  [求助]定义元素时,type属性和ref属性有何区别?
定义元素时,type属性和ref属性有何区别?我感觉怎么一样呀,还没有体会到他们的不同,请高手指教!
--  作者:baoyibao99
--  发布时间:9/19/2006 12:43:00 AM

--  
我指的是元素类型为复杂类型时,使用ref属性和使用type属性有何不同?
--  作者:baoyibao99
--  发布时间:9/19/2006 12:45:00 AM

--  
将下述schema
<xsd:element name='Title' type='string'/>
<xsd:element name='Author' type='string'/>
<xsd:element name='Book'>
<xsd:complexType>
<xsd:all>
<xsd:element ref='Tile'/>
<xsd:element ref='Author'/>
</xsd:all>
</xsd:complexType>
</xsd:element>
改成
<xsd:element name='Title' type='string'/>
<xsd:element name='Author' type='string'/>
<xsd:element name='Book'>
<xsd:complexType>
<xsd:all>
<xsd:element type='Tile'/>
<xsd:element type='Author'/>
</xsd:all>
</xsd:complexType>
</xsd:element>
会有何不同?


--  作者:gemingke
--  发布时间:9/19/2006 1:13:00 AM

--  
。。。。。。
你这里的两个例子都涉及到引用的问题

未修改的例子:
使用了ref,并且是对已经定义好的元素进行ref,结果就是book元素下有两个子元素

修改过得例子:
使用了type,却不是已经定义好的simpleType或complexType,而是根本不存在的两个Type,结果就是有效性验证通不过

关于ref的使用,在element内,ref的对象就只能是已经定义好的element;在attribute内使用,其对象就只能是已经定义好的attribute。

关于type的使用,要么引用一个已经定义好的simpleType或complexType,要么就是Schema的内建数据类型。


--  作者:chenchuanfa
--  发布时间:9/27/2006 6:06:00 PM

--  
这里面一个是全局类型的引用,一个是全局变量的引用。对于全局类型的引用,你在用的过程中如果发现这个类型不合适你可以再改。但是全局变量的引用就不行了,你应用后绝对该不了。
或者可以这样说:一个全局声明的元素可在不同的位置被多次重用。复杂类型的元素与引用全局元素的元素不同。对于前者,元素名称与元素类型是彼此独立的;若要修改元素的内容模型,可以为元素指定另一个类型或修改被引用的复杂类型的内容模型。而对于后者,元素的名称和内容模型都必须与被引用元素的一致;因此要修改元素的内容模型就必须引用另一个全局元素,或对被引用全局元素的内容模型进行修改(换句话说 就是在应用的时候不能修改),但这样做的话,所有引用该全局元素的元素都将受到牵连。
W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
46.875ms