Newsgroup: it.comp.macintosh
Titolo: [ot] standaloneituneslibraryviewer.xml

Salve,
       ho trovato su faqintosh questa splendida libreria xml per vedere 
il file "iTunes%20Music%20Library.xml" che contiene le info sulla mia 
libreria musicale... ora vorrei modificarlo per far si che il nome della 
canzone sia cliccabile e che faccia aprire in una nuova finestra il file 
musicale che il plug in eseguira...credo che la modifica andrebbe fatta 
in questa parte di codice:
[xml]
<xsl:template match="dict">
  <div>
   <xsl:attribute name="class">
    <xsl:text>track</xsl:text>
    <xsl:if test="(position() mod 2) = 0">
     <xsl:text> dark</xsl:text>
    </xsl:if>
   </xsl:attribute>
   <div class="name">
    <xsl:apply-templates select="key[text()='Name']" mode="getValue" />
    <xsl:text>&#160;</xsl:text>
   </div>
   <div class="album">
    <xsl:apply-templates select="key[text()='Album']" mode="getValue" />
    <xsl:text>&#160;</xsl:text>
   </div>
   <div class="artist">
    <xsl:apply-templates select="key[text()='Artist']" mode="getValue" />
    <xsl:text>&#160;</xsl:text>
   </div>
   <div class="size">
    <xsl:variable name="size">
     <xsl:apply-templates select="key[text()='Size']" mode="getValue" />
    </xsl:variable>
    <xsl:value-of select="round($size div 10240) div 100" />
   </div>
  </div>
 </xsl:template>
[/xml]
naturalmente aggiungendo da qualche parte:
[xml]
<xsl:apply-templates select="key[text()='Location']" mode="getValue" />
[/xml]
scusate l'ot ma spero che qualcuno, in particolare il Signor Sembro La 
Carta mi aiuti...
Grazie

 Ci sarebbero un po' di violazioni di sicurezza, ad occhio...
credo che dovrebbe essere una cosa del genere:
<div class="name">
   <a href=" <xsl:apply-templates select="key[text()='Location']" 
mode="getValue" /> " target="_blank">
      <xsl:apply-templates select="key[text()='Name']" mode="getValue" />
      <xsl:text>&#160;</xsl:text>
   </a>
</div>
ma naturalmente non funziona...io cmq intendo che questa cosa deve 
funzionare solo in locale...
grazie mille

 </a>
perchè safari non dovrebbe farmi aprire un link file:/// ??
cmq in generale il codice che hai scritto va benissimo:
   <div class="name">
    <a target="_blank">
     <xsl:attribute name="href">
      <xsl:apply-templates select="key[text()='Location']" 
mode="getValue"/>
     </xsl:attribute>
     <xsl:apply-templates select="key[text()='Name']" mode="getValue" />
     <xsl:text>&#160;</xsl:text>
    </a>
   </div>
ora però viene il bello, ho bisogno di sostituire appunto
file:///Users/etc...
con
http://127.0.0.1:8000/Users/etc.
..
se riesci a fare una cosa del genere sei un genio!!!
Grazie

 Non serve alcuna genialità, basta conoscere un pizzico di XSLT...
però nn funziona...ecco il codice:
<xsl:template match="dict">
  <div>
   <xsl:attribute name="class">
    <xsl:text>track</xsl:text>
    <xsl:if test="(position() mod 2) = 0">
     <xsl:text> dark</xsl:text>
    </xsl:if>
   </xsl:attribute>
   <div class="name">
    <a target="_blank">
     <xsl:attribute name="href">
      <xsl:apply-templates select="key[text()='Location']" 
mode="getAsUri"/>
     </xsl:attribute>
     <xsl:apply-templates select="key[text()='Name']" mode="getValue" />
     <xsl:text>&#160;</xsl:text>
    </a>
   </div>
   <div class="album">
    <xsl:apply-templates select="key[text()='Album']" mode="getValue" />
    <xsl:text>&#160;</xsl:text>
   </div>
   <div class="artist">
    <xsl:apply-templates select="key[text()='Artist']" mode="getValue" />
    <xsl:text>&#160;</xsl:text>
   </div>
   <div class="size">
    <xsl:variable name="size">
     <xsl:apply-templates select="key[text()='Size']" mode="getValue" />
    </xsl:variable>
    <xsl:value-of select="round($size div 10240) div 100" />
   </div>
  </div>
 </xsl:template>
 
 <xsl:template match="key" mode="getValue">
  <xsl:value-of select="following-sibling::*[1]" />
 </xsl:template>
 
 <xsl:template match="key" mode="getAsUri">
  <xsl:variable name="txt">
   <xsl:apply-templates select="." mode="getValue" />
  </xsl:variable>
  <xsl:text>
http://127.0.0.1:8000/
</xsl:text>
  <xsl:value-of select="substring-after($txt,'file:///')"
   disable-output-escaping="yes" />
 </xsl:template>
che sbaglio??

 che sbaglio??
mi riporta tutti link fissi 
http://127.0.0.1:8000/
 senza proseguire con 
Users/etc...

 > Non serve alcuna genialità, basta conoscere un pizzico di XSLT...
un'ultima cosa, che potrei fare per passare il un valore tramite l'url?
ovvero: file.xml?host://
127.0.0.1:8000
e poi in:
 <xsl:template match="key" mode="getAsUri">
  <xsl:variable name="txt">
   <xsl:apply-templates select="." mode="getValue" />
  </xsl:variable>
  <xsl:text>
http://127.0.0.1:8000/
</xsl:text>
  <xsl:value-of select="substring-after($txt,'file:///')"
   disable-output-escaping="yes" />
 </xsl:template>
si vada a infilare quel valore al posto di:
<xsl:text>
http://127.0.0.1:8000/
</xsl:text>
Grazie mille...una volta fatto questo ho davvero risolto tutto...
ciao

 Non capisco comunque cosa ti risponda sulla 8000 di localhost...
grazie mille...davvero, mi facevi incantare dalla status bar di safari 
che segnalava file:///
cmq, sulla porta 8000 ho un server in perl...niente di che
grazie mille e ancora complimenti per il tuo file xml

 grazie mille e ancora complimenti per il tuo file xml
al dire il vero mi manca solo una cosa:
 <xsl:variable name="ip" select="document('ip.txt')" />
 
 <xsl:template match="key" mode="getAsUri">
  <xsl:variable name="txt">
   <xsl:apply-templates select="." mode="getValue" />
  </xsl:variable>
  <xsl:value-of select="$ip" />
  <xsl:value-of select="substring-after($txt,'file://localhost')" 
disable-output-escaping="yes" />
 </xsl:template>
ho provato a sostituire:
<xsl:text>
http://192.168.0.2:9000
</xsl:text>
con:
<xsl:value-of select="$ip" />
ma nn mi ritorna nessun valore...