我想要一种简单易用的方法从XHTML文档中删除标签,并且相信在所有选项中都必须有足够的东西,例如:XSLT,XPath,XQuery,使用.NET XML命名空间的自定义C#编程。我向其他人开放。
例如,我想从XHTML文档中删除所有
<b>
标记,但 保留其内在内容和子标签 (即不要简单地跳过粗体标签和 它的孩子们。)
我需要保持原始文档的结构减去剥离的标签。
思想:
我见过 XSLT 匹配元素以供选择的能力;但是我希望在默认情况下匹配所有内容,但有一些例外,我不确定它是否有利于此。这就是我现在正在看的。
XQuery 我还没有开始研究。 ( XQuery更新:简要介绍一下这项技术,它在功能上与SQL相当,我没能看到它如何维护原始文档的嵌套节点结构 - 我认为这不是竞争者。)
自定义 C#/。NET XML命名空间程序可能是可行的,因为我已经有了它的想法,但我的直接假设是它可能更多涉及这些原因创建了其他特定于XML的匹配语言。
......另一种启用技术我还没有考虑过......
答案 0 :(得分:3)
我需要保持结构 原始文件减去 剥离标签
你有没有想过XSLT?这是专为转换XML和一般树结构而设计的语言。
此转化:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" omit-xml-declaration="yes" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="b">
<xsl:apply-templates/>
</xsl:template>
</xsl:stylesheet>
应用于任何XHTML文档时,如下所示:
<html>
<head/>
<body>
<p> Hello, <b>World</b>!</p>
</body>
</html>
生成想要的正确结果,在这种情况下:
<html>
<head/>
<body>
<p> Hello, World!</p>
</body>
</html>