XSD任何元素

时间:2010-04-07 10:54:14

标签: xsd

我正在尝试创建一个列表,其中一些元素已定义,一些元素未定义,没有优先顺序。 我用这种方式试了一下,用任何元素:

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

<xs:complexType name="object" mixed="true">
  <xs:choice>
    <xs:element name="value" minOccurs="1" maxOccurs="1">
    <xs:simpleType>
     <xs:restriction base="xs:integer">
      <xs:enumeration value="1"/>
     </xs:restriction>
    </xs:simpleType>
 </xs:element>    
 <xs:any namespace="##any" processContents="skip"/>  
  </xs:choice>
</xs:complexType>

<xs:element name="object" type="object"/>

</xs:schema> 

它告诉我这个错误:

  

:0:0:错误:复杂类型“对象”违反了唯一粒子   归因于其组件“值”和“## any”的归属规则

有人可以帮助我解决问题吗?

1 个答案:

答案 0 :(得分:2)

您不能像这样定义您的架构,它违反了唯一的粒子归因规则:解析器无法判断它在文档中找到的“value”元素是应该针对“value”还是针对“any”进行验证。

这是good overview

考虑使用两个名称空间并使用带有命名空间的xsd:any,这样就可以解决问题。