我是以下的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中,对于第二个para
,preceding sibling[1]
为para
,但它仍匹配if
。
请让我知道我哪里出错了,我该如何解决这个问题。
由于