2008 02 august 2008

Setarea DOCTYPE în XSL

Saptamana trecuta am creat o progresivă HTML / CSS layout-ul pentru un client, am testat-o ​​în IE6, IE7 si FF 3, părea perfect bine ... până când! aspect a mers mai departe în jos ciclu manufacting. Acesta nu a reuşit. Elemente de aspect de pagină, doar a plecat peste tot loc atunci când structura HTML a fost transformată în XSL si XML aplicate pentru a se ... Bummer!

Nu a putut dormi bine peste week-end, în anticiparea de luni dimineaţă, atunci când voi avea pentru a remedia această SH **. Dar, având acum o Experienta puţin în a face cu aceste tipuri de situaţii (quirks Browser, vreau să spun), am stiut ca a avut de a face cu nimic altceva, dar DOCTYPE .... şi a fost ...

Problemă:
Vrei controlul asupra DOCTYPE, deoarece transformarea va include un DOCTYPE implicit în mod explicit, şi veţi aspect va fi în afara pentru o aruncare.

Soluţie:
XSLT Specificatii oferă metode de ieşire pentru a seta un DOCTYPE de alegere. De asemenea, pentru noi, dezvoltatorii UI, subiectele de interes ar fi metodele de ieşire HTML şi XML metodele de ieşire .

Ei bine! înainte de a te-ai plictisit, aici este fix.

De exemplu, dacă aţi avut următoarea DOCTYPE în versiunea HTML:. -

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

Apoi, în XSL va trebui să aibă următoarele: -

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

şi, în sfârşit! asiguraţi-vă că nu de ieşire XSLT se supune DOCTYPE-aţi ales.


2008 04 mai 2008

Includeţi în interiorul XSL XSL

Dacă XML / XSL Transformă este domian ta, atunci există momente când ne dorim un peice de cod dinamic pentru a fi utilizate element bibliotecă (să se facă re-utilizabile). Ce vreau să spun, probabil, ar putea fi mai clar, cu acest scenariu de exemplu.

Imaginaţi-vă că sunt crearea unui site web (si folosind XML, XSL transfroms desigur), şi de cele mai multe pagini ar avea un Modul Comentarii. Ei bine! apoi, fie copiaţi sau inseraţi acest cod în fiecare şablon de pagină (pe care I dont au spus, dar face de întreţinere şi revizie un cosmar) sau chiar mai bine, vă creaţi un includ fişiere care ar putea fi tras în cazul în care doriţi vreodată în pagina dvs. ( e) ...
Deci, cum vom crea un fisier XSL include şi o includ în interiorul alt fişier XSL? Iată cum ...

Doar pentru a face lucrurile clar ... aici este lista rapidă de fişiere pe care le-ar crea ... aici, noi vom fi, inclusiv informatii despre fructe şi legume într-o pagină părinte numit alimente.

1. food.xml - XML ​​fişier de date pe care transformarea va fi aplicat
2. food.xsl - principala XSL dosar, care va transforma food.xml nostru
3. inc_fruits.xsl - XSL include fişierul de date care vor face fructe
4. inc_vegtables.xsl - XSL include fişierul de date, care va face vetetables

Nu cred ca am explica mai mult, codurile de elementele de mai sus, va fi de sine explicativ ...

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

Descarcă toate fişierele de mai sus aici (251 de descărcări)


2008 04 aprilie 2008

Lucrul cu Atribute nodurilor XML în XSLT

Dacă utilizaţi XML şi XSL, atunci este posibil să fi venit peste un timp, atunci când trebuie să joci în jurul cu atribute si valori de noduri XML în tine XSL. Ele sunt o mulţime de site-uri cu informatii tărăgănat mult timp despre acest lucru, dar nu am gasit au fost scurte şi precise ... Aceasta nu este o TUTORIAL XML / XSL, dar încercarea mea de a pune împreună-un fel de ieftin listă ...

Eşantion XML că vom lucra cu arata ca aceasta ...

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

Deci, haideţi începe transformarea XML nostru de mai sus folosind XSL

Exemplul 1: Afiseaza valoarea de la un atribut de ales

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

Rezultatul HTML va arata ca

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


Exemplul 2: Looping, prin afişarea şi toate numele XML atributul şi valorile lor

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

Rezultatul HTML va arata ca


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


Descarcă toate fişierele de mai sus aici (244 de descărcări)



Uita-te la acest spatiu, voi păstra actualizarea acestei descoperiri cu noi ...


NDK acasă | Exprimarea IT | Gust Exprimarea | Penmenship Exprimarea | Awe Exprimarea | a mă exprima