SlideShare a Scribd company logo
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
Web Technologies
XML data processing (II)
⦑ ⦒SAX (Simple API for XML)
XML document simplified processing
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
“Before asking new questions, think if you really
want to know the response to them.”
Gene Wolfe
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
There are alternative ways
to process the XML documents?
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
sax: intro
Goal:
access to XML/HTML documents
without creating the tree of node-objects
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
sax: intro
Goal:
access to XML/HTML documents
without creating the tree of node-objects
the document is not entirely stored
into the memory before processing
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
sax: features
Providing a sequential (linear) event-oriented
XML processing
initiator: David Megginson
www.megginson.com/downloads/SAX/
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
sax: features
Providing a sequential (linear) event-oriented
XML processing
“SAX is a streaming interface – applications receive
information from XML documents in a continuous stream,
with no backtracking or navigation allowed”
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
sax: features
Independent effort – aside from the W3C –
to standardize the event-driven XML processing
www.saxproject.org
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
sax: features
Largely accepted as an industrial standard
SAX 1.0 (1998)
reference implementation in Java language
org.xml.sax
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
sax: features
Largely accepted as an industrial standard
SAX 2.0 (2004)
supporting namespaces,
various configurations + extensions
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
sax: processing
For each type of XML construct,
– start tag, end tag, data (content),
processing instruction, comment,... –
an event will be emitted and handled by
a function/method
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
sax: processing
Handler functions/methods will be specified by
the programmer, for each type of XML construct
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
sax: processing
The program consumes and handles events
produced by the SAX processor
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
sax: processing
Minimally, we should define
the following functions/methods:
handle_start_tag (processor, tag, attributes)
handle_end_tag (processor, tag)
handle_character_data (processor, data)
contains the list of attributes
attached to the start tag
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
sax: processing
For each event regarding the occurrence of
start tag, end tag, and content-data,
one of the handler functions will be attached:
set_element_handler
(handle_start_tag, handle_end_tag)
set_character_data_handler
(handle_character_data) programmer-
defined functions
or methods
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
sax: processing

Client
application
SAX
processor
Handler
instantiation
notifying
event occurred
start tag
Pro-
cessing
sending SAX
events
calling handler

