从umbraco的子节点中选择图像

时间:2011-07-18 11:23:30

标签: image xslt umbraco

我有包含图像的子节点。如何选择并显示它们?我似乎只能选择并显示ID。我用过的代码:

<xsl:value-of select="image"/>

如何让它显示实际图像?我正在使用Umbraco 4.7。我确信这很简单,我似乎无法弄明白。

我也尝试过以下代码,但它似乎没有看到正确的节点。我认为它是在看父母,而不是孩子,但我不确定如何改变这一点:

<xsl:variable name="media" select="umbraco.library:GetMedia($currentPage/image, 0)" />

<xsl:if test="$media">
        <img src="{$media/umbracoFile}" alt="{$media/altText}" />
</xsl:if>

3 个答案:

答案 0 :(得分:0)

  

我有包含图像的子节点。我如何选择这些和   显示它们?我似乎只能选择并显示ID。   我用过的代码:

<xsl:value-of select="image"/>

因为您忘记发布XML文档(学会这样做!!!),这个问题无法肯定回答。

我的猜测是,如果您使用<xsl:copy-of>代替<xsl:value-of>

,您可能会更成功

前者复制select属性中指定的整个节点(或节点集),而后者仅复制节点(节点集)的字符串值。

了解节点集的字符串值与节点集节点的副本之间的区别。

答案 1 :(得分:0)

使用node()来吸引孩子:

<xsl:for-each select="$currentPage/node()/image">
    <xsl:variable name="media" select="umbraco.library:GetMedia(., 0)" />
    <xsl:if test="$media">
        <img src="{$media/umbracoFile}" alt="{$media/altText}" />
    </xsl:if>
</xsl:for-each>

答案 2 :(得分:0)

试试这个。

                 

                <xsl:variable name="imageId" select="./image" />
                <xsl:if test="normalize-space($imageId)">
                    <xsl:variable name="image" select="umbraco.library:GetMedia($imageId, false())" />

                    <img src="{$image/umbracoFile}" rel="prettyPhoto" />
                </xsl:if>
            </a> 
          </xsl:if>