Ошибка: недопустимое совпадение с целевым значением инструкции обработки "[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>
Примечание: я удалил все пробелы перед первой строкой, но ошибка все еще происходит!
16 ответов
Инструменты на основе Xerces выдадут следующую ошибку
The processing instruction target matching "[xX][mM][lL]" is not allowed.
когда декларация XML встречается где-либо, кроме как в верхней части файла XML.
Это действительное диагностическое сообщение; другие парсеры XML должны выдавать подобное сообщение об ошибке в этой ситуации.
Чтобы исправить проблему, проверьте следующие возможности:
Некоторое пустое пространство или другое видимое содержимое существует до
<?xml ?>
декларация.Решение: удалите пробел или любой другой видимый контент до объявления XML.
Некоторое невидимое содержание существует до
<?xml ?>
декларация. Чаще всего это знак порядка байтов (BOM).Решение. Удалите спецификацию, используя методы, предложенные на странице W3C в спецификации в HTML.
Бродячий
<?xml ?>
декларация существует в содержимом XML. Это может произойти, когда файлы XML объединяются программно или посредством вырезания и вставки. Может быть только один<?xml ?>
объявление в XML-файле, и оно может быть только вверху.Разрешение: поиск
<?xml
без учета регистра и удалите из файла все, кроме верхнего XML-объявления.
Причина для меня 2 следующих кода в одном XML
<?xml version="1.0" encoding="utf-8"?>
Отладьте свой XML-файл. Либо есть место, либо добавлены лишние или меньшие теги.
Для лучшего понимания соберите проект через командную строку. Окна:
gradlew build
В моем случае AndroidManifest.xml имеет пустое место в самой первой строке
<Empty Row> // This Creates the issue
<?xml version="1.0" encoding="utf-8"?>
Проверьте, повторяется ли эта строка в вашем XML-файле
<?xml version="1.0" encoding="utf-8"?>
проверьте свой xml, если ваш xml содержит следующую строку, дважды удалите одну строку (повторяющуюся строку)
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
Удалить одну повторяющуюся строку
<?xml version="1.0" encoding="utf-8"?>
Было автоматически сгенерировано сообщение об авторском праве в XML
и пустая строка перед <resources>
тег, как только я удалил его, моя сборка прошла успешно.
просто удалите эту строку:
<?xml version="1.0" encoding="utf-8"?>
потому что такая ошибка возникает только из-за этой строки, или вы также можете проверить формат своей строки в соответствии с упомянутой строкой в этом ответе.
Другая причина вышеуказанной ошибки - поврежденный файл jar. Я получил ту же ошибку, но для Junit при запуске модульных тестов. Извлеките банку и загрузите ее снова, чтобы решить проблему.
В моем случае вкладка является источником проблем. Замените вкладку пустой, чтобы решить проблему.
В моем случае я удалил все пустые места без необходимого кода. И это сработало
Для PHP поместите эту строку кода перед тем, как начать печатать свой XML:
while(ob_get_level()) ob_end_clean();
У меня была похожая проблема с 50 000 файлов rdf/xml в 5 000 каталогов (файл каталога Project Gutenberg). Я решил это с бунтом (в распределении jena)
каталог является cache/epub/NN/nn.rdf (где NN - число)
в каталоге над каталогом, где находятся все файлы, т.е. в кеше
riot epub/*/*.rdf --output=turtle > allTurtle.ttl
Это может привести к большому количеству предупреждений, но результат будет в формате, который можно загрузить в jena (используя веб-интерфейс fuseki).
удивительно просто (по крайней мере, в этом случае).
В моем случае был неверный путь в файле конфигурации: файл не был найден (путь был неправильным), и он вышел с этим исключением:
Ошибка настройки из входного потока. Первоначальная причина была: Соответствие цели инструкции обработки "[xX][mM][lL]" не разрешено.
Стоит проверить папки вашего сервера, чтобы увидеть, нет ли там случайного pom.xml.
Я обнаружил, что у меня была проблема, описанная всеми остальными, с искаженным файлом pom.xml, но в папке, которую я не ожидал найти на сервере. Старая сборка торчала вокруг нежелательного D:
Эта ошибка действительно снижает эффективность использования памяти
XMLEventReader
потому что сбой, когда у новичка ввода есть пробелы.
В любом случае, поскольку он уже закодирован для его использования, мне нужно преобразовать
InputStream
или же
Reader
источник, чтобы затем позвонить
trim()
создать еще одного читателя с этим
String
для создания средства чтения XML-событий.
Псевдокоды:
Reader reader = new StringReader(
inputStreamToStringBuilder( getInputStream(), getContentCharset() )
.toString().trim()
);
XMLEventReader eventReader = inputFactory.createXMLEventReader(reader);
у вас не может быть двух тегов объявления xml, удалите и используйте только одно объявление