start processing: parse ( )
<projects>
<project class="S">
…
</project>
</projects>
event occurred
end tag
calling handler
etc.
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
sax: processing
Reference implementation (Java): org.xml.sax
details at
www.saxproject.org/apidoc/org/xml/sax/package-summary.html
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
sax: processing
Interfaces that can be implemented by our application:
ContentHandler
resolves event notifications
regarding the types of XML constructs:
start document, start tag, textual data,
end tag, end document, etc.
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
sax: processing
Interfaces that can be implemented by our application:
Attributes
defines the list of attributes specified in the start tag
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
sax: processing
Interfaces that can be implemented by our application:
XMLReader
specifies how XML data is read by using event callbacks
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
sax: processing
Interfaces that can be implemented by our application:
ErrorHandler
specifies how (fatal) errors and warnings will be handled
exceptions like SAXException and SAXParseException
could be thrown
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
sax: processing
Provided SAX class:
InputSource
encapsulates information about an input source
providing XML data (e.g., a character stream)
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
// XML processing via events (reading data)
public interface XMLReader {
// offers info about the document
public ContentHandler getContentHandler ();
public DTDHandler getDTDHandler ();
public EntityResolver getEntityResolver ();
public ErrorHandler getErrorHandler ();
// setting various functionalities
public void setContentHandler (ContentHandler contentHandler);
public void setDTDHandler (DTDHandler dtdHandler);
public void setEntityResolver (EntityResolver resolver);
public void setErrorHandler (ErrorHandler errHandler);
// actual processing
public void parse (InputSource in)
throws java.io.IOException, SAXException;
public void parse (String uri)
throws java.io.IOException, SAXException;
}
Example: XMLReader interface (Apache Xerces)
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
// used to process XML constructs
public interface ContentHandler {
public void setDocumentLocator (Locator locator);
public void startDocument () throws SAXException;
public void endDocument () throws SAXException;
// events
public void startElement (String uri, String localName, String qName,
Attributes attributes) throws SAXException;
public void endElement (String uri, String localName, String qName)
throws SAXException;
public void characters (char buf[], int offset, int length)
throws SAXException;
// additional info
public void ignorableWhitespace (char buf[], int offset, int length)
throws SAXException;
public void startPrefixMapping (String prefix, String uri)
throws SAXException;
public void endPrefixMapping (String prefix)
throws SAXException;
}
Example: ContentHandler interface (Apache Xerces)
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
// specifies the attributes attached to an XML element
public interface Attributes {
public int getLength ();
public String getType (int index);
public String getValue (int index);
// access to info regarding the attribute name
public String getQName (int index);
public String getLocalName (int index);
public String getURI (int index);
// access via XML namespaces
public int getIndex (String uri, String localName);
public String getType (String uri, String localName);
public String getValue (String uri, String localName);
// access by using qualified names (prefix:name)
public int getIndex (String qName);
public String getType (String qName);
public String getValue (String qName);
}
Example: Attributes interface (Apache Xerces)
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
sax: implementations
libxml – open source API: C, C++, Haskell, Scala,…
MSSAX – SAX processing in C, C++, JavaScript;
included in MSXML SDK (Software Development Kit)
NSXMLParser – Objective-C implementation (Apple)
org.xml.sax – reference API for Java
REXML – an XML processor for Ruby
QSAX – part of Qt development environment (C++)
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
sax: implementations
sax-js – Node.js module; others: nodejsmodules.org/tags/sax
Xerces SAX API – XML platform for C++ and Java:
http://xml.apache.org/
erlsom, xmerl_eventp – Erlang modules
xml – a Go package: https://golang.org/pkg/encoding/xml/
XML::Parser – a Perl module based on Expat processor
xml_*( ) – PHP functions: php.net/manual/en/book.xml.php
xml.sax – Python: docs.python.org/3/library/xml.sax.html
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
sax: demo
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
(instead of) break
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
sax vs. dom
When SAX could be used?
the necessity to process very large documents
necessity to cancel the XML processing
(SAX processor could be stopped anytime)
extracting tiny amounts of information
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
sax vs. dom
When SAX could be used?
creating a new structure of an XML document
using in the context of limited computing resources
(low memory, narrow bandwidth,...)
example for Android:
developer.android.com/reference/javax/xml/parsers/SAXParser.html
demo source-code for iOS – SeismicXML:
developer.apple.com/library/ios/samplecode/SeismicXML/
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
sax vs. dom
When DOM could be used?
random access to the data of an XML document
complex processing
complex data filtering via XPath
performing XSL transformations
XML data validation with DTD, XML Schema, etc.
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
sax vs. dom
When DOM could be used?
the necessity to modify and/or save XML documents
in the context of processing XML/HTML data
on the Web browser (including support for
asynchronous data transfer via Ajax)
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
sax vs. dom
DOM requires loading
into the memory
the entire XML document
in order to be processed
as a tree
HTML
HtmlElement
HTML
BodyElement
HTML
AsideElement
Text
HTML
DivElement
HTML
ImageElement
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
sax vs. dom
SAX gets small fragments from a document,
performing a linear processing (event stream)
start tag
start tag
characters
end tag
end tag
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
sax vs. dom
SAX could be used to generate DOM trees
Conversely, DOM trees could be traversed
in order to emit SAX events
examples:
dom-js module (Node.js), lxml library (Python)
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
sax vs. dom
In the case of complicated XML structures,
the SAX processing could be improper
SAX processing ignores the context
of a certain element occurrence
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
sax vs. dom: example
Consider the XML document structure,
specified by the following DTD:
<!DOCTYPE catalog [
<!ELEMENT catalog (categ+)>
<!ELEMENT categ (#PCDATA | categ)*>
]>
What processing method will be suitable
for a huge number of <categ> elements?
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
sax vs. dom
Certain SAX implementations provide support for
XML validation and transformation
commonly, both DOM and SAX are used
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
There are any other XML processing ways?
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
XML document processing
alternatives:
XPP – XML Pull Parsing
XML data binding
simplified processing
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
alternatives: xml pull parsing
Styles of event-driven XML processing:
push versus pull
advanced
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
alternatives: xml pull parsing
Styles of event-driven XML processing:
push = XML processor reads XML data and notifies the
application on occurred events (parsing events) – SAX
advanced
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
alternatives: xml pull parsing
Styles of event-driven XML processing:
push = XML processor reads XML data and notifies the
application on occurred events (parsing events) – SAX
the programul can not request events
the events appear as they are sent by the processor (push)
advanced
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
alternatives: xml pull parsing
Styles of event-driven XML processing:
pull = the application controls the processing and can
request (pull) the processor to send the following event
XPP – XML Pull Parsing
www.xmlpull.org
advanced
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
alternatives: xml pull parsing
Styles of event-driven XML processing:
pull = the application controls the processing and can
request (pull) the processor to send the following event
XPP – XML Pull Parsing
the program’s source-code structure reflects
the structure of the processed XML document
advanced
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
alternatives: xml pull parsing
Push APIs Pull APIs
Read-only
processing
Inheriting the advantages of
push APIs
Fast processing
via streams
Events are consumed
according to the needs
Source-code could be
difficult to be understood
Programs have
a clearer structure
advanced
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
xml pull parsing – implementations
StAX – Streaming API for XML (Java) – JSR 173
http://jcp.org/en/jsr/detail?id=173
examples of implementations:
Javolution – focused on performance: http://javolution.org/
Oracle StAX – included in XDK (XML Developer’s Kit)
https://docs.oracle.com/javase/tutorial/jaxp/stax/
Woodstox – https://github.com/FasterXML/woodstox
advanced
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
xml pull parsing – implementations
irrXML – initially, part of Irrlicht 3D Engine (C++)
pull – Scala package for XPP processing
QXmlStreamReader, QXmlStreamWriter from Qt (C++)
saxpath – Node.js modules able to evaluate XPath
expressions for a SAX event stream
xml.dom.pulldom – a Python solution
XmlPullParser – Java interface for Android
advanced
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
alternatives
A classification of XML processing approaches
access mode: sequential vs. direct (random)
control of the event stream: pull vs. push
tree management: hierarchic vs. nested
advanced
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
alternatives
DOM
random access, using pull style
SAX
sequential access, using push
XPP and .NET XmlTextReader
sequential access, adopting pull
advanced
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
alternatives
“Tying up” XML data to other data sources
(XML binding)
databases: XML infoset  dataset

<doc>
<xml />
<!-- … -->
</doc>
Id D P T
1 … … …
2 … … …
3 … … …
<doc>
<xml />
<!-- … -->
</doc>
data sets
(tables)
DOM tree
(in memory)
XML
file
DBMS
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
alternatives
XML binding
databases: XML infoset  dataset
SQL/XML specification – see SQL:2016-14 standard
aspects of interest:
XML type for table columns’ values
using XML-specific predicates + functions
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
databases: XML infoset  dataset
existing implementations:
Oracle XML DB
docs.oracle.com/cd/B28359_01/appdev.111/b28369/xdb01int.htm
pureXML (IBM DB2)
www.ibm.com/developerworks/data/library/techarticle/dm-0603saracco2/
SQLXML (Microsoft SQL Server)
msdn.microsoft.com/library/aa286527.aspx
XML Functions (PostgreSQL)
www.postgresql.org/docs/current/static/functions-xml.html
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
alternatives
XML binding
object-oriented approach:
XML data  classes created “on the fly”
(serialization, marshalling)
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
object-oriented approach:
XML data  classes created “on the fly”
examples:
C++ – cereal: http://uscilab.github.io/cereal/
C++, C#, Go, Java, Python – Protocol Buffers
developers.google.com/protocol-buffers/
Java – Digester: commons.apache.org/proper/commons-digester/
JS – node-xml2js: github.com/Leonidas-from-XIV/node-xml2js
.NET (C# et al.) – XmlSerializer class
PHP – SimpleXML: php.net/manual/en/ref.simplexml.php
Python – Untangle: github.com/stchris/untangle
Scala – scalaxb: http://scalaxb.org/
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
alternatives
XML binding
performing queries on XML data
directly from the programing language
LINQ (Language INtegrated Query) – .NET Framework
docs.microsoft.com/dotnet/articles/csharp/programming-guide/concepts/linq/linq-to-xml
advanced
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
XDocument projects; // XDocument is a .NET class
projects = XDocument.Load ("projects.xml");
var projectsS =
// via a LINQ expression, getting all projects
from p in projects.Descendants ("project")
// by choosing those of 'S' class
where (String) p.Attribute ("class") == "S"
// sorted by student number
orderby (String) p.Element ("stud")
// and selecting only their title
select (String) p.Element ("title");
// showing the title of 'S' class projects
foreach (var project in projectsS) {
Console.WriteLine (project);
}
// same result, by using XPath
var projectsS2 = (IEnumerable)
proiecte.XPathEvaluate ("//project[@class='S']/title");
advanced
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
alternatives
XML binding
JAXB – Java Architecture for XML Binding (JSR-222)
https://jcp.org/en/jsr/detail?id=222
reference implementation: https://jaxb.java.net/
also, experiment EclipseLink: www.eclipse.org/eclipselink/
advanced
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
alternatives
XML binding
interoperability with other formats: XML  JSON
there is no standardized approach
examples of tools and libraries:
Apache Camel (Java), js2xmlparser (Node.js),
JSON-lib (Java), ruby-xml-to-json, x2js (JavaScript),
xml2json (Node.js), xml-to-json (Haskell), xmlutils.py
advanced
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
alternatives
Simplified XML processing
goal:
processing a (small) XML document
directly into the memory,
by using an object-oriented approach
different from DOM
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
alternatives
Simplified XML processing
usually, the XPP (XML Pull Parsing) is adopted
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
alternatives
Simplified XML processing
for each XML element, an object property is available
the attributes attached to the XML elements are modeled
by using a data structure – e.g., a hash table
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
alternatives
Simplified XML processing
various examples:
libxml (C, C++, and other languages)
SimpleXML (PHP) – php.net/manual/en/book.simplexml.php
XML::Simple + XML::Writer (Perl)
XmlSimple (Ruby)
XmlTextReader + XmlTextWriter (.NET)
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
// loading the XML document
$xml = simplexml_load_file('http://web.info/projects.xml');
// showing the descriptions of class S projects
foreach ($xml->project as $proj) {
if ($proj['class'] == 'S') {
echo '<p>' . $proj->desc . '</p>';
}
}
// similarly, but using XPath
foreach ($xml->xpath("//project[@class='S']") as $proj) {
echo '<p>' . $proj->desc . '</p>';
} consult
the examples
from archive
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
alternatives
Simplified XML processing
for data access, a “reader” is used: XMLReader
examples:
xmlreader module for Node.js
xmlReader provided by libxml library (C et al.)
XMLReader (PHP) – php.net/manual/en/book.xmlreader.php
XmlReader class from .NET (C# et al.)
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
alternatives
Simplified XML processing
to generate data, a “writer” is used: XMLWriter
examples:
XmlWriter class for .NET
xmlWriter provided by libxml library (C et al.)
XMLWriter (PHP) – php.net/manual/en/book.xmlwriter.php
xml-writer module – Node.js
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
How HTML documents could be processed?
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
html processing
Aspect of interest:
ignoring the syntax errors
well formed documents
versus
valid documents
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
html processing
Aspect of interest:
ignoring the syntax errors
malformed markup
there are relatively few cases when the HTML documents
are written/generated correctly
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
html processing
A common used technique – not recommended
Web scraping
extracting the data of interest by processing
– in an empirical manner, usually – the HTML markups
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
html processing
Using a specific HTML/XML processor
important goals:
traversing (processing) a Web page – e.g., via DOM
+
detecting & fixing the syntactic errors (HTML clean)
see previous
lectures
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
html processing: tools
Beautiful Soup – a Python library
www.crummy.com/software/BeautifulSoup/
goquery – a Go library
silviosimunic.com/blog/web-scraping-with-go/
Gumbo – a HTML5 processor implemented in C (Google)
github.com/google/gumbo-parser
html5lib – HTML processing + serialization for Python
github.com/html5lib
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
html processing: tools
HTML::Gumbo, HTML::Parser – Perl modules
github.com/gisle/html-parser
Html Agility Pack – a .NET library
htmlagilitypack.codeplex.com
Hubbub – HTML5 markup processing in C
www.netsurf-browser.org/projects/hubbub/
Jericho HTML Parser – a Java library
jericho.htmlparser.net
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
html processing: tools
jsoup – a Java library for HTML5 processing
jsoup.org
Masterminds HTML5-PHP – a HTML5 processor (PHP)
masterminds.github.io/html5-php/
Nokogiri – a Ruby package
www.nokogiri.org
Parse5 – a Node.js module
inikulin.github.io/parse5/
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
html processing: tools
HtmlCleaner – Java tool for fixing bad HTML markup
HTML Purifier – verifies and filters HTML markups
(including those used for XSS – Cross Site Scripting attacks)
implementations in PHP and Objective-C
NekoHTML – Java processor for HTML based on Xerces
having support for resolving syntax errors
Validator.nu – Java processor using DOM or SAX
in order to report the HTML5 syntax errors
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
“conclusions”
⦑ ⦒
XML processing: from SAX to XPP & Simple XML
HTML document processing tools
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
next episode: Web services with SOAP

More Related Content

Similar to Web Technologies (8/12): XML & HTML Data Processing. Simple API for XML. Simplified Processing (20)

PPTX
Sax parser
Mahara Jothi
 
PDF
24sax
Adil Jafri
 
PDF
Service Oriented Architecture - Unit II - Sax
Roselin Mary S
 
PPT
XML SAX PARSING
Eviatar Levy
 
PPT
5 xml parsing
gauravashq
 
DOCX
Unit 2.3
Abhishek Kesharwani
 
PDF
X Usax Pdf
nit Allahabad
 
PPT
XML
thotasrinath
 
PPT
uptu web technology unit 2 Xml2
Abhishek Kesharwani
 
PDF
Understanding Sax
LiquidHub
 
PPT
Sax Dom Tutorial
vikram singh
 
PDF
Unit 2.3
Abhishek Kesharwani
 
PPTX
Xml and xml processor
Himanshu Soni
 
PPTX
Xml and xml processor
Himanshu Soni
 
PDF
Python xml processing
Learnbay Datascience
 
PDF
SAX, DOM & JDOM parsers for beginners
Hicham QAISSI
 
PPT
Xml parsers
Manav Prasad
 
PPTX
XML - SAX
SaraswathiRamalingam
 
Sax parser
Mahara Jothi
 
24sax
Adil Jafri
 
Service Oriented Architecture - Unit II - Sax
Roselin Mary S
 
XML SAX PARSING
Eviatar Levy
 
5 xml parsing
gauravashq
 
X Usax Pdf
nit Allahabad
 
uptu web technology unit 2 Xml2
Abhishek Kesharwani
 
Understanding Sax
LiquidHub
 
Sax Dom Tutorial
vikram singh
 
Xml and xml processor
Himanshu Soni
 
Xml and xml processor
Himanshu Soni
 
Python xml processing
Learnbay Datascience
 
SAX, DOM & JDOM parsers for beginners
Hicham QAISSI
 
Xml parsers
Manav Prasad
 

More from Sabin Buraga (20)

PDF
Web 2020 01/12: World Wide Web – aspecte arhitecturale
Sabin Buraga
 
PDF
Web 2020 02/12: Programare Web – HTTP. Cookie-uri. Sesiuni Web
Sabin Buraga
 
PDF
Web 2020 03/12: Programare Web – Arhitectura aplicaţiilor Web. Inginerie Web
Sabin Buraga
 
PDF
Web 2020 04/12: Programare Web – Dezvoltarea aplicaţiilor Web în PHP
Sabin Buraga
 
PDF
Web 2020 05/12: Modelarea datelor. Familia XML. Extragerea datelor cu XPath. ...
Sabin Buraga
 
PDF
Web 2020 06/12: Procesarea datelor XML & HTML. Document Object Model
Sabin Buraga
 
PDF
Web 2020 07/12: Procesarea datelor XML & HTML – Simple API for XML. Procesări...
Sabin Buraga
 
PDF
Web 2020 08/12: Servicii Web. De la arhitecturi orientate spre servicii la SO...
Sabin Buraga
 
PDF
Web 2020 09/12: Servicii Web. Paradigma REST
Sabin Buraga
 
PDF
Web 2020 10/12: Servicii Web. Micro-servicii. Serverless. Specificarea API-ur...
Sabin Buraga
 
PDF
Web 2020 11/12: Interacţiune Web asincronă. Aplicaţii Web de tip mash-up. JAM...
Sabin Buraga
 
PDF
Web 2020 12/12: Securitatea aplicaţiilor Web. Aspecte esenţiale
Sabin Buraga
 
PDF
STAW 01/12: Arhitectura aplicaţiilor Web
Sabin Buraga
 
PDF
STAW 02/12: Programare Web: Limbajul JavaScript. Aspecte esenţiale
Sabin Buraga
 
PDF
STAW 03/12: Programare Web: Limbajul JavaScript. Aspecte moderne: ES6 et al.
Sabin Buraga
 
PDF
STAW 04/12: Programare Web: Node.js
Sabin Buraga
 
PDF
STAW 05/12: Arhitectura navigatorului Web
Sabin Buraga
 
PDF
STAW 06/12: JavaScript în navigatorul Web. De la DOM la Ajax şi mash-up-uri
Sabin Buraga
 
PDF
STAW 07/12: Ingineria dezvoltării aplicaţiilor JavaScript
Sabin Buraga
 
PDF
STAW 08/12: Programare Web. Suita de tehnologii HTML5
Sabin Buraga
 
Web 2020 01/12: World Wide Web – aspecte arhitecturale
Sabin Buraga
 
Web 2020 02/12: Programare Web – HTTP. Cookie-uri. Sesiuni Web
Sabin Buraga
 
Web 2020 03/12: Programare Web – Arhitectura aplicaţiilor Web. Inginerie Web
Sabin Buraga
 
Web 2020 04/12: Programare Web – Dezvoltarea aplicaţiilor Web în PHP
Sabin Buraga
 
Web 2020 05/12: Modelarea datelor. Familia XML. Extragerea datelor cu XPath. ...
Sabin Buraga
 
Web 2020 06/12: Procesarea datelor XML & HTML. Document Object Model
Sabin Buraga
 
Web 2020 07/12: Procesarea datelor XML & HTML – Simple API for XML. Procesări...
Sabin Buraga
 
Web 2020 08/12: Servicii Web. De la arhitecturi orientate spre servicii la SO...
Sabin Buraga
 
Web 2020 09/12: Servicii Web. Paradigma REST
Sabin Buraga
 
Web 2020 10/12: Servicii Web. Micro-servicii. Serverless. Specificarea API-ur...
Sabin Buraga
 
Web 2020 11/12: Interacţiune Web asincronă. Aplicaţii Web de tip mash-up. JAM...
Sabin Buraga
 
Web 2020 12/12: Securitatea aplicaţiilor Web. Aspecte esenţiale
Sabin Buraga
 
STAW 01/12: Arhitectura aplicaţiilor Web
Sabin Buraga
 
STAW 02/12: Programare Web: Limbajul JavaScript. Aspecte esenţiale
Sabin Buraga
 
STAW 03/12: Programare Web: Limbajul JavaScript. Aspecte moderne: ES6 et al.
Sabin Buraga
 
STAW 04/12: Programare Web: Node.js
Sabin Buraga
 
STAW 05/12: Arhitectura navigatorului Web
Sabin Buraga
 
STAW 06/12: JavaScript în navigatorul Web. De la DOM la Ajax şi mash-up-uri
Sabin Buraga
 
STAW 07/12: Ingineria dezvoltării aplicaţiilor JavaScript
Sabin Buraga
 
STAW 08/12: Programare Web. Suita de tehnologii HTML5
Sabin Buraga
 
Ad

Recently uploaded (20)

PDF
How Startups Are Growing Faster with App Developers in Australia.pdf
India App Developer
 
PDF
New from BookNet Canada for 2025: BNC BiblioShare - Tech Forum 2025
BookNet Canada
 
PDF
Exolore The Essential AI Tools in 2025.pdf
Srinivasan M
 
PDF
HubSpot Main Hub: A Unified Growth Platform
Jaswinder Singh
 
PDF
"AI Transformation: Directions and Challenges", Pavlo Shaternik
Fwdays
 
PDF
Jak MŚP w Europie Środkowo-Wschodniej odnajdują się w świecie AI
dominikamizerska1
 
PDF
Blockchain Transactions Explained For Everyone
CIFDAQ
 
PPTX
Q2 FY26 Tableau User Group Leader Quarterly Call
lward7
 
PPTX
Webinar: Introduction to LF Energy EVerest
DanBrown980551
 
PDF
CIFDAQ Token Spotlight for 9th July 2025
CIFDAQ
 
PDF
Timothy Rottach - Ramp up on AI Use Cases, from Vector Search to AI Agents wi...
AWS Chicago
 
PDF
CIFDAQ Weekly Market Wrap for 11th July 2025
CIFDAQ
 
PDF
Agentic AI lifecycle for Enterprise Hyper-Automation
Debmalya Biswas
 
PDF
Transcript: New from BookNet Canada for 2025: BNC BiblioShare - Tech Forum 2025
BookNet Canada
 
PPTX
UiPath Academic Alliance Educator Panels: Session 2 - Business Analyst Content
DianaGray10
 
PDF
CIFDAQ Market Insights for July 7th 2025
CIFDAQ
 
PDF
Python basic programing language for automation
DanialHabibi2
 
PDF
HCIP-Data Center Facility Deployment V2.0 Training Material (Without Remarks ...
mcastillo49
 
PDF
Newgen Beyond Frankenstein_Build vs Buy_Digital_version.pdf
darshakparmar
 
PDF
Building Real-Time Digital Twins with IBM Maximo & ArcGIS Indoors
Safe Software
 
How Startups Are Growing Faster with App Developers in Australia.pdf
India App Developer
 
New from BookNet Canada for 2025: BNC BiblioShare - Tech Forum 2025
BookNet Canada
 
Exolore The Essential AI Tools in 2025.pdf
Srinivasan M
 
HubSpot Main Hub: A Unified Growth Platform
Jaswinder Singh
 
"AI Transformation: Directions and Challenges", Pavlo Shaternik
Fwdays
 
Jak MŚP w Europie Środkowo-Wschodniej odnajdują się w świecie AI
dominikamizerska1
 
Blockchain Transactions Explained For Everyone
CIFDAQ
 
Q2 FY26 Tableau User Group Leader Quarterly Call
lward7
 
Webinar: Introduction to LF Energy EVerest
DanBrown980551
 
CIFDAQ Token Spotlight for 9th July 2025
CIFDAQ
 
Timothy Rottach - Ramp up on AI Use Cases, from Vector Search to AI Agents wi...
AWS Chicago
 
CIFDAQ Weekly Market Wrap for 11th July 2025
CIFDAQ
 
Agentic AI lifecycle for Enterprise Hyper-Automation
Debmalya Biswas
 
Transcript: New from BookNet Canada for 2025: BNC BiblioShare - Tech Forum 2025
BookNet Canada
 
UiPath Academic Alliance Educator Panels: Session 2 - Business Analyst Content
DianaGray10
 
CIFDAQ Market Insights for July 7th 2025
CIFDAQ
 
Python basic programing language for automation
DanialHabibi2
 
HCIP-Data Center Facility Deployment V2.0 Training Material (Without Remarks ...
mcastillo49
 
Newgen Beyond Frankenstein_Build vs Buy_Digital_version.pdf
darshakparmar
 
Building Real-Time Digital Twins with IBM Maximo & ArcGIS Indoors
Safe Software
 
Ad

Web Technologies (8/12): XML & HTML Data Processing. Simple API for XML. Simplified Processing