|
Subject: Re: [xsl] modify output document elements From: "Michael Kay mike@xxxxxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> Date: Wed, 4 Mar 2020 18:01:15 -0000 |
You can put a constructed sub-tree in a variable:
<xsl:variable name="t">
<table>
...
</table>
</xsl:variable>
and then do further transformations on the content of this variable
<xsl:apply-templates select="$t" mode="post-process"/>
If you're still using the old XSLT 1.0 version, there are restrictions on
using variables this way, which (with most processors) you can get around with
an extension function:
<xsl:apply-templates select="exsl:node-set($t)" mode="post-process"/>
Michael Kay
Saxonica
> On 4 Mar 2020, at 17:49, Kammering, Raimund raimund.kammering@xxxxxxx
<xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> wrote:
>
> Hello,
>
> I have a stylesheet which creates a HTML output document dynamically based
on the incoming XML file. I use some for-each loop to get the processing done
in the right order. My layout causes the stylesheet to look like this:
>
> <xsl:template name="details_table">
> <table border="0" cellspacing="0">
> <tr>
> <td width="64px">
> <a href="#" onclick="toggle('{$details_table}')" title="show/hide
details">
> <img src="show_hide.png"/>
> </a>
> </td>
> <td>
> Details
> </td>
> </tr>
> <table id="{$details_table}" cellspacing="3" style="display: block">
> <tr>
> <td width="64px">
> <img border="0" src="{$imagedir}/null.gif"/>
> </td>
> <th align="left">Start</th>
> <th align="left">End</th>
> <th align="left">Duration [h]</th>
> <th align="left">Type</th>
> <th align="left">Category</th>
> <th align="left">Comment</th>
> </tr>
>
> <xsl:for-each
select="entry[severity='STATISTICS']/statistics_category">
> ...
> <xsl:choose>
> <xsl:when test=".='Down'">
> <td width="150" valign="top">
> <xsl:choose>
> <xsl:when test="../Down='not_set'">
> <font color="red">not_set</font>
> </xsl:when>
> <xsl:otherwise>
> <xsl:value-of select="../Down"/>
> </xsl:otherwise>
> </xsl:choose>
> </td>
> </xsl:when>
> ...
> </xsl:for-each>
> </table>
> </table>
> </xsl:template>
>
> Now I would like to modify the style of the details_table depending on the
outcome of the test within the for-each loop. Since the table element has
already been created, I do not know how one could do this without changing the
overall logic. Is there a way to access the elements of the created HTML DOM
tree from within the stylesheet? Or am I hunting in the wrong direction?!
>
> Any ideas/help welcome - greetings,
> Raimund Kammering
| Current Thread |
|---|
|
| <- Previous | Index | Next -> |
|---|---|---|
| Re: [xsl] modify output document el, Graydon graydon@xxxx | Thread | Re: [xsl] modify output document el, Christophe Marchand |
| Re: [xsl] modify output document el, Graydon graydon@xxxx | Date | Re: [xsl] modify output document el, Christophe Marchand |
| Month |