Compartir a través de


Entradas en la clase XslCompiledTransform

El método Transform acepta tres tipos de entradas para el documento de origen: un objeto que implementa la interfaz IXPathNavigable, un objeto XmlReader que lee el documento de origen o un identificador URI de cadena.

Nota

La clase XslCompiledTransform conserva el espacio en blanco de manera predeterminada. Esto es lo que se establece en la sección 3.4 de la recomendación de XSLT 1.0 del W3C.

Interfaz IXPathNavigable

La interfaz IXPathNavigable se implementa en la clase XmlNode y XPathDocument. Estas clases representan una caché en memoria de datos XML.

  • La clase XmlNode se basa en el Modelo de objetos de documento (DOM) del W3C e incluye capacidades de edición.

  • La clase XPathDocument es un almacén de datos de solo lectura basado en el modelo de datos XPath. XPathDocument es la clase recomendada para el procesamiento XSLT. Proporciona un rendimiento mayor comparada con la clase XmlNode.

Nota

Las transformaciones se aplican al documento en su totalidad. En otras palabras, si se pasa un nodo distinto del nodo raíz del documento, esto no evita que el proceso de transformación pueda obtener acceso a todos los nodos del documento cargado. Para transformar un fragmento del nodo, debe crear un objeto que contenga solo el fragmento del nodo y pasar ese objeto al método Transform. Para obtener más información, vea Cómo: Transformación de un fragmento de nodo.

En el siguiente ejemplo se utiliza el método XslCompiledTransform.Transform para transformar el archivo books.xml en el archivo books.html mediante la hoja de estilos transform.xsl. Los archivos books.xml y transform.xsl pueden encontrarse en este tema: Cómo: Ejecución de una transformación XSLT mediante un ensamblado.

// Open books.xml as an XPathDocument.
XPathDocument doc = new XPathDocument("books.xml");

// Create a writer for writing the transformed file.
XmlWriter writer = XmlWriter.Create("books.html");

// Create and load the transform with script execution enabled.
XslCompiledTransform transform = new XslCompiledTransform();
XsltSettings settings = new XsltSettings();
settings.EnableScript = true;
transform.Load("transform.xsl", settings, null);

// Execute the transformation.
transform.Transform(doc, writer);
' Open books.xml as an XPathDocument.
Dim doc As XPathDocument = New XPathDocument("books.xml")

' Create a writer for writing the transformed file.
Dim writer As XmlWriter = XmlWriter.Create("books.html")

' Create and load the transform with script execution enabled.
Dim transform As XslCompiledTransform = New XslCompiledTransform()
Dim settings As XsltSettings = New XsltSettings()
settings.EnableScript = True
transform.Load("transform.xsl", settings, Nothing)

'Execute the transformation.
transform.Transform(doc, writer)

Objeto XmlReader

El método Transform se carga desde el nodo actual del XmlReader a través de todos sus nodos secundarios. Esto le permite utilizar una parte de un documento como documento de contexto. Una vez devuelto el método Transform, XmlReader se sitúa en el siguiente nodo después del final del documento de contexto. Si se llega al final del documento, XmlReader se sitúa al final del archivo.

En el siguiente ejemplo se utiliza el método XslCompiledTransform.Transform para transformar el archivo books.xml en el archivo books.html mediante la hoja de estilos transform.xsl. Los archivos books.xml y transform.xsl pueden encontrarse en este tema: Cómo: Ejecución de una transformación XSLT mediante un ensamblado.

// Create a reader to read books.xml
XmlReader reader = XmlReader.Create("books.xml");

// Create a writer for writing the transformed file.
XmlWriter writer = XmlWriter.Create("books.html");

// Create and load the transform with script execution enabled.
XslCompiledTransform transform = new XslCompiledTransform();
XsltSettings settings = new XsltSettings();
settings.EnableScript = true;
transform.Load("transform.xsl", settings, null);

// Execute the transformation.
transform.Transform(reader, writer);
'Create a reader to read books.xml
Dim reader As XmlReader = XmlReader.Create("books.xml")

' Create a writer for writing the transformed file.
Dim writer As XmlWriter = XmlWriter.Create("books.html")

' Create and load the transform with script execution enabled.
Dim transform As XslCompiledTransform = New XslCompiledTransform()
Dim settings As XsltSettings = New XsltSettings()
settings.EnableScript = True
transform.Load("transform.xsl", settings, Nothing)

' Execute the transformation.
transform.Transform(reader, writer)

Identificador URI de cadena

También puede especificar el identificador URI del documento de origen como entrada XSLT. Se utiliza un XmlResolver para resolver el identificador URI. Puede especificar el XmlResolver que se va a utilizar pasándolo al método Transform. Si no se especifica un XmlResolver, el método Transform utiliza un XmlUrlResolver predeterminado sin ninguna credencial.

En el siguiente ejemplo se utiliza el método XslCompiledTransform.Transform para transformar el archivo books.xml en el archivo books.html mediante la hoja de estilos transform.xsl. Los archivos books.xml y transform.xsl pueden encontrarse en este tema: Cómo: Ejecución de una transformación XSLT mediante un ensamblado.

// Create and load the transform with script execution enabled.
XslCompiledTransform transform = new XslCompiledTransform();
XsltSettings settings = new XsltSettings();
settings.EnableScript = true;
transform.Load("transform.xsl", settings, null);

// Execute the transformation.
transform.Transform("books.xml", "books.html");
' Create and load the transform with script execution enabled.
Dim transform As XslCompiledTransform = New XslCompiledTransform()
Dim settings As XsltSettings = New XsltSettings()
settings.EnableScript = True
transform.Load("transform.xsl", settings, Nothing)

' Execute the transformation.
transform.Transform("books.xml", "books.html")

Para más información, vea Resolución de recursos externos durante el procesamiento XSLT.

Vea también