[XSL-LIST Mailing List Archive Home]
[By Thread]
[By Date]
Hello John,
almost everything is ok, you are switching the context correctly to the second file dbdef.xml, you are only selecting the text-value of a node, that has no text.
With your <xsl:value-of select="$dbdef-col"/> at the end you select the text of an element <AttributeType/>, they all are empty (have no child nodes) in your dbdef.xml. What you want is maybe <xsl:value-of select="$dbdef-col/@name"/>, isn't it?
But your code is not completely full of sense to me. Can the test not be done easier?
You have something like ID and IDREF. You don't need to output as first the one and as second the other one. The value is the same. So the <xsl:if> is important. Or do you need the "col1=,col2=col2,col3=col3"-String?
Regards,
Joerg
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Re: [xsl] Using a second xml document as a lookup table
Subject: Re: [xsl] Using a second xml document as a lookup table From: Joerg Heinicke <joerg.heinicke@xxxxxx> Date: Fri, 10 May 2002 01:21:25 +0200 |
Hello John,
almost everything is ok, you are switching the context correctly to the second file dbdef.xml, you are only selecting the text-value of a node, that has no text.
With your <xsl:value-of select="$dbdef-col"/> at the end you select the text of an element <AttributeType/>, they all are empty (have no child nodes) in your dbdef.xml. What you want is maybe <xsl:value-of select="$dbdef-col/@name"/>, isn't it?
But your code is not completely full of sense to me. Can the test not be done easier?
<xsl:template match="columns"> <xsl:for-each select="column"> <xsl:variable name="dbcolumn" select="@dbcolumn"/> <xsl:for-each select="$dbdef"> <xsl:if test="key('dbdef-cols', $dbcolumn)"> <xsl:value-of select="$dbcolumn"/> <xsl:text>=</xsl:text> <xsl:value-of select="$dbcolumn"/> <xsl:text>,</xsl:text> </xsl:if> </xsl:for-each> </xsl:for-each> </xsl:template>
You have something like ID and IDREF. You don't need to output as first the one and as second the other one. The value is the same. So the <xsl:if> is important. Or do you need the "col1=,col2=col2,col3=col3"-String?
Regards,
Joerg
Here's my main XML file:>
<columns> <column dbcolumn="col1"/> <column dbcolumn="col2" /> <column dbcolumn="col3" /> </columns>
Here's my lookup XML file, dbdef.xml:
<ElementType> <AttributeType name='col2'/> <AttributeType name='col3' /> <AttributeType name='col4' /> </ElementType>
My XSLT is:
<xsl:key name="dbdef-cols" match="AttributeType" use="@name" /> <xsl:variable name="dbdef" select="document('dbdef.xml')" />
<xsl:template match="/"> <xsl:variable name="all-columns" select="//column"/> <xsl:for-each select="$all-columns"> <xsl:variable name="dbcolumn" select="@dbcolumn" /> <xsl:for-each select="$dbdef"> <xsl:variable name="dbdef-col" select="key('dbdef-cols', $dbcolumn)" /> <xsl:value-of select="$dbcolumn"/>=<xsl:value-of select="$dbdef-col"/>, </xsl:for-each> </xsl:for-each> </xsl:template>
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
[xsl] Using a second xml document a, John Sands | Thread | Re: [xsl] Using a second xml docume, John Sands |
Re: [xsl] passing intermediate resu, paul morgan | Date | Re: [xsl] Strange Template Behavior, Joerg Heinicke |
Month |