xml - 如何删除前导零
问题描述
我有以下 xml 并且需要一个 XSL 转换器,以便 <RELEASE_NO>08</RELEASE_NO> 将转换为 <RELEASE_NO>8</RELEASE_NO> (我将删除前导零)
<STA_INVOICE>
<BANK_REFERENCE>9326307</BANK_REFERENCE>
<CURRENCY_CODE>SEK</CURRENCY_CODE>
<DELIVER_NOTE_NUMBER/>
<DUE_DATE>2021-07-16</DUE_DATE>
<DUE_PERCENT/>
<EAN_LOCATION_DELIVERY_ADDRESS>EMCAT1</EAN_LOCATION_DELIVERY_ADDRESS>
<EAN_LOCATION_DOCUMENT_ADDRESS>7350031680027</EAN_LOCATION_DOCUMENT_ADDRESS>
<EAN_LOCATION_DOCUMENT_ADDRESS_FOR_PAYER>7350031680027</EAN_LOCATION_DOCUMENT_ADDRESS_FOR_PAYER>
<EAN_LOCATION_OUR_DOCUMENT_ADDRESS>EMCAT1</EAN_LOCATION_OUR_DOCUMENT_ADDRESS>
<INVOICE_DATE>2021-07-15</INVOICE_DATE>
<INVOICE_NO>13132345-1</INVOICE_NO>
<INVOICE_TYPE>DEBET</INVOICE_TYPE>
<INVOICING_ROUNDING/>
<ORDER_NO/>
<PO_REFERENCE>965</PO_REFERENCE>
<SUPPLIER_VAT_NO>5562776434</SUPPLIER_VAT_NO>
<STA_BUYER_ADDRESS>
<STA_BUY_ADDRESS>
<CITY>NORRKÖPING</CITY>
<COUNTRY>SE</COUNTRY>
<PO_BOX>BOX 773</PO_BOX>
<RECEIVER_NAME>THE STADIUM SVERIGE AB</RECEIVER_NAME>
<ZIP_CODE>601 60</ZIP_CODE>
</STA_BUY_ADDRESS>
</STA_BUYER_ADDRESS>
<STA_DELIVERY_ADDRESS>
<STA_DELIV_ADDRESS>
<ADDRESS_1>STROBOGATAN 5</ADDRESS_1>
<CITY>NORRKOPING</CITY>
<COUNTRY>SE</COUNTRY>
<RECEIVER_NAME>STADIUM 901</RECEIVER_NAME>
<ZIP_CODE>602 23</ZIP_CODE>
</STA_DELIV_ADDRESS>
</STA_DELIVERY_ADDRESS>
<STA_INVOICE_LINES>
<STA_INVOICE_LINE>
<CATALOG_NO>010008002010</CATALOG_NO>
<INVOICE_ITEM_POS>1</INVOICE_ITEM_POS>
<INVOICED_QTY>5</INVOICED_QTY>
<LINE_NO>1</LINE_NO>
<RELEASE_NO>08</RELEASE_NO>
<NAME/>
<NET_AMOUNT>199.93</NET_AMOUNT>
<PO_REFERENCE>950</PO_REFERENCE>
<PURCHASE_CATALOG_NO/>
<SALES_UNIT_MEAS>PCE</SALES_UNIT_MEAS>
<SALES_UNIT_PRICE>199.93</SALES_UNIT_PRICE>
<SUPPLIER_ARTICLE_EAN/>
<VAT_AMOUNT>0</VAT_AMOUNT>
<VAT_PERCENT>0.00</VAT_PERCENT>
</STA_INVOICE_LINE>
</STA_INVOICE_LINES>
<STA_INVOICE_SUMMARYS>
<STA_INVOICE_SUMMARY>
<LINES_NET_AMOUNT>199.93</LINES_NET_AMOUNT>
<TAXABLE_AMOUNT>199.93</TAXABLE_AMOUNT>
<TOTAL_INVOICE_AMOUNT>199.93</TOTAL_INVOICE_AMOUNT>
<TOTAL_VAT_AMOUNT>0</TOTAL_VAT_AMOUNT>
</STA_INVOICE_SUMMARY>
</STA_INVOICE_SUMMARYS>
<STA_PAYER_ADDRESS>
<STA_PAY_ADDRESS>
<CITY>NORRKÖPING</CITY>
<COUNTRY>SE</COUNTRY>
<PAYER_NAME>THE STADIUM SVERIGE AB</PAYER_NAME>
<PO_BOX>BOX 773</PO_BOX>
<ZIP_CODE>601 60</ZIP_CODE>
</STA_PAY_ADDRESS>
</STA_PAYER_ADDRESS>
<STA_SUPPLIER_ADDRESS>
<STA_SUPP_ADDRESS>
<CITY>HILVERSUM</CITY>
<COUNTRY>NL</COUNTRY>
<PO_BOX>COLOSSEUM 1</PO_BOX>
<SUPPLIER_NAME>Peak Performance</SUPPLIER_NAME>
<ZIP_CODE>1213 NL</ZIP_CODE>
</STA_SUPP_ADDRESS>
</STA_SUPPLIER_ADDRESS>
</STA_INVOICE>
我创建了下面的 XSL 转换器
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:ns1="urn:ifsworld-com:schemas:RECEIVE_SUPPLIER_INVOICE_STA ">
<xsl:output method="xml" encoding="utf-8" indent="yes" omit-xml-declaration="no"/>
<xsl:strip-space elements="*"/>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="ns1:STA_INVOICE_LINE/RELEASE_NO[string-length() > 0]">
<xsl:copy>
<xsl:value-of select="number(.)"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
但没有给出预期的输出(使用在线免费转换器 - https://www.freeformatter.com/xsl-transformer.html)
有人可以让我知道我在哪里犯了错误吗?
解决方案
请尝试以下 XSLT。
您的输入 XML 没有名称空间。因此无需在 XSLT 中使用它们。
XSLT
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" encoding="utf-8" indent="yes" omit-xml-declaration="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="RELEASE_NO">
<xsl:copy>
<xsl:value-of select="number(.)"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
推荐阅读
- php - 黑客能否开始上传文件并指定何时上传?
- python - 枕头 - GIF 文件大小
- r - R中的自定义表(SPSS)?
- solr - Sitecore - 执行完整索引重建后索引中缺少某些项目
- kotlin - Kotlin:使用反射设置带注释的lateinit var
- solr - 在 Solr DIH 中导入嵌套实体
- node.js - 将 mono repo 部署到 Heroku、Node.JS、Angular 9。Heroku CLI
- java - 读取列包含逗号的 CSV
- python - 如何使用 ctypes 将字节转换为浮点数?
- python - 在中心矩阵上使用 np.cov() 不等于数组与其转置之间的矩阵乘法