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

2022-08-30 12:25:56

我正在CakePHP中输出XML。但是当我将XML放入验证程序中时,我收到此错误:

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

我正在使用正确的XML布局,然后在顶部<?php echo $this->Xml->header(); ?><?php echo $content_for_layout; ?>

我的结果是:

<?xml version="1.0" encoding="UTF-8" ?><response type='' outcome='true' message='Login successful!'>
    <user id='1234' total_number_of_completed_tasks='0' total_number_of_declined_tasks='0' total_number_of_passed_tasks='1' total_number_of_failed_tasks='1' reputation_points='99' deviant_points='0' />
        <tasks>
            <accepted>
                                <accepted_task id='4' type='Good' time_limit='500' details='Good accepted' />
                                <accepted_task id='5' type='OK' time_limit='660' details='Ok New task' />
                                <accepted_task id='9' type='Excellent' time_limit='2000' details='Great failed task' />
                                <accepted_task id='11' type='Your type' time_limit='222' details='Running and swimming all the way to Japan' />
                                <accepted_task id='7' type='Man' time_limit='744' details='My dirty task' />
                            </accepted>
            <pending>
                                <pending_task id='8' type='Women' time_limit='5151' details='Women new task' sender_id='11111' sent_date='2031-01-01 00:00:00' sender_name='Jae Choi' />
                            </pending>
            <completed>
                            </completed>
            <new>
                                <new_task id='5' type='OK' time_limit='660' details='Ok New task' />
                                <new_task id='8' type='Women' time_limit='5151' details='Women new task' />
                                <new_task id='4' type='Good' time_limit='500' details='Good accepted' />
                                <new_task id='10' type='Hello' time_limit='122' details='What is this?' />
                                <new_task id='3' type='Best' time_limit='880' details='Stop doing work!' />
                                <new_task id='11' type='Your type' time_limit='222' details='Running and swimming all the way to Japan' />
                                <new_task id='6' type='Great' time_limit='553' details='Great accepted task' />
                                <new_task id='7' type='Man' time_limit='744' details='My dirty task' />
                                <new_task id='9' type='Excellent' time_limit='2000' details='Great failed task' />
                            </new>
        </tasks>
</response>

这有什么问题吗?


答案 1

marmalad和El Boletaire Underave是对的,你不能从一个空间开始,但这不是完整的故事。根据 XML 规范,在 XML prolog 之前,您根本不能拥有任何东西。

由于您使用的是 XML 声明,因此必须使用

<?xml version="1.0" ...

在某些情况下,非打印字符(如字节顺序标记 (BOM))可能会占用文件的前几个字节,从而导致问题。

对于更特定于CakePHP的问题,请检查以确保在文件的开头或结尾(即在您的之后或之前)没有杂散的空白行/空格。?><?php


答案 2

正如El Boletaire Underave所说,检查生成的XML是否在开始时没有任何空格。这可以帮助我使用我的xml。


推荐