转换后缺少<! - ?xml version =“1.0”encoding =“XXXXX”? - >

时间:2009-10-19 12:22:10

标签: xml xslt

我在转换XML文件并保存后遇到问题,即我没有收到XML文件的顶部标记<?xml version="1.0" encoding="utf-8"?>

以下是我的XSLT文件:

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
  <xsl:output method="xml" indent="yes" encoding="utf-8"
  omit-xml-declaration="no" />

  <xsl:template match="*">
    <xsl:copy>
      <xsl:copy-of select="@*"/>
      <xsl:apply-templates/>
    </xsl:copy>
  </xsl:template>

  <!-- ... -->
</xsl:stylesheet >

我认为没有此标记会导致错误,例如“在文字内容中找到无效字符。”

任何人都可以帮助我找到解决方案。提前谢谢。

3 个答案:

答案 0 :(得分:1)

最有可能的是,产生转换的代码是您需要查看的地方。大多数XSLT库都有一个开关,告诉它是否输出xml声明,因为XSLT可用于输出任何内容。

无效的字符错误很可能与它听起来完全一样。在文本内容中找到了对UTF8无效的字符。

答案 1 :(得分:0)

我今天早上才遇到错误“在文字内容中发现无效字符”。在这种情况下,将XML作为参数传递给SQL存储过程时会发生这种情况。如果您使用的是SQL Server 2000(我是),您需要确保使用NTEXT类型而不是TEXT类型定义存储过程中的参数。

CREATE PROCEDURE Xml_Test
   @MyXML NTEXT
AS
   ....

答案 2 :(得分:-1)

在主元素下有一个嵌套元素(如果没有,则添加)。

确保将omit-xml-declaration属性设置为“ no”。