zurück zur Startseite
  


Zurück XHTMLforum > (X)HTML und CSS > (X)HTML
Seite neu laden Termine in XML zusammenfassen via xslt

Antwort
 
LinkBack Themen-Optionen Ansicht
  #1 (permalink)  
Alt 07.02.2017, 20:55
Neuer Benutzer
neuer user
Thread-Ersteller
 
Registriert seit: 07.02.2017
Beiträge: 1
MarshallEs befindet sich auf einem aufstrebenden Ast
Standard Termine in XML zusammenfassen via xslt

Moin zusammen,

ich bin relativ neu in der Materie und stehe nun vor der Aufgabe folgendes Thema zu lösen.

Dies ist das Quelldokument, welches ich angeliefert bekomme:
Code:
<tabelle>
	<vorschaupaarungen>
		<vorschaupaarung>
			<spieldatum>Fr. 27.01.2017</spieldatum>
			<spieluhrzeit>15:30</spieluhrzeit>
			<heimmannschaft>Wesel</heimmannschaft>
			<gastmannschaft>Stuttgart</gastmannschaft>
		</vorschaupaarung>
		<vorschaupaarung>
			<spieldatum>Sa. 28.01.2017</spieldatum>
			<spieluhrzeit>16:30</spieluhrzeit>
			<heimmannschaft>Hannover</heimmannschaft>
			<gastmannschaft>Nürnberg</gastmannschaft>
		</vorschaupaarung>
		<vorschaupaarung>
			<spieldatum>Sa. 28.01.2017</spieldatum>
			<spieluhrzeit>17:30</spieluhrzeit>
			<heimmannschaft>Hamburg</heimmannschaft>
			<gastmannschaft>Berlin</gastmannschaft>
		</vorschaupaarung>
		<vorschaupaarung>
			<spieldatum>Sa. 28.01.2017</spieldatum>
			<spieluhrzeit>17:30</spieluhrzeit>
			<heimmannschaft>Basel</heimmannschaft>
			<gastmannschaft>Wien</gastmannschaft>
		</vorschaupaarung>
		<vorschaupaarung>
			<spieldatum>So. 29.01.2017</spieldatum>
			<spieluhrzeit>17:45</spieluhrzeit>
			<heimmannschaft>Baltrum</heimmannschaft>
			<gastmannschaft>Zypern</gastmannschaft>
		</vorschaupaarung>
		<vorschaupaarung>
			<spieldatum>So. 29.01.2017</spieldatum>
			<spieluhrzeit>12:45</spieluhrzeit>
			<heimmannschaft>Sylt</heimmannschaft>
			<gastmannschaft>Helgoland</gastmannschaft>
		</vorschaupaarung>
	</vorschaupaarungen>
</tabelle>
Meine XSL:
Code:
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" >
	<xsl:strip-space elements="*"/>
	<xsl:output method="xml" indent="yes" encoding="utf-8"/>
	<xsl:template match="/">
		<doc xml:lang="de">
			<xsl:comment>Termine</xsl:comment>
			<p class="T_termine_fussball">
				<xsl:for-each select="tabelle/vorschaupaarungen/vorschaupaarung">
					<xsl:if test="spieldatum=spieldatum">
						<span class="C_termin">
							<xsl:value-of select="normalize-space(substring(spieldatum,4,7))"/>
						</span>
						<span class="C_paarung">
							<xsl:value-of select="heimmannschaft"/> - <xsl:value-of select="gastmannschaft"/>
						</span>
					</xsl:if>
				</xsl:for-each>		
			</p>
		</doc>
	</xsl:template>
</xsl:stylesheet>

Hier ist es gewünscht, dass die Termine nach Datum sortiert werden. Also das Datum nur einmal auftaucht. Bei mir kommt aber leider - egal wie ich es auch versuche das bei raus:

Code:
<?xml version="1.0" encoding="utf-8"?>
<doc xml:lang="de"><!--Termine-->
   <p class="T_termine_fussball">
      <span class="C_termin">27.01.</span>
      <span class="C_paarung">Wesel - Stuttgart</span>
      <span class="C_termin">28.01.</span>
      <span class="C_paarung">Hannover - Nürnberg</span>
      <span class="C_termin">28.01.</span>
      <span class="C_paarung">Hamburg - Berlin</span>
      <span class="C_termin">28.01.</span>
      <span class="C_paarung">Basel - Wien</span>
      <span class="C_termin">29.01.</span>
      <span class="C_paarung">Baltrum - Zypern</span>
      <span class="C_termin">29.01.</span>
      <span class="C_paarung">Sylt - Helgoland</span>
   </p>
</doc>
So SOLL das XML am Ende aussehen:
Code:
<?xml version="1.0" encoding="utf-8"?>
<doc xml:lang="de">
   <artikel><!--Termine-->
      <p class="T_termine_fussball">
         <span class="C_termin">27.01.</span>
         <span class="C_paarung">Wesel - Stuttgart</span>
         <span class="C_termin">28.01.</span>
         <span class="C_paarung">Hannover - Nürnberg</span>
         <span class="C_paarung">Hamburg - Berlin</span>
         <span class="C_paarung">Basel - Wien</span>
         <span class="C_termin">29.01.</span>
         <span class="C_paarung">Baltrum - Zypern</span>
         <span class="C_paarung">Sylt - Helgoland</span>
      </p>
   </artikel>
</doc>
Kann mir vielleicht jemand nen Tipp geben, wie ich zu meinem SOLL XML komme?
Ich komme auch durch die Suche im Web nicht großartig weiter - ich habe hier vermutlich nur einen Denkfehler.
Vielleicht kann ja einer schnell Abhilfe leisten.

Besten Dank im Voraus
Marshall
Mit Zitat antworten
Sponsored Links
  #2 (permalink)  
Alt 08.02.2017, 07:50
Erfahrener Benutzer
XHTMLforum-Kenner
 
Registriert seit: 30.01.2014
Beiträge: 1.484
cloned ist ein sehr geschätzer Menschcloned ist ein sehr geschätzer Menschcloned ist ein sehr geschätzer Mensch
Standard

Das ist keine triviale Sache, da wäre es einfacher, wenn das schon bei der Ausgabe des XML berücksichtigt werden könnte.

Ansätze, wie man das machen kann:
template:match="vorschaupaarung" und dort dann das datum in eine Variable speichern. Dann ein match="vorschaupaarung[spieldatum='$datumsVariable' und du bekommst alle Paarungen mit dem Datum. Das Problem dabei ist: Wie findest du die nächste Paarung, welche ein anderes Datum hat?

Andere Möglichkeit: Wenn du im vorschaupaarung template bist zählst du wie viele andere Knoten mit dem Wert es gibt und wenn es mehr als 1 ist dann gib das Datum nicht mehr aus. Dabei musst du aber auch erst feststellen ob du dich nicht schon im ersten Datum befindest, weil dann musst du das Datum natürlich ausgeben.

Zusammenfassung:
Mit einem for-each wirst du meiner Meinung nach hier nicht weit kommen, da brauchst du ein template:match und dort dann die einzelnen Fälle abhandeln.

Edit:
Kannst du sicher sein, dass Elemente mit gleichem Datum immer nacheinander kommen? Dann müsstest du nur checken ob das vorige Element das selbe Datum hat und abhängig davon dann das Datum ausgeben.

Geändert von cloned (08.02.2017 um 08:50 Uhr)
Mit Zitat antworten
Sponsored Links
Antwort

Stichwörter
termine, xml, xslt

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre 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


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Inline Listenelement wird nicht richtig im background befüllt SteveB CSS 3 28.04.2011 20:41
XML auf dem Server per XSLT in HTML transformieren AndreasB Serveradministration und serverseitige Scripte 15 16.03.2011 15:20
Hilfsmittel zur Erstellung von XSLT - zur Transformation von XML zu HTML AndreasB (X)HTML 2 23.11.2010 09:21
xhtml clientseitig aus xml und xslt Ricochet (X)HTML 2 11.11.2005 20:19


Alle Zeitangaben in WEZ +2. Es ist jetzt 13:09 Uhr.