XML-språkets grunnleggende prinsipper for arbeid. Grunnleggende XML-konstruksjoner - XML-elementer, tagger, attributter, behandlingsinstruksjoner, CDATA-seksjoner, kommentarer

Standarden definerer to nivåer av XML-dokumentets gyldighet:

  • Velbygget(Velformet). Et godt utformet dokument følger alle de generelle XML-syntaksreglene som gjelder for ethvert XML-dokument. Og hvis for eksempel start-taggen ikke har en tilsvarende slutt-tag, så dette feil konstruert XML-dokument. Et dokument som ikke er godt utformet kan ikke betraktes som et XML-dokument; En XML-prosessor (parser) skal ikke behandle den på vanlig måte og er forpliktet til å klassifisere situasjonen som en fatal feil.
  • Gyldig(Gyldig). Et gyldig dokument samsvarer i tillegg med noen semantiske regler. Dette er en strengere tilleggskontroll av korrektheten til et dokument for overholdelse av forhåndsbestemte, men allerede eksterne regler, for å minimere antall feil, for eksempel strukturen og sammensetningen av et gitt dokument eller en familie av dokumenter. Disse reglene kan utvikles både av brukeren selv og av tredjepartsutviklere, for eksempel utviklere av ordbøker eller datautvekslingsstandarder. Vanligvis er slike regler lagret i spesielle filer - skjemaer, der strukturen til dokumentet, alle tillatte navn på elementer, attributter og mye mer er beskrevet på den mest detaljerte måten. Og hvis et dokument, for eksempel, inneholder et elementnavn som ikke er forhåndsdefinert i skjemaer, vurderes XML-dokumentet ugyldig; den validerende XML-prosessoren (validatoren), når den sjekker for samsvar med regler og skjemaer, er forpliktet (etter brukerens valg) til å rapportere en feil.

Disse to konseptene har ikke en tilstrekkelig godt etablert standardisert oversettelse til russisk, spesielt konseptet gyldig som også kan oversettes som gyldig, lovlig, pålitelig, passe, eller testet for samsvar med regler, standarder, lover... Noen programmerere bruker det veletablerte sporingspapiret i hverdagen. Validny».

XML-syntaks

Denne delen omhandler kun riktig konstruksjon XML-dokumenter, det vil si deres syntaks.

XML er en hierarkisk struktur designet for å lagre alle data; visuelt kan strukturen representeres som et tre. Det viktigste obligatoriske syntaktiske kravet er at dokumentet kun har ett rotelement(rotelement) (alternativt kalt dokumentelement). Dette betyr at teksten eller andre data i hele dokumentet må ligge mellom den eneste en startrottag og dens tilsvarende slutttag.

Følgende enkleste eksempel er et godt utformet XML-dokument: Dette er en bok: "Lille bok" Den første linjen i XML-dokumentet kalles XML-erklæring(XML-deklarasjon) er en valgfri streng som indikerer versjonen av XML-standarden (vanligvis 1.0), tegnkoding og eksterne avhengigheter kan også spesifiseres her. Spesifikasjonen krever at XML-prosessorer støtter Unicode-kodingene UTF-8 og UTF-16 (UTF-32 er valgfritt). Andre kodinger basert på ISO / IEC 8859-standarden er anerkjent som akseptable, støttes og mye brukt (men ikke nødvendig), andre kodinger er også akseptable, for eksempel russisk Windows-1251, KOI-8.

En kommentar kan plasseres hvor som helst i treet. XML-kommentarer plasseres i et par tagger ... De to bindestrekene (-) kan ikke brukes hvor som helst i en kommentar.

Nedenfor er et eksempel på en enkel XML-merket kulinarisk oppskrift:

Enkelt brød Mel Gjær Varmt vann Salt

Struktur

Resten av dette XML-dokumentet består av nestede elementer noen av dem har egenskaper og innhold. Element består vanligvis av start- og sluttkoder som rammer inn tekst og andre elementer. Åpningsbrikke består av elementnavnet i vinkelparenteser, for eksempel " »; sluttmerke består av samme navn i vinkelparenteser, men en skråstrek legges til før navnet, for eksempel " ». Innholdet i elementet(innhold) refererer til alt mellom åpnings- og avslutningstaggen, inkludert tekst og andre (nestede) elementer. Nedenfor er et eksempel på et XML-element som inneholder en start-tag, en slutt-tag og innholdet i elementet:

Elt igjen, legg på en bakeplate og sett i ovnen.

Mel

I eksemplet ovenfor har "ingredient"-elementet to attributter: "amount", som har verdien "3", og "unit", som har verdien "glass". Fra synspunktet til XML-markering gir de gitte attributtene ingen mening, men er bare et sett med tegn.

I tillegg til tekst kan et element inneholde andre elementer:

Bland alle ingrediensene og elt grundig. Dekk til med et klede og la stå i en time i et varmt rom. Elt igjen, legg på en bakeplate og sett i ovnen.

I dette tilfellet inneholder "Instruksjoner"-elementet tre "trinn"-elementer. XML tillater ikke overlappende elementer. For eksempel er kodebiten nedenfor feil fordi «em»- og «strong»-elementene overlapper hverandre.

Vanlig aksent fremhevet og fremhevet dedikert

Hvert XML-dokument må inneholde nøyaktig ett rotelement(rotelement eller dokumentelement), så følgende kodebit kan ikke betraktes som et gyldig XML-dokument.

Entitet nr. 1 Essens #2

For å betegne et element uten innhold kalt tomt element, nødvendig bruk en spesiell form for post, som består av én tag, der en skråstrek er plassert etter elementnavnet. Hvis et element ikke er erklært tomt i DTD, men det ikke har noe innhold i dokumentet, for det tillatt bruke denne formen for oppføring. For eksempel:

