Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xml XSLT样式表让我抓狂_Xml_Xslt_Xpath - Fatal编程技术网

Xml XSLT样式表让我抓狂

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

我有一段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</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文件时出现的顺序显示的。也许我不明白如何将输出表示为代码。请想出一个描述您的问题的标题。“让我发疯”对任何人都没有用,无论是现在还是将来。