Announcement

Collapse
No announcement yet.

XSL Variablen speichern, vergleichen und mit Checkboxen "ausgeben"

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

  • XSL Variablen speichern, vergleichen und mit Checkboxen "ausgeben"

    Hallo alle zusammen,

    ich hoffe ich bin im richtigen Forum. Ich möchte gerne nur Checkboxen erzeugen lassen, wenn eine Komponente noch nicht angegeben ist. Oh je, irgendwie ist das nicht so eindeutig. Also in Java würde der Sachverhalt so aussehen:


    Code:
    int temp;
    for(String komponente : komponenten){
        if(temp != null){
               if(!temp.equals(komponente)){
                     // erzeuge eine Checkbox mit genau dieser Komponente als Label
                     temp = komponente; 
                }	
         }
         else{
                     // erzeuge eine Checkbox mit genau dieser Komponente als Label
                     temp = komponente; 
         }
    }
    Also und dass will ich mit XSL. Meine XML sieht so aus:


    Code:
      <?xml version="1.0" encoding="UTF-8" ?> 
    - <Rowsets DateCreated="2009-04-09T10:43:30" EndDate="2009-04-09T10:43:26" StartDate="2009-04-09T09:43:26" Version="12.0.6 Build(12)">
    - <Rowset>
    - <Columns>
      <Column Description="" MaxRange="1" MinRange="0" Name="bla" SQLDataType="1" SourceColumn="bla" /> 
         </Columns>
    - <Row>
      <bla>irgendwas</bla> 
       </Row>
      </Rowset>
    - <Rowset>
    - <Columns>
      <Column Description="" MaxRange="100" MinRange="0" Name="Komponente" SQLDataType="1" SourceColumn="Komponente" /> 
      <Column Description="" MaxRange="100" MinRange="0" Name="Menge" SQLDataType="4" SourceColumn="Menge" /> 
       </Columns>
    - <Row>
      <Komponente>1316.084</Komponente> 
      <Menge>864</Menge> 
        </Row>
    - <Row>
      <Komponente>1316.084</Komponente> 
      <Menge>432</Menge> 
        </Row>
    - <Row>
      <Komponente>2222.222</Komponente> 
      <Menge>432</Menge> 
        </Row>
    - <Row>
      <Komponente>2222.222</Komponente> 
      <Menge>432</Menge> 
        </Row>
      </Rowset>
      </Rowsets>
    an dieser XML kann ich nichts mehr ändern. Und meine XSL in dem Bereich sieht so aus:


    HTML Code:
    <form id="form" action="seite" method="GET">
         <xsl:for-each select="Rowsets/Rowset[2]/Row">
              <span style="padding-left:0px; padding-top: 0px">
                   <input type="checkbox" id="komponente">		
                       <label for="komponente"><xsl:value-of select="Komponente"/></label>	
                   </input>
              </span>
              <span style="padding-left:30px">
                   <select id="menge">
                       <xsl:for-each select="//Rowset[2]/Row">				<option value="Menge">					     <xsl:value-of select="Menge"/>					</option>
                       </xsl:for-each>
                   </select>
              </span>
         </xsl:for-each> 
         <span style="padding-left:40px">
              <input id="buttonOK" type="submit" value="OK"/>
         </span>		
    </form>
    Meine Frage ist, ob es möglich ist den obigen Java-Code in XSL zu schreiben, wenn ja wie? Und wenn nein, kann ich das irgendwie mit Javascript machen und wenn ja wie und wie würde ich es dann in die XSL wieder einbinden.

    MfG

  • #2
    Hallo alle zusammen,

    ich hab das Problem jetzt so gelöst:

    Code:
    					<xsl:if test="preceding-sibling::Row/Komponente[text() != $temp]"> 
    			       		 <span style="padding-left:0px; padding-top: 0px">
    						<input type="checkbox" id="komponente">
    							<label for="komponente" id="komponentenLabel"><xsl:value-of select="Komponente"/></label>		
    						</input>
    						<xsl:variable name="temp"><xsl:value-of select="Komponente"/></xsl:variable>
    			       		</span>
    
    			       		 <span style="padding-left:30px">
    						<select id="menge">
    			       				<xsl:for-each select="//Rowset[2]/Row">
    								<option value="Menge">
    									<xsl:value-of select="Menge"/>
    								</option>
    			       				</xsl:for-each>
    						</select>
    			       		</span>
    			       		</xsl:if>

    Comment

    Working...
    X