跳转到内容

Umbraco/Umbraco 中各种有用的 XSLT 方法

来自维基教科书,开放世界中的开放书籍

在 Umbraco 中使用 XSLT 的基础知识

[编辑 | 编辑源代码]

创建变量

<xsl:variable name="myVarName" select="[select-expression/value]"/>

变量在此之后使用 $myVarName(以 $ 为前缀)引用。

输出值

<xsl:value-of select="$myVarName" />

表达式

转换为字符串

string($myVarName)

转换为数字

number($myVarName)

如果测试

<xsl:if test="$value=3">
</xsl:if>

选择测试

<xsl:choose>
	<xsl:when test="[expression]">
	</xsl:when>
	<xsl:when test="[expression]">
	</xsl:when>
	<xsl:otherwise>
	</xsl:otherwise>
</xsl:choose>

循环遍历特定文档类型的所有节点(从根节点向下)(此示例包括对该文档类型中的字段进行排序)

<xsl:for-each select="$currentPage/ancestor-or-self::root//node [@nodeTypeAlias='myDocType']">
   <xsl:sort select="data [@alias = 'myAttributeAlias']" order="descending"/>
</xsl:for-each>

从特定文档类型的第一个父节点获取节点名称

<xsl:variable name="myVarName" select="ancestor-or-self::node [@nodeTypeAlias = 'myDocType']/@nodeName"/>

(自 Umbraco 4.5 架构以来,不再使用 @nodeTypeAlias) - 对于 4.5 及更高版本,请使用

<xsl:variable name="myVarName" select="$currentPage/ancestor-or-self::doc-type-alias-goes-here/@nodeName"></xsl:variable>

从使用 @nodeTypeAlias 更改的详细信息:http://our.umbraco.org/wiki/reference/xslt/45-xml-schema/no-more-@nodetypealias

从具有特定文档类型的第一个父节点获取属性值

<xsl:variable name="myVarName" select="ancestor-or-self::node [@nodeTypeAlias = 'myDocType']/data [@alias = 'myAttributeAlias']"/>

将 for-each 循环限制为仅运行五次(如果 position <= 5)(记住,在 XSLT 中,'<' 符号必须写为 '&lt;'  !) 

<xsl:for-each select="$currentPage/descendant::node">
<xsl:if test="position() &lt;= 5">
</xsl:if>
</xsl:for-each>

循环当前节点的前五个后代。

从循环中的当前节点获取属性值

<xsl:value-of select="data [@alias = 'myAttributeAlias']"/>

创建具有两个参数的模板

<xsl:template name="myTemplate">
	<xsl:param name="startnode"/>
	<xsl:param name="endnode"/>
	<!-- do something-->
</xsl:template>

调用模板

<xsl:call-template name="myTemplate">
	 <xsl:with-param name="startnode" select="23"/>
	 <xsl:with-param name="endnode" select="49"/>
</xsl:call-template>

从宏获取参数

<xsl:variable name="myParam" select="/macro/parameterAlias"/>
华夏公益教科书