2012-02-06 24 views
8

XPath'ın starts-with işlevini, değerinin yerine düğümün adına uygulamak için bir yol var mı? İster metin düğümlerine, örneğin dayalı arama yapmak starts-with kullanmak mümkün olduğunuBelirli bir desene uyan düğüm adları için XPath sorgusu

<?xml version="1.0" encoding="UTF-8" ?> 
<RootNode> 
    <FOObar xmlns="http://sample.example.com"> 
     <value>numOne</value> 
    </FOObar> 
    <FOObaz xmlns="http://sample.example.com"> 
     <value>numTwo</value> 
    </FOObaz> 
    <notFOO xmlns="http://sample.example.com"> 
     <value>numThree</value> 
    </notFOO> 
</RootNode> 

alıyorum: Ben notFOO düğüm seçmeden aşağıdaki XML belgesinden FOObar ve FOObaz düğümleri seçmek istediğiniz

//sample:value[starts-with(.,'num')] 

Sözdizimsel olarak geçerli olan aşağıdakileri yazmanın bir yolu var mı?

//sample:[starts-with(node(),'FOO')] 

Bu soru

aslında bir SSCCE ile geldi, ama şimdi soru cevap olduğunu, tüm bu kod sadece dağınıklığı olduğunu. Tabii ki revision history'da da mevcut.

cevap

22

adıyla düğümler başvurmak için name() veya local-name() işlevlerini kullanın:

//*[starts-with(local-name(), 'FOO')] 
+0

Ah, saatlerce() '' yerel-name gibi bir şey arıyordum. Böyle bir işlevin olmadığını düşünmeye başlamıştım. Gelecek ziyaretçiler için FYI, bu cevap isim-alanı ile uyumludur: '// örnek: * [ile-başlar (yerel-isim(), 'FOO')]' – Pops

+2

'Yerel-isim' için W3C özellikleri: http: // www .w3.org/TR/xpath/# fonksiyon-yerel-name – Pops

İlgili konular