2012-04-04 70 views
2

我想定义第一个元素是特定类型的,下面是一些元素的顺序。像这样:XML架构中的订单定义

<node> 
<!-- always at first --> 
<node-data> 
... 
</node-data> 

<!-- other nodes in any order--> 
<node3></node3> 
<node1></node1> 
<node2></node2> 
</node> 

我不能使用<xsd:sequence>,因为它会强制所有节点按顺序排列。

感谢您的帮助。对不起,我的英语。

回答

2

一个很好的起点布局看起来是这样的:

<?xml version="1.0" encoding="utf-8"?> 
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema"> 
    <xs:element name="node"> 
    <xs:complexType> 
     <xs:sequence> 
     <xs:element name="node-data"/> 
     <xs:choice minOccurs="0" maxOccurs="unbounded">   
      <xs:element name="node3" /> 
      <xs:element name="node1" /> 
      <xs:element name="node2" /> 
     </xs:choice> 
     </xs:sequence> 
    </xs:complexType> 
    </xs:element> 
</xs:schema> 

你可以再细化的种类,添加更多节点的选择下,等等。如果你想支持通配符,然后使用xs:any将需要。

+0

非常感谢,它帮助了我。奇怪的是,xsd的作者没有给出更简单的方法来完成这个基本功能。 – RoadBump 2012-04-04 23:11:39