我有一个元素'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支持的版本。