我有以下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树选择distinct。它总是绘制121并且我只想要它绘制12.我不是一个唯一的id列表,我将在其他树中更改调用以写入信息。我已经尝试了一些与xslt 1一起使用的方法,但我认为这是一个问题,因为它不在原始的xml文件中,但我构建了一个新的树,我尝试排序不同。
任何帮助或暗示我可以尝试的将不胜感激。我现在用saxon解析器解析它。
// Andreas
编辑: 我想使用排序的id列表从标头创建连接。所以我为连接1创建了一个设置,为连接2创建了一个。我现在的问题是我创建连接1次,因为我无法选择不同的id:s。
答案 0 :(得分:0)
对此感到抱歉。它按照我的方式工作,但递归使它看起来像小组一样不起作用。
所以问题在于递归使它看起来像打印了3次。