Indsæt HTML til venstre og klik "Konverter" — vi laver det om til velformet XMLIndsæt HTML

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 (&nbsp;, &mdash;, &pound;, &times; osv.), konverteres til numeriske entiteter som &#160;, 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.

1

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.

2

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.

3

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>&lt;/p&gt;</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 `&nbsp;` og `&mdash;`?

XML kender kun fem navngivne entiteter ud af kassen: &amp;, &lt;, &gt;, &quot;, &apos;. Alt andet — &nbsp;, &mdash;, &pound;, &copy; — konverteres til sin numeriske form (&#160;, &#8212;, &#163;, &#169;), 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: