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:
https://some-site.com/Common.xsl
et le some_file.xml
à côté de some_file.xml
href="https://some-site.com/Common.xsl"
en href="http://localhost:8001/Common.xsl"
python3 -m http.server 8001
http://localhost:8001/some_file.xml