2

主な開発者がネイティブ PHP ベースのテンプレートから XSLT テンプレートへの大幅な変更を検討している、私が使用している特定のフレームワークがあります。

私たちのサイトでは通常、非常に複雑なテンプレート ロジックを使用しているため、これが実現できないのではないかと心配しています。

このような単純なものの場合:

    if ( $something ) { ?>
        <p><?php if ( $another ) { ?>Lorem Ipsum<?php } else { ?>Dolor amet<?php } ?>.</p>
    <?php } else { ?>
        <p><?php if ( $another ) { ?>Lorem Ipsum<?php } else { ?>Dolor amet<?php } ?>.</p>
    <?php } ?>

同等の XSLT は次のようになります。

    <xsl:choose>
        <xsl:when test="blah">
            <xsl:choose>
                <xsl:when test="another">
                    <p>Lorem Ipsum.</p>
                </xsl:when>
                <xsl:otherwise>
                    <p>Dolor amet.</p>
                </xsl:otherwise>
        </xsl:when>
        <xsl:otherwise>
                <xsl:when test="another">
                    <p>Lorem Ipsum.</p>
                </xsl:when>
                <xsl:otherwise>
                    <p>Dolor amet.</p>
                </xsl:otherwise>
        </xsl:otherwise>
    </xsl:choose>

このような単純なコード スニペットでは、高度なシナリオを考えると怖くなります。

誰かが同様のテンプレート変換を経験したことがあるかどうか疑問に思っています。もしそうなら、どのように対処しましたか? 戻りましたか?

4

2 に答える 2

6

XSLT 1.0 では、提案されたコードを次のように単純化できます。

<p>
   <xsl:choose>
        <xsl:when test="blah">
                <xsl:when test="another">Lorem Ipsum.</xsl:when>
                <xsl:otherwise>Dolor amet.</xsl:otherwise>
        </xsl:when>
        <xsl:otherwise>
                <xsl:when test="another">Lorem Ipsum.</xsl:when>
                <xsl:otherwise>Dolor amet.</xsl:otherwise>
        </xsl:otherwise>
    </xsl:choose>
</p>

XSLT 2.0 では、次のようにさらに単純化できます。

<p>
  <xsl:value-of select="if (test=blah) 
                        then if (test=another) then 'Lorem ipsum' else 'Dolor amet'
                        then if (test=another) then 'Lorem ipsum' else 'Dolor amet'"/>
</p>

これは、元の PHP よりもはるかに優れていると思います。

より一般的な質問について言えば、XSLT の学習曲線は急勾配です。それに固執し、概念を習得する人は、一般的にその言語に非常に満足しています。しかし、そこにたどり着く前に足がすくみ、あきらめてしまう人も少なくありません。

于 2012-04-05T20:19:35.483 に答える
1

私の経験では、最終的には常にプレーン ファイルに戻り.phtmlます。これが正しいことでも理想的なことでもありませんが、当時の問題を解決したものです。

XSLT は、単純なロジック テンプレートであっても、私にとっては決して適切なものではありませんでした。

私を喜ばせたテンプレート システムがあるとすれば、それはTwigでした。

于 2012-04-05T16:54:15.997 に答える