如何在拷贝标签中阻止xmlns =“”命名空间声明?

时间:2014-03-14 11:02:54

标签: xml xslt openxml xslt-2.0

我正在尝试使用XSL创建OOXML文档。因此,我需要在根Tag" Workbook"中使用以下命名空间声明。否则Excel将不接受XML文档作为OOXML。

xmlns:xsl="http://www.w3.org/1999/XSL/Transform"

XSL代码:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet"
    xmlns="urn:schemas-microsoft-com:office:spreadsheet"
    version="2.0">
    <xsl:output indent="yes" method="xml" />

    <xsl:template match="/">
        <xsl:variable name="CONTENT">
            <Worksheet ss:Name="1st Sheet">
                <Row>
                    <Data ss:Type="String">Cell Text 2</Data>
                </Row>
            </Worksheet>
            <Worksheet ss:Name="2st Sheet">
                <Row>
                    <Data ss:Type="String">Cell Text 2</Data>
                </Row>
            </Worksheet>
        </xsl:variable>

        <!-- create output -->
        <Workbook>
            <xsl:copy-of select="$CONTENT" copy-namespaces="no"/>
        </Workbook>
    </xsl:template>

</xsl:stylesheet>

不幸的是输出看起来像这样:

<?xml version="1.0" encoding="UTF-8"?>
<Workbook xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet"
          xmlns="urn:schemas-microsoft-com:office:spreadsheet">
   <Worksheet xmlns="" ss:Name="1st Sheet">
      <Row>
         <Data ss:Type="String">Cell Text 2</Data>
      </Row>
   </Worksheet>
   <Worksheet xmlns="" ss:Name="2st Sheet">
      <Row>
         <Data ss:Type="String">Cell Text 2</Data>
      </Row>
   </Worksheet>
</Workbook>

来自变量 xsl:copy-of 的第一个Tag工作表包含一个空的 xmlns =&#34;&#34; 声明。目前我不知道。我尝试在 xsl:template 中使用 xsl:copy-of ,但结果相同。此外,如果我的声明不在 xsl:stylesheet 元素中,而是在工作簿标记中 - 相同的结果。

也许有人有提议或想法。会很棒。

0 个答案:

没有答案