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="'), '"')"/>
</xsl:variable>
<xsl:variable name="mediaAlt">
<xsl:value-of select="substring-before(substring-after($overrideImage, 'alt="'), '"')"/>
</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="'), '"')"/>
</xsl:variable>
<xsl:variable name="mediaAlt">
<xsl:value-of select="substring-before(substring-after($overrideImage, 'alt="'), '"')"/>
</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>