我有一个元素'ABC'。对于该元素,有 3 个子元素。a、b 和 c,它们是整数类型。并且元素 c 的最大出现次数是无穷大。如果元素“a”的值为 1,“b”为 2,则“c”的出现次数应为 3。我可以动态设置元素 c 的最大出现次数吗?或基于元素 'a' 和 'b' 的值 例如:参考图片参考代码 截图 参考错误信息 截图 参考值截图
问问题
39 次
1 回答
0
XSD 1.1 架构具有xs: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 架构 1.1 支持的版本。
于 2021-08-16T09:05:53.640 回答