2009-11-06 10 views
5

Potrzebuję zbudować interfejs użytkownika, aby edytować i tworzyć dokumenty XML, które są zgodne z danym schematem XSD. Chciałbym, w miarę możliwości, wygenerować mój interfejs użytkownika oparty na tym schemacie xsd. Schemat xsd może (i będzie) zmieniać się w czasie, więc rozwiązanie musi być nieco elastyczne.Zestawy narzędzi lub aplikacje, które budują interfejs użytkownika Od Xsd

Interfejs użytkownika musi być interfejsem WWW, a najlepiej zbudowany przy użyciu MVC środowiska ASP.NET.

Podejrzewam, że jest to wysokie zamówienie, a nie takie, które można w pełni rozwiązać za pomocą zestawu narzędzi lub biblioteki, ale chcę wiedzieć, czy ktoś inny podążył tą ścieżką i odniósł sukces (lub nie) i czy wykorzystał konkretne biblioteki, zestawy narzędzi lub podejścia, które pomogły. Zacząłem patrzeć na szablony T4 jako podejście i uważam, że to pozwoli mi na wiele sposobów, ale nie chcę się do tego zobowiązać, jeśli istnieje łatwiejszy sposób podejścia.

+1

Wybrałem odpowiedź neonskiego, ponieważ najdokładniej odwzorowuje to, co podejrzewam, że skończę. Swati - gdybym mógł podzielić łup między wami a neonskim, bym to zrobił. Otrzymałem +1 od Twojej odpowiedzi. Dziękuję wszystkim. –

Odpowiedz

4

Zbudowałem silnik, który robi coś bardzo podobnego do tego, co opisujesz, ale zamiast używać XSD, schemat został zdefiniowany w JSON Schema, a interfejs jest renderowany w przeglądarce przy użyciu szkieletu Ext JS.

Jest to bardzo intensywny JavaScript, ale korzyści były dla nas ogromne, jeśli chodzi o oszczędność czasu podczas programowania i konserwacji.

Nie wiem, czy istnieje narzędzie, które wykonuje dokładnie to, czego potrzebujesz, ale najłatwiej jest znaleźć elastyczne, solidne środowisko GUI (takie jak Ext JS, YUI, Dojo itd.) I odwzorować każdy typ w twoim XSD do "typu widżetu" w strukturze GUI. Będziesz musiał zasadniczo zachować "wstępne konfiguracje" dla każdego z tych typów i stosować je podczas analizy XSD. Na poziomie konceptualnym jest to całkiem proste.

JavaScript okazał się fantastycznym językiem dla takiego zadania ze względu na jego dynamiczność.

+0

Myślę, że masz rację co do mapowania typów XSD na klasy/kod/widgety. –

0

Interesujące może być zabawne przekształcenie schematu XSD w XAML, który może być utworzony jako formularz silverlight na twojej stronie internetowej.

Nie oznacza to, że takie podejście byłoby lepsze niż T4; Nigdy tego nie próbowałem.

+0

Dzięki Zac. Podejrzewam, że szablony T4 zapewnią mi więcej elastyczności w sytuacjach, w których rzeczy nie odwzorowują 1: 1. –

+0

Zobaczmy, jak wielu innych ludzi o imieniu Zac możemy uzyskać, aby odpowiedzieć na to pytanie –

+0

Przejdź do Zac (s)! –

1

Być może zechcesz rzucić okiem na StyleVision, z którym wcześniej pracowałem w tym celu. Wiem, że wygląda to bardzo głośno na zrzutach ekranu, ale myślę, że po prostu starają się, aby wyglądał imponująco. Warto to sprawdzić, moim zdaniem.

2

Czy masz na myśli coś takiego jak this? Jest to podejście, którego użyłem w jednym z moich projektów do konwersji moich xmlów przez xsd na xhtml. To było dość elastyczne dla mojego projektu.

+0

To wygląda bardzo ładnie. –

1

Wypróbuj JAXE. Jest to edytor XML, który przedstawia kontekstowe wybory elementów do wstawienia w danym elemencie na podstawie schematu XML, który mu dajesz. Nie jest to interfejs WWW, ale interfejs Java, który prawdopodobnie zostanie osadzony w aplecie Java, jeśli tak zdecydujesz. (Nie zapewnia tak dużej elastyczności, jak wygląda interfejs, ale daje dużą elastyczność w zakresie wyglądu schematu). Wygląda podobnie do stylu StyleVision firmy Altova, co sugeruje tutaj inna odpowiedź , ale JAXE jest open source.

0

Wykonałem proof-of-concept za pomocą XSD, projektu Microsoft XmlSampleGenerator, aby wygenerować próbny xml z Xsd, który jest następnie używany do budowania GUI i Schematron (aby zdefiniować reguły i walidację w Xsd).Kilka rzeczy do uwaga:

  • Wdrożenie Microsoft jest bardzo specyficzne: Silverlight generacja Czo UI z XML, sprawdzane przed XSD udzielonym przez Schematron (NMatrix Schematron.NET wdrażanie open source) w celu uwzględnienia zasad biznesowych.
  • Prawdopodobnie można wygenerować GUI bezpośrednio z Xsd bez kroku XmlSampleGenerator, zawarłem go w POC, ponieważ uprościł on przetwarzanie xml i wyciął szum podczas generowania interfejsu użytkownika.

ja określenie typy pól w elemencie Xml atrybutów w XSd które gdy przesyłane przewodem poprzez WCF Silverlight mogą być używane do zlokalizowania za pomocą odpowiedniego edytora DataTemplate odnośnika dla danego typu w trybie edycji, np wyświetlaj DatePicker, jeśli typ to System.DateTime itd. Jeśli typ jest bardziej złożony, możesz zdefiniować własne typy, które mapują się do widgetów interfejsu użytkownika w przypadku złożonych scenariuszy edycji interfejsu użytkownika. Mam również maski formatów jako atrybuty w xml do formatowania wyświetlania na różnych typach.

Przyjrzałem się także bezpośredniemu odwzorowaniu z XML na obiekty hierarchiczne, np. Klasa węzła z właściwością "Nazwa", "Wartość" i "Elementy potomne", która po zapakowaniu jako IEnumerable może być następnie powiązana z formantami innych firm, takimi jak Infragistics XamGrid and XamDataTree, z których oba są w pełni edytowalne. Ponownie, bardzo dużo realizacji MS przez wszystkie warstwy.

Nadzieję, że pomaga.

Powiązane problemy