Using Scala as a Replacement for XSLT?

さまざまなプログラミング言語XMLを取り扱えるようになりました.例えばScalaVisual BasicではXMLを直接プログラムの中に変数として書けるところまで来てしまいました.ところでこのように便利になってきたプログラミング言語でどこまでXMLの処理が出来て、XSLTとはどう違って、どのような場合にどちらを使うべきなのか?という問に対して、どうもあまり明確な答えがあるとはいえないようです.

例えばScalaなどの関数型言語が注目されていますが、中にはこのような主張があります.この人はScalaを取ってXSLTを捨てると言っています.

XML Processing with Scala

Scala prides itself in being a great host language for specialized
tasks, and I think it succeeds very well with XML processing. In fact,
it is much better than XSLT which was custom-built for the job. I felt a
sense of great relief when I realized that might never again have to
write <xsl:apply-templates select="@* | node()"/>. With a smile, I moved
my XSLT bible to the far end of my bookshelf.

ある人はScalaXSLTを置き換えるのは難しいのではないか?と発言しています.

Using Scala as a Replacement for XSLT?

It's hard to tell for sure without knowing exactly what XML you want to
transform and how, but as things stand XSLT template/match are both more
powerful and more readable than Scala XML pattern matching, which has a
number of issues.

この記事ではMicrosoftVisual Basicチームのブログから、「.NETプラットフォームでXSLTは終焉を迎える?」という大仰なことが書かれています.

The End of XSLT for .NET Programmers?

Microsoft's VB team is starting a series of articles on how to use XML Literals. Many of these articles will demonstrate how to replace XSLT code with VB by making direct comparisons between the two languages.


一般的にお客様がシステムを構築する場合、プラットフォームはまだしも、どのような言語を使うかは必ずしも指定してくるとは限りません.そのような場合、インテグレータの側が最適解を見つけなければなりません.お客様はシステムがXSLTで実現されていようがScalaVisual Basicで実現されていようが関係ないのです.(もちろん納品後のメンテナンスをお客様が自分でやるような場合は言語を指定してくるような制約がうまれるでしょう)

そういう意味では、開発する側がこのような問題についてちゃんとした知見をもつことは重要ではないかと思います.

問題は、

1.XSLTをやっている人はその便利さゆえになかなか普通のプログラミング言語XMLを処理することを考えません.
2.通常のプログラミング言語をやっている人は、XSLTでなければできないような現実の世界の複雑なXMLの変換処理には足をつっこまないし、XSLTのとっつきづらさ故に進んでXSLTを使おうとすることもありません.

ということで、なかなか両者の溝は埋まらないことではないのでしょうか?

なかなか時間がとれないのですが、最近前に紹介したBeginning XMLという本で少し再勉強しました.これについて次回書いてみようと思います.