[ 
https://issues.apache.org/jira/browse/WSCOMMONS-531?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Martin Kvapil updated WSCOMMONS-531:
------------------------------------

    Attachment: WSCOMMONS-531_SchemaBuilder.patch

I have uploaded a diff of the proposed patch.

> 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
>         Attachments: WSCOMMONS-531_SchemaBuilder.patch
>
>
> 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