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>
</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>
任何幫助表示讚賞。
這與[需要幫助將下面的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
@Alejandro我在shell腳本中嘗試這一切因爲我需要將這些htmls遷移到csv並執行一些邏輯,我嘗試使用perl腳本將其轉換爲有效的xml格式,但是還沒有運氣。我的問題是:有沒有一種方法可以通過xsl直接將html/XML轉換爲csv/text來獲取特殊字符? – SMG 2011-05-02 19:40:21
正如我之前寫過的,您的輸入文檔不是一個格式良好的XML文檔(因爲這些字符)。您需要一個HTML解析器,它可以構建DOM,XSLT處理器可以用作輸入樹。因此,您應該問**什麼是HTML解析器**適合您的環境。 – 2011-05-02 20:39:15