Как избежать специальных символов при преобразовании HTML в текст с использованием XSL? - PullRequest
0 голосов
/ 02 мая 2011

Пример 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, и это могут быть любые случайные специальные символы, и у меня нет доступа к 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>

Любая помощь приветствуется.

1 Ответ

0 голосов
/ 03 мая 2011

XSLT будет работать только с вводом XML, а не с HTML.Поэтому вам нужно начать с преобразования HTML в XML, прежде чем выполнять преобразование XSLT.Для этого есть множество инструментов, например, TagSoup Джона Кована.

...