【发布时间】:2014-11-11 12:24:07
【问题描述】:
假设我有以下 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 的节点(例如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 和$root-element 之间的所有节点。
我有一个递归调用的template,它带有两个参数(可以附加,但为了清楚起见将其放在一边)输出所有节点。
是否可以使用一个 xpath 进行查询?
问候
【问题讨论】: