diff mbox series

[bug#65479,core-updates,v2,04/62] gnu: docbook-xsl: Add compatibility entry.

Message ID d59b0acc6d2a6952993bcfe6a3e0baa0bb1aa5d2.1695478390.git.mirai@makinata.eu
State New
Headers show
Series Docbook & XML/SGML improvements. | expand

Commit Message

Bruno Victal Sept. 23, 2023, 2:19 p.m. UTC
Remap "http://docbook.sourceforge.net/release/xsl-ns/" to
"http://docbook.sourceforge.net/release/xsl/".

* gnu/packages/docbook.scm (docbook-xsl)[arguments]<#:phases>: Add
compatibility entry.
---
 gnu/packages/docbook.scm | 41 +++++++++++++++++++++++++++++++++++++++-
 1 file changed, 40 insertions(+), 1 deletion(-)

Comments

Maxim Cournoyer Oct. 5, 2023, 7:24 p.m. UTC | #1
Hey,

Bruno Victal <mirai@makinata.eu> writes:

> Remap "http://docbook.sourceforge.net/release/xsl-ns/" to
> "http://docbook.sourceforge.net/release/xsl/".
>
> * gnu/packages/docbook.scm (docbook-xsl)[arguments]<#:phases>: Add
> compatibility entry.

LGTM!
diff mbox series

Patch

diff --git a/gnu/packages/docbook.scm b/gnu/packages/docbook.scm
index 4a0104c253..55f99aae62 100644
--- a/gnu/packages/docbook.scm
+++ b/gnu/packages/docbook.scm
@@ -388,7 +388,46 @@  (define-public docbook-xsl
                                   "http://docbook.sourceforge.net/release/xsl/current/"
                                   store-uri
                                   catalog))
-                        (list "rewriteSystem" "rewriteURI")))
+                        (list "rewriteSystem" "rewriteURI"))
+
+                       ;; Originally the
+                       ;; "http://docbook.sourceforge.net/release/xsl/"
+                       ;; URI referred to the non-namespaced docbook-xsl,
+                       ;; with its namespaced version using a URI differing in
+                       ;; the path component as '…/xsl-ns/'.
+                       ;; At some point the namespaced version was made the
+                       ;; canonical docbook-xsl package whilst preserving the
+                       ;; original URI.
+                       ;;
+                       ;; For compatibility with XML files that still specify
+                       ;; the legacy namespaced docbook-xsl URIs we re-add them
+                       ;; here.
+                       (for-each
+                        (lambda (type)
+                          ;; Remap /xsl-ns/ to /xsl/.
+                          ;; Note: URI resolutions are not recursive.
+                          ;; A rewrite rule from:
+                          ;;   'http://docbook.sourceforge.net/release/xsl-ns/'
+                          ;; to
+                          ;;   'http://docbook.sourceforge.net/release/xsl/'
+                          ;; will not trigger the rewrite rule that ultimately
+                          ;; remaps to a /gnu/store URI, as can be seen by
+                          ;; invoking:
+                          ;; $ xmlcatalog "" \
+                          ;;     'http://docbook.sourceforge.net/release/xsl-ns/current/'
+                          ;; http://docbook.sourceforge.net/release/xsl/current/
+                          ;; $ xmlcatalog "" \
+                          ;;     'http://docbook.sourceforge.net/release/xsl/current/'
+                          ;; file://gnu/store/…/xml/xsl/…
+                          ;;
+                          ;; See XML Catalog specification, item 7.2.2. for
+                          ;; details.
+                          (invoke xmlcatalog "--noout"
+                                "--add" type
+                                "http://docbook.sourceforge.net/release/xsl-ns/current/"
+                                store-uri
+                                catalog))
+                          (list "rewriteSystem" "rewriteURI")))
                      catalog-files))))
             (replace 'install
               (lambda _