Konwerter HTML na XML
Wklej niechlujny HTML. Dostaniesz dobrze sformułowany XML.
Co robi to narzędzie
Jeśli kiedykolwiek musiałeś wepchnąć skopiowany kawałek HTML do potoku XSLT albo do rygorystycznego parsera XML, znasz ten ból. Przeglądarki są słynnie pobłażliwe — parser HTML ze specyfikacji WHATWG po cichu zamyka twoje tagi <li>, akceptuje atrybuty bez cudzysłowów i wzrusza ramionami na brakujące </p>. Parser XML tak nie robi. Daj mu ten sam znacznik, a dostaniesz błąd parsowania w linii 3. To narzędzie bierze HTML z prawdziwego świata — ten, który naprawdę wklejasz z CMS-a albo ze starego szablonu — i zamienia go w XML, który parser zgodny ze standardem przyjmie za pierwszym razem.
To coś więcej niż zamykanie tagów. Konwerter ogarnia cały zestaw rzeczy, które czynią HTML luźnym, a XML rygorystycznym: elementy puste jak <br>, <img> i <hr> zostają samozamykające jako <br/>; atrybuty boolowskie jak checked i disabled są rozwijane do checked="checked"; wartości atrybutów bez cudzysłowów są otaczane cudzysłowami podwójnymi; nazwy tagów są sprowadzane do małych liter dla spójności; a garstka nazwanych encji HTML, których XML nie zna ( , —, £, × itd.) zostaje przekonwertowana na encje liczbowe w stylu  , które rozumie każdy parser XML.
Komentarze przechodzą nietknięte. Sekcje CDATA wewnątrz <script> i <style> są zachowywane. Wynik jest ładnie sformatowany, żebyś mógł go faktycznie przeczytać, przechodzi walidację W3C jako dokument XML albo wpasowuje się prosto w przepływ XHTML 1.0. Jeśli naprawdę chcesz XHTML Strict, jesteś już w 95 % u celu — doctype i przestrzeń nazw na górze dopiszesz sam.
Jak tego używać
Trzy kroki. Działa tak samo, czy wklejasz jeden akapit, czy cały szablon strony.
Wklej swój HTML (lub wypróbuj przykład)
Wrzuć HTML do lewego edytora tak, jak jest. Niezamknięte tagi, gołe atrybuty boolowskie, wartości bez cudzysłowów, elementy puste bez samozamknięcia — wszystko gra. Kliknij Wczytaj przykład, jeśli wolisz najpierw zobaczyć realistyczny, bałaganiarski przypadek.
Nie musisz nic poprawiać ręcznie. O to właśnie chodzi w tym narzędziu — robi sprzątanie za ciebie. Wklej dokładnie to, co wyszło z twojego CMS-a, dokumentu Worda albo starego szablonu.
Naciśnij Konwertuj
Kliknij zielony przycisk Konwertuj. Narzędzie parsuje twój HTML tolerancyjnym parserem, a potem serializuje go ponownie przez writer XML, tak aby każdy tag był zamknięty, każdy atrybut w cudzysłowach, a każda encja była poprawnym XML-em.
Skopiuj XML
Prawy panel zapełnia się wciętym, dobrze sformułowanym XML-em. Skopiuj go do wejścia XSLT, do fixture'a testu DOM, do builda EPUB-a albo gdziekolwiek tam potrzebujesz znaczników, na których rygorystyczny parser się nie wywróci.
Kiedy to naprawdę się przydaje
Wpychanie HTML-a do XSLT lub do potoku XML
Masz arkusz XSLT, który zamienia treść w PDF, feed albo inny format — ale wejściem jest HTML z CMS-a, nie XML. Najpierw konwertuj, potem transformuj.
Walidacja XHTML-strict
Stary intranet, który wciąż domaga się XHTML 1.0 Strict? Wklej niechlujny HTML z twojego edytora, skopiuj XML, dołóż doctype na górze — gotowe.
Konwersja znaczników bloga na EPUB / czytniki
EPUB pod spodem to XHTML i od ręki odrzuca brakujące <code></p></code>. Wyczyść rozdział bloga HTML-owego w jednym wklejeniu, zanim go spakujesz.
Porządki dla systemów archiwizacji
Wrzucasz stary HTML do archiwum opartego na XML (DSpace, Fedora Commons, cokolwiek w smaku JATS)? Rygorystyczne schematy mają gdzieś to, że przeglądarka ładnie go wyrenderowała — najpierw przekonwertuj.
Najczęstsze pytania
Co tak naprawdę czyni HTML "luźnym", a XML "rygorystycznym"?
Trzy duże rzeczy. Po pierwsze, HTML ma elementy puste (<br>, <img>, <input>, <hr>, <meta>, <link>), które nie powinny mieć tagu zamykającego — XML wymaga albo <br></br>, albo <br/>. Po drugie, HTML pozwala kompletnie pomijać tagi zamykające przy <li> czy <p>, bo algorytm parsowania sam je dopowiada. Po trzecie, HTML akceptuje atrybuty bez cudzysłowów (class=foo) i atrybuty bez wartości (disabled). XML odrzuca wszystkie trzy rzeczy.
Co się dzieje z atrybutami boolowskimi jak `checked` i `disabled`?
Zostają rozwinięte do postaci XHTML-owej. <input type=checkbox checked disabled> staje się <input type="checkbox" checked="checked" disabled="disabled"/>. Każdy atrybut kończy się z nazwą ORAZ wartością w cudzysłowach, czego wymaga XML — w XML nie istnieje coś takiego jak atrybut bez wartości.
Jak obsługiwane są encje HTML jak ` ` i `—`?
XML z pudełka zna tylko pięć nazwanych encji: &, <, >, ", '. Cała reszta — , —, £, © — jest konwertowana do postaci liczbowej ( , —, £, ©), żeby każdy parser XML przyjął je bez DTD.
Czy komentarze przeżywają przejście w obie strony?
Tak. <!-- do przeglądu --> wchodzi, to samo wychodzi. Komentarze są poprawne i w HTML, i w XML z tą samą składnią, więc przechodzą nietknięte — przydatne, jeśli używasz ich do notatek redakcyjnych albo znaczników buildów.
Czy zmienia nazwy tagów i atrybutów na małe litery?
Tak, domyślnie. <DIV Class="Foo"> staje się <div class="Foo">. Nazwy tagów i atrybutów są sprowadzane do małych liter, żeby pasowały do konwencji XHTML 1.0. WARTOŚCI atrybutów zostawiamy w spokoju — tego, co wpisałeś między cudzysłowami, nie ruszamy, bo to twoje dane.
Kiedy to nie wystarczy — których przypadków narzędzie NIE obsługuje?
Dowolna zawartość <script> jest zachowywana jako tekst, ale narzędzie nie próbuje przepisywać JavaScriptu tak, by był bezpieczny dla XML. Jeśli twój JS używa gołych znaków < lub &, musisz sam owinąć go w <![CDATA[...]]> (istniejące CDATA zachowujemy). Fragmenty dokumentu są OK; nie dokładamy deklaracji <?xml ?> ani doctype'u — dopisz je sam, jeśli twój konsument tego oczekuje.
Inne narzędzia, które mogą się przydać
HTML na XML to jeden element układanki. Te narzędzia dobrze z nim współpracują: