如何使用XSLT获取嵌套HTML表的行

如何使用XSLT获取嵌套HTML表的行,第1张

概述我试图使用XPath / XSLT从X HTML获取表行.我的示例xhtml看起来像这样: <body><....> <table> <tbody> <tr> <td/> <td/> <td> <table> <tr> <.... 我试图使用XPath / XSLT从X HTML获取表行.我的示例xhtml看起来像这样:

<body><....>   <table>     <tbody>       <tr>         <td/>         <td/>         <td>            <table>              <tr>                <....>              </tr>            </table>         </td>       </tr>     </tbody>   </table></body>

在上述结构中,< tbody>可能存在也可能不存在.表可以嵌套到任何级别.现在我想获取给定表的所有行.因此,当我处理外部表时,我想只获取外部行(一个包含3个tds)而不是内部tr(在嵌套表中).如何使用XSLT或XPath执行此 *** 作?

编辑:我基本上寻找的是一种获取节点x的所有后代:: y的方法,但y不应该是另一个x的后代.来自x-> y的路径不应包含另一个x.我可能没有任何区别外部x和内部x的东西.

注意:我正在尝试使用许多具有不同结构的HTML来执行此 *** 作,并且我无法更改任何HTML文件的结构 – 它是给我的.唯一的问题是它们都是格式良好的xhtml.

谢谢你的帮助.

解决方法

What I am essentially looking for is a way of getting all
descendant::y for a node x,but y should not be a descendant of
another x.

假设$n是名为x的元素.你要:

$n//y[count(ancestor::x) = count($n/ancestor-or-self::x)]

这将选择所有y为$n的后代,并且具有如此数量的x个祖先,这些祖先恰好比$n的祖先:: x的数量大一个.

因为$n包含一个x元素,这意味着对于所有选定的y,$n中包含的x是它们的第一个祖先:: x.

出于实际目的,您只需要使用精确的XPath表达式替换上面的$n,该表达式选择它包含的x元素.

总结

以上是内存溢出为你收集整理的如何使用XSLT获取嵌套HTML表的行全部内容,希望文章能够帮你解决如何使用XSLT获取嵌套HTML表的行所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1058896.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)

保存