• Nie Znaleziono Wyników

Technologie Internetu

N/A
N/A
Protected

Academic year: 2021

Share "Technologie Internetu"

Copied!
34
0
0

Pełen tekst

(1)

Technologie Internetu

wykład 10: XSLT, XPointer, XLink Piotr Habela

Polsko-Japońska Wyższa Szkoła Technik Komputerowych

(2)

W poprzednim odcinku…

• XML Schema istotnie rozszerza możliwości DTD:

– Wszelkie ograniczenia z DTD wyrażalne w XML Schema;

– Znacznie bogatszy i rozszerzalny system typów;

– W połączeniu z ograniczeniami unikalności pozwala to na bardziej precyzyjną kontrolę strukturalnej poprawności dokumentu;

– XML Schema jest odrębną specyfikacją; brak zgodności „w dół”;

• XPath:

– Język deklaratywny służący wskazywaniu elementów, atrybutów, lub całych fragmentów dokumentu XML;

– Nie tylko adresowanie konkretnego miejsca: wyrażenia kierunków – osie (axes) oraz predykaty pozwalają selekcjonować pojedynczą ścieżką wiele miejsc, co nawiązuje niejako do funkcjonalności

języka zapytań;

– Potraktowanie dokumentu jako hierarchii węzłów wnosi pewne ograniczenia.

(3)

Plan wykładu

• XPath – przypomnienie.

• XSL (eXtensible Stylesheet Language) - wprowadzenie:

– Koncepcja transformacji XSL;

– Budowa wzorców XSLT;

– Środki programistyczne dostępne w XSLT.

• XPointer – rozszerzenie możliwości XPath.

• XLink – budowa odnośników pomiędzy zasobami.

(4)

XPath - przypomnienie

• Ścieżka sformułowana w języku XPath:

– Opiera się na tzw. osiach (axes): np. child, parent, descentand- or-self itd., pozwalających z dowolnego miejsca dokumentu

nawigować do dowolnego innego miejsca;

– Każdy krok ścieżki zawęża obszar poszukiwań;

– Może być globalna lub względna wobec aktualnego kontekstu;

– Dla najważniejszych wyrażeń określono zapis skrócony.

• Istnieje możliwość selekcjonowania elementów, atrybutów, instrukcji przetwarzania czy zawartości tekstowej.

(5)

Język XSL (eXtensible Stylesheet

Language)

(6)

XSL - charakterystyka

• Zakładane przez XML oczyszczenie informacji z zawartości związanej z prezentacją pozostawia otwartym problem

wizualizacji takich dokumentów.

• W celu realizacji niezbędnych przekształceń powstał język XSL (eXtensible Stylesheet Language). Swego rodzaju

protoplastą tego mechanizmu były kaskadowe arkusze

stylów (CSS), jednak realizacja języka XSL jest odmienna.

• W ramach tego standardu powstały specyfikacje:

– XSLT (XSL Transformations);

– XSL FO (XSL Formating Objects);

• XSLT określany jako język o charakterze deklaratywnym, oparty na regułach przekształceń (rule-based). Język

przekształceń drzew XML.

(7)

Koncepcja języka XSLT

• Scenariusze przetwarzania:

– zmiana struktury dokumentu XML;

– utworzenie arkusza XSLT do przetwarzania innych dokumentów;

– obudowanie danych z pliku XML informacjami o sposobie prezentacji.

• Przetwarzania dokumentów w oparciu o wzorce służą programy określane jako procesory XSLT.

• XSLT – koncepcja realizacji przekształceń:

Dokument XML + Dokument XSLT => Dokument wynikowy

• Użyteczność tego scenariusza dla wizualizacji dokumentu XML wymaga, aby zawierał on odwołanie do dokumentu XSLT:

<?xml version=”1.0” ?>

<?xml-stylesheet type=”text/xsl” href=”naszArkusz.xsl” ?>

(8)

Dokument wzorca XSLT

• Określa zakresy przeszukiwania; wskazania zawartości do przetworzenia za pomocą XPath.

• Definiuje sposób przekształcenia poszczególnych rodzajów wyszukanej zawartości.

• Budowa dokumentu:

– elementem-korzeniem jest xsl:stylesheet;

– przestrzeń nazwowa specyfikacji:

xmlns:xsl = ”http://www.w3.org/1999/XSL/Transform”;

