Programovací jazyk C# Další kapitoly

Podobné dokumenty
Programovací jazyk C# Další kapitoly

Programovací jazyk C# Další kapitoly

Z n a č k o v a c í j a z y k y. XSL (extensible Stylesheet Language) XSLT (extensible Stylesheet Language Transformation) XPath

Podpora XML v.net. Podpora XML v.net. nezávislý publicista. Jirka Kosek.

Obsah přednášky. XML DOM SAX XPath XSL transformace 1/46

Hypertext Transfer Protocol (HTTP/1.1 RFC 2616) Počítačové sítě Pavel Šinták

APLIKACE XML PRO INTERNET

Úvod Jednoduchá komunikace Sockety Konec. Programování v C# Síťová komunikace. Petr Vaněček 1 / 33

24. XML. Aby se dokument XML vůbec zobrazil musí být well-formed (správně strukturovaný). To znamená, že splňuje formální požadavky specifikace XML.

Jazyk XSL XPath XPath XML. Jazyk XSL - rychlá transformace dokumentů. PhDr. Milan Novák, Ph.D. KIN PF JU České Budějovice. 9.

Prezentace XML. XML popisuje strukturu dat, neřeší vzhled definice vzhledu:

Tvorba informačních systémů

Třídy a objekty. Třídy a objekty. Vytvoření instance třídy. Přístup k atributům a metodám objektu. $z = new Zlomek(3, 5);

X36DSV 3. cvičení. XML (extensible Markup Language) JavaScript. AJAX (Asynchronous JavaScript and XML) X36DSV. 2007/10 ver.2.0 1

Komponenty v.net. Obsah přednášky

Tvorba informačních systémů

Dnešní téma. Oblasti standardizace v ICT. Oblasti standardizace v ICT. Oblasti standardizace v ICT

Principy fungování WWW serverů a browserů. Internetové publikování

Vývoj Internetových Aplikací

Ing. Přemysl Brada, MSc., Ph.D. Ing. Martin Dostal. Katedra informatiky a výpočetní techniky, FAV, ZČU v Plzni

Pokročilé techniky tvorby sestav v Caché. ZENové Reporty

Syntaxe XML XML teorie a praxe značkovacích jazyků (4IZ238)

Úvod do aplikací internetu a přehled možností při tvorbě webu

Počítačové sítě II. 18. World Wide Web, HTTP Miroslav Spousta,

Uspořádání klient-server. Standardy pro Web

Úvod do tvorby internetových aplikací

PROGRAMOVÁNÍ PRO MS WINDOWS 1

BI-AWD. Administrace Webového a Databázového serveru Úvod do problematiky HTTP serveru

WWW technologie. HTTP protokol

HTTP protokol. Zpracoval : Petr Novotný

IRAE 07/08 Přednáška č. 7. Začátek (head)

Základy jazyka C# Obsah přednášky. Architektura.NET Historie Vlastnosti jazyka C# Datové typy Příkazy Prostory jmen Třídy, rozhraní

Tvorba jednoduchých WWW stránek. VŠB - Technická univerzita Ostrava Katedra informatiky

Internet Information Services (IIS) 6.0

WWW a HTML. Základní pojmy. Ivo Peterka

Webové služby a XML. Obsah přednášky. Co jsou to webové služby. Co jsou to webové služby. Webové služby a XML

XML a XSLT. Kapitola seznamuje s šablonami XSLT a jejich použití při transformaci z XML do HTML

API pro práci s XML. Jirka Kosek. Poslední modifikace: $Date: 2014/12/17 17:15:28 $ Copyright Jiří Kosek

PROGRAMOVÁNÍ PRO MS WINDOWS 1

1. Webové služby. K čemu slouží? 2. RPC Web Service. 3. SOA Web Service. 4. RESTful Web services

HTML Hypertext Markup Language

Java a XML. 10/26/09 1/7 Java a XML

Tvorba informačních systémů

XML terminologie a charakteristiky. Roman Malo

NSWI096 - INTERNET JavaScript

PREPROCESOR POKRAČOVÁNÍ

Jazyky pro popis dat

HTTP protokol. HTTP protokol - úvod. Zpracoval : Petr Novotný novotny0@students.zcu.cz

API pro volání služby kurzovního lístku KB

Počítačové sítě II 17. WWW, HTTP. Miroslav Spousta, 2005

Instalace a konfigurace web serveru. WA1 Martin Klíma

Schéma e-pošty. UA (User Agent) rozhraní pro uživatele MTA (Message Transfer Agent) zajišťuje dopravu dopisů. disk. odesilatel. fronta dopisů SMTP

CZ.1.07/1.5.00/

HTML XHTML JavaScript PHP ASP.Net Zajímavé odkazy

Tvorba webu. Úvod a základní principy. Martin Urza

Univerzita Palackého v Olomouci Radek Janoštík (Univerzita Palackého v Olomouci) Základy programování 4 - C# 3.4.

Michal Krátký, Miroslav Beneš

