XSL Darstellung
XSL Laie
- xsl
0 ulli0 XSL Laie
0 Thomas Meinike
Hallo
Ich möchte in einer Zeile folgende Informationen darstellen
<K bearbeiter="frau" param="yes" anz="2"/>
<K bearbeiter="frau" param="no" anz="1"/>
yes no
frau 2 1
Frau hat 2 mal yes, 1 mal no geantwortet.
Kann jemand mir helfen? Danke
XSL Laie
hallo
ich nehme mal an, dass du die xml datei (mit den von dir angegebenen informationen)schon hast oder?
dann kannst du dieses xml dokument mit hilfe von xsl in eine andere struktur umwandeln. eine tabelle würde sich bei deiner anforderung ganz gut machen.
cu
ulli
hallo
ich nehme mal an, dass du die xml datei (mit den von dir angegebenen informationen)schon hast oder?
habe die XML Datei
dann kannst du dieses xml dokument mit hilfe von xsl in eine andere struktur umwandeln. eine tabelle würde sich bei deiner anforderung ganz gut machen.
Aber wie? in einer Zeile 2 XML-Tags zusammenpacken?
Kann Du mir bitte ein Beispiel zeigen? Danke
cu
ulli
Hallo,
Ich möchte in einer Zeile folgende Informationen darstellen
<K bearbeiter="frau" param="yes" anz="2"/>
<K bearbeiter="frau" param="no" anz="1"/>
yes no
frau 2 1Frau hat 2 mal yes, 1 mal no geantwortet.
<p style="font-family: monospace">
     yes no<br />
frau 
<xsl:value-of select="K[@bearbeiter = 'frau' and @param = 'yes']/@anz" />
 
<xsl:value-of select="K[@bearbeiter = 'frau' and @param = 'no']/@anz" />
</p>
MfG, Thomas
Hallo,
Ich möchte in einer Zeile folgende Informationen darstellen
<K bearbeiter="frau" param="yes" anz="2"/>
<K bearbeiter="frau" param="no" anz="1"/>
yes no
frau 2 1Frau hat 2 mal yes, 1 mal no geantwortet.
<p style="font-family: monospace">
     yes no<br />
frau 
<xsl:value-of select="K[@bearbeiter = 'frau' and @param = 'yes']/@anz" />
 
<xsl:value-of select="K[@bearbeiter = 'frau' and @param = 'no']/@anz" />
</p>MfG, Thomas
Was wäre in diesem Fall:
<K bearbeiter="frau" param="yes" anz="2"/>
<K bearbeiter="frau" param="no" anz="1"/>
<K bearbeiter="mann" param="no" anz="1"/>
yes no
frau 2 1
mann 0 1
Danke
Hallo,
Was wäre in diesem Fall:
<K bearbeiter="frau" param="yes" anz="2"/>
<K bearbeiter="frau" param="no" anz="1"/>
<K bearbeiter="mann" param="no" anz="1"/>
yes no
frau 2 1
mann 0 1
Vermutlich nicht optimal, aber ein Ansatz und auch nur geeignet, wenn es bei den 4 K-Elementen bleibt:
<xsl:variable name="frau_yes">
xsl:choose
<xsl:when test="K[@bearbeiter = 'frau' and @param = 'yes' and number(@anz) > 0]">
<xsl:value-of select="K[@bearbeiter = 'frau' and @param = 'yes']/@anz" />
</xsl:when >
xsl:otherwise
<xsl:value-of select="0" />
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="frau_no">
xsl:choose
<xsl:when test="K[@bearbeiter = 'frau' and @param = 'no' and number(@anz) > 0]">
<xsl:value-of select="K[@bearbeiter = 'frau' and @param = 'no']/@anz" />
</xsl:when >
xsl:otherwise
<xsl:value-of select="0" />
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="mann_yes">
xsl:choose
<xsl:when test="K[@bearbeiter = 'mann' and @param = 'yes' and number(@anz) > 0]">
<xsl:value-of select="K[@bearbeiter = 'mann' and @param = 'yes']/@anz" />
</xsl:when >
xsl:otherwise
<xsl:value-of select="0" />
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="mann_no">
xsl:choose
<xsl:when test="K[@bearbeiter = 'mann' and @param = 'no' and number(@anz) > 0]">
<xsl:value-of select="K[@bearbeiter = 'mann' and @param = 'no']/@anz" />
</xsl:when >
xsl:otherwise
<xsl:value-of select="0" />
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<p style="font-family: monospace">
     yes no<br />
frau <xsl:value-of select="$frau_yes" />
  <xsl:value-of select="$frau_no" />
<br />
mann <xsl:value-of select="$mann_yes" />
  <xsl:value-of select="$mann_no" />
