hh: Parameterabfrage sinnvoll gestalten

Beitrag lesen

Hi,

ich mal wieder mit einem etwas verzwicktem Problem. Da ich eine xsl Auswertung machen möchte, ohne die xml Datein zu verändern, muesste ich nun serverseitig es lösen, dass ich dem xsl stylsheet Paramter zuweise. Die Zuweisung dürfte kein Problem darstellen und denken, dass ich das schaffe, allerdings überlege ich es jetzt, wie ich es am duemmsten anstelle, dass meine aufgabe erfüllt wird. Dazu folgendes Beispiel:

xml-Datei
<?xml version="1.0"?>
<root>
 <hosen book="KOR-001-01">6000</hosen>
 <hosen book="KOR-001-02">3000</hosen>
 <hosen book="KOR-001-03">2000</hosen>
 <hosen book="KOR-002-01">6000</hosen>
 <hosen book="KOR-002-02">3000</hosen>
 <hosen book="KOR-002-03">2000</hosen>
 <taschen book="KOR-002-01">1500</taschen>
 <taschen book="KOR-002-02">1800</taschen>
 <mantel book="KOR-001-01">700</mantel>
 <mantel book="KOR-001-02">500</mantel>
 <mantel book="KOR-001-03">900</mantel>
 <mantel book="KOR-003-01">300</mantel>
 <mantel book="KOR-003-02">500</mantel>
 <mantel book="KOR-003-03">800</mantel>
 <mantel book="KOR-003-04">1000</mantel>
</root>

Nun möchte ich eine Auswertung starten, das book Attribut kann dabei nur nicht alle Werte zur gleichen Zeit annehmen es ist also nicht möglich, das KOR-001-01 und KOR-001-02 und KOR-001-03 gleichzeit ausgewählt werden, sonder nur ein Wert, z.B. KOR-001-01. Es kann aber sein, dass zusätzlich noch KOR-002-2 und KOR-003-03 ausgewählt sind. Es ist aber wiederum nicht möglich das innnerhalb von bspw. KOR-003 zwei Unterwerte ausgewählt sind, sondern immer nur ein Unterwert von KOR-003-XX.

So und wie stelle ich nun meine Auswertung an, ich hatte mir überlegt, es eventuell so zu lösen.

<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:param name="KOR-001" select="'KOR-001-02'"/>
 <xsl:param name="KOR-002" select="'KOR-002-02'"/>
 <xsl:param name="KOR-003" select="'KOR-003-01'"/>
 <xsl:template match="/">
  <xsl:value-of select="sum(/*/hosen[@book=$KOR-001 or @book=$KOR-002 or @book=$KOR-003])"/>
  <xsl:value-of select="sum(/*/mantel[@book=$KOR-001 or @book=$KOR-002 or @book=$KOR-003])"/>
  <xsl:value-of select="sum(/*/taschen[@book=$KOR-001 or @book=$KOR-002 or @book=$KOR-003])"/>
 </xsl:template>
</xsl:stylesheet>

Allerdings hat dies den Nachteil, dass ich die Attributebedingung immer wieder noch erweitern muss, wenn ich z.B. noch ein KOR-004-XX bzw. KOR-005-XX hinzufügen möchte. Ich hoffe, mein Beispiel ist etwas verständlich. Kann man vielleicht irgendwie die Attributebedingung so setzen, dass alle paramter, die mit KOR anfang automatisch geprüft werden?

Mir wäre es auch möglich, die Parameter anders zu benennen, nur ich weiss nicht recht wie. Wie gesagt, ich möchte das ganze so lösen, dass ich nichts zurück in meine xml serverseitig schreiben muss (da haette ich bereits die Lösung).