2013-02-25 51 views
-1

我有以下xml樹。xsl在創建的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文件中,但是我構建了一個新的樹,我嘗試對其進行排序。

任何幫助或暗示我可以嘗試將不勝感激。我現在用撒克遜語解析器解析這個。

//安德烈亞斯

編輯: 我想使用排序ID列表創建從標題連接。所以我創建了連接1和連接2的設置。我現在的問題是創建連接1 2次,因爲我無法選擇不同的ID:s。

+1

請考慮發佈您希望爲您發佈的輸入示例創建的輸出示例,然後我們可以建議實現該示例的XSLT 2.0方法。如果您希望我們修復已發佈的XSLT,請提供足夠完整的示例來運行您的代碼。目前使用必需的參數'頭部',但沒有應用模板和傳入參數值的示例,很難說出你想要發生什麼。 – 2013-02-25 14:47:21

+0

對不起,標題的格式不正確,但我不能將它作爲代碼添加到我的原始消息或此評論中。

\t \t \t <連接類型= 「數據庫」 ID = 「1」> \t \t \t 192.168.0.100 \t \t \t \t \t \t \t \t \t TEST1 \t \t \t \t <連接類型= 「數據庫」 ID = 「2」> \t \t \t 192.168.0。200 \t \t \t 用戶 \t \t \t \t \t \t test2的 \t \t \t
Andreas 2013-02-25 14:58:41

+1

所以,你要組使用@useconnectionid查詢元素? – 2013-02-25 15:09:42

回答

0

抱歉有關混淆。它按照我的方式工作,但遞歸使它看起來像組沒有工作。

所以問題是,遞歸使它看起來像它打印相同的3次。