Question

Je travaille avec un système (Maximo) qui génère un fichier texte.
Je n'ai besoin que de supprimer la première ligne du fichier.
Pour ce faire, utilisez XSLT.

Une idée?

Était-ce utile?

La solution

Oui, vous pouvez accomplir ce que vous voulez dans XSLT!

Il serait probablement plus facile de le faire dans XSLT 2.0, si cela est une option pour vous. Michael Kay a répondu à une question similaire sur la liste de diffusion XSL en 2005.

Paraphrasant sa réponse, avec de petits exemples:

Dans XSLT 2.0, : vous pouvez utiliser le . unparsed-text () pour lire le fichier, tokenize ( ) pour la scinder en lignes (et ignorer la première ligne).

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

Dans XSLT 1.0 : vous pouvez lire un fichier texte à plat en prétendant qu'il s'agit d'un fichier XML. entité externe et en la référençant à partir d'un document XML qui provoque la entité à développer.

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

Autres conseils

Pour cela, pas utiliser XSLT.

XSLT peut produire des fichiers texte, mais ne peut pas traiter les fichiers texte . Il ne peut traiter que du XML bien formé.

XSLT prendra uniquement un fichier XML valide en entrée, pas un fichier texte général. Il peut cependant générer du texte.

(J'utilise XSLT pour générer du code C, par exemple.)

Si votre processeur XSLT prend en charge la transformation tout-en-un (formes x binaires via des FFD - descripteurs de fichiers plats), cela est possible. Vous pouvez envelopper votre texte dans un nœud, puis utiliser ce nœud à l’aide d’un modèle XSLT standard pour générer le résultat après le premier retour chariot.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top