这可能是一个愚蠢的问题,但是可以使用XPath进行查询而不指定元素名称? 通常我会写一些像查询多个元素而不指定元素名称
//ElementName[@id = "some_id"]
但事实是我有一个id
属性多(约40),不同的元素类型,我希望能够回到任何人如果ID相符。但我不想单独为每种类型打电话。无论名称如何,是否可以一次搜索所有这些内容?
我在XQuery脚本中使用它,如果提供任何帮助。
这可能是一个愚蠢的问题,但是可以使用XPath进行查询而不指定元素名称? 通常我会写一些像查询多个元素而不指定元素名称
//ElementName[@id = "some_id"]
但事实是我有一个id
属性多(约40),不同的元素类型,我希望能够回到任何人如果ID相符。但我不想单独为每种类型打电话。无论名称如何,是否可以一次搜索所有这些内容?
我在XQuery脚本中使用它,如果提供任何帮助。
这可能是更有效的直接在@id要素看 - // *将工作,但开始会返回每个节点在文档中,然后过滤!
当然,这在小文档中可能无关紧要。但这里有一个选择:
//@id[.="some_id"]/..
其实它很重要,因为我从一个数据库中查询很多(超过100.000个元素)。 – pajevic 2012-01-05 12:49:02
如果它是一个XML数据库,如MarkLogic或eXist,您可能会发现某些属性(如@id)已编入索引,这也可能有利于此替代方法。 – 2012-01-05 14:13:20
实际上,我使用eXist,并且在eXist邮件列表中询问了哪些最有效。以下是Wolfgang Meier(eXist的原始创建者)回复: _eXist优化// * [@ id =“some_id”]中的通配符步骤, 基本上与'//@id[.="some_id“]相同/ ..'。 eXist将首先评估'@id =“some_id”',然后计算'@ id'的哪些父元素将匹配通配符。但对于一般的XPath查询,我相信您的建议是有效的。 – pajevic 2012-01-05 21:38:09
不是一个愚蠢的问题 – 2012-01-04 18:58:45