Waarom zijn tekstformaten nodig?

Tekstformaten zijn handig voor het opslaan van informatie omdat ze kunnen worden gemaakt en verwerkt door zowel programma's als mensen.

Tekstbestanden (bestanden in tekstformaat) kunnen in een grote verscheidenheid aan teksteditors worden geopend, gelezen en bewerkt.

Veel programma's gebruiken op tekst gebaseerde configuratiebestanden, zelfs als het formaat getallen en binaire (ja/nee) waarden bevat.

Dit maakt de programma's iets ingewikkelder vanwege de noodzaak om tekst naar een intern formaat te converteren en vice versa, maar het maakt het mogelijk om de configuratie handmatig te bewerken zonder een configuratietool in het programma zelf te gebruiken.

Waar wordt XML nu gebruikt?

XML wordt op verschillende IT-gebieden gebruikt. Dit kunnen configuratiebestanden zijn (met programma-instellingen) of bestanden die worden gebruikt om gegevens tussen programma's over te dragen. In Java is een van de meest voorkomende use-cases het configureren van Maven, een tool voor het automatiseren van builds.

Structuur van een XML-document

De fysieke en logische structuur van een XML-document worden gescheiden gehouden. Qua fysieke structuur bestaat het document uit entiteiten die kunnen verwijzen naar andere entiteiten.

Het enige hoofdelement is de documententiteit. Een entiteit is het kleinste onderdeel in een document. Alle entiteiten hebben een naam en bevatten tekens.

Karakters behoren op hun beurt tot een van de volgende twee categorieën: karaktergegevens of markeringen.

Opmaak omvat:

  • tags, die elementgrenzen aangeven;
  • aangiften en verwerkingsinstructies, inclusief hun attributen;
  • entiteitsreferenties;
  • opmerkingen;
  • tekenreeksen die CDATA-secties omwikkelen.

Het document bestaat logischerwijs uit elementen, opmerkingen, verklaringen, entiteitsreferenties en verwerkingsinstructies. Markup wordt gebruikt om al deze structuur in een document te creëren.

Alle samenstellende delen van een document zijn verdeeld in een prolog- en een root-element. Het root-element is het verplichte, essentiële onderdeel van een XML-document, terwijl de prolog misschien helemaal niet bestaat. Het hoofdelement kan bestaan ​​uit geneste elementen, tekengegevens en opmerkingen. De elementen van een document moeten correct genest zijn: elk element dat binnen een ander element begint, moet ook binnen dat element eindigen.

Opmaak symbolen

Markup begint altijd met < en eindigt met > .

De symbolen < en > (punthaken) en & (ampersand) spelen een speciale rol. Punthaken geven de grenzen van elementen, verwerkingsinstructies en enkele andere reeksen aan. En de ampersand helpt ons tekst te vervangen door entiteiten.

XML-declaratie

Een XML-declaratie specificeert de versie van de taal die is gebruikt om het document te schrijven. De XML-specificatie zegt dat een document moet beginnen met een XML-declaratie omdat de juiste interpretatie van de documentinhoud afhangt van de versie van de taal.

In de eerste versie van de taal (1.0) was deze verklaring optioneel, maar in latere versies is het verplicht. Een ontbrekende declaratie wordt verondersteld versie 1.0 te betekenen. De aangifte kan ook informatie over de documentcodering bevatten.

Voorbeeld:

<?XML versie="1.1" codering="UTF-8" ?>

Labels

Een tag is een opmaakconstructie die de naam van een element bevat. Er zijn starttags en eindtags. Er zijn ook tags met lege elementen die begin- en eindelementen combineren.

Voorbeelden:

  • Starttag: <tag1>

  • Eindtag: </tag1>

  • Tag met leeg element: <empty_tag1 />

attributen

Een ander onderdeel van XML-elementen zijn attributen. Een element kan meerdere unieke attributen hebben. Met attributen kunnen we meer informatie over een element specificeren. Of beter gezegd, attributen definiëren de eigenschappen van elementen.

Een attribuut is altijd een naam-waardepaar:

