Grundläggande XML-konstruktioner - XML-element, taggar, attribut, bearbetningsinstruktioner, CDATA-sektioner, kommentarer. XML-element. Tomma och icke-tomma XML-element

  • Översättning
  • Handledning

SQL-injektioner, förfalskning av förfrågningar på flera ställen, korrupt XML... Skrämmande, läskiga saker som vi alla skulle vilja skyddas från, men vi vill bara veta varför allt händer. Den här artikeln förklarar det grundläggande konceptet bakom det hela: strängar och hantering av strängar inom strängar.

Det största problemet Det är bara text. Ja, bara texten - det är huvudproblemet. Nästan allt i datorsystem representeras av text (som i sin tur representeras av bytes). Är det möjligt att vissa texter är avsedda för datorer, medan andra är avsedda för människor. Men båda förblir fortfarande text. För att förstå vad jag pratar om, här är ett litet exempel:
Homo Sapiens Antag att det finns den engelska texten, som jag inte vill översätta till ryska
Du kommer inte att tro det: det här är text. Vissa människor kallar det XML, men det är bara text. Det kanske inte är lämpligt att visa för läraren. på engelska, men det är fortfarande bara text. Du kan skriva ut det på en affisch och gå på möten med det, du kan skriva det i ett brev till din mamma... det är text.

Vi vill dock att vissa delar av denna text ska ha en viss betydelse för vår dator. Vi vill att datorn ska kunna extrahera författaren till texten och själva texten separat så att vi kan göra något med den. Konvertera till exempel ovanstående till detta:
Anta att det finns den engelska texten, som jag inte vill översätta till ryska av Homo Sapiens
Hur vet datorn hur man gör detta? Jo, för att vi väldigt bekvämt lindade in vissa delar av texten med speciella ord inom roliga parenteser, som och. Eftersom vi har gjort detta kan vi skriva ett program som letar efter dessa specifika delar, extraherar texten och använder den för någon egen uppfinning.

Med andra ord, vi använde vissa regler i vår text för att indikera någon speciell betydelse som någon annan, som följer samma regler, skulle kunna använda.
Okej, det här är inte så svårt att förstå. Tänk om vi vill använda dessa roliga parenteser som har någon speciell betydelse i vår text, men utan att använda just denna betydelse?.. Något så här:
Homo sapiens< n and y >
Tecknen "" är inget speciellt. De kan lagligt användas var som helst, i vilken text som helst, som i exemplet ovan. Men hur är det med vår idé om speciella ord, som? Betyder det att det också är något slags sökord? I XML - kanske ja. Eller kanske inte. Detta är tvetydigt. Eftersom datorer inte är särskilt bra på att hantera oklarheter, kan något sluta ge ett oväntat resultat om vi inte själva prickar i:et och löser oklarheterna.
Detta dilemma kan lösas genom att ersätta tvetydiga symboler med något entydigt.
Homo Sapiens Grundläggande matematik säger oss att om x< n and y >n, x kan inte vara större än y.
Nu ska texten bli helt entydig. "".
Den tekniska definitionen av detta är avskärmning, vi slipper specialtecken när vi inte vill att de ska ha sin egen speciella betydelse.
fly |iˈskāp| [ingen obj. ] bryta sig loss [ med obj. ] inte märka / inte komma ihåg [...] [ med obj. ] IT: en anledning att tolkas annorlunda [...]
Om vissa tecken eller teckensekvenser i en text har speciella betydelser, måste det finnas regler som anger hur man hanterar situationer där dessa tecken måste användas utan att åberopa deras speciella betydelse. Eller, med andra ord, att fly svarar på frågan: "Om dessa symboler är så speciella, hur kan jag använda dem i min text?".
Som du kan se i exemplet ovan är et-tecken (&) också ett specialtecken. Men tänk om vi vill skriva "


Om dina användare är bra och snälla kommer de att lägga upp citat från gamla filosofer, och meddelandena kommer att se ut ungefär så här:

Postat av Platon den 2 januari, 15:31

Jag sägs ha sagt "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 eaqua comt."


