![]() |
Daten aus XML mittels XSL anzeigen => funzt nicht...
Hallo Wissende,
ich habe mal wieder eine Frage zu XML. Und zwar habe ich einen Exteren XML-Code erhalten, den ich mittel XSL anzeigen muss. Den Inhalt habe ich jetzt mal testhalber versucht so anzuzeigen, aber es tut sich einfach nichts. Es wird nichts angezeigt. Ist das der falsche Weg??? Hier der XML-Code:
Delphi-Quellcode:
Und hier mein Versuch aus der XSL:
<MatchStats id="MS036" matchid="ATP20070410MS036" seq="134" state="P" tim="2007-04-17T09:10:21Z" msg="2nd serve" score="6/3 3/0" points="30-0" rnd="1" dbl="1" crt="1" nset="3" stype="1" umpire="STEINER" fin="0" nA="D. FERRER" nB="G. SIMON" idA="F401" idB="SD32" cA="ESP" cB="FRA" mt="00:57:26" s1A="6" s1B="3" s2A="3" s2B="0" s3A="" s3B="" s4A="" s4B="" s5A="" s5B="" ballA="" ballB="1" sA="1" sB="0" ptA="30" ptB=" 0" tb1="" tb2="" tb3="" tb4="" tb5=""/>
Delphi-Quellcode:
Ich würde mich wirklich freuen, wenn mir jemand nen Tipp geben könnte, wie ich das lösen kann, oder mir schreibt, was ich da falsch mache.
<?xml version="1.0" encoding="iso-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/"> <html> <head> <link rel="stylesheet" href="index.css" type="text/css" /> </head> <body onselectstart="return false" onDragStart="return false" onDrop="return false"> <xsl:value-of select="matchid" /></p> <xsl:value-of select="msg" /></p> usw. |
Re: Daten aus XML mittels XSL anzeigen => funzt nicht...
Hallo Tom,
du willst auf Attribut-Werte zugreifen - probiere es mal so:
XML-Code:
Freundliche Grüße<xsl:value-of select="@matchid" /> </p> |
Re: Daten aus XML mittels XSL anzeigen => funzt nicht...
Hm, ich weiss, dass das jetzt vielleicht nicht zu erwarten war, aber es geht einfach nicht.
Hier mal zur Sicherheit den gesamten Inhalt der XSL. Wess nicht, ob das hilft, aber ich erhalte zumindest keine Fehlermeldung vom IE. Ich habe noch nicht überall das @ eingefügt. Vielleicht ist das das Problem, aber es wird eben gar kein Inhalt angezeigt.
Delphi-Quellcode:
<?xml version="1.0" encoding="iso-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/"> <html> <head> <link rel="stylesheet" href="index.css" type="text/css" /> </head> <body onselectstart="return false" onDragStart="return false" onDrop="return false"> <xsl:value-of select="@matchid" /></p> <xsl:value-of select="@msg" /></p> <table class="match" cellpadding="0" cellspacing="0" align="center" width="100%"> <tr valign="middle"> <th width="200px" class="left" id="crt"><xsl:value-of select="@crt" /></th> <th width="50px" class="center" id="mt"><xsl:value-of select="@mt" /></th> <th width="50px" class="center">Serv.</th> <th class="center">Game</th> <th class="center">Set1</th> <th class="center">Set2</th> <th class="center">Set3</th> <xsl:if test="@m_max_sets='5'"> <th class="center">Set4</th> <th class="center">Set5</th> </xsl:if> </tr> <tr valign="middle"> <td class="p1" colspan="2" style="text-align:left;padding-left:5px;" id="player_a"> <xsl:value-of select="@nA" /> <xsl:if test="dbl='2'"> <xsl:value-of select="player_a2" /> </xsl:if> </td> <td class="p1" id="serv_a">[img]{ballA}.gif[/img]</td> <td class="p1" id="pts_a"><xsl:value-of select="@ptA" /></td> <td class="p1" id="s1A"><xsl:value-of select="set_1a" /></td> <td class="p1" id="s2A"><xsl:value-of select="set_2a" /></td> <td class="p1" id="s3A"><xsl:value-of select="set_3a" /></td> <xsl:if test="@nset='5'"> <td class="p1" id="s4A"><xsl:value-of select="set_4a" /></td> <td class="p1" id="s5A"><xsl:value-of select="set_5a" /></td> </xsl:if> </tr> <tr valign="middle"> <td class="p2" colspan="2" style="text-align:left;padding-left:5px;" id="player_b"> <xsl:value-of select="nB" /> <xsl:if test="dbl='2'"> <xsl:value-of select="player_b2" /> </xsl:if> </td> <td class="p2" id="serv_b">[img]{ballB}.gif[/img]</td> <td class="p2" id="pts_b"><xsl:value-of select="ptB" /></td> <td class="p2" id="set_1b"><xsl:value-of select="set_1b" /></td> <td class="p2" id="set_2b"><xsl:value-of select="set_2b" /></td> <td class="p2" id="set_3b"><xsl:value-of select="set_3b" /></td> <xsl:if test="nset='5'"> <td class="p2" id="set_4b"><xsl:value-of select="set_4b" /></td> <td class="p2" id="set_5b"><xsl:value-of select="set_5b" /></td> </xsl:if> </tr> </table> <table class="match" cellpadding="0" cellspacing="0" align="center" width="100%"> <tr valign="middle"> <th class="right" height="29" id="playernameA" width="37%">[img]flags/{nA}.gif[/img] <xsl:value-of select="nA" /> <xsl:if test="matchtyp='D'"> <br style="clear:both;" />[img]flags/{nat_a2}.gif[/img]<xsl:value-of select="player_a2" /> </xsl:if> </th> <th class="center" height="29" width="25%">-</th> <th class="left" height="29" id="playernameB" width="38%">[img]flags/{nB}.gif[/img] <xsl:value-of select="nB" /> <xsl:if test="matchtyp='D'"> <br style="clear:both;" />[img]flags/{nat_b2}.gif[/img]<xsl:value-of select="player_b2" /> </xsl:if> </th> </tr> <tr valign="middle"> <td class="players" height="29" align="right" id="sv1aa"><xsl:value-of select="fsA" /> %</td> <td class="players" height="29" align="center">1st serv Percantage</td> <td class="players" height="29" align="left" id="sv1ab"><xsl:value-of select="fsB" /> %</td> </tr> <tr valign="middle"> <td class="players" height="29" align="right" id="psv1aa"><xsl:value-of select="fspA" /> %</td> <td class="players" height="29" align="center">1st serv Points</td> <td class="players" height="29" align="left" id="psv1ab"><xsl:value-of select="fspB" /> %</td> </tr> <tr valign="middle"> <td class="players" height="29" align="right" id="psv2aa"><xsl:value-of select="sspA" /> %</td> <td class="players" height="29" align="center">2nd serv Points</td> <td class="players" height="29" align="left" id="psv2ab"><xsl:value-of select="sspB" /> %</td> </tr> <tr valign="middle"> <td class="players" height="29" align="right" id="asse_a"><xsl:value-of select="aceA" /></td> <td class="players" height="29" align="center">Aces on first serve</td> <td class="players" height="29" align="left" id="asse_b"><xsl:value-of select="aceB" /></td> </tr> <tr valign="middle"> <td class="players" height="29" align="right" id="asse_a"><xsl:value-of select="assA" /></td> <td class="players" height="29" align="center">Aces on second serve</td> <td class="players" height="29" align="left" id="asse_b"><xsl:value-of select="assB" /></td> </tr> <tr valign="middle"> <td class="players" height="29" align="right" id="dbfa"><xsl:value-of select="dfA" /></td> <td class="players" height="29" align="center">Double faults</td> <td class="players" height="29" align="left" id="dbfa"><xsl:value-of select="dfB" /></td> </tr> <tr valign="middle"> <td class="players" height="30" align="right" id="ptsa"><xsl:value-of select="tpA" /></td> <td class="players" height="30" align="center">Points total</td> <td class="players" height="30" align="left" id="ptsb"><xsl:value-of select="tpB" /></td> </tr> <tr valign="middle"> <td class="players" height="29" align="right" id="bpA"><xsl:value-of select="bpaa" /> / <xsl:value-of select="bpeffa" /> %</td> <td class="players" height="29" align="center">Breakballs</td> <td class="players" height="29" align="left" id="bpB"><xsl:value-of select="bpab" /> / <xsl:value-of select="bpeffb" /> %</td> </tr> </table> <table class="match" cellpadding="0" cellspacing="0" align="center" width="100%" height="35"> <tr valign="middle"> <td class="umpire">Chair Umpire: <xsl:value-of select="r_fname" /><xsl:value-of select="umpire" /> [<xsl:value-of select="r_nat" />] </td> </tr> </table> <table class="match" cellpadding="0" cellspacing="0" align="center" width="100%" height="35"> <tr valign="middle"> <th class="center" id="tag" width="50%"><xsl:value-of select="date" /></th> <th class="center" id="start" width="50%"><xsl:value-of select="round" /></th> </tr> </table> </body> </html> </xsl:template> </xsl:stylesheet> |
Re: Daten aus XML mittels XSL anzeigen => funzt nicht...
Boah, ist das ein Durcheinander. Kannst du nicht lieber mal XML und XSL als Dateien anhängen?
|
Re: Daten aus XML mittels XSL anzeigen => funzt nicht...
Ich werden den Code jetzt einfach mal komplett einkürzen, um die Disfunktionalität aufzuzeigen. Das ist für alle einfacher und erfordert dann auch keinen Download.
XML-Inhalt
Delphi-Quellcode:
XSL-Inhalt
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="ls.xsl" ?> <?xml-stylesheet type="text/css" href="index.css" ?> <MatchStats id="MD030" matchid="ATP20070410MD030" seq="58" state="P" tim="2007-04-17T16:36:12Z" msg="2nd serve" score="3/3" points="0-0" rnd="1" dbl="2" crt="3" nset="3" stype="9" umpire="BERNARDES" fin="0" nA="BHUPATHI / STEPANEK" nB="CLEMENT / LLODRA" idA="B471" idB="C487" idAp="S694" idBp="L428" cA="IND" cB="FRA" cAp="CZE" cBp="FRA" mt="00:20:45" s1A="3" s1B="3" s2A="" s2B="" s3A="" s3B="" s4A="" s4B="" s5A="" s5B="" ballA="" ballB="1" sA="0" sB="0" ptA=" 0" ptB=" 0" tb1="" tb2="" tb3="" tb4="" tb5=""/>
Delphi-Quellcode:
<?xml version="1.0" encoding="iso-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/"> <html> <head> <link rel="stylesheet" href="index.css" type="text/css" /> </head> <body onselectstart="return false" onDragStart="return false" onDrop="return false"> <xsl:value-of select="@matchid" /></p> <xsl:value-of select="@msg" /></p> </body> </html> </xsl:template> </xsl:stylesheet> |
Re: Daten aus XML mittels XSL anzeigen => funzt nicht...
Es funktioniert, wenn du den Slash entfernst
Zitat:
|
Re: Daten aus XML mittels XSL anzeigen => funzt nicht...
Jo das war es. Danke. Auf diese Art und Weise habe ich auch noch keine Daten mit XSL dargestellt. Nun weiss ich wieder etwas mehr. Dank Euch beiden.
|
Re: Daten aus XML mittels XSL anzeigen => funzt nicht...
Hallo,
über das slash pattern wird document root ausgewählt und nicht document element. Üblicherweise wird beim match="/" nur der HTML-Rahmen generiert:
XML-Code:
Da es sich hier aber um kein typisches XML-Dokument handelt, ist auch ein einziges template mit match="/*" oder "MatchStats" (wie Mathias geschrieben hat) okay.
<xsl:template match="/">
<html> <head> <link rel="stylesheet" href="index.css" type="text/css" /> </head> <body onselectstart="return false" onDragStart="return false" onDrop="return false"> <xsl:apply-templates select="*"/> </body> </html> </xsl:template> <xsl:template match="MatchStats"> <xsl:value-of select="@matchid" /></p> <xsl:value-of select="@msg" /></p> </xsl:template> Freundliche Grüße |
Re: Daten aus XML mittels XSL anzeigen => funzt nicht...
Danke für das nochmalige Feedback. Ich bin mir nicht sicher, ob ich diese Frage hier noch stellen darf, aber ich müsste in meiner Applikation auch herausfiltern, welche matchid der eingehende XML-String hat. In dem Falle wäre der Wert der matchid = ATP20070410MD030.
Delphi-Quellcode:
Wie könnte ich das noch lösen? Gibt es da eine einfache Möglichkeit, dass ich diese Attribut-Wert mittels Delphi auslesen kann, um damit intern zu "werkeln"? Ich mache auch nen neuen Thread auf, bzw. werde ich nochmal die Hilfe/Suche dazu bedienen.
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="ls.xsl" ?> <?xml-stylesheet type="text/css" href="index.css" ?> <MatchStats id="MD030" matchid="ATP20070410MD030" seq="58" state="P" tim="2007-04-17T16:36:12Z" msg="2nd serve" score="3/3" points="0-0" rnd="1" dbl="2" crt="3" nset="3" stype="9" umpire="BERNARDES" fin="0" nA="BHUPATHI / STEPANEK" nB="CLEMENT / LLODRA" idA="B471" idB="C487" idAp="S694" idBp="L428" cA="IND" cB="FRA" cAp="CZE" cBp="FRA" mt="00:20:45" s1A="3" s1B="3" s2A="" s2B="" s3A="" s3B="" s4A="" s4B="" s5A="" s5B="" ballA="" ballB="1" sA="0" sB="0" ptA=" 0" ptB=" 0" tb1="" tb2="" tb3="" tb4="" tb5=""/> |
Re: Daten aus XML mittels XSL anzeigen => funzt nicht...
Hallo Tom,
versuche es so:
Delphi-Quellcode:
Freundliche Grüße
uses
MSXML2, Variants; var s: string; begin s := VarToStr(doc.documentElement.getAttribute('matchid')); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:06 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz