Tridion 如果XSLT TBB(XSLT Mediator)中有类别tcm id,如何获取关键字列表

Tridion 如果XSLT TBB(XSLT Mediator)中有类别tcm id,如何获取关键字列表,tridion,tridion-2011,Tridion,Tridion 2011,我使用的是SDL tridion 2011 SP1 我想使用XSLT中介获得给定类别下的关键字列表 有没有人遇到过这种情况,如果有,请分享你的看法 但是,当我实际查看类别项XML时,它没有任何与其关键字相关的信息。您需要创建一个C#TBB来将类别关键字插入包中,然后将其作为XSLT中的参数访问 您可以使用一块c#,如下所示: class GetCategoryKeywords : TemplateBase { public override void Transform(

我使用的是SDL tridion 2011 SP1

我想使用XSLT中介获得给定类别下的关键字列表

有没有人遇到过这种情况,如果有,请分享你的看法


但是,当我实际查看类别项XML时,它没有任何与其关键字相关的信息。

您需要创建一个C#TBB来将类别关键字插入包中,然后将其作为XSLT中的参数访问

您可以使用一块c#,如下所示:

class GetCategoryKeywords : TemplateBase
    {
        public override void Transform(Engine engine, Package package)
        {
            Initialize(engine, package);
            String webDavPathCategory = package.GetValue("CategotryWebDavPath");
            Category cat = (Category)engine.GetObject(webDavPathCategory);
            XmlDocument keywordsXml = new XmlDocument();
            keywordsXml.LoadXml(cat.GetListKeywords().OuterXml);
            Item output = package.CreateXmlDocumentItem(ContentType.Xml, keywordsXml);
            package.PushItem("CategoryKeywords", output);
        }
    }
这将在名为CategoryKeywords的包中放置一个XML文档,其中包含关键字。然后,在调用XSLT中介程序时,将“Include Package parameters”值设置为true,并在XSLT顶部添加一个参数,如下所示:

<xsl:param name="CategoryKeywords"/>

然后,可以将新参数作为变量循环,对其执行所需的任何XPath查询。以下示例可能会有所帮助:

<xsl:variable name="URI" select="$CategoryKeywords//tcm:ListUsedItems/tcm:Item[@Title=$VALUE]/@ID" />

<xsl:for-each select="$CategoryKeywords//tcm:ListItems/tcm:Item">
    Do something
<xsl:for-each>

做点什么