Sitecore XSLT呈现图像问题

时间:2011-06-27 14:32:15

标签: xml image xslt sitecore

我试图通过模板输出已分配给我的渲染的图像。但是,当我尝试输出它时,我什么都没得到。

这就是我所拥有的:

<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没有任何结果。

如何正确渲染图像?

4 个答案:

答案 0 :(得分:1)

您尝试使用overrideImageItem代替overrideImage。这是故意的吗?

答案 1 :(得分: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>

答案 2 :(得分:0)

如果您完成此操作,请尝试使用字段属性。

<sc:image field="ImageFieldhere"/>

答案 3 :(得分: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>