Nous migrons d'un système de contenu en un autre et nous avons des tonnes de HTML où il existe des lignes, par exemple, comme ceci:
<p style="text-align: justify;"><i>Â </i></p>
4 Réponses :
Dans le cas où le HTML est également un document XML bien formé (cela peut être effectué dans une pré-passe avec un outil tel que html-wardy strong>), cette transformation: lorsqu'il est appliqué sur un tel document XML forte > - Par exemple: p>
Si vous êtes sur une machine UNIX, ce script Python devrait fonctionner:
#!/usr/bin/python
import sys
import os
import subprocess
import tempfile
if len(sys.argv) < 2:
sys.exit("usage: %s HTML_FILE" % sys.argv[0])
stylesheet = '''
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="*[string-length(normalize-space(.)) = 0]"/>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
'''
stylesheet_file = tempfile.NamedTemporaryFile(suffix='.xslt')
stylesheet_file.write(stylesheet)
stylesheet_file.flush()
p = subprocess.Popen("xsltproc --html %s %s" % (stylesheet_file.name, sys.argv[1]),
shell=True, stdout=subprocess.PIPE)
p.wait()
sys.stdout.write(p.stdout.read())
stylesheet_file.close()
Si le fichier HTML n'est pas valide XHTML, je vous suggère d'installer les packages magnifiquesUP4 et LXML et à l'aide du script suivant, qui supprime toutes les étiquettes sans contenu texte, puis lance les lignes vides de la sortie:
<html><head><title>Title</title></head><body> <p class="title"><b>Something</b> here. </p><p style="text-align: justify;">aaa<i> x</i><span>blah</span></p> <p class="txt">Spam, spam, lovely spam.</p> </body></html>
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl"
>
<xsl:output method="xml" indent="yes"/>
<xsl:template match="node()[normalize-space(.)]|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
Hmm. Qu'en est-il des étiquettes structurelles vides? (DIVS pour une utilisation par JavaScript, par exemple)
Je pense que vous aurez besoin d'un analyseur HTML pour cela ...