是否可以使用XSLT合并元素.
如果我有以下XML
<data>
<item column="left" value="1" />
<item column="left" value="2" />
<item column="right" value="3" />
<item column="left" value="4" />
<item column="right" value="5" />
<item column="right" value="6" />
<item column="right" value="7" />
<item column="left" value="8" />
<item column="right" value="9" />
<item column="right" value="10" />
</data>
Run Code Online (Sandbox Code Playgroud)
我想要以下输出:
<data>
<item left="1" right="3 />
<item left="2" right="5" />
<item left="4" right="6" />
<item left="8" right="7" />
<item left="" right="9" />
<item left="" right="10" />
</data>
Run Code Online (Sandbox Code Playgroud)
但我绝对不知道是否可以使用XSLT
这种转变:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:template match="data">
<xsl:variable name="vNumLeft" select="count(item[@column='left'])"/>
<data>
<xsl:apply-templates select="*[@column='left']"/>
<xsl:apply-templates select=
"*[@column='right'][position() > $vNumLeft]"/>
</data>
</xsl:template>
<xsl:template match="item[@column='left']">
<xsl:variable name="vPos" select="position()"/>
<item left="{@value}"
right="{../item[@column='right'][$vPos]/@value}" />
</xsl:template>
<xsl:template match="item[@column='right']">
<item left="" right="{@value}" />
</xsl:template>
</xsl:stylesheet>
当应用于提供的XML文档时:
<data>
<item column="left" value="1" />
<item column="left" value="2" />
<item column="right" value="3" />
<item column="left" value="4" />
<item column="right" value="5" />
<item column="right" value="6" />
<item column="right" value="7" />
<item column="left" value="8" />
<item column="right" value="9" />
<item column="right" value="10" />
</data>
产生想要的结果:
<data> <item left="1" right="3"/> <item left="2" right="5"/> <item left="4" right="6"/> <item left="8" right="7"/> <item left="" right="9"/> <item left="" right="10"/> </data>
| 归档时间: |
|
| 查看次数: |
3636 次 |
| 最近记录: |