Gå til hovedindhold
Version2 it for professionelle
Forsiden

Hovedmenu

  • It-nyheder
  • Blogs
  • It-job
  • It-firmaer
  • Whitepapers
  • Opret bruger
  • Log ind
Du kan logge ind med din e-mail-adresse
Der er forskel på store og små bogstaver i adgangskoden.
Glemt adgangskode?
Se kommentarer (16)
Emner

Farvel og tak til XML

Af admin adminuser 23. marts 2009 kl. 14:32

XML schema og Xml i dokumentformater, SOAP, REST og andre webservices har været en stor del af mit IT liv de sidste 7 år. Det giver mig et relativt nostalgisk forhold til hele XML stakken.

Det var derfor med et vist vemod at jeg i dag kunne læse fra technical lead på XML W3C WG, at Microsoft står klar med en XML afløser som han "tentativt" tror på.

Nå, så er det vel på tide snart at få skrevet den "Hello World" i 'M'?

Send Tweet
Udskriv
Om admin adminuserFollow @version2

Kommentarer (16)

Opret en konto eller log ind for at følge indhold på Version2 - og bliv opdateret via e-mail eller rss

Følg kommentarer
Torben Mogensens billede
Torben Mogensen 23. mar. 2009 - 14.51
 
Afløser?

Det er nok lidt tidligt at dømme XML ude, selv om Microsoft satser på M. F.eks. vil bl.a. OOXML ikke uden videre kunne laves om til at bruge M i stedet for XML.

Men personligt vil jeg ikke savne XML. Om M er bedre kan jeg dog ikke sige uden at have set en bedre oversigt end den fra linket.

  • Stem op 0
  • Stem ned 0
  • Log ind eller opret en konto for at skrive kommentarer
Martin Kofoed 23. mar. 2009 - 15.18
 
Re: Afløser?

OOXML? Det kommer vel i så fald til at hedde Open M, fordi det er nemmere at skrive ...

En anden pudsig ting er, at James Clark taler om ..

[...]M needs to end up as a genuinely open standard.

Det er altså ikke nok med en "open standard". It has to be GENUINE! ;)

  • Stem op 0
  • Stem ned 0
  • Log ind eller opret en konto for at skrive kommentarer
Lars Bengtsson 23. mar. 2009 - 17.51
 
Re: Afløser?

Sprogspecifikationen kan hentes her:

http://msdn.microsoft.com/en-us/oslo/dd548667.aspx

Det ser ud til at være kraftigt inspireret af ML.

Om det er godt eller skidt, ved jeg ikke, umiddelbart virker det mærkeligt at det ligner et programmeringssprog med paranteser, { }.

  • Stem op 0
  • Stem ned 0
  • Log ind eller opret en konto for at skrive kommentarer
Christian Nobel 23. mar. 2009 - 19.16
 
Crashcourse

Er der nogen der kan give et 5 liniers crashcourse i M, og M's velsignelser.?

Og er M beregnet til at skulle agere programmeringssprog, eller er det beregnet for at være databærende?

Endelig, er der behov for endnu et format/sprog?

/Christian

  • Stem op 0
  • Stem ned 0
  • Log ind eller opret en konto for at skrive kommentarer
Lars Bengtsson 23. mar. 2009 - 20.39
 
Re: Crashcourse

Ja, det er super (måske). Det ser ud til at man ønsker sig at M nemt kan oversættes til SQL og har derfor samme semantik. Objektorienterede konstruktioner ser det ikke ud til at der er lagt vægt på.

Dette eksempel viser definition og populering af en datatype:
[code=csharp]
type Person {
Id : Integer32 = AutoNumber();
Name : Text;
Age : Integer32;
Spouse : Person;
} where identity Id;

People : (Person where value.Spouse in People)*;
[/code]
The Spouse field references another Person. One way to initialize this structure is to explicitly assign the identity of each instance:
[code=csharp]
People {
{ Id = 0, Name = "Jack", Age = 23, Spouse = 1 },
{ Id = 1, Name = "Jill", Age = 25, Spouse = 0 },
}
[/code]

  • Stem op 0
  • Stem ned 0
  • Log ind eller opret en konto for at skrive kommentarer
