The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

DTA::CAB::Format::XmlNative - Datum parser|formatter: XML (native)

SYNOPSIS

 use DTA::CAB::Format::XmlNative;
 
 ##========================================================================
 ## Methods
 
 $fmt = DTA::CAB::Format::XmlNative->new(%args);
 $obj = $fmt->parseNode($nod);
 $doc = $fmt->parseDocument();
 $fmt = $fmt->putDocument($doc);
 
 ##========================================================================
 ## Utilities
 
 $nod = $fmt->xmlNode($thingy,$name);
 $val = PACKAGE::_pushValue(\%hash,  $key, $val); ##-- $hash{$key}=$val;
 

DESCRIPTION

DTA::CAB::Format::XmlNative is a DTA::CAB::Format subclass for document I/O using a native XML dialect. It inherits from DTA::CAB::Format::XmlCommon.

Methods

new
 $fmt = CLASS_OR_OBJ->new(%args);

%$fmt, %args:

 ##-- input: inherited
 xdoc => $xdoc,                          ##-- XML::LibXML::Document
 xprs => $xprs,                          ##-- XML::LibXML parser
 ##
 ##-- input: new
 parseXmlData => $bool,                  ##-- if specified and true, _xmldata key will be populated by parseNode() (default=unspecified:true)
 ##
 ##-- input+output: new
 xml2key => \%xml2key,                   ##-- maps xml keys to internal keys
 ignoreKeys => \%key2undef,              ##-- keys to ignore for i/o
 ##
 ##-- output: new
 arrayEltKeys => \%akey2ekey,            ##-- maps array keys to element keys for output
 arrayImplicitKeys => \%akey2undef,      ##-- pseudo-hash of array keys NOT mapped to explicit elements
 key2xml => \%key2xml,                   ##-- maps keys to XML-safe names
 xml2key => \%xml2key,                   ##-- maps xml keys to internal keys
 ##
 ##-- output: inherited
 encoding => $inputEncoding,             ##-- default: UTF-8; applies to output only!
 level => $level,                        ##-- output formatting level (default=0)
parseDocument
 $doc = $fmt->parseDocument();

Parses buffered XML::LibXML::Document into a buffered DTA::CAB::Document.

shortName

Returns "official" short name for this format, here just 'xml'.

putDocument
 $fmt = $fmt->putDocument($doc);

Formats the DTA::CAB::Document $doc as XML to the in-memory buffer $fmt->{xdoc}.

Utilities

parseNode
 $obj = $fmt->parseNode($nod);

Returns a perl object represented by the XML::LibXML::Node $nod; attempting to map xml to perl structure "sensibly".

DTA::CAB::Datum nodes (document, sentence, token) get some additional baggage:

 _xmldata  => $data,    ##-- unparsed content (raw string)
xmlNode
 $nod = $fmt->xmlNode($thingy,$name);

Returns an xml node for the perl scalar $thingy using $name as its key, used in constructing XML output documents.

_pushValue
 $val = PACKAGE::_pushValue(\%hash,  $key, $val); ##-- $hash{$key}=$val;
 $val = PACKAGE::_pushValue(\@array, $key, $val); ##-- push(@array,$val)

Convenience routine used by parseNode() when constructing perl data structures from XML input.

EXAMPLE

An example file in the format accepted/generated by this module is:

 <?xml version="1.0" encoding="UTF-8"?>
 <doc>
   <s lang="de">
     <w exlex="wie" hasmorph="1" msafe="1" errid="ec" t="wie" lang="de">
       <moot word="wie" lemma="wie" tag="PWAV"/>
       <xlit latin1Text="wie" isLatin1="1" isLatinExt="1"/>
     </w>
     <w msafe="0" t="oede">
       <moot tag="ADJD" lemma="öde" word="öde"/>
       <xlit isLatinExt="1" isLatin1="1" latin1Text="oede"/>
     </w>
     <w msafe="1" errid="ec" t="!" exlex="!">
       <moot lemma="!" word="!" tag="$."/>
       <xlit isLatinExt="1" isLatin1="1" latin1Text="!"/>
     </w>
   </s>
 </doc>

AUTHOR

Bryan Jurish <moocow@cpan.org>

COPYRIGHT AND LICENSE

Copyright (C) 2010-2019 by Bryan Jurish

This package is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.24.1 or, at your option, any later version of Perl 5 you may have available.

SEE ALSO

dta-cab-convert.perl(1), DTA::CAB::Format::XmlCommon(3pm), DTA::CAB::Format::Builtin(3pm), DTA::CAB::Format(3pm), DTA::CAB(3pm), perl(1), ...

1 POD Error

The following errors were encountered while parsing the POD:

Around line 648:

Non-ASCII character seen before =encoding in 'lemma="öde"'. Assuming UTF-8