Xml Xpath属性

Xml Xpath属性,xml,xslt,xpath,Xml,Xslt,Xpath,您好,我有以下XML示例 <?xml version="1.0" encoding="UTF-8"?> <Data> <x>3</x> <Document1 id="123" filename="/test/dev/fileA.txt"/> <Document2 id="123" filename="/test/dev/fileB.txt"/> <Document3 id="123" filename=

您好,我有以下XML示例

<?xml version="1.0" encoding="UTF-8"?>

<Data> 
<x>3</x>  
<Document1 id="123" filename="/test/dev/fileA.txt"/>  
<Document2 id="123" filename="/test/dev/fileB.txt"/>  
<Document3 id="123" filename="/test/dev/fileC.txt"/>  
<Document4 id="123" filename="/test/dev/fileD.txt"/> 
</Data>
我需要能够根据x的值检索特定的文件名。可能吗?如果你需要更多的信息,请告诉我


提前谢谢

是的,这是可能的。但是为什么要这样设计输入xml格式呢?出于许多原因,最好使用id属性来选择正确的文档,而不是元素名

原因包括:

  • xpath表达式计算速度更快(
    /Data/Document[@id=/Data/x]/@filename
  • 您可以为它创建一个XSD模式
我还质疑,为什么要将变量
与其他数据放在同一文档中?如果您已经知道输入文档中需要哪个“文档”元素,为什么不删除其他元素

话虽如此,满足您要求的xpath表达式是:

/Data/*[local-name() = concat('Document', /Data/x)]/@filename

谢谢,效果很好。奇怪模式的原因是XML来自另一个源。x变量只是另一个源的示例,我必须标识文档的编号。
/Data/*[local-name() = concat('Document', /Data/x)]/@filename