1
一個子我有這樣的XML輸入:獲取當前節點的XSLT
<?xml version="1.0" encoding="utf-8"?>
<Document>
<TopLevel>
<Payments>
<PaymentID>PID1</PaymentID>
<Transaction>
<TransID>TR1-PID1XX</TransID>
<TransNumber>1</TransNumber>
</Transaction>
<Transaction>
<TransID>TR1-PID1XY</TransID>
<TransNumber>2</TransNumber>
</Transaction>
<Transaction>
<TransID>TR1-PID1XX</TransID>
<TransNumber>3</TransNumber>
</Transaction>
</Payments>
<Payments>
<PaymentID>PID2</PaymentID>
<Transaction>
<TransID>TR2-PID2XY</TransID>
<TransNumber>4</TransNumber>
</Transaction>
<Transaction>
<TransID>TR2-PID2XX</TransID>
<TransNumber>5</TransNumber>
</Transaction>
<Transaction>
<TransID>TR2-PID2XY</TransID>
<TransNumber>6</TransNumber>
</Transaction>
</Payments>
</TopLevel>
</Document>
這是我的XSLT:
<xsl:template match="Transaction">
<Transaction>
<xsl:apply-templates select="TransID"/>
</Transaction>
</xsl:template>
<xsl:template match="TransID">
<TransID>
<xsl:value-of select="."/>
</TransID>
<TransNumber>
<xsl:number level="any"/>
</TransNumber>
<xsl:if test="substring(//TransID,9,2)='XX'">
<TransCode>
<xsl:value-of select ="substring(//TransID,1,3)"/>
</TransCode>
</xsl:if>
</xsl:template>
我的XSLT是不是撿了當前節點的子串,但而是總是得到第一個節點的字符串,我在這裏錯過了什麼?
順便說這裏是我想要的輸出:
<Payments>
<PaymentID>PID1</PaymentID>
<Transaction>
<TransID>TR1-PID1XX</TransID>
<TransNumber>1</TransNumber>
<TransCode>TR11</TransCode>
</Transaction>
<Transaction>
<TransID>TR1-PID1XY</TransID>
<TransNumber>2</TransNumber>
</Transaction>
<Transaction>
<TransID>TR1-PID1XX</TransID>
<TransNumber>3</TransNumber>
<TransCode>TR13</TransCode>
</Transaction>
</Payments>
<Payments>
<PaymentID>PID2</PaymentID>
<Transaction>
<TransID>TR2-PID2XY</TransID>
<TransNumber>4</TransNumber>
</Transaction>
<Transaction>
<TransID>TR2-PID2XX</TransID>
<TransNumber>5</TransNumber>
<TransCode>TR25</TransCode>
</Transaction>
<Transaction>
<TransID>TR2-PID2XY</TransID>
<TransNumber>6</TransNumber>
</Transaction>
</Payments>
感謝所有爲這個美好的社區:)
不錯的解決方案,謝謝:) – zyberjock