XML definerer to metoder for å skrive spesialtegn: enhetsreferanse og tegnreferanse. Essensen(entitet) i XML heter data, vanligvis tekstlige, spesielt spesialtegn. Enhetsreferanse(enhetsreferanser) er spesifisert der enheten skal være og består av et og-tegn ("&"), navnet på enheten og semikolon (";"). XML har flere forhåndsdefinerte enheter som "lt" (du kan referere til det ved å skrive "< ») для левой угловой скобки и « amp » (ссылка - « & ») для амперсанда, возможно также определять собственные сущности. Помимо записи с помощью сущностей отдельных символов, их можно использовать для записи часто встречающихся текстовых блоков. Ниже приведён пример использования предопределённой сущности для избежания использования знака амперсанда в названии:

AT&T

Den komplette listen over forhåndsdefinerte enheter består av & ("&"),< («<»), >(">"), "(" "") og "(" "") - de to siste er nyttige for å skrive skilletegn innenfor attributtverdier. Du kan definere enhetene dine i DTD-dokumentet.

Noen ganger er det nødvendig å definere et ikke-brytende mellomrom, som veldig ofte brukes i HTML og er betegnet som det ikke er en slik forhåndsdefinert enhet i XML, den er skrevet ned og bruken forårsaker en feil. Mangelen på denne svært vanlige essensen for mange programmerere er ofte overraskende og dette skaper noen vanskeligheter når de skal migrere HTML-utviklingen deres til XML.

Referanse etter symbolnummer(numerisk tegnreferanse) ser ut som en enhetsreferanse, men i stedet for enhetsnavnet er tegnet # angitt og et tall (i desimal eller heksadesimal notasjon) som er tegnnummeret i Unicode-kodetabellen. Dette er vanligvis tegn som ikke kan kodes direkte, for eksempel en arabisk bokstav i et ASCII-kodet dokument. Et-tegnet kan representeres som følger:

AT&T

Det er mange flere regler for å skrive et godt utformet XML-dokument, men formålet med denne korte oversikten var kun å vise deg det grunnleggende som trengs for å forstå strukturen til et XML-dokument.

Historie

Fødselsåret for XML kan betraktes som 1996, på slutten av hvilket utkastet til språkspesifikasjonen dukket opp, eller når denne spesifikasjonen ble godkjent. Det hele startet med at SGML-språket dukket opp i 1986.

SGML (Standard Generalized Markup Language) har etablert seg som et fleksibelt, komplekst og altomfattende metaspråk for å lage markup-språk. Til tross for at begrepet hypertekst dukket opp i 1965 (og de underliggende prinsippene ble formulert i 1945), har ikke SGML en hypertekstmodell. Opprettelsen av SGML kan trygt kalles et forsøk på å forstå omfanget, siden det kombinerer funksjoner som sjelden brukes sammen. Dette er dens største ulempe - kompleksiteten og, som et resultat, de høye kostnadene ved dette språket begrenser bruken til store selskaper som har råd til å kjøpe riktig programvare og ansette høyt betalte spesialister. I tillegg har små selskaper sjelden så komplekse problemer at de involverer SGML i løsningen.

SGML er mest brukt for å lage andre markup-språk, det var med dens hjelp at markup-språket for hypertekstdokumenter - HTML, ble opprettet, hvis spesifikasjon ble godkjent i 1992. Utseendet var assosiert med behovet for å organisere et raskt voksende utvalg av dokumenter på Internett. Den eksplosive veksten i antall Internett-tilkoblinger og følgelig nettservere har ført til en etterspørsel etter koding av elektroniske dokumenter som SGML ikke kunne takle på grunn av de høye vanskelighetene med å lære. Innkomsten av HTML, et veldig enkelt markup-språk, løste raskt dette problemet: dets enkle læring og rike dokumentasjonsverktøy gjorde det til det mest populære språket for Internett-brukere. Men etter hvert som antallet og kvaliteten på dokumenter på nettet vokste, vokste også kravene til dem, og HTMLs enkelhet ble den største ulempen. Det begrensede antallet tagger og fullstendig likegyldighet til strukturen til dokumentet fikk utviklerne i personen til W3C-konsortiet til å lage et markup-språk som ikke var så komplekst som SGML, og ikke så primitivt som HTML. Som et resultat ble XML født ved å kombinere enkelheten til HTML med logikken til SGML-markering og møte kravene til Internett.

Fordeler og ulemper

Verdighet

ulemper

  • Tvetydighet ved modellering.
  • XML inneholder ikke morsmålsstøtte for datatyper. Den har ikke sterk skriving, det vil si begrepene "heltall", "strenger", "datoer", "booleanere", etc.
  • Den hierarkiske datamodellen som tilbys av XML er begrenset sammenlignet med relasjonsmodellen og objektorienterte grafer og nettverksdatamodellen.

Kartlegging av XML på World Wide Web

Det er tre vanligste måter å konvertere et XML-dokument til en brukersynlig visning:

  1. Bruk av CSS-stiler;
  2. Bruke en XSLT-transformasjon;
  3. Skrive en XML-dokumentbehandler i et programmeringsspråk.

Uten CSS eller XSL vises XML-dokumentet som ren tekst i de fleste nettlesere. Noen nettlesere som Internet Explorer, Mozilla og Mozilla Firefox viser dokumentstrukturen som et tre, slik at noder kan skjules og utvides med museklikk.

Bruk av CSS-stiler

Prosessen ligner på å bruke CSS på et HTML-dokument for visning.

For å bruke CSS når det vises i en nettleser, må XML-dokumentet inneholde en spesifikk lenke til stilarket. For eksempel:

Dette skiller seg fra HTML-tilnærmingen der elementet brukes .

Bruke en XSLT-transformasjon

XSL er en teknologi som beskriver hvordan man formaterer eller transformerer data i et XML-dokument. Dokumentet omdannes til et format som egner seg for visning i en nettleser. Nettleser er den vanligste bruken av XSL, men husk at du kan bruke XSL til å transformere XML til et hvilket som helst format, for eksempel

Vi vil fortsette vår studie av XML igjen, og i denne artikkelen vil vi bli kjent med slike XML-konstruksjoner som behandlingsinstruksjoner, kommentarer, attributter og andre XML-elementer. Disse elementene er grunnleggende og lar deg fleksibelt merke dokumenter av absolutt hvilken som helst kompleksitet i strengt samsvar med standarden.

Noen punkter, for eksempel XML-koder, har vi allerede delvis vurdert i forrige artikkel "". Nå skal vi berøre dette emnet igjen og analysere det mer detaljert. Dette er gjort med vilje for å gjøre det lettere for deg å forstå hele bildet av XML-konstruksjoner.

XML-elementer. Tomme og ikke-tomme XML-elementer

Som nevnt i forrige artikkel, markerer ikke tagger i XML bare tekst, slik tilfellet er i HTML, men fremhever enkeltelementer (objekter). På sin side organiserer elementer informasjon hierarkisk i et dokument, som igjen gjorde dem til de viktigste strukturelle enhetene i XML-språket.

I XML kan elementer være av to typer - tomme og ikke-tomme. Tomme elementer inneholder ingen data, for eksempel tekst eller andre konstruksjoner. I motsetning til tomme elementer, kan ikke-tomme elementer inneholde alle data, for eksempel tekst eller andre elementer og strukturer i XML-språket. For å forstå det ovenstående, la oss se på eksempler på tomme og ikke-tomme XML-elementer.

Tomt XML-element

Ikke-tomt XML-element

Vareinnhold...

Som vi kan se fra eksempelet ovenfor, er hovedforskjellen mellom tomme og ikke-tomme elementer at de kun består av én tag. Det er også verdt å merke seg at i XML er alle navn sensitive for store og små bokstaver. Dette betyr at navnene myElement, MyElement, MYELEMENT, etc. skiller seg fra hverandre, så dette øyeblikket er verdt å huske med en gang for å unngå feil i fremtiden.
Så vi fant ut elementene. La oss nå gå videre til neste punkt, for eksempel den logiske organiseringen av XML-dokumenter.

Den logiske organiseringen av XML-dokumenter. XML-datatrestruktur

Som du husker er hovedkonstruksjonen til XML elementer som kan inneholde andre nestede konstruksjoner og dermed danne en hierarkisk struktur i form av et tre. I dette tilfellet vil det overordnede elementet være roten, og alle andre barn vil være grenene og bladene til XML-treet.

For å gjøre det lettere å forstå essensen av ovenstående, la oss se på følgende bilde med et eksempel.

Som vi kan se, er organisering av et XML-dokument som et tre en ganske enkel struktur å behandle. Samtidig er den uttrykksfulle kompleksiteten til selve treet ganske stor. Det er trevisningen som er den mest optimale måten å beskrive objekter i XML.

XML-attributter. Skriveregler for XML-attributter

I XML kan elementer også inneholde attributter med tildelte verdier, som er omsluttet av enkle eller doble anførselstegn. Attributtet for et element er satt som følger:

I dette tilfellet ble et attributt kalt "attributt" og verdien "verdi" brukt. Det skal bemerkes med en gang at XML-attributtet må inneholde en viss verdi og ikke kan være tomt. Ellers vil koden være feil fra XML-synspunkt.

Vær også oppmerksom på bruken av sitater. Attributtverdier kan omsluttes av enten enkle eller doble anførselstegn. I tillegg er det også mulig å bruke noen sitater inne i andre. Tenk på følgende eksempler for demonstrasjon.

Før du ser på andre XML-konstruksjoner, er det også verdt å merke seg at spesialtegn som og-tegnet "&" eller vinkelparentesene "<>". Disse tegnene er reservert som kontrolltegn ("&" er en enhet, og "<» и «>"Åpne og lukk en element-tag) og kan ikke brukes i sin" rene form ". For å bruke dem, må du ty til å erstatte spesialtegn.

XML-behandlingsinstruksjoner (behandlingsinstruksjoner). XML-erklæring

XML har muligheten til å inkludere instruksjoner i et dokument som inneholder spesifikk informasjon for applikasjoner som skal behandle et bestemt dokument. XML-behandlingsinstruksjoner lages som følger.

Som du kan se i eksempelet ovenfor, er behandlingsinstruksjoner i XML omsluttet av vinkelanførselstegn med et spørsmålstegn. Dette er litt som det vanlige vi så på i de første PHP-opplæringene. Den første delen av en behandlingsinstruksjon definerer applikasjonen eller systemet som den andre delen av denne instruksen eller innholdet er ment for. Behandlingsinstruksen er imidlertid kun gyldig for søknadene de er stilt til. Et eksempel på en behandlingsinstruksjon vil være følgende instruksjon.

Det er verdt å merke seg at det er en spesiell konstruksjon i XML som er veldig lik en prosesseringsinstruksjon, men det er den ikke. Dette er en XML-erklæring som formidler til behandlingsprogramvaren noe informasjon om egenskapene til XML-dokumentet, for eksempel kodingen, språkversjonen som dokumentet er skrevet i, etc.

Som du kan se fra eksempelet ovenfor, inneholder XML-deklarasjonen såkalte pseudo-attributter, som er veldig like de vanlige attributtene som vi snakket om rett ovenfor. Faktum er at per definisjon kan en XML-deklarasjon og behandlingsinstruksjoner ikke inneholde attributter, så disse erklæringene ble kalt pseudoattributter. Dette er verdt å huske for fremtiden for å unngå ulike feil.

Siden vi har behandlet pseudo-attributter, la oss se på hva de betyr.

  • Encoding - er ansvarlig for å kode et XML-dokument. Vanligvis brukes UTF8-koding.
  • Versjon - Versjonen av XML-språket som dette dokumentet er skrevet på. Dette er vanligvis XML versjon 1.0.

La oss nå gå videre til den siste delen av artikkelen og se på slike XML-konstruksjoner som kommentarer og CDATA-seksjoner.

En introduksjon til korrekt markering

