SAXException: [word/document.xml line 2]

Użytkowanie edytora dokumentów
Bar_Leo
Posty: 2
Rejestracja: śr sty 10, 2024 10:49 am

SAXException: [word/document.xml line 2]

Post autor: Bar_Leo »

hej, jak naprawić plik docx? dostałam go z zewnatrz, wszystko działało, po edycji i nadpisaniu pliku, nie moge go otworzyć (tzn. mogę, ale tracę połowę tekstu). Tak wygląda komunikat:

Wystąpił błąd podczas otwierania pliku. Może to być spowodowane nieprawidłową zawartością pliku.
Szczegóły błędu:
SAXException: [word/document.xml line 2]: Opening and ending tag mismatch: del line 2 and sdtContent
LibreOffice 6.3.1.2, Windows 10
Jan_J
Posty: 4560
Rejestracja: pt maja 22, 2009 1:20 pm
Lokalizacja: Wrocław

Re: SAXException: [word/document.xml line 2]

Post autor: Jan_J »

SAX to czytnik tekstu XML; dokument docx w środku składa się z pewnej liczby takich tekstów.
Najprawdopodobniej nic nie zginęło, tylko nie daje się wczytać do edytora wskutek błędu znaczników. Winny może być program, który ostatnio zapisywał dokument, albo uszkodzony nośnik danych. Raczej to pierwsze.
Trzeba rozpakować z pliku docx plik word\document.xml, zidentyfikować i poprawić w nim błąd, i spakować docx-a z powrotem. Plik docx jest w istocie zip-em, więc do wypakowania i spakowania nadaje się dowolny archiwizer.
Samą korektę da się zrobić samodzielnie godnym zaufania edytorem (polecam Notepad++). Mogę Ci pomóc, ale będzie to wymagać podesłania kopii dokumentu — a nie jest jasne że możesz albo chcesz to zrobić.
Cokolwiek zrobisz, zachowaj wzorcową kopię swojego dokumentu, która nie będzie modyfikowana. Żeby było do czego wrócić w przypadku niepowodzenia.
JJ
LO (7.6|24.2) ∙ Python (3.12|3.10) ∙ Unicode 15 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
Bar_Leo
Posty: 2
Rejestracja: śr sty 10, 2024 10:49 am

Re: SAXException: [word/document.xml line 2]

Post autor: Bar_Leo »

dzięki za szybką odpowiedź, będę wdzięczna za pomoc. próbowałam wysłać plik w prywatnej wiadomości, niestety chyba nie mam uprawnień, bo skrzynka "wysłane" jest pusta. czy są inne sposoby przekazania pliku?
LibreOffice 6.3.1.2, Windows 10
Jan_J
Posty: 4560
Rejestracja: pt maja 22, 2009 1:20 pm
Lokalizacja: Wrocław

Re: SAXException: [word/document.xml line 2]

Post autor: Jan_J »

Dla wyjaśnienia:
operacja oznaczania zmian została źle otagowana w pliku XML wchodzącym w skład dokumentu docx. Znaczniki zamykające usuwane bloki zostały w nim umiejscowione o 2 znaczniki za daleko, co naruszyło logikę zagnieżdżeń wymaganą w XML.
Jest to ewidentny błąd oprogramowania, które wygenerowało dokument (w metryczce stoi LibreOffice 7.6.4).
Korekta polegała na przeniesieniu znaczników zamykających w miejsce, w którym byłyby umieszczone poprawnie. Nie jest to jedyne rozwiązanie, tak samo można by przemieścić znacznik początkowy — co będzie skutkować różnicą w zakresie tekstu oznaczonego jako usunięty.
Niestety, technologia XSLT, będąca standardem transformacji dokumentów XML-owych, nie chroni przed powstawaniem dokumentów wadliwie zbudowanych (invalid), czyli niezgodnych z ogólnymi regułami gramatycznymi XML.

Tu: https://ask.libreoffice.org/t/need-help ... el/90065/4
jeden z programistów LibreOffice (Mike Kaganski) dyskutuje o tym błędzie, potwierdzając że występował on we Writerze 7.3.

Więcej o zgłoszonym błędzie
https://bugs.documentfoundation.org/sho ... ?id=149996
w wersji LO 7.6.0 ma już status VERIFIED FIXED.
JJ
LO (7.6|24.2) ∙ Python (3.12|3.10) ∙ Unicode 15 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
ODPOWIEDZ