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: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to