【发布时间】:2012-05-21 16:24:57
【问题描述】:
我正在使用 XSLT 中介器在 SDL Tridion 2011 SP1 中开发 XSLT 模板构建块。
我只是想知道,如何在渲染时获取组件的名称、版本及其 TCMID。
任何人都可以帮助如何做到这一点?
【问题讨论】:
标签: tridion tridion-2011
我正在使用 XSLT 中介器在 SDL Tridion 2011 SP1 中开发 XSLT 模板构建块。
我只是想知道,如何在渲染时获取组件的名称、版本及其 TCMID。
任何人都可以帮助如何做到这一点?
【问题讨论】:
标签: tridion tridion-2011
访问组件的非字段值困扰着许多开发人员。这并不奇怪,因为没有明显的方法可以从 UI 中查看组件的完整 XML。 CME(SDL Tridion CM 用户界面)中的源选项卡仅显示 XML 中内容节点的 XML,不显示完整的 XML。
为了查看完整的 XML(无需通过 API 加载),您有多种选择。从最简单的开始,包括:
<xsl:copy-of select="."/> 之类的东西写出组件的根节点。这会将整个组件 XML 写入模板输出,然后您可以在编写 XSLT 时将其保存以供参考。一旦您可以访问 XML,查找任何 Tridion 对象的任何属性变得非常直观。
【讨论】:
在模板生成器中清楚地观察输出后,我得到的答案是
<xsl:element name="TCMID">
<xsl:value-of select="tcm:Component/@ID"/>
</xsl:element>
<xsl:element name="name">
<xsl:value-of select="tcm:Component/tcm:Data/tcm:Title"/>
</xsl:element>
<xsl:element name="Version">
<xsl:value-of select="tcm:Component/tcm:Info/tcm:VersionInfo/tcm:Version"/>
</xsl:element>
【讨论】:
<xsl:copy-of select="tcm:Component"/>。然后,您可以根据需要“XPath”到其他变量。
可能不是您问题的完整答案,但包项应该可以用作模板的参数。因此,如果您需要访问不在组件 XML 中的值,您可以在运行 XSLT TBB 之前将其添加到包中。
【讨论】: