John Poole created XERCESJ-1749:
-----------------------------------

             Summary: XInclude parsing fails on legal construct
                 Key: XERCESJ-1749
                 URL: https://issues.apache.org/jira/browse/XERCESJ-1749
             Project: Xerces2-J
          Issue Type: Bug
          Components: XInclude 1.0
    Affects Versions: 2.12.2
         Environment: jlpoole@ares /usr/local/src/xerces_2.12.2/xerces-2_12_2 $ 
java -version
openjdk version "1.8.0_332"
OpenJDK Runtime Environment (Temurin)(build 1.8.0_332-b09)
OpenJDK 64-Bit Server VM (Temurin)(build 25.332-b09, mixed mode)
jlpoole@ares /usr/local/src/xerces_2.12.2/xerces-2_12_2 $

I downloaded Xerces-J-src.2.12.2.tar.gz and Xerces-J-tools.2.12.2.tar.gz and 
built same, then tested with the example file above.

Attaching examples_log.txt, dated Wednesday  Aug 17, 2022  11:35:34 AM, of runs 
for both files also showing xmllint output successfully resolving the XIncludes.
            Reporter: John Poole
         Attachments: examples_log.txt

Suppose a3.xml:
{noformat}
<book xmlns="http://docbook.org/ns/docbook";
    xmlns:xlink="http://www.w3.org/1999/xlink";
    xmlns:xi="http://www.w3.org/2001/XInclude";
    xml:id="a-book"
    version="5.0">
    <title>A</title>
    <chapter xml:id="a-chapter">
        <title>a chapter</title>
        <BurstingPara xml:id="t1000">Warning: Read following paragraph 
carefully.</BurstingPara>
        <para>foo</para>
        <xi:include href="a3.xml" xpointer="t1000"/>
        <para>foo2</para>
        <xi:include href="a3.xml" xpointer="t1000"/>
        <para>foo3</para>
    </chapter>
   <xi:include href="a3.xml" xpointer="a-chapter"/>
</book>{noformat}
Xerces 2.12.2 rejects the XML with:
{noformat}
jlpoole@ares /usr/local/src/xerces_2.12.2/xerces-2_12_2 $ java dom.Writer -xi 
a3.xml
[Fatal Error] a3.xml:1:1: Recursive include detected.  Document 
'file:///usr/local/src/xerces_2.12.2/xerces-2_12_2/a3.xml' was already 
processed.
[Fatal Error] a3.xml:11:53: Error attempting to parse XML file (href='a3.xml').
jlpoole@ares /usr/local/src/xerces_2.12.2/xerces-2_12_2 $ {noformat}
The XML XIncludes above are a legal construct, yet Xerces throws an error when 
the parser should process the XIncludes.

This bug mimics the bug encountered in the Gnome XMLParser2 project:[ xmllint 
handling of recursion|[https://gitlab.gnome.org/GNOME/libxml2/-/issues/348]]

Here is another sample file illustrating the failure:
{code:java}
<book xmlns="http://docbook.org/ns/docbook";
    xmlns:xlink="http://www.w3.org/1999/xlink";
    xmlns:xi="http://www.w3.org/2001/XInclude";
    xml:id="b-book"
    version="5.0">
    <title>B</title>
    <chapter xml:id="b-chapter">
        <title>b chapter</title>
        <para>foo</para>
    </chapter>
    <xi:include href="a3.xml" xpointer="a-chapter"/>
</book>{code}
 

 



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

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to