XSLT/XPath Bağlam düğüm düğüm vs geçerli mi?
XSLT, arasındaki fark nedir "düğüm" ve "bağlam düğüm"? güncel Her iki terim kullanılır burada bulabilirsiniz: http://www.w3.org/TR/xslt.
Ne zaman birini ya da diğerini kullanırsınız? Nasıl her bahsediyorsun?
CEVAP
Geçerli düğüm şablonu şu anda üzerinde çalıştığı her neyse. Normalde bu da bağlam düğüm oluyor, ama bağlam düğüm iç içe bir XPath ifadesi içinde özel bir anlamı (köşeli parantez kısmı) vardır. Orada, şu anda bir maç için test ediliyor ne ifade eder. Dolayısıyla, bağlam XPath ifadesi içinde değişiklik, ancak geçerli düğüm düğüm.
Bağlam düğüm nokta (.
) kısaltılmış ya da bazen tamamen bırakmış olabilir. Bu iç içe geçmiş bir ifade dışında, bir nokta geçerli düğüm anlamına gelir çünkü muhtemelen biraz kafa karıştırıcı. (Bu durumda geçerli düğüm geçerli düğüm yalnızca yaklaşık olduğunu söyleyebilir yani bağlam düğüm olacak, ve daha düzgün bağlam düğüm denir. Ama bile spec geçerli düğüm buraya çağırır.)
Bir nokta bağlam düğüm, iç içe geçmiş bir XPath ifadesi yer vererek, kullanıcının geçerli düğüm için geri başvurmak için bir yol ihtiyacı olan bir tek geçerli şablon tarafından işlenmekte. current()
işlevi ile bunu yapabilirsiniz.
Bu iki ayırt edici bazı durumlarda yararlıdır. Örneğin, bu gibi bazı XML olduğunu varsayalım:
<a>
<b>
<c>foo<footnote fn="1"/></c>
<d>bar</d>
</b>
<b>
<c>baz</c>
<d>aak<footnote fn="2"/></d>
</b>
<b>
<c>eep</c>
<d>blech<footnote fn="2"/></d>
</b>
<footnote-message fn="1">Batteries not included.</footnote>
<footnote-message fn="2">Some assembly required.</footnote>
</a>
Şimdi bu gibi Lateks dönüştürmek istediğinizi varsayalım:
foo\footnote{Batteries not included.}
bar
baz
aak\footnote{Some assembly required.}
eep
blech\footnotemark[2]
Hile Dipnot zaten kullanılmış olup olmadığını söyle. Eğer bu Dipnot karşılaştık ilk kez, \footnote
Bir komut yazmak istiyorum; aksi takdirde \footnotemark
Bir komut yazmak istiyorum. Bu gibi XSL kodu kullanabilirsiniz:
<xsl:choose>
<xsl:when test="count(preceding::*[./@fn = current()/@fn]) = 0">\footnote{...}</xsl:when>
<xsl:otherwise>\footnotemark[...]</xsl:otherwise>
</xsl:choose>
Burada bağlam-düğüm fn
öznitelik (preceding::*
düğüm-kümesi sonuçlarından) geçerli düğüm fn
öznitelik için karşılaştırma yapıyoruz. (Aslında ./@fn
;*.* 14) diyebiliriz söylemek zorunda değilsin
Yani Kısacası, bağlam düğüm XPath yüklem içinde bırakır; geçerli düğüm yüklem dışında, düğüm geçerli şablon tarafından işlenmekte geri ulaşır.
Düğüm JS geçerli işlemin sunucu hostna...
Nasıl Xpath düğüm kümesi içinde belirt...
XPath : çocuk düğüm bir öznitelik içer...
Öznitelik değeri üzerinden XPath düğüm...
eğer xpath düğüm var...