NAME
XML::Compile::Util - Utility routines for XML::Compile components
INHERITANCE
XML::Compile::Util
is a Exporter
SYNOPSIS
use XML::Compile::Util;
my $node_type = pack_type $ns, $localname;
my ($ns, $localname) = unpack_type $node_type;
DESCRIPTION
The functions provided by this package are used by various XML::Compile components, which on their own may be unrelated.
FUNCTIONS
Constants
The following URIs are exported as constants, to avoid typing in the same long URIs each time again: XMLNS, SCHEMA1999, SCHEMA2000, SCHEMA2001, and SCHEMA2001i.
Packing
pack_id(NAMESPACE, ID)
Translates the two arguments into one compact string representation of the node id.
example:
print pack_id 'http://my-ns', 'my-id';
# shows: http://my-ns#my-id
pack_type([NAMESPACE], LOCALNAME)
Translates the arguments into one compact string representation of the node type. When the NAMESPACE is not present, undef
, or an empty string, then no namespace is presumed, and no curly braces part made.
example:
print pack_type 'http://my-ns', 'my-type';
# shows: {http://my-ns}my-type
print pack_type 'my-type';
print pack_type undef, 'my-type';
print pack_type '', 'my-type';
# all three show: my-type
unpack_type(STRING)
Returns a LIST of two elements: the name-space and the id, as included in the STRING. That STRING must be compatible with the result of pack_id().
Other
block_label(KIND, LABEL)
Particle blocks, like `sequence' and `choice', which have a maxOccurs (maximum occurrence) which is 2 of more, are represented by an ARRAY of HASHs. The label with such a block is derived from its first element. This function determines how.
The KIND of block is abbreviated, and prepended before the LABEL. When the LABEL already had a block abbreviation (which may be caused by nested blocks), that will be stripped first.
An element KIND of block is found in substitution groups. That label will not change.
example: labels for blocks with maxOccurs > 1
seq_address # sequence get seq_ prepended
cho_gender # choices get cho_ before them
all_money # an all block can also be repreated in spec >1.1
gr_people # group refers to a block of above type, but
# that type is not reflected in the name
odd_elements(LIST)
Returns the odd-numbered elements in the list.
type_of_node(NODE)
Translate an XML::LibXML::Node into a packed type.
SEE ALSO
This module is part of XML-Compile distribution version 0.78, built on April 16, 2008. Website: http://perl.overmeer.net/xml-compile/
LICENSE
Copyrights 2006-2008 by Mark Overmeer. For other contributors see ChangeLog.
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. See http://www.perl.com/perl/misc/Artistic.html