【发布时间】:2015-04-08 23:36:29
【问题描述】:
我正在使用 XSLT 来尝试格式化 Web 服务调用。我可以将“标题”元素复制到翻译后的文档中,但是我无法复制行项目字段。我正在使用 for-each 命令,但它不会循环遍历数据。
我传入的 XML 如下所示:
<OTC_Alerts_KNA>
<Header>
<current_date_time_of_application_server__c>2015-04-08T12:48:50</current_date_time_of_application_server__c>
<alert_type__c>LSH</alert_type__c>
<single_character_indicator__c>O</single_character_indicator__c>
<alert_functional_area__c>DELV</alert_functional_area__c>
<customer_number__c>1000000118</customer_number__c>
<customer_name__c>WEBCO HAWAII</customer_name__c>
<sales_document_number__c>0000012164</sales_document_number__c>
<sales_document_type__c>ZOR</sales_document_type__c>
</Header>
<Line_Items>
<customer_purchase_order_number__c>LDSHORTAGE11</customer_purchase_order_number__c>
<requested_delivery_date__c>2015-04-01</requested_delivery_date__c>
<material_number__c>000000000100100010</material_number__c>
<short_text_for_sales_order_item__c>SPK RED BRY 12 oz1</short_text_for_sales_order_item__c>
<free_msg_text__c>000010</free_msg_text__c>
<confirmed_quantity__c>10</confirmed_quantity__c>
<pick_quantity__c>10</pick_quantity__c>
</Line_Items>
<Line_Items>
<customer_purchase_order_number__c>LDSHORTAGE11</customer_purchase_order_number__c>
<requested_delivery_date__c>2015-04-01</requested_delivery_date__c>
<material_number__c>000000000100100003</material_number__c>
<short_text_for_sales_order_item__c>RICE KRPS 12CT/CS</short_text_for_sales_order_item__c>
<free_msg_text__c>000020</free_msg_text__c>
<confirmed_quantity__c>10</confirmed_quantity__c>
<pick_quantity__c>10</pick_quantity__c>
</Line_Items>
</OTC_Alerts_KNA>
我的 XSLT 是:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:urn="urn:enterprise.soap.sforce.com" xmlns:urn1="urn:sobject.enterprise.soap.sforce.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.0">
<xsl:template match="*">
<xsl:element name="urn:create">
<urn:sObjects xsi:type="urn1:iDoc__c">
<xsl:copy-of select="OTC_Alerts_KNA/Header/node()" />
</urn:sObjects>
<xsl:for-each select="OTC_Alerts_KNA/Line_Items">
<urn:sObjects xsi:type="urn1:iDoc_Line_Item__c">
<xsl:copy-of select="OTC_Alerts_KNA/Line_Items/node()" />
</urn:sObjects>
</xsl:for-each>
</xsl:element>
</xsl:template>
</xsl:stylesheet>
我得到的输出如下。
<urn:create
xmlns:urn="urn:enterprise.soap.sforce.com">
<urn:sObjects
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:urn1="urn:sobject.enterprise.soap.sforce.com" xsi:type="urn1:iDoc__c">
<current_date_time_of_application_server__c>2015-04-08T12:48:50</current_date_time_of_application_server__c>
<alert_type__c>LSH</alert_type__c>
<single_character_indicator__c>O</single_character_indicator__c>
<alert_functional_area__c>DELV</alert_functional_area__c>
<customer_number__c>1000000118</customer_number__c>
<customer_name__c>WEBCO HAWAII</customer_name__c>
<sales_document_number__c>0000012164</sales_document_number__c>
<sales_document_type__c>ZOR</sales_document_type__c>
</urn:sObjects>
<urn:sObjects
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:urn1="urn:sobject.enterprise.soap.sforce.com" xsi:type="urn1:iDoc_Line_Item__c"/>
<urn:sObjects
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:urn1="urn:sobject.enterprise.soap.sforce.com" xsi:type="urn1:iDoc_Line_Item__c"/>
</urn:create>
如您所见,“OTC_Alerts_KNA/Header”节点被复制,但行项目未被复制。我希望复制每个“Line_Item”元素及其子元素。我想看到的是:
<urn:create xmlns:urn="urn:enterprise.soap.sforce.com">
<urn:sObjects xmlns:urn1="urn:sobject.enterprise.soap.sforce.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="urn1:iDoc__c">
<current_date_time_of_application_server__c>2015-04-08T12:48:50</current_date_time_of_application_server__c>
<alert_type__c>LSH</alert_type__c>
<single_character_indicator__c>O</single_character_indicator__c>
<alert_functional_area__c>DELV</alert_functional_area__c>
<customer_number__c>1000000118</customer_number__c>
<customer_name__c>WEBCO HAWAII</customer_name__c>
<sales_document_number__c>0000012164</sales_document_number__c>
<sales_document_type__c>ZOR</sales_document_type__c>
</urn:sObjects>
<urn:sObjects xmlns:urn1="urn:sobject.enterprise.soap.sforce.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="urn1:iDoc_Line_Item__c">
<customer_purchase_order_number__c>LDSHORTAGE11</customer_purchase_order_number__c>
<requested_delivery_date__c>2015-04-01</requested_delivery_date__c>
<material_number__c>000000000100100010</material_number__c>
<short_text_for_sales_order_item__c>SPK RED BRY 12 oz1</short_text_for_sales_order_item__c>
<free_msg_text__c>000010</free_msg_text__c>
<confirmed_quantity__c>10</confirmed_quantity__c>
<pick_quantity__c>10</pick_quantity__c>
</urn:sObjects>
<urn:sObjects xmlns:urn1="urn:sobject.enterprise.soap.sforce.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="urn1:iDoc_Line_Item__c">
<customer_purchase_order_number__c>LDSHORTAGE11</customer_purchase_order_number__c>
<requested_delivery_date__c>2015-04-01</requested_delivery_date__c>
<material_number__c>000000000100100003</material_number__c>
<short_text_for_sales_order_item__c>RICE KRPS 12CT/CS</short_text_for_sales_order_item__c>
<free_msg_text__c>000020</free_msg_text__c>
<confirmed_quantity__c>10</confirmed_quantity__c>
<pick_quantity__c>10</pick_quantity__c>
</urn:sObjects>
</urn:create>
【问题讨论】: