Re[2]: [xsl] applying code from inside the comment

Subject: Re[2]: [xsl] applying code from inside the comment
From: Alexey Nickolaenkov <nikolaenkov@xxxxxxxxxxxx>
Date: Tue, 16 Jan 2007 20:12:17 +0300
>> I've encountered the following problem:
>> 
>> input
>> 
>> <?xml version="1.0"?>
>> <A>
>> <!--<B>hello world</b>-->
>> <C>this should remain also</C>
>> </A>
>> 
>> I've tried different ways to convert comment into code. But 
>> none of them works and I dont have any clues. Can you help me?

MK> I'm not sure what you want to do with the comment. But the important thing
MK> is to note that the comment is just text. It doesn't contain an element
MK> node, it just contains text with a strong resemblance to element markup. If
MK> the structure is potentially more complex than your example, then perhaps
MK> you should consider extracting the text of the comment and parsing it as an
MK> XML document:

MK> <xsl:template match="comment()">
MK>   <xsl:apply-templates select="saxon:parse(.)"/>
MK> </xsl:template>


Thank you very much, Michael. This works great. The only thing you
have to make sure when making saxon:parse that you providing it with
valid xml. Great extension. Thank you once again. Here's the code
I've come up with.

<xsl:template match="//comment()[contains(.,'drive_panel')]">
    <xsl:variable name="comment">
        &lt;comment&gt;
                <xsl:value-of select="."/>
        &lt;/comment&gt;
    </xsl:variable>

    <xsl:variable name="node-set" select="saxon:parse($comment)" />
    <xsl:apply-templates select="$node-set"/>
</xsl:template>

<xsl:template match="comment">
        <xsl:apply-templates select="node() except ./text()"/>
</xsl:template>



-- 
Alexey                            mailto:alexey.nikolaenkov@xxxxxxxxxxxx

Current Thread