2008 4 mai 2008

Inclure XSL XSL à l'intérieur

Si XML / XSL Transformations est votre domian, alors il ya des moments où nous voulons un peice de code dynamique pour être utilisé élément de la bibliothèque (à faire ré-utilisable). Qu'est-ce que je veux dire, sans doute pourrait être rendu plus clair avec ce scénario par exemple.

Imaginez que vous créez un site web (et en utilisant XML, XSL transfroms ofcourse) et la plupart des pages aurait un module Commentaires. Eh bien! alors soit vous copiez ou collez ce code dans tous les modèle de page (qui je n'ai pas dit, mais compliquent la maintenance et de retravailler un cauchemar) ou, mieux encore, vous créez un fichier INCLUDE qui pouvait être tirée en où que vous le voulez dans votre page ( s) ...
Alors comment créer un fichier XSL INCLUDE et l'inclure dans un autre fichier XSL? Voici comment ...

Juste pour clarifier les choses ... voici la liste rapide de fichiers que vous créez ... ici, nous allons être, y compris d'infos sur les fruits et les légumes dans une page parent appelé la nourriture.

1. food.xml - fichier de données XML sur lequel la transformation sera appliqué
2. food.xsl - fichier principal XSL, qui va transformer notre food.xml
3. inc_fruits.xsl - XSL inclure le fichier qui va rendre les données de fruits
4. inc_vegtables.xsl - XSL inclure le fichier qui va rendre les données vetetables

Je ne pense que je dois expliquer en grande partie, les codes pour les éléments ci-dessus, sera auto explicative ...

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>

Télécharger tous les fichiers ci-dessus ici (250 téléchargements)


NDK la maison | Exprimant IT | Bouche Exprimant | Penmenship Exprimant | Awe Exprimant | m'exprimer