René Løhde 23. mar. 2009 - 22.04
 
Re: Crashcourse

M er et sprog til at skrive textuelle DSL'er.
M består af 3 elementer, Mscheme, Mgrammer og Mgraph ... som forenklet kan sammenlignes med hhv xsd, xslt og xml.

Et eksempel kunne være dette DSL fra samples i SDK'et:

[code=bnf]

Music
- - - D
C C# F G
E E - D
A E - E
G F - E
D C D E
A E D D
D E A C
[/code]

...med den tilhørende grammar:

[code=bnf]
//------------------------------------------------------------
// Copyright (c) Microsoft Corporation. All rights reserved.
//------------------------------------------------------------

/*
The Song language allows a songwriter to compose a song
that starts with "Music" and is followed by zero or more "-"
characters or characters for the range of notes "Ab" to "G#",
delimited by the "," character.

Additionally, whitespace characters can now be included in  
input and will be ignored during processing unless the  
RestOrNote token rule is being matched.

Finally, a song is defined as having zero or more bars where each bar  
contains a combination of four rests and notes.  

*/
module SongSample
{
// Make the Common language (and its rules) visible to languages
// in other modules that share the SongSample namespace
export Common;

language Common  
{  
    // Parameterized List rule          
    syntax List(element)   
        = n:element => [n]   
        | n:element l:List(element) => [n, valuesof(l)];  

    syntax List(element, separator)   
        = n:element => [n]   
        | n:element separator l:List(element, separator) => [n, valuesof(l)];  

    // Whitespace  
    syntax LF = "\u000A";  
    syntax CR = "\u000D";  
    syntax Space = "\u0020";  
    syntax Whitespace = LF | CR | Space;  
}  

language NotSoCommon {}  

}

module Languages
{
/*
Only make the Common language (and its rules) from the MSGrammar
module visible to languages in this module scope. Specify an alias
for the Common language that rules in languages in this module use
to reference the rules in the Common language with.
*/
import SongSample { Common as C };

language Song  
{           
    // Notes  
    token Rest = "-";  
    token Note = "A".."G";  
    token Sharp = "#";  
    token Flat = "b";

    token RestOrNote = Rest | Note (Sharp | Flat)?;  

    // Keywords  
    syntax Music = "Music";  

    // A song can have zero or more bars, where each bar  
    // contains a combination of four rests and notes.  
    syntax Bar = RestOrNote RestOrNote RestOrNote RestOrNote;  
    syntax Bars = b:C.List(Bar) => Bars[valuesof(b)];  

    // Initial rule  
    syntax Main = m:Music b:Bars => Song[b];  

    // Ignore whitespace  
    interleave Whitespace = C.LF | C.CR | C.Space;  
}  

language AnotherLanguageThatNeedsLists  
{  
    // Reference List rule in Common language  
    syntax ListOfAs = C.List("A");  
}  

}
[/code]

...og den resulterende graph til fortolkning:

[code=csharp]
Song[
Bars[
Bar[
"-",
"-",
"-",
"D"
],
Bar[
"C",
"C#",
"F",
"G"
],
Bar[
"E",
"E",
"-",
"D"
],
Bar[
"A",
"E",
"-",
"E"
],
Bar[
"G",
"F",
"-",
"E"
],
Bar[
"D",
"C",
"D",
"E"
],
Bar[
"A",
"E",
"D",
"D"
],
Bar[
"D",
"E",
"A",
"C"
]
]
]

[/code]

Min kollega Henrik plejer at sammenligne det med Jax - lex compiler, andre med ML og DougP PM på M, mener at det har store lighedstræk med Smalltalk. Jeg ser det stadig som et mere fleksibelt XML. Jeg håber at blive klogere.

  • Stem op 0
  • Stem ned 0
  • Log ind eller opret en konto for at skrive kommentarer
Christian Nobel 23. mar. 2009 - 22.15
 
Re: Crashcourse

