0

是否可以直接从 xslt 设置文档类型属性的值?我的页面的页面标题需要根据 xslt 结果进行更改,并且页面标题是通过属性设置的。

谷歌搜索了一段时间,但没有找到我要找的东西,所以我想我会在这里问 umbraconians!

谢谢

4

2 回答 2

1

如上所述,XSLT 是只读的,因此无法以在页面呈现时会受到影响的方式修改属性。

但是,您可以编写一个附加的 XSLT 宏,放置在标题标签之间。该宏可以使用匹配模板。这允许您执行不同的操作,具体取决于您正在处理的 XML 节点。

由于数据在 Umbraco 4.7.x 中的存储方式,“文档类型别名”被用作 XML 节点。这意味着我们可以匹配您的搜索页面(只要它有自己的 DocType)。

只需将“搜索”更新为您的文档类型的名称。

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet
version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:umb="urn:umbraco.library"
exclude-result-prefixes="umb"
>

  <xsl:output method="xml" omit-xml-declaration="yes"/>
  <xsl:param name="currentPage"/>

  <!-- Match Templates -->
  <xsl:template match="/">
    <xsl:apply-templates select="$currentPage" />
  </xsl:template>

  <!-- Search -->
  <xsl:template match="search">
    WooHoo! I'm the Search page! 
  </xsl:template>

  <!-- All other pages -->
  <xsl:template match="*[@isDoc]">
    <xsl:value-of select="@nodeName" />
  </xsl:template>

</xsl:stylesheet>
于 2012-05-17T16:32:13.110 回答
0

据我所知, xslt 是只读的。您可以有条件地更改在宏中显示为标题的内容(如果是,则显示属性中的标题,否则显示其他标题),或者如果您真的想设置属性,我建议使用剃须刀脚本:Umbraco - how使用 razor 脚本设置属性的值

于 2012-05-17T13:01:58.323 回答