[prev in list] [next in list] [prev in thread] [next in thread] 

List:       xmlrpc-user
Subject:    [jira] [Created] (XMLSCHEMA-51) Problem with included schemas with attribute group references
From:       "Fady Moussallam (JIRA)" <jira () apache ! org>
Date:       2018-03-17 9:08:00
Message-ID: JIRA.13145939.1521277675000.43903.1521277680025 () Atlassian ! JIRA
[Download RAW message or body]

Fady Moussallam created XMLSCHEMA-51:
----------------------------------------

             Summary: Problem with included schemas with attribute group references
                 Key: XMLSCHEMA-51
                 URL: https://issues.apache.org/jira/browse/XMLSCHEMA-51
             Project: XmlSchema
          Issue Type: Question
            Reporter: Fady Moussallam


Hello,

I am using version 2.2.3.

I have a problem with a combination of included schemas and attribute group \
references.

Say you have schemaA including schemaB. schemaB does not have a default namespace, \
nor a target namespace, since it is meant to be included. It therefore inherits the \
namespace of the including schema (in this case schemaA).

The problem arises if schemaB contains markup like this:

{code}

<xs:attributeGroup ref="QuantityGroup"/>
 ...
 </xs:attributeGroup>

{code}

In org.apache.ws.commons.schema.SchemaBuilder#handleAttributeGroupRef the reference \
QName is obtained with the getRefQName(String pName, Node pNode) method.

In this method, the namespace is derived using the \
NodeNamespaceContext.getNamespaceContext(pNode) method. This one in turn determines \
available namespaces directly from the DOM using \
PrefixCollector.searchAllPrefixDeclarations(pNode).

Problem is that from a DOM standpoint schemaB does not contain any namespace \
declarations. So the reference QName end up having no namespace.

This seems wrong and creates problems when later on you want to find the referenced \
group using XmlSchemaCollection#getAttributeGroupByName(QName name) which returns \
null.

I can fix my issue in SchemaBuilder#getRefQName by doing this:

{code}

...

if (offset == -1) {
 uri = pContext.getNamespaceURI(Constants.DEFAULT_NS_PREFIX);
 if (Constants.NULL_NS_URI.equals(uri)) {
 if (currentSchema.getLogicalTargetNamespace().isEmpty()) {
 return new QName(Constants.NULL_NS_URI, pName);
 } else {
 return new QName(currentSchema.getLogicalTargetNamespace(), pName);
 }
 }
 localName = pName;
 prefix = Constants.DEFAULT_NS_PREFIX;
 } else {

...

{code}

But I am not sure if there are any side effects.

Any opinion or advice on this would be very appreciated.

Thank you

  

Fady

  

  

  

  



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@ws.apache.org
For additional commands, e-mail: dev-help@ws.apache.org


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic