Hi Ken,
thank you for your example, but there are some problems according to the
following examples.
I've changed (a little bit) your code that "nearly" no html-tag is used
in the xslt-file.
[...]
--------------------------------------
data.xml:
*************
<data>
<row class="col0">
<title>Title A</title>
<num>123</num>
</row>
<row class="col1">
<title>Title B</title>
<num>456</num>
</row>
<row class="col2">
<title>Title C</title>
<num>789</num>
</row>
</data>
test.html (or .xml):
*************
<!-- news template -->
<table>
<tr loop="row"><td myid="title">dummytitel</td><td
myid="num">1234</td><td></td></tr>
</table>
<!-- /news template -->
test.xsl:
*************
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:output method="html" omit-xml-declaration="yes" indent="yes"/>
<!--the external data to be added to the HTML source when building output-->
<xsl:variable name="datafile" select="document('data.xml')"/>
<!--found an attribute "loop"-->
<xsl:template match="*[(_at_)loop]">
<!--remember the cells of the row for later-->
<xsl:variable name="loop" select="*" />
<!-- remember tagname of the loop-element to generate element later-->
<xsl:variable name="looptag" select="name()" />
<xsl:for-each select="$datafile/data/*[local-name(.)=current()/@loop]">
<!--building a row based on the specified row-oriented
element-->
<xsl:element name="{$looptag}">
<!--need to remember the row context when doing the cells-->
<xsl:variable name="row" select="." />
<xsl:for-each select="$loop">
<!-- FIXME: show element-tag from source (html-file) -->
<td>
<!--match the cell's element name as asked for in
attribute-->
<xsl:value-of
select="$row/*[local-name(.)=current()/@myid]" />
</td>
</xsl:for-each>
</xsl:element>
</xsl:for-each>
</xsl:template>
<xsl:template match="@*|node()"><!--identity for all other nodes-->
<xsl:copy>
<xsl:apply-templates select="@*|node()" />
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
**************************************
result:
*************
<!-- news template -->
<table>
<tr>
<td>Title A</td><td>123</td><td></td>
</tr>
<tr>
<td>Title B</td><td>456</td><td></td>
</tr>
<tr>
<td>Title C</td><td>789</td><td></td>
</tr>
</table>
<!-- /news template -->
^ which is ok for this html-template
--------------------------------------
So, considering the html-template-file the xsl-file shouldn't contain _any_
html-tag to
produce the resulting html/xml-file rather get the tag from the source-file.
ex. A:
test.html (or .xml):
***********************
<!-- news template -->
<table>
<tr loop="row">
<td><div><div myid="title">dummycontent</div></div></td>
<td myid="num">1234</td>
<td>Blah</td>
</tr>
</table>
<!-- /news template -->
which should result in:
***********************
<!-- news template -->
<table>
<tr>
<td><div><div>Title A</div></div></td>
<td myid="num">123</td>
<td>Blah</td>
</tr>
<tr>
<td><div><div>Title B</div></div></td>
<td myid="num">456</td>
<td>Blah</td>
</tr>
<tr>
<td><div><div>Title C</div></div></td>
<td myid="num">789</td>
<td>Blah</td>
</tr>
</table>
<!-- /news template -->
or
ex. B:
test.html (or .xml):
***********************
<!-- news template -->
<div loop="row">
<div myid="title">dummycontent <div
myid="num">dummyconten2</div></div>
</div>
<!-- /news template -->
which should result in:
***********************
<!-- news template -->
<div>
<div>Title A<div>123</div></div>
</div>
<div>
<div>Title B<div>456</div></div>
</div>
<div>
<div>Title C<div>789</div></div>
</div>
<!-- /news template -->
or a more complex example with recursion:
test.html (or .xml):
***********************
<!-- news template -->
<div loop="row">
<div myid="title">dummycontent</div>
<div myid="num">dummyconten2</div>
<div loop="nested">
<div myid="title">dummy2</div>
<div loop="third">
<div myid="name"></div>
</div>
</div>
</div>
<!-- /news template -->
with xml-data:
***********************
<data>
<row class="col0">
<title>Title A</title>
<num>123</num>
<nested>
<title>NestedTitle</title>
<third>
<name>MyName</name>
<name>MyName2</name>
</third>
</nested>
</row>
<row class="col1">
<title>Title B</title>
<num>456</num>
<nested>
<title>NestedTitle2</title>
<third></third>
</nested>
<nested>
<title>NestedTitle3</title>
<third>
<name>MyName3</name>
</third>
</nested>
</row>
</data>
which should result in:
<!-- news template -->
<div>
<div>Title A</div>
<div>123</div>
<div>
<div>NestedTitle</div>
<div>
<div>MyName</div>
<div>MyName2</div>
</div>
</div>
</div>
<div>
<div>Title B</div>
<div>456</div>
<div>
<div>NestedTitle2</div>
<div></div>
</div>
<div>
<div>NestedTitle3</div>
<div>
<div>MyName3</div>
</div>
</div>
</div>
<!-- /news template -->
******
Is this possible with one xslt-file?
Thank you for any comment/example in advance.
Milli Jolie
--
Lust, ein paar Euro nebenbei zu verdienen? Ohne Kosten, ohne Risiko!
Satte Provisionen für GMX Partner: http://www.gmx.net/de/go/partner
--~------------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--