Selloso: Anzahl von bestimmen Textknoten-Kombinationen zählen?

Hallo Leute,

ich habe ein Problem,vielleicht könnt Ihr mir helfen.

Ich habe ungefähr folgende XML-Struktur

[CODE]

<record No="1">

<data>

<Feld1><![CDATA[D]]></Feld1>

<Feld2><![CDATA[1]]></Feld2>

</data>

</record>

<record No="2">

<data>

<Feld1><![CDATA[D]]></Feld1>

<Feld2><![CDATA[2]]></Feld2>

</data>

</record>

<record No="3">

<data>

<Feld1><![CDATA[E]]></Feld1>

<Feld2><![CDATA[3]]></Feld2>

</data>

</record>

<record No="4">

<data>

<Feld1><![CDATA[D]]></Feld1>

<Feld2><![CDATA[1]]></Feld2>

</data>

</record>[/CODE]

Die CDATA-Angabe habe ich Sonderzeichen wegen gemacht.

Ich möchte nun gerne die Anzahl der Kombination z.B. "Feld 1" = D und "Feld 2" = 1 zählen. In meinem Code-Beispiel wäre diese Anzahl 2. Diese Zählung möchte ich danach mit einer If-Anweisung übrprüfen und wenn diese Kombination in keinem data-Element auftaucht, möchte ich etwas ausgeben.

[CODE] <xsl:variable name="anzahl" select="count(../Feld1[. = 'D']) and count(../Feld2[. = '1'])" />

<xsl:if test="not($anzahl4)">

...

...[/CODE]

So funktioniert es nicht, aber es muss doch irgendwie funktioniert, in Abhäbgikeit von zwei Textknoten zu zählen.

Ziel soll übrigens sein, mit FOP - http://xmlgraphics.apache.org/fop/ -eine PDF zu erzeugen.

Ich hoffe stark, dass Ihr mir helfen könnt.

Ciao

Sel

  1. Hi,

    [CODE]<record No="1">
        <data>
         <Feld1><![CDATA[D]]></Feld1>
         <Feld2><![CDATA[1]]></Feld2>
        </data>
    </record>[/CODE]
    Ich möchte nun gerne die Anzahl der Kombination z.B. "Feld 1" = D und "Feld 2" = 1 zählen. In meinem Code-Beispiel wäre diese Anzahl 2.

    Du willst also die Anzahl der record-Elemente zählen, die data/Feld1 = 'D' und data/Feld2 = '1' haben.

    ==>  count(record[(data/Feld1 = 'D') and (data/Feld2 = '1')])

    (ungetestet)

    cu,
    Andreas

    --
    Warum nennt sich Andreas hier MudGuard?
    Schreinerei Waechter
    Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
    1. Ich danke Dir, ganz herzlich!

      Es funktioniert!

      Sel

  2. Möchtest du die Anzahl der Feld1 + Feld2 Knoten mit D oder 1 wissen?

    <xsl:variable name="anzahl" select="count(../Feld1[. ='D']) + count(../Feld2[. = '1'])"/>

    Oder willst du wissen in wieviel data Knoten Feld1 = D und Feld2 = 1 ist?

    <xsl:variable name="anzahl" select="count(../Feld1[. = 'D'] and ../Feld2[. ='1'])"/>

    gruß Knut

    1. Vielen Dank, für die Antwort!

      Deine Lösung klappt (auch)!

      Ciao
      Sel