我試圖使用XSLT將html內容轉換爲xml結構,我使用XALAN(CLI)測試了xslt對html的反應,當我對結果滿意時, xslt文件並使用變量(javax.xml.transform.TransformerFactory)從java代碼中使用它,下面是與實際代碼&樣式表類似的測試值。xslt與xalan cli協同工作,但不是來自java代碼
我的HTML樣本數據:
<html><body class='home'>
<div >Welcome !!</div>
<table border='0'><tr><td colspan='2'>asdas</td></tr>
<tr><td class='footer' colspan='2' align='center'>Disclaimer: The information provided below is for informative purpose only and it is not a legal document.</td></tr>
<tr><td colspan='2'>test;</td></tr>
<tr><td class='Home' width='50%' aligh='center'> number:</td><td class='Home' width='50%' aligh='center'>515120</td></tr><tr><td class='Home' width='50%' aligh='center'>Connection :</td><td class='Home' width='50%' aligh='center'>123.23</td></tr><tr><td class='Home'>period (month/year):</td><td class='Home'>04/2012</td></tr><tr><td class='Home'>Date:</td><td class='Home'>APRIL 08,2012, 21:35</td></tr> </table>
</body>
</html>
我XSL唯一模板是:
<xsl:template match="*">
<usage_channel>
<head><xsl:value-of select="//div/text()" /></head>
<body><xsl:value-of select="//td/font/text()" /></body>
<footer><xsl:value-of select="body/table/tr[contains(td,'number')]/td[1]/text()" /></footer>
</usage_channel>
</xsl:template>
結果使用XALAN(CLI):
<?xml version="1.0" encoding="UTF-8"?><usage_channel><head>Welcome !!</head><body/><footer> number:</footer></usage_channel>
結果使用Java transofmer:
<?xml version="1.0" encoding="UTF-8"?>
<usage_channel>
<head>Welcome !!</head>
<body/>
<footer/>
</usage_channel>
我嘗試了所有的組合,希望能夠捕捉td中的值,但是我失敗了,這裏錯過了什麼?
1.您提供的代碼不是「樣式表」 - 它只是一個模板。 2.代碼或XML文檔中不存在'usage_channel' - 這意味着您得到執行轉換結果的語句 - 並不正確!請編輯該問題並使其有意義且不矛盾。我的猜測是你在這兩種情況下使用了不同的(XML-document,XSLT-code)組合,這就解釋了你爲什麼得到兩個不同的結果。 –
感謝您的評論(我編輯了這些值),其實上面的值只是模擬我真實情況的虛擬值。 – user1446584
如果這些是「虛擬值」,這是否意味着您在所描述的兩種情況下從未在所提供的XML文檔上執行提供的轉換?如果是這樣,你怎麼能說出每種情況下的實際結果? –