2011-06-27 67 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

您有overrideImageItem而不是overrideImage與嘗試1.這是故意的嗎?

+0

我的壞。複製不正確從XSLT,我簡化爲帖子使用$ overrideImage沒有區別,它得到0輸出 – David

0

嘗試使用字段屬性,而不是通過。

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

問題是圖像不在字段中如果作爲參數傳遞給XSLT,因爲 – David

0

什麼

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

意味着什麼?你想做什麼?

如果你的目的是爲了評估選擇屬性裏面的變量,你應該使用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

所以,我意識到我誤解了圖像項目傳遞的內容。當從模板傳遞圖像時,它將作爲字符串傳遞,數據格式爲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>