Osnovne konstrukcije XML - elementi XML, oznake, atributi, navodila za obdelavo, razdelki CDATA, komentarji. Elementi XML. Prazni in neprazni elementi XML

  • Prevajanje
  • Vadnica

Vbrizgavanje SQL, ponarejanje zahtev med spletnimi mesti, pokvarjen XML ... Strašljive, strašljive stvari, pred katerimi bi vsi radi bili zaščiteni, a želimo samo vedeti, zakaj se vse to dogaja. Ta članek pojasnjuje temeljni koncept za vsem tem: nizi in ravnanje z nizi znotraj nizov.

Glavna težava je samo besedilo. Da, samo besedilo - to je glavni problem. Skoraj vse v računalniški sistem predstavljeno z besedilom (ki pa je predstavljeno z bajti). Ali je možno, da so nekatera besedila namenjena računalnikom, druga pa ljudem. A oboje še vedno ostaja besedilo. Da boste razumeli, o čem govorim, je tukaj majhen primer:
Homo sapiens Recimo, da obstaja angleško besedilo, ki ga ne želim prevesti v ruščino
Ne boste verjeli: to je besedilo. Nekateri ga imenujejo XML, vendar je to samo besedilo. Morda ni primeren za prikaz učitelju. v angleščini, vendar je še vedno samo besedilo. Lahko si ga natisnete na plakat in greste z njim na shode, lahko ga napišete v pismu mami ... to je tekst.

Vendar želimo, da imajo nekateri deli tega besedila nek pomen za naš računalnik. Želimo, da bi računalnik lahko ločeno izluščil avtorja besedila in samo besedilo, da bi lahko z njim kaj naredili. Na primer, pretvorite zgornje v tole:
Recimo, da obstaja angleško besedilo, ki ga Homo Sapiens ne želim prevesti v ruščino
Kako računalnik ve, kako to narediti? No, ker smo določene dele besedila zelo priročno zavili s posebnimi besedami v smešnih oklepajih, na primer in. Ker smo to storili, lahko napišemo program, ki išče te posebne dele, izvleče besedilo in ga uporabi za naš lastni izum.

Z drugimi besedami, v našem besedilu smo uporabili določena pravila, da navedemo nek poseben pomen, ki bi ga lahko uporabil nekdo drug, ki sledi istim pravilom.
V redu, tega ni tako težko razumeti. Kaj pa, če želimo uporabiti te smešne oklepaje, ki imajo v našem besedilu nek poseben pomen, vendar brez uporabe prav tega pomena?.. Nekaj ​​takega:
Homo sapiens< n and y >
Znaki "" niso nič posebnega. Zakonito jih je mogoče uporabiti kjer koli, v katerem koli besedilu, kot v zgornjem primeru. Kaj pa naša ideja o posebnih besedah, kot je? Ali to pomeni, da je to tudi nekakšna ključna beseda? V XML - morda ja. Ali pa morda ne. To je dvoumno. Ker računalniki niso ravno vešči reševanja dvoumnosti, lahko kaj na koncu da nepričakovan rezultat, če sami ne postavimo pike na i in razrešimo nejasnosti.
To dilemo je mogoče rešiti z zamenjavo dvoumnih simbolov z nedvoumnimi.
Homo sapiens Osnovna matematika nam pove, da če x< n and y >n, x ne more biti večji od y.
Zdaj naj bi besedilo postalo popolnoma nedvoumno. "".
Tehnična definicija tega je ščit, posebnim znakom uidemo, ko ne želimo, da imajo svoj poseben pomen.
pobeg |iˈskāp| [brez predmeta ] osvoboditi se [ z obj. ] ne opaziti / ne spomniti se [...] [ z obj. ] IT: razlog za različno razlago [...]
Če imajo določeni znaki ali zaporedja znakov v besedilu posebne pomene, potem morajo obstajati pravila, ki določajo, kako ravnati v situacijah, ko je treba te znake uporabiti brez sklicevanja na njihov poseben pomen. Ali z drugimi besedami, beg odgovori na vprašanje: "Če so ti simboli tako posebni, kako jih lahko uporabim v svojem besedilu?".
Kot lahko vidite v zgornjem primeru, je ampersand (&) prav tako poseben znak. Kaj pa, če želimo napisati "


