2008 13 août 2008

Tokenizing chaîne délimitée intérieur d'un XSL

Si votre exigence est de diviser une valeur dans un noeud XML, qui contient une chaîne délimitée de la valeur, en éléments individuels, alors vous avez atteint le bon endroit ... jeter un oeil à l'exemple ci-dessous. Si vous êtes familier avec un peu de XML et XSL ... Je ne pense pas que vous auriez besoin d'explication.
En outre, cet exemple inclut l'utilisation de fonctions comme XSL xsl: call-template, xsl: substring-before, xsl: substring-after, si c'est ce que vous êtes après.

XML pour être transformé (food.xml): -
Supposons que la tâche est de tokenize la chaîne délimitée par des virgules, dans les le 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>

De sortie résultant 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 de dire que ... il suffit de changer le paramètre "delimitr" pour le délimiteur de votre choix


2008 11 août 2008

Télécharger ce faux modèle Positionné WordPress

Si vous êtes un de ces gars (comme moi), qui, souvent, vérifier le CSS de la page HTML bien fait, à vous en inspirer ou que ce soit, alors vous avez sans doute remarqué que nous avons utilisé de positionnement FAUX (comme déjà mentionné dans mon précédent article , nous sommes en utilisant Faux Positionnement absolu: Une mise en page Brilliant CCS )

Nous avons fait du bon travail sur ce modèle, donc pensé qu'il serait agréable de le partager .... Télécharger ce thème WordPress (téléchargé 195 fois)


2008 7 août 2008

Animoto: Really Nice "interface utilisateur riche" sans Flash!

Avez-vous vu animoto.com? Eh bien! ce n'est pas un AD, j'ai vraiment aimé! et il est Baiser UI ASS effet

Je suis tombé sur ce site il ya quelques semaines. Saw la première page, à force dérange pas beaucoup. Pour moi, c'était juste un autre site avec du contenu Flash riche, permettant aux utilisateurs de télécharger des images, choisir une voie et de le convertir en un diaporama photo sympa. Télécharger FLV, et le mettre sur n'importe quel site de votre choix (YouTube, MetaCafe, Facebook et les goûts) ... PÉRIODE.

Hier, quand j'ai vu les pages de flux internes, qui a eu l'utilisateur à travers la création de ce diaporama .... Je suis allé OH WOW! Quand j'ai réalisé qu'il n'y avait pas peu de Flash utilisé. Il était en effet une interface utilisateur riche. Tous les développeurs d'assurance-chômage doit aspirer à créer ou au moins faire partie de l'équipe qui a fait cette interface .... Absolument génial! Et inspirant!

AVOIR UN REGARD ... http://animoto.com/ ... et inscrivez-vous et jouer avec lui ... alors seulement peut-on apprécier le génie.


2008 4 août 2008

Un problème avec la position () dans XSL ... ou est-ce?

J'ai eu ce problème strage tout en créant un XSL aujourd'hui. Nous avons cherché des réponses à travers le net, mais nous ne pouvions trouver un .... En fait, je crois! Je sais à force quel était mon problème, alors que dois-je chercher?

Quoi qu'il en soit! Juste au cas où vous avez ce même problème aussi et en quelque sorte par la puissance de la force que vous réussi à atterrir sur cette page ... vous me remercierez ... tonnes Et si vous avez accidentellement atterri sur cette page pour un destin étrange et vous arrive d'être un développeur XSL, font une NOTE DE CE Maintenant, pour la cause de l'avenir, si un jour, vous faites face à cette question, alors la force pourrait ne pas être avec vous.

Énoncé du problème:
J'ai ce code XML, où il ya deux nœuds avec plusieurs éléments en elle et les éléments entre ces deux nœuds ont une correspondance une à une. Dans l'exemple ci-dessous, chaque élément dans le noeud <array name="PLAYURL" /> concerne (position correspondant) d'un élément dans le noeud <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>

Maintenant, j'ai une boucle, où i boucle à travers <array name="SITENAME">, et je veux obtenir le point connexe (à la position correspondante) dans <array name="PLAYURL">,

Qu'est-ce que vous essayez de faire est normalement ...

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

DÉSOLÉ! Cela ne marchera pas ... Ah!! Surpris ...

Maintenant, vous auriez probablement eu envie d'essayer, quelque chose comme ça ...

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

Et Encore une fois cela ne marchera pas ... Maintenant, vous vous gratter la tête, en essayant de communiquer avec tous ceux qui vous pensez sait quelques XSL et pourrait être d'aucun secours ... vous essayez toutes les autres options ... et encore cela ne fonctionnera pas ... Eh bien! Thats ce qui m'est arrivé ... atleast

EXCLURE DÉSESPOIR! TRY THIS

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

NE ME DEMANDEZ POURQUOI ÇA MARCHE. Parce que je n'ai pas de bonne raison ... si vous le faites! S'il vous plaît ne déposer un commentaire. Il pourrait être assez utile. Aussi! si vous avez un meilleur titre pour ce poste, envoyez-moi faire une ligne :)


2008 2 août 2008

Réglage de la DOCTYPE en XSL

La semaine dernière, j'ai créé un progessive HTML / CSS mise en page pour un client, elle a testé dans IE6, IE7 et FF 3, semblait parfaitement bien ... jusqu'à ce que! la mise en page est allé plus loin vers le bas du cycle manufacting. Il a échoué. Éléments de mise en page juste allé un peu partout où la mise en page HTML a été convertie en XSL et XML qui lui est appliquée ... Bummer!

Impossible de dormir ok le week-end, en prévision de lundi matin, quand je vais devoir corriger ce SH **. Mais maintenant, ayant une experince peu dans le traitement de ce genre de situations (Quirks navigateur, je veux dire), je savais qu'il avait à faire avec rien d'autre, mais DOCTYPE .... et c'était ...

Le problème:
Vous voulez un contrôle sur le DOCTYPE, depuis la transformation de votre comprendra un DOCTYPE défaut explicitement, et vous la disposition sera absent pour un tirage au sort.

La solution:
XSLT spécifications fournit des méthodes de sortie de fixer un DOCTYPE du de choise. Aussi, pour nous les développeurs d'assurance-chômage, les sujets d'intérêt serait méthodes de sortie HTML et méthodes de sortie XML .

Eh bien! avant tu t'ennuies, voici la solution.

Pour exemple, si vous aviez le DOCTYPE suivant dans votre version HTML:. -

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

Ensuite, dans le XSL vous devez avoir ce qui suit: -

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

et enfin! ne vous assurer que votre sortie XSLT obéit le DOCTYPE que vous avez choisi.


NDK la maison | Exprimant IT | Bouche Exprimant | Penmenship Exprimant | Awe Exprimant | m'exprimer