2017-04-12 33 views
0

我在這段XML代碼:XSLT樣式錶快把我逼瘋了

<HushållRegister> 
<Hushåll> 
<Hushåll_UpdSignatur>cleveland</Hushåll_UpdSignatur> 
<Hushåll_UpdDatum>040213</Hushåll_UpdDatum> 
<Hushåll_Tom>20010218</Hushåll_Tom> 
<Hushåll_From>19991026</Hushåll_From> 
<Hushåll_HushållNr>1111</Hushåll_HushållNr> 
<OmfattasRegister> 
<Omfattas> 
<Omfattas_Namn>Tomason, Tomas</Omfattas_Namn> 
<Omfattas_Personnummer>166666666666</Omfattas_Personnummer> 
</Omfattas> 
</OmfattasRegister> 
</Hushåll> 
<Hushåll> 
<Hushåll_UpdSignatur>cleveland</Hushåll_UpdSignatur> 
<Hushåll_UpdDatum>040213</Hushåll_UpdDatum> 
<Hushåll_Tom>20010218</Hushåll_Tom> 
<Hushåll_From>19991026</Hushåll_From> 
<Hushåll_HushållNr>1111</Hushåll_HushållNr> 
<OmfattasRegister> 
<Omfattas> 
<Omfattas_Namn>Tomason, Tomas</Omfattas_Namn> 
<Omfattas_Personnummer>166666666666</Omfattas_Personnummer> 
</Omfattas> 
<Omfattas> 
<Omfattas_Namn>Anderson, Carl</Omfattas_Namn> 
<Omfattas_Personnummer>177777777777</Omfattas_Personnummer> 
</Omfattas> 
<Omfattas> 
<Omfattas_Namn>Clarkson, Clark</Omfattas_Namn> 
<Omfattas_Personnummer>188888888888</Omfattas_Personnummer> 
</Omfattas> 
<Omfattas> 
<Omfattas_Namn>Johnson, John</Omfattas_Namn> 
<Omfattas_Personnummer>199999999999</Omfattas_Personnummer> 
</Omfattas> 
</OmfattasRegister> 
</Hushåll> 
</HushållRegister> 

爲了使這個我用這塊XSL代碼:

<xsl:for-each select="//Gallringsundantag_i_Procapita/Person/*[name() = 'HushållRegister']"> 
    <tr bgcolor="#ADD8E6"> 
    <td><xsl:value-of select="local-name()" /></td> 
    </tr> 
    </xsl:for-each> 
    <xsl:for-each select="//Gallringsundantag_i_Procapita/Person/HushållRegister/*"> 
    <tr bgcolor="#E0FFFF"> 
    <td><xsl:value-of select="local-name()" /></td> 
    </tr> 

    <xsl:for-each select="//Gallringsundantag_i_Procapita/Person/HushållRegister/Hushåll/*[not(self::OmfattasRegister)]"> 

    <tr> 
    <td><xsl:value-of select="local-name()" /></td> 

    </tr> 
    </xsl:for-each> 
    <xsl:for-each select="//Gallringsundantag_i_Procapita/Person/HushållRegister/Hushåll/OmfattasRegister"> 

    <tr bgcolor="#ADD8E6"> 
    <td><xsl:value-of select="local-name()" /></td> 
    </tr> 

    </xsl:for-each> 
    </xsl:for-each> 

這給了我以下在HTML表格行:

 
HushållRegister 
Hushåll 
Hushåll_UpdSignatur 
Hushåll_UpdDatum 
Hushåll_Tom 
Hushåll_From 
Hushåll_HushållNr 
Hushåll_UpdSignatur 
Hushåll_UpdDatum 
Hushåll_Tom 
Hushåll_From 
Hushåll_HushållNr 
OmfattasRegister 
OmfattasRegister 
Hushåll 
Hushåll_UpdSignatur 
Hushåll_UpdDatum 
Hushåll_Tom 
Hushåll_From 
Hushåll_HushållNr 
Hushåll_UpdSignatur 
Hushåll_UpdDatum 
Hushåll_Tom 
Hushåll_From 
Hushåll_HushållNr 
OmfattasRegister 
OmfattasRegister 

不過,我正在尋找根據XML的內容是這樣的:

 
HushållRegister 
Hushåll 
Hushåll_UpdSignatur 
Hushåll_UpdDatum 
Hushåll_Tom 
Hushåll_From 
Hushåll_HushållNr 
Hushåll_UpdSignatur 
Hushåll_UpdDatum 
Hushåll_Tom 
Hushåll_From 
Hushåll_HushållNr 
OmfattasRegister 
Omfattas 
Hushåll 
Hushåll_UpdSignatur 
Hushåll_UpdDatum 
Hushåll_Tom 
Hushåll_From 
Hushåll_HushållNr 
Hushåll_UpdSignatur 
Hushåll_UpdDatum 
Hushåll_Tom 
Hushåll_From 
Hushåll_HushållNr 
OmfattasRegister 
Omfattas 
Omfattas 
Omfattas 
Omfattas 

這個問題似乎是兩個標籤「OmfattasRegister」被讀取,而不是第一循環中的「OmfattasRegister」一審獲得唯一的「Omfattas」那裏,然後移動到下一個「Hushåll 「以便下一個」OmfattasRegister「可以呈現在那裏以獲得4」Omfattas「。相反,「OmfattasRegister」重複兩次。

我在這裏做錯了什麼?

非常感謝您的努力。

/保羅

+0

請讓我們變得容易,並且(1)用語言解釋您想要在轉換中應用的邏輯,以及(b)將期望的輸出**顯示爲代碼**。將示例最小化爲僅用於展示問題所需的內容也值得讚賞 - 請參閱:[mcve]。 –

+0

Michael,表格行按照它們在使用樣式表呈現XML文件時出現的順序呈現。也許我不明白如何將輸出呈現爲代碼。 –

+0

請考慮描述您的問題的標題。 「讓我瘋狂」對任何人都是無益的,無論是現在還是未來。 – Tomalak

回答

0

聲明:

<xsl:for-each select="//Gallringsundantag_i_Procapita/Person/HushållRegister/Hushåll/OmfattasRegister"> 

處理所有 'OmfattasRegister' 節點,無論在哪裏層次結構中的他們。

如果用它代替:

<xsl:for-each select="OmfattasRegister"> 

它將處理是當前的Hushåll節點的孩子只有「OmfattasRegister」節點。