scs: Messreihe sortieren

Hallo, hab folgendes Problem:

ich mach mehrere Messungen mit einem Programm, dass eine art Report ausgibt in XML. Diesen möchte ich mittels XSL sortieren. Die Ausgabe aller Infos die ich möchte habe ich bereits in XSL geschrieben. Nun ist aber im Beispiel hier die Messung Kinderkarussel_01 und Kinderkarusell_02 gleich. Sie unterscheiden sich nur in ihrem Namen. Jetzt sollen diese Messungen zussamengefasst werden und als Kinderkarusell_01 & _02 ausgegeben werden. Ich hoffe man versteht mich?!

Hier die XML:

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="..........\Desktop\XSL\3-Ebenen.xsl"?>
<pak>
  <datasource url="C:/...">
    <project name="XSL">
      <test name="Muster">
        <subtest name="Kinderkarussel_01">
          <cycle name="">

<measurement name="Messung" date="05.07.2000">
              <tstsubject>Pferd</tstsubject>
              <tststand>Karussel</tststand>
              <expert>Chef</expert>
              <expertdiv>Abteilung</expertdiv>
              <orderer>Mustermann</orderer>
              <ordererdiv></ordererdiv>
              <probe name="Probe.def">
              </probe>
              <messtext name="Beschreibung">
                <t>dreht links herum, </t>
                <t>geht auf und ab</t>
              </messtext>
            </measurement>
          </cycle>
        </subtest>
        <subtest name="Kinderkarussel_02">
          <cycle name="">

<measurement name="Messung" date="05.07.2000">
              <tstsubject>Pferd</tstsubject>
              <tststand>Karussel</tststand>
              <expert>Chef</expert>
              <expertdiv>Abteilung</expertdiv>
              <orderer>Mustermann</orderer>
              <ordererdiv></ordererdiv>
              <probe name="Probe.def">
              </probe>
              <messtext name="Beschreibung">
                <t>dreht links herum, </t>
                <t>geht auf und ab</t>
              </messtext>
            </measurement>
          </cycle>
        </subtest>
        <subtest name="anderes Karusell_03">
          <cycle name="">
            <measurement name="Messung" date="05.07.2000">
              <tstsubject>Pferd</tstsubject>
              <tststand>Karussel</tststand>
              <expert>Chef</expert>
              <expertdiv>Abteilung</expertdiv>
              <orderer>Mustermann</orderer>
              <ordererdiv></ordererdiv>
              <probe name="Probe.def">
              </probe>
              <messtext name="Beschreibung">
                <t>dreht rechts herum, </t>
                <t>sonst nix</t>
              </messtext>
            </measurement>
          </cycle>
        </subtest>
      </test>
    </project>
  </datasource>
</pak>

Und die bisherige XSL:

<?xml version="1.0" encoding="ISO-8859-1"
?>

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html"encoding="ISO-8859-1"indent="yes"/>
<xsl:template match="/">
<html>
<head><style type="text/css">
body {font-family:Univers,Helvetica,Arial,sans-serif;font-size:6pt};
h1 {font-family:Univers,Helvetica,Arial,sans-serif;color:black;font-size:10pt}
h2{ font-family:Univers,Helvetica,Arial,sans-serif;color:black;font-size:8pt}
font-family:Univers,Helvetica,Arial,sans-serif;font-size:6pt}.red {color:red}.blue{color:blue}
ol{ font-family:Univers,Helvetica,Arial,sans-serif;color:black;font-size:8pt}

td {vertical-align:top;font-family:Univers,Helvetica,Arial,sans-serif;color:black;font-size:6pt}

