This is an automated email from the ASF dual-hosted git repository. andy pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/jena.git
commit 4ea2c55285ba688d87853f38dc67c957c28ff028 Author: Andy Seaborne <a...@apache.org> AuthorDate: Fri Aug 9 18:46:13 2024 +0100 RRX: Fix xml:base handling --- .../riot/lang/rdfxml/rrx_stax_ev/ParserRDFXML_StAX_EV.java | 11 +++++++++-- .../riot/lang/rdfxml/rrx_stax_sr/ParserRDFXML_StAX_SR.java | 7 +++++-- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/jena-arq/src/main/java/org/apache/jena/riot/lang/rdfxml/rrx_stax_ev/ParserRDFXML_StAX_EV.java b/jena-arq/src/main/java/org/apache/jena/riot/lang/rdfxml/rrx_stax_ev/ParserRDFXML_StAX_EV.java index cbbaac3b34..d64a501028 100644 --- a/jena-arq/src/main/java/org/apache/jena/riot/lang/rdfxml/rrx_stax_ev/ParserRDFXML_StAX_EV.java +++ b/jena-arq/src/main/java/org/apache/jena/riot/lang/rdfxml/rrx_stax_ev/ParserRDFXML_StAX_EV.java @@ -1293,7 +1293,11 @@ class ParserRDFXML_StAX_EV { */ private boolean startElement(StartElement startElt) { processNamespaces(startElt); + boolean hasFrame = processBaseAndLang(startElt); + return hasFrame; + } + private boolean processBaseAndLang(StartElement startElt) { String xmlBase = attribute(startElt, xmlQNameBase); String xmlLang = attribute(startElt, xmlQNameLang); if ( ReaderRDFXML_StAX_EV.TRACE ) { @@ -1305,8 +1309,11 @@ class ParserRDFXML_StAX_EV { boolean hasFrame = (xmlBase != null || xmlLang != null); if ( hasFrame ) { pushFrame(currentBase, currentLang); - if ( xmlBase != null ) - currentBase = currentBase.resolve(xmlBase); + if ( xmlBase != null ) { + currentBase = (currentBase != null) + ? currentBase.resolve(xmlBase) + : IRIx.create(xmlBase); + } if ( xmlLang != null ) currentLang = xmlLang; } diff --git a/jena-arq/src/main/java/org/apache/jena/riot/lang/rdfxml/rrx_stax_sr/ParserRDFXML_StAX_SR.java b/jena-arq/src/main/java/org/apache/jena/riot/lang/rdfxml/rrx_stax_sr/ParserRDFXML_StAX_SR.java index 32b1024056..65bc006b25 100644 --- a/jena-arq/src/main/java/org/apache/jena/riot/lang/rdfxml/rrx_stax_sr/ParserRDFXML_StAX_SR.java +++ b/jena-arq/src/main/java/org/apache/jena/riot/lang/rdfxml/rrx_stax_sr/ParserRDFXML_StAX_SR.java @@ -1269,8 +1269,11 @@ class ParserRDFXML_StAX_SR { boolean hasFrame = (xmlBase != null || xmlLang != null); if ( hasFrame ) { pushFrame(currentBase, currentLang); - if ( xmlBase != null ) - currentBase = currentBase.resolve(xmlBase); + if ( xmlBase != null ) { + currentBase = (currentBase != null) + ? currentBase.resolve(xmlBase) + : IRIx.create(xmlBase); + } if ( xmlLang != null ) currentLang = xmlLang; }