Xpath过滤列表并获取类型的最后一个元素

时间:2015-07-06 17:25:00

标签: list xslt xpath

我收到一个文件,其中包含我要提取的不同电影的视频链接。 视频链接位于 @ CAPTURE-0 元素中。 有时我在同一部电影的文件中有2个不同的链接。

所以我想要的是每部不同的电影,提取相关的最后一个链接。

我有一个表项,在这个表中我在STEP上应用了一些过滤器,并通过包含电影名称的@ACTION属性进行分组。

我的表格看起来像这样:

宿醉 (包含在@ACTION中)| 链接 (此电影的最后@ CAPTURE-0的值)

星球大战 (包含在@ACTION中)| 链接 (此电影的最后@ CAPTURE-0的值)

该文件如下:

...
<GENERIC_S 
     CAPTURE-0="VALUE1" >
        <STEP NUM="0" ID="3" ACTION="MOVIE1" RETURN=0/>
 </GENERIC_S>
 <GENERIC_S 
     CAPTURE-0="VALUE2">
        <STEP NUM="0" ID= "3" ACTION="MOVIE1" RETURN=0/>
 </GENERIC_S>
 <GENERIC_S 
     CAPTURE-0="VALUE3">
        <STEP NUM="0" ID= "3" ACTION="MOVIE2" RETURN=0/>
 </GENERIC_S>
 <GENERIC_S 
     CAPTURE-0="VALUE4">
        <STEP NUM="0" ID= "3" ACTION="MOVIE3" RETURN=0/>
 </GENERIC_S>
 <GENERIC_S 
     CAPTURE-0="VALUE5">
        <STEP NUM="0" ID= "4" ACTION="MOVIE3" RETURN=0/>
 </GENERIC_S>
...

所以在这里我想只提取每个不同的@ACTION元素的ID = 3 last @ CAPTURE-0元素:

MOVIE1的VALUE2

MOVIE2的VALUE3

MOVIE3的VALUE4

所以我申请的内容如下:

<item ......../>  <!-- this is the tab declaration -->
<rows path="*/STEP[@RETURN = 0]" group-by="@ACTION" title="@ACTION" >
<!-- filter that I want to apply to all my table, return must be 0 and group by action to group by movie name -->

<linkParam name="Movielink" path="//GENERIC_S[STEP/@ID=3][last()]/@CAPTURE-0"/>
<!-- here is where I want to return last @CAPTURE-0 element for each video which have a STEP  ID =3-->

在MovieLink中应用此功能时://GENERIC_S[STEP/@ID=3][last()]/@CAPTURE-0 我能够获得列表的最后一个元素,但它没有考虑过滤器<rows path="*/STEP[@RETURN = 0]" group-by="@ACTION" title="@ACTION" >它为所有电影返回相同的视频链接。

我希望这清楚我想要做什么, 如果需要,我可以提供更多细节,

谢谢

0 个答案:

没有答案