Announcement

Collapse
No announcement yet.

Aktuellen wert in <xsl:if> einfügen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Aktuellen wert in <xsl:if> einfügen

    Hallo,

    ich hab da folgendes Problem ich mach gerade ein Dropdownmenu in XSL.

    Ich will das der Wert aus der XML Datei vorselectiert wird. Nur ich hab ein Problem mit dem Aufbau der If-Verzweigung

    Code:
    <xsl:template match="//x:Category/x:CategoryID">
    <tr>
        <td>CategoryID</td>
    	<td>
    	<select name="CategoryID" size="1">
    	  <xsl:for-each select="document('file:///c:/data/seclabel.xsd')/xs:schema//xs:element[@name='CategoryID']//xs:restriction/xs:enumeration">
    	  <xsl:choose>
    				<xsl:when test="@value=current()">
    				<option selected="true"><xsl:value-of select="@value"/></option>
    				</xsl:when>
    		<xsl:otherwise>
    			<option><xsl:value-of select="@value"/></option>
    		</xsl:otherwise>	
    		</xsl:choose>
          </xsl:for-each>
    	</select>
    	</td>
    </tr>
    </xsl:template>
    @value kommt aud der XSD und beschreibt die möglichen optionen für das Dropdown.

    Ich will einfach nur den Vergleich (@value == Wert des Koten an der Position //x:Category/x:CategoryID)

    Ich finde einfach nicht den richtigen Befehl. Hab schon alles mir bekannte probiert.

    THX 4 help

  • #2
    Bin gerade auf die Löung gestossen

    Code:
    <xsl:template match="//x:Category/x:CategoryID">
    <xsl:variable name="cid"><xsl:value-of select="text()"/></xsl:variable>
    <tr>
        <td>CategoryID</td>
    	<td>
    	<select name="CategoryID" size="1">
    	  <xsl:for-each select="document('file:///c:/data/seclabel.xsd')/xs:schema//xs:element[@name='CategoryID']//xs:restriction/xs:enumeration">
    	  <xsl:choose>
    				<xsl:when test="@value=$cid">
    				<option selected="true"><xsl:value-of select="@value"/></option>
    				</xsl:when>
    		<xsl:otherwise>
    			<option><xsl:value-of select="@value"/></option>
    		</xsl:otherwise>	
    		</xsl:choose>
          </xsl:for-each>
    	</select>
    	</td>
    </tr>
    </xsl:template>

    Comment


    • #3
      Liefert current() den erwarteten Wert? Evtl. hilft current()/text() weiter. Ansonsten ist selected="true" in (X)HTML falsch, es muss selected="selected" lauten (selected ist ein standalone-Attribut in HTML, darf aber in XHTML nicht leer sein. Die Zuweisung von true/false ist für die Ansprache via DOM mittels JavaScript vorgesehen.

      Comment

      Working...
      X