Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

Hallo Jungs,

meint ihr, dass mir jemand bei folgendem Problem helfen kann?

Ich hoffe das Thema ist hier richtig...

Ich muss momentan X-Path Ausdrücke erstellen, da diese für ein größeres Projekt in Typo3 eingebaut werden.


<?xml version="1.0" encoding="UTF-8" ?> 

[INDENT]<cmiData>

[INDENT]  <tag key="BohlenaußenmaßB">

[INDENT]  <string locale="es">Bohlen anchura exterior</string> 

  <string>Bohlenaußenmaß Breite</string> 

  <string locale="en">Bohlen Outer width</string> 

  <string locale="fr">Bohlen Largeur hors tout</string> [/INDENT]


  </tag>[/INDENT]

</cmiData>[/INDENT]

Wie man sieht geht es hier um mehrsprachigkeit und das System aus dem dieses XML stammt, ist für mich nicht antastbar.

Zu erkennen ist, dass der <string> ohne "locale" der Deutsche Wert ist.

Und ob mans glaubt oder nicht, ich schaffe es nicht in einem X-Path auszudrücken, dass ich die gewünschte Sprache angezeigt bekomme, und einem Wert, der nicht da drin vorkommt, z.B. "de" oder "au" immer den deutschen Wert (also Std-Wert) bekomme.

Momentan mache ich folgendes:

$xml->xpath('/cmiData/tag[@key="BohlenaußenmaßB"]/string [ @locale="'.$sprache.'" or not(@locale)  ] ')

Das funktioniert soweit - ausser dass ich den deutschen Wert IMMER mit angezeigt bekomme. :upps

Das ganze könnte man selbstverständlich über PHP regeln, aber das ganze soll von TypoScript geparsed und ausgeführt werden. Damit habe ich nur eine Wahl, ich muss das mit einem X-Path Ausdruck schaffen.

Danke fürs Lesen -

Geschrieben

Das funktioniert soweit - ausser dass ich den deutschen Wert IMMER mit angezeigt bekomme. :upps

Das wird wohl an Deiner Bedingung liegen. Überlege Dir einmal was das "or" bedeutet. Das logische oder wird wahr, wenn einer der Eingänge wahr ist oder wenn beide wahr sind.

Da Du hast: local = X or not(local). Der Ausdruck wird nun für jeden Eintrag ausgewertet. Bsp: Du willst "fr". Beim den Einträgen hast Du dann

1. local = false or false => false

2. local = false or true => true

3. local = false or false => false

4. local = true or false => true

Überlege Dir was Du wirklich für ein "oder" willst

Geschrieben

waren mein Versuch ein XOR nachzustellen....klappt leider nicht.

Natürlich, denn für Deine Einträge wird das XOR auch komplett ausgeführt:

1. local = false xor false => false

2. local = false xor true => true

3. local = false xor false => false

4. local = true xor false => true

Damit ist das Problem analog zu "or"

Was Du willst ist ein switch-case-break-default, d.h. wenn genau ein Eintrag zutrifft, dann soll er genau diesen einen nehmen, wenn keiner zutrifft, dann den "default"

Geschrieben

Was Du willst ist ein switch-case-break-default, d.h. wenn genau ein Eintrag zutrifft, dann soll er genau diesen einen nehmen, wenn keiner zutrifft, dann den "default"

Jepp. Und jetzt gebe ich mich geschlagen.

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...