如何在xslt中删除命名空间

时间:2009-10-20 12:38:14

标签: xslt xhtml

使用xslt我试图获取xhtml o / p。我在

中使用了xmlns =“http://www.w3.org/1999/xhtml”
<xsl:stylesheet> 

获取xhtml o / p。每件事情都很好但是在第一个div中我获得了相同的命名空间。即

 <div  xmlns="http://www.w3.org/1999/xhtml">

现在如何删除xmlns =“http://www.w3.org/1999/xhtml”

2 个答案:

答案 0 :(得分:4)

正如其他人所指出的,你可能不想这样做。如果您希望输出为XHTML,则需要保留XHTML名称空间声明。

话虽如此,如果你真的想这样做:

<xsl:stylesheet version="1.0"
                xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

  <!-- attributes, commments, processing instructions, text: copy as is -->
  <xsl:template match="@*|comment()|processing-instruction()|text()">
    <xsl:copy-of select="."/>
  </xsl:template>

  <!-- elements: create a new element with the same name, but no namespace -->
  <xsl:template match="*">
    <xsl:element name="{local-name()}">
      <xsl:apply-templates select="@*|node()"/>
    </xsl:element>
  </xsl:template>

</xsl:stylesheet>

答案 1 :(得分:1)

为什么要删除命名空间?它是XHTML规范的一部分,你说你想要XHTML输出。那么 - 问题出在哪里?

显然您使用<div>开始输出,否则您将在<html>元素上使用命名空间声明。