<xsl:variable name="datePrecision" as="element()*">
<p>Year</p>
<p>Month</p>
<p>Day</p>
<p>Time</p>
<p>Timestamp</p>
</xsl:variable>
表達
$datePrecision[5]
返回包含值「時間戳」一個節點的節點集,如所預期。
在模板後來,隨着具有屬性
@precision="5"
我試試下面的表達式,但都返回一個空字符串一個context元素:
$datePrecision[@precision]
$datePrecision[number(@precision)]
$datePrecision[xs:decimal(@precision)]
但是,下面的序列做什麼,我想要
<xsl:variable name="prec" select="number(@precision)"/>
... $datePrecision[$prec] ...
使用Oxygen/XML的調試器我已經邁出了一步其中表達式是要進行評估,並顯示在監視窗口如下:
Expression Value Nodes/Values Set
-------------------------- --------------- -----------------------
$datePrecision[5] Node Set(1) #text Timestamp
@precision Node Set(1) precision 5
$datePrecision[@precision]
number(@precision) 5
$datePrecision[number(@precision)]
$prec 5
$datePrecision[$prec] Node Set(1) #text Timestamp
很顯然,我已經錯過了一些關於如何屬性節點在謂語使用原子化的根本,但找不到任何東西該文檔(邁克爾凱的XSLT/XPATH 2.0,第4版)可以解釋這種差異。
有人可以解釋爲什麼會發生這種情況,並指出我在哪裏,在XSLT 2.0規範或邁克爾凱的書中描述了這種情況?
(XSLT處理器是撒克遜PE 9.2.0.3)
好問題(+1)。查看我的答案,解釋它並提供W3C XSLT規範所提供的解決方案。 :) – 2010-04-02 16:06:02