gnu: ruby-pandoc-ruby: Use pandoc instead of ghc-pandoc.
[jackhill/guix/guix.git] / gnu / packages / xml.scm
CommitLineData
d0414883 1;;; GNU Guix --- Functional package management for GNU
3a2efbc8 2;;; Copyright © 2013, 2014, 2015, 2016, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
0899144f 3;;; Copyright © 2013, 2015 Andreas Enge <andreas@enge.fr>
b715dbac 4;;; Copyright © 2015 Eric Bavier <bavier@member.fsf.org>
10ac0f9f 5;;; Copyright © 2015 Sou Bunnbu <iyzsong@gmail.com>
cc537187 6;;; Copyright © 2015, 2016, 2017, 2018, 2020 Ricardo Wurmus <rekado@elephly.net>
96fd87c9 7;;; Copyright © 2015, 2016, 2017 Mark H Weaver <mhw@netris.org>
0efb6452 8;;; Copyright © 2015, 2016, 2017, 2018 Efraim Flashner <efraim@flashner.co.il>
fe9451c5 9;;; Copyright © 2015 Raimon Grau <raimonster@gmail.com>
c74c7c13 10;;; Copyright © 2016 Mathieu Lirzin <mthl@gnu.org>
e9f62e52 11;;; Copyright © 2016, 2017 Leo Famulari <leo@famulari.name>
5eec378b 12;;; Copyright © 2016 Ben Woodcroft <donttrustben@gmail.com>
19c33040 13;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org>
3c986a7d 14;;; Copyright © 2016, 2017 Nikita <nikita@n0.is>
bafafa80 15;;; Copyright © 2016, 2017, 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
c950a2a5 16;;; Copyright © 2016, 2017, 2018, 2019, 2020 Marius Bakke <mbakke@fastmail.com>
f9f67fcb 17;;; Copyright © 2017 Adriano Peluso <catonano@gmail.com>
5bc2d579 18;;; Copyright © 2017 Gregor Giesen <giesen@zaehlwerk.net>
76fed2b3 19;;; Copyright © 2017 Alex Vong <alexvong1995@gmail.com>
3b695802 20;;; Copyright © 2017 Petter <petter@mykolab.ch>
767d24e8 21;;; Copyright © 2017 Stefan Reichör <stefan@xsteve.at>
2cce23bf 22;;; Copyright © 2018 Pierre Neidhardt <mail@ambrevar.xyz>
f85c8dd8 23;;; Copyright © 2018 Jack Hill <jackhill@jackhill.us>
8fda8b7d 24;;; Copyright © 2019 Giacomo Leidi <goodoldpaul@autistici.org>
f2a53a4a 25;;; Copyright © 2020 Paul Garlick <pgarlick@tourbillion-technology.com>
53657739 26;;; Copyright © 2020 Edouard Klein <edk@beaver-labs.com>
d0414883
LC
27;;;
28;;; This file is part of GNU Guix.
29;;;
30;;; GNU Guix is free software; you can redistribute it and/or modify it
31;;; under the terms of the GNU General Public License as published by
32;;; the Free Software Foundation; either version 3 of the License, or (at
33;;; your option) any later version.
34;;;
35;;; GNU Guix is distributed in the hope that it will be useful, but
36;;; WITHOUT ANY WARRANTY; without even the implied warranty of
37;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
38;;; GNU General Public License for more details.
39;;;
40;;; You should have received a copy of the GNU General Public License
41;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
42
1ffa7090 43(define-module (gnu packages xml)
f0444eaf 44 #:use-module (gnu packages)
53657739 45 #:use-module (gnu packages base)
0899144f 46 #:use-module (gnu packages autotools)
79a0eabd 47 #:use-module (gnu packages check)
322cbda7 48 #:use-module (gnu packages compression)
2cce23bf 49 #:use-module (gnu packages curl)
cc537187
RW
50 #:use-module (gnu packages docbook)
51 #:use-module (gnu packages documentation)
52 #:use-module (gnu packages glib)
cc537187 53 #:use-module (gnu packages gnome)
72e20842 54 #:use-module (gnu packages gnupg)
cc537187 55 #:use-module (gnu packages graphviz)
72e20842 56 #:use-module (gnu packages gtk)
1a17ca26 57 #:use-module (gnu packages java)
aff0cce9 58 #:use-module (gnu packages nss)
f0444eaf 59 #:use-module (gnu packages perl)
5ccde207 60 #:use-module (gnu packages perl-check)
f0444eaf 61 #:use-module (gnu packages python)
a7fd7b68 62 #:use-module (gnu packages tls)
ad871fc6 63 #:use-module (gnu packages web)
b5b73a82 64 #:use-module ((guix licenses) #:prefix license:)
d0414883
LC
65 #:use-module (guix packages)
66 #:use-module (guix download)
3047c7ba 67 #:use-module (guix git-download)
77d7b57c 68 #:use-module (guix build-system ant)
6ce212b8 69 #:use-module (guix build-system cmake)
2a1e82bb 70 #:use-module (guix build-system gnu)
72e20842 71 #:use-module (guix build-system meson)
37f9ff63 72 #:use-module (guix build-system perl)
7ce32242 73 #:use-module (guix build-system python)
e4aab734
RW
74 #:use-module (gnu packages linux)
75 #:use-module (gnu packages pkg-config))
d0414883 76
72e20842
RG
77(define-public libxmlb
78 (package
79 (name "libxmlb")
80 (version "0.1.15")
81 (source
82 (origin
83 (method git-fetch)
84 (uri
85 (git-reference
86 (url "https://github.com/hughsie/libxmlb.git")
87 (commit version)))
88 (file-name (git-file-name name version))
89 (sha256
90 (base32 "1mb73pnfwqc4mm0lm16yfn0lj495h8hcciprb2v6wgy3ifnnjxib"))))
91 (build-system meson-build-system)
92 (arguments
93 `(#:glib-or-gtk? #t))
94 (native-inputs
95 `(("gobject-introspection" ,gobject-introspection)
96 ("gtk-doc" ,gtk-doc)
97 ("pkg-config" ,pkg-config)))
98 (inputs
99 `(("appstream-glib" ,appstream-glib)
100 ("glib" ,glib)))
101 (synopsis "Library to help create and query binary XML blobs")
102 (description "Libxmlb library takes XML source, and converts it to a
103structured binary representation with a deduplicated string table; where the
104strings have the NULs included. This allows an application to mmap the binary
105XML file, do an XPath query and return some strings without actually parsing
106the entire document.")
107 (home-page "https://github.com/hughsie/libxmlb")
108 (license license:lgpl2.1+)))
109
d0414883
LC
110(define-public expat
111 (package
112 (name "expat")
6cd34029 113 (version "2.2.9")
f85c8dd8
JH
114 (source (let ((dot->underscore (lambda (c) (if (char=? #\. c) #\_ c))))
115 (origin
116 (method url-fetch)
117 (uri (list (string-append "mirror://sourceforge/expat/expat/"
fb9a23a3 118 version "/expat-" version ".tar.xz")
f85c8dd8
JH
119 (string-append
120 "https://github.com/libexpat/libexpat/releases/download/R_"
121 (string-map dot->underscore version)
fb9a23a3 122 "/expat-" version ".tar.xz")))
f85c8dd8
JH
123 (sha256
124 (base32
6cd34029 125 "1960mmgbb4cm64n1p0nz3hrs1pw03hkrfcw8prmnn4622mdrd9hy")))))
d0414883 126 (build-system gnu-build-system)
767abd37
MB
127 (arguments
128 '(#:configure-flags '("--disable-static")))
e5e33f90 129 (home-page "https://libexpat.github.io/")
9e771e3b 130 (synopsis "Stream-oriented XML parser library written in C")
d0414883
LC
131 (description
132 "Expat is an XML parser library written in C. It is a
133stream-oriented parser in which an application registers handlers for
134things the parser might find in the XML document (like start tags).")
135 (license license:expat)))
f0444eaf 136
5bc2d579
GG
137(define-public libebml
138 (package
139 (name "libebml")
bceadaf4 140 (version "1.4.0")
5bc2d579
GG
141 (source
142 (origin
143 (method url-fetch)
079321fa
TGR
144 (uri (string-append "https://dl.matroska.org/downloads/libebml/"
145 "libebml-" version ".tar.xz"))
5bc2d579 146 (sha256
bceadaf4 147 (base32 "1cy4hbk8qbxn4c6pwvlsvr1rp8vhfach9rwfg4c50qa94nlckaw0"))))
f3d89181
TGR
148 (build-system cmake-build-system)
149 (arguments
150 `(#:configure-flags
151 (list "-DBUILD_SHARED_LIBS=YES")
152 #:tests? #f)) ; no test suite
a040db6d 153 (home-page "https://matroska-org.github.io/libebml/")
cb778117
TGR
154 (synopsis "C++ library to parse EBML files")
155 (description "libebml is a C++ library to read and write @dfn{EBML}
156(Extensible Binary Meta Language) files. EBML was designed to be a simplified
157binary extension of XML for the purpose of storing and manipulating data in a
5bc2d579
GG
158hierarchical form with variable field lengths.")
159 (license license:lgpl2.1)))
160
f0444eaf
AE
161(define-public libxml2
162 (package
163 (name "libxml2")
c9bba992 164 (version "2.9.10")
f0444eaf
AE
165 (source (origin
166 (method url-fetch)
167 (uri (string-append "ftp://xmlsoft.org/libxml2/libxml2-"
168 version ".tar.gz"))
169 (sha256
170 (base32
c9bba992 171 "07xynh8hcxb2yb1fs051xrgszjvj37wnxvxgsj10rzmqzy9y3zma"))))
f0444eaf 172 (build-system gnu-build-system)
5f8642ea
MB
173 (outputs '("out" "static"))
174 (arguments
175 `(#:phases (modify-phases %standard-phases
176 (add-after 'install 'move-static-libs
177 (lambda* (#:key outputs #:allow-other-keys)
178 (let ((src (string-append (assoc-ref outputs "out") "/lib"))
179 (dst (string-append (assoc-ref outputs "static")
180 "/lib")))
181 (mkdir-p dst)
182 (for-each (lambda (ar)
183 (rename-file ar (string-append dst "/"
184 (basename ar))))
185 (find-files src "\\.a$"))
d52680ee
MB
186
187 ;; Remove reference to the static library from the .la
188 ;; file such that Libtool does the right thing when both
189 ;; the shared and static variants are available.
190 (substitute* (string-append src "/libxml2.la")
191 (("^old_library='libxml2.a'") "old_library=''"))
5f8642ea 192 #t))))))
f0444eaf 193 (home-page "http://www.xmlsoft.org/")
35b9e423 194 (synopsis "C parser for XML")
7ba79d5d 195 (inputs `(("xz" ,xz)))
c1944c92 196 (propagated-inputs `(("zlib" ,zlib))) ; libxml2.la says '-lz'.
7ce32242 197 (native-inputs `(("perl" ,perl)))
2a8d4401
LC
198 ;; $XML_CATALOG_FILES lists 'catalog.xml' files found in under the 'xml'
199 ;; sub-directory of any given package.
74528069
LC
200 (native-search-paths (list (search-path-specification
201 (variable "XML_CATALOG_FILES")
202 (separator " ")
203 (files '("xml"))
204 (file-pattern "^catalog\\.xml$")
205 (file-type 'regular))))
2a8d4401 206 (search-paths native-search-paths)
f0444eaf 207 (description
7c125ce0
AK
208 "Libxml2 is the XML C parser and toolkit developed for the Gnome
209project (but it is usable outside of the Gnome platform).")
f0444eaf 210 (license license:x11)))
58cc3b38 211
cc537187
RW
212;; This is the latest stable release.
213(define-public libxmlplusplus
214 (package
215 (name "libxmlplusplus")
216 (version "3.2.0")
217 (source (origin
218 (method git-fetch)
219 (uri (git-reference
220 (url "https://github.com/libxmlplusplus/libxmlplusplus.git")
221 (commit version)))
222 (file-name (git-file-name name version))
223 (sha256
224 (base32
225 "0wjz591rjlgbah7dcq8i0yn0zw9d62b7g6r0pppx81ic0cx8n8ga"))))
226 (build-system gnu-build-system)
227 (arguments
228 `(#:phases
229 (modify-phases %standard-phases
230 (add-after 'unpack 'fix-documentation
231 (lambda* (#:key inputs #:allow-other-keys)
232 (let ((xmldoc (string-append (assoc-ref inputs "docbook-xml")
233 "/xml/dtd/docbook"))
234 (xsldoc (string-append (assoc-ref inputs "docbook-xsl")
235 "/xml/xsl/docbook-xsl-"
236 ,(package-version docbook-xsl))))
237 (substitute* '("examples/dom_xpath/example.xml"
238 "docs/manual/libxml++_without_code.xml")
239 (("http://.*/docbookx\\.dtd")
240 (string-append xmldoc "/docbookx.dtd")))
241 (setenv "SGML_CATALOG_FILES"
242 (string-append xmldoc "/catalog.xml"))
243 (substitute* "docs/manual/docbook-customisation.xsl"
244 (("http://docbook.sourceforge.net/release/xsl/current/html/chunk.xsl")
245 (string-append xsldoc "/html/chunk.xsl"))))
246 #t)))))
247 (propagated-inputs
248 `(("libxml2" ,libxml2)))
249 (inputs
250 `(("glibmm" ,glibmm)))
251 (native-inputs
252 `(("autoconf" ,autoconf)
253 ("automake" ,automake)
254 ("doxygen" ,doxygen)
255 ("docbook-xml" ,docbook-xml)
256 ("docbook-xsl" ,docbook-xsl)
257 ("graphviz" ,graphviz) ; for dot
258 ("libtool" ,libtool)
259 ("libxslt" ,libxslt)
260 ("mm-common" ,mm-common)
261 ("perl" ,perl)
262 ("pkg-config" ,pkg-config)))
263 (home-page "https://github.com/libxmlplusplus/libxmlplusplus/")
264 (synopsis "C++ bindings for libxml2")
265 (description
266 "libxml++ (a.k.a. libxmlplusplus) provides a C++ interface to XML files.
267It uses libxml2 to access the XML files.")
268 (license license:lgpl2.1+)))
269
c2bb58f6
RW
270;; This is the last release providing the 2.6 API, hence the name.
271;; This is needed by tascam-gtk
272(define-public libxmlplusplus-2.6
273 (package
274 (inherit libxmlplusplus)
275 (name "libxmlplusplus")
276 (version "2.40.1")
277 (source (origin
278 (method git-fetch)
279 (uri (git-reference
280 (url "https://github.com/libxmlplusplus/libxmlplusplus.git")
281 (commit version)))
282 (file-name (git-file-name name version))
283 (sha256
284 (base32
285 "0gbfi4l88w828gmyc9br11l003ylyi4vigp5d1kfgsn0k4cig3y9"))))))
286
7ce32242 287(define-public python-libxml2
e428b2c0 288 (package/inherit libxml2
7ce32242 289 (name "python-libxml2")
785fcb62
MB
290 (source (origin
291 (inherit (package-source libxml2))
292 (patches (cons (search-patch "python-libxml2-utf8.patch")
293 (origin-patches (package-source libxml2))))))
7ce32242 294 (build-system python-build-system)
d3028f5b 295 (outputs '("out"))
7ce32242
SB
296 (arguments
297 `(;; XXX: Tests are specified in 'Makefile.am', but not in 'setup.py'.
298 #:tests? #f
299 #:phases
300 (modify-phases %standard-phases
301 (add-before
302 'build 'configure
303 (lambda* (#:key inputs #:allow-other-keys)
304 (chdir "python")
305 (let ((glibc (assoc-ref inputs ,(if (%current-target-system)
306 "cross-libc" "libc")))
307 (libxml2 (assoc-ref inputs "libxml2")))
308 (substitute* "setup.py"
309 ;; For 'libxml2/libxml/tree.h'.
310 (("ROOT = r'/usr'")
311 (format #f "ROOT = r'~a'" libxml2))
312 ;; For 'iconv.h'.
313 (("/opt/include")
aa6f87a2
MW
314 (string-append glibc "/include"))))
315 #t)))))
7ce32242
SB
316 (inputs `(("libxml2" ,libxml2)))
317 (synopsis "Python bindings for the libxml2 library")))
318
319(define-public python2-libxml2
320 (package-with-python2 python-libxml2))
321
58cc3b38
AE
322(define-public libxslt
323 (package
324 (name "libxslt")
badcb119 325 (version "1.1.34")
58cc3b38
AE
326 (source (origin
327 (method url-fetch)
328 (uri (string-append "ftp://xmlsoft.org/libxslt/libxslt-"
329 version ".tar.gz"))
330 (sha256
331 (base32
badcb119 332 "0zrzz6kjdyavspzik6fbkpvfpbd25r2qg6py5nnjaabrsr3bvccq"))
28b33172 333 (patches (search-patches "libxslt-generated-ids.patch"))))
58cc3b38 334 (build-system gnu-build-system)
badcb119
MB
335 (arguments
336 `(#:phases (modify-phases %standard-phases
337 (add-before 'check 'disable-fuzz-tests
338 (lambda _
339 ;; Disable libFuzzer tests, because they require
340 ;; instrumentation builds of libxml2 and libxslt.
341 (substitute* "tests/Makefile"
342 (("exslt plugins fuzz")
343 "exslt plugins"))
344 #t)))))
58cc3b38 345 (home-page "http://xmlsoft.org/XSLT/index.html")
35b9e423 346 (synopsis "C library for applying XSLT stylesheets to XML documents")
58cc3b38
AE
347 (inputs `(("libgcrypt" ,libgcrypt)
348 ("libxml2" ,libxml2)
95288fcc 349 ("python" ,python-minimal-wrapper)
60825fdd
MO
350 ("zlib" ,zlib)
351 ("xz" ,xz)))
da66bd38
MO
352 (native-inputs
353 `(("pkg-config" ,pkg-config)))
58cc3b38 354 (description
35b9e423 355 "Libxslt is an XSLT C library developed for the GNOME project. It is
58cc3b38
AE
356based on libxml for XML parsing, tree manipulation and XPath support.")
357 (license license:x11)))
2a1e82bb 358
5eec378b
BW
359(define-public perl-graph-readwrite
360 (package
361 (name "perl-graph-readwrite")
ffbc7d65 362 (version "2.09")
5eec378b
BW
363 (source
364 (origin
365 (method url-fetch)
366 (uri (string-append
367 "mirror://cpan/authors/id/N/NE/NEILB/Graph-ReadWrite-"
368 version
369 ".tar.gz"))
370 (sha256
371 (base32
ffbc7d65 372 "0jlsg64pmy6ka5q5gy851nnyfgjzvhyxc576bhns3vi2x5ng07mh"))))
5eec378b
BW
373 (build-system perl-build-system)
374 (propagated-inputs
375 `(("perl-graph" ,perl-graph)
376 ("perl-parse-yapp" ,perl-parse-yapp)
377 ("perl-xml-parser" ,perl-xml-parser)
378 ("perl-xml-writer" ,perl-xml-writer)))
9aba9b12 379 (home-page "https://metacpan.org/release/Graph-ReadWrite")
5eec378b
BW
380 (synopsis "Modules for reading and writing directed graphs")
381 (description "This is a collection of perl classes for reading and writing
382directed graphs in a variety of file formats. The graphs are represented in
383Perl using Jarkko Hietaniemi's @code{Graph} classes.
384
385There are two base classes. @code{Graph::Reader} is the base class for classes
386which read a graph file and create an instance of the Graph class.
387@code{Graph::Writer} is the base class for classes which take an instance of
388the @code{Graph} class and write it out in a specific file format.")
2f3108ad 389 (license license:perl-license)))
5eec378b 390
b2696a58 391(define-public perl-xml-atom
392 (package
393 (name "perl-xml-atom")
522f1995 394 (version "0.42")
b2696a58 395 (source (origin
396 (method url-fetch)
397 (uri (string-append "mirror://cpan/authors/id/M/MI/MIYAGAWA/"
398 "XML-Atom-" version ".tar.gz"))
399 (sha256
400 (base32
522f1995 401 "1wa8kfy1w4mg7kzxim4whyprkn48a2il6fap0b947zywknw4c6y6"))))
b2696a58 402 (build-system perl-build-system)
522f1995
MB
403 (arguments
404 `(#:phases
405 (modify-phases %standard-phases
406 (add-before 'check 'set-perl-search-path
407 (lambda _
408 (setenv "PERL5LIB"
409 (string-append (getcwd) ":"
410 (getenv "PERL5LIB")))
411 #t)))))
b2696a58 412 (native-inputs
50632f0a
TGR
413 ;; TODO package: perl-datetime-format-atom
414 `(("perl-html-tagset" ,perl-html-tagset)
522f1995 415 ("perl-module-build-tiny" ,perl-module-build-tiny)
50632f0a
TGR
416 ("perl-module-install" ,perl-module-install)))
417 (propagated-inputs
b2696a58 418 `(("perl-class-data-inheritable" ,perl-class-data-inheritable)
419 ("perl-datetime" ,perl-datetime)
420 ("perl-datetime-timezone" ,perl-datetime-timezone)
421 ("perl-digest-sha1" ,perl-digest-sha1)
422 ("perl-libwww" ,perl-libwww)
423 ("perl-uri" ,perl-uri)
424 ("perl-xml-libxml" ,perl-xml-libxml)
425 ("perl-xml-xpath" ,perl-xml-xpath)))
9aba9b12 426 (home-page "https://metacpan.org/release/XML-Atom")
b2696a58 427 (synopsis "Atom feed and API implementation")
428 (description
429 "Atom is a syndication, API, and archiving format for weblogs and other data.
430@code{XML::Atom} implements the feed format as well as a client for the API.")
2f3108ad 431 (license license:perl-license)))
b2696a58 432
d66fa696
MB
433(define-public perl-xml-descent
434 (package
435 (name "perl-xml-descent")
436 (version "1.04")
437 (source (origin
438 (method url-fetch)
439 (uri (string-append "mirror://cpan/authors/id/A/AN/ANDYA/"
440 "XML-Descent-" version ".tar.gz"))
441 (sha256
442 (base32
443 "0l5xmw2hd95ypppz3lyvp4sn02ccsikzjwacli3ydxfdz1bbh4d7"))))
444 (build-system perl-build-system)
445 (native-inputs
446 `(("perl-module-build" ,perl-module-build)))
447 (propagated-inputs
448 `(("perl-test-differences" ,perl-test-differences)
449 ("perl-xml-tokeparser" ,perl-xml-tokeparser)))
9aba9b12 450 (home-page "https://metacpan.org/release/XML-Descent")
d66fa696
MB
451 (synopsis "Recursive descent XML parsing")
452 (description
453 "The conventional models for parsing XML are either @dfn{DOM}
454(a data structure representing the entire document tree is created) or
455@dfn{SAX} (callbacks are issued for each element in the XML).
456
457XML grammar is recursive - so it's nice to be able to write recursive
458parsers for it. @code{XML::Descent} allows such parsers to be created.")
2f3108ad 459 (license license:perl-license)))
d66fa696 460
2a1e82bb
LC
461(define-public perl-xml-parser
462 (package
463 (name "perl-xml-parser")
8b53495d 464 (version "2.46")
2a1e82bb
LC
465 (source (origin
466 (method url-fetch)
467 (uri (string-append
2b8c5f54 468 "mirror://cpan/authors/id/T/TO/TODDR/XML-Parser-"
2a1e82bb
LC
469 version ".tar.gz"))
470 (sha256
471 (base32
8b53495d 472 "0pai3ik47q7rgnix9644c673fwydz52gqkxr9kxwq765j4j36cfk"))))
2a1e82bb
LC
473 (build-system perl-build-system)
474 (arguments `(#:make-maker-flags
475 (let ((expat (assoc-ref %build-inputs "expat")))
476 (list (string-append "EXPATLIBPATH=" expat "/lib")
477 (string-append "EXPATINCPATH=" expat "/include")))))
478 (inputs `(("expat" ,expat)))
2f3108ad 479 (license license:perl-license)
2a1e82bb
LC
480 (synopsis "Perl bindings to the Expat XML parsing library")
481 (description
482 "This module provides ways to parse XML documents. It is built on top of
483XML::Parser::Expat, which is a lower level interface to James Clark's expat
484library. Each call to one of the parsing methods creates a new instance of
485XML::Parser::Expat which is then used to parse the document. Expat options
486may be provided when the XML::Parser object is created. These options are
487then passed on to the Expat object on each parse call. They can also be given
488as extra arguments to the parse methods, in which case they override options
489given at XML::Parser creation time.")
9aba9b12 490 (home-page "https://metacpan.org/release/XML-Parser")))
37f9ff63 491
62b28f19
MB
492(define-public perl-xml-tokeparser
493 (package
494 (name "perl-xml-tokeparser")
495 (version "0.05")
496 (source (origin
497 (method url-fetch)
498 (uri (string-append "mirror://cpan/authors/id/P/PO/PODMASTER/"
499 "XML-TokeParser-" version ".tar.gz"))
500 (sha256
501 (base32
502 "1hnpwb3lh6cbgwvjjgqzcp6jm4mp612qn6ili38adc9nhkwv8fc5"))))
503 (build-system perl-build-system)
504 (propagated-inputs `(("perl-xml-parser" ,perl-xml-parser)))
9aba9b12 505 (home-page "https://metacpan.org/release/XML-TokeParser")
62b28f19
MB
506 (synopsis "Simplified interface to XML::Parser")
507 (description
508 "@code{XML::TokeParser} provides a procedural (\"pull mode\") interface
509to @code{XML::Parser} in much the same way that Gisle Aas'
510@code{HTML::TokeParser} provides a procedural interface to @code{HTML::Parser}.
511@code{XML::TokeParser} splits its XML input up into \"tokens\", each
512corresponding to an @code{XML::Parser} event.")
2f3108ad 513 (license license:perl-license)))
62b28f19 514
7339fbe2 515(define-public perl-libxml
1385ba4f 516 (package
7339fbe2 517 (name "perl-libxml")
1385ba4f
AE
518 (version "0.08")
519 (source (origin
520 (method url-fetch)
521 (uri (string-append
522 "mirror://cpan/authors/id/K/KM/KMACLEOD/libxml-perl-"
523 version ".tar.gz"))
524 (sha256
525 (base32
526 "1jy9af0ljyzj7wakqli0437zb2vrbplqj4xhab7bfj2xgfdhawa5"))))
527 (build-system perl-build-system)
7b81406a 528 (propagated-inputs
1385ba4f 529 `(("perl-xml-parser" ,perl-xml-parser)))
2f3108ad 530 (license license:perl-license)
2db5f9b6 531 (synopsis "Perl modules for working with XML")
1385ba4f 532 (description
2db5f9b6
TGR
533 "libxml-perl is a collection of smaller Perl modules, scripts, and
534documents for working with XML in Perl. libxml-perl software works in
535combination with @code{XML::Parser}, PerlSAX, @code{XML::DOM},
536@code{XML::Grove}, and others.")
9aba9b12 537 (home-page "https://metacpan.org/release/libxml-perl")))
1385ba4f 538
3dd6bee1
EB
539(define-public perl-xml-libxml
540 (package
541 (name "perl-xml-libxml")
d71184f8 542 (version "2.0134")
3dd6bee1
EB
543 (source
544 (origin
545 (method url-fetch)
546 (uri (string-append "mirror://cpan/authors/id/S/SH/SHLOMIF/"
547 "XML-LibXML-" version ".tar.gz"))
548 (sha256
549 (base32
d71184f8 550 "1ks69xymv6zkj7hvaymjvb78ch81abri7kg4zrwxhdfsqb8a9g7h"))))
3dd6bee1
EB
551 (build-system perl-build-system)
552 (propagated-inputs
553 `(("perl-xml-namespacesupport" ,perl-xml-namespacesupport)
554 ("perl-xml-sax" ,perl-xml-sax)))
555 (inputs
556 `(("libxml2" ,libxml2)))
9aba9b12 557 (home-page "https://metacpan.org/release/XML-LibXML")
3dd6bee1
EB
558 (synopsis "Perl interface to libxml2")
559 (description "This module implements a Perl interface to the libxml2
54c3c140 560library which provides interfaces for parsing and manipulating XML files. This
3dd6bee1
EB
561module allows Perl programmers to make use of the highly capable validating
562XML parser and the high performance DOM implementation.")
2f3108ad 563 (license license:perl-license)))
3dd6bee1 564
f7c4dc2f
RW
565(define-public perl-xml-libxml-simple
566 (package
567 (name "perl-xml-libxml-simple")
d21fb90a 568 (version "0.99")
f7c4dc2f
RW
569 (source (origin
570 (method url-fetch)
571 (uri (string-append "mirror://cpan/authors/id/M/MA/MARKOV/"
572 "XML-LibXML-Simple-" version ".tar.gz"))
573 (sha256
574 (base32
d21fb90a 575 "0i4ybiqdnvnbfxqslw2y392kvy7i752dl8n99bqiqv5kzk4lbzhl"))))
f7c4dc2f
RW
576 (build-system perl-build-system)
577 (propagated-inputs
578 `(("perl-file-slurp-tiny" ,perl-file-slurp-tiny)
579 ("perl-xml-libxml" ,perl-xml-libxml)))
9aba9b12 580 (home-page "https://metacpan.org/release/XML-LibXML-Simple")
f7c4dc2f
RW
581 (synopsis "XML::LibXML based XML::Simple clone")
582 (description
583 "This package provides the same API as @code{XML::Simple} but is based on
584@code{XML::LibXML}.")
2f3108ad 585 (license license:perl-license)))
f7c4dc2f 586
93863a5e
RW
587(define-public perl-xml-libxslt
588 (package
589 (name "perl-xml-libxslt")
73a3e98f 590 (version "1.96")
93863a5e
RW
591 (source
592 (origin
593 (method url-fetch)
594 (uri (string-append "mirror://cpan/authors/id/S/SH/SHLOMIF/"
595 "XML-LibXSLT-" version ".tar.gz"))
596 (sha256
597 (base32
73a3e98f 598 "0wyl8klgr65j8y8fzgwz9jlvfjwvxazna8j3dg9gksd2v973fpia"))))
93863a5e
RW
599 (build-system perl-build-system)
600 (inputs
601 `(("libxslt" ,libxslt)))
602 (propagated-inputs
603 `(("perl-xml-libxml" ,perl-xml-libxml)))
9aba9b12 604 (home-page "https://metacpan.org/release/XML-LibXSLT")
93863a5e
RW
605 (synopsis "Perl bindings to GNOME libxslt library")
606 (description "This Perl module is an interface to the GNOME project's
607libxslt library.")
2f3108ad 608 (license license:perl-license)))
93863a5e 609
b715dbac
EB
610(define-public perl-xml-namespacesupport
611 (package
612 (name "perl-xml-namespacesupport")
88958ee0 613 (version "1.12")
b715dbac
EB
614 (source
615 (origin
616 (method url-fetch)
617 (uri (string-append "mirror://cpan/authors/id/P/PE/PERIGRIN/"
618 "XML-NamespaceSupport-" version ".tar.gz"))
619 (sha256
620 (base32
88958ee0 621 "1vz5pbi4lm5fhq2slrs2hlp6bnk29863abgjlcx43l4dky2rbsa7"))))
b715dbac 622 (build-system perl-build-system)
9aba9b12 623 (home-page "https://metacpan.org/release/XML-NamespaceSupport")
b715dbac
EB
624 (synopsis "XML namespace support class")
625 (description "This module offers a simple to process namespaced XML
626names (unames) from within any application that may need them. It also helps
627maintain a prefix to namespace URI map, and provides a number of basic
628checks.")
2f3108ad 629 (license license:perl-license)))
b715dbac 630
a022b23f 631(define-public perl-xml-rss
632 (package
633 (name "perl-xml-rss")
73662141 634 (version "1.61")
a022b23f 635 (source (origin
636 (method url-fetch)
637 (uri (string-append "mirror://cpan/authors/id/S/SH/SHLOMIF/"
638 "XML-RSS-" version ".tar.gz"))
639 (sha256
640 (base32
73662141 641 "03f983l2dnkvcw6iyg1s0xmv5wn793d3kvqlshmhm01ibp7ffvzs"))))
a022b23f 642 (build-system perl-build-system)
643 (native-inputs
644 `(("perl-module-build" ,perl-module-build)
645 ("perl-test-manifest" ,perl-test-manifest)
646 ("perl-test-differences" ,perl-test-differences)
647 ("perl-test-pod" ,perl-test-pod)
648 ("perl-test-pod-coverage" ,perl-test-pod-coverage)))
649 ;; XXX: The test which uses this modules does not run, even when it is included
650 ;; it is ignored. ("perl-test-trailingspace" ,perl-test-trailingspace)
651 (inputs
652 `(("perl-datetime" ,perl-datetime)
653 ("perl-datetime-format-mail" ,perl-datetime-format-mail)
654 ("perl-datetime-format-w3cdtf" ,perl-datetime-format-w3cdtf)
655 ("perl-html-parser" ,perl-html-parser)
656 ("perl-xml-parser" ,perl-xml-parser)))
9aba9b12 657 (home-page "https://metacpan.org/release/XML-RSS")
a022b23f 658 (synopsis "Creates and updates RSS files")
659 (description
660 "This module provides a basic framework for creating and maintaining
661RDF Site Summary (RSS) files. This distribution also contains many examples
662that allow you to generate HTML from an RSS, convert between 0.9, 0.91, and
6631.0 version, and more.")
2f3108ad 664 (license license:perl-license)))
a022b23f 665
18b8bbb3
EB
666(define-public perl-xml-sax
667 (package
668 (name "perl-xml-sax")
2dcde3c7 669 (version "1.02")
18b8bbb3
EB
670 (source
671 (origin
672 (method url-fetch)
673 (uri (string-append "mirror://cpan/authors/id/G/GR/GRANTM/"
674 "XML-SAX-" version ".tar.gz"))
675 (sha256
2dcde3c7 676 (base32 "0am13vnv8qsjafr5ljakwnkhlwpk15sga02z8mxsg9is0j3w61j5"))))
18b8bbb3
EB
677 (build-system perl-build-system)
678 (propagated-inputs
679 `(("perl-xml-namespacesupport" ,perl-xml-namespacesupport)
680 ("perl-xml-sax-base" ,perl-xml-sax-base)))
681 (arguments
682 `(#:phases (modify-phases %standard-phases
683 (add-before
40b084a3 684 'install 'augment-path
18b8bbb3
EB
685 ;; The install target tries to load the newly-installed
686 ;; XML::SAX module, but can't find it, so we need to tell
687 ;; perl where to look.
688 (lambda* (#:key outputs #:allow-other-keys)
689 (setenv "PERL5LIB"
690 (string-append (getenv "PERL5LIB") ":"
691 (assoc-ref outputs "out")
aa6f87a2
MW
692 "/lib/perl5/site_perl"))
693 #t)))))
9aba9b12 694 (home-page "https://metacpan.org/release/XML-SAX")
18b8bbb3
EB
695 (synopsis "Perl API for XML")
696 (description "XML::SAX consists of several framework classes for using and
697building Perl SAX2 XML parsers, filters, and drivers.")
2f3108ad 698 (license license:perl-license)))
18b8bbb3 699
1ed6d5bc
EB
700(define-public perl-xml-sax-base
701 (package
702 (name "perl-xml-sax-base")
fa964e96 703 (version "1.09")
1ed6d5bc
EB
704 (source
705 (origin
706 (method url-fetch)
707 (uri (string-append "mirror://cpan/authors/id/G/GR/GRANTM/"
708 "XML-SAX-Base-" version ".tar.gz"))
709 (sha256
710 (base32
fa964e96 711 "1l1ai9g1z11ja7mvnfl5mj346r13jyckbg9qlw6c2izglidkbjv6"))))
1ed6d5bc 712 (build-system perl-build-system)
9aba9b12 713 (home-page "https://metacpan.org/release/XML-SAX-Base")
1ed6d5bc
EB
714 (synopsis "Base class for SAX Drivers and Filters")
715 (description "This module has a very simple task - to be a base class for
716PerlSAX drivers and filters. It's default behaviour is to pass the input
717directly to the output unchanged. It can be useful to use this module as a
718base class so you don't have to, for example, implement the characters()
719callback.")
2f3108ad 720 (license license:perl-license)))
1ed6d5bc 721
535dc6cf
AE
722(define-public perl-xml-simple
723 (package
724 (name "perl-xml-simple")
fa3fff43 725 (version "2.25")
535dc6cf
AE
726 (source (origin
727 (method url-fetch)
728 (uri (string-append
729 "mirror://cpan/authors/id/G/GR/GRANTM/XML-Simple-"
730 version ".tar.gz"))
731 (sha256
732 (base32
fa3fff43 733 "1y6vh328zrh085d40852v4ij2l4g0amxykswxd1nfhd2pspds7sk"))))
535dc6cf 734 (build-system perl-build-system)
27ef7f45 735 (propagated-inputs
e831256f
EF
736 `(("perl-xml-parser" ,perl-xml-parser)
737 ("perl-xml-sax" ,perl-xml-sax)))
2f3108ad 738 (license license:perl-license)
535dc6cf
AE
739 (synopsis "Perl module for easy reading/writing of XML files")
740 (description
741 "The XML::Simple module provides a simple API layer on top of an
742underlying XML parsing module (either XML::Parser or one of the SAX2
743parser modules).")
9aba9b12 744 (home-page "https://metacpan.org/release/XML-Simple")))
535dc6cf 745
a2e520af
AE
746(define-public perl-xml-regexp
747 (package
748 (name "perl-xml-regexp")
749 (version "0.04")
750 (source (origin
751 (method url-fetch)
752 (uri (string-append
753 "mirror://cpan/authors/id/T/TJ/TJMATHER/XML-RegExp-"
754 version ".tar.gz"))
755 (sha256
756 (base32
757 "0m7wj00a2kik7wj0azhs1zagwazqh3hlz4255n75q21nc04r06fz"))))
758 (build-system perl-build-system)
759 (inputs
760 `(("perl-xml-parser" ,perl-xml-parser)))
2f3108ad 761 (license license:perl-license)
a2e520af
AE
762 (synopsis "Perl regular expressions for XML tokens")
763 (description
764 "XML::RegExp contains regular expressions for the following XML tokens:
765BaseChar, Ideographic, Letter, Digit, Extender, CombiningChar, NameChar,
766EntityRef, CharRef, Reference, Name, NmToken, and AttValue.")
9aba9b12 767 (home-page "https://metacpan.org/release/XML-RegExp")))
a2e520af 768
ad871fc6
AE
769(define-public perl-xml-dom
770 (package
771 (name "perl-xml-dom")
4e5465f2 772 (version "1.46")
ad871fc6
AE
773 (source (origin
774 (method url-fetch)
775 (uri (string-append
776 "mirror://cpan/authors/id/T/TJ/TJMATHER/XML-DOM-"
777 version ".tar.gz"))
778 (sha256
779 (base32
4e5465f2 780 "0phpkc4li43m2g44hdcvyxzy9pymqwlqhh5hwp2xc0cv8l5lp8lb"))))
ad871fc6 781 (build-system perl-build-system)
f7faff88
AE
782 (propagated-inputs
783 `(("perl-libwww" ,perl-libwww)
ad871fc6 784 ("perl-libxml" ,perl-libxml)
4e5465f2 785 ("perl-xml-parser" ,perl-xml-parser)
ad871fc6 786 ("perl-xml-regexp" ,perl-xml-regexp)))
2f3108ad 787 (license license:perl-license)
ad871fc6
AE
788 (synopsis
789 "Perl module for building DOM Level 1 compliant document structures")
790 (description
791 "This module extends the XML::Parser module by Clark Cooper. The
792XML::Parser module is built on top of XML::Parser::Expat, which is a lower
793level interface to James Clark's expat library. XML::DOM::Parser is derived
794from XML::Parser. It parses XML strings or files and builds a data structure
795that conforms to the API of the Document Object Model.")
9aba9b12 796 (home-page "https://metacpan.org/release/XML-DOM")))
ad871fc6 797
649e1676
RW
798(define-public perl-xml-compile-tester
799 (package
800 (name "perl-xml-compile-tester")
9af5a513 801 (version "0.91")
649e1676
RW
802 (source (origin
803 (method url-fetch)
804 (uri (string-append "mirror://cpan/authors/id/M/MA/MARKOV/"
805 "XML-Compile-Tester-" version ".tar.gz"))
806 (sha256
807 (base32
9af5a513 808 "1drzwziwi96rfkh48qpw4l225mcbk8ppl2157nj92cslcpwwdk75"))))
649e1676
RW
809 (build-system perl-build-system)
810 (propagated-inputs
811 `(("perl-log-report" ,perl-log-report)
812 ("perl-test-deep" ,perl-test-deep)))
9aba9b12 813 (home-page "https://metacpan.org/release/XML-Compile-Tester")
649e1676
RW
814 (synopsis "XML::Compile related regression testing")
815 (description
816 "The @code{XML::Compile} module suite has extensive regression testing.
817This module provide functions which simplify writing tests for
818@code{XML::Compile} related distributions.")
2f3108ad 819 (license license:perl-license)))
649e1676 820
b494a5f1
RW
821(define-public perl-xml-compile
822 (package
823 (name "perl-xml-compile")
78ca483a 824 (version "1.63")
b494a5f1
RW
825 (source (origin
826 (method url-fetch)
827 (uri (string-append "mirror://cpan/authors/id/M/MA/MARKOV/"
828 "XML-Compile-" version ".tar.gz"))
829 (sha256
830 (base32
78ca483a 831 "0psr5pwsk2biz2bfkigmx04v2rfhs6ybwcfmcrrg7gvh9bpp222b"))))
b494a5f1
RW
832 (build-system perl-build-system)
833 (propagated-inputs
174988fa
TGR
834 `(("perl-carp" ,perl-carp)
835 ("perl-log-report" ,perl-log-report)
b494a5f1
RW
836 ("perl-xml-compile-tester" ,perl-xml-compile-tester)
837 ("perl-xml-libxml" ,perl-xml-libxml)
174988fa
TGR
838 ("perl-scalar-list-utils" ,perl-scalar-list-utils)
839 ("perl-test-deep" ,perl-test-deep)
840 ("perl-types-serialiser" ,perl-types-serialiser)))
9aba9b12 841 (home-page "https://metacpan.org/release/XML-Compile")
b494a5f1
RW
842 (synopsis "Compilation-based XML processing")
843 (description
844 "@code{XML::Compile} can be used to translate a Perl data-structure into
845XML or XML into a Perl data-structure, both directions under rigid control by
846a schema.")
2f3108ad 847 (license license:perl-license)))
b494a5f1 848
c1d41b5d
RW
849(define-public perl-xml-compile-cache
850 (package
851 (name "perl-xml-compile-cache")
503a0059 852 (version "1.06")
c1d41b5d
RW
853 (source (origin
854 (method url-fetch)
855 (uri (string-append "mirror://cpan/authors/id/M/MA/MARKOV/"
856 "XML-Compile-Cache-" version ".tar.gz"))
857 (sha256
858 (base32
503a0059 859 "181qf1s7ymgi7saph3cf9p6dbxkxyh1ja23na4dchhi8v5mi66sr"))))
c1d41b5d
RW
860 (build-system perl-build-system)
861 (propagated-inputs
862 `(("perl-log-report" ,perl-log-report)
863 ("perl-xml-compile" ,perl-xml-compile)
864 ("perl-xml-compile-tester" ,perl-xml-compile-tester)
865 ("perl-xml-libxml-simple" ,perl-xml-libxml-simple)))
9aba9b12 866 (home-page "https://metacpan.org/release/XML-Compile-Cache")
c1d41b5d
RW
867 (synopsis "Cache compiled XML translators")
868 (description
869 "This package provides methods to cache compiled XML translators.")
2f3108ad 870 (license license:perl-license)))
c1d41b5d 871
baeab9b8
RW
872(define-public perl-xml-compile-soap
873 (package
874 (name "perl-xml-compile-soap")
1d9b041c 875 (version "3.24")
baeab9b8
RW
876 (source (origin
877 (method url-fetch)
878 (uri (string-append "mirror://cpan/authors/id/M/MA/MARKOV/"
879 "XML-Compile-SOAP-" version ".tar.gz"))
880 (sha256
881 (base32
1d9b041c 882 "0pkcph562l2ij7rlwlvm58v6y062qsbydfpaz2qnph2ixqy0xfd1"))))
baeab9b8
RW
883 (build-system perl-build-system)
884 (propagated-inputs
885 `(("perl-file-slurp-tiny" ,perl-file-slurp-tiny)
886 ("perl-libwww" ,perl-libwww)
887 ("perl-log-report" ,perl-log-report)
888 ("perl-xml-compile" ,perl-xml-compile)
889 ("perl-xml-compile-cache" ,perl-xml-compile-cache)
890 ("perl-xml-compile-tester" ,perl-xml-compile-tester)))
9aba9b12 891 (home-page "https://metacpan.org/release/XML-Compile-SOAP")
baeab9b8
RW
892 (synopsis "Base-class for SOAP implementations")
893 (description
894 "This module provides a class to handle the SOAP protocol. The first
895implementation is @url{SOAP1.1,
896http://www.w3.org/TR/2000/NOTE-SOAP-20000508/}, which is still most often
897used.")
2f3108ad 898 (license license:perl-license)))
baeab9b8 899
6a914948
RW
900(define-public perl-xml-compile-wsdl11
901 (package
902 (name "perl-xml-compile-wsdl11")
4b4a4f5c 903 (version "3.07")
6a914948
RW
904 (source (origin
905 (method url-fetch)
906 (uri (string-append "mirror://cpan/authors/id/M/MA/MARKOV/"
907 "XML-Compile-WSDL11-" version ".tar.gz"))
908 (sha256
909 (base32
4b4a4f5c 910 "09ayl442hzvn97q4ghn5rz4r82dm9w3l69hixhb29h9xq9ysi7ba"))))
6a914948
RW
911 (build-system perl-build-system)
912 (propagated-inputs
913 `(("perl-log-report" ,perl-log-report)
914 ("perl-xml-compile" ,perl-xml-compile)
915 ("perl-xml-compile-cache" ,perl-xml-compile-cache)
916 ("perl-xml-compile-soap" ,perl-xml-compile-soap)))
9aba9b12 917 (home-page "https://metacpan.org/release/XML-Compile-WSDL11")
6a914948
RW
918 (synopsis "Create SOAP messages defined by WSDL 1.1")
919 (description
920 "This module understands WSDL version 1.1. A WSDL file defines a set of
921messages to be send and received over SOAP connections. This involves
922encoding of the message to be send into XML, sending the message to the
923server, collect the answer, and finally decoding the XML to Perl.")
2f3108ad 924 (license license:perl-license)))
6a914948 925
246455c2 926(define-public perl-xml-feed
927 (package
928 (name "perl-xml-feed")
8dfdd746 929 (version "0.59")
246455c2 930 (source (origin
931 (method url-fetch)
932 (uri (string-append "mirror://cpan/authors/id/D/DA/DAVECROSS/"
933 "XML-Feed-" version ".tar.gz"))
934 (sha256
935 (base32
8dfdd746 936 "1z1a88bpy64j42bbyl8acbfl3dn9iaz47gx6clkgy5sbn4kr0kgk"))))
246455c2 937 (build-system perl-build-system)
246455c2 938 (native-inputs
939 `(("perl-module-build" ,perl-module-build)
940 ("perl-uri" ,perl-uri)
941 ("perl-class-data-inheritable" ,perl-class-data-inheritable)))
40b793fd 942 (propagated-inputs
246455c2 943 `(("perl-class-errorhandler" ,perl-class-errorhandler)
944 ("perl-datetime" ,perl-datetime)
f2a53a4a
PG
945 ("perl-datetime-format-flexible" ,perl-datetime-format-flexible)
946 ("perl-datetime-format-iso8601" ,perl-datetime-format-iso8601)
246455c2 947 ("perl-datetime-format-mail" ,perl-datetime-format-mail)
f2a53a4a 948 ("perl-datetime-format-natural" ,perl-datetime-format-natural)
246455c2 949 ("perl-datetime-format-w3cdtf" ,perl-datetime-format-w3cdtf)
950 ("perl-feed-find" ,perl-feed-find)
951 ("perl-html-parser" ,perl-html-parser)
952 ("perl-libwww-perl" ,perl-libwww)
953 ("perl-module-pluggable" ,perl-module-pluggable)
954 ("perl-uri-fetch" ,perl-uri-fetch)
955 ("perl-xml-atom" ,perl-xml-atom)
956 ("perl-xml-libxml" ,perl-xml-libxml)
957 ("perl-xml-rss" ,perl-xml-rss)))
9aba9b12 958 (home-page "https://metacpan.org/release/XML-Feed")
246455c2 959 (synopsis "XML Syndication Feed Support")
960 (description "@code{XML::Feed} is a syndication feed parser for both RSS and
961Atom feeds. It also implements feed auto-discovery for finding feeds, given a URI.
962@code{XML::Feed} supports the following syndication feed formats:
963RSS 0.91, RSS 1.0, RSS 2.0, Atom")
2f3108ad 964 (license license:perl-license)))
246455c2 965
0c1bab36 966(define-public perl-xml-xpath
967 (package
968 (name "perl-xml-xpath")
fc82538c 969 (version "1.44")
0c1bab36 970 (source (origin
971 (method url-fetch)
972 (uri (string-append "mirror://cpan/authors/id/M/MA/MANWAR/"
973 "XML-XPath-" version ".tar.gz"))
974 (sha256
975 (base32
fc82538c 976 "03yxj7w5a43ibbpiqsvb3lswj2b71dydsx4rs2fw0p8n0l3i3j8w"))))
0c1bab36 977 (build-system perl-build-system)
978 (native-inputs
979 `(("perl-path-tiny" ,perl-path-tiny)))
9332d706 980 (propagated-inputs
0c1bab36 981 `(("perl-xml-parser" ,perl-xml-parser)))
9aba9b12 982 (home-page "https://metacpan.org/release/XML-XPath")
0c1bab36 983 (synopsis "Parse and evaluate XPath statements")
984 (description
985 "This module aims to comply exactly to the @url{XPath specification,
986https://www.w3.org/TR/xpath} and yet allow extensions to be added in
987the form of functions.")
2f3108ad 988 (license license:perl-license)))
0c1bab36 989
6ce212b8
RW
990(define-public pugixml
991 (package
992 (name "pugixml")
bc134c77 993 (version "1.10")
6ce212b8
RW
994 (source
995 (origin
996 (method url-fetch)
0562a81e
EF
997 (uri (string-append "https://github.com/zeux/pugixml/releases/download/v"
998 version "/pugixml-" version ".tar.gz"))
6ce212b8 999 (sha256
bc134c77 1000 (base32 "02l7nllhydggf7s64d2x84kckbmwag4lsn28sc82953hnkxrkwsm"))))
6ce212b8
RW
1001 (build-system cmake-build-system)
1002 (arguments
7fda7b8f 1003 `(#:configure-flags '("-DBUILD_SHARED_LIBS=ON")
bc134c77 1004 #:tests? #f)) ; no tests
7fda7b8f
MB
1005 (native-inputs
1006 `(("pkg-config" ,pkg-config)))
28655227 1007 (home-page "https://pugixml.org")
6ce212b8
RW
1008 (synopsis "Light-weight, simple and fast XML parser for C++ with XPath support")
1009 (description
1010 "pugixml is a C++ XML processing library, which consists of a DOM-like
1011interface with rich traversal/modification capabilities, a fast XML parser
1012which constructs the DOM tree from an XML file/buffer, and an XPath 1.0
1013implementation for complex data-driven tree queries. Full Unicode support is
1014also available, with Unicode interface variants and conversions between
1015different Unicode encodings which happen automatically during
1016parsing/saving.")
1017 (license license:expat)))
1018
c2efe1ae
MB
1019(define-public python-pyxb
1020 (package
1021 (name "python-pyxb")
4ef6cfef 1022 (version "1.2.6")
c2efe1ae
MB
1023 (source (origin
1024 (method url-fetch)
1025 (uri (pypi-uri "PyXB" version))
1026 (sha256
1027 (base32
4ef6cfef 1028 "1d17pyixbfvjyi2lb0cfp0ch8wwdf44mmg3r5pwqhyyqs66z601a"))))
c2efe1ae
MB
1029 (build-system python-build-system)
1030 (home-page "http://pyxb.sourceforge.net/")
1031 (synopsis "Python XML Schema Bindings")
1032 (description
1033 "PyXB (\"pixbee\") is a pure Python package that generates Python source
1034code for classes that correspond to data structures defined by XMLSchema.")
1035 (license (list license:asl2.0 ; Most files.
1036 license:expat ; pyxb/utils/six.py
1037 license:gpl2 ; bundled jquery in doc is dual MIT/GPL2
1038 license:psfl)))) ; pyxb/utils/activestate.py
1039
1040(define-public python2-pyxb
1041 (package-with-python2 python-pyxb))
1042
37f9ff63
AE
1043(define-public xmlto
1044 (package
1045 (name "xmlto")
877a6466 1046 (version "0.0.28")
37f9ff63
AE
1047 (source
1048 (origin
1049 (method url-fetch)
7bc19c92
LF
1050 ;; The old source on fedorahosted.org is offline permanently:
1051 ;; <https://bugs.gnu.org/25989>
1052 (uri (string-append "mirror://debian/pool/main/x/xmlto/"
1053 "xmlto_" version ".orig.tar.bz2"))
1054 (file-name (string-append name "-" version ".tar.bz2"))
37f9ff63
AE
1055 (sha256
1056 (base32
877a6466 1057 "0xhj8b2pwp4vhl9y16v3dpxpsakkflfamr191mprzsspg4xdyc0i"))))
37f9ff63 1058 (build-system gnu-build-system)
ae0c1202
LC
1059 (arguments
1060 ;; Make sure the reference to util-linux's 'getopt' is kept in 'xmlto'.
1061 '(#:configure-flags (list (string-append "GETOPT="
1062 (assoc-ref %build-inputs
1063 "util-linux")
1064 "/bin/getopt"))))
14755541
MO
1065 (native-inputs
1066 `(("util-linux" ,util-linux)))
37f9ff63 1067 (inputs
ae0c1202
LC
1068 `(("util-linux" ,util-linux) ; for 'getopt'
1069 ("libxml2" ,libxml2) ; for 'xmllint'
1070 ("libxslt" ,libxslt))) ; for 'xsltproc'
37f9ff63
AE
1071 (home-page "http://cyberelk.net/tim/software/xmlto/")
1072 (synopsis "Front-end to an XSL toolchain")
1073 (description
1074 "Xmlto is a front-end to an XSL toolchain. It chooses an appropriate
1075stylesheet for the conversion you want and applies it using an external
1076XSL-T processor. It also performs any necessary post-processing.")
1077 (license license:gpl2+)))
0899144f
AE
1078
1079(define-public xmlsec
1080 (package
1081 (name "xmlsec")
f9fee9d3 1082 (version "1.2.30")
0899144f 1083 (source (origin
50f5aa4b
TGR
1084 (method url-fetch)
1085 (uri (string-append "https://www.aleksey.com/xmlsec/download/"
1086 "xmlsec1-" version ".tar.gz"))
1087 (sha256
1088 (base32
f9fee9d3 1089 "1j5bf7ni45jghyrbf7a14wx2pvfara557zyry7g7h8840c5kd11d"))))
0899144f 1090 (build-system gnu-build-system)
50f5aa4b 1091 (propagated-inputs ; according to xmlsec1.pc
0899144f
AE
1092 `(("libxml2" ,libxml2)
1093 ("libxslt" ,libxslt)))
1094 (inputs
1095 `(("gnutls" ,gnutls)
1096 ("libgcrypt" ,libgcrypt)
1097 ("libltdl" ,libltdl)))
e4aab734
RW
1098 (native-inputs
1099 `(("pkg-config" ,pkg-config)))
a5b570b4 1100 (home-page "https://www.aleksey.com/xmlsec/")
0899144f
AE
1101 (synopsis "XML Security Library")
1102 (description
1103 "The XML Security Library is a C library based on Libxml2. It
1104supports XML security standards such as XML Signature, XML Encryption,
1105Canonical XML (part of Libxml2) and Exclusive Canonical XML (part of
1106Libxml2).")
1107 (license (license:x11-style "file://COPYING"
1108 "See 'COPYING' in the distribution."))))
96f8d991 1109
b4c9a317
MB
1110(define-public xmlsec-nss
1111 (package
1112 (inherit xmlsec)
1113 (name "xmlsec-nss")
3825b444
TGR
1114 (native-inputs
1115 ;; For tests.
1116 `(("nss:bin" ,nss "bin") ; for certutil
1117 ,@(package-native-inputs xmlsec)))
b4c9a317
MB
1118 (inputs
1119 `(("nss" ,nss)
1120 ("libltdl" ,libltdl)))
1121 (synopsis "XML Security Library (using NSS instead of GnuTLS)")))
1122
96f8d991
RW
1123(define-public minixml
1124 (package
1125 (name "minixml")
5b59c775 1126 (version "2.12")
96f8d991 1127 (source (origin
ee4e439a 1128 (method url-fetch)
eba9ecd4 1129 (uri (string-append "https://github.com/michaelrsweet/mxml/"
b7cbcee5 1130 "releases/download/v" version
eba9ecd4 1131 "/mxml-" version ".tar.gz"))
96f8d991
RW
1132 (sha256
1133 (base32
ee4e439a 1134 "0kq3wiycb40dcyswvajrqb1n5ffm5xcnsfxxaml92vhpl6x57yvb"))))
96f8d991
RW
1135 (build-system gnu-build-system)
1136 (arguments
5b59c775
TGR
1137 `(#:configure-flags
1138 (list (string-append "LDFLAGS=-Wl,-rpath="
1139 (assoc-ref %outputs "out") "/lib"))
b7cbcee5 1140 #:tests? #f)) ; tests are run during build
eba9ecd4 1141 (home-page "https://michaelrsweet.github.io/mxml")
96f8d991
RW
1142 (synopsis "Small XML parsing library")
1143 (description
1144 "Mini-XML is a small C library to read and write XML files and strings in
1145UTF-8 and UTF-16 encoding.")
1146 ;; LGPL 2.0+ with additional exceptions for static linking
1147 (license license:lgpl2.0+)))
33ae9107
DT
1148
1149;; TinyXML is an unmaintained piece of software, so the patches and build
1150;; system massaging have no upstream potential.
1151(define-public tinyxml
1152 (package
1153 (name "tinyxml")
1154 (version "2.6.2")
1155 (source (origin
1156 (method url-fetch)
de67e922
LF
1157 (uri (string-append "mirror://sourceforge/tinyxml/tinyxml/"
1158 version "/tinyxml_"
33ae9107
DT
1159 (string-join (string-split version #\.) "_")
1160 ".tar.gz"))
671249b9 1161 (file-name (string-append name "-" version ".tar.gz"))
33ae9107
DT
1162 (sha256
1163 (base32
1164 "14smciid19lvkxqznfig77jxn5s4iq3jpb47vh5a6zcaqp7gvg8m"))
fc1adab1 1165 (patches (search-patches "tinyxml-use-stl.patch"))))
33ae9107
DT
1166 (build-system gnu-build-system)
1167 ;; This library is missing *a lot* of the steps to make it usable, so we
1168 ;; have to add them here, like every other distro must do.
1169 (arguments
1170 `(#:phases
1171 (modify-phases %standard-phases
1172 (delete 'configure)
1173 (add-after 'build 'build-shared-library
1174 (lambda _
0efb6452
EF
1175 (invoke "g++" "-Wall" "-O2" "-shared" "-fpic"
1176 "tinyxml.cpp" "tinyxmlerror.cpp"
1177 "tinyxmlparser.cpp" "tinystr.cpp"
1178 "-o" "libtinyxml.so")))
33ae9107 1179 (replace 'check
0efb6452 1180 (lambda _ (invoke "./xmltest")))
33ae9107
DT
1181 (replace 'install
1182 (lambda* (#:key outputs #:allow-other-keys)
1183 (let* ((out (assoc-ref outputs "out"))
1184 (include (string-append out "/include"))
1185 (lib (string-append out "/lib"))
1186 (pkgconfig (string-append out "/lib/pkgconfig"))
1187 (doc (string-append out "/share/doc")))
1188 ;; Install libs and headers.
1189 (install-file "libtinyxml.so" lib)
1190 (install-file "tinystr.h" include)
1191 (install-file "tinyxml.h" include)
1192 ;; Generate and install pkg-config file.
1193 (mkdir-p pkgconfig)
1194 ;; Software such as Kodi expect this file to be present, but
1195 ;; it's not provided in the source code.
1196 (call-with-output-file (string-append pkgconfig "/tinyxml.pc")
1197 (lambda (port)
1198 (format port "prefix=~a
1199exec_prefix=${prefix}
1200libdir=${exec_prefix}/lib
1201includedir=${prefix}/include
1202
1203Name: TinyXML
1204Description: A simple, small, C++ XML parser
1205Version: ~a
1206Libs: -L${libdir} -ltinyxml
1207Cflags: -I${includedir}
1208"
1209 out ,version)))
1210 ;; Install docs.
1211 (mkdir-p doc)
1212 (copy-recursively "docs" (string-append doc "tinyxml"))
1213 #t))))))
1214 (synopsis "Small XML parser for C++")
1215 (description "TinyXML is a small and simple XML parsing library for the
05077200 1216C++ programming language.")
33ae9107
DT
1217 (home-page "http://www.grinninglizard.com/tinyxml/index.html")
1218 (license license:zlib)))
fe9451c5 1219
931bd7f6
TGR
1220(define-public tinyxml2
1221 (package
1222 (name "tinyxml2")
70d1e971 1223 (version "8.0.0")
931bd7f6
TGR
1224 (source
1225 (origin
4bad4fbd
TGR
1226 (method git-fetch)
1227 (uri (git-reference
b0e7b699 1228 (url "https://github.com/leethomason/tinyxml2")
4bad4fbd
TGR
1229 (commit version)))
1230 (file-name (git-file-name name version))
931bd7f6 1231 (sha256
70d1e971 1232 (base32 "0raa8r2hsagk7gjlqjwax95ib8d47ba79n91r4aws2zg8y6ssv1d"))))
931bd7f6 1233 (build-system cmake-build-system)
931bd7f6
TGR
1234 (synopsis "Small XML parser for C++")
1235 (description "TinyXML2 is a small and simple XML parsing library for the
1236C++ programming language.")
1237 (home-page "http://www.grinninglizard.com/tinyxml2/")
1238 (license license:zlib)))
1239
fe9451c5
RG
1240(define-public xmlstarlet
1241 (package
1242 (name "xmlstarlet")
1243 (version "1.6.1")
1244 (source
1245 (origin
1246 (method url-fetch)
1247 (uri (string-append "mirror://sourceforge/xmlstar/xmlstarlet/"
1248 version "/xmlstarlet-" version ".tar.gz"))
1249 (sha256
1250 (base32
1251 "1jp737nvfcf6wyb54fla868yrr39kcbijijmjpyk4lrpyg23in0m"))))
1252 (build-system gnu-build-system)
22ea0235
MB
1253 (arguments
1254 '(#:phases
1255 (modify-phases %standard-phases
1256 (add-before 'check 'drop-failing-tests
1257 (lambda _
1258 ;; FIXME: Why are these tests failing.
1259 (substitute* "Makefile"
1260 (("^examples/schema1\\\\") "\\")
1261 (("^examples/valid1\\\\") "\\"))
1262 #t)))))
fe9451c5
RG
1263 (inputs
1264 `(("libxslt" ,libxslt)
1265 ("libxml2" ,libxml2)))
1266 (home-page "http://xmlstar.sourceforge.net/")
1267 (synopsis "Command line XML toolkit")
1268 (description "XMLStarlet is a set of command line utilities which can be
1269used to transform, query, validate, and edit XML documents. XPath is used to
1270match and extract data, and elements can be added, deleted or modified using
1271XSLT and EXSLT.")
1272 (license license:x11)))
19c33040 1273
767d24e8
SR
1274(define-public html-xml-utils
1275 (package
1276 (name "html-xml-utils")
57f5a774 1277 (version "7.9")
767d24e8
SR
1278 (source
1279 (origin
1280 (method url-fetch)
1281 (uri (string-append
1282 "https://www.w3.org/Tools/HTML-XML-utils/html-xml-utils-"
1283 version ".tar.gz"))
1284 (sha256
57f5a774 1285 (base32 "0gs3xvdbzhk5k12i95p5d4fgkkaldnlv45sch7pnncb0lrpcjsnq"))))
767d24e8
SR
1286 (build-system gnu-build-system)
1287 (home-page "https://www.w3.org/Tools/HTML-XML-utils/")
1288 (synopsis "Command line utilities to manipulate HTML and XML files")
1289 (description "HTML-XML-utils provides a number of simple utilities for
1290manipulating and converting HTML and XML files in various ways. The suite
1291consists of the following tools:
1292
1293@itemize
1294 @item @command{asc2xml} convert from @code{UTF-8} to @code{&#nnn;} entities
1295 @item @command{xml2asc} convert from @code{&#nnn;} entities to @code{UTF-8}
1296 @item @command{hxaddid} add IDs to selected elements
1297 @item @command{hxcite} replace bibliographic references by hyperlinks
1298 @item @command{hxcite} mkbib - expand references and create bibliography
1299 @item @command{hxclean} apply heuristics to correct an HTML file
1300 @item @command{hxcopy} copy an HTML file while preserving relative links
1301 @item @command{hxcount} count elements and attributes in HTML or XML files
1302 @item @command{hxextract} extract selected elements
1303 @item @command{hxincl} expand included HTML or XML files
1304 @item @command{hxindex} create an alphabetically sorted index
1305 @item @command{hxmkbib} create bibliography from a template
1306 @item @command{hxmultitoc} create a table of contents for a set of HTML files
1307 @item @command{hxname2id} move some @code{ID=} or @code{NAME=} from A
1308elements to their parents
1309 @item @command{hxnormalize} pretty-print an HTML file
1310 @item @command{hxnsxml} convert output of hxxmlns back to normal XML
1311 @item @command{hxnum} number section headings in an HTML file
1312 @item @command{hxpipe} convert XML to a format easier to parse with Perl or AWK
1313 @item @command{hxprintlinks} number links and add table of URLs at end of an HTML file
1314 @item @command{hxprune} remove marked elements from an HTML file
1315 @item @command{hxref} generate cross-references
1316 @item @command{hxselect} extract elements that match a (CSS) selector
1317 @item @command{hxtoc} insert a table of contents in an HTML file
1318 @item @command{hxuncdata} replace CDATA sections by character entities
1319 @item @command{hxunent} replace HTML predefined character entities to @code{UTF-8}
1320 @item @command{hxunpipe} convert output of pipe back to XML format
1321 @item @command{hxunxmlns} replace \"global names\" by XML Namespace prefixes
1322 @item @command{hxwls} list links in an HTML file
1323 @item @command{hxxmlns} replace XML Namespace prefixes by \"global names\"
1324@end itemize
1325")
1326 (license license:expat)))
1327
19c33040
JN
1328(define-public xlsx2csv
1329 (package
1330 (name "xlsx2csv")
3255fc3b 1331 (version "0.7.4")
3047c7ba
TGR
1332 (source
1333 (origin
1334 (method git-fetch)
1335 (uri (git-reference
b0e7b699 1336 (url "https://github.com/dilshod/xlsx2csv")
3047c7ba
TGR
1337 (commit version)))
1338 (file-name (git-file-name name version))
1339 (sha256
1340 (base32 "168dm6p7w6pvgd87yb9hcxv9y0liv6mxgril202nfva68cp8y939"))))
19c33040
JN
1341 (build-system python-build-system)
1342 (arguments
3255fc3b 1343 `(#:python ,python-2 ; use python-2 for the test script
19c33040
JN
1344 #:phases
1345 (modify-phases %standard-phases
1346 (replace 'check
1347 (lambda _
1348 (substitute* "test/run"
3255fc3b 1349 ;; Run tests with `python' only.
19c33040 1350 (("^(PYTHON_VERSIONS = ).*" all m) (string-append m "['']")))
aa6f87a2 1351 (invoke "test/run"))))))
19c33040
JN
1352 (home-page "https://github.com/dilshod/xlsx2csv")
1353 (synopsis "XLSX to CSV converter")
1354 (description
1355 "Xlsx2csv is a program to convert Microsoft Excel 2007 XML (XLSX and
1356XLSM) format spreadsheets into plaintext @dfn{comma separated values} (CSV)
1357files. It is designed to be fast and to handle large input files.")
1358 (license license:gpl2+)))
d2b51c08 1359
1360(define-public python-defusedxml
1361 (package
1362 (name "python-defusedxml")
4ee948e3 1363 (version "0.6.0")
d2b51c08 1364 (source
1365 (origin
1366 (method url-fetch)
1367 (uri (pypi-uri "defusedxml" version))
1368 (sha256
1369 (base32
4ee948e3 1370 "1xbp8fivl3wlbyg2jrvs4lalaqv1xp9a9f29p75wdx2s2d6h717n"))))
d2b51c08 1371 (build-system python-build-system)
1372 (home-page "https://bitbucket.org/tiran/defusedxml")
1373 (synopsis "XML bomb protection for Python stdlib modules")
1374 (description
1375 "Defusedxml provides XML bomb protection for Python stdlib modules.")
1376 (license license:psfl)))
1377
1378(define-public python2-defusedxml
1379 (package-with-python2 python-defusedxml))
ca8f3f9a 1380
623fb4d1
AP
1381(define-public freexl
1382 (package
1383 (name "freexl")
6dce1251 1384 (version "1.0.6")
623fb4d1
AP
1385 (source (origin
1386 (method url-fetch)
4edc6bbd
TGR
1387 (uri (string-append "https://www.gaia-gis.it/gaia-sins/"
1388 "freexl-" version ".tar.gz"))
623fb4d1
AP
1389 (sha256
1390 (base32
6dce1251 1391 "08pwj17l0lgp6zms9nmpawdxpvhzrslklbd53s4b430k7mxbbs1x"))))
623fb4d1
AP
1392 (build-system gnu-build-system)
1393 (home-page "https://www.gaia-gis.it/fossil/freexl/index")
1394 (synopsis "Read Excel files")
1395 (description
1396 "FreeXL is a C library to extract valid data from within an Excel (.xls)
1397spreadsheet.")
1398 ;; Any of these licenses may be picked.
1399 (license (list license:gpl2+
1400 license:lgpl2.1+
1401 license:mpl1.1))))
d00d6cea
RW
1402
1403(define-public xerces-c
1404 (package
1405 (name "xerces-c")
3e7a4867 1406 (version "3.2.3")
d00d6cea
RW
1407 (source (origin
1408 (method url-fetch)
1409 (uri (string-append "mirror://apache/xerces/c/3/sources/"
1410 "xerces-c-" version ".tar.xz"))
1411 (sha256
1412 (base32
3e7a4867 1413 "0jf1khvlssg31vkxbc25dxjxcxm56xb8nywj1sypj6hxzjlrkz0j"))))
d00d6cea
RW
1414 (build-system gnu-build-system)
1415 (arguments
1416 (let ((system (or (%current-target-system)
1417 (%current-system))))
1418 (if (string-prefix? "x86_64" system)
1419 '()
1420 '(#:configure-flags '("--disable-sse2")))))
1421 (native-inputs
1422 `(("perl" ,perl)))
c61bfa08 1423 (home-page "https://xerces.apache.org/xerces-c/")
d00d6cea
RW
1424 (synopsis "Validating XML parser library for C++")
1425 (description "Xerces-C++ is a validating XML parser written in a portable
1426subset of C++. Xerces-C++ makes it easy to give your application the ability
1427to read and write XML data. A shared library is provided for parsing,
1428generating, manipulating, and validating XML documents using the DOM, SAX, and
1429SAX2 APIs.")
1430 (license license:asl2.0)))
77d7b57c 1431
53657739
EK
1432(define-public xlsxio
1433 (package
1434 (name "xlsxio")
1435 (version "0.2.26")
1436 (source
1437 (origin
1438 (method git-fetch)
1439 (uri (git-reference
1440 (url "https://github.com/brechtsanders/xlsxio")
1441 (commit version)))
1442 (file-name (git-file-name name version))
1443 (sha256
1444 (base32 "0j8jral3yc2aib2ykp527lyb62a1d9p7qmfbszy7iy3s65pkma9b"))))
1445 (native-inputs
1446 `(("expat" ,expat)
1447 ("make" ,gnu-make)
1448 ("minizip" ,minizip)
1449 ("which" ,which)))
1450 (build-system gnu-build-system)
1451 (arguments
1452 `(#:phases
1453 (modify-phases %standard-phases
1454 (delete 'configure)
1455 (delete 'check)
1456 (replace 'install
1457 (lambda* (#:key outputs #:allow-other-keys)
1458 (invoke "make" "install"
1459 (string-append
1460 "PREFIX=" (assoc-ref outputs "out"))))))))
1461 (synopsis "C library for reading and writing .xlsx files")
1462 (description "XLSX I/O aims to provide a C library for reading and writing
1463.xlsx files. The .xlsx file format is the native format used by Microsoft(R)
1464Excel(TM) since version 2007.")
1465 (home-page "https://github.com/brechtsanders/xlsxio")
1466 (license license:expat)))
1467
77d7b57c
RW
1468(define-public java-simple-xml
1469 (package
1470 (name "java-simple-xml")
1471 (version "2.7.1")
1472 (source (origin
1473 (method url-fetch)
1474 (uri (string-append "mirror://sourceforge/simple/simple-xml-"
1475 version ".zip"))
1476 (sha256
1477 (base32
3c274149
GB
1478 "0w19k1awslmihpwsxwjbg89hv0vjhk4k3i0vrfchy3mqknd988y5"))
1479 (patches (search-patches "java-simple-xml-fix-tests.patch"))))
77d7b57c
RW
1480 (build-system ant-build-system)
1481 (arguments
1482 `(#:build-target "build"
1483 #:test-target "test"
1484 #:phases
1485 (modify-phases %standard-phases
1486 (replace 'install (install-jars "jar")))))
1487 (native-inputs
1488 `(("unzip" ,unzip)))
1489 (home-page "http://simple.sourceforge.net/")
1490 (synopsis "XML serialization framework for Java")
1491 (description "Simple is a high performance XML serialization and
1492configuration framework for Java. Its goal is to provide an XML framework
1493that enables rapid development of XML configuration and communication systems.
1494This framework aids the development of XML systems with minimal effort and
1495reduced errors. It offers full object serialization and deserialization,
1496maintaining each reference encountered.")
1497 (license license:asl2.0)))
3b695802
P
1498
1499(define-public perl-xml-xpathengine
1500 (package
1501 (name "perl-xml-xpathengine")
1502 (version "0.14")
1503 (source (origin
1504 (method url-fetch)
1505 (uri (string-append "mirror://cpan/authors/id/M/MI/MIROD/"
1506 "XML-XPathEngine-" version ".tar.gz"))
1507 (sha256
1508 (base32
1509 "0r72na14bmsxfd16s9nlza155amqww0k8wsa9x2a3sqbpp5ppznj"))))
1510 (build-system perl-build-system)
9aba9b12 1511 (home-page "https://metacpan.org/release/XML-XPathEngine")
3b695802
P
1512 (synopsis "Re-usable XPath engine for DOM-like trees")
1513 (description
1514 "This module provides an XPath engine, that can be re-used by other
1515modules/classes that implement trees.
1516
2847df6b 1517In order to use the XPath engine, nodes in the user module need to mimic DOM
3b695802
P
1518nodes. The degree of similitude between the user tree and a DOM dictates how
1519much of the XPath features can be used. A module implementing all of the DOM
1520should be able to use this module very easily (you might need to add the
1521@code{cmp} method on nodes in order to get ordered result sets).")
1522 (license license:perl-license)))
9e1c3581
P
1523
1524(define-public perl-tree-xpathengine
1525 (package
1526 (name "perl-tree-xpathengine")
1527 (version "0.05")
1528 (source (origin
1529 (method url-fetch)
1530 (uri (string-append "mirror://cpan/authors/id/M/MI/MIROD/"
1531 "Tree-XPathEngine-" version ".tar.gz"))
1532 (sha256
1533 (base32
1534 "1vbbw8wxm79r3xbra8narw1dqvm34510q67wbmg2zmj6zd1k06r9"))))
1535 (build-system perl-build-system)
9aba9b12 1536 (home-page "https://metacpan.org/release/Tree-XPathEngine")
9e1c3581
P
1537 (synopsis "Re-usable XPath engine")
1538 (description
1539 "This module provides an XPath engine, that can be re-used by other
1540module/classes that implement trees. It is designed to be compatible with
1541@code{Class::XPath}, ie it passes its tests if you replace @code{Class::XPath}
1542by @code{Tree::XPathEngine}.")
1543 (license license:perl-license)))
b7c59195
P
1544
1545(define-public perl-xml-filter-buffertext
1546 (package
1547 (name "perl-xml-filter-buffertext")
1548 (version "1.01")
1549 (source
1550 (origin
1551 (method url-fetch)
1552 (uri (string-append "mirror://cpan/authors/id/R/RB/RBERJON/"
1553 "XML-Filter-BufferText-" version ".tar.gz"))
1554 (sha256
1555 (base32
1556 "0p5785c1dsk6kdp505vapb5h54k8krrz8699hpgm9igf7dni5llg"))))
1557 (build-system perl-build-system)
1558 (propagated-inputs
1559 `(("perl-xml-sax-base" ,perl-xml-sax-base)))
9aba9b12 1560 (home-page "https://metacpan.org/release/XML-Filter-BufferText")
b7c59195
P
1561 (synopsis "Filter to put all characters() in one event")
1562 (description "This is a very simple filter. One common cause of
1563grief (and programmer error) is that XML parsers aren't required to provide
1564character events in one chunk. They can, but are not forced to, and most
1565don't. This filter does the trivial but oft-repeated task of putting all
1566characters into a single event.")
1567 (license license:perl-license)))
33b592ee
P
1568
1569(define-public perl-xml-sax-writer
1570 (package
1571 (name "perl-xml-sax-writer")
1572 (version "0.57")
1573 (source (origin
1574 (method url-fetch)
1575 (uri (string-append
1576 "mirror://cpan/authors/id/P/PE/PERIGRIN/"
1577 "XML-SAX-Writer-" version ".tar.gz"))
1578 (sha256
1579 (base32
1580 "1w1cd1ybxdvhmnxdlkywi3x5ka3g4md42kyynksjc09vyizd0q9x"))))
1581 (build-system perl-build-system)
1582 (propagated-inputs
1583 `(("perl-libxml" ,perl-libxml)
1584 ("perl-xml-filter-buffertext" ,perl-xml-filter-buffertext)
c695fb76 1585 ("perl-xml-namespacesupport" ,perl-xml-namespacesupport)
33b592ee 1586 ("perl-xml-sax-base" ,perl-xml-sax-base)))
9aba9b12 1587 (home-page "https://metacpan.org/release/XML-SAX-Writer")
33b592ee
P
1588 (synopsis "SAX2 XML Writer")
1589 (description
1590 "This is an XML writer that understands SAX2. It is based on
1591@code{XML::Handler::YAWriter}.")
1592 (license license:perl-license)))
9e88b210
P
1593
1594(define-public perl-xml-handler-yawriter
1595 (package
1596 (name "perl-xml-handler-yawriter")
1597 (version "0.23")
1598 (source
1599 (origin
1600 (method url-fetch)
1601 (uri (string-append "mirror://cpan/authors/id/K/KR/KRAEHE/"
1602 "XML-Handler-YAWriter-" version ".tar.gz"))
1603 (sha256
1604 (base32
1605 "11d45a1sz862va9rry3p2m77pwvq3kpsvgwhc5ramh9mbszbnk77"))))
1606 (build-system perl-build-system)
1607 (propagated-inputs
1608 `(("perl-libxml" ,perl-libxml)))
9aba9b12 1609 (home-page "https://metacpan.org/release/XML-Handler-YAWriter")
9e88b210
P
1610 (synopsis "Yet another Perl SAX XML Writer")
1611 (description "YAWriter implements Yet Another @code{XML::Handler::Writer}.
1612It provides a flexible escaping technique and pretty printing.")
1613 (license license:perl-license)))
85f225fb
P
1614
1615(define-public perl-xml-twig
1616 (package
1617 (name "perl-xml-twig")
1618 (version "3.52")
1619 (source (origin
1620 (method url-fetch)
1621 (uri (string-append "mirror://cpan/authors/id/M/MI/MIROD/"
1622 "XML-Twig-" version ".tar.gz"))
1623 (sha256
1624 (base32
1625 "1bc0hrz4jp6199hi29sdxmb9gyy45whla9hd19yqfasgq8k5ixzy"))))
1626 (build-system perl-build-system)
1627 (inputs
1628 `(("expat" ,expat)))
1629 (propagated-inputs
1630 `(("perl-html-tidy" ,perl-html-tidy)
1631 ("perl-html-tree" ,perl-html-tree)
1632 ("perl-io-captureoutput" ,perl-io-captureoutput)
1633 ("perl-io-string" ,perl-io-string)
1634 ("perl-io-stringy" ,perl-io-stringy)
1635 ("perl-libxml" ,perl-libxml)
1636 ("perl-xml-filter-buffertext" ,perl-xml-filter-buffertext)
1637 ("perl-xml-handler-yawriter" ,perl-xml-handler-yawriter)
1638 ("perl-xml-parser" ,perl-xml-parser)
1639 ("perl-xml-sax-writer" ,perl-xml-sax-writer)
1640 ("perl-xml-simple" ,perl-xml-simple)
1641 ("perl-xml-xpathengine" ,perl-xml-xpathengine)
c695fb76 1642 ("perl-test-pod" ,perl-test-pod)
85f225fb 1643 ("perl-tree-xpathengine" ,perl-tree-xpathengine)))
9aba9b12 1644 (home-page "https://metacpan.org/release/XML-Twig")
85f225fb
P
1645 (synopsis "Perl module for processing huge XML documents in tree mode")
1646 (description "@code{XML::Twig} is an XML transformation module. Its
1647strong points: can be used to process huge documents while still being in tree
1648mode; not bound by DOM or SAX, so it is very perlish and offers a very
1649comprehensive set of methods; simple to use; DWIMs as much as possible.
1650
1651What it doesn't offer: full SAX support (it can export SAX, but only reads
1652XML), full XPath support (unless you use @code{XML::Twig::XPath}), nor DOM
1653support.")
1654 (license license:perl-license)))
1a17ca26
JL
1655
1656;; TODO: Debian builds several jars out of this: jaxp-1.4.jar,
1657;; xml-apis.jar and xml-apis-1.4.01.jar.
1658(define-public java-jaxp
1659 (package
1660 (name "java-jaxp")
1661 (version "1.4.01")
1662 (source
1663 (origin
1664 (method url-fetch)
1665 (uri (string-append "mirror://apache/xerces/xml-commons/source/"
1666 "xml-commons-external-" version "-src.tar.gz"))
1667 (sha256
1668 (base32 "0rhq32a7dl9yik7zx9h0naz2iz068qgcdiayak91wp4wr26xhjyk"))))
1669 (build-system ant-build-system)
1670 (arguments
1671 `(#:jar-name "jaxp.jar"
1672 #:jdk ,icedtea-8
1673 #:source-dir ".."
1674 #:tests? #f)); no tests
1675 (home-page "http://xerces.apache.org/xml-commons/")
1676 (synopsis "Java XML parser and transformer APIs (DOM, SAX, JAXP, TrAX)")
1677 (description "Jaxp from the Apache XML Commons project is used by
1678the Xerces-J XML parser and Xalan-J XSLT processor and specifies these APIs:
1679
1680@itemize
1681@item Document Object Model (DOM)
1682@item Simple API for XML (SAX)
1683@item Java APIs for XML Processing (JAXP)
1684@item Transformation API for XML (TrAX)
1685@item Document Object Model (DOM) Load and Save
1686@item JSR 206 Java API for XML Processing
1687@end itemize")
1688 (license (list license:asl2.0
1689 license:w3c ;; Files under org.w3c
1690 license:public-domain)))) ;; org.xml.sax
9a86ee78
JL
1691
1692(define-public java-apache-xml-commons-resolver
1693 (package
1694 (name "java-apache-xml-commons-resolver")
1695 (version "1.2")
1696 (source
1697 (origin
1698 (method url-fetch)
1699 (uri (string-append "mirror://apache/xerces/xml-commons/"
1700 "xml-commons-resolver-" version ".tar.gz"))
1701 (sha256
1702 (base32 "1zhy4anc3fg9f8y348bj88vmab15aavrg6nf419ifb25asyygnsm"))
1703 (modules '((guix build utils)))
1704 (snippet
1705 '(begin
1706 (for-each delete-file (find-files "." ".*\\.(jar|zip)"))
1707 #t))))
1708 (build-system ant-build-system)
1709 (arguments
1710 `(#:jar-name (string-append "xml-resolver.jar")
1711 #:tests? #f)); no tests
1712 (inputs
1713 `(("java-junit" ,java-junit)))
1714 (home-page "http://xerces.apache.org/xml-commons/")
1715 (synopsis "Catalog-based entity and URI resolution")
1716 (description "The resolver class implements the full semantics of OASIS Technical
1717Resolution 9401:1997 (Amendment 2 to TR 9401) catalogs and the 06 Aug
17182001 Committee Specification of OASIS XML Catalogs.
1719
1720It also includes a framework of classes designed to read catalog files
1721in a number of formats:
1722
1723@itemize
1724@item The plain-text flavor described by TR9401.
1725@item The XCatalog XML format defined by John Cowan
1726@item The XML Catalog format defined by the OASIS Entity Resolution
1727 Technical Committee.
1728@end itemize")
1729 (license license:asl2.0)))
7eae94d8
JL
1730
1731;; Jaxen requires java-dom4j and java-xom that in turn require jaxen.
1732;; This package is a bootstrap version without dependencies on dom4j and xom.
1733(define java-jaxen-bootstrap
1734 (package
1735 (name "java-jaxen-bootstrap")
1736 (version "1.1.6")
1737 (source (origin
1738 (method url-fetch)
1739 ;; No release on github
1740 (uri (string-append "https://repo1.maven.org/maven2/jaxen/jaxen/"
1741 version "/jaxen-" version "-sources.jar"))
1742 (sha256
1743 (base32
1744 "18pa8mks3gfhazmkyil8wsp6j1g1x7rggqxfv4k2mnixkrj5x1kx"))))
1745 (build-system ant-build-system)
1746 (arguments
1747 `(#:jar-name "jaxen.jar"
1748 #:source-dir "src"
1749 #:tests? #f; no tests
1750 #:phases
1751 (modify-phases %standard-phases
1752 (add-before 'build 'remove-dom4j
1753 (lambda _
1754 (delete-file-recursively "src/org/jaxen/dom4j")
1755 (delete-file-recursively "src/org/jaxen/xom")
1756 #t)))))
1757 (inputs
1758 `(("java-jdom" ,java-jdom)))
1759 (home-page "https://github.com/jaxen-xpath/jaxen")
1760 (synopsis "XPath library")
1761 (description "Jaxen is an XPath library written in Java. It is adaptable
1762to many different object models, including DOM, XOM, dom4j, and JDOM. It is
1763also possible to write adapters that treat non-XML trees such as compiled
1764Java byte code or Java beans as XML, thus enabling you to query these trees
1765with XPath too.")
1766 (license license:bsd-3)))
5552080d 1767
be0524f4
JL
1768(define-public java-jaxen
1769 (package
1770 (inherit java-jaxen-bootstrap)
1771 (name "java-jaxen")
1772 (inputs
1773 `(("java-jdom" ,java-jdom)
1774 ("java-xom" ,java-xom)
1775 ("java-dom4j" ,java-dom4j)))))
1776
5552080d
JL
1777(define-public java-xom
1778 (package
1779 (name "java-xom")
1780 (version "127")
1781 (source (origin
eed5e162
TGR
1782 (method git-fetch)
1783 (uri (git-reference
b0e7b699 1784 (url "https://github.com/elharo/xom")
eed5e162
TGR
1785 (commit (string-append "XOM_" version))))
1786 (file-name (git-file-name name version))
5552080d
JL
1787 (sha256
1788 (base32
eed5e162 1789 "1jh6y03g5zzdhsb5jm6ms1xnamr460qmn96y3w6aw0ikfwqlg0bq"))
5552080d
JL
1790 (modules '((guix build utils)))
1791 (snippet
1792 '(begin
1793 (for-each delete-file
1794 (find-files "." "\\.jar$"))
1795 #t))))
1796 (build-system ant-build-system)
1797 (arguments
1798 `(#:jar-name "xom.jar"
1799 #:jdk ,icedtea-8
eed5e162 1800 #:tests? #f ; no tests
5552080d
JL
1801 #:phases
1802 (modify-phases %standard-phases
eed5e162
TGR
1803 (add-after 'unpack 'make-git-checkout-writable
1804 (lambda _
1805 (for-each make-file-writable (find-files "."))
1806 #t))
5552080d
JL
1807 (add-before 'configure 'fix-tagsoup-dep
1808 (lambda _
1809 ;; FIXME: Where is tagsoup source?
1810 (delete-file "src/nu/xom/tools/XHTMLJavaDoc.java")
1811 #t)))))
1812 (inputs
1813 `(("java-jdom" ,java-jdom)
1814 ("java-junit" ,java-junit)
1815 ("java-classpathx-servletapi" ,java-classpathx-servletapi)
1816 ("java-jaxen-bootstrap" ,java-jaxen-bootstrap)
1817 ("java-xerces" ,java-xerces)))
1818 (home-page "https://xom.nu/")
1819 (synopsis "XML Object Model")
1820 (description "XOM is a new XML Object Model for processing XML with Java
1821that strives for correctness and simplicity.")
1822 ;; 2.1 only
1823 (license license:lgpl2.1)))
96f31935
JL
1824
1825(define-public java-xsdlib
1826 (package
1827 (name "java-xsdlib")
1828 (version "2013.2")
1829 (source (origin
1830 (method url-fetch)
c3d56df5 1831 (uri (string-append "https://repo1.maven.org/maven2/com/sun/msv/"
96f31935
JL
1832 "datatype/xsd/xsdlib/" version "/xsdlib-"
1833 version "-sources.jar"))
1834 (sha256
1835 (base32
1836 "185i48p1xp09wbq03i9zgfl701qa262rq46yf4cajzmk3336kqim"))))
1837 (build-system ant-build-system)
1838 (arguments
1839 `(#:tests? #f; no tests
1840 #:jar-name "xsdlib.jar"
1841 #:jdk ,icedtea-8))
1842 (inputs
1843 `(("java-xerces" ,java-xerces)))
c3d56df5
BH
1844 (home-page (string-append "https://web.archive.org/web/20161127144537/"
1845 "https://msv.java.net//"))
96f31935
JL
1846 (synopsis "Sun Multi-Schema Validator")
1847 (description "Xsdlib contains an implementation of sun.com.msv, an XML
1848validator.")
1849 (license license:bsd-2)))
82d7d4e1
JL
1850
1851(define-public java-xpp3
1852 (package
1853 (name "java-xpp3")
1854 (version "1.1.4")
1855 (source (origin
1856 (method url-fetch)
1857 (uri (string-append "http://www.extreme.indiana.edu/dist/"
1858 "java-repository/xpp3/distributions/xpp3-"
1859 version "_src.tgz"))
1860 (sha256
1861 (base32
1862 "1b99zrhyij5qwyhilyjdl1ykxvhk902vsvflh6gx4fir8hfvdl5p"))
1863 (modules '((guix build utils)))
1864 (snippet
1865 '(begin ;; Delete bundled jar archives.
1866 (for-each delete-file (find-files "." ".*\\.jar"))
1867 #t))))
1868 (build-system ant-build-system)
1869 (arguments
1870 `(#:tests? #f; no tests
1871 #:build-target "jar"
1872 #:phases
1873 (modify-phases %standard-phases
1874 (replace 'install (install-jars "build")))))
1875 (home-page "http://www.extreme.indiana.edu/xgws/xsoap/xpp/")
1876 (synopsis "Streaming pull XML parser")
1877 (description "Xml Pull Parser (in short XPP) is a streaming pull XML
1878parser and should be used when there is a need to process quickly and
1879efficiently all input elements (for example in SOAP processors). This
1880package is a stable XmlPull parsing engine that is based on ideas from XPP
1881and in particular XPP2 but completely revised and rewritten to take the best
1882advantage of JIT JVMs.")
1883 (license (license:non-copyleft "file://LICENSE.txt"))))
9421f682
JL
1884
1885(define-public java-xmlpull2
1886 (package
1887 (name "java-xmlpull2")
1888 (version "2.1.10")
1889 (source (origin
1890 (method url-fetch)
1891 (uri (string-append "http://www.extreme.indiana.edu/xgws/xsoap/"
1892 "PullParser/PullParser" version ".tgz"))
1893 (sha256
1894 (base32
1895 "1kw9nhyqb7bzhn2zjbwlpi5vp5rzj89amzi3hadw2acyh2dmd0md"))
1896 (modules '((guix build utils)))
1897 (snippet
1898 '(begin ;; Delete bundled jar archives.
1899 (for-each delete-file (find-files "." ".*\\.jar"))
1900 #t))))
1901 (build-system ant-build-system)
1902 (arguments
1903 `(#:tests? #f; no tests
1904 #:build-target "impl"
1905 #:phases
1906 (modify-phases %standard-phases
1907 (replace 'install (install-jars "build/lib")))))
1908 (home-page "http://www.extreme.indiana.edu/xgws/xsoap/xpp/")
1909 (synopsis "Streaming pull XML parser")
1910 (description "Xml Pull Parser (in short XPP) is a streaming pull XML
1911parser and should be used when there is a need to process quickly and
1912efficiently all input elements (for example in SOAP processors). This
1913package is in maintenance mode.")
1914 (license (license:non-copyleft "file:///LICENSE.txt"))))
605c23df
JL
1915
1916(define-public java-dom4j
1917 (package
1918 (name "java-dom4j")
f1afdaf4 1919 (version "2.1.1")
605c23df 1920 (source (origin
9d670526
TGR
1921 (method git-fetch)
1922 (uri (git-reference
b0e7b699 1923 (url "https://github.com/dom4j/dom4j")
9d670526
TGR
1924 (commit (string-append "version-" version))))
1925 (file-name (git-file-name name version))
605c23df
JL
1926 (sha256
1927 (base32
f1afdaf4 1928 "0q907srj9v4hwicpcrn4slyld5npf2jv7hzchsgrg29q2xmbwkdl"))
605c23df
JL
1929 (modules '((guix build utils)))
1930 (snippet
1931 '(begin ;; Delete bundled jar archives.
1932 (for-each delete-file (find-files "." ".*\\.jar"))
1933 #t))))
1934 (build-system ant-build-system)
1935 (arguments
1936 `(#:jar-name "dom4j.jar"
1937 #:jdk ,icedtea-8
1938 #:source-dir "src/main/java"
1939 ;; FIXME: Requires xalan, but xalan depends on java-cup which has a
1940 ;; dependency on itself through jflex.
1941 #:tests? #f
1942 #:phases
1943 (modify-phases %standard-phases
1944 (add-before 'build 'copy-jaxen-sources
1945 ;; java-jaxen-bootstrap is not enough. These files have a circular
1946 ;; dependency and there is no subset of dom4j that would allow
1947 ;; breaking the circle.
1948 (lambda* (#:key inputs #:allow-other-keys)
1949 (mkdir-p "jaxen-sources")
1950 (with-directory-excursion "jaxen-sources"
1951 (system* "jar" "xf" (assoc-ref inputs "java-jaxen-sources")))
1952 (mkdir-p "src/main/java/org/jaxen/dom4j")
1953 (copy-file "jaxen-sources/org/jaxen/dom4j/DocumentNavigator.java"
1954 "src/main/java/org/jaxen/dom4j/DocumentNavigator.java")
1955 (copy-file "jaxen-sources/org/jaxen/dom4j/Dom4jXPath.java"
1956 "src/main/java/org/jaxen/dom4j/Dom4jXPath.java")
1957 #t))
1958 (add-before 'build 'fix-old-xpp2
1959 (lambda _
1960 ;; This package normally depends on xpp2 2.0, but version 2.1.10
1961 ;; is the only version whose source code is published.
1962 (substitute* "src/main/java/org/dom4j/xpp/ProxyXmlStartTag.java"
1963 (("public void resetStartTag")
1964 "public boolean removeAttributeByRawName(String name) {\n
1965 return false;\n
1966}\n
1967public boolean removeAttributeByName(String name, String name2) {\n
1968 return false;\n
1969}\n\npublic void resetStartTag")
1970 (("Atttribute") "Attribute"))
1971 #t)))))
1972 (inputs
1973 `(("java-jaxen-bootstrap" ,java-jaxen-bootstrap)
1974 ("java-jaxen-sources" ,(package-source java-jaxen-bootstrap))
1975 ("java-xmlpull2" ,java-xmlpull2)
1976 ("java-xpp3" ,java-xpp3)
1977 ("java-xsdlib" ,java-xsdlib)))
1978 (native-inputs
1979 `(("java-testng" ,java-testng)
1980 ("java-xerces" ,java-xerces)))
1981 (home-page "https://dom4j.github.io/")
1982 (synopsis "Flexible XML framework for Java")
1983 (description "Dom4j is a flexible XML framework for Java. DOM4J works
1984with DOM, SAX, XPath, and XSLT. It can parse large XML documents with very
1985low memory footprint.")
1986 ;; some BSD-like 5-clause license
1987 (license (license:non-copyleft "file://LICENSE"))))
3058d8ec
JL
1988
1989(define-public java-kxml2
1990 (package
1991 (name "java-kxml2")
1992 (version "2.4.2")
1993 (source (origin
00fc9389
TGR
1994 (method git-fetch)
1995 (uri (git-reference
b0e7b699 1996 (url "https://github.com/stefanhaustein/kxml2")
00fc9389
TGR
1997 (commit (string-append "v" version))))
1998 (file-name (git-file-name name version))
3058d8ec
JL
1999 (sha256
2000 (base32
00fc9389 2001 "0g6d8c9r9sh3x04sf4wdpgwvhkqvk11k3kq9skx91i60h4vn01hg"))))
3058d8ec
JL
2002 (build-system ant-build-system)
2003 (arguments
2004 `(#:jar-name "kxml2.jar"
2005 #:source-dir "src/main/java"
2006 #:test-include (list "TestWb.java")
2007 ;; Test failure: it was expected to get an XML entity but got the
2008 ;; equivalent Unicode character instead.
2009 #:tests? #f
2010 #:phases
2011 (modify-phases %standard-phases
00fc9389
TGR
2012 (add-after 'unpack 'make-git-checkout-writable
2013 (lambda _
2014 (for-each make-file-writable (find-files "."))
2015 #t))
3058d8ec
JL
2016 (add-before 'build 'copy-resources
2017 (lambda _
aa6f87a2
MW
2018 (copy-recursively "src/main/resources" "build/classes")
2019 #t)))))
3058d8ec
JL
2020 (inputs
2021 `(("java-xpp3" ,java-xpp3)))
2022 (native-inputs
2023 `(("java-junit" ,java-junit)))
2024 (home-page "http://kxml.org")
2025 (synopsis "XML pull parser")
2026 (description "kXML is a small XML pull parser, specially designed for
2027constrained environments such as Applets, Personal Java or devices compliant
2028with the Mobile Information Device Profile (MIDP).")
2029 (license license:expat)))
4c7759f0
JL
2030
2031(define-public java-stax
2032 (package
2033 (name "java-stax")
2034 (version "1.2.0")
2035 (source (origin
2036 (method url-fetch)
2037 (uri (string-append "https://repo1.maven.org/maven2/stax/stax/"
2038 version "/stax-" version "-sources.jar"))
2039 (sha256
2040 (base32
2041 "04ba4qvbrps45j8bldbakxq31k7gjlsay9pppa9yn13fr00q586z"))))
2042 (build-system ant-build-system)
2043 (arguments
2044 `(#:jar-name "stax.jar"
2045 #:tests? #f; no tests
2046 #:phases
2047 (modify-phases %standard-phases
2048 (add-before 'configure 'fix-utf8
2049 (lambda _
2050 ;; This file is ISO-8859-1 but java expects UTF-8.
2051 ;; Remove special characters in comments.
2052 (with-fluids ((%default-port-encoding "ISO-8859-1"))
2053 (substitute* "src/com/wutka/dtd/Scanner.java"
2054 (("//.*") "\n")))
2055 #t)))))
2056 (home-page "https://repo1.maven.org/maven2/stax/stax/")
2057 (synopsis "Streaming API for XML")
2058 (description "This package provides the reference implementation of the
2059@dfn{Streaming API for XML} (StAX). It is used for streaming XML data to
2060and from a Java application. It provides a standard pull parser interface.")
2061 (license license:asl2.0)))
b8798817
JL
2062
2063(define-public java-jettison
2064 (package
2065 (name "java-jettison")
2066 (version "1.3.7")
2067 (source (origin
a4b96726
TGR
2068 (method git-fetch)
2069 (uri (git-reference
b0e7b699 2070 (url "https://github.com/codehaus/jettison")
a4b96726
TGR
2071 (commit (string-append "jettison-" version))))
2072 (file-name (git-file-name name version))
b8798817
JL
2073 (sha256
2074 (base32
a4b96726 2075 "15sydmi5chdh4126qc7v8bsrp7fp4ldaya8a05iby4pq2324q0qw"))))
b8798817
JL
2076 (build-system ant-build-system)
2077 (arguments
2078 `(#:jar-name "jettison.jar"
2079 #:source-dir "src/main/java"
2080 #:test-exclude (list "**/Abstract*.java"
2081 ;; Abstract classes
2082 "**/DOMTest.java"
2083 "**/BadgerFishDOMTest.java"
2084 "**/MappedDOMTest.java")))
2085 (native-inputs
2086 `(("java-junit" ,java-junit)))
2087 (home-page "https://github.com/codehaus/jettison")
2088 (synopsis "StAX implementation for JSON")
2089 (description "Jettison is a Java library for converting XML to JSON and
2090vice-versa with the help of the @dfn{Streaming API for XML} (StAX). It
2091implements @code{XMLStreamWriter} and @code{XMLStreamReader} and supports
2092@code{Mapped} and @code{BadgerFish} conventions.")
2093 (license license:asl2.0)))
a5ec8a5c
JL
2094
2095(define-public java-jdom2
2096 (package
2097 (name "java-jdom")
2098 (version "2.0.6")
2099 (source (origin
951bdf5a
TGR
2100 (method git-fetch)
2101 (uri (git-reference
b0e7b699 2102 (url "https://github.com/hunterhacker/jdom")
951bdf5a
TGR
2103 (commit (string-append "JDOM-" version))))
2104 (file-name (git-file-name name version))
a5ec8a5c
JL
2105 (sha256
2106 (base32
951bdf5a 2107 "14vv1kxrsdvwi4cz3rx6r48w5y6fvk9cymil8qhvxwp56xxrgxiq"))))
a5ec8a5c
JL
2108 (build-system ant-build-system)
2109 (arguments
2110 `(#:build-target "package"
951bdf5a 2111 #:tests? #f ; tests are run as part of the build process
a5ec8a5c
JL
2112 #:phases
2113 (modify-phases %standard-phases
2114 (replace 'install
2115 (install-jars "build")))))
2116 (home-page "http://jdom.org/")
2117 (synopsis "Access, manipulate, and output XML data")
2118 (description "Jdom is a Java-based solution for accessing, manipulating, and
2119outputting XML data from Java code.")
2120 (license license:bsd-4)))
5ee7b02f
JL
2121
2122(define-public java-xstream
2123 (package
2124 (name "java-xstream")
2125 (version "1.4.10")
b05bc3c4
TGR
2126 (source
2127 (origin
2128 (method git-fetch)
2129 (uri (git-reference
b0e7b699 2130 (url "https://github.com/x-stream/xstream")
b05bc3c4
TGR
2131 (commit (string-append
2132 "XSTREAM_"
2133 (string-map (lambda (x) (if (eq? x #\.) #\_ x))
2134 version)))))
2135 (file-name (git-file-name name version))
2136 (sha256
2137 (base32 "12m2bw8bapdc1w0pni9wl5hh2y8jfdgcvxd464jl9917dsp3ai2n"))))
5ee7b02f
JL
2138 (build-system ant-build-system)
2139 (arguments
2140 `(#:jar-name "xstream.jar"
b05bc3c4 2141 ;; FIXME: Tests are not in a java subdirectory as assumed by ant-build-system.
5ee7b02f
JL
2142 #:tests? #f
2143 #:jdk ,icedtea-8
2144 #:source-dir "xstream/src/java"))
2145 (inputs
2146 `(("java-jdom" ,java-jdom)
2147 ("java-jdom2" ,java-jdom2)
2148 ("java-cglib" ,java-cglib)
2149 ("java-joda-time" ,java-joda-time)
2150 ("java-jettison" ,java-jettison)
2151 ("java-xom" ,java-xom)
2152 ("java-xpp3" ,java-xpp3)
2153 ("java-dom4j" ,java-dom4j)
2154 ("java-stax2-api" ,java-stax2-api)
2155 ("java-woodstox-core" ,java-woodstox-core)
2156 ("java-kxml2" ,java-kxml2)
2157 ("java-stax" ,java-stax)))
2158 (home-page "https://x-stream.github.io")
2159 (synopsis "XML serialization library")
2160 (description "XStream is a simple library to serialize Java objects to XML
2161and back again.")
2162 (license license:bsd-3)))
5c1cf7f3 2163
2cce23bf
PN
2164(define-public xmlrpc-c
2165 (package
2166 (name "xmlrpc-c")
2167 (version "1.43.08")
2168 (source (origin
2169 (method url-fetch)
2170 (uri (string-append "mirror://sourceforge/xmlrpc-c/Xmlrpc-c%20Super%20Stable/"
2171 version "/xmlrpc-c-" version ".tgz"))
2172 (sha256
2173 (base32
2174 "18zwbj6i2hpcn5riiyp8i6rml0sfv60dd7phw1x8g4r4lj2bbxf9"))))
2175 (build-system gnu-build-system)
2176 (inputs
2177 `(("curl" ,curl)))
2178 (native-inputs
2179 `(;; For tools, if ever needed.
2180 ("perl" ,perl)))
2181 (arguments
2182 `(#:make-flags ; Add $libdir to the RUNPATH of all the executables.
2183 (list (string-append "LDFLAGS_PERSONAL=-Wl,-rpath=" %output "/lib"))
2184 #:phases
2185 (modify-phases %standard-phases
2186 (add-after 'unpack 'fix-/bin/sh-in-tests
2187 (lambda _
2188 (substitute* "GNUmakefile"
2189 (("#! /bin/sh") (which "sh")))
2190 #t)))))
2191 (home-page "http://xmlrpc-c.sourceforge.net/")
2192 (synopsis "Lightweight RPC library based on XML and HTTP")
2193 (description
2194 "XML-RPC is a quick-and-easy way to make procedure calls over the Internet.
2195It converts the procedure call into an XML document, sends it to a remote
2196server using HTTP, and gets back the response as XML. This library provides a
2197modular implementation of XML-RPC for C and C++.")
2198 (license (list license:psfl license:expat))))
79a0eabd 2199
8fda8b7d
MB
2200(define-public python-elementpath
2201 (package
2202 (name "python-elementpath")
e272783b 2203 (version "1.4.0")
8fda8b7d
MB
2204 (source
2205 (origin
2206 (method url-fetch)
2207 (uri (pypi-uri "elementpath" version))
2208 (sha256
2209 (base32
e272783b 2210 "15h7d41v48q31hzjay7qzixdv531hnga3h35hksk7x52pgqcrkz7"))))
8fda8b7d
MB
2211 (build-system python-build-system)
2212 (home-page
2213 "https://github.com/sissaschool/elementpath")
2214 (synopsis
2215 "XPath 1.0/2.0 parsers and selectors for ElementTree and lxml")
2216 (description
2217 "The proposal of this package is to provide XPath 1.0 and 2.0 selectors
2218for Python's ElementTree XML data structures, both for the standard
2219ElementTree library and for the @uref{http://lxml.de, lxml.etree} library.
2220
2221For lxml.etree this package can be useful for providing XPath 2.0 selectors,
2222because lxml.etree already has it's own implementation of XPath 1.0.")
2223 (license license:expat)))
2224
55e1475c
MB
2225(define-public python-lxml
2226 (package
2227 (name "python-lxml")
2228 (version "4.4.2")
2229 (source
2230 (origin
2231 (method url-fetch)
2232 (uri (pypi-uri "lxml" version))
2233 (sha256
2234 (base32 "01nvb5j8vs9nk4z5s3250b1m22b4d08kffa36if3g1mdygdrvxpg"))))
2235 (build-system python-build-system)
2236 (arguments
2237 `(#:phases (modify-phases %standard-phases
2238 (replace 'check
2239 (lambda _
2240 (invoke "make" "test"))))))
2241 (inputs
2242 `(("libxml2" ,libxml2)
2243 ("libxslt" ,libxslt)))
2244 (home-page "https://lxml.de/")
2245 (synopsis "Python XML processing library")
2246 (description
2247 "The lxml XML toolkit is a Pythonic binding for the C libraries
2248libxml2 and libxslt.")
2249 (license license:bsd-3))) ; and a few more, see LICENSES.txt
2250
2251(define-public python2-lxml
2252 (package-with-python2 python-lxml))
2253
c950a2a5
MB
2254(define-public python-xmlschema
2255 (package
2256 (name "python-xmlschema")
447f9acf 2257 (version "1.1.2")
c950a2a5 2258 (source (origin
f8a94609
MB
2259 ;; Unit tests are not distributed with the PyPI archive.
2260 (method git-fetch)
2261 (uri (git-reference
2262 (url "https://github.com/sissaschool/xmlschema")
2263 (commit (string-append "v" version))))
2264 (file-name (git-file-name name version))
c950a2a5
MB
2265 (sha256
2266 (base32
447f9acf 2267 "03bz5mp45y4shmlc1gxq1h69vjx60z1acg9cy4kq7fczgx8qg9jw"))))
c950a2a5
MB
2268 (build-system python-build-system)
2269 (arguments
2270 '(#:phases
2271 (modify-phases %standard-phases
2272 (replace 'check
2273 (lambda* (#:key (tests? #t) #:allow-other-keys)
2274 (if tests?
2275 (begin
2276 (setenv "PYTHONPATH"
2277 (string-append "./build/lib:"
2278 (getenv "PYTHONPATH")))
f8a94609 2279 (invoke "python" "-m" "unittest" "-v"))
c950a2a5
MB
2280 (format #t "test suite not run~%"))
2281 #t)))))
2282 (native-inputs
2283 `(("python-lxml" ,python-lxml))) ;for tests
2284 (propagated-inputs
2285 `(("python-elementpath" ,python-elementpath)))
2286 (home-page "https://github.com/sissaschool/xmlschema")
2287 (synopsis "XML Schema validator and data conversion library")
2288 (description
2289 "The @code{xmlschema} library is an implementation of
2290@url{https://www.w3.org/2001/XMLSchema, XML Schema} for Python. It has
2291full support for the XSD 1.0 and 1.1 standards, an XPath-based API for
2292finding schema's elements and attributes; and can encode and decode
2293XML data to JSON and other formats.")
2294 (license license:expat)))
2295
79a0eabd
OP
2296(define-public python-xmltodict
2297 (package
2298 (name "python-xmltodict")
f3e073b4 2299 (version "0.12.0")
79a0eabd 2300 (source
db1adb42
BG
2301 (origin
2302 (method url-fetch)
2303 (uri (pypi-uri "xmltodict" version))
2304 (sha256
2305 (base32
2306 "08cadlb9vsb4pmzc99lz3a2lx6qcfazyvgk10pcqijvyxlwcdn2h"))))
79a0eabd
OP
2307 (build-system python-build-system)
2308 (native-inputs
2309 `(("python-coverage" ,python-coverage)
2310 ("python-nose" ,python-nose)))
2311 (home-page "https://github.com/martinblech/xmltodict")
2312 (synopsis "Work with XML like you are working with JSON")
2313 (description "This package provides a Python library to convert XML to
2314@code{OrderedDict}.")
2315 (license license:expat)))