2009 7 марта 2009

Вызов нескольких OnLoad для Windows функции в Javascript

Херес еще один маленький peice обмана Javascript, что мне пришлось копаться, потому что ситуация commaned он. В одном из моих веб-сайтов, у меня была ситуация, когда я должен был осуществлять "windows.onload" в два раза. Первое, что бы пришли к неопытный ум, как у меня (у меня честно сказать, что, поскольку я использую JavaScript рамки и библиотеки, я forgotton делать простые вещи, на мой собственный ... Печально, но факт), является следующий метод ...

 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 (функции) {
     уаг oldonload = window.onload;
     если (TypeOf window.onload! = 'функция') {
        window.onload = функция
     {} Другое
        window.onload = функция () {
            если (oldonload) {
                   oldonload ()
           }
           функции ()
        }
    }
 }

И называть его вместо обычного "windows.onload"

 addLoadEvent (FunctionToRunOnPageLoad);
 addLoadEvent (функция () {
 / * Больше кода, чтобы запустить на странице загрузки *
 }); 

Преимущества этот фрагмент кода ...
1. В первую очередь, это позволяет иметь несколько событий windows.onload, вызывается из отдельных частей кода, без overridding предыдущее определение
2. Это очень ненавязчиво. Это может быть помещен в файл с другими сценариями, либо в отдельном файле.
3. Это работает, даже если window.onload уже установлен.


2008 20 сентября 2008

TEXTAREA Свернуть проблема в XSL / XSLT


Постановка задачи:
Я столкнулся с этой проблемой в отношении прокручиваемым в XSLs. Говоря простыми словами, проблема возникает тогда, когда у вас есть пустые теги <textarea>, то он рухнет его <textarea />.
т.е. если у вас что-то вроде следующего в XSL и XML данные значения TEXTAREA, ничего не возвращает ...

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

Как браузеры не признают этого, это приведет к остальным виде HTML бежать в текстовой области.

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

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

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

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

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

Или
Вставьте <xsl:text> поле, содержащее пространство, чтобы заставить закрывающий тег.

Однако, несмотря на вышеуказанные решения, казалось бы решить эту проблему, я все еще не уверены, что они правы, и лучший способ это исправить. Если есть другие лучший способ исправить эту особенность, пожалуйста, сообщите нам.


2008 14 сентября 2008

Разнообразие условий XSL испытаний (Собрание XSL: IF и XSL: когда условия TEST)

Каждый раз, когда я должен сделать, XSL: IF или XSL: Когда тест, у меня есть вернуться к справочникам. Я не помню их. Мысль, что будет больше там, как и я, кто предпочел бы, чтобы все из них, возможно, в одном месте, готовые быть переданы по мере необходимости.

Для тех, кто новый ... Синтаксис для XSL: IF

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

XSL: если / XSL: при тестовой коллекции
Ниже условия являются простым и понятным. Поэтому я считаю, это не потребуется много объяснений

<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: выбрать

XSL XSLT в: выберите инструкция похожа на XSL: если, но имеет несколько отличий ключ:
• Один XSL: выберите элемент может проверить несколько условий и добавлять различные узлы в дереве результатов на основе которых условие истинно.
• XSL: выберите элемент может иметь шаблон по умолчанию, чтобы добавить к тому дереву, если ни одно из условий. (Сравните XSL: если, который не имеет аналогов в "другой" состояния).
• XSL: выберите элемент имеет определенные дочерние элементы, которые необходимы для того, чтобы работать, а вы можете поставить любой правильно сформированный элементы, которые вы хотите внутри XSL: если элемент.

<xsl:choose>
<xsl:when test="boolean-expression">
Сделайте что-нибудь, когда это логическое-выражение TURE
</ XSL: когда>
<xsl:otherwise> Сделайте что-нибудь другое </ XSL: в противном случае>
</ XSL: выберите>


2008 13 августа 2008

Разметка с разделителями строк в XSL

Если требование разделить значение узла в XML, который содержит строки с разделителями стоимости, в отдельные пункты, то вы пришли в нужное место ... посмотрим на примере, приведенном ниже. Если вы знакомы с немного XML и XSL ... Я не думаю, что вам потребуется никаких объяснений.
Кроме того, этот пример включает использование функции как XSL XSL: вызова шаблонов, XSL: подстроки до, XSL: подстроки, после этого, если это то, что вы после этого.

XML должны быть преобразованы (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>
<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, 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>

Теперь у меня есть цикл, где я цикле <array name="SITENAME">, и я хочу, чтобы получить соответствующий пункт (на соответствующую позицию) в <array name="PLAYURL">,

Что бы вы normaly попытаться сделать, это ...

<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 и может быть любой помощи ... Вы пытаетесь любой другой вариант ... и все же это не будет работать ... Ну! Вот что случилось со мной, по крайней мере ...

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>

Не спрашивайте меня, почему это РАБОТАЕТ. Потому что я не имею права причина ... если вы делаете! Пожалуйста удалить комментарий. Это может быть очень полезным. Кроме того! если у вас есть лучшее название для этой должности, сделать напишите мне :)


2008 2 августа 2008

Установка DOCTYPE в XSL

На прошлой неделе я создал progessive HTML / CSS макет для клиента, тестировал в IE6, IE7 и FF 3, казалось, прекрасно ... ПОКА! макет пошел дальше вниз по manufacting цикла. Это не удалось. Элементы макета страницы просто пошел повсюду, когда макет HTML был преобразован в XSL и XML применяется к нему ... Лентяй!

Не могу спать нормально в минувшие выходные, в преддверии понедельник утром, когда я должен буду решить эту SH **. Но теперь есть немного Experince в борьбе с такого рода ситуациями (Browser совместимости, я имею в виду), я знал, что было связано с не что иное, 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 преобразования ваш Домиана, то есть времена, когда мы хотим peice динамического кода, который будет использоваться библиотека пункта (будет сделано повторного использования). Что я имею в виду, вероятно, можно было бы сделать более ясной в этом примере сценария.

Представьте, что вы создаете веб-сайт (с использованием XML, XSL transfroms конечно же), и большинство из страниц будет иметь модуль комментариев. Ну! то либо скопировать или вставить этот код в каждую страницу шаблона (который я не имею сказать, но сделать техническое обслуживание и доработку кошмар), или даже лучше, вы создаете INCLUDE файл, который может вырваться в том, где бы Вы не хотите его в вашу страницу ( а) ...
Так как мы создаем файл XSL INCLUDE и включить его в другой файл 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>

Скачать все вышеуказанные файлы здесь (252 скачиваний)


2008 4 апреля 2008

Работа с атрибутами XML узлов в XSLT

Если вы используете XML и XSL, то вы могли встретить то время, когда нужно играть с атрибутами и значениями узлами вы XSL. Они нагрузок сайтов долго наматывается информацию об этом, но никто не нашел были краткими и точными ... Это не XML / XSL учебника, но мои попытки поставить вместе, какой-то обман список ...

Образец 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


Скачать все вышеуказанные файлы здесь (245 скачиваний)



Смотреть это пространство, я буду обновлять этот новым выводам ...


NDK дома | Выражая IT | Выражая неба | Выражая Penmenship | Выражая трепет | выразить себя