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

  • Prijevod
  • Tutorial

SQL injekcije, krivotvorenje zahtjeva na više stranica, oštećeni XML... Zastrašujuće, zastrašujuće stvari od kojih bismo svi htjeli biti zaštićeni, ali samo želimo znati zašto se sve to događa. Ovaj članak objašnjava temeljni koncept koji stoji iza svega: nizovi i rukovanje nizovima unutar nizova.

Glavni problem To je samo tekst. Da, samo tekst - to je glavni problem. Gotovo sve unutra računalni sustav predstavljen tekstom (koji je pak predstavljen bajtovima). Je li moguće da su neki tekstovi namijenjeni računalima, a drugi ljudima. Ali oboje i dalje ostaju tekst. Da biste razumjeli o čemu govorim, evo malog primjera:
Homo sapiens Pretpostavimo da postoji engleski tekst koji ne želim prevoditi na ruski
Nećete vjerovati: ovo je tekst. Neki ljudi to zovu XML, ali to je samo tekst. Možda nije prikladno za pokazivanje učitelju. na engleskom, ali to je još uvijek samo tekst. Možeš to isprintati na plakat i s tim ići na skupove, možeš to napisati u pismu majci...to je tekst.

Međutim, želimo da određeni dijelovi ovog teksta imaju neko značenje za naše računalo. Želimo da računalo može odvojeno izdvojiti autora teksta i sam tekst kako bismo mogli nešto napraviti s njim. Na primjer, pretvorite gore u ovo:
Pretpostavimo da postoji engleski tekst koji ne želim prevesti na ruski od Homo Sapiensa
Kako računalo zna kako to učiniti? Pa zato što smo vrlo zgodno omotali određene dijelove teksta posebnim riječima u smiješnim zagradama, poput i. Budući da smo ovo učinili, možemo napisati program koji traži te specifične dijelove, izdvaja tekst i koristi ga za neki vlastiti izum.

Drugim riječima, koristili smo određena pravila u našem tekstu kako bismo ukazali na neko posebno značenje koje bi netko drugi, slijedeći ista pravila, mogao koristiti.
U redu, ovo nije tako teško razumjeti. Što ako želimo koristiti ove smiješne zagrade koje imaju neko posebno značenje u našem tekstu, ali bez korištenja ovog značenja?.. Nešto ovako:
Homo sapiens< n and y >
Znakovi "" nisu ništa posebno. Mogu se legalno koristiti bilo gdje, u bilo kojem tekstu, kao u gornjem primjeru. Ali što je s našom idejom posebnih riječi, poput? Znači li to da je i to neka vrsta ključne riječi? U XML-u - možda da. Ili možda nije. Ovo je dvosmisleno. Budući da računala nisu baš dobra u rješavanju dvosmislenosti, nešto može na kraju dati neočekivani rezultat ako sami ne stavimo točku na i i razriješimo nejasnoće.
Ova se dilema može riješiti zamjenom dvosmislenih simbola nečim nedvosmislenim.
Homo Sapiens Osnovna matematika nam govori da ako x< n and y >n, x ne može biti veći od y.
Sada bi tekst trebao postati potpuno nedvosmislen. "".
Tehnička definicija ovoga je štiteći, izbjegavamo posebne znakove kada ne želimo da imaju svoje posebno značenje.
pobjeći |iˈskāp| [bez cilja ] osloboditi se [ s obj. ] ne primijetiti / ne sjećati se [...] [ uz obj. ] IT: razlog za drugačije tumačenje [...]
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 (&) također je poseban znak. Ali što ako želimo napisati "


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

Objavio Plato 2. siječnja, 15:31

Kažu 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 nisi ut aliquip ex ea commodo consequat."


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

Objavio Pascal 23. studenog, 04:12

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


Hmm... Opet ovi skrnavitelji naših zagrada. Pa, s tehničke točke gledišta možda su dvosmisleni, ali preglednik će nam to oprostiti, zar ne?


U redu, STOP, koji vrag? Neki šaljivdžija je uveo javascript oznake na vaš forum? Svatko tko gleda ovu poruku na vašoj stranici sada preuzima i izvršava skripte u kontekstu vaše stranice koje mogu učiniti tko zna što. A ovo nije dobro.

