xslt:与元素关联的文本的值

Jas*_*n S 14 xml xslt

如果我有一个包含的XML文件

<param name="foo" value="5000" >foo is a way of making pasta sauce</param>
<param name="bar" value="3000" >bar is controlling the beer taps</param>
Run Code Online (Sandbox Code Playgroud)

我想使用XSLT将其处理成HTML文件,其中包含name和value属性以及文本作为描述,如何获取XML节点文本?

<xsl:for-each select="param">
   <tr>
      <td><xsl:value-of select="@name"/></td>
      <td><xsl:value-of select="@value"/></td>
      <td><xsl:text> </xsl:text></td>
   </tr>
</xsl:for-each>
Run Code Online (Sandbox Code Playgroud)

上面的XSLT片段确实成功获取了name和value属性,但是它无法获取文本,我想我错过了一些明显的东西,但我不知道是什么.

YoK*_*YoK 17

试试这个

<xsl:for-each select="param">
   <tr>
      <td><xsl:value-of select="@name"/></td>
      <td><xsl:value-of select="@value"/></td>
      <td><xsl:value-of select="text()"/></td>
   </tr>
</xsl:for-each>
Run Code Online (Sandbox Code Playgroud)


Jas*_*n S 5

啊哈,这似乎也有效:

<xsl:for-each select="param">
   <tr>
      <td><xsl:value-of select="@name"/></td>
      <td><xsl:value-of select="@value"/></td>
      <td><xsl:value-of select="."/></td>
   </tr>
</xsl:for-each>
Run Code Online (Sandbox Code Playgroud)

  • 是的。区别在于:`xsl:value-of select="text()"`输出第一个文本节点子节点的字符串值,而`xsl:value-of select="."`输出上下文节点的字符串值。 (9认同)