count mit Bedingung
dey
- xsl
Moin moin,
ich versuche einen xsl:value-of select="count mit der Bedingung, dass das Feld "Result" den Wert "Changed" enthalten muss und zu der entsprechenden Gruppe gehört:
1. das mit Result und changed wollte ich folgendermassen lösen
2. das mit Gruppe werde ich folgendermassen versuchen
Auszug XML:
<xmlDocument>
<Group>
<GroupNumber>0</GroupNumber>
<JobList>
<JobName>946310CA.BOT/BOTTOM</JobName>
</JobList>
<LineItemList>
<LineItem>
<MachineName>NXT1</MachineName>
<FeederItemList>
<FeederItem>
<Position>1 - 1</Position><Result>---</Result><PartNumber> </PartNumber><PartComment> </PartComment><Type> </Type><TapeWidth> </TapeWidth><Qty> </Qty><Shape> </Shape><Package> </Package><PartLength> </PartLength><PartWidth> </PartWidth><PartHeight> </PartHeight></FeederItem>
.....
<FeederItem>
<Position>1 - 5</Position><Result>---</Result><PartNumber>853366</PartNumber><PartComment> </PartComment><Type>Paper</Type><TapeWidth>8</TapeWidth><Qty>6</Qty><Shape>1590</Shape><Package>TM81</Package><PartLength>3.40</PartLength><PartWidth>1.30</PartWidth><PartHeight>1.30</PartHeight></FeederItem>
Auszug XSL:
<xsl:template match="JobList">
<div style="margin-left:30">
<xsl:for-each select="JobName">
<div><xsl:value-of select="."/></div>
<div><xsl:value-of select="count(//Result[Result = 'Changed'])"/></div>
</xsl:for-each>
</div>
</xsl:template>
bydey
Hi,
- <xsl:value-of select="count(//Result[Result = 'Changed'])"/>
Du hast also eine Struktur, die irgendwo
<Result>
...
<Result>Changed</Result>
...
</Result>
enthält? Wenn nicht, möchtest Du Dich vermutlich mit text() beschäftigen :-)
Cheatah
Hallo dey,
gute Frage, nächste Frage. Ich würde das mit einer Funktion lösen. count() scheint da nicht so vielversprechend zu sein.
Du legst dir eine Variable zurecht, durchläufst die Knoten und inkrementierst die Variable, falls in dem Tag "Changed" drinsteht.
Das geht mit proceeding:sibling oder so ähnlich. Wie man Funktionen in XSLT schreibt, weiß ich aber noch.
Wie dumm, wenn man keine Lektüre mehr da hat :(.
Grüße,
Wolfram
Hallo,
gute Frage, nächste Frage. Ich würde das mit einer Funktion lösen. count() scheint da nicht so vielversprechend zu sein.
count() ist eine Funktion ;-) und sie ist auch die richtige.
Du legst dir eine Variable zurecht, durchläufst die Knoten und inkrementierst die Variable, falls in dem Tag "Changed" drinsteht.
Das macht auch count().
Wie man Funktionen in XSLT schreibt, weiß ich aber noch.
?? wie meinen ;-)
Wie dumm, wenn man keine Lektüre mehr da hat :(.
Du kennst doch http://de.selfhtml.org/xml/darstellung/xpathfunktionen.htm ?
Grüße
Thomas
Moin moin,
Hallo,
gute Frage, nächste Frage. Ich würde das mit einer Funktion lösen. count() scheint da nicht so vielversprechend zu sein.
»»count() ist eine Funktion ;-) und sie ist auch die richtige.
Und wie die richtig ist!!!!!
Du legst dir eine Variable zurecht, durchläufst die Knoten und inkrementierst die Variable, falls in dem Tag "Changed" drinsteht.
»»
Da müsste ich ca. die 3-fache Menge Code verwenden: man versrickt da sehr in with-param
Das macht auch count().
Und das sehr gut mit nur 2 - 4 Zeilen.
Wie man Funktionen in XSLT schreibt, weiß ich aber noch.
?? wie meinen ;-)
Wie dumm, wenn man keine Lektüre mehr da hat :(.
Du kennst doch http://de.selfhtml.org/xml/darstellung/xpathfunktionen.htm ?
Problem ist mal wieder alle Code-Schnipsel zu finden und zusammenzufügen, wen's interessiert:
<!-- Comment: replace of GroupNumber with $vgroupnum-->
<xsl:variable name="vgroupnum">
<xsl:value-of select="GroupNumber"/>
</xsl:variable>
<hr size="1" />Group <xsl:value-of select="$vgroupnum" /><hr size="1" /></H3>
<div><xsl:apply-templates select="JobList" /></div>
<!-- Comment: number of feeder changes counted and displayed-->
<div align="right"># of Feeders 'Changed':
<xsl:value-of select="count(//Group[position()=$vgroupnum+1]/LineItemList/
LineItem/FeederItemList/FeederItem/Result[text() = 'Changed'])"/></div>
<div><xsl:apply-templates select="LineItemList" /></div>
bydey
Hallo,
<div align="right"># of Feeders 'Changed':
"Bastelt" da jemand gerade an einem XSLT für RSS-Feeds? ;-)
Grüße
Thomas
Moin moin Thomas,
"Bastelt" da jemand gerade an einem XSLT für RSS-Feeds? ;-)
Was sind RSS-Feeds?
bydey
Hallo "day",
"Bastelt" da jemand gerade an einem XSLT für RSS-Feeds? ;-)
Was sind RSS-Feeds?
Die vorletze Hipe im WWW ;-)
http://www.xml.com/pub/a/2002/12/18/dive-into-xml.html
http://www.rss-nachrichten.de/
http://www.google.de/search?hl=de&ie=ISO-8859-1&q=RSS-Feed&btnG=Google-Suche&meta=
Grüße
Thomas
Moin moin,
Die vorletze Hipe im WWW ;-)
http://www.xml.com/pub/a/2002/12/18/dive-into-xml.html
http://www.rss-nachrichten.de/
http://www.google.de/search?hl=de&ie=ISO-8859-1&q=RSS-Feed&btnG=Google-Suche&meta=
Nein, damit hat es nix zu tun. Es geht um Rüstlisten für die SMD-Produktion.
bydey
Hallo,
- das mit Result und changed wollte ich folgendermassen lösen
- <xsl:value-of select="count(//Result[Result = 'Changed'])"/>
Du wirst vermutlich
<xsl:value-of select="count(//Result[. = 'Changed'])"/> suchen.
Grüße
Thomas