在 XSL 中提取连续兄弟姐妹
我有一个像这样的 HTML 文件:
<root>
<br>
<h3>The first H3 text</h3><br>
<p>para1 content in first H3</p><br>
<p>para2 content in first H3</p><br>
<h3>The second H3 text</h3><br>
<p>para1 content in second H3</p><br>
<p>para2 content in second H3</p><br>
<p>para3 content in second H3</p><br>
<p>para4 content in second H3</p><br>
</root>
我想编写一个 XSL,它提供如下所示的输出:
<sec>
<br />
<secHead>The first H3 text</secHead><br />
<para>para1 content in first H3</para><br />
<para>para2 content in first H3</para><br />
</sec>
<br />
<sec>
<br/>
<secHead>The second H3 text</secHead><br/>
<para>para1 content in second H3</para><br/>
<para>para2 content in second H3</para><br/>
<para>para3 content in second H3</para><br/>
<para>para4 content in second H3</para><br/>
</sec>
我们如何才能通过编写 XSL 获得此输出?
I have an HTML file like this:
<root>
<br>
<h3>The first H3 text</h3><br>
<p>para1 content in first H3</p><br>
<p>para2 content in first H3</p><br>
<h3>The second H3 text</h3><br>
<p>para1 content in second H3</p><br>
<p>para2 content in second H3</p><br>
<p>para3 content in second H3</p><br>
<p>para4 content in second H3</p><br>
</root>
I want to write an XSL which gives output like this one:
<sec>
<br />
<secHead>The first H3 text</secHead><br />
<para>para1 content in first H3</para><br />
<para>para2 content in first H3</para><br />
</sec>
<br />
<sec>
<br/>
<secHead>The second H3 text</secHead><br/>
<para>para1 content in second H3</para><br/>
<para>para2 content in second H3</para><br/>
<para>para3 content in second H3</para><br/>
<para>para4 content in second H3</para><br/>
</sec>
How can we get this output writing XSL?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
好问题,+1。
此转换:
当应用于提供的源时(html 必须转换为格式良好的 XML!!!):
产生所需的正确结果 :
说明:
此解决方案的关键点是我们定义一个
xsl:key
来捕获h3
元素与其所有直接元素之间的关系跟随兄弟元素(这样它们就不会h3
本身,并且这个h3
是它们的第一个h3
前面的兄弟)。Good question, +1.
This transformation:
when applied on the provided source (the html must be converted to wellformed XML!!!):
produces the wanted, correct result:
Explanation:
The key point in this solution is that we define an
xsl:key
that captures the relation between anh3
element and all its immediate following siblings elements (such that they aren'th3
themselves and thish3
is their firsth3
preceding sibling).