2009 7. ožujka 2009

Pozivanje više Windows Onload funkcije u JavaScript

Evo još malo od peice Javascript trikovima da sam morao iskopati oko, jer situacija to commaned. U jednom od mojih web stranica, morao sam ovu situaciju u kojoj sam morao provesti "windows.onload" dva puta. Prva stvar koju bi došao do neiskusan umu poput moje (Moram iskreno reći da, budući da sam bio koristeći javascript okvire i biblioteke, ja sam forgotton raditi jednostavne stvari na svoje ... tužno, ali istinito), je sljedeća metoda ...

 window.onload = onloadfn1;
 window.onload = onloadfn2;
 window.onload = onloadfn3;
 itd. ..

Žao nam je reći, ali to neće raditi ... ne želim raspravljati o izvršenju znanost Javascript puno ... ali u skladu s mog nedavnog iskustva, samo zadnja funkcija (onloadfn3) bolesna zapravo će se izvršiti.

U normalnim situacijama, za razliku od moje (što ću govoriti o malo kasnije) ... možete učiniti jedno od sljedećeg izvršiti mutliple onload funkcije ....

Ili nešto ovako

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

Za moju trenutnu situaciju, ne mogu koristiti bilo koji od gore ...
Zašto trebam nazvati windows.onload dva puta, a ne da zovete dvije funkcije u jednom onload funkciji? Ovdje je brzi pogled na moj problem gubitka ...

"Moji web stranice su strukturirane poput Wordpress temu .... tj. postoji zajednički Header.php i Footer.php koji se uključeni u sve web stranice. Tu je implementaion onload funkcija u Footer.php učiniti neke zajedničke onload funkcije. I postoji nekoliko stranica koje je potrebno nešto vlastitog ONLOAD, osim onih koji obavljaju zajedničke funkcije onload. Ako sam dodijeliti funkciju za povratni poziv izravno na window.onload rukovatelj, to će više-voziti prethodno dodijeljene callbacks u Footer.php "

.... Je li moj problem razumio :) ?

