Dlaczego potrzebujemy formatów tekstowych?

Formaty tekstowe są wygodne do przechowywania informacji, ponieważ mogą być tworzone i przetwarzane zarówno przez programy, jak i ludzi.

Pliki tekstowe (pliki w formacie tekstowym) można otwierać, czytać i edytować w wielu różnych edytorach tekstu.

Pliki konfiguracyjne wielu programów używają formatu tekstowego, nawet jeśli zawierają liczby i przełączniki binarne (tak/nie).

To nieco komplikuje programy ze względu na konieczność konwersji danych tekstowych do formatu wewnętrznego i odwrotnie, ale umożliwia ręczną edycję konfiguracji, bez użycia narzędzi ustawień programu.

Gdzie obecnie używany jest XML?

XML jest używany w różnych obszarach IT. Mogą to być zarówno pliki konfiguracyjne (ustawienia) programów, jak i pliki za pomocą których dane są przesyłane pomiędzy programami. Jednym z najczęstszych przypadków użycia w Javie jest konfigurowanie narzędzia do automatyzacji kompilacji projektów Maven.

Struktura dokumentu XML

Oddziel fizyczne i logiczne struktury dokumentu XML. Zgodnie ze strukturą fizyczną dokument składa się z bytów (obiektów), z których każdy może odnosić się do innego.

Jedynym elementem głównym jest jednostka dokumentu. Jednostka to najmniejsza część dokumentu. Wszystkie byty mają nazwę i zawierają symbole.

Znaki z kolei dzielą się na dwa typy: znaki danych (dane znakowe) i znaki znaczników.

Znaczniki obejmują:

  • znaczniki, oznaczają granice elementów,
  • deklaracje i instrukcje przetwarzania, w tym ich atrybuty,
  • referencje podmiotów,
  • uwagi,
  • sekwencje znaków otaczające sekcje „CDATA”.

Zgodnie ze strukturą logiczną dokument składa się z elementów (elementów), komentarzy (komentarzy), deklaracji (deklaracji), referencji encji (referencji znakowych) oraz instrukcji przetwarzania (instrukcji przetwarzania). Wszystko to w dokumencie jest uporządkowane według znaczników.

Wszystkie elementy dokumentu podzielone są na prolog i element główny. Element główny jest obowiązkową częścią, która stanowi istotę dokumentu XML, a prolog może w ogóle nie istnieć. Element główny może składać się z elementów zagnieżdżonych, danych znakowych i komentarzy. Zagnieżdżanie elementów dokumentu musi być poprawne: każdy element rozpoczynający się w innym musi kończyć się w tym samym elemencie.

Symbole znaczników

Znaczniki zawsze zaczynają się od < i kończą na > .

Oprócz symboli < i > (nawiasy ostre), symbol & (ampersand) pełni również specjalną rolę . Granice elementów, instrukcje przetwarzania i niektóre inne sekwencje są oznaczone nawiasami ostrymi. Ampersand pomaga również przy zastępowaniu tekstu jednostkami.

Deklaracja XMLa

Deklaracja XML określa wersję języka użytego do napisania dokumentu. Specyfikacja nakazuje rozpoczęcie dokumentu od deklaracji XML, ponieważ interpretacja treści dokumentu zależy od wersji języka.

A jeśli w pierwszej (1.0) wersji języka deklaracja była opcjonalna, to w nowych wersjach jest obowiązkowa, a jeśli deklaracji nie ma, to tak rozumiana jest wersja 1.0. Oświadczenie może zawierać również informację o zakodowaniu dokumentu.

Przykład:

<?XML wersja="1.1" kodowanie="UTF-8" ?>

tagi

Znacznik to konstrukcja znaczników zawierająca nazwę elementu. Tagi mogą otwierać (początek) i zamykać (koniec). Istnieją również puste znaczniki elementów, które łączą elementy otwierające i zamykające.

Przykłady:

  • Znacznik początkowy: <znacznik1>

  • Znacznik końcowy: </tag1>

  • Pusty znacznik elementu: <empty_tag1 />

Atrybuty

Kolejną częścią elementów XML są atrybuty. Element może mieć wiele unikalnych atrybutów. Atrybuty pozwalają nam określić więcej informacji o elemencie. Bardziej poprawne jest stwierdzenie, że atrybuty określają właściwości elementów.

Atrybut jest zawsze parą nazwa=wartość:

nazwa="wartość"

Przykład atrybutu w tagu:

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

Wartość atrybutu musi być ujęta w podwójny cudzysłów ( "" ) lub pojedynczy cudzysłów ( '' ). Atrybuty są używane tylko w znaczniku początkowym i pustym znaczniku elementu.

Kodowanie pięciu znaków usługowych (<,>,',”,&)

Oczywiście znaki < , > i & nie mogą być używane w danych znakowych i wartościach atrybutów jako takich. Aby je przedstawić, musisz użyć specjalnych sekwencji. Specjalne sekwencje są również używane podczas zapisywania apostrofów i cudzysłowów wewnątrz wartości atrybutów:

Symbol Wymiana
< <
> >
& &
' '
" "

Ponadto \\ musi być użyte do napisania znaku \ .

Sekcja CDATA

Sekcja CDATA nie jest logiczną jednostką tekstu. Ta sekcja może wystąpić w dokumencie, w którym składnia pozwala nam umieścić dane znakowe.

Sekcja zaczyna się od <![CDATA[ i kończy się na ]]> . Dane znakowe są umieszczane pomiędzy tymi znacznikami, a znaki < , > i & mogą być używane w ich bezpośredniej formie.

Uwagi

Komentarze (komentarz) nie odnoszą się do danych znakowych dokumentu. Komentarz zaczyna się od <!-- i kończy na --> , sekwencja znaków -- nie może być użyta w komentarzu . Ponadto wewnątrz komentarza znak ampersand nie jest używany jako znacznik.

Przykład:

<!-- to jest komentarz -->

Nazwy

W XML wszystkie nazwy mogą zawierać tylko litery w sekcji znaków Unicode, cyfry (arabskie), kropki, dwukropki, łączniki i podkreślenia. Nazwy mogą zaczynać się od litery, dwukropka lub podkreślenia. Należy zauważyć, że łańcuch XML w żadnym wypadku nie może być początkiem nazwy.

Przykład

Przyjrzyjmy się klasie Java i obiektowi tej klasy. Następnie spróbujemy serializować obiekt do formatu XML. Kod klasowy:


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
}

i tworzenie obiektów:


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

Oto przykład prawidłowej reprezentacji XML obiektu Java, który zawiera 4 pola, z których jedno jest kolekcją (powyższy kod Java):

<Book>
  <title>Moja ulubiona książka</title>
  <author>Amigo</author>
  <pageCount>999</pageCount>
 <chapters>
    <chapters>Rozdział 1</chapters>
    <chapters>Rozdział 2</chapters>
    <chapters>Rozdział 3</chapters>
    <chapters>Rozdział 4</chapters>
    <chapters>Rozdział 5</chapters>
    <chapters>Rozdział 6</chapters>
 </chapters>
</Book>

Schemat XMLa

XML Schema to język opisu struktury dokumentu XML. Specyfikacja schematu XML jest rekomendacją W3C.

XML Schema został wymyślony w celu zdefiniowania reguł, które muszą być przestrzegane przez dokument XML. Ale najciekawsze jest to, że XML Schema został zaprojektowany do wykorzystania w rozwoju oprogramowania do przetwarzania dokumentów XML, czyli możemy programowo sprawdzić poprawność dokumentu XML.

Plik zawierający schemat XML ma rozszerzenie „.xsd” (definicja schematu XML). Projektowanie schematu XML wykracza poza zakres tego wykładu, więc miej świadomość, że jest to możliwe.