2011-06-24 8 views
6

W moim projekcie Scala mamy wiele starszych XSLT i zastanawiał się, czy powinniśmy przekonwertować XSLT na kod Scala.Używanie Scala jako zamiennika dla XSLT?

Podoba mi się podejście XSLT do szablonów do węzłów i używam go do czysto transformacji DOM, ale nie sądzę, że dobrze nadaje się do przetwarzania danych w dokumencie XML (trudno odczytać i przetestować) - raczej użyj Scala, aby to zrobić.

Biorąc pod uwagę wbudowaną obsługę formatu Scala i XML, pomyślałem, że może to być dobry zamiennik. Czy ktoś pomyślnie przekonwertował skrypty XSLT na Scalę? Czy istnieją jakieś wzorce lub najlepsze praktyki?

Jestem świadomy starego projektu konwersji XSLT na kod źródłowy Scala o nazwie XSLT2src, ale jest on uśpiony przez długi czas i nie obsługuje XSLT2.

Dzięki

+0

Mieliśmy dużo xslt, który wygenerował nie pliki xml. Zastąpienie xslt skalatem + scala było całkiem proste i łatwiejsze do zrozumienia/rozwinięcia. – Fabian

+1

Byłbym skłonny zasugerować, że jeśli potrzebujesz obszernego przetwarzania danych w dokumencie XML, powinieneś rozważyć przeprojektowanie układu twojego XML. Na przykład, jeśli masz ' pierwszy, drugi, trzeci', to powinno być naprawdę ' pierwszy sekund trzeci'. Plik XML jest zasadniczo hierarchiczną bazą danych i obowiązuje zasada "dowolne jedno pole zawiera tylko jeden element danych". – Flynn1179

+1

Dla XSLT/XML, którego używamy, obsługa XML Scala jest nieco słabsza.Potrzebujemy więcej XPath (XML jest zdefiniowany przez branżowy standard, więc nie możemy go zmienić). Można go zhakować, powracając do "normalnej" Scali, gdy \ i \\ nie robią tego, ale z utratą czytelności –

Odpowiedz

6

Trudno powiedzieć na pewno, nie wiedząc dokładnie, co XML chcesz przekształcić i jak, ale w obecnym stanie rzeczy szablon XSLT/mecz są zarówno mocniejsze i bardziej czytelny niż Scala dopasowywania wzorców XML, który ma wiele problemów.

W szczególności:

  • dowolny nietrywialne dopasowanie jest niemożliwe lub bardzo trudne do zrobienia
  • nazw nie są obsługiwane

Więc może być lepiej nazywając Saxon od Scala do wykonaj te transformacje.

Mimo to możesz chcieć spojrzeć na chapter on XML ze Scala programowania.

Wreszcie, obecnie powszechną opinią jest to, że wbudowane wsparcie XML w Scali jest na wiele sposobów. Zobacz np. Anti-XML dla projektu, który ma na celu zbudowanie czegoś lepszego.

1

Scales Xml zapewnia dopasowanie bezpośrednio do przestrzeni nazw i atrybutów, ale zapewnia także bardziej elastyczny wewnętrzny dsl do obsługi XPath (jak również do oceny opartej na ciągach znaków).

Prawdopodobnie najbardziej interesujące dla transformacji jest możliwość złożenia ścieżek, wybrania tego, co chcesz w XPath i przekształcenia wyników "in place". Te zasady transformacji można łączyć.

Nadal można replikować większość podejścia XSLT z bezpośrednim użyciem XPath w Skalach i przekształcaniem/budowaniem drzew tak, jak w Xslt.

Powiązane problemy