Re: [xsl] How to convert a whold result tree to a string?

Subject: Re: [xsl] How to convert a whold result tree to a string?
From: Joerg Heinicke <joerg.heinicke@xxxxxx>
Date: Mon, 02 Dec 2002 22:00:59 +0100
If the XML fragment is the input, the data type is "node set". If you use string() on a node set as in your example template, the result will be the concatenation of all descendant text nodes (in your case only " kkkk"). Hmm, now it's difficult to guess, what you really want. Not a node set, but a string "<test>...</test>"? But why? You can't "operate" on a string. But if you really want:

<xsl:template match="*">
  <xsl:text/>&lt;<xsl:value-of select="name()">
    <xsl:apply-templates select="@*"/>
    <xsl:text>&gt;</xsl:text>
    <xsl:apply-templates select="node()"/>
  &lt;/<xsl:value-of select="name()">&gt;
</xsl:template>

<xsl:template match="@*">
  <xsl:text> </xsl:text>
  <xsl:value-of select="name()"/>
  <xsl:text>="</xsl:text>
  <xsl:value-of select="."/>
  <xsl:text>"</xsl:text>
</xsl:template>

You can add further templates e.g. for comments and so on. If you only want a HTML view like IE offers, have a look at http://cvs.apache.org/viewcvs.cgi/xml-cocoon2/src/webapp/samples/common/style/xsl/html/simple-xml2html.xsl.

Regards,

Joerg

Fengrui Gu wrote:
Suppose I have a result tree like
<test>
<test1> kkkk</tes1>
<test2 attr="kkkk"/>
</test>

Can I store it in a string variable like <xsl:template match="test>
<xsl:variable name="str" select="string(.)"/>
</xsl:template>


So whenever I use <xsl:value-of select="$str"/>, it will output
the whole result tree as string.


Obvioulsy, the code doesn't work because string function only converts the first element.

any ideas?

thanks,
Fengrui


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


Current Thread