Xslt 2.0 如何在XSLT中实现嵌套列表?
我想为每个Xslt 2.0 如何在XSLT中实现嵌套列表?,xslt-2.0,Xslt 2.0,我想为每个元素添加标记,但当它是一个嵌套列表时有一种特殊情况。如果存在后代标记,则必须在该标记之前关闭此添加。虽然发生了,但我无法删除测试标记部分重复 请帮忙 输入: <a> <ol> <li> <s>test tag</s><br/> <ol> <li>list item1</li>
元素添加
标记,但当它是一个嵌套列表时有一种特殊情况。如果存在后代
标记,则必须在该
标记之前关闭此添加
。虽然发生了,但我无法删除测试标记
部分重复
请帮忙
输入:
<a>
<ol>
<li>
<s>test tag</s><br/>
<ol>
<li>list item1</li>
<li>list item2</li>
<li>list item3</li>
</ol>
</li>
</ol>
</a>
测试标签
清单项目1
清单项目2
清单项目3
预期产出:
<a>
<ol>
<li>
<p><s>test tag</s><br/></p>
<ol>
<p><li>list item1</li></p>
<p><li>list item1</li></p>
<p><li>list item1</li></p>
</ol>
</li>
</ol>
</a>
测试标签
列出项目1
列出项目1
列出项目1
XSLT代码:
<xsl:template match="ol">
<ol>
<xsl:apply-templates/>
</ol>
</xsl:template>
<xsl:template match="li[not(descendant::ol)]">
<li>
<p>
<xsl:apply-templates/>
</p>
</li>
</xsl:template>
<xsl:template match="li[descendant::ol]">
<li>
<p>
<xsl:apply-templates select="node()[parent::li][following-sibling::ol]"/>
</p>
</li>
<xsl:apply-templates select=""/>
</xsl:template>
<xsl:template match="node()[parent::li][following-sibling::ol]"/>
如果没有子体ol
,则所需的输出在每个li外都有一个p元素,而样式表在每个ol内都有一个p元素。我不知道你到底想要哪个,但我想你知道如何修复它
如果存在子体
ol
,您只给出了一个可能的示例来说明您想要的内容,而一个示例并不构成规范。但是,对于该示例,以下方法可行:
<xsl:template match="li[ol]">
<li>
<p>
<xsl:apply-templates select="node()[not(self::ol)]"/>
</p>
<xsl:apply-templates select="ol"/>
</li>
</xsl:template>
如果这不能解决一般情况下的问题,那是因为您没有说明一般情况下需要什么。您的预期输出具有“ol”作为“ol”的子级。你为什么要这样做?每个
ol
的子级,您所需的输出现在具有p
。除非您解释为什么要生成无效的HTML,否则我不会帮助您生成无效的HTML。@MichaelKay这不是一个实际的HTML页面。这是一个xml页面。唯一的概念是列表。因此我使用