naam = "waarde"

Voorbeeld van een attribuut in een tag:

<tag1 name = "waarde">element</tag1>

De waarde van een attribuut moet tussen dubbele aanhalingstekens ( " ) of enkele aanhalingstekens ( ' ) staan . Attributen worden alleen gebruikt in start-tags en de tags met lege elementen.

Escape vijf speciale tekens (<, >, ', ”, &)

Uiteraard kunnen de symbolen < , > en & niet als zodanig worden gebruikt in tekengegevens en attribuutwaarden. Je hebt speciale escape-reeksen nodig om ze weer te geven. Er worden ook speciale reeksen gebruikt bij het schrijven van apostrofs en aanhalingstekens binnen attribuutwaarden:

Symbool Vervanging
< <
> >
& &
' '
" "

Om het teken \ te schrijven, moet u ook \\ gebruiken .

CDATA-sectie

Een CDATA-sectie is geen logische teksteenheid. Dit type sectie kan voorkomen wanneer de XML-syntaxis ons in staat stelt om tekengegevens in het document te plaatsen.

De sectie begint met <![CDATA[ en eindigt met ]]> . Karaktergegevens worden tussen deze stukjes opmaak geplaatst en de symbolen < , > en & kunnen in hun directe vorm worden gebruikt.

Opmerkingen

Opmerkingen worden niet beschouwd als karaktergegevens. Een opmerking begint met <!-- en eindigt met --> . De tekenreeks -- kan niet in een opmerking worden gebruikt. Ook in een opmerking is het ampersand-teken geen opmaak.

Voorbeeld:

<!-- dit is een opmerking -->

Namen

In XML mogen alle namen alleen letters in de Unicode-tekentabel, Arabische cijfers, punten, dubbele punten, koppeltekens en underscores bevatten. Namen kunnen beginnen met een letter, dubbele punt of underscore. Merk op dat een naam niet kan beginnen met de string XML .

Voorbeeld

Laten we eens kijken naar een Java-klasse en een object van die klasse. Vervolgens zullen we proberen het object in XML-formaat te serialiseren. Klassencode:


public class Book {
   private String title;
   private String author;
   private Integer pageCount;
   private List<String> chapters;

   public Book(String title, String author, Integer pageCount, List<String> chapters) {
       this.title = title;
       this.author = author;
       this.pageCount = pageCount;
       this.chapters = chapters;
   }
// Getters/setters
}

en creatie van objecten:


Book book = new Book("My Favorite Book", "Amigo", 999, Arrays.asList("Chapter 1", "Chapter 2", "Chapter 3", "Chapter 4", "Chapter 5", "Chapter 6"));

Hier is een voorbeeld van een geldige XML-representatie van een Java-object dat 4 velden bevat, waarvan er één een verzameling is (zie de Java-code hierboven):

<Boek>
  <title>Mijn favoriete boek</title>
  <author>Amigo</author>
  <pageCount>999</pageCount>
 <chapters>
    <chapters>Hoofdstuk 1</chapters>
    <chapters>Hoofdstuk 2</chapters>
    <chapters>Hoofdstuk 3</chapters>
    <chapters>Hoofdstuk 4</chapters>
    <chapters>Hoofdstuk 5</chapters>
    <chapters>Hoofdstuk 6</chapters>
 </chapters>
</Boek>

XML-schema

Een XML-schema is een beschrijving van de structuur van een XML-document. De bijbehorende specificatie (XML Schema Definition of XSD) is een W3C-aanbeveling.

XSD is ontworpen om de regels uit te drukken waaraan een XML-document moet voldoen. Maar het meest interessante voor ons is dat XSD is ontworpen om te worden gebruikt bij het ontwikkelen van software die XML-documenten verwerkt. Hiermee kunnen we de juistheid van een XML-document programmatisch controleren.

Bestanden met een XML-schema hebben de extensie .xsd. Het ontwerpen van een XML-schema valt buiten het bestek van deze les, dus houd er voorlopig rekening mee dat de mogelijkheid bestaat.