This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
XSLT: Restructuring/Grouping
- To: xsl-list at mulberrytech dot com
- Subject: XSLT: Restructuring/Grouping
- From: Wolfgang May <may at informatik dot uni-freiburg dot de>
- Date: Sat, 4 Mar 2000 19:45:39 +0100 (MET)
- Reply-To: xsl-list at mulberrytech dot com
Hi,
I want to "group" elements by one of their attributes, e.g.,
<org id="org-WEU">
<name>Western European Union</name>
<abbrev>WEU</abbrev>
<member type="member" ref="Greece"/>
<member type="member" ref="France"/>
<member type="member" ref="Spain"/>
<member type="member" ref="Germany"/>
<member type="member" ref="Italy"/>
<member type="member" ref="Belgium"/>
<member type="member" ref="Luxembourg"/>
<member type="member" ref="Netherlands"/>
<member type="member" ref="Portugal"/>
<member type="member" ref="United-Kingdom"/>
<member type="associate member" ref="Turkey"/>
<member type="associate member" ref="Norway"/>
<member type="associate member" ref="Iceland"/>
<member type="observer" ref="Austria"/>
<member type="observer" ref="Denmark"/>
<member type="observer" ref="Finland"/>
<member type="observer" ref="Sweden"/>
<member type="observer" ref="Ireland"/>
<member type="associate partner" ref="Czech-Republic"/>
<member type="associate partner" ref="Hungary"/>
<member type="associate partner" ref="Slovakia"/>
<member type="associate partner" ref="Latvia"/>
<member type="associate partner" ref="Lithuania"/>
<member type="associate partner" ref="Poland"/>
<member type="associate partner" ref="Bulgaria"/>
<member type="associate partner" ref="Romania"/>
<member type="associate partner" ref="Estonia"/>
</org>
into
<org id="org-WEU">
<name>Western European Union</name>
<abbrev>WEU</abbrev>
<member type="member"
countries="Greece France Spain Germany Italy Belgium
Luxembourg Netherlands Portugal
United-Kingdom"/>
<member type="associate member"
countries="Turkey Norway Iceland"/>
<member type="observer"
countries="Austria Denmark Finland Sweden Ireland"/>
<member type="associate partner"
countries="Czech-Republic Hungary Slovakia Latvia
Lithuania Poland Bulgaria Romania
Estonia"/>
</org>
.
A "solution" based on
<xsl:template match="org">
<organization>
<xsl:copy-of select="@id|name|abbrev"/>
<xsl:for-each select="member/@type">
<member>
... collect all members of that type ...
</member>
</xsl:for-each>
</organization>
</xsl:template>
does *not* work since duplicates in [[member/@type]] are not removed.
The solution must not assume that the domain where the type value is
taken from is known when writing the program - thus the values must be
selected from the input file.
... I am missing a possibility to define views in XSLT which are not
output but can be used in the computation.
Wolfgang
to avoid questions: That's not my homework.
-- -----------------------------------------------------------------
Wolfgang May E-mail: may@informatik.uni-freiburg.de
Universitaet Freiburg http://www.informatik.uni-freiburg.de/~may/
Institut fuer Informatik D-79110 Freiburg / Germany
Lehrstuhl fuer Datenbanken und Informationssysteme
Tel ++49 761 203-8131 Fax ++49 761 203-8122
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list