Title: Bazy Danych i jezyk XML
1Bazy Danych i jezyk XML
2XML nowoczesne technologie zarzadzania trescia -
korzenie
- Lata 60-te
- 1967 William Tunnicliffe, prezes Graphic
Communications Association, podczas spotkania w
Canadian Government Printing Office przedstawia
idee oddzielenia zawartosci informacyjnej
dokumentów od ich formatu, - Stanley Rice proponuje uzycie uniwersalnych
znaczników do znakowania struktury tekstu, - projekt GenCode definiuje sposób oznaczania
tekstu ukierunkowany na jego strukture.
3Rozwój jezyków uogólnionego znakowania tekstu
- 1969 GML Generalized Markup Language(IBM
Goldfarb, Mosher, Laurie). - 1986 SGML Standard Generalized Markup
Language, ISO 88791986. - 1991 powstaje World Wide Web.
- 1991 HTML zdefiniowany jako zastosowanie SGML-a
do opisywania stron www. - 1996 XML Extensible Markup Language,World
Wide Web Consortium.
4Co to jest XML?
- XML to sposób zapamietywania danych wraz z ich
struktura w dokumencie tekstowym - otwarty,
- elastyczny,
- niezalezny od platformy sprzetowej.
- XML to rama skladniowa do tworzenia jezyków
specyficznych dla zastosowan.
5Co to jest XML?
- XML (rozszerzony jezyk znaczników) to jezyk w
którym dane zapisuje sie w formie tekstu.
Wlasciwosci danych opisuje specjalne oznakowanie.
Stosowane oznakowania to nic innego jak
umieszczenie w tekscie informacji o interpretacji
lub sposobie prezentacji przedstawionego tekstu.
Oznakowanie ma przede wszystkim postac
znaczników. Znaczniki ujete sa w trójkatne
nawiasy ltgt. - Dokument sklada sie ze znaczników oraz danych
znakowych jedne i drugie tworza razem elementy.
6Co to jest XML?
-
- Element rozpoczyna sie znacznikiem poczatkowym
i konczy znacznikiem koncowym. W zapisie
znacznika koncowego pojawia sie nawias katowy i
ukosnik, na przyklad lt/takgt. Znaczniki obejmuja
oznakowany tekst, zas element to fragment
dokumentu od znacznika poczatkowego do koncowego
wraz z tymi znacznikami. Np.elementem moze byc
tekst - ltslowogtobejmujalt/slowogt
-
7Co to jest XML?
- Oznakowanie to mechanizm, który pozwala dodac do
dokumentu metainformacje oraz opisac strukture
tego dokumentu. Znaczniki opisuja dane znakowe
zapisane w dokumencie. - Elementy moga zawierac inne elementy te
elementy wewnetrzne nazywaja sie podelementami
lub subelementami. - Dokument sklada sie z pojedynczego, najbardziej
zewnetrznego (nadrzednego) elementu, który
zawiera inne elementy i (lub) dane znakowe. Kazdy
podelement moze zawierac inne podelementy i dane
znakowe.
8Co to jest XML?
-
- XML dzieki rozszerzalnosci (rozumianej jako
brak ograniczen), jest poteznym mechanizmem,
który umozliwia swobodne komentowanie i
znakowanie danych. Mozna go stosowac do
przetwarzania dowolnych danych zapisywanych w
dokumentach lub bazach danych.
9Struktura dokumentu XML
10Struktura logiczna i fizyczna dokumentu XML
- XML uzywa znaczników poczatku i konca jako
swego rodzaju pojemnika oba znaczniki stanowa
jeden element. Elementy takie sa podstawowa
cegielka budowy dokumentów. Kazdy dokument XML
musi miec dokladnie jeden element glówny,
wszystkie pozostale elementy musza byc w nim
calkowicie zawarte. Uklad elementów dokumentu XML
nazywamy struktura logiczna dokumentu XML. - Encja jest fizyczna jednostka informacji. Wedlug
oficjalnej nomenklatury XML encja jest obiektem
przechowywania danych. Uklad encji okresla
strukture fizyczna dokumentu. - Struktury fizyczna i logiczna musza byc ze soba
zsynchronizowane-musza byc w sobie nawzajem
prawidlowo zagniezdzone.
11Budowa elementu XML
- Element zazwyczaj sklada sie ze znacznika
poczatkowego, zawartosci i znacznika koncowego.
Nazwa typu elementu identyfikuje dany typ lub
klase elementów a nie konkretny element. Dokument
moze zawierac wiecej niz jeden element o takiej
samej nazwie typu.
12Rodzaje zawartosci elementu
- Jako zawartosc elementu mozna umiescic
nastepujace elementy - zagniezdzone elementy
- dane znakowe
- odwolanie do encji ogólnych lub odwolanie do
znaków - sekcje CDATA
- instrukcje sterujace
- komentarze
13Dodawanie elementom atrybutów
- W znaczniku poczatkowym elementu mozna umiescic
jedna lub wiecej specyfikacji atrybutu. Jest to
para nazwa-wartosc zwiazana z danym atrybutem. - ltCENA Rodzajdetalgt132 zllt/CENAgt
- Stosowanie atrybutów jest jedna z metod
wstawiania do elementów informacji. - Zazwyczaj porcje danych elementu, które zamierza
sie wyswietlic umieszczane sa w zawartosci
elementu. Natomiast atrybutów uzywa sie do
przechowywania róznych wlasciwosci elementu,
niekoniecznie przeznaczonych do wyswietlania,
takich jak kategorie lub instrukcje wyswietlania.
Specyfikacja XML nie narzuca zadnych ogreniczen
co do rodzaju informacji, które powinny byc
przechowywane w atrybutach badz w zawartosci.
14Komentarze w XML
-
- lt!-- Tutaj mozesz wstawic dowolny tekst , oprocz
podwojnego lacznika. Znaki lt oraz sa OK. --gt -
- Komentarz mozna umiescic w dowolnym miejscu
dokumentu na zewnatrz markapów. -
- Markup jest tekstem o oznaczonych granicach,
który opisuje strukture dokumentu. Markupami sa
znaczniki poczatkowe elementu, znaczniki koncowe
elementu, znaczniki elementu pustego, komentarze,
deklaracje typu dokumentu, instrukcje sterujace,
ograniczniki sekcji CDATA, odwolania do encji
oraz odwolania znakowe. -
15Instrukcje sterujace
- Zadaniem instrukcji sterujacej jest
dostarczenie informacji, które procesor XML
przekaze aplikacji. - Postac instrukcji
- lt? cel instrukcja ?gt
- Tutaj cel jest nazwa aplikacji do której
instrukcja jest skierowana. - Natomiast instrukcja jest informacja
przekazywana aplikacji.
16Instrukcje sterujace
- Jezeli wykorzystywany jest Internet Explorer 5
jako procesor XML to instrukcja sterujaca mozna
nakazac Internet Explorerowi 5 skorzystanie z
konkretnego arkusza stylów - lt?xml-stylesheet type text/css
hrefSpis01.css?gt - Instrukcje sterujaca mozna wstawic w dowolnym
miejscu dokumentu XML, na zewnatrz markapów a
wiec w prologu dokumentu, za elementem glównym
lub wewnatrz zawartosci elementu.
17Sekcja CDATA
- Sekcja CDATA zaczyna sie znakiem lt!CDATA, a
konczy znakiem gt. Miedzy tymi dwoma
ograniczajacymi grupami znaków mozna wpisywac
dowolne znaki z wyjatkiem gt (które zostalyby
zinterpretowane jako koniec sekcji CDATA). - Wszystkie znaki wewnatrz sekcji CDATA sa
traktowane jako literalna czesc danych znakowych
elementu, a nie jako markupy XML. - Sekcje CDATA mozna wstawic wszedzie tam, gdzie
wystepuja dane znakowe, tzn. wewnatrz zawartosci
elementu ale nie wewnatrz markapa XML.
18Sekcja CDATA
- ltA-SEKCJAgt
- Oto przyklad bardzo prostej strony HTML
- lt!CDATA
- ltHTMLgt
- ltHEADgt
- ltTITLEgtKowalski i synlt/TITLEgt
- lt/HEADgt
- ltBODYgt
- ltPgtWitamy na naszej stronie domowej!lt/Pgt
- lt/BODYgt
- lt/HTMLgt
- gt
- lt/A-SEKCJAgt
-
19Przyklad dokumentu XML
20Przyklad dokumentu XML
21XSL (XML Stylesheet Language)
- Jezyk pozwalajacy na przekonwertowanie dokumentu
XML do róznych formatów np. HTML, XML, SVG
(Scalable Vector Graphics, www.w3.org/TR/SVG/),
PDF i wiele innych
22XPATH (XML Path Languge)
- Jezyk zapewnia mozliwosc wykonywania kwerend,
które wyszukuja odpowiednie informacje w
dokumencie XML - Polaczenie jezyków XSL i XPATH pozwala na
tworzenie dokumentów XSLT (eXtensible StyleSheet
Transformations) stanowiacych wzorzec do
transformacji dokumentu XML
23Plik XSLT
24Zmiana w pliku XML
25Wynik parsowania
26Zapis danych w formacie XML
27Dane
28Kod
Imports System.Data.SqlClient Imports
System.xml Imports System.xml.xsl Imports
System.Xml.Xsl.XslCompiledTransform Dim dataSet
As DataSet New DataSet("Test") Dim
customerAdapter As SqlDataAdapter New
SqlDataAdapter( _ "SELECT IdKlienta,
Nazwa, Adres FROM Klienci", connection)
customerAdapter.Fill(dataSet, "Klienci")
Dim orderAdapter As SqlDataAdapter New
SqlDataAdapter( _ "SELECT IdKlienta,
IdZamowienia, CONVERT(varchar(12), Data, 104) AS
Data FROM Zamowienia", connection)
orderAdapter.Fill(dataSet, "Zamowienia")
connection.Close()
29Kod c.d.
dataSet.Relations.Add("Test", _
dataSet.Tables("Klienci").Columns("IdKlienta"),
_ dataSet.Tables("Zamowienia").Columns("Id
Klienta")).Nested True
dataSet.WriteXml("XMLZamowienia.xml")
dataSet.WriteXmlSchema("XMLZamowieniaS.xml")
Dim xmlDoc As XmlDataDocument New
XmlDataDocument(dataSet) Dim xslTran As
XslCompiledTransform New XslCompiledTransform
xslTran.Load("XSLTZamowienia.xslt")
Dim writer As XmlTextWriter New XmlTextWriter(
_ "xslt_output.html",
System.Text.Encoding.UTF8)
xslTran.Transform(xmlDoc, Nothing, writer)
writer.Close()
30Plik XML
31Plik XMLSchema
32Wynik
33Wczytywanie prostych plików XML do bazy danych
(DataSet)
dataSetXML.ReadXml("XMLZamowienia.xml")
DataGridView1.DataSource dataSetXML
DataGridView1.DataMember "Klienci"
34Wynik
35Serializacja
- Wg Serializacja danych w .NET 2.0
- http//www.codeguru.pl/baza-wiedzy/serializacja-da
nych-w-net-20-czesc-1,2493
36Serializacja - deserializacja
- Proces przeksztalcania obiektów (badz ogólnie
danych) uzywanych w programie na ciag bajtów,
który moze nastepnie byc przekazany poza dana
instancje programu - Proces odwrotny nazywamy deserializacja
37Przyklady serializacji
- zapisywanie parametrów konfiguracyjnych programu
do pliku i ich odczyt w razie potrzeby - zapisywanie stanu dzialania programu, aby przy
nastepnym uruchomieniu, kontynuowac dzialanie od
zapisanego momentu - wymiana danych miedzy programami znajdujacymi sie
na róznych komputerach polaczonych siecia
komputerowa
38Serializacja w srodowisku .NET
- Dwa gotowe mechanizmy serializacji danych
XmlSerializer oraz System.Runtime.Serialization
(SoapFormatter/BinaryFormatter) - XmlSerializer oraz SoapFormatter w procesie
serializacji korzystaja z jezyka XML - BinaryFormatter przeksztalca obiekty w ciag
bajtów w sposób specyficzny dla srodowiska .NET
39Serializacja XML
- Serializacja XML wykorzystujemy
- gdy mamy do czynienia z wymiana danych miedzy
róznymi aplikacjami - jesli chcemy w latwy sposób operowac na juz
istniejacych dokumentach XML - gdy chcemy dokladnie kontrolowac strukture
dokumentu, do którego przeksztalcamy nasze dane
40XmlSerializer - 1
using System.Text using System.Xml using
System.Xml.Serialization namespace
SerializacjaPrzyklady public class Samochód
public int LiczbaKól 4
public string Marka public string
Model private int NrSilnika 12345
41XmlSerializer - 2
class Program static
void Main() // Tworzymy
obiekt serializatora, któremu podajemy typ
jaki // bedziemy serializowac
XmlSerializer Serializer new XmlSerializer(typeo
f(Samochód)) // Tworzymy obiekt
Samochodu. Samochód Audi_TT new
Samochód() Audi_TT.Marka "Audi"
42XmlSerializer - 3
// Tworzymy strumien danych XML
powiazany // z plikiem Samochód.xml
XmlTextWriter XmlTextWriter new
XmlTextWriter("Samochód.xml",
Encoding.UTF8) // Ustawiamy robienie
wciec w pliku Samochód.xml
XmlTextWriter.Formatting Formatting.Indented
// Wlasciwy moment serializacji.
Serializer.Serialize(XmlTextWriter,
Audi_TT) // Zamykamy strumien
danych powiazany z plikiem Samochód.xml
XmlTextWriter.Close()
43XmlSerializer - wynik
44XmlSerializer deserializacja 1
using System.Text using System.Xml using
System.Xml.Serialization namespace
SerializacjaPrzyklady public class
Samochód public int LiczbaKól 4
public string Marka public string
Model private int NrSilnika 12345
45XmlSerializer deserializacja 2
class Program static void Main()
// Tworzymy obiekt
serializatora, któremu podajemy typ
// jaki bedziemy serializowac
XmlSerializer Serializer new XmlSerializer(typeo
f(Samochód)) // Tworzymy strumien
danych XML powiazany // z plikiem
Samochód.xml XmlTextReader
XmlTextReader new
XmlTextReader("Samochód.xml") //
Tworzymy pusty obiekt Samochodu.
Samochód Audi_TT null
46XmlSerializer deserializacja 3
// Wlasciwy moment deserializacji.
Audi_TT (Samochód)Serializer.Deserialize
(XmlTextReader) // Zamykamy
strumien danych powiazany z plikiem Samochód.xml
XmlTextReader.Close()
47Serializacja bazy danych 1
CREATE DATABASE Pojazdy GO USE Pojazdy CREATE
TABLE dbo.Samochody( Id int
IDENTITY(1,1) NOT NULL, LiczbaKol int
NULL, Marka nchar(255) NULL, Model
nchar(255) NULL, NrSilnika int NULL,
CONSTRAINT PK_Samochody PRIMARY KEY CLUSTERED
( Id ASC )WITH (PAD_INDEX OFF,
STATISTICS_NORECOMPUTE OFF, IGNORE_DUP_KEY
OFF, ALLOW_ROW_LOCKS ON, ALLOW_PAGE_LOCKS
ON) ON PRIMARY ) ON PRIMARY GO
48Serializacja bazy danych 2
INSERT INTO Pojazdy.dbo.Samochody
(LiczbaKol ,Marka
,Model ,NrSilnika) VALUES
(4, 'Audi', 'TT', 12345) CREATE LOGIN
serializacja WITH PASSWORD 'serializacja', DEFA
ULT_DATABASE Pojazdy, DEFAULT_LANGUAGE
Polish CREATE USER serializacja FOR LOGIN
serializacja GRANT SELECT TO serializacja
49Serializacja bazy danych 3
using System.Data using System.Data.SqlClient
namespace SerializacjaPrzyklady class
BazaDanych static void
Main(string args) //
Utworzenie polaczenia z serwerem SQL.
SqlConnection SqlConnection new
SqlConnection("Data Source127.0.0.1Initial
Catalog PojazdyPersist Security InfoTrueUser
IDserializacja Passwordserializacja")
50Serializacja bazy danych 4
// Utworzenie SqlDataAdaptera
powiazanego z tabela Samochody.
string selectCommandText "SELECT LiczbaKól,
Marka, Model, NrSilnika
FROM Samochody" SqlDataAdapter
SqlDataAdapter new SqlDataAdapter
(selectCommandText, SqlConnection)
// Utworzenie DataSetu o nazwie
Samochody. DataSet DataSet new
DataSet("Samochody") // Wypelnienie
DataSetu. SqlDataAdapter.Fill(DataSet)
// Zapisanie zawartosci DataSetu
do pliku XML. DataSet.WriteXml("Samoch
ód.xml")
51Deserializacja bazy danych 1
using System.Data using System.Data.SqlClient
namespace SerializacjaPrzyklady class
BazaDanych static void
Main(string args) //
Utworzenie DataSetu o nazwie Samochody.
DataSet DataSet new DataSet("Samochody")
// Wczytanie pliku XML do DataSetu.
DataSet.ReadXml("Samochód.xml")
52Deserializacja bazy danych 2
// Wyswietlenie zawartosci pierwszej
tabeli, pierwszego //wiersza,
pierwszej komórki. System.Console.Writ
eLine(DataSet.Tables0.Rows0.ItemArray1)