我需要创建一个利用IF和WHEN的XML / XSLT文档。我熟悉PHP中的这些语句(尽管if / else),但不熟悉XML / XSLT。
例如我有一个产品,该产品有2个名字的可能性: 1)层压名片 2)名片
如果它是选项1,那么我需要获得该订单的自定义选项的值并按如下方式回显:
<xsl:choose>
<xsl:when test="custom_options/option[name='Lamination Options (Your printing looks great unlaminated, if you wish you can add gloss or matt lamination below)']/value='Matt Lamination (Both sides)'">
<Extrinsic name="Laminating?">Matt Lam DS SRA3</Extrinsic>
</xsl:when>
<xsl:when test="custom_options/option[name='Lamination Options (Your printing looks great unlaminated, if you wish you can add gloss or matt lamination below)']/value='Gloss Lamination (Both sides)'">
<Extrinsic name="Laminating?">Gloss Lam DS SRA3</Extrinsic>
</xsl:when>
<xsl:otherwise>
</xsl:otherwise>
</xsl:choose>
所以我需要检查产品的名称,如果它包含层压层,然后运行另一个if语句,如果没有运行不同的if语句,那么如果它是PHP,它将如下所示:
<?php $product = "Laminated Business Cards";
if(strpos($product,'Laminated')){
if(value of custom option == 'Matt Laminated'){
echo "Matt Lam";
} elseif(value of custom option == 'Gloss Laminated'){
echo "Gloss Lam";
} else echo "No Lamination";
} elseif(value of custom option == 'Matt Laminated +2days'){
echo "Matt Lam";
} elseif(value of custom option == 'Gloss Laminated +2days'){
echo "Gloss Lam";
} else
echo "No Lamination";
&GT;
所以我需要在XSLT / XML中重现它。我知道这有点乱,但是我在一个设计糟糕的系统的工作范围内工作,除了采取这条路线之外别无选择。
干杯。
答案 0 :(得分:0)
我不确定你的问题是什么。你有一些XSLT代码和一些PHP代码,它们看起来相当不同;我不知道为什么。我们无法看到您的源文档也无济于事。您的XSLT代码表明您已掌握了xsl:choose的基础知识;它当然可以嵌套到包含一个xsl:在xsl中选择:当另一个xsl:choose时。那你的问题究竟在哪里?
我要补充的一点是,有经验的XSLT用户经常避免编写复杂的xsl:选择指令并将逻辑分解为模板规则。所以你可能会看到一系列这样的模板规则:
<xsl:template match="options[@name='Laminated' and @value='Matt Laminated']">
<xsl:text>Matt Lam</xsl:text>
</xsl:template>