.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28)
.\"
.\" Standard preamble:
.\" ========================================================================
.de Sp \" Vertical space (when we can't use .PP)
.if t .sp .5v
.if n .sp
..
.de Vb \" Begin verbatim text
.ft CW
.nf
.ne \\$1
..
.de Ve \" End verbatim text
.ft R
.fi
..
.\" Set up some character translations and predefined strings. \*(-- will
.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
.\" double quote, and \*(R" will give a right double quote. \*(C+ will
.\" give a nicer C++. Capital omega is used to do unbreakable dashes and
.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff,
.\" nothing in troff, for use with C<>.
.tr \(*W-
.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
.ie n \{\
. ds -- \(*W-
. ds PI pi
. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch
. ds L" ""
. ds R" ""
. ds C` ""
. ds C' ""
'br\}
.el\{\
. ds -- \|\(em\|
. ds PI \(*p
. ds L" ``
. ds R" ''
. ds C`
. ds C'
'br\}
.\"
.\" Escape single quotes in literal strings from groff's Unicode transform.
.ie \n(.g .ds Aq \(aq
.el .ds Aq '
.\"
.\" If the F register is turned on, we'll generate index entries on stderr for
.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
.\" entries marked with X<> in POD. Of course, you'll have to process the
.\" output yourself in some meaningful fashion.
.\"
.\" Avoid warning from groff about undefined register 'F'.
.de IX
..
.nr rF 0
.if \n(.g .if rF .nr rF 1
.if (\n(rF:(\n(.g==0)) \{
. if \nF \{
. de IX
. tm Index:\\$1\t\\n%\t"\\$2"
..
. if !\nF==2 \{
. nr % 0
. nr F 2
. \}
. \}
.\}
.rr rF
.\"
.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
.\" Fear. Run. Save yourself. No user-serviceable parts.
. \" fudge factors for nroff and troff
.if n \{\
. ds #H 0
. ds #V .8m
. ds #F .3m
. ds #[ \f1
. ds #] \fP
.\}
.if t \{\
. ds #H ((1u-(\\\\n(.fu%2u))*.13m)
. ds #V .6m
. ds #F 0
. ds #[ \&
. ds #] \&
.\}
. \" simple accents for nroff and troff
.if n \{\
. ds ' \&
. ds ` \&
. ds ^ \&
. ds , \&
. ds ~ ~
. ds /
.\}
.if t \{\
. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
.\}
. \" troff and (daisy-wheel) nroff accents
.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
.ds ae a\h'-(\w'a'u*4/10)'e
.ds Ae A\h'-(\w'A'u*4/10)'E
. \" corrections for vroff
.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
. \" for low resolution devices (crt and lpr)
.if \n(.H>23 .if \n(.V>19 \
\{\
. ds : e
. ds 8 ss
. ds o a
. ds d- d\h'-1'\(ga
. ds D- D\h'-1'\(hy
. ds th \o'bp'
. ds Th \o'LP'
. ds ae ae
. ds Ae AE
.\}
.rm #[ #] #H #V #F C
.\" ========================================================================
.\"
.IX Title "XML::Easy 3pm"
.TH XML::Easy 3pm "2014-08-15" "perl v5.20.0" "User Contributed Perl Documentation"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
.nh
.SH "NAME"
XML::Easy \- XML processing with a clean interface
.SH "SYNOPSIS"
.IX Header "SYNOPSIS"
.Vb 3
\& use XML::Easy::NodeBasics qw(xml_element xml_e_attribute);
\& use XML::Easy::Text
\& qw(xml10_read_document xml10_write_document);
\&
\& $element = xml_element("a", { href => "there" }, "there");
\& $element = xml10_read_document(\*(Aqthere\*(Aq);
\&
\& $href = xml_e_attribute($element, "href");
\& $text = xml10_write_document($element);
\&
\& # see specific modules for many more functions
.Ve
.SH "DESCRIPTION"
.IX Header "DESCRIPTION"
XML::Easy is a collection of modules relating to the processing,
parsing, and serialisation of \s-1XML\s0 data. It is oriented towards the
use of \s-1XML\s0 to represent data for interchange purposes, rather than the
use of \s-1XML\s0 as markup of principally textual data. It does not perform
any schema processing, and does not interpret DTDs or any other kind
of schema. It adheres strictly to the \s-1XML\s0 specification, in all its
awkward details, except for the aforementioned DTDs.
.PP
XML::Easy strictly separates the in-program manipulation of \s-1XML\s0
data from the processing of the textual form of \s-1XML. \s0 This shields
the \s-1XML\s0 user from the inconvenient and obscure aspects of \s-1XML\s0 syntax.
\&\s-1XML\s0 data nodes are mainly processed in a clean functional style, using
the XML::Easy::NodeBasics module. In the (very likely) event that
an application requires some more purpose-specific \s-1XML\s0 data processing
facilities, they are readily built on top of XML::Easy::NodeBasics,
retaining the abstraction from textual \s-1XML.\s0
.PP
When \s-1XML\s0 must be handled in textual form, for input and output,
the XML::Easy::Text module supplies a parser and a serialiser.
The interfaces here, too, are functional in nature.
.PP
There are other modules for some ancillary aspects of \s-1XML\s0 processing.
.SH "MODULES"
.IX Header "MODULES"
The modules in the XML::Easy distribution are:
.IP "XML::Easy" 4
.IX Item "XML::Easy"
This document. For historical reasons, this can also be loaded as
a module, and (though it is deprecated) some of the functions from
XML::Easy::Text can be imported from here.
.IP "XML::Easy::Classify" 4
.IX Item "XML::Easy::Classify"
This module provides various type-testing functions, relating to data
types used in the XML::Easy ensemble. These are mainly intended to be
used to enforce validity of data being processed by XML-related functions.
.IP "XML::Easy::Content" 4
.IX Item "XML::Easy::Content"
.PD 0
.IP "XML::Easy::Element" 4
.IX Item "XML::Easy::Element"
.PD
These are classes used to represent \s-1XML\s0 data for general manipulation.
Objects of these classes hold the meaningful content of the data,
independent of textual representation. The data in these nodes cannot
be modified: different data requires new nodes.
.IP "XML::Easy::NodeBasics" 4
.IX Item "XML::Easy::NodeBasics"
This module supplies functions concerned with the creation, examination,
and other manipulation of \s-1XML\s0 data nodes (content chunks and elements).
The nodes are dumb data objects, best manipulated using plain functions
such as the ones in this module.
.IP "XML::Easy::Syntax" 4
.IX Item "XML::Easy::Syntax"
This module supplies Perl regular expressions describing the grammar of
\&\s-1XML 1.0. \s0 This is intended to support doing irregular things with \s-1XML,\s0
rather than for normal parsing.
.IP "XML::Easy::Text" 4
.IX Item "XML::Easy::Text"
This module supplies functions that parse and serialise \s-1XML\s0 data as text
according to the \s-1XML 1.0\s0 specification.
.SH "OTHER DISTRIBUTIONS"
.IX Header "OTHER DISTRIBUTIONS"
Other \s-1CPAN\s0 distributions that work with XML::Easy are:
.IP "Test::XML::Easy" 4
.IX Item "Test::XML::Easy"
A testing tool, providing Test::More\-style functions that check
whether \s-1XML\s0 nodes are as expected.
.IP "XML::Easy::ProceduralWriter" 4
.IX Item "XML::Easy::ProceduralWriter"
Provides a way to construct \s-1XML\s0 data nodes by procedural code.
Some programmers will find this more comfortable than the functional
style offered by XML::Easy::NodeBasics.
.IP "XML::Easy::SimpleSchemaUtil" 4
.IX Item "XML::Easy::SimpleSchemaUtil"
Helps to parse things that are encoded in \s-1XML\s0 in common ways.
.ie n .IP """XML::Easy::Transform::""" 4
.el .IP "\f(CWXML::Easy::Transform::\fR" 4
.IX Item "XML::Easy::Transform::"
This namespace exists to contain modules that perform transformations
on \s-1XML\s0 documents, or parts thereof, in the form of XML::Easy::Element
and XML::Easy::Content nodes.
.SH "SEE ALSO"
.IX Header "SEE ALSO"
XML::Easy::Classify,
XML::Easy::NodeBasics,
XML::Easy::Syntax,
XML::Easy::Text,
.SH "AUTHOR"
.IX Header "AUTHOR"
Andrew Main (Zefram)
.SH "COPYRIGHT"
.IX Header "COPYRIGHT"
Copyright (C) 2008, 2009 PhotoBox Ltd
.PP
Copyright (C) 2009, 2010, 2011 Andrew Main (Zefram)
.SH "LICENSE"
.IX Header "LICENSE"
This module is free software; you can redistribute it and/or modify it
under the same terms as Perl itself.