Ver Mensaje Individual
  #7 (permalink)  
Antiguo 30/11/2008, 20:19
Avatar de jam1138
jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 20 años, 4 meses
Puntos: 102
Respuesta: Procesar etiqueta dentro de texto - XML -> XSL

Gracias por la sugerencia Ek-Balam, entiendo lo que dices, pero no tengo acceso al XML... al menos no de primera mano. Son recursos que se extraen externamente, de vez en cuando han de hacer cambios externos, fuera de mi control, tengo que agarrarlos y transformarlos para trabajar con el resultado.

Pero bueno, ahora intenté esto:
Código xml:
Ver original
  1. <?xml version="1.0" ?>
  2. <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  3.    <xsl:output method="text" />
  4.  
  5.    <xsl:template match="/">
  6.        <xsl:for-each select="./*">
  7.            <xsl:apply-templates />
  8.        </xsl:for-each>
  9.    </xsl:template>
  10.  
  11.    <xsl:template match="title">
  12.        <xsl:text>[TITLE]</xsl:text>
  13.        <xsl:value-of select="." />
  14.        <xsl:text>[/TITLE]</xsl:text>
  15.    </xsl:template>
  16.  
  17.    <xsl:template match="def">
  18.        <xsl:text>[DEF]</xsl:text>
  19.        <xsl:value-of select="." />
  20.        <xsl:text>[/DEF]</xsl:text>
  21.    </xsl:template>
  22.  
  23. </xsl:stylesheet>
Trato directamente el nodo <def> sin tratar el <para> y funciona, pero ahora tengo problema con los espacios, pues la tabulación y el fin de línea se conservan y es algo que no debería. Este es (mas o menos) mi salida:
Código:
       [TITLE]Titulo[/TITLE]

               Lorem [DEF]ipsum[/DEF] postea ipsum complectitur eos in, mandamus disputationi
               mediocritatem vix ei.
El XML viene con saltos de línea si el texto pasa de 80 caracteres, pero yo necesito el texto corrido. Además, por la indentación de los nodos del XML igual se indenta el resultado (y hay saltos de línea extras), lo cuál necesito quitar. No puedo aplicar normalize-space() a para porque entonces, regreso al problema inicial (tratar <def> y colocarlo donde tiene que ir). Igual y se puede solucionar esto de otra manera; ¿ideas?.
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"