我有一个xsd,其中定义了一些元素,下面给出一个例子,
<xs:complexType name="carType">
<xs:complexContent>
<xs:extension base="vehicleType">
<xs:all>
<xs:element name="mode">
<xs:complexType>
<xs:choice>
<xs:element name="off"/>
<xs:element name="driving"/>
</xs:choice>
</xs:complexType>
</xs:element>
<xs:element ref="speed" minOccurs="0"/>
<xs:element ref="properties"/>
</xs:all>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="CarA" type="carType" substitutionGroup="vehicleType"/>
<xs:element name="CarB" substitutionGroup="vehicleType"/>
如果有任何XML包含CarA和CarB以外的元素,我想跳过验证。
<CarC>
<myCarType/>
</CarC>
当前我正在获取'cvc-elt.1:找不到元素'CarC'的声明。'
答案 0 :(得分:1)
这取决于您用来调用架构验证器的API。查找选项“松散验证”。如果使用Saxon s9api接口,则可以通过设置SchemaValidator.setLax(true)
来调用宽松验证。当然,您选择的模式处理器很可能不提供此选项。
松散验证的意思是“如果架构包含相关元素的声明,则针对该声明进行验证;否则将内容视为有效。”