【问题标题】:"Could not get the type info from component xml schema" when loading a page in SiteEdit 2009在 SiteEdit 2009 中加载页面时“无法从组件 xml 架构中获取类型信息”
【发布时间】:2012-05-03 17:03:12
【问题描述】:

我使用此处给出的答案在 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>

我的代码有什么问题?

【问题讨论】:

  • html 内容现在出现在问题中
  • 确实如此,但请花点时间在 StackOverflow 上查看代码片段突出显示的工作原理。我现在编辑了您的问题以使用这种格式,但它可能对未来的问题/答案有所帮助。

标签: inline tridion


【解决方案1】:

该错误消息意味着您的 &lt;!-- Start SiteEdit Component Field: { ...} --&gt; 命令中的 XPath 未指向当前组件中的字段。鉴于您的 XPath 显示为 [1],这听起来非常准确。

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

SiteEdit 2009 中的“启用内联编辑”TBB 在处理 tcdl:ComponentField 时通过查看当前已解决的项目 (engine.PublishingContext.ResolvedItem.Item.Id) 来查找当前组件。然后查找该组件中的字段以确定其 XPath。

如果您在模板生成器中查看包,包列表底部的组件是什么?该组件是否包含content_header 字段?

【讨论】:

  • 我在 2 个地方进行了内联站点编辑 tbb。我不确定为什么会导致 xpath 无法解析
  • 我也不知道,但我也注意到您发布的 HTML 中仍然有 标记。通常,这些由默认完成操作(中的清理模板)清理。您可能想检查那个是否存在并且正在工作。
猜你喜欢
  • 1970-01-01
  • 2010-12-09
  • 2011-11-20
  • 2012-06-08
  • 2021-03-10
  • 1970-01-01
  • 2012-12-24
  • 2019-10-03
  • 2011-04-26
相关资源
最近更新 更多