[
https://issues.apache.org/jira/browse/XERCESJ-1749?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17581167#comment-17581167
]
Radu Coravu edited comment on XERCESJ-1749 at 9/5/22 9:01 AM:
--------------------------------------------------------------
So in this particular case with the "a3.xml" opened:
{code}<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>
<para>foo3</para>
</chapter>
<xi:include href="a3.xml" xpointer="a-chapter"/>
</book>
{code}
the Xerces parser uses this method
"org.apache.xerces.xinclude.XIncludeHandler.searchForRecursiveIncludes(String)"
to decide that it is a recursivity, without looking at the xpointer value.
Is the Xerces behavior correct according to the XInclude specification's
Inclusion Loops section section?
https://www.w3.org/TR/xinclude/#loops
was (Author: radu_coravu):
So in this particular case:
{code}<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>
<para>foo3</para>
</chapter>
<xi:include href="a3.xml" xpointer="a-chapter"/>
</book>
{code}
the Xerces parser uses this method
"org.apache.xerces.xinclude.XIncludeHandler.searchForRecursiveIncludes(String)"
to decide that it is a recursivity, without looking at the xpointer value.
Is the Xerces behavior correct according to the XInclude specification's
Inclusion Loops section section :
https://www.w3.org/TR/xinclude/#loops
> 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
> Priority: Critical
> Labels: XInclude
> 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:
> edit: added CLASSPATH recital below to provide context for following session:
> {code:java}
> jlpoole@ares /usr/local/src/xerces_2.12.2/xerces-2_12_2 $ date;echo $CLASSPATH
> Wed Aug 17 12:19:41 PDT 2022
> .:build/xercesSamples.jar:build/xercesImpl.jar:build/serializer.jar:build/resolver.jar
> jlpoole@ares /usr/local/src/xerces_2.12.2/xerces-2_12_2 $
> 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]