C# Selenium XPath Nedir?
C# Selenium XPath, web tarayıcılarında öğeleri bulmak için kullanılan güçlü bir arama tekniğidir. XPath (XML Path Language), XML belgelerindeki öğeleri bulmak için kullanılan bir dil olarak başlamıştır, ancak web tarayıcılarındaki HTML öğelerini bulmak için de yaygın olarak kullanılmaktadır. XPath, XML dokümanlarındaki öğeleri bulmak için kullanılan bir sorgu dilidir. XPath, HTML dokümanlarına da uygulanabilir ve özellikle web sayfalarındaki belirli öğeleri seçmek için kullanılır.XPath, XML ve HTML gibi belgelerdeki verileri bulmak ve seçmek için kullanılan bir sorgulama dilidir. XPath, bir ağaç yapısı olarak düzenlenen belgeleri tarar ve bir dizi kurala dayanarak belirli öğeleri seçer. Bu kural seti, belgenin hiyerarşik yapısını kullanarak belirli özellikleri hedef alır ve onları ayıklar.
Örneğin, bir XML belgesindeki bir öğeyi seçmek için, XPath ifadesi kullanılabilir. XPath ifadesi, belgenin yapısına uygun olarak yazılır ve bir XPath yürütücüsü tarafından yorumlanarak öğeleri seçmek için kullanılır.
XPath, belgeyi etiket ve öznitelikler arasında tarar ve belirli özelliklere dayalı olarak seçim yapar. Bu nedenle, XML veya HTML belgelerinin yapısını anlamak ve XPath ifadeleri yazmak için bir takım beceriler gereklidir. Bununla birlikte, XPath, web sayfalarından veya veri kaynaklarından veri çekmek için çok kullanışlı bir araçtır ve web scraping veya veri madenciliği gibi alanlarda yaygın olarak kullanılmaktadır.
XPath'in Kullanıldığı Programlama Dilleri ve Kütüphaneler
XPath, birçok programlama dili ve çerçeve tarafından desteklenir. Özellikle web geliştirme alanında kullanılan birçok araç ve teknoloji, XPath kullanır. Bunlar arasında:- Python: lxml, BeautifulSoup, Scrapy, Selenium gibi kütüphaneler XPath kullanarak web tarama ve veri çekme işlemleri gerçekleştirir.
- Java: XPath, Java'nın standart XML API'sinin bir parçasıdır. Java programlama dili ile birlikte kullanılabilir.
- JavaScript: JavaScript, XPath kullanımını destekleyen bir dizi kütüphane ile birlikte kullanılabilir. Örneğin, jQuery ve Cheerio kütüphaneleri XPath kullanarak HTML belgelerini manipüle edebilir.
- Ruby: Ruby ile birlikte Nokogiri gibi kütüphaneler, XPath kullanarak XML ve HTML belgeleri üzerinde işlem yapabilir.
- PHP: PHP ile birlikte SimpleXML veya DOMDocument gibi kütüphaneler, XPath kullanarak XML ve HTML belgeleri üzerinde işlem yapabilir. .NET: .NET çerçevesi, System.Xml.XPath sınıfı aracılığıyla XPath kullanımını destekler.
C# Selenium XPath Nasıl Kullanılır?
C# Selenium'da XPath kullanmak oldukça basittir. İşte bir örnek: IWebElement element = driver.FindElement(By.XPath("//div[@id='example']")); Bu örnekte, "example" id'sine sahip bir div öğesini buluyoruz.C# Selenium XPath Faydaları Nedir?
C# Selenium XPath kullanmanın birçok avantajı vardır. Bunlar arasında öğeleri hassas bir şekilde tanımlama, dinamik ve karmaşık yapıları ele alma yeteneği ve tarayıcı bağımsızlığı bulunmaktadır.C# Selenium XPath Neden Kullanmalıyız?
C# Selenium XPath kullanmak, özellikle CSS seçicileriyle gelen sınırlamalardan kaçınmanıza yardımcı olabilir. XPath, daha karmaşık aramalar yapmanıza ve öğeleri daha spesifik bir şekilde tanımlamanıza imkan tanır.HTML XPath Kullanımı ve Çeşitleri: Detaylı Anlatım
XPath, belgeyi etiket ve öznitelikler arasında tarar ve belirli özelliklere dayalı olarak seçim yapar. Bu nedenle, XML veya HTML belgelerinin yapısını anlamak ve XPath ifadeleri yazmak için bir takım beceriler gereklidir. Bununla birlikte, XPath, web sayfalarından veya veri kaynaklarından veri çekmek için çok kullanışlı bir araçtır ve web scraping veya veri madenciliği gibi alanlarda yaygın olarak kullanılmaktadır.XPath Çeşitleri
Mutlak XPath
Mutlak XPath, bir HTML sayfasındaki öğeleri tam yolunu kullanarak belirler. Bu yol, HTML dokümanı içindeki öğelerin hiyerarşik yapısını takip eder.Göreceli XPath
Göreceli XPath, bir HTML sayfasındaki öğeleri göreli konumlarına göre belirler. Bu, bir öğenin bir başka öğeden kaç düğüm uzakta olduğunu belirterek yapılır.XPath İşlevleri
XPath işlevleri, bir XPath ifadesinde kullanılabilecek önceden tanımlanmış işlevlerdir. XPath işlevleri, belirli bir öğeyi bulmak için kullanılabilir.
Kod:
//tagname - Tüm belgedeki belirli bir etiketi seçer.
Örnek:
$x("//h2");
$x("//div");
$x("//h1");
$x("//input");
------------------------------------------------------------------------------------------------------------------------------------
//tagname[@attribute='value'] - Belirli bir öznitelik değerine sahip bir etiketi seçer.
Örnek:
$x("//span[@class='ebs']");
$x("//div[@role='link']");
$x("//input[@href='www']");
------------------------------------------------------------------------------------------------------------------------------------
//tagname[@attribute1='value1' and @attribute2='value2'] - Birden fazla öznitelik değerine sahip bir etiketi seçer.
örnek:
$x("//a[@role='link' and contains(@class, 'css-4rbku5 css-18t94o4 css-1dbjc4n r-1loqt21 r-1wbh5a2 r-dnmrzs r-1ny4l3l')]")[0];
$x("//a[@role='link' and @class['css-4rbku5 css-18t94o4 css-1dbjc4n r-1loqt21 r-1wbh5a2 r-dnmrzs r-1ny4l3l']]")
------------------------------------------------------------------------------------------------------------------------------------
//tagname[text()='text'] - Belirli bir metin içeren etiketi seçer.
$x("//*[text()='En Popüler Makaleler']")[0].click();
$x("//span[text()='En Popüler Makaleler']")[0].click();
------------------------------------------------------------------------------------------------------------------------------------
//tagname[contains(text(),'text')] - Belirli bir metni içeren etiketi seçer.
$x("//a[contains(@class,'css-4rbku5 css-18t94o4 css-1dbjc4n r-1loqt21 r-1wbh5a2 r-dnmrzs r-1ny4l3l') ]")
$x("//p[contains(text(),'lorem')]"); // p elementinde lorem olanı bulur.
------------------------------------------------------------------------------------------------------------------------------------
//parenttagname/tagname - Belirli bir ana etiketin altındaki belirli bir etiketi seçer.
$x("//ul/li");
$x("//body//div");
------------------------------------------------------------------------------------------------------------------------------------
//tagname[position()] - Belirli bir konumda olan etiketi seçer.
$x("//*[@class='list-group-item' and position() <= 5]");
$x("//*[@dir='ltr' and @class='css-901oao r-vlxjld r-1qd0xha r-a023e6 r-b88u0q r-rjixqe r-1bymd8e r-bcqeeo r-qvutc0' and position() <=3]")
------------------------------------------------------------------------------------------------------------------------------------
//tagname[last()] - Son etiketi seçer.
Örnek:
$x("//*[@class='list-group-item'][last()]")[0].innerText;
------------------------------------------------------------------------------------------------------------------------------------
//tagname[@attribute1='value1'][@attribute2='value2'] - Birden fazla öznitelik değerine sahip bir etiketi seçer.
$x("//*[@dir='ltr'][@class='css-901oao r-vlxjld r-1qd0xha r-a023e6 r-b88u0q r-rjixqe r-1bymd8e r-bcqeeo r-qvutc0']")
------------------------------------------------------------------------------------------------------------------------------------
//tagname[not(@attribute='value')] - Belirli bir öznitelik değerine sahip olmayan etiketi seçer.
$x("//img[not(@alt)]")[0]; // imageslerde alt etiketi olmayanlar
$x("//a[not(@href)]"); // href boş olan a ları listeler
------------------------------------------------------------------------------------------------------------------------------------
//tagname/following-sibling::siblingtagname - Belirli bir etiketten sonraki kardeş etiketi seçer.
örnek Html
<div class="parent">
<h2>Heading 1</h2>
<p>Paragraph 1</p>
<h2>Heading 2</h2>
<p>Paragraph 2</p>
<h2>Heading 3</h2>
<p>Paragraph 3</p>
</div>
$x("//h2[text()='Heading 1']/following-sibling::p"); // h2 text verisi ="Heading 1" olanın bir altındaki p verisini getir diyoruz.
------------------------------------------------------------------------------------------------------------------------------------
//tagname/ancestor::ancestorname - Belirli bir etiketin atası olan belirli bir etiketi seçer.
örnek html
<div class="grandparent">
<div class="parent">
<span class="child"></span>
</div>
</div>
Burada, ancestor:: eksenini kullanarak, span etiketinin atası olan div etiketini seçebiliriz. Bu durumda, //span/ancestor::div XPath ifadesi kullanılabilir.
$x("//span/ancestor:div");
------------------------------------------------------------------------------------------------------------------------------------
//tagname/descendant::descendantname - Belirli bir etiketin altındaki belirli bir alt etiketi seçer.
örnek html
<div class="parent">
<h2>Üst Başlık</h2>
<p>
Alt paragraf
<a href="#">Alt bağlantı</a>
</p>
<ul>
<li>Alt liste öğesi 1</li>
<li>Alt liste öğesi 2</li>
</ul>
</div>
$x("//div[@class='parent']/descendant::a");
------------------------------------------------------------------------------------------------------------------------------------
//tagname[position() < 3] - Belirli bir pozisyonda olan ilk iki etiketi seçer.
Html Örneği
<div>
<h2>İlk Üç Etiket</h2>
<p>Birinci paragraf</p>
<p>İkinci paragraf</p>
<p>Üçüncü paragraf</p>
<p>Dördüncü paragraf</p>
</div>
$x("//p[position() < 3]");
$x("//*[@class='list-group']//a[position() < 4]");
------------------------------------------------------------------------------------------------------------------------------------
//tagname[contains(@attribute, 'text')] - Belirli bir öznitelikte belirli bir metni içeren etiketi seçer.
$x("//*[contains(@target, 'blank')]");
$x("//*[contains(@class, 'css-901oao css-16my406 r-poiln3 r-bcqeeo r-qvutc0')]");
------------------------------------------------------------------------------------------------------------------------------------
//tagname[@attribute1='value1' or @attribute2='value2'] - Birden fazla öznitelik değerlerinden herhangi birine sahip olan etiketi seçer.
Html Örneği
<div id="example">
<a class="link" href="#">Link 1</a>
<a class="link" href="#">Link 2</a>
<a class="link" href="#" target="_blank">Link 3</a>
<a class="link" href="#" target="_blank">Link 4</a>
</div>
$x("//a[@class='link' and (@target='_blank' or @href='#')]");
----------------------------------------------------------------------------------------------------------------------------------------
//"sum(//tagname[@attribute1='value'])"); - Verilen Elementlerdeki sayıları toplamaya yarar.
html örneği
<table>
<tr>
<th>İsim</th>
<th>Yaş</th>
</tr>
<tr>
<td>Ahmet</td>
<td class='erkek'>25</td>
</tr>
<tr>
<td>Ali</td>
<td class='erkek'>30</td>
</tr>
<tr>
<td>Ayşe</td>
<td class='kadın'>27</td>
</tr>
<tr>
<td>fatma</td>
<td class='kadın'>37</td>
</tr>
<tr>
<td>meryem</td>
<td class='kadın'>20</td>
</tr>
<tr>
<td>ebubekir</td>
<td class='erkek'>32</td>
</tr>
<tr>
<td>tahsen</td>
<td class='erkek'>34</td>
</tr>
</table>
$x("sum(//*[@class='kadın'])");
$x("sum(//*[@class='erkek'])");
------------------------------------------------------------------------------------------------------------------------------------
//"count(//tagname[@attribute1='value'])"); - Verilen Elementlerdeki sayıları toplamaya yarar.
Html Örneği
<table>
<tr>
<th>İsim</th>
<th>Yaş</th>
</tr>
<tr>
<td>Ahmet</td>
<td class='erkek'>25</td>
</tr>
<tr>
<td>Ali</td>
<td class='erkek'>30</td>
</tr>
<tr>
<td>Ayşe</td>
<td class='kadın'>27</td>
</tr>
<tr>
<td>fatma</td>
<td class='kadın'>37</td>
</tr>
<tr>
<td>meryem</td>
<td class='kadın'>20</td>
</tr>
<tr>
<td>ebubekir</td>
<td class='erkek'>32</td>
</tr>
<tr>
<td>tahsen</td>
<td class='erkek'>34</td>
</tr>
</table>
$x("count(//*[@class='kadın'])");
$x("count(//*[@class='erkek'])");
------------------------------------------------------------------------------------------------------------------------------------
//concat(//tagname/text(), " - ", //tagname/text()) - Belirtilen XPath ifadelerindeki değerleri birleştirir.
Örnek:
$x("concat(//*[@dir='ltr'][@class='css-901oao r-1awozwy r-vlxjld r-6koalj r-1qd0xha r-a023e6 r-b88u0q r-rjixqe r-bcqeeo r-1udh08x r-3s2u2q r-qvutc0'], ' - ', //*[@role='link'][@class='css-4rbku5 css-18t94o4 css-1dbjc4n r-1loqt21 r-1wbh5a2 r-dnmrzs r-1ny4l3l'])")
Örnek:
concat(//h1/text(), ' - ', //h2/text())
------------------------------------------------------------------------------------------------------------------------------------
substring(//tagname[@attribute='value']) - Belirtilen XPath ifadesindeki bir metnin belirli bir bölümünü döndürür.
Örnek: substring(//p/text(), 1, 10)
$x("substring(//*[@role='link' and @class='css-4rbku5 css-18t94o4 css-1dbjc4n r-1loqt21 r-1wbh5a2 r-dnmrzs r-1ny4l3l'] ,1, 11)")
$x("substring(//*[@role='link' and @class='css-4rbku5 css-18t94o4 css-1dbjc4n r-1loqt21 r-1wbh5a2 r-dnmrzs r-1ny4l3l']/@href ,1, 11)")
------------------------------------------------------------------------------------------------------------------------------------
normalize-space(//tagname[@attributename]) - Belirtilen XPath ifadesindeki boşluk karakterlerini kaldırır.
Örnek:
$x("normalize-space(//*[@dir='ltr'][@class='css-901oao r-1awozwy r-vlxjld r-6koalj r-1qd0xha r-a023e6 r-b88u0q r-rjixqe r-bcqeeo r-1udh08x r-3s2u2q r-qvutc0'])");
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
//tagname[starts-with(text(), 'value')] - Belirli bir metin önekiyle başlayan içeriği olan etiketi seçer.
örnek:
$x("//a[starts-with(@href, 'https:')]");
$x("//img[starts-with(@src, 'http:')]");
------------------------------------------------------------------------------------------------------------------------------------
//tagname[ends-with(text(), 'value')] - Belirli bir metin son ekine sahip içeriği olan etiketi seçer.
Örnek:
$x("//img[ends-with(src, 'png')]")
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
//tagname[@attribute='value']/child::siblingtagname - Belirli bir öznitelik değerine sahip bir etiketin belirli bir alt etiketini seçer.
------------------------------------------------------------------------------------------------------------------------------------
//tagname[not(text()='text')] - Belirli bir metin içermeyen etiketi seçer.
------------------------------------------------------------------------------------------------------------------------------------
//tagname[@attribute='value']/ancestor::ancestorname - Belirli bir öznitelik değerine sahip bir etiketin atası olan belirli bir etiketi seçer.
------------------------------------------------------------------------------------------------------------------------------------
//tagname[@attribute='value']/descendant::descendantname - Belirli bir öznitelik değerine sahip bir etiketin altındaki belirli bir alt etiketi seçer.
------------------------------------------------------------------------------------------------------------------------------------
//tagname/following::siblingtagname - Belirli bir etiketten sonraki tüm kardeş etiketlerini seçer.
------------------------------------------------------------------------------------------------------------------------------------
//tagname[@attribute='value'][last()] - Belirli bir öznitelik değerine sahip son etiketi seçer.
------------------------------------------------------------------------------------------------------------------------------------
//tagname[@attribute1='value1'][@attribute2='value2'][last()] - Birden fazla öznitelik değerine sahip son etiketi seçer.
------------------------------------------------------------------------------------------------------------------------------------
//tagname/preceding::siblingtagname - Belirli bir etiketten önceki tüm kardeş etiketleri seçer.
------------------------------------------------------------------------------------------------------------------------------------
//tagname[@attribute]/ancestor::ancestorname - Belirli bir öznitelik değerine sahip bir etiketin atası olan belirli bir etiketi seçer.
------------------------------------------------------------------------------------------------------------------------------------
//tagname[count(tagname2) = 3] - Belirli bir etikette belirli bir alt etiketin tam olarak üç kez geçtiği etiketi seçer.
------------------------------------------------------------------------------------------------------------------------------------
//tagname[substring(@attribute, 1, 5)='value'] - Belirli bir öznitelik değerinin belirli bir alt dizesine sahip olan etiketi seçer.
------------------------------------------------------------------------------------------------------------------------------------
//tagname[@attribute][1] - Belirli bir öznitelik değerine sahip ilk etiketi seçer.
------------------------------------------------------------------------------------------------------------------------------------
//tagname[self::tagname] - Kendisi belirli bir etiket olan etiketi seçer.
------------------------------------------------------------------------------------------------------------------------------------
//tagname[following::siblingtagname] - Belirli bir etiketten sonraki en yakın kardeş etiketi seçer.
------------------------------------------------------------------------------------------------------------------------------------
//tagname[not(@attribute)] - Belirli bir özniteliği olmayan etiketi seçer.
------------------------------------------------------------------------------------------------------------------------------------
//tagname[parent::parenttagname] - Belirli bir üst etikete sahip etiketi seçer.
------------------------------------------------------------------------------------------------------------------------------------
//tagname[following-sibling::siblingtagname] - Belirli bir etiketten sonraki tüm kardeş etiketleri seçer.
------------------------------------------------------------------------------------------------------------------------------------
//tagname[position()=last()] - Son etiketi seçer.
------------------------------------------------------------------------------------------------------------------------------------
//tagname[position()=last()-1] - Son ikinci etiketi seçer.
------------------------------------------------------------------------------------------------------------------------------------
//tagname[not(starts-with(@attribute, 'text'))] - Belirli bir metinle başlamayan özniteliğe sahip etiketi seçer.
------------------------------------------------------------------------------------------------------------------------------------
//tagname[substring-after(@attribute, 'text')='value'] - Belirli bir metinden sonra gelen alt dizeye sahip olan öznitelik değerine sahip etiketi seçer.
------------------------------------------------------------------------------------------------------------------------------------
//tagname[translate(@attribute, 'ABC', 'abc')='value'] - Belirli bir öznitelik değerindeki belirli karakterleri değiştirerek arama yapar.
------------------------------------------------------------------------------------------------------------------------------------
//tagname[matches(@attribute, 'regex')] - Belirli bir düzenli ifadeyle eşleşen öznitelik değerine sahip etiketi seçer.
------------------------------------------------------------------------------------------------------------------------------------
//tagname[@attribute1='value1'][@attribute2='value2'] - Birden fazla öznitelik değerine sahip etiketi seçer.
------------------------------------------------------------------------------------------------------------------------------------
//tagname[not(child::*)] - Herhangi bir alt etiketi olmayan etiketi seçer.
------------------------------------------------------------------------------------------------------------------------------------
//tagname[not(self::tagname)] - Belirli bir etiket türüne sahip olmayan etiketi seçer.
------------------------------------------------------------------------------------------------------------------------------------
//tagname[position() mod 2 = 0] - Pozisyonu çift sayı olan etiketleri seçer.
------------------------------------------------------------------------------------------------------------------------------------
//tagname[@attribute][position() mod 2 = 0] - Belirli bir öznitelik değerine sahip pozisyonu çift sayı olan etiketleri seçer.
------------------------------------------------------------------------------------------------------------------------------------
//tagname[following::siblingtagname][position() = 1] - Belirli bir etiketten sonraki ilk kardeş etiketi seçer.
------------------------------------------------------------------------------------------------------------------------------------
//tagname[not(contains(@attribute, 'text'))] - Belirli bir metni içermeyen öznitelik değerine sahip etiketi seçer.
------------------------------------------------------------------------------------------------------------------------------------
//tagname[substring-before(@attribute, 'text')='value'] - Belirli bir metinden önceki alt dizeye sahip olan öznitelik değerine sahip etiketi seçer.
------------------------------------------------------------------------------------------------------------------------------------
//tagname[translate(@attribute, 'ABC', 'abc')='value' or @attribute='value'] - Belirli bir öznitelik değerindeki belirli karakterleri değiştirerek veya belirli bir öznitelik değerine sahip etiketi seçer.
------------------------------------------------------------------------------------------------------------------------------------
//tagname[not(@attribute='value')] - Belirli bir öznitelik değerine sahip olmayan etiketi seçer.
------------------------------------------------------------------------------------------------------------------------------------
//tagname[count(child::*) >= 2] - En az iki alt etikete sahip etiketi seçer.
------------------------------------------------------------------------------------------------------------------------------------
//tagname[count(descendant::*) = 0] - Herhangi bir alt etiketi olmayan etiketi seçer.
------------------------------------------------------------------------------------------------------------------------------------
//tagname[substring-after(@attribute, 'text')!='value'] - Belirli bir metinden sonra gelen alt dizesine sahip olmayan öznitelik değerine sahip etiketi seçer.
------------------------------------------------------------------------------------------------------------------------------------
//tagname[not(matches(@attribute, 'regex'))] - Belirli bir düzenli ifadeyle eşleşmeyen öznitelik değerine sahip etiketi seçer.
------------------------------------------------------------------------------------------------------------------------------------
//tagname[position() > 1 and position() < last()] - İlk ve son etiketler dışındaki etiketleri seçer.
------------------------------------------------------------------------------------------------------------------------------------
//tagname[count(tagname2) > 3] - Belirli bir etikette belirli bir alt etiketin üçten fazla kez geçtiği etiketi seçer.
------------------------------------------------------------------------------------------------------------------------------------
//tagname[not(ancestor::ancestorname)] - Belirli bir atası olmayan etiketi seçer.
------------------------------------------------------------------------------------------------------------------------------------
//tagname[ancestor-or-self::ancestorname] - Belirli bir atası veya kendisi belirli bir etiketi seçer.
------------------------------------------------------------------------------------------------------------------------------------
//tagname[descendant-or-self::descendantname] - Belirli bir alt etiketi veya kendisi belirli bir etiketi seçer.
------------------------------------------------------------------------------------------------------------------------------------
//tagname[count(preceding-sibling::*) > 1] - Birden fazla önceki kardeş etikete sahip etiketi seçer.
------------------------------------------------------------------------------------------------------------------------------------
//tagname[count(following-sibling::*) > 1] - Birden fazla sonraki kardeş etikete sahip etiketi seçer.
------------------------------------------------------------------------------------------------------------------------------------
//tagname[not(preceding-sibling::*)] - İlk kardeş etiketi seçer.
------------------------------------------------------------------------------------------------------------------------------------
//tagname[not(following-sibling::*)] - Son kardeş etiketi seçer.
------------------------------------------------------------------------------------------------------------------------------------
//tagname[count(ancestor::*) = n] - N atasına sahip etiketi seçer.
------------------------------------------------------------------------------------------------------------------------------------
//tagname[count(descendant::*) = n] - N alt etiğine sahip etiketi seçer.
------------------------------------------------------------------------------------------------------------------------------------
//tagname[@attribute1 and not(@attribute2)] - Belirli bir öznitelik değerine sahip olan ancak belirli bir öznitelik değerine sahip olmayan etiketi seçer.
------------------------------------------------------------------------------------------------------------------------------------
//tagname[@attribute1 or @attribute2] - İki belirli öznitelik değerinden herhangi birine sahip olan etiketi seçer.
------------------------------------------------------------------------------------------------------------------------------------
//tagname[@attribute1='value1' and @attribute2='value2'] - Belirli iki öznitelik değerine sahip olan etiketi seçer.
------------------------------------------------------------------------------------------------------------------------------------
//tagname[count(ancestor::*) = count(descendant::*)] - Ata sayısıyla alt etiket sayısı eşit olan etiketi seçer.
------------------------------------------------------------------------------------------------------------------------------------
//tagname[count(ancestor::*) > count(descendant::*)] - Ata sayısı alt etiket sayısından büyük olan etiketi seçer.
------------------------------------------------------------------------------------------------------------------------------------
//tagname[count(ancestor::*) < count(descendant::*)] - Ata sayısı alt etiket sayısından küçük olan etiketi seçer.
------------------------------------------------------------------------------------------------------------------------------------
//tagname[@attribute='value'][1] - Belirli bir öznitelik değerine sahip olan ilk etiketi seçer.
------------------------------------------------------------------------------------------------------------------------------------
//tagname[@attribute='value'][last()] - Belirli bir öznitelik değerine sahip olan son etiketi seçer.
------------------------------------------------------------------------------------------------------------------------------------
//tagname[starts-with(@attribute, 'value')] - Belirli bir metin önekiyle başlayan öznitelik değerine sahip etiketi seçer.
------------------------------------------------------------------------------------------------------------------------------------
//tagname[ends-with(@attribute, 'value')] - Belirli bir metin son ekine sahip öznitelik değerine sahip etiketi seçer.
------------------------------------------------------------------------------------------------------------------------------------
//tagname[substring(@attribute, 1, n) = 'value'] - Belirli bir konumda başlayan belirli bir metne sahip öznitelik değerine sahip etiketi seçer.
------------------------------------------------------------------------------------------------------------------------------------
//tagname[not(child::*)] - Herhangi bir alt etiketi olmayan etiketi seçer.
------------------------------------------------------------------------------------------------------------------------------------
//tagname[child::tagname2] - Belirli bir alt etikete sahip olan etiketi seçer.
------------------------------------------------------------------------------------------------------------------------------------
//tagname[not(self::tagname2)] - Belirli bir etiketle aynı etikete sahip olmayan etiketi seçer.
------------------------------------------------------------------------------------------------------------------------------------
//tagname[not(contains(@attribute, 'value'))] - Belirli bir metni içermeyen öznitelik değerine sahip etiketi seçer.
------------------------------------------------------------------------------------------------------------------------------------
//tagname[position() mod n = 0] - Belirli bir pozisyona sahip olan her n'inci etiketi seçer.
------------------------------------------------------------------------------------------------------------------------------------
//tagname[not(@attribute='value')] - Belirli bir öznitelik değerine sahip olmayan etiketi seçer.
------------------------------------------------------------------------------------------------------------------------------------
//tagname[count(ancestor::*) > n] - N'den fazla ata etiketi olan etiketi seçer.
------------------------------------------------------------------------------------------------------------------------------------
//tagname[count(ancestor::*) < n] - N'den az ata etiketi olan etiketi seçer.
------------------------------------------------------------------------------------------------------------------------------------
//tagname[count(descendant::*) > n] - N'den fazla alt etiketi olan etiketi seçer.
------------------------------------------------------------------------------------------------------------------------------------
//tagname[count(descendant::*) < n] - N'den az alt etiketi olan etiketi seçer.
------------------------------------------------------------------------------------------------------------------------------------
//tagname[matches(text(), 'regex')] - Belirli bir düzenli ifadeyle eşleşen içeriği olan etiketi seçer.
------------------------------------------------------------------------------------------------------------------------------------
//tagname[not(matches(text(), 'regex'))] - Belirli bir düzenli ifadeyle eşleşmeyen içeriği olan etiketi seçer.
//tagname[text() = 'value'] - Belirli bir içeriğe sahip etiketi seçer.

