XSD 跳过给定节点下整个结构的验证
XSD skip validation of whole structure beneath a given node
我想在我自己的 XML 中包含一些通用的和未知的 XML 内容。
因此,我想跳过 XML 文件中特定节点的验证。
我正在尝试使用以下 XSD 从验证中跳过节点 parentField
下的所有内容。但它似乎只是跳过我的 XML 子树的第一级作为 parentField
的一部分。是否有任何解决方案将通用 XML 作为您自己的 XML 的一部分使用 xs:any
或建议的其他技巧(例如将其粘贴为 CDATA)?
<xs:complexType name="MyType" final="">
<xs:all minOccurs="0">
<xs:element name="parentField">
<xs:complexType>
<xs:sequence>
<xs:any minOccurs="0" processContents="skip"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:all>
</xs:complexType>
事实上,您的示例确实跳过了 parentField
元素下整个结构的验证,因为您将 xs:any
与 @processContents="skip"
、[= 一起使用28=]假设parentField
下只有一个child因为maxOccurs
默认为1
,并且假设parentField
[=30=下没有混合文本].
对上述两项规定进行调整,
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="r" type="MyType"/>
<xs:complexType name="MyType" final="">
<xs:all minOccurs="0">
<xs:element name="parentField">
<xs:complexType mixed="true">
<xs:sequence>
<xs:any minOccurs="0" maxOccurs="unbounded" processContents="skip"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:all>
</xs:complexType>
</xs:schema>
将更充分地允许 parentField
下的任意标记
<?xml version="1.0" encoding="UTF-8"?>
<r>
<parentField>
<v/>
All
<x>
of this
<y>
content
<z>is now allowed</z>
under parentField.
</y>
</x>
</parentField>
</r>
根据要求。
我想在我自己的 XML 中包含一些通用的和未知的 XML 内容。 因此,我想跳过 XML 文件中特定节点的验证。
我正在尝试使用以下 XSD 从验证中跳过节点 parentField
下的所有内容。但它似乎只是跳过我的 XML 子树的第一级作为 parentField
的一部分。是否有任何解决方案将通用 XML 作为您自己的 XML 的一部分使用 xs:any
或建议的其他技巧(例如将其粘贴为 CDATA)?
<xs:complexType name="MyType" final="">
<xs:all minOccurs="0">
<xs:element name="parentField">
<xs:complexType>
<xs:sequence>
<xs:any minOccurs="0" processContents="skip"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:all>
</xs:complexType>
事实上,您的示例确实跳过了 parentField
元素下整个结构的验证,因为您将 xs:any
与 @processContents="skip"
、[= 一起使用28=]假设parentField
下只有一个child因为maxOccurs
默认为1
,并且假设parentField
[=30=下没有混合文本].
对上述两项规定进行调整,
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="r" type="MyType"/>
<xs:complexType name="MyType" final="">
<xs:all minOccurs="0">
<xs:element name="parentField">
<xs:complexType mixed="true">
<xs:sequence>
<xs:any minOccurs="0" maxOccurs="unbounded" processContents="skip"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:all>
</xs:complexType>
</xs:schema>
将更充分地允许 parentField
<?xml version="1.0" encoding="UTF-8"?>
<r>
<parentField>
<v/>
All
<x>
of this
<y>
content
<z>is now allowed</z>
under parentField.
</y>
</x>
</parentField>
</r>
根据要求。