web-dev-qa-db-fra.com

La cible d'instruction de traitement correspondant à "[xX] [mM] [lL]" n'est pas autorisée

Je suis en train de sortir du XML dans CakePHP. Mais je reçois cette erreur lorsque je mets mon XML dans un validateur:

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

J'utilise la bonne disposition XML avec <?php echo $this->Xml->header(); ?> en haut, puis <?php echo $content_for_layout; ?> 

Mes résultats sont:

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

Y a-t-il un problème avec ça?

39

marmalad et El Boletaire Underave ont raison de dire que vous ne pouvez pas commencer par un espace, mais ce n'est pas tout. Selon la spécification XML , vous ne pouvez rien avoir avant le prologue XML.

Puisque vous utilisez une déclaration XML, vous devez démarrer votre fichier avec

<?xml version="1.0" ...

Dans certains cas, des caractères non imprimables tels que la marque d'ordre d'octet (BOM) peuvent poser problème en prenant les premiers octets d'un fichier.

Pour un problème plus spécifique à CakePHP, vérifiez que vous n’avez pas de lignes/espaces blancs au début ou à la fin de vos fichiers (c’est-à-dire après votre ?> ou avant votre <?php).

66
Pops

Comme El Boletaire Underave a dit , vérifiez si le XML est généré sans aucun espace vide au début .. ceci m'aide avec mon xml.

14
Martin Taleski

Vérifiez votre fichier XML, il pourrait commencer par un espace vide. Si votre fichier XML commence par des espaces, ce type d'exception sera levé.

1

avant <?xml ?>tag u ne devrait avoir aucun espace . cette balise devrait être en première ligne. cela a fonctionné pour moi

0
Mujtaba Zaidi