2011-05-02 72 views
0

示例HTML:如何在使用xsl將html轉換爲文本時轉義特殊字符?

<html> 
<head> 
    <title>My Headline</title> 
    <meta name="targetUrl" value="xyz.html?sym=abc"/> 
    <meta name="summary" value="A & B"/> 
</head> 
    <body> 
     abc abc, pqr, xyz, rst tsd, prrrr, qqqqqqq, oooooo, opop opop, rtrttrt rtrtrtrt 
    </body> 
</html> 

這僅僅是一個樣品HTML和它可以是任何隨機的特殊chracters和我沒有獲得HTMLS。 我嘗試使用以下XSL但它不工作

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:output method="text" indent="no" omit-xml-declaration="yes"/> 
<xsl:strip-space elements="xsl:text"/> 
<xsl:variable name="delimiter" select="'|'"/> 
<xsl:variable name="fieldNames" select="'yes'"/> 
     <xsl:template match="/"> 
       <xsl:if test="$fieldNames = 'yes'"> 
         <xsl:text>title</xsl:text> 
         <xsl:value-of select="$delimiter"/> 
         <xsl:text>targetURL</xsl:text> 
         <xsl:value-of select="$delimiter"/> 
         <xsl:text>summary-r</xsl:text> 
         <xsl:value-of select="$delimiter"/> 
         <xsl:text>body</xsl:text> 
         <xsl:text>&#xA;</xsl:text> 
       </xsl:if> 
       <xsl:value-of select="normalize-space(html/head/title)" disable-output-escaping="yes" /> 
       <xsl:value-of select="$delimiter"/> 
       <xsl:value-of select="html/head/meta[@name='targetURL']/@value" disable-output-escaping="yes" /> 
       <xsl:value-of select="$delimiter"/> 
       <xsl:value-of select="html/head/meta[@name='summary-r']/@value" disable-output-escaping="yes" /> 
       <xsl:value-of select="$delimiter"/> 
       <xsl:value-of select="normalize-space(html/body)" disable-output-escaping="yes" /> 
     </xsl:template> 
</xsl:stylesheet> 

任何幫助表示讚賞。

+0

這與[需要幫助將下面的html轉換爲具有html元標記的csv]不同(http://stackoverflow.com/questions/5807632/need-help-to-convert-following-html-to- csv-with-meta-tags-of-html) – 2011-05-02 19:22:33

+0

@Alejandro我在shell腳本中嘗試這一切因爲我需要將這些htmls遷移到csv並執行一些邏輯,我嘗試使用perl腳本將其轉換爲有效的xml格式,但是還沒有運氣。我的問題是:有沒有一種方法可以通過xsl直接將html/XML轉換爲csv/text來獲取特殊字符? – SMG 2011-05-02 19:40:21

+0

正如我之前寫過的,您的輸入文檔不是一個格式良好的XML文檔(因爲這些字符)。您需要一個HTML解析器,它可以構建DOM,XSLT處理器可以用作輸入樹。因此,您應該問**什麼是HTML解析器**適合您的環境。 – 2011-05-02 20:39:15

回答

0

XSLT僅適用於XML輸入,不適用於HTML。因此,您需要先執行HTML到XML的轉換,然後再進行XSLT轉換。有很多工具可以做到這一點,例如約翰考恩的TagSoup。

相關問題