2008-12-01 12 views
6

Czy istnieje sposób na znalezienie węzła dopasowanego do części wartości.XSLT, XPath i InStr

Jeśli mam następujące:

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

Biorąc pod uwagę ciąg "Premier League" czy nawet "Prem", w jaki sposób dopasować prawidłowy węzeł i pobierz id 100.

udało mi się to Używanie for-each i zawiera, ale jest to bardzo nieefektywne i nie działa wystarczająco szybko dla naszych wymagań.

Odpowiedz

14

Obsługa łańcuchów nie jest czymś XSLT jest niesamowite, ale istnieje kilka opcji.

W tym przypadku można spróbować:

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

zobaczyć here po więcej informacji i szczegółów

+0

A jeśli chcesz tylko id to // konkurencja [zawiera (@name, "Prem")]/@ id –

+0

bah - zbyt przyzwyczajony do pracy z zestawami węzłów – annakata

+0

"//" jest prawdopodobnie niewskazany, zanim ktokolwiek inny wspomina o tym - po prostu nie znałem żadnej innej struktury na ścieżce. – annakata

1

Istnieje również funkcja „dopasowania”, który używa wyrażeń regularnych, ale ta jest dostępna tylko w XSL 2.0.

6

Zastosowanie:

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

W innych przypadkach funkcje takie, jak: starts-with() lub ends-with() Xpath (2.0) może być użyteczne.