我有這個(令牌)的XML文件,其中我想打印只是「打印」的字符串,忽略什麼如下:我怎樣才能得到第一個更高級別的字符串?
<tag1>
Print this
<tag2>
Do not print this
</tag2>
</tag1>
在我的XSL文件,使用此命令我得到的這兩個內容印刷的tag2
tag1
和內容:
<xsl:value-of select="tag1"/>
謝謝!
我有這個(令牌)的XML文件,其中我想打印只是「打印」的字符串,忽略什麼如下:我怎樣才能得到第一個更高級別的字符串?
<tag1>
Print this
<tag2>
Do not print this
</tag2>
</tag1>
在我的XSL文件,使用此命令我得到的這兩個內容印刷的tag2
tag1
和內容:
<xsl:value-of select="tag1"/>
謝謝!
在我的XSL文件中的所有文本節點,使用此命令我 同時獲得內容TAG1和TAG2的 內容的印刷:
<xsl:value-of select="tag1"/>
我怎樣才能得到公正第一,高 級別,字符串?
您的代碼會生成tag1
元素的字符串值,該元素根據定義是元素的所有文本節點後代的連接。
爲了生產只是
的 「打印」 字符串
你需要指定只選擇相應的文本節點 XPath表達式:
/tag1/text()[1]
指定[1]
對s僅選擇第一個文本節點子節點,否則可以選擇兩個文本節點(這僅在XSLT 2.0中存在問題,其中<xsl:value-of>
生成select
屬性中指定的所有節點的字符串值)。
此外,上述表達式選擇整個文本節點,其字符串值不是"Print this"
。
的字符串值居然是:
"
Print this
"
,準確,這將是輸出,如果你在引號包圍<xsl:value-of>
。
要產生完全相同的期望字符串"Print this"
使用://計算器:
"<xsl:value-of select="normalize-space(/tag1/text()[1])"/>"
value-of
元素會給你它的文本節點和它的後代的價值。如果你只是想在元素的直接text()
節點,使用:
<xsl:value-of select="tag1/text()"/>
<xsl:value-of select="tag1/text()"/>
將選擇下tag1
[輸出第一個字符串,不是所有的孩子的字符串(HTTP的精確複製。com/questions/4227720/output-first-string-not-all-childrens-strings) – 2010-11-25 16:52:36