If I have an XML file that includes
<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>
and I want to use XSLT to process this into an HTML file, with the name and value attributes and the text as a description, how can I get the XML node text?
<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>
The above XSLT fragment does successfully get the name and value attributes, but it fails to get the text, and I think I'm missing something obvious but I don't know what.
XSLT <xsl:text> The <xsl:text> element is used to write literal text to the output. Tip: This element may contain literal text, entity references, and #PCDATA.
XSLT <xsl:value-of> Element The <xsl:value-of> element is used to extract the value of a selected node.
The XSLT <xsl:value-of> element is used to extract the value of selected node. It puts the value of selected node as per XPath expression, as text.
The <xsl:text> element writes literal text to the output tree.
Try this
<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>
aha, this also seems to work:
<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>
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With