我正在优化xml的发票,我只希望变量的最后4个字符。对于我收到的每个发票,该变量的字符长度可以不同,但是结果只希望最后4个字符。
我已经用子字符串代码尝试过了,但是然后我需要给出一个特定的长度,该代码需要从中获取最后4个字符。
我使用的代码:
<xsl:template match="/">
<xsl:for-each select="/x:Invoice">
<xsl:if test="."><xsl:value-of select="substring(translate(cbc:Note,' ',''),27,4)"/></xsl:if>
</xsl:for-each>
</xsl:template>
这是发票的代码:
<UBLVersionID>2.0</UBLVersionID>
<CustomizationID>1.0</CustomizationID>
<ProfileID>PowerOnline</ProfileID>
<ID>194545</ID>
<IssueDate>2019-05-16</IssueDate>
<InvoiceTypeCode>1</InvoiceTypeCode>
<Note>FB - bestelling voor HH7416</Note>
<TaxPointDate>2019-05-16</TaxPointDate>
<DocumentCurrencyCode>EUR</DocumentCurrencyCode>
<LineCountNumeric>7</LineCountNumeric>
<OrderReference>
<ID>Invoice of an supplier</ID>
<SalesOrderID>19538</SalesOrderID>
<IssueDate>2019-04-30</IssueDate>
预期结果是/ x:Invoice / cbc:Note的后4个字符,所以7416。该注释有时可以是FB-HH6464,所以我一直想拥有该cbc的后4个字符:Note
答案 0 :(得分:2)
您可以将string-length
与substring
结合使用以获取最后4个字符
<xsl:value-of select="substring(cbc:Note, string-length(cbc:Note) - 3)" />
(因此,执行string-length(cbc:Note)
将获得最后一个字符,string-length(cbc:Note) - 1
将获得最后两个字符,依此类推...)