Title: Keyrefs and mixed content

The following schema and instance validated properly with the following:

Name: org/apache/xerces
Specification-Title: Java API for XML Processing
Specification-Vendor: Sun Microsystems Inc.
Implementation-Vendor: Apache Software Foundation
Implementation-URL: http://xml.apache.org/xerces2-j
Specification-Version: 1.2
Implementation-Version: Xerces-J_2_0_1_01
Implementation-Title: org.apache.xerces
Comment: Xerces parser implementing JAXP

Why won't it validate properly with this version?

Name: org/apache/xerces/impl/Version
Comment: @impl.name@ for http://xml.apache.org/xerces2-j
Implementation-Title: org.apache.xerces.impl.Version
Implementation-Version: 2.5.0
Implementation-Vendor: Apache Software Foundation
Implementation-URL: http://xml.apache.org/xerces2-j/

Here's the schema:

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs='http://www.w3.org/2001/XMLSchema'>

        <xs:element name="Zones">
                <xs:complexType>
                        <xs:sequence>
                                <xs:element name="Zone" type="Zone" maxOccurs="unbounded"/>
                        </xs:sequence>
                </xs:complexType>
                <xs:key name="ZoneName">
                        <xs:selector xpath="./Zone"/>
                        <xs:field xpath="@name"/>
                </xs:key>
                <xs:keyref name="ZoneToZoneName" refer="ZoneName">
                        <xs:selector xpath="./Zone/Zone"/>
                        <xs:field xpath="."/>
                </xs:keyref>
        </xs:element>

        <xs:complexType name="Zone" mixed="true" >
                <xs:choice minOccurs="0" maxOccurs="unbounded">
                        <xs:element name="Country" type="xs:string"/>
                        <xs:element name="Zone" type="Zone"/>
                </xs:choice>
                <xs:attribute name="name" type="xs:string" use="optional"/>
        </xs:complexType>

</xs:schema>

And here's the instance:

<?xml version="1.0" encoding="UTF-8"?>
<Zones>
        <Zone name="United States">
                <Country>US</Country>
        </Zone>

        <Zone name="United States Plus Mexico">
                <Country>MX</Country>
                <Zone>United States</Zone>
        </Zone>
</Zones>

With the keyref I'm validating that the content of the nested zone (in this case <Zone>United States</Zone>) matches one of the zone names.  Any idea why this no longer works?

Thanks,
Laura

Reply via email to