以文本方式查看主题

-  中文XML论坛 - 专业的XML技术讨论区  (http://bbs.xml.org.cn/index.asp)
--  『 DTD/XML Schema 』  (http://bbs.xml.org.cn/list.asp?boardid=23)
----  求助:一个XSD的问题!  (http://bbs.xml.org.cn/dispbbs.asp?boardid=23&rootid=&id=39143)


--  作者:juny.yin
--  发布时间:10/20/2006 2:55:00 PM

--  求助:一个XSD的问题!
要定义一个元素的内容模型,假设这个元素为<EleParent>,当前它有四个子元素,分别是:<a>,<b>,<c>,<d>,这些子元素可以以任意顺序出现在<EleParent>下,并且考虑扩展性,以后可以以任意顺序扩展任意其他的子元素。

请问如何写满足上面需求的XSD?

非常感谢!


--  作者:gemingke
--  发布时间:10/20/2006 5:57:00 PM

--  
既有固定的元素,还要能随时扩展。。。

除非随时更新XSD文档


--  作者:gemingke
--  发布时间:10/24/2006 1:39:00 PM

--  
呃,上面的话我收回一半

任意添加子元素的代码倒是有,如下
<xs:any namespace="##other" minOccurs="0" maxOccurs="unbounded" processContents="lax"/>
但是这个any只能出现在sequence下面,也就是说,在当前已有元素出现顺序固定的情况下,按任意顺序添加就不太可能。

之所以如此,是因为要想<a>,<b>,<c>,<d>子元素按任意顺序出现,只能用all合成器。但是在all下面,不能使用any


--  作者:gemingke
--  发布时间:10/26/2006 12:25:00 PM

--  
。。。。。。上面所说的推翻,具体怎么实现,正在考虑

目前有个解决方案,不过不太满意,schema片断如下

<xs:element name="EleParent">
  <xs:complexType>
   <xs:sequence>
    <xs:choice maxOccurs="unbounded">
     <xs:element name="a"/>
     <xs:element name="b"/>
     <xs:element name="c"/>
     <xs:element name="d"/>
     <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
    </xs:choice>
    
   </xs:sequence>
  </xs:complexType>
 </xs:element>


--  作者:juny.yin
--  发布时间:10/26/2006 12:45:00 PM

--  
从当前调查的情况来看,这样的内容模型需求只通过XML Schema是无法描述,因为:
形如:
<xs:all>
  <xs:element name="a">
    <xs:complexType>...</xs:complexType>
  </xs:element>
  <xs:element name="b">
    <xs:complexType>...</xs:complexType>
  </xs:element>
  <xs:element name="c">
    <xs:complexType>...</xs:complexType>
  </xs:element>
  <xs:any processContets="skip" />
</xs:all>
的语句在XML Schema中是不支持的。

形如:
<xs:choice maxOccurs="unbounded">
  <xs:element name="a">
    <xs:complexType>...</xs:complexType>
  </xs:element>
  <xs:element name="b">
    <xs:complexType>...</xs:complexType>
  </xs:element>
  <xs:element name="c">
    <xs:complexType>...</xs:complexType>
  </xs:element>
  <xs:any processContets="skip" />
</xs:choice>
虽然语法上没有错误,但是却是一个不确定的内容模型定义。
其它类似的定义也会出现“不确定”情况。


--  作者:gemingke
--  发布时间:10/26/2006 1:50:00 PM

--  
干嘛要分别对a、b、c、d使用complexType?
W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
4,207.031ms