HTML til XML-konverterer
Lim inn løs HTML. Få velformet XML tilbake.
Hva dette verktøyet gjør
Har du noen gang måttet dytte en kopiert HTML-snutt inn i en XSLT-pipeline eller en streng XML-parser, kjenner du smerten. Nettlesere er beryktet overbærende — HTML-parseren i WHATWG-spesifikasjonen lukker <li>-taggene dine stille, godtar attributter uten anførselstegn og trekker på skuldrene over en manglende </p>. En XML-parser gjør ikke det. Gi den samme markup, og du får en parsefeil på linje 3. Dette verktøyet tar virkelighetens HTML — den typen du faktisk limer inn fra et CMS eller en gammel mal — og gjør det om til XML som en standardkonform parser aksepterer på første forsøk.
Det handler om mer enn å lukke tagger. Konvertereren tar seg av hele settet av ting som gjør HTML løs og XML streng: tomme elementer som <br>, <img> og <hr> blir selvlukkende som <br/>; boolske attributter som checked og disabled utvides til checked="checked"; attributverdier uten anførselstegn pakkes inn i doble anførselstegn; tag-navn settes med små bokstaver for konsistens; og den håndfulen navngitte HTML-entiteter som XML ikke kjenner ( , —, £, × og så videre) konverteres til numeriske entiteter som  , som enhver XML-parser forstår.
Kommentarer går gjennom uberørt. CDATA-seksjoner inne i <script> og <style> bevares. Utdataen er pent innrykket slik at du faktisk kan lese den, og den består W3C-validering som XML-dokument eller glir rett inn i en XHTML 1.0-arbeidsflyt. Hvis det du egentlig vil ha er XHTML Strict, er du 95 % i mål — doctype og namespace øverst legger du til selv.
Slik bruker du det
Tre steg. Funker likt enten du limer inn ett avsnitt eller en hel sidemal.
Lim inn HTML-en din (eller prøv eksempelet)
Slipp HTML-en din i venstre editor som den er. Ulukkede tagger, bare boolske attributter, verdier uten anførselstegn, tomme elementer uten selvlukking — helt greit. Klikk på Last inn eksempel hvis du vil se et realistisk, rotete eksempel først.
Du trenger ikke fikse noe for hånd. Hele poenget med verktøyet er at det rydder opp for deg. Lim det inn akkurat slik det kom ut av CMS-et, Word-dokumentet eller den gamle malen.
Trykk Konverter
Klikk på den grønne knappen Konverter. Verktøyet parser HTML-en din med en tolerant parser og re-serialiserer den så via en XML-writer slik at hver tag er lukket, hvert attributt er i anførselstegn, og hver entitet er lovlig XML.
Kopier XML-en
Høyre panel fylles med innrykket, velformet XML. Kopier den til XSLT-inputet ditt, DOM-testfiksturet, EPUB-byggingen eller hvor enn du trenger markup som en streng parser ikke setter i halsen.
Når det faktisk kommer til nytte
Mate HTML inn i XSLT eller en XML-pipeline
Du har et XSLT-stilark som gjør innhold om til en PDF, en feed eller et annet format — men inputen er HTML fra et CMS, ikke XML. Konverter først, transformer etterpå.
XHTML-strict-validering
Gammelt intranett som fortsatt krever XHTML 1.0 Strict? Lim inn den sjuskete HTML-en editoren din produserte, kopier ut XML-en, legg en doctype på toppen — ferdig.
Konvertere blogg-markup for EPUB / e-lesere
EPUB er XHTML under panseret og avviser et manglende <code></p></code> blankt. Rydd opp i et helt kapittels verdi av blogg-HTML i én innliming før du pakker.
Opprydning for arkivsystemer
Mater du gammel HTML inn i et XML-basert arkiv (DSpace, Fedora Commons, alt JATS-aktig)? Strenge skjemaer bryr seg ikke om at nettleseren rendret det pent — konverter først.
Vanlige spørsmål
Hva gjør egentlig HTML "løs" og XML "streng"?
Tre store ting. Først: HTML har tomme elementer (<br>, <img>, <input>, <hr>, <meta>, <link>) som ikke skal ha sluttag — XML krever enten <br></br> eller <br/>. For det andre: HTML lar deg utelate sluttagger helt på ting som <li> og <p> fordi parse-algoritmen regner dem ut. For det tredje: HTML godtar attributter uten anførselstegn (class=foo) og attributter uten verdi (disabled). XML avviser alle tre.
Hva skjer med boolske attributter som `checked` og `disabled`?
De utvides til XHTML-formen. <input type=checkbox checked disabled> blir til <input type="checkbox" checked="checked" disabled="disabled"/>. Hvert attributt ender opp med et navn OG en verdi i anførselstegn, som er akkurat det XML krever — det finnes ikke noe slikt som et attributt uten verdi i XML.
Hvordan håndteres HTML-entiteter som ` ` og `—`?
XML kjenner bare fem navngitte entiteter ut av boksen: &, <, >, ", '. Alt annet — , —, £, © — konverteres til sin numeriske form ( , —, £, ©), slik at enhver XML-parser aksepterer dem uten DTD.
Overlever kommentarer turen?
Ja. <!-- merket for gjennomgang --> går inn, det samme kommer ut. Kommentarer er gyldige både i HTML og XML med samme syntaks, så de passerer uberørt — praktisk om du bruker dem til redaksjonelle notater eller build-markører.
Gjør den tag- og attributtnavn om til små bokstaver?
Ja, som standard. <DIV Class="Foo"> blir til <div class="Foo">. Tag- og attributtnavn settes med små bokstaver for å passe XHTML 1.0-konvensjonen. Attributt-VERDIER lar vi være — det du setter innenfor anførselstegn er dataene dine.
Når er dette ikke nok — hvilke tilfeller håndterer verktøyet IKKE?
Vilkårlig <script>-innhold bevares som tekst, men verktøyet prøver ikke å skrive om JavaScript for å gjøre det XML-sikkert. Hvis JS-en din bruker bare <- eller &-tegn, må du selv pakke det inn i <![CDATA[...]]> (eksisterende CDATA bevarer vi). Dokumentfragmenter er greit; vi syntetiserer ikke en <?xml ?>-deklarasjon eller doctype — legg dem til selv om nedstrømsforbrukeren din vil ha dem.
Andre verktøy du kan trenge
HTML til XML er én brikke i puslespillet. Disse verktøyene hører godt sammen med det: