【问题标题】:XSD Self Referencing issuesXSD 自引用问题
【发布时间】:2014-10-04 09:13:22
【问题描述】:

我们正在从 OData XML 创建自己的架构,以使其更加简单和通用,以便我们的合作伙伴能够使用。但是,我偶然发现了这个问题,它调用了自己的类型(自引用),我想不出解决这个问题的方法。

这是sn-p,有什么想法吗?

<xsd:element name="User" type="userType"/>
<xsd:complexType name="userType">
    <xsd:all>
        <xsd:element name="customManagerList">
            <xsd:annotation>
                <xsd:documentation>Custom Manager</xsd:documentation>
            </xsd:annotation>
            <xsd:complexType>
                <xsd:sequence>
                    <xsd:element name="customManager" type="userType" maxOccurs="unbounded"/>
                </xsd:sequence>
            </xsd:complexType>
        </xsd:element>
    </xsd:all>
</xsd:complexType>
</xsd:schema>

【问题讨论】:

  • 只需在您的 customManager 元素粒子中添加一个 minOccurs="0" 就可以了。

标签: xml xsd odata


【解决方案1】:

到目前为止,我认为没有任何问题。只需将您的 sn-p 包含在 &lt;xsd:schema&gt; 标签中,例如:

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
...
</xsd:schema>

并通过验证。有用。允许 complexType 引用自身。

【讨论】:

  • 根据 XSD 规范,架构确实有效;然而,出于所有实际原因,它是无效的仅仅是因为没有人可以根据它创建一个有效的 XML 实例。要使其工作,需要将 minOccurs="0" 添加到 customManager 元素粒子。我见过的一些验证器正确地捕捉到了这种不可能性,并将其报告为错误。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-08-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-30
  • 2013-01-30
  • 1970-01-01
相关资源
最近更新 更多