的选择元素名称我有可能是一个相当具体的问题..XSL和XPath的 - 属性
我将在一些条件的窗体上输入一个用户,然后它建立从输入的XPath。比方说,他们的意见将创建下列:
//*[@color='red']/@*
这基本上意味着他们希望看到任何元素的所有属性与@color =红色。
我可以精确显示表达式要求的(所有属性),但我想添加可能有用的信息,例如属性所属的元素名称。
一个选项是添加到XPath中,以显示元素名称:(创建此表达式的较短方式不需要使用|会很高兴知道..所以如果您有建议,那将是真棒!)
//*[@color='red']/@* | //*[@color='red']
另一种选择(我希望是可能的)是选择元素名称的属性属于从模板而不改变XPath表达式(因为我可能要在另一个上下文中使用这个表达式没有元素名称)。
我想有这样的XSLT:
<xsl:param name="built_expression" select="//*[@color='red']/@* />
<xsl:template match="/">
<html>
<body>
<table>
<tr>
<th>Element Name</th>
<th>Element Content</th>
</tr>
<xsl:apply-templates select="$built_expression"/>
</table>
</body>
</html>
</xsl:template>
<xsl:template match="@*|node()">
<tr>
<td>
<xsl:value-of select="ELEMENT name()" />
</td>
<td>
<xsl:value-of select="node()" />
</td>
</tr>
... other display stuff to do with the attributes ...
</xsl:template>
这显然是行不通的......但我希望你明白我的意思..
<xsl:value-of select="name()"/>
只是返回属性的名称,但我需要选择无我属性的元素。
谢谢!让我知道是否需要澄清任何事情!