Hi all.
Another question for today:
I wrote a small xsl that matches p nodes from the input and prints their content.
I wrote it like this:
<xsl:template match="/">
    <xsl:for-each select="//p">
        <xsl:text>Content of this tag is </xsl:text>
        <xsl:value-of select="."/>
    </xsl:for-each>
</xsl:template>
 
Then I run this stylesheet through cocoon pipeline.
I get empty result, e.g. the for-each didn't match any p node in the input xml file.
But there are p tags in the input.
Moreover, if I change the for-each statement to
<xsl:for-each select="descendant::node()[name()='p']">
It executes correctly!
 
Can anyone explain to me, why Cocoon doesn't match //node-name?
In XPath both //node-name and descendant::node()[name()='node-name'] have the same meaning.
I dont want to use descendant::... style because I have this stylesheet get the XPath expression to match from some external xml file, and it is really a headache (if possible at all) to change all my //node-name expressions to descendant::node()[name()='node-name'] style.
 
Please explain this mistery to me.
 
Thank you very much for help.
I know I am writing too many e-mails to the group these days, but since I am very new to Cocoon, I get stuck every few minutes on something new.
 
Regards,
Anna

Reply via email to