2012-03-20 39 views
1

我有可依使用類型e.g將HTML轉換排序列表XML

<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標記的HTML有序列表。

<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> 

我可以把匹配模板,李,輕鬆地獲得文本,但如何根據類型屬性...即A,B,C .... I,II,III,IV,並獲得編號等等...任何幫助將不勝感激。

回答

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> 
+0

謝謝Dev,它工作得很好。 – atif 2012-03-20 18:09:12

+0

@atif - 你非常歡迎。 +1是一個很好的問題。 – 2012-03-20 18:19:19