Ne treba shvatiti doslovno. U gornjim slučajevima, želimo nekako reći našem DB-u ili pregledniku da je ovo samo tekst, nemojte ništa raditi s njim! Drugim riječima, želimo "ukloniti" posebna značenja svih posebnih znakova i ključne riječi od bilo kakvih podataka koje je korisnik dao, jer mu ne vjerujemo. Što uraditi?

Što? Što to govoriš, dečko? Oh, kažete, "štit"? I potpuno si u pravu, uzmi kolačić!
Ako primijenimo izbjegavanje na korisničke podatke prije nego što ih spojimo s upitom, tada je problem riješen. Za naše upite baze podataka to bi bilo nešto poput:
$name = $_POST["ime"]; $name = mysql_real_escape_string($name); $query = "SELECT phone_number FROM korisnika WHERE name = "$name""; $rezultat = mysql_upit($upit);
Samo jedan red koda, ali sada više nitko ne može "hakirati" našu bazu podataka. Pogledajmo ponovno kako će izgledati SQL upiti, ovisno o korisničkom unosu:
Alex
SELECT phone_number FROM korisnika WHERE name = "Alex"
Mc Donalds
SELECT phone_number FROM korisnika WHERE name = "Mc\"Donalds"
Joe"; korisnici DROP TABLE; --
SELECT phone_number FROM korisnika WHERE name = "Joe\"; DROP TABLE korisnici; --"
mysql_real_escape_string neselektivno stavlja kosu crtu ispred svega što bi moglo imati neko posebno značenje.


Funkciju htmlspecialchars primjenjujemo na sve korisničke podatke prije nego ih ispišemo. Sada poruka štetočine izgleda ovako:

Objavio JackTR 18. srpnja, 12:56


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

Što nas vraća na... Sve gore navedeno pokazuje problem koji je uobičajen za mnoge sustave: tekst u tekstu mora biti izbjegnut 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 izbjeći u skladu s HTML pravilima. Prilikom postavljanja tekstualnih vrijednosti u (naziv tehnologije), moraju se izbjeći prema pravilima (naziv tehnologije). To je sve. Za cjelovitost, naravno, postoje i drugi načini za postupanje s korisničkim unosom koji može ili ne mora sadržavati posebne znakove:
  • Validacija
    Možete provjeriti odgovara li korisnički unos određenoj specifikaciji. Ako zahtijevate unos broja, a korisnik unese nešto drugo, program bi trebao obavijestiti korisnika i poništiti unos. Ako je sve ovo ispravno organizirano, onda nema opasnosti od hvatanja "DROP TABLE korisnika" gdje je korisnik trebao unijeti "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 uz druge mjere.
  • Dezinfekcija
    Također možete "tiho" ukloniti sve simbole koje smatrate opasnima. Na primjer, jednostavno uklonite sve što izgleda kao HTML oznaka kako biste izbjegli dodavanje na svoj forum. Problem je u tome što možete ukloniti savršeno legalne dijelove teksta.
    Pripremljene SQL izjave
    Postoje posebne funkcije koje rade ono što smo htjeli: čine 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 korisnika WHERE name = ?"); $stmt->izvrši($_POST["ime"]);
    U ovom slučaju, slanje se odvija u dvije faze, jasno razlikuju zahtjev i varijable. Baza podataka ima mogućnost najprije razumjeti strukturu zahtjeva, a zatim ga ispuniti vrijednostima.

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

Standard već dugo propisuje umetanje običnih navodnika u HTML tekst koristite konstrukciju "Za unutarnje oznake, navodnici" se koriste za označavanje atributa.

Međutim, još nisam naišao na preglednik koji ne bi kao navodnik prikazivao jednostavni simbol “IZVAN bilo kakvih oznaka” pa mi recite, dragi kolege, možda je upotreba “vanjskih oznaka jednostavno dosadna stvar koja nikome ne treba?” Možete li mirno i bez daljnjega napisati "? Pogotovo u tekstovima u kojima ima puno navodnika, a poštivanje strogih pravila dizajna (u pogledu ispravne upotrebe nacionalnih navodnika) nije bitno.

