Listenelemente mit XSL aus HTML extrahieren

26/05/2009 - 13:15 von tobyboy | Report spam
Hallo,

ich bin versuche aus einem XHTML Dokument via XSL nur gewisse
bestimmte Tags herauszuziehen bzw. anzuzeigen (mit dem Browser). Dazu
habe ich folgenden einfachen XSL file "myxsl.xsl" geschrieben:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/
Transform">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="/">
<xsl:text disable-output-escaping="yes">
Veràndertes Dokument
</xsl:text>
<xsl:for-each select="//li">
<!-- Display List Element -->
<xsl:value-of select="."/>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>

Der HTML file "data.html" sieht so aus:

<?xml version="1.0" encoding="ISO-8859-1"?>
<?xml-stylesheet type="text/xsl" href="myxsl.xsl"?>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de"
dir="ltr">
<body>
<h4>This is a list.</h4>
<ul>
<li>first</li>
<li>second</li>
<li>third</li>
</ul>
</body>
</html>

Leider wird ein leeres Dokument angezeigt. Über Hilfe wàre ich sehr
dankbar.

VG,
Tobi
 

Lesen sie die antworten

#1 Martin Honnen
26/05/2009 - 13:53 | Warnen spam
wrote:

ich bin versuche aus einem XHTML Dokument via XSL nur gewisse
bestimmte Tags herauszuziehen bzw. anzuzeigen (mit dem Browser). Dazu
habe ich folgenden einfachen XSL file "myxsl.xsl" geschrieben:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/
Transform">
<xsl:output method="xml" indent="yes"/>



In Browsern wie IE rate ich dazu, nur method="html" zu verwenden und
dabei sicherzustellen, dass ein HTML-Dokument als Resultat erzeugt wird.
XML in XML zu transformieren, ist sicher generell möglich, aber
innerhalb von IE ist das Resultat nicht gut zu erkennen.


Der HTML file "data.html" sieht so aus:

<?xml version="1.0" encoding="ISO-8859-1"?>
<?xml-stylesheet type="text/xsl" href="myxsl.xsl"?>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de"
dir="ltr">



Du hast ein XHTML-Dokument, bei diesem sind alle Elemente im Namensraum
http://www.w3.org/1999/xhtml.
In deinem XSLT-Stylesheet benötigst du daher
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0"
xmlns:xhtml="http://www.w3.org/1999/xhtml"
exclude-result-prefix="xhtml">

<xsl:template match="/">
<xsl:for-each select="//xhtml:li">
<!-- Display List Element -->
<xsl:value-of select="."/>
</xsl:for-each>
</xsl:template>
d.h. du musst in allen XPath-Ausdrücken und Matchpattern die
Elementnamen mit dem gewàhlten Pràfix "xhtml" qualifizieren.



Martin Honnen MVP XML
http://msmvps.com/blogs/martin_honnen/

Ähnliche fragen