HTML til XML-konverter
Indsæt løs HTML. Få velformet XML tilbage.
Hvad dette værktøj gør
Hvis du nogensinde har skullet proppe en indsat HTML-snippet ind i en XSLT-pipeline eller en striks XML-parser, kender du smerten. Browsere er berygtet overbærende — HTML-parseren i WHATWG-specifikationen lukker stille dine <li>-tags, accepterer attributter uden anførselstegn og trækker på skuldrene over en manglende </p>. En XML-parser gør ikke. Giv den samme markup, og du får en parsefejl på linje 3. Dette værktøj tager virkelighedens HTML — den slags, du faktisk indsætter fra et CMS eller en ældre skabelon — og laver det om til XML, som en standardkonform parser accepterer i første forsøg.
Det handler om mere end at lukke tags. Konverteren håndterer hele sæt af ting, der gør HTML løs og XML striks: tomme elementer som <br>, <img> og <hr> bliver selvlukkede som <br/>; boolske attributter som checked og disabled udvides til checked="checked"; attributværdier uden anførselstegn pakkes ind i dobbelte anførselstegn; tag-navne sænkes for konsistens; og den håndfuld navngivne HTML-entiteter, som XML ikke kender ( , —, £, × osv.), konverteres til numeriske entiteter som  , som enhver XML-parser forstår.
Kommentarer passerer uændret. CDATA-sektioner inde i <script> og <style> bevares. Outputtet er pænt indrykket, så du faktisk kan læse det, og det består W3C-validering som XML-dokument eller skyder sig direkte ind i et XHTML 1.0-workflow. Hvis det, du virkelig vil have, er XHTML Strict, er du 95 % i mål — doctype og namespace øverst skriver du selv på.
Sådan bruger du det
Tre trin. Fungerer ens, om du indsætter et enkelt afsnit eller en hel sideskabelon.
Indsæt din HTML (eller prøv eksemplet)
Smid din HTML i venstre editor, som den er. Ulukkede tags, bare boolske attributter, værdier uden anførselstegn, tomme elementer uden selvlukning — alt er fint. Klik på Indlæs eksempel, hvis du først vil se et realistisk, rodet eksempel.
Du behøver ikke rette noget i hånden. Hele pointen med værktøjet er, at det gør oprydningen for dig. Indsæt det præcis, som det kom ud af dit CMS, Word-dokument eller gamle skabelon.
Tryk på Konverter
Klik på den grønne Konverter-knap. Værktøjet parser din HTML med en overbærende parser og serialiserer den så igen via en XML-writer, så hvert tag er lukket, hvert attribut er i anførselstegn, og hver entitet er lovlig XML.
Kopier XML'en
Højre panel fyldes med indrykket, velformet XML. Kopier det til dit XSLT-input, din DOM-testfixtur, dit EPUB-build eller hvor du ellers har brug for markup, som en striks parser ikke sætter i halsen.
Hvornår det her reelt er nyttigt
Fodre HTML ind i XSLT eller en XML-pipeline
Du har et XSLT-stylesheet, der laver indhold om til en PDF, et feed eller et andet format — men dit input er HTML fra et CMS, ikke XML. Konverter først, transformer bagefter.
XHTML-strict-validering
Gammelt intranet, der stadig kræver XHTML 1.0 Strict? Indsæt den sjuskede HTML, din editor producerede, kopier XML'en ud, klask en doctype ovenpå — færdig.
Konverter blog-markup til EPUB / e-læsere
EPUB er XHTML indeni og afviser blankt en manglende <code></p></code>. Ryd et helt kapitels blog-HTML op på én indsættelse, inden du pakker.
Oprydning til arkivsystemer
Skal du fodre gammel HTML ind i et XML-baseret arkiv (DSpace, Fedora Commons, alt JATS-agtigt)? Strikse skemaer er ligeglade med, at browseren renderede det fint — konverter først.
Ofte stillede spørgsmål
Hvad gør egentlig HTML "løst" og XML "strikst"?
Tre store ting. Først: HTML har tomme elementer (<br>, <img>, <input>, <hr>, <meta>, <link>), der ikke skal have et lukketag — XML kræver enten <br></br> eller <br/>. For det andet: HTML lader dig udelade lukketags helt på ting som <li> og <p>, fordi parse-algoritmen regner dem ud. For det tredje: HTML accepterer attributter uden anførselstegn (class=foo) og attributter uden værdi (disabled). XML afviser alle tre.
Hvad sker der med boolske attributter som `checked` og `disabled`?
De udvides til XHTML-formen. <input type=checkbox checked disabled> bliver til <input type="checkbox" checked="checked" disabled="disabled"/>. Hvert attribut ender med et navn OG en værdi i anførselstegn, hvilket er, hvad XML kræver — der findes ikke attributter uden værdi i XML.
Hvordan håndteres HTML-entiteter som ` ` og `—`?
XML kender kun fem navngivne entiteter ud af kassen: &, <, >, ", '. Alt andet — , —, £, © — konverteres til sin numeriske form ( , —, £, ©), så enhver XML-parser accepterer dem uden DTD.
Overlever kommentarer turen?
Ja. <!-- til gennemgang --> går ind, det samme kommer ud. Kommentarer er gyldige i både HTML og XML med samme syntaks, så de passerer uberørt — nyttigt, hvis du bruger dem til redaktionelle noter eller build-markører.
Laver den tag- og attributnavne om til små bogstaver?
Ja, som standard. <DIV Class="Foo"> bliver til <div class="Foo">. Tag- og attributnavne sænkes for at matche XHTML 1.0-konventionen. Attribut-VÆRDIER lader vi være — det, du sætter inden for anførselstegn, er dine data.
Hvornår er det ikke nok — hvilke tilfælde håndterer værktøjet IKKE?
Vilkårligt indhold i <script> bevares som tekst, men værktøjet forsøger ikke at omskrive JavaScript, så det bliver XML-sikkert. Hvis din JS bruger bare <- eller &-tegn, skal du selv pakke det ind i <![CDATA[...]]> (eksisterende CDATA bevarer vi). Dokumentfragmenter er fint; vi syntetiserer ikke en <?xml ?>-deklaration eller doctype — tilføj dem selv, hvis din nedstrøms forbruger vil have dem.
Andre værktøjer, du måske får brug for
HTML til XML er én brik i puslespillet. Disse værktøjer passer godt sammen med det: