ahh ok, if you just want the attributes' names then do:
select="//*[descendant-or-self::*[contains(name(),'to_search')]]/(name(),
@*/name())"
you might prefer to not use a one-liner now, to make it clearer eg:
<xsl:for-each select="//*[descendant-or-self::*[contains(name(),'to_search')]]">
<xsl:value-of select="concat(name(), '&_#xa;')"/>
<xsl:for-each select="@*">
<xsl:value-of select="concat(' ', name(), '&_#xa;')"/>
...
etc
2008/10/9 Jonas Bassl <Jonas(_at_)bassl(_dot_)de>:
Thank you,
but i am getting this error:
Cannot mix nodes and atomic values in the result of a path expression
URL: http://www.w3.org/TR/xpath20/#ERRXPTY0018
Jonas
2008/10/9 Andrew Welch <andrew(_dot_)j(_dot_)welch(_at_)gmail(_dot_)com>:
now since i was working with the solution i got from here, i am stuck
with the following problem:
<xsl:template match="/">
<xsl:value-of
select="//*[descendant-or-self::*[contains(name(),'to_search')]]/name()"
separator=" "/>
</xsl:template>
</xsl:stylesheet>
This stylesheet only gives me the name of the node, but now i have the
requirement to get also attributes from these nodes. Can anyone help
me to change the XPath invocation for my needs. If i try to do it with
the node() function at the end, there are more nodes in the output
than just with the name() function. I know, that has something to do
with empty text nodes and things like that, but i don't know, how to
filter them or which function is appropriate for me to get the same
nodes as the name() function does, but with the attributes.
select="//*[descendant-or-self::*[contains(name(),'to_search')]]/(name(),
@*)"
....will give you the attributes of the elements as well as its name
--~------------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--