我正在尝试创建一个 XSL 样式表,它允许合并从另一个 XHTML 文件引用的 XHTML 文件。反过来,从被引用文件引用的任何 XHTML 文件也应该被合并,依此类推。因此,应该可以递归地将起始 XHTML 文件直接或间接引用的所有 XHTML 合并为一个 XHTML 文件。参考文献是严格分层的。
例子:
文件a.html:
<html>
<body>Text1<br/><a href="b.html">Link</a></body>
</html>
Run Code Online (Sandbox Code Playgroud)
文件 b.html:
<html>
<body>Text2<br/><a href="c.html">Link</a></body>
</html>
Run Code Online (Sandbox Code Playgroud)
文件 c.html:
<html>
<body>Text3<br/></body>
</html>
Run Code Online (Sandbox Code Playgroud)
以 a.html 开头时产生的合并文件:
<html>
<body>Text1<br/>Text2<br/>Text3<br/></body>
</html>
Run Code Online (Sandbox Code Playgroud)
我不知道如何用 XSLT 解决这个问题。任何帮助表示赞赏。
这可能有点棘手,但请检查一下该document()
功能。
我看到的示例展示了如何在输出中包含另一个文档,但我没有看到任何可以让您在同一调用期间开始转换该文档的示例。但我自己也没有尝试过。
如果它不能document()
让您将转换递归到其他文档中,您可以在循环中调用您的转换,并编写要重复调用的转换。然后你需要某种方法来检查何时可以停止转变。
知道何时应该停止的一种方法是在源文档和目标文档之间进行比较。
另一种方法是,如果找到任何子文档,则在文档顶部放置一个元素,如果没有找到子文档,则将其删除。然后只需检查该元素是否存在。
但也许有一种方法可以通过包含的子文档继续转换。