XSLT-TRIM/SUBSTRING und Prüfung der Zeichenlänge
juls_pro_37
- xml
- xsl
0 juls_pro_370 ThomasM0 juls_pro_370 Tabellenkalk0 juls_pro_370 ThomasM
0 MudGuard
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
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.
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(.) < 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
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
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
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
evtl. wenn >= 13 soll alles unverändert bleiben, andernfalls soll der Substring angewandt werden.
Wie wäre hier der korrekte Aufbau?
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 < klar?
Grüße,
Thomas
danke!!!!!!
Ja, das frage ich mich auch. Werde es prüfen lassen.
danke danke danke
LG Julian
Hi,
Open XSLT compile error. '<', hexadecimal value 0x3C, is an invalid attribute character
Hast Du wirklich <
im Code stehen statt <
?
Wie könnt ich das lösen bzw. evtl. umgehen?
x < 13
ist dasselbe wie 13 > x
cu,
Andreas a/k/a MudGuard
nope, hatte zur Sicherheit beides probiert.
Lösung: not(string-length(.) >= 13)