Thomas J.S.: XML Daten in XSL einbinden unter Benutzung von CSS

Beitrag lesen

Hallo,

erstmal danke für die Antwort. Ich werde mal versuchen, dir das Problem genauer zu erläutern.

Ws erwartet du an der Stelle _genau_? Soll er die Werte aus dem XML ausgeben, oder soll er dir das XML als solches (sprich die Elemente, Attribute und Text) ausgeben? [1]

-> Nein, ich erwarte an dieser Stelle eine Ausgabe der Werte aus dem XML. Sprich, wenn dem XML-Element <blubb> der wert 123 zugewiesen wurde, dann soll an dieser Stelle "123" stehen. Um auf deine zweite Frage gleich miteinzugehen:
In meiner Abteilung kennt sich niemand mit XML aus, inklusive mir bis vor 2 Wochen.

Dann hast du jetzt die gute Chance der lokale XML-Guru zu werden :)

<bug_id>319</bug_id>
<creation_ts>16:38:54</creation_ts>

Mein Problem in diesem Falle ist jetzt, dass ich nicht weiss, wie ich mir die Werte der XML in den div-Containern anzeigen lassen kann, da es ja, wie du erklärt hast, nicht innerhalb eines xsl:templates kein zweites xsl:template geben kann. Alles in allem brauch ich nur eine Ausgabe der Daten an den entsprechenden Punkten im Code.

Ich hoffe meine Erklärung, hat dir geholfen, dass Problem besser zu verstehen. Ich bedanke mich schonmal im Vorraus.

Ja. die hat geholfen.
Du hast grundsätzlich zwei Möglichkeiten
Wenn das XML z.B. so ist:

<irgendeinelement>
  <bug_id>319</bug_id>
  <creation_ts>16:38:54</creation_ts>
   ...
</irgendeinelement>
<irgendeinelement>
  <bug_id>xxx</bug_id>
  <creation_ts>16:38:54</creation_ts>
   ...
</irgendeinelement>

-----------------
  <xsl:template match="/">
    <html>
      <head>
        <title>bugZilla Fehleranalyse</title>
        <link rel="stylesheet" href="basic.css" type="text/css" media="screen, projection"/>
      </head>
      <body>
        <div id="container">
          <div id="header">
            <h1>.:. bugZilla fehleranalyse .:.</h1>
          </div>
          <div id="conlinks">Content Links</div>
          <div id="conrechts">Content Rechts</div>
          <div id="conmain">
           <!-- Content Main -->

<xsl:for-each select="irgendeinelement">
       <h2><xsl:value-of select="bug_id" /></h2>
       <div>
          <xsl:value-of select="creation_ts" />
       <div>
          usw. wie es du halt für die ausgabe brauchst
   </xsl:for-each>

<!-- End Content Main -->
          </div>
        </div>
        </body>
    </html>
  </xsl:template>

Wenn aber das XML nur so aussieht:

<bug_id>xxx</bug_id>
  <creation_ts>16:38:54</creation_ts>
  ...

<bug_id>xxx</bug_id>
  <creation_ts>16:38:54</creation_ts>
  ....

<bug_id>xxx</bug_id>
  <creation_ts>16:38:54</creation_ts>
  ...

Hast du nur eine Möglichkeit:
Du mast für jedes Element das du Ausgeben willst ein eigenes Template:
<xsl:template match="bug_id">
  <h2><xsl:value-of select="." /></h2>
</xsl:template>

<xsl:template match="creation_ts">
   <div>
      <xsl:value-of select="." />
   <div>
</xsl:template>

usw.

Dann sagst du in deinem Haupttemplate:
  <xsl:template match="/">
    <html>
      <head>
        <title>bugZilla Fehleranalyse</title>
        <link rel="stylesheet" href="basic.css" type="text/css" media="screen, projection"/>
      </head>
      <body>
        <div id="container">
          <!-- Container header-->
          <!-- Anfang header-->
          <div id="header">
            <h1>.:. bugZilla fehleranalyse .:.</h1>
          </div>
          <div id="conlinks">Content Links</div>
          <div id="conrechts">Content Rechts</div>
          <div id="conmain">
            <!-- Content Main -->

<xsl:apply-templates />

<!-- End Content Main -->
          </div>
        </div>
        </body>
    </html>
  </xsl:template>

Für Elemente die du nicht ausgeben willst kannst oder musst du dann ein leeres Template erstellen:

<xsl:template match="element1 | element2 | usw." />

Das mal grundsätzlich.
Natürlich gibt es noch andere Möglichkeiten, wo du entlang der verschiedenen XPath-Achen navigieren und Elemente/Attribute auswählen kannst, nur ich denke mir, dass das im Moment vielleicht zu kompliziert wäre (und ich kenne weder die genaue XML-Struktur, noch die genau gewünschte Ausgabe)

Grüße
Thomas