我有一个不同类型的html有序列表,例如
<ol type=a>
<li>This is list item a</li>
<li>this is list item b</li>
</ol>
<ol type=i>
<li>This is list item 1</li>
<li>this is list item 2</li>
</ol>
我想知道我们是否可以将它们转换为下面提到的xml标记。
<xml>
<orderlist>
<li>
<num>a</num>
<text>This is list item a</text>
</li>
<li>
<num>b</num>
<text>This is list item b</text>
</li>
</orderlist>
</xml>
<xml>
<orderlist>
<li>
<num>i</num>
<text>This is list item 1</text>
</li>
<li>
<num>ii</num>
<text>This is list item 2</text>
</li>
</orderlist>
</xml>
我可以为LI添加匹配模板并轻松获取文本,但如何根据类型属性获取编号...即a,b,c .... i,ii,iii,iv等等。 。 任何帮助将不胜感激。
答案 0 :(得分:2)
如果你的HTML是格式良好的XML,是的:
XML输入
<foo>
<ol type="a">
<li>This is list item a</li>
<li>this is list item b</li>
</ol>
<ol type="i">
<li>This is list item 1</li>
<li>this is list item 2</li>
</ol>
</foo>
XSLT 1.0
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates/>
</xsl:copy>
</xsl:template>
<xsl:template match="ol">
<orderedlist>
<xsl:apply-templates select="node()|@*"/>
</orderedlist>
</xsl:template>
<xsl:template match="li">
<li>
<num><xsl:number format="{../@type}"/></num>
<text><xsl:apply-templates/></text>
</li>
</xsl:template>
</xsl:stylesheet>
XML输出
<foo>
<orderedlist>
<li>
<num>a</num>
<text>This is list item a</text>
</li>
<li>
<num>b</num>
<text>this is list item b</text>
</li>
</orderedlist>
<orderedlist>
<li>
<num>i</num>
<text>This is list item 1</text>
</li>
<li>
<num>ii</num>
<text>this is list item 2</text>
</li>
</orderedlist>
</foo>