Domanda

Sto lavorando con un sistema (Maximo) che genera un file di testo.
Devo rimuovere solo la prima riga del file.
Il modo per farlo dovrebbe essere usando XSLT.

Qualche idea?

È stato utile?

Soluzione

Sì, puoi realizzare ciò che vuoi in XSLT!

Probabilmente sarebbe più facile farlo in XSLT 2.0, se questa è un'opzione per te. Michael Kay ha risposto a una domanda simile sulla mailing list XSL nel 2005.

Parafrasando la sua risposta, con piccoli esempi:

In XSLT 2.0, : puoi utilizzare funzione unparsed-text () per leggere il file, tokenize ( ) per dividerlo in righe (e semplicemente ignorare la prima riga).

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

In XSLT 1.0 : puoi leggere un file di testo semplice fingendo che sia un XML entità esterna e referenziandolo da un documento XML che causa il file entità da espandere.

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

Altri suggerimenti

Il modo per farlo è non usando XSLT.

XSLT può produrre file di testo, ma non può elaborare file di testo. Può elaborare solo XML ben formato.

XSLT accetterà solo un file XML valido come input, non un file di testo generale. Tuttavia, può generare testo.

(Uso XSLT per generare codice C, ad esempio.)

Se il tuo processore XSLT supporta la trasformazione da qualsiasi a qualsiasi (xform binarie tramite FFD - Descrittori di file flat), c'è la possibilità di farlo. Puoi racchiudere il tuo testo in un nodo e quindi operare su quel nodo usando un normale modello XSLT per produrre qualunque cosa sia dopo il primo ritorno a capo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top