39 votes

La correspondance entre la cible de l'instruction de traitement et "[xX][mM][lL]" n'est pas autorisée.

Je produis du XML dans CakePHP. Mais j'obtiens cette erreur lorsque je place mon XML dans un validateur :

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

J'utilise une mise en page XML correcte avec <?php echo $this->Xml->header(); ?> au sommet 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 quelque chose de mal à cela ?

66voto

Pops Points 10137

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

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

<?xml version="1.0" ...

Dans certains cas, des caractères non imprimables comme la marque d'ordre d'octet (BOM) peut causer des problèmes en occupant les premiers octets d'un fichier.

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

14voto

marmalad Points 136

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

1voto

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

0voto

Mujtaba Zaidi Points 344

Avant <?xml ?> La balise u ne doit pas comporter d'espace. cette balise doit être sur la première ligne. Cela a fonctionné pour moi

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X