我有一个包含多个节点slide
的大型xml文件,下面是我的大型xml的一部分。
<slide add_info="e" name="slide31.xml" nav_lvl_1="Contact" nav_lvl_2="Company" >
--------something----------
</slide>
<slide add_info="a" name="slide32.xml" nav_lvl_1="References" nav_lvl_2="Company">
-----something----
</slide>
<slide add_info="b" name="slide33.xml" nav_lvl_1="References" nav_lvl_2="Company" >
------something--------
</slide>
<slide add_info="c" name="slide34.xml" nav_lvl_1="References" nav_lvl_2="Company" >
--------something----------
</slide>
<slide add_info="d" name="slide34.xml" nav_lvl_1="Contact" nav_lvl_2="Company" >
--------something----------
</slide>
在这里,我只需要对属性为slide
和References
的{{1}}节点进行分组,并获取这些节点的所有Company
属性add_info
。例如
预期产出:
values
目前我在做:
a b c
但是这给了我<xsl:choose>
<xsl:when test="@nav_lvl_1='References'">
<xsl:if test="@nav_lvl_2='Company'">
<xsl:for-each select="//@add_info">
<xsl:value-of select="."/>
</xsl:for-each>
</xsl:if>
</xsl:when>
</xsl:choose>
整个文档中all
属性的文本值。例如:
它给了我:
add_info
但我只需将输出作为e a b c d
我怎么能改变上面的a b c
代码来达到这个目的..任何建议......我被困在这里:(
答案 0 :(得分:1)
您说“分组”,但分组特别想要创建具有相同属性的多个组。
要仅选择一组具有特定属性的构造,只需在单个XPath地址中解决它们:
<xsl:for-each select="//slide[@nav_lvl_1='References' and @nav_lvl_2='Company'">
<xsl:value-of select="@add_info"/>
</xsl:for-each>
...虽然我会放弃//slide
并使用不带//
的地址来获取所有幻灯片的父级,然后将这些幻灯片作为子项进行处理。