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