Xml 需要使用XSL更改列表元素标记
我需要更改列表标记,它需要位于多个列表元素值之下 我的输入xml文件是:Xml 需要使用XSL更改列表元素标记,xml,xslt,xslt-2.0,Xml,Xslt,Xslt 2.0,我需要更改列表标记,它需要位于多个列表元素值之下 我的输入xml文件是: <ul> <li>list</li> <li>following list:</li> <ul> <li>pain</li> <li>Changes</li> </ul> <li>exam</li> </ul> 我将XSL用作: <xsl:te
<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>
输出Im获取为:
<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>
第一个项目符号列表项需要在第二个项目符号列表的末尾关闭。请告诉我编码。在此情况下,您必须使用模板中的模式属性进行包装 您可以尝试以下方法:
<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>