Xml 图像的Sitecore XSLT呈现问题

Xml 图像的Sitecore XSLT呈现问题,xml,image,xslt,sitecore,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-prefixe

我正在尝试输出一个图像,该图像已通过模板指定给我的渲染。然而,当我试图通过输出它时,我什么也得不到

以下是我所拥有的:

<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:

因此,尝试1呈现出(实际可行,但不符合标准): &尝试2不显示任何内容


如何正确渲染图像?

您使用的是
overrideImageItem
,而不是尝试1中的
overrideImage
。这是故意的吗?

如果通过了,请尝试使用字段属性

<sc:image field="ImageFieldhere"/>

什么

<sc:image select="$overrideImage" mw="200" ></sc: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>


我的坏消息。错误地复制了XSLT,我在文章中对其进行了简化。使用$overrideImage没有任何区别。它的输出为0。请注意
应为
问题是图像不在字段中。If作为参数传递给XSLT,因为它被指定为应用于呈现的模板的一部分。$overrideImage包含一个对象,当输出到HTML时,该对象显示为:
我希望将此对象显示为图像。AVT语法看起来是正确的,但我想我已经尝试过了。我会再检查确认的。谢谢你的帮助,顺便说一句。所以AVT语法没有产生任何输出,我就是不明白。
<sc:image mw="200" ><xsl:value-of select="$overrideImage"/></sc:image>
<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>