– budowa znacznika otwierającego:

<xsl:stylesheet

xmlns:xsl="http://www.w3.org/1999/XSL/Transform"

version="1.0">

• Z kolei element nie prefiksowany przestrzenią xsl jest przekazywany bez interpretacji do dokumentu

wyjściowego. Tym sposobem można np. aplikować znaczniki HTML.

(9)

Element szablonu (xsl:template)

• Przekształcenia są aplikowane w oparciu o element xsl:template:

– atrybut match tego elementu zawiera wzorzec (pattern)

zawartości, która ma być przetwarzana, przedstawiony w języku XPath.

– alternatywnie może zostać użyty atrybut name, zawierający dowolną nazwę, służącą do uruchomienia danego szablonu (template) poleceniem xsl:call-template;

– wnetrze elementu xsl:template określa sposób przetwarzania:

<xsl:template match=”//szukaneElementy”>

.. sposób przetwarzania ..

</xsl:template>

• Często pierwszy element xsl:template odwołuje się do całego dokumentu (tj. używa match=”/”) i zawiera

wywołania innych, zdefiniowanych dalej szablonów.

(10)

Konstruowanie dokumentu wynikowego (1)

• Reguły transformacji umożliwiają wstawianie do dokumentu

wynikowego wartości z dokumentu źródłowego, wyselekcjonowanej wyrażeniem XPath.

• Służy temu element xsl:value-of, z atrybutem select, zawierającym wyrażenie XPath.

• Można również wstawiać wyniki obliczeń, tj. rezultaty funkcji wywołanych w kontekście wyrażenia XPath. Np. stosując funkcję count(node-set), zwracamy tu syntetyczne dane w postaci liczby książek ocenionych na 3,5 oraz na 4.

<?xml version="1.0"?>

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"

version="1.0">

<xsl:template match="/">

<p>Review of 3.5 = <xsl:value-of

select="count(books/book[review=3.5])"/></p>

<p>Review of 4 = <xsl:value-of

select="count(books/book[review=4])"/></p>

</xsl:template>

</xsl:stylesheet>

(11)

Konstruowanie dokumentu wynikowego (2)

• Przewidziano możliwość numerowania wyprowadzanych danych:

<xsl:number value="position()"/>

• Kolejnym kluczowym elementem występującym zwykle wewnątrz głównego wzorca jest zastosowanie wzorców do wyselekcjonowanej zawartości:

<xsl:apply-templates />

• Atrybut select określa lokalizacje, do których mają zostać

zastosowane zdefiniowane w arkuszu szablony. Brak tego atrybutu spowoduje zastosowanie szablonów do elementów zawartych

bezpośrednio w elemencie stanowiącym bieżący kontekst.

• Umieszczenie tego polecenia w powyższej postaci (bez atrybutu) we wszystkich wprowadzonych wzorcach pozwala na „bezkontekstowe”

przetworzenie zawartości w zależności od rodzaju elementu.

• Np. <xsl:template match="tytul">

<p><font face="verdana" color="steelblue" size="3">

<xsl:apply-templates />

</font> </p> </xsl:template>

(12)

Przekazywanie zawartości bez przetwarzania

• Chcąc uniknąć przetwarzania zawartości elementów danego rodzaju, możemy zamiast <xsl:apply-templates />

zastosować: <xsl:value-of select=”.” /> celem

wyprowadzenia samej (nieprzetworzonej) zawartości (bez znaczników) albo: <xsl:value-of select=”./text()” /> dla zwrócenia tylko bezpośrednio zawartego tekstu.

• Efektywnie, obok instrukcji value-of, apply-templates oraz bezpośredniego wpisywania zawartości do wzorca, do

budowania zawartości elementu docelowego można użyć jeszcze:

– <xsl:copy> - umieszczenie wskazanego elementu w całości w strukturze wynikowej;

– <xsl:copy-of>- umieszczenie wskazanego elementu w całości w strukturze wynikowej wraz z jego przodkami i atrybutami.

(13)

Instrukcja pętli oraz instrukcja warunkowa

• Kolejne przetworzenie wszystkich wyselekcjonowanych elementów możemy uzyskać stosując instrukcję

<xsl:for-each select=”sciezka” />. Np.

<xsl:for-each select="lista/osoba">

… </xsl:for-each>

