I need to output the element name which is being returned after applying the xpath expression for example
<xsl:for-each select="//element">
<xsl:value-of select="**{elementname}**"></xsl:value-of>
<xsl:text>:</xsl:text>
<xsl:value-of select="current()"/>
<xsl:value-of />
</xsl:for-each>
How can i replace {elementname}
to some xpath so that I can get the element name instead of current value
This is called the identity transform. The node()|@* is matching all child nodes ( node() is all text,element,processing instructions,comments) and attributes ( @* ) of the current context.
XSLT <xsl:value-of> Element The <xsl:value-of> element is used to extract the value of a selected node.
XSLT/XPath Reference: XSLT elements, EXSLT functions, XPath functions, XPath axes. The local-name function returns a string representing the local name of the first node in a given node-set.
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.
<xsl:value-of select="name()" />
Side note: Avoid the //
shorthand unless you absolutely have no other possibility. It seems quick and easy, but it isn't - it is computationally very expensive, and 90% of the time you don't need it.
Write a canonical replacement XPath expression whenever you can. Even something as generic as
/*/*/node
runs much faster than //node
.
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