Skip to content

miroslav-reiter/Kurz_XML_Schema

Repository files navigation

🏷️ Kurz XML II. XML Schema

💼 Materiály kurzu XML Schema a online kurzu XML Schema

📑 Anotácia a Osnova kurzu

Kurz je určený všetkým, ktorý sa chcú zoznámiť s použitím a vytváraním schém XSD pre XML dokumenty. Význam a využitie schém vzhľadom k rozvoju webových služieb neustále rastie. Na kurze sa naučíš využívať hotové schémy a vytvárať vlastné, vrátane zložitých podmienok pre overenie správnosti obsahu XML dokumentov.

  1. História formátu popisu XML dát
  2. Základy XSD
  3. XML a namespace
  4. Komplexné typy v XSD
  5. Využitie schém

✔️ Využitie XML a XML Schema

  1. Protokoly a webové služby (SOAP)
  2. SVG
  3. RSS
  4. Google služby
  5. Microsoft Office a ich súbory s rozšíreniami (x na konci - xml):
    • docx
    • pptx
    • xlsx
    • vsdx

🌲 Štruktúra XML

📕 Deklarácia/prolog XML

<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="windows-1250"?>

💬 Komentáre XML

<!-- Ja som jednoriadkový komentár -->
<!-- 
   Ja som  
   viacriadkový komentár
-->

🧷 Tagy - značky (Tags)

Otváracia značka (Opening tag): <> Uzatv8racia značka (Closing tag): </>

Rozdelenie značiek:

  • Párové (pair): <dokument> <dokument/> v html napr. <div> </div>, <h1> </h1>, <a> </a>, <p> </p>, <video> </video>
  • Nepárové (Unpair): <dokument /> v html napr. <br />, <hr />, <img />

📘 Elementy (tvorí otváracia + uzatváracia značka a obsah, dajú sa vnárať do seba)

<sprava>Ahoj občan</sprava>

🏷️ Atribúty (súčasťou otváracej značky, môže ich byť viac, nedajú sa vnárať do seba)

<bond kategoria="tajne" popis="agent">007</bond>

🌍 Znakové entity

  • < &lt;
  • > &gt;
  • & &amp;
  • " &quot;
  • ' &apos;

Ďalšie entity (HTML)

‼️ Základné pravidlá pre správne formátovanie/štruktúrovanie/správna syntax XML (well-formed)

  1. Deklarácia/prolog na prvom riadku (žiadne prázdne riadky či komentáre) - odporúčanie
  2. Každý element XML musí mať začiatočnú aj koncovú značku (tag)
  3. Dokument XML musí obsahovať jediný pár značiek (skladajúci sa zo začiatočnej a koncovej značky), tzv. koreňový element dokumentu (root)
  4. Počiatočné a koncové značky každého elementu musia byť riadne vnorené, elementy sa môžu vnárať, nie prekrývať
  5. Mená elementov musia začínať písmenom alebo podčiarkovník (Môžu obsahovať číslice, pomlčky, bodky). Nesmie začínať číslom (<101-dalmantincov>) alebo neštandarnými znakmi (<*dalmantincov>)
  6. Zohľadňujú sa veľkosť písmen (XML a XML Scheme je case sensitive - záleží na velkosti písmen)
  7. Žiadne slovo XML alebo jeho kombinácie v názvoch elementov
  8. Atribúty nemôžu obsahovať viaceré hodnoty (elementy môžu)
  9. Atribúty musia byť uzavreté v úvodzovkách resp. apostrofoch
  10. Viaceré atribúty v jednom elemente oddelené medzerou

🛠️ Nástroje na XML a XSD

  1. Notepad++
  2. Netbeans
  3. Visual Studio Code
  4. Microsoft Visual Studio
  5. Altova XMLSpy
  6. Online XSD to XML generator
  7. Visual XSD
  8. Free Online XML to XSD Converter
  9. Free Online XSD to XML Converter
  10. Freeformatter XML Validator
  11. Freeformatter XSD Generator
  12. Codebeautify XML Tree Viewe
  13. XML Notepad
  14. XBase
  15. XMetal
  16. CAMed
  17. Xerlin

📝 Odporúčané doplnky do Notepad++:

  1. XML tools
  2. Npp XML treview
  3. Python Script (kvôli emmet)
  4. Emmet/Zen coding
  5. Random Values
  6. Converter
  7. Regex Trainer

Cesta štandardná pluginy Notepad++: C:\Program Files\Notepad++\plugins

Cesta pluginy Notepad++ z Microsoft Store: C:\Users\Administrator\AppData\Roaming\Notepad++\plugins

🔁 Odporúčané doplnky do Visual Studio Code

  1. XML Complete Rogalmic
  2. XML Red Hat
  3. Emmet/Zen coding Mithril

📄 Dokumentácia

  1. W3C Dokumentácia XML
  2. W3C – Špecifikácia XML
  3. W3C Dokumentácia XML Schema
  4. XML Schema Part 1: Structures Second Edition
  5. XML Schema Part 2: Datatypes Second Edition
  6. W3C XML Schema Definition Language (XSD) 1.1 Part 1: Structures
  7. W3C XML Schema Definition Language (XSD) 1.1 Part 2: Datatypes

📚 Odporúčané zdroje

  1. ZVON – Všetko o XML a ako vytvoriť XML
  2. Interval – Všetko o odkazoch
  3. Kosek – Seriál o XML
  4. W3Schools – Tutorial XML
  5. W3Schools – Tutorial XML Schema
  6. Derek Banas – Video tutorial XML
  7. Emmet toolkit
  8. Tutorialspoint XML Schemas
  9. Edutechwiki
  10. Microsoft podpora typu údajov xsd xml schema
  11. Google XML Document Format Style Guide
  12. Global versus Local
  13. Introducing Design Patterns in XML Schemas
  14. Balisage Paper: Four Basic Building Principles (Patterns) for XML Schemas

Vzorové XML elementy

<sprava></sprava>
<predmet></predmet>
<zamestnanec></zamestnanec>
<dokument></dokument>
<pravidlo></pravidlo>

Vnorenie (childing) XML elementov

<sprava>
   <odosielatel>Adam Sangala</odosielatel>
   <prijemca>Martin Marcin</prijemca>
   <predmet>Nauč sa XML a XML Schema!</predmet>
   <text>Choď na tento skvelý kurz XML Schema(https://www.it-academy.sk/kurz/xml-ii-xml-scheme/). 
      Naučís s v pohodičke XMLko a schémy 👍. </text>
</sprava>

Vzorové použitie Emmet/Zen coding

<!-- Multiplikácia elementu sprava (Multiply element)  -->
<!-- sprava*5 -->
<sprava></sprava>
<sprava></sprava>
<sprava></sprava>
<sprava></sprava>
<sprava></sprava>

XML Schema Návrhové vzory (Schema desing patterns)

🎎 Russian doll (Ruská bábika) - Napodobňuje štruktúru XML dokumentu, t. j. prvky v rámci iných prvkov sú deklarované lokálne.
🍕 Salami slice (Salámový plátok) - Rozloží dokument na jednotlivé prvky a poskladá ich do komponentov tak, že na ich odkazuje (cez ref).
🦯 Venetian Blind (Benátsky slepec) - Rozloží dokument na jednotlivé komponenty, ale namiesto deklarácie prvkov vytvorí definície typu.
🍏 Garden of Eden (Edenská Záhrada)

<Kniha>
        <Nazov>Harry Potter</Nazov>
        <Autor>J. K. Rowlingová</Autor>
</Kniha>

🎎 Russian doll

<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="Kniha">
    <xs:complexType>
      <xs:sequence>
        <xs:element type="xs:string" name="Nazov"/>
        <xs:element type="xs:string" name="Autor"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>

🍕 Salami slice

<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="Nazov" type="xs:string"/>
  <xs:element name="Autor" type="xs:string"/>
  <xs:element name="Kniha">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="Nazov"/>
        <xs:element ref="Autor"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>

🦯 Venetian Blind

<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="Kniha" type="KnihaType"/>
  <xs:complexType name="KnihaType">
    <xs:sequence>
      <xs:element type="xs:string" name="Nazov"/>
      <xs:element type="xs:string" name="Autor"/>
    </xs:sequence>
  </xs:complexType>
</xs:schema>
Princíp Russian Doll Venetian Blind
Cohesion (Súdržnosť) High High
Coupling (Spojenie) Low High
Reusable Components (Znovupoužitelnosť komponentov) Low High

Matica návrhových vzorov XML Schema

Type definition/Element declaration Local Global
Local Russian Doll Salami Slice
Global Venetian Blind Garden of Eden