使用Umbraco GetMedia时出现XSLT分析错误

时间:2013-08-13 08:21:04

标签: xslt umbraco

我正在尝试使用GetMedia mediapicker将图片检索到图像。

以下代码可以正常使用:

<xsl:for-each select="umbraco.library:GetXmlNodeById(1123)/* [@isDoc]">
  <article>
     <img width="1822" height="600">
       <xsl:attribute name="src">
         <xsl:value-of select="umbraco.library:GetMedia(1139, 0)/umbracoFile" />
       </xsl:attribute>
     </img>
     <div class="contents">
        <h1>
          <xsl:value-of select="bannerHeading1"/>
        </h1>
      </div>
  </article>
</xsl:for-each>

但是,如果我用这个替换关键字:

<xsl:value-of select="umbraco.library:GetMedia(bannerImage, 0)/umbracoFile" />

我得到一个解析错误,例外是 OverflowException (对于Int32,值太大或太小),这表明它不是传入的1139.

有没有办法可以传递我想要的财产? “bannerImage”的值是1139,我希望它是什么?

感谢您的帮助。

此外:这是GetXMLNodeById返回的XML结构:

<?xml version="1.0" encoding="utf-8" ?>
<HomepageBanner id="1141" parentID="1123" level="3" writerID="0" creatorID="0" nodeType="1124" template="1125" sortOrder="0" createDate="2013-08-12T15:53:48" updateDate="2013-08-12T15:54:18" nodeName="Members" urlName="members" writerName="admin" creatorName="admin" path="-1,1065,1123,1141" isDoc="">
  <bannerImage>1139</bannerImage>
  <bannerHeading1>Members Area</bannerHeading1>
  <bannerHeading2>..the place for all your needs</bannerHeading2>
</HomepageBanner>

1 个答案:

答案 0 :(得分:1)

对于其他任何试图从内容文件夹中的项目获取图像的人来说,这就是我开始工作的方式:

<xsl:for-each select="umbraco.library:GetXmlNodeById(1123)/* [@isDoc]">
  <article>
    <!-- Store the ID -->
    <xsl:variable name="mediaId" select="bannerImage" />
      <!-- Check the ID is numeric -->
      <xsl:if test="number($mediaId) &gt; 0">
        <xsl:variable name="mediaNode" select="umbraco.library:GetMedia($mediaId, false())" />
        <xsl:if test="string-length($mediaNode/umbracoFile) &gt; 0">
          <img src="{$mediaNode/umbracoFile}" width="1822" height="600" />
          <div class="contents">
            <h1>
              <xsl:value-of select="bannerHeading1"/>
            </h1>
          </div>
        </xsl:if>
      </xsl:if>
    </article>
</xsl:for-each>

首先需要检查值是否为数字,然后,我失败的位,您需要将"/umbracoFile"部分添加到媒体节点变量。

感谢帮助我朝着正确方向前进的贡献者。