Subject: [bug#72060] [PATCH v2] gnu: Add xml-namespace-xsd.

From: Liliana Marie Prikler <[email-masked]>
Date: Fri, 12 Jul 2024 22:01:39 +0200

Am Freitag, dem 12.07.2024 um 21:50 +0900 schrieb gemmaro:
> * gnu/packages/xml.scm (xml-namespace-xsd): New variable.
> 
> Change-Id: Iec2d68f1d9190ba9e1723ca10adf1de0dfd2d722
> ---
> I forgot to add copy-build-system in the first revision.
> 
>  gnu/packages/xml.scm | 39 +++++++++++++++++++++++++++++++++++++++
>  1 file changed, 39 insertions(+)
> 
> diff --git a/gnu/packages/xml.scm b/gnu/packages/xml.scm
> index c6ddae50ae..71344dea0f 100644
> --- a/gnu/packages/xml.scm
> +++ b/gnu/packages/xml.scm
> @@ -33,6 +33,7 @@
>  ;;; Copyright © 2021 Guillaume Le Vaillant <[email-masked]>
>  ;;; Copyright © 2021 David Larsson <[email-masked]>
>  ;;; Copyright © 2021 Matthew James Kraai <[email-masked]>
> +;;; Copyright © 2024 gemmaro <[email-masked]>
>  ;;;
>  ;;; This file is part of GNU Guix.
>  ;;;
> @@ -76,6 +77,7 @@ (define-module (gnu packages xml)
>    #:use-module (guix download)
>    #:use-module (guix git-download)
>    #:use-module (guix build-system cmake)
> +  #:use-module (guix build-system copy)
>    #:use-module (guix build-system gnu)
>    #:use-module (guix build-system meson)
>    #:use-module (guix build-system perl)
> @@ -1953,3 +1955,40 @@ (define-public python-xmltodict
>      (description "This package provides a Python library to convert
> XML to
>  @code{OrderedDict}.")
>      (license license:expat)))
> +
> +(define-public xml-namespace-xsd
> +  (package
> +    (name "xml-namespace-xsd")
> +    (version "2009-01")
> +    (source
> +     (origin
> +       (method url-fetch)
> +       (uri "https://www.w3.org/2009/01/xml.xsd")
It's a good idea to formulate URI in terms of version.  In this case,
replacing the dash with a slash.
> +       (sha256
> +        (base32
> "0agqmxbhk2q9xa38m02z7ggbb124z6avnqyhz8k43iicqhv1fw6c"))))
> +    (build-system copy-build-system)
> +    (arguments
> +     (list
> +      #:install-plan #~'(("xml.xsd" "/xml/dtd/namespace/xml.xsd"))
> +      #:phases #~(modify-phases %standard-phases
> +                   (add-before 'install 'create-catalog
> +                     (lambda* (#:key inputs #:allow-other-keys)
> +                       (let ((out (string-append #$output
> "/xml/dtd/namespace")))
> +                         (mkdir-p out)
> +                         (invoke (search-input-file inputs
> "/bin/xmlcatalog")
You can probably invoke the command by command name.  Otherwise you'd
need to go through (or native-inputs inputs)
> +                                 "--noout"
> +                                 "--create"
> +                                 "--add"
> +                                 "uri"
> +                                 "http://www.w3.org/2001/xml.xsd"
> +                                 (string-append out "/xml.xsd")
> +                                 (string-append out
> "/catalog.xml"))))))))
Don't forget that you can write to the local directory.  You should
also do so and reflect the added file in the install-plan.
> +    (native-inputs (list libxml2))
> +    (home-page "https://www.w3.org/XML/1998/namespace")
> +    (synopsis "XML Schema for XML namespace")
> +    (description
> +     "This package provides an XML Schema fragment and its catalog.
An XML Schema fragment?
>   The schema
> +constrains the syntax of @code{xml:lang}, @code{xml:spec},
> @code{xml:base}, and
> +@code{xml:id} in the schema language defined by the XML Schema
> Recommendation Second
> +Edition of 28 October 2004.")
> +    (license license:w3c)))
Cheers