在excel中导出XML Feed时,<IMAGES>
重复元素的格式错误。请帮助您了解如何获得正确的输出。
错误的XML输出
<DATA>
<CODE>1</CODE>
<IMAGES>
<IMAGE>1</IMAGE>
</IMAGES>
</DATA>
<DATA>
<CODE>1</CODE>
<IMAGES>
<IMAGE>2</IMAGE>
</IMAGES>
</DATA>
更正XML输出
<DATA>
<CODE>
<IMAGES>
<IMAGE>1</IMAGE>
<IMAGE>2</IMAGE>
</IMAGES>
</CODE>
</DATA>
非常感谢你的帮助。
答案 0 :(得分:0)
对于 XSLT 2.0 ,您可以使用 for-each-group
<xsl:template match="root">
<xsl:for-each-group select="DATA" group-by="CODE">
<DATA>
<CODE><xsl:value-of select="CODE"/></CODE>
<IMAGES>
<xsl:copy-of select="current-group()//IMAGE"></xsl:copy-of>
</IMAGES>
</DATA>
</xsl:for-each-group>
</xsl:template>
对于 XSLT 1.0 ,您可以使用 Muenchian方法
<xsl:key name="datakey" match="DATA" use="CODE"/>
<xsl:template match="root">
<xsl:for-each select="DATA[generate-id(.) = generate-id(key('datakey', CODE))]">
<DATA>
<CODE><xsl:value-of select="CODE"/></CODE>
<IMAGES>
<xsl:for-each select="//IMAGES[../CODE = current()/CODE]">
<xsl:copy-of select="IMAGE"></xsl:copy-of>
</xsl:for-each>
</IMAGES>
</DATA>
</xsl:for-each>
</xsl:template>
这两个脚本都转换为输出
<DATA>
<CODE>1</CODE>
<IMAGES>
<IMAGE>1</IMAGE>
<IMAGE>2</IMAGE>
</IMAGES>
</DATA>