XSLT是一个很好的解决方案,可以按元素名称将XML文档分成几组吗?例如,如果我的文档是:
<mydocument>
<items>
<item>one</item>
<item>two</item>
<item>three</item>
<item>four</item>
</items>
</mydocument>
我想把它分成3组或更少的组:
<mydocument>
<items page="1">
<item>one</item>
<item>two</item>
<item>three</item>
</items>
<items page="2">
<item>four</item>
</items>
</mydocument>
有人可以为我提供XSLT方法,甚至更好的例子。
答案 0 :(得分:2)
此转化:
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
>
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:variable name="vSetSize" select="3"/>
<xsl:template match="/*/*">
<mydocument>
<xsl:for-each select=
"item[position() mod $vSetSize = 1]">
<items page="{position()}">
<xsl:copy-of select=
". | following-sibling::*
[not(position() >= $vSetSize)]"/>
</items>
</xsl:for-each>
</mydocument>
</xsl:template>
</xsl:stylesheet>
应用于提供的XML文档时,生成所需结果:
<mydocument>
<items page="1">
<item>one</item>
<item>two</item>
<item>three</item>
</items>
<items page="2">
<item>four</item>
</items>
</mydocument>