Škola: Gymnázium, Brno, Slovanské náměstí 7 III/2 Inovace a zkvalitnění výuky prostřednictvím ICT Název projektu: Inovace výuky na GSN

SOUBORY, VSTUPY A VÝSTUPY POKRAČOVÁNÍ

Počítačové sítě Systém pro přenos souborů protokol FTP

Tvorba informačních systémů

Úvod do informatiky 5)

Identifikátor materiálu: ICT-3-03

KAPITOLA 2 - ZÁKLADNÍ POJMY INFORMAČNÍCH A KOMUNIKAČNÍCH TECHNOLOGIÍ

Platforma.NET 11.NET Framework 11 Visual Basic.NET Základní principy a syntaxe 13

1 Webový server, instalace PHP a MySQL 13

Tvorba WWW stránek. přehled technologií používaných na webu principy jednotlivých technologií a možnosti jejich vzájemného kombinování

GUIDELINES FOR CONNECTION TO FTP SERVER TO TRANSFER PRINTING DATA

Předmluva k druhému vydání 13. Úvod 17. ČÁST 2 Vytváření dokumentů XML 65

Základy XML struktura dokumentu (včetně testových otázek)

První kapitola úvod do problematiky

RESTful API TAMZ 1. Cvičení 11

Přístup k transportní vrstvě z vrstvy aplikační rozhraní služeb služby pro systémové aplikace, služby pro uživatelské aplikace DNS

Generické programování

Úvod do programovacích jazyků (Java)

Rozhraní pro práci s XML dokumenty. Roman Malo

Protokol HTTP 4IZ228 tvorba webových stránek a aplikací

Maturitní témata Školní rok: 2015/2016

pracuje na principu Požavek/Odpověď (request/response) výhodou je jednoduchost a teoretická možnost přenášet objekty jakéhokoliv druhu

Obsah přednášky. Představení webu ASP.NET frameworky Relační databáze Objektově-relační mapování Entity framework

PHP - úvod. Kapitola seznamuje se základy jazyka PHP a jeho začleněním do HTML stránky.

MBI - technologická realizace modelu

XSLT pomocí JavaScriptu v Mozille (... Opeře a Safari)

CAL (CAN Application Layer) a CANopen

RMI Remote Method Invocation

Google Web Toolkit. Martin Šurkovský, SUR března Katedra informatiky

Jazyk C# - přístup k datům

Statické proměnné a metody. Tomáš Pitner, upravil Marek Šabo

PROMĚNNÉ, KONSTANTY A DATOVÉ TYPY TEORIE DATUM VYTVOŘENÍ: KLÍČOVÁ AKTIVITA: 02 PROGRAMOVÁNÍ 2. ROČNÍK (PRG2) HODINOVÁ DOTACE: 1

Základy HTML, URL, HTTP, druhy skriptování, formuláře

Internet WEB stránky HTML, Hypertext MarkUp Language - nadtextový jazyk - Místo příkazů obsahuje tagy - značky

Datum vytvoření. Vytvořeno 18. října Očekávaný výstup. Žák chápe pojmy URL, IP, umí vyjmenovat běžné protokoly a ví, k čemu slouží

HTML - Úvod. Zpracoval: Petr Lasák

Obsah přednášky. 12. Dokumentace zdrojového kódu Tvorba elektronické dokumentace UML. Co je diagram tříd. Ing. Ondřej Guth

Programování v jazyku C# II. 1.kapitola

1 - Úvod do platformy.net. IW5 - Programování v.net a C#

Metody tvorby ontologií a sémantický web. Martin Malčík, Rostislav Miarka

Vývoj multiplatformní aplikace v Qt

Identifikátor materiálu: ICT-3-10

Transkript:

Programovací jazyk C# Další kapitoly Ing. Marek Běhálek Katedra informatiky FEI VŠB-TUO A-1018 / 597 324 251 http://www.cs.vsb.cz/behalek marek.behalek@vsb.cz Náplň kapitoly V této kapitole budete seznámeni se základy programování v těchto oblastech. Práce v síti Práce s XML Windows Forms Webové aplikace využívající ASP.NET Další kapitoly 2 1

Úvod do sítí - TCP/IP model - realita aplikace aplikace Aplikační Aplikační TCP-UDP Internet (IP) TCP-UDP Internet (IP) Linková Fyzická Linková Fyzická Další kapitoly 3 Úvod do sítí - Komunikace dvou aplikací IP adresa identifikace počítače port identifikace aplikace v počítači Počítač: 158.196.147.52 Počítač: 131.207.233.71 Aplikace:1058 Aplikace:80 Aplikace:42601 Aplikace:21 Další kapitoly 4 2

