web-dev-qa-db-ja.com

「[xX] [mM] [lL]」に一致する処理命令ターゲットは許可されません

CakePHPでXMLを出力しています。しかし、XMLをバリデーターに入れると、このエラーが発生します。

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

最上部に<?php echo $this->Xml->header(); ?>があり、その後_<?php echo $content_for_layout; ?>_で正しいXMLレイアウトを使用しています

私の結果は次のとおりです。

_<?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>
_

これに何か問題はありますか?

39

marmaladとEl Boletaire Underaveは、スペースから始めることはできないというのは正しいですが、それは完全な話ではありません。 XML仕様 によると、XMLプロローグの前には何もありません。

XML宣言を使用しているため、次のようにファイルを開始する必要があります。

<?xml version="1.0" ...

場合によっては、 バイトオーダーマーク(BOM) のような非表示文字は、ファイルの最初の数バイトを使用することで問題を引き起こす可能性があります。

CakePHPに固有の問題については、ファイルの先頭または末尾(つまり、?>の後または<?phpの前)に空の空白行/空白がないことを確認してください。

66
Pops

El Boletaire Underave氏 のように、XMLが最初に空白スペースなしで生成されているかどうかを確認します。これは私のxmlの助けになります。

14
Martin Taleski

XMLファイルを確認してください。空白で始まる場合があります。 XMLファイルが空白で始まる場合、このタイプの例外がスローされます。

1

<?xml ?>tag uにはスペースを入れないでください。このタグは最初の行にある必要があります。これは私のために働いた

0
Mujtaba Zaidi