XML midler Extensible Markup Language, med fokus på markering(markering). Du kan lage tekst og merke den med kantmerker, gjøre hvert ord, setning eller passasje til identifiserbar, sorterbar informasjon. Filer du lager, eller kopier av dokumentet, består av elementer (tags) og tekst, og elementene bidrar til å forstå dokumentet riktig ved lesing på papir eller til og med behandle det elektronisk. Jo flere beskrivende elementer det er, jo flere deler av dokumentet kan identifiseres. Fra de første dagene av eksistensen av markeringen, er en av fordelene ved tap av et datasystem, skrevet ut data er fortsatt lesbare takket være taggene.

Markup-språk har gått fra de første skjemaene laget av selskaper og myndigheter, til Standard Generalized Markup Language (SGML), Hypertext Markup Language (HTML) og til slutt til XML. SGML kan høres komplisert ut, og HTML (som egentlig bare var en samling av elementer til å begynne med) var ikke kraftig nok til å identifisere informasjon. XML ble designet for å være et brukervennlig og utvidbart merkespråk.

Du kan lage dine egne elementer i XML for å representere biter av data nøyaktig. Dokumenter kan ikke bare deles inn i avsnitt og overskrifter, men også velge eventuelle fragmenter i dokumentet. For at dette skal være effektivt, må du bestemme den endelige listen over elementene dine og holde deg til den. Elementer kan defineres i en Document Type Definition (DTD) eller et skjema, som diskutert kort nedenfor. Når du har mestret og begynt å bruke XML, kan du gjerne eksperimentere med elementnavn ved å lage ekte filer.

Bygge et XML-dokument

Som nevnt er XML-filer sammensatt av tekst og markup. Mesteparten av teksten er plassert i elementer der teksten er omgitt av tagger. La oss for eksempel si at du vil lage en XML-kokebok. Vi har en oppskrift som heter Iskrem sundae som skal konverteres til XML. For å merke oppskriftsnavnet legger vi teksten i et element som begynner og slutter med tagger. Dette elementet kan kalles oppskriftsnavn. For å markere startkoden til et element, skriv navnet i vinkelparenteser<>), som dette: ... La oss så skrive inn teksten Ice Cream Sundae. Etter teksten setter du en avsluttende kode, som er elementnavnet i vinkelparenteser, pluss en skråstrek (/) foran elementnavnet, slik:... Disse kodene dannes element, der du kan skrive inn tekst og til og med andre elementer.

Varenavn kan opprettes både for individuelle dokumenter og for grupper av dokumenter. I henhold til dine krav kan du spesifisere reglene som må følges for elementene. Elementer kan være strengt ad hoc eller generelle nok. Reglene bør også definere hva som er akseptabelt for hvert element. De kan være strenge, løse eller middels. Bare lag elementer som definerer delene av dokumentet som du synes er viktige.

Starter oppretting av XML-fil

Den første linjen i et XML-dokument kan være en XML-erklæring. Denne valgfrie delen av filen definerer den som en XML-fil, som kan hjelpe automatiske verktøy og personer til å gjenkjenne filen som XML i stedet for SGML eller annen markering.

Erklæringen kan se ganske enkelt ut eller inkludere XML-versjonen ( ) og til og med tegnkoding somfor Unicode. Siden denne erklæringen må være helt i begynnelsen av filen, hvis du planlegger å kombinere små XML-filer til en større fil, er det best å hoppe over dette valgfrie elementet.

Oppretting av rotelementer

Start- og slutttaggene til rotelementet omgir hele teksten i XML-dokumentet. Det skal bare være ett rotelement i filen, og dette er den nødvendige "skin" for den. viser et utdrag av eksemplet jeg bruker her med et rotelement (oppskrift). (Se hele XML-filen i.)

Oppføring 1. Rotelement

Når du bygger dokumentet ditt, vil du plassere tekst og flere tagger mellom og .

Varenavn

Skill mellom store og små bokstaver

Når du genererer XML, må tilfellet for start- og sluttkoder samsvare. Ellers kan du få en feilmelding når du bruker eller viser XML. Internet Explorer viser for eksempel ikke tekst hvis det oppstår uoverensstemmelse mellom store og små bokstaver. I stedet viser den meldinger om uoverensstemmelse mellom start- og slutttaggene.

Så vi har et rotelement ... I XML velges elementnavn først, og deretter bestemmes tilsvarende DTD eller skjema basert på disse navnene. Navn kan inneholde bokstaver, tall og spesialtegn som understrek (_). Her er noen navneregler å huske:

  • Mellomrom er ikke tillatt i elementnavn.
  • Navn må begynne med en bokstav, ikke et tall eller tegn. (Enhver kombinasjon av bokstaver, tall og gyldige symboler kan brukes etter denne første bokstaven.)
  • Saken er irrelevant, men respekter den for å unngå forvirring.
Oppføring 2. Andre elementer
Iskrem sundae 5 minutter

Et XML-dokument kan inneholde tomme tagger, som det ikke er noe i, og som kan uttrykkes som en enkelt tagg, i stedet for et par start- og sluttkoder. Det kan for eksempel være en frittstående tag i HTML-stil ... Det inneholder ingen barn eller tekst, så det er et tomt element og kan skrives som (med et mellomrom og den kjente etterfølgende skråstreken på slutten).

Hekkeelementer

Vedlegget Er plassering av elementer innenfor andre elementer. Disse nye elementene kalles datterselskap elementer, og elementene som omgir dem er deres foreldrenes elementer. Inn til rotelementet nestet flere elementer. Dette er nestede barn , og Innvendig element det er flere like barn ... Nesting kan legge ned et XML-dokument.

En vanlig syntaksfeil er relatert til overordnet og underordnet nesting. Hvert underordnede element må plasseres fullstendig mellom start- og slutttaggene til det overordnede elementet. Barneelementer må avsluttes før starten av neste barn.

Et eksempel på korrekt hekking er gitt i. Tagger begynner og slutter uten sammenveving med andre tagger.

