SpeXML, SpeX Markup Language

Vad är SpeXML? | Varför SpeXML? | Hur fungerar SpeXML? | Hur skriver man
SpeXML?
| Vad finns det för intressanta SpexML-saker? | Frågor och synpunkter

Vad är SpeXML?

SpeXML (SpeX Markup Language) är ett XML-baserat markup language för att skriva manus. XML (eXtensible Markup Language) är en standard för språk av den här typen och den försäkrar att språken blir entydiga och går att parsa enkelt. XML är i sin tur baserat på gamla goa SGML (för alla er som läst Text&Bild borde det ringa en klocka nu).
     SpeXML är såsom XML-språk helt presentationsoberoende och det är endast strukturen man beskriver när man skriver i SpeXML, alltså inte hur det skall se ut. Presentationen sköts sedan med hjälp av olika formatmallar beskrivna i något som kallas för XSL (eXtensible Style Language). Formatmallarna skrivs bara en gång och de gäller sedan för alla upptänkliga filer skrivna i det aktuella språket. Idag finns det formatmallar för konvertering av SpeXML till HTML och till TeX.

Varför SpeXML?

Från början skrevs alla manus i Microsoft Word och egentligen krävs väl ingen förklaring varför inte det gick så bra, men här kommer ändå en: På grund av alla olika versioner av dyngan och alla plattformar det går att köra på, var vi försäkrade om att få något som inte riktigt fungerade i slutändan. Det hände med jämna mellanrum att någon sparade manus i senaste Word-formatet som han eller hon hade fått på jobbet och då kunde helt plötsligt inte vi vanliga dödliga läsa det längre. Stundtals var det också någon som råkade kopiera filerna i Unix-miljö och då försvann hälften av informationen eftersom Unix sällan klarar av Mac-filer. Summa summarum behövde vi något nytt.
     I och med Hermans Historia så började vi skriva manus i HTML i stället, och även om betydligt fler har möjlighet att läsa och skriva HTML oavsett vilka program man använder så fungerar det nu om möjligt ännu sämre. En del sitter och skriver omsorgsfullt i sin texteditor för att få lättläst kod, medan nästa person för att slippa alla formatkoder och annat skräp kickar igång en WYSIWYG-editor. Koden blir därefter helt oläslig och som för att strö salt i såren har några av oss använt vår gamla trotjänare Word som WYSIWYG-editor, bara för att upptäcka att repliker försvunnit eller förökat sig helt på egen hand. Kort sagt, vi behövde återigen något bättre.
     Med SpeXML så är manus beskrivet enbart i termer av struktur och helt oberoende av presentationen (till skillnad från HTML). Strukturen, med alla repliker och scenbeskrivningar, kan sedan enkelt konverteras med formatmallar till i princip vad som helst. I dagsläget finns konvertering till HTML och TeX, men om behovet finns går det lätt att utöka med flera format. Information och presentation är alltså skilda från varandra; informationen kan skrivas och läsas lätt av alla, medan presentationen fixas automatiskt. Inte illa!

Hur fungerar SpeXML?

Det börjar med att man som manusskribent skriver en .spexml-fil. Den innehåller manus på ett presentationsoberoende format som lätt kan presenteras på flera olika sätt utan att den för den sakens skull behöver ändras. .spexml-filen i sig är en vanlig textfil och kan som sådan skrivas med vilken texteditor som helst. När den är färdigskriven så konverterar man den till HTML eller till TeX med kommandona spexml2html respektive spexml2tex. Kommandona är shellscript under Unix och körs alltså vid kommandoprompten. Syntaxen är som följer:

datan> spexml2html [indata] -o [utdata]

Om vi just har skrivit akt 3 i SpeXML och vill fixa en HTML-representation av den skriver vi alltså:

datan> spexml2html akt3.spexml -o akt3.html

Svårare än så är det inte! spexml2tex fungerar precis likadant, fast utdata blir en TeX-fil istället. Det är viktigt att poängtera att .spexml-filen alltid är mastern som man säger i branschen. Det är alltså den som man gör alla ändringar i och underhåller. HTML- eller TeX-representationer konverterar man bara fram vid behov. I framtiden kommer också vanliga webbrowsers att stödja XML/XSL vilket innebär att man inte behöver konvertera till HTML som vi gör idag, utan den processen görs automatiskt bara browsern kan komma åt formatmallen.

Hur skriver man SpeXML?

SpeXML är väldigt enkelt att förstå och använda. Varje SpeXML-dokument börjar med huvudet <?xml version="1.0"?>som talar om att det är ett XML-språk. Hela manus innesluts sedan i tagarna <spexml></spexml>. Observera att tagar alltid skrivs med små bokstäver i XML-språk och så alltså även i SpeXML. Innanför <spexml></spexml>-tagarna skriver man sedan sitt manus akt efter akt, scen efter scen, precis som man kan förvänta sig. Varje akt innesluts i <akt titel=""></akt>-tagar, där aktens titel skrivs innanför citationstecknen. Varje scen innesluts i <scen nr=""></scen>-tagar, där scenens nummer skrivs innanför citationstecknen.
     Varje scen skall börja med ett scenhuvud: <scenhuvud></scenhuvud>. Scenhuvudet består i sin tur av flera olika tagar innanför vilka man talar man om vad scenen heter, beskriver den och vilka som medverkar i den, vad för rekvisita som krävs, kortfattat hur det skall regisseras och ljussättas. Scenhuvudet skriver man typiskt in i manus med en gång och det är sedan upp till respektive gruppchef att se till att det fylls med innehåll. Ljud & ljus-chefen skall till exempel se till att det skrivs in i varje scenhuvud ungefär vilket ljus och vilka ljudeffekter som skall användas i den aktuella scenen.
     På samma sätt som med ett scenhuvud så beskrivs sånger innanför <sång></sång>-tagar. Det finns också tagar för repliker, kommentarer med mera och alla fungerar på samma sätt. SpeXML är som sagt ett väldigt enkelt språk; det är lätt att lära sig och lätt att använda. Det allra enklaste sättet att lära sig språket är genom att titta på en exempelfil. Nedan finns filen exempel.spexml och den innehåller de vanligaste tagarna i SpeXML. Det är i stort sett helt självförklarande hur de används. Efter det finns de framkonverterade exempel.html och exempel.tex samt en PDF-fil som visar hur TeX-dokumentet ser ut på papper. Kolla in exempelfilerna och jämför, så kommer ni förmodligen inte att ha några som helst problem att förstå.

exempel.spexml Så här ser en fil skriven i SpeXML ut.
exempel.html Efter konvertering till HTML så blir det såhär.
exempel.tex Efter konvertering till TeX så blir det såhär...
exempel.pdf ...och på papper ser TeX-dokumentet ut så här.

Förhoppningsvis är exempelfilerna tämligen självförklarande, men det finns också en komplett lista över alla tagar i SpeXML och hur de skall användas. Listan innehåller också de specialtecken som finns i SpeXML.

spexml_tagar.html Lista över alla SpeXML-tagar och hur de används.

Observera att eftersom &, < samt > är reserverade tecken i XML så får du inte använda dem när du skriver din text i SpeXML. Du skall naturligtvis ha < och > i dina tagar, men inte i den löpande texten för då kommer konverteringen att misslyckas. När du skriver i SpeXML så spelar indenteringen ingen som helst roll, men tänk på att de blir enklare för nästa person att skriva in nya saker om du linjerar din kod prydligt.

Vad finns det för intressanta SpeXML-saker?

För att ytterligare förenkla användningen av SpeXML så kommer jag eventuellt att bygga en emacs-mode för SpeXML-filer samt en syntaxanalysator som berättar var man skrivit fel om det är så att man råkat missa något i sin .spexml-fil. I dagsläget så blir bara konverteringen fel utan att man får reda på var felet inträffade. Tills dess får ni hålla tillgodo med följande resurser för den nyfikne:

exempel.spexml Ovanstående exempelfil i textformat.
mall.spexml Mall som är bra att utgå ifrån om du vill skriva SpeXML.
spexml.dtd Document Type Definition (DTD) för SpeXML.

Frågor och synpunkter

Om det skulle vara något så skicka en rad per mail. Jag har inte gått in på hur SpeXML är implementerat och det helt medvetet eftersom gemene manusskribent inte behöver veta och förmodligen inte heller är intresserad. Om du ändå undrar något så maila och fråga, eller ännu hellre kom på nästa skrivarmöte och fråga där.

Lycka till med SpeXML! / Napoleon <d94-pax@nada.kth.se>

Vad är SpeXML? | Varför SpeXML? | Hur fungerar SpeXML? | Hur skriver man
SpeXML?
| Vad finns det för intressanta SpexML-saker? | Frågor och synpunkter


http://www.d.kth.se/namnder/dataspelet/spexml/index.html Senast ändrad 11 augusti 1999