Wer zeigt mir den XPath?

Dieses Thema im Forum "Mac OS X Entwickler, Programmierer" wurde erstellt von Johnny Value, 30.08.2006.

  1. Johnny Value

    Johnny Value Thread Starter MacUser Mitglied

    Beiträge:
    147
    Zustimmungen:
    5
    MacUser seit:
    30.04.2004
    Ich versuche seit ein paar Stunden, eine von mir aus iTunes als xml exportierte playlist per xsl als html table zu formatieren. Dabei verzweifle ich an der XPath Syntax (die mir zugegebenermassen neu ist). Ich habe jetzt drei oder vier Tutorials dazu durchgeguckt und mindestens ein halbes Dutzend iTunes xsl Dokumente ausprobiert. Trotzdem finde ich nicht den richtigen "Weg". Hier ist der Anfang meiner iTunes playlist

    Code:
    <?xml version="1.0" encoding="UTF-8"?>
    
    <?xml-stylesheet type="text/xsl" href="Riffsammlung1.xsl"?>
    <!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
    <plist version="1.0">
    <dict>
    	<key>Major Version</key><integer>1</integer>
    	<key>Minor Version</key><integer>1</integer>
    	<key>Application Version</key><string>6.0.1</string>
    	<key>Features</key><integer>1</integer>
    	<key>Music Folder</key><string>file://localhost/Volumes/Internal/iTunes%20Music/</string>
    	<key>Library Persistent ID</key><string>CD2311D61B6357A7</string>
    	<key>Tracks</key>
    	<dict>
    		<key>177</key>
    		<dict>
    			<key>Track ID</key><integer>177</integer>
    			<key>Name</key><string>Kiss</string>
    			<key>Artist</key><string>Prince</string>
    			<key>Composer</key><string>Prince</string>
    
                            ... etc.
    
    Hier ist meine erste Version eines xsl files:

    Code:
    <?xml version="1.0" encoding="UTF-8"?>
    
    <xsl:stylesheet version="1.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    
    <xsl:template match="/">
    <html>
    <head>
    	<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
    	<title>Riffsammlung</title>
    </head>
    
      <body>
        <h2>Die wichtigsten Gitarrenriffs</h2>
        <table border="1">
        <tr>
          <th align="left">Name</th>
          <th align="left">Artist</th>
        </tr>
        
        <xsl:for-each select="/plist/dict/dict/dict">
        <tr>
          <td><xsl:value-of select="key[text() = 'Name']"/></td>
          <td><xsl:value-of select="key[text() ='Artist']"/></td>
        </tr>
        </xsl:for-each>
        </table>
      </body>
      </html>
    </xsl:template>
    
    </xsl:stylesheet>
    
    Kann mir jemand zeigen, wie ich statt 'Name' und 'Artist' den entsprechenden following-sibling da einbaue?

    Vielen Dank im Voraus.

    Johnny
     
  2. koli.bri

    koli.bri Gast

    Jetzt mal deinen Lerneifer außer acht gelassen:

    Warum machst Du das nicht so:
    Die Playlist als CSV speichern, mit einem Editor öffne, und jedes Komma durch "</td></tr>" und jedes Absatzzeichen mit "</td></tr>/n<tr><td>" zu ersetzen?

    Dann noch das HTML-Gerüst drumbauen, fertig...
    So würd ich das machen....
     
  3. Johnny Value

    Johnny Value Thread Starter MacUser Mitglied

    Beiträge:
    147
    Zustimmungen:
    5
    MacUser seit:
    30.04.2004
    Naja, ich möchte am Ende höchstens 5-6 von den ganzen Angaben zu jedem Song auch in die table übernehmen. Das ginge vielleicht auch irgendwie mit regulären Ausdrücken, aber das wäre wahrscheinlich viel komplizierter und weniger flexibel.

    Und dann ist da ja noch immer mein Lerneifer :)
     
  4. koli.bri

    koli.bri Gast

    Ok, en Lerneifer nochmal vollkommen ignoriert (man will ja auch ERgebnisse sehen ;) ):

    Den ganzen Kram in Ecxel, die Spalten, die Du nicht haben willst löschen und dann in CSV...

    Ein wenig komplizierter, ja, aber müsste gehen.

    Aber Reguläre Ausdrücke sind auch toll zu lernen. Ich frag mich, warum ich das noch nicht getan hab....
     
  5. Johnny Value

    Johnny Value Thread Starter MacUser Mitglied

    Beiträge:
    147
    Zustimmungen:
    5
    MacUser seit:
    30.04.2004
    Ich hab mich in meinem ganzen Leben noch nicht mit Excel befassen müssen. Werde das mal mit NeoOffice probieren. Trotzdem, die elegantere Lösung wäre xslt.

    Ich war mal recht fit in regulären Ausdrücken. Aber wenn man das nicht dauernd benutzt, vergisst man es wieder. Frustrierend.

    Jetzt muss ich aber arbeiten. Ich melde mich später wieder. Wenn inzwischen jemandem die korrekten XPaths einfallen sollten...

    Gruß,
    Johnny
     
  6. below

    below MacUser Mitglied

    Beiträge:
    13.882
    Zustimmungen:
    1.086
    MacUser seit:
    15.03.2004
    Hats Du zufällig Zugang zu den WWDC 2004 oder 2005 Sessions? Da war ein schönes Beispiel genau für sowas dabei.

    Alex
     
  7. Johnny Value

    Johnny Value Thread Starter MacUser Mitglied

    Beiträge:
    147
    Zustimmungen:
    5
    MacUser seit:
    30.04.2004
    Die Videos kenne ich leider nicht. Aber nach endlosem Rumprobieren habe ich was gefunden, was funktioniert. Für alle, die es interessiert:

    Code:
     <xsl:value-of select="child::key[text() ='Name']/following-sibling::*"/>
    <xsl:value-of select="key[text() ='Artist']/following-sibling::* "/>
    
    Die Logik (warum die wild card?) erschließt sich mir zwar nicht ganz, aber es geht. Super, jetzt kann ich auch XPath ;)

    Johnny
     
  8. ruerueka

    ruerueka MacUser Mitglied

    Beiträge:
    1.001
    Zustimmungen:
    66
    MacUser seit:
    04.04.2004
    Wenn ich deine xml struktur richtig gelesen habe, willst du ja nicht auf den wert des elementes key zugreifen, was du oben versucht hast, sondern auf den wert des nächsten "Geschwisters", was du jezt machst. Das ist also schon logisch.
     
  9. Spacemojo

    Spacemojo MacUser Mitglied

    Beiträge:
    616
    Zustimmungen:
    21
    MacUser seit:
    16.05.2004
    In der iTunes-Playlist alles Markieren, kopieren und in NeoOffice Calc eingefügen -> Tadaaaa!

    Dann noch ein HTML daraus wurschteln...

    Tobi
     
Die Seite wird geladen...
Ähnliche Themen - zeigt den XPath
  1. IceThunder
    Antworten:
    2
    Aufrufe:
    322
    oneOeight
    25.08.2015
  2. Massaguana
    Antworten:
    1
    Aufrufe:
    383
    noodyn
    10.02.2015
  3. Sitemanager
    Antworten:
    1
    Aufrufe:
    446
    xentric
    24.01.2015
  4. BenchR
    Antworten:
    2
    Aufrufe:
    836
    BenchR
    20.07.2013
  5. zeero00
    Antworten:
    3
    Aufrufe:
    783
    below
    30.10.2008