【发布时间】:2015-05-12 04:02:09
【问题描述】:
考虑到这个xml:
<myName myClass="grandfather" name="grandfather_name" transaction="new">
<attributes>
<name>test name</name>
<description>some stuff for desc</description>
<version>the current version</version>
</attributes>
<myName myClass="father" name="father_name" transaction="new">
<attributes>
<name>test name</name>
<description>some stuff for desc</description>
<version>the current version</version>
<wifeName>name of wife</wifeName>
</attributes>
<myName myClass="child_1" name="child_1_name" transaction="new">
<attributes>
<name>test name</name>
<description>some stuff for desc</description>
<version>the current version</version>
<GirlFriendName>name of GirlFriend</GirlFriendName>
</attributes>
</myName>
<myName myClass="child_2" name="child_2_name" transaction="new">
<attributes>
<name>test name</name>
<description>some stuff for desc</description>
<version>the current version</version>
<GirlFriendName>name of GirlFriend</GirlFriendName>
</attributes>
</myName>
</myName>
我只想验证“祖父”及其属性,而忽略 XML 的其余部分。 出于这个原因,我在架构中添加了这一行: type="xs:anyType"
此行导致验证忽略“父亲”,但验证在“child_1”和“child_2”中失败。
“发现以元素'GirlFriendName'开头的无效内容。否 此时需要子元素”
正在使用的 XSD 是这样的:
<?xml version="1.0" encoding="UTF-8"?>
<xs:group name="AttributesGroup">
<xs:all>
<xs:element name="name" type="xs:string" minOccurs="1" maxOccurs="1" />
<xs:element name="description" type="xs:string" minOccurs="0" maxOccurs="1" />
<xs:element name="version" type="xs:string" minOccurs="0" maxOccurs="1" />
</xs:all>
</xs:group>
<!-- BASE COMPLEX TYPES DEFINITIONS -->
<xs:complexType name="MyComplexType">
<xs:sequence>
<xs:element name="attributes" minOccurs="1" maxOccurs="unbounded">
<xs:complexType>
<xs:group ref="AttributesGroup"/>
</xs:complexType>
</xs:element>
<xs:element name="myName" type="xs:anyType" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="myClass" type="xs:string" use="required" />
<xs:attribute name="name" type="xs:string" />
<xs:attribute name="transaction" type="xs:string" use="required" />
</xs:complexType>
<!-- ROOT ELEMENT -->
<xs:element name="myName" type="MyComplexType" />
我怎样才能忽略“父亲”下面的所有内容?
【问题讨论】:
标签: xml validation xsd