Xml 验证 - XSD 1.0
Xml Validation - XSD 1.0
是否可以在 XSD 1.0 中设置所有元素的 maxOccurs 应该固定?示例:
<row>
<tile />
<tile />
</row>
然后如果我想创建一个新行,它必须恰好有 2 个图块。所以它应该是这样的:
<row>
<tile />
<tile />
</row>
<row>
<tile />
<tile />
</row>
但是,我希望您可以制作的瓷砖数量不受限制。但它被锁定在第一行的计数上。因此,如果第一行有 5 个图块,则所有其他行中必须恰好有 5 个图块。
不,据我所知这是不可能的。在下一版本 XSD (1.1) 中您可以通过添加 Schematron 规则。
作为替代方案,请考虑进行两次验证:首先通过您的模式进行验证。之后使用 Schematron 进行第二遍。在 Schematron 中,您可以检查这些内容。
在 XSD 1.1 中,您可以对任何元素作为行的父元素进行断言,即它们必须具有相同数量的图块:
<xs:assert test="count(distinct-values(row/count(tile))) = 1"/>
但是在 XSD 1.0 中你不能做这种事情。
是否可以在 XSD 1.0 中设置所有元素的 maxOccurs 应该固定?示例:
<row>
<tile />
<tile />
</row>
然后如果我想创建一个新行,它必须恰好有 2 个图块。所以它应该是这样的:
<row>
<tile />
<tile />
</row>
<row>
<tile />
<tile />
</row>
但是,我希望您可以制作的瓷砖数量不受限制。但它被锁定在第一行的计数上。因此,如果第一行有 5 个图块,则所有其他行中必须恰好有 5 个图块。
不,据我所知这是不可能的。在下一版本 XSD (1.1) 中您可以通过添加 Schematron 规则。
作为替代方案,请考虑进行两次验证:首先通过您的模式进行验证。之后使用 Schematron 进行第二遍。在 Schematron 中,您可以检查这些内容。
在 XSD 1.1 中,您可以对任何元素作为行的父元素进行断言,即它们必须具有相同数量的图块:
<xs:assert test="count(distinct-values(row/count(tile))) = 1"/>
但是在 XSD 1.0 中你不能做这种事情。