You are viewing a plain text version of this content. The canonical link for it is here.
Posted to j-users@xerces.apache.org by Bill Riegel <BR...@lgc.com> on 2003/05/22 21:01:17 UTC

FW: problem with using the "|" in the field element under the key element

 
>From a thread on xml-dev@lists.xml.org <ma...@lists.xml.org>  ,
 
I am having problems parsing the instance below. I am using a "|" in the
field element of the key named kActivity in the
Referenced XML Schema file ( included ).
 
 
My last email on the xml-dev email list. 
 
 
It seems from the discussion that you can have the Pipe, "|" in the field
xpath. So why does Xerces fails when parsing this student3.xml
 
Xerces fails when parsing the student3.xml
SEVERE: java.lang.RuntimeException: org.xml.sax.SAXParseException: Identity
Constraint error (cvc-identity-constraint.4.2.1):  element
"studentActivities" has a key with no value.
 
 
My guess is that it only sees the act:name in the field definition
      <field xpath="act:name|act:desc"/>
 
Note: If I have only name elements under activity. Xerces is happy.
 
So what is wrong ?
 
 
Schema
<?xml version="1.0" encoding="UTF-8"?>
<schema targetNamespace="http://www.exampleU.com/activity"
xmlns="http://www.w3.org/2001/XMLSchema"
xmlns:act="http://www.exampleU.com/activity" elementFormDefault="qualified">
  <element name="studentActivity">
    <complexType>
      <sequence>
        <element name="studentID" type="normalizedString"/>
        <element name="activity" type="normalizedString"/>
        <!--<element name="studentID" type="IDREF"/> -->
      </sequence>
    </complexType>
  </element>
  <element name="activity">
    <complexType>
      <sequence>
        <choice>
          <element name="name" type="normalizedString"/>
          <element name="desc" type="normalizedString"/>
        </choice>
        <element name="fee" type="decimal"/>
      </sequence>
    </complexType>
  </element>
  <element name="studentActivities">
    <complexType>
      <sequence>
        <element ref="act:studentActivity" maxOccurs="unbounded"/>
        <element name="activities">
          <complexType>
            <sequence>
              <element ref="act:activity" maxOccurs="unbounded"/>
            </sequence>
          </complexType>
        </element>
      </sequence>
    </complexType>
    
    <keyref name="krActivity" refer="act:kActivity">
      <selector xpath="act:studentActivity"/>
      <field xpath="act:activity"/>
    </keyref>
    
    <key name="kActivity">
      <selector xpath="act:activities/act:activity"/>
      <field xpath="act:name|act:desc"/>
    </key>
  </element>
</schema>
 
instance
<?xml version="1.0" encoding="UTF-8"?>
<!-- edited with XMLSPY v5 rel. 4 U (http://www.xmlspy.com
<http://www.xmlspy.com/> ) by James L. Blunt (Landmark Graphics Corp.) -->
<studentActivities xmlns="http://www.exampleU.com/activity"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.exampleU.com/activity
 student3.xsd">
  <studentActivity>
    <studentID>sn42</studentID>
    <activity>Swimming</activity>
  </studentActivity>
  <studentActivity>
    <studentID>sn44</studentID>
    <activity>Polo</activity>
  </studentActivity>
  <studentActivity>
    <studentID>sn49</studentID>
    <activity>Swimming</activity>
  </studentActivity>
  <studentActivity>
    <studentID>sn11</studentID>
    <activity>Swimming</activity>
  </studentActivity>
  <studentActivity>
    <studentID>sn43</studentID>
    <activity>Bowling</activity>
  </studentActivity>
  <activities>
    <activity>
      <!--<name>Swimming></name> -->      <!-- if I uncomment name -->
      <desc>Swimming</desc>               <!-- and comment out desc -->

      <fee>47.50</fee>                    <!-- it works             -->
    </activity>
    <activity>
      <name>Polo</name>
      <!--<name>Swimming</name> -->
      <fee>789.99</fee>
    </activity>
    <activity>
      <name>Bowling</name>
      <fee>38.50</fee>
    </activity>
  </activities>
</studentActivities>
 
 
Bill Riegel
LandMark Graphics
713-839-3388