[
Lists Home |
Date Index |
Thread Index
]
<xsl:value-of>, when applied to a node-set (in 1.0) outputs the string value
of the first node in the node-set.
Did you really want to evaluate count(//*) (the number of elements in the
document) when processing each element in the document? Better to put it in
a global variable. Ah, but I see the match="*" template is only executed
once, it doesn't recurse down the tree. You say you're trying to loop
through the XML instance but I see no code that attempts to do so.
Michael Kay
http://www.saxonica.com/
> -----Original Message-----
> From: David RR Webber (XML eBusiness) [mailto:w3c@drrw.info]
> Sent: 29 September 2004 20:08
> To: 'xml-dev@lists.xml.org'
> Subject: [xml-dev] Stupid XSLT tricks
>
> OK - I have managed to code myself into a corner with XSLT
> and looping
> thru a structure.
>
> I have one that works - and one that does not. Trying to figure the
> differences between same
> and going gently crazy!
>
> What I'm trying to do is just loop thru a XML instance
> dumping out the
> attributes of all nodes.
> Right now what I have dumps out the first instance of an attribute it
> finds then stops!
>
> Of course the original template happily dumps out all
> elements - but - I
> did change the target
> statements - and now....this has to be obvious but....
>
> Help!
>
> Thanks, DW
>
> <?xml version="1.0" encoding="UTF-8"?>
> <xsl:stylesheet version="1.0"
> xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
> xmlns:t="http://www.testing.org/xslt">
>
> <xsl:template match="/">
> <html>
> <head>
> <title>Get Attributes</title>
> </head>
> <body>
>
> <table border="0" width="100%">
> <tr>
> <td>
> <b>
> Catalogue Attributes
> </b>
> </td>
> <td>
>
> </td>
>
> </tr>
> </table>
>
> <br/>
> <table border="0" width="100%">
> <tr bgcolor='yellow'><b>
> <th height='35'><b><font face="arial">Attribute</font></b></th>
> <th height='35'><b><font face="arial">Value</font></b></th>
> </b>
> </tr>
>
> <!-- Now write the table rows out just here -->
> <xsl:apply-templates/>
> <!-- Now write the table last row at end -->
> <tr bgcolor='yellow'><b>
> <th WIDTH="25%" height='35'></th>
> <th WIDTH="75%" height='35'></th>
> </b>
> </tr>
>
> </table>
> </body>
> </html>
>
> </xsl:template>
>
> <xsl:template match="*">
> <tr>
> <td> <font SIZE="2">
> <xsl:value-of
> select="count(//*)"/>
> </font>
> </td>
> <td> <font SIZE="2">
> <xsl:value-of
> select=".//@*"/> </font>
> </td>
> </tr>
> </xsl:template>
>
> </xsl:stylesheet>
>
>
>
> -----------------------------------------------------------------
> The xml-dev list is sponsored by XML.org <http://www.xml.org>, an
> initiative of OASIS <http://www.oasis-open.org>
>
> The list archives are at http://lists.xml.org/archives/xml-dev/
>
> To subscribe or unsubscribe from this list use the subscription
> manager: <http://www.oasis-open.org/mlmanage/index.php>
>
|