0

以下を出力するxml(外部パーツから取得)があります。

...<prop name="day">monday</prop>
<prop name="week">2</prop>...

その日の名前の代わりにxslを使用して画像を表示することは可能かどうか疑問に思いました。曜日の名前は7つの可能な変数で変更され、曜日ごとに異なる画像を表示する必要があります。

したがって、私が期待している結果は次のようになります。

 <img src="mondayimage.jpg">
 <p>Week number 2</p>
4

3 に答える 3

0

xsl:chooseを使用してシナリオを処理できます。

以下に、使用できるコードスニペットを含めます

<xsl:template match="prop">
    <xsl:variable name="day" select="."/>
    <xsl:choose>
        <xsl:when test="$day='monday'">
            <img src="mondayimage.jpg"/>
        </xsl:when>
       <!-- repeat condition for all the days -->
        <xsl:otherwise>
            <p><xsl:value-of select="@name"/> number <xsl:value-of select="."/> </p>
        </xsl:otherwise>
    </xsl:choose>
</xsl:template>
于 2013-03-26T21:39:41.853 に答える
0

小道具の種類ごとに異なるテンプレートを使用することをお勧めします。後で簡単に変更できます。文字列の「{}」内でXSLコードを使用して、次のようなテンプレートを作成することもできます。

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
    <xsl:template match="root/prop[@name='day']">
        <img src="{.}image.jpg"/>
    </xsl:template>
    <xsl:template match="root/prop[@name='week']">
        <p><xsl:value-of select="concat('Week number ',.)"/></p>
    </xsl:template>
</xsl:stylesheet>
于 2013-03-26T22:34:36.800 に答える
0

xslt 2.0では、index-ofxpath関数を使用して効率的なルックアップを生成します。

<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
    <xsl:output indent="yes"/>

    <xsl:param name="days" select="('monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday', 'sunday')"/>
    <xsl:param name="day-image" select="('image1.png','image2.png','image3.png','image4.png','image5.png','image6.png','image7.png')"/>

    <xsl:template match="/root">
        <root>
            <xsl:apply-templates/>
        </root>
    </xsl:template>

    <xsl:template match="prop[@name='day']">
        <img src="{$day-image[index-of($days, current())]}"/>
    </xsl:template>

    <xsl:template match="prop[@name='week']">
        <p>Week number <xsl:value-of select="."/></p>
    </xsl:template>
</xsl:transform>

実例

于 2013-03-27T23:18:36.023 に答える