Klistra in HTML till vänster och klicka på "Konvertera" — vi gör välformad XML av detKlistra in HTML

Vad det här verktyget gör

Har du någonsin behövt mata in en inklistrad HTML-snutt i en XSLT-pipeline eller en strikt XML-parser vet du redan smärtan. Webbläsare är ökänt förlåtande — HTML-parsern i WHATWG-specen stänger dina <li>-taggar tyst, accepterar ociterade attribut och rycker på axlarna åt en saknad </p>. En XML-parser gör inte det. Ge den samma markup och du får ett parsefel på rad 3. Det här verktyget tar verklig HTML — den sort du faktiskt klistrar in från ett CMS eller en gammal mall — och gör om den till XML som en standardenlig parser accepterar vid första försöket.

Det handlar om mer än att stänga taggar. Konverteraren hanterar hela paletten som gör HTML slapp och XML strikt: tomma element som <br>, <img> och <hr> blir självstängande som <br/>; boolean-attribut som checked och disabled expanderas till checked="checked"; ociterade attributvärden omsluts med dubbla citattecken; taggnamn gemeneras för konsekvens; och den handfull namngivna HTML-entiteter som XML inte känner till (&nbsp;, &mdash;, &pound;, &times; och så vidare) konverteras till numeriska entiteter som &#160; som varenda XML-parser förstår.

Kommentarer kommer igenom orörda. CDATA-sektioner inuti <script> och <style> bevaras. Utdatan är snyggt indenterad så att du faktiskt kan läsa den, och den klarar W3C-validering som XML-dokument eller glider rakt in i ett XHTML 1.0-flöde. Om det du egentligen vill ha är XHTML Strict är du 95 % framme — doctype och namespace på toppen lägger du till själv.

Så här använder du det

Tre steg. Funkar likadant vare sig du klistrar in ett stycke eller en hel sidmall.

1

Klistra in din HTML (eller prova exemplet)

Släpp din HTML i vänster editor som den är. Ostängda taggar, nakna boolean-attribut, ociterade värden, tomma element utan självstängning — helt okej. Klicka på Ladda exempel om du vill se ett realistiskt, stökigt exempel först.

Du behöver inte fixa något för hand. Hela poängen med verktyget är att det städar åt dig. Klistra in det exakt som det kom ur ditt CMS, Word-dokument eller gamla mall.

2

Tryck på Konvertera

Klicka på den gröna knappen Konvertera. Verktyget parsar din HTML med en förlåtande parser och serialiserar sedan om via en XML-writer så att varje tagg är stängd, varje attribut är citerat och varje entitet är giltig XML.

3

Kopiera XML:en

Högerpanelen fylls med indenterad, välformad XML. Kopiera den till din XSLT-indata, din DOM-testfixtur, ditt EPUB-bygge eller vart som helst där du behöver markup som en strikt parser inte sätter i halsen.

När det här verkligen är praktiskt

Mata in HTML i XSLT eller en XML-pipeline

Du har ett XSLT-stylesheet som gör om innehåll till PDF, feed eller annat format — men indatat är HTML från ett CMS, inte XML. Konvertera först, transformera sedan.

XHTML-strict-validering

Legacy-intranät som fortfarande kräver XHTML 1.0 Strict? Klistra in den slarviga HTML:en som din editor producerade, kopiera ut XML:en, släng på en doctype högst upp — klart.

Konvertera bloggmarkup för EPUB / e-läsare

EPUB är XHTML under huven och kastar ut ett saknat <code>&lt;/p&gt;</code> rakt av. Städa en hel kapitelportion bloggar-HTML i en enda inklistring innan du paketerar.

Städning för arkivsystem

Matar du in gammal HTML i ett XML-baserat arkiv (DSpace, Fedora Commons, allt med JATS-smak)? Strikta scheman bryr sig inte om att webbläsaren renderade det fint — konvertera först.

Vanliga frågor

Vad gör egentligen HTML "slapp" och XML "strikt"?

Tre stora saker. Ett: HTML har tomma element (<br>, <img>, <input>, <hr>, <meta>, <link>) som inte ska ha stängningstagg — XML kräver antingen <br></br> eller <br/>. Två: HTML låter dig utelämna stängningstaggar helt för saker som <li> och <p> eftersom parse-algoritmen räknar ut dem. Tre: HTML accepterar attribut utan citattecken (class=foo) och attribut utan värde (disabled). XML avvisar alla tre.

Vad händer med boolean-attribut som `checked` och `disabled`?

De expanderas till XHTML-formen. <input type=checkbox checked disabled> blir <input type="checkbox" checked="checked" disabled="disabled"/>. Varje attribut får till slut ett namn OCH ett citerat värde, vilket är precis vad XML kräver — attribut utan värde existerar inte i XML.

Hur hanteras HTML-entiteter som `&nbsp;` och `&mdash;`?

XML känner bara till fem namngivna entiteter ur lådan: &amp;, &lt;, &gt;, &quot;, &apos;. Allt annat — &nbsp;, &mdash;, &pound;, &copy; — konverteras till numerisk form (&#160;, &#8212;, &#163;, &#169;) så att vilken XML-parser som helst accepterar dem utan DTD.

Överlever kommentarer rundresan?

Ja. <!-- markerad för granskning --> går in, samma sak kommer ut. Kommentarer är giltiga både i HTML och XML med samma syntax, så de passerar orörda — praktiskt om du använder dem för redaktionella noteringar eller build-markörer.

Gemenerar den tagg- och attributnamn?

Ja, som standard. <DIV Class="Foo"> blir <div class="Foo">. Tagg- och attributnamn gemeneras för att matcha XHTML 1.0-konventionen. Attribut-VÄRDENA lämnar vi i fred — det du lägger innanför citattecknen är din data.

När räcker det inte — vilka fall hanterar verktyget INTE?

Godtyckligt innehåll i <script> bevaras som text, men verktyget försöker inte skriva om JavaScript för att göra det XML-säkert. Om din JS använder nakna < eller & behöver du själv svepa in den i <![CDATA[...]]> (befintliga CDATA bevarar vi). Dokumentfragment funkar bra; vi fabricerar ingen <?xml ?>-deklaration eller doctype — lägg till dem själv om din nedströmskonsument vill ha dem.

Andra verktyg du kanske behöver

HTML till XML är en pusselbit. De här verktygen passar bra ihop med det: