Étant donné le code suivant:Trouver des nœuds spécifiques avec descendants xsl: clés
<database>
<table name="table1">
<column name="id"/>
<column name="created_at"/>
</table>
<table name="table2">
<column name="id"/>
<column name="updated_at"/>
</table>
</database>
Je veux être en mesure de tester à l'aide d'un xsl: clé si la table spécifique a une colonne spécifique par nom. Par exemple, je veux savoir si une table a une colonne 'created_at' afin que je puisse écrire du code spécifique dans la transformation.
J'ai une clé générale qui va tester si une table a une colonne donnée par son nom, mais n'a pas compris comment la rendre spécifique à la table avec laquelle la transformation travaille actuellement.
<xsl:key name="columnTest" match="column" use="@name"/>
<xsl:for-each select="database/table">
<xsl:choose>
<xsl:when test="key('columnTest', 'created_at')">
<xsl:text>true</xsl:text>
</xsl:when>
<xsl:otherwise>
<xsl:text>false</xsl:text>
</xsl:otherwise>
</xsl:choose>
</xsl:for-each>
Donc je finis par 'vrai' pour toutes les tables. Toute orientation serait appréciée.
Bonne question (+1). Voir ma réponse pour une solution complète. –