Hey,
XSLT is een leuk ding, maar wanneer er recursie bij komt kijken wordt het voor mij toch wel erg lastig.
Ik heb een xml-file (resultaat van een SQLXML query) waarin op 1 niveau allerlei elementen staan.
Deze elementen hebben een ID en een parentID. Hiervan wil ik dus een mooi xml-filetje met structuur bouwen. Dat gaat op zich goed. maar: ik krijg het niet voor mekaar om xsl:element name="{$variabelenaam}" aan de praat te krijgen. Dit komt wrschnlk omdat hier de receursie plaatsvindt. IE klaagt bij het processen van de xslt dat tags niet goed afgesloten worden enzo. hieronder mn code. Ziet iemand de bug? (regel 17 bevat xsl:element)
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="/">
<MDC>
<xsl:for-each select="root/MDC_Characteristics[not(@ParentID=-1)]">
<xsl:apply-templates select=".">
<xsl:sort select="@Name" data-type="text" order="ascending"/>
</xsl:apply-templates>
</xsl:for-each>
</MDC>
</xsl:template>
<xsl:template match="MDC_Characteristics">
<xsl:variable name="charID" select="@MDC_CharacteristicID"/>
<xsl:variable name="charName" select="@Name"/>
<xsl:element name="{$charName}"> <-----------hier gaat t dus om
<xsl:attribute name="Name"><xsl:value-of select="$charName"/></xsl:attribute>
<xsl:attribute name="ID"><xsl:value-of select="$charID"/></xsl:attribute>
<xsl:if test="MDC_ModelCharacteristics">
<xsl:value-of select="MDC_ModelCharacteristics/@ValueID"/>
</xsl:if>
<xsl:apply-templates select="//MDC_Characteristics[@ParentID=$charID]">
<xsl:sort select="@Name" data-type="text" order="ascending"/>
</xsl:apply-templates>
</xsl:element>
</xsl:template>
</xsl:stylesheet>
XSLT is een leuk ding, maar wanneer er recursie bij komt kijken wordt het voor mij toch wel erg lastig.
Ik heb een xml-file (resultaat van een SQLXML query) waarin op 1 niveau allerlei elementen staan.
Deze elementen hebben een ID en een parentID. Hiervan wil ik dus een mooi xml-filetje met structuur bouwen. Dat gaat op zich goed. maar: ik krijg het niet voor mekaar om xsl:element name="{$variabelenaam}" aan de praat te krijgen. Dit komt wrschnlk omdat hier de receursie plaatsvindt. IE klaagt bij het processen van de xslt dat tags niet goed afgesloten worden enzo. hieronder mn code. Ziet iemand de bug? (regel 17 bevat xsl:element)
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="/">
<MDC>
<xsl:for-each select="root/MDC_Characteristics[not(@ParentID=-1)]">
<xsl:apply-templates select=".">
<xsl:sort select="@Name" data-type="text" order="ascending"/>
</xsl:apply-templates>
</xsl:for-each>
</MDC>
</xsl:template>
<xsl:template match="MDC_Characteristics">
<xsl:variable name="charID" select="@MDC_CharacteristicID"/>
<xsl:variable name="charName" select="@Name"/>
<xsl:element name="{$charName}"> <-----------hier gaat t dus om
<xsl:attribute name="Name"><xsl:value-of select="$charName"/></xsl:attribute>
<xsl:attribute name="ID"><xsl:value-of select="$charID"/></xsl:attribute>
<xsl:if test="MDC_ModelCharacteristics">
<xsl:value-of select="MDC_ModelCharacteristics/@ValueID"/>
</xsl:if>
<xsl:apply-templates select="//MDC_Characteristics[@ParentID=$charID]">
<xsl:sort select="@Name" data-type="text" order="ascending"/>
</xsl:apply-templates>
</xsl:element>
</xsl:template>
</xsl:stylesheet>
Jorrit Spee