Un XSL template match dans *TOUS* les modes?

Est-il un moyen d'écrire une feuille de style XSL 1.0 modèle qui s'accorde à tous les modes?

Ou dois-je écrire un gabarit pour chaque mode (y compris des modèles supplémentaires pour les modes d'être ajoutées dans le futur)?

Voici ce que j'ai:

<xsl:apply-templates mode="mode1" />
    ...
<xsl:apply-templates mode="mode2" />
    ...
<!-- Do not process text content of nodes no matter in what mode -->
<!-- Is there a way to have only one template here? -->
<xsl:template match="text()" mode="mode1" />
<xsl:template match="text()" mode="mode2" />
  • Je ne vais pas recommander à toute personne d'utiliser #tous dans XSLT 2.0 -- c'est trop dangereux. Par exemple, juste un peu plus générique (template matching node()) d'interférer avec un autre modèle. Beaucoup mieux est de concevoir ses modèles avec plus de soin, plus propre, de sorte que l'ensemble n'est pas nécessaire.
  • Vous n'avez pas besoin de modèles vide le texte correspondant() si vous utilisez <xsl:apply-templates select="node()[not(self::text())]"/> au lieu d'utiliser <xsl:apply-templates/>
  • Oui, bien sûr, vous avez raison. Cependant, votre solution implique la modification de tous les apply-templates dans le code ce qui rend l'entretien très dur et semble enclin à l'erreur pour moi.
InformationsquelleAutor Dirk Vollmar | 2009-01-26