SXML
Rozszerzenie nazwy pliku |
.sxml , .scm
|
---|---|
Wpisz kod | TEKST |
Typ formatu | język znaczników |
SXML to alternatywna składnia do zapisywania danych XML (dokładniej XML Infosets ) jako S-expressions , aby ułatwić pracę z danymi XML w Lisp i Scheme . Powiązany zestaw narzędzi [ który? ] implementuje XPath , SAX i XSLT dla SXML w Scheme i są dostępne w implementacji GNU Guile dla tego języka.
Poniżej przedstawiono korespondencję tekstową między SXML i XML dla przykładowego fragmentu kodu XML:
XML | SXML |
---|---|
<tag attr1= "value1" attr2= "value2" > <zagnieżdżony> Węzeł tekstowy </nested> <pusty/> </tag>
|
( tag ( @ ( attr1 "value1" ) ( attr2 "value2" )) ( zagnieżdżony "węzeł tekstowy" ) ( pusty ))
|
W porównaniu z innymi alternatywnymi reprezentacjami dla XML i powiązanych z nim języków, SXML ma tę zaletę, że może być bezpośrednio analizowany przez istniejące implementacje Scheme. Powiązane narzędzia i dokumentacja były pod wieloma względami chwalone przez Davida Mertza w jego IBM developerWorks , choć skrytykował również wstępny charakter jego dokumentacji i systemu.
Przykład
Weź następującą prostą stronę XHTML :
< html xmlns = "http://www.w3.org/1999/xhtml" xml:lang = "en" lang = "en" > < head > < title > Przykładowa strona </ title > </ head > < body > < h1 id = "pozdrowienia" > Cześć! </ h1 >
< p > To tylko „ >> przykład << ” pokazujący XHTML & SXML. </ p > </ treść > </ html >
Po przetłumaczeniu na SXML ta sama strona wygląda teraz tak:
( *TOP* ( @ ( *NAMESPACES* ( x "http://www.w3.org/1999/xhtml" ))) ( x:html ( @ ( xml:lang "en" ) ( lang "en" ) ) ( x:head ( x:title "Przykładowa strona" )) ( x:body ( x:h1 ( @ ( id "pozdrowienia" )) "Cześć, tam"
) ( x:p "To jest tylko \">>przykład<<\" pokazujący XHTML i SXML." ))))
Para znaczników każdego elementu jest zastępowana zestawem nawiasów. Nazwa znacznika nie jest powtarzana na końcu, jest to po prostu pierwszy symbol na liście. Następuje zawartość elementu, która jest albo samymi elementami, albo ciągami znaków. W przypadku atrybutów XML nie jest wymagana żadna specjalna składnia. W SXML są one po prostu reprezentowane jako kolejny węzeł, który ma specjalną nazwę @. Nie może to spowodować konfliktu nazwy z rzeczywistym znacznikiem „@”, ponieważ znak @ nie jest dozwolony jako nazwa znacznika w XML. Jest to powszechny wzorzec w SXML: za każdym razem, gdy znacznik jest używany do wskazania specjalnego statusu lub czegoś, co nie jest możliwe w XML, używana jest nazwa, która nie stanowi prawidłowego identyfikatora XML.
W ciągach znaków SXML istnieje jeden znak, który musi być poprzedzony zmianą znaczenia, „ ogranicznik ciągu znaków (z \”). XML wymaga ucieczki przed dwoma, & i < (odpowiednio z & i <).