0

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";

?>

したがって、それを XSLT/XML で再現する必要があります。少し面倒なことはわかっていますが、このルートを取る以外に選択肢がほとんどない、設計が不十分なシステムの制約内で作業しています。

乾杯。

4

1 に答える 1

0

あなたの質問が何であるかよくわかりません。XSLT コードと PHP コードがいくつかありますが、かなり異なっているように見えます。理由はわかりません。ソース ドキュメントが表示されないことは役に立ちません。あなたの XSLT コードは、xsl:choose; の基本を習得したことを示しています。もちろん、別の xsl:choose の xsl:when 内に 1 つの xsl:choose を含めるようにネストできます。それで、あなたの問題はどこにありますか?

1 つ付け加えておきたいのは、経験豊富な XSLT ユーザーは、複雑な xsl:choose 命令を記述することを避け、代わりにロジックをテンプレート ルールに分割することが多いということです。したがって、次のような一連のテンプレート ルールが表示される場合があります。

<xsl:template match="options[@name='Laminated' and @value='Matt Laminated']">
  <xsl:text>Matt Lam</xsl:text>
</xsl:template>
于 2012-04-24T17:20:31.040 に答える