Subject: Re: [xsl] matching multiple times, outputting once? From: "cutlass" <cutlass@xxxxxxxxxxx> Date: Thu, 8 Nov 2001 23:06:33 -0000 |
Hello Marty, gee u kicked off the tail recursion *dissertation*, hehe though i like the haskell stuff DN is digging into. ----- Original Message ----- From: "Goetz Bock" <bock@xxxxxxxxxxx> been off list for awhile and i see that u have already a few solutions, i like the elegance of Goetz Bock solution. here is yet another slight variation; xsl --------------------------------------------------------------- <?xml version="1.0"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" > <xsl:output indent="yes"/> <xsl:template match="/"> <xsl:apply-templates/> </xsl:template> <xsl:template match="*[@*]"> <xsl:call-template name="a2e"> <xsl:with-param name="node" select="."/> <xsl:with-param name="attpos" select="1"/> </xsl:call-template> </xsl:template> <xsl:template name="a2e"> <xsl:param name="node" select="/.."/> <xsl:param name="attpos" select="/.."/> <xsl:choose> <xsl:when test="(count($node//@*)+1) > $attpos"> <xsl:variable name="attribute" select="name($node/@*[position()=$attpos])"/> <xsl:element name="{$attribute}"> <xsl:call-template name="a2e"> <xsl:with-param name="node" select="$node"/> <xsl:with-param name="attpos" select="$attpos+1"/> </xsl:call-template> </xsl:element> </xsl:when> <xsl:otherwise><xsl:value-of select="$node"/></xsl:otherwise> </xsl:choose> </xsl:template> </xsl:stylesheet> -------------------------------------------- xml --------------------------------------------- <?xml version="1.0" ?> <?xml-stylesheet type="text/xsl" href="test2.xsl" ?> <contents> <emphasis bold="yes" italic="yes" >Hello</emphasis><br /> <emphasis bold="yes" italic="yes" >Hello</emphasis><br /> <emphasis underline="yes" italic="yes" bold="yes">Hello</emphasis><br /> <test test="yes">aaaaaaaaaaaaaa</test> </contents> -------------------------------------------- essentially this template is an attribute to element transform, it could easily be adaptable for your purposes. one of the benefits is that u could use the att name as the element <contents> <emphasis b="yes" i="yes" >Hello</emphasis><br /> <emphasis b="yes" i="yes" >Hello</emphasis><br /> <emphasis u="yes" i="yes" b="yes">Hello</emphasis><br /> </contents> oh well, now i look at the tail recursion fun chow, jim fuller XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] matching multiple times, , Goetz Bock | Thread | [xsl] namespace output problem, James Carlyle |
Re: [xsl] reliability of MSXML, Pedro Pastor | Date | [xsl] Sorting the second level, Ivo |
Month |