winerfresh napisał(a)
A czemuż to nie możesz użyć nic innego?
Bo nikt nie przygotuje dużej ilości treści w inny sposób.
bswierczynski napisał(a)
HTML Tidy potrafił w pewien sposób oczyścić kod wygenerowany przez Office'a, gdy odpaliło się go z opcją 'clean'. Czy jednak usuwało to wszystkie style inline i na ile było konfigurowalne... nie wiem, na szczęście od (bardzo) dawna nie musiałem tego używać.
Dokładnie i to odpada. Muszę zostawić część.
bswierczynski napisał(a)
Co to znaczy, że chcesz usunąć część stylów (tych dodawanych przez Worda), a "część jest potrzebna"? Zauważ, że w drugim przykładzie, po oczyszczeniu, nie masz ŻADNYCH stylów. Klasa to nie jest styl, tylko co najwyżej punkt zaczepiani dla stylów (a nawet niekoniecznie).
Tekst w Wordzie jest w określony sposób formatowany. Zapisując dokument jako filtrowany plik HTML zachowuję to dodatkowe formatowanie (które jest mi potrzebne). To formatowanie to właśnie wybrane klasy. Dodatkowo dostaję jeszcze tony zbędnych CSS, których nie potrzebuję. Te CSS-y to definicje stylów w nagłówku oraz wywołania w postaci klas i identyfikatorów.
Faktycznie mój przykład nie był zbyt szczęśliwy. Chodzi o to, że dostaję duży (kilkusetstronicowy) dokument w formacie Worda. Tekst jest formatowany za pomocą specjalnych stylów stworzonych w Wordzie. Te style chcę zachować (jest ich kilka/kilkanaście). Przy zapisie do pliku HTML w prezencie od Worda dostaję jeszcze dziesiątki stylów oraz klas i identyfikatorów. Podsumowując mam:
- kilka/kilkanaście potrzebnych stylów,
- kilkadziesiąt/kilkaset dodatkowych stylów,
W obu przypadkach kod wygląda tak, że:
- w HEAD mam definicje wszystkich stylów,
- w tekście mam klasy i identyfikatory,
Muszę go przerobić na HTML zachowując wybrane klasy i identyfikatory. Resztę muszę usunąć z tekstu. Jak się domyślacie przy kilkuset stronach tekstu te dodatkowe klasy i identyfikatory dopisane np. do każdego akapitu obciążają dokument.
bswierczynski napisał(a)
Zbudowanie listy dopuszczalnych stylów i filtrowanie tylko niektórych deklaracji byłoby troszkę bardziej skomplikowane. Możesz jednak zrobić to wszystko dość łatwo zwykłymi regexpami, na pałę :), jeśli założysz np., że wszystko co jest w atrybucie "style" jest be. Takie atrybuty można raczej łatwo usunąć. Musisz tylko zadbać o to, by Twoje style -- te, które chcesz zachować -- były definiowanie na poziomie zewnętrznego arkusza stylów. Czyli tak, jak masz w tym drugim przykładzie kodu: w HTML-u masz tylko klasę wyroznienie, a w arkuszu CSS piszesz regułę span.wyroznieine {...}.
Nie bardzo bo jeżeli mam do odfiltrowania klasy to już nie mogę każdej klasy traktować tak samo. Jednym wyjściem jest analiza kodu i wyłapywanie wszystkich zbędnych klas a następnie usuwanie w sposób podany przez Ciebie. To trochę meczące mając na uwadze, że dokumentów jest więcej i te bonusy od Worda nie zawsze są takie same.