Защо са необходими текстови формати?

Текстовите формати са удобни за съхраняване на информация, защото могат да се създават и обработват Howто от програми, така и от хора.

Текстови файлове (файлове в текстов формат) могат да се отварят, четат и редактират в голямо разнообразие от текстови редактори.

Много програми използват текстови конфигурационни файлове, дори ако форматът съдържа числа и двоични (да/не) стойности.

Това прави програмите малко по-сложни поради необходимостта от конвертиране от текст във вътрешен формат и обратно, но прави възможно ръчното редактиране на конфигурацията, без да се използва инструмент за конфигуриране в самата програма.

Къде се използва XML сега?

XML се използва в различни области на ИТ. Това могат да бъдат конфигурационни файлове (с програмни настройки) or файлове, използвани за прехвърляне на данни между програми. В Java един от най-честите случаи на употреба е конфигурирането на Maven, инструмент за автоматизиране на изграждането.

Структура на XML document

Физическата и логическата структура на XML document се съхраняват отделно. По отношение на физическата структура, documentът се състои от обекти, които могат да препращат към други обекти.

Единственият основен елемент е обектът на documentа. Субектът е най-малката част от documentа. Всички обекти имат име и съдържат знаци.

От своя страна знаците принадлежат към една от двете категории: данни за знаци or маркиране.

Маркирането включва:

  • етикети, които обозначават границите на елементите;
  • декларации и инструкции за обработка, включително техните атрибути;
  • препратки към обекти;
  • коментари;
  • последователности от символи, обгръщащи CDATA секции.

Логично, documentът се състои от елементи, коментари, декларации, препратки към обекти и инструкции за обработка. Маркирането се използва за създаване на цялата тази структура в document.

Всички съставни части на documentа са разделени на пролог и основен елемент. Основният елемент е задължителната, съществена част от XML document, докато прологът може изобщо да не съществува. Основният елемент може да се състои от вложени елементи, символни данни и коментари. Елементите на documentа трябва да бъдат правилно вложени: всеки елемент, който започва вътре в друг елемент, също трябва да завършва вътре в този елемент.

Символи за маркиране

Маркирането винаги започва с < и завършва с > .

Символите < и > (ъглови скоби) и & (амперсанд) играят специална роля. Ъгловите скоби показват границите на елементите, инструкциите за обработка и някои други последователности. И амперсандът ни помага да заменим текст с обекти.

XML декларация

XML декларацията указва versionта на езика, използван за писане на documentа. XML спецификацията казва да стартирате document с XML декларация, тъй като правилното тълкуване на съдържанието на documentа зависи от versionта на езика.

В първата version на езика (1.0) тази декларация не беше задължителна, но е задължителна в по-късните версии. Предполага се, че липсваща декларация означава version 1.0. Декларацията може да съдържа и информация за codeирането на documentа.

Пример:

<?XML version="1.1" codeиране="UTF-8" ?>

Етикети

Тагът е конструкция за маркиране, която съдържа името на елемент. Има начални и крайни тагове. Има и тагове с празни елементи, които комбинират начални и крайни елементи.

Примери:

  • Начален етикет: <tag1>

  • Краен етикет: </tag1>

  • Етикет с празен елемент: <empty_tag1 />

Атрибути

Друга част от XML елементите са атрибутите. Един елемент може да има множество уникални атрибути. Атрибутите ни позволяват да посочим повече информация за даден елемент. Или по-точно, атрибутите определят свойствата на елементите.

Атрибутът винаги е двойка име-стойност:

име = "стойност"

Пример за атрибут в таг:

<tag1 name = "value">елемент</tag1>

Стойността на даден атрибут трябва да бъде поставена в двойни кавички ( " ) or единични кавички ( ' ). Атрибутите се използват само в началните тагове и таговете с празен елемент.

Премахване на пет специални знака (<, >, ', ”, &)

Очевидно символите < , > и & не могат да се използват като такива в символни данни и стойности на атрибути. Трябва да създадете специални последователности за бягство, за да ги представите. Специални последователности се използват и при писане на апострофи и кавички в стойностите на атрибути:

Символ Замяна
< <
> >
и &
' '
" "

Освен това, за да напишете знака \ , трябва да използвате \\ .

CDATA раздел

Раздел CDATA не е логическа единица текст. Този тип секция може да възникне там, където XML синтаксисът ни позволява да поставим знакови данни в documentа.

Разделът започва с <![CDATA[ и завършва с ]]> . Данните за знаци се поставят между тези битове маркиране и символите < , > и & могат да се използват в тяхната директна форма.

Коментари

Коментарите не се считат за характерни данни. Коментарът започва с <!-- и завършва с --> . Последователността от знаци -- не може да се използва в коментар. Освен това, вътре в коментар, символът амперсанд не означава маркиране.

Пример:

<!-- това е коментар -->

имена

В XML всички имена могат да съдържат само букви в tableта със знаци на Unicode, арабски цифри, точки, двоеточие, тирета и долни черти. Имената могат да започват с буква, двоеточие or долна черта. Обърнете внимание, че името не може да започва с низа XML .

Пример

Нека да разгледаме Java клас и обект от този клас. След това ще се опитаме да сериализираме обекта в XML формат. Код на класа:


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
}

и създаване на обекти:


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

Ето пример за валидно XML представяне на Java обект, който съдържа 4 полета, едно от които е колекция (вижте Java codeа по-горе):

<Book>
  <title>Моята любима книга</title>
  <author>Amigo</author>
  <pageCount>999</pageCount>
 <chapters>
    <chapters>Глава 1</chapters>
    <chapters>Глава 2</chapters>
    <chapters>Глава 3</chapters>
    <chapters>Глава 4</chapters>
    <chapters>Глава 5</chapters>
    <chapters>Глава 6</chapters>
 </chapters>
</Book>

XML схема

XML схема е описание на структурата на XML document. Съответната спецификация (XML Schema Definition or XSD) е препоръка на W3C.

XSD е проектиран да изразява правилата, които един XML document трябва да следва. Но най-интересното за нас е, че XSD е проектиран да се използва при разработването на софтуер, който обработва XML documentи. Позволява ни да проверим коректността на XML document програмно.

Файловете, съдържащи XML схема, имат разширение .xsd. Проектирането на XML схема е извън обхвата на този урок, така че засега просто имайте предвид, че възможността съществува.