div{font-family:Univers,Helvetica,Arial,sans-serif;font-size:6pt;color:blue}.black{color:black}
</style>
</head>
</html>
<table width="100%" rules="rows">
<thead>
<tr>
<h1><xsl:value-of select="//datasource/@name"/><br></br>
</h1>
</tr>
</thead>
<tfoot>
<tr>
<td><p>Messungen</p></td>
</tr>
</tfoot>
<tbody>
<xsl:for-each select="//datasource/project/test/subtest/cycle/measurement">
<tr>
<td style="width:40%">
<h1><xsl:value-of select="../../@name"/></h1><br></br>
<h2 style="position:relative; left:5%"><xsl:value-of select="../@name"/></h2>
<div style="position:relative; left:10%">
<table>
<tr><td>Projekt:</td><td><xsl:value-of select="//@name"/></td></tr>
<tr><td>Daten auf:</td><td><xsl:value-of select="//@url"/></td></tr>
<tr><td>Versuchsname:</td><td><xsl:value-of select="../../../@name"/></td></tr>
<tr><td>Messdatum:</td><td><xsl:value-of select="@date"/></td></tr>
<tr><td>Messbeschreibung:</td><td><xsl:value-of select="tstsubject"/></td></tr>
<tr><td>Messort:</td><td><xsl:value-of select="tststand"/></td></tr>
<tr><td>Bearbeiter:</td><td><xsl:value-of select="expert"/>
<xsl:value-of select="expertdiv"/>)</td></tr>     </table>
</div></td>
<td style="width:35%">
<xsl:for-each select="messtext">
<h2>Messtext : <xsl:value-of select="@name"/></h2>
<ol type="circle">        <xsl:for-each select="t">       <li><xsl:value-of select="."/></li>
</xsl:for-each>
</ol>
</xsl:for-each>
</td>

<td style="width:25%">
<div style="color:red"><xsl:for-each select="./setup/samplinggroups/samplinggroup/chansetting/mkiichannel">
<xsl:if test="active = 1">       <xsl:value-of select="position()"/>xsl:text - </xsl:text>   <xsl:value-of select="./chanpos/mptext"/>
<br></br>
</xsl:if>
</xsl:for-each>
</div>
<div style="color:green"><xsl:for-each select="./setup/samplinggroups/samplinggroup/chansetting/audiochannel">
<xsl:if test="active = 1">       <xsl:value-of select="position()"/>xsl:text - </xsl:text>   <xsl:value-of select="./chanpos/mptext"/>
<br></br>
</xsl:if>
</xsl:for-each>
</div>
<div style="color:blue"><xsl:for-each select="./setup/samplinggroups/samplinggroup/chansetting/vxichannel">
<xsl:if test="active = 1">       <xsl:value-of select="position()"/>xsl:text - </xsl:text>   <xsl:value-of select="./chanpos/mptext"/>
<br></br>
</xsl:if>
</xsl:for-each>
</div>
<div style="color:black"><xsl:for-each select="./setup/samplinggroups/samplinggroup/chansetting/e1413channel">
<xsl:if test="active = 1">
<xsl:value-of select="position()"/>xsl:text - </xsl:text>   <xsl:value-of select="./chanpos/mptext"/>
<br></br>
</xsl:if>
</xsl:for-each>
</div>
<div style="color:purple"><xsl:for-each select="./setup/samplinggroups/samplinggroup/chansetting/calculatedchannel">
<xsl:if test="active = 1">      <xsl:value-of select="position()"/>xsl:text - </xsl:text>   <xsl:value-of select="./chanpos/mptext"/>
<br></br>
</xsl:if>
</xsl:for-each>
</div>
</td>
</tr>
</xsl:for-each>
</tbody>
</table>
xsl:template
</xsl:stylesheet>

  1. Hallo,

    ich mach mehrere Messungen mit einem Programm, dass eine art Report ausgibt in XML. Diesen möchte ich mittels XSL sortieren. Die Ausgabe aller Infos die ich möchte habe ich bereits in XSL geschrieben. Nun ist aber im Beispiel hier die Messung Kinderkarussel_01 und Kinderkarusell_02 gleich. Sie unterscheiden sich nur in ihrem Namen. Jetzt sollen diese Messungen zussamengefasst werden und als Kinderkarusell_01 & _02 ausgegeben werden. Ich hoffe man versteht mich?!

    Du willst in XSLT also Datensätze gruppieren. Dazu solltest Du Dir zu aller erst einmal http://www.jenitennison.com/xslt/grouping/muenchian.html durchlesen, da wird das generelle Verfahren dargestellt. Du solltest dann das Verfahren an einer viel einfacheren Test-XML-Struktur durchspielen mit verschiedensten Testdaten, um es vollständig zu verstehen. Dann sollte eigentlich ziemlich klar sein, was Du tun musst, um das auf Deine Messdaten anzuwenden.

    Und die bisherige XSL:

    Das ist übrigens fehlerhaft, denn:

    <xsl:output method="html"encoding="ISO-8859-1"indent="yes"/>

    Hier fehlen Leerzeichen zwischen den Attributen.

    xsl:template
    </xsl:stylesheet>

    Hier fehlt ein / vor dem xsl:template.

    Viele Grüße,
    Christian