Mahus: Gruppierung von Strings

Hallo ihr,

Ich hab folgende Ausgangssituation.

<lst name="Knoten_01">  
	<int name="hans"/>  
        <int name="franz"/>  
</lst>  
<lst name="Knoten_02">  
	<int name="hans|peter"/>  
        <int name="hans|alex"/>  
        <int name="franz|julia"/>  
</lst>  
<lst name="Knoten_03">  
	<int name="hans|peter|lustig"/>  
        <int name="hans|peter|gelb"/>  
        <int name="hans|alex|grün"/>  
        <int name="franz|julia|text"/>  
</lst>

Möglich ist auch Knoten_04 usw.

Was ich nun im Grunde genommen möchte ist, dass ich immer aus den "letzten" Knoten_XX alle Strings bekomme (Hier also Knoten_03). Versucht hab ich dies bisher mit group-by, dies Funktioniert aber nicht. Hat jemand eine Idee wie ich dies realisieren kann?

Lg
Mahus

  1. Hallo,

    //lst[last()]

    Grüße
    Siri

    1. Hallo,

      //lst[last()]

      Grüße
      Siri

      Danke schonmal dafür.
      Problem daran ist das ich nicht jede lst nehmen kann.
      Ich darf nur lst[last()] nehmen wo name="xx" ist.

      Wie realisiere ich das am besten?

      Hier mal ein code snippet

        
      <navigation>  
      						<xsl:for-each select="$var1_response/lst/lst/lst">  
      							<xsl:variable name="var55_cur" as="node()" select="."/>  
      							<xsl:for-each select="int">  
      								<xsl:variable name="var54_cur" as="node()" select="."/>  
      								<xsl:variable name="var47_name" as="item()*" select="@name"/>  
      								<xsl:if test="fn:exists($var47_name)">  
      									<xsl:variable name="var48_name" as="item()*" select="$var55_cur/@name"/>  
      									<xsl:if test="(fn:exists($var48_name) and fn:starts-with(fn:string($var48_name), 'Suchbaumknoten_PC_'))">  
      										<xsl:variable name="var50_let" as="xs:string*">  
      											<xsl:for-each select="$var1_response/lst/lst/str">  
      												<xsl:variable name="var49_name" as="item()*" select="@name"/>  
      												<xsl:if test="fn:exists($var49_name)">  
      													<xsl:call-template name="user:strExtract">  
      														<xsl:with-param name="input" select="fn:string(.)" as="xs:string"/>  
      														<xsl:with-param name="name" select="fn:string($var49_name)" as="xs:string"/>  
      														<xsl:with-param name="constant" select="'filters.categories'" as="xs:string"/>  
      													</xsl:call-template>  
      												</xsl:if>  
      											</xsl:for-each>  
      										</xsl:variable>
      
      1. Danke schonmal dafür.
        Problem daran ist das ich nicht jede lst nehmen kann.
        Ich darf nur lst[last()] nehmen wo name="xx" ist.

        Was kann name="xx" alles sein? Oder was soll es nichts sein? Wie unterscheidet es sich von Namen, die nicht verwendet werden soll? Das es überhaupt ein Namensattribut hat? Verstehs noch nicht ganz.

        1. Danke schonmal dafür.
          Problem daran ist das ich nicht jede lst nehmen kann.
          Ich darf nur lst[last()] nehmen wo name="xx" ist.

          Was kann name="xx" alles sein? Oder was soll es nichts sein? Wie unterscheidet es sich von Namen, die nicht verwendet werden soll? Das es überhaupt ein Namensattribut hat? Verstehs noch nicht ganz.

          Dort wo '<lst name="' mit "Suchbaumknoten_PC_","Suchbaumknoten_UNI_" oder "Suchbaumknoten_ptop_" beginnt.

          Und von diesen brauch ich immer eine Gruppierung der Strings. Last wird nicht funtionieren, da nicht immer der "letzte" lst knoten auch der richtige ist.

          Um das nochmal zu verdeutlichen hier:

          <lst name="Knoten_01">  
                  <int name="hans"/>  
                  <int name="franz"/>  
          </lst>  
          <lst name="Knoten_02">  
                  <int name="hans|peter"/>  
                  <int name="hans|alex"/>  
                  <int name="franz|julia"/>  
          </lst>  
          <lst name="Knoten_03">  
                  <int name="hans|peter|lustig"/>  
                  <int name="hans|peter|gelb"/>  
                  <int name="hans|alex|grün"/>  
                  <int name="franz|julia|text"/>  
          </lst>  
          <lst name="Knoten_04">  
                  <int name="hans|peter|lustig|tele"/>  
          </lst>  
          
          

          und was ich haben möchten ist das:

                  <int name="hans|peter|lustig|tele"/>  
                  <int name="hans|peter|gelb"/>  
                  <int name="hans|alex|grün"/>  
                  <int name="franz|julia|text"/>
          

          Wenn das nicht verständlich ist fang ich am besten nochmal von vorne an es besser zu erklären.

          Hier nochmal ein code Snippet aus der Quell XML

            
          <lst name="facet_counts">  
          		<lst name="facet_queries"/>  
          		<lst name="facet_fields">  
          			<lst name="Suchbaumknoten_UNI_0">  
          				<int name="Krafträder{16531}">3</int>  
          			</lst>  
          			<lst name="Suchbaumknoten_UNI_1">  
          				<int name="Krafträder{16531}¦Bremsanlage{16532}">1</int>  
          			</lst>  
                                  <lst name="Suchbaumknoten_UNI_3"/>  
                                  <lst name="Suchbaumknoten_UNI_4"/>  
            
          			</lst>  
          			<lst name="Suchbaumknoten_ptop_1"/>  
          			<lst>  
          			     <int name="Bremsscheibe Standard/Alien{1655¦Bremsscheibe{2154}¦1">1</int>  
          			</lst>  
          			<lst name="Suchbaumknoten_ptop_2"/>  
          			<lst name="Suchbaumknoten_ptop_3"/>  
          			<lst name="Suchbaumknoten_ptop_4"/>  
          			<lst name="Suchbaumknoten_ptop_5"/>
          
          1. Ausgehend von <lst name="facet_fields">

            <xsl: value-of select="lst[last() and (contains(@name, "Suchbaumknoten_PC_") or contains...)]" />

            1. Ausgehend von <lst name="facet_fields">

              <xsl: value-of select="lst[last() and (contains(@name, "Suchbaumknoten_PC_") or contains...)]" />

              Das Problem an last() wird sein, dass ich dann z.b. <lst name="Suchbaumknoten_UNI_4"/> bekommen würde, welcher gar keinen Inhalt besitzt. Deswegen war meine Idee die Gruppierung.

              Danke und Gruß
              Mahus

              1. Das Problem an last() wird sein, dass ich dann z.b. <lst name="Suchbaumknoten_UNI_4"/> bekommen würde, welcher gar keinen Inhalt besitzt.

                Wird sein oder ist? Hast Du es ausprobiert?

                Grüße
                Siri

                1. Das Problem an last() wird sein, dass ich dann z.b. <lst name="Suchbaumknoten_UNI_4"/> bekommen würde, welcher gar keinen Inhalt besitzt.

                  Wird sein oder ist? Hast Du es ausprobiert?

                  Grüße
                  Siri

                  Ist

                  Ps: Wenn du mir deine email gibst oder dich bei mir meldest (m.bahr@hotmail.de) würde ich dir sonst mal was schicken womit es vielleicht deutlicher wird.

                  Gruß
                  Mahus