juls_pro_37: XSLT-TRIM/SUBSTRING und Prüfung der Zeichenlänge

Hallo,

kann mir hier bitte jemand helfen?

Benötige für "BuyerAddressInformation.GLN" folgende Prüfung: Wenn "BuyerAddressInformation.GLN" kleiner 13 Zeichen, dann soll die 2. Stelle (wenn diese 0 ist) entfernt werden und weiters die Gesamtlänge darf dann nur 6 stellen sein.

Derzeit: 1069533000 Korrekt: 169533

Wenn 13 Stellen soll nichts passieren.

<?xml version="1.0"?>
<SALESORDER>
	<Interchange>
		<HeaderInformation>
			<BuyerAddressInformation>
				<GLN>1069533000</GLN>
		</HeaderInformation>
	</Interchange>
</SALESORDER>

Danke & LG Julian

akzeptierte Antworten

  1. Hätte diesen Weg versucht:

          <xsl:template match="BuyerAddressInformation/GLN">
                <xsl:copy>		
                    <xsl:value-of select="substring(.,1,1)" />
                    <xsl:value-of select="substring(.,3,5)" />     
    	        </xsl:copy>
          </xsl:template> 
    

    Jetzt fehlt mir aber nur noch die Prüfung, ob "BuyerAddressInformation/GLN" < 13 Zeichen und das 2. Zeichen unter "BuyerAddressInformation/GLN" eine "0" ist.

    1. Hallo Julian,

      Jetzt fehlt mir aber nur noch die Prüfung, ob "BuyerAddressInformation/GLN" < 13 Zeichen und das 2. Zeichen unter "BuyerAddressInformation/GLN" eine "0" ist.

      <xsl:template match="//BuyerAddressInformation/GLN">
        <xsl:if test="string-length(.) &lt; 13 and substring(.,2,1) = '0'">
          <xsl:copy>
            <xsl:value-of select="concat(substring(.,1,1), substring(.,3,5))"/>
          </xsl:copy>
        </xsl:if>
      </xsl:template>
      

      xsl:copy kann je nach sonstigem umgebenden Code auch entfallen.

      Grüße,
      Thomas

      1. Hi Thomas,

        danke für deine Hilfe. Kannst du mir bei folg. Fehler weiterhelfen: Open XSLT compile error. '<', hexadecimal value 0x3C, is an invalid attribute character

        Wie könnt ich das lösen bzw. evtl. umgehen?

        LG Julian

        1. Hallo,

          danke für deine Hilfe. Kannst du mir bei folg. Fehler weiterhelfen: Open XSLT compile error. '<', hexadecimal value 0x3C, is an invalid attribute character

          Wie könnt ich das lösen bzw. evtl. umgehen?

          Was sagt denn dein altes Ich dazu?

          Gruß
          Kalk

          1. Hi Kalk,

            danke, das war mir klar. Aber evtl. kann man etwas umschreiben um auf das selbe Ergebnis zu kommen.

            Hab leider noch keine Lösung gefunden warum > funktioniert aber < nicht...

            lg

        2. evtl. wenn >= 13 soll alles unverändert bleiben, andernfalls soll der Substring angewandt werden.

          Wie wäre hier der korrekte Aufbau?

          1. Hallo Julian,

            ThomasM> evtl. wenn >= 13 soll alles unverändert bleiben, andernfalls soll der Substring angewandt werden.

            Wie wäre hier der korrekte Aufbau?

            not(string-length(.) >= 13)

            Die zentrale Frage ist doch aber: Welcher XSLT-Prozessor kommt nicht mit dem XML-konformen &lt; klar?

            Grüße,
            Thomas

            1. danke!!!!!!

              Ja, das frage ich mich auch. Werde es prüfen lassen.

              danke danke danke

              LG Julian

        3. Hi,

          Open XSLT compile error. '<', hexadecimal value 0x3C, is an invalid attribute character

          Hast Du wirklich < im Code stehen statt &lt;?

          Wie könnt ich das lösen bzw. evtl. umgehen?

          x < 13 ist dasselbe wie 13 > x

          cu,
          Andreas a/k/a MudGuard

          1. nope, hatte zur Sicherheit beides probiert.

            Lösung: not(string-length(.) >= 13)