The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

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