XSL - Problema con etiquetas XML/XSL

 
Vista:

Problema con etiquetas XML/XSL

Publicado por DiGEON (2 intervenciones) el 30/08/2005 12:47:29
Muy buenas, os comento en problemilla que tengo exactamente. Es relativamente sencillo pero no encuentro la forma de conseguir lo que quiero y ya no se como hacerlo, he probado varias declaraciones de la dtd.

Fichero DTD:
...
< ! ELEMENT parrafo (texto|cursiva|negrita|link) * >
< ! ELEMENT texto (#PCDATA) >
< ! ELEMENT cursiva (#PCDATA) >
< ! ELEMENT negrita (#PCDATA) >> ...

Fichero XML:
...
< parrafo>
<texto >Pues esto no es mas que otra prueba mas</texto >
<negrita >N para ver q tal va todo esto</negrita >
<texto >Mas texto para que lo flipes</texto >
</parrafo > ...

Fichero XSL:
...
<xsl:for-each select="documento/parrafo">
<xsl:for-each select="texto">
<xsl:value-of select="."/>
<strong>
<xsl:value-of select="../negrita"/>
</strong>
<em>
<xsl:value-of select="../cursiva"/>
</em>
</xsl:for-each>
</xsl:for-each>...

Pues bien lo que yo deseo conseguir es exactamente que el texto que yo escriba aparezca en orden, es deicr, texto normal, texto negrita, texto normal, etc ... no se si la declaracion de la dtd deberia de ser de otra forma, pero lo que hace es poner todas las etiquetas texto y a continuacion las cursiva o las negritas ... sin respetar el orden del documento xml.

Muchas gracias de antemano, un saludo.
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:Problema con etiquetas XML/XSL

Publicado por Iuav (29 intervenciones) el 31/08/2005 19:24:46
Hola,
creo que estás definiendo mal tu XSL, aquí te digo cómo debes hacerlo.

<?xml version='1.0' encoding='ISO-8859-1'?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="/">
<xsl:apply-templates select="/documento/parrafo"/>
</xsl:template>
<xsl:template match="texto">
<xsl:value-of select="."/>
</xsl:template>
<xsl:template match="negrita">
<b><xsl:value-of select="."/></b>
</xsl:template>
</xsl:stylesheet>

Saludos
iuav
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

RE:Problema con etiquetas XML/XSL

Publicado por DiGEON (2 intervenciones) el 01/09/2005 00:19:51
Hola, gracias por contestar, pero eso tambien lo he probado y no da resultado, en este caso repite todo el texto por 2 veces, una con el texto normal y otra con negrita.

El xsl lo he puesto tal que asi:

< xsl:template match="/">
< xsl:apply-templates select="/documento/parrafo"/>
< /xsl:template>
< xsl:template match="texto">
< xsl:value-of select="."/>
< /xsl:template>
< xsl:template match="negrita">
< b><xsl:value-of select="."/></b>
< /xsl:template>

he probado usando xsl:if, pero sigo sin obtener lo que yo kiero ...

< xsl:for-each select="documento/parrafo">
< tr>
< td width="645">
< xsl:if test="name()='texto'">
< xsl:value-of select="texto"/>
< /xsl:if>
< xsl:if test="name()='negrita'">
< strong>
< xsl:value-of select="negrita"/>
< /strong>
< /xsl:if>
< xsl:if test="name()='cursiva'">
< em>
< xsl:value-of select="cursiva"/>
< /em>
< /xsl:if>
< /td>
< /tr>
< /xsl:for-each>

Un saludo y gracias, a ver si consigo algo ... ciaoo
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