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?
cevap
neyi// xslt içinde? Örneğin. ($ CurrentPage // düğüm) kısaltması XPath'daki
:
(ö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/node
somePath/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.
@Dimitre - İyi bir cevabın ne olduğuna karar verdim, ama sondaki paragraf yanlış. Bağlam düğümünün çocukları olmayacaklar, 'somePath' – Alohci
@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 :) –
'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
. 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>
İyi soru (+1). Tam ve ayrıntılı bir açıklama için cevabımı görün. –