[ https://issues.apache.org/jira/browse/XMLSCHEMA-51?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Colm O hEigeartaigh reassigned XMLSCHEMA-51: -------------------------------------------- Assignee: Colm O hEigeartaigh > 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 > Assignee: Colm O hEigeartaigh > Priority: Major > Time Spent: 10m > Remaining Estimate: 0h > > 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 (v8.3.4#803005) --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@ws.apache.org For additional commands, e-mail: dev-h...@ws.apache.org