我有类似以下的区间中的XML文档:用于根据当前节点的内容选择父节点的XPath?
<release_list>
<release>
<id>100</id>
<file_list>
<file>
<id>20</id>
</file>
<file>
<id>21</id>
</file>
</file_list>
</release>
<release>
<id>101</id>
<file_list>
<file>
<id>22</id>
</file>
<file>
<id>21</id>
</file>
</file_list>
</release>
<release>
<id>102</id>
<file_list>
<file>
<id>22</id>
</file>
<file>
<id>23</id>
</file>
</file_list>
</release>
</release_list>
在某些时候,我有XSL的for-each语句通过每个版本循环,进而通过文件的每个列表。当我遍历每个文件时,我想获得有关哪些其他版本不包含相同文件ID的信息。 (所以,例如,当我在版本100中迭代文件20时,我想获得指向版本101和102的指针,但是当我在同一个包中遍历文件21时,我只需要一个指向版本102的指针)
有没有办法用XPath做到这一点?我想出了最接近的事是:
../../../release[ not(file_list/file/id = ./id) ]
...当然这失败,因为在方括号内的“./”是指释放支架的前面,而不是文件的XPath语句正在从中调用。
我在这里失踪的任何东西?
由于某种原因,我的印象是XSLT中的变量只写一次,因此它们的功用有限 - 但事实并非如此。非常感谢! – Chris 2009-11-05 19:00:47
虽然只写是真的。 ;-) – Tomalak 2009-11-05 19:01:20