Merge branch 'python-tests'
[jackhill/guix/guix.git] / gnu / packages / xml.scm
1 ;;; GNU Guix --- Functional package management for GNU
2 ;;; Copyright © 2013, 2014, 2015, 2016 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 Ricardo Wurmus <rekado@elephly.net>
7 ;;; Copyright © 2015, 2016 Mark H Weaver <mhw@netris.org>
8 ;;; Copyright © 2015, 2016 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 Leo Famulari <leo@famulari.name>
12 ;;; Copyright © 2016 Ben Woodcroft <donttrustben@gmail.com>
13 ;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org>
14 ;;; Copyright © 2016 ng0 <ng0@we.make.ritual.n0.is>
15 ;;; Copyright © 2016 Tobias Geerinckx-Rice <me@tobias.gr>
16 ;;; Copyright © 2016, 2017 Marius Bakke <mbakke@fastmail.com>
17 ;;;
18 ;;; This file is part of GNU Guix.
19 ;;;
20 ;;; GNU Guix is free software; you can redistribute it and/or modify it
21 ;;; under the terms of the GNU General Public License as published by
22 ;;; the Free Software Foundation; either version 3 of the License, or (at
23 ;;; your option) any later version.
24 ;;;
25 ;;; GNU Guix is distributed in the hope that it will be useful, but
26 ;;; WITHOUT ANY WARRANTY; without even the implied warranty of
27 ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
28 ;;; GNU General Public License for more details.
29 ;;;
30 ;;; You should have received a copy of the GNU General Public License
31 ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
32
33 (define-module (gnu packages xml)
34 #:use-module (gnu packages)
35 #:use-module (gnu packages autotools)
36 #:use-module (gnu packages compression)
37 #:use-module (gnu packages gnupg)
38 #:use-module (gnu packages perl)
39 #:use-module (gnu packages python)
40 #:use-module (gnu packages tls)
41 #:use-module (gnu packages web)
42 #:use-module ((guix licenses) #:prefix license:)
43 #:use-module (guix packages)
44 #:use-module (guix download)
45 #:use-module (guix build-system cmake)
46 #:use-module (guix build-system gnu)
47 #:use-module (guix build-system perl)
48 #:use-module (guix build-system python)
49 #:use-module (gnu packages linux)
50 #:use-module (gnu packages pkg-config))
51
52 (define-public expat
53 (package
54 (name "expat")
55 (version "2.2.0")
56 (source (origin
57 (method url-fetch)
58 (uri (string-append "mirror://sourceforge/expat/expat/"
59 version "/expat-" version ".tar.bz2"))
60 (patches
61 (search-patches "expat-CVE-2016-0718-fix-regression.patch"))
62 (sha256
63 (base32
64 "1zq4lnwjlw8s9mmachwfvfjf2x3lk24jm41746ykhdcvs7r0zrfr"))))
65 (build-system gnu-build-system)
66 (home-page "http://www.libexpat.org/")
67 (synopsis "Stream-oriented XML parser library written in C")
68 (description
69 "Expat is an XML parser library written in C. It is a
70 stream-oriented parser in which an application registers handlers for
71 things the parser might find in the XML document (like start tags).")
72 (license license:expat)))
73
74 (define-public libxml2
75 (package
76 (name "libxml2")
77 (replacement libxml2/fixed)
78 (version "2.9.4")
79 (source (origin
80 (method url-fetch)
81 (uri (string-append "ftp://xmlsoft.org/libxml2/libxml2-"
82 version ".tar.gz"))
83 (sha256
84 (base32
85 "0g336cr0bw6dax1q48bblphmchgihx9p1pjmxdnrd6sh3qci3fgz"))))
86 (build-system gnu-build-system)
87 (home-page "http://www.xmlsoft.org/")
88 (synopsis "C parser for XML")
89 (propagated-inputs `(("zlib" ,zlib))) ; libxml2.la says '-lz'.
90 (native-inputs `(("perl" ,perl)))
91 ;; $XML_CATALOG_FILES lists 'catalog.xml' files found in under the 'xml'
92 ;; sub-directory of any given package.
93 (native-search-paths (list (search-path-specification
94 (variable "XML_CATALOG_FILES")
95 (separator " ")
96 (files '("xml"))
97 (file-pattern "^catalog\\.xml$")
98 (file-type 'regular))))
99 (search-paths native-search-paths)
100 (description
101 "Libxml2 is the XML C parser and toolkit developed for the Gnome
102 project (but it is usable outside of the Gnome platform).")
103 (license license:x11)))
104
105 (define libxml2/fixed
106 (package
107 (inherit libxml2)
108 (source
109 (origin
110 (inherit (package-source libxml2))
111 (patches (search-patches "libxml2-CVE-2016-4658.patch"
112 "libxml2-CVE-2016-5131.patch"))))))
113
114 (define-public python-libxml2
115 (package (inherit libxml2)
116 (name "python-libxml2")
117 (replacement #f)
118 (build-system python-build-system)
119 (arguments
120 `(;; XXX: Tests are specified in 'Makefile.am', but not in 'setup.py'.
121 #:tests? #f
122 #:phases
123 (modify-phases %standard-phases
124 (add-before
125 'build 'configure
126 (lambda* (#:key inputs #:allow-other-keys)
127 (chdir "python")
128 (let ((glibc (assoc-ref inputs ,(if (%current-target-system)
129 "cross-libc" "libc")))
130 (libxml2 (assoc-ref inputs "libxml2")))
131 (substitute* "setup.py"
132 ;; For 'libxml2/libxml/tree.h'.
133 (("ROOT = r'/usr'")
134 (format #f "ROOT = r'~a'" libxml2))
135 ;; For 'iconv.h'.
136 (("/opt/include")
137 (string-append glibc "/include")))))))))
138 (inputs `(("libxml2" ,libxml2)))
139 (synopsis "Python bindings for the libxml2 library")))
140
141 (define-public python2-libxml2
142 (package-with-python2 python-libxml2))
143
144 (define-public libxslt
145 (package
146 (name "libxslt")
147 (replacement libxslt/fixed)
148 (version "1.1.29")
149 (source (origin
150 (method url-fetch)
151 (uri (string-append "ftp://xmlsoft.org/libxslt/libxslt-"
152 version ".tar.gz"))
153 (sha256
154 (base32
155 "1klh81xbm9ppzgqk339097i39b7fnpmlj8lzn8bpczl3aww6x5xm"))
156 (patches (search-patches "libxslt-generated-ids.patch"))))
157 (build-system gnu-build-system)
158 (home-page "http://xmlsoft.org/XSLT/index.html")
159 (synopsis "C library for applying XSLT stylesheets to XML documents")
160 (inputs `(("libgcrypt" ,libgcrypt)
161 ("libxml2" ,libxml2)
162 ("python" ,python-minimal-wrapper)
163 ("zlib" ,zlib)))
164 (description
165 "Libxslt is an XSLT C library developed for the GNOME project. It is
166 based on libxml for XML parsing, tree manipulation and XPath support.")
167 (license license:x11)))
168
169 (define libxslt/fixed
170 (package
171 (inherit libxslt)
172 (name "libxslt")
173 (source (origin
174 (inherit (package-source libxslt))
175 (patches (search-patches "libxslt-CVE-2016-4738.patch"))))))
176
177 (define-public perl-graph-readwrite
178 (package
179 (name "perl-graph-readwrite")
180 (version "2.09")
181 (source
182 (origin
183 (method url-fetch)
184 (uri (string-append
185 "mirror://cpan/authors/id/N/NE/NEILB/Graph-ReadWrite-"
186 version
187 ".tar.gz"))
188 (sha256
189 (base32
190 "0jlsg64pmy6ka5q5gy851nnyfgjzvhyxc576bhns3vi2x5ng07mh"))))
191 (build-system perl-build-system)
192 (propagated-inputs
193 `(("perl-graph" ,perl-graph)
194 ("perl-parse-yapp" ,perl-parse-yapp)
195 ("perl-xml-parser" ,perl-xml-parser)
196 ("perl-xml-writer" ,perl-xml-writer)))
197 (home-page "http://search.cpan.org/dist/Graph-ReadWrite")
198 (synopsis "Modules for reading and writing directed graphs")
199 (description "This is a collection of perl classes for reading and writing
200 directed graphs in a variety of file formats. The graphs are represented in
201 Perl using Jarkko Hietaniemi's @code{Graph} classes.
202
203 There are two base classes. @code{Graph::Reader} is the base class for classes
204 which read a graph file and create an instance of the Graph class.
205 @code{Graph::Writer} is the base class for classes which take an instance of
206 the @code{Graph} class and write it out in a specific file format.")
207 (license (package-license perl))))
208
209 (define-public perl-xml-atom
210 (package
211 (name "perl-xml-atom")
212 (version "0.41")
213 (source (origin
214 (method url-fetch)
215 (uri (string-append "mirror://cpan/authors/id/M/MI/MIYAGAWA/"
216 "XML-Atom-" version ".tar.gz"))
217 (sha256
218 (base32
219 "17lnkb9ymrhk2z642bhj5i2bv3q1da3kpp2lvsl0yhqshk3wdjj8"))))
220 (build-system perl-build-system)
221 (native-inputs
222 `(("perl-datetime" ,perl-datetime)
223 ;; TODO package: perl-datetime-format-atom
224 ("perl-xml-xpath" ,perl-xml-xpath)))
225 (inputs
226 `(("perl-class-data-inheritable" ,perl-class-data-inheritable)
227 ("perl-datetime" ,perl-datetime)
228 ("perl-datetime-timezone" ,perl-datetime-timezone)
229 ("perl-digest-sha1" ,perl-digest-sha1)
230 ("perl-libwww" ,perl-libwww)
231 ("perl-uri" ,perl-uri)
232 ("perl-xml-libxml" ,perl-xml-libxml)
233 ("perl-xml-xpath" ,perl-xml-xpath)))
234 (home-page "http://search.cpan.org/dist/XML-Atom")
235 (synopsis "Atom feed and API implementation")
236 (description
237 "Atom is a syndication, API, and archiving format for weblogs and other data.
238 @code{XML::Atom} implements the feed format as well as a client for the API.")
239 (license (package-license perl))))
240
241 (define-public perl-xml-descent
242 (package
243 (name "perl-xml-descent")
244 (version "1.04")
245 (source (origin
246 (method url-fetch)
247 (uri (string-append "mirror://cpan/authors/id/A/AN/ANDYA/"
248 "XML-Descent-" version ".tar.gz"))
249 (sha256
250 (base32
251 "0l5xmw2hd95ypppz3lyvp4sn02ccsikzjwacli3ydxfdz1bbh4d7"))))
252 (build-system perl-build-system)
253 (native-inputs
254 `(("perl-module-build" ,perl-module-build)))
255 (propagated-inputs
256 `(("perl-test-differences" ,perl-test-differences)
257 ("perl-xml-tokeparser" ,perl-xml-tokeparser)))
258 (home-page "http://search.cpan.org/dist/XML-Descent")
259 (synopsis "Recursive descent XML parsing")
260 (description
261 "The conventional models for parsing XML are either @dfn{DOM}
262 (a data structure representing the entire document tree is created) or
263 @dfn{SAX} (callbacks are issued for each element in the XML).
264
265 XML grammar is recursive - so it's nice to be able to write recursive
266 parsers for it. @code{XML::Descent} allows such parsers to be created.")
267 (license (package-license perl))))
268
269 (define-public perl-xml-parser
270 (package
271 (name "perl-xml-parser")
272 (version "2.44")
273 (source (origin
274 (method url-fetch)
275 (uri (string-append
276 "mirror://cpan/authors/id/T/TO/TODDR/XML-Parser-"
277 version ".tar.gz"))
278 (sha256
279 (base32
280 "05ij0g6bfn27iaggxf8nl5rhlwx6f6p6xmdav6rjcly3x5zd1s8s"))))
281 (build-system perl-build-system)
282 (arguments `(#:make-maker-flags
283 (let ((expat (assoc-ref %build-inputs "expat")))
284 (list (string-append "EXPATLIBPATH=" expat "/lib")
285 (string-append "EXPATINCPATH=" expat "/include")))))
286 (inputs `(("expat" ,expat)))
287 (license (package-license perl))
288 (synopsis "Perl bindings to the Expat XML parsing library")
289 (description
290 "This module provides ways to parse XML documents. It is built on top of
291 XML::Parser::Expat, which is a lower level interface to James Clark's expat
292 library. Each call to one of the parsing methods creates a new instance of
293 XML::Parser::Expat which is then used to parse the document. Expat options
294 may be provided when the XML::Parser object is created. These options are
295 then passed on to the Expat object on each parse call. They can also be given
296 as extra arguments to the parse methods, in which case they override options
297 given at XML::Parser creation time.")
298 (home-page "http://search.cpan.org/dist/XML-Parser")))
299
300 (define-public perl-xml-tokeparser
301 (package
302 (name "perl-xml-tokeparser")
303 (version "0.05")
304 (source (origin
305 (method url-fetch)
306 (uri (string-append "mirror://cpan/authors/id/P/PO/PODMASTER/"
307 "XML-TokeParser-" version ".tar.gz"))
308 (sha256
309 (base32
310 "1hnpwb3lh6cbgwvjjgqzcp6jm4mp612qn6ili38adc9nhkwv8fc5"))))
311 (build-system perl-build-system)
312 (propagated-inputs `(("perl-xml-parser" ,perl-xml-parser)))
313 (home-page "http://search.cpan.org/dist/XML-TokeParser")
314 (synopsis "Simplified interface to XML::Parser")
315 (description
316 "@code{XML::TokeParser} provides a procedural (\"pull mode\") interface
317 to @code{XML::Parser} in much the same way that Gisle Aas'
318 @code{HTML::TokeParser} provides a procedural interface to @code{HTML::Parser}.
319 @code{XML::TokeParser} splits its XML input up into \"tokens\", each
320 corresponding to an @code{XML::Parser} event.")
321 (license (package-license perl))))
322
323 (define-public perl-libxml
324 (package
325 (name "perl-libxml")
326 (version "0.08")
327 (source (origin
328 (method url-fetch)
329 (uri (string-append
330 "mirror://cpan/authors/id/K/KM/KMACLEOD/libxml-perl-"
331 version ".tar.gz"))
332 (sha256
333 (base32
334 "1jy9af0ljyzj7wakqli0437zb2vrbplqj4xhab7bfj2xgfdhawa5"))))
335 (build-system perl-build-system)
336 (propagated-inputs
337 `(("perl-xml-parser" ,perl-xml-parser)))
338 (license (package-license perl))
339 (synopsis "Perl SAX parser using XML::Parser")
340 (description
341 "XML::Parser::PerlSAX is a PerlSAX parser using the XML::Parser
342 module.")
343 (home-page "http://search.cpan.org/~kmacleod/libxml-perl/lib/XML/Parser/PerlSAX.pm")))
344
345 (define-public perl-xml-libxml
346 (package
347 (name "perl-xml-libxml")
348 (version "2.0128")
349 (source
350 (origin
351 (method url-fetch)
352 (uri (string-append "mirror://cpan/authors/id/S/SH/SHLOMIF/"
353 "XML-LibXML-" version ".tar.gz"))
354 (sha256
355 (base32
356 "0awgd2gjzy7kn38bqblsigikzl81xsi561phkz9f9b9v3x2vmrr6"))))
357 (build-system perl-build-system)
358 (propagated-inputs
359 `(("perl-xml-namespacesupport" ,perl-xml-namespacesupport)
360 ("perl-xml-sax" ,perl-xml-sax)))
361 (inputs
362 `(("libxml2" ,libxml2)))
363 (home-page "http://search.cpan.org/dist/XML-LibXML")
364 (synopsis "Perl interface to libxml2")
365 (description "This module implements a Perl interface to the libxml2
366 library which provides interfaces for parsing and manipulating XML files. This
367 module allows Perl programmers to make use of the highly capable validating
368 XML parser and the high performance DOM implementation.")
369 (license (package-license perl))))
370
371 (define-public perl-xml-libxml-simple
372 (package
373 (name "perl-xml-libxml-simple")
374 (version "0.97")
375 (source (origin
376 (method url-fetch)
377 (uri (string-append "mirror://cpan/authors/id/M/MA/MARKOV/"
378 "XML-LibXML-Simple-" version ".tar.gz"))
379 (sha256
380 (base32
381 "1g8nlk3zdz2cclxf7azvsb3jfxmvy6ml8wmj774k4qjqcsqmzk0w"))))
382 (build-system perl-build-system)
383 (propagated-inputs
384 `(("perl-file-slurp-tiny" ,perl-file-slurp-tiny)
385 ("perl-xml-libxml" ,perl-xml-libxml)))
386 (home-page "http://search.cpan.org/dist/XML-LibXML-Simple")
387 (synopsis "XML::LibXML based XML::Simple clone")
388 (description
389 "This package provides the same API as @code{XML::Simple} but is based on
390 @code{XML::LibXML}.")
391 (license (package-license perl))))
392
393 (define-public perl-xml-libxslt
394 (package
395 (name "perl-xml-libxslt")
396 (version "1.95")
397 (source
398 (origin
399 (method url-fetch)
400 (uri (string-append "mirror://cpan/authors/id/S/SH/SHLOMIF/"
401 "XML-LibXSLT-" version ".tar.gz"))
402 (sha256
403 (base32
404 "0dggycql18kfxzkb1kw3yc7gslxlrrgyyn2r2ygsylycb89j3jpi"))))
405 (build-system perl-build-system)
406 (inputs
407 `(("libxslt" ,libxslt)))
408 (propagated-inputs
409 `(("perl-xml-libxml" ,perl-xml-libxml)))
410 (home-page "http://search.cpan.org/dist/XML-LibXSLT")
411 (synopsis "Perl bindings to GNOME libxslt library")
412 (description "This Perl module is an interface to the GNOME project's
413 libxslt library.")
414 (license (package-license perl))))
415
416 (define-public perl-xml-namespacesupport
417 (package
418 (name "perl-xml-namespacesupport")
419 (version "1.11")
420 (source
421 (origin
422 (method url-fetch)
423 (uri (string-append "mirror://cpan/authors/id/P/PE/PERIGRIN/"
424 "XML-NamespaceSupport-" version ".tar.gz"))
425 (sha256
426 (base32
427 "1sklgcldl3w6gn706vx1cgz6pm4y5lfgsjxnfqyk20pilgq530bd"))))
428 (build-system perl-build-system)
429 (home-page "http://search.cpan.org/dist/XML-NamespaceSupport")
430 (synopsis "XML namespace support class")
431 (description "This module offers a simple to process namespaced XML
432 names (unames) from within any application that may need them. It also helps
433 maintain a prefix to namespace URI map, and provides a number of basic
434 checks.")
435 (license (package-license perl))))
436
437 (define-public perl-xml-rss
438 (package
439 (name "perl-xml-rss")
440 (version "1.59")
441 (source (origin
442 (method url-fetch)
443 (uri (string-append "mirror://cpan/authors/id/S/SH/SHLOMIF/"
444 "XML-RSS-" version ".tar.gz"))
445 (sha256
446 (base32
447 "0v6vfizn2psy6av057kp7fv3z3y73s6b3w56jm3zr6hlq48llsx2"))))
448 (build-system perl-build-system)
449 (native-inputs
450 `(("perl-module-build" ,perl-module-build)
451 ("perl-test-manifest" ,perl-test-manifest)
452 ("perl-test-differences" ,perl-test-differences)
453 ("perl-test-pod" ,perl-test-pod)
454 ("perl-test-pod-coverage" ,perl-test-pod-coverage)))
455 ;; XXX: The test which uses this modules does not run, even when it is included
456 ;; it is ignored. ("perl-test-trailingspace" ,perl-test-trailingspace)
457 (inputs
458 `(("perl-datetime" ,perl-datetime)
459 ("perl-datetime-format-mail" ,perl-datetime-format-mail)
460 ("perl-datetime-format-w3cdtf" ,perl-datetime-format-w3cdtf)
461 ("perl-html-parser" ,perl-html-parser)
462 ("perl-xml-parser" ,perl-xml-parser)))
463 (home-page "http://search.cpan.org/dist/XML-RSS")
464 (synopsis "Creates and updates RSS files")
465 (description
466 "This module provides a basic framework for creating and maintaining
467 RDF Site Summary (RSS) files. This distribution also contains many examples
468 that allow you to generate HTML from an RSS, convert between 0.9, 0.91, and
469 1.0 version, and more.")
470 (license (package-license perl))))
471
472 (define-public perl-xml-sax
473 (package
474 (name "perl-xml-sax")
475 (version "0.99")
476 (source
477 (origin
478 (method url-fetch)
479 (uri (string-append "mirror://cpan/authors/id/G/GR/GRANTM/"
480 "XML-SAX-" version ".tar.gz"))
481 (sha256
482 (base32
483 "115dypb50w1l94y3iwihv5nkixbsv1cxiqkd93y4rk5n6s74pc1j"))))
484 (build-system perl-build-system)
485 (propagated-inputs
486 `(("perl-xml-namespacesupport" ,perl-xml-namespacesupport)
487 ("perl-xml-sax-base" ,perl-xml-sax-base)))
488 (arguments
489 `(#:phases (modify-phases %standard-phases
490 (add-before
491 'install 'augment-path
492 ;; The install target tries to load the newly-installed
493 ;; XML::SAX module, but can't find it, so we need to tell
494 ;; perl where to look.
495 (lambda* (#:key outputs #:allow-other-keys)
496 (setenv "PERL5LIB"
497 (string-append (getenv "PERL5LIB") ":"
498 (assoc-ref outputs "out")
499 "/lib/perl5/site_perl")))))))
500 (home-page "http://search.cpan.org/dist/XML-SAX")
501 (synopsis "Perl API for XML")
502 (description "XML::SAX consists of several framework classes for using and
503 building Perl SAX2 XML parsers, filters, and drivers.")
504 (license (package-license perl))))
505
506 (define-public perl-xml-sax-base
507 (package
508 (name "perl-xml-sax-base")
509 (version "1.08")
510 (source
511 (origin
512 (method url-fetch)
513 (uri (string-append "mirror://cpan/authors/id/G/GR/GRANTM/"
514 "XML-SAX-Base-" version ".tar.gz"))
515 (sha256
516 (base32
517 "17i161rq1ngjlk0c8vdkrkkc56y1pf51k1g54y28py0micqp0qk6"))))
518 (build-system perl-build-system)
519 (home-page "http://search.cpan.org/dist/XML-SAX-Base")
520 (synopsis "Base class for SAX Drivers and Filters")
521 (description "This module has a very simple task - to be a base class for
522 PerlSAX drivers and filters. It's default behaviour is to pass the input
523 directly to the output unchanged. It can be useful to use this module as a
524 base class so you don't have to, for example, implement the characters()
525 callback.")
526 (license (package-license perl))))
527
528 (define-public perl-xml-simple
529 (package
530 (name "perl-xml-simple")
531 (version "2.22")
532 (source (origin
533 (method url-fetch)
534 (uri (string-append
535 "mirror://cpan/authors/id/G/GR/GRANTM/XML-Simple-"
536 version ".tar.gz"))
537 (sha256
538 (base32
539 "0jgbk30jizafpl7078jhw1di1yh08gf8d85dsvjllr595vr0widr"))))
540 (build-system perl-build-system)
541 (propagated-inputs
542 `(("perl-xml-parser" ,perl-xml-parser)
543 ("perl-xml-sax" ,perl-xml-sax)))
544 (license (package-license perl))
545 (synopsis "Perl module for easy reading/writing of XML files")
546 (description
547 "The XML::Simple module provides a simple API layer on top of an
548 underlying XML parsing module (either XML::Parser or one of the SAX2
549 parser modules).")
550 (home-page "http://search.cpan.org/dist/XML-Simple")))
551
552 (define-public perl-xml-regexp
553 (package
554 (name "perl-xml-regexp")
555 (version "0.04")
556 (source (origin
557 (method url-fetch)
558 (uri (string-append
559 "mirror://cpan/authors/id/T/TJ/TJMATHER/XML-RegExp-"
560 version ".tar.gz"))
561 (sha256
562 (base32
563 "0m7wj00a2kik7wj0azhs1zagwazqh3hlz4255n75q21nc04r06fz"))))
564 (build-system perl-build-system)
565 (inputs
566 `(("perl-xml-parser" ,perl-xml-parser)))
567 (license (package-license perl))
568 (synopsis "Perl regular expressions for XML tokens")
569 (description
570 "XML::RegExp contains regular expressions for the following XML tokens:
571 BaseChar, Ideographic, Letter, Digit, Extender, CombiningChar, NameChar,
572 EntityRef, CharRef, Reference, Name, NmToken, and AttValue.")
573 (home-page "http://search.cpan.org/~tjmather/XML-RegExp/lib/XML/RegExp.pm")))
574
575 (define-public perl-xml-dom
576 (package
577 (name "perl-xml-dom")
578 (version "1.46")
579 (source (origin
580 (method url-fetch)
581 (uri (string-append
582 "mirror://cpan/authors/id/T/TJ/TJMATHER/XML-DOM-"
583 version ".tar.gz"))
584 (sha256
585 (base32
586 "0phpkc4li43m2g44hdcvyxzy9pymqwlqhh5hwp2xc0cv8l5lp8lb"))))
587 (build-system perl-build-system)
588 (propagated-inputs
589 `(("perl-libwww" ,perl-libwww)
590 ("perl-libxml" ,perl-libxml)
591 ("perl-xml-parser" ,perl-xml-parser)
592 ("perl-xml-regexp" ,perl-xml-regexp)))
593 (license (package-license perl))
594 (synopsis
595 "Perl module for building DOM Level 1 compliant document structures")
596 (description
597 "This module extends the XML::Parser module by Clark Cooper. The
598 XML::Parser module is built on top of XML::Parser::Expat, which is a lower
599 level interface to James Clark's expat library. XML::DOM::Parser is derived
600 from XML::Parser. It parses XML strings or files and builds a data structure
601 that conforms to the API of the Document Object Model.")
602 (home-page "http://search.cpan.org/~tjmather/XML-DOM-1.44/lib/XML/DOM.pm")))
603
604 (define-public perl-xml-compile-tester
605 (package
606 (name "perl-xml-compile-tester")
607 (version "0.90")
608 (source (origin
609 (method url-fetch)
610 (uri (string-append "mirror://cpan/authors/id/M/MA/MARKOV/"
611 "XML-Compile-Tester-" version ".tar.gz"))
612 (sha256
613 (base32
614 "1bcl8x8cyacqv9yjp97aq9qq85sy8wv78kd8c16yd9yw3by4cpp1"))))
615 (build-system perl-build-system)
616 (propagated-inputs
617 `(("perl-log-report" ,perl-log-report)
618 ("perl-test-deep" ,perl-test-deep)))
619 (home-page "http://search.cpan.org/dist/XML-Compile-Tester")
620 (synopsis "XML::Compile related regression testing")
621 (description
622 "The @code{XML::Compile} module suite has extensive regression testing.
623 This module provide functions which simplify writing tests for
624 @code{XML::Compile} related distributions.")
625 (license (package-license perl))))
626
627 (define-public perl-xml-compile
628 (package
629 (name "perl-xml-compile")
630 (version "1.54")
631 (source (origin
632 (method url-fetch)
633 (uri (string-append "mirror://cpan/authors/id/M/MA/MARKOV/"
634 "XML-Compile-" version ".tar.gz"))
635 (sha256
636 (base32
637 "1hp41960bpqxvv1samv9hc0ghhmvs3i16r4rfl9yp54lp6jhsr2c"))))
638 (build-system perl-build-system)
639 (propagated-inputs
640 `(("perl-log-report" ,perl-log-report)
641 ("perl-xml-compile-tester" ,perl-xml-compile-tester)
642 ("perl-xml-libxml" ,perl-xml-libxml)
643 ("perl-test-deep" ,perl-test-deep)))
644 (home-page "http://search.cpan.org/dist/XML-Compile")
645 (synopsis "Compilation-based XML processing")
646 (description
647 "@code{XML::Compile} can be used to translate a Perl data-structure into
648 XML or XML into a Perl data-structure, both directions under rigid control by
649 a schema.")
650 (license (package-license perl))))
651
652 (define-public perl-xml-compile-cache
653 (package
654 (name "perl-xml-compile-cache")
655 (version "1.05")
656 (source (origin
657 (method url-fetch)
658 (uri (string-append "mirror://cpan/authors/id/M/MA/MARKOV/"
659 "XML-Compile-Cache-" version ".tar.gz"))
660 (sha256
661 (base32
662 "0xbwlszhi9hg8sxm5ylglm2qvnb689i595p913awrj2g4mp9yfsw"))))
663 (build-system perl-build-system)
664 (propagated-inputs
665 `(("perl-log-report" ,perl-log-report)
666 ("perl-xml-compile" ,perl-xml-compile)
667 ("perl-xml-compile-tester" ,perl-xml-compile-tester)
668 ("perl-xml-libxml-simple" ,perl-xml-libxml-simple)))
669 (home-page "http://search.cpan.org/dist/XML-Compile-Cache")
670 (synopsis "Cache compiled XML translators")
671 (description
672 "This package provides methods to cache compiled XML translators.")
673 (license (package-license perl))))
674
675 (define-public perl-xml-compile-soap
676 (package
677 (name "perl-xml-compile-soap")
678 (version "3.21")
679 (source (origin
680 (method url-fetch)
681 (uri (string-append "mirror://cpan/authors/id/M/MA/MARKOV/"
682 "XML-Compile-SOAP-" version ".tar.gz"))
683 (sha256
684 (base32
685 "0rxidh7kjyhnw2y789bqbwccnp8n0m3xskn524y9c752s64qpjcz"))))
686 (build-system perl-build-system)
687 (propagated-inputs
688 `(("perl-file-slurp-tiny" ,perl-file-slurp-tiny)
689 ("perl-libwww" ,perl-libwww)
690 ("perl-log-report" ,perl-log-report)
691 ("perl-xml-compile" ,perl-xml-compile)
692 ("perl-xml-compile-cache" ,perl-xml-compile-cache)
693 ("perl-xml-compile-tester" ,perl-xml-compile-tester)))
694 (home-page "http://search.cpan.org/dist/XML-Compile-SOAP")
695 (synopsis "Base-class for SOAP implementations")
696 (description
697 "This module provides a class to handle the SOAP protocol. The first
698 implementation is @url{SOAP1.1,
699 http://www.w3.org/TR/2000/NOTE-SOAP-20000508/}, which is still most often
700 used.")
701 (license (package-license perl))))
702
703 (define-public perl-xml-compile-wsdl11
704 (package
705 (name "perl-xml-compile-wsdl11")
706 (version "3.06")
707 (source (origin
708 (method url-fetch)
709 (uri (string-append "mirror://cpan/authors/id/M/MA/MARKOV/"
710 "XML-Compile-WSDL11-" version ".tar.gz"))
711 (sha256
712 (base32
713 "0vbq05cpynm3jj81fw1k4nsb3wv4zngi6blvi1jhdarmh2rfg1x2"))))
714 (build-system perl-build-system)
715 (propagated-inputs
716 `(("perl-log-report" ,perl-log-report)
717 ("perl-xml-compile" ,perl-xml-compile)
718 ("perl-xml-compile-cache" ,perl-xml-compile-cache)
719 ("perl-xml-compile-soap" ,perl-xml-compile-soap)))
720 (home-page "http://search.cpan.org/dist/XML-Compile-WSDL11")
721 (synopsis "Create SOAP messages defined by WSDL 1.1")
722 (description
723 "This module understands WSDL version 1.1. A WSDL file defines a set of
724 messages to be send and received over SOAP connections. This involves
725 encoding of the message to be send into XML, sending the message to the
726 server, collect the answer, and finally decoding the XML to Perl.")
727 (license (package-license perl))))
728
729 (define-public perl-xml-feed
730 (package
731 (name "perl-xml-feed")
732 (version "0.53")
733 (source (origin
734 (method url-fetch)
735 (uri (string-append "mirror://cpan/authors/id/D/DA/DAVECROSS/"
736 "XML-Feed-" version ".tar.gz"))
737 (sha256
738 (base32
739 "07b165g6wk8kqwpl49r3n0kag6p2nrkyp3ch0h8qyxb6nrnkkq7c"))))
740 (build-system perl-build-system)
741 (arguments
742 `(#:tests? #f)) ; Tests require internet connection
743 (native-inputs
744 `(("perl-module-build" ,perl-module-build)
745 ("perl-uri" ,perl-uri)
746 ("perl-class-data-inheritable" ,perl-class-data-inheritable)))
747 (inputs
748 `(("perl-class-errorhandler" ,perl-class-errorhandler)
749 ("perl-datetime" ,perl-datetime)
750 ("perl-datetime-format-mail" ,perl-datetime-format-mail)
751 ("perl-datetime-format-w3cdtf" ,perl-datetime-format-w3cdtf)
752 ("perl-feed-find" ,perl-feed-find)
753 ("perl-html-parser" ,perl-html-parser)
754 ("perl-libwww-perl" ,perl-libwww)
755 ("perl-module-pluggable" ,perl-module-pluggable)
756 ("perl-uri-fetch" ,perl-uri-fetch)
757 ("perl-xml-atom" ,perl-xml-atom)
758 ("perl-xml-libxml" ,perl-xml-libxml)
759 ("perl-xml-rss" ,perl-xml-rss)))
760 (home-page "http://search.cpan.org/dist/XML-Feed")
761 (synopsis "XML Syndication Feed Support")
762 (description "@code{XML::Feed} is a syndication feed parser for both RSS and
763 Atom feeds. It also implements feed auto-discovery for finding feeds, given a URI.
764 @code{XML::Feed} supports the following syndication feed formats:
765 RSS 0.91, RSS 1.0, RSS 2.0, Atom")
766 (license (package-license perl))))
767
768 (define-public perl-xml-xpath
769 (package
770 (name "perl-xml-xpath")
771 (version "1.40")
772 (source (origin
773 (method url-fetch)
774 (uri (string-append "mirror://cpan/authors/id/M/MA/MANWAR/"
775 "XML-XPath-" version ".tar.gz"))
776 (sha256
777 (base32
778 "07pa0bl42jka8mj7jshjynx8vpfh8b4cdyiv4zlkqvkqz98nzxib"))))
779 (build-system perl-build-system)
780 (native-inputs
781 `(("perl-path-tiny" ,perl-path-tiny)))
782 (inputs
783 `(("perl-xml-parser" ,perl-xml-parser)))
784 (home-page "http://search.cpan.org/dist/XML-XPath")
785 (synopsis "Parse and evaluate XPath statements")
786 (description
787 "This module aims to comply exactly to the @url{XPath specification,
788 https://www.w3.org/TR/xpath} and yet allow extensions to be added in
789 the form of functions.")
790 (license (package-license perl))))
791
792 (define-public pugixml
793 (package
794 (name "pugixml")
795 (version "1.8.1")
796 (source
797 (origin
798 (method url-fetch)
799 (uri (string-append "https://github.com/zeux/pugixml/releases/download/v"
800 version "/pugixml-" version ".tar.gz"))
801 (sha256
802 (base32
803 "0fcgggry5x5bn0zhb09ij9hb0p45nb0sv0d9fw3cm1cf62hp9n80"))))
804 (build-system cmake-build-system)
805 (arguments
806 `(#:tests? #f)) ; no tests
807 (home-page "http://pugixml.org")
808 (synopsis "Light-weight, simple and fast XML parser for C++ with XPath support")
809 (description
810 "pugixml is a C++ XML processing library, which consists of a DOM-like
811 interface with rich traversal/modification capabilities, a fast XML parser
812 which constructs the DOM tree from an XML file/buffer, and an XPath 1.0
813 implementation for complex data-driven tree queries. Full Unicode support is
814 also available, with Unicode interface variants and conversions between
815 different Unicode encodings which happen automatically during
816 parsing/saving.")
817 (license license:expat)))
818
819 (define-public python-pyxb
820 (package
821 (name "python-pyxb")
822 (version "1.2.5")
823 (source (origin
824 (method url-fetch)
825 (uri (pypi-uri "PyXB" version))
826 (sha256
827 (base32
828 "0rzzwibfqa28gxgcxx4cybx1qcg0g6fand06ykj3gz7z5kp653sf"))))
829 (build-system python-build-system)
830 (home-page "http://pyxb.sourceforge.net/")
831 (synopsis "Python XML Schema Bindings")
832 (description
833 "PyXB (\"pixbee\") is a pure Python package that generates Python source
834 code for classes that correspond to data structures defined by XMLSchema.")
835 (license (list license:asl2.0 ; Most files.
836 license:expat ; pyxb/utils/six.py
837 license:gpl2 ; bundled jquery in doc is dual MIT/GPL2
838 license:psfl)))) ; pyxb/utils/activestate.py
839
840 (define-public python2-pyxb
841 (package-with-python2 python-pyxb))
842
843 (define-public xmlto
844 (package
845 (name "xmlto")
846 (version "0.0.28")
847 (source
848 (origin
849 (method url-fetch)
850 (uri (string-append
851 "https://fedorahosted.org/releases/x/m/xmlto/xmlto-"
852 version ".tar.bz2"))
853 (sha256
854 (base32
855 "0xhj8b2pwp4vhl9y16v3dpxpsakkflfamr191mprzsspg4xdyc0i"))))
856 (build-system gnu-build-system)
857 (arguments
858 ;; Make sure the reference to util-linux's 'getopt' is kept in 'xmlto'.
859 '(#:configure-flags (list (string-append "GETOPT="
860 (assoc-ref %build-inputs
861 "util-linux")
862 "/bin/getopt"))))
863 (inputs
864 `(("util-linux" ,util-linux) ; for 'getopt'
865 ("libxml2" ,libxml2) ; for 'xmllint'
866 ("libxslt" ,libxslt))) ; for 'xsltproc'
867 (home-page "http://cyberelk.net/tim/software/xmlto/")
868 (synopsis "Front-end to an XSL toolchain")
869 (description
870 "Xmlto is a front-end to an XSL toolchain. It chooses an appropriate
871 stylesheet for the conversion you want and applies it using an external
872 XSL-T processor. It also performs any necessary post-processing.")
873 (license license:gpl2+)))
874
875 (define-public xmlsec
876 (package
877 (name "xmlsec")
878 (version "1.2.20")
879 (source (origin
880 (method url-fetch)
881 (uri (string-append "https://www.aleksey.com/xmlsec/download/"
882 name "1-" version ".tar.gz"))
883 (sha256
884 (base32
885 "01bkbv2y3x8d1sf4dcln1x3y2jyj391s3208d9a2ndhglly5j89j"))))
886 (build-system gnu-build-system)
887 (propagated-inputs ; according to xmlsec1.pc
888 `(("libxml2" ,libxml2)
889 ("libxslt" ,libxslt)))
890 (inputs
891 `(("gnutls" ,gnutls)
892 ("libgcrypt" ,libgcrypt)
893 ("libltdl" ,libltdl)))
894 (native-inputs
895 `(("pkg-config" ,pkg-config)))
896 (home-page "http://www.libexpat.org/")
897 (synopsis "XML Security Library")
898 (description
899 "The XML Security Library is a C library based on Libxml2. It
900 supports XML security standards such as XML Signature, XML Encryption,
901 Canonical XML (part of Libxml2) and Exclusive Canonical XML (part of
902 Libxml2).")
903 (license (license:x11-style "file://COPYING"
904 "See 'COPYING' in the distribution."))))
905
906 (define-public minixml
907 (package
908 (name "minixml")
909 (version "2.9")
910 (source (origin
911 (method url-fetch)
912 (uri (string-append "http://www.msweet.org/files/project3/mxml-"
913 version ".tar.gz"))
914 (sha256
915 (base32
916 "14pzhlfidj5v1qbxy7a59yn4jz9pnjrs2zwalz228jsq7ijm9vfd"))))
917 (build-system gnu-build-system)
918 (arguments
919 `(#:tests? #f)) ;no "check" target
920 (home-page "http://www.minixml.org/")
921 (synopsis "Small XML parsing library")
922 (description
923 "Mini-XML is a small C library to read and write XML files and strings in
924 UTF-8 and UTF-16 encoding.")
925 ;; LGPL 2.0+ with additional exceptions for static linking
926 (license license:lgpl2.0+)))
927
928 ;; TinyXML is an unmaintained piece of software, so the patches and build
929 ;; system massaging have no upstream potential.
930 (define-public tinyxml
931 (package
932 (name "tinyxml")
933 (version "2.6.2")
934 (source (origin
935 (method url-fetch)
936 (uri (string-append "mirror://sourceforge/tinyxml/tinyxml/"
937 version "/tinyxml_"
938 (string-join (string-split version #\.) "_")
939 ".tar.gz"))
940 (sha256
941 (base32
942 "14smciid19lvkxqznfig77jxn5s4iq3jpb47vh5a6zcaqp7gvg8m"))
943 (patches (search-patches "tinyxml-use-stl.patch"))))
944 (build-system gnu-build-system)
945 ;; This library is missing *a lot* of the steps to make it usable, so we
946 ;; have to add them here, like every other distro must do.
947 (arguments
948 `(#:phases
949 (modify-phases %standard-phases
950 (delete 'configure)
951 (add-after 'build 'build-shared-library
952 (lambda _
953 (zero? (system* "g++" "-Wall" "-O2" "-shared" "-fpic"
954 "tinyxml.cpp" "tinyxmlerror.cpp"
955 "tinyxmlparser.cpp" "tinystr.cpp"
956 "-o" "libtinyxml.so"))))
957 (replace 'check
958 (lambda _ (zero? (system "./xmltest"))))
959 (replace 'install
960 (lambda* (#:key outputs #:allow-other-keys)
961 (let* ((out (assoc-ref outputs "out"))
962 (include (string-append out "/include"))
963 (lib (string-append out "/lib"))
964 (pkgconfig (string-append out "/lib/pkgconfig"))
965 (doc (string-append out "/share/doc")))
966 ;; Install libs and headers.
967 (install-file "libtinyxml.so" lib)
968 (install-file "tinystr.h" include)
969 (install-file "tinyxml.h" include)
970 ;; Generate and install pkg-config file.
971 (mkdir-p pkgconfig)
972 ;; Software such as Kodi expect this file to be present, but
973 ;; it's not provided in the source code.
974 (call-with-output-file (string-append pkgconfig "/tinyxml.pc")
975 (lambda (port)
976 (format port "prefix=~a
977 exec_prefix=${prefix}
978 libdir=${exec_prefix}/lib
979 includedir=${prefix}/include
980
981 Name: TinyXML
982 Description: A simple, small, C++ XML parser
983 Version: ~a
984 Libs: -L${libdir} -ltinyxml
985 Cflags: -I${includedir}
986 "
987 out ,version)))
988 ;; Install docs.
989 (mkdir-p doc)
990 (copy-recursively "docs" (string-append doc "tinyxml"))
991 #t))))))
992 (synopsis "Small XML parser for C++")
993 (description "TinyXML is a small and simple XML parsing library for the
994 C++ programming language.")
995 (home-page "http://www.grinninglizard.com/tinyxml/index.html")
996 (license license:zlib)))
997
998 (define-public tinyxml2
999 (package
1000 (name "tinyxml2")
1001 (version "4.0.1")
1002 (source
1003 (origin
1004 (method url-fetch)
1005 (uri (string-append "https://github.com/leethomason/tinyxml2/archive/"
1006 version ".tar.gz"))
1007 (sha256
1008 (base32
1009 "083z4r4khcndxi9k840lcr48sqxvar4gpsnf749xfdn1bkr8xcql"))))
1010 (build-system cmake-build-system)
1011 (arguments
1012 `(#:tests? #f)) ; no tests
1013 (synopsis "Small XML parser for C++")
1014 (description "TinyXML2 is a small and simple XML parsing library for the
1015 C++ programming language.")
1016 (home-page "http://www.grinninglizard.com/tinyxml2/")
1017 (license license:zlib)))
1018
1019 (define-public xmlstarlet
1020 (package
1021 (name "xmlstarlet")
1022 (version "1.6.1")
1023 (source
1024 (origin
1025 (method url-fetch)
1026 (uri (string-append "mirror://sourceforge/xmlstar/xmlstarlet/"
1027 version "/xmlstarlet-" version ".tar.gz"))
1028 (sha256
1029 (base32
1030 "1jp737nvfcf6wyb54fla868yrr39kcbijijmjpyk4lrpyg23in0m"))))
1031 (build-system gnu-build-system)
1032 (inputs
1033 `(("libxslt" ,libxslt)
1034 ("libxml2" ,libxml2)))
1035 (home-page "http://xmlstar.sourceforge.net/")
1036 (synopsis "Command line XML toolkit")
1037 (description "XMLStarlet is a set of command line utilities which can be
1038 used to transform, query, validate, and edit XML documents. XPath is used to
1039 match and extract data, and elements can be added, deleted or modified using
1040 XSLT and EXSLT.")
1041 (license license:x11)))
1042
1043 (define-public xlsx2csv
1044 (package
1045 (name "xlsx2csv")
1046 (version "0.7.2")
1047 (source (origin
1048 (method url-fetch)
1049 (uri (string-append
1050 "https://github.com/dilshod/"
1051 name "/archive/release/" version ".tar.gz"))
1052 (file-name (string-append name "-" version ".tar.gz"))
1053 (sha256
1054 (base32
1055 "1gpn6kaa7l1ai8c9zx2j3acf04bvxq79pni8jjfjrk01smjbyyql"))))
1056 (build-system python-build-system)
1057 (arguments
1058 `(#:python ,python-2 ; Use python-2 for the test script.
1059 #:phases
1060 (modify-phases %standard-phases
1061 (replace 'check
1062 (lambda _
1063 (substitute* "test/run"
1064 ;; Run tests with `python' only
1065 (("^(PYTHON_VERSIONS = ).*" all m) (string-append m "['']")))
1066 (zero? (system* "test/run")))))))
1067 (home-page "https://github.com/dilshod/xlsx2csv")
1068 (synopsis "XLSX to CSV converter")
1069 (description
1070 "Xlsx2csv is a program to convert Microsoft Excel 2007 XML (XLSX and
1071 XLSM) format spreadsheets into plaintext @dfn{comma separated values} (CSV)
1072 files. It is designed to be fast and to handle large input files.")
1073 (license license:gpl2+)))