summary refs log tree commit diff
path: root/gnu/packages/xml.scm
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/packages/xml.scm')
-rw-r--r--gnu/packages/xml.scm400
1 files changed, 182 insertions, 218 deletions
diff --git a/gnu/packages/xml.scm b/gnu/packages/xml.scm
index a5d124601c..bc76a95c59 100644
--- a/gnu/packages/xml.scm
+++ b/gnu/packages/xml.scm
@@ -5,7 +5,7 @@
 ;;; Copyright © 2015 Sou Bunnbu <iyzsong@gmail.com>
 ;;; Copyright © 2015, 2016, 2017, 2018, 2020 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2015, 2016, 2017 Mark H Weaver <mhw@netris.org>
-;;; Copyright © 2015, 2016, 2017, 2018, 2021 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2015, 2016, 2017, 2018, 2020, 2021 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2015 Raimon Grau <raimonster@gmail.com>
 ;;; Copyright © 2016 Mathieu Lirzin <mthl@gnu.org>
 ;;; Copyright © 2016, 2017 Leo Famulari <leo@famulari.name>
@@ -103,12 +103,9 @@
     (arguments
      `(#:glib-or-gtk? #t))
     (native-inputs
-     `(("gobject-introspection" ,gobject-introspection)
-       ("gtk-doc" ,gtk-doc/stable)
-       ("pkg-config" ,pkg-config)))
+     (list gobject-introspection gtk-doc/stable pkg-config))
     (inputs
-     `(("appstream-glib" ,appstream-glib)
-       ("glib" ,glib)))
+     (list appstream-glib glib))
     (synopsis "Library to help create and query binary XML blobs")
     (description "Libxmlb library takes XML source, and converts it to a
 structured binary representation with a deduplicated string table; where the
@@ -121,8 +118,7 @@ the entire document.")
 (define-public expat
   (package
     (name "expat")
-    (version "2.2.9")
-    (replacement expat-2.4.1)
+    (version "2.4.1")
     (source (let ((dot->underscore (lambda (c) (if (char=? #\. c) #\_ c))))
               (origin
                 (method url-fetch)
@@ -134,10 +130,22 @@ the entire document.")
                             "/expat-" version ".tar.xz")))
                 (sha256
                  (base32
-                  "1960mmgbb4cm64n1p0nz3hrs1pw03hkrfcw8prmnn4622mdrd9hy")))))
+                  "0spvyb9d3hijs4ys3x64cfmilsynl8kv6clfahv8d4lvp86js0yg")))))
     (build-system gnu-build-system)
     (arguments
-     '(#:configure-flags '("--disable-static")))
+     '(#:phases (modify-phases %standard-phases
+                  (add-after 'install 'move-static-library
+                    (lambda* (#:key outputs #:allow-other-keys)
+                      (let ((out    (assoc-ref outputs "out"))
+                            (static (assoc-ref outputs "static")))
+                        (mkdir-p (string-append static "/lib"))
+                        (link (string-append out "/lib/libexpat.a")
+                              (string-append static "/lib/libexpat.a"))
+                        (delete-file (string-append out "/lib/libexpat.a"))
+                        (substitute* (string-append out "/lib/libexpat.la")
+                          (("old_library=.*")
+                           "old_library=''"))))))))
+    (outputs '("out" "static"))
     (home-page "https://libexpat.github.io/")
     (synopsis "Stream-oriented XML parser library written in C")
     (description
@@ -146,24 +154,6 @@ stream-oriented parser in which an application registers handlers for
 things the parser might find in the XML document (like start tags).")
     (license license:expat)))
 
-;; Replacement package to fix CVE-2013-0340.
-(define expat-2.4.1
-  (package
-    (inherit expat)
-    (version "2.4.1")
-    (source (let ((dot->underscore (lambda (c) (if (char=? #\. c) #\_ c))))
-              (origin
-                (method url-fetch)
-                (uri (list (string-append "mirror://sourceforge/expat/expat/"
-                                          version "/expat-" version ".tar.xz")
-                           (string-append
-                            "https://github.com/libexpat/libexpat/releases/download/R_"
-                            (string-map dot->underscore version)
-                            "/expat-" version ".tar.xz")))
-                (sha256
-                 (base32
-                  "0spvyb9d3hijs4ys3x64cfmilsynl8kv6clfahv8d4lvp86js0yg")))))))
-
 (define-public libebml
   (package
     (name "libebml")
@@ -191,40 +181,48 @@ hierarchical form with variable field lengths.")
 (define-public libxml2
   (package
     (name "libxml2")
-    (version "2.9.10")
+    (version "2.9.12")
     (source (origin
              (method url-fetch)
              (uri (string-append "ftp://xmlsoft.org/libxml2/libxml2-"
                                  version ".tar.gz"))
              (sha256
               (base32
-               "07xynh8hcxb2yb1fs051xrgszjvj37wnxvxgsj10rzmqzy9y3zma"))))
+               "14hxwzmf5xqppx77z7i0ni9lpzg1a84dqpf8j8l1fvy570g6imn8"))
+             (patches (search-patches "libxml2-parent-pointers.patch"
+                                      "libxml2-terminating-newline.patch"
+                                      "libxml2-xpath-recursion-limit.patch"))))
     (build-system gnu-build-system)
-    (outputs '("out" "static"))
+    (outputs '("out" "static" "doc"))
     (arguments
      `(#:phases (modify-phases %standard-phases
-                  (add-after 'install 'move-static-libs
+                  (add-after 'install 'use-other-outputs
                     (lambda* (#:key outputs #:allow-other-keys)
-                      (let ((src (string-append (assoc-ref outputs "out") "/lib"))
+                      (let ((src (assoc-ref outputs "out"))
+                            (doc (string-append (assoc-ref outputs "doc") "/share"))
                             (dst (string-append (assoc-ref outputs "static")
                                                 "/lib")))
+                        (mkdir-p doc)
                         (mkdir-p dst)
+                        (for-each (lambda (dir)
+                                    (rename-file (string-append src "/share/" dir)
+                                                 (string-append doc "/" dir)))
+                                  '("doc" "gtk-doc"))
                         (for-each (lambda (ar)
                                     (rename-file ar (string-append dst "/"
                                                                    (basename ar))))
-                                  (find-files src "\\.a$"))
+                                  (find-files (string-append src "/lib") "\\.a$"))
 
                         ;; Remove reference to the static library from the .la
                         ;; file such that Libtool does the right thing when both
                         ;; the shared and static variants are available.
-                        (substitute* (string-append src "/libxml2.la")
-                          (("^old_library='libxml2.a'") "old_library=''"))
-                        #t))))))
+                        (substitute* (string-append src "/lib/libxml2.la")
+                          (("^old_library='libxml2.a'") "old_library=''"))))))))
     (home-page "http://www.xmlsoft.org/")
     (synopsis "C parser for XML")
-    (inputs `(("xz" ,xz)))
-    (propagated-inputs `(("zlib" ,zlib))) ; libxml2.la says '-lz'.
-    (native-inputs `(("perl" ,perl)))
+    (inputs (list xz))
+    (propagated-inputs (list zlib)) ; libxml2.la says '-lz'.
+    (native-inputs (list perl))
     ;; $XML_CATALOG_FILES lists 'catalog.xml' files found in under the 'xml'
     ;; sub-directory of any given package.
     (native-search-paths (list (search-path-specification
@@ -283,9 +281,9 @@ to output XPath results with a null delimiter.")))
        (modify-phases %standard-phases
          (delete 'configure))))         ; no configure script
     (native-inputs
-     `(("python-pytest" ,python-pytest)))
+     (list python-pytest))
     (inputs
-     `(("minizip" ,minizip)))
+     (list minizip))
     (home-page "https://github.com/jmcnamara/libxlsxwriter")
     (synopsis "C library for creating Excel XLSX files")
     (description
@@ -299,8 +297,9 @@ formulas and hyperlinks to multiple worksheets in an Excel 2007+ XLSX file.")
     (name "python-libxml2")
     (source (origin
               (inherit (package-source libxml2))
-              (patches (cons (search-patch "python-libxml2-utf8.patch")
-                             (origin-patches (package-source libxml2))))))
+              (patches
+                (append (search-patches "python-libxml2-utf8.patch")
+                        (origin-patches (package-source libxml2))))))
     (build-system python-build-system)
     (outputs '("out"))
     (arguments
@@ -321,8 +320,7 @@ formulas and hyperlinks to multiple worksheets in an Excel 2007+ XLSX file.")
                  (format #f "ROOT = r'~a'" libxml2))
                 ;; For 'iconv.h'.
                 (("/opt/include")
-                 (string-append glibc "/include"))))
-            #t)))))
+                 (string-append glibc "/include")))))))))
     (inputs `(("libxml2" ,libxml2)))
     (synopsis "Python bindings for the libxml2 library")))
 
