我需要更改列表标记需要在多个列表元素值
下我的输入xml文件是:
<ul>
<li>list</li>
<li>following list:</li>
<ul>
<li>pain</li>
<li>Changes</li>
</ul>
<li>exam</li>
</ul>
XSL我用过:
<xsl:template match="ul">
<ul>
<xsl:apply-templates/>
</ul>
</xsl:template>
<xsl:template match="ul/li">
<li outputclass="List_Bullet">
<xsl:apply-templates/>
</li>
</xsl:template>
<xsl:template match="ul/ul/li">
<li outputclass="List_Bullet_2">
<xsl:apply-templates/>
</li>
</xsl:template>
输出我得到:
<ul>
<li outputclass="List_Bullet">list</li>
<li outputclass="List_Bullet">following list:</li>
<ul>
<li outputclass="List_Bullet_2">pain</li>
<li outputclass="List_Bullet_2">Changes</li>
</ul>
<li outputclass="List_Bullet">exam</li>
</ul>
预期输出为:
<ul>
<li outputclass="List_Bullet">list</li>
<li outputclass="List_Bullet">following list:
<ul>
<li outputclass="List_Bullet_2">pain</li>
<li outputclass="List_Bullet_2">Changes</li>
</ul></li>
<li outputclass="List_Bullet">exam</li>
</ul>
第一个项目符号列表项需要在第二个项目符号列表的末尾关闭。请建议我编码。提前致谢
答案 0 :(得分:1)
在这种情况下,您必须在模板中使用模式属性进行换行。
你可以试试这个:
<xsl:template match="ul">
<ul>
<xsl:apply-templates/>
</ul>
</xsl:template>
<xsl:template match="ul/li">
<li outputclass="List_Bullet">
<xsl:apply-templates/>
<xsl:apply-templates select="following-sibling::*[1][self::ul]" mode="wrap"/>
</li>
</xsl:template>
<xsl:template match="ul/ul"/>
<xsl:template match="ul" mode="wrap">
<ul>
<xsl:apply-templates mode="wrap"/>
</ul>
</xsl:template>
<xsl:template match="ul/li" mode="wrap">
<li outputclass="List_Bullet_2">
<xsl:apply-templates/>
</li>
</xsl:template>