Announcement

Collapse
No announcement yet.

XSL-Problem verschachtelte Bedingungen

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

  • XSL-Problem verschachtelte Bedingungen

    Hallo zusammen,
    mein problem liegt in der Verschachtelung von mehreren When-Bedingungen. Das XSL-File sieht folgendermaßen aus:

    <?xml version="1.0"?>
    <xsl:stylesheet version="1.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <!-- XSL-Transformation fuer Distler-Flyer -->
    <xslutput method="xml" indent="yes" encoding="utf-8" standalone="yes"/>



    <xsl:template match="/">
    <Root>
    <xsl:apply-templates select="/CatalogType/MediaItemList"/>
    </Root>
    </xsl:template>



    <xsl:template match="MediaItemList">
    <xsl:for-each select="MediaItem">
    <xsl:apply-templates select="."/>
    </xsl:for-each>
    </xsl:template>



    <xsl:template match="MediaItem">
    <!-- Bedingung Schiene A -->
    <xsl:choose>
    <xsl:when test='count(UserFields/UserField_14) > 0'>
    <!-- Produktteaser -->
    <Produktteaser>
    <xsl:value-of select="UserFields/UserField_2"/><xsl:text></xsl:text>
    </Produktteaser>
    <!-- Produkttitel -->
    <Produkttitel>
    <xsl:value-of select="UserFields/UserField_3"/><xsl:text></xsl:text>
    </Produkttitel>
    <!-- Produktbeschreibung -->
    <Produktbeschreibung>
    <xsl:value-of select="UserFields/UserField_4"/><xsl:text></xsl:text>
    </Produktbeschreibung>
    <!-- Pflichtext -->
    <xsl:choose>
    <xsl:when test='count(UserFields/UserField_7) > 0'>
    <Pflichttext>Diese Worte sollen dann platziert werden.</Pflichttext>
    </xsl:when>
    </xsl:choose>
    <!-- Grundpreis -->
    <xsl:choose>
    <xsl:when test='count(UserFields/UserField_9) > 0'>
    <Grundpreis>Entspricht € <xsl:value-of select="UserFields/UserField_9"/>.</Grundpreis>
    </xsl:when>
    </xsl:choose>
    <!-- UVP -->
    <xsl:choose>
    <xsl:when test='count(UserFields/UserField_7) > 0'>
    <UVP>UVP*: € <xsl:value-of select="UserFields/UserField_7"/></UVP>
    </xsl:when>
    </xsl:choose>
    <!-- Mengenangabe -->
    <Mengenangabe>
    <xsl:value-of select="UserFields/UserField_6"/><xsl:text></xsl:text>
    </Mengenangabe>
    <!-- VK -->
    <VK>
    <xsl:value-of select="UserFields/UserField_8"/>
    </VK>
    <!-- Produktbild -->
    <Produktbild>
    <xsl:attribute name="href">
    <xsl:value-of select="AssetProperties/Filepath"/>
    </xsl:attribute>
    </Produktbild>
    </xsl:when>
    </xsl:choose>
    </xsl:template>
    </xsl:stylesheet>


    Für die Bedingung
    „ <xsl:choose>
    <xsl:when test='count(UserFields/UserField_7) > x'>
    <Pflichttext>Diese Worte sollen dann platziert werden.</Pflichttext>
    </xsl:when>
    </xsl:choose>“

    funktioniert das XSL-File schon nicht mehr. Die ursprüngliche XML-Datei hat in dem „UserField_7“ den Wert „1“.
    Darf man Bedingungen in XSL nicht verschachteln oder liegt mein Problem an einer anderen Stelle?
    Zudem gibt der Transformator das gewünschte Feld aus sobald das „UserField_4“ einen Inhalt hat.

    Tausend Dank für eure Tipps im Voraus!

  • #2
    Reichen verschiedene xsl:when-Abfragen innerhalb eines xsl:choose-Konstruktes nicht aus? Ohne die XML-Daten zu kennen, lässt sich das kaum beurteilen.

    BTW: Es gibt hier ein separates XSLT-Forum für solche Fragen.

    Comment


    • #3
      Danke für den Tip zum XSL-Forum! Ich habe meinen Beitrag nochmal dort gepostet: http://entwickler-forum.de/showthrea...706#post172706

      Meinst du, dass nicht mehrere xsl:when-Abfragen in einem xsl-choose-Konstrukt vorkommen dürfen? Das habe ich auch vermutet und getestet – also mit einem xsl:choose ummantelt – aber der Effekt war negativ.
      Hast du sonnst noch eine Vermutung oder gibt es einen anderen Weg?

      Comment


      • #4
        xsl:choose darf ein oder mehrere xsl:when-Elemente und ein xsltherwise-Element enthalten [im Sinne von if - else bzw. if - else if ... else-if - else]. Poste mal den XML-Code, ich kann mir das Problem so nicht richtig vorstellen.

        Comment


        • #5
          Hi Thomas,
          die XML-Quelle ist:

          <?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
          <?iview mediapro exportversion="3.0" appversion="3.0" ?>

          <CatalogType>
          <Catalog pathType = "Posix">Katalog Produktbilder</Catalog>
          <UserFieldList>
          <UserFieldDefinition>PZN</UserFieldDefinition>
          <UserFieldDefinition>Produkt-Teaser</UserFieldDefinition>
          <UserFieldDefinition>Produktitel</UserFieldDefinition>
          <UserFieldDefinition>Produktbeschreibung</UserFieldDefinition>
          <UserFieldDefinition>Pflichtext</UserFieldDefinition>
          <UserFieldDefinition>Mengenangabe</UserFieldDefinition>
          <UserFieldDefinition>UVP</UserFieldDefinition>
          <UserFieldDefinition>VK</UserFieldDefinition>
          <UserFieldDefinition>Grundpreis</UserFieldDefinition>
          <UserFieldDefinition>Erstelldatum</UserFieldDefinition>
          <UserFieldDefinition>Aktionsmonat</UserFieldDefinition>
          <UserFieldDefinition>Platzierung</UserFieldDefinition>
          <UserFieldDefinition>Freigabe</UserFieldDefinition>
          <UserFieldDefinition>Schiene A</UserFieldDefinition>
          <UserFieldDefinition>Schiene B</UserFieldDefinition>
          </UserFieldList>
          <MediaItemList>
          <MediaItem>
          <AssetProperties>
          <Filename>8913131_Antistax_Gel.psd</Filename>
          <Filepath>file:///Volumes/ABTEILUNG/Werbung/Flyer/datenbank/8913131_Antistax_Gel.psd</Filepath>
          <UniqueID>524</UniqueID>
          <Label>0</Label>
          <Rating>0</Rating>
          <MediaType>PSD </MediaType>
          <FileSize unit="Bytes">3553690</FileSize>
          <Modified>2008:06:18 16:37:32</Modified>
          <Added>2008:06:18 16:38:16</Added>
          <Annotated>2008:07:25 12:22:05</Annotated>
          </AssetProperties>
          <UserFields>
          <UserField_1>8913131</UserField_1>
          <UserField_3>Antistax Frisch Gel</UserField_3>
          <UserField_4>Kühlt, entlastet und belebt müde und schwere Beine. Regt die Durchblutung der Haut an. Wirkstoff: Trockenextrakt aus roten Weinrebenblättern 360 mg. Zu Risiken und Nebenwirkungen lesen Sie die Packungsbeilage und fragen Sie Ihren Arzt oder Apotheker.</UserField_4>
          <UserField_6>125 ml</UserField_6>
          <UserField_7>11,50</UserField_7>
          <UserField_8>9,99</UserField_8>
          <UserField_9>7,99 pro 100 ml</UserField_9>
          <UserField_10>08/08</UserField_10>
          <UserField_11>08/08</UserField_11>
          </UserFields>
          </MediaItem>
          <MediaItem>
          <AssetProperties>
          <Filename>622606_Antistax_Creme.psd</Filename>
          <Filepath>file:///Volumes/ABTEILUNG/Werbung/Flyer/datenbank/622606_Antistax_Creme.psd</Filepath>
          <UniqueID>525</UniqueID>
          <Label>0</Label>
          <Rating>0</Rating>
          <MediaType>PSD </MediaType>
          <FileSize unit="Bytes">3531028</FileSize>
          <Modified>2008:07:21 10:46:08</Modified>
          <Added>2008:06:18 16:38:16</Added>
          <Annotated>2008:07:25 12:22:05</Annotated>
          </AssetProperties>
          <UserFields>
          <UserField_1>622606</UserField_1>
          <UserField_3>Antistax Venencreme</UserField_3>
          <UserField_4>Dickextrakt aus roten Weinrebenblättern zur Linderung müder, schwerer Beine. Wirkstoff: Trockenextrakt aus roten Weinrebenblättern 360 mg. Zu Risiken und Nebenwirkungen lesen Sie die Packungsbeilage und fragen Sie Ihren Arzt oder Apotheker.</UserField_4>
          <UserField_6>40 g</UserField_6>
          <UserField_7>9,45</UserField_7>
          <UserField_8>8,98</UserField_8>
          <UserField_9>22,45 pro 100 g</UserField_9>
          <UserField_10>08/08</UserField_10>
          <UserField_11>08/08</UserField_11>
          </UserFields>
          </MediaItem>
          <MediaItem>
          <AssetProperties>
          <Filename>2427180_venostasin_creme.psd</Filename>
          <Filepath>file:///Volumes/ABTEILUNG/Werbung/Flyer/datenbank/2427180_venostasin_creme.psd</Filepath>
          <UniqueID>523</UniqueID>
          <Label>0</Label>
          <Rating>0</Rating>
          <MediaType>PSD </MediaType>
          <FileSize unit="Bytes">3179167</FileSize>
          <Modified>2008:06:18 15:03:45</Modified>
          <Added>2008:06:18 15:04:29</Added>
          <Annotated>2008:07:25 12:22:05</Annotated>
          </AssetProperties>
          <UserFields>
          <UserField_1>2427180</UserField_1>
          <UserField_3>Venostasin Creme</UserField_3>
          <UserField_4>Trockenextrakt aus Rosskastaniensamen zur Besserung des Befindens bei müden Beinen. Zu Risiken und Nebenwirkungen lesen Sie die Packungsbeilage und fragen Sie Ihren Arzt oder Apotheker.</UserField_4>
          <UserField_6>50 g</UserField_6>
          <UserField_7>8,20</UserField_7>
          <UserField_8>7,49</UserField_8>
          <UserField_9>14,98 pro 100 g</UserField_9>
          <UserField_10>08/08</UserField_10>
          <UserField_11>08/08</UserField_11>
          </UserFields>
          </MediaItem>
          <MediaItem>
          <AssetProperties>
          <Filename>1373341_Olivenoel Maske.psd</Filename>
          <Filepath>file:///Volumes/ABTEILUNG/Werbung/Flyer/datenbank/1373341_Olivenoel Maske.psd</Filepath>
          <UniqueID>146</UniqueID>
          <Label>0</Label>
          <Rating>0</Rating>
          <MediaType>PSD </MediaType>
          <FileSize unit="Bytes">21839379</FileSize>
          <Created>2007:02:22 15:48:30</Created>
          <Modified>2007:02:22 15:48:31</Modified>
          <Added>2008:03:26 10:35:39</Added>
          <Annotated>2008:07:25 12:22:05</Annotated>
          </AssetProperties>
          <UserFields>
          <UserField_1>1373341</UserField_1>
          <UserField_3>Olivenöl Feuchtigkeitsmaske</UserField_3>
          <UserField_4>Feuchtigkeit, die unter die Haut geht, reguliert den Feuchtigkeitshaushalt und unterstützt die Zellerneuerung.</UserField_4>
          <UserField_6>15 ml</UserField_6>
          <UserField_7>1,75</UserField_7>
          <UserField_8>1,19</UserField_8>
          <UserField_9>7,93 pro 100 ml</UserField_9>
          <UserField_10>08/06</UserField_10>
          <UserField_11>08/08</UserField_11>
          <UserField_13>0</UserField_13>
          </UserFields>
          </MediaItem>
          <MediaItem>
          <AssetProperties>
          <Filename>2335_Antistax_60st.psd</Filename>
          <Filepath>file:///Volumes/ABTEILUNG/Werbung/Flyer/datenbank/2335_Antistax_60st.psd</Filepath>
          <UniqueID>511</UniqueID>
          <Label>0</Label>
          <Rating>0</Rating>
          <MediaType>PSD </MediaType>
          <FileSize unit="Bytes">3034787</FileSize>
          <Modified>2008:06:16 15:44:36</Modified>
          <Added>2008:06:16 15:46:25</Added>
          <Annotated>2008:07:25 12:22:05</Annotated>
          </AssetProperties>
          <UserFields>
          <UserField_1>2335</UserField_1>
          <UserField_3>Antistax Extra Venentabletten</UserField_3>
          <UserField_4>Anwendung bei Erwachsenen zur Behandlung von Beschwerden bei Erkrankungen der Beinvenen (chronische Veneninsuffizienz), zum Beispiel Schmerzen und Schweregefühl in den Beinen, nächtliche Wadenkrämpfe, Juckreiz und Ödeme (Beinschwellungen) Wirkstoff: Trockenextrakt aus roten Weinrebenblättern 360 mg . Wirkstoff: Trockenextrakt aus roten Weinrebenblättern 360 mg. Zu Risiken und Nebenwirkungen lesen Sie die Packungsbeilage und fragen Sie Ihren Arzt oder Apotheker.</UserField_4>
          <UserField_6>60 Tabletten</UserField_6>
          <UserField_7>27,30</UserField_7>
          <UserField_8>26,95</UserField_8>
          <UserField_10>07/08</UserField_10>
          <UserField_11>08/08</UserField_11>
          </UserFields>
          </MediaItem>
          <MediaItem>
          <AssetProperties>
          <Filename>949632_soventol_gel.psd</Filename>
          <Filepath>file:///Volumes/ABTEILUNG/Werbung/Flyer/datenbank/949632_soventol_gel.psd</Filepath>
          <UniqueID>526</UniqueID>
          <Label>0</Label>
          <Rating>0</Rating>
          <MediaType>PSD </MediaType>
          <FileSize unit="Bytes">22843284</FileSize>
          <Modified>2008:07:04 13:13:37</Modified>
          <Added>2008:06:27 09:42:04</Added>
          <Annotated>2008:07:25 12:22:05</Annotated>
          </AssetProperties>
          <AnnotationFields>
          <Copyright> </Copyright>
          </AnnotationFields>
          <UserFields>
          <UserField_1>949632</UserField_1>
          <UserField_3>Soventol Gel</UserField_3>
          <UserField_4>Anwendung bei Insektenstichen mit Juckreiz. Ohne Konservierungsstoffe! Wirkstoff: Bamipin[(RS)-lactat]. Zu Risiken und Nebenwirkungen lesen Sie die Packungsbeilage und fragen Sie Ihren Arzt oder Apotheker.</UserField_4>
          <UserField_6>20 g</UserField_6>
          <UserField_7>4,45</UserField_7>
          <UserField_8>3,90</UserField_8>
          <UserField_9>19,50 pro 100 g</UserField_9>
          <UserField_10>08/08</UserField_10>
          <UserField_11>08/08</UserField_11>
          </UserFields>
          </MediaItem>
          <MediaItem>
          <AssetProperties>
          <Filename>1273510_venostasin_retard.psd</Filename>
          <Filepath>file:///Volumes/ABTEILUNG/Werbung/Flyer/datenbank/1273510_venostasin_retard.psd</Filepath>
          <UniqueID>527</UniqueID>
          <Label>0</Label>
          <Rating>0</Rating>
          <MediaType>PSD </MediaType>
          <FileSize unit="Bytes">23541336</FileSize>
          <Modified>2008:07:04 13:13:30</Modified>
          <Added>2008:06:27 09:43:08</Added>
          <Annotated>2008:07:25 12:22:05</Annotated>
          </AssetProperties>
          <AnnotationFields>
          <Copyright> </Copyright>
          </AnnotationFields>
          <UserFields>
          <UserField_1>1273510</UserField_1>
          <UserField_3>Venostasin Retard</UserField_3>
          <UserField_4>Pflanzliches Venenmittel gegen Schmerzen, Schwellungen und Schweregefühl in den Beinen. Wirkstoff: Trockenextrakt aus Rosskastaniensamen. Zu Risiken und Nebenwirkungen lesen Sie die Packungsbeilage und fragen Sie Ihren Arzt oder Apotheker.</UserField_4>
          <UserField_6>50 Kapseln</UserField_6>
          <UserField_7>29,90</UserField_7>
          <UserField_8>27,98</UserField_8>
          <UserField_10>08/08</UserField_10>
          <UserField_11>08/08</UserField_11>
          </UserFields>
          </MediaItem>
          </MediaItemList>
          </CatalogType>

          Der Punkt ist, dass manche Elemente mit Pflichtext abgebildet werden müssen und andere nicht. Bei der UVP haben nicht alle Elemente dieses Tag. Ebenso verhält es sich bei Mengenangabe und UVP.
          Zuletzt editiert von xml-disco; 31.07.2008, 10:44.

          Comment


          • #6
            Und jetzt bitte noch die gesuchte Ergebnisstruktur nennen.

            Comment


            • #7
              Mein Ziel ist folgende Form:
              <?xml version="1.0" encoding="utf-8" standalone="yes"?>
              <Root>
              <Produktteaser>Blabla blubb</Produktteaser>
              <Produkttitel>Tolles Super-Produkt</Produkttitel>
              <Produktbeschreibung>Tolles blabla mit Blubbb und Klimmbimm-Funktion. Ohne Konservenstoffe!</Produktbeschreibung>
              <Pflichttext>Zu Risiken und Nebenwirkungen lesen Sie die Packungsbeilage und fragen Sie Ihren Arzt oder Apotheker.</Pflichttext>
              <Grundpreis>Entspricht € 3,99 pro 100 ml.</Grundpreis>
              <UVP>UVP*: € 9,99</UVP>
              <Mengenangabe>200 ml</Mengenangabe>
              <VK>7,99</VK>
              <Produktbild href="12345678_mxyz.psd"/>
              </Root>


              Wobei die Felder Pflichtext, Grundpreis und UVP nur erscheinen dürfen wenn der Wert „1“ oder andere Werte in den Quellfeldern sind. Später soll das Ganze in Adobe Indesign wandern.

              Comment


              • #8
                Nun fehlt mir noch der Zusammenhang von Quelle und Ziel. Geht es um ein einzelnes MediaItem? Sorry, aber das ist etwas viel Input, wenn man nicht im inhaltlichen Thema drin steckt.

                Comment


                • #9
                  Hm – ich hoffe, ich verstehe deine Frage richtig. In der Regel sind es 12 - 16 Bilder, die alle die gleichen Felder haben oder haben können. Die Felder UVP, Grundpreis und Pflichttext sind optional und sollen über die XSL-Datei in der Ausgabe-Datei gesteuert werden.
                  Das Feld UVP enthält einen Preis mit Komma, das Feld Grundpreis Ziffern und Buchstaben und das Feld Pflichtext eine 1, wenn der Pflichtext geschrieben werden soll. Dieser Pflichtext soll in XSL-datei stehen und bei 1 ausgegeben werden.
                  Erschwerend kommt hinzu, dass die Bilder ein Feld Schiene A und Schiene B haben. Später muss es zwei XSL-Files geben. Diese kanalisieren Produkte, die in Schiene A oder B sind, wobei die Bilder in beiden Schienen vorkommen können. Das ist die ummantelnde Abfrage zum UserField_14 oder 15 am Anfang --->
                  <xsl:choose>
                  <xsl:when test='count(UserFields/UserField_14) > 0'>
                  Hier filtere ich die Bilder für die beiden Schienen mit den beiden XSL-Files (A + B).

                  Jepp, verstehe, dass das ganz schön kniffelig ist, wenn man sich reindenken muss. Hoffe ich konnte das jetzt besser unterfüttern.
                  Bin auch nicht so sicher in Sachen XSL. Habe nur Excel- und Lingo-Grundlagen in Sachen WHEN.

                  Auf jeden Fall vorab tausend Dank für dein Hirnen!

                  Comment


                  • #10
                    Ich habe mal Dein eingangs gepostetes Stylesheet auf die XML-Quelle angewendet und kein Ergebnis (außer <Root/>) erhalten, da es nirgendwo ein UserField_14 gibt, auf welches in der count(...)-Bedingung Bezug genommen wird. Insofern kann ich leider nicht weiter zur Problemlösung beitragen.
                    Zuletzt editiert von Thomas Meinike; 31.07.2008, 12:12.

                    Comment


                    • #11
                      Ups – das war ein Fehler meinerseits. hier nochmal ein passender Quelltext:
                      <?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
                      <?iview mediapro exportversion="3.0" appversion="3.0" ?>

                      <CatalogType>
                      <Catalog pathType = "Posix">Katalog Produktbilder</Catalog>
                      <UserFieldList>
                      <UserFieldDefinition>PZN</UserFieldDefinition>
                      <UserFieldDefinition>Produkt-Teaser</UserFieldDefinition>
                      <UserFieldDefinition>Produktitel</UserFieldDefinition>
                      <UserFieldDefinition>Produktbeschreibung</UserFieldDefinition>
                      <UserFieldDefinition>Pflichtext</UserFieldDefinition>
                      <UserFieldDefinition>Mengenangabe</UserFieldDefinition>
                      <UserFieldDefinition>UVP</UserFieldDefinition>
                      <UserFieldDefinition>VK</UserFieldDefinition>
                      <UserFieldDefinition>Grundpreis</UserFieldDefinition>
                      <UserFieldDefinition>Erstelldatum</UserFieldDefinition>
                      <UserFieldDefinition>Aktionsmonat</UserFieldDefinition>
                      <UserFieldDefinition>Platzierung</UserFieldDefinition>
                      <UserFieldDefinition>Freigabe</UserFieldDefinition>
                      <UserFieldDefinition>Schiene A</UserFieldDefinition>
                      <UserFieldDefinition>Schiene B</UserFieldDefinition>
                      </UserFieldList>
                      <MediaItemList>
                      <MediaItem>
                      <AssetProperties>
                      <Filename>86331999_pearls_dents_liegend.psd</Filename>
                      <Filepath>file:///Volumes/ABTEILUNG/Werbung/Flyer/datenbank/86331999_pearls_dents_liegend.psd</Filepath>
                      <UniqueID>559</UniqueID>
                      <Label>0</Label>
                      <Rating>0</Rating>
                      <MediaType>PSD </MediaType>
                      <FileSize unit="Bytes">26752428</FileSize>
                      <Modified>2008:07:23 10:24:26</Modified>
                      <Added>2008:07:23 15:55:14</Added>
                      <Annotated>2008:07:31 09:01:42</Annotated>
                      </AssetProperties>
                      <AnnotationFields>
                      <Copyright> </Copyright>
                      </AnnotationFields>
                      <UserFields>
                      <UserField_1>8633199</UserField_1>
                      <UserField_2>Weiche Perlen für harte Zähne.</UserField_2>
                      <UserField_3>Pearls &amp; Dents Zahncreme</UserField_3>
                      <UserField_4>Exklusive Komplettpflege für Zahnfleisch und Zähne. Sanfte Kügelchen reinigen schonend und effektiv bis in die Zahnzwischenräume.</UserField_4>
                      <UserField_6>100 ml</UserField_6>
                      <UserField_7>6,60</UserField_7>
                      <UserField_8>5,29</UserField_8>
                      <UserField_9>5,29 pro 100 ml</UserField_9>
                      <UserField_10>09/08</UserField_10>
                      <UserField_11>09/08</UserField_11>
                      <UserField_12>2</UserField_12>
                      <UserField_13>1</UserField_13>
                      <UserField_14>1</UserField_14>
                      <UserField_15>1</UserField_15>
                      </UserFields>
                      </MediaItem>
                      <MediaItem>
                      <AssetProperties>
                      <Filename>4042857_oralmedic.psd</Filename>
                      <Filepath>file:///Volumes/ABTEILUNG/Werbung/Flyer/datenbank/4042857_oralmedic.psd</Filepath>
                      <UniqueID>563</UniqueID>
                      <Label>0</Label>
                      <Rating>0</Rating>
                      <MediaType>PSD </MediaType>
                      <FileSize unit="Bytes">150497</FileSize>
                      <Modified>2008:07:29 08:34:17</Modified>
                      <Added>2008:07:29 08:34:53</Added>
                      <Annotated>2008:07:31 09:10:51</Annotated>
                      </AssetProperties>
                      <UserFields>
                      <UserField_1>4042857</UserField_1>
                      <UserField_2>Kein Schmerz im Mund.</UserField_2>
                      <UserField_3>Oralmedic Applikatoren</UserField_3>
                      <UserField_4>Stoppt den Entzündungsschmerz im Mund in Sekunden.</UserField_4>
                      <UserField_6>3 Applikatoren</UserField_6>
                      <UserField_7>9,99</UserField_7>
                      <UserField_8>9,99</UserField_8>
                      <UserField_10>09/08</UserField_10>
                      <UserField_11>09/08</UserField_11>
                      <UserField_12>6</UserField_12>
                      <UserField_13>1</UserField_13>
                      <UserField_14>1</UserField_14>
                      <UserField_15>1</UserField_15>
                      </UserFields>
                      </MediaItem>
                      <MediaItem>
                      <AssetProperties>
                      <Filename>2142017_kamistad_gel.psd</Filename>
                      <Filepath>file:///Volumes/ABTEILUNG/Werbung/Flyer/datenbank/2142017_kamistad_gel.psd</Filepath>
                      <UniqueID>553</UniqueID>
                      <Label>0</Label>
                      <Rating>0</Rating>
                      <MediaType>PSD </MediaType>
                      <FileSize unit="Bytes">22695279</FileSize>
                      <Modified>2008:07:23 15:50:31</Modified>
                      <Added>2008:07:23 15:55:14</Added>
                      <Annotated>2008:07:31 09:07:43</Annotated>
                      </AssetProperties>
                      <AnnotationFields>
                      <Copyright> </Copyright>
                      </AnnotationFields>
                      <UserFields>
                      <UserField_1>2142017</UserField_1>
                      <UserField_2>Heilsam bei Mundentzündungen.</UserField_2>
                      <UserField_3>Kamistad Gel N</UserField_3>
                      <UserField_4>Traditionell angewendet als mild wirkendes Arzneimittel bei leichten Entzündungen des Zahnfleisches und der Mundschleimhaut.</UserField_4>
                      <UserField_5>1</UserField_5>
                      <UserField_6>20 g</UserField_6>
                      <UserField_7>9,90</UserField_7>
                      <UserField_8>9,90</UserField_8>
                      <UserField_9>49,50</UserField_9>
                      <UserField_10>09/08</UserField_10>
                      <UserField_11>09/08</UserField_11>
                      <UserField_12>7</UserField_12>
                      <UserField_13>1</UserField_13>
                      <UserField_14>1</UserField_14>
                      <UserField_15>1</UserField_15>
                      </UserFields>
                      </MediaItem>
                      <MediaItem>
                      <AssetProperties>
                      <Filename>256969_Eucerin_ph5_Waschlot.psd</Filename>
                      <Filepath>file:///Volumes/ABTEILUNG/Werbung/Flyer/datenbank/256969_Eucerin_ph5_Waschlot.psd</Filepath>
                      <UniqueID>562</UniqueID>
                      <Label>0</Label>
                      <Rating>0</Rating>
                      <MediaType>PSD </MediaType>
                      <FileSize unit="Bytes">30166668</FileSize>
                      <Modified>2007:02:22 15:34:05</Modified>
                      <Added>2008:07:24 09:47:29</Added>
                      <Annotated>2008:07:31 09:09:48</Annotated>
                      </AssetProperties>
                      <UserFields>
                      <UserField_1>256969</UserField_1>
                      <UserField_2>Milde Reinigung sensibler Haut.</UserField_2>
                      <UserField_3>Eucerin pH5 Waschlotion</UserField_3>
                      <UserField_4>Bewahrt die natürlichen Abwehrkräfte der Haut und reinigt besonders mild ohne auszutrocknen, im praktischen Nachfüllbeutel</UserField_4>
                      <UserField_6>750 ml</UserField_6>
                      <UserField_7>11,50</UserField_7>
                      <UserField_8>9,49</UserField_8>
                      <UserField_9>12,65 pro Liter</UserField_9>
                      <UserField_10>08/07</UserField_10>
                      <UserField_11>09/08</UserField_11>
                      <UserField_12>11</UserField_12>
                      <UserField_13>1</UserField_13>
                      <UserField_15>1</UserField_15>
                      </UserFields>
                      </MediaItem>
                      <MediaItem>
                      <AssetProperties>
                      <Filename>1423582_maloxan_tabl.psd</Filename>
                      <Filepath>file:///Volumes/ABTEILUNG/Werbung/Flyer/datenbank/1423582_maloxan_tabl.psd</Filepath>
                      <UniqueID>551</UniqueID>
                      <Label>0</Label>
                      <Rating>0</Rating>
                      <MediaType>PSD </MediaType>
                      <FileSize unit="Bytes">27116914</FileSize>
                      <Modified>2008:07:23 15:27:12</Modified>
                      <Added>2008:07:23 15:55:14</Added>
                      <Annotated>2008:07:31 09:08:36</Annotated>
                      </AssetProperties>
                      <AnnotationFields>
                      <Copyright> </Copyright>
                      </AnnotationFields>
                      <UserFields>
                      <UserField_1>1423582</UserField_1>
                      <UserField_2>Wohlbehagen für den Magen.</UserField_2>
                      <UserField_3>Maaloxan 25 mVal Kautablette</UserField_3>
                      <UserField_4>Therapie von Sodbrennen und säurebedingten Magenbeschwerden.</UserField_4>
                      <UserField_5>1</UserField_5>
                      <UserField_6>20 Kautabletten</UserField_6>
                      <UserField_7>6,15</UserField_7>
                      <UserField_8>4,99</UserField_8>
                      <UserField_10>09/08</UserField_10>
                      <UserField_11>09/08</UserField_11>
                      <UserField_12>11</UserField_12>
                      <UserField_13>1</UserField_13>
                      <UserField_14>1</UserField_14>
                      </UserFields>
                      </MediaItem>
                      <MediaItem>
                      <AssetProperties>
                      <Filename>7436367_mosquito_laeuseshampoo.psd</Filename>
                      <Filepath>file:///Volumes/ABTEILUNG/Werbung/Flyer/datenbank/7436367_mosquito_laeuseshampoo.psd</Filepath>
                      <UniqueID>560</UniqueID>
                      <Label>0</Label>
                      <Rating>0</Rating>
                      <MediaType>PSD </MediaType>
                      <FileSize unit="Bytes">35660023</FileSize>
                      <Modified>2008:07:23 10:27:01</Modified>
                      <Added>2008:07:23 15:55:14</Added>
                      <Annotated>2008:07:31 09:08:45</Annotated>
                      </AssetProperties>
                      <AnnotationFields>
                      <Copyright> </Copyright>
                      </AnnotationFields>
                      <UserFields>
                      <UserField_1>7436367</UserField_1>
                      <UserField_2>Hart zur Laus, mild zur Haut.</UserField_2>
                      <UserField_3>Mosquito Läuse Shampoo</UserField_3>
                      <UserField_4>Zur Bekämpfung und Beseitigung von Läusen und Nissen.</UserField_4>
                      <UserField_6>100 ml</UserField_6>
                      <UserField_7>11,95</UserField_7>
                      <UserField_8>10,95</UserField_8>
                      <UserField_9>10,95 pro 100 ml</UserField_9>
                      <UserField_10>09/08</UserField_10>
                      <UserField_11>09/08</UserField_11>
                      <UserField_12>12</UserField_12>
                      <UserField_13>1</UserField_13>
                      <UserField_14>1</UserField_14>
                      <UserField_15>1</UserField_15>
                      </UserFields>
                      </MediaItem>
                      <MediaItem>
                      <AssetProperties>
                      <Filename>351969_granufink_prosta.psd</Filename>
                      <Filepath>file:///Volumes/ABTEILUNG/Werbung/Flyer/datenbank/351969_granufink_prosta.psd</Filepath>
                      <UniqueID>557</UniqueID>
                      <Label>0</Label>
                      <Rating>0</Rating>
                      <MediaType>PSD </MediaType>
                      <FileSize unit="Bytes">20365830</FileSize>
                      <Modified>2008:07:23 15:39:16</Modified>
                      <Added>2008:07:23 15:55:14</Added>
                      <Annotated>2008:07:31 09:09:19</Annotated>
                      </AssetProperties>
                      <AnnotationFields>
                      <Copyright> </Copyright>
                      </AnnotationFields>
                      <UserFields>
                      <UserField_1>351969</UserField_1>
                      <UserField_2>Mann kann frei von Harndrang sein.</UserField_2>
                      <UserField_3>Granufink Prosta Kapseln</UserField_3>
                      <UserField_4>Traditionell angewendet zur Stärkung oder Kräftigung der Blasenfunktion.</UserField_4>
                      <UserField_6>60 Kapseln</UserField_6>
                      <UserField_8>16,95</UserField_8>
                      <UserField_10>09/08</UserField_10>
                      <UserField_11>09/08</UserField_11>
                      <UserField_12>13</UserField_12>
                      <UserField_13>1</UserField_13>
                      <UserField_14>1</UserField_14>
                      <UserField_15>1</UserField_15>
                      </UserFields>
                      </MediaItem>
                      </MediaItemList>
                      </CatalogType>

                      Comment


                      • #12
                        Kann es sein, dass Du mehr an separaten xsl:if-Bedingungen, als an solchen mit xsl:when unterhalb von xsl:choose interessiert bist? Hier mal ein Versuch, wobei ich noch immer nicht weiß, was eigentlich heraus kommen soll:
                        Code:
                        <?xml version="1.0" encoding="utf-8"?>
                        <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
                          <!-- XSL-Transformation fuer Distler-Flyer -->
                        
                          <xsl:output method="xml" indent="yes" encoding="utf-8" standalone="yes"/>
                        
                          <xsl:template match="/">
                            <Root>
                              <xsl:apply-templates select="/CatalogType/MediaItemList"/>
                            </Root>
                          </xsl:template>
                        
                          <xsl:template match="/CatalogType/MediaItemList">
                            <xsl:apply-templates select="MediaItem"/>
                          </xsl:template>
                        
                          <xsl:template match="MediaItem">
                            <!-- Bedingung Schiene A -->
                            <xsl:if test="count(UserFields/UserField_14) > 0">
                              <!-- Produktteaser -->
                              <Produktteaser>
                                <xsl:value-of select="UserFields/UserField_2"/>
                              </Produktteaser>
                              <!-- Produkttitel -->
                              <Produkttitel>
                                <xsl:value-of select="UserFields/UserField_3"/>
                              </Produkttitel>
                              <!-- Produktbeschreibung -->
                              <Produktbeschreibung>
                                <xsl:value-of select="UserFields/UserField_4"/>
                              </Produktbeschreibung>
                            </xsl:if>
                            <xsl:if test="count(UserFields/UserField_7) > 0">
                              <!-- Pflichtext -->
                              <Pflichttext>Diese Worte sollen dann platziert werden.</Pflichttext>
                            </xsl:if>
                            <xsl:if test="count(UserFields/UserField_9) > 0">
                              <!-- Grundpreis -->
                              <Grundpreis>Entspricht € <xsl:value-of select="UserFields/UserField_9"/>.</Grundpreis>
                            </xsl:if>
                            <xsl:if test="count(UserFields/UserField_7) > 0">
                              <!-- UVP -->
                              <UVP>UVP*: € <xsl:value-of select="UserFields/UserField_7"/>
                              </UVP>
                            </xsl:if>
                            <!-- Mengenangabe -->
                            <Mengenangabe>
                              <xsl:value-of select="UserFields/UserField_6"/>
                            </Mengenangabe>
                            <!-- VK -->
                            <VK>
                              <xsl:value-of select="UserFields/UserField_8"/>
                            </VK>
                            <!-- Produktbild -->
                            <Produktbild>
                              <xsl:attribute name="href"><xsl:value-of select="AssetProperties/Filepath"/></xsl:attribute>
                            </Produktbild>
                          </xsl:template>
                        
                        </xsl:stylesheet>
                        Außerdem habe ich die Vermutung, dass Du nicht die Anzahl von UserField...-Elementen zählen möchstest [das ist das Ziel der count()-Funktion], sondern es um die Prüfung auf Werte > 0 geht. Dazu wäre dann eher test="whatever > 0", ggf. auch test="number(whatever) > 0" geeignet.

                        Comment


                        • #13
                          Proof des letzten XSl-Sheets

                          Hi,
                          sorry für die späte Reaktion zu deinem letzten Beitrag. Mir ist ein Projekt und Urlaub dazwischen gekommen.
                          Gerade habe ich nochmal dein letztes XSL-Sheet probiert. Beim ersten Überprüfen konnte ich feststellen, dass der Filter für Schiene A und B nicht funktioniert. Die B-Sätze rutschen durch. Sie haben das „Userfield_14“ nicht und statt dessen „Userfield_15“ mit dem Wert 1. Ein Quellsatz sieht im Ursprung so aus:
                          <MediaItem>
                          <AssetProperties>
                          <Filename>4002065_priorin_kapseln.psd</Filename>
                          <Filepath>file:///Volumes/ABTEILUNG/Werbung/avie neu/Produktwerbung/Produktbilder-Pool/4002065_priorin_kapseln.psd</Filepath>
                          <UniqueID>31</UniqueID>
                          <Label>0</Label>
                          <Rating>0</Rating>
                          <MediaType>PSD </MediaType>
                          <FileSize unit="Bytes">43209297</FileSize>
                          <Modified>2008:01:18 14:47:14</Modified>
                          <Added>2008:03:26 10:35:33</Added>
                          <Annotated>2008:09:24 11:57:17</Annotated>
                          </AssetProperties>
                          <AnnotationFields>
                          <Copyright> </Copyright>
                          </AnnotationFields>
                          <UserFields>
                          <UserField_1>4002065</UserField_1>
                          <UserField_3>Priorin</UserField_3>
                          <UserField_4>Versorgt die Haarwurzel mit Mikronährstoffen, zur diätetischen Behandlung von hormonell erblich bedingten Haarwachstumsstörungen und Haarausfall bei Frauen</UserField_4>
                          <UserField_6>120 Kapseln</UserField_6>
                          <UserField_7>43,25</UserField_7>
                          <UserField_8>34,99</UserField_8>
                          <UserField_10>03/08</UserField_10>
                          <UserField_11>11/08</UserField_11>
                          <UserField_12>8</UserField_12>
                          <UserField_13>0</UserField_13>
                          <UserField_15>1</UserField_15>
                          </UserFields>
                          </MediaItem>

                          Gibt es vielleicht eine Methode die Unterscheidung in den Werten von „Userfield_14“ zu machen?

                          Wenn ich deinen Änderungsvorschlag in Sachen text-Funktion mache, rutschen die B-Items auch durch. Das sieht so aus:
                          <!-- Bedingung Schiene A -->
                          <xsl:if test="(UserFields/UserField_14) > 0">


                          Ist es vielleicht besser diese Weiche wirklich in ein Feld mittels Werten einzubauen? Zum Beispiel „a“ und „b“!

                          Comment


                          • #14
                            Break on through to the other side

                            Got it!
                            Im Moment scheint es so, dass ich eine funktionstüchtige XSl-Datei erzeugen konnte, die alle Bedingungen erfüllt. Die möchte ich jetzt aber noch ein paar Härtetest unterziehen. Sobald es funktioniert füge ich sie hinzu.

                            Comment

                            Working...
                            X