<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div><blockquote type="cite" class=""><div dir="ltr" class=""><div class="gmail_extra"><div class="gmail_quote"><div class=""><br class=""><div class=""><span style="font-size:12.8000001907349px" class="">"Even though, because it’s functional, it will be restricted to be used only by people with CS degrees, and not by</span><br style="font-size:12.8000001907349px" class=""><span style="font-size:12.8000001907349px" class="">random Joes and Janes who write web sites. </span></div></div></div></div></div></blockquote><br class=""></div><div><br class=""></div><div>Many people have reported that to use XSLT successfully, you either have to have a CS degree, or you have to be a non-programmer. The people who struggle are those who want it to be like the only programming language they have used in the past. Functional programming comes much more naturally to non-programmers than to those whose minds have been warped by imperative programming.</div><div><br class=""></div><div>Having said that, we do our best in XSLT to hide the technicalities: a non-programmer isn’t going to think of the apply-templates mechanism as a recursive descent with polymorphic function despatch, and they aren’t going to think of xsl:iterate as a fold operation taking a function as its argument.</div><div><br class=""></div><div>Michael Kay</div><div>Saxonica</div></body></html>