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

Steve Lawrence resolved DAFFODIL-2916.
--------------------------------------
    Resolution: Fixed

Fixed in commit 2590f54ce93e262d02660bd9d57bc7979a7d06d9

> xs:include of no-namespace schema does not chameleon the references properly
> ----------------------------------------------------------------------------
>
>                 Key: DAFFODIL-2916
>                 URL: https://issues.apache.org/jira/browse/DAFFODIL-2916
>             Project: Daffodil
>          Issue Type: Bug
>          Components: Front End
>    Affects Versions: 3.8.0
>            Reporter: Mike Beckerle
>            Assignee: Steve Lawrence
>            Priority: Major
>             Fix For: 3.9.0
>
>
> Discovered when doing experiments trying to combine smaller schemas together 
> into larger schemas.
> We want to take a no-namespace schema, such as jpeg.dfdl.xsd (from 
> DFDLSchemas), and include it into a schema that gives it a target namespace. 
> For example suppose we create jpeg-ns.dfdl.xsd which is supposed to have a 
> target namespace and it includes jpeg.dfdl.xsd.
> The symbols in jpeg.dfdl.xsd are supposed to take on the new namespace of the 
> file they are included into.
> And here is what isn't working: references within jpeg.dfdl.xsd to global 
> elements/types/groups within that schema (which means they are referencing 
> global elements with no namespace) are supposed to end up referencing those 
> same elmeents, but in the new namespace into which the schema was included.
> This doesn't happen. You get SDEs about there being no definition for 
> "{}empty", that is, the reference is to empty is also supposed to "chameleon" 
> to be a reference to the new global element in the new chameleon namespace. 
> Per: Definitive XML Schema, Walmsley, ISBN: 0-13-065567-8.  Chapter 4 (Schema 
> Composition) Section 4.4.1 (Include) Example 4-4, pages 67-68. 
> In detail, suppose you create jpeg-ns.dfdl.xsd like this:
> {code:java}
> <xs:schema targetNamespace="urn:jpeg" ...>
>   <xs:include schemaLocation="jpeg.dfdl.xsd"/>
> </xs:schema>{code}
> That should be all that is required to define a namespace-qualified version 
> of jpeg. 
> Now you define a combined schema which combines jpeg and other schemas 
> together like this:
> {code:java}
> <xs:schema targetNamespace="urn:combined" xmlns:jpeg="urn:jpeg"...>
>   <xs:import namespace="urn:jpeg" schemaLocation="jpeg-ns.dfdl.xsd"/>
>   ...
>   <xs:complexType name="combo">
>      <xs:choice>
>         <xs:element ref="jpeg:JFIF"/>
>         ...
>      </xs:choice>
>   </xs:complexType>
> </xs:schema>{code}
> That *should* work. It doesn't. There's a global type defined and referenced 
> in jpeg.dfdl.xsd named "empty". 
> The SDE one gets is that "{}empty" is not found. 
> But the xs:include should be converting that reference from one referring to 
> the original no-namespace declaration to a reference to the new chameleon 
> namespaced insteance of that type. 
>  
>  



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to