Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

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 -

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

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

Guten morgen.....ein exklusiv oder gibts nicht im Xpath.....sonst wäre das Problem schon gelöst :)

Ok.


[( (@locale="'.$sprache.'" and not(@locale)) or  (not(@locale="'.$sprache.'") and @locale) )]

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

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"

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.

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.