Če so vaši uporabniki dobri in prijazni, bodo objavljali citate starih filozofov, sporočila pa bodo videti nekako takole:

Objavil Platon 2. januarja, 15:31

Rekel sem, da sem rekel "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."


Če so uporabniki pametni, bodo verjetno govorili o matematiki, sporočila pa bodo takšna:

Objavil Pascal 23. novembra, 04:12

Osnovna matematika nam pove, da če x< n and y >n, x ne more biti večji od y.


Hm... Spet ti skrunitelji naših oklepajev. No, s tehničnega vidika so morda dvoumni, a brskalnik nam bo to oprostil, kajne?


V redu, STOP, kaj za vraga? Neki šaljivec je na vaš forum uvedel oznake javascript? Kdor koli gleda to sporočilo na vašem spletnem mestu, zdaj prenaša in izvaja skripte v kontekstu vašega spletnega mesta, ki lahko naredijo kdo ve kaj. In to ni dobro.

Ne jemati dobesedno. V zgornjih primerih želimo našemu DB ali brskalniku nekako povedati, da je to samo besedilo, z njim ne storite ničesar! Z drugimi besedami, želimo "odstraniti" posebne pomene vseh posebnih znakov in ključne besede od kakršnih koli podatkov, ki jih posreduje uporabnik, ker mu ne zaupamo. Kaj storiti?

Kaj? Kaj praviš, fant? Oh, pravite, "ščit"? In imaš popolnoma prav, vzemi piškot!
Če za uporabniške podatke uporabimo ubežanje, preden jih združimo s poizvedbo, je težava rešena. Za naše poizvedbe po bazi podatkov bi bilo nekaj takega:
$name = $_POST["ime"]; $name = mysql_real_escape_string($name); $query = "SELECT phone_number FROM users WHERE name = "$name""; $rezultat = mysql_query($query);
Samo ena vrstica kode, zdaj pa nihče več ne more "vdreti" v našo bazo podatkov. Ponovno poglejmo, kako bodo izgledale poizvedbe SQL, odvisno od uporabniškega vnosa:
Alex
SELECT phone_number FROM uporabnikov WHERE ime = "Alex"
Mc Donalds
SELECT phone_number FROM uporabnikov WHERE name = "Mc\"Donalds"
Joe"; uporabniki DROP TABLE; --
SELECT phone_number FROM uporabnikov WHERE name = "Joe\"; uporabniki DROP TABLE; --"
mysql_real_escape_string nediskriminatorno postavi poševnico naprej pred vse, kar bi lahko imelo poseben pomen.


Funkcijo htmlspecialchars uporabimo za vse uporabniške podatke, preden jih izpišemo. Zdaj je sporočilo škodljivca videti takole:

Objavil JackTR 18. julija, 12:56


Upoštevajte, da vrednosti, prejete od uporabnikov, dejansko niso "poškodovane". Vsak brskalnik bo to razčlenil kot HTML in prikazal vse na zaslonu v pravilni obliki.

Kar nas pripelje nazaj k ... Vse zgoraj navedeno kaže na težavo, ki je skupna številnim sistemom: besedilo v besedilu je treba ubežati, če naj ne bi vsebovalo posebnih znakov. Z namestitvijo besedilne vrednosti v SQL jih je treba ubežati v skladu s pravili SQL. Pri postavljanju besedilnih vrednosti v HTML jih je treba ubežati v skladu s pravili HTML. Pri postavljanju besedilnih vrednosti v (ime tehnologije) jih je treba ubežati v skladu s pravili (ime tehnologije). To je vse. Za popolnost seveda obstajajo drugi načini za obravnavo uporabniškega vnosa, ki lahko vsebuje ali ne vsebuje posebnih znakov:
  • Validacija
    Preverite lahko, ali se uporabniški vnos ujema z določeno specifikacijo. Če zahtevate vnos številke in uporabnik vnese nekaj drugega, mora program o tem obvestiti uporabnika in preklicati vnos. Če je vse to pravilno organizirano, potem ni nevarnosti, da bi ujeli "DROP TABLE users", kjer naj bi uporabnik vnesel "42". To ni zelo praktično za izogibanje vbrizgavanju HTML/SQL, ker ... Pogosto morate sprejeti besedilo v prosti obliki, ki lahko vsebuje trike. Običajno se validacija uporablja poleg drugih ukrepov.
  • Sanacija
    Prav tako lahko »tiho« odstranite vse simbole, ki se vam zdijo nevarni. Na primer, preprosto odstranite vse, kar je videti kot oznaka HTML, da se izognete dodajanju v vaš forum. Težava je v tem, da lahko odstranite popolnoma zakonite dele besedila.
    Pripravljeni stavki SQL
    Obstajajo posebne funkcije, ki delajo, kar smo želeli: poskrbijo, da baza podatkov razume razlike med samo poizvedbo SQL in informacijami, ki jih posredujejo uporabniki. V PHP izgledajo nekako takole:
    $stmt = $pdo->prepare("IZBERI telefonsko_številko IZ uporabnikov WHERE ime = ?"); $stmt->izvedi($_POST["ime"]);
    V tem primeru pošiljanje poteka v dveh fazah, pri čemer je jasno razlikovanje med zahtevo in spremenljivkami. Baza podatkov ima možnost, da najprej razume strukturo zahteve in jo nato napolni z vrednostmi.

  • V resničnem svetu se vsi skupaj uporabljajo za različne ravni zaščite. Vedno uporabite preverjanje, da zagotovite, da uporabnik vnaša pravilne podatke. Nato lahko (ni pa obvezno) skenirate vnesene podatke. Če vam uporabnik očitno poskuša prodati skript, ga lahko preprosto izbrišete. Nato morate vedno, vedno ubežati uporabniškim podatkom, preden jih vstavite v poizvedbo SQL (enako velja za HTML).

Standard že dolgo časa predpisuje vstavljanje navadnih narekovajev v besedilo HTML uporabite konstrukcijo "Za notranje oznake se za označevanje atributov uporabljajo narekovaji".

Nisem pa še naletel na brskalnik, ki ne bi kot narekovaja prikazoval enostavnega simbola “IZUNAJ kakršnih koli oznak.” Zato mi povejte, dragi kolegi, morda je uporaba “zunanjih oznak preprosto dolgočasje, ki ga nihče ne potrebuje?” Ali lahko mirno in brez odlašanja napišete "? Še posebej v besedilih, kjer je veliko narekovajev in je upoštevanje strogih pravil oblikovanja (glede pravilne uporabe nacionalnih narekovajev) nepomembno.

IMHO, veliko ljudi to počne ... vendar vprašanje ni povsem jasno: če razumete, da morate v skladu s standardi narekovaje pisati kot ", vendar je leno, kljub dejstvu, da veliko spletnih mest deluje tako, kaj potem pričakujete, da boste slišali? Mislim, da gre za to, nihče ne ve, ali bo prikaz narekovajev podprt v novih različicah brskalnikov, zato najverjetneje lahko damo očitno priporočilo: če ne želite težav v prihodnosti, 100% - drži se standardov :) Ampak to že veš. Ali pa čakaš na potrditev: ja, dolgočasno je, to je vse, pozabi in čez 10 let bo vse po starem, jaz (Microsoft, Mozilla itd. ) garancija?

Lynn "Coffee Man" [dosje]
ja, mimogrede ... zdaj je koristno prebrati, nikjer ni navedeno, da morajo biti narekovaji predstavljeni v obliki "
http://www2.stack.ru/~julia/HTML401/charset.html:

Nekateri avtorji uporabljajo sklic na entiteto znaka """ za kodiranje primerkov dvojnih narekovajev ("), ker se ta znak lahko uporablja za ločevanje vrednosti atributov.

o dejstvu, da morate uporabiti entiteto, o kateri piše, in &:

Če želi avtor v besedilo umestiti znak "" (decimalna koda ASCII 62).

Da bi se izognili zamenjavi s sklici na znake (začetek sklica na znak), je treba namesto znaka "&" uporabiti sklic "&" (decimalna koda ASCII 38). Poleg tega je treba v vrednostih atributov uporabiti tudi sklic "&", saj so sklicevanja na znake znotraj vrednosti atributa CDATA dovoljena.

Ampak samo pričakujem nekaj podobnega Lynninemu odgovoru: da takega standarda pravzaprav ni. Sploh mi ni prišlo na misel - moje informacije so iz priljubljenih učbenikov in iz razlogov "vsi to počnejo."

Ali pa druga možnost: če pa sledite novim standardom, s katerimi se v svoji praksi še nisem srečal - kot je xhtml (natančno, preveril sem xhtml), potem ta trik ne bo deloval. Zato ni potrebe po ustvarjanju težav s prenosljivostjo napisane kode HTML.

Ali končno: kako to storite sami?

&, mimogrede, postavlja podobno vprašanje. Zgornji dokument pravi "v izogib zmedi". Vendar je zmeda možna le, če & sledi ena od navedenih kod. Kaj pa, če je, recimo, URL, kot je "..../script?A=1&B=2"? Ali kaj tvegam, če pomotoma navedem ta URL kot href (ki med testiranjem seveda deluje pravilno)? Karkoli drugega kot skrajno malo verjetna situacija, da se čez 10 let (ko je stran zastarela ali že desetkrat prepisana) pojavi entiteta z ekstravagantnim imenom &B brez dokončnega; ? Z drugimi besedami, kako skrbno je treba preveriti vse take primere?

Daniel, če si prepričan, da nimaš težav z obstoječimi kodami, potem lahko napišeš preprosto &. Če se bo v prihodnosti pojavila nova koda, mislim, da bo izrecno razglašena za not in Specifikacije HTML 4.01, zato ne bi smel vplivati ​​na običajno prijavljen dokument. Ali pa pričakujete, da boste podpirali prihodnje standarde preprosta sprememba oris dokumentov?

Daniel Alievsky [dosje]
V XML tudi običajni narekovaj kot besedilo ne predstavlja nobene težave (temu primerno v XHTML seveda). IMHO citati so običajno prevedeni v " iz enega samega razloga - ne želite napisati dveh funkcij za pretvorbo besedila v varno obliko pri zamenjavi v XML/HTML/XHTML.

Namen te lekcije:

  • BI mora poznati format zapisa XML
  • BI mora biti sposoben sestaviti dokument v obliki kode XML
  • BI mora poznati vrste podatkov in jih znati uporabljati
  • Opomba: XML ni tako jedrnat, kot ga opisujemo v tej vadnici. Upoštevamo samo tiste značilnosti jezika XML, ki bodo uporabljene v sistemu ODA-TM.

    XML. Osnova

    XML je bil ustvarjen za strukturiranje, shranjevanje in prenos informacij.

    Naslednji primer, »Sporočilo prijatelja prijatelju«, ima obliko XML:

    Nikolay Ivan Opomnik Upam, da niste pozabili našega srečanja

    Vizualno lahko to kodo predstavimo v naslednji obliki (slika 1.).

    Koda ima pošiljatelja in prejemnika informacije, ima tudi glavo in telo sporočila.

    Namenjeno je, da ga nekdo obdela, pošlje in prikaže.

    Vendar ta dokument XML še vedno ne naredi ničesar. To so samo informacije, zavite v oznake.

    XML - drevo

    XML ima drevesno strukturo. Dokument ima vedno korenski element (navodilo nima nobene zveze z drevesom). Drevesni element ima vedno potomce in prednike, razen korenskega elementa, ki nima prednikov, in slepih elementov (listov drevesa), ki nimajo potomcev. Vsak element drevesa se nahaja na določeni ravni ugnezdenja (v nadaljevanju »raven«). Elementi na isti ravni imajo prejšnje in naslednje elemente.

    Ustvarite lastne oznake z uporabo XML

    Standardnega formata za ustvarjanje oznak (deskriptorjev, elementov) ni.

    XML nima vnaprej določenih oznak.

    • XML omogoča avtorju, da definira lastne oznake in lastno strukturo dokumenta.
    • XML se uporablja za prenos podatkov
    • XML je programsko in strojno neodvisno orodje za prenos informacij.
    • XML je zdaj tako pomemben za splet kot HTML
    • XML je najpogostejše orodje za prenos podatkov med različnimi aplikacijami
    • XML se uporablja v številnih vidikih spletnega razvoja, pogosto za poenostavitev shranjevanja in izmenjave podatkov
    Sintaksa XML

    Sintaksa pravil XML je zelo preprosta in logična

    • Vsi elementi XML morajo imeti zaključno oznako
    • Elementi XML morajo biti pravilno ugnezdeni (drug v drugega in se v nobenem primeru ne sekajo)
    • Dokumenti XML morajo imeti korenski element (dokumenti XML morajo vsebovati en element, ki je nadrejeni vsem ostalim elementom. Ta element se imenuje korenski element.
    • Vrednost atributa XML mora biti v narekovajih.
    Komentarji

    Če morate del dokumenta XML narediti popolnoma "nevidnega" za program analizatorja, ga lahko formatirate kot komentar tako, da napišete znake pred njim< !-- , а после него - символы -->z dvema vezajema v vrsti.

    Na primer:

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

    Program analizatorja bo preskočil to celotno strukturo, ne da bi sploh "pogledal" vanjo.

    Ta sintaksa komentarja mu nalaga dve omejitvi:

    • V komentar ne morete napisati dveh vezajev zapored;
    • komentar se ne sme končati z vezajem.
    Elementi XML

    Element XML je vse od začetne oznake elementa do njegove končne oznake.

    Element lahko vsebuje:

    • drugi elementi
    • besedilo
    • lastnosti
    • ali kombinacija vsega naštetega...
    Pravila za poimenovanje XML

    Elementi XML morajo upoštevati naslednja pravila poimenovanja:

    • Imena lahko vsebujejo črke, številke in druge simbole
    • Imena se ne smejo začeti s številko ali ločilom
    • Imena ne smejo vsebovati presledkov
    Lastnosti

    Atributi zagotavljajo Dodatne informacije o elementih, ki niso del podatkov.

    V spodnjem primeru vrsta datoteke ni pomembna za podatke, vendar je pomembna za programsko opremo, ki lahko manipulira z elementom:

    računalnik.gif

    Atributi XML morajo biti v narekovajih

    Vrednosti atributov morajo biti vedno v narekovajih. Uporabite lahko enojne ali dvojne narekovaje. Primer: za določitev spola osebe lahko element zapišemo takole:

    Če sama vrednost atributa vsebuje dvojne narekovaje, lahko uporabite enojni narekovaji, kot v tem primeru:

    lahko pa uporabite znake: &&

    Nekaj ​​primerov uporabe podatkovnega tipa Datum

    Datum kot atribut

    Tove Jani Opomnik Ne pozabi me ta vikend!

    Datum kot element

    10/01/2008 Tove Jani Opomnik Ne pozabi me ta vikend!

    Datum kot razširjen element

    01/10/2008 Tove Jani Opomnik Ne pozabi me ta vikend!

    Atributi metapodatkov

    Te identifikatorje je mogoče uporabiti za definiranje elementov XML.

    primer:

    Tove Jani Opomnik Ne pozabi me ta vikend! Jani Tove Re: Opomnik Ne bom

    Podatki o podatkih morajo biti shranjeni kot atributi, sami podatki pa morajo biti shranjeni kot elementi.

    XML. Tip podatkov Vgrajeni enostavni tipi Datum in čas
    • dateTime vsebuje datum in uro v formatu CCYY-MM-DThh:mm:ss
    • trajanje - predstavlja časovno trajanje, ki je izraženo v gregorijanskih dnevih, urah, minutah in sekundah.

    Na primer: zapis P1Y2M3DT10H30M45S pomeni eno leto (1Y), dva meseca (2M), tri dni (3DT), deset ur (10H), trideset minut (30M) in 45 sekund (45S).

    Vnos lahko skrajšamo P120M pomeni 120 mesecev, T120M pa 120 minut.

    • čas vsebuje čas v običajni obliki uh:mm:ss
    • datum vsebuje datum v obliki CCYY-MM-DD
    • gYearMonth dodeli leto in mesec v formatu CCYY-MM
    • gLeto pomeni leto v formatu CCYY
    • gMonthDay vsebuje mesec in dan v obliki MM-DD
    • gDay dan v mesecu v formatu DD
    • gMesec mesec v formatu MM
    Nizi znakov

    niz je osnovni tip znakov.

    Niz znakov kot zaporedje znakov Unicode, vključno s presledkom, tabulatorjem, povratnim znakom in znaki za pomik vrstice.

    • normalizedString - podvrsta vrste - to so nizi, ki ne vsebujejo pomikov vrstic "\n", vrnitve v prvi vrstico "\r" in vodoravnih tabulatorjev "\t".
      • žeton - podtip tipa normalizedString - ne, razen začetnih in končnih presledkov ter več zaporednih presledkov.
        • jezik - podtip žetona, definiran za zapis imena jezika v skladu s priporočilom RFC 1766, na primer ru, en, de, fr.
        • NMTOKEN je podtip žetona, ki se uporablja samo v atributih za zapis njihovih oštevilčenih vrednosti.
        • Ime - podvrsta žetona, sestavljena iz imen XML - zaporedja črk, številk, vezajev, pik, dvopičja, podčrtajev, ki se začnejo s črko (razen rezerviranega zaporedja črk X, x, M, m, L, l v kateri koli kombinaciji primerov) ali podčrtaj. Imena, ki se začnejo z nizom xml, uporablja sama specifikacija XML.
          • NCName je podvrsta imena, ki ne vsebuje dvopičja. Definirani so trije podtipi: ID, IDREF, ENTITY
    Binarne vrste
    • boolen - binarno, logično. Sprejema vrednosti: True ali False (1 ali 0)
    • base64Binary - Base64 kodirana binarna cela števila
    • hexBinary - binarna cela števila v šestnajstiški obliki brez dodatnih znakov
    Realne številke
    • decimalna so realna števila, zapisana s fiksno vejico: 123,45, -0,48747798 itd.
    • dvojni in plavajoči tipi so skladni s standardom IEEE754-85, zapisani s fiksno ali plavajočo vejico.
    Cela števila
    • integer - osnovni celoštevilski tip, ki vsebuje števila z ničelnim redom, razumljena kot podtip decimalno
    • številka - določa številko (brez omejitev glede števila števk); lahko vsebuje znak, ulomke in eksponent. Vrednote se spreminjajo

    od 1.7976931348623157E+308 do 2.2250738585072014E-308

    Ponovno nadaljujemo s preučevanjem XML in v tem članku se bomo seznanili s konstrukcijami XML, kot so navodila za obdelavo, komentarji, atributi in drugi elementi XML. Ti elementi so osnovni in vam omogočajo prožno, v strogem skladu s standardom, označevanje dokumentov absolutno katere koli kompleksnosti.

    Nekatere točke, kot so oznake XML, smo delno obravnavali že v prejšnjem članku “”. Zdaj se bomo znova dotaknili te teme in jo podrobneje preučili. To je narejeno posebej zato, da vam olajšamo popolno sliko konstruktov XML.

    Elementi XML. Prazni in neprazni elementi XML

    Kot smo že omenili v prejšnjem članku, oznake v XML ne samo označujejo besedila, kot je to v primeru HTML, ampak poudarjajo posamezne elemente (objekte). Elementi pa hierarhično organizirajo informacije v dokumentu, zaradi česar so postali glavne strukturne enote jezika XML.

    V XML so lahko elementi dveh vrst - prazni in neprazni. Prazni elementi ne vsebujejo nobenih podatkov, na primer besedila ali drugih konstruktov. Za razliko od praznih elementov lahko neprazni elementi vsebujejo poljubne podatke, na primer besedilo ali druge elemente in konstrukcije XML. Da bi razumeli poanto zgornjega, si poglejmo primere praznih in nepraznih elementov XML.

    Prazen element XML

    Element XML, ki ni prazen

    Vsebina elementa ...

    Kot lahko vidimo iz zgornjega primera, je glavna razlika med praznimi in nepraznimi elementi ta, da so sestavljeni iz samo ene oznake. Poleg tega je treba omeniti tudi, da so v XML vsa imena občutljiva na velike in male črke. To pomeni, da imena myElement, MyElement, MYELEMENT itd. se med seboj razlikujejo, torej ta trenutek Vredno si je zapomniti takoj, da se v prihodnosti izognete napakam.
    Torej, ugotovili smo elemente. Zdaj pa preidimo na naslednjo točko, ki je logična organizacija dokumentov XML.

    Logična organizacija XML dokumentov. Drevesna struktura XML podatkov

    Kot se spomnite, so glavni konstrukt jezika XML elementi, ki lahko vsebujejo druge ugnezdene konstrukte in s tem tvorijo hierarhično strukturo drevesni pogled. V tem primeru nadrejeni element bo koren, vsi drugi otroci pa bodo veje in listi drevesa XML.

    Za lažje razumevanje zgornjega si poglejmo naslednjo sliko s primerom.

    Kot lahko vidimo, je organizacija dokumenta XML kot drevesa dokaj preprosta struktura za obdelavo. Hkrati pa je izrazna kompleksnost samega drevesa precej velika. Drevesna predstavitev je najbolj optimalen način za opis objektov v XML.

    atributi XML. Pravila za pisanje atributov v XML

    V XML lahko elementi vsebujejo tudi atribute z dodeljenimi vrednostmi, ki so postavljene v enojne ali dvojne narekovaje. Atribut za element je nastavljen na naslednji način:

    V tem primeru je bil uporabljen atribut z imenom “attribute” in vrednostjo “value”. Takoj je vredno omeniti, da mora atribut XML vsebovati neko vrednost in ne sme biti prazen. V nasprotnem primeru bo koda z vidika XML nepravilna.

    Prav tako je vredno biti pozoren na uporabo narekovajev. Vrednosti atributov so lahko v enojnih ali dvojnih narekovajih. Poleg tega je mogoče nekatere narekovaje uporabiti tudi znotraj drugih. Za dokaz upoštevajte naslednje primere.

    Preden si ogledamo druge konstrukte XML, velja tudi omeniti, da posebnih znakov, kot je ampersand "&" ali oklepaj "", ni mogoče uporabiti kot vrednosti pri ustvarjanju atributov. Ti znaki so rezervirani kot kontrolni znaki ("&" je entiteta, "" pa odpre in zapre oznako elementa) in jih ni mogoče uporabiti v "čisti obliki". Če jih želite uporabiti, se morate zateči k zamenjavi posebnih znakov.

    Navodila za obdelavo XML (navodila za obdelavo). XML deklaracija

    XML ima možnost, da v dokument vključi navodila, ki vsebujejo posebne informacije za aplikacije, ki bodo obdelale določen dokument. Navodila za obdelavo v XML so ustvarjena na naslednji način.

    Kot lahko vidite iz zgornjega primera, so v XML navodila za obdelavo obdana s kotnimi narekovaji z vprašajem. To je nekoliko podobno običajnemu, ki smo si ga ogledali v prvih lekcijah PHP. Prvi del navodila za obdelavo določa aplikacijo ali sistem, ki mu je namenjen drugi del tega navodila oziroma njegova vsebina. Navodila za obdelavo pa veljajo le za tiste aplikacije, na katere so naslovljena. Primer navodila za obdelavo je lahko naslednje navodilo.

    Treba je omeniti, da ima XML poseben konstrukt, ki je zelo podoben navodilu za obdelavo, vendar sam ni eno. To je izjava XML, ki se posreduje procesorju programsko opremo nekaj informacij o lastnostih dokumenta XML, kot je kodiranje, različica jezika, v katerem je ta dokument napisan itd.

    Kot lahko vidite iz zgornjega primera, deklaracija XML vsebuje tako imenovane psevdoatribute, ki so zelo podobni običajnim atributom, o katerih smo govorili zgoraj. Dejstvo je, da deklaracija XML in navodila za obdelavo po definiciji ne morejo vsebovati atributov, zato se te deklaracije imenujejo psevdoatributi. To si velja zapomniti za prihodnost, da se izognemo različnim napakam.

    Ker smo imeli opravka s psevdoatributi, si poglejmo, kaj pomenijo.

    • Encoding – je odgovoren za kodiranje dokumenta XML. Običajno se uporablja kodiranje UTF8.
    • Različica – različica jezika XML, v katerem je napisan ta dokument. Običajno je to XML različica 1.0.

    No, zdaj pa preidimo na zaključni del članka in razmislimo o konstrukcijah XML, kot so komentarji in razdelki CDATA.

    Pozdravljeni, dragi obiskovalci spletnega mesta! Nadaljujmo s temo označevalnega jezika XML in si poglejmo uporabo atributov. Atributi so lahko prisotni v elementih XML, tako kot v HTML. Atributi nudijo dodatne informacije o elementu.

    Atributi XML

    IN atributi HTML navedite dodatne informacije o elementih:

    Atributi XML morajo biti v narekovajih

    Vrednote atributi v xml morajo biti vedno v narekovajih. Uporabite lahko enojne in dvojne narekovaje. Če želite označiti spol elementa osebe, ga lahko zapišete takole:

    Če sama vrednost atributa vsebuje dvojne narekovaje, lahko uporabite enojne narekovaje, kot v tem primeru:

    Elementi XML proti atributom

    Oglejte si naslednje primere:

    Viktorija
    Petrova

    ženska
    Viktorija
    Petrova

    V prvem primeru je spol atribut. Pri slednjem je seks element. Oba primera zagotavljata enake informacije.

    Ni pravil o tem, kdaj uporabiti atribute in kdaj elemente. Atributi so priročni v HTML. Pri XML svetujem, da se jim izogibate. Namesto tega uporabite elemente.

    Moj najljubši način

    Naslednji trije dokumenti XML vsebujejo popolnoma enake informacije:

    Atribut datuma XML je uporabljen v prvem primeru:

    Element podaljšanega datuma je uporabljen v tretjem: (TO JE MOJ NAJLJUBŠI NAČIN):



    10
    01
    2008

    Peter
    Sveta
    Opomnik

    Se izogibate atributom XML?

    Nekaj ​​težav z uporabo atributov xml:

    • atributi ne morejo vsebovati več vrednosti (elementi lahko)
    • atributi ne smejo vsebovati drevesnih struktur (elementi lahko)
    • atribute je težje razširiti (za prihodnje spremembe)

    Ne delaj tega takole:


    Atributi XML za metapodatke


    Vasja
    Sveta
    Opomnik
    Ne pozabi me poklicati jutri!


    Sveta
    Vasja
    Re: Opomnik
    v redu

    Zgornji atributi id se uporabljajo za identifikacijo različnih zapiskov. Niso del same opombe.

    Tukaj želim povedati, da bi morali biti metapodatki (podatki o podatkih) shranjeni kot atributi xml, sami podatki pa bi morali biti shranjeni kot elementi.

    Hvala za vašo pozornost!.