2009 07.03.2009

Volanie viac okien onload funkcie v JavaScriptu

Tu je ďalší malý peice z podvodu JavaScriptu, ktoré som musel kopať okolo, pretože situácia commaned to. V jednom z mojich webových stránok, mal som túto situáciu, kedy som musel vykonávať "windows.onload" dvakrát. Prvá vec, ktorá by prišla do pamäte, neskúsený ako ja (Musím úprimne povedať, že od tej doby som sa pomocou JavaScriptu rámcov a knižnice, som forgotton robiť jednoduché veci na vlastnú päsť ... smutné, ale pravda), je táto metóda ...

 window.onload = onloadfn1;
 window.onload = onloadfn2;
 window.onload = onloadfn3;
 atď ..

Ospravedlňujeme sa, ale na, zvyknutý túto prácu ... nechcem diskutovať o vykonaní vedu Javascript moc ... ale podľa mojej nedávnej skúsenosti, (onloadfn3) len posledný funkcie zle vlastne vykonaný.

V normálnych situáciách, na rozdiel od bane (čo budem hovoriť o niečo neskôr) ... môžete urobiť jednu z nasledujúcich možností na vykonanie zahŕňa viac onload funkcie ....

Alebo niečo také

 Funkcia doOnLoad () {
         onloadfn1 ();
         onloadfn2 ();
         onloadfn3 ();
 }
 window.onload = doOnLoad;

Pre moje súčasnej situácii, nemôžem použiť niektorý z vyššie uvedených ...
Prečo musím zavolať windows.onload dvakrát, skôr to, že volanie dve funkcie v jednom onload funkcie? Tu je rýchly pohľad na môj problém vyhlásenie ...

"Moje stránok stránky sú štruktúrované ako WordPress Téma .... teda existuje spoločný Header.php a Footer.php, ktorý sa zaradené do všetkých stránok stránkach. K dispozícii je funkcia onload implementaion v Footer.php urobiť nejaké spoločné onload funkcie. A existuje niekoľko stránok, ktoré je potrebné niečo vlastného onload, na rozdiel od tých, ktoré uskutočňuje spoločné onload funkcie. Keby som priradiť funkciu spätného volania priamo na window.onload psovoda, bude to cez-jet skôr pridelené spätné volania v Footer.php "

.... Je to môj problém chápať :) ?

No! existuje niekoľko riešení, ktoré som nájsť. Všetci sú si veľmi podobné a hlavne implementions roztoku danej Simon Willison ods http://simonwillison.net/2004/May/26/addLoadEvent/ ) ...

Riešenie:

Stačí pridať tento kód javascript na stránky ...

 Funkcia addLoadEvent (func) {
     var oldonload = window.onload;
     if (typeof window.onload! = "funkcia") {
        window.onload = funkcie
     Else {}
        window.onload = function () {
            if (oldonload) {
                   oldonload ()
           }
           funkcie ()
        }
    }
 }

A volať to miesto obvyklého "windows.onload"

 addLoadEvent (FunctionToRunOnPageLoad);
 addLoadEvent (function () {
 / * Viac spustenie kódu na * načítaní stránky
 }); 

Výhody tohto fragmentu kódu ...
1. V prvom rade, to vám umožní mať viac windows.onload udalosti, volal z oddelených častí kódu, bez toho, aby overridding predchádzajúcej definícii
2. Je to naozaj decentné. To môže byť umiestnená v súbore s vašimi ostatnými skripty alebo v samostatnom súbore.
3. Funguje to aj v prípade, že window.onload už nastavený.


2008 20 septembra 2008

TEXTAREA Zbaliť problém v XSL / XSLT


PROBLÉM VYHLÁSENIE:
Narazil som na tento problém, pokiaľ ide o textareas v XSLs. Jednoducho povedané, problém nastáva, keď máte prázdnu <textarea> značku, potom sa zrúti do <textarea />.
tj ak by ste mali niečo ako nasledujúce vo vašom XSL a XML dát pre hodnoty Textarea, vráti nič ...

