HTML-Elemente im XML-Code
Rondra
- xml
0 MudGuard0 Thomas Meinike0 MudGuard
Hallo !
folgendes Problem: ich möchte den Inhalt eines XMLS durch XSL in HTML umwandeln und dabei Wörter "highlighten", die im XML gekennzeichnet sind. Hier mein XML-Ausschnitt:
<FELDER>
<FELD>Das ist ein <rot>Text</rot>.</FELD>
<FELD>Der nächste <rot>ebenfalls</rot>.</FELD>
</FELDER>
und hier mein XSL-ausschnitt:
<xsl:for-each select="FELDER/FELD">
<pre>
<xsl:value-of select="text()"/>
</pre>
</xsl:for-each>
Ich MUSS leider PRE-tags verwenden.
Und jetzt möchte ich das mit "<rot>" gekennzeichnete Wort im XML erkennen und meine XSL so anpassen, dass es nachher im HTML output dementsprechend rot angezeigt wird. Der HTML-code sollte so aussehen:
--------------------------
<style>
.rot {color: red;}
</style>
Das ist ein <font class="rot">Text</font>.
---------------------------
Wie muss meine XML aussehen, damit ich in der XSL das so hinkriege? Mit
<FELDER>
<FELD>Das ist ein <![CDATA[<rot>Text</rot>]]>.</FELD>
<FELD>Der nächste <![CDATA[<rot>ebenfalls</rot>]]>.</FELD>
</FELDER>
gehts nicht, die Tags werden nicht erkannt; dann steht nachher im Browser das hier: <rot>Text</rot>
Ich hoffe das war einigermassen verständlich...
Vielen DANK im Voraus !!
liebe Grüsse
Rondra
Hi,
Hallo !
folgendes Problem: ich möchte den Inhalt eines XMLS durch XSL in HTML umwandeln und dabei Wörter "highlighten", die im XML gekennzeichnet sind. Hier mein XML-Ausschnitt:
<FELDER>
<FELD>Das ist ein <rot>Text</rot>.</FELD>
<FELD>Der nächste <rot>ebenfalls</rot>.</FELD>
</FELDER>und hier mein XSL-ausschnitt:
<xsl:for-each select="FELDER/FELD">
<pre>
<xsl:value-of select="text()"/>
statt des value-of hätt ich jetzt hier ein apply-templates select="." gemacht.
Und dann noch ein Template für das rot-Element, das ein <span class="rot"> samt Inhalt und </span> ausgibt.
</pre>
</xsl:for-each>
<style>
aber bitte mit type-Attribut.
.rot {color: red;}
</style>
Das ist ein <font class="rot">Text</font>.
font ist deprecated.
<FELD>Das ist ein <![CDATA[<rot>Text</rot>]]>.</FELD>
gehts nicht, die Tags werden nicht erkannt; dann steht nachher im Browser das hier: <rot>Text</rot>
Wie auch, Du sagst ja extra, daß jetzt keine Tags kommen.
cu,
Andreas
Hallo,
folgendes Problem: ich möchte den Inhalt eines XMLS durch XSL in HTML umwandeln und dabei Wörter "highlighten", die im XML gekennzeichnet sind. Hier mein XML-Ausschnitt:
<FELDER>
<FELD>Das ist ein <rot>Text</rot>.</FELD>
<FELD>Der nächste <rot>ebenfalls</rot>.</FELD>
</FELDER>und hier mein XSL-ausschnitt:
<xsl:for-each select="FELDER/FELD">
<pre>
<xsl:value-of select="text()"/>
</pre>
</xsl:for-each>
Probiere es so (ohne xsl:for-each-Konstrukt):
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output
method="html"
doctype-public="-//W3C//DTD HTML 4.01 Transitional//EN"
doctype-system="http://www.w3.org/TR/html401/loose.dtd"
encoding="ISO-8859-1"
version="4.01"
indent="yes"
/>
<xsl:template match="/">
<html>
<head>
<title>Test by TM 01/04</title>
<style type="text/css">
.rot
{
color: #F00;
background-color: #FFF;
}
</style>
</head>
<body>
xsl:apply-templates/
</body>
</html>
</xsl:template>
<xsl:template match="FELDER">
xsl:apply-templates/
</xsl:template>
<xsl:template match="FELD">
<pre>
xsl:apply-templates/
</pre>
</xsl:template>
<xsl:template match="text()">
<xsl:value-of select="."/>
</xsl:template>
<xsl:template match="rot">
<span class="rot"><xsl:value-of select="."/></span>
</xsl:template>
</xsl:stylesheet>
MfG, Thomas
Hi,
Probiere es so (ohne xsl:for-each-Konstrukt):
Hehe, bin ich ja doch nicht der einzige, der for-each zu vermeiden versucht...
cu,
Andreas