Xslt Xpath使用local-name()查找特定元素值的属性值

Xslt Xpath使用local-name()查找特定元素值的属性值,xslt,xpath,wso2ei,Xslt,Xpath,Wso2ei,我有下面提到的有效载荷 <A xmlns:com="http://www.example.com/xml/xmlns/example"> <B> <X appCode="001">xxx</X> <Y appId="0002">yyy</Y> </B> <C> <D

我有下面提到的有效载荷

<A xmlns:com="http://www.example.com/xml/xmlns/example">
    <B>
        <X appCode="001">xxx</X>
        <Y appId="0002">yyy</Y>
    </B>
    <C>
        <D>
            <E>
                <F id="1" code="001">test-1</F>
                <F id="3" code="002">test-2</F>
                <F id="4" code="003">test-3</F>
                <F id="5" code="004">test-4</F>
            </E>
        </D>
    </C>
</A>

xxx
yyy
测试-1
测试-2
测试-3
测试-4
我需要获取A/C/D/E/F['test-2']的id值。此外,我还必须使用local-name()来避免使用名称空间。 尝试以下操作并获得以下结果

//*[local-name()='C']/*[local-name()='D']/*[local-name()= 'E']/*[local-name()='F']

test-1
测试-2
测试-3
测试-4
如何找到'test-2'的id值,即3? (注意:我在wso2 EI属性中介中使用此选项)


提前谢谢你

好吧,举个例子,表达式:

//*[local-name() = 'F'][. = 'test-2']/@id
将返回
3

但是,需要指出的是名称空间是要使用的,而不是要避免的。在样式表中声明名称空间,为其指定前缀,并使用前缀对元素进行寻址

还要注意,在给定的示例中,名称空间声明是完全冗余的。您可以简单地使用:

"//F[. = 'test-2']/@id"
或者更有效一点:

"/A/C/D/E/F[. = 'test-2']/@id"

好吧,举个例子,表达式:

//*[local-name() = 'F'][. = 'test-2']/@id
将返回
3

但是,需要指出的是名称空间是要使用的,而不是要避免的。在样式表中声明名称空间,为其指定前缀,并使用前缀对元素进行寻址

还要注意,在给定的示例中,名称空间声明是完全冗余的。您可以简单地使用:

"//F[. = 'test-2']/@id"
或者更有效一点:

"/A/C/D/E/F[. = 'test-2']/@id"

这正是我需要的。关于名称空间,它的负载可能会有所不同,因此我需要忽略它。非常感谢您的支持!!这正是我需要的。关于名称空间,它的负载可能会有所不同,因此我需要忽略它。非常感谢您的支持!!这回答了你的问题吗?我以前看过这篇文章。这不是我要找的。我需要获取给定元素值的属性值。这是否回答了您的问题?我以前看过这篇文章。这不是我要找的。我需要获取给定元素值的属性值。