Oppføring 3. Riktig nesting av XML-elementer.
Iskrem sundae 3 sjokoladesirup eller sjokoladefudge 1 nøtter 1 kirsebær 5 minutter

Legge til attributter

Noen ganger legges elementer til Egenskaper... Attributter består av et navn-verdi-par, der verdien er omsluttet av doble anførselstegn ("), som dette: type =" dessert ". Attributter lar deg lagre flere parametere med et element, og endre verdiene til disse parameterne fra element til element i samme dokument ...

Et attributt - eller til og med flere attributter - er spesifisert i startkoden til et element: ... Når du legger til flere attributter, er de atskilt med mellomrom: ... XML-filen vises slik den ser ut nå.

Oppføring 4. Vår XML-fil med elementer og attributter
Iskrem sundae 5 minutter

Et hvilket som helst antall attributter kan brukes. Tenk på detaljene du kan legge til i dokumentet. Attributter er spesielt nyttige hvis dokumenter skal lagres - for eksempel etter type oppskrift. Attributtnavn kan inneholde de samme tegnene som elementnavn, med de samme reglene for å ekskludere mellomrom og innledende navn med en bokstav.

Riktig og feil konstruert XML

Hvis du følger reglene som er definert i strukturen din, kan du enkelt generere godt utformet XML. Riktig XML Er XML-kode kompilert i samsvar med alle XML-reglene: korrekt navn på elementer, nesting, navn på attributter, etc.

Avhengig av hva du gjør med XML, kan det hende du må jobbe med godt utformet XML. Tenk på eksemplet ovenfor på sortering etter oppskriftstype. Det er nødvendig at elementene inneholdt typeattributtet. Det er veldig viktig å være i stand til å validere koden og sikre at verdien av dette attributtet alltid er tilstede.

Under validering betyr å sjekke strukturen til dokumentet for samsvar med reglene som er etablert for det og definisjonen av underordnede elementer for hvert overordnet element. Disse reglene er definert i Beskrivelse av dokumenttype(DTD) eller i et skjema. Denne valideringen krever at du oppretter en DTD eller et skjema og deretter refererer til DTD- eller skjemafilen i XML-filene dine.

For å aktivere validering, må du plassere en dokumenttypeerklæring (DOCTYPE) nærmere begynnelsen av XML-dokumentene dine. Denne linjen inneholder en lenke til en DTD eller et skjema (liste over elementer og regler) som skal brukes til å validere dette dokumentet. DOCTYPE-linjen kan være noe sånt som.

Oppføring 5. DOCTYPE

Dette eksemplet betyr at listen over elementer filen heter filnavn.dtd er plassert på datamaskinen din (det vil si SYSTEM-katalogen, ikke PUBLIC-delingen).

Bruke enheter

Entitet kan være fragmenter av tekst eller spesialtegn. De kan spesifiseres inne i dokumentet eller utenfor det. Enheter må deklareres og uttrykkes på riktig måte for å unngå feil og vises korrekt.

Du kan ikke skrive inn spesialtegn direkte i tekst. For å bruke spesialtegn i teksten, må du lage dem til enheter og bruke kodene til disse tegnene. Du kan definere setninger som et firmanavn som enheter og deretter bruke dem gjennom hele teksten. For å opprette en enhet, gi den et navn og sett inn det navnet og sett inn det navnet i teksten etter og-tegnet (&) og slutter med semikolon - for eksempel (eller et annet navn). Ta deretter med denne koden på DOCTYPE-linjen i hakeparenteser (), som i. Denne koden definerer teksten som erstattes av enheten.

Oppføring 6. Entitet

Å bruke entiteter bidrar til å unngå å gjenta den samme setningen eller informasjonen om og om igjen. Det kan også gjøre det enklere å redigere tekst (for eksempel hvis selskapet endrer navn) mange steder samtidig ved ganske enkelt å tilpasse enhetsdefinisjonsstrengen.

Hvordan unngå feil

Mens du lærer hvordan du oppretter XML-filer, åpner du dem i et XML-redigeringsprogram for å sikre at de er formelt korrekte og for å sikre at XML-reglene følges. Hvis du for eksempel har Windows® Internet Explorer®, kan du ganske enkelt åpne XML-filen i en nettleser. Hvis elementene, attributtene og teksten dine vises, er XML-filen godt utformet. Hvis det er feil, har du sannsynligvis rotet til noe i syntaksen, og du må sjekke dokumentet nøye for skrivefeil eller manglende tagger og skilletegn.

Konklusjon

Når du forstår noen få enkle regler, har du fleksibiliteten til å designe dine egne XML-elementer og deres attributter. XML-regler er ikke kompliserte. Det er også enkelt å skrive et XML-dokument. Nøkkelen er å forstå hva du vil ha fra dokumenter når det gjelder sorterings- og søkefunksjoner, og deretter designe elementer og attributter for å oppfylle disse kravene.

Når du forstår formålet godt og vet hvordan du skal markere teksten din, kan du lage effektive elementer og attributter. Fra dette perspektivet er nøye markering alt som skal til for å lage et godt utformet og brukbart XML-dokument.

XML (eXtensible Markup Language) er en forenklet dialekt av SGML for å beskrive hierarkiske datastrukturer på World Wide Web. Den har blitt utviklet av W3C-arbeidsgruppen siden 1996; den nåværende aksepterte anbefalingen er den andre utgaven av XML 1.0 (oktober 2000), som er fokus for videre diskusjon.

XML er utvilsomt en av de mest lovende teknologiene på WWW, noe som forklarer interessen det gis av både utviklingsselskaper og allmennheten. Før du går videre til beskrivelsen, synes det hensiktsmessig å diskutere årsakene til dets utseende og den påfølgende raske utviklingen. For dette vil vi prøve å se på de WWW-problemene som må løses ved hjelp av en ny generasjon av webteknologier.

HTML formidler ikke betydningen av dokumenter. HTML ble laget for å beskrive strukturer dokumenter (tittel, overskrifter, lister, avsnitt osv.) og til en viss grad regler dem vise(fet, kursiv, etc.). Det er på ingen måte ment å beskrive betydning dokumenter skrevet på det, og i mange tilfeller er det dataene som utgjør essensen av dokumentet, enten det er en børsrapport eller en vitenskapelig publikasjon. Derfor er det behov for et språk for å beskrive data, dessuten data organisert i hierarkiske strukturer. HTML er tungvint og lite fleksibelt. De siste årene har HTML blitt et virvar av tagger som ofte dupliserer hverandre og slett ikke gir klarhet i teksten i dokumentet. Hvis du legger til de ikke-standardiserte HTML-utvidelsene som alle nettleserutviklere gjør seg skyldig i, blir det en alvorlig oppgave å lage mer eller mindre komplekse HTML-dokumenter. På den annen side er et en gang for alle sett med tagger ofte ikke fleksibelt nok til å uttrykke innholdet vi trenger. Konseptet med nettleseren er for begrenset. Med bruken av Java-appleter, skriptspråk og ActiveX-kontroller er nettlesere ikke lenger bare "visning" av HTML-dokumenter; i dag ser de mer ut som programmer som starter spesifikke applikasjoner. Selve konseptet med nettleseren pålegger imidlertid unødvendige begrensninger for brukeren; i mange tilfeller trenger vi Web-orienterte applikasjoner, dvs. programmer som kan lese spesialisert informasjon fra nettsidene og gi den til oss i vanlig form, for eksempel i form av regneark. Dokumentsøk gir for mange koblinger. Vi bruker alle søkemotorer hele tiden og forbanner dem konstant for ulempen med arbeidet vårt. La oss si at jeg trenger alle tekstene til Sergei Dovlatovs bøker tilgjengelig på nettet. Et forsøk på å søke etter forfatterens navn vil resultere i en liste over alle lenker med dette navnet, inkludert minner om Dovlatov, anmeldelser av bøkene hans osv. Det ville være mye mer praktisk å bruke en spesiell kode for å indikere nøyaktig hva jeg ser etter. Kan ikke finne relaterte ressurser. La oss nå anta at jeg fant flere av Dovlatovs historier, som tydeligvis utgjør en enkelt samling. Det er bra om de inneholder en lenke til innholdsfortegnelsen, men ofte er det ikke tilfelle. Derfor er det nødvendig med en måte å indikere at en gitt gruppe med sider er en enkelt ressurs og bør håndteres deretter. Dette krever et standardisert og utviklet system metaforfattere Nettsider.

XML er et forsøk på å løse disse problemene ved å lage et enkelt markup-språk som beskriver vilkårlige strukturerte data. Mer presist er det et metaspråk der spesialiserte språk er skrevet som beskriver data med en viss struktur. Slike språk kalles XML-ordbøker... I motsetning til HTML gir XML ingen veiledning om hvordan dataene beskrevet i XML-dokumentet skal vises. Måten data vises på for forskjellige enheter bestemmes av XSL-stilbeskrivelsesspråket, som spiller omtrent samme rolle for XML som CSS for HTML. En annen grunnleggende forskjell fra HTML er at XML kan inneholde alle tagger som skaperne av XML-ordboken ønsker å bruke. Her er en liste over bare noen få spesialiserte XML-baserte språk som for tiden er i ulike utviklingsstadier av W3C-arbeidsgruppene:

  • MathML er et språk med matematiske formler;
  • SMIL - Multimedia Integration and Synchronization Language;
  • SVG er et 2D vektorgrafikkspråk;
  • RDF - ressurs meta-beskrivelse språk;
  • XHTML er en omformulering av HTML når det gjelder XML.

Prosessen for å behandle et XML-dokument er som følger. Teksten blir analysert av et spesielt program kalt XML-prosessor... XML-prosessoren vet ingenting om semantikken til dataene i dokumentet; den analyserer bare teksten i dokumentet og validerer den mot XML-reglene. Hvis dokumentet riktig innrammet(godt utformet), deretter sendes resultatene av analyseringen av teksten av XML-prosessoren til applikasjonsprogrammet, som utfører sin meningsfulle behandling; hvis dokumentet er feil formatert, det vil si at det inneholder syntaksfeil, må XML-behandleren informere brukeren om dem.

8.1.2. XML-applikasjoner

Spørsmålet oppstår: hva er vitsen med å bruke et «tomt språk» blottet for eget innhold? Faktum er at, til tross for sin tilsynelatende enkelhet, har XML ganske sofistikerte mekanismer for å kontrollere riktigheten av data, tillater kontroll av hierarkiske relasjoner i et dokument, og, viktigst av alt, etablerer en enkelt standard for dokumenter som lagrer data, uansett arten av disse dataene. . La oss se nærmere på noen av bruken av XML-språket.

Tradisjonell databehandling Mulighetene oppført ovenfor lar oss vurdere XML som en plattformuavhengig standard for lagring og presentasjon av informasjon, som i kombinasjon med andre moderne teknologier (spesielt med Java-teknologier), kan bli grunnlaget for å lage alle maskinuavhengige applikasjoner, inkludert for datautveksling mellom server og klient. I tillegg kan XML-baserte spørrespråk som er aktivt utviklet i dag, for alvor konkurrere med SQL-språket. Dokumentdrevet programmering XML-dokumenter kan tjene som beholdere for å bygge applikasjoner fra eksisterende grensesnitt og komponenter. I dette tilfellet består dokumentet av lenker til brukergrensesnittkomponenter og databehandlingsmoduler, som kobles sammen når siden vises på skjermen. Arkivering av komponenter Moderne programmering er basert på bruk av komponenter, som ideelt sett enkelt skal settes sammen til en enkelt helhet ved hjelp av enkel tilleggskoding. Grunnlaget for dette er arkivering av komponenter, som igjen krever en enhetlig tilnærming til lagring og påfølgende bruk. Det er all grunn til å tro at XML-dokumenter i nær fremtid vil være et alternativ til felles lagring av komponenter i form av binære moduler. Datainjeksjon Når vi har definert XML-datastrukturen, er det grunnleggende enkelt å skrive en kodegenerator som behandler dataene. Med utviklingen av slike programvareverktøy kan all rutinemessig databehandling (inkludert validering av deres korrekthet, presentasjon i ønsket format, etc.) automatiseres, slik at utviklere kan fokusere på ikke-standardiserte deler av produktet som lages.

8.1.3. XML-dokumentstruktur

Et XML-dokument består av erklæringer, elementer, kommentarer, spesialtegn og direktiver. Alle disse delene av dokumentet er beskrevet i dette kapittelet.

8.1.3.1. Elementer og attributter

XML er merkespråk markering av dokumenter. Med andre ord, ethvert XML-dokument er et sett elementer, og begynnelsen og slutten av hvert element er angitt med spesielle merker kalt tagger.

Et element har tre deler: en start-tag, et innhold og en slutt-tag. En tag er tekst omsluttet av vinkelparenteser "<" и ">". Sluttkoden har samme navn som startkoden, men starter med en skråstrek" / ". Eksempel XML-element:

Sergey Dovlatov

Varenavn skiller mellom store og små bokstaver, dvs. , og Er navnene på de ulike elementene. Sluttbrikken er alltid påkrevd. Hvis taggen er tømme, det vil si at den ikke har noe innhold og ingen avsluttende tag, så har den en spesiell form:

<элемент/>

Ethvert element kan ha egenskaper som inneholder tilleggsinformasjon om varen. Attributter er alltid inkludert i startkoden til et element og ser slik ut:

Attribut_name = "attributt_value"

Attributtet må ha en verdi, som alltid må være omgitt av enkle eller doble anførselstegn. Attributtnavn skiller også mellom store og små bokstaver. Et eksempel på et element som har et attributt:

Sergey Dovlatov

Elementer må enten følge etter hverandre, eller være nestet i hverandre:

Del av en tale Brodsky, Joseph Mars av de ensomme Dovlatov, Sergey

Her inneholder bokelementet to nestede bokelementer, som igjen har isbn-attributtet og inneholder tre sekvensielle elementer: tittel (tittel), forfatter (forfatter) og nåtid (nåværende), sistnevnte er tom. , fordi i denne tilfellet tilsvarer det et boolsk flagg.

Fra beskrivelsen ovenfor kan du se at XML-syntaks ligner HTML-syntaks (som er naturlig, siden de begge er dialekter av samme SGML-språk), men kravene til å formatere korrekte XML-dokumenter er høyere. En annen veldig viktig forskjell mellom XML og HTML er at innholdet i elementer, det vil si alt mellom start- og slutttaggene, regnes som data. Dette betyr at XML ikke ignorerer mellomrom og linjeskift slik HTML gjør.

8.1.3.2. Prolog og direktiver

Ethvert XML-dokument består av prolog og rotelement, for eksempel:

Mars av de ensomme Dovlatov, Sergey

I dette eksemplet er prologen redusert til en singel direktiv (første linje i dokumentet) som indikerer XML-versjonen. Det etterfølges av et unikt navngitt XML-element som inneholder alle de andre elementene og kalles roten. En behandlingsinstruksjon er et uttrykk innesluttet i spesielle tagger "", som inneholder instruksjoner for programmet som behandler XML-dokumentet.

XML-standarden forbeholder seg kun ett direktiv som spesifiserer versjonen av XML dette dokumentet tilsvarer (det er ingen andre versjon av XML ennå). Faktisk er dette direktivet noe rikere og ser i sin mest generelle form slik ut:

Her spesifiserer kodingsattributtet tegnkodingen til dokumentet. Som standard antas XML-dokumenter å være generert i enten UTF-8- eller UTF-16-format. Hvis en annen tegnkoding brukes, skal navnet i henhold til tabell A7.1 angis i denne attributten, som vist i eksemplet. Det frittstående attributtet forteller om dokumentet inneholder. En verdi på ja betyr at det ikke finnes slike seksjoner, en verdi på nei betyr at de er det.

8.1.3.3. Kommentarer (1)

XML-dokumenter kan inneholde kommentarer som ignoreres av applikasjonen som behandler dokumentet. Kommentarer bygges etter de samme reglene som i HTML:

  • start kommentar med symboler "",
  • ikke bruk "-"-tegn inne i kommentaren.

Eksempelkommentarer:

8.1.3.4. Navn og data

Alt navn Elementer, attributter og seksjoner må begynne med en Unicode-bokstav og bestå av bokstaver, tall, punktum (.), understrek (_) og bindestrek (-). Den eneste begrensningen er at de ikke må starte med en kombinasjon av xml-bokstaver i alle fall; slike navn er reservert for fremtidige utvidelser til språket. Det er viktig at standarden tillater bruk av ikke bare engelske bokstaver i navn, men også alle andre, selv om eksisterende XML-prosessorer ofte er begrenset til de kodingssystemene som er nedfelt i dem av skaperne. Derfor, i eksemplene våre, skriver vi navn på engelsk.

Data det vil si at elementinnhold og attributtverdier kan være andre tegn enn de som er oppført i neste seksjon.

8.1.3.5. Spesielle symboler

Et antall tegn i XML er reservert og må representeres på en spesiell måte:

Om ønskelig kan du bruke den numeriske tegnkodingen i Unicode-standarden. I dette tilfellet kan symbolet spesifiseres med sin desimalkode ( kode; ) eller heksadesimal kode ( kode; ). For eksempel © representerer copyright-symbolet © , a EN- Russisk brev EN... Som vi vil se senere, er XML mye rikere enn HTML når det gjelder å bruke slike konstruksjoner, siden det tillater substitusjon av ethvert symbolsk uttrykk i teksten til dokumenter.

8.1.3.6. CDATA-seksjoner

En annen måte å inkludere ugyldige tegn i innholdet i XML-elementer er å bruke den såkalte. CDATA-seksjoner(forkortelse for Character DATA, det vil si tegndata). La oss si at vi ønsker å gjøre innholdet i layoutelementet til et stykke HTML-tekst, for eksempel:

Overskrift

Denne konstruksjonen er feil fordi HTML H1-taggen vil bli tolket som en XML-tag i dette tilfellet. For at hele innholdet i layoutelementet skal behandles som data, må vi pakke det inn i en CDATA-seksjon:

Som vi kan se fra dette eksemplet, er CDATA-delen omsluttet av skilletegn... Alt innenfor denne delen anses å være karakterdata; spesielt kan ikke CDATA-seksjoner nestes i hverandre.

8.1.4. Seksjoner og deres erklæringer

8.1.4.1. Deler av et XML-dokument

Fysisk kan et XML-dokument bestå av flere seksjoner(enheter). I dette tilfellet er rotelementet til dokumentet også en seksjon kalt del av dokumentet, selv om det ikke er spesielt dekorert på noen måte. Alle seksjoner har innhold; alle, bortsett fra dokumentdelen og ekstern DTD, har et navn.

Fra synspunktet om å analysere dokumentet, er seksjoner delt inn i analysert og ikke-parset. Uparert del(unparsed entity) er en ressurs hvis innhold behandles som eksterne data av XML-prosessoren uten å analysere den (for eksempel tekst som ikke er et XML-dokument). Uparserte deler har alltid gjort det notasjon angir formatet deres. Analyserte seksjoner(parsed entities) er ment for tekstsubstitusjon: når en XML-prosessor møter navnet på en slik seksjon i et dokument, erstatter den det med innholdet i den seksjonen.

8.1.4.2. Interne seksjoner

Seksjonserklæringer er delt inn i interne og eksterne. Intern seksjonserklæring ser slik ut:

Den inkluderer innholdet til objektet (parameterverdi) og brukes til å erstatte denne verdien med seksjonsnavnet. For eksempel kan vi introdusere attributtet sjanger og bruk interne seksjoner for å angi sjangeren:

]> Del av en tale Brodsky, Joseph Mars av de ensomme Dovlatov, Sergey

