XmlSchema 断言另一个元素的大小
XmlSchema assert the size with another element
我正在尝试创建一个 xmlSchema 来验证我的游戏地图。
我有一个全局元素定义如下
<xs:element name="size">
<xs:complexType>
<xs:sequence>
<xs:element type="xs:byte" name="rowCount"/>
<xs:element type="xs:byte" name="columnCount"/>
</xs:sequence>
</xs:complexType>
</xs:element>
我还需要其他元素,我希望这些元素的大小与全局元素中定义的元素相同。
所以后面元素的最小值和最大值要遵循全局元素中设置的大小。我正在使用 XSD 1.1,所以我可以使用断言,但我不知道正确定义规则的语法。
<xs:element name="rows" minOccurs & maxOccurs=VALUE OF size.rowCount>
<xs:element name="tiles" minOccurs & maxOccurs=VALUE OF size.columnCount>
谢谢
你可以写,例如
<xs:assert test="every $table in descendant::table
satisfies count($table/row) = size/@rowCount"/>
但细节取决于您的确切结构。
重要的是断言属于包含条件中涉及的所有值的对象 - 断言不能在定义它的元素的子树之外查看。并且 XPath 表达式是相对于包含元素的。另外,如果元素在命名空间中,请记住使用命名空间前缀。
我正在尝试创建一个 xmlSchema 来验证我的游戏地图。
我有一个全局元素定义如下
<xs:element name="size">
<xs:complexType>
<xs:sequence>
<xs:element type="xs:byte" name="rowCount"/>
<xs:element type="xs:byte" name="columnCount"/>
</xs:sequence>
</xs:complexType>
</xs:element>
我还需要其他元素,我希望这些元素的大小与全局元素中定义的元素相同。
所以后面元素的最小值和最大值要遵循全局元素中设置的大小。我正在使用 XSD 1.1,所以我可以使用断言,但我不知道正确定义规则的语法。
<xs:element name="rows" minOccurs & maxOccurs=VALUE OF size.rowCount>
<xs:element name="tiles" minOccurs & maxOccurs=VALUE OF size.columnCount>
谢谢
你可以写,例如
<xs:assert test="every $table in descendant::table
satisfies count($table/row) = size/@rowCount"/>
但细节取决于您的确切结构。
重要的是断言属于包含条件中涉及的所有值的对象 - 断言不能在定义它的元素的子树之外查看。并且 XPath 表达式是相对于包含元素的。另外,如果元素在命名空间中,请记住使用命名空间前缀。