<textarea name='description'> <xsl:value-of select="DESCRIPTION"/> </ textarea>

Ako prehliadača nerozpoznajú to, spôsobí zvyšok formulára HTML pre spustenie do textového poľa.

Možné riešenia:

V XSL, pridajte non-breaking-space () po xsl: hodnota tag.BEWARE, postarať sa o tejto medzery ste pridali, počas validácie na strane klienta v tejto oblasti.

<textarea name='description'> <xsl:value-of select="DESCRIPTION"/> </ textarea>

Alebo
<xsl:value-of select="concat (DESCRIPTION,'')"/>

Alebo
Vložte <xsl:value-of select="@unknown" /> značku smerujúcu k neznámemu atribútu. To bude nútiť PHP parser XSLT generovať otváranie a zatváranie textové oblasti značku, aj keď to nemá nič medzi tým.

Alebo
Vložte <xsl:text> pole obsahujúce priestor prinútiť koncovú značku.

Avšak, hoci vyššie uvedené riešenie by sa mohlo zdať problém vyriešiť, ja som stále presvedčený, že oni majú pravdu a najlepšie spôsoby, ako ho vyriešiť. Ak existuje nejaký iný lepší spôsob stanovenia tejto vtip, Prosím, dajte nám vedieť.


2008 14 septembra 2008

Variácie testovacích podmienok XSL (Zbierka nálezov a XSL: IF a XSL: Pri testovacie podmienky)

Zakaždým, keď som musel urobiť XSL: IF alebo XSL: PO test, musím sa vrátiť do príručiek. Nikdy som Zdá sa, že pamätať si ich. Myslel som, že by bolo viac tam, rovnako ako ja, ktorí by radšej prednosť tomu, aby všetci, je to možné, na jednom mieste, pripravený k uvedeným v prípade potreby.

Pre tých, ktorí sú nové ... Syntax XSL: IF

<xsl:if test="expression">
<- Obsah:! Šablóny ->
</ Xsl: if>

Xsl: if / xsl: keď test Collection
Podmienky dole sú jednoduchá a zrozumiteľná. Takže verím, že to nie je potreba veľa vysvetlenie

<xsl:if test="position()=last()-1">
To v prípade, že posledný, ale jeden prvok na zozname!
</ Xsl: if>

<xsl:if test="SALARY> 5000 ">
Plat tejto osoby je väčšia ako Rs. 5000
</ Xsl: if>

<xsl:if test="count(JOBS)> 3 ">
Existuje viac ako 3 pracovné miesta v tomto zozname!
</ Xsl: if>

<xsl:if test="(@DEPT ='SALES') alebo (@JOINYEAR = '1997')">
Táto osoba je z obchodného oddelenia alebo jeho ročník Vstup je 1997
</ Xsl: if>

<xsl:if test="EXPERIENCE">
Táto osoba má aspoň jednu skúsenosť podriadený prvok.
</ Xsl: if>

<xsl:if test="@HOBBY">
Človek má atribút koníček.
</ Xsl: if>

Rovnaké texty podmienky mohli byť použité pre XSL: vyber / XSL: PO a

xsl: vybrať

XSLT je xsl: choose návod je podobný xsl: ak ale má niekoľko kľúčových rozdielov:
• Jeden xsl: choose prvok môžete vyskúšať na viac ako jednu podmienku, a pridať rôzne uzly na výsledok stromu na základe akých podmienok je to pravda.
• xsl: vyberte prvok môže mať základnú šablónu pridať do výsledného stromu, ak žiadna z podmienok, sú pravdivé. (Porovnať xsl: if, ktorý nemá žiadny ekvivalent "iného" stavu.)
• xsl: vyberte prvok má určité čiastkové prvky, ktoré sú nevyhnutné pre prácu, zatiaľ čo vy môžete dať nejaké dobre vytvorené priečinky, ktoré chcete vo vnútri s xsl: if prvok.

