Uploaded image for project: 'Xerces2-J'
  1. Xerces2-J
  2. XERCESJ-1396

key/keyref does not validate with recursion

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Open
    • Major
    • Resolution: Unresolved
    • 2.9.1
    • None
    • None
    • Window, with Eclipse and the xerces plug-in is org.apache.xerces_2.9.0.v200805270400

    Description

      Hi everyone,
      Is it true that key/keyref does not validate with recursion? I have this question because that when I validate the following xml file, the validation of an element defined with recursion doesn't work. Following is xml and the corresponding xsd file. (I validate xml file with Eclipse and the xerces plug-in is org.apache.xerces_2.9.0.v200805270400). Thanks in advance!
      Toan.

      xsd file :

      <?xml version="1.0" encoding="ISO-8859-1"?>
      <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
      <xsd:element name="CompositeType" type="CompositeType" />
      <xsd:element name="Model" type="Model">
      <!-- CompositeTypeKey/KeyRef -->
      <xsd:key name="CompositeTypeKey">
      <xsd:selector
      xpath=".//CompositeType" />
      <xsd:field xpath="./typeName" />
      </xsd:key>
      <xsd:keyref name="CompositeTypeRef" refer="CompositeTypeKey">
      <xsd:selector
      xpath=".//Attribute/CompositeTypeReference" />
      <xsd:field xpath="." />
      </xsd:keyref>
      </xsd:element>

      <xsd:complexType name="CompositeType">
      <xsd:sequence>
      <xsd:element minOccurs="0" name="typeName"
      type="xsd:string" />
      <xsd:element maxOccurs="unbounded" minOccurs="0"
      name="Attribute" type="Attribute" />
      </xsd:sequence>
      </xsd:complexType>
      <xsd:complexType name="Attribute">
      <xsd:sequence>
      <xsd:element minOccurs="0" name="name" type="xsd:string" />
      <xsd:choice minOccurs="1">
      <xsd:element minOccurs="1" maxOccurs="1"
      name="CompositeType" type="CompositeType" />
      <xsd:element minOccurs="1" maxOccurs="1"
      name="CompositeTypeReference" type="xsd:string" />
      </xsd:choice>
      </xsd:sequence>
      </xsd:complexType>
      <xsd:complexType name="Model">
      <xsd:sequence>
      <xsd:element maxOccurs="unbounded" minOccurs="0"
      name="CompositeType" type="CompositeType" />
      </xsd:sequence>
      </xsd:complexType>
      </xsd:schema>

      xml file :

      <?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
      <Model xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:noNamespaceSchemaLocation="test.xsd" >
      <CompositeType>
      <typeName>Bozo</typeName>
      </CompositeType>
      <CompositeType>
      <typeName>MyData</typeName>
      <Attribute>
      <name>b</name>
      <CompositeTypeReference>Bozo</CompositeTypeReference>
      </Attribute>
      <Attribute>
      <name>d</name>
      <CompositeType>
      <typeName>CustomData</typeName>
      </CompositeType>
      </Attribute>
      <Attribute>
      <name>n</name>
      <CompositeType>
      <typeName>NewData</typeName>
      <Attribute>
      <name>m</name>
      <CompositeTypeReference>My</CompositeTypeReference>
      </Attribute>
      <Attribute>
      <name>c</name>
      <CompositeTypeReference>Custom</CompositeTypeReference>
      </Attribute>
      </CompositeType>
      </Attribute>
      </CompositeType>
      </Model>

      Notice that when validate if the validation of recursion works, there will be two errors at :
      <CompositeTypeReference>My</CompositeTypeReference>
      <CompositeTypeReference>Custom</CompositeTypeReference>
      because the right references are :
      <CompositeTypeReference>MyData</CompositeTypeReference>
      <CompositeTypeReference>CustomData</CompositeTypeReference>

      Attachments

        Issue Links

          Activity

            People

              mrglavas@ca.ibm.com Michael Glavassevich
              toan Chu Minh Toan
              Votes:
              1 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

                Created:
                Updated: