2010-07-27 21 views
6

XSLT'de // nedir? (Örn $currentPage//node) bir yol eşleşen verilen düğümler için ağaç aramak için XSLT içinde kullanılabilir XPath, bir parçası gibi görünüyorXSLT'de // nedir?

+0

İyi soru (+1). Tam ve ayrıntılı bir açıklama için cevabımı görün. –

cevap

8

neyi// xslt içinde? Örneğin. ($ CurrentPage // düğüm) kısaltması XPath'daki

:

// is short for /descendant-or-self::node()/

(örneğin select nitelik olarak) xslt talimatları bazı niteliklerin değeri olmalıdır XPath ifadesi. Bu nedenle

,

($currentPage//node) 

Bu ya içinde bulunan düğümlerin değişken $currentPage ya vardır soyundan içinde bulunan düğümler çocuklarıdır node adlı tüm unsurları seçer

($currentPage/descendant-or-self::node()/node) 

açılımı $currentPage değişkeni.

sağlanan ifadesinde node() bir düğüm testi (böyle elemanlar, metin düğümlerinin, yorum ve işleme-talimatları gibi descendant-or-self:: eksen üzerindeki tüm düğüm tipleri, seçer olduğunu dikkat etmeyin.

Açık diğer taraf, somePath/nodesomePath/child::node için bir kısaltmadır ve sadece bağlam düğümün çocukları olan node adlı elemanlarını seçer.

şiddetle kaçınmak için bir element için isim node kullanmamayı tavsiye Bu karışıklık.

+0

@Dimitre - İyi bir cevabın ne olduğuna karar verdim, ama sondaki paragraf yanlış. Bağlam düğümünün çocukları olmayacaklar, 'somePath' – Alohci

+1

@Alohci tarafından seçilen düğümlerin çocukları olacaklar: Evet ve herhangi bir anda "içerik düğümü", bir sonraki konum adımının olduğu düğümdür. gerçekleştirildi - bu demektir ki, "child :: node", "somePath/child :: node" öğesinde belirlenir, bağlam düğümü, "somePath" tarafından seçilen herhangi bir düğümdür. Yani, siz ve ben aynı şeyi söylüyorsunuz :) –

+0

'node()/node' kafa karıştırıcı.node() 'önceden tanımlanmış bir işlevdir ve' node 'bir yer tutucu değişkendir? 'node()/foo' daha az kafa karıştırıcı olur. – Joren

4

. CSS seçicilere benzer bir teknolojidir.

çift eğik çizgi herhangi bir derinlikte bir descendant arama yapar.

Örneğin

:

elementa//elementb 

arasındaki diğer seviyeler olsa bile, bir elementa elemanın soyundan olan herhangi elementb elemanı, örneğin eşleşir:

<elementa> 
    <someelement> 
    <elementb> 
    </elementb> 
    </someelement> 
</elementa>