diff mbox series

[bug#72243] gnu: Add xlink-xsd.

Message ID b518796dd0ac1d568e4a322cf48b6c0188d072d2.1721649541.git.gemmaro.dev@gmail.com
State New
Headers show
Series [bug#72243] gnu: Add xlink-xsd. | expand

Commit Message

gemmaro July 22, 2024, 11:59 a.m. UTC
* gnu/packages/xml.scm (xlink-xsd): New variable.

Change-Id: If18f2018bd205134ea7d7d627b0d09c87c108415
---
 gnu/packages/xml.scm | 44 +++++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 43 insertions(+), 1 deletion(-)


base-commit: e5c0b62debc6f48a32a65736d9ba3da0b1e59cb9

Comments

Bruno Victal July 22, 2024, 2:36 p.m. UTC | #1
Hi gemmaro,

On 2024-07-22 12:59, gemmaro wrote:

> +(define-public xlink-xsd
> +  (package
> +    (name "xlink-xsd")
> +    (version "1.1-2008-06")
> +    (source
> +     (origin
> +       (method url-fetch)
> +       (uri (let* ((matches (string-match
> +                             "[0-9]+.[0-9]+-([0-9]{4})-([0-9]{2})" version))
> +                   (year (match:substring matches 1))
> +                   (month (match:substring matches 2)))
> +              (string-append "https://www.w3.org/XML/" year "/" month
> +                             "/xlink.xsd")))

Perhaps something like:

--8<---------------cut here---------------start------------->8---
(define-public …
  (let* ((year …)
         (month …)
         (version (string-join (list "1.1" year month) "-")))
    (package …)))
--8<---------------cut here---------------end--------------->8---

would be more readable instead of matching the version string with regex?

> +      #:install-plan #~'(("xlink.xsd" "/xml/dtd/xlink/xlink.xsd")
> +                         ("catalog.xml" "/xml/dtd/xlink/catalog.xml"))

I'd prefer to place these under "/xml/xsd/xlink/{xlink.xsd,catalog.xml}"
instead since these are not DTD files.


Cheers,
diff mbox series

Patch

diff --git a/gnu/packages/xml.scm b/gnu/packages/xml.scm
index 85edcf0f7d..3c14a677af 100644
--- a/gnu/packages/xml.scm
+++ b/gnu/packages/xml.scm
@@ -85,7 +85,8 @@  (define-module (gnu packages xml)
   #:use-module (guix deprecation)
   #:use-module (guix utils)
   #:use-module (gnu packages linux)
-  #:use-module (gnu packages pkg-config))
+  #:use-module (gnu packages pkg-config)
+  #:use-module (ice-9 regex))
 
 (define-public libxmlb
   (package
@@ -1993,3 +1994,44 @@  (define-public xml-namespace-xsd
 schema language defined by the XML Schema Recommendation Second Edition of 28 October
 2004.")
     (license license:w3c)))
+
+(define-public xlink-xsd
+  (package
+    (name "xlink-xsd")
+    (version "1.1-2008-06")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (let* ((matches (string-match
+                             "[0-9]+.[0-9]+-([0-9]{4})-([0-9]{2})" version))
+                   (year (match:substring matches 1))
+                   (month (match:substring matches 2)))
+              (string-append "https://www.w3.org/XML/" year "/" month
+                             "/xlink.xsd")))
+       (sha256
+        (base32 "0jpjha5iiq4rf4hx3qfnmyya9cf17ysxz0rbhsffn5nwgxnghgf8"))))
+    (build-system copy-build-system)
+    (arguments
+     (list
+      #:install-plan #~'(("xlink.xsd" "/xml/dtd/xlink/xlink.xsd")
+                         ("catalog.xml" "/xml/dtd/xlink/catalog.xml"))
+      #:phases #~(modify-phases %standard-phases
+                   (add-before 'install 'create-catalog
+                     (lambda _
+                       (invoke "xmlcatalog"
+                               "--noout"
+                               "--create"
+                               "--add"
+                               "uri"
+                               "http://www.w3.org/1999/xlink.xsd"
+                               "xlink.xsd"
+                               "catalog.xml"))))))
+    (native-inputs (list libxml2))
+    (home-page "https://www.w3.org/TR/xlink/")
+    (synopsis "XML Schema for XML Linking language")
+    (description
+     "This package provides an XML Schema document and its catalog file for
+the XML Linking Language (XLink).  It provides the XLink-1.1 specific
+declarations and definitions for use in defining linking elements
+which conform to the XLink specification.")
+    (license license:w3c)))