Úvod do sítí - IP adresa Internet Protocol address jednoznačně identifikuje zařízení v IP síti IPV4 32 bitů - (4 bajty v desítkové soustavě) aaa.bbb.ccc.ddd 158.196.149.9 IPV6 128 bitů - 16 bajtů (8 dvojbajtů v šestnáctkové soustavě) aaaa:bbbb:cccc:dddd:eeee:ffff 2001:0db8:85a3:08d3:1319:8a2e:0370:7334 DNS (Domain Name System) www.vsb.cz => 158.196.149.74 dom k...dom 3.dom 2.dom 1 Další kapitoly 5 Úvod do sítí - World Wide Web množství hypertextových dokumentů vyhledávání, prohlížení, sdílení dokumentů hypertext odkaz v dokumentu na kterýkoliv dokument nebo část dokumentu kdekoliv ve WWW HTTP (HyperText Transfer Protocol) protokol pro přenos dat mezi klientem a webovým serverem HTML (HyperText Markup Language) systém textových značek pro prohlížeč značky definují odkazy, způsob formátování dat a pod. Další kapitoly 6 3

Úvod do sítí - World Wide Web Webový server aplikace poskytující dokumenty HTTP (HyperText Transfer Protocol) HTTP 1.0 bezestavový protokol HTTP požadavek (GET, POST, HEAD) HTTP odpověď Klient HTTP požadavek HTTP Webový server HTTP odpověď Další kapitoly 7 Úvod do sítí - HTTP 1.0 bezestavový protokol požadavek odpověď => ukončení spojení požadavek i odpověď mají následující formát <úvodní řádek> <hlavička-1>: <hodnota-1> <hlavička-2>: <hodnota-2>... <hlavička-n>: <hodnota-n> <prázdný řádek> <nepovinné tělo zprávy> Další kapitoly 8 4

Úvod do sítí - HTTP požadavek Požadavek GET GET cesta HTTP/verze GET / HTTP/1.0 Host: www.google.com User-Agent: Mozilla/5.0 Accept: text/xml,application/xml,application/xhtml+xml,text/html Accept-Language: cs-cz,cs;q=0.9,en-us;q=0.8,en;q=0.7,defaultqls Accept-Encoding: gzip,deflate Accept-Charset: windows-1250,utf-8;q=0.7,*;q=0.7 Cookie: PREF=ID=c0f4d58d41001453:TB=2:TM=1168255510:LM=1177510598:S=32VaTkcUR4ijOcQr Požadavek POST POST cesta HTTP/verze POST /path/script.cgi HTTP/1.0 From: mole@garden.cs User-Agent: MoleHill/0.13 Content-Type: application/x-www-form-urlencoded Content-Length: 32 name=mole&event=trap&action=kill Další kapitoly 9 Úvod do sítí - HTTP odpověď HTTP/verze kód text HTTP/1.1 200 OK Cache-Control: private Content-Type: text/html; charset=utf-8 Content-Encoding: gzip Server: gws Content-Length: 68 Date: Fri, 21 Sep 2007 08:53:37 GMT...W.v.6...S.Z.jI..8.J"}.6q..I.'Mw.?>.R.@..@...G.../... HTTP/1.0 404 Not Found...... kód 1xx 2xx 3xx 4xx 5xx význam informační zpráva indikuje nějaký úspěch redirekce klienta na jinou URL chyba na straně klienta chyba na straně serveru Další kapitoly 10 5

Práce v síti - Jazyk C# a podpora sítí Podpora práce v sítí je implementována v knihovnách prostředí.net System.Net System.Net.Sockets Jazyk C# (.NET Framework Class Library) implementuje podporu standardních protokolů jako: TCP UDP HTTP HTTPS file Další kapitoly 11 Práce v síti - Obecná architektura: požadavek/odpověď Používá URI (Uniform Resource Indicator). Přenos dat je realizován I/O proudy. Požadavek je realizován pomocí abstraktního bázového typu WebRequest. Konfigurace požadavku. Převzetí výsledku. Odpověď je relaizována rovněž pomocí abstraktní třídy WebResponse. Využívá I/O proud (NetworkStream). Další kapitoly 12 6

