我试图通过模板输出已分配给我的渲染的图像。但是,当我尝试输出它时,我什么都没得到。
这就是我所拥有的:
<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 :(得分:1)
您尝试使用overrideImageItem
代替overrideImage
。这是故意的吗?
答案 1 :(得分:1)
所以,我意识到我误解了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>
答案 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>