<xsl:choose>
<xsl:when test="boolean-expression">
Urob niečo, keď tento logický výraz je-túry
</ Xsl: ak>
<xsl:otherwise> robiť niečo iné </ xsl: inak>
</ Xsl: Vyberte>


2008 August 13 2008

Tokenizing oddeľovačmi reťazec vnútri XSL

Ak vašu požiadavku rozdeliť uzla hodnotu vo formáte XML, ktorý obsahuje reťazec oddelený hodnoty, do jednotlivých položiek, potom ste na správne miesto ... pozrite sa na nižšie uvedenom príklade. Ak ste oboznámení s trochou XML a XSL ... Nemyslím si, že budete potrebovať nejaké vysvetlenie.
Aj tento príklad zahrňuje použitie funkcií ako je XSL xsl: call-template, xsl: substring-before, xsl: substring-after, či to, čo ste po ňom.

XML, ktoré sa spracovávajú (food.xml): -
Predpokladajme, že úlohou je tokenize reťazec oddelený čiarkou, v na "kľúčových slov" tagov

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

Výsledná výstup 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>

Netreba dodávať, že ... stačí zmeniť parameter "delimitr" na oddeľovač podľa vlastného výberu


2008 Augusta 4. 2008

Problém s umiestnením () v XSL ... alebo je to?

Mal som tento problém strage pri vytváraní XSL dnes. Hľadali odpovede na celom internete, ale couldnt nájsť žiadne .... Vlastne myslím, že! Ja viem, čo dint môj problém bol, tak čo mám hľadať?

Každopádne! Len v prípade, že máte tento istý problém taky a nejako o moc síl sa vám podarilo pristáť na tejto stránke ... ďakujem by ste mi veľa ... A ak ste náhodou pristál na tejto stránke nejakú podivnú osudom a sa stalo, že developer XSL, DO MAKE A túto skutočnosť na vedomie TERAZ do budúcna príčiny, ak je nejaký deň, budete čeliť tomuto problému, potom sila nemusí byť s vami.

Problém vyhlásenie:
Mám tento XML, kde sú dva uzly s viac položiek v ňom a tovaru medzi týmito dvoma uzlami majú jeden na jedného korešpondenciu. V nižšie uvedenom príklade, každá položka v uzle <array name="PLAYURL" /> týka (zodpovedajúcej pozície) na položku v uzle <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>

Teraz mám slučku, kde aj cez slučku <array name="SITENAME">, a chcem sa dostať súvisiace položky (na zodpovedajúcu pozíciu) v <array name="PLAYURL">,

Čo by ste normálne snažiť urobiť, je ...

<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! TENTO zvyknutý fungovať ... Ach! Surpised ...

Teraz by ste asi chceli vyskúšať, niečo také ...

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

A opäť to zvyknutý pracovať ... Teraz ste poškriabaniu vašej hlave, snaží sa obrátiť každý, kto si myslíte, že pozná nejaký XSL a mohla by byť žiadny zmysel ... pokusu každú inú možnosť ... a ešte to nebude fungovať ... No! To je čo sa mi stalo aspon ...

Dont Zúfalstvo! Skúste to

<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ýtaj sa ma prečo to funguje. Príčina i dont mať správny dôvod ... ak nechcete! Prosím, Drop komentár. To by mohlo byť celkom užitočné. Tiež! Ak máte lepší názov pre tento post, to ma vysadil riadku :)


2008 August 2008 2

Nastavenie DOCTYPE v XSL

Minulý týždeň som vytvoril Progessive HTML / CSS layout pre klienta, skúša to v IE6, IE7 a FF 3, vyzeral úplne v poriadku ... až! Rozloženie šiel ďalej po manufacting cyklu. To sa nepodarilo. Prvky rozloženie stránky len chodil všade, kedy bolo rozloženie HTML prevedené do XML a XSL pre neho použitá ... trapas!

Nemohol spať v poriadku cez víkend, v očakávaní pondelňajšieho rána, kedy budem musieť opraviť tento SH **. Ale teraz tak trochu zažiť pri riešení týchto situácií (druh prehliadača vtipy, mám na mysli), vedel som, že to musel urobiť s ničím iným, ale DOCTYPE .... a bolo to ...

Problém:
Chcete, aby kontrolu nad DOCTYPE, pretože vaše transformácie bude obsahovať predvolené DOCTYPE explicitne, a vy rozloženie bude pozor na žreb.

Riešenie:
XSLT špecifikácia poskytuje výstupné metódy nastaviť na DOCTYPE z výberom. Aj pre nás vývojári užívateľského rozhrania by tém záujmu je HTML výstup metódy a XML výstupné metódy .

No! Pred nudiť, tu je oprava.

Napr. Za, ak by ste mali nasledujúce DOCTYPE v HTML verzii:. -

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

Potom v XSL by ste mať nasledujúce: -

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

a konečne! sa uistite, že XSLT výstup počúva DOCTYPE ste si vybrali.


2008 04.05.2008

Patrí XSL v XSL

Ak XML / XSL transformácie je váš domian, potom tam sú časy, kedy chceme peice Dynamic Kód pre knižnice položky (ktoré sa majú vykonať opakovane použiteľné). Čo mám na mysli, by pravdepodobne byť jasnejšie v tomto príklade scenára.

Predstavte si, že vytvorenie webovej stránky (a pomocou XML, XSL transfroms Samozrejme) a väčšina stránok by mal Komentáre modul. No! potom buď kopírovanie alebo vložte tento kód do každej šablóny stránky (čo Nemám povedať, ale aby údržby a opráv nočná mora), alebo ešte lepšie, môžete vytvoriť INCLUDE súbor, ktorý by mohol byť vtiahnutá, kde niekedy budete chcieť do stránky ( y) ...
Tak ako sa Vytvárame XSL INCLUDE súbor a zahrnúť ho do iného súboru XSL? Tu je, ako ...

Stačí, aby sa veci jasné ... tu je stručný prehľad súborov, ktoré si vytvorí ... tu budeme, vrátane informácií o ovocie a zeleninu do materskej stránky s názvom jedlo.

1. food.xml - xml súbor dát, na ktorých bude aplikovať transformácie
2. food.xsl - hlavná XSL súbor, ktorý zmení naše food.xml
3. inc_fruits.xsl - XSL patrí súbor, ktorý bude poskytovať ovocie dát
4. inc_vegtables.xsl - XSL patrí súbor, ktorý bude poskytovať vetetables dát

I dont myslím, že mám značnej miery vysvetľujú, kódy pre vyššie uvedených skutočností bude vysvetľovať ...

FOOD.XML


<?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>
<fruits type="tropical">
<item name="mango" moreinfo="http://www.mango.com">Mango is the king of fruits</item>
<item name="banana" moreinfo="http://www.banana.com">Banana once a day , keeps the doctor away</item>
<item name="orange" moreinfo="http://www.orange.com">Orange is the color and rich in vitamin C</item>
<item name="Papaya" moreinfo="http://www.papaya.com">Papaya - Hot when raw, cold when ripe</item>
</fruits>

<vegetables>
<item name="spinach" moreinfo="http://www.spinach.com">Spinach is full of iron</item>
<item name="asparagus" moreinfo="http://www.asparagus.com">Asparagus contains loads of vitamin D </item>
<item name="fenugreek" moreinfo="http://www.fenugreek.com">Fenugreek is rich in vitamin C</item>
</vegetables>
</food>


FOOD.XSL


<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:include href="inc_fruits.xsl" />
<xsl:include href="inc_vegetables.xsl" />
<xsl:template match="/">
<html>
<head>
<title>Title</title>
</head>
<body>
<h3><xsl:value-of select="/food/description" /></h3>
Modification Date : <xsl:value-of select="/food/date" />
<hr/>
<h5> About Fruits</h5>
<xsl:call-template name="about_fruits"/>

<hr/>
<h5> About Vegetables</h5>
<xsl:call-template name="about_vegetables"/>

<hr/>
</ Body>
</ Html>
</ Xsl: template>
</ Xsl: stylesheet>


INC_FRUITS.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="iso-8859-1" />
<xsl:template name="about_fruits">
<xsl:for-each select="/food/fruits/item/@*">
attribute name : <xsl:value-of select="name()"/>
attribute value : <xsl:value-of select="."/> <br />
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>


INC_VEGETABLES.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="iso-8859-1" />
<xsl:template name="about_vegetables">
<xsl:for-each select="/food/vegetables/item/@*">
attribute name : <xsl:value-of select="name()"/>
attribute value : <xsl:value-of select="."/> <br/>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>

Stiahnuť všetky vyššie uvedené súbory tu v 252 stiahnutie)


2008 04.04.2008

Práca s atribútmi uzlov XML v XSLT

Ak používate XML a XSL, potom ste možno narazili na dobu, kedy budete musieť pohrať s vlastnosťami a hodnotami XML uzlov vo vás XSL. Sú hŕbu miest s dlhou zubořezu informácií o tomto, ale žiadny som našiel boli krátke a presné ... To nie je XML / XSL tutoriál, ale môj pokus dať dohromady, nejaký cheat zoznam ...

Vzorka XML, že budeme pracovať s vyzerá takto ...

<?xml version="1.0" encoding="ISO-8859-1"?>
<?xml-stylesheet type="text/xsl" href="food.xsl"?>
<food>
<fruits type="tropical">
<item name="mango" moreinfo="http://www.mango.com">Mango is the king of fruits</item>
<item name="banana" moreinfo="http://www.banana.com">Banana once a day , keeps the doctor away</item>
<item name="orange" moreinfo="http://www.orange.com">Orange is the color and rich in vitamin C</item>
<item name="Papaya" moreinfo="http://www.papaya.com">Papaya - Hot when raw, cold when ripe</item>
</fruits>
</food>

Umožňuje tak začína transformácia našej nad XML pomocou XSL

Príklad 1: Zobrazenie hodnoty na vybrané parametre

<xsl:value-of select="/food/fruits/item[@name='orange']" /><br />
to get more information about <a href="{/food/fruits/item[@name='orange']/@moreinfo}" target="new" ><xsl:value-of select="/food/fruits/item[@name='orange']/@name" /> </a>

HTML Výsledok bude vyzerať

Orange is the color and rich in vitamin C,
to get more information about <a href="http://www.orange.com" target="new">


Príklad 2: Opakovanie pomocou XML a zobrazenie všetkých názvy atribútov a ich hodnoty

<xsl:for-each select="/food/fruits/item/@*">
attribute name : <xsl:value-of select="name()"/>,
attribute value : <xsl:value-of select="."/> <br />
</xsl:for-each>

HTML Výsledok bude vyzerať


attribute name : name, attribute value : mango
attribute name : moreinfo, attribute value : http://www.mango.com
attribute name : name, attribute value : banana
attribute name : moreinfo, attribute value : http://www.banana.com
attribute name : name, attribute value : orange
attribute name : moreinfo, attribute value : http://www.orange.com
attribute name : name, attribute value : Papaya
attribute name : moreinfo, attribute value : http://www.papaya.com


Stiahnuť všetky vyššie uvedené súbory tu (245 stiahnutie)



Na tomto mieste, budem držať aktualizáciu to s novými poznatkami ...


NDK domov | Vyjadrenie IT | Vyjadrenie poschodia | Vyjadrenie Penmenship | Vyjadrenie Awe | Vyjadrenie Myself