2008 August 2008 13

Tokenizing Skilletegn String inne en XSL

Hvis kravet er å splitte en node verdi i en XML, som inneholder en avgrenset streng av verdi, i individuelle elementer, da har du nådd riktig sted ... ta en titt på eksempelet nedenfor. Hvis du er kjent med litt av XML og XSL ... jeg tror ikke du ville trenge noen forklaring.
Også dette inkluderer eksempel på bruk av XSL-funksjoner som xsl: call-mal, xsl: delstreng-før, xsl: delstreng-etter, hvis det er det du er ute etter.

XML til å bli transformert (food.xml): -
Anta oppgaven er å tokenize strengen avgrenset med komma, i koden "søkeordene"

<?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>

Resulterende utgang 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>

Unødvendig å si ... bare endre parameteren "delimitr" til skilletegnet av ditt valg


2008 11.08.2008

Last ned denne Faux Posisjonert WordPress mal

Hvis du er en av de gutta (som meg), som ofte sjekke CSS for godt laget HTML-siden, for å bli inspirert eller hva, så du kanskje har lagt merke til at vi har brukt Faux Positioning (som allerede nevnt i min tidligere artikkel Vi er bruker Faux absolutt posisjonering: A Brilliant CCS Layout )

Vi gjorde noen god jobb på denne malen, så tenkte det ville hyggelig å dele det .... Last ned denne WordPress Theme (lastet ned 195 ganger)


2008 August 2008 7

Animoto: Really Nice "Rich User Interface" uten blits!

Har du sett animoto.com? Vel! dette er ikke en AD, jeg likte det! og det er Kiss ASS UI faktisk

Jeg kom over dette nettstedet for noen uker siden. Så den første siden, Dint bry mye. For meg var det bare et annet nettsted med litt rikt flash-innhold, slik at brukerne kan laste opp bilder, velge noen spor og konvertere den til et fint bilde lysbildefremvisning. Last ned FLV, og legg den på et nettsted etter eget valg (YouTube, Metacafe, Facebook og liker) ... PERIODE.

I går da jeg så de interne flyten sider, som tok brukeren gjennom oppretting av denne slideshow .... Jeg gikk OH WOW! Da jeg innså at det ikke var litt FLASH brukes. Det var virkelig en rikt brukergrensesnitt. Alle UI utviklere må etterstrebe å skape eller i det minste være en del av teamet som har gjort dette grensesnittet .... Absolutt strålende! Og inspirerende!

HAR EN TITT ... http://animoto.com/ ... og registrere seg og leke med den ... bare da kan du sette pris på geni.


2008 August 2008 4

Et problem med posisjon () i XSL ... eller er det?

Jeg hadde dette strage problemet mens du oppretter en XSL i dag. Så etter svar i hele nettet, men kunne ikke finne noen .... Egentlig vel! Jeg dint vet hva mitt problem var, så hva ser jeg etter?

Uansett! Bare i tilfelle du har denne samme problemet også og liksom i kraft av den FORCE du klarte å lande på denne siden ... du ville takke meg tonnevis ... Og hvis du har et uhell havnet på denne siden for noen merkelig skjebne, og du tilfeldigvis være en XSL utvikler, gjør en oppmerksom på dette NÅ, FOR FRAMTIDEN årsak, dersom en dag, står du dette problemet, så FORCE ikke kan være sammen med deg.

Problem statement:
Jeg har denne XML, hvor det er to noder med flere elementer i den og de elementer mellom disse to nodene har en 1-1 korrespondanse. I eksempelet nedenfor, hvert element i noden <array name="PLAYURL" /> gjelder (tilsvarende posisjon) til et element i den noden <array 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>

Nå har jeg en løkke, hvor jeg sløyfe <array name="SITENAME">, og jeg ønsker å få den relaterte element (ved tilsvarende posisjon) i <array name="PLAYURL">,

Hva ville du normalt prøve gjøre er ...

<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>

DESSVERRE! DENNE wont arbeide ... Ah!! Surpised ...

Nå ville du sannsynligvis ønske å prøve, noe som dette ...

<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>

Og igjen denne wont arbeide ... Nå skrape hodet, prøver å kontakte alle som du tror vet noe XSL og kunne være til noen hjelp ... du prøver annenhver alternativ ... og fortsatt den wont arbeide ... Vel! Dvs hva som skjedde med meg atleast ...

DONT Fortvilelse! PRØV DETTE

<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 spør meg hvorfor det fungerer. Fordi jeg ikke har en rett grunn ... hvis du gjør! Vennligst slippe en kommentar. Det kan være ganske nyttig. Også! hvis du har bedre tittel for dette innlegget, gjør send meg en linje :)


2008 August 2008 2

Stille DOCTYPE i XSL

Forrige uke jeg opprettet en progessive HTML / CSS layout for en klient, testet det i IE6, IE7 og FF 3, virket helt greit ... helt til! oppsettet gikk videre nedover manufacting syklus. Det mislyktes. Side layoutelementer bare gikk over alt da HTML layouten ble omgjort til XSL og XML brukt til det ... Bummer!

Kunne ikke sove ok i løpet av helgen, i påvente av mandag morgen, da jeg må fikse dette SH **. Men nå har en litt experince i å håndtere denne type situasjoner (leser quirks, mener jeg), visste jeg at det hadde å gjøre med annet enn DOCTYPE .... og det var ...

The Problem:
Du ønsker kontroll over DOCTYPE, siden transformasjon vil inneholde en standard DOCTYPE eksplisitt, og du layout vil være ute for en kaste.

The Solution:
XSLT specs gir utgang metoder for å sette en DOCTYPE av choise. Også for oss UI utviklere, ville temaer av interesse være HTML-utdata metoder og XML utgang metoder .

Vel! før du blir lei, her er fix.

For eksempel, hvis du hadde følgende DOCTYPE i din HTML-versjon:. -

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

Så i XSL ville du ha følgende: -

<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" />

og slutt! gjør at XSLT utgang lystrer DOCTYPE du har valgt.


NDK hjem | Uttrykke IT | Uttrykke Palate | Uttrykke Penmenship | Uttrykke Awe | uttrykke meg