次のコードがあるとします。
<database>
<table name="table1">
<column name="id"/>
<column name="created_at"/>
</table>
<table name="table2">
<column name="id"/>
<column name="updated_at"/>
</table>
</database>
特定のテーブルに名前で特定の列がある場合、xsl:key を使用してテストできるようにしたいと考えています。たとえば、テーブルに「created_at」列があるかどうかを知りたいので、変換内に特定のコードを記述できます。
テーブルに名前で指定された列があるかどうかをテストする一般的なキーを取得しましたが、変換が現在処理されているテーブルに固有のものにする方法がわかりません。
<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>
したがって、すべてのテーブルで「true」になります。任意のガイダンスをいただければ幸いです。