|
[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] no way to avoid errors if getting both strings and elements?
i'm often frustrated by the lack in xslt of a node-type function that
would just tell me 'text' or 'element' or whatever (like the ref() function in perl).
if i'm in a template and handed something that could be
either, i'm screwed. if it is text, then i get xt's dreaded
"cannot convert to node-set" error when i do things like name($thing) or even $thing/*.
if is an element, and i simply do something like <xsl:value-of select="$thing">
or string($thing), then i run together its multiple text children, which i
don't want to do.
here is a stylesheet that shows the problem.
i'd love to see a version of the "analyze_node" function that will classify
anything handed to it....
thanks.
-mda
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:variable name="str" select="'a string'"/>
<xsl:variable name="el">
<root>a text child</root>
</xsl:variable>
<xsl:template match="/">
<xsl:call-template name="analyze_node"><xsl:with-param name="thing" select="$str"/></xsl:call-template>
<xsl:call-template name="analyze_node"><xsl:with-param name="thing" select="$el"/></xsl:call-template>
</xsl:template>
<xsl:template name="analyze_node">
<xsl:param name="thing"/>
<xsl:message>analyzing node...</xsl:message>
<xsl:choose>
<xsl:when test="$thing/self::text()">
<xsl:message>this is a string: <xsl:value-of select="$thing"/></xsl:message>
</xsl:when>
<xsl:when test="$thing/child::text()">
<xsl:message>this is a node with a text child: <xsl:value-of select="$thing/text()"/></xsl:message>
</xsl:when>
<xsl:otherwise>i dunno</xsl:otherwise>
</xsl:choose>
</xsl:template>
</xsl:stylesheet>
----sample output----
e:/xt-19991105/xt test4.xsl test4.xsl test4.html
file:/d:/mda/projects/xmlhacks/xmlidl/test4.xsl:1: analyzing node...
cannot convert to node-set
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
|
PURCHASE STYLUS STUDIO ONLINE TODAY!Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced! Download The World's Best XML IDE!Accelerate XML development with our award-winning XML IDE - Download a free trial today! Subscribe in XML format
|

Cart