Om användare är smarta kommer de förmodligen att prata om matematik, och meddelandena kommer att vara så här:

Postat av Pascal den 23 november, 04:12

Grundläggande matematik säger oss att om x< n and y >n, x kan inte vara större än y.


Hmm... Dessa skändare av våra parenteser igen. Tja, ur teknisk synvinkel kan de vara tvetydiga, men webbläsaren kommer att förlåta oss för det, eller hur?


Okej, STOPP, vad fan? Har någon skämtare introducerat javascript-taggar på ditt forum? Alla som tittar på det här meddelandet på din webbplats laddar nu ner och kör skript i sammanhanget för din webbplats som kan göra vem vet vad. Och det här är inte bra.

Inte att tas bokstavligt I ovanstående fall vill vi på något sätt berätta för vår DB eller webbläsare att detta bara är text, gör inget med det! Med andra ord vill vi "ta bort" de speciella betydelserna av alla specialtecken och nyckelord från all information som tillhandahålls av användaren, eftersom vi inte litar på honom. Vad ska man göra?

Vad? Vad säger du, pojke? Åh, säger du, "avskärmning"? Och du har helt rätt, ta en kaka!
Om vi ​​tillämpar escape på användardata innan vi slår samman dem med frågan, är problemet löst. För våra databasfrågor kommer det att vara något i stil med:
$namn = $_POST["namn"]; $name = mysql_real_escape_string($name); $query = "VÄLJ telefonnummer FRÅN användare WHERE name = "$name""; $result = mysql_query($query);
Bara en rad kod, men nu kan ingen längre "hacka" vår databas. Låt oss se igen hur SQL-frågorna kommer att se ut, beroende på användarens input:
Alex
SELECT phone_number FROM användare WHERE name = "Alex"
Mc Donalds
SELECT phone_number FROM användare WHERE name = "Mc\"Donalds"
Joe"; DROP TABLE-användare; --
SELECT phone_number FROM användare WHERE name = "Joe\"; DROP TABLE användare; --"
mysql_real_escape_string placerar urskillningslöst ett snedstreck framför allt som kan ha någon speciell betydelse.


Vi tillämpar htmlspecialchars-funktionen på all användardata innan vi matar ut den. Nu ser skadedjurets meddelande ut så här:

Upplagt av JackTR den 18 juli, 12:56


Observera att värdena som tas emot från användare faktiskt inte är "skadade". Alla webbläsare kommer att tolka detta som HTML och visa allt på skärmen i rätt form.

Vilket för oss tillbaka till... Allt ovanstående visar ett problem som är gemensamt för många system: text i text måste escapes om den inte ska ha specialtecken. Genom att placera textvärden i SQL måste de escapes enligt SQL-regler. När du placerar textvärden i HTML måste de escapes enligt HTML-regler. När du placerar textvärden i (tekniknamn) måste de escapes enligt (tekniknamn) regler. Det är allt. För fullständighetens skull finns det naturligtvis andra sätt att hantera användarinmatning som kan innehålla specialtecken eller inte:
  • Godkännande
    Du kan kontrollera om användarinmatning matchar någon given specifikation. Om du kräver att ett nummer anges och användaren anger något annat, bör programmet informera användaren och avbryta inmatningen. Om allt detta är korrekt organiserat finns det ingen risk att fånga "DROP TABLE-användare" där användaren skulle ange "42". Detta är inte särskilt praktiskt för att undvika HTML/SQL-injektioner, eftersom... Ofta måste du acceptera fritt format text som kan innehålla tricks. Vanligtvis används validering utöver andra åtgärder.
  • Sanering
    Du kan också "tyst" ta bort alla symboler som du anser vara farliga. Ta till exempel helt enkelt bort allt som ser ut som en HTML-tagg för att undvika att läggas till i ditt forum. Problemet är att du kan ta bort helt lagliga delar av texten.
    Förberedde SQL-satser
    Det finns speciella funktioner som gör vad vi ville: få databasen att förstå skillnaderna mellan själva SQL-frågan och informationen från användarna. I PHP ser de ut ungefär så här:
    $stmt = $pdo->prepare("VÄLJ telefonnummer FRÅN användare WHERE name = ?"); $stmt->exekvera($_POST["namn"]);
    I det här fallet sker sändningen i två steg, med tydlig åtskillnad mellan begäran och variabler. Databasen har förmågan att först förstå strukturen för begäran och sedan fylla den med värden.

  • I den verkliga världen används dessa alla tillsammans för olika skyddsnivåer. Du bör alltid använda validering för att säkerställa att användaren anger rätt data. Du kan sedan (men är inte skyldig att) skanna de inmatade uppgifterna. Om en användare uppenbarligen försöker sälja något skript till dig kan du helt enkelt ta bort det. Sedan bör du alltid, alltid undkomma användardata innan du lägger in den i en SQL-fråga (detsamma gäller för HTML).

