如何僅在沒有子節點值的情況下獲取元素值?
例如
XML
<root>
<a>
parent value
<b>
child value
</b>
</a>
</root>
XSL
<xsl:for-each select="a">
<xsl:call-template name="foo">
<xsl:with-param name="elem" select="." />
</xsl:call-template>
</xsl:for-each>
<xsl:template name="foo">
<xsl:param name="elem" />
<i>Val: <xsl:value-of select="$elem"/></i>
</xsl:template>
輸出是:“父值子值”我只想顯示“父值”
有什么建議?
謝謝!
uj5u.com熱心網友回復:
<xsl:value-of select="text()"/>為您提供背景關系節點的所有子文本節點的值,所以我不確定為什么您根本需要一個命名模板,我會<xsl:value-of select="text()"/>在a元素的背景關系中使用,即在您的for-each. value-of采用默認為單個空格的分隔符屬性。
uj5u.com熱心網友回復:
使用:
<xsl:value-of select="$elem/text()"/>
或者:
<xsl:value-of select="$elem/text()[1]"/>
取決于您是要獲取作為a其中第一個子節點的所有文本節點的值還是僅獲取其中第一個節點的值。
uj5u.com熱心網友回復:
您已經向我們展示了一個帶有該測驗用例預期輸出的測驗用例,但您還沒有解釋一般問題:樣式表必須處理哪些其他輸入,以及要應用的一般規則是什么。
只需要進行猜測,我的猜測是正確的解決方案是使用模板規則。就像是:
<xsl:template match="a">
<xsl:apply-templates/>
</xsl:template>
<xsl:template match="a/text()">
<xsl:value-of select="."/>
</xsl:template>
<xsl:template match="a/b"/>
但實際的規則集取決于可能在源檔案中找到的所有內容,而不是本示例中出現的內容。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/337082.html