Dobro! postoji nekoliko rješenja koja ja je pronaći. Svi oni su vrlo slične i uglavnom implementions otopine koju Simon Willison ( http://simonwillison.net/2004/May/26/addLoadEvent/ ) ...

Rješenje:

Jednostavno dodajte ovaj javascript kod za stranice ...

 addLoadEvent funkcija (funkcija) {
     var oldonload = window.onload;
     if (typeof window.onload! = 'funkcija') {
        window.onload = funkcija
     Else {}
        window.onload = funkcija () {
            if (oldonload) {
                   oldonload ()
           }
           funkcija ()
        }
    }
 }

I nazovite ga, umjesto uobičajenog "windows.onload"

 addLoadEvent (FunctionToRunOnPageLoad);
 addLoadEvent (funkcija () {
 / * Više koda na stranici opterećenja pokazuje *
 }); 

Prednosti ovog koda isječak ...
1. Prvenstveno, to omogućuje vam da imate više windows.onload događanja, nazvan od odvojene dijelove koda, bez overridding prethodnu definiciju
2. To je stvarno neprimjetna. To se može smjestiti u datoteku s drugim skriptama ili u zasebnoj datoteci.
3. Djeluje čak i ako window.onload je već postavljena.


2008 20. rujan 2008

Tekstualno polje Collapse problem u XSL / XSLT


PROBLEM IZJAVA:
JA ran u ovaj problem u vezi textareas u XSLs. U jednostavnim riječima, problem nastaje kada imate prazan <textarea> oznaku, onda će ga srušiti na <textarea />.
odnosno ako je nešto poput sljedećeg u vašem XSL i XML podataka za tekstualno polje vrijednosti, vraća ništa ...

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

Kao preglednici ne prepoznaje, to će uzrokovati ostatak u obliku HTML pokrenuti u prostoru za tekst.

Moguća rješenja:

U XSL, dodajte razbijanje ne-prostor () nakon XSL: vrijednost tag.BEWARE, da se brine o ovom dodatnog prostora ste dodali tijekom strani klijenta validations u ovom području.

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

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

Ili
Umetnite <xsl:value-of select="@unknown" /> oznaku pokazuje na nepoznatom atribut. To će prisiliti PHP parser XSLT za generiranje pozivni otvaranja i zatvaranja tag teksta, čak i ako nema ništa između.

Ili
Umetnite <xsl:text> polje sadrži prostor za silom zatvaranja oznaku.

Međutim, iako su navedene rješenja može činiti da riješi problem, ja sam još uvijek nije uvjeren da su pravo i najbolje načine kako to popraviti. Ako postoji bilo koji drugi bolji način određivanja ovu Quirk, molimo vas da nas obavijestite.


2008 14. rujan 2008

Raznolikost XSL testnim uvjetima (Zbirka XSL: IF i XSL: Kada testni uvjeti)

Svaki put moram napraviti XSL: IF ili XSL: KADA test, moram se vratiti na referentnih knjiga. Ja nikada činiti se da ih ne zaboravite. Je smatrao da će biti više vani, baš poput mene, koji bi radije vole da imaju sve od njih, moguće na jednom mjestu, spremni da se iz kada je to potrebno.

Za one koji su novi ... Sintaksa za XSL: IF

<xsl:if test="expression">
<- Sadržaj: Predložak ->
</ XSL: ako>

XSL: ako / XSL: kad Test Collection
Uvjeti u nastavku su sve jednostavno i samo sebi. Dakle, vjerujem da neće trebati puno objašnjenja

<xsl:if test="position()=last()-1">
Ovo posljednje, ali ako je jedan element na popisu!
</ XSL: ako>

<xsl:if test="SALARY> 5000 ">
Plaća te osobe veći od Rs. 5000
</ XSL: ako>

<xsl:if test="count(JOBS)> 3 ">
Postoji više od 3 radna mjesta u ovom popisu!
</ XSL: ako>

<xsl:if test="(@DEPT ='SALES') ili (@JOINYEAR = '1997')">
Ova osoba je iz odjela prodaje ili njegov Godina Ulazak je 1997
</ XSL: ako>

<xsl:if test="EXPERIENCE">
Ta osoba ima atleast jedan element ISKUSTVA dijete.
</ XSL: ako>

<xsl:if test="@HOBBY">
Osoba ima hobi atribut.
</ XSL: ako>

Isti tekst uvjeti mogu se koristiti za XSL: Odaberite / XSL: KADA kao i

XSL: odaberite

XSLT je XSL: izaberite upute sličan XSL: ako već ima nekoliko ključne razlike:
• Jedan XSL: izaberite element može testirati za više od jednog stanju i dodati različite čvorove u stablu rezultata na temelju koje je uvjet true.
• XSL: izaberite element može imati zadani predložak za dodavanje rezultata stabla, ako nijedan od uvjeta su istinite. (Usporedi XSL: ako, koja nema ekvivalent je "drugo" stanje.)
• XSL: izaberite element ima specifične podelementi koji su potrebni za to da rade, a možete staviti bilo dobro oblikovan elemente želite unutar jedne XSL: ako element.

<xsl:choose>
<xsl:when test="boolean-expression">
Učinite nešto kada je boolean izraz SLICI-
</ XSL: kad>
<xsl:otherwise> učiniti nešto drugo </ XSL: inače>
</ XSL: odaberite>


2008 13. kolovoz 2008

Tokenizing delimited String unutar XSL

Ako vaš zahtjev je podijeliti čvor vrijednost u XML, koji sadrži niz delimited vrijednosti, u pojedinim stavkama, onda ste došli na pravo mjesto ... imati pogled na donjem primjeru. Ako ste upoznati s malo XML i XSL ... Ne mislim da će trebati objašnjenje.
Također, ovaj primjer uključuje uporabu XSL funkcija poput XSL: poziva predloška, ​​XSL: podniz-prije, XSL: podniz poslije, ako je to ono što ste poslije.

XML se može pretvoriti (food.xml): -
Pretpostavimo da je zadatak tokenize string ograničila zarezom, u za tag "Ključne riječi"

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

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

Nepotrebno je reći ... samo promijeniti parametar "delimitr" do graničnika po Vašem izboru


2008 4. kolovoz 2008

Problem s položaja () u XSL ... ili je to?

Imao sam ovaj problem, dok strage stvaranje XSL danas. Tražiti odgovore u cijeloj mreži, ali nije mogao pronaći bilo .... Zapravo mislim! Ja ostaviti trag znati što moj problem je bio, tako što trebam tražiti?

U svakom slučaju! Samo u slučaju da se ovaj vrlo isti problem također i nekako po snazi ​​SNAGU je uspio sletjeti na ovoj stranici ... što bi mi zahvaliti tona ... A ako ste slučajno došli na ovu stranicu za neke čudne sudbine, a vi se dogoditi da se XSL developer, ne bi zabilježite ovo sada, za budućnost uzrok, ako neki dan, ti lice ovaj problem, onda FORCE možda neće biti s vama.

Problem izjavu:
Imam ovaj XML, gdje su dva čvora s više stavki u njemu i stavke između tih dvaju čvorova imaju jedan na jedan dopis. U donjem primjeru, svaka stavka u čvor <array name="PLAYURL" /> odnosi (odgovarajući položaj) na stavku u čvor <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>

Sada, imam petlju, gdje sam loop <array name="SITENAME">, i želim da se u svezi stavke (na tom mjestu) u <array name="PLAYURL">,

Što normaly će pokušati učiniti 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>

OPROSTI! OVO navika funkcionirati ... Ah!! Surpised ...

Sada ste vjerojatno biste željeli probati, ovako ...

<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 opet to neće raditi ... Sada ste grebanje glavu, pokušavajući se obratiti svima koji mislite da zna neki XSL i može biti od bilo kakve pomoći ... te pokušati sve druge opcije ... i još uvijek se neće raditi ... dobro! Taj što mi se dogodilo atleast ...

Dont Očaj! Pokušajte ovo

<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 Pitajte me zašto to radi. Uzrok ja dont imati pravi razlog ... ako to ne učinite! Molimo vas da ispustite komentar. To bi moglo biti prilično korisno. Također! ako imate bolji naslov za ovaj post, to drop me liniju :)


2008 2. kolovoz 2008

Postavljanje DOCTYPE u XSL

Prošli tjedan sam stvorio progessive HTML / CSS raspored za klijenta, to testiran u IE6, IE7 i ff 3, činilo se savršeno u redu ... DO! Izgled ode dalje niz manufacting ciklusa. To nije uspjelo. Stranica izgleda elementi pravedan je otišao sve više mjesta kad HTML layout je pretvoren u XSL i XML primijeniti na to ... sori!

Ne mogu spavati ok preko vikenda, u očekivanju ponedjeljak ujutro, kada ću popraviti ovu SH. ** No, sada imaju malo experince u rješavanju ove vrste situacijama (preglednik quirks, mislim), znala sam da je imao veze s ništa drugo nego DOCTYPE .... i to je bio ...

Problem:
Želite li kontrolu nad DOCTYPE, jer vaša preobrazba uključuje zadanu eksplicitno DOCTYPE, i raspored će biti vanjska strana za bacanje.

Rješenje:
XSLT naočale daje izlazne metode za postavljanje i DOCTYPE od choise. Također, za nas UI programere, teme od interesa će biti HTML output metode i XML izlaznih metode .

Dobro! prije nego vam dosadi, ovdje je fix.

Na primjer, ako ste imali sljedeće DOCTYPE u HTML verziji. -

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

Tada se u XSL bi imati sljedeće: -

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

i na kraju! ne provjerite je li vaš izlazni XSLT pokorava DOCTYPE ste izabrali.


2008 4. svibnja 2008

Uključite XSL unutar XSL

Ako XML / XSL transformira je vaš Damjana, starokršćanske, onda postoji vrijeme kada želimo peice dinamičkog koda koja se koristi knjižnica stavku (da se ponovno koristiti). Ono što mislim, vjerojatno mogao biti jasniji s ovim npr. scenarij.

Zamislite da se kreiranje web stranice (i koristeći XML, XSL transfroms ofcourse) i većina stranica će imati Komentari modula. Dobro! zatim ćete kopirati ili zalijepite ovaj kod na svakoj stranici predloška (koji ja dont imati reći, ali bi održavanje i prerađuje u noćnu moru) ili još bolje, stvorite Uključite datoteku koja bi mogla biti izvučena u gdje god vi to želite na stranici ( e) ...
Pa kako ćemo stvoriti datoteku XSL Include i uključiti ga u drugu XSL datoteku? Evo kako ...

Samo da bi stvari jasno ... ovdje je brz popis datoteka koje će stvoriti ... ovdje, mi ćemo biti, uključujući informacije o voću i povrću u matične stranici se zove hrana.

1. food.xml - xml datoteke podataka na kojima se transformacija će se primjenjivati
2. food.xsl - glavni XSL datoteku, koja će preobraziti naše food.xml
3. inc_fruits.xsl - XSL datoteku koja će sadržavati voće pružiti podatke
4. inc_vegtables.xsl - XSL uključuju datoteku koja će pružiti vetetables podatke

JA dont misliti moram objasniti mnogo, kodove za navedene elemente, bit će samo sebi ...

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>

Preuzmite sve gore navedene datoteke ovdje (253 downloads)


2008 4. travanj 2008

Rad s XML čvor atribute u XSLT

Ako koristite XML i XSL, onda ste možda naići na vrijeme, kada imate poigrati s atributima i vrijednostima XML čvorova u vama XSL. Oni su hrpe stranica s dugim daha informacija o ovoj, ali niti sam pronašao bilo kratko i precizno ... To nije XML / XSL TUTORIAL, ali moj pokušaj da se stavi zajedno, nekakav mangupirati se popis ...

Uzorak XML da ćemo raditi s izgleda ovako ...

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

Dakle, omogućuje početak pretvarajući našu iznad XML pomoću XSL

Primjer 1: Prikaz vrijednosti na odabranu značajke

<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 rezultat će izgledati

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


Primjer 2: petlje i kroz prikaz svih XML značajke imena i njihove vrijednosti

<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 rezultat će izgledati


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


Preuzmite sve gore navedene datoteke ovdje (245 downloads)



Pogledajte ovaj prostor, ja ću držati ažuriranju sa novim nalazima ...


NDK dom | Izražavajući IT | Izražavajući Ukus | Izražavajući Penmenship | Izražavajući strahopoštovanje | Izražavajući Sebe