juls_pro_37: XSLT 1.0 "_*" entfernen

Hi,

wie entferne ich unter "Recipient" alle Werte nach und inkl. "_"?

XML

<Interchange>
    <Recipient>123456_1245</Recipient>
    <Sender>234324324</Sender>
    <CreationDate>2020-07-21:07:31:20</CreationDate>
    <Test>No</Test>    
</Interchange>

Korrekt:

<Interchange>
    <Recipient>123456</Recipient>
    <Sender>234324324</Sender>
    <CreationDate>2020-07-21:07:31:20</CreationDate>
    <Test>No</Test>    
</Interchange>

LG Julian

akzeptierte Antworten

  1. Hi,

    wie entferne ich unter "Recipient" alle Werte nach und inkl. "_"?

    substring-before?

    cu,
    Andreas a/k/a MudGuard

    1. Hi,

      hätte es hiermit versucht, funktioniert aber nur wenn das Feld "Recipient" wirklich ein _ enthält. Es besteht aber auch die Möglichkeit, dass der "Recipient" den Wert "_" gar nicht enthält.-> Dann soll der "Recipient" beibehalten werden.

      Ist das korrekt????

         <xsl:template match="Interchange/Recipient[substring-before(//Recipient,'_')]">
              <Recipient><xsl:value-of select="substring-before(//Recipient,'_')" /></Recipient>
          </xsl:template>
      
      1. Hallo Julian,

        hätte es hiermit versucht, funktioniert aber nur wenn das Feld "Recipient" wirklich ein _ enthält. Es besteht aber auch die Möglichkeit, dass der "Recipient" den Wert "_" gar nicht enthält.-> Dann soll der "Recipient" beibehalten werden.

        Probiere es mit contains-Abfrage im Prädikat:

        <xsl:template match="Interchange/Recipient[contains(., '_')]">
          <Recipient><xsl:value-of select="substring-before(., '_')"/></Recipient>
        </xsl:template>
        

        Grüße,
        Thomas

        1. danke Thomas, für deine Hilfe.

          Hatte es Anfangs mit Contains erfolglos versucht. Habe aber meinen Denkfehler gefunden. Vielen Dank nochmals.

          LG Julian

          1. Hallo juls_pro_37,

            Habe aber meinen Denkfehler gefunden.

            Welches war denn dein Denkfehler? Vielleicht hilft er anderen, nicht denselben Fehler zu begehen.

            Bis demnächst
            Matthias

            --
            Du kannst das Projekt SELFHTML unterstützen,
            indem du bei Amazon-Einkäufen Amazon smile (Was ist das?) nutzt.
            1. Hi Matthias,

              hatte das contains falsch angedacht:

              <xsl:template match="Interchange/Recipient[., contains '_']">
              

              LG Julian