Tak, nu vil jeg nu nok sige at Lars's eksempel gav mest mening.

Men jeg har stadig lidt (mildt sagt) svært ved at forstå formålet med M.

XML er et fint og rimeligt nemt format (endda tilnærmelsesvis læsbart, og i hvert fald dechifrerbart) at benytte til dataudveksling.

Til programmering findes der rundt regnet en mullijard programmeringssprog, hvor det enkeltes proselytter mener at det er det eneste sagliggørende.

Så hvorfor i himlens navn opfinde (endnu) et nyt format der ovenikøbet begynder (eller nærmere går tilbage til) at rode programmering og data sammen?

/Christian

Og så et lille PS:
Det lader til at V2 formattering af programmerings snips først virker efter indlogning - i hvert fald gav Renes indlæg ingen mening før.

  • Stem op 0
  • Stem ned 0
  • Log ind eller opret en konto for at skrive kommentarer
Torben Mogensens billede
Torben Mogensen 24. mar. 2009 - 09.15
 
Re: Crashcourse
Men jeg har stadig lidt (mildt sagt) svært ved at forstå formålet med M

Jeg blev en smule klogere, men der skal forklaring af de enkelte elementer til, før jeg har den fulde forståelse.

XML er et fint og rimeligt nemt format (endda tilnærmelsesvis læsbart, og i hvert fald dechifrerbart) at benytte til dataudveksling.

Jeg synes, at XML er hverken nemt eller særligt læsbart.

Den del af M, der svarer til "rå" XML er sådanset bare ren tekst. Det er først, når man angiver en grammatik, at den gives en struktur. Det modsvarer, at man giver et schema til XML. Så dataformatet i M er på en måde simplere end XML, da der ikke er a priori krav til udseendet. Til gengæld bliver indlæsningen mere kompliceret, da man skal skrive en kontekstfri grammatik og generere en parser i stedet for at bruge en generisk XML parser. Til gengæld behøver man ikke at sende den indlæste tekst gennem en schemavalidator, da syntaksanalysen allerede har verificeret (det meste af) det, som et schema ville.

En anden fordel er menneskelæsbarhed: XML er mildt sagt stygt at læse (og skrive), men med de ekstra friheder, der er i dataformatet i M, kan man skrive noget, der er mere naturligt. Tag Renés musikeksempel. Det ville i XML se ud som noget i stil med den resulterende graf, dog med endtags men uden anførselstegn.

Det lader til at V2 formattering af programmerings snips først virker efter indlogning - i hvert fald gav Renes indlæg ingen mening før.

Jeg havde ingen problemer med at læse det, så problemet er noget andet. Da siden gentegnes efter login, er der nok noget, der var gået galt ved første tegning, men det havde nok kunne klares med en reload.

  • Stem op 0
  • Stem ned 0
  • Log ind eller opret en konto for at skrive kommentarer
Kim Dalsgaard 24. mar. 2009 - 10.06
 
Stockholm

Hej Rene

Du har vel ikke tænkt over om MS-udviklerne måske er vilde med Oslo fordi de lider af et Stockholm Syndrom? ;-)

/Kim

  • Stem op 0
  • Stem ned 0
  • Log ind eller opret en konto for at skrive kommentarer
Mikkel Hippe Brun 24. mar. 2009 - 11.06
 
Re: Afløser?

Hej Rene,

Fængende overskrift - men kom igen ;-)

Selv MS gør vel ikke krav på at have lavet en afløser for XML? I MLanguageSpecification står der:

The "Oslo" Modeling Language ("M") is a language for modeling domains using text.
Modeling using text has some advantages and disadvantages over modeling using other media such as diagrams or clay. A goal of the M language is to exploit these advantages and mitigate the disadvantages.

M ser ud til at være særdeles velegnet til at modellere relationelle data og til at flytte relationelle data. Måske kan M være svaret på repræsentationen af tabulære data, som vi alle dage har været lidt irriterede over at skulle pakke ind i XML.

