Osnovne XML konstrukcije - XML ​​elementi, oznake, atributi, upute za obradu, CDATA sekcije, komentari. XML elementi. Prazni i neprazni XML elementi

  • Prevod
  • Tutorial

SQL injekcije, krivotvorenje zahtjeva na više lokacija, oštećen XML... Strašne, zastrašujuće stvari od kojih bismo svi željeli biti zaštićeni, ali samo želimo znati zašto se sve to događa. Ovaj članak objašnjava osnovni koncept iza svega: nizovi i rukovanje stringovima unutar nizova.

Glavni problem je samo tekst. Da, samo tekst - to je glavni problem. Skoro sve unutra kompjuterski sistem predstavljen tekstom (koji je, pak, predstavljen bajtovima). Da li je moguće da su neki tekstovi namenjeni kompjuterima, a drugi ljudima. Ali oba i dalje ostaju tekst. Da biste razumjeli o čemu govorim, evo malog primjera:
Homo sapiens Pretpostavimo da postoji engleski tekst, koji ne želim da prevodim na ruski
Nećete vjerovati: ovo je tekst. Neki ljudi to zovu XML, ali to je samo tekst. Možda nije prikladno za pokazivanje nastavniku. na engleskom, ali to je i dalje samo tekst. Možeš to odštampati na plakat i ići s njim na skupove, možeš to napisati u pismu svojoj majci... to je tekst.

Međutim, želimo da određeni dijelovi ovog teksta imaju neko značenje za naš računar. Želimo da kompjuter može odvojeno izdvojiti autora teksta i sam tekst kako bismo mogli nešto učiniti s njim. Na primjer, pretvorite gore navedeno u ovo:
Pretpostavimo da postoji engleski tekst, koji homo sapiens ne želim da prevodim na ruski
Kako kompjuter zna kako to da uradi? Pa zato što smo vrlo zgodno umotali određene dijelove teksta posebnim riječima u smiješne zagrade, poput i. Pošto smo to uradili, možemo napisati program koji traži ove specifične delove, izdvaja tekst i koristi ga za neki sopstveni izum.

Drugim riječima, koristili smo određena pravila u našem tekstu da ukažemo na neko posebno značenje koje bi neko drugi, slijedeći ista pravila, mogao koristiti.
U redu, ovo nije sve tako teško razumjeti. Šta ako želimo da koristimo ove smiješne zagrade koje imaju neko posebno značenje u našem tekstu, a da ne koristimo baš ovo značenje?.. Otprilike ovako:
Homo Sapiens< n and y >
Znakovi "" nisu ništa posebno. Mogu se legalno koristiti bilo gdje, u bilo kojem tekstu, kao u primjeru iznad. Ali šta je s našom idejom o posebnim riječima, kao? Da li to znači da je to i neka vrsta ključne riječi? U XML-u - možda da. Ili možda ne. Ovo je dvosmisleno. Budući da kompjuteri nisu baš dobri u rješavanju nejasnoća, nešto može na kraju dati neočekivani rezultat ako sami ne stavimo točke na i i ne riješimo nejasnoće.
Ova dilema se može riješiti zamjenom dvosmislenih simbola nečim nedvosmislenim.
Homo Sapiens Osnovna matematika nam govori da ako je x< n and y >n, x ne može biti veće od y.
Sada bi tekst trebao postati potpuno nedvosmislen. "".
Tehnička definicija ovoga je shielding, izbjegavamo posebne znakove kada ne želimo da imaju svoje posebno značenje.
pobjeći |iˈskāp| [bez obj. ] osloboditi se [ sa obj. ] ne primijetiti / ne zapamtiti [...] [ sa obj. ] IT: razlog da se drugačije tumači [...]
Ako određeni znakovi ili nizovi znakova u tekstu imaju posebna značenja, tada moraju postojati pravila koja određuju kako postupati u situacijama u kojima se ti znakovi moraju koristiti bez pozivanja na njihovo posebno značenje. Ili, drugim riječima, bijeg odgovara na pitanje: “Ako su ovi simboli tako posebni, kako ih mogu koristiti u svom tekstu?”.
Kao što možete vidjeti u gornjem primjeru, ampersand (&) je također poseban znak. Ali šta ako želimo da pišemo "