</p>
MfG, Thomas
Hallo,
Was wäre in diesem Fall:
<K bearbeiter="frau" param="yes" anz="2"/>
<K bearbeiter="frau" param="no" anz="1"/>
<K bearbeiter="mann" param="no" anz="1"/>
yes no
frau 2 1
mann 0 1Vermutlich nicht optimal, aber ein Ansatz und auch nur geeignet, wenn es bei den 4 K-Elementen bleibt:
<xsl:variable name="frau_yes">
xsl:choose
<xsl:when test="K[@bearbeiter = 'frau' and @param = 'yes' and number(@anz) > 0]">
<xsl:value-of select="K[@bearbeiter = 'frau' and @param = 'yes']/@anz" />
</xsl:when >
xsl:otherwise
<xsl:value-of select="0" />
</xsl:otherwise>
</xsl:choose>
</xsl:variable><xsl:variable name="frau_no">
xsl:choose
<xsl:when test="K[@bearbeiter = 'frau' and @param = 'no' and number(@anz) > 0]">
<xsl:value-of select="K[@bearbeiter = 'frau' and @param = 'no']/@anz" />
</xsl:when >
xsl:otherwise
<xsl:value-of select="0" />
</xsl:otherwise>
</xsl:choose>
</xsl:variable><xsl:variable name="mann_yes">
xsl:choose
<xsl:when test="K[@bearbeiter = 'mann' and @param = 'yes' and number(@anz) > 0]">
<xsl:value-of select="K[@bearbeiter = 'mann' and @param = 'yes']/@anz" />
</xsl:when >
xsl:otherwise
<xsl:value-of select="0" />
</xsl:otherwise>
</xsl:choose>
</xsl:variable><xsl:variable name="mann_no">
xsl:choose
<xsl:when test="K[@bearbeiter = 'mann' and @param = 'no' and number(@anz) > 0]">
<xsl:value-of select="K[@bearbeiter = 'mann' and @param = 'no']/@anz" />
</xsl:when >
xsl:otherwise
<xsl:value-of select="0" />
</xsl:otherwise>
</xsl:choose>
</xsl:variable><p style="font-family: monospace">
     yes no<br />
frau <xsl:value-of select="$frau_yes" />
  <xsl:value-of select="$frau_no" />
<br />
mann <xsl:value-of select="$mann_yes" />
  <xsl:value-of select="$mann_no" />
</p>
Danke für Deine Hilfe, aber...
Ich habe nur beispielweise bearbeiter als frau und mann genannt. Leider weiss ich nicht voraus wie der Bearbeiter heisst "Lehmann", "Fraumann" oder "Kuckuck". Hast Du vielleicht eine Lösung für den Fall. Danke im voraus.
Laie
MfG, Thomas
Hallo,
Ich habe nur beispielweise bearbeiter als frau und mann genannt. Leider weiss ich nicht voraus wie der Bearbeiter heisst "Lehmann", "Fraumann" oder "Kuckuck". Hast Du vielleicht eine Lösung für den Fall.
Prima, dass Du das erst jetzt bringst ...
Die Loesung haengt von der gesamten XML-Struktur ab. Ich empfehle zur weiteren Loesungsfindung das XSLT-Kapitel von SELFHTML.
MfG, Thomas
PS: Bitte nur die noetigen Stellen zitieren.
Hallo Thomas,
Prima, dass Du das erst jetzt bringst ...
Das wäre an sich egal, aber er möchte eine Gruppierung aufgrund von @bearbeitername und bei doppelten (also wo einer sowohl 'yes'2 als auch 'no' werte hat) diese in der selben zeile ausgeben:
So in der Art:
<?xml version="1.0" encoding="iso-8859-1"?>
<bearbeiter>
<K bearbeiter="mann" datum="20.10.2003" param="no" anz="5"/>
<K bearbeiter="frau" datum="20.10.2003" param="yes" anz="2"/>
<K bearbeiter="frau" datum="20.10.2003" param="no" anz="3"/>
<K bearbeiter="dingsda" datum="20.10.2003" param="no" anz="1"/>
<K bearbeiter="bla" datum="20.10.2003" param="yes" anz="2"/>
<K bearbeiter="blabla" datum="20.10.2003" param="yes" anz="3"/>
<K bearbeiter="auchda" datum="20.10.2003" param="no" anz="1"/>
<K bearbeiter="nixda" datum="20.10.2003" param="yes" anz="2"/>
<K bearbeiter="nixda" datum="20.10.2003" param="no" anz="4"/>
</bearbeiter>
----------------------
<?xml version="1.0" encoding="iso-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:key name="bearbeiterkey" match="K" use="@bearbeiter" />
<xsl:template match="/bearbeiter">
<html>
<head>
<title>Untitled</title>
</head>
<body>
<table width="400" border="1">
<tr>
<td>bearbeiter</td>
<td>yes</td>
<td>no</td>
</tr>
<xsl:for-each select="K">
<xsl:variable name="bearbeitername" select="current()[generate-id() = generate-id(key('bearbeiterkey', @bearbeiter))]" />
<xsl:if test="$bearbeitername = true()">
<tr>
<td><xsl:value-of select="@bearbeiter" /></td>
<td>
<xsl:if test="@param = 'yes'">
<xsl:value-of select="@anz" />
</xsl:if>
 
</td>
<td>
<xsl:if test="@param = 'no'">
<xsl:value-of select="@anz" />
</xsl:if>
 
</td>
</tr>
</xsl:if>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
Grüße
Thomas
Hallo,
Das wäre an sich egal, aber er möchte eine Gruppierung aufgrund von @bearbeitername und bei doppelten (also wo einer sowohl 'yes'2 als auch 'no' werte hat) diese in der selben zeile ausgeben:
Ich hielt meine Loesung ja auch nicht fuer optimal, bin aber erstmal auf einen naheliegenden Ansatz fuer das spezielle Problem verfallen. Dass Du das toppen wuerdest, habe ich ja erwartet ;-).
MfG, Thomas