XAML jest zasadniczo podzbiorem XML. Mówi się, że jedną z głównych zalet bazowania XAML na XML jest to, że można go sparować z istniejącymi narzędziami. I może, w dużym stopniu, chociaż (atrybuty nietrywialne) wartości atrybutów pozostaną w formie tekstowej i będą wymagały dalszej analizy.
Istnieją dwie główne alternatywy dla opisu GUI w języku pochodnym XML. Jednym z nich jest zrobienie tego, co zrobił WinForms i opisanie tego w prawdziwym kodzie. Jest z tym wiele problemów, choć nie jest to całkowicie pozbawione korzyści ( pytanie, aby porównać XAML z tym podejściem ). Inną ważną alternatywą jest zaprojektowanie całkowicie nowej składni specjalnie dostosowanej do danego zadania. Jest to ogólnie znany jako język specyficzny dla domeny .
Więc, z perspektywy czasu i jako lekcja dla przyszłych pokoleń, czy dobrym pomysłem było oparcie XAML na XML, czy też byłoby lepiej jako niestandardowy język specyficzny dla domeny? Jeśli projektujemy jeszcze lepszą platformę interfejsu użytkownika, czy powinniśmy wybrać XML lub niestandardową DSL?
Ponieważ o wiele łatwiej jest myśleć pozytywnie o status quo, szczególnie takim, które jest bardzo lubiane przez społeczność, podam kilka przykładowych powodów, dla których budowanie na bazie XML może być uważane za błąd.
Oparcie języka na XML wymaga jednej rzeczy: jest o wiele łatwiejsze do parsowania (podstawowy parser jest już dostępny), wymaga znacznie, dużo mniej pracy projektowej, a alternatywne parsery są również znacznie łatwiejsze do pisania dla programistów zewnętrznych.
Ale wynikowy język może być niezadowalający na różne sposoby. To raczej gadatliwe. Jeśli zmienisz rodzaj czegoś, musisz to zmienić w tagu zamykającym. Ma bardzo słabe poparcie dla komentarzy; nie można skomentować atrybutu. Istnieją ograniczenia nałożone na treść atrybutów przez XML. Rozszerzenia znaczników muszą być budowane „na wierzchu” składni XML, a nie głęboko do niej zintegrowane. I, mój ulubiony, jeśli ustawisz coś za pomocą atrybutu, użyjesz zupełnie innej składni niż wtedy, gdy ustawisz dokładnie to samo, co właściwość content.
Mówi się również, że ponieważ każdy zna XML, XAML wymaga mniej nauki. Ściśle mówiąc, jest to prawda, ale nauka składni to niewielki ułamek czasu poświęconego na naukę nowej struktury interfejsu użytkownika; to koncepcje szkieletu sprawiają, że krzywa jest stroma. Poza tym osobliwości języka opartego na XML mogą faktycznie zwiększyć koszyk „wymaga nauki”.
Czy te wady przeważają nad łatwością analizowania? Czy następny fajny framework powinien kontynuować tradycję, czy poświęcić czas na zaprojektowanie niesamowitej DSL, której nie da się przeanalizować za pomocą istniejących narzędzi i której składni wszyscy powinni się nauczyć?
PS Nie wszyscy mylą XAML i WPF , ale niektórzy tak. XAML jest czymś podobnym do XML. WPF to framework z obsługą powiązań, tematów, akceleracji sprzętowej i wielu innych fajnych rzeczy.