2008 13 august 2008

Tokenizing Afgrænset String inde i en XSL

Hvis dit krav er at splitte en node værdi i et XML, der indeholder en afgrænset streng værdi, i enkelte elementer, så har du nået det rigtige sted ... få et kig på nedenstående eksempel. Hvis du er fortrolig med en lille smule af XML og XSL ... jeg tror ikke du ville brug for nogen forklaring.
Også dette eksempel omfatter brug af XSL funktioner som xsl: call-template, xsl: delstreng-før, xsl: delstreng-efter, hvis det er det du er ude efter.

XML at blive omdannet (food.xml): -
Antag opgaven er at tokenize strengen afgrænset af komma, i tagget "søgeord"

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

Det er overflødigt at sige ... bare ændre parameteren "delimitr" til afgrænsningstegn efter eget valg


2008 11 August 2008

Download denne Faux Positioneret WordPress Skabelon

Hvis du er en af de fyre (som mig), der ofte kontrollere CSS på godt lavet HTML-side, for at blive inspireret eller hvad, så skal du måske har bemærket, at vi har brugt Faux Positionering (som allerede nævnt i min tidligere artikel Vi er hjælp Faux Absolut Positionering: En Brilliant CCS Layout )

Vi har et godt stykke arbejde på denne skabelon, så mente, det ville rart at dele det .... Hent Denne WordPress Theme (downloadet 196 gange)


2008 7 august 2008

ANIMOTO: Really Nice "Rich User Interface" uden flash!

Har du set animoto.com? Nå! dette er ikke en annonce, jeg virkelig kunne lide det! og det Kiss ASS UI faktisk

Jeg stødte på denne hjemmeside et par uger siden. Sav den første side, fordybning genere meget. For mig var det bare et andet sted med nogle rigt Flash-indhold, der giver brugerne mulighed for at uploade billeder, vælge nogle spor og omdanne det til et flot diasshow. Hent FLV, og sætte det på ethvert websted efter eget valg (YouTube, Metacafe, Facebook og lignende) ... PERIODE.

I går da jeg så de interne flow sider, der fandt brugeren gennem oprettelse af dette diasshow .... Jeg gik OH WOW! Da jeg indså, at der ikke var lidt af flash anvendt. Det var faktisk en Rich User Interface. Alle UI-udviklere skal stræbe efter at skabe eller i det mindste være en del af det hold, der har gjort denne grænseflade .... Helt genial! Og inspirerende!

Se dig ... http://animoto.com/ ... og registrere og lege med det ... først derefter kan du sætte pris på geni.


2008 August 4, 2008

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

Jeg havde denne strage problem mens du opretter en XSL dag. Søgte efter svarene i hele nettet, men kunne ikke finde nogen .... Faktisk tror jeg! Jeg fordybning ved, hvad mit problem var, så hvad skal jeg kigge efter?

Anyway! Bare i tilfælde af at du har dette meget samme problem også, og en eller anden måde ved magt FORCE du formåede at lande på denne side ... du vil takke mig tons ... Og hvis du ved et uheld er landet på denne side for nogle mærkelige skæbne og du tilfældigvis til at være en XSL udvikler, DO gøre et notat om dette nu, TIL FREMTIDEN årsag, hvis en dag, du står overfor dette problem, så FORCE måske ikke være sammen med dig.

Problem erklæring:
Jeg har denne XML, hvor der er to noder med flere elementer i det, og de elementer mellem disse to knudepunkter har en 1-1 korrespondance. I eksemplet nedenfor, hvert element i det knudepunkt <array name="PLAYURL" /> vedrører (tilsvarende position) til et element i det knudepunkt <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>

Nu har jeg en løkke, hvor jeg løkken gennem <array name="SITENAME">, og jeg ønsker at få den tilhørende post (ved den tilsvarende position) i <array name="PLAYURL">,

Hvad ville du den normalt forsøge gø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>

DESVÆRRE! DETTE wont arbejde ... Ak! Surpised ...

Nu ville du sikkert lyst til at prøve, noget 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 Igen wont arbejde ... Nu kan du skrabe dit hoved, forsøger at kontakte alle, som du tror, ​​kender nogle XSL og kunne være til nogen hjælp ... du forsøger hver anden løsning ... og alligevel wont arbejde ... Nå! Thats hvad der skete med mig atleast ...

DONT Fortvivlelse! Prøv det

<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 hvorfor det virker. Årsag jeg dont have ret til grund ... hvis du gør! Undlad venligst at smide en kommentar. Det kan være temmelig nyttigt. Også! hvis du har en bedre titel til dette indlæg, så send mig en linje :)


2008 2 august 2008

Indstilling af DOCTYPE i XSL

Sidste uge har jeg lavet en progessive HTML / CSS layout til en klient, testet det i IE6, IE7 og FF 3, virkede helt fint ... indtil! layoutet gik videre ned ad manufacting cyklus. Det mislykkedes. Page layout elementer gik bare over det hele, når HTML layout blev omdannet til XSL og XML anvendes til det ... Øv!

Kunne ikke sove ok i løbet af weekenden, i forventning om mandag morgen, når jeg bliver nødt til at løse dette SH **. Men nu har en lille oplevelse i behandlingen af ​​den slags situationer (Browser Quirks, jeg mener), jeg vidste, at det havde at gøre med noget andet, men DOCTYPE .... og det var ...

The Problem:
Du vil have kontrol over DOCTYPE, da din transformation vil omfatte en standard DOCTYPE eksplicit, og du layout vil være ude i et kast.

Løsningen:
XSLT specs giver output-metoder for at sætte en DOCTYPE af valg. Også for os UI udviklere, vil de emner af interesse være HTML-output-metoder og XML output metoder .

Nå! før du får keder sig, her er rettelsen.

For eksempel, hvis du havde følgende DOCTYPE i din HTML-version:. -

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

Så i XSL du ville have 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 endelig! gør at din XSLT output adlyder DOCTYPE du har valgt.


NDK hjem | Udtrykke IT | udtrykke Smag | udtrykke Penmenship | udtrykke Awe | udtrykke mig