sâmbătă, 8 noiembrie 2008

XHTML pentru toti

#Descriere limbaj:

XHTML este in speta HTML restrictionat cu DTD. Scopul sau este de a restrictiona HTML-ul pentru a facilita functionarea corecta a browserelor mai putin complexe sau a agentilor sau a diferitelor programe care prelucreaza hyper text.

#Mecanism:

El practic preia restrictiile impuse de XML cum ar fi:

- imbricare taguri
- inchidere corecta a tagurilor
- litere mici la numele tagurilor
- nod radacina obligatoriu
- valori atribute intre ghilimele
- se foloseste o referinta catre un .dtd care valideaza .xhtml-ul.

#Structura:

<!DOCTYPE link_catre_fisierul_dtd> //calea catre fisierul .dtd
<html xmlns="http://www.w3.org/1999/xhtml"> // namespacece specifica
// locatia de validare pentru XHTML
<head>
<title>..... </title>
</head>
<body>
.....
</body>
</html>

exemplu de <!DOCTYPE ...> :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

DTD pentru toti

#Descriere limbaj:

DTD in sensul larg este un protocol pt. XML. Fisierele .dtd contin reguli ce permit definirea
elementelor XML, a atributelor, a unor restricţii simple privitoare la cardinalitatea (de câte ori apar) elementelor şi la tipul lor.

#Sintaxa:

Un fişier DTD poate fi conţinut în fişierul XML sau într-un fişier extern

În primul caz DTD-ul va fi descris în felul următor: 
<!DOCTYPE  [conţinut propriu-zis]>
În al doilea caz în fişierul XML va fi referit fişierul DTD în felul următor:
<!DOCTYPE element_rădăcină [SYSTEM sau PUBLIC FPI] url>

element_rădăcină = radacina XML-ului
SYSTEM => .dtd e pe aceeasi statie ca si .xml
PUBLIC => .dtd se afla la o adresa externa. FPI este un identificator unic pt. acest .dtd url-ul indica url-ul local sau extern unde se afla .xml-ul DTD permit definirea structurii unui element:

<!ELEMENT nume tip sau (structura + descriptori)>

tip: EMPTY(structura vida) sau ANY. Daca nu are tip, elementul
poate conţine text (#PCDATA – parsed character data) şi poate avea alte elemente copii. Elementele copii ce pot fi întâlnite în structura unui element sunt separate prin virgulă şi pot fi urmate de următorii descriptori(*, +, ?, | etc)

Sintaxa definirii atributelor este următoarea:

<!ATTLIST element atribut tip valoare_implicită>


tip: CDATA(text ce nu va fi parsat de parserul XML)
ID(atributul are ca val. un ID unic)
IDREF(atributul are ca valoare o referinta la un ID unic)
IDREFS(- " - o lista de ID-uri)
(val1|val2|..|valn)(atributul are valori in aceasta lista)

În fişiere DTD se pot defini entităţi. Entităţile sunt prescurtări ale unor
structuri de text ce apar mai des în fişierul XML.







marți, 4 noiembrie 2008

XPATH si XQUERY - Rezolvarea exercitiilor din laboratorul #3, cursul de Interfete Evoluate

Rezolvarea laboratorului cu numarul 3, cursul de Interfete Evoluate.

Acest laborator a permis aprofundarea unor notiuni cum ar fi parsarea documentelor xml in vederea returnarii informatiilor utile la un moment dat. Suna complicat? Sper ca rezolvarea acestor exercitii sa demonstreze faptul ca acest task nu este nici pe departe atat de complicat precum pare...

REZOLVARE LABORATOR:

Exercitiul 1 (XPATH): Scrieti expresiile Xpath care sa returneze:

a)tot ce este in documentul xml
b)toate atributele din documentul xml
c)toate elementele care au id-ul "id" si sunt descendenti ai elementului grupa
d)toate elementele care au id-ul > 1000
e)numele tuturor studentilor
f)numele celui de-al doilea student
g)elementul nume al studentului cu id-ul 121
h)studentul al carui nume este Popescu
i)sa se returneze primul element student si advisorul lui
j)din ce grupa face parte studentul cu numele Popescu

Rezolvare (ca in laborator):
a) //*
b) //@*
c) /grupa//*[@id]
d) //*[@id>1000]
e) //student/nume/text()
f) //studenti/student[2]/nume/text()
g) //student[@id="1212"]/nume/text()
h) //student[nume/text='Popescu']
i) //student[1] | //advisor
j) //grupa[studenti/student/nume/text()='Popescu']/@id

Exercitiul 2 (XQUERY): Afisati participantii la chatul din "2008-09-15", care au dat mesaje, sortati alfabetic dupa nick (dintr-o arhiva de chat).
Output de tipul:
<Participants>
<Person>nick</Person>
</Participants>

Rezolvare:
<Participants>
{
for $var in distinct-values(doc("/db/ircbot/2008-09-15.xlog")/xlog/message/@nick)
return <Person>{$var}</Person>
}
</Participants>

