(PHP 5 >= 5.2.0, PHP 7)
SimpleXMLElement::registerXPathNamespace — Sonraki XPath ifadesi için bir önek/isim alanı bağlamı oluşturur
$önek
, string $isimalanı
)Sonraki XPath ifadesi için bir önek/isim alanı bağlamı oluşturur. Özellikle, XML belgenin, isim alanı öneklerinin değiştirilmesi durumunda kullanışlıdır. Bu yöntem, isim alanındaki düğümlere kodda değişiklik yapmadan erişmek amacıyla ilişkili isim alanı için bir önek oluşturur.
önek
isimalanı
ile belirtilen isim alanı için Xpath
ifadesinde kullanılacak isim alanı öneki.
isimalanı
Xpath ifadesi için kullanılacak isim alanı. Belirtilen
önek
'in kullanıldığı XPath ifadeleri veya XML
belgelerinin bir sonuç üretmesi için kullanılacak isim alanı.
Başarı durumunda TRUE
, başarısızlık durumunda FALSE
döner.
Örnek 1 - Bir XPath ifadesinde kullanılacak isim alanı önekinin belirtilmesi
<?php
$xml = <<<EOD
<book xmlns:chap="http://example.org/chapter-title">
<title>XPath Kitabı</title>
<chapter id="1">
<chap:title>1. Fasıl</chap:title>
<para>Önemli ifade çeşitlerinden biri konumsal yoldur. Bir konumsal
yol bağlamsal düğüme göreli olarak bir düğüm kümesini seçer. İfadenin
konumsal yol olduğu durumda değerlendirme sonucu, konumsal yol
tarafından seçilen düğümleri içeren düğüm kümesidir. Konumsal yollar
düğüm kümelerini süzmekte kullanılan ifadeleri dönüşümlü olarak
içerebilir. İki çeşit konumsal yol vardır: Göreli konumsal yollar ve
mutlak konumsal yollar.</para>
</chapter>
<chapter id="2">
<chap:title>2. Fasıl</chap:title>
<para>Bir göreli konumsal yol, / imleriyle birbirlerinden ayrılmış bir
veya daha fazla konumdan oluşur. Göreli konumsal yoldaki bu konumlar
soldan sağa birlikte bir bütün oluştururlar. Her konumda bağlamsal
düğüme göreli bir düğüm kümesi seçilir ve kümedeki her düğüm sonraki
konumun bağlamsal düğümü olur. Bir mutlak konumsal yol / iminden sonra
gelen bir göreli konumsal yoldan oluşur. Tek başına / imi, bağlamsal
düğümü içeren belgenin kök düğümünü seçer. Kök düğüm, bu imden sonra
gelen göreli konumsal yolun ilk konumunun bağlamsal düğümü olur.</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";
}
?>
Örnekte, bir isim alanının chap önekiyle bir XML belgede nasıl gösterildiğine dikkat edin. Bu belgenin (veya bir benzerinin) geçmişte, aynı isim alanı için c önekini kullanmış olduğunu varsayalım. Önek değiştiğinden XPath ifadesi beklenen sonucu vermeyecek ve ifadenin değiştirilmesi gerekecektir. İşte bu noktada registerXPathNamespace ile bu gibi önek değişikliklerinde ifadenin değiştirilmesi gereğini ortadan kaldırmak mümkün olur.