对元素总和的限制

时间:2014-04-14 22:17:51

标签: xml

我有一个可以包含多个子对象的对象,如下所示:

  <parent>
    <totalCandy>5</totalCandy>
    <child>
      <candy>2</candy>
    </child>
    <child>
      <candy>3</candy>
    </child>
  </parent>

我希望XML只有在父项的所有子项的'candy'值的总和与父项的'totalCandy'值完全相同时才能验证。可以使用模式进行此检查(如果是,您可以给我一些关键字来查看吗?)?或者我应该在我的解析器中执行此操作?

到目前为止,XSD架构如下,但我不确定如何对子元素的总和应用限制。

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

<xs:element name="parent" type="parentType"/>

<xs:complexType name="childType">
  <xs:sequence>
    <xs:element name="candy" type="xs:positiveInteger"/>
  </xs:sequence>
</xs:complexType>

<xs:complexType name="parentType">
  <xs:sequence>
    <xs:element name="totalCandy" type="xs:positiveInteger"/>
    <xs:element name="child" type="childType" maxOccurs="unbounded"/>
  </xs:sequence>
</xs:complexType>

</xs:schema>

1 个答案:

答案 0 :(得分:0)

xs:restriction,上下文不支持

xs:complexType xs.:restriction这样的xs:minInclusive子项仅适用于xs:simpleContent。这是有道理的:

XSD定义了一个模式,但您想要做的不是对XML文件模式的限制,而是对内容的限制。如果您不信任数据,请省略摘要并自行计算(例如,让XSLT处理器生成它)。