Mario Müller: Dynamische Formularlemente: schwer!

Werte Teilnehmer:

Ich möchte via XSL aus einer XML-Datei dynamisch Radiobuttons generieren.

Radiobuttons sind über das value-Attribut miteinander verknüpft.
Beispiel:

<input type="radio" name="Zahlmethode" value="Mastercard"/>

Ich möchte aber nicht "Mastercard" fest vorgeben, sondern mit einer Variabeln versehen.

Allerdings funktioniert das nicht (Syntaxfehler):

<input type="radio" name="Zahlmethode" value="<xsl:value-of select="position()"/>"/>

Anbei die XML-Datei sowie die XSL. Vielen Dank

**************************XML Datei ***************************
<?xml version="1.0" encoding="iso-8859-1"?>
<?xml-stylesheet type="text/xsl" href="E:\XML und XSL\tutorial\fragekatalog.xsl"?>
<fragekatalog>
 <frage name="Apfel" typ="obst">
    <menge anzahl="8" einheit="radiobutton"></menge>
    <menge anzahl="9" einheit="radiobutton"></menge>
  <bemerkung>Äpfel sind besonders gesund</bemerkung>
 </frage>
 <frage name="Birne" typ="obst">
    <menge anzahl="8" einheit="radiobutton"></menge>
    <menge anzahl="9" einheit="radiobutton"></menge>
  <bemerkung>Birnen sind sehr nahrhaft</bemerkung>
 </frage>
 <frage name="Pflaume" typ="obst">
    <menge anzahl="22"></menge>
 </frage>
 <frage name="Schnittlauch" typ="gemuese" farbe="gruen">
    <menge anzahl="33" einheit="checkbox"></menge>
  <bemerkung>Birnen sind sehr nahrhaft</bemerkung>
 </frage>
 <frage name="Brombeere" typ="obst">
    <menge anzahl="35" einheit="checkbox"></menge>
  <bemerkung>blähen</bemerkung>
 </frage>
 <frage name="Radis" typ="gemuese">
    <menge anzahl="22"></menge>
  <bemerkung>Innen weiß und außen rot</bemerkung>
 </frage>
 <frage name="Salat" typ="gemuese" farbe="gruen">
  <menge anzahl="33"></menge>
    <bemerkung>Birnen sind sehr nahrhaft</bemerkung>
 </frage>
 <frage name="Himbeere" typ="obst">
    <menge anzahl="10" einheit="checkbox"></menge>
  <bemerkung>Himbeeren sind Waldfrüchte</bemerkung>
 </frage>
 <frage name="Gurke" typ="gemuese" farbe="gruen">
  <menge anzahl="3"></menge>
    <bemerkung>Birnen sind sehr nahrhaft</bemerkung>
 </frage>
</fragekatalog>
**************************XSL Datei ***************************

<?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"/>
 <xsl:template match="seite">
  <xsl:apply-templates select="document('fragekatalog.xml')"/>
 </xsl:template>

<xsl:template match="fragekatalog">
     <html>
  <head>
   <title>xsl:textDie Gueter</xsl:text></title>
  </head>
  <body bgcolor="#ffffff">
  <h1>xsl:textDie Güter</xsl:text></h1><hr/>
  <h2>obst</h2>
  <table border="1">
  <tr><th>Frage</th><th>Preis</th><th>Menge</th><th>Bemerkung</th></tr>
   <xsl:apply-templates select="child::frage[@typ='obst']"/>
  </table>
  <h2>gemuese</h2>
  <table border="1">
  <tr><th>Bezeichnung</th><th>Preis</th><th>Menge</th><th>Bemerkung</th></tr>
   <xsl:apply-templates select="child::frage[@typ='gemuese']"/>
  </table>
  </body>
    </html>
 </xsl:template>

<xsl:template match="frage">
  <tr><td> <xsl:value-of select="@name"/> </td>
  <xsl:apply-templates select="preis"/>
  <xsl:apply-templates select="menge"/>
  <td>
  xsl:choose
     <xsl:when test="child::bemerkung">
   <xsl:apply-templates select="bemerkung"/>
     </xsl:when>
     xsl:otherwise
      keine
     </xsl:otherwise>
  </xsl:choose>
  </td>
  </tr>
 </xsl:template>
 <xsl:template match="menge">
 <td>
  <!--ANZAHL<xsl:value-of select="@anzahl"/> -->

xsl:choose
   <xsl:when test="@einheit='checkbox'">
    <xsl:value-of select="@einheit"/>
   </xsl:when>
   <xsl:when test="@einheit='textarea'">
    <xsl:value-of select="@einheit"/>
   </xsl:when>
      <xsl:when test="@einheit='radiobutton'">
      <xsl:value-of select="count(//menge)"/>
      <input type="radio" name="Zahlmethode" value="Mastercard"/>

<xsl:value-of select="@einheit"/>
   </xsl:when>

<!-- xsl:otherwise
    xsl:text </xsl:text>Stück
   </xsl:otherwise>-->
  </xsl:choose>

xsl:choose
   <xsl:when test="@einheit='kg'">
    <xsl:value-of select="@einheit"/>
   </xsl:when>
   <!--xsl:otherwise
    xsl:text </xsl:text>Stück
   </xsl:otherwise> -->
  </xsl:choose>
  </td>
 </xsl:template>
</xsl:stylesheet>

  1. Allerdings funktioniert das nicht (Syntaxfehler):

    <input type="radio" name="Zahlmethode" value="<xsl:value-of select="position()"/>"/>

    Gehts so?
    <input type="radio" name="Zahlmethode" value="{position()}"/>

    1. Allerdings funktioniert das nicht (Syntaxfehler):

      <input type="radio" name="Zahlmethode" value="<xsl:value-of select="position()"/>"/>

      Gehts so?
      <input type="radio" name="Zahlmethode" value="{position()}"/>

      P.S. Wenn nicht, dann gehts damit: xsl:attribute