gpt4 book ai didi

xslt - 使用 XSLT 将 XHTML 文件递归合并为一个 XHTML 文件

转载 作者:行者123 更新时间:2023-12-03 01:07:40 24 4
gpt4 key购买 nike

我正在尝试创建一个 XSL 样式表,它允许合并从另一个 XHTML 文件引用的 XHTML 文件。反过来,从引用文件引用的任何 XHTML 文件也应该合并,依此类推。因此,应该可以将起始 XHTML 文件直接或间接引用的所有 XHTML 递归地合并到一个 XHTML 文件中。引用文献是严格分层的。

示例:

文件a.html:

<html>
<body>Text1<br/><a href="b.html">Link</a></body>
</html>

文件b.html:

<html>
<body>Text2<br/><a href="c.html">Link</a></body>
</html>

文件c.html:

<html>
<body>Text3<br/></body>
</html>

以 a.html 开头时生成的合并文件:

<html>
<body>Text1<br/>Text2<br/>Text3<br/></body>
</html>

我不知道如何使用 XSLT 解决该问题。如有任何帮助,我们将不胜感激。

最佳答案

使用 document() 函数,如本样式表所示:

<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes"/>
<xsl:strip-space elements="*"/>

<!--IDENTITY TRANSFORM-->
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>

<xsl:template match="a">
<xsl:apply-templates select="document(@href)/html/body/node()"/>
</xsl:template>

</xsl:stylesheet>

使用 3 个 html 文件,并使用 a.html 作为输入,会产生以下输出:

<html>
<body>Text1<br/>Text2<br/>Text3<br/>
</body>
</html>

此外,真正使这成为可能的是身份转换。它会传递任何与另一个模板不匹配的内容不变。

关于xslt - 使用 XSLT 将 XHTML 文件递归合并为一个 XHTML 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6480384/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com