2008 13 Ağu 2008

Bir XSL içinde Sınırlandırılmış Dize tokenizing

İhtiyaçlarınız değeri sınırlandırılmış bir dize içeren bir XML bir düğüm değeri bölmek ise, ürüne içine, o zaman doğru yere ulaşmış ... Aşağıdaki örnekte de bakabilirsiniz. XML ve XSL biraz aşina iseniz ... Ben herhangi bir açıklama gerekir sanmıyorum.
Xsl, call-template: substring-before, xsl: Ayrıca, bu örnekte xsl gibi XSL fonksiyonları kullanımını içerir substring-sonra, o senden sonrası buysa.

Dönüştürülmesi için XML (food.xml): -
Görev tag "anahtar kelimeler" in, virgülle ayrılmış dize tokenize olduğunu varsayalım

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

Sonuç HTML çıktı: -

<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öylemeye gerek yok ... sadece seçtiğiniz sınırlayıcı parametre "delimitr" değiştirin


2008 4 Ağu 2008

XSL pozisyon () ile bir sorun ... ya da öyle değil mi?

Bugün bir XSL oluştururken bu Veri Saklama sorunu vardı. Net boyunca cevaplar aradı, ancak herhangi bir bulamadım .... Aslında sanırım! Ben kuvvetiyle benim sorunum ne olduğunu bilmek, yani ne için görünüyorum?

Her neyse! Just in case sen beni ton teşekkür edeceğim ... çok ve her nasılsa bu sayfada karaya yönetilen FORCE gücüyle bu çok aynı sorun var ... Ve kazara bazı garip kaderi için bu sayfayı indi ve eğer kullanıcı olarak gerçekleşmesi bir gün, bu sorunu yaşarsanız bir XSL geliştirici, GELECEK neden İÇİN, ŞİMDİ BU BİR NOT MAKE DO, daha sonra FORCE sizinle olmayabilir.

Problem ifadesi:
Içinde birden çok öğe ile iki düğüm vardır nerede, bu XML var ve bu iki düğüm arasında öğeleri birebir uyum var. Aşağıdaki örnekte, düğüm <array her öğe name="PLAYURL" /> düğüm <array bir öğeye (ilgili pozisyon) anlatıyor 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>

I <array name="SITENAME"> döngü ve ben <array name="PLAYURL"> ilgili kaleme (ilgili konumunda) almak istediğiniz Şimdi, ben, bir döngü var

Ne normalde bunu denemek istiyorsunuz olduğu ...

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

ÜZGÜNÜM! BU alışkanlık ... Ah! Surpised ...

Şimdi muhtemelen, denemek için böyle bir şey isteyeyim ...

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

Ve Yine bu alışkanlık ... Şimdi, başınızı tırmalamak bazı XSL bilir düşünüyorum herkesin temas kurmaya çalışan ve herhangi bir yardım olabilir ... Her diğer seçeneği deneyin ... ve hala bu alışkanlık ... Eh! Bu bana atleast ne oldu ...

DONT DESPAIR! BU YTL

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

ÇALIŞIYOR NEDEN ASK ME DONT. I bir hak sebebi zorunda değilsin ... Yaptığın Çünkü eğer! Bir yorum bırakın lütfen. Oldukça faydalı olabilir. Ayrıca! Bu mesaj için daha iyi BAŞLIK varsa, bana yazmaktan yapmak :)


2008 4 Mayıs 2008

XSL içinde Include XSL

XML / XSL sizin Domian ise Dönüşümleri, o zaman (tekrar kullanılabilir yapılacak) kütüphane öğesi kullanılacak Dinamik kod takıyorum istediğiniz zamanlar vardır. Ne demek istediğimi, muhtemelen bu örnek senaryo ile daha net olabilir.

Eğer bir web sitesi oluşturmak (ve XML, XSL transfroms tabii kullanarak) ve sayfaların çoğu Yorumlar Modülü olurdu hayal edin. Eh! sonra da her sayfası şablonu (ki diyorum, ancak bakım ve tamir bir kabus yapmak Ağrı) veya daha da iyisi bu kodu kopyalayıp yapıştırın veya, sen (sayfanızda istediğiniz yere kadar çekti edilebilir bir INCLUDE dosyası oluşturmak lar) ...
Yani NASIL bir XSL INCLUDE dosyası CREATE ve başka bir XSL dosyası içine dahil MUSUNUZ? Burada nasıl ...

Sadece şeyleri açıklığa kavuşturmak için ... burada yaratacağını dosyalarını hızla listesi ... Burada, gıda adlı bir ana sayfa içine meyve ve sebzeler hakkında bilgi dahil edilecektir.

1. food.xml - dönüşüm uygulanacak xml veri dosyası
2. food.xsl - Bizim food.xml dönüştürecek ana XSL dosyası,
3. inc_fruits.xsl - XSL meyveler verileri işlerler dosya dahil
4. inc_vegtables.xsl - XSL vetetables verileri işlerler dosya dahil

Ben fazla açıklama olduğunu düşünüyorum değilsin, yukarıdaki öğeleri için kodları, kendini açıklayıcı olacaktır ...

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>

Burada Yukarıdaki tüm dosyaları (250 downloads) indirin


2008 4 Nisan 2008

XSLT XML düğüm Öznitelikler Çalışma

XML ve XSL kullanırsanız, nitelik ve XSL XML düğümleri değerleri ile oynamak zorunda olduğunda, o zaman, bir zaman karşı karşıya kalabilirsiniz. Onlar bu konuda uzun soluklu bilgi ile sitelerin yükler vardır, ama hiçbiri bulundu kısa ve kesin idi ... Bu NO XML / XSL TUTORIAL, ama hile listesi çeşit-bir araya getirmek için benim girişimi ...

Birlikte çalıştığımız olacak örnek XML bu gibi görünüyor ...

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

Bu yüzden XSL kullanarak bizim yukarıda XML dönüştürme başlayalım

Örnek 1: Seçilen Öznitelik az değeri gösteriliyor

<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 sonuç gibi görünecek

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


Örnek 2: aracılığıyla Döngü ve tüm XML Öznitelik Adları ve Değerler görüntüleme

<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 sonuç gibi görünecek


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


Burada Yukarıdaki tüm dosyaları (244 downloads) indirin



Bu alanı izle, yeni bulgular bu güncellemeye devam edeceğiz ...


NDK ev | BT İfade | İfade Damak | İfade Penmenship | İfade Awe | İfade Myself