我有以下 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 列表,我将在 else 树中更改调用以写入信息。我已经尝试了一些与 xslt 1 一起使用的方法,但我认为这是一个问题,因为它在原始 xml 文件中不存在,但我构建了一个新树,我尝试对其进行排序。
我可以尝试的任何帮助或提示将不胜感激。我现在用撒克逊解析器解析这个。
// 安德烈亚斯
编辑:我想使用排序的 id 列表从标题创建连接。因此,我为连接 1 创建了一个设置,为连接 2 创建了一个设置。我现在遇到的问题是我创建了 2 次连接 1,因为我无法选择不同的 id:s。