Xml XSD验证:元素值应该是其他两个元素的总和 2000 1000 1000
如何添加XSD验证,使元素CEU的值始终等于第一年和第二年值的总和 如果您使用的是Xml XSD验证:元素值应该是其他两个元素的总和 2000 1000 1000,xml,xsd,xsd-validation,Xml,Xsd,Xsd Validation,如何添加XSD验证,使元素CEU的值始终等于第一年和第二年值的总和 如果您使用的是xsd1.1,则可以使用xs:assert: <xml> <root> <courses> <course> <ceu>2000</ceu> <first_year>1000</first_year> <
xsd1.1
,则可以使用xs:assert
:
<xml>
<root>
<courses>
<course>
<ceu>2000</ceu>
<first_year>1000</first_year>
<second_year>1000</first_year>
</course>
</courses>
</root>
XSD 1.0
不可能
XSD 1.1
此XML文件将有效:
<xs:element name="course">
<xs:complexType>
<xs:sequence>
<xs:element name="ceu" type="xs:positiveInteger"/>
<xs:element name="first_year" type="xs:positiveInteger"/>
<xs:element name="second_year" type="xs:positiveInteger"/>
</xs:sequence>
<xs:assert test="ceu = sum((first_year,second_year))"/>
</xs:complexType>
</xs:element>
3000
1000
2000
使用此XSD:
<course>
<ceu>3000</ceu>
<first_year>1000</first_year>
<second_year>2000</second_year>
</course>
但是这个XML:
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:vc="http://www.w3.org/2007/XMLSchema-versioning" vc:minVersion="1.1">
<xs:element name="course">
<xs:complexType>
<xs:sequence>
<xs:element name="ceu" type="xs:positiveInteger"/>
<xs:element name="first_year" type="xs:positiveInteger"/>
<xs:element name="second_year" type="xs:positiveInteger"/>
</xs:sequence>
<xs:assert test="ceu = first_year + second_year"/>
</xs:complexType>
</xs:element>
</xs:schema>
4000
1000
2000
将违反该断言并导致如下错误消息:
:断言评估('ceu=第一年+
模式类型“#Anantype_course”上的元素“course”的第二年
没有成功
<course>
<ceu>4000</ceu>
<first_year>1000</first_year>
<second_year>2000</second_year>
</course>