/ / Existe-t-il un moyen simple d'utiliser XSLT pour détecter et corriger le XML mal formé? - xml, xslt

Existe-t-il un moyen simple d’utiliser XSLT pour détecter et corriger des fichiers XML mal formés? - xml, xslt

Par exemple:

<doc xmlns="http://www.foo.org">
<div id>
<title>Mr. Title</title>
<paragraph>This is one paragraph.</paragraph>
</div>
</doc>

Notez que la balise div a un attribut id sansvaleur assignée. Je voudrais le corriger avec XSLT, mais lorsque j'applique le XSL à ce XML, le message d'erreur "Erreur d'analyse XML: pas bien formé" avant le traitement. Quelqu'un sait-il un moyen de contourner cela?

Merci!

Réponses:

2 pour la réponse № 1

Les réponses indiquant qu'une condition préalable au début de la transformation XSLT est de disposer d'un document XML bien formé (et analysé) sont correctes.

toutefois:

  1. Dans XSLT 2.0, un document XML source n’est pas requis.

  2. XSLT 1.0 et XSLT 2.0 permettent-ils à l'implémentation de faire quoi au cas où document() function ne peut pas analyser le fichier identifié par l'argument URI (construit à partir de). Si votre processeur XSLT ne génère pas d'erreur et renvoie simplement un ensemble de nœuds vide, cela peut être utilisé comme technique pour déterminer si un fichier identifié par un URI particulier est un document XML bien formé ou pas.


3 pour la réponse № 2

Ce que tu veux n'est pas possible. Même si le résultat de l'application XSL ne doit pas nécessairement être bien formé, l'entrée doit l'être


1 pour la réponse № 3

Non, le XML doit être analysé avant que XSLT puisse lui être appliqué.


1 pour la réponse № 4

Dans XSLT 2.0, vous pouvez utiliser le doc-available() fonction, qui retourne false si aucune ressource avecl'URI donné existe ou si la ressource existe mais n'est pas XML. Si vous savez quel type de réparation est nécessaire, vous pouvez le tenter en lisant la ressource à l'aide du unparsed-text() fonction et manipuler le résultat sous forme de texte. En général, cependant, si quelqu'un vous envoie un mauvais fichier XML, il est recommandé de le persuader de cesser de le faire.