IMHO, mnogi ljudi to rade... ali pitanje nije posve jasno: ako shvaćate da prema standardima trebate pisati citate kao ", ali to je lijeno, unatoč činjenici da mnoge stranice tako rade, što onda očekujete li čuti? Mislim da se radi o tome, nitko ne zna hoće li prikaz navodnika biti podržan u novim verzijama preglednika, pa najvjerojatnije možemo dati očitu preporuku: ako ne želite probleme u budućnosti, 100% - drži se standarda :) Ali to već znaš. Ili čekaš potvrdu: da, dosadno je to je sve, zaboravi i za 10 godina sve će biti isto, ja (Microsoft, Mozilla itd.) ) jamstvo?

Lynn "Čovjek za kavu" [dosje]
da, usput... sada 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 entiteta znaka """ za kodiranje instanci dvostrukih navodnika (") jer se ovaj znak može koristiti za odvajanje vrijednosti atributa.

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

Ako autor želi u tekst staviti znak "" (ASCII decimalni kod 62).

Kako bi se izbjegla zabuna s referencama znakova (početna oznaka reference znaka), referenca "&" (ASCII decimalni kod 38) trebala bi se koristiti umjesto znaka "&". Dodatno, referenca "&" također bi se trebala koristiti u vrijednostima atributa, budući da su reference znakova unutar vrijednosti atributa CDATA dopuštene.

Ali ja samo očekujem nešto poput Lynnina odgovora: da zapravo ne postoji takav standard. 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 s kojima se nisam susreo u svojoj praksi - poput xhtml (točno, provjerio sam xhtml), onda ovaj trik neće raditi. Stoga nema potrebe stvarati probleme s prenosivošću napisanog HTML koda.

Ili na kraju: kako to učiniti sami?

&, usput, postavlja slično pitanje. Gore navedeni dokument kaže "kako bi se izbjegla zabuna". No zabuna je moguća samo ako & slijedi jedan od navedenih kodova. Što ako je to, recimo, URL poput "..../script?A=1&B=2"? Riskiram li nešto ako sam ovaj URL pogrešno naveo kao href (koji, naravno, radi ispravno tijekom testiranja)? Sve osim krajnje malo vjerojatne situacije da će se za 10 godina (kada stranica bude zastarjela ili je već deset puta prepravljana) pojaviti 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 s postojećim kodovima, onda možeš napisati jednostavno &. Ako se novi kod pojavi u budućnosti, mislim da će biti izričito deklariran kao neuključen HTML specifikacije 4.01, stoga ne bi trebao utjecati na normalno deklarirani dokument. Ili očekujete da ćete podržati buduće standarde jednostavna promjena obrise dokumenata?

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

Svrha ove lekcije:

  • BI mora poznavati XML format snimanja
  • BI mora moći sastaviti dokument u obliku XML koda
  • BI mora poznavati vrste podataka i znati ih koristiti
  • Napomena: XML nije tako koncizan kako ga opisujemo u ovom vodiču. Uzimamo u obzir samo one značajke XML jezika koje će se koristiti u ODA-TM sustavu.

    XML. Osnova

    XML je stvoren za strukturiranje, pohranu i prijenos informacija.

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

    Nikolay Ivan Podsjetnik Nadam se da niste zaboravili naš susret

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

    Kod ima pošiljatelja i primatelja informacije, također ima zaglavlje i tijelo poruke.

    Namijenjen je da ga netko 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 (uputa nema nikakve veze sa stablom). Element stabla uvijek ima potomke i pretke, osim korijenskog elementa koji nema pretke i slijepih elemenata (lišće stabla) koji nemaju potomke. Svaki element stabla nalazi se na određenoj razini ugniježđenja (u daljnjem tekstu "razina"). Elementi na istoj razini imaju prethodne i sljedeće elemente.

    Stvorite vlastite oznake koristeći XML

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

    XML nema unaprijed definirane oznake.

    • XML omogućuje autoru definiranje vlastitih oznaka i vlastite strukture dokumenta.
    • XML se koristi za prijenos podataka
    • XML je softverski i hardverski neovisan alat za prijenos informacija.
    • XML je sada jednako 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 pohrane 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 pravilno ugniježđeni (jedan u drugi i ni u kojem slučaju se ne križati)
    • XML dokumenti moraju imati korijenski element (XML dokumenti moraju sadržavati jedan element koji je nadređen svim ostalim elementima. Taj se element naziva korijenski element.
    • Vrijednost XML atributa mora biti u navodnicima.
    Komentari

    Ako neki fragment XML dokumenta trebate učiniti potpuno "nevidljivim" za program analizatora, tada ga možete formatirati kao komentar ispisivanjem znakova ispred njega< !-- , а после него - символы -->s dvije crtice u nizu.

    Na primjer:

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

    Program analizatora će preskočiti cijelu ovu strukturu bez da je čak i "pogleda" u nju.

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

    • U komentaru ne možete napisati dvije crtice za redom;
    • 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:

    • drugi 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 započeti brojem ili interpunkcijskim znakom
    • Imena ne smiju sadržavati razmake
    Atributi

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

    U donjem primjeru, vrsta datoteke nije relevantna za podatke, ali je važna za softver koji može manipulirati elementom:

    računalo.gif

    XML atributi moraju biti u navodnicima

    Vrijednosti atributa uvijek moraju biti pod navodnicima. Mogu se koristiti jednostruki ili dvostruki navodnici. Primjer: za određivanje spola 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 ovaj vikend!

    Datum kao element

    10/01/2008 Tove Jani Podsjetnik Ne zaboravi me ovaj vikend!

    Datum kao prošireni element

    01/10/2008 Tove Jani Podsjetnik Ne zaboravi me ovaj vikend!

    Atributi metapodataka

    Ovi se identifikatori mogu koristiti za definiranje XML elemenata.

    Primjer:

    Tove Jani Podsjetnik Ne zaboravi me ovaj vikend! 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 jednu 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
    • gYear znači godinu u formatu CCYY
    • gMonthDay sadrži mjesec i dan u formatu MM-DD
    • gDan dan u mjesecu u formatu dd
    • gMjesec mjesec u formatu MM
    Nizovi znakova

    niz je osnovni tip znakova.

    Niz znakova kao slijed Unicode znakova, uključujući razmak, tabulator, znak za povratak na početak i znakove za novi redak.

    • normalizedString - podvrsta tipa - to su nizovi koji ne sadrže pomicanje redaka "\n", povratak na početak redaka "\r" i horizontalne tabulatore "\t".
      • token - podtip tipa normalizedString - ne, osim razmaka na početku i na kraju i nekoliko uzastopnih razmaka.
        • jezik - podvrsta tokena, definirana za bilježenje naziva jezika prema preporuci RFC-a 1766, na primjer, ru, en, de, fr.
        • NMTOKEN je podvrsta tokena, koja se koristi samo u atributima za bilježenje njihovih numeriranih vrijednosti.
        • Ime - podvrsta tokena, sastavljena od XML imena - nizovi slova, brojeva, crtica, točaka, dvotočki, podvlaka, počevši od slova (osim rezerviranog niza slova X, x, M, m, L, l u bilo kojoj kombinaciji slučajeva) ili podcrtati. Imena koja počinju nizom xml, koristi sama XML specifikacija.
          • NCName je podvrsta imena koja ne sadrži dvotočku. Definirana su tri podtipa: ID, IDREF, ENTITY
    Binarne vrste
    • boolen - binarni, logički. Prihvaća vrijednosti: True ili False (1 ili 0)
    • base64Binary - Base64 kodirani binarni cijeli brojevi
    • hexBinary - binarni cijeli brojevi u heksadecimalnom obliku bez dodatnih znakova
    Realni brojevi
    • decimalni su realni brojevi zapisani s fiksnom točkom: 123,45, -0,48747798, itd.
    • tipovi double i float u skladu su sa standardom IEEE754-85, pisani s fiksnim ili pomičnim zarezom.
    Cijeli brojevi
    • integer - osnovni cjelobrojni tip koji sadrži brojeve nultog reda, shvaćen kao podtip decimal
    • broj - definira broj (bez ograničenja broja znamenki); može sadržavati znak, razlomke i eksponent. Vrijednosti se mijenjaju

    od 1.7976931348623157E+308 do 2.2250738585072014E-308

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

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

    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 to slučaj u HTML-u, već ističu pojedinačne elemente (objekte). Zauzvrat, elementi hijerarhijski organiziraju informacije u dokumentu, što ih zauzvrat čini glavnim strukturnim jedinicama XML jezika.

    U XML-u elementi mogu biti dvije vrste - prazni i neprazni. Prazni elementi ne sadrže nikakve podatke, poput teksta ili drugih konstrukcija. Za razliku od praznih elemenata, elementi koji nisu prazni mogu sadržavati bilo koje podatke, poput teksta ili drugih XML elemenata i konstrukcija. Da bismo razumjeli poantu gore navedenog, pogledajmo primjere praznih i nepraznih XML elemenata.

    Prazan XML element

    XML element koji nije prazan

    Sadržaj elementa...

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

    Logička organizacija XML dokumenata. Struktura stabla XML podataka

    Kao što se sjećate, glavni konstrukt XML jezika su elementi koji mogu sadržavati druge ugniježđene konstrukte i na taj način oblikovati hijerarhijska struktura prikaz stabla. U ovom slučaju nadređeni element bit će korijen, a sva ostala djeca bit će 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 prilično je jednostavna struktura za obradu. Pritom je ekspresivna složenost samog stabla prilično velika. Prikaz 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 s vrijednostima koje su im dodijeljene, a koje se stavljaju u jednostruke ili dvostruke navodnike. Atribut za element postavlja se na sljedeći način:

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

    Također vrijedi obratiti pozornost na korištenje navodnika. Vrijednosti atributa mogu se staviti u jednostruke ili dvostruke navodnike. Osim toga, također je moguće koristiti neke navodnike unutar drugih. Za demonstraciju 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 uglate zagrade "" ne mogu koristiti kao vrijednosti prilikom stvaranja atributa. Ovi su znakovi rezervirani kao kontrolni znakovi ("&" je entitet, a "" otvara i zatvara oznaku elementa) i ne mogu se koristiti u "čistom obliku". Da biste ih koristili, morate pribjeći zamjeni posebnih znakova.

    XML upute za obradu (upute za obradu). XML deklaracija

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

    Kao što možete vidjeti iz gornjeg primjera, u XML-u su upute za obradu u kutu navodnika s upitnikom. Ovo je pomalo slično uobičajenom što smo gledali u prvim PHP lekcijama. Prvi dio upute za obradu specificira aplikaciju ili sustav kojem je namijenjen drugi dio ove upute 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.

    Vrijedno je napomenuti da XML ima posebnu konstrukciju koja je vrlo slična instrukciji za obradu, ali sama to nije. Ovo je XML deklaracija koja se prenosi procesoru softver neke informacije o svojstvima XML dokumenta, kao što je kodiranje, verzija jezika na kojem je 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 gore. Činjenica je da, po definiciji, XML deklaracija i upute za obradu ne mogu sadržavati atribute, pa se te deklaracije nazivaju pseudoatributima. Ovo je vrijedno zapamtiti za budućnost kako biste izbjegli razne pogreške.

    Budući da smo se bavili pseudo-atributima, pogledajmo što oni znače.

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

    Pa, prijeđimo sada na završni dio članka i razmotrimo takve XML konstrukcije kao što su komentari i CDATA odjeljci.

    Pozdrav, dragi posjetitelji stranice! Nastavimo s temom XML jezika za označavanje i pogledajmo korištenje atributa. Atributi mogu biti prisutni u XML elementima, baš kao iu HTML-u. Atributi pružaju dodatne informacije o elementu.

    XML atributi

    U HTML atributi pružiti dodatne informacije o elementima:

    XML atributi moraju biti u navodnicima

    Vrijednosti atributi u xml mora uvijek biti pod navodnicima. Mogu se koristiti jednostruki i dvostruki navodnici. 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 nasuprot atributima

    Pogledajte sljedeće primjere:

    Viktorija
    Petrova

    žena
    Viktorija
    Petrova

    U prvom primjeru, spol je atribut. U potonjem, seks je element. Oba primjera daju iste informacije.

    Ne postoje pravila o tome kada koristiti atribute, a kada elemente. Atributi su korisni 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 koristi se u prvom primjeru:

    Element produženog datuma koristi se u trećem: (OVO JE MOJ OMILJENI NAČIN):



    10
    01
    2008

    Petar
    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)

    Ne čini to ovako:


    XML atributi za metapodatke


    Vasja
    Sveta
    Podsjetnik
    Ne zaboravi me nazvati sutra!


    Sveta
    Vasja
    Re: Podsjetnik
    u redu

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

    Ono što ovdje pokušavam reći jest da metapodatke (podatke o podacima) treba pohraniti kao xml atribute, a same podatke treba pohraniti kao elemente.

    Hvala na pažnji!.