xsl-list
[Top] [All Lists]

Re: Repeating Code

2005-10-07 23:17:43
Hi Nick,

It sounds to me like you do not know the mechanics of XSLT.
An XSLT document is only meaningfull in a given context, that is, with
a given input XML document.
You don't want the value-of select in a different file. value-of
select is an xsl construct. What you want is to create these
dynamically given your input.

Presumably your somenode1, somenode2, .. comes from this input XML.

What you want to do is to choose all these relevant nodes from the
input, then generate an output from this. They should have something
to distinguish them (same parent, same name, same attribute, or
anything).

If they have the same parent (lets call it ParentElement) then you
will be able to generate your output by:

<xsl:template match="ParentElement">
  <xsl:for-each select="*"/> <!-- Iterate over all children -->
    <COL>
      <DATA>
        <xsl:value-of select="."/> <!-- Select current node -->
      </DATA>
    </COL>
  </xsl:for-each>
</xsl:template>

Regards,
Ragulf Pickaxe :-)

On 10/8/05, Nicholas Orr <nick(_at_)goya(_dot_)com(_dot_)au> wrote:
Can anyone tell me if it  is possible to use a for-each loop (or even
some other sort of loop) to repeat code for a certain set of xsl
outputs?  For example, currently my xsl contains  :

 <COL>
     <DATA>
         <xsl:value-of select="somenode1" />
    </DATA>
</COL>
 <COL>
     <DATA>
        <xsl:value-of select="somenode2" />
    </DATA>
 </COL>

repeating for about 30 references, and the only change is in the
select line.  It works fine, but I'm wondering if there isn't a way
to make it neater.  So I can have a list of <xsl:value-of select >
lines and then only have the COL and DATA parts once in the XSL file.

Thanks,
Nick

--~------------------------------------------------------------------
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>
--~--



<Prev in Thread] Current Thread [Next in Thread>