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