SchemaBuilder does not parse all the 'key' and 'keyref' definitions when it 
uses namespace prefix
-------------------------------------------------------------------------------------------------

                 Key: WSCOMMONS-531
                 URL: https://issues.apache.org/jira/browse/WSCOMMONS-531
             Project: WS-Commons
          Issue Type: Bug
          Components: XmlSchema
    Affects Versions: XmlSchema 1.4.5
         Environment: Java6 + Windows7
            Reporter: Martin Kvapil


SchemaBuilder is ruturning only the first key, keyref and unique element when 
handling multiple keys, keyrefs or unique definitions inside the same element 
and the shema elemets are using namespace prefix.

   <xs:element name="Element1" type="Element1Type">

       <xs:keyref name="keyRef1" refer="Key1">
           <xs:selector xpath="xxxxx"/>
           <xs:field xpath="@Name"/>
       </xs:keyref>

       <xs:keyref name="keyRef2" refer="Key1">
           <xs:selector xpath="xxxx"/>
           <xs:field xpath="@Name"/>
       </xs:keyref>

   </xs:element>

The SchemaBuilder will generate information only for the first keyref for this 
element.


XmlSchemaBuilder should use XDOMUtil.getNextSiblingElementNS() method instead 
XDOMUtil.getNextSiblingElement() like it does when it looks for the first 
element.

                if ((keyEl = XDOMUtil.getFirstChildElementNS(el, 
XmlSchema.SCHEMA_NS,
                                "key")) != null) {
                        while (keyEl != null) {
                                element.constraints.add(handleConstraint(keyEl, 
"Key"));
                                keyEl = XDOMUtil.getNextSiblingElementNS(keyEl, 
XmlSchema.SCHEMA_NS, "key");
                        }
                }

                if ((keyrefEl = XDOMUtil.getFirstChildElementNS(el,
                                XmlSchema.SCHEMA_NS, "keyref")) != null) {
                        while (keyrefEl != null) {
                                XmlSchemaKeyref keyRef = (XmlSchemaKeyref) 
handleConstraint(
                                                keyrefEl, "Keyref");
                                if (keyrefEl.hasAttribute("refer")) {
                                        String name = 
keyrefEl.getAttribute("refer");
                                        keyRef.refer = getRefQName(name, el);
                                }
                                element.constraints.add(keyRef);
                                keyrefEl = 
XDOMUtil.getNextSiblingElementNS(keyrefEl, XmlSchema.SCHEMA_NS, "keyref");
                        }
                }

                if ((uniqueEl = XDOMUtil.getFirstChildElementNS(el,
                                XmlSchema.SCHEMA_NS, "unique")) != null) {
                        while (uniqueEl != null) {
                                
element.constraints.add(handleConstraint(uniqueEl, "Unique"));
                                uniqueEl = 
XDOMUtil.getNextSiblingElementNS(uniqueEl, XmlSchema.SCHEMA_NS, "unique");
                        }
                }


-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to