如何根据XML中的另一个元素值限制元素的最大出现次数?



我有一个元素'ABC'。这个元素有3个子元素。A b c这些都是整数类型。元素c出现的最大值是无穷大。如果元素'a'的值是1,'b'是2,那么'c'的出现次数应该是3。我可以动态设置元素c的最大出现次数吗?或者根据元素a和b的值例如:参考图片参考代码截图参考错误信息截图参考值

截图

XSD 1.1 schema withxs:assert:

<xs:element name="ABC">
<xs:complexType>
<xs:sequence>
<xs:element name="a" type="xs:integer"/>
<xs:element name="b" type="xs:integer"/>
<xs:element name="c" type="xs:string" maxOccurs="unbounded"/>
</xs:sequence>
<xs:assert id="restrict-occurence" test="count(c) = a + b"/>
</xs:complexType>
</xs:element>

这样,像

这样的样本
<?xml version="1.0" encoding="UTF-8"?>
<ABC xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="assert-example1.xsd">
<a>1</a>
<b>2</b>
<c>foo</c>
<c>bar</c>
<c>baz</c>
</ABC>

被认为是有效的,而

<?xml version="1.0" encoding="UTF-8"?>
<ABC xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="assert-example1.xsd">
<a>1</a>
<b>2</b>
<c>foo</c>
</ABC>

引发关于断言失败的验证错误:Assertion evaluation ('count(c) = a + b') for element 'ABC' on schema type '#AnonType_ABC' did not succeed..

在oXygen中使用Xerces进行测试,这里没有XMLSpy进行测试。

请确保使用支持/已启用XSD schema 1.1支持的版本。

相关内容

  • 没有找到相关文章

最新更新