Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xslt XSL&;XPath-选择属性的元素名称_Xslt_Xpath - Fatal编程技术网

Xslt XSL&;XPath-选择属性的元素名称

Xslt XSL&;XPath-选择属性的元素名称,xslt,xpath,Xslt,Xpath,我可能有一个相当具体的问题 我有一个用户将在表单上输入一些条件,然后它根据他们的输入构建一个XPath。假设他们的输入创建了以下内容: //*[@color='red']/@* 这本质上意味着他们希望看到@color=red的任何元素的所有属性 我可以精确地显示表达式要求的内容(所有属性),但我希望添加有用的信息,例如属性所属的元素名称 一个选项是向XPath中添加元素名称:(不使用|创建此表达式的较短方法很高兴知道..如果您有建议,那就太棒了!) 另一个选项(我希望是可能的)是从模板中选择属

我可能有一个相当具体的问题

我有一个用户将在表单上输入一些条件,然后它根据他们的输入构建一个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(..)
如果上下文节点是选定的属性节点,则此操作有效


只返回 属性,但我需要选择 属性元素的名称

属性所属的元素被视为其父元素,因此:

当上下文节点作为属性发出时,选择该属性所属的元素

要查找此元素的名称,只需使用XPath
name()
函数:

name(..)

当上下文节点作为属性发出时,计算结果为字符串,该字符串是保存该属性的元素的名称


只返回 属性,但我需要选择 属性元素的名称

属性所属的元素被视为其父元素,因此:

当上下文节点作为属性发出时,选择该属性所属的元素

要查找此元素的名称,只需使用XPath
name()
函数:

name(..)

当上下文节点作为属性发出时,计算结果为字符串,该字符串是保存该属性的元素的名称

name(..)
<xsl:value-of select="name()"/>