2008-12-01 16 views
6

Bir değerin parçasıyla eşleşen bir düğüm bulmanın bir yolu var mı?XSLT, XPath ve InStr

aşağıdaki varsa:

Doğru düğümü maç ve bu başarmış numarası 100.

alacağı nasıl dize "Premier Lig", hatta "Prem" Verilen

<competition id="100" name="Barclays Premier League"/> 
<competition id="101" name="CocaCola Championship" /> 
<competition id="102" name="CocaCola League 1" /> 

, her biri için ve içerir, ancak bu çok verimsiz ve gereksinimlerimiz için yeterince hızlı çalışmıyor.

cevap

14

Dize kullanımı XSLT'nin şaşırtıcı olmadığı bir şey değil, ancak birkaç seçenek var. Bu durumda

sen deneyebilirsiniz:

//competition[contains(@name,'Prem')] 

fazla seçenek ve ayrıntı

için here bkz
+0

Ve sadece kimliği istiyorsanız // yarışması [şunu içerir (@name, "Prem")]/@ id –

+0

bah - çok sayıda düğüm kullanıldığında – annakata

+0

"//" büyük olasılıkla herkesin önünde inkar edilemez bundan söz ediyor - Belli bir şekilde yola çıkacak başka bir yapı bilmedim. – annakata

1

Orada normal ifadeler kullanan "maçları" fonksiyonu, aynı zamanda, ancak bu XSL yalnızca 2.0.

6

Kullanım: diğer durumlarda

        //competition[contains(@name, 'Prem')]/@id

gibi işlevleri: starts-with() veya ends-with() (XPath'ın 2.0 için) yararlı olabilir.