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>

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


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


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



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


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