【问题标题】:XML schema attribute dependanciesXML 模式属性依赖项
【发布时间】:2013-12-20 22:31:26
【问题描述】:

我想问一下是否可以在 XML xsd 模式中声明依赖属性...

例子:

<xsd:simpleType name="packCategories">
 <xsd:restriction base="xsd:byte">
  <xsd:minInclusive value="0"/>
  <xsd:maxInclusive value="4"/>
 </xsd:restriction>
</xsd:simpleType>

<xs:element name="pack">
 <xs:complexType>
   <!-- elements go here -->
   <xs:attribute type="packCategories" name="category" use="required"/>
   <xs:attribute type="xs:string" name="explanation" use="optional"/>
 </xs:complexType>
</xs:element>

这里一切似乎都很好,但是,如果类别属性等于 4,我希望说明属性是强制性的。这可能吗?或许还有元素呢?

【问题讨论】:

    标签: xml xsd schema


    【解决方案1】:

    如果您使用的是 XML Schema 1.0,则无法在架构中表达这样的约束,但您可以使用 Schematron 或在应用程序级别进行检查。

    如果您使用的是 XML Schema 1.1,您可以通过 XPath 2.0 使用 xs:assert specify co-occurrence constraints,如下所示:

      <xs:element name="pack">
        <xs:complexType>
          <!-- elements go here -->
          <xs:attribute type="packCategories" name="category" use="required"/>
          <xs:attribute type="xs:string" name="explanation" use="optional"/>
          <xs:assert test="@explanation or @packCategories != 4"/>
        </xs:complexType>
      </xs:element>
    

    【讨论】:

      猜你喜欢
      • 2018-12-10
      • 1970-01-01
      • 1970-01-01
      • 2017-03-01
      • 1970-01-01
      • 2020-08-31
      • 2011-11-07
      • 2010-11-21
      相关资源
      最近更新 更多