Ako su vaši korisnici dobri i ljubazni, postavljat će citate starih filozofa, a poruke će izgledati otprilike ovako:

Objavio Platon 2. januara u 15:31

Rečeno je da sam rekao "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisit ut alicommodo ex ."


Ako su korisnici pametni, vjerovatno će pričati o matematici, a poruke će biti ovakve:

Objavio Pascal 23. novembra, 04:12

Osnovna matematika nam govori da ako je x< n and y >n, x ne može biti veće od y.


Hm... Opet ovi skrnavitelji naših zagrada. Pa, sa tehničke tačke gledišta oni mogu biti dvosmisleni, ali pretraživač će nam to oprostiti, zar ne?


OK, STANI, šta dođavola? Neki šaljivdžija je uveo javascript oznake na vaš forum? Svako ko gleda ovu poruku na vašoj web lokaciji sada preuzima i izvršava skripte u kontekstu vaše stranice koje mogu raditi ko zna šta. A ovo nije dobro.

Ne treba shvatiti doslovno. U gornjim slučajevima, želimo nekako reći našem DB-u ili pretraživaču da je ovo samo tekst, nemojte ništa raditi s njim! Drugim riječima, želimo da "uklonimo" posebna značenja svih posebnih znakova i ključne riječi od bilo koje informacije koju je korisnik pružio, jer mu ne vjerujemo. sta da radim?

Šta? Šta to govoriš, dečko? Oh, kažete, "zaštita"? I potpuno ste u pravu, uzmite kolačić!
Ako primijenimo izbjegavanje na korisničke podatke prije nego što ih spojimo s upitom, onda je problem riješen. Za naše upite baze podataka to će biti nešto poput:
$name = $_POST["name"]; $name = mysql_real_escape_string($name); $query = "SELECT phone_number FROM users WHERE name = "$name""; $result = mysql_query($query);
Samo jedan red koda, ali sada više niko ne može "hakovati" našu bazu podataka. Pogledajmo ponovo kako će izgledati SQL upiti, ovisno o korisničkom unosu:
Alex
SELECT phone_number FROM users WHERE name = "Alex"
Mc Donalds
SELECT phone_number FROM users WHERE name = "Mc\"Donalds"
Joe"; DROP TABLE korisnici; --
SELECT phone_number FROM users WHERE name = "Joe\"; DROP TABLE korisnici; --"
mysql_real_escape_string neselektivno postavlja kosu crtu ispred svega što može imati neko posebno značenje.


Primjenjujemo funkciju htmlspecialchars na sve korisničke podatke prije nego što ih izbacimo. Sada poruka štetočina izgleda ovako:

Objavio JackTR 18. jula, 12:56


Imajte na umu da vrijednosti primljene od korisnika nisu zapravo "oštećene". Svaki pretraživač će ovo analizirati kao HTML i prikazati sve na ekranu u ispravnom obliku.

