2010-11-04 30 views
6

Estoy usando XSLT para transformar un archivo XML en un archivo HTML.XSLT insertando un archivo TXT

Me gustaría insertar un archivo de texto plano en el HTML como parte de la transformación.

¿Esto es posible?

+0

¿Es posible en XSLT 2.0 ... –

+0

qué procesador XSLT está utilizando? Eso nos ayudaría a saber si aconsejar a XSLT 2.0, o una función de extensión, o alguna otra cosa. – LarsH

Respuesta

2

Bueno, la solución que terminé usando era algo más simple que las sugeridas anteriormente. Utilicé lo siguiente:

<xsl:variable name="input-text" as="xs:string" select="unparsed-text('../Input/pipehat.txt', 'iso-8859-1')"/> 

para obtener el texto en una variable y luego solo mostrar la variable en el lugar apropiado.

<xsl:value-of select="$input-text"/> 
+3

En realidad, esa fue la sugerencia número 2. :) –

+0

El valor se puede leer directamente sin crear ninguna variable: '' – Melebius

6

Usted tiene algunas opciones:

  1. Si puede rodear el texto sin formato en <text></text> etiquetas, puede importar con la función document(). Esto funciona en XSLT1.0 y no requiere otro lenguaje de programación.
  2. Si no puede modificar el archivo fuente, pero sí tiene XSLT2.0, puede hacerlo usando unparsed-text().
  3. Si no tiene XSLT2.0, pero está utilizando Java, entonces es posible que pueda invoke a Java function. Las plataformas de Microsoft probablemente ofrecerán una funcionalidad similar.
+1

+1, buena respuesta. Nota para el lector, # 1 significa rodear el texto sin formato con '' * en el archivo de texto en sí *, no en la plantilla XSLT. – LarsH

+0

@LarsH: Entonces, las opciones son: 1) Hacer que su recurso de texto sea un recurso XML; 2) Usa XSLT 2.0; 3) Usar (o desarrollar) una función de extensión.- Ni 1 ni 3 están bien definidos en respuesta ... –

+0

@ Alejandro: Creo que el primero está bastante bien definido. "Rodea el texto simple en las etiquetas". El último depende mucho de la plataforma que esté utilizando, ejemplo dado para Java. Si BENBUN Coder le hubiera dado un poco más de información sobre el entorno en el que debe funcionar, se podría dar un ejemplo claro. Sin embargo, sigue siendo un puntero en la dirección correcta, deberías ser capaz de resolverlo desde allí. SO no es un "¿Puedes codificar esto para mi sitio?" –

0

Además de las opciones que mencionó Matthijs Bierman, también puede pasar el contenido del archivo de texto a la transformación como argumento, si el entorno con el que está trabajando es compatible.

Por ejemplo, en .NET, un programa que realiza una transformación puede leer un archivo en una variable de cadena, agregarlo como un parámetro a un objeto XsltArgumentList, y pasar este objeto para Transform método de la XslCompiledTransform 's.

Cuestiones relacionadas