2008 13 agosto 2008

Creazione di token stringa delimitata all'interno di un XSL

Se la vostra esigenza è quella di dividere un valore del nodo in un XML, che contiene una stringa delimitata di valore, in singoli elementi, allora hai raggiunto il posto giusto ... dare un'occhiata al seguente esempio. Se si ha familiarità con un po 'di XML e XSL ... non credo che si avrebbe bisogno di alcuna spiegazione.
Inoltre, questo esempio include l'utilizzo di funzioni come XSL xsl: call-template, xsl: substring-before, xsl: substring-after, se è questo che siete dopo.

XML per essere trasformato (food.xml): -
Si supponga che il compito è quello di tokenize la stringa delimitata da una virgola, nei tag "keywords"

<?xml version="1.0" encoding="ISO-8859-1"?>
<?xml-stylesheet type="text/xsl" href="food.xsl"?>
<food>
<date>July 2008</date>
<description>All about things we eat everyday</description>
<keywords>Fruits, Vegetables, Pulses, Meat, Cereals </keywords>
</food>

XSL (food.xsl): -

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" encoding="utf-8" doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN" doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"/>
<xsl:template match="/">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>XSL 1.0 Delimited String Tokeniser</title>
</head>
<body>
<xsl:value-of select="food/meta"/>
<div >
<xsl:call-template name="tokenize">
<xsl:with-param name="string" select="food/keywords" />
<xsl:with-param name="delimitr" select="','" />
</xsl:call-template>

</div>
</body>
</html>
</xsl:template>
<xsl:template name="tokenize">
<xsl:param name="string" />
<xsl:param name="delimitr" />
<xsl:choose>
<xsl:when test="contains($string, $delimitr)">
<div style="border:1px solid red;">
<h3><xsl:value-of select="substring-before($string,$delimitr)" /></h3>
<xsl:variable name="data" select="substring-before($string,$delimitr)"/>
</div>
<xsl:call-template name="tokenize">
<xsl:with-param name="string" select="substring-after($string, $delimitr)" /><xsl:with-param name="delimitr" select="$delimitr" /></xsl:call-template>
</xsl:when>
<xsl:otherwise>
<div style="border:1px solid red;">
<h3><xsl:value-of select="$string" /></h3>
</div>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
</xsl:stylesheet>

Risultante output HTML: -

<div>
<div style="border: 1px solid red;">
<h3>Fruits</h3>
</div>
<div style="border: 1px solid red;">
<h3> Vegetables</h3>
</div>
<div style="border: 1px solid red;">
<h3> Pulses</h3>
</div>
<div style="border: 1px solid red;">
<h3> Meat</h3>
</div>
<div style="border: 1px solid red;">
<h3> Cereals </h3>
</div>
</div>

Inutile dire ... basta cambiare il parametro "delimitr" per il delimitatore di vostra scelta


2008 11 agosto 2008

Download Faux Template Posizionato WordPress

Se siete uno di quei ragazzi (come me), che spesso controllare il CSS della pagina HTML ben fatto, per trarre ispirazione o qualsiasi altra cosa, allora potreste aver notato che abbiamo usato Posizionamento FAUX (come già accennato nel mio precedente articolo Siamo utilizzando Faux posizionamento assoluto: un layout chiaro CCS )

Abbiamo fatto un buon lavoro su questo modello, quindi ho pensato che sarebbe bello condividerla .... Download Tema WordPress (scaricato 197 volte)


2008 7 agosto 2008

Animoto: Really Nice "Rich User Interface", senza Flash!

Hai visto animoto.com? Bene! questo non è un AD, mi è veramente piaciuto! ed è il bacio UI ASS davvero

Mi sono imbattuto in questo sito qualche settimana fa. Ha visto la prima pagina, a furia preoccupa molto. Per me, era solo un altro sito con un contenuto flash, ricchi, permettendo agli utenti di caricare immagini, scegliere un brano e convertirlo in una presentazione bella foto. Scarica FLV, e lo mise su un sito di vostra scelta (YouTube, MetaCafe, Facebook e simili) ... PERIODO.

Ieri quando ho visto le pagine interne di flusso, che ha avuto l'utente nella creazione di questo slideshow .... Sono andato OH WOW! Quando ho capito che non c'era po 'di FLASH utilizzato. E 'stata davvero una ricca interfaccia utente. Tutti gli sviluppatori dell'interfaccia utente deve aspirare a creare o almeno far parte del team che ha fatto questa interfaccia .... Assolutamente geniale! E stimolante!

UNO SGUARDO ... http://animoto.com/ ... e registrarsi e giocare con lui ... solo allora si può apprezzare il genio.


2008 4 agosto 2008

Un problema con la posizione () in XSL ... o è?

Ho avuto questo problema strage, mentre la creazione di un XSL oggi. Cercato delle risposte in tutta la rete, ma couldnt trovare .... In realtà credo! I furia so qual è il mio problema era, quindi cosa devo cercare?

In ogni caso! Solo nel caso in cui si verifica questo problema stesso troppo e in qualche modo dal potere della Forza è riuscito ad atterrare su questa pagina ... tu mi avrebbe ringraziato tonnellate ... E se avete accidentalmente atterrato su questa pagina per qualche strano destino e vi capita di essere uno sviluppatore XSL, FARE UNA NOTA DI QUESTO ORA, PER IL FUTURO causa, se un giorno, è necessario affrontare questo problema, allora la forza potrebbe non essere con voi.

Problema dichiarazione:
Ho questa XML, dove ci sono due nodi con più elementi in esso e gli elementi tra questi due nodi hanno una corrispondenza uno ad uno. Nell'esempio riportato di seguito, ogni elemento nel nodo <array name="PLAYURL" /> si riferisce (posizione corrispondente) a un elemento in <array nodo name="SITENAME" />

<?xml version="1.0" encoding="utf-8"?>
<myplaylists>
<playlist>
<title>Best of Rest </title>
<array name="SITENAME">
<str>www.musicindiaonline.com</str>
<str>www.dhingana.com</str>
<str>www.raaga.com</str>
<str>www.smashits.com</str>
<str>www.desimusic.com</str>
<str>www.musicplug.in</str>
</array>
<array name="PLAYURL">
<str>http://www.musicindiaonline.com/123/</str>
<str>http://www.dhingana.com/play/123</str>
<str>http://www.raaga.com/123</str>
<str>http://ww.smashits.com/123</str>
<str>http://www.desimusic.com/123</str>
<str>http://www.musicplug.in/123</str>
</array>
</playlist>
</myplaylists>

Ora, ho un ciclo in cui i loop through <array name="SITENAME">, e voglio ottenere l 'articolo correlato (nella posizione corrispondente) in <array name="PLAYURL">,

Che cosa si dovrebbe normalmente fare è provare ...

<xsl:for-each select="myplaylists/playlist/array[@name='SITENAME']/str">
play from : <a href="{../../array[@name='PLAY']/str[position()]}"/> <xsl:value-of select="." /></a>
</xsl:for-each>

SORRY!! QUESTO non funzionerà ... Ah!! Mi sorprende ...

Ora probabilmente provare, qualcosa di simile ...

<xsl:for-each select="myplaylists/playlist/array[@name='SITENAME']/str">
<xsl:variable name="pos"> <xsl:value-of select="position()"/></xsl:variable>
play from : <a href="{../../array[@name='PLAY']/str[$pos]}"/> <xsl:value-of select="." /></a>
</xsl:for-each>

E Anche in questo caso non funzionerà ... Ora è grattarsi la testa, cercando di contattare tutti quelli che si pensa un po 'conosce XSL e potrebbe essere di alcun aiuto ... si tenta ogni altra opzione ... e ancora non funzionerà ... Beh! Questo è quello che è successo a me atleast ...

DONT DISPERAZIONE! PROVATE QUESTO

<xsl:for-each select="myplaylists/playlist/array[@name='SITENAME']/str">
<xsl:variable name="pos-int" select="position()" />
play from : <a href="{../../array[@name='PLAY']/str[$
<xsl:for-each select="myplaylists/playlist/array[@name='SITENAME']/str">
<xsl:variable name="pos-int" select="position()" />
play from : <a href="{../../array[@name='PLAY']/str[$ pos-int ]}"/> <xsl:value-of select="." /></a>
</xsl:for-each>
]}"/> <xsl:value-of select="." /></a>
</xsl:for-each>

Dont ask ME PERCHE 'FUNZIONA. Perchè non ho una retta ragione ... se lo fate! Si prega di far cadere un commento. Potrebbe essere molto utile. Anche! se avete una migliore titolo per questo post, fare mi mandi due righe :)


2008 2 agosto 2008

Impostazione del DOCTYPE in XSL

La settimana scorsa ho creato un progressive HTML / CSS layout per un cliente, testato in IE6, IE7 e FF 3, sembrava perfettamente bene ... fino a! il layout è andato più in basso del ciclo manufacting. Non è riuscito. Elementi di layout di pagina appena andato in tutto il luogo in cui il layout HTML è stato convertito in XML e XSL applicato ... Bummer!

Non riuscivo a dormire bene durante il fine settimana, in previsione di Lunedi mattina, quando dovrò risolvere questo SH. ** Ma ora experince avere un po 'nel trattare con questo tipo di situazioni (Quirks browser, voglio dire), sapevo che aveva a che fare con niente altro che DOCTYPE .... ed è stato ...

Il problema:
Volete il controllo del DOCTYPE, dal momento che la vostra trasformazione include un DOCTYPE di default in modo esplicito, e il layout sarà fuori per un lancio.

La soluzione:
XSLT specifiche fornisce i metodi di output per impostare un DOCTYPE la scelta di. Inoltre, per noi sviluppatori dell'interfaccia utente, i temi di interesse sarebbero i metodi di output HTML e metodi di output XML .

Bene! prima ci si annoia, ecco la correzione.

Per esempio, se tu avessi il DOCTYPE seguente versione HTML:. -

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

Poi nel XSL si dovrebbe disporre di: -

<xsl:output method="html" doctype-system="http://www.w3.org/TR/html4/loose.dtd" doctype-public="-//W3C//DTD HTML 4.01 Transitional//EN" indent="yes" />

e, infine! facciamo in modo l'output XSLT obbedisce al DOCTYPE che avete scelto.


NDK casa | Esprimendo IT | Gusto Esprimendo | Penmenship Esprimendo | Awe Esprimendo | esprimermi