|
Subject: [xsl] How can a template match elements created by xsl????? From: ChivaBaba@xxxxxxx Date: Wed, 15 May 2002 06:14:21 EDT |
Hi,
I work with two xml files, the first stores projects with needed tools and the second stores the details of these tools and its releases.
projects.xml:
++++++++++++++++++++++++++++++++++++++++++++++++++++++++
..
<devEnviron name="test">
<project name="R 30" version="A">
<tool name="Gnu C Compiler" version="3.1.1">
<location name="SL"/>
</tool>
<tool name="Gnu C++ Compiler" version="3.0.1">
<location name="SEL"/>
</tool>
...
</project>
...
</devEnviron>
++++++++++++++++++++++++++++++++++++++++++++++++++++++++
software.xml:
++++++++++++++++++++++++++++++++++++++++++++++++++++++++
...
<software>
<tool name="Gnu C++ Compiler"
company="open source"
category="Compiler-Interpreter"
phase="Coding">
<release name="3.0.1">
<os name="Solaris" version="5.7" kernel="1.3.0"/>
<computer name="SEL" path="/bin/compiler">
<docu kind="man" loc="/bin/docus">
gcc
</docu>
</computer>
...
</release>
...
</tool>
...
</software>
++++++++++++++++++++++++++++++++++++++++++++++++++++++++
I use a key to find for each tool in projects.xml the corresponding tool/release in software.xml.
When this certain release was found, I create a tool-element and copy all attributes of the releases' parent and the release itself into this element and store it in the variable tools. Afterwards I sort this rtf and store the result in the variable sw.
dev_env.xsl:
++++++++++++++++++++++++++++++++++++++++++++++++++++++++
...
<xsl:variable name="sw-file" select="document('../data/software.xml')"/>
<xsl:key name="releasekey" match="release" use="concat(../@name,'#',@name)"/>
...
<xsl:template match="project" mode="sw">
...
<xsl:variable name="tools">
<xsl:for-each select="tool">
<xsl:variable name="key" select="concat(@name,'#',@version)"/>
<xsl:for-each select="$sw-file">
<xsl:variable name="release" select="key('releasekey',$key)"/>
<tool>
<xsl:copy-of select="$release/../@*"/>
<xsl:copy-of select="$release"/>
</tool>
</xsl:for-each>
</xsl:for-each>
</xsl:variable>
<xsl:variable name="sw">
<xsl:for-each select="exsl:node-set($tools)">
<xsl:sort data-type="text" lang="en" select="@category"/>
<xsl:sort data-type="text" lang="en" select="@name"/>
<xsl:copy-of select="."/>
</xsl:for-each>
</xsl:variable>
...
++++++++++++++++++++++++++++++++++++++++++++++++++++++++
The PROBLEM occurs, when I try to process this node-set by a template that matches "tool". The template is ignored and no tool is matched!!
++++++++++++++++++++++++++++++++++++++++++++++++++++++++
...
<xsl:apply-templates select="exsl:node-set($sw)"/>
</xsl:template>
<xsl:template match="tool">
...
</xsl:template>
++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Does anybody of you experts has an idea, why this template does not process my toolnodes????
Help will be greatly appreciated!!
Best regards,
Stefan.
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
| Current Thread |
|---|
|
| <- Previous | Index | Next -> |
|---|---|---|
| [xsl] How to chunk to same dir wher, Janning Vygen | Thread | Re: [xsl] How can a template match , J.Pietschmann |
| [xsl] How to chunk to same dir wher, Janning Vygen | Date | Re:Re: [xsl] regarding the extensio, william locksman |
| Month |