Eksempler på Hypermedia

Den lille CSS-saken som Alexander postet her om dagen fikk meg til å tenke:

Hvorfor er det bare html som hylles som det store hypermediaformatet? CSS er jo vel så bra, og brukes i nesten like stor grad

Så her sitter jeg og skriver igjen! Hypermedia er jo egentlig bare media (tekst, bilder, video) med hyperlenker til annet media (mer tekst, bilder, video). Når man sier hypermedia er det jo HTML man tenker på: HyperText Markup Language. Naturlig, ikke sant? Men hva med f.eks. CSS? Er ikke det er hypermediaspråk? Sier man ikke i CSS at man ønsker det bakgrunnsbildet på dette elementet? Og da refererer man jo til bildet ved hjelp av en URI - altså er det en hyperlenke. I alle fall på lik linje med img eller object-taggene i HTML.

Og da tenker jeg: Er det andre opplagte hypermediaformat man bør vurdere når man skal gi fra seg representasjoner?

JSON blir ofte disset fordi det sies at det ikke er et hypermediaformat, og det har man jo rett i. CSS har en egen “uri” funksjon for å uttrykke hypertekstlenker. JSON har ikke det.

XML blir ofte hypet opp som et veldig bra hypermediaformat, men det er jo helt feil. XML har heller ingen “uri” funksjon for å si at dette attributtet eller denne strengen her er faktisk en URI som en UA bør bruke til noe.

Slikt må (for både XML og JSON) uttrykkes i andre dokumenter som beskriver strukturen i dokumentet. Ironisk nok gjøres dette i XML ved hjelp av URI’er:

xmlns:foo=“urn:foo”
xsi:schemaLocation=“urn:foo http://bar”
xmlns:xsi=“…”

Her sier man at dokumentet ligger i namespacet foo. Neste linje sier at namespacet foo identifiseres ved hjelp av URI’en urn:foo. Dernest sier man at namespacet urn:foo har et XML schema som ligger klart til henting på http://bar—en XML prossessor kan hente denne for å sikre seg dokumentet er gyldig. Til slutt må man si til prosessoren at prefixet xsi faktisk er XML Schema Instance namespacet, som igjen blir identifisert ved hjelp av nok en URI. XML parseren slipper å hente skjemadefinisjonen for xsi fordi parseren skal kjenne igjen denne bare på bakgrunn av URI’en.

Men spør du meg, er det mye magi bare for å gjøre XML til et überhypermediaformat. XML Schema Instance er også et lite dyr, men med litt øvelse kan man sikkert definere at et attributt er av type anyURI. Dermed kan hvemsomhelst som leser dokumentet og skjemaet ditt, kjenne igjen URIer. Men hva skal man bruke det til? Huff :-)

JSON tiltaler meg. Det er Lists og Maps i skjønn harmoni. Et rent datautvekslingsformat som ikke forsøker å spesifisere datatypen utover noen enkle primitiver. Det er ikke noe problem å uttrykke en URI i et JSON dokument; Det er jo bare en streng som alltid. Så blir det opp til spesifikasjonen av JSON-dokumentet (som kanskje ligger i prosatekst slik som hele Atom Publishing Protocol - APP har ingen XML skjema) å angi hvilke strenger som er URIer osv. JSON er da like bra hypermediaformat som XML???

Kommentarer

Kanskje en avsporing, men: Er det virkelig noen som bruker XML Schema om dagen? Jeg trodde de fleste brukte Relax NG (Wikipedia) for tiden. XML Schema er i mine øyne en av disse standardene som er så katastrofalt overdesignete at de har gitt en separat ikke-normativ del (XML Schema Part 0: Primer) som forklarer de andre delene.

XML Schema-spesifikasjonen er på 216 sider i bitteliten skrift, eller 285 om du inkluderer primeren (som nesten må anses som den egentlige standarden; resten er referansen). Relax NG er på 40 sider i stor skrift, du kan skumlese den på en halvtime og huske det meste. Schemaene i Relax er tilsvarende mikroskopiske i forhold til XSD. Det er sant at XML Schema har et bredere skop som blant annet omfatter et eget datatype-system, men likevel. Om du vil ha dokumenter som føyer seg etter – og kan valideres mot – fastlagte strukturer, så har Relax det man trenger, og har den fordel at schemaet kan leses av mennesker.

Jeg er blant de som mener W3C har mistet fokus. Standardene eser ut i størrelse, minsker i relevans, og viktige puslespillbrikker som HTML, CSS og RSS forfaller. Jeg forstår heller ikke deres besettelse rundt WS-dilldall og deres bruk av URIen som en hammer som liksom kan brukes til absolutt alt, mens teknologer på sidelinjene hoster opp Atom, OpenID og andre praktiske, lettvektige semantiske standarder..

Og JSON, da.

Jeg er enig med deg i alt du sier, Alexander. W3C har mistet fokus og overspesifiserer til stadighet. Jeg synes også at WS-death-* er helt feilslått, liksom mesteparten av Java “Enterprise Edition”. Small is beautiful. RDF er jo litt i samme gate. Et uendelig utvidbart type-sterkt kunnskapssystem. Trenger man det?

HTML er svakt når det gjelder å uttrykke annet enn utseende på tekst. Det å bruke et skohorn for å få hcard og xfn inn i class, rel og rev-attributter blir tamt. Men siden alternativet (RDF eller DIY-XML) blir så komplisert tror jeg at microformat-måten å angripe problemet på vil seire, siden det krever nesten ingen kompetanse for å komme i gang. Akkurat som Fielding skriver om, nemlig at det skulle være lett for content authors å skrive tekst.

Kanskje man burde hive seg på for å ta det beste fra RDF og få det inn i et mikroformat?

Annonse