Inkluder XSL inne XSL
Dersom XML / XSL Transforms er din domian, så det er tider da vi ønsker en peice av dynamisk kode som skal brukes biblioteket element (gjøres gjenbrukbare). Hva jeg mener, kan trolig gjøres mer tydelig med dette eksempelet scenariet.
Tenk deg at du oppretter et nettsted (og bruker XML, XSL transfroms selvfølgelig), og de fleste sidene vil ha en Kommentarer modul. Vel! så enten du kopiere eller lime inn denne koden på hver side mal (som jeg ikke har si, men gjør vedlikehold og bearbeide et mareritt) eller enda bedre, oppretter du en include-fil som kan trekkes i hvor enn du vil ha den på siden din ( e) ...
Så Hvordan skaper vi en XSL include-fil og inkludere den i en annen XSL-fil? Her er hvordan ...
Bare for å gjøre ting klart ... her er rask liste over filer som du ville skape ... her, vil vi bli inkludert informasjon om frukt og grønnsaker inn i en overordnet side som heter mat.
1. food.xml - XML-datafil der transformasjon vil bli anvendt
2. food.xsl - main XSL-fil, noe som vil forvandle vår food.xml
3. inc_fruits.xsl - XSL inkluderer fil som vil gi frukter data
4. inc_vegtables.xsl - XSL inkluderer fil som vil gjøre vetetables data
Jeg tror ikke jeg har forklare mye, kodene for ovennevnte elementer, vil være selvforklarende ...
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>










