luni, 3 noiembrie 2008

Cum sa lucrezi cu XML folosind E4X in Actionscript 3.0

Introducere

E4X reprezinta o serie de clase si functionalitati destinate manipularii XML. Este foarte asemanatoare din punct de vedere structural cu XPath.

Pentru declaratie XML se va folosi:

var myXML:xml=< grupa >
< studenti >
< student id=”1212” >
< nume > Popescu < /nume >
< prenume > Mihai < /prenume >
< /student >
< student id=”1313” >
< nume > Ionescu < /nume >
< prenume > Adrian < /prenume >
< /student >
< /studenti >
< /grupa >

Bineinteles acesta nu reprezinta o mare simplificare insa adevarata functionalitate apare in momentul in care dorim sa filtram informatii dintr-un xml.

Pentru a accesa un nod al xml-ului se va folosi calea din arbore separand numele nodurilor prin ‘.’ . Se va intoarce lista de noduri asociata caii(un XMLList);

Sa presupunem ca avem de referit nodul grupa->studenti. Vom folosi ‘myXML.studenti’ pentru a-l referi. Nodul radacina nu este referit prin numele XML-ului(in cazul de fata nodul grupa este referit prin myXML).

Exemplu:

var myStudent:XMLList=myXML.studenti;

Pentru a selecta ca un XML si nu ca o lista folosim:

var myStudent:XMLList=myXML.studenti[0];

Atribute

Pentru a selecta un atribut al unui XML se foloseste operatorul @ sub forma @< nume >.

Exemplu:

var myId:String=myXML.studenti.student[1].@id //va returna id-ul celui de-al doilea student.

Intotdeauna atributele returnate vor fi stringuri. Conversiile se fac ulterior.

Filtrare

Uneori este necesar sa selectam un numar de noduri cu anumite proprietati.

Pentru aceasta se foloseste notatia () in cadrul caii.

Exemplu:

var numeStud:XMLList=myXML.student.student.(@id==”1212”)[0].nume;

Aceasta imi returneaza numele studentului cu id-ul “1212”. Se observa ca am folosit [0] dupa conditie. Motivul este ca dupa conditie va rezulta o lista de noduri care indeplinesc conditia(chiar daca lista e formata dintr-un singur nod). Rezultate pot fi referite printr-un indice. [idx] reprezinta al idx-lea nod dintr-un XMLList.

Operatorul appendChild()

Se foloseste pentru a adauga un nod la finalul unui XML.

Exemplu:

var newStud=< student id=”1414” >
< nume > Dascalu < /nume >
< prenume > Ion < /prenume >
< /student >

myXML.studenti[0].appendChild(newStud);

Atributele ce pot fi referite prin filtrare pot fi si modificate.

Exemplu:

newStud.nume[0]=”Dobrescu”;//va modifica Dascalu in Dobrescu

XML pentru toti

#Descriere limbaj:

XML este un limbaj de adnotare/structurare a datelor.

Este creat pentru a fi folosit pentru
adnotari, schimb de date, publicare documente si prelucrare automata de catre clienti (agenti) inteligenti.

#Sintaxa:

Limbajul e bazat pe marcaje si atribute.
Un marcaj este un text care descrie sensul sau structura unor date. Acest text este inserat intre semnele „<” si „>”. Ex.:
<nume>Popescu </nume>,
<casatorit />;

Marcajele sunt case-sensitive.

Un element este tot ceea ce se afla intre marcajul de inceput si marcajul de sfarsit .
Un marcaj trebuie sa indeplineasca conditiile:

· Pot sa contina litere, cifre si alte caractere

· Nu pot incepe cu cifre si cu semne de punctuatie

· Nu pot incepe cu „xml”

· Nu pot contine spatii

Un element poate contine mai multe elemente. De aici rezulta o ierarhie. Constrangeri ce trebuie respectate:

1.
Intr-un fisier XML trebuie sa existe un element radacina care sa le contina pe toate celelalte.
2. Elementele nu pot fi incrucisate.(de genul:
<tranzactie> <data>2005-11-05 </tranzactie> </data>)

Un element poate sa contina unul sau mai multe atribute. Atributele se specifica in cadrul marcajului de inceput al elementului si sunt de tip nume_atribut=”valoare”(
<moneda="RON"> 1000 </suma>).
Ar mai fi de mentionat ca intotdeauna un document XML incepe cu un rand in care se mentioneaza versiunea limbajului si codificarea folosita.

#Cazuri de utilizare:

- Fisiere de configurare
- Stocare informatie tip office
- Stocare date in baze de date
- Baza pentru limbaje noi

Lansare oficiala

Astazi, 3 noiembrie 2008 , echipa Easy Webbing va ureaza bun venit in lumea Web-ului, prin care veti naviga cu incredere folosindu-va de articolele noastre. Vom incerca sa va aducem la cunostinta principalele tehnologii folosite in domeniul interfetelor evoluate la ora actuala, cat mai succint si mai clar cu putinta...