我有一个可以包含多个子对象的对象,如下所示:
<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>
答案 0 :(得分:0)
xs:restriction
,上下文不支持 xs:complexType
xs.:restriction
这样的xs:minInclusive
子项仅适用于xs:simpleContent
。这是有道理的:
XSD定义了一个模式,但您想要做的不是对XML文件模式的限制,而是对内容的限制。如果您不信任数据,请省略摘要并自行计算(例如,让XSLT处理器生成它)。