我希望为两种类型的情况返回 1 个输出。第一种情况必须循环通过节点以确定是否满足。这是 XML:
<in:inputs
xmlns:in="http://www.composite.net/ns/transformation/input/1.0">
<in:result name="GetCart">
<root xmlns="">
<USC_Purchase ProductPrice="95.0000"
PriceRuleID="1810"
PurchaseQuantity="-1.00"
PaymentNotRequiredQuantity="0.00"
PaymentRequiredQuantity="-1.00"
PaymentRequiredTotal="-95.000000"
PurchaseStatus="R"
RefundTotalAllowed="0.00">
<USC_Product_PriceRule
PriceRuleID="1810"
PriceRuleName="Full Attendee"
PriceRulePriority="1"
PriceRuleStatus="A"
WebUserGroups="13CONF-M001"
ExcludeWebUserGroups=""
ProductPrice="95.0000"
ExternalCode=""
PercentOfProductCode=""
OptionID="0"
FriendlyName="Discounted Rate"
StartEndRestrictionID="0"
ClassID="0"
IsHidden="0"/>
</USC_Purchase>
<USC_Purchase ProductPrice="55.0000"
PurchaseQuantity="-4.00"
PaymentNotRequiredQuantity="0.00"
PaymentRequiredQuantity="-4.00"
PaymentRequiredTotal="-220.000000"
PurchaseStatus="R"
RefundTotalAllowed="568.00">
<USC_Product_PriceRule/>
</USC_Purchase>
这是我未完成的 XSLT,它从第一个 USC_Purchase 节点开始:
<xsl:choose>
<xsl:when test="@PurchaseStatus='R'
and ($purchase_total*($purchase_total >=0)
- $purchase_total*($purchase_total < 0))
> @RefundTotalAllowed">
We are having issues processing your refund online.
Please contact us for assistance.
</xsl:when>
<xsl:otherwise>
<!-- insert credit card form here -->
</xsl:otherwise>
这很好用……只有当第一个产品满足这些条件时。其他产品未经检查。xsl:choose 语句顶部的 for-each 循环将返回多条消息,以及信用卡表单(如果任何产品通过正常)。(咕噜!)
我的问题是 - 是否可以循环多个购买节点并在遇到单个案例时停止?
以下是步骤(以防我的解释让任何人失望):
在两个输出(错误消息和信用卡表格)之间进行选择。
对于每个 USC_Purchase 节点,如果在任何节点上满足“X”条件,则显示单个错误消息。
否则,显示信用卡表格。
如果需要更多信息,请告诉我。
编辑
当然,purchase_total 由所有 paymentrequiredtotals 的总和决定,所以:
<xsl:variable
name="purchase_total"
select="sum(USC_Purchase/@PaymentRequiredTotal)" />