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;
         }

Reply via email to