|
Subject: [xsl] Merging data (two xml documents, two context nodes) From: "McKeever, Marty" <marty.mckeever@xxxxxxxxxxxxxxxxx> Date: Tue, 18 Dec 2001 09:22:30 -0500 |
I'm creating an application to build up a data.xml file, where the interface
is created via XSLT by combining the structure of a config.xml with the
values contained in the data.xml being created. The interface is the
output. For example:
data.xml
<page name="foo" type="A"></page>
the name and type attributes are populated via the interface created
from config.xml
config.xml
<page>
<attributes>
<attribute attname="name" widget="text"/>
<attribute attname="type" widget="select">
<option value="PR">Press Release</option>
<option value="A">Article</option>
</attribute>
</attributes>
</page>
So, while parsing the data.xml in interface.xsl I have the following
template:
<xsl:template match="page">
Page Options:
<xsl:call-template name="makeAttributes">
<xsl:with-param name="prefix">page</xsl:with-param>
</xsl:call-template>
</xsl:template>
Template "makeAttributes" then reads the config file to create the
interface:
<xsl:template name="makeAttributes">
<xsl:param name="prefix"/>
<xsl:for-each
select="document('config.xml')/page/attributes/attribute">
<xsl:if test="@widget='text'">
<input type="text" name="{$prefix}|{@attname}"
value="{??? value "foo" from data.xml/page/@name ???}" />
</xsl:if>
<xsl:if test="@widget='select'">
<select name="{$prefix}|{@attname}">
<xsl:for-each select="option">
<option value="{@value}">
<xsl:if test="@value=??? value "A" from
data.xml/page/@type ???">
<xsl:attribute
name="selected">selected</xsl:attribute>
</xsl:if>
<xsl:value-of select="."/></option>
</xsl:for-each>
</select>
</xsl:if>
</xsl:for-each>
</xsl:template>
So the problem here is how to read data from the original context node
(data.xml/page) after the called template has changed its context to
congfig.xml/page/attributes/attribute?
I think (hope) i'm just missing something simple...
Suddenly i'm wondering if i should be parsing config.xml as the base
document, and modifying it according to the contents of data.xml, instead if
the other way around.
Thanks for any comments,
Marty
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
| Current Thread |
|---|
|
| <- Previous | Index | Next -> |
|---|---|---|
| [xsl] outputting   to HTML (fin, Aniceto López | Thread | Re: [xsl] Merging data (two xml doc, Robert Koberg |
| RE: [xsl] outputting   to HTML , Ilya Khandamirov | Date | [xsl] outputting   to HTML (fin, Aniceto López |
| Month |