Sedan länge har standarden föreskrivit att man ska sätta in vanliga citattecken i HTML-text använd konstruktionen "För inre taggar, citattecken" används för att beteckna attribut.

Men jag har ännu inte stött på en webbläsare som inte skulle visa den enkla symbolen "UTANFÖR några taggar" som citattecken. Så säg mig, kära kollegor, kanske att använda "utanför taggar är helt enkelt en tråkighet som ingen behöver?" Kan du lugnt och utan vidare skriva "? Speciellt i texter där det finns många citattecken, och efterlevnad av strikta designregler (avseende korrekt användning av nationella citattecken) är irrelevant.

IMHO, många människor gör så här... men frågan är inte helt klar: om du förstår att du enligt standarder måste skriva citat som ", men det är lat, trots att många sajter fungerar så, vad är det då förväntar du dig att höra? Jag tror att det handlar om det, ingen vet om visning av citat kommer att stödjas i nya versioner av webbläsare, så troligtvis kan vi ge en självklar rekommendation: om du inte vill ha problem i framtiden, 100% - håll dig till standarderna :) Men du vet redan detta. Eller väntar du på bekräftelse: ja, det är tråkigt det är allt, glöm det, och om 10 år kommer allt vara sig likt, jag (Microsoft, Mozilla, etc. ) garanti?

Lynn "Coffee Man"[dossier]
ja, förresten... nu är det nyttigt att läsa, ingenstans står det att citattecken ska representeras i formen "
http://www2.stack.ru/~julia/HTML401/charset.html:

