Hallo Leute,
ich habe folgendes Problem. Ich soll den Plain-Text aus einem HTML document extrahieren. Leider schaffe ich es aus irgendeinem Grund nicht. Für mich ist es wichtig nach Elementen wie z.B. p, br, hr usw eine new line zu hinzufügen. Tabellen, Bilder, Links sind nicht wichtig. Hier ist meine XSLT-Script die ich geschrieben habe - leider funktioniert nicht.
<code>
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xslutput method="text" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:template match="/">
<xsl:apply-templates select="html/body"/>
</xsl:template>
<xsl:template match="html/body">
<xsl:for-each select="child::*">
<xsl:element name="{name()}">
<xsl:choose>
<xsl:when test="name()='p'"><xsl:value-of select="concat(.,'
')"/></xsl:when>
<xsl:when test="name()='br'"><xsl:value-of select="concat(.,'
')"/></xsl:when>
<xsl:when test="name()='hr'"><xsl:value-of select="concat(.,'

')"/></xsl:when>
<xsl:when test="name()='div'"><xsl:value-of select="concat(.,'
')"/></xsl:when>
<xsl:when test="name()='h3'"><xsl:value-of select="concat('
',.,'

')"/></xsl:when>
<xsltherwise><xsl:value-of select="."/></xsltherwise>
</xsl:choose>
<!--xsl:value-of select="."/-->
</xsl:element>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
</code>
Das Problem mit dieser Script ist es, dass ich nur den ersten Paragraph bekomme und der Rest des Dokumentes wird ignoriert.
Danke für jede Hilfe,
erno
ich habe folgendes Problem. Ich soll den Plain-Text aus einem HTML document extrahieren. Leider schaffe ich es aus irgendeinem Grund nicht. Für mich ist es wichtig nach Elementen wie z.B. p, br, hr usw eine new line zu hinzufügen. Tabellen, Bilder, Links sind nicht wichtig. Hier ist meine XSLT-Script die ich geschrieben habe - leider funktioniert nicht.
<code>
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xslutput method="text" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:template match="/">
<xsl:apply-templates select="html/body"/>
</xsl:template>
<xsl:template match="html/body">
<xsl:for-each select="child::*">
<xsl:element name="{name()}">
<xsl:choose>
<xsl:when test="name()='p'"><xsl:value-of select="concat(.,'
')"/></xsl:when>
<xsl:when test="name()='br'"><xsl:value-of select="concat(.,'
')"/></xsl:when>
<xsl:when test="name()='hr'"><xsl:value-of select="concat(.,'

')"/></xsl:when>
<xsl:when test="name()='div'"><xsl:value-of select="concat(.,'
')"/></xsl:when>
<xsl:when test="name()='h3'"><xsl:value-of select="concat('
',.,'

')"/></xsl:when>
<xsltherwise><xsl:value-of select="."/></xsltherwise>
</xsl:choose>
<!--xsl:value-of select="."/-->
</xsl:element>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
</code>
Das Problem mit dieser Script ist es, dass ich nur den ersten Paragraph bekomme und der Rest des Dokumentes wird ignoriert.
Danke für jede Hilfe,
erno
Comment