Subject: Re: [xsl] Iterate through variable in XSLT? From: "G. Ken Holman" <gkholman@xxxxxxxxxxxxxxxxxxxx> Date: Sat, 18 Aug 2007 07:03:24 -0400 |
basically i like to generic produce the following code rather then write it by myself
<xsl:template match="/"> <classes> <class> <xsl:attribute name="name"> <xsl:text>classA</xsl:text> </class> <class> <xsl:attribute name="name"> <xsl:text>classB</xsl:text> </class> <class> <xsl:attribute name="name"> <xsl:text>classC</xsl:text> </class> <class> <xsl:attribute name="name"> <xsl:text>classD</xsl:text> </class> </classes> </xsl:template>
the data about classes is not in my source XML file, i define it at runtime.
i was thinking to define a global variable $classes and iterate it at runtime but i don't know how to achieve that.
T:\ftemp>type yunwu.xml <?xml version="1.0" encoding="US-ASCII"?> <source-doc/> T:\ftemp>type yunwu-classes.xml <classes> <class>ClassA</class> <class>ClassB</class> <class>ClassC</class> <class>ClassD</class> </classes> T:\ftemp>type yunwu.xsl <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xsd="http://www.w3.org/2001/XMLSchema" exclude-result-prefixes="xsd" version="1.0">
<!--template rule for the source--> <xsl:template match="/"> <classes> <!--access external class definitions--> <xsl:for-each select="document('yunwu-classes.xml')/classes/class"> <class name="{.}"/> </xsl:for-each> </classes> </xsl:template>
</xsl:stylesheet> T:\ftemp>call xslt yunwu.xml yunwu.xsl yunwu1.out
T:\ftemp>type yunwu1.out <?xml version="1.0" encoding="utf-8"?> <classes> <class name="ClassA"/> <class name="ClassB"/> <class name="ClassC"/> <class name="ClassD"/> </classes> T:\ftemp>type yunwu-classes.txt ClassA ClassB ClassC ClassD ClassE
T:\ftemp>type yunwu2.xsl <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xsd="http://www.w3.org/2001/XMLSchema" exclude-result-prefixes="xsd" version="2.0">
<!--template rule for the source--> <xsl:template match="/"> <classes> <!--access external class definitions in text--> <xsl:for-each select="tokenize( unparsed-text('yunwu-classes.txt'),'\r?\n') [normalize-space(.)]"> <class name="{.}"/> </xsl:for-each> </classes> </xsl:template>
</xsl:stylesheet> T:\ftemp>call xslt2 yunwu.xml yunwu2.xsl yunwu2.out
T:\ftemp>type yunwu2.out <?xml version="1.0" encoding="UTF-8"?> <classes> <class name="ClassA"/> <class name="ClassB"/> <class name="ClassC"/> <class name="ClassD"/> <class name="ClassE"/> </classes> T:\ftemp>rem Done!
-- Upcoming public training: XSLT/XSL-FO Sep 10, UBL/code lists Oct 1 World-wide corporate, govt. & user group XML, XSL and UBL training RSS feeds: publicly-available developer resources and training G. Ken Holman mailto:gkholman@xxxxxxxxxxxxxxxxxxxx Crane Softwrights Ltd. http://www.CraneSoftwrights.com/s/ Box 266, Kars, Ontario CANADA K0A-2E0 +1(613)489-0999 (F:-0995) Male Cancer Awareness Jul'07 http://www.CraneSoftwrights.com/s/bc Legal business disclaimers: http://www.CraneSoftwrights.com/legal
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
[xsl] Iterate through variable in X, yun Wu | Thread | Re: [xsl] Iterate through variable , Wendell Piez |
[xsl] Iterate through variable in X, yun Wu | Date | [xsl] Re: XML/XHTML fragment to tex, Alain |
Month |