COMO TROZAR UNA UNICA TRAMA XML USANDO XSLT

Ernesto Rondon
14 de Junio del 2006
Buenas mis amigos, tengo una pregunta.
tengo un archivo XML que tiene una unica etiqueta que es por ejemplo

<TRAMA>001CARLOS PEREZ PERALTA 002JORGE PEREZ PALACIOS 003CARLOS PELAEZ JUAREZ... etc etc etc</TRAMA>

entonces, en base a una unica etiqueta que tiene toda una cadena de valores ID y NOMBRE necesito crear un XSLT que me transforme ese XML en otro XML de esta forma:

<ID>001</ID>
<NOMBRE>CARLOS PEREZ PERALTA</NOMBRE>
<ID>002</ID>
<NOMBRE>JORGE PEREZ PALACIOS</NOMBRE>
<ID>003</ID>
<NOMBRE>CARLOS PELAEZ JUAREZ</NOMBRE>
<ID>... etc</ID>
<NOMBRE>....etc</NOMBRE>
y asi sucesivamente...

entonces como puedo yo realizar eso con un solo XSLT que me transforme un XML en otro archivo XML...????

espero que puedan ayudarme. les voy a agradecer infinitamente.

mi XSLT tiene lo siguiente, no soy muy ducho en XSLT, pero algo hice creo.

<xsl:stylesheet xmlns:xsl = "http://www.w3.org/1999/XSL/Transform" version = "1.0" >

<xsl:output method = "text" />

<xsl:template match = "/" >

&lt;ID&gt;<xsl:value-of select="substring(TRAMA,1,3)" />&lt;ID&gt;
&lt;NOMBRE&gt;<xsl:value-of select="substring(TRAMA,4,18)" />&lt;NOMBRE&gt;
<xsl:apply-templates />

</xsl:template>

</xsl:stylesheet>

donde TRAMA es todo esto:
<TRAMA>001CARLOS PEREZ PERALTA 002JORGE PEREZ PALACIOS 003CARLOS PELAEZ JUAREZ... etc etc etc</TRAMA>

ojo lo que si se tiene son la cantidad de caracteres por etiqueta. ID tiene 3 caracteres, y nombre tiene 20. son 23 caracteres, es decir, cada 23 caracteres debe volver a generar un <ID>y un <NOMBRE> y asi sucesivamente hasta que acabe toda la trama.

MIL GRACIAS! espero puedan ayudarme.