• Umożliwia to przetwarzanie o charakterze proceduralnym, niezbędne w sytuacjach, gdy np. trzeba zreorganizować

układ elementów w dokumencie docelowym.

• Instrukcja warunkowa xsl:if: jej zawartość jest

przetwarzana, jeśli wyrażenie w atrybucie test zwróci:

– niepusty zbiór węzłów;

– niepusty łańcuch tekstowy;

– lub liczbę różną od zera.

• Składnia: <xsl:if test=”wyrażenie logiczne”>

.. Zawartość warunkowa .. </xsl:if>

(14)

Instrukcja wielokrotnego wyboru

• Uzupełnia funkcjonalność instrukcji if (która nie posiada segmentu else).

• Oparta na elemencie xsl:choose.

• Układ instrukcji znany z Javy (instrukcja switch):

<xsl:choose>

<xsl:when test=”warunek”>

zawartość jeśli spełniony </xsl:when>

<xsl:otherwise>

zawartość gdy żaden z powyższych nie spełniony </xsl:otherwise>

</xsl:choose>

(15)

Wstawianie atrybutów oraz sortowanie

• Wstawianie atrybutu do elementu wyjściowego:

<naszEl> <xsl:attribute name=„nazwaAtr"> <xsl:value-of select="@istniejacyAtr" /> </xsl:attribute> </naszEl>

Jeżeli atrybut nie jest wstawiany w oparciu o instrukcję wyboru, można użyć formy skróconej (tzw. attribute template). Np. <img

src="{@lokalizacjaPliku}" />

Ponadto można konstruować elementy <xsl:element>, komentarze

<xsl:comment> oraz instrukcje przetwarzania <xsl:processing-instruction>

• Sortowanie zawartości:

– realizowane przy zastosowaniu elementu xsl:sort;

– element ten może się pojawić wyłącznie w ciele elementu apply-templates albo wewnątrz instrukcji xsl:for-each.

– Posiada następującą deklarację, przy czym domyślnym typem danych dla sortowania jest text:

<xsl:sort select = wyrażenie-string

data-type = { "text" | "number" | Qname } order = { "ascending" | "descending" }

case-order = { "upper-first" | "lower-first" } lang = { kod języka } />

(16)

Zmienne w XSLT

• Zmienne deklaruje się przy użyciu elementu xsl:variable:

<xsl:variable

name = ”nazwa” select =”wyrażenie” </xsl:variable>

• Użyteczne dla wprowadzania powtarzających się danych oraz dla zapamiętania określonego kontekstu.

• Mogą przechowywać zbiór węzłów albo łańcuch tekstowy.

• Odwołania do tak zadeklarowanych zmiennych w innych wyrażeniach select: poprzez poprzedzenie nazwy zmiennej symbolem dolara „$”.

• Zmenna może być globalna (zadeklarowana ponad

deklaracjami szablonów) albo lokalna (zadeklarowana wewnątrz danego szablonu).

• Podobne właściwości posiadają parametry: <xsl:param>:

– Ograniczenia na miejsce występowania;

– instrukcje xsl:apply-templates oraz xsl:call-template mogą przekazywać wartości do wzorców;

(17)

Wołanie funkcji ze skryptów

• Rozszerzenie dostarczane przez Microsoft umożliwia wołanie funkcji napisanych w VBScript lub JavaScript;

• Deklaracja funkcji wymaga zadeklarowania odpowiedniej przestrzeni nazwowej:

<?xml version="1.0" ?>

<xsl:stylesheet xsl="http://www.w3.org/1999/XSL/Transform"

xmlns:msxsl="urn:schemas-microsoft-com:xslt"

xmlns:naszeFunkcje="http://firma.com/przestrzenNazw"

version= "1.0">

• Deklaracja funkcji:

<msxsl:script language="VBScript" implements- prefix=„naszeFunkcje">

<![CDATA[

tutaj kod funkcji ]]> </msxsl:script>

• Wołanie funkcji:

<xsl:value-of select=„naszeFunkcje:xyz"/>

(18)

Wołanie nazwanych szablonów

• Szablony nazwane wraz z obsługą parametrów dostarczają udogodnień programowania proceduralnego:

• Można zdefiniować nazwany szablon wraz z oczekiwanymi przezeń parametrami:

<xsl:template name="formatowanieZawartosci">

<xsl:param name="naszParametr"/>

Budowa struktury wynikowej w oparciu o $naszParametr…

</xsl:template>

• Następnie wywołujemy wzorzec w odpowiednim kontekście, przekazując parametry:

<xsl:for-each select="/naszDok/naszElement">

<xsl:call-template name="formatowanieZawartosci">

<xsl:with-param name="naszParametr" select="./*"/>

</xsl:call-template> </xsl:for-each>

(19)

Język XPointer

(20)

Język XPointer

• Stanowi rozszerzenie języka XPath.

• Uzupełnia system adresów URI używanych w XLink (zob.

dalej).

• Pozwala oznaczać i wskazywać fragmenty dokumentów XML.

• Może traktować dokument zarówno jako drzewo węzłów (jak XPath), lub jako ciąg znaków (w treści elementów), pozwalając wskazywać jego podciągi.

• Wprowadza dwa specjalne typy wskaźników:

– punkt (point) w dokumencie XML;

– zakres (range) pomiędzy punktami końcowymi (mogącymi się znajdować w różnych elementach);

• Rozróżnia się także (używając środków XPath) węzły (node) i elementy (element).

(21)

Wskazania elementów dokumentu XML

• Odwołanie za pomocą identyfikatora: jeśli określony

element posiada atrybut typu ID, to można się doń odwołać poprzez wartość tego identyfikatora: xpointer(id(”a1234”)) albo z zewnątrz, następująco konstruując URI:

http://firma.com/dokument.xml#a1234

• Obok tradycyjnego wskazywania poprzez nazwę, stosuje się skróty XPath – tzw. sekwencję dzieci (child sequence).

– Każdy krok ścieżki oznacza tu zejście o jeden poziom w hierarchii węzłów i wybranie na danym poziomie n-tego kolejnego

podelementu.

