Announcement

Collapse
No announcement yet.

Sortierung! - nur von ausgewählten Tags (Elemente), minimum suchen

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

  • Sortierung! - nur von ausgewählten Tags (Elemente), minimum suchen

    Hallo again,

    Sortierung die 2te sozusagen... allerdings anderes Thema
    jetzt im Baum...

    brauche einen ansatz oder tip

    nun nachdem ich erfolgreich meinen Baum sortiert habe
    <xsl:sort select="bla......" data-type="number"/>
    möchte ich gerne, dass nur von bestimmten Tags das Minimum
    ausgegeben wird..

    mit dem normalen sort bekomme ich das minimum (mit position()=1) von dem komplette for-each...(is klar..)
    er soll aber ein paar äste ausschliessen..

    ich habe jetzt den fall das das Ausgeschlossene Tags die sortierten positionen im Baum 1, 3, 5 haben.. soll heissen jetzt ist eigentlich die position 2 das kleinste und das zweikleinste an 4. position.

    gibt es irgendeine Möglichkeit beim Sortieren das bestimmte tags (Elemente )ausgeschlossen werden und eine bereingte, ich sag mal rangliste, ausgegeben wird.

    kompliziert? hmm...

  • #2
    Poste mal ein Beispiel, wie die XML-Eingabe aussieht, dann das Resultat, das du erreichen willst, und dann den XSLT-Code mit dem derzeitigen Resultat.

    Comment


    • #3
      PHP Code:
      <dataGenKeyList>
          <
      dataGenKeyGroup>
                    <
      dataGenKey>
                                  <
      key>KEYTYPE<key>
                                  <
      value>Key Zone1</value>
                  </
      dataGenKey>
                   <
      dataGenKey>
                                   <
      key>KEY_CAT<key>
                                   <
      value></value>
                    </
      dataGenKey>
                    <
      dataGenKey>
                                    <
      key>COM_ADULT<key>
                                   <
      value>0</value>
                    </
      dataGenKey>
                      <
      dataGenKey>
                                    <
      key>COM_CHILD<key>
                                   <
      value>0</value>
                    </
      dataGenKey>
          </
      dataGenKeyGroup>
          <
      dataGenKeyGroup>
                    <
      dataGenKey>
                                  <
      key>KEYTYPE<key>
                                  <
      value>YellowCard</value>
                  </
      dataGenKey>
                   <
      dataGenKey>
                                   <
      key>KEY_CAT<key>
                                   <
      value>1</value>
                    </
      dataGenKey>
                    <
      dataGenKey>
                                    <
      key>COM_ADULT<key>
                                   <
      value>2.00</value>
                    </
      dataGenKey>
                      <
      dataGenKey>
                                    <
      key>COM_CHILD<key>
                                   <
      value>1.50</value>
                    </
      dataGenKey>
          </
      dataGenKeyGroup>

          <
      dataGenKeyGroup>
                    <
      dataGenKey>
                                  <
      key>KEYTYPE<key>
                                  <
      value>GreyCard</value>
                  </
      dataGenKey>
                   <
      dataGenKey>
                                   <
      key>KEY_CAT<key>
                                   <
      value>1</value>
                    </
      dataGenKey>
                    <
      dataGenKey>
                                    <
      key>COM_ADULT<key>
                                   <
      value>2.20</value>
                    </
      dataGenKey>
                      <
      dataGenKey>
                                    <
      key>COM_CHILD<key>
                                   <
      value>1.60</value>
                    </
      dataGenKey>
          </
      dataGenKeyGroup>
         <
      dataGenKeyGroup>
                    <
      dataGenKey>
                                  <
      key>KEYTYPE<key>
                                  <
      value>BlueCard</value>
                  </
      dataGenKey>
                   <
      dataGenKey>
                                   <
      key>KEY_CAT<key>
                                   <
      value>1</value>
                    </
      dataGenKey>
                    <
      dataGenKey>
                                    <
      key>COM_ADULT<key>
                                   <
      value>1.80</value>
                    </
      dataGenKey>
                      <
      dataGenKey>
                                    <
      key>COM_CHILD<key>
                                   <
      value>1.30</value>
                    </
      dataGenKey>
          </
      dataGenKeyGroup>
        <
      dataGenKeyGroup>
                    <
      dataGenKey>
                                  <
      key>KEYTYPE<key>
                                  <
      value>GreenCard</value>
                  </
      dataGenKey>
                   <
      dataGenKey>
                                   <
      key>KEY_CAT<key>
                                   <
      value>1</value>
                    </
      dataGenKey>
                    <
      dataGenKey>
                                    <
      key>COM_ADULT<key>
                                   <
      value>1.00</value>
                    </
      dataGenKey>
                      <
      dataGenKey>
                                    <
      key>COM_CHILD<key>
                                   <
      value>0</value>
                    </
      dataGenKey>
          </
      dataGenKeyGroup>
      ..

      ..

      ..
       <
      dataGenKeyGroup>
                    <
      dataGenKey>
                                  <
      key>KEYTYPE<key>
                                  <
      value>RedCard</value>
                  </
      dataGenKey>
                   <
      dataGenKey>
                                   <
      key>KEY_CAT<key>
                                   <
      value>1</value>
                    </
      dataGenKey>
                    <
      dataGenKey>
                                    <
      key>COM_ADULT<key>
                                   <
      value>2.70</value>
                    </
      dataGenKey>
                      <
      dataGenKey>
                                    <
      key>COM_CHILD<key>
                                   <
      value>2.00</value>
                    </
      dataGenKey>
          </
      dataGenKeyGroup>
      ..

      ..

      ..
      </
      dataGenKeyList
      so ungefähr nur verkürzte liste (öh baum) verkürzt

      nun is hab ich das sortiert beispiel nach dem Wert COM_ADULT
      meine Ausgabe ist nun

      1. Key Zone1 = 0.00
      2. GreenCard =1.00
      3. BlueCard = 1.80 usw...
      ..
      10 RedCard=2.70

      nun möchte ich ein paar tags weglassen wie bspw.. "GreenCard" oder "Key Zone1" bei denen Werte fehlen oder unsinn drinnesteht (weil daten fehlen oder nicht für die liste relevant.)

      es soll also rauskommen

      1. BlueCard = 1.80
      2.YellowCard= 2.00
      3.GreyCard=2.20
      4.RedCard=2.70

      sorry wegen der späten antwort.. aber war afk ...

      Comment


      • #4
        Man kann einfach per Prädikat (also Bedingung in eckigen Klammern) die Elemente selektieren, wie man verarbeiten will.
        Mit dem Eingabedokument
        Code:
        <dataGenKeyList>
            <dataGenKeyGroup>
                      <dataGenKey>
                                    <key>KEYTYPE</key>
                                    <value>Key Zone1</value>
                    </dataGenKey>
                     <dataGenKey>
                                     <key>KEY_CAT</key>
                                     <value></value>
                      </dataGenKey>
                      <dataGenKey>
                                      <key>COM_ADULT</key>
                                     <value>0</value>
                      </dataGenKey>
                        <dataGenKey>
                                      <key>COM_CHILD</key>
                                     <value>0</value>
                      </dataGenKey>
            </dataGenKeyGroup>
            <dataGenKeyGroup>
                      <dataGenKey>
                                    <key>KEYTYPE</key>
                                    <value>YellowCard</value>
                    </dataGenKey>
                     <dataGenKey>
                                     <key>KEY_CAT</key>
                                     <value>1</value>
                      </dataGenKey>
                      <dataGenKey>
                                      <key>COM_ADULT</key>
                                     <value>2.00</value>
                      </dataGenKey>
                        <dataGenKey>
                                      <key>COM_CHILD</key>
                                     <value>1.50</value>
                      </dataGenKey>
            </dataGenKeyGroup>
        
            <dataGenKeyGroup>
                      <dataGenKey>
                                    <key>KEYTYPE</key>
                                    <value>GreyCard</value>
                    </dataGenKey>
                     <dataGenKey>
                                     <key>KEY_CAT</key>
                                     <value>1</value>
                      </dataGenKey>
                      <dataGenKey>
                                      <key>COM_ADULT</key>
                                     <value>2.20</value>
                      </dataGenKey>
                        <dataGenKey>
                                      <key>COM_CHILD</key>
                                     <value>1.60</value>
                      </dataGenKey>
            </dataGenKeyGroup>
           <dataGenKeyGroup>
                      <dataGenKey>
                                    <key>KEYTYPE</key>
                                    <value>BlueCard</value>
                    </dataGenKey>
                     <dataGenKey>
                                     <key>KEY_CAT</key>
                                     <value>1</value>
                      </dataGenKey>
                      <dataGenKey>
                                      <key>COM_ADULT</key>
                                     <value>1.80</value>
                      </dataGenKey>
                        <dataGenKey>
                                      <key>COM_CHILD</key>
                                     <value>1.30</value>
                      </dataGenKey>
            </dataGenKeyGroup>
          <dataGenKeyGroup>
                      <dataGenKey>
                                    <key>KEYTYPE</key>
                                    <value>GreenCard</value>
                    </dataGenKey>
                     <dataGenKey>
                                     <key>KEY_CAT</key>
                                     <value>1</value>
                      </dataGenKey>
                      <dataGenKey>
                                      <key>COM_ADULT</key>
                                     <value>1.00</value>
                      </dataGenKey>
                        <dataGenKey>
                                      <key>COM_CHILD</key>
                                     <value>0</value>
                      </dataGenKey>
            </dataGenKeyGroup>
        ..
        
        ..
        
        ..
         <dataGenKeyGroup>
                      <dataGenKey>
                                    <key>KEYTYPE</key>
                                    <value>RedCard</value>
                    </dataGenKey>
                     <dataGenKey>
                                     <key>KEY_CAT</key>
                                     <value>1</value>
                      </dataGenKey>
                      <dataGenKey>
                                      <key>COM_ADULT</key>
                                     <value>2.70</value>
                      </dataGenKey>
                        <dataGenKey>
                                      <key>COM_CHILD</key>
                                     <value>2.00</value>
                      </dataGenKey>
            </dataGenKeyGroup>
        
        </dataGenKeyList>
        und dem Stylesheet
        Code:
        <xsl:stylesheet
          xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
          version="1.0">
          
          <xsl:output indent="yes"/>
          <xsl:strip-space elements="*"/>
          
          <xsl:template match="dataGenKeyList">
            <xsl:copy>
              <xsl:apply-templates 
                select="dataGenKeyGroup[not(dataGenKey[key = 'KEYTYPE']/value = 'GreenCard' or 
                                            dataGenKey[key = 'KEYTYPE']/value = 'Key Zone1')]">
                  <xsl:sort select="dataGenKey[key = 'COM_ADULT']/value" data-type="number"/>
              </xsl:apply-templates>
            </xsl:copy>
          </xsl:template>
          
          <xsl:template match="dataGenKeyGroup">
            <xsl:copy-of select="."/>
          </xsl:template>
        
        </xsl:stylesheet>
        erhält man dann
        Code:
        <dataGenKeyList>
           <dataGenKeyGroup>
              <dataGenKey>
                 <key>KEYTYPE</key>
                 <value>BlueCard</value>
              </dataGenKey>
              <dataGenKey>
                 <key>KEY_CAT</key>
                 <value>1</value>
              </dataGenKey>
              <dataGenKey>
                 <key>COM_ADULT</key>
                 <value>1.80</value>
              </dataGenKey>
              <dataGenKey>
                 <key>COM_CHILD</key>
                 <value>1.30</value>
              </dataGenKey>
           </dataGenKeyGroup>
           <dataGenKeyGroup>
              <dataGenKey>
                 <key>KEYTYPE</key>
                 <value>YellowCard</value>
              </dataGenKey>
              <dataGenKey>
                 <key>KEY_CAT</key>
                 <value>1</value>
              </dataGenKey>
              <dataGenKey>
                 <key>COM_ADULT</key>
                 <value>2.00</value>
              </dataGenKey>
              <dataGenKey>
                 <key>COM_CHILD</key>
                 <value>1.50</value>
              </dataGenKey>
           </dataGenKeyGroup>
           <dataGenKeyGroup>
              <dataGenKey>
                 <key>KEYTYPE</key>
                 <value>GreyCard</value>
              </dataGenKey>
              <dataGenKey>
                 <key>KEY_CAT</key>
                 <value>1</value>
              </dataGenKey>
              <dataGenKey>
                 <key>COM_ADULT</key>
                 <value>2.20</value>
              </dataGenKey>
              <dataGenKey>
                 <key>COM_CHILD</key>
                 <value>1.60</value>
              </dataGenKey>
           </dataGenKeyGroup>
           <dataGenKeyGroup>
              <dataGenKey>
                 <key>KEYTYPE</key>
                 <value>RedCard</value>
              </dataGenKey>
              <dataGenKey>
                 <key>KEY_CAT</key>
                 <value>1</value>
              </dataGenKey>
              <dataGenKey>
                 <key>COM_ADULT</key>
                 <value>2.70</value>
              </dataGenKey>
              <dataGenKey>
                 <key>COM_CHILD</key>
                 <value>2.00</value>
              </dataGenKey>
           </dataGenKeyGroup>
        </dataGenKeyList>

        Comment


        • #5
          cool das geht? ... danke ich probiers aus...

          Comment

          Working...
          X