假设我有以下 xml 文档:
<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="FirstLevel">
<xs:unique name="uniqueL2inL1">
<xs:selector xpath="SecondLevel" />
<xs:field xpath="@Name" />
</xs:unique>
</xs:element>
<xs:element name="SecondLevel">
<xs:unique name="uniqueL3inL2">
<xs:selector xpath="ThirdLevel" />
<xs:field xpath="@Name" />
</xs:unique>
</xs:element>
<xs:element name="ThirdLevel">
<xs:unique name="uniqueL4inL3">
<xs:selector xpath="FourthLevel" />
<xs:field xpath="@Name" />
</xs:unique>
</xs:element>
<xs:element name="FourthLevel"/>
</xs:schema>
有什么可能以正确的顺序获得从ThirdLevel
元素到文档根的唯一定义“链”?
例如,我想要的结果输出ThirdLevel
:
FirstLevel
SecondLevel
要获取FirstLevel
(eg root-element
) 的节点,我需要查询一个xs:element
具有的节点xs:unique
,但其名称本身在xs:unique/xs:selector/@xpath
. 这个特定的查询是:
<xsl:variable name="root-element" select="//xs:element[xs:unique and not(//xs:element/xs:unique/xs:selector/@xpath = @name)]/@name"/>
现在我需要获取ThirdLevel
和 this之间的所有节点$root-element
。
我有一个template
带有两个参数的递归调用(可以附加,但为了清楚起见将其放在一边),它输出所有节点。
是否可以使用一个 xpath 进行查询?
问候