10

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

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

似乎该出版物 XML 的这一部分已在 2011 年被删除。

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

4

3 回答 3

3

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

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

于 2012-04-18T15:34:50.983 回答
3

If I need lists of items when using the older style XSLT Component Templates I normally make a "Helper" Service or ASPX page which returns an XML document containing the relevant items. You can then call that helper using the Document() function in XSLT. Typically this takes the form of a ASPX stored on the CMS Service at something like http://tridion.local.url/web/helpers/GetListXml.aspx?uri=SomeOrgItemURI

You can use the TOM API in GetListXml.aspx to query the item using the GetListItem and write the response to the output.

Then in your XSLT you can use something like <xsl:variable name="KEYWORDS" select="document('http://tridion.local.url/web/helpers/GetListXml.aspx?uri=$CAT_URI')"/>. You can then iterate through the Keyword node in the new variable.

However none of that in necessary if you use Modular Templates and the XSLT Mediator available on SDL Tridion World as there are many helpers are built in. I strongly recommend considering the newer template techniques, they have a lot to offer.

于 2012-04-18T16:43:57.253 回答
1

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

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

于 2012-04-18T15:09:05.800 回答