Dette eksemplet viser det link til seksjon (enhetsreferanse) ser nøyaktig ut som en spesialtegnreferanse, det vil si at den ser ut som & name; ... Faktisk er spesialtegn nøyaktig de samme referansene, men de tilsvarende delene er spesifisert implisitt i den interne XML-erklæringen. Slike teksterstatninger er praktiske for å spesifisere forkortelser som reduserer volumet av dokumentet, og for å introdusere symboler for ofte endrede dokumentfelt. Så, for eksempel, kan vi flytte til den interne delen datoen for neste revisjon av publikasjonen og deretter endre bare verdien av denne delen.

8.1.4.3. Eksterne seksjoner

Det er to alternativer ytre seksjonserklæringer:

Det første alternativet kalles systempartisjon, den andre - offentlig del... De knytter begge et seksjonsnavn til en ekstern ressurs spesifisert av dens URI, som må være kodet og ikke inneholde. Den eksterne ressurs-URIen kalles systempartisjonsidentifikator... Bruken av en ekstern ressurs avhenger av flere faktorer:

  • Hvis erklæringen inneholder en NDATA-parameter som spesifiserer seksjonsnotasjonen, blir seksjonen ikke analysert.
  • Hvis NDATA-parameteren ikke er spesifisert, blir delen analysert og den tilsvarende ressursen må være et XML-dokument. Dette betyr at i stedet for å referere til en del, vil teksten til den tilsvarende ressursen inkluderes i teksten til dokumentet.
  • Den offentlige delen kan inneholde en streng som spesifiserer offentlig identifikator for seksjonen... En XML-prosessor kan bruke denne identifikatoren til å generere en alternativ URI for denne delen. Hvis den mislykkes, må den bruke systemidentifikatoren for å laste innholdet i delen.

