匹配前一个兄弟预处理指令

时间:2016-08-24 17:17:02

标签: xml xslt xslt-2.0

我是以下的XML。

<mainpara>
 <?xpp /MAIN?>
 <?xpp MAIN;5;0;0;0;123;0;0?>
    <para>
     text
    </para>
    <para>
     Text
    </para>
</mainpara>

我是以下的XSLT。

<xsl:template match = "mainPara">
  <xsl:for-each select="para">
   <xsl:apply-templates select="."/>
  </xsl:for-each>
</xsl:template>

<xsl:template match="para">
    <xsl:if test="fn:contains(preceding-sibling::*[1], processing-instruction('xpp'))">
      <xsl:apply-templates select="preceding-sibling::processing-instruction('xpp')[1]"/>
    </xsl:if>
    <xsl:value-of select="."/>
</xsl:template>

此处我的问题是para,if条件匹配,但我已声明选择所有preceding sibling并仅选择其中的第一个并检查是否有一个xpp,在我当前的XSLT中,对于第二个parapreceding sibling[1]para,但它仍匹配if

请让我知道我哪里出错了,我该如何解决这个问题。

由于

0 个答案:

没有答案