【问题标题】:XSD any elementXSD 任意元素
【发布时间】:2015-07-07 08:21:35
【问题描述】:

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

<?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: 错误:复杂类型 'object' 违反了唯一粒子 属性规则在其组件“值”和“##any”中

谁能帮我解决这个问题?

【问题讨论】:

    标签: xsd


    【解决方案1】:

    你不能这样定义你的架构,它违反了唯一粒子属性规则:解析器无法判断它在文档中找到的“值”元素是应该根据“值”还是“任何”进行验证。

    这是good overview。

    考虑使用两个命名空间并将 xsd:any 与一个命名空间一起使用,这将解决问题。

    【讨论】:

    • 谢谢,但我不明白如何实现你的想法。你能详细解释一下你的想法吗?
    • 我看到您已经在此页面中回答了有关此主题的问题:stackoverflow.com/questions/2592205/… 我尝试了您的建议并将这些行添加到 XML 文件中: 但它还没有检查验证 ov 值。你知道为什么吗?
    • 我理解我的错误。我应该把包含放在 xsd 文件中,而不是放在 xml 文件中。现在它工作正常。非常感谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-24
    • 2019-07-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多