AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein XML Delphi Daten aus XML mittels XSL anzeigen => funzt nicht...
Thema durchsuchen
Ansicht
Themen-Optionen

Daten aus XML mittels XSL anzeigen => funzt nicht...

Ein Thema von torud · begonnen am 17. Apr 2007 · letzter Beitrag vom 18. Apr 2007
Antwort Antwort
Seite 1 von 2  1 2      
torud

Registriert seit: 26. Jul 2002
Ort: Sachsen
1.198 Beiträge
 
Delphi XE5 Professional
 
#1

Daten aus XML mittels XSL anzeigen => funzt nicht...

  Alt 17. Apr 2007, 11:15
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:
<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=""/> Und hier mein Versuch aus der XSL:
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>
  usw.
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.
Danke
Tom
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#2

Re: Daten aus XML mittels XSL anzeigen => funzt nicht...

  Alt 17. Apr 2007, 11:31
Hallo Tom,

du willst auf Attribut-Werte zugreifen - probiere es mal so:

XML-Code:


 <xsl:value-of select="@matchid" /> </p>
Freundliche Grüße
  Mit Zitat antworten Zitat
torud

Registriert seit: 26. Jul 2002
Ort: Sachsen
1.198 Beiträge
 
Delphi XE5 Professional
 
#3

Re: Daten aus XML mittels XSL anzeigen => funzt nicht...

  Alt 17. Apr 2007, 18:27
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>
Danke
Tom
  Mit Zitat antworten Zitat
MathiasSimmack
(Gast)

n/a Beiträge
 
#4

Re: Daten aus XML mittels XSL anzeigen => funzt nicht...

  Alt 17. Apr 2007, 18:30
Boah, ist das ein Durcheinander. Kannst du nicht lieber mal XML und XSL als Dateien anhängen?
  Mit Zitat antworten Zitat
torud

Registriert seit: 26. Jul 2002
Ort: Sachsen
1.198 Beiträge
 
Delphi XE5 Professional
 
#5

Re: Daten aus XML mittels XSL anzeigen => funzt nicht...

  Alt 17. Apr 2007, 18:34
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:
<?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=""/>
XSL-Inhalt
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>
Danke
Tom
  Mit Zitat antworten Zitat
MathiasSimmack
(Gast)

n/a Beiträge
 
#6

Re: Daten aus XML mittels XSL anzeigen => funzt nicht...

  Alt 17. Apr 2007, 20:46
Es funktioniert, wenn du den Slash entfernst
Zitat von torud:
XML-Code:
<?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="/">
  
</xsl:template>
</xsl:stylesheet>
und stattdessen den Knotennamen MatchStats einträgst. Frag mich aber nicht nach dem Grund. Der Slash sollte normalerweise auch funktionieren.
  Mit Zitat antworten Zitat
torud

Registriert seit: 26. Jul 2002
Ort: Sachsen
1.198 Beiträge
 
Delphi XE5 Professional
 
#7

Re: Daten aus XML mittels XSL anzeigen => funzt nicht...

  Alt 18. Apr 2007, 07:21
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.
Danke
Tom
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#8

Re: Daten aus XML mittels XSL anzeigen => funzt nicht...

  Alt 18. Apr 2007, 07:33
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:
<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>
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.

Freundliche Grüße
  Mit Zitat antworten Zitat
torud

Registriert seit: 26. Jul 2002
Ort: Sachsen
1.198 Beiträge
 
Delphi XE5 Professional
 
#9

Re: Daten aus XML mittels XSL anzeigen => funzt nicht...

  Alt 18. Apr 2007, 11:10
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:
<?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=""/>
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.
Danke
Tom
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#10

Re: Daten aus XML mittels XSL anzeigen => funzt nicht...

  Alt 18. Apr 2007, 11:39
Hallo Tom,

versuche es so:

Delphi-Quellcode:
uses
  MSXML2, Variants;

var
  s: string;

begin
  s := VarToStr(doc.documentElement.getAttribute('matchid'));
end;
Freundliche Grüße
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:07 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz