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

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 followinf URI are exported as constants, to avoid typinng 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.67, built on February 04, 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