From 5a2cdf7fa2454381b5f1467e0280bd0d4d63c6b4 Mon Sep 17 00:00:00 2001 From: Vincent Lizzi Date: Wed, 11 Feb 2026 18:50:32 -0500 Subject: [PATCH] Updates for BaseX version 12.2 --- .github/workflows/test.yml | 4 +++- build.gradle | 2 +- test/xml-catalog-resolver-test.xqm | 6 ++++++ xml-catalog-resolver.xqm | 9 +++------ 4 files changed, 13 insertions(+), 8 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index b2f1bb8..d7710d6 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -10,10 +10,12 @@ jobs: strategy: matrix: java: ["8", "17"] - basex: ["9.7", "9.7.3", "11.5"] + basex: ["9.7", "9.7.3", "11.5", "12.2"] exclude: - basex: "11.5" java: "8" + - basex: "12.2" + java: "8" steps: - uses: actions/checkout@v3 - uses: actions/setup-java@v3 diff --git a/build.gradle b/build.gradle index 7e2f260..61c3a0e 100644 --- a/build.gradle +++ b/build.gradle @@ -9,7 +9,7 @@ repositories { } } -def basexVersion = System.getenv('BASEX_VERSION') ?: "11.5" +def basexVersion = System.getenv('BASEX_VERSION') ?: "12.2" dependencies { runtimeOnly "org.basex:basex:${basexVersion}" diff --git a/test/xml-catalog-resolver-test.xqm b/test/xml-catalog-resolver-test.xqm index e81c890..ae31120 100644 --- a/test/xml-catalog-resolver-test.xqm +++ b/test/xml-catalog-resolver-test.xqm @@ -135,6 +135,12 @@ declare %unit:test function resolverTest:parse-xml() { let $examplexml := file:resolve-path("example.xml", $base) let $result := resolver:parse-xml($examplexml, $catalog) return unit:assert-equals($result, document{expansion from external DTD}) + , + let $base := file:base-dir() + let $catalog := file:resolve-path("catalog1.xml", $base) + let $examplexml := file:resolve-path("example.xml", $base) => unparsed-text() + let $result := resolver:parse-xml($examplexml, $catalog) + return unit:assert-equals($result, document{expansion from external DTD}) }; diff --git a/xml-catalog-resolver.xqm b/xml-catalog-resolver.xqm index 974a6c8..c40ee83 100644 --- a/xml-catalog-resolver.xqm +++ b/xml-catalog-resolver.xqm @@ -2,7 +2,7 @@ : This module provides an XML Resolver for OASIS XML Catalogs entirely in XQuery. : Use this module to resolve the location a DTD specified in a DOCTYPE before parsing XML. : - : Tested with BaseX versions 9.7.3 and 11.5 + : Tested with BaseX versions 9.7.3, 11.5, and 12.2 : May work in other XQuery processors. : : @author Vincent Lizzi @@ -170,11 +170,8 @@ declare function resolver:resolveURI($uri as xs:string, $catalog as xs:string) a :) declare function resolver:parse-xml($xml as xs:string, $catalog as xs:string) as document-node() { let $temp := file:create-temp-file('xml-catalog-resolver', '.xml') - let $raw := if ($xml castable as xs:anyURI) then unparsed-text($xml) else $xml - let $resolved := resolver:resolveDOCTYPE($raw, $catalog) return ( - file:write-text($temp, $resolved), - (# db:dtd true #) (# db:intparse false #) { doc($temp) }, + resolver:parse-xml($xml, $catalog, $temp), file:delete($temp) ) }; @@ -190,7 +187,7 @@ declare function resolver:parse-xml($xml as xs:string, $catalog as xs:string) as : @return parsed XML document :) declare function resolver:parse-xml($xml as xs:string, $catalog as xs:string, $path as xs:string) as document-node() { - let $raw := if ($xml castable as xs:anyURI) then unparsed-text($xml) else $xml + let $raw := if (starts-with($xml, '<')) then $xml else unparsed-text($xml) let $resolved := resolver:resolveDOCTYPE($raw, $catalog) return ( file:write-text($path, $resolved),