RE: [xsl] collapsable / expandable tree in XSL

Subject: RE: [xsl] collapsable / expandable tree in XSL
From: Jarno.Elovirta@xxxxxxxxx
Date: Wed, 12 Mar 2003 08:46:04 +0200
Hi,

> I went through the archive mails on "disable-output-escaping" 
> and the majority of posts deal with how to insert html 
> abreviations like &lt;,  &apos; instead of < , '. So I tried 
> different ways:
>     =>  <xsl:text disable-output-escaping="yes"> <![CDATA[ 
> <div id="CollapseMenu0Block2"> ]]>  </xsl:text> )
>     =>  using <xsl:output method="text"/> or  <xsl:output 
> method="html"/> at the begining of the stylesheet
>     =>  <processing-instruction name="html"> <![CDATA[ <div 
> id="CollapseMenu0Block2"> ]]> </processing-instruction>
> 
> but the browser still prints the tag instead of generating an 
> node tree and processing it (simple ex. 
> http://www.idiap.ch/~guillemo/JAVASCRIPT/dynapi/docs/examples/
> TEST.xml against 
> http://www.idiap.ch/~guillemo/JAVASCRIPT/dynapi/docs/examples/
> collapsemenu1.html)

I meant forget about d-o-e, they way it's being used in your stylesheet is Wrong, and the XSLT processor in the browser might not support d-o-e at all; instead of serializing the result tree into buffer and parsing that into a DOM, it most probably serializes the result tree directly into a DOM tree.

Instead of trying to output a text string using

  <xsl:text disable-output-escaping="yes"><![CDATA[<div id="CollapseMenu0Block2">]]></xsl:text>

you want to generate a an element node with e.g.

  <div id="CollapseMenu0Block2">

or

  <xsl:element name="id" namespace="http://www.w3.org/1999/xhtml";>
    <xsl:attribute name="id">CollapseMenu0Block2</xsl:attribute>
  </xsl:element>

You are not writing out text that looks like tags, like you would using e.g. JSP, but rather building a result tree of nodes, like you build a tree using DOM. If you want to parameterize the element or attribute names, use xsl:element and xsl:attribute to generate the element and attribute nodes, respectively. So just rethink the problem and come up with a solution that generates a *tree*, not text.

Cheers,

Jarno - VNV Nation: Kingdom (restoration)

 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


Current Thread