Pregunta

Estoy trabajando con un sistema (Maximo) que genera un archivo de texto.
Necesito eliminar solo la primera línea del archivo.
La forma de hacerlo debería ser usando XSLT.

¿Alguna idea?

¿Fue útil?

Solución

¡Sí, puede lograr lo que quiere en XSLT!

Probablemente sería más fácil hacerlo en XSLT 2.0, si esa es una opción para usted. Michael Kay respondió una pregunta similar en la lista de correo XSL en 2005.

Parafraseando su respuesta, con pequeños ejemplos:

En XSLT 2.0, : puede usar el función de texto no analizado () para leer el archivo, tokenize ( ) para dividirlo en líneas (e ignorar la primera línea).

<xsl:for-each select="tokenize(unparsed-text($in), '\r?\n')">
 ...
</xsl:for-each>

En XSLT 1.0 : puede leer un archivo de texto plano simulando que es un XML entidad externa, y haciendo referencia a ella desde un documento XML que causa la entidad a expandir.

<!DOCTYPE foo [
<!ENTITY bar SYSTEM "bar.txt">
]>
<foo>
&bar;
</foo>

Otros consejos

La forma de hacerlo es no usar XSLT.

XSLT puede producir archivos de texto, pero no puede procesar archivos de texto. Solo puede procesar XML bien formado.

XSLT solo tomará un archivo XML válido como entrada, no un archivo de texto general. Sin embargo, puede generar texto.

(uso XSLT para generar código C, por ejemplo)

Si su procesador XSLT admite la transformación de uno a cualquiera (xforms binarias a través de FFD - Descriptores de archivos planos), existe la posibilidad de hacerlo. Puede ajustar su texto en un nodo y luego operar en ese nodo utilizando una plantilla XSLT normal para generar lo que sea después del primer retorno de carro.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top