【问题标题】:Accessing a category's child keywords when using XSLT component template使用 XSLT 组件模板时访问类别的子关键字
【发布时间】:2012-04-30 00:28:35
【问题描述】:

在最近从 Tridion 2009 升级到 2011 期间,部分 XSLT 组件模板停止工作。

组件模板从当前发布 XML 的 categoryXSD 部分读取子关键字。然后使用 webdav 加载每个关键字。

这部分的发布 XML 似乎已在 2011 年被删除。

有谁知道在使用 XSLT 模板时从 Category Tcm Id 获取子关键字的另一种方法?

【问题讨论】:

    标签: tridion


    【解决方案1】:

    如果我在使用旧式 XSLT 组件模板时需要项目列表,我通常会创建一个“帮助”服务或 ASPX 页面,它会返回一个包含相关项目的 XML 文档。然后,您可以使用 XSLT 中的 Document() 函数调用该帮助程序。通常,这采用 ASPX 的形式存储在 CMS 服务上,例如 http://tridion.local.url/web/helpers/GetListXml.aspx?uri=SomeOrgItemURI

    您可以使用 GetListXml.aspx 中的 TOM API 使用 GetListItem 查询项目并将响应写入输出。

    然后在您的 XSLT 中,您可以使用 <xsl:variable name="KEYWORDS" select="document('http://tridion.local.url/web/helpers/GetListXml.aspx?uri=$CAT_URI')"/> 之类的东西。然后,您可以遍历新变量中的关键字节点。

    但是,如果您使用模块化模板和 SDL Tridion World 上提供的 XSLT Mediator,则没有必要这样做,因为内置了许多帮助程序。我强烈建议您考虑更新的模板技术,它们可以提供很多。

    【讨论】:

    • 谢谢克里斯。我同意需要一种新方法。
    【解决方案2】:

    我正在查看发布 XML,我认为您不走运。提到了<tcm:CategoriesXSD>,您可以从中获取类别 TcmUri,但如果您导航到类别 XML,则其中没有提及其子关键字。

    因此,要么按照 Chris 的建议使用 XSLT Mediator,要么将此 XSLT 重写为 C# 模板。

    【讨论】:

      【解决方案3】:

      您没有提及您是使用 XSLT 中介器与模块化模板一起使用,还是使用普通的旧 XSLT 组件模板。你能澄清一下吗?

      我使用 XSLT 中介器,并添加一个用 C# 编写的帮助器模板,该模板在执行 XSLT 之前将类别中的关键字添加到包中。然后可以使用参数将该列表作为 XML 文档进行访问。如果这对你有用,请告诉我,我会尝试挖掘我的代码示例。

      【讨论】:

      • 嗨,克里斯。我正在使用 XSLT 组件模板。我们目前在 XSLT 组件模板中使用 VBScript 来通过 webdav 访问关键字。我希望避免为子关键字做类似的事情
      • @Mark - 查看我的其他答案以获得通用 XSLT CT 解决方案而不是模块化模板解决方案
      猜你喜欢
      • 2012-06-14
      • 1970-01-01
      • 2011-08-08
      • 1970-01-01
      • 2021-04-10
      • 2015-10-07
      • 2018-03-24
      • 2017-01-30
      • 2017-11-04
      相关资源
      最近更新 更多