我有这样的xml,
<doc>
<list list-type="alpha-lower">
<list-item>
<label>a)</label>
<p>text1</p>
<list list-type="order">
<list-item>
<label>1)</label>
<p>text2</p>
</list-item>
<list-item>
<label>2)</label>
<p>text3</p>
</list-item>
<list-item>
<label>3)</label>
<p>text4</p>
</list-item>
</list>
</list-item>
<list-item>
<label>b)</label>
<p>text5</p>
<list list-type="order">
<list-item>
<label>1)</label>
<p>text6</p>
</list-item>
<list-item>
<label>2)</label>
<p>text7</p>
</list-item>
<list-item>
<label>3)</label>
<p>text8</p>
</list-item>
</list>
</list-item>
</list>
</doc>
这里存在嵌套列表,我需要将嵌套列表与父列表分开。
这是我的预期输出。
<doc>
<list list-type="alpha-lower">
<list-item>
<label>a)</label>
<p>text1</p>
</list-item>
</list>
<list list-type="order">
<list-item>
<label>1)</label>
<p>text2</p>
</list-item>
<list-item>
<label>2)</label>
<p>text3</p>
</list-item>
<list-item>
<label>3)</label>
<p>text4</p>
</list-item>
</list>
<list list-type="alpha-lower">
<list-item>
<label>b)</label>
<p>text5</p>
</list-item>
</list>
<list list-type="order">
<list-item>
<label>1)</label>
<p>text6</p>
</list-item>
<list-item>
<label>2)</label>
<p>text7</p>
</list-item>
<list-item>
<label>3)</label>
<p>text8</p>
</list-item>
</list>
</doc>
我正在使用XSLT 2.0来完成这项任务,我尝试对每个组使用XSLT,但没有找到解决方案。
这是我试过的,
<xsl:template match="list[descendant::list]">
<xsl:for-each-group select="*" group-by="list">
<list list-type="{current()/@list-type}">
<xsl:apply-templates select="current-group()"/>
</list>
</xsl:for-each-group>
</xsl:template>
有人能给我建议一种从XSLT执行此操作的方法吗?