XPath, DOM üzerinde sorgulama yapan dildir (XML Path Language). XML yolunuzu bulabilmek için geliştirilmiştir 1999'dan beri devam etmektedir.

Ufak tefek revizyonlar yayınlanmaktadır. Arkasında her zamanki gibi W3C bulunmaktadır. Detaylı incelemek için W3 XPATH yolunu takip ederek irdeleyebilirisiniz.

XPATH, XPOINTER, XLST ve diğer XML teknolojileri kullanarak tasarlanmıştır.

XPath yazarken root eleman, çocuk eleman vs. gibi kavramları öğrenmek için XML Giriş incelemenizi tavsiye ederim.

Daha önce kullandığımız kutuphane.xml üzerinden devam edeceğiz. Hatırlamak gerekirse;

<kitaplar>
	<kitap isbn="9759954949">
		<adi>Yunus Emre Divanı</adi>
		<yazar gorev="Derleyici">Selim Yağmur</yazar>
		<dil>Türkçe</dil>
		<baski>8</baski>
		<tarih>
			<yil>2014</yil>
			<ay>04</ay>
			<gun>01</gun>
		</tarih>
	</kitap>
	<kitap isbn="9753386203">
		<adi>Risaletü'n-Nushiyye Yunus Emre</adi>
		<yazar gorev="Çevirmen">Prof. Dr. Umay Türkeş Günay</yazar>
		<dil>Türkçe</dil>
		<baski>3</baski>
		<tarih>
			<yil>2009</yil>
			<ay>01</ay>
			<gun>01</gun>
		</tarih>
	</kitap>
</kitaplar>

Şimdi XML'den yola çıkarak kitap elemanlarını bir değişkene aktarıp burdan sadece başlıkları listeleyelim.

<?php
$xml = simplexml_load_file("kutuphane.xml"); // kutuphaneyi değişkene aktarıyoruz
$sonuclar = $xml->xpath('kitap'); // kitap elemanına sahip bütün elemanları sonuclar değişkenine atadık.
foreach ($sonuclar as $key => $value) {
echo $value->adi; // kitap elemanlarının altındaki adi elemanının değerini ekrana yazdırıyoruz
}
?>
// Ekran Çıktısı
Yunus Emre Divanı
Risaletü'n-Nushiyye Yunus Emre

Yani xpath('eleman') şeklinde kullandığımızda, o elemanların getiriyor. Şimdi diğer örneğimiz xpath('/eleman') şeklinde kullanımda ise full path olarak adlandırılan yani kök'ten gitmek yola kadar sıralı bir şekilde yazmanız gerek.

<?php
$xml = simplexml_load_file("kutuphane.xml"); // kutuphaneyi değişkene aktarıyoruz
$sonuclar = $xml->xpath('/kitaplar/kitap'); // kitaplar kökünün altındaki kitap elemanına sahip bütün elemanları sonuclar değişkenine atadık.
foreach ($sonuclar as $key => $value) {
echo $value->adi; // kitap elemanlarının altındaki adi elemanının değerini ekrana yazdırıyoruz
}
?>
// Ekran Çıktısı
Yunus Emre Divanı
Risaletü'n-Nushiyye Yunus Emre

Yine aynı sonucu aldık yukarıda görmüş olduğunuz gibi.