Sammenligner man XML Schema med M (sproget) ser det ud til at man skal være MEGET mere omhyggelig for ikke at risikere, at acceptere data som næppe er hensigten at acceptere. Vi er lidt tilbage til de gode gamle dage, hvor man skrev sin egen EBNF, men med et langt rigere sprog. Det er vel netop særdeles velegnet til at lave nye DSL'er, men ser ikke ud til at være en erstatning der hvor XML har sine styrker. (Her taler jeg ikke om udveksling af simple tabule data).

Mao. Jeg tror ikke at M er svaret på udveksling af mere komplekse strukturerede forretningsdokumenter (tinglysningsdokumenter, fakturaer, kataloger). En transformation kan naturligvis nedbryde denne type data i noget, som med fordel kan konsumeres med M.

  • Stem op 0
  • Stem ned 0
  • Log ind eller opret en konto for at skrive kommentarer
Kim Dalsgaard 24. mar. 2009 - 14.45
 
Re: Afløser?
Sammenligner man XML Schema med M (sproget) ser det ud til at man skal være MEGET mere omhyggelig for ikke at risikere, at acceptere data som næppe er hensigten at acceptere.

Der er vel ikke nogen der kunne finde på at skrive en service der alene validerer sit input vha. XML Schema???

  • Stem op 0
  • Stem ned 0
  • Log ind eller opret en konto for at skrive kommentarer
Mikkel Hippe Brun 24. mar. 2009 - 16.00
 
Re: Afløser?

Kim,

Der er vel ikke nogen der kunne finde på at skrive en service der alene validerer sit input vha. XML Schema???

Nej da - men man kan tilsyneladende komme længere med M end man kan i XML Schema, men det kræver at man er omhyggelig. Der er et HelloWorld eksempel i MLanguageSpecification som illustrerer hvor det kan gå galt.

  • Stem op 0
  • Stem ned 0
  • Log ind eller opret en konto for at skrive kommentarer
Lars Bjerregaards billede
Lars Bjerregaard 24. mar. 2009 - 16.58
 
Google Protocol Buffers....??

Er jeg den eneste der med det samme synes at dette ligner Google Protocol Buffers? http://code.google.com/apis/protocolbuffers/docs/overview.html

Håber virkeligt ikke at dette bare er endnu et eksemple på Microsoft's "so ein ding muss wir auch haben", men vi skal selvfølgelig lave den selv. ???

  • Stem op 0
  • Stem ned 0
  • Log ind eller opret en konto for at skrive kommentarer
Mikkel Hippe Brun 24. mar. 2009 - 17.37
 
Re: Google Protocol Buffers....??
Er jeg den eneste der med det samme synes at dette ligner Google Protocol Buffers? http://code.google.com/apis/protoco...

Ja det ligner, og opfylder nogle af de samme behov. Men M kan tilsyneladende oversættes til SQL udtryk, så på det område går M et langt skridt videre. Det er ikke en triviel øvelse, hvis jeg husker min databaseteori korrekt.

Håber virkeligt ikke at dette bare er endnu et eksemple på Microsoft's "so ein ding muss wir auch haben", men vi skal selvfølgelig lave den selv. ???

Som med så mange andre projekter, er det formodentligt blot en lille gruppe, der står bag M. Det kan være svært at være informeret om alle relevante projekter, hvis de ikke har vundet større udbredelse eller opmærksomhed. Det vil ikke være den første gang, at 2 hold af udviklere har været gennem den samme øvelse og med samme formål.

  • Stem op 0
  • Stem ned 0
  • Log ind eller opret en konto for at skrive kommentarer
Morten Winther 24. mar. 2009 - 18.17
 
OWL?

Hvor passer OWL ind i dette billede?

  • Stem op 0
  • Stem ned 0
  • Log ind eller opret en konto for at skrive kommentarer
René Løhde 25. mar. 2009 - 17.18
 
Crashcourse, afløser etc

Jeg faldt lige offline en dags tid og skylder nogle kommentarer.

@ Martin,

Jeg ved stadig ikke hvad en "rigtig" standard er, men du har ret i at det er en udfordring.
Lige præcis den sætning som du henviser til:

Microsoft recognize that M's long-term potential would be severely limited if it was a proprietary, Microsoft-only technology. I believe they realize that M needs to end up as a genuinely open standard. They've already made initial steps towards a more open process for M. On the other hand, they don't believe in design by committee. (And having seen some of the abominations that design by committee can produce, I can certainly sympathise with that.) There's a senior Microsoft guy that gets to make the final call on all design decisions. In other words, it's a benevolent dictator model. I'm OK with this in principle (although I like it even better when I'm the benevolent dictator). I think it's worked really well in a number of cases (C# and Python spring to mind). But obviously it all depends on the qualities of the particular benevolent dictator. From my interactions so far, he seems like a really smart guy and he's willing to listen.

viser tydeligt, mange Microsoft folks syn på åbenhed. Dels at man gerne vil være åbne, men at man på den anden side ikke vil falde i uproduktivt komitearbejde.

Iøvrigt skægt at bemærke at James Clark tilsyneladende har det lidt på samme måde, selv om WG arbejde formentlig betaler en stor del af hans løn.

@ Christian,

Tak, nu vil jeg nu nok sige at Lars's eksempel gav mest mening.

Jeg postede et eksempel fordi jeg mente at Lars Be's eksempel ikke viser at M primært er et DSL til DSL'er og det mener jeg at Music-eksemplet viser.
Relationen til SQL bliver først rigtig vigtig når modellen (i M) skal persisteres f.eks i en database. Det er i min mening, men jeg har ikke kigget nok på M pt til at danne mig det fulde billede ... så med alt mulig forbehold fordi M ikke er færdig endnu.

Angående formateringen: Så var der 5 minutter hvor koden stod uden formatering fordi jeg jo ikke havde et code=M!!! Så jeg måtte vælge noget der lignede og du har nok set koden inden jeg fik formatteret.

Angående XML så er jeg enig med Torben i at det ikke nødvendigvis er verdens simpleste teknologi

-Syntax og wellformedness: XML
-Hjælpe specs: Xml Namespace, canonicalization, encryption og signature
-Type definitioner: DTD, Xml Schema Definition og XmlInfoSet eller Post Schema Validation Infoset (PSVI)
-Kovariante datatyper: Relax NG eller Schematron
-Funktionel Programmering: XSLT
-Forespørgelser: XPath og måske XQuery

Dertil kommer så de XML "DSL'er", som kan være en god ide at kende afhængig af arbejdsområde f.eks SOAP, WSDL, deployment og configurations filer i diverse platforme som .Net og Java ... osv eller de branche specifikke SWIFT, XBRL, EFakturaen, ...

Selv om jeg mener det er kompliceret, så dermed ikke sagt at der pt er et alternativ! Men jeg, en nysgerrig IT professionel (og ansat hos Microsoft), er nød til at kigge på M og andre alternativer.

@ Kim,

Suk! :-)
Jeg er sikker på at der på et tidspunkt kommer et kodenavn: Stockholm (og jeg tror ikke at vi behøver tage gidsler!!)

@ Mikkel,

Fængende overskrift - men kom igen ;-)

Jeg er bare den glade bringer af budskabet:

"Does M really have the potential in the long term to be an interesting and useful alternative to XML?". My tentative answer is yes

Okay, så der er et stykke fra "potential" til at erklære XML død, men hey, jeg kender mine virkemidler og jeg fik jo dig til at læse posten :-)

@ Mikkel og Lars Bj

Jeg tror at DSL aspektet af M er det, der gør de to (M og GPB) væsentlig forskellige. Som du er inde på, Mikkel, er M til DSL'er med alt hvad det indebærer.
Hvis I kigger på MGrammar delen så er det en så central del, som jeg ikke umiddelbart kan se i Goggle Protocol Buffers. Jeg opfatter mere GPB, som et xml alternativ og groft set en JSON ortogonal

@ Morten,

