Announcement

Collapse
No announcement yet.

XML in XSLT einbinden

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • XML in XSLT einbinden

    Hallo zusammen!

    Bin in sachen XML und XSLT noch etwas unerfahren deswegen jetzt bitte nicht gleich steinigen

    Ich habe ein XSLT gebastelt und bekomme von extern immer ein XML mit dem gleichem Namen. Nun möchte ich, das wenn ich auf das XSLT (oder etwas anderes) doppelklicke sich dieses im Browser öffnet und das XML als Datenquelle benutzt.

    Was mein Halbwissen und google hergibt ist, dass man normalerweise das XML mit dem XSLT verknüpft und nicht anders rum, so wie ich es vorhabe. Nun habe ich aber leider keinen Einfluss auf das externe XML. Weiß jemand wie das am geschicktesten geht? Vielleicht per Batch

    Grüße,
    der Qualle

  • #2
    Verknüpfe ein minimales XML-Dokument wie <root/> mit dem XSLT-Stylesheet mittels <?xml-stylesheet ...?>-Verarbeitungsanweisung und rufe das eigentliche XML-Dokument aus dem Stylesheet über die document('extern.xml')-Funktion auf.

    Comment


    • #3
      Hi,

      vielen Dank für deine Antwort.

      Wie binde ich den Tag jetzt genau ein?

      Das hier ist mein Dummy XML:
      Code:
      <?xml version="1.0" encoding="UTF-8"?>
      <?xml-stylesheet type="text/xsl" href="generate_html.xslt" ?>
      <DATA>
      	<NODATA>- Keine Fahrzeugdaten geladen!</NODATA>
      </DATA>
      Mein eigentliches XML sieht in etwa so aus:
      Code:
      <?xml version="1.0" encoding="UTF-8"?>
      <DATA>
      	<VEHICLE ORIGIN="IKEY">
      		<IDENT>
      			<VIN>abcdef...</VIN>
      		</IDENT>
      		<LIFE_DATA>
      			<DATE>1.1.2008</DATE>
      			<TIME>15:00</TIME>
      			<ODOMETER UNIT=""/>
                              ...
      		</LIFE_DATA>
      	</VEHICLE>
      </DATA>
      Und hier hab ich versucht das document() einzubinden:
      Code:
      <?xml version="1.0" encoding="UTF-8"?>
      <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
      document('ikey.xml');
      	<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
      	<xsl:template match="/">
      		<html>
      			<head>
      				<meta http-equiv="content-type" content="text/html; charset=utf-8"/>
      				<title>AH Blank</title>
      			</head>
      			<body>
      				<h1>Fahrzeugdaten <xsl:value-of select="./DATA/NODATA"/></h1>
      				<xsl:apply-templates/>
      				<!-- Hier weitere Templates -->
      			</body>
      		</html>
      	</xsl:template>
      	<xsl:template match="DATA">
      		<table style="width:100%; background-color:#f7f7f7;">
      			<tr>
      				<th colspan="4" style="background-color:#c5c3c6; text-align:left; padding:10px; font-weight:bolder;">Fahrzeugdaten</th>
      			</tr>
      			<tr>
      				<td style="width:25%;">
      					<b>Marke:</b>
      				</td>
      				<td style="width:25%;">n/A</td>
      				<td style="width:25%;">
      					<b>Fahrzeugidentnr.:</b>
      				</td>
      				<td style="width:25%;">
      					<xsl:value-of select="./VEHICLE/IDENT/VIN"/>
      				</td>
      			</tr>
      			<tr>
      				<td>
      					<b>Modelljahr:</b>
      				</td>
      				<td>n/A</td>
      				<td>
      					<b>Beschreibung:</b>
      				</td>
      				<td>n/A</td>
      			</tr>
      			<tr>
      				<td>
      					<b>Verkaufstyp:</b>
      				</td>
      				<td>n/A</td>
      				<td>
      					<b>Produktionsdatum:</b>
      				</td>
      				<td>
      					<xsl:value-of select="./VEHICLE/LIFE_DATA/DATE"/>, <xsl:value-of select="./VEHICLE/LIFE_DATA/TIME"/>
      				</td>
      			</tr>
      			<tr>
      				<td>
      					<b>MKB:</b>
      				</td>
      				<td>n/A</td>
      				<td>
      					<b>Auslieferungsdatum:</b>
      				</td>
      				<td>n/A</td>
      			</tr>
      			<tr>
      				<td>
      					<b>GKB:</b>
      				</td>
      				<td>n/A</td>
      				<td>
      					<b>Leasing:</b>
      				</td>
      				<td>n/A</td>
      			</tr>
      			<tr>
      				<td>
      					<b>
      						<xsl:value-of select="./VEHICLE/LIFE_DATA/ODOMETER/@UNIT"/> Stand:</b>
      				</td>
      				<td>
      					<xsl:value-of select="./VEHICLE/LIFE_DATA/ODOMETER"/>
      				</td>
      				<td>
      					<b/>
      				</td>
      				<td/>
      			</tr>
      		</table>
      		<br/>
      		<br/>
      		<table style="width:100%; background-color:#f7f7f7;">
      			<tr>
      				<th colspan="4" style="background-color:#c5c3c6; text-align:left; padding:10px; font-weight:bolder">Service Daten</th>
      			</tr>
      			<tr style="font-weight:bold; background-color:#dddbde;">
      				<td style="width:25%;">Id</td>
      				<td style="width:25%;">Value</td>
      				<td style="width:25%;">Type</td>
      				<td style="width:25%;">Description</td>
      			</tr>
      			<xsl:for-each select="./VEHICLE/LIFE_DATA/ServiceKeyData">
      				<tr>
      					<td>
      						<xsl:value-of select="./Id"/>
      					</td>
      					<td>
      						<xsl:value-of select="./Value"/>
      					</td>
      					<td>
      						<xsl:value-of select="./Type"/>
      					</td>
      					<td>
      						<xsl:value-of select="./Description"/>
      					</td>
      				</tr>
      			</xsl:for-each>
      		</table>
      		<br/>
      		<br/>
      		<table style="width:100%; background-color:#f7f7f7;">
      			<tr>
      				<th colspan="4" style="background-color:#c5c3c6; text-align:left; padding:10px; font-weight:bolder">Typ Daten</th>
      			</tr>
      			<tr style="font-weight:bold; background-color:#dddbde;">
      				<td style="width:50%;">Id</td>
      				<td style="width:50%;">Description</td>
      			</tr>
      			<xsl:for-each select="./VEHICLE/LIFE_DATA/TYPE_DATA">
      				<tr>
      					<td>
      						<xsl:value-of select="./ID"/>
      					</td>
      					<td>
      						<xsl:value-of select="./DESCRIPTION"/>
      					</td>
      				</tr>
      			</xsl:for-each>
      		</table>
      		<br/>
      		<br/>
      	</xsl:template>
      </xsl:stylesheet>
      Zu document habe ich nur dieses http://www.usegroup.de/software/xmlt....html#document gefunden. Aber das hilft mir ja nicht viel weiter da ich keine for-each Schleife auf dieser Ebene habe. Oder?

      Grüße,
      qualle

      Comment


      • #4
        Der verlinkte Text zeigt doch die Anwendung von xsl:for-each auf eine über document() eingebundene Struktur. Die Zeile mit document('ikey.xml'); ist fehlerhaft, in einer Variable wäre dieses Konstrukt besser aufgehoben. Dann kann man mittels $varname/whatever auf die Inhalte zugreifen.

        Comment

        Working...
        X