2008 13 Gusht 2008

Tokenizing String përkufizuar brenda një XSL

Nëse kërkesa juaj është për të ndarë një vlerë të nyjeve në një XML, që përmban një varg përkufizuar me vlerë, në objekte të veçanta, atëherë ju keni arritur vendin e duhur ... keni një vështrim në shembullin më poshtë. Nëse jeni të njohur me pak e XML dhe XSL ... Unë nuk mendoj se ju do të duhet ndonjë shpjegim.
Gjithashtu, ky shembull përfshin përdorimin e funksioneve XSL si XSL: Telefononi-template, XSL: nënvargun-para, XSL: nënvargun-pas, nëse kjo është ajo që ju jeni pas.

XML në të transformohet (food.xml): -
Supozojmë detyrë është të tokenize e përkufizuar string me presje, në të "fjalët kyçe" 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>

HTML rezultante output: -

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

S'është nevoja të thuhet ... vetëm të ndryshojë parametër "delimitr" në Kufi e zgjedhjes suaj


2008 4 gusht 2008

Një problem me pozicionin () në XSL ... apo është?

Kam pasur këtë problem strage duke krijuar një XSL sot. Shikuar për përgjigjet të gjithë neto, por couldnt gjeni ndonjë .... Në fakt I guess! Unë yxhym e di se çfarë problemi im ishte, kështu që ajo mund të shikoni për?

Anyway! Vetëm në rast se ju e keni këtë problem shumë të njëjtën shumë dhe disi nga ana e pushtetit të detyrojë që arriti të tokës në këtë faqe ... do të falenderoj më ton ... Dhe në qoftë se ju keni zbarkoi në këtë faqe accidently për disa fatin e çuditshme dhe ju ndodhë të jetë një zhvillues XSL, DO bëjë një shënim të këtë tani, për hir të ardhmen, nëse një ditë, ju të përballet me këtë çështje, atëherë forca nuk mund të jetë me ju.

Deklarata Problem:
Unë kam këtë XML, ku ka dy nyje me objekte të shumta në të dhe pikat mes këtyre dy nyje të ketë një korrespondencë një me një. Në shembullin e mëposhtëm, çdo send në <array nyjen name="PLAYURL" /> lidhet (pozicioni përkatës) në një artikull në <array nyjen 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>

Tani, unë kam një lak, ku i loop nëpërmjet <array name="SITENAME">, dhe unë dua të të marrë pika të lidhura (në pozicionin përkatës) në <array name="PLAYURL">,

Çfarë ju do të normaly provoni të bëni është ...

<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! KJO PUNA zakon ... Ah! Surpised ...

Tani ju ndoshta do të dëshironi të provoni, diçka si kjo ...

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

Dhe Përsëri ky zakon të punojë ... Tani ju kruarje kokën tuaj, duke u përpjekur për të kontaktuar të gjithë ata që ju mendoni se e di se disa XSL dhe mund të jetë çdo ndihmë ... provoni çdo mundësi tjetër ... dhe ende është zakon të punojë ... E pra! Thats çfarë ka ndodhur me mua atleast ...

Dont Dëshpërimi! TRY THIS

<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 pyesni mua pse ajo punon. Shkak i dont kanë një arsye të drejtë ... nëse e bëni këtë! Ju lutem mos bjerë një koment. Kjo mund të jetë shumë e dobishme. Gjithashtu! nëse ju keni titull më të mirë për këtë post, të bëjë më bjerë një linjë :)


2008 4 maj 2008

Përfshi XSL brenda XSL

Nëse XML / XSL Transformon është domian tuaj, pastaj ka raste kur ne duam një peice të kodit Dynamic që do të përdoret pika bibliotekës (për të bërë ri-përdorshme). Çfarë dua të them, ndoshta mund të bëhet më e qartë me këtë skenar shembull.

Paramendoni ju jeni duke krijuar një faqe interneti (dhe duke përdorur XML, XSL transfroms ofcourse) dhe shumica e faqeve do të ketë një Module Comments. E pra! pastaj ose ju kopje ose ngjisni këtë kod në çdo template faqe e cila I dont kanë thënë, por të bëjë mirëmbajtjen dhe Rework makth a) apo edhe më të mirë, keni krijuar një skedar të cilat mund të përfshijnë nxorrën në ku ndonjëherë doni atë në faqen tuaj ( s) ...
Deri sa nuk kemi Krijo një skedar përfshijnë XSL dhe përfshijnë atë brenda një tjetër fotografi XSL? Këtu është se si ...

Vetëm për të bërë gjëra të qartë ... këtu është lista e shpejtë të dosjeve që ju do të krijojë ... këtu, ne do të jemi duke përfshirë informacion në lidhje me fruta dhe perime në një faqe mëmë e quajtur ushqim.

1. food.xml - xml dhënave fotografi në të cilën transformimi do të aplikohet
2. food.xsl - kryesor fotografi XSL, i cili do të transformojë food.xml tonë
3. inc_fruits.xsl - XSL përfshijnë skedar që do të bëjë fruta të dhënat
4. inc_vegtables.xsl - XSL përfshijnë skedar që do të bëjë të dhënat vetetables

I dont mendoj se kam shpjeguar shumë, kodet për elementet e mësipërme, do të jetë vetë shpjegues ...

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>

Shkarko të gjitha dosjet e mësipërme këtu (250 downloads)


2008 4 prill 2008

Duke punuar me nyjen Atributeve në XML XSLT

Nëse ju përdorni XML dhe XSL, atëherë ju mund të ketë ardhur nëpër një kohë, kur ju duhet të luajnë rreth me atributet dhe vlerat e nyjeve XML në ju XSL. Ata janë ngarkesa e faqet me informacion të gjatë lodhshëm për këtë, por nuk kam gjetur ishte i shkurtër dhe i saktë ... kjo nuk është XML / XSL tutorial, por përpjekja ime për të vënë së bashku një lloj të mashtrojnë lista ...

Mostra XML se ne do të punojmë me duket si ky ...

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

Kështu që lejon të fillojë transformimi XML tonë të mësipërm duke përdorur XSL

Shembull 1: shfaqje vlerë në një atribut të zgjedhur

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

Rezultati HTML do të duket si

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


Shembull 2: looping përmes dhe shfaqja e të gjitha Emrat XML atribut dhe vlera e tyre

<xsl:for-each select="/food/fruits/item/@*">
attribute name : <xsl:value-of select="name()"/>,
attribute value : <xsl:value-of select="."/> <br />
</xsl:for-each>

Rezultati HTML do të duket si


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


Shkarko të gjitha dosjet e mësipërme këtu (244 downloads)



Shikojnë këtë hapësirë, unë do të mbaj përditësimin kjo me zbulimet e reja ...


NDK shtëpi | Duke shprehur IT | qiellëz shprehur | Penmenship shprehur | frikë shprehur | shprehur Myself