Što nas vraća na... Sve gore navedeno demonstrira problem koji je uobičajen za mnoge sisteme: tekst u tekstu mora biti izbačen ako ne bi trebao imati posebne znakove. Postavljanjem tekstualne vrijednosti u SQL-u, moraju se izbjeći prema SQL pravilima. Prilikom postavljanja tekstualnih vrijednosti u HTML, one se moraju izbaciti prema HTML pravilima. Prilikom postavljanja tekstualnih vrijednosti u (naziv tehnologije), one se moraju izbaciti prema pravilima (naziv tehnologije). To je sve. Radi potpunosti, naravno, postoje i drugi načini da se pozabavite korisničkim unosom koji mogu, ali i ne moraju sadržavati posebne znakove:
  • Validacija
    Možete provjeriti da li se korisnički unos podudara s nekom zadatom specifikacijom. Ako je potrebno da se unese broj, a korisnik unese nešto drugo, program bi trebao obavijestiti korisnika i poništiti unos. Ako je sve ovo pravilno organizovano, onda nema rizika da se uhvati "DROP TABLE users" gde je korisnik trebalo da unese "42". Ovo nije baš praktično za izbjegavanje HTML/SQL injekcija, jer... Često morate prihvatiti tekst slobodnog formata koji može sadržavati trikove. Obično se validacija koristi kao dodatak drugim mjerama.
  • Sanitizacija
    Također možete "tiho" ukloniti sve simbole koje smatrate opasnima. Na primjer, jednostavno uklonite sve što izgleda kao HTML tag kako biste izbjegli dodavanje na vaš forum. Problem je što možete ukloniti potpuno legalne dijelove teksta.
    Pripremljeni SQL izrazi
    Postoje posebne funkcije koje rade ono što želimo: da baza podataka razumije razlike između samog SQL upita i informacija koje pružaju korisnici. U PHP-u izgledaju otprilike ovako:
    $stmt = $pdo->prepare("SELECT phone_number FROM users WHERE name =?"); $stmt->execute($_POST["name"]);
    U ovom slučaju, slanje se odvija u dvije faze, jasno praveći razliku između zahtjeva i varijabli. Baza podataka ima mogućnost da prvo razumije strukturu zahtjeva, a zatim je ispuni vrijednostima.

  • U stvarnom svijetu, svi se oni zajedno koriste za različite nivoe zaštite. Uvijek biste trebali koristiti provjeru valjanosti kako biste bili sigurni da korisnik unosi ispravne podatke. Tada možete (ali nije obavezno) skenirati unesene podatke. Ako korisnik očigledno pokušava da vam proda neku skriptu, možete je jednostavno izbrisati. Zatim, uvijek biste trebali izbjegavati korisničke podatke prije nego što ih stavite u SQL upit (isto vrijedi i za HTML).

Standard je dugo vremena propisivao umetanje redovnih navodnika HTML tekst koristite konstrukciju "Za unutrašnje oznake, navodnici" se koriste za označavanje atributa.

Međutim, još nisam naišao na pretraživač koji ne bi prikazao jednostavan simbol “VANJ KOJIH tagova” kao navodnik. Pa recite mi, drage kolege, da je možda korištenje “spoljnih oznaka jednostavno dosadnost koja nikome nije potrebna?” Možete li mirno i bez daljnjega napisati "? Pogotovo u tekstovima u kojima ima puno navodnika, a poštivanje strogih pravila dizajna (u pogledu pravilne upotrebe nacionalnih navodnika) je nebitno.

IMHO, mnogi ljudi to rade... ali pitanje nije sasvim jasno: ako shvatite da po standardima trebate pisati citate kao ", ali je lijeno, uprkos činjenici da mnoge stranice tako rade, šta onda Da li očekujete da čujete?Mislim da se radi o tome, niko ne zna da li će prikaz navodnika biti podržan u novim verzijama pretraživača, tako da najverovatnije možemo dati očiglednu preporuku: ako ne želite probleme u budućnosti, 100% - držite se standarda :) Ali ovo već znate.Ili čekate potvrdu: da, dosadno je to je sve, zaboravite i za 10 godina sve će biti isto, ja (Microsoft, Mozilla itd. ) garancija?

Lynn "Coffee Man"[dosije]
da, usput... sad je korisno pročitati, nigdje nije navedeno da navodnici trebaju biti predstavljeni u obliku "
http://www2.stack.ru/~julia/HTML401/charset.html:

