我有一个由各种标签组成的xml文件。我对名为 tbody 的标签感兴趣,其后是 tr 和 td 。但是我只想解析出现在第3个正文中的数据。我已经编写了这段代码,但是它无法根据position []
对其进行过滤 <xsl:for-each select="//tbody[position()=3]">
<xsl:for-each select="tr">
<xsl:for-each select="td">
<xsl:value-of select="."/>
<xsl:if test="position() != last()">
<xsl:value-of select="$delimiter"/>
</xsl:if>
</xsl:for-each>
<xsl:text>
</xsl:text>
</xsl:for-each>
</xsl:for-each>
有人可以帮助我指导我做错了什么吗?如何在xml文件中位置为3的 body 上执行循环。
xml本身非常庞大,并且是使用查看页面源选项生成的。您可以从下面的链接https://ufile.io/4foqi
下载相同的文件答案 0 :(得分:1)
当您执行//tbody[position()=3]
时,实际上是将所有处于该位置的tbody
元素置于自己的父项下。
如果您希望第三个tbody
元素(无论它在XML中的位置如何),都可以这样做
<xsl:for-each select="(//tbody)[position()=3]">
请注意,您可以将声明缩短到此...
<xsl:for-each select="(//tbody)[3]">