Eksempler på eksterne ressurserklæringer:

Den ytre analyserte delen må begynne med et direktiv, som kanskje ikke inneholder et versjonsnummer, men må inneholde en tegnkoding. Dette direktivet er ikke en del av teksten.

8.1.5. Dokumenttypeerklæring

XML-dokumenttypeerklæring(dokumenttypeerklæring) inneholder dokumenttypedefinisjon(dokumenttypedefinisjon, DTD) eller peker på den. DTD er en spesiell grammatikk som beskriver syntaksen til en bestemt klasse av dokumenter; reglene for å opprette en DTD er omtalt i kap. 8.2. Den beskriver kun erklæringene som gir tilgang til DTD. En dokumenttypeerklæring, som en seksjonserklæring, kan være intern eller ekstern. Den interne erklæringen ser slik ut:

og den ytre har de samme to alternativene som de ytre partisjonene:

Dermed er forskjellen mellom en dokumenttypeerklæring og en seksjonserklæring bare at:

  • det starter med nøkkelordet DOCTYPE, ikke ENTITY;
  • den kan ha en kropp omsluttet av firkantede parenteser.

Navnet på en slik erklæring må samsvare med navnet på rotelementet som den beskriver, og organet må overholde DTD-konstruksjonsreglene og vil bli beskrevet i kap. 8.2. Merk foreløpig at den kan inneholde seksjonserklæringer. Et eksempel på en intern erklæring ble gitt i. Eksempler på eksterne erklæringer:

Merk at en ekstern dokumenttypeerklæring også kan inneholde en referanse til en DTD kalt ytre delmengde DTD, og ​​en kropp som beskriver tilleggene til den ytre DTDen (den kalles indre delmengde DTD).

8.1.6. Eksempel på XML-dokument

For å samle alle konseptene beskrevet ovenfor til en sammenhengende helhet, er her et eksempel på et komplett XML-dokument som inneholder en bokhandelsprisliste.

]> De dødsdømtes mars Sergey Dovlatov 60.00 Del av en tale Josef Brodsky 55.00 Antigone Sofokles 103.50