O tem orodju
Oblikovanje XML zamakne ugnezdene elemente, tako da postane hierarhija dokumenta vidna. Kompaktni XML - vse v eni vrstici - je tehnično veljaven in uporaben za prenos, vendar neberljiv za ljudi. Formatirani XML doda prelome vrstic med elementi in zamakne podrejene elemente znotraj njihovih staršev, zaradi česar ga je mogoče ročno skenirati, diffable in urejati.
Ta oblikovalnik razčleni vhod s pomočjo DOMParserja, da potrdi dobro oblikovanost, nato se sprehodi po dobljenem DOM, da odda zamaknjen izhod. Komentarji, navodila za obdelavo in razdelki CDATA so ohranjeni. Samozapiralne oznake (tiste brez otrok) so kompaktne v eni vrstici; oznake z otroki so razporejene v več vrsticah z zamiki otrok.
Zamik z dvema presledkoma je privzet in se ujema z najpogostejšo konvencijo XML. Oblikovalnik je konzervativen glede preoblikovanja: obstoječa struktura se ohrani, spremeni se le presledek med elementi. Podatki krožijo skozi kateri koli razčlenjevalnik XML enako pred in po formatiranju.
Zakaj formatirati XML
Kompaktni XML je neberljiv. Odgovori SOAP, viri RSS in številne konfiguracijske datoteke prispejo kot enovrstični XML, ki je tehnično veljaven, a praktično neprozoren. Oblikovanje razkrije strukturo dokumenta, omogoča iskanje določenih elementov in naredi razlike v nadzoru različic smiselne.
Oblikovanje služi tudi kot preverjanje veljavnosti. Če XML med oblikovanjem ne uspe razčleniti, sporočilo o napaki identificira težavo - običajno nezaprte oznake, neujemajoča se imena elementov ali neveljavni znaki. Lovljenje napak XML pred pošiljanjem strogemu uporabniku prihrani čas za odpravljanje napak.
Tehnične podrobnosti
DOMParser ustvari XML DOM. Oblikovalnik hodi po drevesu najprej v globino, oddaja začetne oznake, zamaknjene podrejene in zapiralne oznake. Atributi elementa so ohranjeni na začetni oznaki; vrstni red atributov se ujema z virom.
Precejšen presledek znotraj besedilnih vozlišč je ohranjen — oblikovalnik ne more varno spremeniti presledka vsebine, ker je morda smiseln (pravila o ohranjanju prostora XML se razlikujejo glede na sheme). Spremeni se le presledek med elementi.
Samozapiralni elementi (brez otrok) oddajajo kot <tag attr="val"/>. Elementi s samo besedilno vsebino se oddajajo kot <tag>besedilo</tag>. Elementi z podrejenimi elementi oddajajo v več vrsticah z zamaknjenimi podrejenimi elementi. Odseki CDATA, komentarji in navodila za obdelavo oddajajo s svojimi izvirnimi ločili in vsebino.
Pogosta vprašanja
- Katere napake XML to zazna?
- Orodje zazna nezaprte oznake, neujemajoče se odpiralne/zapiralne oznake, neveljavne reference znakov, manjkajoče korenske elemente, napačno oblikovane atribute in težave s kodiranjem. Sporočila o napakah vključujejo številke vrstic, ki vam pomagajo pri odkrivanju težav.
- Ali oblikovanje spremeni vsebino XML?
- Oblikovanje samo prilagodi presledke in zamike med elementi. Vsebina elementa, atributi, razdelki CDATA in navodila za obdelavo so ohranjeni točno tako, kot so vneseni.
- Ali lahko obravnava velike datoteke XML?
- Orodje obravnava datoteke do nekaj megabajtov v brskalniku. Za zelo velike dokumente XML (50 MB+) razmislite o uporabi orodij ukazne vrstice, kot je xmllint, za boljšo zmogljivost.
- Ali podpira imenske prostore XML?
- ja Oblikovalnik pravilno obravnava deklaracije imenskega prostora (xmlns), elemente s predpono in privzete imenske prostore. Imenski prostori so ohranjeni v formatiranem izhodu.
- Ali so imenski prostori ohranjeni?
- ja Atributa xmlns in xmlns:prefix se ohranita na elementih, kjer se pojavita v viru.
- Ali lahko zmanjšam XML v eno vrstico?
- Nekateri formati XML ponujajo pomanjševanje. To orodje se osredotoča na oblikovanje; zmanjšan XML je mogoče izdelati z odstranjevanjem presledkov med elementi z regularnim izrazom ali namenskim orodjem.
- Ali je moj XML naložen na strežnik?
- Ne. DOMParser se izvaja v vašem brskalniku; formater teče v vašem brskalniku.
- Ali se bodo presledki znotraj besedilnih vozlišč spremenili?
- Ne. Presledek vozlišča besedila je ohranjen, ker se pravila za ohranjanje prostora XML razlikujejo glede na shemo. Oblikovalnik spremeni le presledke med elementi.