Xslt XSL&;XPath-选择属性的元素名称
我可能有一个相当具体的问题 我有一个用户将在表单上输入一些条件,然后它根据他们的输入构建一个XPath。假设他们的输入创建了以下内容:Xslt XSL&;XPath-选择属性的元素名称,xslt,xpath,Xslt,Xpath,我可能有一个相当具体的问题 我有一个用户将在表单上输入一些条件,然后它根据他们的输入构建一个XPath。假设他们的输入创建了以下内容: //*[@color='red']/@* 这本质上意味着他们希望看到@color=red的任何元素的所有属性 我可以精确地显示表达式要求的内容(所有属性),但我希望添加有用的信息,例如属性所属的元素名称 一个选项是向XPath中添加元素名称:(不使用|创建此表达式的较短方法很高兴知道..如果您有建议,那就太棒了!) 另一个选项(我希望是可能的)是从模板中选择属
//*[@color='red']/@*
这本质上意味着他们希望看到@color=red的任何元素的所有属性
我可以精确地显示表达式要求的内容(所有属性),但我希望添加有用的信息,例如属性所属的元素名称
一个选项是向XPath中添加元素名称:(不使用|创建此表达式的较短方法很高兴知道..如果您有建议,那就太棒了!)
另一个选项(我希望是可能的)是从模板中选择属性所属的元素名,而不更改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>
您只需要以下XPath:
name(..)
如果上下文节点是您所选的属性节点,则此操作有效。您只需要以下XPath:
name(..)
如果上下文节点是选定的属性节点,则此操作有效
只返回
属性,但我需要选择
属性元素的名称
属性所属的元素被视为其父元素,因此:
。
当上下文节点作为属性发出时,选择该属性所属的元素
要查找此元素的名称,只需使用XPathname()
函数:
name(..)
当上下文节点作为属性发出时,计算结果为字符串,该字符串是保存该属性的元素的名称
只返回
属性,但我需要选择
属性元素的名称
属性所属的元素被视为其父元素,因此:
。
当上下文节点作为属性发出时,选择该属性所属的元素
要查找此元素的名称,只需使用XPathname()
函数:
name(..)
当上下文节点作为属性发出时,计算结果为字符串,该字符串是保存该属性的元素的名称
name(..)
<xsl:value-of select="name()"/>