[xsl] Saxon 6.5.3: apply-templates="processing-instruction()"

Subject: [xsl] Saxon 6.5.3: apply-templates="processing-instruction()"
From: "Steven Anderson" <sanderson@xxxxxxxxxxxxxx>
Date: Wed, 27 Apr 2005 11:24:31 -0700
Forgive me if this is an obvious question, but I'm a newbie trying to
figure out how to handle processing-instructions with XSLT.

Using Saxon 6.5.3, I'm trying to apply a template defined like this:

<xsl:template
match="processing-instruction('FM')[substring-before(substring-after(.,'
MARKER ['), ']')='Filename']">

I thought I could just do the following:

<xsl:apply-templates select="processing-instruction()" />

But if I do that, the other template never gets applied.  If I change
the line to

<xsl:apply-templates select="node()" />

I get the output that I want, but a lot of other output as well.

I have tried

<xsl:apply-templates
select="processing-instruction('FM')[substring-before(substring-after(.,
'MARKER ['), ']')='Filename']" />

But that doesn't work, either.

Here's the entire stylesheet, just in case it helps.
-----

<?xml version='1.0' ?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>
  <xsl:output method="text"/>

  <xsl:template match="dita">
    <xsl:variable name="crossRefId" select="@Id"/>
    <xsl:value-of select="$crossRefId"/>
    <xsl:apply-templates select="processing-instruction" />
  </xsl:template>

<xsl:template
match="processing-instruction('FM')[substring-before(substring-after(.,'
MARKER ['), ']')='Filename']">
    <xsl:variable name="filename" select="substring-after(.,
                                        '[Filename] ')" />
    <xsl:value-of select="$filename"/>
  </xsl:template>

</xsl:stylesheet>

-----
The $crossRefId variable is set and output, but $filename isn't output.

Any ideas?

     Steve

Current Thread