Come da titolo vorrei sapere come e' possibile eivitare la ricorsione con XSLT.
Per intenderci meglio ho questi due semplici file di prova.
L'xml:
Codice:
e il .xstcodice:<?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet type="text/xsl" href="business_card.xsl"?> <card xmlns="http://businesscard.org"> <name>John Doe<x>Ciao<y>Riciao</y></x></name> <name>Un altro nome</name> <title>CEO, Widget Inc.</title> <email>john.doe@widget.inc</email> <phone>(202) 456-1414</phone> <logo uri="widget.gif"/> </card>
Codice:
In pratica trasformo il file xml in uno xhtml che questa volta il browser e' in grado di visualizzare. Ok.codice:<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:b="http://businesscard.org" xmlns="http://www.w3.org/1999/xhtml"> <xsl:template match="b:card"> <html> <head> <title><xsl:value-of select="b:name"/></title> </head> <body bgcolor="#ffffff"> <table border="3"> <tr> <td> <xsl:apply-templates select="b:name[1]"/> <xsl:apply-templates select="b:title"/> <tt><xsl:apply-templates select="b:email"/></tt> <xsl:if test="b:phone"> Phone: <xsl:apply-templates select="b:phone"/> </xsl:if> </td> <td> <xsl:if test="b:logo"> [img]{b:logo/@uri}[/img] </xsl:if> </td> </tr> </table> </body> </html> </xsl:template> <xsl:template match="b:name|b:title|b:email|b:phone"> <xsl:value-of select="."/> </xsl:template> </xsl:stylesheet>
Ma quando applico il template per il tag b:name vorrei venisse visualizzato solo John Doe e invece come e' giusto che sia(per via della ricorsione) viene visualizzato anche il contenuto dei tag x e y.
Come posso evitare questo? Credo che per chi conosce bene il linguaggio sara' una cosa facile.
Grazie dell'attenzione

Rispondi quotando