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

XML的ref属性,请指教
下面的例子是一个带有复杂类型 "note" 元素的 schema。"note" 元素包含四个简单元素:"to", "from", "heading" 以及 "body":-----摘自这里

<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">

<xs:element name="note">
  <xs:complexType>
  <xs:sequence>
  <xs:element ref="to"/>
  <xs:element ref="from"/>
  <xs:element ref="heading"/>
  <xs:element ref="body"/>
  </xs:sequence>
  </xs:complexType>
</xs:element>

<xs:element name="to" type="xs:string"/>
<xs:element name="from" type="xs:string"/>
<xs:element name="heading" type="xs:string"/>
<xs:element name="body" type="xs:string"/>

</xs:schema>

我的问题:
schema文档定义的复杂类型元素,使用ref属性分别指向了元素to、from、heading、body
既然定义了这几个元素,那这几个元素本身会不会在XML文档中显示呢?也就是说ref引用的时候,要显示一次,然后定义它本身的时候,又要显示一次,共在XML文档中显示2次吗?

------解决方案--------------------
ref就像指针,只显示一次啊
------解决方案--------------------
这里面一个是全局类型的引用,一个是全局变量的引用。对于全局类型的引用,你在用的过程中如果发现这个类型不合适你可以再改。但是全局变量的引用就不行了,你应用后绝对该不了。
或者可以这样说:一个全局声明的元素可在不同的位置被多次重用。复杂类型的元素与引用全局元素的元素不同。对于前者,元素名称与元素类型是彼此独立的;若要修改元素的内容模型,可以为元素指定另一个类型或修改被引用的复杂类型的内容模型。而对于后者,元素的名称和内容模型都必须与被引用元素的一致;因此要修改元素的内容模型就必须引用另一个全局元素,或对被引用全局元素的内容模型进行修改(换句话说 就是在应用的时候不能修改),但这样做的话,所有引用该全局元素的元素都将受到牵连。

http://blog.csdn.net/yemaozi2009/article/details/4726968
------解决方案--------------------
探讨

0结贴?
顶 孟子