ثبت نام فضا برای XPath (registerXPathNamespace)
تابع registerXPathNamespace() برای XPath یک «فضای نام (Namespace)» ثبت می کند. فضای نام یعنی برچسب یکتاساز تگ ها. بنابراین، پرس وجوهای XPath دقیق و بدون قاطی می شوند.
کاربرد سریع: ثبت پیشوند برای XPath
وقتی XML از پیشوندها استفاده می کند، باید همان پیشوند را به XPath معرفی کنیم. این تابع پیشوند دلخواه را به URI فضای نام وصل می کند.
نگارش (Syntax)
SimpleXMLElement::registerXPathNamespace(prefix, ns)
مثال: جست وجوی عنوان های فصل
در این مثال، پیشوند c را ثبت می کنیم و عنوان ها را با XPath می خوانیم.
<?php
$xml = <<<XML
<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...</para>
</chapter>
<chapter id="2">
<chap:title>Chapter 2</chap:title>
<para>Lorem ipsum dolor sit amet....</para>
</chapter>
</book>
XML;
$sxe = new SimpleXMLElement($xml);
$sxe->registerXPathNamespace('c', 'http://example.org/chapter-title');
$result = $sxe->xpath('//c:title');
foreach ($result as $title) {
echo $title . "<br>";
}
?>
سه گام عملی
- XML را به
SimpleXMLElementبده. - پیشوند و URI را ثبت کن.
- با همان پیشوند، XPath را اجرا کن.
نکته ها و ارتباط ها
نکته: پیشوند آزاد است؛ مهم تطبیق با URI است.
برای دیدن فهرست فضای نام ها، از getNamespaces کمک بگیر. برای فضای نام های «اعلام شده» هم getDocNamespaces را ببین.
اگر به ثبت namespace در XPath نیاز داری، این صفحه راهنمای توست.
جمع بندی سریع
- registerXPathNamespace پیشوند را به URI وصل می کند.
- بدون ثبت، XPath تگ های دارای پیشوند را نمی یابد.
- پیشوند دلخواه است؛ URI باید دقیق باشد.
- برای کشف فضای نام ها از توابع کمکی استفاده کن.