@@ -360,7 +358,7 @@ formulas and hyperlinks to multiple worksheets in an Excel 2007+ XLSX file.")
               ("zlib" ,zlib)
               ("xz" ,xz)))
     (native-inputs
-     `(("pkg-config" ,pkg-config)))
+     (list pkg-config))
     (description
      "Libxslt is an XSLT C library developed for the GNOME project.  It is
 based on libxml for XML parsing, tree manipulation and XPath support.")
@@ -434,9 +432,9 @@ based on libxml for XML parsing, tree manipulation and XPath support.")
                  (format #t "test suite not run~%"))
              #t)))))
     (inputs
-     `(("opensp" ,opensp)))
+     (list opensp))
     (native-inputs
-     `(("perl" ,perl)))
+     (list perl))
     (home-page "http://openjade.sourceforge.net/")
     (synopsis "ISO/IEC 10179:1996 standard DSSSL language implementation")
     (description "OpenJade is an implementation of Document Style Semantics
@@ -462,10 +460,7 @@ MIF, SGML2SGML, and FOT.")
          "0jlsg64pmy6ka5q5gy851nnyfgjzvhyxc576bhns3vi2x5ng07mh"))))
     (build-system perl-build-system)
     (propagated-inputs
-     `(("perl-graph" ,perl-graph)
-       ("perl-parse-yapp" ,perl-parse-yapp)
-       ("perl-xml-parser" ,perl-xml-parser)
-       ("perl-xml-writer" ,perl-xml-writer)))
+     (list perl-graph perl-parse-yapp perl-xml-parser perl-xml-writer))
     (home-page "https://metacpan.org/release/Graph-ReadWrite")
     (synopsis "Modules for reading and writing directed graphs")
     (description "This is a collection of perl classes for reading and writing
@@ -501,18 +496,16 @@ the @code{Graph} class and write it out in a specific file format.")
              #t)))))
     (native-inputs
      ;; TODO package: perl-datetime-format-atom
-     `(("perl-html-tagset" ,perl-html-tagset)
-       ("perl-module-build-tiny" ,perl-module-build-tiny)
-       ("perl-module-install" ,perl-module-install)))
+     (list perl-html-tagset perl-module-build-tiny perl-module-install))
     (propagated-inputs
-     `(("perl-class-data-inheritable" ,perl-class-data-inheritable)
-       ("perl-datetime" ,perl-datetime)
-       ("perl-datetime-timezone" ,perl-datetime-timezone)
-       ("perl-digest-sha1" ,perl-digest-sha1)
-       ("perl-libwww" ,perl-libwww)
-       ("perl-uri" ,perl-uri)
-       ("perl-xml-libxml" ,perl-xml-libxml)
-       ("perl-xml-xpath" ,perl-xml-xpath)))
+     (list perl-class-data-inheritable
+           perl-datetime
+           perl-datetime-timezone
+           perl-digest-sha1
+           perl-libwww
+           perl-uri
+           perl-xml-libxml
+           perl-xml-xpath))
     (home-page "https://metacpan.org/release/XML-Atom")
     (synopsis "Atom feed and API implementation")
     (description
@@ -533,10 +526,9 @@ the @code{Graph} class and write it out in a specific file format.")
                 "0l5xmw2hd95ypppz3lyvp4sn02ccsikzjwacli3ydxfdz1bbh4d7"))))
     (build-system perl-build-system)
     (native-inputs
-     `(("perl-module-build" ,perl-module-build)))
+     (list perl-module-build))
     (propagated-inputs
-     `(("perl-test-differences" ,perl-test-differences)
-       ("perl-xml-tokeparser" ,perl-xml-tokeparser)))
+     (list perl-test-differences perl-xml-tokeparser))
     (home-page "https://metacpan.org/release/XML-Descent")
     (synopsis "Recursive descent XML parsing")
     (description
@@ -565,7 +557,7 @@ parsers for it.  @code{XML::Descent} allows such parsers to be created.")
                  (let ((expat (assoc-ref %build-inputs "expat")))
                    (list (string-append "EXPATLIBPATH=" expat "/lib")
                          (string-append "EXPATINCPATH=" expat "/include")))))
