ws-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Fady Moussallam (JIRA)" <j...@apache.org>
Subject [jira] [Created] (XMLSCHEMA-51) Problem with included schemas with attribute group references
Date Sat, 17 Mar 2018 09:08:00 GMT
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


Mime
View raw message