/ / Narzędzie (filtr) do konwersji HTML5 na znacznik Polyglot? - xml, html5, polyglot-markup

Narzędzie (filtr) do konwersji HTML5 na znacznik Polyglot? - xml, html5, polyglot-markup

Kontekst: mój Dokumenty HTML5 nie potrzebuje JavaScript, animacji, formularzy ... Są "tylko treścią". Tak więc można go filtrować na temat tego rodzaju reprezentacji, tylko trzeba niektóre podzbiory / ograniczenia "pełnej reprezentacji HTML5". Dobrym sposobem na wyrażenie tej sytuacji (i innych szerszych!) Jest powiedzenie "moje dokumenty można wyrazić za pomocą Oznaczenie wielogłosowe ograniczenia ".

Pytanie: Czy istnieje narzędzie, które przekształca (lub filtruje utratę fałszywych informacji) w "dowolny HTML5" w Polyglot XHTML5?
Najlepiej narzędzie oparte na rozszerzeniach dla DOM (lub XSLT lub XQuery).

Odpowiedzi:

2 dla odpowiedzi № 1

Nie będę miał kompletnego rozwiązania. W mojej głowie są dwa, a nawet trzy etapy takiej konwersji:

Etap 1: dobrze uformuj HTML5

W tej pierwszej fazie istnieje czarna sztuka, w której należy uwzględnić brak dobrze zorganizowanych wymagań HTML 5.

Potrzebujesz tego zanim będziesz miał DOM, zanim będziesz miał szansę na uzyskanie narzędzi, które oczekują czegoś, co zdalnie będzie wyglądało jak xml do działania.

Kto więc zaimplementował taką konwersję: (prawie?) każda przeglądarka. Dość sporo ma kod źródłowy. Możesz uzyskać te informacje z działającej przeglądarki: sprawdź kod źródłowy i zobacz, co robi z zupą tagów jako danych wejściowych, a zamiast tego otrzymujesz dobrze uporządkowany kod źródłowy.

Innym miejscem do znalezienia takiego kodu źródłowego są redaktorzy, którzy pozwalają na edycję xhtml na stronie internetowej (FCKeditor i tym podobne)

na przykład <p>para<ul><li>bullet</ul><p>para zostaje zmieniony na <p>para</p><ul><li>bullet</li></ul><p>para</p>

Etap 2: odfiltrować to, co nie jest dozwolone w Polyglot

Gdy znaczniki html są dobrze skonstruowane, przychodzinastępny krok, w którym musisz usunąć to, co nie jest dozwolone w znacznikach poliglot, ponieważ istnieją różnice w sposobie ich interpretacji między analizatorem html a analizatorem składni XML.

Ci, którym możesz mieć szansę z XSLT, ibudowanie filtra, ale nie można go sprawdzić, ponieważ nie ma DTD ani nic podobnego do sprawdzania poprawności poliglota (x) html. Nawet te kilka walidatorów dla xhtml5, które istniały, zostało (zostało) złomowanych, więc sprawi, że twoja misja będzie trudna.

W każdym razie, próba zlokalizowania źródła jednego z tych walidatorów, który istniał, jest najlepszą opcją znalezienia kodu źródłowego, który jest blisko tego.

Etap 3: napraw zewnętrzne podmioty

Powiedz co? Cóż, możesz mieć piękny polyglot (x) html i zawierać pojedynczy javascript, który robi pojedynczy document.write i to wszystko nadal kończy się niepowodzeniem. Więc będziesz musiał zapolować na to wszystko, zanim zadziała.


0 dla odpowiedzi nr 2

Nie znam takiego narzędzia, ale opartego na regularnychwyrażenia Myślę, że powinno być możliwe napisanie własnego konwertera za pomocą preferowanego języka programowania. Podam przykład użycia regexu w języku Java, ale powinien on być również możliwy do przeniesienia do PHP. Możesz go przetestować regexplanet.com

Dany: dowolny samozamykający się znacznik html, np. <textarea class="placeholder"/>

Cel: tag zostanie przekonwertowany na <textarea class="placeholder"></textarea>

Można to osiągnąć za pomocą Java wyrażenie regularne lubić <s*([^s>]+)([^>]*)/s*> na ciąg zastępujący lubić <$1$2></$1>. Wyrażenie znajduje pierwsze słowo textarea w tagu przypisuje go do grupy wzorów nr. 1 i wszystkie atrybuty w tagu do grupy wzorów nr. 2. Pozwala to na przyłączenie się do grupy nr. 1 i 2 w tagu otwarcia i ponowne użycie grupy nr. 1 ponownie w tagu zamykającym.

Mam nadzieję że to pomoże.