[Anfänger] Probleme mit XSL Datei

Kerwin

Erfahrenes Mitglied
Hallo,
Ich habe von der Schule aus eine Aufgabe bekommen wo ich einen Studenplan schön darin darstellen soll. Nur leider will die ganze Sache nicht so wie ich es will. Der gibt mir irgendwie immer alle Daten aus anstatt sie zu "gruppieren". Kann mir da vielleicht jemand weiterhelfen?

Die Problemdatei XSL
Code:
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/format">
  <xsl:template match="vorlesung">
    <html>
      <body>
        <table border="2">
          <tbody>
            <tr>
               <th>Tag</th>
               <th>Fach</th>
               <th>Abk.</th>
               <th>Dozent</th>
               <th>Raum</th>
               <th>Beginn</th>
               <th>Ende</th>
          </tr>
          <tr>
	<td><xsl:apply-templates select="tag"/></td>
	<td><xsl:apply-templates select="titel"/></td>
	<td><xsl:apply-templates select="kurztitel"/></td>
	<td><xsl:apply-templates select="dozent"/></td>
	<td><xsl:apply-templates select="raum"/></td>
	<td><xsl:apply-templates select="beginn"/></td>
	<td><xsl:apply-templates select="ende"/></td>
            </tr>
          </tbody>
        </table>
      </body>
    </html>
  </xsl:template>
</xsl:stylesheet>

Die XML Datei
Code:
<?xml version="1.0"?>
<!DOCTYPE vorlesungen SYSTEM "plan.dtd">
<?xml-stylesheet href="plan.xsl" type="text/xsl"?>
<vorlesungen>
	<vorlesung>
		<titel>Mathe</titel>
		<kurztitel>MA</kurztitel>
		<dozent>Mustermann</dozent>
		<raum>007</raum>
		<tag>Montag</tag>
		<beginn>8.00</beginn>
		<ende>9.30</ende>
	</vorlesung>
	<vorlesung>
		<titel>Deutsch</titel>
		<kurztitel>DEU</kurztitel>
		<dozent>Musterfrau</dozent>
		<raum>008</raum>
		<tag>Montag</tag>
		<beginn>9.45</beginn>
		<ende>11.15</ende>
	</vorlesung>
	<vorlesung>
		<titel>Politische Bildung</titel>
		<kurztitel>PB</kurztitel>
		<dozent>Schroeder</dozent>
		<raum>009</raum>
		<tag>Dienstag</tag>
		<beginn>9.45</beginn>
		<ende>11.15</ende>
	</vorlesung>
</vorlesungen>

Die dtd Datei
Code:
<?xml version="1.0" encoding="UTF-8"?>
<!ELEMENT vorlesungen (vorlesung)*>

<!ELEMENT vorlesung (titel, kurztitel, dozent, raum, tag, beginn, ende)>

<!ELEMENT titel (#PCDATA)>
<!ELEMENT kurztitel (#PCDATA)>
<!ELEMENT dozent (#PCDATA)>
<!ELEMENT raum (#PCDATA)>
<!ELEMENT tag (#PCDATA)>
<!ELEMENT beginn (#PCDATA)>
<!ELEMENT ende (#PCDATA)>

Ich danke om vorraus.

Kerwin
 
Du erzeugst für jede Vorlesung einen kompletten HTML-Baum, da kann ja nur Blödsinn rauskommen, bzw. glaube ich, dass dein Template garnicht verarbeitet wird, weil es nicht angesprochen wird.

Übrigens brauchst du den Namespace "fo" nicht, "xsl" reicht.

Probier mal dieses XSL-Stylesheet:

Code:
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="/">
	<xsl:apply-templates select="vorlesungen"/>
</xsl:template>
  
<xsl:template match="vorlesungen">
	<html>
	<body>
	<table border="2">
	<tr>
	<th>Tag</th>
	<th>Fach</th>
	<th>Abk.</th>
	<th>Dozent</th>
	<th>Raum</th>
	<th>Beginn</th>
	<th>Ende</th>
	</tr>

	<xsl:apply-templates select="vorlesung"/>

	</table>
	</body>
	</html>
</xsl:template>

<xsl:template match="vorlesung">
	<tr>
	<td><xsl:apply-templates select="tag"/></td>
	<td><xsl:apply-templates select="titel"/></td>
	<td><xsl:apply-templates select="kurztitel"/></td>
	<td><xsl:apply-templates select="dozent"/></td>
	<td><xsl:apply-templates select="raum"/></td>
	<td><xsl:apply-templates select="beginn"/></td>
	<td><xsl:apply-templates select="ende"/></td>
	</tr>
</xsl:template>

</xsl:stylesheet>
 
Zuletzt bearbeitet:
Ich bedanke mich für deine Antwort, hat funktioniert. Nun muss ich das noch ein wenig der Form anpassen(irgendwie gruppieren).
 
So, da melde ich mich mal zurück mit einem Problem.

Ich Versuche nun die eingegebenen Daten zu "gruppieren", so dass eine relativ schöne ansicht entsteht. Nur leider will das mal wieder nicht wie ich will. Kann mir jemand vielleicht einen kleinen Denkanstoß geben?

Die Form sollte etwa so sein

Uhrzeiten | Montag | Dienstag | Mittwoch ...........
8-9 | deu ..
9-10 | ma ..
...
 
Versuch mal das angehängte XSL-Stylesheet, ist zwar nicht sehr elegant aber funktioniert bei mir ganz gut.

Beste Grüße
Falk
 

Anhänge

  • plan.xsl.txt
    2 KB · Aufrufe: 54
Zurück