XSL Stylesheet ignoriert Attribute

zer0

Erfahrenes Mitglied
Hallo,
seit kurzer Zeit befasse ich mich mit XML. Ich mache XSL Transformationen mit Java und habe dafür eine XML Datei und ein XSL Stylesheet. Beide Dateien habe ich aus Testzwecken aus einem Buch herausgeschrieben (ja von einem Buch Quellcode herausgeschrieben :p). Die Transformation klappt auch, nur das was rauskommt, eine HTML Datei ist nicht ganz korrekt.

Es wird eine Tabelle erstellt in der die Planeten mit Daten drinstehen. Bloß die Einheiten, die in der XML Datei als Attribute definiert sind, fehlen. z.B. in der Tabellenspalte Tag sollte hinter dem Wer noch "Tage" stehen!

Ich habe mal noch ein Bild angefügt sodass man sich da besser ansehen kann!

Meine XML Datei:
Code:
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xml" href="Planets2XHTML.xsl"?>
<PLANETS>
	<PLANET>
		<NAME>Merkur</NAME>
		<MASS UNITS="(Erde = 1)">0,0553</MASS>
		<DAY UNITS="Tage">58,65</DAY>
		<RADIUS UNITS="Kilometer">2440</RADIUS>
		<DENSITY UNITS="(Erde = 1)">0,983</DENSITY>
		<DISTANCE UNITS="Millionen Km">69,8</DISTANCE>
	</PLANET>
	<PLANET>
		<NAME>Venus</NAME>
		<MASS UNITS="(Erde = 1)">0,815</MASS>
		<DAY UNITS="Tage">116,75</DAY>
		<RADIUS UNITS="Kilometer">5980</RADIUS>
		<DENSITY UNITS="(Erde = 1)">0,943</DENSITY>
		<DISTANCE UNITS="Millionen Km">107,5</DISTANCE>
	</PLANET>
	<PLANET>
		<NAME>Erde</NAME>
		<MASS UNITS="(Erde = 1)">1</MASS>
		<DAY UNITS="Tage">1</DAY>
		<RADIUS UNITS="Kilometer">3391</RADIUS>
		<DENSITY UNITS="(Erde = 1)">1</DENSITY>
		<DISTANCE UNITS="Millionen Km">206,6</DISTANCE>
	</PLANET>
</PLANETS>

XSL Datei:
Code:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output indent="yes" method="xml"/>
	<xsl:template match="/PLANETS">
		<HTML>
			<HEAD>
				<TITLE>
					Die Planetentabelle
				</TITLE>
			</HEAD>
			<BODY>
				<H1>
					Die Planetentabelle
				</H1>
				<TABLE BORDER="2">
					<TR>
						<TD>Name</TD>
						<TD>Masse</TD>
						<TD>Radius</TD>
						<TD>Tag</TD>
					</TR>
					<xsl:apply-templates/>
				</TABLE>
			</BODY>
		</HTML>
	</xsl:template>
	
	<xsl:template match="PLANET">
		<TR>
			<TD><xsl:value-of select="NAME"/></TD>
			<TD><xsl:value-of select="MASS"/></TD>
			<TD><xsl:value-of select="RADIUS"/></TD>
			<TD><xsl:value-of select="DAY"/></TD>
		</TR>
	</xsl:template>
	
	<xsl:template match="MASS">
		<xsl:value-of select="."/>
		<xsl:text> </xsl:text>
		<xsl:value-of select="@UNITS"/>
	</xsl:template>
	
	<xsl:template match="RADIUS">
		<xsl:value-of select="."/>
		<xsl:text> </xsl:text>
		<xsl:value-of select="@UNITS"/>
	</xsl:template>
	
	<xsl:template match="DAY">
		<xsl:value-of select="."/>
		<xsl:text> </xsl:text>
		<xsl:value-of select="@UNITS"/>
	</xsl:template>

</xsl:stylesheet>
 

Anhänge

  • test.JPG
    test.JPG
    11 KB · Aufrufe: 22
Hi.

Templates werden nur verarbeitet wenn du apply-templates aufrufst. Du rufst zwar einmal apply-templates auf, die Verarbeitung stoppt dann aber immer innerhalb der PLANET Elemente.

XML:
<xsl:template match="PLANET">
		<TR>
			<TD><xsl:apply-templates select="MASS" /></TD>
...
		</TR>
	</xsl:template>
Gruß
 
Zuletzt bearbeitet von einem Moderator:

Neue Beiträge

Zurück