Hvis du mener Web ontology language, så er det for mig et DSL. Et DSL som f.eks kan skrives i M!
Jeg har ingen erfaringer med OWL udover at jeg har kigget og kigger på RDF som OWL enabler nu og da.

  • Stem op 0
  • Stem ned 0
  • Log ind eller opret en konto for at skrive kommentarer

Tilføj kommentar

Opret en konto eller log ind for at følge indhold på Version2 - og bliv opdateret via e-mail eller rss

Følg kommentarer
Log ind herunder eller opret en bruger for at skrive kommentarer
Du kan logge ind med din e-mail-adresse
Der er forskel på store og små bogstaver i adgangskoden.
Glemt adgangskode?

Seneste nyt

Netgroup efter kæmpe-nedbrud: Kunderne vidste godt, der ikke var fuld redundans

Udgivet 16. maj 16.24Opdateret 16. maj 16.32

Justitsminister vil ikke afvise NemID som spionværktøj for politiet

Udgivet 16. maj 16.00Opdateret 16. maj 16.00

Microsoft risikerer nyt browser-slagsmål med EU over Windows 8

Udgivet 16. maj 15.21Opdateret 16. maj 15.23

Så splittet er Android: 3.997 forskellige enheder

Udgivet 16. maj 14.44Opdateret 16. maj 14.48

Her er 5 undskyldninger for at droppe Digital Post

Udgivet 16. maj 14.03Opdateret 16. maj 14.31

Flere it-nyheder »

Tilmeld dig Version2's it-nyhedsbrev og vind den nye iPad.

Seneste debat

  1. Sociale medier ved en skillevej

    7 comments.
    Last update 37 minutter 58 sekunder
    Skrevet af Jimmy Frydkær Dürr
  2. Raspberry Pi - den booter ... oftest :-)

    12 comments.
    Last update 59 minutter 45 sekunder
    Skrevet af Lars Tørnes Hansen
  3. Justitsminister vil ikke afvise NemID som spionværktøj for politiet

    15 comments.
    Last update 3 timer 22 minutter
    Skrevet af Peter Jespersen
  4. Her er 5 undskyldninger for at droppe Digital Post

    11 comments.
    Last update 5 timer 57 minutter
    Skrevet af Jacob Larsen
  5. Hardware-mangel i skoleklasserne: 2 pc'er 3 gange om ugen er for lidt

    13 comments.
    Last update 6 timer 5 minutter
    Skrevet af Christian Wang
  6. Netgroup efter kæmpe-nedbrud: Kunderne vidste godt, der ikke var fuld redundans

    18 comments.
    Last update 6 timer 45 minutter
    Skrevet af Peter Larsen
  7. Så splittet er Android: 3.997 forskellige enheder

    15 comments.
    Last update 6 timer 50 minutter
    Skrevet af Marcin Brodzikowski
  8. TDC køber 7.500 kunder fra konkursramte Skyline

    4 comments.
    Last update 9 timer 32 minutter
    Skrevet af Ken Poulsen

Mere debat »

Information

  • Kontakt redaktionen
  • Job- og annoncesalg
  • Teknisk support
  • Om Version2
  • Brugerbetingelser
  • Privatlivspolitik

Aktuelle emner

  • Agil udvikling
  • Android
  • Bruttolønsordning
  • Business Intelligence
  • Cloud computing
  • Download Windows 8
  • HTML5
  • Harddisk-priser
  • IE9
  • Intranet
  • It-sikkerhed
  • Kindle Fire
  • Multimedieskat
  • NemID
  • OS X Mountain Lion
  • Open source CMS
  • Projektledelse
  • Scrum
  • Sharepoint intranet
  • Storage
  • Ubuntu 11.10
  • Virtualisering
  • Windows 8
  • Windows Phone 7
  • iOS 5
  • iPhone 4S

Tjenester

  • Android-app
  • iPhone-app
  • RSS-feeds
Følg @version2dk
Tilmeld dig Version2's it-nyhedsbrev og vind den nye iPad.

Version2 udgives af

  • Mediehuset Ingeniøren A/S work Skelbækgade 4 1717 København V
  • Tlf. work 33265300