Koliko je komplicirano "implementirati" OpenXML specifikaciju? Neizrazito pitanje na koje je teško dati odgovor. Stariji programeri bi naravno rekli: ovisno o tome što rješavamo implementacijom. Bilo koja implementacija naravno služi tome da bi riješili određeni zadatak. Netko želi pisati dokumente. "Implementira" (čitaj: instalira) si Word. Netko želi obrađivati slike. Implementira s Adobe Photoshop. Netko želi voditi poslovanje. Implementira si SAP. Netko želi zbrojiti dva broja. Implementira si… nešto. Dakle, koristiti riječ implementacija bez popratne specifikacije zadatka vrlo je neprecizna definicija problema.
"
Kako implementirati Open XML" ponekad je tema blogova i foruma iz praktičnog primjera jer za prihvaćanje nekog rješenja kao standardnog ili uporabljivog, potrebno je imati referentnu listu implementacija na kojima ste dokazali da se rješenje da "implementirati". Svaki iole pametniji korisnik kod nas uvijek traži reference - nekad ih imate, a nekad tek uvodite neku tehnologiju pa je ta lista malo manja.
Isto je i kod Open XML-a. Jedan od zahtjeva ISO certificiranja je da postoji referentna lista implementacija u svijetu, odnosno, rješenja koja koriste Open XML specifikaciju. Danas već nije tako mala, a dobar dio
bitnih softverskih kuća koristi Open XML (Corel, Novell, Apple, RIM, Altova…) - lista raste. Neki podržavaju i Open XML i ODF, neki samo jedan standard (recimo Apple koristi Open XML u iWorks aplikacijama te u iPhoneu, ali ne i ODF).
Ako idemo za onim prvim, dakle što jednostavnije to bolje, napravimo "Hello World" dokument u Wordu. Većina programera se sjeća da su se svojedobno jezici mjerili po tome koliko je jednostavno napraviti Hello World primjer, a ja ću ga iskoristiti za sličan primjer. Premalo je prostora za korak-po-korak pristup - primjer je trivijalan, postan je na MSDN-u, i sastoji se od copy-paste pristupa, pročitajte dio "
Walktrough: Creating a Word XML Format File" .Da pišemo svoju "implementaciju" onda bi izvorni kod vjerojatno morao generirati ove dijelove dokumenta, pa "princip je isti sve su ostalo nijanse" pristup. Da li je to kompleksno? Ukupno sam nabrojao 80 tak linija XML koda - trivijalan zadatak za programera početnika. No kao što rekoh, zadatak je jednostavan. Da li se može "implementirati"? Doh, rekao bi Homer Simpson. Moj kolega
Darko Jovišić drži jednodnevni Open XML tečaj nakon kojeg bi programer prosječnog znanja mogao savladati osnove "implementacije".
Što ako je "kompleksan"? Što ako želimo napisati svoj Microsoft Office (i recimo nazvati ga Open Office :))? Naravno, onda će nam trebati malo više informacija i vremena da i to savladamo. Da li je to danas moguće? Jest, sučelje je otvorenog tipa. Traži li truda? Naravno. Dakle, da se Open XML može jednostavno implementirati? Da, možda i ne. Ali odgovor je točan za bilo koje neprecizno pitanje tog tipa, pa… ipak morate probati sami. Ekipa iz Gemboxa (vidi malo prijašnji post) vam može dati svoju priču jer su to oni uspješno napravili za scenarij koji im je trebao (a nije tako lagan, gotovo su napisali svoj Excel). Da li je to jednostavno napraviti s bilo kojom specifikacijom? Ja bih rekao da je zapravo svejedno kakva je specifikacija - uvijek ćete imati zabavu. Uzmimo na primjer sličan standard pod imenom Open Document (ODF). Standard je na "tržištu" već preko 2 godine, vjerojatno dovoljno vremena da se prilično upoznamo s njim. Nedavno sam naletio na test stranice implementacije standarda koje razvija Intel.
Pogledajte rezultate testa KOffice i OpenOffice implementacije. Rezultat: niti jedan niti drugi nisu 100% udruživi s standardom koji koriste - ODF-om. Dakle, kompleksna implementacija je upravo to - kompleksna. Za MS nemam rezultate, ali je već napravljen alat koji vrši provjeru udruživosti (
Package Explorer), pa ćemo vidjeti.
Dva dodatna poučka:
a) Moram li biti udruživ s ranijim verzijama Worda? Ne. Naravno da možete reći "ja podržavam samo docx format" i time biti oslobođeni raznih opcionalnih elemenata koji definiraju kako upravljati starijim dokumentima, a koji su upravo tema rasprave "zašto uopće postoje". Ponavljam, elementi su opcionalni. Čuda tipa UseWord95LineBreaks ili kako već koriste se samo po potrebi. Konkurentni standard, ODF ima sličnu majstoriju, ali je skriva iza elementa "config-item" (
odlično istraživanje o igrama OOXML i ODF formata pročitaje ovdje). O tome mogu u nekom kasnijem postu, po potrebi. U svakom slučaju, kod obe specifikacije je isto: možete i ne morate ih koristiti.
b) Moram li biti majstor dokumentacije? Ne. Naravno da ćete čitati samo ono što vas zanima i ono što ćete brzo dohvatiti kroz indeks. Sada je pitanje: je li ta dokumentacija preogromna (spominje se 6.000 stranica). Kako za koga. Sjetimo se samo meni omiljenog izdanja Visual Studio v1.0 (cca '93)- kutije s preko 10.000 isprintanih stranica. Tada se dokumentacija još printala, danas to osim IBM-a rijetko tko radi. Pitanje je naravno što je dostupno u elektroničkom obliku, i naravno koja je kvaliteta dokumentacije. A tu je i Internet i tutoriali i web stranice i blogovi i support i što ja znam što sve ne.
Dakle, OOXML ili ODF? Što je lakše? I jedan i drugi imaju scenarije u kojima su vjerojatno bolji. Ali to će ocjeniti situacija, zadatak, specifikacija ili tako nešto.
Pouka za sve mase na bilo kojoj strani: tipkovnicu u ruke, razvojni alat na zaslon. Provedite nekoliko dana u razumijevanju standarda i implementacije, a onda (ako ste programer) … odaberite sami što bi "implementirali". Dakle, napustimo može, ne može, jednostavnije, složenije priču. Ja tvrdim: može i može odmah - već dugo vremena mi je omiljena "Logika je ista, samo je pitanje sintakse".
[19.08.2007] dodatno: naletio sam na jedan sasvim drugačiji, da ne kažem pametniji pristup. Njemački Fraunhofer Institute for Open Communication Systems kooridnator je Working Group DIN (DIN je njemački HZN) Committee NIA 34,
na projektu koji će definirati interoperabilnost i mogućnosti konverzije između 2 formata: OOXML i ODF. Po njima, niti jedan neće biti dominantan, pa je možda bolje posvetiti se njihovoj međusobnoj suradnji. Kao što bi rekao Garry Lineker: "Nogomet je igra u kojoj uvijek pobjeđuju Nijemci".
[20.08.2007] dodatno: Darko je počeo
pisati mali tutorial kako graditi rješenja na OpenXML formatu, pa navratite do njegovog bloga. Prilično interesantno.
[23.08.2007] dodatno: VSJ (Mike Ormond) objavio je dobar članak:
Programming Office documents with Open XML. Jest da naš Darko piše bolje, ali ni ovaj nije loš.