2008 13, Αυγούστου, 2008

Tokenizing String Οριοθετημένο μέσα σε ένα XSL

Εάν οι απαιτήσεις σας είναι να σπάσετε ένα κόμβο αξία σε XML, που περιέχει μια συμβολοσειρά οριοθετημένη της αξίας, σε μεμονωμένα στοιχεία, τότε έχετε φτάσει στο σωστό μέρος ... ρίξτε μια ματιά στο παρακάτω παράδειγμα. Αν είστε εξοικειωμένοι με λίγη XML και XSL ... δεν νομίζω ότι θα χρειαστεί κάποια εξήγηση.
Επίσης, αυτό το παράδειγμα περιλαμβάνει τη χρήση της XSL xsl λειτουργίες, όπως: πρόσκληση-πρότυπο, xsl: substring-πριν, xsl: substring-μετά, αν αυτό είναι ό, τι είναι μετά.

XML για να μετατραπεί (food.xml): -
Ας υποθέσουμε ότι ο στόχος είναι να κάνετε tokenize τη σειρά οριοθετείται με κόμμα, στις "Λέξεις-κλειδιά" ετικέτα

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

Συνισταμένη εξόδου 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>

Περιττό να πω ... απλά αλλάξτε την παράμετρο "delimitr" στο οριοθέτη της επιλογής σας


2008 11 του Αυγούστου, 2008

Κατεβάστε αυτό το Πρότυπο Faux Τοποθετημένο WordPress

Αν είστε ένας από αυτούς (όπως εγώ), που επισκέπτονται συχνά το CSS της καλοφτιαγμένο σελίδα HTML, για να εμπνευστείτε ή οτιδήποτε άλλο, τότε ίσως έχετε παρατηρήσει ότι έχουμε χρησιμοποιήσει FAUX θέσης (όπως έχει ήδη αναφερθεί σε προηγούμενο άρθρο μου Είμαστε χρησιμοποιώντας ψεύτικη Απόλυτη Θέσης: Ένα λαμπρό Διάταξη CCS )

Κάναμε κάποια καλή δουλειά σε αυτό το πρότυπο, έτσι σκέφτηκα ότι θα ήταν ωραίο να το μοιραστώ .... Κατεβάστε αυτό το WordPress θέμα (λήψη 196 φορές)


2008 7 Αυγ 2008

Animoto: Really Nice "Πλούσιο διεπαφής χρήστη" χωρίς φλας!

Έχετε δει animoto.com; Καλά! αυτό δεν αποτελεί μ.Χ., μου άρεσε πολύ! και είναι φιλί UI πράγματι ASS

Ήρθα σε αυτό το site πριν από λίγες εβδομάδες. Είδε την πρώτη σελίδα, DINT ενοχλεί πολύ. Για μένα, ήταν ακριβώς ένα άλλο site με κάποιο πλούσιο περιεχόμενο Flash, επιτρέποντας στους χρήστες να ανεβάσετε εικόνες, να επιλέξετε κάποιο κομμάτι και να το μετατρέψει σε μια ωραία παρουσίαση φωτογραφιών. Κατεβάστε FLV, και βάλτε το σε οποιαδήποτε τοποθεσία της επιλογής σας (το YouTube, Metacafe, το Facebook και το συμπαθεί) ... ΠΕΡΙΟΔΟΣ.

Χθες όταν είδα τις εσωτερικές σελίδες της ροής, η οποία πήρε το χρήστη μέσω της δημιουργίας αυτού του slideshow .... Πήγα OH WOW! Όταν συνειδητοποίησα ότι δεν υπήρχε λίγο φλας που χρησιμοποιείται. Ήταν πράγματι μια πλούσια User Interface. Όλες οι προγραμματιστές UI πρέπει να φιλοδοξούν να δημιουργήσουν ή τουλάχιστον να είναι ένα μέρος της ομάδας που έχει κάνει αυτή η διασύνδεση .... Απολύτως λαμπρό! Και Έμπνευση!

Ρίξτε μια ματιά ... http://animoto.com/ ... και εγγραφούν και να παίξουν με αυτό ... μόνο τότε μπορείτε να εκτιμήσετε την ιδιοφυΐα.


2008 4 Αυγ 2008

Ένα πρόβλημα με τη θέση () σε XSL ... ή μήπως είναι;

Είχα αυτό το πρόβλημα strage, δημιουργώντας παράλληλα ένα XSL σήμερα. Κοίταξε για απαντήσεις σε όλη την καθαρή, αλλά δεν μπορούσα να βρείτε οποιαδήποτε .... Στην πραγματικότητα υποθέτω! Εγώ ξέρω τι βαθούλωμα πρόβλημά μου ήταν, ναι, τι μπορώ να αναζητήσουμε;

