xsl-list
[Top] [All Lists]

Re: How to convert a whold result tree to a string?

2002-12-02 14:00:59
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



<Prev in Thread] Current Thread [Next in Thread>