xml - Compare values on xslt transform -



xml - Compare values on xslt transform -

i working xml this

<!doctype catalogo scheme "catalogo.dtd"> <catalogo> <constelaciones> <constelacion situacion="boreal"> <nombrelatino>ursa major</nombrelatino> <nombrecomun>osa mayor</nombrecomun> <abreviatura>uma</abreviatura> <genitivo>ursae majoris</genitivo> <visibilidad>circumpolar</visibilidad> <imagen>img/uma.jpg</imagen> </constelacion> <constelacion situacion="boreal"> <nombrelatino>andromeda</nombrelatino> <nombrecomun>andromeda</nombrecomun> <abreviatura>and</abreviatura> <genitivo>andromedae</genitivo> <visibilidad>otonio</visibilidad> <imagen>img/and.jpg</imagen> </constelacion> <constelacion situacion="austral"> <nombrelatino>crux</nombrelatino> <nombrecomun>la cruz del sur</nombrecomun> <abreviatura>cru</abreviatura> <genitivo>crucis</genitivo> <visibilidad>circumpolar</visibilidad> <imagen>img/cru.jpg</imagen> </constelacion> <constelacion situacion="boreal"> <nombrelatino>cygnus</nombrelatino> <nombrecomun>el cisne</nombrecomun> <abreviatura>cyg</abreviatura> <genitivo>cygni</genitivo> <visibilidad>verano</visibilidad> <imagen>img/cyg.jpg</imagen> </constelacion> </constelaciones> <objetos> <objeto observacion="telescopio" clase="galaxia"> <codigo>m82</codigo> <ubicacion>osa mayor</ubicacion> <magnitud>8.41</magnitud> <imagen>img/m82.jpg</imagen> </objeto> <objeto observacion="binocular" clase="cumulo"> <codigo>m45</codigo> <denominacion>pleyades</denominacion> <ubicacion>tauro</ubicacion> <magnitud>1.6</magnitud> <imagen>img/m45.jpg</imagen> </objeto> <objeto observacion="telescopio" clase="nebulosa"> <codigo>ngc6826</codigo> <ubicacion>el cisne</ubicacion> <magnitud>10</magnitud> <imagen>img/ngc6826.jpg</imagen> </objeto> <objeto observacion="binocular" clase="galaxia"> <codigo>m31</codigo> <denominacion>galaxia de andromeda</denominacion> <ubicacion>andromeda</ubicacion> <magnitud>4.36</magnitud> <imagen>img/m31.jpg</imagen> </objeto> </objetos> <telescopios> <telescopio tipo="refractor"> <marca>skywatcher </marca> <modelo></modelo> <precio>620</precio> <potencia>12.5</potencia> <imagen>img/sky.jpg</imagen> </telescopio> <telescopio tipo="reflector"> <marca>orion</marca> <modelo>skyquest xx12</modelo> <precio>1595</precio> <potencia>15.1</potencia> <imagen>img/orion.jpg</imagen> </telescopio> <telescopio tipo="binocular"> <marca>celestron</marca> <modelo>skymaster 700</modelo> <precio>190</precio> <potencia>9</potencia> <imagen>img/celestron.jpg</imagen> </telescopio> </telescopios> </catalogo>

and xsl stylesheet

<?xml version="1.0" encoding="utf-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/xsl/transform"> <xsl:output method="html" encoding="utf-8" doctype-system="about:legacy-compat" /> <xsl:template match="catalogo"> <html> <head> <title>ejercicio 5 catálogo estelar</title> <link rel="stylesheet" type="text/css" href="css/estilos_catalogo.css"></link> </head> <body> <header> <h1>catÁlogo estelar</h1> </header> <xsl:for-each select="constelaciones/constelacion"> <div> <xsl:attribute name="class">constelacion</xsl:attribute> <div> <xsl:attribute name="class">descripcion</xsl:attribute> <img> <xsl:attribute name="src"> <xsl:value-of select="imagen"/> </xsl:attribute> <xsl:attribute name="alt"> <xsl:value-of select="nombrecomun"/> </xsl:attribute> <xsl:attribute name="title"> <xsl:value-of select="nombrecomun"/> </xsl:attribute> </img> <h2><xsl:value-of select="nombrelatino"/></h2> <p><xsl:value-of select="nombrecomun"/></p> <p><xsl:value-of select="abreviatura"/></p> <p><xsl:value-of select="genitivo"/></p> <p><xsl:value-of select="visibilidad"/></p> </div> <div> <xsl:attribute name="class">objetos</xsl:attribute> <xsl:if test="/catalogo/objetos/objeto/ubicacion/text()=nombrecomun/text()"> <p><xsl:value-of select="codigo"/></p> <p><xsl:value-of select="magnitud"/></p> <xsl:if test="denominacion"> <p><xsl:value-of select="denominacion"/></p> </xsl:if> <img> <xsl:attribute name="src"> <xsl:value-of select="imagen"/> </xsl:attribute> <xsl:attribute name="alt"> <xsl:value-of select="codigo"/> </xsl:attribute> <xsl:attribute name="title"> <xsl:value-of select="codigo"/> </xsl:attribute> </img> </xsl:if> </div> </div> </xsl:for-each> <footer> <p>josé manuel</p> <p>transformación xslt</p> </footer> </body> </html> </xsl:template> </xsl:stylesheet>

i need show constellations , display objects corresponding each. comparing <nombrecomun> <ubicacion>. objects shouls appear on <div class="objeto"> label. ive problems compare between nodes located in differnet elemnts. if utilize /catalogo/objetos/objeto/ubicacion/text(), same value node. help.

you should post expected output here. minimizing illustration helpful too.

now, suggest utilize key objects related each constellation. this, add together following:

<xsl:key name="object" match="objeto" use="ubicacion" />

to top of stylesheet, outside of template. alter this:

<xsl:if test="/catalogo/objetos/objeto/ubicacion/text()=nombrecomun/text()"> <p><xsl:value-of select="codigo"/></p> <p><xsl:value-of select="magnitud"/></p> <xsl:if test="denominacion"> <p><xsl:value-of select="denominacion"/></p> </xsl:if> <img> <xsl:attribute name="src"> <xsl:value-of select="imagen"/> </xsl:attribute> <xsl:attribute name="alt"> <xsl:value-of select="codigo"/> </xsl:attribute> <xsl:attribute name="title"> <xsl:value-of select="codigo"/> </xsl:attribute> </img> </xsl:if>

to:

<xsl:for-each select="key('object', nombrecomun)"> <p><xsl:value-of select="codigo"/></p> <p><xsl:value-of select="magnitud"/></p> <xsl:if test="denominacion"> <p><xsl:value-of select="denominacion"/></p> </xsl:if> <img> <xsl:attribute name="src"> <xsl:value-of select="imagen"/> </xsl:attribute> <xsl:attribute name="alt"> <xsl:value-of select="codigo"/> </xsl:attribute> <xsl:attribute name="title"> <xsl:value-of select="codigo"/> </xsl:attribute> </img> </xsl:for-each>

p.s. can shorten code considerably, if larn utilize attribute value template.

xml xslt xpath

Comments

Popular posts from this blog

php - Android app custom user registration and login with cookie using facebook sdk -

django - Access session in user model .save() -

php - .htaccess Multiple Rewrite Rules / Prioritizing -