Hi Jarno,
Thanks for the response. I did check the FAQ again under "Empty Elements" to
see about element checking. I think I ran into one those XSL "snafus"
because when I ran a test to see if elements didn't have children, I didn't
get any output when selecting ancestor::* (just the tests for "yes" came
through). My head is still having a little trouble with this...
But using the following stylesheet & data:
-------------------
<xsl:template match="/">
<xsl:for-each select="/*//*">
<xsl:call-template name="path"/>
</xsl:for-each>
</xsl:template>
<xsl:template name="path">
<!--this is selecting the ancestors of current node-->
<xsl:for-each select="ancestor::*">
<xsl:choose>
<xsl:when test="not(node())">
Not node: <xsl:value-of select="name()"/> has no children:
</xsl:when>
<xsl:when test="node()">
<font color="blue">
<xsl:value-of select="name()"/>
</font>
</xsl:when>
</xsl:choose>
<xsl:text>/</xsl:text>
</xsl:for-each>
<font color="red">
<xsl:value-of select="name()"/>
</font>
<br/>
</xsl:template>
</xsl:stylesheet>
----------
<root>
<element_one>one</element_one>
<element_two>two</element_two>
<element_three>thing</element_three>
<element_four>
<element_four_one>
</element_four_one>
</element_four>
</root>
------------
I get the following:
root /element_one
root /element_two
root /element_three
root /element_four
root /element_four /element_four_one
But I would like the output to be:
root /element_one
root /element_two
root /element_three
root /element_four /element_four_one
Because ³element_four² is a container and has no text, it shouldn¹t be a red
³stub².
Also, I tried running this template on a 1MB file, just to prove I¹m related
to Forrest Gump, and it took over three minutes to process. So I¹m imagining
that I could use a key in here to speed up the process. Then there¹s that
lovely part about removing duplicates once the pattern repeats itself...
/johnny :)
On 10/12/03 1:30 AM, "Jarno(_dot_)Elovirta(_at_)nokia(_dot_)com"
<Jarno(_dot_)Elovirta(_at_)nokia(_dot_)com>
wrote:
FAQ,
For starters I've been trying to figure out how to check to see if an
element contains elements (has child element nodes) but I'm--stumped.
Try to select it
<xsl:if test="*">
...
</xsl:if>
Cheers,
Jarno - Blank: Overhead (Extended)
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
--
The aging process has you firmly in its grasp if you never get the urge to
throw a snowball.
-- Doug Larson
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list