可以定位多个名称空间吗?

Possible to target multiple namespaces?

假设我有以下 XML:

<Data xmlns:R="Rows" xmlns:C="Columns" xmlns:V="Values">
    <R:ProductGroup value="Electronics">
        <R:Product value="Computer">
            <C:Year value="2018">
                <V:SumOfRevenue value="104" />
                <V:SumOfUnits value="3" />
            </C:Year>
            <C:Year value="2019">
                <V:SumOfRevenue value="82" />
                <V:SumOfUnits value="9" />
            </C:Year>
            <C:Year value="(all)">
                <V:SumOfRevenue value="186" />
                <V:SumOfUnits value="12" />
            </C:Year>
        </R:Product>
    </R:ProductGroup>
</Data>

数据分为RowsColumns。因此,我可以通过执行类似 //R:Name 的操作和带有 //C:Name 的列来定位行元素。是否可以使用第三个名称空间(或任何名称)来定位 both。例如,像 A:(代表“全部”)这样的东西可以定位到一列或一行?或者,是否有可能 'skip' 命名空间评估(可能类似于 local-name(...))来完成我想要完成的事情?

是的,可以使用 local-name() 函数。这是一个 XPath 表达式的示例,它将 return 值 "9":

//*[local-name()='Product'][@value='Computer']/*[local-name()='Year'][@value='2019']/*[local-name()='SumOfUnits']/@value