Práce v síti - Podpora HTTP Popsaná architektura požadavek/odpověď vnitřně podporuje rozšíření pro jednotlivé protokoly. Stačí vhodně "převést" získanou odpověď. class HttpTest { static void Main(string[] args) { WebRequest request = WebRequest.Create("http://www.cs.vsb.cz"); request.method="head"; //only heads; HttpWebRequest httprequest = (HttpWebRequest)request; httprequest.useragent = "CSAplication/1.0"; WebResponse response = request.getresponse(); HttpWebResponse httpresponse = (HttpWebResponse)response; Console.WriteLine(httpResponse.Server); } } Další kapitoly 13 Práce v síti - WebClient Poskytuje rozhraní k síťovým prvkům na vyšší úrovni než WebRequest. Získání dat: DowloadData() DownloadFile() Odesílání dat: UploadData() UploadFile() class Example { static void Main(string[] args) { WebClient client = new WebClient(); byte[] buffer = client.downloaddata("http://www.cs.vsb.cz"); string document = Encoding.ASCII.GetString(buffer); Console.WriteLine(document); } } Další kapitoly 14 7

Práce v síti - Podpora protokolů TCP a UDP namespace System.Net.Sockets Základním typem je třída Socket. TCP TcpListener - naslouchá na příchozím spojení a vytváří instance Socket. TcpClient - základní I/O operace přes sít. UDP UdpClient - zajišťuje podporu jak vysílání tak příjímání UDP datagramů. Další kapitoly 15 Práce v síti - Podpora protokolů TCP a UDP class TCPTest { static string message="hello world!" static void Main(string[] args) { TCPListener l = new TCPListener(); l.start(); while(true) { Socket s = l.acceptsocket(); byte[] barr = Encoding.ASCII.GetBytes(message.ToCharArray()); s.send(barr); s.shutdown(socketshutdown.both); s.close(); } } } Další kapitoly 16 8

Práce v síti - DNS Existují třídy pro překlad IP adres na DNS záznamy a naopak. using System; using System.Net; class DnsExample { static void Main(string[] args) { IPHostEntry he = Dns.GetHostByName("www.google.com"); IPAdress[] adresslist = he.addresslist; foreach(ipadress adress in adresslist) Console.WriteLine(adress); } } Další kapitoly 17 Základy XML -úvod XML extensible Markup Language množina pravidel sémantické značky (tagy, elementy) rozdělují dokument na části identifikuje části dokumentu jazyk pro popis jazyků meta-značkový jazyk definuje syntaxi definice jiného jazyka vychází se SGML (Standard Generalized Markup Language) stejné možnosti jednoduchost Další kapitoly 18 9

Základy XML - další značkovací jazyk? XML xml není jazyk, je to o meta-jazyk značky vytvářeny podle potřeby jména podle významu například: jména tabulek databáze jména atributů... Další kapitoly 19 Základy XML - značení XML značení odlišuje XML od čistého textu většina značení jsou tagy (značky) tag je vše co začíná znakem < a končí znakem > tag má jméno musí začínat [a-z,a-z,_] je case sensitive (<B> a <b> jsou různé) prázdný tag nemá obsah možnost použití zkratky pomocí koncovky /> <empty /> Další kapitoly 20 10

Základy XML - Pravidla tvorby XML dokumentu XML dokument musí začít XML deklarací element s daty musí mít startovní a koncový tag elementy s jediným tagem končí /> musí existovat jediný kořenový element elementy se nesmí překrývat atributy v uvozovkách < a & jen u tagů a znakových entit Další kapitoly 21 Základy XML - Atributy XML počáteční a prázdné tagy dvojice jméno = hodnota jméno musí začínat [a-z,a-z,_] stejné jméno v tagu jen jednou hodnota řetězec v uvozovkách (nebo apostrofech) libovolné znaky <task name="cdrecord" owner="gyp35" priority="-19" /> <par indent='0.5"' /> <par indent="0.5"" /> Další kapitoly 22 11

Základy XML -Komentáře XML začínají <!-- a končí --> komentáře jsou ignorovány komentáře nemají se nalézat před XML deklarací být uvnitř tagu obsahovat dvojici pomlček -- komentáře by měly být používány k ohraničení a skrytí tagů <!-- priklad komentare --> Další kapitoly 23 Základy XML - Vkládání čistého textu XML sekce CDATA obsahuje text bez interpretace značení nesmí obsahovat dvojici ]] <![CDATA[ for (int i = 0; i < array.length && error == null; i++) ]]> for (int i = 0; i < array.length && error == null; i++) Další kapitoly 24 12

Základy XML - Document Type Definition (DTD) XML-DTD určuje XML dokumentu seznam elementů, atributů, notací a entit vztahy mezi nimi strukturu nalézá se prologu za deklarací před prvním elementem buď přímo DTD nebo URL s DTD každý tag XML musí být deklarován v DTD deklarace určuje jméno a obsah elementu Další kapitoly 25 Práce s XML -Přístup k XML Použití abstraktní bázové třídy s konkrétní implementací úložišť. Podobný mechanizmus jako u I/O vstupů a výstupů. Abstraktní bázové třídy jsou: XmlReader; XmlWriter. Typy pocházejí z oboru názvů: System.Xml System.Xml.Xpath Další kapitoly 26 13

Práce s XML - XmlReader Poskytuje schopnost číst XML dokumenty. Abstraktní třída, z níž při práci s určitým XML zdrojem je třeba vytvořit podtřídu. Existují 3 konkrétní implementace XMLReaderu: XmlTextReader analyzuje XML z libovolného proudu textu. XmlNodeReader analyzuje XML z XmlNode. XmlValidatingReader XmlReader vykonávající DTD nebo ověřující schéma analyzovaného dokumentu. Další kapitoly 27 Práce s XML - XmlReader Většinou pro práci s XML stačí pouze XmlTextReader //XmlTextReader can open an XML file XmlTextReader tr = new XmlTextReader("xmlleg.xml"); Předchozí příklad s použitím obecnějšího konstruktoru. Lze číst XML kód z libovolného zdroje typu Stream včetně URL adres a databázových dat. //XmlTextReader uses XmlReader for readin data from // thestream. XmlTextReader tr = new XmlTextReader( new TextReader( new FileStream("xmlleg.xml", FileMode.Open))); Další kapitoly 28 14

