Clase System.Xml.Xsl.XslCompiledTransform
En este artículo se proporcionan comentarios adicionales a la documentación de referencia de esta API.
La clase XslCompiledTransform es un procesador XSLT que admite la sintaxis XSLT 1.0. Se trata de una nueva implementación e incluye mejoras de rendimiento en comparación con la clase obsoleta XslTransform. La estructura de la clase XslCompiledTransform es muy similar a la clase XslTransform. El método Load carga y compila la hoja de estilos, mientras que el método Transform ejecuta la transformación XSLT.
La compatibilidad con la función document()
XSLT y los bloques de script incrustados están deshabilitados de forma predeterminada. Estas características se pueden habilitar mediante la creación de un objeto XsltSettings y su paso al método Load.
Para obtener más información, consulte Uso de la clase XslCompiledTransform y Migración desde la clase XslTransform.
Consideraciones sobre la seguridad
Si crea una aplicación que utiliza la clase XslCompiledTransform, debería conocer los siguientes puntos y sus implicaciones:
El script XSLT está deshabilitado de manera predeterminada. El script XSLT solo se debería habilitar si necesita compatibilidad con scripts o si está trabajando en un entorno de total confianza.
La función
document()
XSLT está deshabilitada de manera predeterminada. Si habilita la funcióndocument()
, restrinja los recursos a los que se tiene acceso pasando un objeto XmlSecureResolver al método Transform.Los objetos de extensión están habilitados de manera predeterminada. Si se pasa un objeto XsltArgumentList que contiene objetos de extensión al método Transform, estos objetos se utilizan.
Las hojas de estilos XLST pueden incluir referencias a otros archivos y bloques de scripts incrustados. Un usuario malintencionado puede aprovecharse de esta característica para proporcionarle datos u hojas de estilos que, cuando se ejecutan, pueden hacer que el sistema los procese hasta que el equipo se quede sin recursos.
Las aplicaciones XSLT que se ejecutan en un entorno de confianza mixto pueden sufrir suplantaciones de hoja de estilos. Por ejemplo, un usuario malintencionado podría cargar un objeto con una hoja de estilos perjudicial y pasárselo a otro usuario que, a continuación, llama al método Transform y ejecuta la transformación.
Estos problemas de seguridad se pueden mitigar si no se habilitan los scripts o la función document()
a menos que la hoja de estilos provenga de un origen de confianza, y si no se aceptan objetos XslCompiledTransform, hojas de estilos XSLT o datos de origen XML de un origen que no es de confianza.