0
我有其中數據以這種方式來的XML文件:前置兄弟問題在XSLT 1.0
<ROOT>
<LINE>
<CODE>ZTAP</CODE>
<TEXT>ZTAP TEXTVALUE</TEXT>
</LINE>
<LINE>
<CODE>TAD</CODE>
<TEXT>TAD TEXTVALUE1</TEXT>
</LINE>
<LINE>
<CODE>TAD</CODE>
<TEXT>TAD TEXTVALUE2</TEXT>
</LINE>
<LINE>
<CODE>ZTAQ</CODE>
</LINE>
<LINE>
<TEXT>ZTAQ TEXT1</TEXT>
</LINE>
<LINE>
<TEXT>ZTAQ TEXT2</TEXT>
</LINE>
</ROOT>
的ZTAP和ZTAQ線的位置可以被改變,例如
<ROOT>
<LINE>
<CODE>ZTAQ</CODE>
</LINE>
<LINE>
<TEXT>ZTAQ TEXT1</TEXT>
</LINE>
<LINE>
<TEXT>ZTAQ TEXT2</TEXT>
</LINE>
<LINE>
<CODE>ZTAP</CODE>
<TEXT>ZTAP TEXTVALUE</TEXT>
</LINE>
<LINE>
<CODE>TAD</CODE>
<TEXT>TAD TEXTVALUE1</TEXT>
</LINE>
<LINE>
<CODE>TAD</CODE>
<TEXT>TAD TEXTVALUE2</TEXT>
</LINE>
</ROOT>
我需要選擇我可以通過模板匹配輕鬆完成的ZTAP LINES。但我也需要選擇所有那些以前的節點是ZTAQ的LINES。還有一些其他的線,TAD代碼不應該挑,所以,如果我把第二個例子,那麼結果應該是:
ZTAQ TEXT1
ZTAQ TEXT2
ZTAP TEXTVALUE
我前面的兄弟姐妹語句與ZTAP和ZTAQ由於其他行代碼混合。 :
xsl:template match="LINE" mode="test">
<xsl:if test="preceding-sibling::LINE[CODE = 'ZTAQ'] and not(preceding-sibling::LINE[CODE = 'ZTAP'</xsl:if>
</xsl:template>
有人可以幫忙嗎?