– Np. xpointer(/*[1]/*[3]/*[2]) oznacza wybranie z elementu- korzenia trzeciego z jego elementów potomnych, z tego zaś drugiego z kolei jego elementu potomnego.

(22)

Pojęcie punktu i zakresu w XPointer

• XPointer wprowadza pojęcie punktu (point):

• Punkt początkowy (danego elementu) umiejscowiony jest tuż po znaczniku początkowym:

xpointer(start-point(//sprawozdanie))

• Z kolei jeśli chcemy wskazać początek całego dokumentu:

xpointer(start-point(/))

• Analogicznie, funkcja end-point(ścieżka) wskazuje na punkt końcowy, tj. miejsce tuż przed znacznikiem

końcowym danego elementu;

• Zakres w oparciu o wytyczające go elementy:

xpointer(range(//uczelnia/wydzial[1])) -> obejmuje fragment (lub fragmenty) dokumentu włącznie ze znacznikami wyznaczającymi podane elementy.

• Punkty można wyznaczać też w oparciu o zakres:

xpointer(start-point(range(//uczelnia/wydzial[1])))

(23)

Zakresy w oparciu o zadany ciąg znaków

• Funkcja o sygnaturze:

string-range(location-set, string, number?, number?)

• Drugi z argumentów stanowi wzorzec wyszukiwania.

• Np. xpointer(string-

range(//sprawozdanie/zakup,”oprogr”))

• Opcjonalne parametry liczbowe określają pierwszy znak zakresu (względem miejsca odnalezienia wzorca) oraz długość zakresu (domyślnie jest to długość wzorca).

• Interesującą właściwością jest to, że dla spójnego zbioru miejsc przeszukiwana zawartość tekstowa traktowana jest jako ciągła, tj. z pominięciem znaczników.

(24)

Zakres poprzez podanie miejsc początku i końca

• Wykonana w odpowiednim kontekście funkcja

range-to(location-set) zwróci zakres rozciągający się od kontekstu jej wywołania do podanej jako parametr

lokalizacji.

• Np. xpointer(id(

”sprawozd03”)/range-to(id(”sprawozd08”)))

• Wariantem tej funkcji jest range-inside(location-set).

Różni się ona wykluczeniem z wynikowego zakresu wyznaczających jego granice miejsc.

• Wszystkie wspomniane tu funkcje zwracają rezultat typu

„zbiór miejsc” (location-set).

(25)

Wskazania względne

• Funkcja here() pozwala na budowanie wskazań

względnych. Zwraca ona element, w którym umieszczono dane wyrażenie XPointer.

• Np. xpointer(here()/../following::zamowienie[1])

umieszczone w podelemencie elementu „zamowienie”, wskaże na następny element „zamowienie”.

(26)

Język XLink

(27)

XLink - charakterystyka

• XLink (XML Linking Language) rozszerza koncepcję odsyłaczy HTML. Zastosowanie języka: łączenie

dowolnych zasobów sieci Internet.

• Samodzielna specyfikacja (tj. nie objęta XML v. 1.0).

Wymaga zatem zadeklarowania przestrzeni nazwowej:

http://www.w3.org/1999/xlink, opatrywanej zwykle słowem kluczowym xlink.

• Pokonuje następujące ograniczenia odsyłaczy HTML:

– brak możliwości oznaczenia charakteru odnośnika;

– mają charakter binarny (łączą jedynie pary dokumentów: źródłowy i docelowy);

– są zawarte w dokumencie źródłowym (nie mogą być przechowywane zewnętrznie);

– problemem jest aktualizacja;

– mogą wskazywać dokumenty lub punkty w dokumentach, ale nie np. elementy dokumentu XML.

(28)

Odsyłacze proste XLink

• Rozszerzenie odsyłaczy języka HTML;

• Podobnie jak one, są osadzane w dokumencie źródłowym;

• Punkt docelowy opisywany poprzez adres URI;

• Wyróżniane atrybutem xlink:type=”simple”; np.

<odsylacz xlink:href =”http://www.firma.com/dokument.htm”

xlink:type=”simple”>

• Możliwość wskazywania konkretnych elementów dokumentu XML (lokalnego lub zewnętrznego):

– przy użyciu wartości jego identyfikatora: do URI dołączamy

”#wartoscIdentyfikatora”, tj. np. xlink:href=”#rozdzial_1”;

– bez użycia identyfikatora: korzystając ze środków języka XPath, ew. XPointer; np. <odsylacz xmlns:xlink=

”http://www.w3c.org/2000/xlink” xlink:type=”simple”

xlink:href=”http://firma.com/dokument.xml#xpointer(

//sprawozdanie/zamowienia[4])” />

(29)

Odsyłacze rozszerzone (extended) i ich składowe

• Wielokierunkowość – poprzez możliwość przechowywania odesłań do wielu miejsc;

• Możliwość określania ról poszczególnych powiązań odsyłacza;

• Wyróżniane atrybutem xlink:type=”complex”;

• Dostępne są następujące podelementy:

– Wskaźnik (locator), określający lokację zewnętrznych (w

stosunku do samego odsyłacza a niekoniecznie do dokumentu) zasobów;

– Zasób (resource), określający lokalne zasoby. Musi zawierać w sobie inne elementy XML, stanowiące opisywany przezeń zasób.

– Łuk (arc), określający połączenia nawigacyjne pomiędzy zasobami;

– Tytuł (title), określający czytelną dla człowieka nazwę.

• Powyższe podelementy mogą występować samodzielnie albo wewnątrz odsyłacza complex.

(30)

Atrybuty opisujące odsyłacze

• type – określa typ odsyłacza;

• href – identyfikuje zasób wskazywany przez odsyłacz. Może to być adres względny lub bezwzględny.

• role – podaje URI zawierający opis roli zasobu wskazywanego przez dany odsyłacz;

• arcrole – podaje URI zawierający opis roli samego łuku łączącego zasoby;

• show, actuate – sposób prezentacji i przetwarzania połączonych zasobów;

• label – deklaruje etykietę, która może zostać wykorzystana przy definiowaniu połączeń pomiędzy zasobami;

• from, to – służą definiowaniu powiązań pomiędzy elementami w oparciu o ich etykiety;

• title – czytelna dla człowieka nazwa odnośnika podana w postaci atrybutu.

Jak wspomniano wyżej, title może być również podawany jako podelement.

Ta nadmiarowość została wprowadzona z myślą o umożliwieniu umieszczania wielu tytułów (np. w różnych wersjach językowych) dla danego odnośnika.

(31)

Określanie przejść pomiędzy zasobami

• Wskazywane przez odnośnik (resource lub locator) mogą być łączone łukami (arc), określającymi przewidziane przejścia nawigacyjne

pomiędzy elementami;

• W tym celu odnośniki opatruje się wartościami atrybutu etykiety (label).

• W przeciwieństwie do identyfikatorów elementów, taka konstrukcja umożliwia zdefiniowanie przejść pomiędzy wieloma parami

elementów za pomocą deklaracji jednego łuku (np. rozdział-> spis treści).

• Pominięcie elementu to i / lub from powoduje dalsze rozszerzenie deklaracji łuku na odpowiednio połączenia do wszystkich i / lub od wszystkich zdefiniowanych odsyłaczami zasobów.

• Przypomnijmy: rola samego łuku może być opisana poprzez lokalizację podaną atrybutem xlink:arcrole. Pozwala to niejako określić klasę danego łuku i wykorzystać tę informację do

grupowania przy prezentacji zasobów.

(32)

Odsyłacze rozszerzone

• Identyfikowane typem: xlink:type=”extended”;

• Mogą zawierać wewnątrz odsyłacze zasobów (resource), odnośniki (locator), łuki (arc).

• Tworzą bazę odsyłaczy, umieszczaną zwykle w odrębnym pliku.

• W ramach odsyłaczy rozszerzonych łuki mogą łączyć jedynie lokalnie zdefiniowane zasoby.

• Zewnętrzne bazy odsyłaczy

– określane jako out-of-line links, w przeciwieństwie do tradycyjnych odsyłaczy zwanych inline links;

– koncepcja redukuje problem aktualizacji odsyłaczy: zestawienia odnośników na dany temat mogą zostać „wyciągnięte przed

nawias” i przechowywane w jednym miejscu.

(33)

Określanie sposobu zachowania się odsyłaczy

• Atrybut show określa sposób wyświetlania wskazywanego zasobu:

– new: w nowym oknie/ramce;

– replace: zastąpienie aktualnie prezentowanej treści;

– embed: wstawienie treści odsyłacza w dokument;

– other: informacja o sposobie wyświetlania umieszczona gdzie indziej;

– none: brak informacji o sposobie wyświetlania.

• Atrybut actuate określa sposób aktywowania formularza:

– onLoad – przy ładowaniu dokumentu źródłowego;

– onRequest – w przypadku wybrania przez użytkownika;

– other – sposób aktywacji określony w innym miejscu;

– none – sposób aktywacji nie został określony.

(34)

Deklarowanie odsyłaczy wbudowanych w dokument

• Jeśli definiujemy typ dokumentu, to umieszczane w nim odsyłacze (jako określonego rodzaju elementy z

właściwymi im atrybutami) należy uwzględnić w stosownym DTD, jeśli jest stosowany.

• Atrybuty odsyłaczy definiujemy w DTD jako wartości typu CDATA.

• Przewidziane specyfikacją wartości atrybutów show oraz actuate można podać jako wyliczenie.

• Można nałożyć dodatkowe ograniczenia, jeśli np. nie

przewidujemy wykorzystywania jakiejś właściwości XLink w dokumencie.

Cytaty

Powiązane dokumenty

• Dla znanych typów dokumentów (tj. dla których istnieją definicje typu), można sprawdzić zgodność dokumentu ze specyfikacją typu.. Program

• Obydwa atrybuty należy zadeklarować w definicji typu elementu (możliwe, że jako stałe lub z wartością domyślną), którego będą

• Deklaracje elementów mogą występować globalnie, w ramach definicji typu złożonego albo w ramach definicji innego elementu.. • Definicje typów mogą wystąpić globalnie

– Umożliwia : tworzenie elementu, atrybutu, węzła tekstowego, komentarza, sekcji znakowej, instrukcji przetwarzania, referencji do encji zewnętrznej ; tworzenie fragmentu

– atrybuty danego bloku nagłówkowego określają, czy może oraz czy musi być przetworzony przez dany węzeł. – W wypadku przetworzenia bloku, jest on usuwany przed dalszym

• Przykładem formatowania może być przetwarzanie dokumentu przy wyświetlaniu przez przeglądarkę... Tworzenie i wykorzystanie dokumentu

• Typy danych używanych w opisywanych przez dokument WSDL interfejsach mogą być zdefiniowane w dowolnym systemie typów, choć domyślnie stosuje się właśnie XML Schema..

• Wyróżnikiem technologii metadanych jest to, że uwzględniają one w sposób jawny dwa meta-poziomy (metadanych i danych albo meta- metadanych i metadanych). • Służący wymianie