Xml XSLT样式表让我抓狂
我有一段XML代码:Xml XSLT样式表让我抓狂,xml,xslt,xpath,Xml,Xslt,Xpath,我有一段XML代码: <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&l
<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>
克利夫兰
040213
20010218
19991026
1111
托马斯,托马斯
166666666666
克利夫兰
040213
20010218
19991026
1111
托马斯,托马斯
166666666666
安德森,卡尔
177777777777
克拉克森,克拉克
188888888888
约翰·约翰逊
199999999999
为了呈现这一点,我使用这段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
安静
嘘
闭嘴,给我信号
闭嘴
嘘,汤姆
让你安静下来
闭嘴!闭嘴!闭嘴
闭嘴,给我信号
闭嘴
嘘,汤姆
让你安静下来
闭嘴!闭嘴!闭嘴
OmfattasRegister
OmfattasRegister
嘘
闭嘴,给我信号
闭嘴
嘘,汤姆
让你安静下来
闭嘴!闭嘴!闭嘴
闭嘴,给我信号
闭嘴
嘘,汤姆
让你安静下来
闭嘴!闭嘴!闭嘴
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
奥姆法塔斯
奥姆法塔斯
奥姆法塔斯
奥姆法塔斯
问题似乎是两个标记“OmfattasRegister”都被读取,而不是首先循环到“OmfattasRegister”的第一个实例中,以获得那里唯一的“Omfattas”,然后继续到下一个“Hushåll”,以便可以呈现下一个“OmfattasRegister”以获得那里的4个“Omfattas”。相反,“OmfattasRegister”被复制两次
我做错了什么
非常感谢你的努力
/保罗声明:
<xsl:for-each select="//Gallringsundantag_i_Procapita/Person/HushållRegister/Hushåll/OmfattasRegister">
处理所有“OmfattasRegister”节点,无论它们在层次结构中的何处
如果将其替换为:
<xsl:for-each select="OmfattasRegister">
它将只处理作为当前静默节点的子节点的“OmfattasRegister”节点 请让我们更容易理解,(1)用文字解释您希望在转换中应用的逻辑,(b)将预期输出显示为代码。将示例最小化到只演示问题所需的程度也是值得赞赏的-请参见:.Michael,表行是按照使用样式表呈现XML文件时出现的顺序显示的。也许我不明白如何将输出表示为代码。请想出一个描述您的问题的标题。“让我发疯”对任何人都没有用,无论是现在还是将来。