2011-06-27 12 views
1

テンプレートを使用してレンダリングに割り当てられた画像を出力しようとしています。しかし、私はそれを介して出力しようとすると何も得られません。ここで画像のSitecore XSLTレンダリングの問題

は私が持っているものです。

<xsl:stylesheet version="1.0" 
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    xmlns:sc="http://www.sitecore.net/sc" 
    xmlns:dot="http://www.sitecore.net/dot" 
    exclude-result-prefixes="dot sc"> 

    <!-- output directives --> 
    <xsl:output method="xml" indent="no" encoding="UTF-8" omit-xml-declaration="yes" /> 

    <!-- parameters --> 
    <xsl:param name="lang" select="'en'"/> 
    <xsl:param name="id" select="''"/> 
    <xsl:param name="sc_item"/> 
    <xsl:param name="sc_currentitem"/> 
    <xsl:param name="overrideImage"/> 

    <!-- variables --> 
    <xsl:variable name="home" select="$sc_item/ancestor-or-self::item[@template='site root']" /> 

    <!-- entry point --> 
    <xsl:template match="*"> 
    <xsl:apply-templates select="$sc_item" mode="main"/> 
    </xsl:template> 

    <!--==============================================================--> 
    <!-- main               --> 
    <!--==============================================================--> 
    <xsl:template match="*" mode="main"> 
    <p>Attempt 1: 
    <xsl:value-of select="$overrideImage" disable-output-escaping="yes" /></p> 
    <p>Attempt 2: 
    <sc:image select="$overrideImage" mw="200" /></p> 
    </xsl:template> 

</xsl:stylesheet> 

だから、1(実際の規格に準拠し動作しますが、ないもの)うちレンダリングしよう: &試み2は何も出てレンダリングしません。

イメージを正しくレンダリングするにはどうすればよいですか?

+0

'注意してください' '読むべき' – David

答えて

1

overrideImageの代わりにoverrideImageItemがあります。これは目的に合っていますか?

+0

私の悪いですXSLTから間違ってコピーされてしまいました。$ overrideImageを使用すると違いはありません。出力は0になります。 – David

0

これを取得した場合は、代わりにフィールド属性を試してください。

<sc:image field="ImageFieldhere"/> 
+0

画像がフィールドにないという問題があります。 – David

0

<sc:image select="$overrideImage" mw="200" ></sc:image> 

を意味するのでしょうか?あなたは何をしようとしているのですか?

あなたの意図は、select属性内の変数を評価することであるならば、あなたはAVTの構文を使用する必要があります。

<sc:image select="{$overrideImage}" mw="200" ></sc:image> 

あなたは要素内の変数値を置きたい場合は、XSLT命令xsl:value使用する必要があります。

<sc:image mw="200" ><xsl:value-of select="$overrideImage"/></sc:image> 
+0

$ overrideImageには、HTMLに出力するときに出力されるオブジェクトが含まれています。 ' ' このオブジェクトは、画像。 AVTの構文は正しく見えますが、私はすでにそれを試したと思います。もう一度確認して確認します。 ご協力いただきありがとうございます。 – David

+0

AVT構文では出力が生成されませんでしたが、これはわかりません。 – David

1

このように、私はイメージアイテムによって渡されたものを誤解していたことに気付きました。 Imageがテンプレートから渡されると、データはXMLとしてフォーマットされた文字列として渡されます。私はビットを抽出するために文字列を解析しなければなりませんでした。そして、それをXMLとしてフォーマットすることができました。

<xsl:variable name="mediaSrc"> 
    <xsl:value-of select="substring-before(substring-after($overrideImage, 'src=&quot;'), '&quot;')"/> 
</xsl:variable> 
<xsl:variable name="mediaAlt"> 
    <xsl:value-of select="substring-before(substring-after($overrideImage, 'alt=&quot;'), '&quot;')"/> 
</xsl:variable> 
<img> 
    <xsl:attribute name="src"> 
    <xsl:value-of select="concat($mediaSrc, '?mw=200')"/> 
    </xsl:attribute> 
    <xsl:if test="($mediaAlt !='')"> 
    <xsl:attribute name="alt"> 
     <xsl:value-of select="$mediaAlt"/> 
    </xsl:attribute> 
    </xsl:if> 
</img>