XML - aplicar plantilla dentro de otra...

 
Vista:

aplicar plantilla dentro de otra...

Publicado por albertmata (4 intervenciones) el 11/06/2007 10:22:51
Es mi primer mensaje en este foro, así que gracias a todos por vuestra atención. Intengo exponer mi problema con claridad, aunque no soy un experto en XML y supongo que tendréis que poner buena voluntad para entenderlo... ;-)

Tengo una estructura XML así:

PROYECTO
-----PARRAFO
----------HIPERVINCULO texto="abc" link="abc.htm"
-----(otros)

En un ejemplo queda así:

<proyecto>
<parrafo>
Esto sera un parrafo blablabla.
</parrafo>
</proyecto>

Y aplicándole esto que sigue funciona bien y me lo presenta como quiero:

<xsl:apply-templates select="proyecto"/>
<xsl:apply-templates select="parrafo"/>

<xsl:template match="paragraf">
<div class="paragraf">
     
<xsl:value-of select="."/>
</div>
</xsl:template>

El problema es que yo lo que quiero es esto:

<proyecto>
<parrafo>
Esto sera un parrafo blablabla que inclura un enlace a la pagina <hipervinculo texto="mipagina" link="mipagina.htm"/> para que podamos acceder a ella.
</parrafo>
</proyecto>

Es decir, dentro de <parrafo> habrá contenido en sí (el párrafo) y etiquetas <hipervinculo/>.

No sé como hacer para que en el resultado se me muestre ese hipervinculo. Lo he probado así:

<xsl:template match="paragraf">
<div class="paragraf">
     
<xsl:value-of select="."/>
<xsl:apply-templates select="hipervinculo"/>
</div>
</xsl:template>

Pero no me funciona porque el hipervínculo se me muestra antes o después del texto del párrafo (según dónde lo ponga) pero no intercalado como quiero.

¿Alguna idea?
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:aplicar plantilla dentro de otra...

Publicado por albertmata (4 intervenciones) el 11/06/2007 13:14:43
Me contesto a mí mismo, pues ya he encontrado la solución.

Ha pasado por cambiar:

<xsl:template match="paragraf">
<div class="paragraf">
<xsl:value-of select="."/>
<xsl:apply-templates select="hipervinculo"/>
</div>
</xsl:template>

por:

<xsl:template match="paragraf">
<div class="paragraf">
<xsl:apply-templates/>
</div>
</xsl:template>

Y tener creada una plantilla para <hipervinculo>.

Tema cerrado.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar