2008 Aug 2008 13

Tokenizing atdalīta String iekšā XSL

Ja jūsu prasība ir sadalīt mezglu vērtību XML, kas satur atdalīta virkne vērtību, uz atsevišķām precēm, tad jūs esat sasniedzis īstajā vietā ... apskatiet tālāk piemērā. Ja Jūs esat iepazinušies ar mazliet XML un XSL ... Es nedomāju, ka jums būs nepieciešams kāds izskaidrojums.
Arī šis piemērs ietver izmantošanu XSL funkcijas, piemēram, XSL: Call-template, XSL: apakšvirkni-pirms, XSL: apakšvirkni-pēc, ja tas, ko jūs pēc.

XML ir pārveidota (food.xml): -
Pieņemsim uzdevums ir tokenize string norobežojusi ar komatu, jo ar to tagu "atslēgvārdiem"

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

Iegūtais izejas 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>

Lieki teikt ... vienkārši mainīt parametru "delimitr" ar atdalītāju, pēc jūsu izvēles


2008 Aug 2008 4

Ar pozīciju () in XSL problēma ... vai ir?

Man bija šī strage problēmu, vienlaicīgi radot XSL šodien. Meklēja atbildes visā tīklā, bet couldnt atrast jebkādu .... Patiesībā es domāju! Es iedobt zinu, ko mana problēma bija, lai to, ko man meklēt?

Anyway! Tikai gadījumā, ja esat šo ļoti pašu problēmu pārāk un kaut ko no jaudas SPĒKĀ jums izdevās nolaisties uz šajā lapā ... jūs gribētu pateikties man t ... Un, ja esat nejauši nokļuvuši šajā lapā kādu dīvainu likteni un jums gadās būt XSL attīstītājs, DO pierakstiet šo tagad, turpmāk cēloni, ja kādu dienu, jūs risinātu šo jautājumu, tad FORCE nevarētu būt kopā ar jums.

Problēmas formulējums:
Man ir XML, kur ir divi mezgli ar vairākiem posteņiem tā, un starp šiem diviem punktiem posteņiem ir viens pret vienu korespondenci. Piemērā zemāk, katrs postenis mezglu <array name="PLAYURL" /> attiecas (atbilst pozīcija) attiecas uz posteni, kas mezgla <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>

Tagad, man ir cilpa, kur i cilpa ar <array name="SITENAME">, un es vēlos, lai saņemtu attiecīgo objektu panta attiecīgajā pozīcijā), kas <array name="PLAYURL">,

Ko jūs varētu kāds parasti mēģināt darīt, ir ...

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

Atvainojiet! Šis paradums strādāt ... Ak! Surpised ...

Tagad jūs, iespējams, vēlaties izmēģināt, kaut kas līdzīgs šim ...

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

Un atkal tas paradis strādāt ... Tagad jūs nesaskrāpē galvu, mēģinot sazināties ar ikvienu, kurš, jūsuprāt zina kādu XSL un varētu būt par jebkuru palīdzību ... jūs mēģināt jebkuru citu opciju ... un vēl tas paradis strādāt ... Nu! Thats kas notika ar mani atleast ...

Dont Izmisums! 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 uzdot man, kāpēc IT WORKS. Izraisīt i dont ir tiesības iemesls ... ja jūs darīt! Lūdzu, piliens komentāru. Tas varētu būt diezgan noderīgs. Arī! Ja jums ir labāka virsrakstu šim amatam, do piliens mani līniju :)


2008 4 maijs 2008

Ietver XSL iekšā XSL

Ja XML / XSL Transforms ir jūsu domian, tad ir reizes, kad mēs vēlamies peice dinamisku izmantojamā koda bibliotēkas vienumu (jāveic atkārtoti izmantojams). Ko es domāju, varbūt varētu padarīt skaidri ar šo piemēru scenāriju.

Iedomājieties, jūs veidojat mājas lapā (un, izmantojot XML, XSL transfroms Protams), un lielākā daļa lapām būtu Komentāri Modulis. Labi! tad nu jums kopēt vai ielīmējiet šo kodu katru lapas veidni (ko es dont ir pateikt, bet lai apkopes un pārstrādāt murgs) vai vēl labāk, jūs izveidojat ietvert failu, kas varētu tikt ierauts kur kādreiz jūs vēlaties to savā lapā ( s) ...
Tā kā mēs izveidot kādu XSL ietvert failu un iekļaut to iekšā citā XSL failu? Lūk, kā ...

Tikai, lai padarītu lietas skaidrs ... šeit ir ātrs sarakstu failiem varētu izveidot ... šeit, mēs arī info par augļiem un dārzeņiem par mātes lapā sauc pārtiku.

1. food.xml - XML ​​datu fails, kurā transformācija tiks piemērota
2. food.xsl - galvenais XSL fails, kas būs pārveidot savu food.xml
3. inc_fruits.xsl - XSL ietvert failu, kas to padara augļi dati
4. inc_vegtables.xsl - XSL ietvert failu, kas to padara vetetables dati

I dont domāju, ka man ir izskaidrot daudz, ka par minētajiem elementiem kodi, būs pašsaprotami ...

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: veidne>
</ 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>

Lejupielādēt visus iepriekš minētos failus šeit (253 downloads)


2008 Apr 4, 2008

Darbs ar XML mezglu atribūtus XSLT

Ja jūs izmantojat XML un XSL, tad jūs varētu būt saskārušies ar laiku, kad jums ir spēlēt aptuveni ar atribūtiem un vērtībām XML mezglu jums XSL. Tie ir kravas vietām ar ilgu aizdusu info par šo, bet neviens man konstatēja bija īsi un precīzi ... Tas NAV XML / XSL TUTORIAL, bet mans mēģinājums likt-kopā kaut kādas apkrāptu sarakstā ...

Paraugs XML ka mēs strādājam ar izskatās šādi ...

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

Tātad Lets sākt pārveidot mūsu iepriekš XML izmantojot XSL

Piemērs 1: Parādīts vērtībā pie izvēlētā īpašības

<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 rezultāts izskatīsies

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


Piemērs 2: looping caur un parādot visus XML atribūtu nosaukumus un to vērtības

<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 rezultāts izskatīsies


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


Lejupielādēt visus iepriekš minētos failus šeit (245 downloads)



Noskatīties šajā vietā, es ņemšu glabāt atjaunināšanu šis ar jauniem secinājumiem ...


NDK sākums | Izsakot IT | Izsakot aukslējas | Izsakot Penmenship | Izsakot bijību | Izsakot Sevi