Thomas J.S.: Problem mit XML

Beitrag lesen

Hallo,

Super. Genau so wollte ich das.
Danke dir!!!

Bitte ;-)

Habs selbst einfach nicht hinbekommen, aber wenn ich mir den Code so ansehe macht das alles Sinn.

Noch eine Frage:
Wie muss ich denn den Code abändern, damit der die Einzelansicht neu im aktuellen Fenster anzeigt (also dann halt nur noch die Einzelansicht und nicht unter die Ursprungstabelle).

Z.B. so:

Grüße
Thomas
------------------------------------------------------------------------
<?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>
    <title>Autoliste</title>
    <style type="text/css">
     .einzeln { display:none; }
    </style>
    <script type="text/javascript">
     var arrAutos = new Array(<xsl:apply-templates select="autos" mode="jsarray" />);
     var autosTabelle = "<xsl:value-of select="generate-id(autos)" />";
     <![CDATA[
     function displayLayer(strID) {
      document.getElementById(strID).style.display = "block";
     }

function hideLayer(strID) {
      document.getElementById(strID).style.display = "none";
     }

function showAuto(strID) {
      for(i=0; i<=arrAutos.length-1; i++) {
       if(arrAutos[i] != strID) {
        hideLayer(arrAutos[i]);
       }
       else
        displayLayer(strID);
      }
     }
     ]]>
    </script>
   </head>
   <body>
    <xsl:apply-templates select="autos" mode="alle" />
    <xsl:apply-templates select="autos" mode="einzeln" />
   </body>
  </html>
 </xsl:template>

<xsl:template match="autos" mode="alle">
  <div id="{generate-id(.)}">
   <h1>Autoliste</h1>
   <p/>
   <table border="1">
    <tr>
     <th>Nr.</th>
     <th>Foto</th>
     <th>Marke</th>
     <th>Preis</th>
     <th>Adresse</th>
     <th>PS</th>
     <th>Erstzulassung</th>
     <th>Bauart</th>
     <th>Farbe</th>
     <th>Kilometerleistung</th>
     <th>Extras</th>
    </tr>
    <xsl:apply-templates select="auto[marke='Maserati']" mode="alle"/>
   </table>
  </div>
 </xsl:template>

<xsl:template match="auto" mode="alle">
  <xsl:variable name="ID" select="generate-id(.)" />
  <tr>
   <td>
    <xsl:number format="1"/>
   </td>
   <td>
    <xsl:apply-templates select="foto"/>
   </td>
   <td>
    <a href="#" onclick="hideLayer(autosTabelle);showAuto('{$ID}');"><xsl:value-of select="marke" /></a>
   </td>
   <xsl:apply-templates select="preis | adresse | ps | EZ | art | farbe | kilometer | extras" mode="alle"/>
  </tr>
 </xsl:template>

<xsl:template match="foto">
  <img align="left">
   <xsl:attribute name="src"><xsl:value-of select="@quelle"/></xsl:attribute>
  </img>
 </xsl:template>

<xsl:template match="preis | adresse | ps | EZ | art | farbe | kilometer | extras" mode="alle">
  <td>
   <xsl:value-of select="."/>
     </td>
  </xsl:template>

<xsl:template match="autos" mode="einzeln">
   <xsl:apply-templates select="auto" mode="einzeln" />
  </xsl:template>
  <xsl:template match="auto" mode="einzeln">
   <div id="{generate-id(.)}" class="einzeln">
   <table border="1">
    <tr>
     <th colspan="3">
      <xsl:value-of select="marke" />
     </th>
    </tr>
    <tr>
     <td>Preis</td>
     <td><xsl:value-of select="preis" /></td>
     <td rowspan="8">
      <xsl:apply-templates select="foto"/>
     </td>
    </tr>
    <tr>
     <td>Adresse</td>
     <td><xsl:value-of select="adresse" /></td>
    </tr>
    <tr>
     <td>PS</td>
     <td><xsl:value-of select="ps" /></td>
    </tr>
    <tr>
     <td>Erstzulassung</td>
     <td><xsl:value-of select="EZ" /></td>
    </tr>
    <tr>
     <td>Bauart</td>
     <td><xsl:value-of select="art" /></td>
    </tr>
    <tr>
     <td>Farbe</td>
     <td><xsl:value-of select="farbe" /></td>
    </tr>
    <tr>
     <td>Kilometerleistung</td>
     <td><xsl:value-of select="kilometer" /></td>
    </tr>
    <tr>
     <td>Extras</td>
     <td><xsl:value-of select="extras" /></td>
    </tr>
   </table>
   <p>
    <a href="#" onclick="hideLayer('{generate-id(.)}');displayLayer(autosTabelle);">Tabelle Anzeigen</a>
   </p>
  </div>
  </xsl:template>
  <xsl:template match="autos" mode="jsarray">
   <xsl:for-each select="auto">
   xsl:text"</xsl:text><xsl:value-of select="generate-id(.)" />xsl:text"</xsl:text><xsl:if test="position() != last()">xsl:text, </xsl:text></xsl:if>
  </xsl:for-each>
  </xsl:template>
</xsl:stylesheet>