Konwersja formatu w obie strony

Termin obie strony jest używany w konwersji dokumentów , szczególnie w przypadku języków znaczników, takich jak XML i SGML . Pomyślne działanie w obie strony polega na konwersji dokumentu w formacie A (docA) na dokument w formacie B (docB), a następnie z powrotem do formatu A (docA′). Jeśli docA i docA′ są identyczne, nie doszło do utraty informacji i podróż w obie strony zakończyła się sukcesem. Mówiąc bardziej ogólnie, oznacza to konwersję z dowolnej reprezentacji danych i z powrotem, w tym z jednej struktury danych na inną.

Utrata informacji

Kiedy dokument w jednym formacie jest konwertowany na inny, istnieje prawdopodobieństwo utraty informacji. Załóżmy na przykład, że HTML jest zapisany jako zwykły tekst (*.txt). Następnie wszystkie znaczniki (struktura, formatowanie, indeksy górne itp.) zostaną utracone. Dokumenty złożone często tracą informacje o obrazach i innych osadzonych obiektach. Jeśli plik tekstowy zostanie przekonwertowany z powrotem do oryginalnego formatu, z pewnością będzie brakować informacji.

Podobny efekt występuje w przypadku formatów obrazów. Niektóre formaty, takie jak JPEG, osiągają kompresję poprzez niewielką utratę informacji. Jeśli plik bezstratny , taki jak plik BMP lub PNG , zostanie przekonwertowany do formatu JPEG i z powrotem, wynik będzie inny niż oryginał (chociaż może być bardzo podobny wizualnie).

To, że dokumenty początkowe i końcowe nie są identyczne pod względem bitowym, nie oznacza, że ​​następuje utrata informacji. Niektóre formaty mają niezdefiniowane pola lub pola, których zawartość nie ma wpływu na wynik.

Języki znaczników

Języki znaczników, takie jak XML, mogą w zasadzie przechowywać dowolne informacje, dlatego proces docA → docX → docA' można zaprojektować tak, aby uniknąć utraty informacji. Obecnie powszechne jest konwertowanie starszych formatów na formaty XML, ponieważ zapewniają one większą interoperacyjność i szerszy zestaw dostępnych narzędzi. Dzięki temu możliwa jest konwersja dokumentów Worda do formatu XML i ich ponowny import.

Dokument XML powinien zawierać identyczne informacje, jak w dotychczasowym formacie. Ważnym warunkiem jest to, że w obie strony (starsze → XML → starsze) powinny skutkować faktycznie identycznymi dokumentami. Ponieważ niektóre struktury dokumentów pozwalają na pewną elastyczność w zakresie kolejności treści, białych znaków, uwzględniania wielkości liter itp., przydatne jest posiadanie sposobu kanonizacji starszego formatu. Pełna podróż w obie strony może wówczas wyglądać następująco:

dziedzictwo → canonicalLegacy → XML → dziedzictwo′ → canonicalLegacy′

Jeśli canonicalLegacy = canonicalLegacy′, oznacza to, że podróż w obie strony zakończyła się sukcesem.

Kodowanie znaków

Unicode jest pełna kompatybilność ze starszymi, standardowymi kodowaniami, więc konwersja dokumentów na Unicode nie powoduje utraty informacji; można je ponownie przekształcić. Aby to osiągnąć, wprowadzono znaki zgodne z Unicode .

Ograniczenie

Aplikacja może zawierać informację o podróży w obie strony i być nieuczciwa. Na przykład może zapisać oryginalne dane z dokumentu docA jako pole w dokumencie docX, więc odwrotna transformacja do dokumentu docA′ po prostu wyodrębni to pole. Chociaż może to być potrzebne w niektórych przypadkach, ideą konwersji w obie strony jest przejście przez reprezentację innego formatu lub strukturę danych i z powrotem. Taka strategia powoduje, że niewielkie zmiany w dokumencie powodują, że nie da się go przekonwertować z powrotem do formatu pierwotnego.

Stosowanie

Termin ten wydaje się być powszechny, ale nie występuje w słownikach. Typowe użycie występuje w [1] , ale termin ten prawdopodobnie był używany wcześniej.

Zobacz też