Práce s XML - XmlReader Schopnost číst data z proudu umožňuje zpracovávat XML data bez nutnosti je nejprve uložit do souboru. XmlReader slouží jako kurzor ukazující na různé konstrukce XML obsažené v proudu jako elementy, atributy, atd. K aktuální konstrukci lze přistupovat vlastnostmi: Name - vrací kvalifikovaný název elementu nebo atributu; Value - vrací hodnotu prostého textu. K navigaci se používají metody: Read - k iterování a přístupu k dalšímu elementu proudu; MoveXXX - k navigaci v proudu (například MoveToNextElement) Navigace je jen dopředná, mineme-li uzel, nelze se k němu vrátit. Další kapitoly 29 Práce s XML - Tvorba XML dokumentu Lze vytvořit XML dokument přímo přidáním XML tagů: string xml = "<greeting>" + greetingoftheday + "</greeting> Tato technika přináší řadu problémů jako překlepy a náhodné chyby. špatné zformování dokumentu znemožnění analýzy XML dokumentu Třída XmlWriter umožňuje XML dokument generovat. Další kapitoly 30 15

Práce s XML - XmlWriter Abstraktní typ pro vytváření dat odpovídající specifikaci XML. Má implementace podobně jako XmlReader. Jako XmlReader má XmlTextReader, tak XmlWriter má XmlTextWriter. Některé metody a vlastnosti XmlTextWriteru: Formatting - určuje zda se mají například odsazovat úrovně; Indentation - určuje kolik znaků se má odsazovat každá úroveň; WriteStartElement - vytvoří počáteční tag zadaného elementu; WriteEndElement - vytvoří koncový tag odpovídajícího elementu; Write - zapíše do dokumentu prostý text. Další kapitoly 31 Práce s XML - XmlWriter Příklad vygenerování XML dokumentu z předchozího příkladu včetně deklarace dokumentu: XmlTextWriter xw = new XmlTextWriter("greetings.xml"); xw.formatting = Intended; xw.indentation = 2; xw.writestartdocument(); xw.writestartelement("greeting"); xw.write(greetingoftheday); xw.writeendelement(); xw.writeenddocumen Další kapitoly 32 16

Práce s XML XML Document Čtení a zápis XML dat uvedený výše je dosti omezující. Například u XmlReaderu pohyb XML dokumentem pouze vpřed..net obsahuje třídu XmlDocument k modelování celého dokumentu XML. XmlDocument doc = new XmlDocument(); doc.load(new XmlReader(...)) Další kapitoly 33 Práce s XML XML Document Jakmile je XmlDocument naplněn daty lze z něj získat informace. Vlastnost DocumentElement vrátí element dokumentu: XmlNode docnode = doc.documentelement(); //printing all first level child nodes of the docnode node foreach(xmlnode n in docnode.childnodes) Console.WriteLine(n.Name); Od tohoto okamžiku se navigace stává pouhým používáním vlastností a metod XmlNode. Vlastnost ChildNodes vrací instanci XmlNodeList obsahující dceřiné uzly daného uzlu. Vlastnosti Name a Value vracejí různé informace v závislosti na typu aktuálního uzlu. Další kapitoly 34 17

Práce s XML XML Document Některé vlastnosti třídy XMLNode Value Name InnerText ParentNode HasChildNodes, ChildNodes Attributes Některé metody třídy XMLNode GetEnumerator AppendChild, RemoveChild, ReplaceChild, RemoveAll, Normalize WriteTo, WriteContentTo Pro procházení lze také využít indexer Další kapitoly 35 XPath XML-XPath jazyk pro adresování částí XML dokumentu základní operace pro práci s řetězci, čísly,... Cesta (Location Path) sekvence kroků oddělených lomítkem / každý krok určuje množinu uzlů relativních ke kontextovému uzlu s použitím: os (axis) testů uzlů (node test) predikátů Další kapitoly 36 18

XPath -cesta XML-XPath analogie s cestou v souborovém systému /devcata/pritelkyne/hezke/chytre/patricie.jpg <?xml version="1.0" encoding="iso-8859-1"?> <catalog> <cd country="usa"> <title>empire Burlesque</title> <artist>bob Dylan</artist> <price>10.90</price> </cd> <cd country="uk"> <title>hide your heart</title> <artist>bonnie Tyler</artist> <price>9.90</price> </cd> <cd country="usa"> <title>greatest Hits</title> <artist>dolly Parton</artist> <price>9.90</price> </cd> </catalog> /catalog /catalog/cd /catalog/cd/price //cd /catalog/cd/* /catalog/*/price /*/*/price /step/step/... step/step/... Další kapitoly 37 XPath -cesta /catalog/cd[1] /catalog/cd[last()] /catalog/cd[price] //@country //cd[@country] //cd[@*] //cd[@country='uk'] XML-XPath /catalog/cd[price>10.80] /catalog/cd[price=10.90]/price //title //artist //price /step/step/... step/step/... <?xml version="1.0" encoding="iso-8859-1"?> <catalog> <cd> <title>empire Burlesque</title> <artist>bob Dylan</artist> <price>10.90</price> </cd> <cd country="uk"> <title>hide your heart</title> <artist>bonnie Tyler</artist> <price>9.90</price> </cd> <cd country="usa"> <title>greatest Hits</title> <artist>dolly Parton</artist> <price>9.90</price> Další kapitoly 38 </cd> </catalog> 19

