2009 Mar 7 2009 г.

Повикване на няколко прозореца Onload функции в JavaScript

, Ерес друго малко peice, на измама Javascript, че аз трябваше да копаем наоколо, защото ситуацията го commaned. В един от моите уеб сайтове, имах тази ситуация, в която трябваше да въведе "windows.onload" два пъти. Първото нещо, че ще дойде да неопитен ум като моя (аз трябва да кажа честно, че, тъй като имам използвате JavaScript рамки и библиотеки, съм Забравена да го прости неща, на моя ... тъжно, но е истина), е следният метод ...

 window.onload = onloadfn1;
 window.onload = onloadfn2;
 window.onload = onloadfn3;
 и т.н. ..

Съжалявам да кажа, но това няма да работят ... не искам да обсъдят науката изпълнението на Javascript много ... но в съответствие с неотдавнашното ми опит, само последната функция (onloadfn3) ще лошо всъщност се изпълнява.

В нормални ситуации, за разлика от моя (което аз ще говоря за малко по-късно) ... бихте могли да направите едно от следните да изпълни mutliple функции onload ....

Или нещо такова

 на функция doOnLoad () {
         onloadfn1 ();
         onloadfn2 ();
         onloadfn3 ();
 }
 window.onload = doOnLoad;

За сегашното ми положение не може да използвате някоя от по-горе ...
Защо имам нужда да се обадя windows.onload два пъти, а, че призовава две функции в рамките на една функция onload? Ето бърз поглед на моя проблем изявление ...

"Моят сайт" страници са структурирани като Wordpress Тема .... т.е. налице е обща header.php и Footer.php, който да се включва във всички страници на сайта. Налице е едно implementaion onload функция в Footer.php, да се направят някои общи функции onload. И има няколко страници, които се нуждаят от нещо на собствената си ONLOAD, освен тези, направено от общата функция onload. Ако аз зададете функция за обратно извикване директно към window.onload манипулатор, ще свръх-вози на вече възложени извика в Footer.php "

.... Е мой проблем разбира :) ?

Е! има няколко решения, че съм откри. Те всички са много сходни и най-вече implementions на решение, дадено от за Саймън Willison ( http://simonwillison.net/2004/May/26/addLoadEvent/ ) ...

Решение:

Просто добавете този код на JavaScript на сайта ...

 за функция addLoadEvent (функции) {
     VAR oldonload = window.onload;
     ако (window.onload Вид на! = 'функция ") {
        window.onload = функции
     } Друго {
        window.onload = функция () {
            ако (oldonload) {
                   oldonload ()
           }
           функция ()
        }
    }
 }

И да го наречем, вместо на обичайните "windows.onload"

 addLoadEvent (FunctionToRunOnPageLoad);
 addLoadEvent (функция () {
 / * Повече код, за да се движат по зареждане на страницата *
 }); 

Предимства на този код фрагмент ...
1. На първо място, това ви позволява да имате няколко събития windows.onload, наречен от отделни части от кода си, без overridding предходната дефиниция
2. Това наистина е ненатрапчив. Това могат да бъдат поставени във файл с други скриптове или в отделен файл.
3. Тя работи дори ако window.onload вече е определена.


2008 20 септември 2008 г.

Текстовото поле Collapse проблем в XSL / XSLT


ПРОБЛЕМ ОТЧЕТ:
Се натъкнах на този проблем по отношение textareas в XSLs. С прости думи, проблемът възниква, когато имате празна тагове <textarea>,, след това ще го срине до <textarea />.
т.е. ако сте имали нещо като следното в XSL и XML данни за стойността на текстовото поле, връща нищо ...

<textarea name='description'.> <xsl:value-of select="DESCRIPTION"/> </ текстовото поле>

Като браузъри не признават това, той ще доведе до останалата част на формата HTML, за да тичам в полето за текст.

Възможни решения:

В XSL, добавете-пространството () след XSL: tag.BEWARE стойност, да се грижи за това допълнително пространство сте добавили по време потвърждавания клиентската страна на тази област.

<textarea name='description'.> <xsl:value-of select="DESCRIPTION"/> </ текстовото поле>

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

Или
Поставете <xsl:value-of select="@unknown" /> тагове, сочещи към неизвестен атрибут. Това ще принуди XSLT парсера на PHP за генериране на полето за текст, маркер за отваряне и затваряне, дори и да няма нищо между тях.

Или
Поставете една <xsl:text> с поле, съдържащо пространство, за да принудят затварящ таг.

Все пак, въпреки че споменатите по-горе решения може да изглежда, за да оправи проблема, аз все още не съм убеден, че те са прави и най-добрите начини да го поправим. Ако има друг по-добър начин на определяне на този каприз, моля, направете, за да споделите с нас.


2008 14 септември 2008 г.

Разнообразие от XSL условия на изпитване (Събиране на XSL: АКО XSL: при условия на изпитване)

Всеки път, когато трябва да се направи XSL: АКО XSL: Когато тестове, имам се върнете към справочника. Аз никога не изглежда да ги помня. Счита ще има повече там, точно като мен, които биха предпочели да предпочитат да имат всички от тях, е възможно, на едно място, готови да бъдат посочени, когато е необходимо.

За тези, които са нови ... Синтаксис за XSL: АКО

<xsl:if test="expression">
<- Съдържание: шаблон ->
</ XSL: ако>

XSL: ако / XSL: Тест Collection
Условията, изброени по-долу, са прости, и самостоятелно обяснителен. Така че аз вярвам, че няма да има нужда от много обяснения

<xsl:if test="position()=last()-1">
Това, ако последната, но един елемент в списъка!
</ XSL: ако>

<xsl:if test="SALARY> 5000 ">
Заплатата на лицето е по-голяма от компактдискове. 5000
</ XSL: ако>

<xsl:if test="count(JOBS)> 3 ">
Има повече от 3 работни места в този списък!
</ XSL: ако>

<xsl:if test="(@DEPT ='SALES') или (@JOINYEAR = '1997')">
Този човек е от отдел "Продажби" или негов Година на присъединяване, е от 1997 г.
</ XSL: ако>

<xsl:if test="EXPERIENCE">
Този човек има поне един елемент ОПИТ дете.
</ XSL: ако>

<xsl:if test="@HOBBY">
Човек има хоби атрибут.
</ XSL: ако>

Същите условия текст може да се използва за XSL: Изберете / XSL: когато, както и

XSL: изберете

XSLT, XSL: изберете инструкция е подобен на XSL: ако, но има няколко основни разлики:
• Един XSL: изберете елемент може да се тества за повече от едно условие и добавете различните възли резултат на това дърво, въз основа на което условие е вярно.
• Един XSL: изберете елемент може да има шаблон по подразбиране, за да добавите към дървото резултат, ако нито едно от условията са верни. (Сравнете XSL: ако, която няма еквивалент на "друго".)
• XSL: Изберете елемент има на специфични subelements, които са необходими, за да работи, докато можете да поставите добре оформени елементи, които искате в рамките на един XSL: ако елемент.

<xsl:choose>
<xsl:when test="boolean-expression">
Направете нещо, когато този булев израз е Туре
</ XSL: когато>
<xsl:otherwise> прави нещо друго </ XSL: в противен случай>
</ XSL: изберете>


2008 Авг 13 2008

Tokenizing заграден низ вътре в XSL

Ако вашето изискване е да се разделите възел стойност в XML, който съдържа заграден низ стойността, на отделни елементи, тогава сте на правилното място ... да разгледаме примера по-долу. Ако сте запознати с малко на XML и XSL ... Аз не мисля, че ще се нуждаят от никакво обяснение.
Също така, този пример включва използването на XSL функции като XSL: кол-шаблон, XSL: подниз-преди, XSL: подниз след това, ако това е това, което сте.

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 Авг 4 2008

Един от проблемите, с позиция () в XSL ... или е то?

Имах този strage проблем, като същевременно се създава XSL днес. Погледнато отговори из мрежата, но нямаше как да намеря .... Всъщност аз предполагам! Удар знам какво е мой проблем, така че какво мога да търсим?

Както и да е! Само в случай, че имате същия този проблем и по някакъв начин чрез силата на сила, който успява да кацне на тази страница ... ще ми благодари т ... И ако сте случайно кацна на тази страница по някаква странна съдба и се случи да бъде разработчик XSL, не СЕ НАПРАВИ бележка за това, ЗА БЪДЕЩЕТО причината, ако някой ден, сте изправени пред този въпрос, тогава СИЛА не може да бъде с вас.

Проблем изявление:
Аз имам този 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>

Сега, аз имам една линия, където аз контур чрез <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 и може да бъде от полза ... опитате всеки друг вариант ... и все още го имам навик работа ... Е! Това какво се случи с мен поне ...

Недей отчайвайте!!! Опитайте това

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

Не ме питат защо работи. Защото няма право причина ... ако го направите! Моля ви, пуснете коментар. Тя може да бъде доста полезен. Също така! ако имате по-добро заглавие за този пост, да ме линия :)


2008 Авг 2 2008

Настройка на DOCTYPE в XSL

Миналата седмица създаден progessive HTML / CSS оформление за клиент, тествани в IE6, IE7 и FF 3, изглежда съвършено глоба ... докато! оформлението отиде по-далеч надолу по manufacting цикъл. Планът не успя. Елементите на оформлението на страницата, просто отиде навсякъде, когато HTML оформление е превърната в XSL и XML, прилагана към нея ... Кофти!!!

Не можех да спя OK през уикенда, в очакване на понеделник сутрин, когато ще трябва да определи този SH **. Но сега има малко experince в справянето с този вид ситуации (Браузър странности, имам предвид), аз знаех, че трябваше да направя нищо друго, освен да DOCTYPE .... и това беше ...

Проблемът:
Искат контрол над DOCTYPE, тъй като вашата трансформация ще включва DOCTYPE подразбиране изрично, и ви оформление ще бъде за хвърляне.

Решението:
XSLT спецификации осигурява изходни методи, за да зададете DOCTYPE на избор. Също така, за нас потребителския интерфейс на разработчиците, теми, представляващи интерес ще бъде на 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, който сте избрали.


2008 4 май 2008 г.

Включва XSL вътре XSL

Ако XML / XSL трансформира, е вашият domian, след това има моменти, когато сме се искат peice на динамичен код, за да се използва библиотека елемент (да се направи за многократна употреба). Какво искам да кажа, вероятно може да се направи по-ясно с този пример сценарий.

Представете си, вие създавате уеб сайт (и използване на XML, XSL transfroms разбира се) и повечето от страниците имат Коментари модул. Е! след това или да копирате или поставите този код във всяка страница шаблон (аз не се каже, но се поддръжка и преработи кошмар) или дори по-добре, вие създавате Включване на файл, който може да бъде изтеглен в където и да го искат в страницата си ( и) ...
И така, как да създаваме файл XSL Включи и го включите в друг файл на XSL? Ето как ...

Само за да направим нещата по-ясно ... тук е бърз списък на файловете, които ще създадете тук, ние ще се включва информация за плодове и зеленчуци в основната страница, наречена храна.

1. food.xml - XML ​​данни, файл, на която ще се прилага трансформация
2. food.xsl - главния файл XSL, който ще преобрази нашата food.xml
3. inc_fruits.xsl - XSL файл, който ще направи плодове данни
4. inc_vegtables.xsl - XSL файл, който ще направи vetetables данни

Аз не мисля, че трябва да обясни много, кодовете по-горе елементи, ще бъде самостоятелно обяснителен ...

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 шаблон>
</ XSL стилове>


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>

Изтегляне на всички тези файлове, тук (256 сваляния)


2008 Апр 4 2008

Работа с възли атрибути на XML, XSLT

Ако използвате XML и XSL, тогава бихте могли да се намира време, когато трябва да си поиграете с атрибути и стойности на XML възли ви XSL. Те са много сайтове с дълъг раздухан информация за това, но никой откриха са кратки и точни ... Това е НЕ XML / XSL TUTORIAL, но моят опит да се сложи заедно някакъв вид измама списък ...

Пробата на XML, че ние ще работим с изглежда по този начин ...

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

Така че ви позволява да започнете да трансформират нашата по-горе XML Използване на XSL

Пример 1: Показване на стойност към избран атрибут

<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 резултатът ще изглежда така

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


Пример 2:, присвойте и показване на всички XML имена на атрибут и техните стойности

<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 резултатът ще изглежда така


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


Изтегляне на всички тези файлове, тук (249 сваляния)



Гледайте това място, аз ще да актуализира с нови открития ...


НДК начало | Изразявайки | Изразявайки Вкус | Изразявайки Penmenship | Изразявайки страхопочитание | Изразяване на себе си