downloads | documentation | faq | getting help | mailing lists | reporting bugs | php.net sites | links | my php.net 
search for in the  

<SimpleXMLElement->getNamespaces()SimpleXMLElement->xpath()>
Last updated: Thu, 26 Jun 2008

SimpleXMLElement->registerXPathNamespace()

(PHP 5 >= 5.2.0)

SimpleXMLElement->registerXPathNamespace() — Creates a prefix/ns context for the next XPath query

Description

SimpleXMLElement
bool registerXPathNamespace ( string $prefix , string $ns )

Creates a prefix/ns context for the next XPath query. In particular, this is helpful if the provider of the given XML document alters the namespace prefixes. registerXPathNamespace will create a prefix for the associated namespace, allowing one to access nodes in that namespace without the need to change code to allow for the new prefixes dictated by the provider.

Parameters

prefix

The namespace prefix to use in the XPath query for the namespace given in ns .

ns

The namespace to use for the XPath query. This must match a namespace in use by the XML document or the XPath query using prefix will not return any results.

Return Values

Returns TRUE on success or FALSE on failure.

Examples

Example #1 Setting a namespace prefix to use in an XPath query

<?php

$xml
= <<<EOD
<book xmlns:chap="http://example.org/chapter-title">
   <title>My Book</title>
   <chapter id="1">
       <chap:title>Chapter 1</chap:title>
       <para>Donec velit. Nullam eget tellus vitae tortor gravida scelerisque.
           In orci lorem, cursus imperdiet, ultricies non, hendrerit et, orci.
           Nulla facilisi. Nullam velit nisl, laoreet id, condimentum ut,
           ultricies id, mauris.</para>
   </chapter>
   <chapter id="2">
       <chap:title>Chapter 2</chap:title>
       <para>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Proin
           gravida. Phasellus tincidunt massa vel urna. Proin adipiscing quam
           vitae odio. Sed dictum. Ut tincidunt lorem ac lorem. Duis eros
           tellus, pharetra id, faucibus eu, dapibus dictum, odio.</para>
   </chapter>
</book>
EOD;

$sxe = new SimpleXMLElement($xml);

$sxe->registerXPathNamespace('c', 'http://example.org/chapter-title');
$result = $sxe->xpath('//c:title');

foreach (
$result as $title) {
  echo
$title . "\n";
}

?>

Notice how the XML document shown in the example sets a namespace with a prefix of chap. Imagine that this document (or another one like it) may have used a prefix of c in the past for the same namespace. Since it has changed, the XPath query will no longer return the proper results and the query will require modification. Using registerXPathNamespace avoids future modification of the query even if the provider changes the namespace prefix.



add a noteadd a note User Contributed Notes
Creates a prefix/ns context for the next XPath query
There are no user contributed notes for this page.




<SimpleXMLElement->getNamespaces()SimpleXMLElement->xpath()>
Last updated: Thu, 26 Jun 2008
show source | credits | sitemap | contact | advertising | mirror sites
Copyright © 2001-2005 The PHP Group
All rights reserved.
This unofficial mirror is operated at: http://phpbuilder.com/
Last updated: Tue Nov 1 20:20:59 2005 EST
Columns / Articles | Tips / Quickies | News | News Linking and RSS Feeds | Shared Code Library
Mail Archives | Support / Discussion Forums | Get Started! Links | Contribute! | Docs