Neki autori koriste referencu na entitet karaktera """ za kodiranje instanci dvostrukih navodnika (") jer se ovaj znak može koristiti za odvajanje vrijednosti atributa.

o činjenici da trebate koristiti entitet o kojem piše samo i &:

Ukoliko autor želi da u tekst postavi znak "" (ASCII decimalni kod 62).

Da bi se izbjegla zabuna s referencama znakova (početna oznaka reference znakova), referencu "&" (ASCII decimalni kod 38) treba koristiti umjesto znaka "&". Osim toga, referenca "&" bi se također trebala koristiti u vrijednostima atributa, budući da su reference znakova unutar vrijednosti CDATA atributa dozvoljene.

Ali samo očekujem nešto poput Lininog odgovora: da takav standard zapravo ne postoji. Nije mi ni palo na pamet – moje informacije su iz popularnih udžbenika i iz razloga „svi to rade“.

Ili druga opcija: ali ako slijedite nove standarde koje nisam sreo u svojoj praksi - kao što je xhtml (tačno, provjerio sam xhtml), onda ovaj trik neće raditi. Stoga, nema potrebe stvarati probleme sa prenosivosti napisanog HTML koda.

Ili na kraju: kako to sami radite?

&, usput, postavlja slično pitanje. Gore navedeni dokument kaže "da bi se izbjegla zabuna". Ali zabuna je moguća samo ako iza & stoji jedan od navedenih kodova. Šta ako je to, recimo, URL poput "..../script?A=1&B=2" ? Da li rizikujem nešto ako sam greškom naveo ovaj URL kao href (koji, naravno, radi ispravno tokom testiranja)? Bilo šta osim krajnje nevjerovatne situacije da će se za 10 godina (kada je stranica zastarjela ili je već deset puta prepisana) entitet s ekstravagantnim imenom &B bez konačnog; ? Drugim riječima, koliko pažljivo treba provjeriti sve takve slučajeve?

Daniele, ako si siguran da nemaš problema sa postojećim kodovima, onda možeš jednostavno napisati &. Ako se novi kod pojavi u budućnosti, mislim da će biti eksplicitno deklarisan da nije u HTML specifikacije 4.01, stoga ne bi trebalo da utiče na normalno deklarisani dokument. Ili očekujete da ćete podržati buduće standarde do jednostavna promjena obrisi dokumenta?

Daniel Alievsky[dosije]
U XML-u, običan navodnik kao tekst takođe ne predstavlja nikakav problem (shodno tome, u XHTML-u, naravno). IMHO citati se obično prevode u " iz samo jednog razloga - ne želite da pišete dvije funkcije za pretvaranje teksta u siguran oblik prilikom zamjene u XML/HTML/XHTML.

Svrha ove lekcije:

  • BI mora znati format XML snimanja
  • BI mora biti u stanju da sastavi dokument u obliku XML koda
  • BI mora poznavati tipove podataka i biti u stanju da ih koristi
  • Napomena: XML nije tako sažet kao što ga opisujemo u ovom vodiču. Razmatramo samo one karakteristike XML jezika koje će se koristiti u ODA-TM sistemu.

    XML. Osnova

    XML je kreiran za strukturiranje, pohranjivanje i prijenos informacija.

    Sljedeći primjer, “Bilješka prijatelja prijatelju,” ima XML oblik:

    Nikolaj Ivan Podsjetnik Nadam se da niste zaboravili na naš susret

    Vizuelno se ovaj kod može predstaviti u sljedećem obliku (slika 1.).

    Kod ima pošiljaoca i primaoca informacije, također ima zaglavlje i tijelo poruke.

    Namijenjen je da ga neko obradi, pošalje i prikaže.

    Ali ipak, ovaj XML dokument ne radi ništa. To su samo informacije umotane u oznake.

    XML - stablo

    XML ima strukturu stabla. Dokument uvijek ima korijenski element (instrukcija nema nikakve veze sa stablom). Element drveta uvijek ima potomke i pretke, osim elementa korijena, koji nema pretke, i slijepih elemenata (lišće drveća) koji nemaju potomke. Svaki element stabla nalazi se na određenom nivou gniježđenja (u daljem tekstu „nivo“). Elementi na istom nivou imaju prethodne i sljedeće elemente.

    Kreirajte vlastite oznake koristeći XML

    Ne postoji standardni format za kreiranje oznaka (deskriptora, elemenata).

    XML nema unapred definisane oznake.

    • XML dozvoljava autoru da definiše sopstvene oznake i sopstvenu strukturu dokumenta.
    • XML se koristi za prijenos podataka
    • XML je softverski i hardverski nezavisan alat za prijenos informacija.
    • XML je sada važan za web kao i HTML
    • XML je najčešći alat za prijenos podataka između različitih aplikacija
    • XML se koristi u mnogim aspektima web razvoja, često za pojednostavljenje skladištenja i razmjene podataka
    XML sintaksa

    Sintaksa XML pravila je vrlo jednostavna i logična

    • Svi XML elementi moraju imati završnu oznaku
    • XML elementi moraju biti ispravno ugniježđeni (jedan unutar drugog, i ni u kojem slučaju se ne sijeku)
    • XML dokumenti moraju imati osnovni element (XML dokumenti moraju sadržavati jedan element koji je roditelj svih ostalih elemenata. Ovaj element se naziva korijenski element.
    • Vrijednost XML atributa mora biti zatvorena u navodnicima.
    Komentari

    Ako želite da neki fragment XML dokumenta učinite potpuno „nevidljivim“ za program analizator, onda ga možete formatirati kao komentar tako što ćete napisati znakove ispred njega< !-- , а после него - символы -->sa dve crtice u nizu.

    Na primjer:

    < !-- Это комментарий -->

    Program analizatora će preskočiti cijelu ovu strukturu čak i bez da je „gleda“ u nju.

    Ova sintaksa komentara nameće mu dva ograničenja:

    • Ne možete napisati dvije crtice zaredom u komentaru;
    • komentar se ne može završiti crticom.
    XML elementi

    XML element je sve od početne oznake elementa do njegove završne oznake.

    Element može sadržavati:

    • ostali elementi
    • tekst
    • atributi
    • ili kombinacija svega navedenog...
    XML pravila imenovanja

    XML elementi moraju slijediti ova pravila imenovanja:

    • Imena mogu sadržavati slova, brojeve i druge simbole
    • Imena ne mogu početi brojem ili interpunkcijskim znakom
    • Imena ne mogu sadržavati razmake
    Atributi

    Atributi pružaju Dodatne informacije o elementima koji nisu dio podataka.

    U primjeru ispod, tip datoteke nije relevantan za podatke, ali je važan za softver koji može manipulirati elementom:

    computer.gif

    XML atributi moraju biti stavljeni u navodnike

    Vrijednosti atributa uvijek moraju biti u navodnicima. Mogu se koristiti jednostruki ili dvostruki navodniki. Primjer: da biste odredili spol osobe, element se može napisati ovako:

    Ako sama vrijednost atributa sadrži dvostruke navodnike, možete koristiti jednostruki navodnici, kao u ovom primjeru:

    ili možete koristiti znakovne objekte: &&

    Neki primjeri korištenja tipa podataka Datum

    Datum kao atribut

    Tove Jani Podsjetnik Ne zaboravi me ovog vikenda!

    Datum kao element

    10.01.2008. Tove Jani Podsjetnik Ne zaboravi me ovog vikenda!

    Datum kao prošireni element

    10.01.2008. Tove Jani Podsjetnik Ne zaboravi me ovog vikenda!

    Metadata Attributes

    Ovi identifikatori se mogu koristiti za definiranje XML elemenata.

    primjer:

    Tove Jani Reminder Ne zaboravi me ovog vikenda! Jani Tove Re: Podsjetnik Neću

    Podaci o podacima moraju biti pohranjeni kao atributi, a sami podaci moraju biti pohranjeni kao elementi.

    XML. Tip podataka Ugrađeni jednostavni tipovi Datum i vrijeme
    • dateTime sadrži datum i vrijeme u formatu CCYY-MM-DThh:mm:ss
    • trajanje - predstavlja vremensko trajanje, koje se izražava u gregorijanskim danima, satima, minutama i sekundama.

    Na primjer: zapis P1Y2M3DT10H30M45S znači godinu (1Y), dva mjeseca (2M), tri dana (3DT), deset sati (10H), trideset minuta (30M) i 45 sekundi (45S).

    Unos može biti skraćeno P120M znači 120 mjeseci, a T120M znači 120 minuta.

    • vrijeme sadrži vrijeme u normalnom formatu hh:mm:ss
    • datum sadrži datum u formatu CCYY-MM-DD
    • gYearMonth dodjeljuje godinu i mjesec u formatu CCYY-MM
    • gGodina označava godinu u formatu CCYY
    • gMonthDay sadrži mjesec i dan u formatu MM-DD
    • gDani dan u mjesecu u formatu DD
    • gMjesec mjesec u formatu MM
    Nizovi znakova

    string je osnovni tip karaktera.

    Niz znakova kao niz Unicode znakova, uključujući znakove za razmak, tabulator, povratak na red i znakove za pomak.

    • normalizedString - podtip tipa - to su nizovi koji ne sadrže redove "\n", povratne znakove "\r" i horizontalne tabove "\t".
      • token - podtip normalizovanog tipa String - ne, osim vodećih i završnih razmaka i nekoliko uzastopnih razmaka.
        • jezik - podtip tokena, definisan za snimanje imena jezika prema preporuci RFC 1766, na primjer, ru, en, de, fr.
        • NMTOKEN je podtip tokena, koji se koristi samo u atributima za snimanje njihovih nabrojanih vrijednosti.
        • Ime - podtip tokena, sastavljen od XML imena - nizova slova, brojeva, crtica, tačaka, dvotačaka, donjih crta, koji počinju slovom (osim rezerviranog niza slova X, x, M, m, L, l u bilo kojoj kombinaciji slučajeva) ili donja crta. Imena koja počinju nizom xml, koristi sama XML specifikacija.
          • NCName je podtip imena koji ne sadrži dvotočku. Definirana su tri podtipa: ID, IDREF, ENTITY
    Binarni tipovi
    • boolen - binarni, logički. Prihvata vrijednosti: Tačno ili Netačno (1 ili 0)
    • base64Binary - Base64 kodirani binarni cijeli brojevi
    • hexBinary - binarni cijeli brojevi u heksadecimalnom obliku bez ikakvih dodatnih znakova
    Realni brojevi
    • decimalni su realni brojevi zapisani sa fiksnom tačkom: 123,45, -0,48747798, itd.
    • double i float tipovi su u skladu sa standardom IEEE754-85, napisani sa fiksnim ili pomičnim zarezom.
    Cijeli brojevi
    • integer - osnovni cjelobrojni tip koji sadrži brojeve sa nultim redom, shvaćen kao podtip decimalni
    • broj - definira broj (bez ograničenja broja cifara); može sadržavati znak, razlomke i eksponent. Vrijednosti se mijenjaju

    od 1.7976931348623157E+308 do 2.2250738585072014E-308

    Ponovo nastavljamo sa proučavanjem XML-a iu ovom članku ćemo se upoznati sa takvim XML konstrukcijama kao što su instrukcije za obradu, komentari, atributi i drugi XML elementi. Ovi elementi su osnovni i omogućavaju vam da fleksibilno, u strogom skladu sa standardom, označite dokumente apsolutno bilo koje složenosti.

    Već smo djelimično raspravljali o nekim točkama, kao što su XML oznake, u prethodnom članku “”. Sada ćemo se ponovo dotaknuti ove teme i detaljnije je ispitati. Ovo je učinjeno posebno kako bi vam bilo lakše da dobijete potpunu sliku o XML konstrukcijama.

    XML elementi. Prazni i neprazni XML elementi

    Kao što je spomenuto u prethodnom članku, oznake u XML-u ne označavaju samo tekst, kao što je slučaj u HTML-u, već ističu pojedinačne elemente (objekte). Zauzvrat, elementi hijerarhijski organiziraju informacije u dokumentu, što ih je zauzvrat učinilo glavnim strukturnim jedinicama XML jezika.

    U XML-u elementi mogu biti dva tipa - prazni i neprazni. Prazni elementi ne sadrže nikakve podatke, poput teksta ili drugih konstrukcija. Za razliku od praznih elemenata, neprazni elementi mogu sadržavati bilo koje podatke, kao što su tekst ili drugi XML elementi i konstrukcije. Da bismo razumjeli poentu gore navedenog, pogledajmo primjere praznih i nepraznih XML elemenata.

    Prazan XML element

    Neprazan XML element

    Sadržaj elementa...

    Kao što možemo vidjeti iz gornjeg primjera, glavna razlika između praznih i nepraznih elemenata je u tome što se sastoje od samo jedne oznake. Osim toga, također je vrijedno napomenuti da su u XML-u sva imena osjetljiva na velika i mala slova. To znači da su nazivi myElement, MyElement, MYELEMENT, itd. razlikuju jedni od drugih, dakle ovog trenutka Vrijedi se odmah sjetiti kako biste izbjegli greške u budućnosti.
    Dakle, shvatili smo elemente. Sada pređimo na sljedeću tačku, a to je logična organizacija XML dokumenata.

    Logička organizacija XML dokumenata. Struktura stabla XML podataka

    Kao što se sjećate, glavna konstrukcija XML jezika su elementi, koji mogu sadržavati druge ugniježđene konstrukcije i na taj način formirati hijerarhijska struktura pogled na drvo. U ovom slučaju roditeljski elementće biti korijen, a sva ostala djeca će biti grane i listovi XML stabla.

    Da bismo lakše razumjeli gore navedeno, pogledajmo sljedeću sliku s primjerom.

    Kao što vidimo, organiziranje XML dokumenta kao stabla je prilično jednostavna struktura za obradu. Istovremeno, ekspresivna složenost samog stabla je prilično velika. Reprezentacija stabla je najoptimalniji način za opisivanje objekata u XML-u.

    XML atributi. Pravila za pisanje atributa u XML-u

    U XML-u, elementi također mogu sadržavati atribute sa vrijednostima koje su im dodijeljene, koje se stavljaju u jednostruke ili dvostruke navodnike. Atribut za element se postavlja na sljedeći način:

    U ovom slučaju korišten je atribut s imenom “attribute” i vrijednošću “value”. Vrijedi odmah napomenuti da XML atribut mora sadržavati neku vrijednost i ne može biti prazan. U suprotnom, kod će biti netačan sa XML tačke gledišta.

    Također je vrijedno obratiti pažnju na upotrebu navodnika. Vrijednosti atributa mogu se staviti u jednostruke ili dvostruke navodnike. Osim toga, također je moguće koristiti neke citate unutar drugih. Da biste demonstrirali, razmotrite sljedeće primjere.

    Prije nego što pogledamo druge XML konstrukcije, također je vrijedno napomenuti da se posebni znakovi kao što su ampersand "&" ili ugaone zagrade "" ne mogu koristiti kao vrijednosti prilikom kreiranja atributa. Ovi znakovi su rezervirani kao kontrolni znakovi (“&” je entitet, a “” otvara i zatvara oznaku elementa) i ne mogu se koristiti u svom “čistom obliku”. Da biste ih koristili, morate pribjeći zamjeni posebnih znakova.

    Instrukcije za obradu XML-a (instrukcije za obradu). XML deklaracija

    XML ima mogućnost uključivanja instrukcija u dokument koji nose specifične informacije za aplikacije koje će obraditi određeni dokument. Instrukcije za obradu u XML-u se kreiraju na sljedeći način.

    Kao što možete vidjeti iz gornjeg primjera, u XML-u su instrukcije za obradu zatvorene u navodnicima u kutu sa znakom pitanja. Ovo je pomalo kao ono uobičajeno koje smo gledali u prvim PHP lekcijama. Prvi dio instrukcije za obradu specificira aplikaciju ili sistem kojem je namijenjen drugi dio ovog uputstva ili njegov sadržaj. Međutim, upute za obradu vrijede samo za one aplikacije na koje su upućene. Primjer instrukcije za obradu može biti sljedeća instrukcija.

    Vrijedi napomenuti da XML ima posebnu konstrukciju koja je vrlo slična instrukciji za obradu, ali sama nije takva. Ovo je XML deklaracija koja se prenosi procesoru softver neke informacije o svojstvima XML dokumenta, kao što su kodiranje, verzija jezika na kojem je ovaj dokument napisan, itd.

    Kao što možete vidjeti iz gornjeg primjera, XML deklaracija sadrži takozvane pseudo-atribute, koji su vrlo slični regularnim atributima o kojima smo govorili maloprije. Činjenica je da, po definiciji, XML deklaracija i instrukcije za obradu ne mogu sadržavati atribute, pa se te deklaracije nazivaju pseudo-atributima. Ovo vrijedi zapamtiti za budućnost kako biste izbjegli razne greške.

    Pošto smo se bavili pseudo-atributima, pogledajmo šta oni znače.

    • Encoding – odgovoran je za kodiranje XML dokumenta. Obično se koristi UTF8 kodiranje.
    • Verzija – verzija XML jezika na kojem je napisan ovaj dokument. Obično je ovo XML verzija 1.0.

    Pa, sada pređimo na završni dio članka i razmotrimo takve XML konstrukcije kao komentare i CDATA sekcije.

    Poštovani posetioci sajta! Nastavimo temu XML markup jezika i pogledajmo upotrebu atributa. Atributi mogu biti prisutni u XML elementima, baš kao u HTML-u. Atributi pružaju dodatne informacije o elementu.

    XML atributi

    IN HTML atributi dati dodatne informacije o elementima:

    XML atributi moraju biti uvršteni u navodnike

    Vrijednosti atributi u xml uvijek moraju biti stavljeni pod navodnike. Mogu se koristiti i jednostruki i dvostruki navodniki. Da biste označili spol elementa osobe, možete ga napisati ovako:

    Ako sama vrijednost atributa sadrži dvostruke navodnike, možete koristiti jednostruke navodnike, kao u ovom primjeru:

    XML elementi naspram atributa

    Pogledajte sljedeće primjere:

    Victoria
    Petrova

    žensko
    Victoria
    Petrova

    U prvom primjeru, seks je atribut. U ovom drugom, seks je element. Oba primjera pružaju iste informacije.

    Ne postoje pravila o tome kada koristiti atribute, a kada elemente. Atributi su zgodni u HTML-u. U XML-u savjetujem da ih izbjegavate. Umjesto toga koristite elemente.

    Moj omiljeni način

    Sljedeća tri XML dokumenta sadrže potpuno iste informacije:

    XML atribut datuma se koristi u prvom primjeru:

    Element proširenog datuma se koristi u trećem: (OVO JE MOJ OMILJENI NAČIN):



    10
    01
    2008

    Peter
    Sveta
    Podsjetnik

    Izbjegavati XML atribute?

    Neki od problema s korištenjem xml atributa:

    • atributi ne mogu sadržavati više vrijednosti (elementi mogu)
    • atributi ne mogu sadržavati strukture stabla (elementi mogu)
    • atribute je teže proširiti (za buduće promjene)

    Nemojte to raditi ovako:


    XML atributi za metapodatke


    Vasya
    Sveta
    Podsjetnik
    Ne zaboravi da me pozoveš sutra!


    Sveta
    Vasya
    Re: Podsjetnik
    uredu

    Gore navedeni id atributi se koriste za identifikaciju različitih bilješki. One nisu dio same bilješke.

    Ono što ovdje pokušavam reći je da metapodaci (podaci o podacima) trebaju biti pohranjeni kao xml atributi, a sami podaci trebaju biti pohranjeni kao elementi.

    Hvala vam na pažnji!.