2009 07.03.2009

Volání více oken OnLoad funkce v JavaScriptu

Tady je další malý peice z podvodu JavaScriptu, které jsem musel kopat kolem, protože situace commaned to. V jednom z mých webových stránek, měl jsem tuto situaci, kdy jsem musel provádět "windows.onload" dvakrát. První věc, která by přišla do paměti, nezkušený jako já (Musím upřímně říci, že od té doby jsem se pomocí Javascriptu rámců a knihovny, jsem forgotton dělat jednoduché věci na vlastní pěst ... smutné, ale pravda), je tato metoda ...

 window.onload = onloadfn1;
 window.onload = onloadfn2,
 window.onload = onloadfn3;
 atd. ..

Omlouváme se, ale na, zvyklý tuto práci ... nechci diskutovat o provedení vědu Javascript moc ... ale podle mé nedávné zkušenosti, (onloadfn3) pouze poslední funkce špatně vlastně vykonán.

V normálních situacích, na rozdíl od dolu (což budu mluvit o něco později) ... můžete udělat jednu z následujících možností k provedení zahrnuje více onload funkce ....

Nebo něco takového

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

Pro mé současné situaci, nemohu použít některý z výše uvedených ...
Proč musím zavolat windows.onload dvakrát, spíše to, že volání dvě funkce v jednom onload funkce? Zde je rychlý pohled na můj problém prohlášení ...

"Moje stránek stránky jsou strukturovány jako WordPress Téma .... tedy existuje společný Header.php a Footer.php, který se zařazené do všech stránek stránkách. K dispozici je funkce onload implementaion v Footer.php dělat některé běžné onload funkce. A existuje několik stránek, které je potřeba něco vlastního OnLoad, na rozdíl od těch, které provádí společné onload funkce. Kdybych přiřadit funkci zpětného volání přímo na window.onload psovoda, bude to přes-jet dříve přidělené zpětná volání v Footer.php "

.... Je to můj problém chápat :) ?

No! existuje několik řešení, která jsem najít. Všichni jsou si velmi podobné a hlavně implementions roztoku dané Simon Willison odst. http://simonwillison.net/2004/May/26/addLoadEvent/ ) ...

Řešení:

Stačí přidat tento kód javascript na stránky ...

 Funkce addLoadEvent (func) {
     var oldonload = window.onload;
     if (typeof window.onload! = "funkce") {
        window.onload = funkce
     Else {}
        window.onload = function () {
            if (oldonload) {
                   oldonload ()
           }
           funkce ()
        }
    }
 }

A volat to místo obvyklého "windows.onload"

 addLoadEvent (FunctionToRunOnPageLoad);
 addLoadEvent (function () {
 / * Více spuštění kódu na * načtení stránky
 }); 

Výhody tohoto fragmentu kódu ...
1. V první řadě, to vám umožní mít více windows.onload události, volal z oddělených částí kódu, aniž by overridding předchozí definici
2. Je to opravdu decentní. To může být umístěna v souboru s vašimi ostatními skripty nebo v samostatném souboru.
3. Funguje to iv případě, že window.onload již nastaven.


2008 20 září 2008

TEXTAREA Sbalit problém v XSL / XSLT


PROBLÉM PROHLÁŠENÍ:
Narazil jsem na tento problém, pokud jde o textareas v XSLs. Jednoduše řečeno, problém nastává, když máte prázdnou <textarea> značku, pak se zhroutí do <textarea />.
tj. pokud byste měli něco jako následující ve vašem XSL a XML dat pro hodnoty TextArea, vrátí nic ...

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

Jak prohlížeče nerozpoznají to, způsobí zbytek formuláře HTML pro spuštění do textového pole.

Možná řešení:

V XSL, přidejte non-breaking-space () po xsl: hodnota tag.BEWARE, postarat se o této mezery jste přidali, během validace na straně klienta v této oblasti.

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

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

Nebo
Vložte <xsl:value-of select="@unknown" /> značku směřující k neznámému atributu. To bude nutit PHP parser XSLT generovat otevírání a zavírání textové oblasti značku, i když to nemá nic mezi tím.

Nebo
Vložte <xsl:text> pole obsahující prostor přinutit koncovou značku.

Nicméně, ačkoli výše uvedené řešení by se mohlo zdát problém vyřešit, já jsem stále přesvědčen, že oni mají pravdu a nejlepší způsoby, jak ho vyřešit. Pokud existuje nějaký jiný lepší způsob stanovení této vtípek, Prosím, dejte nám vědět.


2008 14 září 2008

Variace testovacích podmínek XSL (Sbírka nálezů a XSL: IF a XSL: Při testovací podmínky)

Pokaždé, když jsem musel udělat XSL: IF nebo XSL: PO test, musím se vrátit do příruček. Nikdy jsem Zdá se, že pamatovat si je. Myslel jsem, že by bylo více tam, stejně jako já, kteří by raději přednost tomu, aby všichni, je to možné, na jednom místě, připraven k uvedeným v případě potřeby.

Pro ty, kteří jsou nové ... Syntaxe XSL: IF

<xsl:if test="expression">
<- Obsah:! Šablony ->
</ Xsl: if>

Xsl: if / xsl: když test Collection
Podmínky dole jsou jednoduchá a srozumitelná. Takže věřím, že to není potřeba mnoho vysvětlení

<xsl:if test="position()=last()-1">
To v případě, že poslední, ale jeden prvek na seznamu!
</ Xsl: if>

<xsl:if test="SALARY> 5000 ">
Plat této osoby je větší než Rs. 5000
</ Xsl: if>

<xsl:if test="count(JOBS)> 3 ">
Existuje více než 3 pracovní místa v tomto seznamu!
</ Xsl: if>

<xsl:if test="(@DEPT ='SALES') nebo (@JOINYEAR = '1997')">
Tato osoba je z obchodního oddělení nebo jeho ročník Vstup je 1997
</ Xsl: if>

<xsl:if test="EXPERIENCE">
Tato osoba má aspoň jednu zkušenost podřízený prvek.
</ Xsl: if>

<xsl:if test="@HOBBY">
Člověk má atribut koníček.
</ Xsl: if>

Stejné texty podmínky mohly být použity pro XSL: vyber / XSL: PO a

XSL: vybrat

XSLT je xsl: choose návod je podobný xsl: pokud ale má několik klíčových rozdílů:
• Jeden xsl: choose prvek můžete vyzkoušet na více než jednu podmínku, a přidat různé uzly na výsledek stromu na základě jakých podmínek je to pravda.
• xsl: vyberte prvek může mít výchozí šablonu přidat do výsledného stromu, pokud žádná z podmínek, jsou pravdivé. (Porovnat xsl: if, který nemá žádný ekvivalent "jiného" stavu.)
• xsl: vyberte prvek má určité dílčí prvky, které jsou nezbytné pro práci, zatímco vy můžete dát nějaké dobře vytvořené složky, které chcete uvnitř s xsl: if prvek.

<xsl:choose>
<xsl:when test="boolean-expression">
Udělej něco, kdy tato boolean-výraz je Výdaje
</ Xsl: pokud>
<xsl:otherwise> něco jiného </ xsl: jinak>
</ Xsl: Zvolte>


2008 Srpen 13 2008

Tokenizing oddělovači řetězec uvnitř XSL

Pokud váš požadavek rozdělit uzlu hodnotu ve formátu XML, který obsahuje řetězec oddělený hodnoty, do jednotlivých položek, pak jste na správné místo ... podívejte se na níže uvedeném příkladu. Pokud jste obeznámeni s trochou XML a XSL ... Nemyslím si, že budete potřebovat nějaké vysvětlení.
Také tento příklad zahrnuje použití funkcí jako je XSL xsl: call-template, xsl: substring-before, xsl: substring-after, jestli to, co jste po něm.

XML, které se zpracovávají (food.xml): -
Předpokládejme, že úkolem je tokenize řetězec oddělený čárkou, v na "klíčových slov" tagů

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

Netřeba dodávat, že ... stačí změnit parametr "delimitr" na oddělovač dle vlastního výběru


2008 Srpna 4. 2008

Problém s umístěním () v XSL ... nebo je to?

Měl jsem tento problém strage při vytváření XSL dnes. Hledali odpovědi na celém internetu, ale couldnt najít žádné .... Vlastně myslím, že! Já vím, co dint můj problém byl, tak co mám hledat?

Každopádně! Jen v případě, že máte tento samý problém taky a nějak o moc sil se vám podařilo přistát na této stránce ... děkuji byste mi spoustu ... A pokud jste náhodou přistál na této stránce nějakou podivnou osudem a se stalo, že developer XSL, DO MAKE A tuto skutečnost na vědomí NYNÍ do budoucna příčiny, pokud je nějaký den, budete čelit tomuto problému, pak síla nemusí být s vámi.

Problém prohlášení:
Mám tento XML, kde jsou dva uzly s více položek v něm a zboží mezi těmito dvěma uzly mají jeden na jednoho korespondenci. V níže uvedeném příkladu, každá položka v uzlu <array name="PLAYURL" /> týká (odpovídající pozice) na položku v uzlu <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>

Teď mám smyčku, kde i přes smyčku <array name="SITENAME">, a chci se dostat související položky (na odpovídající pozici) v <array name="PLAYURL">,

Co byste normálně snažit udělat, 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 zvyklý fungovat ... Ach! Surpised ...

Nyní byste asi chtěli vyzkoušet, něco takového ...

<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ět to zvyklý pracovat ... Teď jste poškrábání vaší hlavě, snaží se obrátit každý, kdo si myslíte, že zná nějaký XSL a mohla by být žádný smysl ... pokusu každou jinou možnost ... a ještě to nebude fungovat ... No! To je co se mi stalo aspoň ...

Dont Zoufalství! Zkuste 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 Zeptej se mě proč to funguje. Příčina i dont mít správný důvod ... pokud nechcete! Prosím, Drop komentář. To by mohlo být docela užitečné. Také! Pokud máte lepší název pro tento post, to mě vysadil řádku :)


2008 Srpen 2008 2

Nastavení DOCTYPE v XSL

Minulý týden jsem vytvořil PROGESSIVE HTML / CSS layout pro klienta, zkouší to v IE6, IE7 a FF 3, vypadal naprosto v pořádku ... až! Rozložení šel dál po manufacting cyklu. To se nezdařilo. Prvky rozvržení stránky jen chodil všude, kdy bylo rozložení HTML převedené do XML a XSL pro něj použita ... trapas!

Nemohl spát v pořádku o víkendu, v očekávání pondělního rána, kdy budu muset opravit tento SH **. Ale teď tak trochu zažít při řešení těchto situací (druh prohlížeče vtípky, mám na mysli), věděl jsem, že to musel udělat s ničím jiným, ale DOCTYPE .... a bylo to ...

Problém:
Chcete, aby kontrolu nad DOCTYPE, protože vaše transformace bude obsahovat výchozí DOCTYPE explicitně, a vy rozložení bude pozor na los.

Řešení:
XSLT specifikace poskytuje výstupní metody nastavit na DOCTYPE z výběrem. Také pro nás vývojáři uživatelského rozhraní by témat zájmu je HTML výstup metody a XML výstupní metody .

No! Před nudit, tady je oprava.

Např. pro, pokud byste měli následující DOCTYPE v HTML verzi:. -

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

Pak v XSL byste mít následující: -

<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čně! se ujistěte, že XSLT výstup poslouchá DOCTYPE jste si vybrali.


2008 04.05.2008

Patří XSL v XSL

Pokud XML / XSL transformace je váš domian, pak tam jsou časy, kdy chceme peice Dynamic Kód pro knihovny položky (které mají být provedeny opakovaně použitelné). Co mám na mysli, by pravděpodobně být jasněji v tomto příkladu scénáře.

Představte si, že vytvoření webové stránky (a pomocí XML, XSL transfroms Samozřejmě) a většina stránek by měl Komentáře modul. No! pak buď kopírování nebo vložte tento kód do každé šablony stránky (což Nemám říct, ale aby údržby a oprav noční můra), nebo ještě lépe, můžete vytvořit INCLUDE soubor, který by mohl být vtažena, kde někdy budete chtít do stránky ( y) ...
Tak jak se Vytváříme XSL INCLUDE soubor a zahrnout jej do jiného souboru XSL? Zde je, jak ...

Stačí, aby se věci jasné ... tady je stručný přehled souborů, které si vytvoří ... tady budeme, včetně informací o ovoce a zeleninu do mateřské stránky s názvem jídlo.

1. food.xml - xml soubor dat, na kterých bude aplikovat transformace
2. food.xsl - hlavní XSL soubor, který změní naše food.xml
3. inc_fruits.xsl - XSL patří soubor, který bude skýtat ovoce dat
4. inc_vegtables.xsl - XSL patří soubor, který bude skýtat vetetables dat

I dont myslím, že mám značné míry vysvětlují, kódy pro výše uvedených skutečností bude vysvětlovat ...

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>

Stáhnout všechny výše uvedené soubory zde v 253 stažení)


2008 04.04.2008

Práce s atributy uzlů XML v XSLT

Používáte-li XML a XSL, pak jste možná narazili na dobu, kdy budete muset pohrát s vlastnostmi a hodnotami XML uzlů ve vás XSL. Jsou spousty míst s dlouhou zubořezu informací o tomto, ale žádný jsem našel byly krátké a přesné ... To není XML / XSL tutoriál, ale můj pokus dát dohromady, nějaký cheat seznam ...

Vzorek XML, že budeme pracovat s vypadá 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číná transformace naší nad XML pomocí XSL

Příklad 1: Zobrazení hodnoty na vybrané parametry

<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ýsledek bude vypadat

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


Příklad 2: Opakování pomocí XML a zobrazení všech názvy atributů a jejich 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ýsledek bude vypadat


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


Stáhnout všechny výše uvedené soubory zde (245 stažení)



Na tomto místě, budu držet aktualizaci to s novými poznatky ...


NDK domů | Vyjádření IT | Vyjádření patra | Vyjádření Penmenship | Vyjádření Awe | Vyjádření Myself