使用以下XSD,我想在我的XML中强制执行: 1. D Element可用 2.或E元素将F作为其子元素。并且F元素具有带H值的G属性。 3.或满足1和2条件
但我无法找到任何方法来实现它。 请帮我解决一下这个。提前谢谢。
.selectize-control .selectize-dropdown {
position: static !important;
}
谢谢, 阿卡什
答案 0 :(得分:0)
您需要的验证类型是动态行为。 XSD无法进行此类验证。但是,还有另一个标准Schematron可以执行动态验证。
什么是Schematron?
用于对XML文档中是否存在模式进行断言的语言。
以下是使用 Schematron 语言的示例XSD:
<xs:element name="sampleElement" type="sampleElement_Type">
<xs:annotation>
<xs:appinfo>
<sch:pattern name="Co-occurrence constraint on attribute Title" xmlns:sch="http://purl.oclc.org/dsdl/schematron">
<!--<sch:rule context="sampleElement">-->
<xs:attribute name="Attr1" use="required" form="unqualified">
<xs:simpletype>
<xs:restriction base="xs:string">
<xs:enumeration value="XYZ" />
<xs:enumeration value="PQRS" />
</xs:restriction>
</xs:simpletype>
</xs:attribute>
<xs:attribute name="Attr2" use="required" form="unqualified">
<xs:simpletype>
<xs:restriction base="xs:string">
<xs:enumeration value="ABC" />
<xs:enumeration value="DEF" />
</xs:restriction>
</xs:simpletype>
</xs:attribute>
<sch:rule context="*[@Attr1]">
<sch:assert test="(@Attr1 = 'XYZ' and @Attr2 = 'ABC')">If the Attr1 is "XYZ" then the Attr2 must be "ABC".</sch:assert>
</sch:rule>
<sch:rule context="*[@Attr1]">
<sch:assert test="(@Attr1 = 'PQRS' and @Attr2 = 'DEF')">If the Attr1 is "PQRS" then the Attr2 must be "DEF".</sch:assert>
</sch:rule>
</sch:pattern>
</xs:appinfo>
</xs:annotation>
此架构声明以下规则:
Attr1
的值为XYZ
,则属性Attr2
的值应为ABC
。Attr1
的值为PQRS
,则属性Attr2
的值应为DEF
。