2008 02 augustus 2008

Het instellen van de DOCTYPE in XSL

Vorige week heb ik een progessieve HTML / CSS-lay-out voor een klant, getest in IE6, IE7 en FF 3, leek prima ... tot! de lay-out ging verderop in de manufacting cyclus. Het is mislukt. Pagina-indeling elementen ging gewoon over de plaats als de HTML-lay-out werd omgezet in XSL en XML toegepast ... Bummer!

Kan niet ok slapen in het weekend, in afwachting van maandagochtend, als ik moet deze sh ** op te lossen. Maar nu met een beetje experince in het omgaan met dit soort situaties (Browser Quirks, ik bedoel), wist ik dat het te maken had met niets anders dan DOCTYPE .... en het was ...

Het probleem:
U wilt controle over het DOCTYPE, want jullie transformatie wordt een standaard DOCTYPE expliciet op te nemen, en je lay-out zal worden voor een toss.

De oplossing:
XSLT specs biedt uitvoermethoden het instellen van een van de DOCTYPE naar keuze. Ook voor ons UI ontwikkelaars, zouden de onderwerpen van belang kunnen zijn HTML-uitvoer methoden en XML-uitvoer methoden .

Nou! voordat je verveeld, hier is de oplossing.

Voor bijvoorbeeld, als je de volgende DOCTYPE in je HTML-versie:. -

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

Dan in de XSL u zou hebben om de volgende zijn: -

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

en tot slot! Zorg er wel voor uw XSLT-uitgang gehoorzaamt aan de DOCTYPE u hebt gekozen.


2008 04 mei 2008

Inclusief XSL binnen XSL

Als XML / XSL-transformaties is uw domian, dan zijn er momenten waarop we een stuk van dynamische code te gebruiken bibliotheekitem (gemaakt worden herbruikbare) willen. Wat ik bedoel, kan waarschijnlijk worden gemaakt met dit voorbeeld duidelijk scenario.

Stel je voor dat het maken van een website (en het gebruik van XML, XSL transfroms natuurlijk) en de meeste van de pagina's zou een Opmerkingen Module hebben. Nou! vervolgens te kopiëren of deze code plakken in elke pagina template (die ik dont have zeggen, maar maken het onderhoud en rework een nachtmerrie), of nog beter, maak je een INCLUDE-bestand dat kan in waar je zelf wil worden getrokken in uw pagina ( s) ...
Dus Hoe creëren we een XSL INCLUDE-bestand en dit opnemen in een andere XSL-bestand? Hier is hoe ...

Gewoon om dingen duidelijk maken ... hier is een snelle lijst met bestanden die je zou maken ... hier, zullen we ook informatie over fruit en groenten in een bovenliggende pagina genaamd voedsel.

1. food.xml - XML-gegevensbestand, waarop de transformatie zal worden toegepast
2. food.xsl - belangrijkste XSL-bestand, dat onze food.xml zal transformeren
3. inc_fruits.xsl - XSL-bestand dat onder meer zal maken vruchten gegevens
4. inc_vegtables.xsl - XSL-bestand dat onder meer zal maken vetetables gegevens

Ik denk niet dat ik moet uitleggen veel, de codes voor bovenstaande elementen, zal zijn spreekt voor zichzelf ...

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>

Download al deze bestanden hier (256 downloads)


2008 04 april 2008

Het werken met XML-Node attributen in XSLT

Als u XML en XSL, dan kun je misschien zijn gekomen over een tijd, wanneer je moet spelen met attributen en waarden van de XML-nodes in je XSL. Ze zijn veel sites met lange adem info over deze, maar geen enkele vond ik waren kort en precies ... Dit is geen XML / XSL tutorial, maar mijn poging om put-samen een soort cheat lijst ...

Het voorbeeld-XML-dat we werken met ziet er als volgt ...

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

Dus laten we beginnen met de transformatie van onze bovenstaande XML met behulp van XSL

Voorbeeld 1: Weergave van waarde op een gekozen kenmerk

<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 resultaat eruit zal zien

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


Voorbeeld 2: doorlussen en weergeven van alle XML-attribuut Namen en hun waarden

<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 resultaat eruit zal zien


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


Download al deze bestanden hier (249 downloads)



Watch this space, zal ik een update van deze nieuwe bevindingen ...


NDK huis | Te drukken | Het uiten van Smaak | Het uiten van Penmenship | Het uiten van Awe | Het uiten van Myself