【发布时间】:2022-01-05 20:11:46
【问题描述】:
我有以下 XML
<Data>
<Employee>
<Name>
<FirstName>John</FirstName>
<LastName>Snow</LastName>
</Name>
<DOB>1990-01-01</DOB>
<Passport>
<Country>United Kingdom</Country>
<ID>12345678</ID>
</Passport>
<Passport>
<Country>United States of America</Country>
<ID>789101112</ID>
</Passport>
</Employee>
</Data>
我正在转换它,如下所示:
<xsl:for-each select="Data/Employee">
<xsl:value-of select="Name/FirstName"/>
<xsl:text>,</xsl:text>
<xsl:value-of select="Name/LastName"/>
<xsl:text>,</xsl:text>
<xsl:for-each select="Passport">
<xsl:value-of select="Country"/>
<xsl:text>,</xsl:text>
<xsl:value-of select="ID"/>
<xsl:text>
</xsl:text>
</xsl:for-each>
<xsl:text>,</xsl:text>
<xsl:value-of select="DOB"/>
</xsl:for-each>
我得到的输出是:
John,Snow,United Kingdom,12345678
United States of America,789101112
,1990-01-01
但我要求将护照信息填写在彼此下方,然后将出生日期显示在顶行,如下所示:
John,Snow,United Kingdom,12345678,1990-01-01
,,United States of America,789101112
任何帮助将不胜感激
【问题讨论】:
-
您确定这是您想要的结果吗?我本来希望每个护照都有一个名称和 DOB 值重复的“平面”文件。
-
另外,您的处理器支持哪个版本的 XSLT?
-
不,我不想在每一行上复制相同的信息。我希望顶行保存整个数据记录,而下面的行仅保存其他护照信息。
-
支持 XSLT 3.0