我正在尝试使用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 元素中,而是在工作簿标记中 - 相同的结果。
也许有人有提议或想法。会很棒。