在以下场景中:
<apples>
<isred>1</isred>
<color>red</color>
</apples>
有没有办法对isred
元素的验证进行限制,以便何时isred = 1
必须color
这样做red
?
编辑:XSD 是这里唯一的选择。RelaxNG 和 Schematron 不是可用的选项。
在以下场景中:
<apples>
<isred>1</isred>
<color>red</color>
</apples>
有没有办法对isred
元素的验证进行限制,以便何时isred = 1
必须color
这样做red
?
编辑:XSD 是这里唯一的选择。RelaxNG 和 Schematron 不是可用的选项。
可能,使用 XML 模式 1.1断言。没用过,而且规格太复杂,无法快速做出决定。
就@forty-two 而言,这是满足您要求的 XSD 1.1 示例;开箱即用的 XSD 1.0 无法满足您的要求。
<?xml version="1.0" encoding="utf-8"?>
<!--XML Schema generated by QTAssistant/XML Schema Refactoring (XSR) Module (http://www.paschidev.com)-->
<xsd:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xerces="http://xerces.apache.org">
<xsd:element name="apples">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="isred" type="xsd:unsignedByte"/>
<xsd:element name="color" type="xsd:string"/>
</xsd:sequence>
<xsd:assert test="(isred eq 1 and color eq 'red')" xerces:message="If isred, then color must be red..."/>
</xsd:complexType>
</xsd:element>
</xsd:schema>
无效示例将显示为:
cvc-assertion.failure: Assertion failed for schema type '#anonymous'. If isred, then color must be red...