ik heb drie xml files en één xsl file:
xml files:
a.xml - hierin staan de namen van de andere twee xml files.
[XML]<?xml-stylesheet href="b.xsl" type="text/xsl"?>
<mergeData newRoot="newRoot">
<fileList>
<fileItem>myFile1.xml</fileItem>
<fileItem>myFile2.xml</fileItem>
</fileList>
</mergeData>[/XML]
myfile1.xml - hierin staan de breedtes van kolommen welke dmv de xsl file gecreeerd moeten worden
[XML]<mergeData newRoot="newRoot">
<kolom>
<breedte_1>200</breedte_1>
</kolom>
<kolom>
<breedte_2>400</breedte_2>
</kolom>
</mergeData>[/XML]
myfile2.xml - hierin staat de data welke gepresenteerd moeten worden in de kolommen
[XML]<mergeData newRoot="newRoot">
<inhoud>
<kolom_1>inhoud kolom 1</kolom_1>
<kolom_2>inhoud kolom 2</kolom_2>
</inhoud>
</mergeData>[/XML]
b.xsl - met het hieronderstaand
[XML]<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl
utput method="html"/>
<xsl:template match="/">
<xsl:element name="{mergeData/@newRoot}">
<xsl:apply-templates select="mergeData/fileList/fileItem"/>
</xsl:element>
</xsl:template>
<xsl:template match="@* | node()">
<HTML>
<HEAD>
<STYLE TYPE="text/css">
td {
font-family:"courier New"; font-size:13pt;
}
TABLE {
table-layout: auto;
}
</STYLE>
</HEAD>
<BODY>
<TABLE border="2">
<THEAD>
</THEAD>
<TBODY>
<TR>
<xsl:for-each select="document(.)//mergeData/kolom">
<xsl:variable name="breedte1" select="breedte_1"/>
<xsl:variable name="breedte2" select="breedte_2"/>
</xsl:for-each>
</TR>
<TR>
<xsl:for-each select="document(.)//mergeData/inhoud">
<TD><xsl:attribute name="width"><xsl:value-of select="$breedte1"/></xsl:attribute><xsl:value-of select="kolom_1"/></TD>
<TD><xsl:attribute name="width"><xsl:value-of select="$breedte2"/></xsl:attribute><xsl:value-of select="kolom_2"/></TD>
</xsl:for-each>
</TR>
</TBODY>
</TABLE>
</BODY>
</HTML>
</xsl:template>
</xsl:stylesheet>[/XML]
Zodra ik dit geheel uitvoer krijg ik de onderstaande fout :
De XML-pagina kan niet worden weergegeven
Kan XML-invoer niet lezen met opmaakmodel XSL. Herstel de fout en klik vervolgens op de knop Vernieuwen of probeer het later opnieuw.
--------------------------------------------------------------------------------
Kan een verwijzing naar de variabele of parameter breedte1 niet oplossen. De variabele of parameter is mogelijk niet gedefin...
Ik heb al van alles geprobeerd om dit probleem op te lossen maar kom er niet echt uit, de kolom breedtes zouden een top-level variabele moeten zijn maar hoe ik dat voor elkaar moet krijgen is me niet duidelijk. Heeft iemand een suggestie ?
Alvast bedankt.
xml files:
a.xml - hierin staan de namen van de andere twee xml files.
[XML]<?xml-stylesheet href="b.xsl" type="text/xsl"?>
<mergeData newRoot="newRoot">
<fileList>
<fileItem>myFile1.xml</fileItem>
<fileItem>myFile2.xml</fileItem>
</fileList>
</mergeData>[/XML]
myfile1.xml - hierin staan de breedtes van kolommen welke dmv de xsl file gecreeerd moeten worden
[XML]<mergeData newRoot="newRoot">
<kolom>
<breedte_1>200</breedte_1>
</kolom>
<kolom>
<breedte_2>400</breedte_2>
</kolom>
</mergeData>[/XML]
myfile2.xml - hierin staat de data welke gepresenteerd moeten worden in de kolommen
[XML]<mergeData newRoot="newRoot">
<inhoud>
<kolom_1>inhoud kolom 1</kolom_1>
<kolom_2>inhoud kolom 2</kolom_2>
</inhoud>
</mergeData>[/XML]
b.xsl - met het hieronderstaand
[XML]<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl

<xsl:template match="/">
<xsl:element name="{mergeData/@newRoot}">
<xsl:apply-templates select="mergeData/fileList/fileItem"/>
</xsl:element>
</xsl:template>
<xsl:template match="@* | node()">
<HTML>
<HEAD>
<STYLE TYPE="text/css">
td {
font-family:"courier New"; font-size:13pt;
}
TABLE {
table-layout: auto;
}
</STYLE>
</HEAD>
<BODY>
<TABLE border="2">
<THEAD>
</THEAD>
<TBODY>
<TR>
<xsl:for-each select="document(.)//mergeData/kolom">
<xsl:variable name="breedte1" select="breedte_1"/>
<xsl:variable name="breedte2" select="breedte_2"/>
</xsl:for-each>
</TR>
<TR>
<xsl:for-each select="document(.)//mergeData/inhoud">
<TD><xsl:attribute name="width"><xsl:value-of select="$breedte1"/></xsl:attribute><xsl:value-of select="kolom_1"/></TD>
<TD><xsl:attribute name="width"><xsl:value-of select="$breedte2"/></xsl:attribute><xsl:value-of select="kolom_2"/></TD>
</xsl:for-each>
</TR>
</TBODY>
</TABLE>
</BODY>
</HTML>
</xsl:template>
</xsl:stylesheet>[/XML]
Zodra ik dit geheel uitvoer krijg ik de onderstaande fout :
De XML-pagina kan niet worden weergegeven
Kan XML-invoer niet lezen met opmaakmodel XSL. Herstel de fout en klik vervolgens op de knop Vernieuwen of probeer het later opnieuw.
--------------------------------------------------------------------------------
Kan een verwijzing naar de variabele of parameter breedte1 niet oplossen. De variabele of parameter is mogelijk niet gedefin...
Ik heb al van alles geprobeerd om dit probleem op te lossen maar kom er niet echt uit, de kolom breedtes zouden een top-level variabele moeten zijn maar hoe ik dat voor elkaar moet krijgen is me niet duidelijk. Heeft iemand een suggestie ?
Alvast bedankt.