Est-ce que Chrome peut effectuer une transformation XSL sur un fichier local?

Je cherchais dans xslt et j’ai commencé à tester avec les exemples sur w3schools.

Cependant, lorsque je sauvegarde les fichiers XML et XSL dans des fichiers et que j’essaie de les ouvrir localement, chrome n’effectue pas la transformation xsl. Il montre juste une page blanche.

J’ai ajouté la au document xml et firefox la rend telle qu’elle est censée être. De plus, si je regarde les fichiers via un serveur Web, chrome affiche le fichier tel qu’il est censé être.

Est-ce que chrome a un problème pour trouver les informations de la feuille de style lorsque le lien est local? Changer le href en file:///C:/xsl/style.xsl n’a fait aucune différence.

Mise à jour: Cela semble être un effet secondaire d’une politique de sécurité pour ne pas traiter le fichier: /// * comme la même origine. Cela provoque l’erreur suivante dans la console:

Tentative de chargement du fichier URL: /// C: /xsl-rpg/style.xsl à partir du cadre contenant le fichier URL: /// C: /xsl-rpg/data.xml. Les domaines, protocoles et ports doivent correspondre.

La réponse courte est “Non, utilisez l’un des nombreux navigateurs disponibles “ .

La raison pour laquelle cela ne fonctionne pas est due à un problème de sécurité que Chrome a traité de manière controversée [1] [2] [3] [4] , en empêchant les fichiers XML d’accéder aux fichiers XSLT locaux dans le même répertoire, tandis que HTML fichiers peuvent accéder aux fichiers .CSS dans le même répertoire très bien.

Parmi les problèmes mentionnés ci-dessus, les utilisateurs ont demandé un message d’erreur plus clair (puisque les domaines, les protocoles et les ports correspondent effectivement), ou du moins afficher le code XML sans le style. Les développeurs Chrome ont ignoré ces demandes.

Vous pouvez le faire localement en utilisant les indicateurs de ligne de commande de Chrome.

L’indicateur spécifique est --allow-file-access-from-files

Sous OS X: à partir de Terminal.app exécuté /Applications/Google\ Chrome.app/contents/MacOS/Google\ Chrome --allow-file-access-from-files

Sous Windows: à partir de l’invite de commandes, exécutez %LOCALAPPDATA%\Google\Chrome\Application\chrome.exe --allow-file-access-from-files

Remarque: vous devrez probablement quitter Chrome s’il est en cours d’exécution sinon

Si vous voulez vous en tenir à l’OP, la réponse est non (comme d’autres l’ont fait remarquer), mais une solution consiste à exécuter un serveur Web simple et à ouvrir des fichiers via http en chrome. Si vous avez installé python 2.x, vous pouvez exécuter un serveur Web en tapant:

 python -m SimpleHTTPServer 

Ou en python 3.x:

 python3 -m http.server 

puis ouvrez le fichier en utilisant http://localhost:8000/yourfile.xml en chrome. J’espère que vous voulez juste faire votre travail et ce n’est pas une chose cruciale pour ouvrir le fichier en utilisant le file://

Il a fallu un peu de déchiffrement sur la page Chrome Bug – ils sont très désireux de ne pas expliquer le problème et pourquoi ils ont choisi de casser tout le monde plutôt que de ne pas casser tout le monde.

Supposons que j’ai un fichier XML – quelque part – sur mon disque dur, par exemple:

C: \ Utilisateurs \ Ian \ Documents \ Taxes \ StudioTaxReturn_2015.xml

Et une entité malveillante – en quelque sorte – a réussi à supprimer un fichier Xml malveillant sur mon ordinateur, par exemple:

C: \ Utilisateurs \ Ian \ AppData \ LocalLow \ Temp \ TrojanVirusWorm.xml

Imaginez TrojanVirusWorm.xml contient une instruction de traitement de feuille de style:

   

L’attaquant demande ensuite à mon navigateur de naviguer jusqu’au fichier trojanVirusWorm.xml enregistré localement.

Apparemment, un fichier XML peut lire le contenu du fichier XSD (plutôt que d’être transformé par le fichier XSD):

       

Je ne comprends pas comment un fichier XML peut lire un fichier de feuille de style. Mais l’équipe Chrome nous assure que c’est un danger et qu’il ne peut être résolu.

Tous les autres navigateurs l’ont résolu. Ils l’ont résolu parce que ce n’est pas un problème .

Ma solution de contournement pour voir un fichier XML selon un fichier xsl

Supposons que nous ayons un fichier some_file.xml avec des en-têtes:

   
  1. Nous téléchargeons le fichier https://some-site.com/Common.xsl et le some_file.xml à côté de some_file.xml
  2. Changez une partie de notre en-tête de href="https://some-site.com/Common.xsl" en href="http://localhost:8001/Common.xsl"
  3. Exécuter dans le répertoire avec nos fichiers – python3 -m http.server 8001
  4. Ouvrez dans n’importe quel navigateur http://localhost:8001/some_file.xml