-    (inputs `(("expat" ,expat)))
+    (inputs (list expat))
     (license license:perl-license)
     (synopsis "Perl bindings to the Expat XML parsing library")
     (description
@@ -591,7 +583,7 @@ given at XML::Parser creation time.")
                (base32
                 "1hnpwb3lh6cbgwvjjgqzcp6jm4mp612qn6ili38adc9nhkwv8fc5"))))
     (build-system perl-build-system)
-    (propagated-inputs `(("perl-xml-parser" ,perl-xml-parser)))
+    (propagated-inputs (list perl-xml-parser))
     (home-page "https://metacpan.org/release/XML-TokeParser")
     (synopsis "Simplified interface to XML::Parser")
     (description
@@ -616,7 +608,7 @@ corresponding to an @code{XML::Parser} event.")
                "1jy9af0ljyzj7wakqli0437zb2vrbplqj4xhab7bfj2xgfdhawa5"))))
     (build-system perl-build-system)
     (propagated-inputs
-     `(("perl-xml-parser" ,perl-xml-parser)))
+     (list perl-xml-parser))
     (license license:perl-license)
     (synopsis "Perl modules for working with XML")
     (description
@@ -640,10 +632,9 @@ combination with @code{XML::Parser}, PerlSAX, @code{XML::DOM},
          "1ks69xymv6zkj7hvaymjvb78ch81abri7kg4zrwxhdfsqb8a9g7h"))))
     (build-system perl-build-system)
     (propagated-inputs
-     `(("perl-xml-namespacesupport" ,perl-xml-namespacesupport)
-       ("perl-xml-sax" ,perl-xml-sax)))
+     (list perl-xml-namespacesupport perl-xml-sax))
     (inputs
-     `(("libxml2" ,libxml2)))
+     (list libxml2))
     (home-page "https://metacpan.org/release/XML-LibXML")
     (synopsis "Perl interface to libxml2")
     (description "This module implements a Perl interface to the libxml2
@@ -665,8 +656,7 @@ XML parser and the high performance DOM implementation.")
                 "19k50d80i9dipsl6ln0f4awv9wmdg0xm3d16z8mngmvh9c8ci66d"))))
     (build-system perl-build-system)
     (propagated-inputs
-     `(("perl-file-slurp-tiny" ,perl-file-slurp-tiny)
-       ("perl-xml-libxml" ,perl-xml-libxml)))
+     (list perl-file-slurp-tiny perl-xml-libxml))
     (home-page "https://metacpan.org/release/XML-LibXML-Simple")
     (synopsis "XML::LibXML based XML::Simple clone")
     (description
@@ -688,9 +678,9 @@ XML parser and the high performance DOM implementation.")
          "0wyl8klgr65j8y8fzgwz9jlvfjwvxazna8j3dg9gksd2v973fpia"))))
     (build-system perl-build-system)
     (inputs
-     `(("libxslt" ,libxslt)))
+     (list libxslt))
     (propagated-inputs
-     `(("perl-xml-libxml" ,perl-xml-libxml)))
+     (list perl-xml-libxml))
     (home-page "https://metacpan.org/release/XML-LibXSLT")
     (synopsis "Perl bindings to GNOME libxslt library")
     (description "This Perl module is an interface to the GNOME project's
@@ -731,19 +721,13 @@ checks.")
                 "0klb8ghd405pdkmn25lp3i4j2lfydz8w581sk51p3zy788s0c9yk"))))
     (build-system perl-build-system)
     (native-inputs
-     `(("perl-module-build" ,perl-module-build)
-       ("perl-test-manifest" ,perl-test-manifest)
-       ("perl-test-differences" ,perl-test-differences)
-       ("perl-test-pod" ,perl-test-pod)
-       ("perl-test-pod-coverage" ,perl-test-pod-coverage)))
+     (list perl-module-build perl-test-manifest perl-test-differences
+           perl-test-pod perl-test-pod-coverage))
     ;; XXX: The test which uses this modules does not run, even when it is included
     ;; it is ignored. ("perl-test-trailingspace" ,perl-test-trailingspace)
     (inputs
-     `(("perl-datetime" ,perl-datetime)
-       ("perl-datetime-format-mail" ,perl-datetime-format-mail)
-       ("perl-datetime-format-w3cdtf" ,perl-datetime-format-w3cdtf)
-       ("perl-html-parser" ,perl-html-parser)
-       ("perl-xml-parser" ,perl-xml-parser)))
+     (list perl-datetime perl-datetime-format-mail
+           perl-datetime-format-w3cdtf perl-html-parser perl-xml-parser))
     (home-page "https://metacpan.org/release/XML-RSS")
     (synopsis "Creates and updates RSS files")
     (description
@@ -766,8 +750,7 @@ that allow you to generate HTML from an RSS, convert between 0.9, 0.91, and
         (base32 "0am13vnv8qsjafr5ljakwnkhlwpk15sga02z8mxsg9is0j3w61j5"))))
     (build-system perl-build-system)
     (propagated-inputs
-     `(("perl-xml-namespacesupport" ,perl-xml-namespacesupport)
-       ("perl-xml-sax-base" ,perl-xml-sax-base)))
+     (list perl-xml-namespacesupport perl-xml-sax-base))
     (arguments
      `(#:phases (modify-phases %standard-phases
                   (add-before
@@ -823,8 +806,7 @@ callback.")
                "1y6vh328zrh085d40852v4ij2l4g0amxykswxd1nfhd2pspds7sk"))))
     (build-system perl-build-system)
     (propagated-inputs
-     `(("perl-xml-parser" ,perl-xml-parser)
-       ("perl-xml-sax" ,perl-xml-sax)))
+     (list perl-xml-parser perl-xml-sax))
     (license license:perl-license)
     (synopsis "Perl module for easy reading/writing of XML files")
     (description
@@ -847,7 +829,7 @@ parser modules).")
                "0m7wj00a2kik7wj0azhs1zagwazqh3hlz4255n75q21nc04r06fz"))))
     (build-system perl-build-system)
     (inputs
-     `(("perl-xml-parser" ,perl-xml-parser)))
+     (list perl-xml-parser))
     (license license:perl-license)
     (synopsis "Perl regular expressions for XML tokens")
     (description
@@ -870,10 +852,7 @@ EntityRef, CharRef, Reference, Name, NmToken, and AttValue.")
                "0phpkc4li43m2g44hdcvyxzy9pymqwlqhh5hwp2xc0cv8l5lp8lb"))))
     (build-system perl-build-system)
     (propagated-inputs
-     `(("perl-libwww" ,perl-libwww)
-       ("perl-libxml" ,perl-libxml)
-       ("perl-xml-parser" ,perl-xml-parser)
-       ("perl-xml-regexp" ,perl-xml-regexp)))
+     (list perl-libwww perl-libxml perl-xml-parser perl-xml-regexp))
     (license license:perl-license)
     (synopsis
      "Perl module for building DOM Level 1 compliant document structures")
@@ -898,8 +877,7 @@ that conforms to the API of the Document Object Model.")
                 "1drzwziwi96rfkh48qpw4l225mcbk8ppl2157nj92cslcpwwdk75"))))
     (build-system perl-build-system)
     (propagated-inputs
-     `(("perl-log-report" ,perl-log-report)
-       ("perl-test-deep" ,perl-test-deep)))
+     (list perl-log-report perl-test-deep))
     (home-page "https://metacpan.org/release/XML-Compile-Tester")
     (synopsis "XML::Compile related regression testing")
     (description
@@ -921,12 +899,12 @@ This module provide functions which simplify writing tests for
                 "0psr5pwsk2biz2bfkigmx04v2rfhs6ybwcfmcrrg7gvh9bpp222b"))))
     (build-system perl-build-system)
     (propagated-inputs
-     `(("perl-log-report" ,perl-log-report)
-       ("perl-xml-compile-tester" ,perl-xml-compile-tester)
-       ("perl-xml-libxml" ,perl-xml-libxml)
-       ("perl-scalar-list-utils" ,perl-scalar-list-utils)
-       ("perl-test-deep" ,perl-test-deep)
-       ("perl-types-serialiser" ,perl-types-serialiser)))
+     (list perl-log-report
+           perl-xml-compile-tester
+           perl-xml-libxml
+           perl-scalar-list-utils
+           perl-test-deep
+           perl-types-serialiser))
     (home-page "https://metacpan.org/release/XML-Compile")
     (synopsis "Compilation-based XML processing")
     (description
@@ -948,10 +926,8 @@ a schema.")
                 "181qf1s7ymgi7saph3cf9p6dbxkxyh1ja23na4dchhi8v5mi66sr"))))
     (build-system perl-build-system)
     (propagated-inputs
-     `(("perl-log-report" ,perl-log-report)
-       ("perl-xml-compile" ,perl-xml-compile)
-       ("perl-xml-compile-tester" ,perl-xml-compile-tester)
-       ("perl-xml-libxml-simple" ,perl-xml-libxml-simple)))
+     (list perl-log-report perl-xml-compile perl-xml-compile-tester
+           perl-xml-libxml-simple))
     (home-page "https://metacpan.org/release/XML-Compile-Cache")
     (synopsis "Cache compiled XML translators")
     (description
@@ -971,12 +947,12 @@ a schema.")
                 "0pkcph562l2ij7rlwlvm58v6y062qsbydfpaz2qnph2ixqy0xfd1"))))
     (build-system perl-build-system)
     (propagated-inputs
-     `(("perl-file-slurp-tiny" ,perl-file-slurp-tiny)
-       ("perl-libwww" ,perl-libwww)
-       ("perl-log-report" ,perl-log-report)
-       ("perl-xml-compile" ,perl-xml-compile)
-       ("perl-xml-compile-cache" ,perl-xml-compile-cache)
-       ("perl-xml-compile-tester" ,perl-xml-compile-tester)))
+     (list perl-file-slurp-tiny
+           perl-libwww
+           perl-log-report
+           perl-xml-compile
+           perl-xml-compile-cache
+           perl-xml-compile-tester))
     (home-page "https://metacpan.org/release/XML-Compile-SOAP")
     (synopsis "Base-class for SOAP implementations")
     (description
@@ -999,10 +975,8 @@ used.")
                 "09ayl442hzvn97q4ghn5rz4r82dm9w3l69hixhb29h9xq9ysi7ba"))))
     (build-system perl-build-system)
     (propagated-inputs
-     `(("perl-log-report" ,perl-log-report)
-       ("perl-xml-compile" ,perl-xml-compile)
-       ("perl-xml-compile-cache" ,perl-xml-compile-cache)
-       ("perl-xml-compile-soap" ,perl-xml-compile-soap)))
+     (list perl-log-report perl-xml-compile perl-xml-compile-cache
+           perl-xml-compile-soap))
     (home-page "https://metacpan.org/release/XML-Compile-WSDL11")
     (synopsis "Create SOAP messages defined by WSDL 1.1")
     (description
@@ -1025,25 +999,23 @@ server, collect the answer, and finally decoding the XML to Perl.")
                 "04frqhikmyq0i9ldraisbvppyjhqg6gz83l2rqpmp4f2h9n9k2lw"))))
     (build-system perl-build-system)
     (native-inputs
-     `(("perl-module-build" ,perl-module-build)
-       ("perl-uri" ,perl-uri)
-       ("perl-class-data-inheritable" ,perl-class-data-inheritable)))
+     (list perl-module-build perl-uri perl-class-data-inheritable))
     (propagated-inputs
-     `(("perl-class-errorhandler" ,perl-class-errorhandler)
-       ("perl-datetime" ,perl-datetime)
-       ("perl-datetime-format-flexible" ,perl-datetime-format-flexible)
-       ("perl-datetime-format-iso8601" ,perl-datetime-format-iso8601)
-       ("perl-datetime-format-mail" ,perl-datetime-format-mail)
-       ("perl-datetime-format-natural" ,perl-datetime-format-natural)
-       ("perl-datetime-format-w3cdtf" ,perl-datetime-format-w3cdtf)
-       ("perl-feed-find" ,perl-feed-find)
-       ("perl-html-parser" ,perl-html-parser)
-       ("perl-libwww-perl" ,perl-libwww)
-       ("perl-module-pluggable" ,perl-module-pluggable)
-       ("perl-uri-fetch" ,perl-uri-fetch)
-       ("perl-xml-atom" ,perl-xml-atom)
-       ("perl-xml-libxml" ,perl-xml-libxml)
-       ("perl-xml-rss" ,perl-xml-rss)))
+     (list perl-class-errorhandler
+           perl-datetime
+           perl-datetime-format-flexible
+           perl-datetime-format-iso8601
+           perl-datetime-format-mail
+           perl-datetime-format-natural
+           perl-datetime-format-w3cdtf
+           perl-feed-find
+           perl-html-parser
+           perl-libwww
+           perl-module-pluggable
+           perl-uri-fetch
+           perl-xml-atom
+           perl-xml-libxml
+           perl-xml-rss))
     (home-page "https://metacpan.org/release/XML-Feed")
     (synopsis "XML Syndication Feed Support")
     (description "@code{XML::Feed} is a syndication feed parser for both RSS and
@@ -1065,9 +1037,9 @@ RSS 0.91, RSS 1.0, RSS 2.0, Atom")
                 "03yxj7w5a43ibbpiqsvb3lswj2b71dydsx4rs2fw0p8n0l3i3j8w"))))
     (build-system perl-build-system)
     (native-inputs
-     `(("perl-path-tiny" ,perl-path-tiny)))
+     (list perl-path-tiny))
     (propagated-inputs
-     `(("perl-xml-parser" ,perl-xml-parser)))
+     (list perl-xml-parser))
     (home-page "https://metacpan.org/release/XML-XPath")
     (synopsis "Parse and evaluate XPath statements")
     (description
@@ -1092,7 +1064,7 @@ the form of functions.")
      `(#:configure-flags '("-DBUILD_SHARED_LIBS=ON")
        #:tests? #f))                    ; no tests
     (native-inputs
-     `(("pkg-config" ,pkg-config)))
+     (list pkg-config))
     (home-page "https://pugixml.org")
     (synopsis "Light-weight, simple and fast XML parser for C++ with XPath support")
     (description
@@ -1152,11 +1124,11 @@ code for classes that correspond to data structures defined by XMLSchema.")
                                                          "util-linux")
                                               "/bin/getopt"))))
     (native-inputs
-     `(("util-linux" ,util-linux)))
+     (list util-linux))
     (inputs
-     `(("util-linux" ,util-linux)                 ; for 'getopt'
-       ("libxml2" ,libxml2)                       ; for 'xmllint'
-       ("libxslt" ,libxslt)))                     ; for 'xsltproc'
+     (list util-linux ; for 'getopt'
+           libxml2 ; for 'xmllint'
+           libxslt))                     ; for 'xsltproc'
     (home-page "http://cyberelk.net/tim/software/xmlto/")
     (synopsis "Front-end to an XSL toolchain")
     (description
@@ -1178,14 +1150,11 @@ XSL-T processor.  It also performs any necessary post-processing.")
                 "0hy0nwz57n9r5wwab9xa66gzwlwvzs54nhlfn3jh8q13acl710z3"))))
     (build-system gnu-build-system)
     (propagated-inputs                  ; according to xmlsec1.pc
-     `(("libxml2" ,libxml2)
-       ("libxslt" ,libxslt)))
+     (list libxml2 libxslt))
     (inputs
-     `(("gnutls" ,gnutls)
-       ("libgcrypt" ,libgcrypt)
-       ("libltdl" ,libltdl)))
+     (list gnutls libgcrypt libltdl))
     (native-inputs
-     `(("pkg-config" ,pkg-config)))
+     (list pkg-config))
     (home-page "https://www.aleksey.com/xmlsec/")
     (synopsis "XML Security Library")
     (description
@@ -1368,8 +1337,7 @@ C++ programming language.")
              (symlink "xml" (string-append bin "/xmlstarlet"))
              #t))))))
    (inputs
-    `(("libxslt" ,libxslt)
-      ("libxml2" ,libxml2)))
+    (list libxslt libxml2))
    (home-page "http://xmlstar.sourceforge.net/")
    (synopsis "Command line XML toolkit")
    (description "XMLStarlet is a set of command line utilities which can be
@@ -1526,7 +1494,7 @@ spreadsheet.")
            '()
            '(#:configure-flags '("--disable-sse2")))))
     (native-inputs
-     `(("perl" ,perl)))
+     (list perl))
     (home-page "https://xerces.apache.org/xerces-c/")
     (synopsis "Validating XML parser library for C++")
     (description "Xerces-C++ is a validating XML parser written in a portable
@@ -1550,10 +1518,7 @@ SAX2 APIs.")
        (sha256
         (base32 "0jr6ggzhd8aakdvppcl8scy9j9jafg82zbzr4ih996sz8lrj90fn"))))
     (native-inputs
-     `(("expat" ,expat)
-       ("make" ,gnu-make)
-       ("minizip" ,minizip)
-       ("which" ,which)))
+     (list expat gnu-make minizip which))
     (build-system gnu-build-system)
     (arguments
      `(#:phases
@@ -1592,7 +1557,7 @@ Excel(TM) since version 2007.")
        (modify-phases %standard-phases
          (replace 'install (install-jars "jar")))))
     (native-inputs
-     `(("unzip" ,unzip)))
+     (list unzip))
     (home-page "http://simple.sourceforge.net/")
     (synopsis "XML serialization framework for Java")
     (description "Simple is a high performance XML serialization and
@@ -1663,7 +1628,7 @@ by @code{Tree::XPathEngine}.")
          "0p5785c1dsk6kdp505vapb5h54k8krrz8699hpgm9igf7dni5llg"))))
     (build-system perl-build-system)
     (propagated-inputs
-     `(("perl-xml-sax-base" ,perl-xml-sax-base)))
+     (list perl-xml-sax-base))
     (home-page "https://metacpan.org/release/XML-Filter-BufferText")
     (synopsis "Filter to put all characters() in one event")
     (description "This is a very simple filter.  One common cause of
@@ -1687,10 +1652,8 @@ characters into a single event.")
                 "1w1cd1ybxdvhmnxdlkywi3x5ka3g4md42kyynksjc09vyizd0q9x"))))
     (build-system perl-build-system)
     (propagated-inputs
-     `(("perl-libxml" ,perl-libxml)
-       ("perl-xml-filter-buffertext" ,perl-xml-filter-buffertext)
-       ("perl-xml-namespacesupport" ,perl-xml-namespacesupport)
-       ("perl-xml-sax-base" ,perl-xml-sax-base)))
+     (list perl-libxml perl-xml-filter-buffertext
+           perl-xml-namespacesupport perl-xml-sax-base))
     (home-page "https://metacpan.org/release/XML-SAX-Writer")
     (synopsis "SAX2 XML Writer")
     (description
@@ -1712,7 +1675,7 @@ characters into a single event.")
          "11d45a1sz862va9rry3p2m77pwvq3kpsvgwhc5ramh9mbszbnk77"))))
     (build-system perl-build-system)
     (propagated-inputs
-     `(("perl-libxml" ,perl-libxml)))
+     (list perl-libxml))
     (home-page "https://metacpan.org/release/XML-Handler-YAWriter")
     (synopsis "Yet another Perl SAX XML Writer")
     (description "YAWriter implements Yet Another @code{XML::Handler::Writer}.
@@ -1732,22 +1695,22 @@ It provides a flexible escaping technique and pretty printing.")
                 "1bc0hrz4jp6199hi29sdxmb9gyy45whla9hd19yqfasgq8k5ixzy"))))
     (build-system perl-build-system)
     (inputs
-     `(("expat" ,expat)))
+     (list expat))
     (propagated-inputs
-     `(("perl-html-tidy" ,perl-html-tidy)
-       ("perl-html-tree" ,perl-html-tree)
-       ("perl-io-captureoutput" ,perl-io-captureoutput)
-       ("perl-io-string" ,perl-io-string)
-       ("perl-io-stringy" ,perl-io-stringy)
-       ("perl-libxml" ,perl-libxml)
-       ("perl-xml-filter-buffertext" ,perl-xml-filter-buffertext)
-       ("perl-xml-handler-yawriter" ,perl-xml-handler-yawriter)
-       ("perl-xml-parser" ,perl-xml-parser)
-       ("perl-xml-sax-writer" ,perl-xml-sax-writer)
-       ("perl-xml-simple" ,perl-xml-simple)
-       ("perl-xml-xpathengine" ,perl-xml-xpathengine)
-       ("perl-test-pod" ,perl-test-pod)
-       ("perl-tree-xpathengine" ,perl-tree-xpathengine)))
+     (list perl-html-tidy
+           perl-html-tree
+           perl-io-captureoutput
+           perl-io-string
+           perl-io-stringy
+           perl-libxml
+           perl-xml-filter-buffertext
+           perl-xml-handler-yawriter
+           perl-xml-parser
+           perl-xml-sax-writer
+           perl-xml-simple
+           perl-xml-xpathengine
+           perl-test-pod
+           perl-tree-xpathengine))
     (home-page "https://metacpan.org/release/XML-Twig")
     (synopsis "Perl module for processing huge XML documents in tree mode")
     (description "@code{XML::Twig} is an XML transformation module.  Its
@@ -1817,7 +1780,7 @@ the Xerces-J XML parser and Xalan-J XSLT processor and specifies these APIs:
      `(#:jar-name (string-append "xml-resolver.jar")
        #:tests? #f)); no tests
     (inputs
-     `(("java-junit" ,java-junit)))
+     (list java-junit))
     (home-page "http://xerces.apache.org/xml-commons/")
     (synopsis "Catalog-based entity and URI resolution")
     (description "The resolver class implements the full semantics of OASIS Technical
@@ -1877,9 +1840,7 @@ with XPath too.")
     (inherit java-jaxen-bootstrap)
     (name "java-jaxen")
     (inputs
-     `(("java-jdom" ,java-jdom)
-       ("java-xom" ,java-xom)
-       ("java-dom4j" ,java-dom4j)))))
+     (list java-jdom java-xom java-dom4j))))
 
 (define-public java-xom
   (package
@@ -1917,11 +1878,8 @@ with XPath too.")
              (delete-file "src/nu/xom/tools/XHTMLJavaDoc.java")
              #t)))))
     (inputs
-     `(("java-jdom" ,java-jdom)
-       ("java-junit" ,java-junit)
-       ("java-classpathx-servletapi" ,java-classpathx-servletapi)
-       ("java-jaxen-bootstrap" ,java-jaxen-bootstrap)
-       ("java-xerces" ,java-xerces)))
+     (list java-jdom java-junit java-classpathx-servletapi
+           java-jaxen-bootstrap java-xerces))
     (home-page "https://xom.nu/")
     (synopsis "XML Object Model")
     (description "XOM is a new XML Object Model for processing XML with Java 
@@ -1947,7 +1905,7 @@ that strives for correctness and simplicity.")
        #:jar-name "xsdlib.jar"
        #:jdk ,icedtea-8))
     (inputs
-     `(("java-xerces" ,java-xerces)))
+     (list java-xerces))
     (home-page (string-append "https://web.archive.org/web/20161127144537/"
                               "https://msv.java.net//"))
     (synopsis "Sun Multi-Schema Validator")
@@ -2139,8 +2097,7 @@ public boolean removeAttributeByName(String name, String name2) {\n
        ("java-xpp3" ,java-xpp3)
        ("java-xsdlib" ,java-xsdlib)))
     (native-inputs
-     `(("java-testng" ,java-testng)
-       ("java-xerces" ,java-xerces)))
+     (list java-testng java-xerces))
     (home-page "https://dom4j.github.io/")
     (synopsis "Flexible XML framework for Java")
     (description "Dom4j is a flexible XML framework for Java.  DOM4J works
@@ -2181,9 +2138,9 @@ low memory footprint.")
              (copy-recursively "src/main/resources" "build/classes")
              #t)))))
     (inputs
-     `(("java-xpp3" ,java-xpp3)))
+     (list java-xpp3))
     (native-inputs
-     `(("java-junit" ,java-junit)))
+     (list java-junit))
     (home-page "http://kxml.org")
     (synopsis "XML pull parser")
     (description "kXML is a small XML pull parser, specially designed for
@@ -2246,7 +2203,7 @@ and from a Java application.  It provides a standard pull parser interface.")
                             "**/BadgerFishDOMTest.java"
                             "**/MappedDOMTest.java")))
     (native-inputs
-     `(("java-junit" ,java-junit)))
+     (list java-junit))
     (home-page "https://github.com/codehaus/jettison")
     (synopsis "StAX implementation for JSON")
     (description "Jettison is a Java library for converting XML to JSON and
@@ -2350,9 +2307,9 @@ and back again.")
              (copy-recursively "src/main/resources" "build/classes")
              #t)))))
     (propagated-inputs
-     `(("java-xmlpull-api-v1" ,java-xmlpull-api-v1)))
+     (list java-xmlpull-api-v1))
     (native-inputs
-     `(("java-junit" ,java-junit)))
+     (list java-junit))
     (home-page "https://github.com/x-stream/mxparser")
     (synopsis "Streaming pull XML parser forked from @code{java-xpp3}")
     (description "Xml Pull Parser (in short XPP) is a streaming pull XML
@@ -2380,10 +2337,10 @@ changes of the Plexus fork. It is an implementation of the XMLPULL V1 API
                "18zwbj6i2hpcn5riiyp8i6rml0sfv60dd7phw1x8g4r4lj2bbxf9"))))
     (build-system gnu-build-system)
     (inputs
-     `(("curl" ,curl)))
+     (list curl))
     (native-inputs
-     `(;; For tools, if ever needed.
-       ("perl" ,perl)))
+     (list ;; For tools, if ever needed.
+           perl))
     (arguments
      `(#:make-flags ; Add $libdir to the RUNPATH of all the executables.
        (list (string-append "LDFLAGS_PERSONAL=-Wl,-rpath=" %output "/lib"))
@@ -2495,15 +2452,18 @@ The central program included in this package is @code{onsgmls}, which replaces
 (define-public python-elementpath
   (package
     (name "python-elementpath")
-    (version "1.4.0")
+    (version "2.0.3")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "elementpath" version))
        (sha256
         (base32
-         "15h7d41v48q31hzjay7qzixdv531hnga3h35hksk7x52pgqcrkz7"))))
+         "1kxx573ywqfh6j6aih2i6hhsya6kz79qq4bgz6yskwk6b18jyr8z"))))
     (build-system python-build-system)
+    ;; The test suite is not run, to avoid a dependency cycle with
+    ;; python-xmlschema.
+    (arguments `(#:tests? #f))
     (home-page
      "https://github.com/sissaschool/elementpath")
     (synopsis
@@ -2520,13 +2480,20 @@ because lxml.etree already has its own implementation of XPath 1.0.")
 (define-public python-lxml
   (package
     (name "python-lxml")
-    (version "4.4.2")
+    (version "4.6.3")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "lxml" version))
        (sha256
-        (base32 "01nvb5j8vs9nk4z5s3250b1m22b4d08kffa36if3g1mdygdrvxpg"))))
+        (base32 "0s14r1w2x9sdlcsw8mxiqgw4rz5zs5lpqpxrfyn4a1mkndqqbdrr"))
+       ;; Adapt a test to libxml2 2.9.12, taken from this commit:
+       ;; https://github.com/lxml/lxml/commit/852ed1092bd80b6b9a51db24371047e
+       (modules '((guix build utils)))
+       (snippet
+        '(substitute* "src/lxml/tests/test_etree.py"
+             (("self\\.assertEqual\\(\\{'hha': None\\}, el\\.nsmap\\)")
+              "self.assertEqual({}, el.nsmap)")))))
     (build-system python-build-system)
     (arguments
      `(#:phases (modify-phases %standard-phases
@@ -2534,8 +2501,7 @@ because lxml.etree already has its own implementation of XPath 1.0.")
                     (lambda _
                       (invoke "make" "test"))))))
     (inputs
-     `(("libxml2" ,libxml2)
-       ("libxslt" ,libxslt)))
+     (list libxml2 libxslt))
     (home-page "https://lxml.de/")
     (synopsis "Python XML processing library")
     (description
@@ -2549,7 +2515,7 @@ libxml2 and libxslt.")
 (define-public python-xmlschema
   (package
     (name "python-xmlschema")
-    (version "1.1.2")
+    (version "1.2.5")
     (source (origin
               ;; Unit tests are not distributed with the PyPI archive.
               (method git-fetch)
@@ -2559,25 +2525,24 @@ libxml2 and libxslt.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "03bz5mp45y4shmlc1gxq1h69vjx60z1acg9cy4kq7fczgx8qg9jw"))))
+                "0rsa75x86gdjalvy4riq7613szb616hff80crx006chyppzdkxmq"))))
     (build-system python-build-system)
     (arguments
      '(#:phases
        (modify-phases %standard-phases
          (replace 'check
-           (lambda* (#:key (tests? #t) #:allow-other-keys)
+           (lambda* (#:key tests? #:allow-other-keys)
              (if tests?
-                 (begin
-                   (setenv "PYTHONPATH"
-                           (string-append "./build/lib:"
-                                          (getenv "PYTHONPATH")))
-                   (invoke "python" "-m" "unittest" "-v"))
-                 (format #t "test suite not run~%"))
-             #t)))))
+                 ;; Disable test_export_remote__issue_187, which is known to
+                 ;; fail (see:
+                 ;; https://github.com/sissaschool/xmlschema/issues/206).
+                 (invoke "python" "-m" "unittest" "-v"
+                         "-k" "not test_export_remote__issue_187")
+                 (format #t "test suite not run~%")))))))
     (native-inputs
-     `(("python-lxml" ,python-lxml)))   ;for tests
+     (list python-lxml))   ;for tests
     (propagated-inputs
-     `(("python-elementpath" ,python-elementpath)))
+     (list python-elementpath))
     (home-page "https://github.com/sissaschool/xmlschema")
     (synopsis "XML Schema validator and data conversion library")
     (description
@@ -2601,8 +2566,7 @@ XML data to JSON and other formats.")
          "08cadlb9vsb4pmzc99lz3a2lx6qcfazyvgk10pcqijvyxlwcdn2h"))))
     (build-system python-build-system)
     (native-inputs
-     `(("python-coverage" ,python-coverage)
-       ("python-nose" ,python-nose)))
+     (list python-coverage python-nose))
     (home-page "https://github.com/martinblech/xmltodict")
     (synopsis "Work with XML like you are working with JSON")
     (description "This package provides a Python library to convert XML to