tutorials.de Buch-Aktion 02/2012
ERLEDIGT
NEIN
ANTWORTEN
2
ZUGRIFFE
560
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Registriert seit
    Apr 2007
    Beiträge
    209
    Hallo,

    ich bin ein absoluter Newbie im, Thema XSLT. Nun habe ich die Aufgabe bekommen, ein XSLT zu schreiben, dass eine XML Datei, in eine andere Sprache übersetzt.

    Beispiel:

    Die Ursprungs-XML Datei sieht so aus:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    
    <?xml version="1.0" encoding="UTF-8"?> 
    <?xml-stylesheet href="test.xsl" type="text/xsl"?> 
    <VZV-PARTNER  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.vodafonelivepartners.com/schema/VZV-PARTNER.xsd"> 
      <PARTNER-PI> 
       <TRANSFORMER name="VZV-DEFAULT"/> 
      </PARTNER-PI> 
      <PARTNER-CHARGE> 
       <AUTHORIZE-USAGE serviceid="my service id"/> 
      </PARTNER-CHARGE> 
      <PARTNER-BODY page-template="wallpaper-download"> 
       <VZV-DEFAULT> 
        <CONTAINER type="IMAGE"> 
         <IMAGE href="iphone.jpg"/> 
        </CONTAINER> 
       </VZV-DEFAULT> 
      </PARTNER-BODY> 
    </VZV-PARTNER>

    und rauskommen muss quasi gültiger HTML Code, sodass das Bild angezeigt wird.

    Hier der Inhalt meiner XSL Datie:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    
    <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
    <xsl:output method="html"/>
     
    <xsl:template match="/">
    <html>
        <head>
            <title>Fit-ML Image Test</title>
        </head>
        <body>
        <xsl:apply-templates />
     
        <img>
            <xsl:attribute name="src">
                <xsl:value-of select="VZV-PARTNER/PARTNER-BODY/VZV-DEFAULT/CONTAINER/IMAGE/@href"/>
                </xsl:attribute>
        </img>
        </body>
    </html>
    </xsl:template>
     
     
    </xsl:stylesheet>

    Das habe ich auch soweit hinbekommen. Hier nun einige Fragen dazu, auf die ich mir keinen Reim machen kann:

    1) Ich kann ja nicht einfach in die urpsprungs-XML Datei das hier
    Code :
    1
    
    <?xml-stylesheet href="test.xsl" type="text/xsl"?>
    mit reinkopieren. Ich teste das ganze zur Zeit mit dem Firefox (also die XML einfach im Firefox öffnen) Im Produktiven Leben, wie weiß dann die XML Datei, dass sie genau diese xsl Datei nehmen soll? Das sagt der XML Datei wahrscheinlich dann der Server oder?

    2) Wie gehe ich denn generell eigentlich vor? Ich kann dass hier
    Code :
    1
    2
    3
    4
    5
    
        <img>
            <xsl:attribute name="src">
                <xsl:value-of select="VZV-PARTNER/PARTNER-BODY/VZV-DEFAULT/CONTAINER/IMAGE/@href"/>
                </xsl:attribute>
        </img>
    ja nicht für alle möglichen auftretenen Fälle machen. Sprich für tabellen, für Farben usw. Oder gibt es da ein 'Mittel, mit dem ich das irgendwie vereinfachen kann?

    3) Desweiteren verstehe ich nicht wie zum Kreuzgeier ich das gewollte Design hinbekommen. Angenommen es soll eine Tabelle mit 2 Zellen sein und diese Tabelle soll im linken Feld ein Bild haben, dass müsste ja ewig viele ifs im xsl geben?!

    Ich weiß die meisten Fragen sind entweder dumm oder unvollständig aber ich versuche mir gerade ein Grundgerüst an Wissen darüber anzueignen, aber ich würde gern erstmal das Prinzip bzw. die Grundsätzliche herangehensweise verstehen

    Danke und lieben Gruß
    Christian
     
    Mfg
    Chri●̮̮̃•

  2. #2
    Avatar von hela
    hela hela ist offline Mitglied Smaragd
    tutorials.de Premium-User
    Registriert seit
    Oct 2004
    Beiträge
    1.099
    Hallo Looky,

    folgendes XSL-Stylesheet legt in der HTML-Datei eine Tabelle mit zwei Spalten an, wobei in der linken Spalte das Bild sein sollte.
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    
    <?xml version="1.0" encoding="utf-8"?>
    <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
    <xsl:output method="html"/>
     
    <xsl:template match="/">
      <html>
        <head>
          <title>Fit-ML Image Test</title>
        </head>
        <body>
          <table border="1" cellspacing="0" cellpadding="4">
            <tr>
              <th>Bild</th>
              <th>Adresse</th>
            </tr>
            [COLOR="Blue"]<xsl:apply-templates />[/COLOR]
          </table>
        </body>
      </html>
    </xsl:template>
     
    [COLOR="Blue"]<xsl:template match="PARTNER-BODY">[/COLOR]
      <tr>
        <td>
          <img>
            <xsl:attribute name="src">
              <xsl:value-of select="VZV-DEFAULT/CONTAINER/IMAGE/@href"/>
            </xsl:attribute>
          </img>
        </td>
        <td>
          <xsl:value-of select="VZV-DEFAULT/CONTAINER/IMAGE/@href"/>
        </td>
      </tr>
    [COLOR="Blue"]</xsl:template>[/COLOR]
     
    </xsl:stylesheet>
    Das XSL:APPLY-TEMPLATES-Element wendet das andere Template innerhalb des ersten Tepmlates für jedes "PARTNER-BODY"-Kindelement an. In deiner XML-Datei gibt aber jetzt nur ein solches Kind. Wie würde die XML-Datei mit mehreren Partnern oder mehreren Bildern aussehen?

    Zur ersten Frage:
    Wenn du die XSL-Transformation vom Browser machen lässt, dann musst du das XSL-Stylesheet natürlich in der XML-Datei verlinken. Du kannst das aber auch beim Client per Script machen. Hier ist ein Beispel in JavaScript [JavaScript-Funktion ConvertXML2HTML()] dazu, das allerdings nur im IE funktioniert. Im Server könntest du die Transformation beispielsweise mit PHP machen und dann das Transformationsergebnis (die HTML-Datei) an den Client ausliefern.
    Geändert von hela (22.12.08 um 18:34 Uhr) Grund: Ergänzung
     

  3. #3
    Registriert seit
    Apr 2007
    Beiträge
    209
    ok, cool, aber ich muss ein xsl script bauen, das individuell einsetzbar ist. sprich das bild könnte mal in der rechten, mal in der linken spalte stehen. mal hat die tabelle eine hintergrundfarbe mal nicht

    mal handelt es sich um buttons mal um textfelder oder formulare.

    kann ich das alles überhaupt in einer einzigen xls datei erschlagen? ich fühl mich da ein wenig hilflos.
     
    Mfg
    Chri●̮̮̃•

Ähnliche Themen

  1. Dynamisches XML-Schema...Geht das überhaupt
    Von masjab im Forum XML Technologien
    Antworten: 7
    Letzter Beitrag: 14.07.08, 19:54
  2. Zweimal gotoAndPlay, geht das überhaupt?
    Von k1k0 im Forum Flash Plattform
    Antworten: 0
    Letzter Beitrag: 24.06.08, 15:31
  3. mehrere DataRelations- geht das überhaupt?
    Von paul meier im Forum .NET Windows Forms
    Antworten: 0
    Letzter Beitrag: 18.01.08, 19:19
  4. EXEC(); Geht überhaupt nicht
    Von real_benedikt im Forum PHP
    Antworten: 4
    Letzter Beitrag: 11.10.07, 16:23
  5. transformieren des UVW helpers geht das überhaupt?
    Von Andrew im Forum 3D Studio Max
    Antworten: 8
    Letzter Beitrag: 09.02.03, 17:06