230

这个错误,

不允许匹配“[xX][mM][lL]”的处理指令目标

每当我运行如下开头的 XSLT 页面时都会发生:

<?xml version="1.0" encoding="windows-1256"?> 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:include href="../header.xsl"/>
  <xsl:template match="/">
    <xsl:call-template name="pstyle"/>
    <xsl:call-template name="Validation"/>
    <xsl:variable name="strLang">
      <xsl:value-of select="//lang"/>
    </xsl:variable>
    <!-- ////////////// Page Title ///////////// -->
    <title>
        <xsl:value-of select="//ListStudentFinishedExam.Title"/>
    </title>

注意:我删除了第一行之前的所有前导空格,但错误仍然存​​在!

4

15 回答 15

462

基于 Xerces 的工具将发出以下错误

The processing instruction target matching "[xX][mM][lL]" is not allowed.

当在XML 文件顶部以外的任何地方遇到XML 声明时。

这是一条有效的诊断信息;在这种情况下,其他 XML 解析器应该发出类似的错误消息。

要更正此问题,请检查以下可能性:

  1. 声明前存在一些空格或其他可见内容<?xml ?>

    解决方法:删除 XML 声明前的空格或任何其他可见内容。

  2. 在声明之前存在一些不可见的内容。<?xml ?> 最常见的是字节顺序标记 (BOM)

    解决方法:使用W3C 页面在 HTML 中的 BOM 上建议的技术删除 BOM 。

  3. XML 内容中存在杂散声明。<?xml ?> 当 XML 文件以编程方式或通过剪切和粘贴方式组合时,就会发生这种情况。XML 文件中只能有一个<?xml ?>声明,并且只能在顶部。

    解决方法:以 <?xml不区分大小写的方式搜索,并从文件中删除除顶部 XML 声明之外的所有声明。

于 2013-11-11T04:40:04.250 回答
50

我的原因是一个 xml 中有 2 个以下代码

<?xml version="1.0" encoding="utf-8"?>
于 2018-06-03T10:40:14.387 回答
15

检查您的 XML 文件中是否重复此行

<?xml version="1.0" encoding="utf-8"?>
于 2021-08-23T08:02:55.060 回答
9

如果您的 xml 包含以下行,请检查您的 xml 双删除一行(重复行)

<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>

删除一个重复的行

<?xml version="1.0" encoding="utf-8"?>
于 2021-11-15T09:48:39.663 回答
7

Debug your XML file. Either there is space or added extra or fewer tags.

For better understanding build the project through the command line. Windows: gradlew build

In my case, AndroidManifest.xml has a blank space at the very first line

<Empty Row> // This Creates the issue 
<?xml version="1.0" encoding="utf-8"?>
于 2021-03-09T10:28:09.663 回答
6

有自动生成的版权消息,标签XML前有一个空行<resources>,一旦我删除它,我的构建就成功了。

在此处输入图像描述

于 2018-05-20T03:39:49.360 回答
2

上述错误的另一个原因是损坏的 jar 文件。我在运行单元测试时遇到了同样的错误,但对于 Junit。删除 jar 并再次下载它解决了这个问题。

于 2017-02-16T13:24:30.290 回答
1

in my case was a wrong path in a config file: file was not found (path was wrong) and it came out with this exception:

Error configuring from input stream. Initial cause was The processing instruction target matching "[xX][mM][lL]" is not allowed.

于 2018-05-22T15:18:34.837 回答
1

就我而言,标签是麻烦制造者。用空白替换选项卡应该可以解决问题

于 2021-10-27T14:37:40.440 回答
1

对于 PHP,在开始打印 XML 之前放置这行代码:

while(ob_get_level()) ob_end_clean();
于 2019-06-13T16:55:54.860 回答
1

In my case, I removed all blank space without needed code. And it worked

于 2021-06-12T10:27:16.120 回答
1

我在 5,000 个目录(Project Gutenberg 目录文件)中有 50,000 个 rdf/xml 文件也有类似的问题。我用 riot 解决了它(在 jena 发行版中)

目录是 cache/epub/NN/nn.rdf (其中 NN 是一个数字)

在所有文件所在目录之上的目录中,即在缓存中

riot epub/*/*.rdf --output=turtle > allTurtle.ttl

这可能会产生许多警告,但结果是可以加载到 jena 的格式(使用 fuseki Web 界面)。

出奇的简单(至少在这种情况下)。

于 2018-09-04T11:40:32.123 回答
0

这个错误确实破坏了的内存效率,XMLEventReader因为当输入的初学者有空格时会失败。

无论如何,因为已经编码使用它,我必须转换InputStreamorReader源,String然后调用trim()以创建另一个阅读器,String以创建 XML 事件阅读器。

伪代码:

Reader reader = new StringReader(
        inputStreamToStringBuilder( getInputStream(), getContentCharset() )
                .toString().trim()
);
XMLEventReader eventReader = inputFactory.createXMLEventReader(reader);
于 2021-03-18T01:18:58.343 回答
0

值得检查您的服务器的文件夹,看看是否有一个流浪的 pom.xml 徘徊。

我发现我遇到了其他人用格式错误的 pom.xml 描述的问题,但是在我没想到会在服务器上的文件夹中。一个旧版本围绕着不受欢迎的 D:

于 2021-07-22T16:38:28.923 回答
-1

只需删除这一行:<?xml version="1.0" encoding="utf-8"?>因为这种错误只是因为这一行而出现,或者您也可以根据此答案中提到的行检查行的格式。

于 2022-02-24T08:24:41.757 回答