代码之家  ›  专栏  ›  技术社区  ›  John K

从XHTML文档中剥离特定标记(但保留其内容)的机制?

  •  1
  • John K  · 技术社区  · 14 年前

    我想要一个简单的方法从XHTML文档中去掉标记,并且相信在所有选项中必须有足够简练的东西,比如:XSLT、XPath、XQuery、使用.NET XML名称空间的自定义C#编程。我对别人敞开心扉。

    例如 <b> XHTML文档中的标记,但是 保留它们的内部内容和子标签 它的孩子)。

    我需要保持原始文档的结构减去剥离的标签。

    • 我见过 XSLT 的匹配元素以供选择的能力;但是我希望在默认情况下匹配所有内容,但有几个例外,我不确定这是否有助于实现这一点。这就是我现在看到的。

    • 函数 XQuery更新 :简单地看一下这项技术,它在功能上与SQL相当,我看不出它如何维护原始文档的嵌套节点结构—我认为这不是一个竞争者)。

    • 习俗 C#/.NET XML命名空间 这个程序可能是可行的,因为我已经有了一个想法,但我的直接假设是,与创建这些其他XML特定匹配语言的原因相比,它可能更复杂。

    • ... 另一种 我还没有考虑。。。

    1 回复  |  直到 14 年前
        1
  •  3
  •   Dimitre Novatchev    14 年前

    原始文件减去

    你想过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>