在SiteEdit 2009中加载页面时“无法从组件xml架构获取类型信息”

时间:2012-05-03 17:03:12

标签: inline tridion

我使用此处给出的答案在SitEdit 2009 SP2上启用了内联编辑

How do I enable inline field editing in SiteEdit when using an XSLT TBB?

但在SiteEdit中加载生成的页面时,我一直收到此错误:

  

Sys.FormatException:无法从组件xml架构获取类型信息。   字段:cf_tcm:20-33457-64_content_header   XPath:[1]

我的XSLT TBB片段:

<xsl:if test="//*[local-name()='content_header'] != ''">
    <h1>
        <div>
            <tcdl:ComponentField name="content_header" index="0">
                <xsl:value-of select="//*[local-name()='content_header']">
            </tcdl:ComponentField>
        </div>
    </h1>
</xsl:if>

已发布文件中的输出:

<h1>
  <div>
    <span>
      <!-- Start SiteEdit Component Field: {"ID" : "cf_tcm:20-33457-64_content_header", "XPath" : "[1]", "IsMultiValued" : false} -->
      <tcdl:ComponentField name="content_header" index="0" SiteEditProcessed="true">
        Test
      </tcdl:ComponentField>
    </span>
  </div>
</h1>

我的代码出了什么问题?

1 个答案:

答案 0 :(得分:4)

该错误消息表示<!-- Start SiteEdit Component Field: { ...} -->命令中的XPath未指向当前Component中的字段。鉴于您的XPath显示为[1],听起来非常准确。

您需要找到输出空XPath的原因。在您的XSLT中,使用<tcdl:ComponentField>包装器标记该字段。此包装器稍后由&#34;启用内联编辑&#34;处理。 TBB生成相应的<!-- Start SiteEdit Component Field ... -->命令。由于SiteEdit前端需要XPath到字段,而tcdl:ComponentField只包含字段名称,因此TBB需要根据字段名称查找XPath。

&#34;启用内联编辑&#34; SiteEdit 2009中的TBB通过查看当前已解析的项目tcdl:ComponentField来处理engine.PublishingContext.ResolvedItem.Item.Id时查找当前组件。然后它查找该Component中的字段以确定其XPath。

如果您在Template Builder中查看软件包,软件包列表底部的组件是什么?该组件是否包含content_header字段?