次のxmlツリーがあります。
<columns>
<column>
<name>Version</name>
<type>string</type>
<multiquery useconnectionid="1" get="Version">SELECT ...</multiquery>
<columns>
<column>
<name>Success</name>
<type>number</type>
<query useconnectionid="2" param="version">SELECT ...</query>
</column>
<column>
<name>Failure</name>
<type>number</type>
<query useconnectionid="1" param="version">SELECT ...</query>
</column>
</columns>
</column>
</columns>
そして、次の xslt テンプレート:
<xsl:template match="column" mode="findid">
<xsl:param name="header" required="yes" />
<xsl:param name="dbid" required="no" />
<xsl:variable name="dbids">
<xsl:if test="$dbid">
<xsl:value-of select="$dbid" />
</xsl:if>
<xsl:for-each select="multiquery">
<id><xsl:value-of select="@useconnectionid" /></id>
</xsl:for-each>
<xsl:for-each select="query">
<id><xsl:value-of select="@useconnectionid" /></id>
</xsl:for-each>
</xsl:variable>
<xsl:for-each select="distinct-values($dbids/id)">
<xsl:value-of select="." />
</xsl:for-each>
<xsl:choose>
<xsl:when test="columns/column">
<xsl:apply-templates select="columns/column" mode="findid">
<xsl:with-param name="header" select="$header" />
<xsl:with-param name="dbid" select="$dbids" />
</xsl:apply-templates>
</xsl:when>
<xsl:otherwise>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
何らかの理由で、作成された id ツリーを個別に選択することができません。それは常に 121 をプロットしますが、12 だけをプロットしたいのです。情報を書き込むために、それ以外のツリーで呼び出しを変更する一意の ID リストは必要ありません。xslt 1 で使用されているいくつかの方法を試してみましたが、元の xml ファイルには含まれていないため、これは問題だと思いますが、新しいツリーを作成して、個別に並べ替えようとしています。
私が試すことができる助けやヒントをいただければ幸いです。これをsaxonパーサーで解析しています。
//アンドレアス
編集: ソートされた ID リストを使用して、ヘッダーから接続を作成したいと考えています。そのため、接続 1 用と接続 2 用のセットアップを作成します。現在の問題は、個別の ID を選択できないため、接続 1 を 2 回作成することです。