获取具体的处理指令

时间:2015-10-08 07:03:21

标签: xslt xslt-2.0

我有以下的XML。

<?xpp /MAIN?>
<?xpp MAIN;1;0;0;0;619;0;0?>
<section>
  <title>Introduction</title>
  <para>
    para<superscript>1</superscript>
    <?xpp foot;art6_ft1;suppress?>
    <?xpp FOOT;art6_ft1;1?>
    <footnote label="1" id="art6_ft1">
      <para>
        data
      </para>
    </footnote>
    <?xpp /FOOT?>
    The data
  </para>
</section>

这里我想获得包含MAIN的处理指令,但我不知道如何获取它。

我正在尝试下面的XSLT。

<xsl:template match="/">
        <html>
            <head>

            </head>
            <body>
                <xsl:if test="//footnote">
                        <xsl:apply-templates select="//processing-instruction('xpp')[not(ancestor::toc)]| //footnote" mode="footnote"/>
                </xsl:if>
            </body>
        </html>
    </xsl:template>
.
.
.
.
.
.
.
<xsl:template match="processing-instruction('xpp')" mode="footnote">
    <xsl:if test="following::footnote[1][preceding::processing-instruction('xpp')[1] = current()]">
    <xsl:variable name="pb" select="."/>
        <xsl:processing-instruction name="pb">
            <xsl:text>label='</xsl:text>
            <xsl:value-of select="$pb"/>
            <xsl:text>'</xsl:text>
            <xsl:text>?</xsl:text>
        </xsl:processing-instruction>
    </xsl:if>
</xsl:template>

运行此操作我已选择<?xpp FOOT;art6_ft1;1?>,但我希望选择<?xpp MAIN;1;0;0;0;619;0;0?>,请告知我该怎么做。

由于

1 个答案:

答案 0 :(得分:1)

  

&#34;在这里,我想获得包含MAIN的处理指令,但我不知道如何获得它。&#34;

您可以使用以下XPath表达式来匹配名为xpp的处理指令,其数据包含文本"MAIN"

processing-instruction('xpp')[contains(.,'MAIN')]