获取下一个根节点的名称及其路径的串联
Getting name of the next-to root node and the concatenation of path to it
我正在解析 ElasticSearch 元数据并尝试访问两个值。
鉴于此 XML:
<root>
<index1>
<mappings>
<users>
<properties>
<birthDate>
<type>date</type>
</birthDate>
<born>
<properties>
<city>
<type>text</type>
</city>
</properties>
</born>
</properties>
</users>
</mappings>
</index1>
</root>
列出作为基本对象的属性的所有子项名称(没有名称 "properties" 的子项)很简单:
//properties/*[not(properties)]/name()
这个returns"birthDate","city"
我尝试从上面第 1 节的锚节点获取根之前的顶部节点,在这种情况下,crom "birthplace" 和 "city" 我尝试到达 "index1"。我达到的是
ancestor::*[ancestor::root]/name()
仍然不正确
- 我需要连接从锚节点到索引节点的路径,用下划线分隔。所以,这很可能是具有特定条件的
//ancestor
的 string-join
。
您能否就 2) 和 3) 提出建议
Select倒数第二个祖先节点:$anchor//ancestor::*[last() - 1]
Select 所有祖先直到倒数第二个,倒数,字符串连接他们的名字:string-join(reverse($anchor//ancestor::*[position() le last() - 1]/name()), '_')
我正在解析 ElasticSearch 元数据并尝试访问两个值。
鉴于此 XML:
<root>
<index1>
<mappings>
<users>
<properties>
<birthDate>
<type>date</type>
</birthDate>
<born>
<properties>
<city>
<type>text</type>
</city>
</properties>
</born>
</properties>
</users>
</mappings>
</index1>
</root>
列出作为基本对象的属性的所有子项名称(没有名称 "properties" 的子项)很简单:
//properties/*[not(properties)]/name()
这个returns"birthDate","city"
我尝试从上面第 1 节的锚节点获取根之前的顶部节点,在这种情况下,crom "birthplace" 和 "city" 我尝试到达 "index1"。我达到的是
ancestor::*[ancestor::root]/name()
仍然不正确
- 我需要连接从锚节点到索引节点的路径,用下划线分隔。所以,这很可能是具有特定条件的
//ancestor
的string-join
。
您能否就 2) 和 3) 提出建议
Select倒数第二个祖先节点:
$anchor//ancestor::*[last() - 1]
Select 所有祖先直到倒数第二个,倒数,字符串连接他们的名字:
string-join(reverse($anchor//ancestor::*[position() le last() - 1]/name()), '_')