Vissa författare använder en teckenenhetsreferens """ för att koda instanser av dubbla citattecken (") eftersom detta tecken kan användas för att separera attributvärden.

om det faktum att du behöver använda enheten som det bara står om och &:

Om författaren vill placera tecknet "" (ASCII decimalkod 62) i texten.

För att undvika förväxling med teckenreferenser (startmärket för en teckenreferens), bör "&"-referensen (ASCII-decimalkod 38) användas istället för tecknet "&". Dessutom bör "&"-referensen också användas i attributvärden, eftersom teckenreferenser inom CDATA-attributvärden är tillåtna.

Men jag förväntar mig bara något som Lynns svar: att det faktiskt inte finns någon sådan standard. Det föll inte ens för mig - min information kommer från populära läroböcker och av skälen att "alla gör det."

Eller ett annat alternativ: men om du följer nya standarder som jag inte har stött på i min praktik - som xhtml (exakt, jag kollade xhtml), så kommer det här tricket inte att fungera. Därför finns det inget behov av att skapa problem med portabiliteten av den skrivna HTML-koden.

Eller till sist: hur gör man själv?

& väcker förresten en liknande fråga. Dokumentet ovan säger "för att undvika förvirring". Men förväxling är endast möjlig om & följs av en av de angivna koderna. Tänk om det t.ex. är en webbadress som "..../script?A=1&B=2"? Riskerar jag något om jag av misstag angav den här webbadressen som href (som naturligtvis fungerar korrekt under testning)? Allt annat än den extremt osannolika situationen att om 10 år (när sidan är inaktuell eller redan har skrivits om tio gånger) kommer en enhet att dyka upp med det extravaganta namnet &B utan ett sista; ? Med andra ord, hur noggrant ska alla sådana fall kontrolleras?

Daniel, om du är säker på att du inte har några problem med befintliga koder så kan du skriva helt enkelt &. Om ny kod dyker upp i framtiden tror jag att den kommer att deklareras uttryckligen inte i HTML-specifikationer 4.01, därför bör det inte påverka en normalt deklarerad handling. Eller förväntar du dig att stödja framtida standarder med enkel förändring dokumentkonturer?

Daniel Alievsky[dossier]
I XML är ett vanligt citattecken som text inte heller något problem (på motsvarande sätt i XHTML förstås). IMHO-citat översätts vanligtvis till " av bara en anledning - du vill inte skriva två funktioner för att konvertera text till en säker form när du ersätter i XML/HTML/XHTML.

Syftet med denna lektion:

  • BI måste känna till XML-inspelningsformatet
  • BI ska kunna upprätta ett dokument i form av XML-kod
  • BI måste känna till datatyper och kunna använda dem
  • Obs: XML är inte så kortfattat som vi beskriver det i den här handledningen. Vi tar bara hänsyn till de funktioner i XML-språket som kommer att användas i ODA-TM-systemet.

    XML. Grunden

    XML skapades för att strukturera, lagra och transportera information.

    Följande exempel, "En anteckning från en vän till en vän," har XML-formuläret:

    Nikolay Ivan Påminnelse Jag hoppas att du inte har glömt vårt möte

    Visuellt kan denna kod representeras i följande form (Fig. 1.).

    Koden har en avsändare och en mottagare av information, den har även ett meddelandehuvud och en text.

    Det är tänkt att bearbetas, skickas och visas av någon.

    Men ändå gör det här XML-dokumentet ingenting. Det är bara information insvept i taggar.

    XML - träd

    XML har en trädstruktur. Dokumentet har alltid ett rotelement (instruktionen har inget med trädet att göra). Ett trädelement har alltid ättlingar och förfäder, förutom rotelementet, som inte har några förfäder, och återvändsgrändelement (trädlöv), som inte har några ättlingar. Varje element i trädet är beläget på en viss häckningsnivå (nedan kallad "nivån"). Element på samma nivå har föregående och nästa element.

    Skapa dina egna taggar med XML

    Det finns inget standardformat för att skapa taggar (deskriptorer, element).

    XML har inga fördefinierade taggar.

    • XML låter författaren definiera sina egna taggar och sin egen dokumentstruktur.
    • XML används för att överföra data
    • XML är ett mjukvaru- och hårdvaruoberoende verktyg för att överföra information.
    • XML är nu lika viktigt för webben som HTML
    • XML är det vanligaste verktyget för att överföra data mellan olika applikationer
    • XML används i många aspekter av webbutveckling, ofta för att förenkla datalagring och utbyte
    XML-syntax

    Syntaxen för XML-regler är mycket enkel och logisk

    • Alla XML-element måste ha en avslutande tagg
    • XML-element måste kapslas korrekt (det ena inuti det andra och inte i något fall skära varandra)
    • XML-dokument måste ha ett rotelement (XML-dokument måste innehålla ett element som är förälder till alla andra element. Detta element kallas rotelementet.
    • XML-attributvärdet måste omges av citattecken.
    Kommentarer

    Om du behöver göra något fragment av ett XML-dokument helt "osynligt" för analysprogrammet, kan du formatera det som en kommentar genom att skriva tecknen framför det< !-- , а после него - символы -->med två bindestreck i rad.

    Till exempel:

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

    Analysatorprogrammet kommer att hoppa över hela denna struktur utan att ens "titta" på den.

    Den här kommentarsyntaxen sätter två begränsningar på den:

    • Du kan inte skriva två bindestreck i rad i en kommentar;
    • en kommentar kan inte avslutas med ett bindestreck.
    XML-element

    Ett XML-element är allt från elementets starttagg till dess sluttagg.

    Elementet kan innehålla:

    • andra element
    • text
    • attribut
    • eller en kombination av allt ovan...
    XML-namnregler

    XML-element måste följa dessa namnregler:

    • Namn kan innehålla bokstäver, siffror och andra symboler
    • Namn kan inte börja med en siffra eller skiljetecken
    • Namn får inte innehålla mellanslag
    Attribut

    Attribut ger Ytterligare information om element som inte ingår i datan.

    I exemplet nedan är filtypen inte relevant för data, men är viktig för programvara som kan manipulera elementet:

    dator.gif

    XML-attribut måste omges av citattecken

    Attributvärden måste alltid stå inom citattecken. Antingen enkla eller dubbla citattecken kan användas. Exempel: för att bestämma könet på en person kan elementet skrivas så här:

    Om själva attributvärdet innehåller dubbla citattecken kan du använda enstaka citat, som i det här exemplet:

    eller så kan du använda karaktärsobjekt: &&

    Några exempel på användning av datatypen Datum

    Datum som ett attribut

    Tove Jani Reminder Glöm mig inte i helgen!

    Datum som element

    10/01/2008 Tove Jani Påminnelse Glöm mig inte i helgen!

    Datum som ett utökat element

    01/10/2008 Tove Jani Påminnelse Glöm mig inte i helgen!

    Metadataattribut

    Dessa identifierare kan användas för att definiera XML-element.

    Exempel:

    Tove Jani Reminder Glöm mig inte i helgen! Jani Tove Re: Reminder Jag kommer inte

    Data om data måste lagras som attribut, och själva data måste lagras som element.

    XML. Datatyp Inbyggda enkla typer Datum och tid
    • dateTime innehåller datum och tid i formatet CCYY-MM-DThh:mm:ss
    • varaktighet - representerar en tidsmässig varaktighet, som uttrycks i termer av gregorianska dagar, timmar, minuter och sekunder.

    Till exempel: spela in P1Y2M3DT10H30M45S betyder ett år (1Y), två månader (2M), tre dagar (3DT), tio timmar (10H), trettio minuter (30M) och 45 sekunder (45S).

    Posten kan förkortas P120M betyder 120 månader och T120M betyder 120 minuter.

    • tid innehåller tiden i normalt format hh:mm:ss
    • datum innehåller datumet i formatet CCYY-MM-DD
    • gYearMonth tilldelar år och månad i formatet CCYY-MM
    • gYear betyder året i formatet CCYY
    • gMonthDay innehåller månaden och dagen i formatet MM-DD
    • gDag dag i månaden i format DD
    • gMånad månad i format MM
    Karaktärssträngar

    sträng är den grundläggande teckentypen.

    En teckensträng som en sekvens av Unicode-tecken, inklusive mellanslag, tabb, vagnretur och radmatningstecken.

    • normalizedString - en undertyp av typen - dessa är strängar som inte innehåller radmatningar "\n", vagnretur "\r" och horisontella flikar "\t".
      • token - en undertyp av typen normalizedString - nej, förutom inledande och efterföljande mellanslag och flera på varandra följande mellanslag.
        • språk - token-undertyp, definierad för att registrera namnet på ett språk enligt rekommendationen i RFC 1766, till exempel ru, en, de, fr.
        • NMTOKEN är en token-undertyp som endast används i attribut för att registrera deras uppräknade värden.
        • Namn - en undertyp av token, som består av XML-namn - sekvenser av bokstäver, siffror, bindestreck, punkter, kolon, understreck, som börjar med en bokstav (förutom den reserverade sekvensen av bokstäver X, x, M, m, L, l i valfri kombination av fall) eller understreck. Namn som börjar med en sträng xml, används av själva XML-specifikationen.
          • NCName är en undertyp av namn som inte innehåller ett kolon. Tre undertyper definieras: ID, IDREF, ENTITY
    Binära typer
    • boolen - binär, logisk. Accepterar värden: True eller False (1 eller 0)
    • base64Binary - Base64-kodade binära heltal
    • hexBinary - binära heltal i hexadecimal form utan några ytterligare tecken
    Riktiga nummer
    • decimal är reella tal skrivna med en fast punkt: 123,45, -0,48747798, etc.
    • dubbla och flytande typer överensstämmer med IEEE754-85-standarden, skriven med fast eller flyttal.
    Heltal
    • heltal - den grundläggande heltalstypen som innehåller tal med ordningen noll, förstås som en undertyp decimal
    • nummer - definierar ett nummer (utan begränsningar för antalet siffror); kan innehålla tecken, bråk och exponent. Värdena förändras

    från 1,7976931348623157E+308 till 2,2250738585072014E-308

    Vi fortsätter vår studie av XML igen och i den här artikeln kommer vi att bekanta oss med sådana XML-konstruktioner som bearbetningsinstruktioner, kommentarer, attribut och andra XML-element. Dessa element är grundläggande och låter dig på ett flexibelt sätt, i strikt enlighet med standarden, markera dokument av absolut vilken komplexitet som helst.

    Vi har redan delvis diskuterat några punkter, såsom XML-taggar, i den tidigare artikeln "". Nu kommer vi att beröra detta ämne igen och undersöka det mer i detalj. Detta görs specifikt för att göra det lättare för dig att få hela bilden av XML-konstruktioner.

    XML-element. Tomma och icke-tomma XML-element

    Som nämnts i föregående artikel, markerar inte taggar i XML bara text, som är fallet i HTML, utan markerar enskilda element (objekt). I sin tur organiserar element hierarkiskt information i ett dokument, vilket i sin tur gjorde dem till de viktigaste strukturella enheterna i XML-språket.

    I XML kan element vara av två typer - tomma och icke-tomma. Tomma element innehåller inga data, såsom text eller andra konstruktioner. Till skillnad från tomma element kan icke-tomma element innehålla vilken data som helst, såsom text eller andra XML-element och konstruktioner. För att förstå poängen med ovanstående, låt oss titta på exempel på tomma och icke-tomma XML-element.

    Tomt XML-element

    Icke-tomt XML-element

    Elementinnehåll...

    Som vi kan se från exemplet ovan är den största skillnaden mellan tomma element och icke-tomma att de endast består av en tagg. Dessutom är det också värt att notera att i XML är alla namn skiftlägeskänsliga. Det betyder att namnen myElement, MyElement, MYELEMENT osv. skiljer sig därför från varandra det här ögonblicket Det är värt att komma ihåg direkt för att undvika misstag i framtiden.
    Så vi räknade ut elementen. Låt oss nu gå vidare till nästa punkt, som är den logiska organisationen av XML-dokument.

    Logisk organisation av XML-dokument. Trädstruktur för XML-data

    Som ni minns är XML-språkets huvudkonstruktion element, som kan innehålla andra kapslade konstruktioner och därigenom bilda hierarkisk struktur trädvy. I detta fall föräldraelement kommer att vara roten, och alla andra barn kommer att vara grenar och löv av XML-trädet.

    För att göra det lättare att förstå ovanstående, låt oss titta på följande bild med ett exempel.

    Som vi kan se är att organisera ett XML-dokument som ett träd en ganska enkel struktur att bearbeta. Samtidigt är trädets uttrycksfulla komplexitet ganska stor. Trädrepresentationen är det mest optimala sättet att beskriva objekt i XML.

    XML-attribut. Regler för att skriva attribut i XML

    I XML kan element också innehålla attribut med värden tilldelade dem, som placeras i enkla eller dubbla citattecken. Attributet för ett element ställs in enligt följande:

    I det här fallet användes ett attribut med namnet "attribut" och värdet "värde". Det är värt att omedelbart notera att XML-attributet måste innehålla något värde och får inte vara tomt. Annars blir koden felaktig ur XML-synpunkt.

    Det är också värt att uppmärksamma användningen av citattecken. Attributvärden kan omges av antingen enkla eller dubbla citattecken. Dessutom är det också möjligt att använda vissa citat inom andra. För att demonstrera, överväga följande exempel.

    Innan vi tittar på andra XML-konstruktioner är det också värt att notera att specialtecken som et-tecken "&" eller vinkelparenteser "" inte kan användas som värden när man skapar attribut. Dessa tecken är reserverade som kontrolltecken ("&" är en entitet och "" öppnar och stänger en elementtagg) och kan inte användas i sin "rena form". För att använda dem måste du tillgripa att ersätta specialtecken.

    XML-bearbetningsinstruktioner (bearbetningsinstruktioner). XML-deklaration

    XML har förmågan att inkludera instruktioner i ett dokument som innehåller specifik information för applikationer som kommer att behandla ett visst dokument. Bearbetningsinstruktioner i XML skapas enligt följande.

    Som du kan se från exemplet ovan, i XML, är bearbetningsinstruktioner omgivna av hörncitattecken med ett frågetecken. Det här är lite som det vanliga som vi tittade på i de första PHP-lektionerna. Den första delen av bearbetningsinstruktionen anger till vilken applikation eller system den andra delen av denna instruktion eller dess innehåll är avsedd. Handläggningsinstruktioner är dock endast giltiga för de ansökningar som de är riktade till. Ett exempel på en bearbetningsinstruktion kan vara följande instruktion.

    Det är värt att notera att XML har en speciell konstruktion som är mycket lik en bearbetningsinstruktion, men det är inte en sådan. Detta är en XML-deklaration som förmedlas till processorn programvara viss information om XML-dokumentets egenskaper, såsom kodning, version av språket som detta dokument är skrivet på, etc.

    Som du kan se av exemplet ovan innehåller XML-deklarationen så kallade pseudoattribut, som är väldigt lika de vanliga attributen som vi pratade om precis ovan. Faktum är att en XML-deklaration och bearbetningsinstruktioner per definition inte kan innehålla attribut, så dessa deklarationer kallas pseudoattribut. Detta är värt att komma ihåg för framtiden för att undvika olika misstag.

    Eftersom vi har behandlat pseudoattribut, låt oss titta på vad de betyder.

    • Encoding – ansvarar för kodningen av XML-dokumentet. Vanligtvis används UTF8-kodning.
    • Version – den version av XML-språket som detta dokument är skrivet på. Vanligtvis är detta XML version 1.0.

    Nåväl, låt oss nu gå vidare till den avslutande delen av artikeln och överväga sådana XML-konstruktioner som kommentarer och CDATA-sektioner.

    Hej kära webbplatsbesökare! Låt oss fortsätta på ämnet XML-markeringsspråk och titta på användningen av attribut. Attribut kan finnas i XML-element, precis som i HTML. Attribut ger ytterligare information om ett element.

    XML-attribut

    I HTML-attribut ge ytterligare information om elementen:

    XML-attribut måste omges av citattecken

    Värderingar attribut i xml ska alltid stå inom citattecken. Både enkla och dubbla citattecken kan användas. För att ange könet på personelementet kan du skriva det så här:

    Om själva attributvärdet innehåller dubbla citattecken kan du använda enkla citattecken, som i det här exemplet:

    XML-element kontra attribut

    Ta en titt på följande exempel:

    Victoria
    Petrova

    kvinna
    Victoria
    Petrova

    I det första exemplet är sex ett attribut. I det senare är sex ett element. Båda exemplen ger samma information.

    Det finns inga regler om när man ska använda attribut och när man ska använda element. Attribut är praktiskt i HTML. I XML rekommenderar jag att du undviker dem. Använd element istället.

    Mitt favoritsätt

    Följande tre XML-dokument innehåller exakt samma information:

    XML-datumattributet används i det första exemplet:

    Det utökade datumelementet används i det tredje: (DETTA ÄR MITT FAVORITVÄG):



    10
    01
    2008

    Peter
    Sveta
    Påminnelse

    Undvika XML-attribut?

    Några av problemen med att använda xml-attribut:

    • attribut kan inte innehålla flera värden (element kan)
    • attribut kan inte innehålla trädstrukturer (element kan)
    • attribut är svårare att utöka (för framtida ändringar)

    Gör inte så här:


    XML-attribut för metadata


    Vasya
    Sveta
    Påminnelse
    Glöm inte att ringa mig imorgon!


    Sveta
    Vasya
    Re: Påminnelse
    OK

    ID-attributen ovan används för att identifiera olika anteckningar. De är inte en del av själva anteckningen.

    Det jag försöker säga här är att metadata (data om data) ska lagras som xml-attribut och själva datan ska lagras som element.

    Tack för din uppmärksamhet!.