Upangaji wa XML ni nini?
XML (Lugha ya Alama Inayoweza Kupanuliwa) ni muundo wa maandishi uliowekwa kiwango na W3C kwa hati zilizoundwa na ubadilishaji wa data. Upangaji — pia unaoitwa kuchapisha kwa urembo au kurembesha — huchukua chanzo cha XML kilichoundwa vizuri na kuipanga upya ili kila kipengele, sifa, maoni, maelekezo ya ushughulikiaji, na sehemu ya CDATA iwe rahisi kusoma. Mti wa hati uliyochakatwa huhifadhiwa hasa; nafasi za wazi kati ya vipengele pekee zinabadilika.
Upangaji wa XML unafanya kazi vipi?
Ingizo lako linashughulikiwa kabisa kwenye kivinjari chako ukitumia API za asili za DOMParser na XMLSerializer pamoja na kipangilizi cha mzunguko wa desturi. Hatua kuu ni:
- Ingizo lako linasomwa kama lilivyo kutoka kwenye eneo la maandishi — kila baiti uliyobandika huhifadhiwa kwenye kumbukumbu ndani ya kivinjari.
- Kivinjari hukichakata na
new DOMParser().parseFromString(text, 'application/xml'). Ikiwa ingizo halijafanywa vizuri, mchakato hupachika nodi ya<parsererror>ambayo maudhui yake ya maandishi hubeba vidokezo vya mstari na safu vya injini — vinaonyeshwa kama vile viko kwenye mkanda wa hitilafu. - Kwenye uchakataji uliofanikiwa, kipangilizi cha desturi hutembelea mti wa DOM kwa kina-kwanza, ukitoa kila kipengele, seti ya sifa, sehemu ya CDATA, maoni, na maelekezo ya ushughulikiaji kwenye mstari wake kwa kina cha sasa. Vitambulishi tupu vya kufunga vyenyewe vinazingatiwa chaguo likiwa washa.
- Hali ya kupunguza inabadilisha mfumo:
XMLSerializer().serializeToString(doc)hutoa muundo wa mstari mmoja, kisha regex iliyolindwa huondoa nafasi za wazi kati ya vipengele bila kugusa maandishi ndani ya bloki za CDATA au nodi za maandishi zisizo na nafasi. - Matokeo yanaandikwa kwenye eneo la maandishi la kusomwa tu, mkanda wa hitilafu unafutwa, na kitufe cha Pakua hukifunika matokeo kama faili la
.xmlunaooweza kutuma au kuambatanisha na tikiti.
Kwa nini kuchapisha XML kwa urembo na chombo hiki?
- Faragha: kila uchakataji, upangaji, na kupunguzwa hutokea kwenye kivinjari chako. XML haifiki seva zetu — hakuna kupakia, hakuna telemetri, hakuna akaunti.
- Makosa sahihi: ingizo likiwa na hitilafu, mchakato huonyesha mstari halisi na safu ambayo injini ya kivinjari yenyewe inaripoti, si nadhani ya bandia — nambari zile zile ambazo ungeona kwenye DevTools.
- Safari ya kwenda na kurudi ya kweli: panga kisha punguza na unapata sawa ya baiti ya hati yako ya asili (modulo chaguo la tangazo la XML) — upangaji kamwe haupanga tena majina ya nafasi wala kuandika upya mpangilio wa sifa.
- Haraka: DOMParser safi pamoja na kipangilizi cha mistari ~60 kushughulikia bahasha za SOAP za mega-baiti nyingi na vipande vya OOXML mara moja, bila maktaba ya nje ya kupakua.
Matumizi ya kawaida ya upangaji wa XML ni yapi?
Kuchapisha XML kwa urembo kunaonekana kwenye uchapishaji wa wavuti, ushirikiano wa biashara, na uakili wa data:
- Ukaguzi wa malisho ya RSS / Atom: bandika mwili wa podcast au malisho ya habari kuthibitisha metadata ya chaneli, mpangilio wa vipengele, na viambishi awali vya nafasi kabla ya kuchapisha.
- Utatuzi wa SOAP: panga bahasha iliyonakiliwa kutoka Wireshark au kumbukumbu ya mteja wa SOAP ili sehemu za Kichwa, Mwili, na Makosa zionekane kwa mwonekano.
- Ukaguzi wa sitemap: panga upya sitemap.xml iliyopatikana kutoka kwa mshindani au tovuti yako ya hatua kuhesabu maingizo na kuthibitisha mbadala za hreflang kwa kila URL.
Mfano wa upangaji wa XML unakaa vipi?
Kubandika kipengele cha vipengele 3 <feed><entry><title>Hello</title></entry></feed> na kubonyeza Panga na chaguo la msisitizo wa nafasi 2 huzalisha hati ya mistari minne na kila kipengele kwenye mstari wake, iliyohamishwa kwa kina. Kubadilisha hadi Punguza kwenye ingizo hilo hilo huibana tena hadi mfuatano wa baiti wa asili. Safari ya kwenda na kurudi haina hasara kwa hati yoyote iliyoundwa vizuri.
Je, hii inafanya kazi bila mtandao?
Ndiyo. Mfumo wa kupanga na kupunguza ni DOMParser safi + XMLSerializer pamoja na kipangilizi kidogo cha mzunguko, vyote vikifanya kazi ndani ya kichupo cha kivinjari. Hakuna kinachopakiwa, hakuna seva inayosambaza ingizo lako, na ukurasa hautokelezi maombi ya mtandao sifuri kwa hatua ya kupanga mwenyewe. Trafiki pekee ya nje ni mali za kawaida za kupakia ukurasa (CSS, fonti, takwimu) — XML yako haifiki Ultim8Soft.
Je, upangaji hubadilisha hati?
Hakuna mabadiliko ya kisemantiki. Upangaji unaandika upya nafasi za wazi kati ya vipengele tu. Majina ya vipengele, thamani za sifa, maudhui ya maandishi, malipo ya CDATA, maoni, na maelekezo ya ushughulikiaji huhifadhiwa baiti kwa baiti. Tamko la nafasi na viambishi awali vimehifadhiwa hasa kama ingizo lilivyoandika — mpangaji haupangi tena au kuandika upya mpangilio wa sifa. Matokeo huchakata hadi mti ule ule wa DOM kama ingizo, modulo kitufe cha hiari cha tangazo la XML.
CDATA / maoni / maelekezo ya ushughulikiaji yanashughulikiwa vipi?
Kila kimoja kinawasilishwa kama kilivyo kwenye mstari wake kwa kina cha msisitizo wa sasa. Malipo ya CDATA yamefungwa katika <![CDATA[…]]> bila kupanga upya ndani — kiwango kinasema maudhui ya CDATA ni ya siri, kwa hivyo mpangaji kamwe hayagusi. Maoni hutumia <!-- … -->; maelekezo ya ushughulikiaji hutumia <?lengo data?>. Yote matatu yanusurika safari ya kwenda na kurudi ya panga → punguza → panga na maudhui yao yakiwa sawa.
Ni tofauti gani kati ya kupanga na kupunguza XML?
Upangaji hupanua nafasi za wazi ili binadamu waweze kusoma mti wa hati; kupunguza huziondoa tena kwa usafirishaji na uhifadhi. Vyote hufanya kazi kwenye DOM iliyochakatwa, si mfuatano wa baiti wa ghafi, kwa hivyo safari ya kwenda na kurudi ya panga → punguza kwenye hati iliyoundwa vizuri huzalisha sawa ya baiti ya muundo wa asili uliopunguzwa. Tumia mwelekeo wa kupanga unapohitaji kusoma au kufanya tofauti ya maudhui ya XML, na mwelekeo wa kupunguza unapotaka kutuma moja kupitia lango la API la kupimwa au kuipachika ndani ya hati nyingine.
Mpangaji huu wa XML hutumia mchakato ule ule ambao kivinjari chako hutumia kwa majibu ya AJAX XHR na hati za SVG, kwa hivyo XML yoyote iliyoundwa vizuri — RSS, Atom, SOAP, sitemap, OOXML, SVG — inasafiri kwa usafi. Bandika XML yoyote hapo juu, nakili matokeo, au uipakue kama .xml.