如何删除 <RELEASE_NO> 的前导零
How to remove leading zero of the <RELEASE_NO>
我有以下 xml 并且需要一个 XSL 转换器,以便将 08 转换为 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>
我有以下 xml 并且需要一个 XSL 转换器,以便将
<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>