Práce s XPath Jednoduchý příklad XmlNode implementuje metodu SelectNodes XmlTextReader tr = new XmlTextReader(new StringReader(xmlContent)); XmlDocument doc = new XmlDocument(); doc.load(tr); XmlNode docelement = doc.documentelement; XmlNodeList result = docelement.selectnodes("/book/authors/author/text()" ); foreach(xmlnode n in result){console.writeline(n.value); Další kapitoly 39 Práce s XPath - XPathNavigator Umožňuje položit dotaz formou výrazu XPath. Rozhraní IXPathNavigable. Toto rozhraní definuje jedinou metodu CreateNavigator. Všechny objekty které implementují rozhraní mohou vrátit instanci XpathNavigator. XMLNode, XPathDocument Umožňuje spustit dotaz a vrátit instanci třídy XPathNodeIterator. Na každém dokumentu lze vytvořit několik navigátorů a nezávisle jimi pohybovat. Při realizaci algoritmů lze například pozici navigátorů porovnávat a zjistit, zda například ukazují na stejnou pozici. Další kapitoly 40 20

Práce s XPath - XPathNavigator Jednoduchý příklad použití: XPathDocument doc = new XPathDocument("books.xml"); XPathNavigator nv = doc.createnavigator(); XPathNodeIterator iter = nv.select("/book/authors/author"); while(iter.movenext()){ Console.WriteLine("Autor:" + iter.current.value); } XPathNodeIterator Iterátor schopen procházet kolekcí uzlů vyhovujících specifikované podmínce. Další kapitoly 41 Práce s XPath - XPathNavigator Některé vlastnosti třídy XPathNavigator IsEmpty IsNode Name XmlType HasAttributes HasChildren Některé metody třídy XPathNavigator Evaluate CreateAttribute, MoveToNextAttribute AppendChild Další kapitoly 42 21

XSL XML-XSL extensible Stylesheet Language XML nemá předdefinované značky HTML <table>...</table> XML??? <table>...</table>??? říká, jak má být XML dokument zobrazen části: XSLT - jazyk pro transformaci XML dokumentu XPath - jazyk pro určení částí XML dokumentu Další kapitoly 43 XSLT XML-XSL nejdůležitější část standardu XSL transformuje XML do XML (XHTML, HTML) vkládá/filtruje elementy do výstupního dokumentu třídí a uspořádává elementy na základě testu lze rozhodovat, co udělat s danými elementy transformuje zdrojový XML strom na cílový XML strom používá XPath k nalezení odpovídajících vzorů k transformaci Další kapitoly 44 22

XSLT XML-XSL Další kapitoly 45 XSLT příklad 1 XML-XSL <?xml version="1.0" encoding="iso-8859-1"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/xsl/transform"> <xsl:template match="/"> <html> <body> <h2>my CD Collection</h2> <table border="1"> <tr bgcolor="#9acd32"> <th align="left">title</th> <th align="left">artist</th> </tr> <tr> <td> <xsl:value-of select="catalog/cd/title"/> </td> <td> <xsl:value-of select="catalog/cd/artist"/> </td> </tr> </table> </body> </html> </xsl:template> </xsl:stylesheet> Další kapitoly 46 23

XSLT příklad 2 <?xml version="1.0" encoding="iso-8859-1"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/xsl/transform"> XML-XSL <xsl:template match="/"> <html> <body> <h2>my CD Collection</h2> <table border="1"> <tr bgcolor="#9acd32"> <th align="left">title</th> <th align="left">artist</th> </tr> <xsl:for-each select="catalog/cd"> <tr> <td> <xsl:value-of select="title"/> </td> <td> <xsl:value-of select="artist"/> </td> </tr> </xsl:for-each> </table> </body> </html> </xsl:template> </xsl:stylesheet> Další kapitoly 47 XSLT příklad 3 XML-XSL <xsl:template match="/">...... <xsl:for-each select="catalog/cd"> <xsl:sort select="artist"/> <xsl:if test="price < 10"> <tr> <td> <xsl:value-of select="title"/> </td> <td> <xsl:value-of select="artist"/> </td> </tr> </xsl:if> </xsl:for-each>...... </xsl:template> </xsl:stylesheet> Další kapitoly 48 24

Práce s XSTL - Transformování dokumentů Příklad použití XML transformace v jazyce C# //obtaining pattern for transformation XslTransform transform = new XslTransform(); transform.load("pattern.xsl"); //obtaining data for transformation XmlTextReader tr = new XmlTextReader("source.xml"); //loading XML document to XmlDocument XmlDocument doc = new XmlDocument(); doc.load(tr); //defining where to put output StringWriter output = new StringWriter(); //transformation transform.transform(doc, null, output); Další kapitoly 49 WinForms Jmenné prostory System.Windows.Forms - Formuláře, dialogy, okna, System.Drawing - Kreslení, GDI+ Základen je třída Application Application.Run(Form) - Zobrazí předaný formulář a běží dokud nedojde k uzavření formuláře. Ukončení běhu aplikace Application.Exit() Application.ExitThread() Třída obsahuje celou řadu dalších událostí (ApplicationExit, Idle) a metod (ExecutablePath, StartupPath). Další kapitoly 50 25

WinForms Návrh Windows Forms Forms Form representuje jakékoliv okno v aplikaci Vlastnost BorderStyle definuje, jaké okno se objeví: Standard, Tool, Borderless, Floating Window Form může obsahovat další formuláře (Form) = MDI (Multiple Document Interface) Modální formulář Nedovolí uživateli manipulovat s původním oknem dokud není nové okno uzavřeno Controls Standardní ovládací prvky jakobutton, Label, Radiobutton, TextBox,... Specifické ovládací prvky jako DataGrid, MonthCalendar, Uživatelsky definované ovládací prvky. Další kapitoly 51 WinForms HelloWorld class HelloWorldForm : Form { Label lab; HelloWorldForm() { this.text = "HelloWorldForm Titel"; this.size = new Size(200,100); lab = new Label(); lab.text = "HelloWorld"; lab.location = new Point(20, 20); this.controls.add(lab); } } public static void Main(string[] argv) { Application.Run(new HelloWorldForm()); } Další kapitoly 52 26

WinForms - Form Některé události třídy Form Load, Activated, Deactivate, Closing, Closed Některé vlastnosti třídy Form Location, Size, MinimumSize, MaximumSize,Text, BackColor, ForeColor, FormBorderStyle, MinimizeBox, MaximizeBox, HelpButton, Icon, ShowInTaskBar, Opacity, Region, TopMost, WindowState Designer Je možno použít pro generované formuláře. Metoda InitializeComponent Ve VS2005 je vygenerovaný kód uložen do jiného souboru (xxx.designer.cs). Formulář se při zavření pouze skryje lze ho znova použít. Další kapitoly 53 WinForms - Designer Další kapitoly 54 27

WinForms - Control Třída Control je základní pro všechny ovládací prvky. Poskytuje možnosti pro nastavení velikosti, pozice a stylu atd. Vnořování ovládacích prvků, Property ControlCollection Controls. Zobrazení/skrytí, reakce na vstupy a zajištění vlákenní bezpečnosti. Některé vlastnosti třídy Control Text, Visible, ForeColor, BackColor Některé události souvísející se vzhledem FontChanged, ForeColorChanged, Resize, Move Další kapitoly 55 WinForms Reakce na vstupy Události Klávesnice KeyDown -> KeyPress -> KeyUp Myši Click a DoubleClick MouseMove, MouseDown, MouseUp, MouseEnter, MouseHover, MouseLeave Způsob zpracování události: Událost získá prvek který má focus. public delegate void EventHandler( object sender, EventArgs e ); Button b = new Button(); b.click += new EventHandler(clickHandler); private void clickhandler(object sender, EventArgs evargs) {... } Další kapitoly 56 28

WinForms Návrh Layoutů Existují tři způsoby jak definovat Layout. Anchor Rozměry mezi ovládacími prvky zůstávají konstantní. Úchyt - ke změně velikosti dochází pouze tehdy je-li ovládací prvek uchycen ze dvou stran enum AnchorStyles - None, Left, Right, Top, Bottom Možno kombinovat Dock Přilepí ovládací prvek na některou ze stran nadřazeného prvku. enum DockStyle - None, Bottom, Left, Top, Right, Fill Uživatelsky definované V.NET 2.0 přibyl: FlowLayoutPanel TableLayoutPanel Další kapitoly 57 WinForms Bezpečnost u vícevláknových aplikací Vlákno nesmí přistoupit k ovládacím prvkům vlastněných jiným vláknem. Řešením této situace je požádat spuštění příslušné části kódu vlákno které ovládací prvek vlastní. Lze využít jak synchronní tak asynchronní řešení. Týká se jen nebezpečných akcí jako je zápis dat nebo čtení dat u nichž je vyžadována vzájemná konzistence. if (this.invokerequired) { InitDelegate d=new InitDelegate(RealInit); this.invoke(d, server, args); } Další kapitoly 58 29

GDI + (1) Podpora grafických operací v.net Framework. Jde o skupinu tříd zaobalující práci s GDI a poskytující jednotný přístup ze všech programovacích jazyků.net. Všechny třídy jsou dostupné ve jmenných prostorech System.Drawing a System.Drawing2D. 2D rozšíření: Alfa-blending - nastavení průhlednosti objektu Anti-aliasing - vyhlazení křivek Gradientní a texturové vyplňování Kardinální spline křivky - sekvence jednoduchých křivek spojených do jedné větší Scalable-regions - škálovatelné regiony GDI Transformace - rotace, posuvy, zvětšení,... Další kapitoly 59 GDI + (2) Podpora práce s obrázky: nativní formáty - podpora obrázků.jpg.gif. png.bmp.tiff.exif.icon zpracování obrazu - změna jasu, kontrastu, vyvážení barev, rozmazání,... Typografická podpora: ClearType fonty a antializing Textury a fonty - písmena textu mohou být texturovaná Unicode - podpora práce s Unicode znaky a řetězci Další kapitoly 60 30

ASP.NET Statická webová stránka Pure HTML <html> <head> <title>simple HTML page</title> </head> <body> <h1>welcome</h1> You are visitor number 1! </body> </html> My.html Browser Request("My.html") Response(My.html) Server (IIS) My.html Další kapitoly 61 ASP.NET Dynamická ASPX stránka <%@ Page Language="C#" %> <%@ Import Namespace="System.IO" %> <html> <head> <title>page counter</title> </head> <body> <h1>welcome</h1> You are visitor number <% FileStream s = new FileStream("c:\\Data\\Counter.dat", FileMode.OpenOrCreate); int n; try { BinaryReader r = new BinaryReader(s); n = r.readint32(); } catch { n = 0; } // if the file is empty n++; s.seek(0, SeekOrigin.Begin); BinaryWriter w = new BinaryWriter(s); w.write(n); s.close(); Response.Write(n); %>! </body> </html> Counter.aspx Další kapitoly 62 31

ASP.NET Code Behind <%@ Page Language="C#" Inherits="CounterPage" CodeFile="CounterPage.cs" %> <html> <head> <title>page counter</title> </head> <body> <h1>welcome</h1> You are visitor number <%=CounterValue()%>! </body> </html> Counter.aspx using System.IO; CounterPage.cs public partial class CounterPage : System.Web.UI.Page { public int CounterValue() { FileStream s = new FileStream("c:\\Data\\Counter.dat", FileMode.OpenOrCreate);... n = r.readint32(); n++;... return n; } } Další kapitoly 63 ASP.NET Co se děje na pozadí? client (browser) request ("Counter.aspx") server (IIS) response (*.html) "Counter.aspx" *.html ASP.NET Counter.aspx page class preprocessor, compiler loader page object.net framework Další kapitoly 64 32

ASP.NET Web Forms v ASP.NET <%@ Page Language="C#" Inherits="AdderPage" CodeFile="Adder.aspx.cs"%> <html> <head><title>account</title></head> <body> <form Runat="server"> <b>balance:</b> <asp:label ID="total" Text="0" Runat="server"/> Euro<br><br> <asp:textbox ID="amount" Runat="server"/> <asp:button ID="ok" Text="Enter" OnClick="ButtonClick" Runat="server" /> </form> </body> </html> using System; public partial class AdderPage : System.Web.UI.Page { public void ButtonClick (object sender, EventArgs e) { int totalval = Convert.ToInt32(total.Text); int amountval = Convert.ToInt32(amount.Text); total.text = (totalval + amountval).tostring(); } } Adder.aspx Adder.aspx.cs Další kapitoly 65 ASP.NET Některé ovládací prvky Label TextBox Button RadioButton CheckBox abc Calendar DataGrid DropDownList ListBox User Controls Custom Controls Další kapitoly 66 33

ASP.NET Fungování ASP.NET round trip event + page state Page Label Click TextBox Button 1. Creation Je vytvořena stránka a všechny ovládací prvky na ní Client Server Další kapitoly 67 ASP.NET Fungování ASP.NET round trip event + page state Page Label Init Init Click TextBox Button Init Init 2. Initialisation - je vyvolána událost Init Client Server Další kapitoly 68 34

ASP.NET Fungování ASP.NET round trip event + page state Page Label Load Load Click TextBox Button Load Load 3. Loading - load controls with the values that the user has entered (page state) - raiseload events Client Server Další kapitoly 69 ASP.NET Fungování ASP.NET Page Label TextBox Button 4. Action handle event(s) (Click, TextChanged,...) Client Server Další kapitoly 70 35

ASP.NET Fungování ASP.NET Page PreRender Label PreRender <html>... <input type="text"...> <input type="button"...>... </html> HTML + page state TextBox Button PreRender PreRender 5. Rendering - raise PreRender events - call Render methods of all controls, which render the controls to HTML Client Server Další kapitoly 71 ASP.NET Fungování ASP.NET Page Unload Label TextBox Unload Unload <html>... <input type="text"...> <input type="button"...>... </html> Button Unload 6. Unloading - raiseunload events for cleanup actions Client Server Další kapitoly 72 36