Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages


home | help
XML::Namespace(3)     User Contributed Perl Documentation    XML::Namespace(3)

       XML::Namespace -	Simple support for XML Namespaces

	Example	1: using XML::Namespace	objects

	   use XML::Namespace;

	   my $xsd = XML::Namespace->new('');

	   # explicit access via the uri() method
	   print $xsd->uri();		#
	   print $xsd->uri('integer');	#

	   # implicit access through AUTOLOAD method
	   print $xsd->integer;		#

	Example	2: importing XML::Namespace objects

	   use XML::Namespace
	       xsd => '',
	       rdf => '';

	   # xsd and rdf are imported subroutines that return
	   # XML::Namespace objects which can be used as above

	   print xsd->uri('integer');	#
	   print xsd->integer;		#

       This module implements a	simple object for representing XML Namespaces
       in Perl.	 It provides little more than some syntactic sugar for your
       Perl programs, saving you the bother of typing lots of long-winded
       URIs.  It was inspired by the Class::RDF::NS module distributed as part
       of Class::RDF.

   Using XML::Namespace	Objects
       First load the XML::Namespace module.

	   use XML::Namespace;

       Then create an XML::Namespace object.

	   my $xsd = XML::Namespace->new('');

       Then use	the uri() method to return an absolute URI from	a relative

	   print $xsd->uri('integer'); #

       Alternately, use	the AUTOLOAD method to map method calls	to the uri()

	   print $xsd->integer;	       #

   Importing XML::Namespace Objects
       When you	"use" the XML::Namespace module, you can specify a list	of
       namespace definitions.

	   use XML::Namespace
	       xsd => '',
	       rdf => '';

       This defines the	"xsd" and "rdf"	subroutines and	exports	them into the
       calling package.	 The subroutines simply	return XML::Namespace objects
       initialised with	the relevant namespace URIs.

	   print xsd->uri('integer');  #
	   print xsd->integer;	       #

   Overloaded Stringification Method
       The XML::Namespace module overloads the stringification operator	to
       return the namespace URI.

	   my $xsd = XML::Namespace->new('');

	   print $xsd;		 #

       Constructor method which	creates	a new XML::Namespace object.  It
       expects a single	argument denoting the URI that the namespace is	to

	   use XML::Namespace;

	   my $xsd = XML::Namespace->new('');

       When called without arguments, this method returns the URI of the
       namespace object, as defined by the argument passed to the new()
       constructor method.

	   $xsd->uri();		 #

       An argument can be passed to indicate a path relative to	the namespace
       URI.  The method	returns	a simple concatenation of the namespace	URI
       and the relative	path argument.

	   $xsd->uri('integer'); #

       This method is provided to work with the	Exporter mechanism.  It
       expects a list of "($name, $uri)" pairs as arguments.  It creates
       XML::Namespace objects and accessor subroutines that are	then exported
       to the caller's package.

       Although	not intended for manual	invocation, there's nothing to stop
       you from	doing it.

	   use XML::Namespace;

	   XML::Namespace->import( xsd => '' );

	   xsd()->integer;   #

       Note that the parentheses are required when accessing this subroutine.

	   xsd()->integer;     # Good
	   xsd->integer;       # Bad

       Unlike those that are defined automatically by the Importer, Perl
       doesn't know anything about these subroutines at	compile	time.  Without
       the parentheses,	Perl will think	you're trying to call the "integer"
       method on an unknown "xsd" package and you'll see an error like:

	   Can't locate	object method "integer"	via package "xsd"

       That's why it's better to define	your namespaces	when you load the
       XML::Namespace module.

	   use XML::Namespace
	       xsd => '';

	   xsd->integer;       # Good

       The module defines an AUTOLOAD method that maps all other method	calls
       to the uri() method.  Thus, the following return	the same value.

	   $xsd->uri('integer'); #
	   $xsd->integer;	 #

       Andy Wardley <>

       This is version 0.02 of XML::Namespace.

       Copyright (C) 2005 Andy Wardley.	 All Rights Reserved.

       This module is free software; you can redistribute it and/or modify it
       under the same terms as Perl itself.

       The Class::RDF::NS module, distributed as part of Class::RDF, provided
       the inspiration for the module.	XML::Namespace essentially does	the
       same thing, albeit in a slightly	different way.	It's also available as
       a stand-alone module for	use in places unrelated	to RDF.

       The XML::NamespaceFactory module	also implements	similar	functionality
       to XML::Namespace, but instead uses the JClark notation (e.g.

perl v5.32.0			  2005-08-22		     XML::Namespace(3)


Want to link to this manual page? Use this URL:

home | help