XSL:某些元素的转换必须按原样显示
XSL : Transform for some element remaining have to display as it is
我需要将公司代码合并到订单 number.I 需要 XSLT 来解决以下问题。
请帮我解决这个问题。
输入XML:
<?xml version='1.0' encoding='UTF-8'?>
<ImportOrders>
<OrderInfo>
<OrderNumber>98947</OrderNumber>
<HeaderInfo>
<CompanyCode>TEST</CompanyCode>
</HeaderInfo>
</OrderInfo>
<OrderInfo>
<OrderNumber>98949</OrderNumber>
<HeaderInfo>
<CompanyCode>GIM</CompanyCode>
</OrderInfo>
</ImportOrders>
输出XML
<?xml version='1.0' encoding='UTF-8'?>
<ImportOrders>
<OrderInfo>
<OrderNumber>TEST-98947</OrderNumber>
<HeaderInfo>
<CompanyCode>TEST</CompanyCode>
</HeaderInfo>
</OrderInfo>
<OrderInfo>
<OrderNumber>GIM-98949</OrderNumber>
<HeaderInfo>
<CompanyCode>GIM</CompanyCode>
</OrderInfo>
</ImportOrders>
这可以通过使用 identity transform 模式并为 OrderNumber
添加一个额外的模板来非常优雅地解决。
以下模板只是将输入逐字复制到输出:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/|@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
现在您添加模板 OrderNumber
选择值和相应的 CompanyCode
<xsl:template match="OrderNumber">
<OrderNumer>
<xsl:value-of select="../HeaderInfo/CompanyCode"/>-<xsl:value-of select="."/>
</OrderNumer>
</xsl:template>
这是沙盒中的工作解决方案:https://codesandbox.io/s/stack-overflow-q-60811822-pdk2j
请注意,在您的示例中,第二个 OrderInfo
的结束 HeaderInfo
标记丢失了,我想这只是一个错字。
我需要将公司代码合并到订单 number.I 需要 XSLT 来解决以下问题。 请帮我解决这个问题。
输入XML:
<?xml version='1.0' encoding='UTF-8'?>
<ImportOrders>
<OrderInfo>
<OrderNumber>98947</OrderNumber>
<HeaderInfo>
<CompanyCode>TEST</CompanyCode>
</HeaderInfo>
</OrderInfo>
<OrderInfo>
<OrderNumber>98949</OrderNumber>
<HeaderInfo>
<CompanyCode>GIM</CompanyCode>
</OrderInfo>
</ImportOrders>
输出XML
<?xml version='1.0' encoding='UTF-8'?>
<ImportOrders>
<OrderInfo>
<OrderNumber>TEST-98947</OrderNumber>
<HeaderInfo>
<CompanyCode>TEST</CompanyCode>
</HeaderInfo>
</OrderInfo>
<OrderInfo>
<OrderNumber>GIM-98949</OrderNumber>
<HeaderInfo>
<CompanyCode>GIM</CompanyCode>
</OrderInfo>
</ImportOrders>
这可以通过使用 identity transform 模式并为 OrderNumber
添加一个额外的模板来非常优雅地解决。
以下模板只是将输入逐字复制到输出:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/|@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
现在您添加模板 OrderNumber
选择值和相应的 CompanyCode
<xsl:template match="OrderNumber">
<OrderNumer>
<xsl:value-of select="../HeaderInfo/CompanyCode"/>-<xsl:value-of select="."/>
</OrderNumer>
</xsl:template>
这是沙盒中的工作解决方案:https://codesandbox.io/s/stack-overflow-q-60811822-pdk2j
请注意,在您的示例中,第二个 OrderInfo
的结束 HeaderInfo
标记丢失了,我想这只是一个错字。