TorstenTKH: Pfadprobleme bei When-Abfrage

Beitrag lesen

Hallo Thomas,
ich probiere es mal etwas ausführlicher.
Ich habe eine Produkte-Tabelle, wo jedes Produkt verschiedene Eigenschaften zugeordnet bekommt. Eine dieser Eigenschaften ist die Farbe. Nach den Normalitätsregeln, da natürlich beliebig viele Produkte die gleiche Farbe haben können, habe ich ich hier eine zweite Tabelle angelegt, in der die Farben abgelegt sind. Ein Produkt  der Produkttabelle hat genau eine Farbe. Ein Produkt soll nur einmal in der Produkttabelle auftauchen.
Über php erstelle ich mir eine xml-Datei, die zunächst in data/liste/zeile die Farben mit ihren IDs (farben_id) ablegt.
In die gleiche Datei schreibe ich anschließend meine Produkttabelle mit  dem Pfad data/grid/row. Die Eigenschaft Farbe wird hier über farbenId festgelegt.
Weiter unten habe ich die Listings etwas längeren eingepflegt.

Ich glaube ich beginne zu verstehen, wo mein Problem liegt.
Der absolute Pfad, den ich für farbenId angebe, weiss wahrscheinlich nicht an welcher Position ich im XML-Dokument bin. Dennoch sollte dann die Abfrage funktionieren, wenn ich einen festen Zahlenwert in der When-Abfrage eingebe.

Falls jemand eine andere Lösung in xslt für das Problem weiss oder eine andere Struktur für die XML wäre ich dankbar.

Das zu lösende Problem ist also, dass das Dropdownmenü alle Farben aus data/liste/zeile beinhalten soll (funktioniert soweit) und den  identischen Wert des entsprechenden Produktes aus data/grid/row/farbenId vorselektieren soll.

Ich hoffe, dass das Problem jetzt etwas klarer ist.
Vielen Dank für eure Hilfe.
Grüße
Torsten

XML:
<data>
 <liste>
  <zeile>
   <farben_id>4</farben_id>
   <farbe>blau</farbe>
  </zeile>
  <zeile>
   <farben_id>3</farben_id>
   <farbe>gelb</farbe>
  </zeile>
  ...weitere Farben
  <zeile>
   <farben_id>6</farben_id>
   <farbe>gruen</farbe>
  </zeile>
 </liste>
 <grid>
  <row>
   <product_id>1</product_id>
   <name>Santa Costume </name>
   <price>14.99</price>
   <on_promotion>0</on_promotion>
   <farbenId>3</farbenId>
  </row>
  <row>
   <product_id>2</product_id>
   <name>Medieval Lady</name>
   <price>49.99</price>
   <on_promotion>1</on_promotion>
   <farbenId>3</farbenId>
  </row>
  ...weitere Produkteinträge
  <row>
   <product_id>3</product_id>
   <name>Caveman geändert</name>
   <price>12.99</price>
   <on_promotion>0</on_promotion>
   <farbenId>4</farbenId>
  </row>
 </grid>
</data>

XSLT:
<table class="list">
 <tr>
  <th class="th1">ID</th>
  <th class="th2">Name</th>
  <th class="th3">Price</th>
  <th class="th4">Promo</th>
  <th class="th5">Aktion</th>
  <th class="th6">Color</th>
 </tr>
 <xsl:for-each select="data/grid/row">
   <xsl:element name="tr">
   <xsl:attribute name="id">
    <xsl:value-of select="product_id" />
   </xsl:attribute>
   <td><xsl:value-of select="product_id" /></td>
   <td><xsl:value-of select="name" /> </td>
   <td><xsl:value-of select="price" /></td>
   <td>
    xsl:choose
     <xsl:when test="on_promotion &gt; 0">
       <input type="checkbox" name="on_promotion"
              disabled="disabled" checked="checked"/>
     </xsl:when>
     xsl:otherwise
     <input type="checkbox" name="on_promotion"
            disabled="disabled"/>
     </xsl:otherwise>
    </xsl:choose>
   </td>
   <td>
    <xsl:element name="a">
     <xsl:attribute name = "href">#</xsl:attribute>
     <xsl:attribute name = "onclick">
          editId(<xsl:value-of select="product_id" />, true)
     </xsl:attribute>
     Edit
    </xsl:element>
   </td>
   <td>
    <xsl:element name="select">
     <xsl:attribute name="disabled">true</xsl:attribute>
     <xsl:for-each select="../../liste/zeile">
      <xsl:element name="option">
       <xsl:value-of select="farbe"></xsl:value-of>
       xsl:choose
 <xsl:when test="farben_id = /data/grid/row/farbenId">
  <xsl:attribute name="selected">selected</xsl:attribute>
 </xsl:when>
       </xsl:choose>
      </xsl:element>
     </xsl:for-each>
    </xsl:element>
   </td>
  </xsl:element>
 </xsl:for-each>
</table>