【发布时间】:2011-12-02 21:29:28
【问题描述】:
似乎我不能在 call-template 元素的 name 属性中使用 Xpath。我怎样才能解决这个问题?任何帮助/想法都会很棒!
<xsl:for-each select="child::knomaddb/Content/Videos">
<xsl:result-document method="xhtml" href="{local-name()}.html">
<html>
<body>
<h1>Knomad</h1>
<h2>{local-name()} Videos</h2>
<table border="1">
<tr bgcolor="#9acd32">
<th>Title</th>
<th>Video</th>
<th>Description</th>
<th>Comments</th>
</tr>
<xsl:for-each select="Video">
<xsl:call-template name="{ancestor::local-name()}"/>
</xsl:for-each>
</table>
</body>
</html>
</xsl:result-document>
</xsl:for-each>
【问题讨论】:
-
您是否尝试过使用应用模板和模板规则来解决您的问题? call-template 指令不接受名称属性中的 xpath 表达式,您必须显式设置名称。
-
除了您似乎在尝试重新发明 xsl:apply-templates 之外,您的 XPath 表达式祖先::local-name() 不是有效的 XPath 表达式,如果它是的话可能选择多个名称,因为一个节点有多个祖先。