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

keith mcneill updated XERCESC-1918:
-----------------------------------

    Attachment: xinclude-top.xml
                xinclude-middle.xml

> XInclude broken with multiple level includes
> --------------------------------------------
>
>                 Key: XERCESC-1918
>                 URL: https://issues.apache.org/jira/browse/XERCESC-1918
>             Project: Xerces-C++
>          Issue Type: Bug
>          Components: Non-Validating Parser
>    Affects Versions: 3.0.0
>         Environment: linux, windows
>            Reporter: keith mcneill
>         Attachments: xerces-c-xinclude.diff, xinclude-bottom.xml, 
> xinclude-middle.xml, xinclude-top.xml
>
>
> If you use xinclude on multiple levels (> 2) with relative path names.  
> XInclude will break with an error something like "no scheme".
> I tracked this down to a problem in XIncludeUtils::doDOMNodeXInclude.
> When an includeDoc was found it created a DocumentFragment to hang the new 
> copied nodes off of.  At the end of processing it would paste the 
> DocumentFragment on to the document.  The problem was that DocumentFragment 
> lost the absolute path in its getBaseURI().  This absolute path also 
> contained the scheme.
> This diff fixes XInclude by not using a DocumentFragment.  We just use 
> insertBefore() to insert the new nodes in the destination document in order.  
> This way the getBaseURI() is never lost.
> I've also included a fix to XIncludeLocation.prependPath().  PrependPath used 
> to slam a new path on the beginning of the current path without checking to 
> see if the current path already had a scheme.  For example you could end up 
> with paths like:  file:///new/parent/file:///old/child.  Now it will produce 
> file:///new/parent/old/child.  XIncludeLocation probably needs to get smarter 
> about dealing with schemes & URI's in general.
> I've included a diff an example files that can be run with the XInclude 
> sample. 
> Note that with these fixes the xerces c++ xinclude behaves more like the java 
> xinclude support.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


---------------------------------------------------------------------
To unsubscribe, e-mail: c-dev-unsubscr...@xerces.apache.org
For additional commands, e-mail: c-dev-h...@xerces.apache.org

Reply via email to