Announcement

Collapse
No announcement yet.

Auflistung der Verschiedenen Werte eines Attributs

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

  • Auflistung der Verschiedenen Werte eines Attributs

    Hallo zusammen

    Ich muss eine Abfrage machen, welche die przentuale verteilung der Tulpel anhan des Wertes eines Attributs aufweist.
    Nur sind die Werte dieses Attributs frei wählbar und ich muss irgendwie an die Daten kommen, welche Werte dort überhaupt vorhanden sind:

    Beispiel:
    Koteninhalte:
    <a test="A">1234</a>
    <a test="B">1234</a>
    <a test="A">1234</a>
    <a test="A">1234</a>
    <a test="C">1234</a>

    Gewünschtes Ergebnis:
    A = 3
    B = 1
    C = 1

    Wie gesagt: Ich weiss aber nicht wie A B C heissen und wieviele es überhaupt sind.

    Kann mir jemand bitte einen Tipp geben, wie ich dies abfragen könnte.

    Vielen Dank für die Hilfe,

    Gruss
    Zimmi11

  • #2
    Ich nehme mal (auf Grund des Forumthemas) an, dass eine XQuery-Lösung gesucht ist:
    Code:
    let $data := <data>
    <a test="A">1234</a>
    <a test="B">1234</a>
    <a test="A">1234</a>
    <a test="A">1234</a>
    <a test="C">1234</a>
    </data>
    return string-join(
    for $t in distinct-values($data/a/@test)
    return concat($t, ' = ', count($data/a[@test = $t])), '
    ')

    Comment


    • #3
      Leider ist das Forum nicht in der Lage, Codeschnipsel mit Zeichenreferenzen korrekt darzustellen. Hinter dem Komma sollte '& # 1 0;' (nur ohne die Leerzeichen) stehen.
      Zuletzt editiert von Martin Honnen; 09.01.2011, 14:46.

      Comment


      • #4
        Zahl.xml
        Code:
        <?xml version="1.0"?>
        <root>
        	<a test="A">1234</a>
        	<a test="B">1234</a>
        	<a test="A">1234</a>
        	<a test="A">1234</a>
        	<a test="C">1234</a>
        </root>


        Code:
        <result>{
        let $y := doc("zahl.xml")
        for $x in distinct-values( $y/root/a/@test)
        return 
        <item>
        {data($x)}<wieviel> {count($y/root/a[@test=$x])}</wieviel>
        </item>
        }
        </result>

        Comment


        • #5
          Vielen Dank für eure schnellen Antworten.
          Ich werde sie gleich einmal austesten.

          Danke und Gruss
          Martin

          Comment


          • #6
            let $data := <data>
            <a test="A">1234</a>
            <a test="B">1234</a>
            <a test="A">1234</a>
            <a test="A">1234</a>
            <a test="C">1234</a>
            </data>
            return string-join(
            for $t in distinct-values($data/a/@test)
            <!-- ist das gleiche -->
            return concat($t, ' = ', count($data/a[@test = $t])), '&#xA;')
            <!-- wie
            return concat($t, ' = ', count($data/a[@test = $t])), '&#10')
            -->
            Zuletzt editiert von xml-looser; 09.01.2011, 16:03.

            Comment

            Working...
            X