Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

XML - różne wersje językowe

Ostatnio zmodyfikowano 2017-09-09 14:26
Autor Wiadomość
PL_Andrev
Temat założony przez niniejszego użytkownika
XML - różne wersje językowe
» 2017-09-08 17:14:19
Witam,

W wyniku procedury "collision" uzyskuję wyłącznie dwie dane końcowe np. x1 = 20 oraz x2 = 30.
Procedura prezentująca wynik:
1) wywołuje odpowiedni plik XML w oparciu o wybraną wersję językową,
2) wczytuje pętlą wszystkie elementy <collision>,
3) sprawdza czy element to tekst = x1 albo x2,
4) dla tekstów = x1 i x2 podmienia je na wyliczone wcześniej wartości,
5) wyświetlana następnie cały tekst jako komunikat w grze.
C/C++
< collision >
< Stracono >
< x1 >
< kT uranu oraz >
< x2 >
< kT plutonu.>
</ collision >
Stracono 20 kT uranu oraz 30 kT plutonu.

W angielskiej wersji zapis gramatyczny byłby inny:
C/C++
< collision >
< x1 >
< kT uranuium and >
< x2 >
< kT plutonium were lost.>
</ collision >
20 kT uranium and 30 kT plutonium were lost.

Sposób powyższy wydaje się być mało elegancki, wprowadzając za każdym razem instrukcję warunkową sprawdzającą tekst każdego elementu czy pasuje do zmiennej.
Pytanie: czy istnieje łatwiejszy sposób na zaprojektowanie XMLa aby wykluczyć punkty 3-4 z instrukcji powyżej?
Problem jest taki, że jak pokazałem na przykładzie wyżej lokalizacja x1 i x2 może ulegać zmianie w zależności od wersji językowej.
P-164730
jankowalski25
» 2017-09-08 22:29:28
instrukcję warunkową sprawdzającą tekst każdego elementu czy pasuje do zmiennej
Dlaczego? Nie próbuj parametryzować wszystkiego - tylko same dane powinny występować jako parametry. Jeśli masz dwie wartości do wstawienia, to tylko to należy podmieniać. Cała reszta powinna zostać bez zmian. Chyba że w danym języku zmienia się jakiś tekst w zależności od wartości, na przykład "1 bajt", "2 bajty", "5 bajtów". Podmieniaj tylko to, co w obrębie jednego języka dla różnych danych rzeczywiście się zmienia.

czy istnieje łatwiejszy sposób na zaprojektowanie XMLa aby wykluczyć punkty 3-4 z instrukcji powyżej?
Przecież pierwsze dwa punkty sprowadzają się do załadowania gotowego tekstu z odpowiedniego pliku! To oznacza, że musiałbyś mieć przygotowane pliki z gotowymi tekstami dla wszystkich możliwych przypadków. Oczywiście - wtedy złożoność może być nawet stała, ale weź pod uwagę koszt wygenerowania tylu plików.

Problem jest taki, że jak pokazałem na przykładzie wyżej lokalizacja x1 i x2 może ulegać zmianie w zależności od wersji językowej.
Nie próbuj tworzyć uniwersalnego przypadku działającego dla wszystkich języków jednocześnie - czasami nawet może zajść potrzeba zmiany kolejności danych (czyli x2 może wystąpić przed x1), a same pozycje niemal zawsze będą różne, bo to wynika ze składni danego języka.
P-164735
PL_Andrev
Temat założony przez niniejszego użytkownika
» 2017-09-09 11:31:07
Czyli mam rozumieć że metoda podana powyżej dla dwóch różnych języków zawierająca różnice właśnie wynikająca ze składni jest prawidłowa (punkt 3-4) ?
Ta procedura będzie działa niezależnie od stylistyki języka (przykład powyżej):

Wczytaj fragment tekstu -> sprawdź czy opisuje poszukiwaną zmienną -> podmień wartość na zmienną -> wygeneruj tekst końcowy
P-164740
jankowalski25
» 2017-09-09 14:26:04
Jeśli wstawki typu
< Stracono >
 nie będą parametrami, to tak.
P-164742
« 1 »
  Strona 1 z 1