Τέλος πάντων! Ακριβώς σε περίπτωση που έχετε αυτό ακριβώς το ίδιο πρόβλημα και εγώ με κάποιο τρόπο και με τη δύναμη της Δύναμης που κατάφερε να προσγειωθεί σε αυτή τη σελίδα ... Σας ευχαριστώ με τόνους ... Και αν έχετε λάθος εκφορτώνονται σε αυτή τη σελίδα για κάποιο περίεργο μοίρα και τυχαίνει να είναι ένας προγραμματιστής XSL, DO σημειώστε αυτό τώρα, ΓΙΑ ΤΟ ΜΕΛΛΟΝ αιτία, Αν κάποια μέρα, θα έχει να αντιμετωπίσει αυτό το ζήτημα, τότε η δύναμη θα μπορούσε να μην είναι μαζί σας.

Πρόβλημα δήλωση:
Έχω αυτό το XML, όπου υπάρχουν δύο κόμβοι με πολλά στοιχεία σε αυτό και τα στοιχεία μεταξύ αυτών των δύο κόμβοι έχουν ένα προς ένα αλληλογραφία. Στο παρακάτω παράδειγμα, κάθε αντικείμενο στον κόμβο <array name="PLAYURL" /> αφορά (αντίστοιχη θέση) σε ένα στοιχείο στον κόμβο <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>

Τώρα, έχω έναν βρόχο, όπου i βρόχο μέσω <array name="SITENAME">, και θέλω να πάρω το σχετικό στοιχείο (στην αντίστοιχη θέση) στην <array name="PLAYURL">,

Αυτό που θα προσπαθήσουμε να κάνουμε είναι κανονικά ...

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

ΣΥΓΝΩΜΗ! ΑΥΤΟ δεν θα λειτουργήσει ... Αχ! Surpised ...

Τώρα θα μπορούσε πιθανότατα να θέλουν να δοκιμάσουν, κάτι τέτοιο ...

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

Και πάλι αυτό δεν θα λειτουργήσει ... Τώρα σας ξύσιμο το κεφάλι σας, προσπαθεί να επικοινωνήσει με όλους όσους νομίζετε ότι ξέρει κάποια XSL και θα μπορούσε να είναι οποιαδήποτε βοήθεια ... προσπαθείτε κάθε άλλη επιλογή ... και ακόμα δεν θα λειτουργήσει ... Καλά! Αυτός είναι τι συνέβη σε μένα atleast ...

DONT απελπισία! Δοκιμάστε αυτό

<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 ΡΩΤΗΣΤΕ ΜΕ γιατί λειτουργεί. Αιτία i dont έχει το σωστό λόγο ... αν το κάνετε! Παρακαλώ μην ρίχνετε ένα σχόλιο. Θα μπορούσε να είναι πολύ χρήσιμα. Επίσης! αν έχετε καλύτερο τίτλο για αυτό το μήνυμα, κάντε πτώση μου μια γραμμή :)


2008 2 Αύγ 2008

Ρύθμιση του DOCTYPE σε XSL

Την περασμένη εβδομάδα είχα δημιουργήσει ένα progessive HTML / CSS διάταξη για έναν πελάτη, δοκιμαστεί στον IE6, IE7 και ύψους 3, φάνηκε απολύτως εντάξει ... ΜΕΧΡΙ! η διάταξη πήγε πιο κάτω στην manufacting κύκλο. Απέτυχε. Στοιχεία Διάταξη σελίδας μόλις πήγε σε όλη τη χώρα όταν η διάταξη HTML μετατράπηκε σε XSL και XML για να εφαρμοστεί ... Κρίμα!

Δεν μπορούσε να κοιμηθεί εντάξει τη διάρκεια του Σαββατοκύριακου, εν αναμονή της το πρωί της Δευτέρας, όταν θα έχω να διορθώσετε αυτό το SH **. Όμως, έχοντας τώρα μια μικρή πείρα επίσης στην αντιμετώπιση αυτού του είδους τις καταστάσεις (Παραξενιές Browser, εννοώ), ήξερα ότι είχε να κάνει με τίποτα άλλο, αλλά DOCTYPE .... και ήταν ...

Το Πρόβλημα:
Θέλεις έλεγχο πάνω από το DOCTYPE, αφού μετατροπή σας θα περιλαμβάνει μια προεπιλεγμένη ρητά DOCTYPE, και σας διάταξη θα είναι έξω για μια εκτίναξη.

Η Λύση:
XSLT προδιαγραφές παρέχει μεθόδους εξόδου για να ορίσετε ένα DOCTYPE την επιλογή του. Επίσης, για εμάς UI προγραμματιστές, τα θέματα ενδιαφέροντος θα είναι HTML μεθόδους παραγωγής και τις μεθόδους εξόδου XML .

Καλά! πριν έχετε βαρεθεί, εδώ είναι η λύση.

Για παράδειγμα, εάν είχε την ακόλουθη DOCTYPE στην έκδοση HTML σας:. -

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

Στη συνέχεια, στο XSL θα πρέπει να έχουν τα ακόλουθα: -

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

Τέλος, και! βεβαιωθείτε ότι δεν XSLT εξόδου σας υπακούει το DOCTYPE που έχετε επιλέξει.


NDK σπίτι | Εκφράζοντας IT | Εκφράζοντας Ουρανίσκος | Εκφράζοντας Penmenship | Εκφράζοντας δέος | εκφράζομαι