|
Subject: RE: [xsl] convert nested elements, ID's and classes to CSS declaration From: "Michael Kay" <mike@xxxxxxxxxxxx> Date: Wed, 21 Mar 2007 17:24:46 -0000 |
> I searched for this all over and couldn't find a solution. I
> want to take the following XML:
>
> <root>
> <file>
> <element/>
> </file>
> <file id="a">
> <element id="a"/>
> </file>
> <file class="b">
> <element class="b"/>
> </file>
> <file id="c" class="d" not="1" this="2">
> <element id="c" class="d" not="1" this="2"/>
> </file>
> </root>
>
>
> #### and output something this ####
>
>
> root
> root file
> root file element
> root file #a
> root file #a element #a
> root file .b
> root file .b element .b
> root file #c .d
> root file #c .d element #c .d
>
XSLT 1.0 or 2.0? Here's a 2.0 solution, untested:
<xsl:template match="*">
<xsl:apply-templates select="ancestor-or-self::*/(.|@class|@id)"
mode="token"/>
<xsl:text>
</xsl:text>
</xsl:template>
<xsl:template match="*" mode="token">
<xsl:value-of select="concat(name(), ' ')"/>
</xsl:template>
<xsl:template match="@class" mode="token">
<xsl:value-of select="concat('.', ., ' ')"/>
</xsl:template>
<xsl:template match="@id" mode="token">
<xsl:value-of select="concat('#', ., ' ')"/>
</xsl:template>
Michael Kay
http://www.saxonica.com/
>
> #### ignoring any attributes that are not "id" or "class" and
> containing all ancestor elements and id's and classes no
> matter what the element name is or how many levels deep. I'd
> like to use this for auto generating CSS declarations from
> XHTML snipits, I can deal with removing redundant rows
> manually. Below is the closest I've gotten which only strips
> the XML to the elements and attributes I'm interested in, but
> doesn't format it or list ancestor elements, id's and classes
> (I'm a beginner at XSLT) thanks! ####
>
>
> <xsl:template match="node()|@id|@class"> <xsl:copy>
> <xsl:apply-templates select="node()|@id|@class"/> </xsl:copy>
> </xsl:template>
>
>
>
>
>
>
> ______________________________________________________________
> ______________________
> We won't tell. Get more on shows you hate to love (and love
> to hate): Yahoo! TV's Guilty Pleasures list.
> http://tv.yahoo.com/collections/265
| Current Thread |
|---|
|
| <- Previous | Index | Next -> |
|---|---|---|
| Re: [xsl] Question Regarding the di, David Carlisle | Thread | Re: [xsl] convert nested elements, , Jay Bryant |
| Re: [xsl] Question Regarding the di, Steve | Date | Re: [xsl] From WordprocessingML inl, Yves Forkl |
| Month |