RE: [xsl] Still battling with practical strategy for parsing escaped XML inside unescaped XML

Subject: RE: [xsl] Still battling with practical strategy for parsing escaped XML inside unescaped XML
From: Américo Albuquerque <melinor@xxxxxxx>
Date: Wed, 30 Jul 2003 13:40:37 +0100
Hi.

> -----Original Message-----
> From: owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx 
> [mailto:owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx] On Behalf Of 
> Karr, David
> Sent: Tuesday, July 29, 2003 5:56 PM
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: RE: [xsl] Still battling with practical strategy for 
> parsing escaped XML inside unescaped XML
> 
> 
(...)
> I don't think it will do much good to change how I iterate 
> through the variable, because the error occurs on the 
> assignment to the variable, which is before the "for-each".
> 
> I also already tried changing your script to call "node-set" 
> on the return value.
> 
> I changed this in your original script:
> 
>       <xsl:otherwise>
>         <xsl:value-of select="$str"/>
>       </xsl:otherwise>
> 
> to:
> 
>       <xsl:otherwise>
>         <xsl:value-of select="xalan:nodeset($str)"/>
>       </xsl:otherwise>
> 

The stylesheet I provided worked only with strings, it doesn't have any
node, just text that looks like markup, there for you can not do
xalan:nodeset($str), it will be the same as doing
xalan:nodeset("<sometag>opps</sometag>"). It won't work. What you need to do
is to apply those templates inside the definition of a variable and use the
xalan:nodeset() on that variable.

Something like:
<xsl:variable name="mymarkup">
  <xsl:call-template name="unescape">
    <xsl:with-param name="str" select="value"/>
  </xsl:call-template>
</xsl:variable>

 <xsl:for-each select="xalan:nodeset($mymarkup)">
Or
 <xsl:apply-templates select="xalan:nodeset($mymarkup)"/>

You have to be sure that the string you pass to it is a well-formed xml text
representation

Hope this help

Regards,
Américo Albuquerque




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


Current Thread