As many of you may know my buddy Russ Miles is a HUGE MacAttacker. When not writing code, books, or love poems to his fiance Kim I believe he spents his time writing similar poems to his Mac. Quite frankly if I was Kim I wouldnt put up with that kind of abuse but apparently shes a MacAttacker too so what can I say... :)
Elliotte Rusty Harold in a post on Monday showcased the new XMLLib osax processor for OS 10.2.8+ which, when you visit the site showcases:
Overview
The XMLLib osax is a Scripting Addition, i.e. a plug-in for AppleScript. XMLLib osax implements the XML DOM in AppleScript. Features offered by the XMLLib osax include:
* opening, validating, closing, saving a XML document
* browsing an XML tree - parents, children, siblings
* searching an XML tree - sending a XPATH request
* editing, creating, removing an XML node
* applying a XSLT stylesheet
* handling XLinksWhenever this makes sense XMLLib carries references rather than explicit data, so your script will be able to process arbitrarily large XML documents virtually as fast as if you had been writing a C program - yet, in a more comfortable environment.
So, in other words you can now process client-side XSLT on the Mac via Applescript!!!! Here's what Russ had to say on the matter:
"In fact I have been running into my own XML/XSLT woes recently as there is no XSLT processing in the current. No big worries for me normally but since Safari is built on Apple's Webkit technology and so that can't seem to take advantage of native XSLT javascripting which is a real pain. So, to overcome this I am wrapping a native code chunk which then links into Saxon - but oh my goodness is that a messy state. Apple intends to have javascript XSLT processing 'at some point' but until it happens it's a bit nasty. Thought you might be interested, if only as an annoying shortcoming in XSLT processing. I tried naively to use Sarissa within Safari to achieve client-side XSLT processing but, of course, if there's NO support for XSLT in Safari that's a completely different thing from providing a common API between Mozilla/IE ... would be terrific if Sarissa or something similar could bridge the gap for a javascript enabled true XSLT/DOM implementation - but maybe that is unrealistic within the constraints of the language and I should just wait for Safari to catch up."
Hey Emmanuil! Check this out: "..of course, if there's NO support for XSLT in Safari that's a completely different thing from providing a common API between Mozilla/IE ... would be terrific if Sarissa or something similar could bridge the gap for a javascript enabled true XSLT/DOM implementation - but maybe that is unrealistic within the constraints of the language and I should just wait for Safari to catch up."
Whatcha think? Can it be done? I believe in you my friend!!! :D Seriously, if I can help please let me know as Russ not-so-pointed brings out if it ain't Safari it ain't Mac, and theres no way its geting used on any regular basis, bottom line.
Hey, I just checked and you can pre-order Russ's new AspectJ Cookbook from Amazon now! Congratulations Russ!!!
Posted by m.david at 09:32 AM | Comments (0) | TrackBack
NOTE: I started to write this post when it was highlighted to me that Mike Champion had pulled from an earlier comment on XML-DEV how cool it be do have a coding competition, with some very specific names paired up as possible crowd pleasers.
I'm ALL for it!
But,
You do realize that you are asking for a "list" of reasons why XSLT 2.0 ROCKS! over 1.0 from a group of functionally minded religous fanatics who apparently happen to be masochistically natured as well! ;)) You think were gonna stop when we've beaten any and all existing .NET based technologies, Java, base at the transformations game, using XSLT 1.0? Ummm, did I mention the massachists part already?
Merry Christmas to you all!
Looking forward all in the new year! :D
More soon...
Posted by m.david at 03:59 PM | Comments (0) | TrackBack
Eyes, wallets wide open to XML traffic woes in 2005
Want to send software sales through the roof?
Step 1: Create fear by showcasing the absolute worst case scenario.
Step 2: Write a software application or build a piece of hardware that fixes that problem before it ever becomes one.
[DISCLAIMER: Please, please, please... don't take the comments made in this post to mean anything beyond having a little fun. I am in no way trying to suggest that there is not a very real problem with networks overloaded because of XML messages. This just seemed like a fun way to showcase that not all problems are as bad as they may sound or that not all solutions are as good as they might sound.]
Step 3: If it never becomes a real problem focus your customer towards the fact that this is because they were the smart ones: they licensed and subsequently installed your product and furthermore through your excellent service things were kept running at a brisk pace even when things were "getting close" to their suggested capacity. "It's a trooper that beautiful piece of shiny and wonderful-whateveryoucallit thats now at the center of our network." will be said and congratulations made to whoever it was that made the inherently tough but without a doubt "right call" to get this product installed before the "dooms-day-from-hell" finally came into reality.
Whoever that person is in the company, take them out to dinner and give them "your" season tickets to whatever basketball team your town happens to label as their own, suggesting further this persons heroic status is deserved of rewards much greater than this for it is through "his vision" that "his company" is now "enabled" [don't say what you mean by enabled, let him decide what that means because a "hero" is always going to think of much better things that have been "enabled" because of "his vision" and bring them out in random conversation at the water cooler which is ultimately more affective for your future dealings when its coming from his mouth instead of yours] and we all know how important being "enabled" truly is! Further stating "besides, with how "busy" things have become with practically every other company in the world knocking down our door after they heard that you guys have been using this for the last 6 months without a hitch I now hardly have time to eat much less attend extra-curricular activitees like NBA games 3 times a week." The final rivet in the "armor" that is now protecting your software from any other competitors attempted infiltration will come when you suggest "you see, if I had your vision and brain I could probably afford more outside activitees such as attending these games but there's only half-a-handful of individuals in the world with that level of intelligence & capability and if [updated-insert: ooops] you I were one of them [updated-insert: again, ooops] you I most certainly wouldn't be running the sales department at my company, I would OWN the company and be paying someone else to be doing all the hard work while I spent my time as a philanthropist, giving back all that I had been given and more and seeking further ways in which the blessing of this wealth could benefit the less fortunate".
NOTE: If at any point during this dinner, and more specifically this speach, this person becomes so moved that you think you may see a tear or two puddling in the corner of his eyes, you may want to consider politics as this is where talent like that usually ends up.
Step 3-A: If it does become a problem and somehow your software or hardware is part of that problem release a patch (any old patch will do, you're simply buying time while you track down the real problem and find a way to fix it.) That'll buy you two weeks while they install and test this new "patch" on all of their systems. Spend this time finding the real problem (at that point feel free to give me a call: My rates are high for cases like this but what other choice do you have, right? Besides you obviously didn't spend the money up front to hire anybody who knew what they were doing in the first place so its time now to pay your dues my friend. Sooner or later you knew this day would come so just bite-the-bullet and cough up the dough ;) :D ) and then release the final result of such expenditures as a .x upgrade (another patch infers the first one didn't work where as a a .x upgrade suggests that you are trying all you can to simply make the product product better, adding more features and performance enhancements at no additional cost because all .x upgrades are free, further showcasing your dedication to providing the finest products, with the best support, and a constant effort at giving your customers all they need and more.... thats just the kind of company you are.)
Step 4: While you are still being deemed the hero of both scenarios hire someone who actually knows how to fix the real problem (by showcasing there never was one in the first place and that it was just bad software development and implementation practice that caused all the problems that are now being dealt with.
That will be $22G's please ;)).
Of course this will open the door for version 2.0 of your software or hardware, or better known as "The way things should have been done before you bought version 1.0 of this product in the first place." But by version 2.0 your customer will feel somewhat locked-in and now that it seems things are running SO-MUCH-BETTER than they ever have (duh!) this is obviously because they made the right choice in the first place by choosing to license and install your software, just like you suggested. Once again your'e a hero and can now begin to spin off new versions of products no one ever wanted or needed in the first place but because you obviously know best they're going to buy them anyway so what the hell, live it up! ;)
Step 5: I smell a version 3.0 sometime in the not-so-distant-future and it will have this, and that, and all this other cool stuff as well -- or as the rest of us like to call it "vapor lock".
Have a fun year "xoptimizing" your networks! :D
Cheers!
Posted by m.david at 11:55 PM | Comments (0) | TrackBack
Has the time come to finally give rest to the XQvsXT debate? I might find myself *GRASPING* for filler content while I figure out what else to fill its empty void with but the fact that even after watching and in many ways participating in this debate via comments and post I learned more from this weeks XML-DEV column than I learned all week in actually reading the posts.
Thanks Edd!
Posted by m.david at 11:11 PM | TrackBack
XML.com: Mapping and Markup, Part 2
Guess I missed part 1 somewhere along the way but part 2 is most definitely interesting and as such now requires further insight into just what it was John covered in the first-go-round.
Posted by m.david at 10:47 PM | Comments (0) | TrackBack
To all of you who don't subscribe or pay attention to XML-DEV here is a copy of my very first post to that list in regards to the up and coming xameleon project.
FYI... the xameleon project I started a while back and have since
held back the release while I completely rewrite the foundation of
this library using FXSL and XSLT 2.0 allows you to use one base
foundation (right now its XHTML elements that each have a possible
child element called "style" with subsequent possible children for
each CSS 2.1 property with children and/or attributes to further hold
the names and values of each property for this particular element --
this may be changing to SVG as its base as it is seemingly more
natural to map an SVG-like syntax to XAML and XUL (XUL's proving to be
a real pain in the butt but itll get there eventually) than it is a
XHTML and CSS-based syntax to SVG, XAML, and XUL)
Anyway the point of this post is to point out the fact that there is
definitely recognition in the industry to the fact that the ever
expanding plethora of XML-based declarative languages that abound, at
least conceptually, in our development world these days is probably
doing more damage than it is good, further separating platforms that
actually are extensions to the same base platform (e.g. XUL in Mozilla
and XAML via either Xamlon or Avalon in 90% of the cases run on top of
the same GDI subsystem (or variation thereof) and as such provide just
a slightly different enough syntax to really piss you off and force
you into writing two or three or four versions of basically the same
code base just to appease the various "users" who prefer this or that
or whatever else (I really believe that a good dose of Lithium
"silently" integrated into our water systems would do a world of good
in curing the bi-polar disorder that is the declarative XML GUI
definition language hell we have created for ourselves to now deal
with --
The supposed DLL Hell that was the 90's doesn't even hold a small blue
birthday candle to the dXML Hell we are about to experience in this
industry in this now almost 5 year old new millenium of ours.
Unless...
Again, the point of the "xameleon" project is to try and retain some
sort of sanity by allowing you to build on one dXML language (d
stands for Declarative if your'e wondering what I am refering to with
the little "d") -- most likely SVG eventually for the reasons stated
above, and then use the xameleon engine (powered by Saxon.NET which,
by the way, I'm about 2-3 hours away from either releasing the 8.2
beta 1 build or putting it to bed for the night and picking it up
again tomorrow afternoon to then release tomorrow night instead --
problems with jaxp compatibility stuff is the current and only slow
down at the moment) to output the GENERAL GUI framework for each
desired dXML output. I emphasize general as there are definitely
areas in which are to far apart to do an adequate mapping job and as
such require a bit of hand massaging after the fact... still, a few
hours of massaging code is a lot better than a few weeks of developing
a completely new code base so I think most people will be cool with
it. Theres bound to be a winer here and there but to be honest I
could give a -- wait, better not say that here... ;) I'm sure you get
my point none-the-less ;)
Some screen shots of the older C# based development UI can be seen
here > http://www.x2x2x.org/x2x2x/images/xameleonGUIOne.gif < and here
> http://www.x2x2x.org/x2x2x/images/xameleonGUITwo.gif <. I say older
as I have since switched to a browser based UI that uses client-side
XSLT 1.0-based code and javascript coupled with various ASP.NET
controls and server-side based XSLT 2.0 based code coupled with
Serverside ASP.NET components and .NET based webservices to make all
the magic happen as it ultimately seemed to be the easiest way to
ensure that you are always using the latest and greatest code base if
I build it in the browser-based client/server webservices architecture
that is made embarasingly easy (embarassing by the fact that my four
year old can now write production ready code... if things continue
going this direction pretty soon code is going to be writing us...
still, it is nice being able to build a fairly significant application
in 2 weeks when it would have taken 6 months using a classic Win32
client/server architecture a few years back)
So, those interested in following this project can add this link to
their favorites folder > http://www.xameleon.org < and check
perioducally for updates or just visit XSLTBlog.com and pick your
favorite XML feed which will be updated when I make more headway on
this project in the next few weeks... Don't panic if you go there
(xameleon.org) and see just a basic UI as thats all I had time to
develop when I first launched this project a few months back... it'll
change soon and it will be at the xameleon.org address so its all
good..
Cheers!
Posted by m.david at 07:31 PM | Comments (0) | TrackBack
A new entry with this same title will be created and used each day to add an ongoing list of cool code samples I stumble upon throughout my day of development plunder, err, pleasure. Given the title they will tend to be XML-based samples but some may be more specific to Java or C#, or Python, Ruby, and Tcl and Tk as I am now learning a bit of, etc... with only light mention of XML anywhere in the post, if at all. So, in other words, a lot of these posts might be outside the box-model a but ;) But to know that there are actually other boxes out there and not just boxes but baskets, and globes, and pyramids a plenty to fulfill with power and dignity the role each technology was designed to do, and do well.
The first one for today: (and then I'm going back to bed... just woke up to get drink of water and noticed this post from Kurt and thought it worthy of a quick showcase.)
# Building a XUL Date Picker with XBL by Kurt Cagle
Using XML as a language for defining classes (or more often "behaviors") is hardly new. The behavior components within Internet Explorer, which first utilized many of the same design patterns now used by XBL, working in much the same fashion - by assigning a CSS behavior property to an external "class" definition written in some form of markup you could turn an HTML object into a much more sophisticated object.
In looking at this it reminds me I need to update the CSS on that site to make the code sample lettering white on dark instead of slightly dark on slightly darker, never a good thing. I'll do that now and then see you all later this morning/afternoon/evening, whatever time it may be for you here in about 6-7 hours.
Cheers!
Posted by m.david at 03:21 AM | Comments (0) | TrackBack
In a recent comment Dimitre Novatchev writes:
snip...
In this post he provides a link to the article "The Functional Programming Language XSLT - A proof through examples".
While this was historically the first article on FXSL (published Nov. 2001), it is not the most friendly introductory material on the subject. It is also not a complete treatment -- a coverage of such important topics as *currying*, *partial application* and *dynamic creation of new functions* is provided in the second paper at the FXSL page -- "Dynamic Functions using FXSL: Composition, Partial Applications and Lambda Expressions"
For best introduction into this topic I'd recommend my article and presentation at the Extreme Markup Languages 2003 conference, a pdf version of which is available at:
http://www.idealliance.org/papers/extreme03/xslfo-pdf/2003/Novatchev01/EML2003Novatchev01.pdf
There are also the presentation PowerPoint slides, but must be viewed with Office 2000 Powerpoint.
snip...
BTW... I dont mean to be ungrateful to Dimitre's compliments but the heart of the content and ultimatelly the most important part of what needs to be showcased is the above content and links. None-the-less Dimitre, thank you for your gratitude. The attention to FXSL is so very well deserved and so very important to the ongoing development of the XSLT development community. As such I will continue to find appropriate ways to highlight areas in which are important in understanding how to use FXSL in our code-base and subsequently have better and faster stylesheets because of this, built on a foundation that I absolutely believe should be standardized officially but none-the-less inherently through the work we all do with XSLT. I am currently in process of migrating my entire XSLT code base to FXSL and I will begin to showcase all code samples on this site with FXSL as its base. With as much code as I have to update I hope this can attest to just how important I believe this process to be.
More on this soon! :D
Posted by m.david at 09:47 PM | Comments (0) | TrackBack
In response to Bob DuCharme's latest post here is one method of one-to-many linking that I started using in a clients project and plan to start implementing on this site as well as use it as a major feature in a reference project soon to be released.
The idea is to simply use a XML definition file that has a particular phrase, word, object, person, or web site reference to search for in an antry and subsequently add a pop-up list of possible links associated with this match. For example, to showcase all of the...
[NOTE: In going through this there are some obvious issues that come when taking code from a system built in 100% client-side XSLT and another that is not. e.g. difficulty in creating dynamic CSS entries using movable type without adding in a bunch of additional code. For this example I'll hold off and let the concept speak for itself and showcase the correct usage at a later date when I launch the project this code was built for and subsequently torn out of for this post sample]
x2x2x.org project sites in my entry I would simply put <x2x2x/> and, when processed by the XSLT processor before being posted would match the element tags name to the definition file and then list all the links in a pop-up activated when clicking what seems to be just a simple link. So by clicking [update: this is working in IE but there seems to be a problem with IE in which I am fixin now][update:fixed]
Shows all of the available x2x2x.org links. And by adding the <last-5-posts/> to the xml definition file for that page will insert this link:
... in which when clicked will showcase the last 5 posts on this blog. Of course given that the XML and XSL are still located on the server as the files on the server change the links on the site change keeping the client up to date with the latest changes even though he or she may not have visited the site any time in recent history.
You can view source to get the code for this if interested otherwise I will do a more thourough entry tomorrow with a detail tutorial on how to implement this functionality on your site.
Cheers!
Posted by m.david at 08:15 PM | Comments (0) | TrackBack
It seems I need to learn how to recognize the difference between the following two sequence of letters:
Rys
Champion
I think its obvious how easily the mistake of mixing one with the other could be made if one is not careful. Apparently, I was not very careful. To my defense (and inherently pathetic attempt at an excuse) you Microsoft people all look and sound the same to me ;) :D
All kidding aside my apologies for mixing up the fact that it was actually Michael Rys who made the comments in regards to the declarative nature of XSLT and XQuery that were subsequently deemed of "Excellent" quality [inserted-comment: In reading this again I realize I made it seem like I was doubting that it might be but later discovered it was. If this is the impression you got I assure you this is not what I intended to imply as obviously Michael Rys is one the the elite experts in this area of software development. I guess what I was meaning to imply was that in the mountains of content compiled on XML-DEV each day this was a gem and needed to be highlighted] and as such posted to become the "Official Answer of <XSLT:Blog />" for questions in regards to whether XSLT and XQuery are declarative languages and why.
Thanks to Mike Champion for helping me clear this up by pointing out this obvious error. Again, my apologies.
Oh, BTW... "MC", while stiff competition is heading your way, and from your own corporate bloodline none-the-less, I still think your going to take todays "HotMPoC" award so if you were at all worried, you can now be relieved in knowing that your award, for now, is safe. :D
Posted by m.david at 06:49 PM | Comments (0) | TrackBack
To keep you from rolling your eyes or believing that in some way the poster of this comment to xml-dev is the only persons opinion I deem as important in this world I am simply going to use the initials MC as a suggestion to who posted this reply to the question:
In a recent post to xml-dev Michael Rys answers the following question:
"...Except that, XSLT is a functional programming language, and from what I can see of XQuery, it has a lot of looping. SQL is a declaration of, well not my lexicon, a desired result set in the terms of relational calculus.Are XSLT and XQuery declarative?"
In which the poster "MC" Michael Rys stated:
NOTE: Before you click that link... no, don't do it... STOP!!!! Hmmm... well, for those of you still with us please visit this paper by Dimitre Novatchev to further your understanding as to whether or not XSLT can even really be considered a true functional-language... Ok, you're back... now aren't you inherently glad that you followed my first advice and chose instead to enrich your understanding of functional-programming and XSLT? Feel free to click ahead at anytime you feel comfortable in doing so (I'm like a human valium when I wanna be, huh?! ;):D)
"Both XSLT and XQuery are declarative. The FLWOR in XQuery is not a loop but a declarative iterator like the SELECT/FROM/WHERE in SQL or the apply in CM LISP.
The main advantages of declarative languages are that you need to write less code for achieving a given function point, you operate on a large set of data at once, and that an execution engine can apply rewrites (if they are based on an algebra) and other optimizations to execute it more efficiently.
Procedural languages are much harder to optimize due to their often lower expressivness at the operator level, their one-item at a time processing model, and their tendency to allow and sometimes encourage programming by side-effect.
Furthermore, declarative languages are less brittle towards changes in the physical design than APIs are. For example, an implementation that uses a push-parser and wants to move to a pull-based model has to completely change at the programming level, whereas a program using a declarative language does not notice any changes below.
XMLReader/TRAX/SAX etc are APIs that mostly promote a one item at a time processing model and are embedded in mainly procedural languages. XQuery/XSLT and at least the XPath parts of the different APIs are declarative.
Is there a place for both? Yes. Declarative languages often come with extensive support frameworks for the optimizers which may be overkill in a situation where small, hardcoded logic is needed. And you need them to build the declarative processing engines :-). But in general I have to agree with Dana that good XSLT and XQuery engines (or other higher abstractions) OVER TIME should offer enough benefit of scale, performance and ease of use, that the majority of implementers do not need to revert to the lower-level APIs.
Note that this does not preclude that such engines will need optimization hints (e.g., to achieve 10% better streaming performance), physical design decisions etc.; or that one context decides to implement a predictable subset (see Arpan's posting).
Best regards
Michael
PS: One of the big short-comings of hierarchical databases was that they basically offered only navigational APIs and were brittle towards physical optimizations and schema changes. XML is often compared to hierarchical databases (in the negative sense), but these people don't realize that declarative languages such as XQuery or XSLT and the ability to choose different physical designs and optimizations(including streams) without impacting the logical level make it much better than hierarchical databases and much closer to so-called non-first-normal-form (or NF2) models..."
NOTE: To give proper credit the above came from Michael Champion Rys, today's official <XSLT:Blog /> Horder of the Most Posts or Comments award. Don't fret, maybe tomorrow you will be the victor in receiving this newly created but coveted none-the-less "HotMPoC" (correctly pronounced hottempock) award. I think I need to make some sort of certificate or something...
Posted by m.david at 04:53 PM | Comments (2) | TrackBack
While I definitely plan to comment on Mike's comments a little later on I believe Mike deserves the respect of letting his points sink in before I fill your head with my opinions as to what the future holds for XSLT specifically and XML-based software development in general.
His comments from my last post can be found in the... Why do I suddenly feel like Austin Powers in Las Vegas? Anyway...
I think I have mentioned before that I am more than happy to host any and all conversations via comments and trackbacks specific to anything interesting which would include, for example, the fact that the Sonics ROCK and would exclude, for example, anything to do with the New York Yankees. There are a few other topics I would probably get annoyed by but I won't worry about mentioning what they are until they suddenly appear at which point I will delete them, claim my hard drive crashed and although I was able to save all of the content and almost all of the comments there were a few unfortunate casualties that just couldn't be salvaged from the wreckage, with a subsequent apology to you if they were yours.
Beyond any unfortunate hard drive failures however can I make a suggestion? If there is anything you have to comment that is directed to Mike specifically as opposed to his comments in general my guess is that you will find a better response time posting to his blog instead of mine as, shocking as it may be, I haven't added Mike to the ping mechanism invoked when a comment is left on <XSLT:Blog /> In fact I haven't added myself to any such mechanism either as I tend to be around enough to notice when comments are left and don't need any more email telling me something I am already fully aware of. I will keep an eye on his blog and if anything interesting arises I will point to it otherwise I will just leave things be for now.
Thanks for the comments Mike!
Posted by m.david at 09:25 AM | Comments (0) | TrackBack
Think.
This is the paragraph:
"I think the way forward is to focus on what it does that nothing else does well -- querying XML stores -- and not promoting it as an alternative to existing, more mature technologies."
Do you have it memorized? If not, here are the key phrases:
- Focus on what it does that nothing else does well -- querying XML stores.
- ...not promoting it as an alternative to existing, more mature technologies
Do you have it memorized now? How about changing the format to questions:
- Does this technology do something that another technology can not?
- What about this technology makes it better than pre-existing technologies that are already in use, mature, and understood by enough developers to make it useful in the real-world?
Answers:
- Ummm.... arguably yes. But then again... I guess it really depends on how dedicated you are to solving the problems with existing technologies or the next version of existing XML transformation technologies. Can the same result be returned by using another more mainstream, and as such proven language such as XSLT? And what about XSLT could we make better so that it could more easily solve the problems we are trying to solve with XQuery? Could libraries like FXSL and extensions like EXSLT do just as much with existing processors as we are trying to accomplish with XQuery (and the same goes for XSLT for that matter)?
So then what about XSLT 2.0? Could we use an XSLT 2.0 processor like Saxon, build a dynamic XML query language to our specific liking, compile it, using the subsequent compilation to query our XML data stores, and further use the language we created as our personal base language for querying the same XML data stores? Could XSL Scripting languages such as XSLScript, NiceXSL, PXSL, and XMLStarlet
be representative of such solutions, ultimately giving us the easier to implement and understand syntax we are looking for and yet not have to invest one single dollar in "new" technologies that ultimatelly give us nothing more that what we already have minus a few little nifty gadgets to play with here and there? Can we live without these little gadgets, finding ways to solve them with existing languages and processors? And wait, while were thinking about it, can't we use the same underlying XML processor to implement both XSLT 2.0 and XQuery? And if yes, why don't we just finalize the spec, build the damn processor, and work out the details of the language dynamically at a later date and in a syntax that we inherently like better just because we do?
Damn it I think we might be on to something here!
Question:
WHAT DO WE ULTIMATELLY GET WITH XQUERY THAT WE CAN NOT DYNAMICALLY CREATE AS WE NEED IT USING THE SAME PROCESSOR AS XSLT 2.0 IS BUILT ON?
OR
WHAT CAN WE SOLVE RIGHT HERE AND NOW WITH EASE USING SOME OTHER TECHNOLOGY THAT WE ALREADY HAVE OR WITH A TECHNOLOGY THAT BUILDS UPON AN EXISTING BASE OF BOTH PROCESSORS AND DEVELOPER UNDERSTANDING?
By the way, the above quote is from Mike Champion, somebody who kind of knows what hes talking about.
But wait, before you XSLT champions walk off in belief some battle has been won, you'd best think again. These are the questions that companies like Microsoft, and Sun, and Apple, and IBM, and Oracle, and BEA, and Google, and shutup M. we get your point, are having to ask themselves right this very moment. Why should we invest millions of dollars into these technologies when they don't give our customers anything more than what they have already and are simply not willing to accept this as such? Can we put these same millions into other technologies that further advance computing in the direction we believe it should be headed and ultimatelly give our customer base exactly what they are telling us they want, even though they can't quite find the words necessary to tell us in easy to understand terms (kind of like XQuery does? err, wait.. ummm... hmmmm... well... uhh...)? And ultimately...
Can't we just start over at the beginning, using customer experience instead of bureaucratic opinion as the basis for building the standards in which the future of the WorldWideWhatTheHellWillTheyThinkOfNext will be based?
I sure as hell hope so 'cause it seems that what we've got ourselves here is a mess... Anybody feel like writing some code and solving some real-world problems instead? Just a thought....
Oh, I got an idea... lets create an easy way to query XML stores using a familiar SQL-like syntax so that we can then further use that data within our applications to do cool stuff with. We could call it XQuery! And then we could... err, maybe we could just stop there and get on with it and stop trying to be the bigger and better alternative to everything and just kind of do what SQL ultimately does, passing the data on to some other process, written quite possibly in some other language it knows nothing about nor does it care as once its job is done it can kick back and sip on Pina Coladas until the next request to access or do something to some data arrives from some other process written in some other language by some other developer who simply wants to verify that the same 16 digits offered on a web form match that in which is stored on file, allowing it to continue accumulating cash flow like a good little server process is supposed to do.
I like the idea. It has merit.
Moving on...
---
In further developments here at <XSLT:Blog />, I have another Mike Champion quote to use for the XSLT Quote of the Day (that Mike Champion, he's always giving me such great content to document and write about... Thanks Mike! ;)... Sorry XQuery, but the giving holidays are now officially over... now all thats left is the celebration of the old year passing and the new year beginning.... kind of like.... no, I better leave it alone for now ;)
Have a happy day! :D
Posted by m.david at 03:35 AM | Comments (1) | TrackBack
For those interested I’ve posted the quick and dirty XSLT along with the XML source in which I used to create the new “Legends of the XSLT Community” listing with proper sorting and seperation of individuals and entitities. There are some obvious problems with this code. First, by using the “quick and dirty” sort method of:
<xsl:sort select=”substring-after(., ’ ‘)”/>
“G. Ken Holman” is sorted via “Ken” instead of “Holman” and “George Christian Bina” by Christian instead of “Bina”. I doubt this is going to cause any major rumblings in the community but obviously this is a problem if you were to use this code to do your own sorting.
I also prefer to separate out the formatting, in this case HTML elements and CSS classes, in a separate XML file so that it’s easier to use the same code for other output formats using a “output-definition” file to define what the output elements should be. But as I mentioned this was quick and dirty code to get the new “Legends of the XSLT Community” properly listed and sorted. I’ll update the code-base once I have a chance later this afternoon.
Until then, enjoy!
The XSLT:
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="/members">
<div class="right-side-head-title">
<h2>Legends of the XSLT Community</h2>
</div>
<div class="right-side-head-sub-title">Individuals</div>
<div class="legends-container">
<xsl:apply-templates select="member[@type = 'individual']">
<xsl:sort select="substring-after(., ' ')"/>
</xsl:apply-templates>
</div>
<div class="right-side-head-sub-title">Entitities</div>
<div class="legends-container">
<xsl:apply-templates select="member[@type = 'entity']">
<xsl:sort select="substring-after(., ' ')"/>
</xsl:apply-templates>
</div>
</xsl:template>
<xsl:template match="member">
<div class="legends">
<a href="{@href}">
<xsl:value-of select="."/>
</a>
</div>
</xsl:template>
</xsl:stylesheet>
The XML:
<?xml version="1.0" encoding="utf-8"?>
<members>
<member type="individual" href="http://www.jclark.com/">James Clark</member>
<member type="individual" href="http://www.adambosworth.net/">Adam Bosworth</member>
<member type="entity" href="http://www.microsoft.com/">Microsoft Corporation</member>
<member type="individual" href="http://www.Saxonica.com">Michael Kay</member>
<member type="entity" href="http://www.Saxonica.com">Saxonica, Ltd.</member>
<member type="individual" href="http://www.JeniTennison.com">Jeni Tennison</member>
<member type="individual" href="http://www.dpawson.co.uk">Dave Pawson</member>
<member type="individual" href="http://www.dcarlisle.demon.co.uk/david/">David Carlisle</member>
<member type="individual" href="http://www.xmlshoestring.com">Wendell Piez</member>
<member type="individual" href="http://norman.walsh.name">Norman Walsh</member>
<member type="individual" href="http://fxsl.sourceforge.net/">Dimitre Novatchev</member>
<member type="individual" href="http://www.cranesoftwrights.com/">G. Ken Holman</member>
<member type="individual" href="http://blog.tkachenko.com/">Oleg Tkachenko</member>
<member type="individual" href="http://www.snee.com/bob/">Bob DuCharme</member>
<member type="individual" href="http://uche.ogbuji.net/uche.ogbuji.net/">Uche Ogbuji</member>
<member type="individual" href="http://skew.org/">Mike Brown</member>
<member type="entity" href="http://www.exslt.org/">EXSLT.org</member>
<member type="entity" href="http://www.fourthought.com/">Fourthought</member>
<member type="entity" href="http://4suite.org/index.xhtml">4suite.org</member>
<member type="entity" href="http://topxml.com/">TopXML.com</member>
<member type="individual" href="">Johannes Döbler</member>
<member type="individual" href="http://sync.ro/">George Christian Bina</member>
<member type="individual" href="">Salvatore Mangano</member>
<member type="individual" href="">Martin Rowlinson</member>
<member type="individual" href="">B. Tommie Usdin</member>
</members>
The output:
<?xml version="1.0" encoding="UTF-8"?>
<div class="right-side-head-title">
<h2>Legends of the XSLT Community</h2>
</div>
<div class="right-side-head-sub-title">Individuals</div>
<div class="legends-container">
<div class="legends">
<a href="http://www.adambosworth.net/">Adam Bosworth</a>
</div>
<div class="legends">
<a href="http://skew.org/">Mike Brown</a>
</div>
<div class="legends">
<a href="http://www.dcarlisle.demon.co.uk/david/">David Carlisle</a>
</div>
<div class="legends">
<a href="http://sync.ro/">George Christian Bina</a>
</div>
<div class="legends">
<a href="http://www.jclark.com/">James Clark</a>
</div>
<div class="legends">
<a href="">Johannes Döbler</a>
</div>
<div class="legends">
<a href="http://www.snee.com/bob/">Bob DuCharme</a>
</div>
<div class="legends">
<a href="http://www.Saxonica.com">Michael Kay</a>
</div>
<div class="legends">
<a href="http://www.cranesoftwrights.com/">G. Ken Holman</a>
</div>
<div class="legends">
<a href="">Salvatore Mangano</a>
</div>
<div class="legends">
<a href="http://fxsl.sourceforge.net/">Dimitre Novatchev</a>
</div>
<div class="legends">
<a href="http://uche.ogbuji.net/uche.ogbuji.net/">Uche Ogbuji</a>
</div>
<div class="legends">
<a href="http://www.dpawson.co.uk">Dave Pawson</a>
</div>
<div class="legends">
<a href="http://www.xmlshoestring.com">Wendell Piez</a>
</div>
<div class="legends">
<a href="">Martin Rowlinson</a>
</div>
<div class="legends">
<a href="http://www.JeniTennison.com">Jeni Tennison</a>
</div>
<div class="legends">
<a href="http://blog.tkachenko.com/">Oleg Tkachenko</a>
</div>
<div class="legends">
<a href="">B. Tommie Usdin</a>
</div>
<div class="legends">
<a href="http://norman.walsh.name">Norman Walsh</a>
</div>
</div>
<div class="right-side-head-sub-title">Entitities</div>
<div class="legends-container">
<div class="legends">
<a href="http://www.exslt.org/">EXSLT.org</a>
</div>
<div class="legends">
<a href="http://www.fourthought.com/">Fourthought</a>
</div>
<div class="legends">
<a href="http://4suite.org/index.xhtml">4suite.org</a>
</div>
<div class="legends">
<a href="http://topxml.com/">TopXML.com</a>
</div>
<div class="legends">
<a href="http://www.microsoft.com/">Microsoft Corporation</a>
</div>
<div class="legends">
<a href="http://www.Saxonica.com">Saxonica, Ltd.</a>
</div>
</div>
Posted by m.david at 05:00 AM | Comments (3) | TrackBack
In addition to the following suggested via a comment from Dimitre Novatchev (thanks Dimitre!):
I plan to add:
Again, all of these individuals and in the case of Mulberry Technologies, an entity, are obvious oversights in which should have been listed all along.
NOTE: I need to be very careful in how I list the "Legends" as I would hate to imply that those at the bottom are any less important than those listed higher up. As such I am changing the list to alphabetical order, using last names as the basis for individuals and listing them seperate from entitities in which will also be listed alphabetically, starting with A. If there is enough support to change it to more of a Chronological listing I am up to make the change as such. I will leave it to comments to help decide if this or any other "ordering" should be the proper way to list members of this elite community.
I guess one of the nice things about a blog stems from its definition found on Wikipedia:
"A weblog, Web log or simply a blog, is a web application which contains periodic, reverse chronologically ordered posts on a common webpage."
"reverse chronologically ordered posts" - Depending on how you define this phrase I could always suggest that the last were the first anyway, right? Hmmm... maybe not so much.... Anyway, I will get the list updated now and once again thank Dimitre for bringing to even further light just how incomplete the "Legends of the XSLT Community" list is at the momennt. Again, please, I mean no disrespect to anyone I have missed and gladly accept with open arms those in whom any of you feel is missing from this list and through silly oversight should have been listed all along. As soon as I saw the names Dimitre posted I felt like smacking myself upside the head as, again, they should have been obvious from the get-go. Without a doubt via help from community members such as Dimitre (and in his case an actual member of this elite community) this list will increasingly become an accurate portrayal of all the deserved members of the XSLT community who for various reasons should be considered "Legends of the XSLT Community".
To the members of the "Legends of the XSLT Community": If there is a link that you would prefer me to send people to please let me know and I will make the change immediattely upon receiving and subsequently verifying (through alternative means if the senders email seems at all *odd* as to the implied sender) that this is indeed the link you want me to use. I mention the latter as I need to provide some sort of verification system to ensure that it is indeed you, the member, who is making the request.
Posted by m.david at 03:22 AM | Comments (0) | TrackBack
Before anybody even has a chance to start typing:
Dear <XSLT:Blog /> Editor (A.K.A. M. David Peterson):
You are an idiot for leaving Adam Bosworth off this list... [followed by whatever other choice words you might have for me because of this...]
can I just say that it was reading Adams latest post that reminded me of this obvious fact and got me going on this kick to get this list updated with each individual and/or entity that so rightfully deserves a spot as a member of this exclusive list of developers and entities who have had a positive affect on the XSLT development community as a whole. It also reminded me that I have planned for some time now to begin a section on this blog called "The Adam Bosworth Effect" which will be devoted to bringing to light the effect that Adam Bosworth has and will continue to have on each and every one of our lives, whether we be a computer user, developer, or both (giving way to the fact that not all developers are also users; a strange anomaly, yes, but a fact none-the-less.)
So, with that said I would first like to Welcome Adam to the "Legends of the XSLT Community" in which he most definitely deserves a spot right next to James Clark himself as it is my belief that without the work of Adam Bosworth and his team of developers working on MSXML XSLT would have in no way reached the level of acceptance and use that it has today. I would also like to welcome the Microsoft Corporation to this list as it can most definitely be said that without Microsoft their would be no MSXML (ok, maybe too obvious of a statement) and furthermore without the embrace of XML and the early adoption and support of XSL via MSXML 2.0 (something that, ironically, can easily be pointed to as a reason we haven't seen an immediate jump to support the XSLT 2.0 standard -- burned once by early adoption of a standard why would you adopt and provide support for a standard that, as of yet, is still not a final recommendation of the W3C?) XSLT could in NO WAY be where it is today as far as its infiltration into nearly every area of an application, be it corporate or shrink-wrapped, client, client-server, or all-of-the-above.)
I will be following this with much, much, much more.... but first let me be the first to officially welcome Adam Bosworth and the Microsoft Corporation into their rightful spots as members of the "Legends of the XSLT Community" here at <XSLT:Blog />
Welcome Adam! Welcome Microsoft! Your contributions to this community I don't believe have ever been given the proper credit they deserve. I most certainly plan to do my part in changing that. Thank you for all that you have both done to help bring XSLT into the hands of each and every developer and computer user across the world.
Posted by m.david at 02:25 AM | Comments (0) | TrackBack
As if I needed any more reasons to make myself look like a fool it seems I forgot to add one *VERY* obvious entry into my last post. To try and avoid any further embarrassment <XSLT:Blog /> would like to welcome TopXML.com to the "Legends of the XSLT Community" section of this blog. If not obvious please visit TopXML.com and you will quickly understand why TopXML.com should be considered a legend of the XSLT community. TopXML has been promoting the use of XSLT for a very long time providing everything from sample code to complete applications built in XSLT to the development communities abroad.
TopXML.com has been listed as a resource for XSLT on this blog since the very beginning. However by simple and what should have been an obvious oversight they were left off the "Legends" listing, a spot most definitely deserved. Welcome TopXML! My apologies for not realizing your absence from this list before now!
Also, if there is any individual or entity you feel deserves a spot on this list please let me know. It has become obvious that if left to my own devices people or entities very deserved of a spot are being left off. As I mention at the bottom of the listing this is an ongoing list that can be added to at any time. Still, I would prefer to make sure that those deserved of a spot now are given a spot now. Thanks in advance for your help with this endeavor!
Posted by m.david at 01:49 AM | Comments (2) | TrackBack
In what is an obvious oversight of inidividuals and organizations who should have been listed from the beginning <XSLT:Blog /> would like to welcome the following individuals and organizations to the "Legends of the XSLT Community".
Although Dr. Kay has always been listed, Saxonica has not. So in addition to the above I would also like to welcome Saxonica, Ltd. as a very deserved member of this list of inidividuals and now entities who make up this exclusive list of XML and XML Transformations professionals and organizations.
I plan to follow-up this post in the coming weeks with specifics to why each member of the "Legends of the XSLT Community" deserves a spot on this list. But I don't think anybody who knows of these individuals or the contributions they have made to the support and further development of XSLT and related technologies will question my reasoning. My apologies to all of you of whom I have just added for not realizing before now that you were absent from this list. I thank each of you (specific to Uche and Mike and collectively to the organizations in which have now been listed) for all of your past, present, and ongoing contributions you have and I know will continue to make to the XSLT community as a whole.
Cheers to all of you and, again, thank you!
Posted by m.david at 12:45 AM | Comments (1) | TrackBack
I come from what you might term an international family. My father was born and raised in British India (of British descent), attending boarding school in the Himalayas. My mother was born and raised in a small town in Durham County (Northern England) called Chester-le-Street and later moved with her family to Rhodesia (Zimbabwe as it is now known) in southern Africa where her father took a job as a school teacher [CORRECTION: via my Mom: My father was a school teacher before going to Rhodesia. After arriving there he worked for 11 years as a buyer for the Rhodesian branch of Anglo-American, a large company owning mines for coal and other minerals in the southern half of Africa.] After moving to London and attending trade-school (focus on photography) my father took a job with the Rhodesian government as a photographer, something he had both a great love and great gift for. It's probably not to hard to figure out what happened from there.
For various reasons that I won't go into now after giving birth to twin daughters (my first two sisters) and later to my third sister my parents decided they didn't feel comfortable anymore raising a family in this region of Africa (this was the early to mid 60's to those of you familiar with what was taking place during this stage of history in the southern regions of Africa) and as such applied for two sets of visa's; one for the U.S.A. and the other for Australia. To make a long story short the U.S.A. visa's came through first and before too long my family found themselves in California (where my brother, next older sister, myself, and my younger sister were born.) A few years prior my mothers family had applied for visa's and had sinced moved to Perth, Australia where they continued to raise their 5 remaining non-married children who ranged in age from 10 to 14 (a feat in and of itself!).
The result of growing up in the U.S.A. when the rest of your cousins (18 in all) live in Australia is that you find yourself slowly getting to know them as either they come to visit us here in the U.S.A. or we (meaning myself and my brother and sisters) go to visit them in Australia. Believe it or not as much as I have traveled the world I have never had the chance to spend any time with my cousins in Australia so its been left to their visits to the U.S.A. that have prompted spending any significan amounts of time getting to know them in person.
While I have gone road-trippin' around the western U.S.A. with my cousin Dan, snowboarding at Snowbird (one of the many world class ski resorts here in Utah) with my cousin Carl, and have hung-out with my cousin Russell before he took of to work as a councilor at a summer youth retreat here in the U.S.A. that would be about the extent of the time I have had to get to know any of my cousins at any great depth. This year my cousin Megan and her husband Brett came to spend Christmas with the "US Cousins", most of which have migrated to the state of Utah over the years (I tend to live in a hotel near "wherever my next contract takes me" but have a base here in SLC and just so happened to be here for the holidays.) Adding to my belief that "Aussie's" simply understand life in a different and inherently better way than we do here in the states, as always, it was a joy getting to know Megan and Brett and I am ever-so-grateful they chose to come and spend their Christmas holiday with us.
A tradition (as it has become) for each visit to the US by one of the cousins is to bring with them a little piece of Australia to share with us here in the states. With as many of us as there are (7 cousins, each of us with children amassing to 24 -- so far) you can imagine both the time and cost incurred by such a tradition. Still, with each of their arrivals to Salt Lake International airport is found yet another suit-case full of Aussie treats for distribution to the hords of Storey descendants (my mother's maiden name) that abound in this region of the U.S.A. This time around, of course, was no different.
I can't say for sure what other cool things were given to my siblings as Christmas gifts from down under but if they are anything like what was given to me I am sure they too are in awe by the wonder and amazement that is the continent "Down Under". I have always known Australia to be a place of wonder and intrigue, but to be honest, I had no idea:

To be fair to the makers of this calendar and to try and make up for any copyright infringements I may have incurred by scanning and posting this picture, here is the company's web address who made this calendar: http://www.rankin.com.au.
I will try and locate a place where you can purchase this calendar online as I don't see anywhere to place an order on this site. [UPDATE: Just had to look a bit harder... here is where you can purchase this calender from the publishers site] But let me just say that the rest of this calendar is just as incredible! What an AMAZINGLY beautiful country that I plan to visit now (as if I didn't have any reason to before ;)) ASAP!!!
[MORE TO ADD SOON]
Posted by m.david at 09:01 PM | Comments (0) | TrackBack
LinuxElectrons™ - W3C Issues XInclude 1.0 as a W3C Recommendation
Nothing new or exciting in this post but it does bring out the the fact that XInclude was specifically designed to take advantage of existing XML standards. You might be saying "uh, yeah, thanks for making the obvious even more obvious." But what is obvious to you may not be to someone else who is new to what has become a plethora of "X"-based technologies so I figured it was worth a post. That and the XML/XSLT-related news at the moment is thin (at best) so I figured something was better than nothing :D
From the piece:
XInclude 1.0 takes advantage of the XML Information Set (Infoset), and merges XML information sets. Therefore, it can be used with any version of XML, as well as other existing XML-related specifications, such as the XML-family components XML Schema and XSLT, as well as with XML applications such as the popular Scalable Vector Graphics (SVG) and VoiceXML 2.0 specifications. XInclude 1.0 also takes advantage of the XPointer Framework and can be used to include sub-resources, such as fragments of XML documents, that are identified by a separate xpointer attribute.
Posted by m.david at 08:51 PM | Comments (0) | TrackBack
Here in Salt Lake City there is a spectactular display of lights at Temple Square that literally brings in 100's of 1000's of visitors each year to see. With hands and fingers shaking from the cold it was a little difficult to keep steady and the picture quality is flat out awful and does nothing to bring out their spectactular real-life nature. Please forgive me as such. But in the spirit of Christmas I wanted to at least share these with you so you can see the beauty that abounds here in Salt Lake City just as it does all across the world during this time of celebration and joy.
Merry Christmas everyone!
Posted by m.david at 11:31 PM | Comments (0) | TrackBack
The Free Lunch Is Over: A Fundamental Turn Toward Concurrency in Software
While I am still reading and consuming this article the person who pointed me to this link brings out a good point: A
functional language is by definition a parallel language, so they are
the obvious winners in this situation.
More comments to come once I have had more of a chance to digest this information.
Merry Christmas everyone!
Posted by m.david at 10:22 PM | Comments (0) | TrackBack
While I would be more than happy to take on this project all by my lonesome self my guess is that members of the XQuery community would probably learn to hate, if not despise me for delivering my version of the XQuery news and current events as well as code samples showcasing just how powerful XQuery isn't. :) In fact if you visit XQueryBlog.com you'll see exactly what I am refering to.
So heres your chance to take back whats rightfully yours (trust me, I sure don't want it!)... Please see the rules and regulations as outlined in the first post to XQueryBlog.com and then let me know if you feel that you can do justice in providing the latest and greatest in news and code samples of all XQuery has to offer (which shouldn't take more than an hour or two, tops! :)) If you have other ideas as to what to do with this site (for example, donate it to Goodwill or recycle the pieces by making Christmas wreaths with them ;)) please let me know and if I think its worth it I may just help you implement it.
Posted by m.david at 04:54 PM | Comments (0) | TrackBack
XML.com: XSL Considered Harmful
I was recently pointed to this article in the archives of XML.com and my eyes are now swelled with tears of both laughter and joy. I'm guessing that TransforMiiX is the result of the begrudged team of so-called crack Mozilla developers (is that what has fueled the development of Mozilla all these years? Yikes!) having to pay up after losing this bet? If so it seems there is yet one more reason why G. Ken Holman is a member of the <XSLT:Blog/> Legends of the XSLT Community :).
I don't think anybody is going to try and contend that CSS is not an overwhelmingly powerful and appropriate technology for the web and I know from my own development that the marriage of these two technologies begats power (on the web) unlike any other. And with the recent "re-gathering" of the SVG Working Group and their mantra:
"...to help Web developers combine SVG with XForms, for example, to put SVG-based graphics or "skins" on Web forms. Another goal is to let developers determine SVG graphics using CSS (Cascading Style Sheets) and XSL (Extensible Stylesheet Language). Those recommendations let a single set of styling instructions apply to multiple Web pages."
I think its safe to say that no one has really lost anything from this "declaration of war!" as it was obviously just a simple misunderstanding as to the purpose for XSL (both FO and T) in the first place. However if this bet had anything to do with Mozilla bringing TransforMiiX into existence I'm happy that this misunderstanding took place. :)
Posted by m.david at 02:14 PM | Comments (0) | TrackBack
I think we can safely say that Eric Meyer has taught a lot of us how to really take advantage of the power behind CSS. He recently posted a request to help his friend Dave reach his goal of raising $10,000 for the Leukemia & Lymphoma Society. I realize there are a lot of worthy charities out there that could all use a donation of $20. This is one more. If you can afford it this seems like a pretty good cause from someone who is doing all he can to help save someone he loves.
Posted by m.david at 05:59 AM | Comments (0) | TrackBack
I was about to update the XSLT "Quote of the Day" with Yet Another Jab at XQuery when I thought "maybe something a little lighter would be more appropriate this close to Christmas."
Okay XQuery, you're off the hook for this go round but don't get too excited, you're bound to become the object of my "affection" sometime again in the future :)
I generally tend to try and not be self serving but someone emailed me that maybe I should use a quote from one of my older entries on Boeing Australia's use of XSLT in mission critical content management as a XSLT Quote of the Day entry. In going back and reading it again I did find myself chuckling a little bit so here it is...
Brushing and Flossing with XSLT on a daily basis keeps your teeth clean and your breath fresh and minty. Furthermore you will suddenly become more attractive to the opposite sex and in some cases being called a “Sex God” or “Goddess” will become an all too common occurence.M. David Peterson from a December 1st post to <XSLT:Blog/>
Enjoy!
Posted by m.david at 04:59 AM | Comments (0) | TrackBack
Adam Kinney's December Notes - XSLTSequelBetterThanTheFirst
Adam Kinney brings out some interesting points as to the strength of using XSLT 2.0 as the basis for his BLAPP (Blog-based Application - Just made it up, who knows if it'll stick ;)
Enjoy!
[Update: Huh, who knew... (probably the blapp development team and users knew :) Leave it to Google to remind you that pretty much nothing we think of these days can be considered an original thought.]
Posted by m.david at 04:35 AM | Comments (0) | TrackBack
Simple keywords entered into the search box (or appended to the query string if adding a link to your blog, website, app, etc...) will allow quick access to links to articles of interest for that particlar category from such industry insiders like Mark Pilgrim et. Al. You can even filter by the "marker" of that link to narrow things a bit further or look at all posts by that particular link marker.
Enjoy!
Posted by m.david at 04:21 AM | Comments (0) | TrackBack
A Novell Idea
Although Novell doesn't actually own Mono, it has taken stewardship of the project and will be using Mono technologies extensively within its product line. The company's first deliverable is iFolder 3, an open source file sharing and synchronisation tool written entirely in Mono. An enterprise version will add better security.
---
Ok, I'm not one who can complain about the use of cheezy titles but... Well, its a good article anyway.
Posted by m.david at 01:09 AM | Comments (0) | TrackBack
Maybe now my previous posts make a little more sense.
Welcome Kurt!
[UPDATE: And I quote:
"What's more important to you, me or your code?" There's a reason why bachelorhood seems to be an endemic state for programmers.
I've been thinking of doing a post on the Top 10 Reasons I'm Single of which the first would be "I spend more time (and actually know what one is) watching an f'tailed feed of my various sites logfiles than I do dating." Now I have number 9 -- "My answer to Kurt Cagles supposed question to any possible dating partner would be "umm, Code." I think bachelorhood might be a trend lasting a little longer in my life than my family would like... ;) :D
Posted by m.david at 12:09 AM | Comments (0) | TrackBack
Cafe con Leche XML News and Resources
Posted by m.david at 11:52 PM | Comments (0) | TrackBack
Signs on the Sand: XQuery in .NET story isn't over yet
As Oleg points out it seems the news that XQuery will not be part of the initial 2.0 release of the CLI (.NET) platform hasn't registered with a majority of developers. So, it seems that the Saxon.NET project has now been pushed to the forefront of support for all three major XML transformation technologies, XPath 2.0 being the foundation of both XSLT 2.0 and XQuery [80% of the XQuery spec is the XPath 2.0 spec.] And I thought 2005 was going to be a boring year for me... [Hah! Boring and my life have nothing in common]. Fortunately for you the Saxon.NET project is being managed by Pieter Siegers who has done and I know will continue to do a fantastic job of managing all of the efforts that are involved in delivering a project from start to finish, with every detail covered in between.
Oh, BTW... Hey Microsoft: In case I hadn't mentioned it already, from all of us over on the Saxon.NET project, Thank You! I think I can speak for all of us when I say we really had no desire to do anything much else with our lives except provide full support for XSLT 2.0, XPath 2.0, and XQuery 1.0 on the first release of version 2.0 of the CLI framework. Eating and sleeping are really overated anyway. If the question had ever arisen "Do I eat, sleep, code, or provide development support in the forums?" that can now be reduced to "Do I code or provide development support in the forums?" Whoever said Microsoft doesn't help make the decisions we have in our life simpler obviously has no idea what they're talking about. :)
Just so you all know if you have any specific questions as to anything related to Saxon.NET please direct them to Pieter and he will make sure they get forwarded to the right person involved with that aspect of the project. Up until now the development work has been me but as the IKVM.NET project has matured in HUGE amounts since we first started the project my job has become easier and easier with each release of the IKVMC (the IKVM.NET compiler.) As such more and more of the original Michael Kay Saxon code makes it into each release which means less and less hacks from yours truly (never a bad thing when it comes to me and Java :)) are required. Hopefully as we move forward we will see more development activity from other sources to help in everything from bringing development samples and tutorials into the mix to further integrating the into native support for all of the System.XML libraries. Wanna help? Contact Pieter :)
Many questions have come up in regards to Saxon.NET and a complete C# port to the .NET platform. A lot of work has already been completed in this area but it is still undetermined as to how quickly such a port might be made available. This is one of MANY questions that Pieter will have to pull the team together to make a decision on as well as to speak with Michael Kay on the subject a bit more as, ultimately, it is Dr. Kay's thoughts on the matter that will have the greatest influence on such a decision.
More details to follow as well as an idea as to when you will see Saxon.NET v.0.1.8.2.
Cheers!
Posted by m.david at 10:30 PM | Comments (0) | TrackBack
W3C recharges graphics group | Tech News on ZDNet
The working group intends to help Web developers combine SVG with XForms, for example, to put SVG-based graphics or "skins" on Web forms. Another goal is to let developers determine SVG graphics using CSS (Cascading Style Sheets) and XSL (Extensible Stylesheet Language). Those recommendations let a single set of styling instructions apply to multiple Web pages.
Posted by m.david at 09:29 PM | Comments (0) | TrackBack
Add RSS feeds to your Web site with Perl XML::RSS: Builder AU: Architect: Web Services
Proper processing of XML data feeds such that they validate properly before being published is something of extreme importance, especially when you consider that these sources of information have in many ways become our own personal search service in which we have come to rely upon for access to the most recent data on the web. Feeds that don't validate can not be properly processed and as such the data in many ways is somewhat useless, if accessible at all.
Have you Validated Your Feed Today?
Another GREAT link to ensuring you're web server is sending the proper mime-type with the content it is serving. Mark-my-Words (and the words of about 10,000 other MIME type advocates) -- This both matters now and as HUGE implications in regards to application and document compatibility with various systems in the future.
Posted by m.david at 08:53 PM | Comments (0) | TrackBack
ARNnet | Ephox snares new partner to spread Web authoring tool
Posted by m.david at 08:47 PM | Comments (0) | TrackBack
Paoli: Information correlation, reasoning next step for XML
Now that XML is successfully employed on the front end as well, what's next?
Paoli: XML is at the front end. Adobe, OpenOffice, they're adding XML to the front end as well. The technology is here, that's the fun part of this for me. This is the tip of the iceberg because imagine a time when millions of documents are stored and archived in XML. Project yourself in a few years, millions of documents created by humans, stored in databases. For IT it's data, for users, it's documents. Then, we'll have millions of new opportunities to start correlating the information, think about reasoning on top of it and managing it.
---
Recently [and in many other past discussions] on XSL-List there was a discussion in regards to the grouping of XML data and the best methods to use when doing this. Posts regarding specific tests on two seperate grouping methods can be found here. While it was determined that for grouping problems with deep recursive implications and grouping categories the tried and true Meunchian Method was, again, at the top of the performance scale. But some ideas were presented in regards to the convergence of multiple data sources, an area that hasn't been tested to any level of assuredness as to which method might be best.
I have a very strong feeling that in the not to distant future the world of searching, sorting, grouping, extracting, and weaving together the new found data on the WorldLiveWeb and further seperating this data into that of inherent value and that in which is *currently* of absolutely no value to the consumers of instant information we have become. This is something that I believe will more than likely turn into a near commodity market and those companies that provide the best-of-breed Data-Mining services will have the world eating from their hands and of course, will be the source of extreme wealth, popularity, and in some ways power with very controlling implications. Lets hope that doenst happen!
In the mean time I wonder who or what technologies will prove to be the source of this best-of-breed in this category. I have my own feelings as to the answer to this question and in fact have been working in this exact area of study for nearly a year now. Not for the reason of becoming the next best thing to Google or MSN search (In my opinion the only real competitors in this market... Sorry Yahoo!) but from the standpoint of having a complete infatuation with the concepts involved with weaving together data from sources that have nothing in common in regards to their sources (meaning schemas that in many ways have little, if anything, in common) and bring them together in ways that will help us do real-time searches for people interested in the same thing someone else is searching for as a matter of the same interest at that exact same moment... e.g. You're on a particular chapter in a really exciting book and you want to see if there is anybody out there on the WorldLiveWeb who is in that exact spot and wants to talk about it as badly as you do... The moment we have reached that level of capability, where the publishing, weaving, and subsequent searching of that data for things in which have a shelf life of 5-10 minutes I feel we will have truly accomplished something of spectactular proportions. So many ideas, so many possibilities, and so many things we need to be careful of in this regard as well. With good comes bad... The bigger the good the badder the bad (proven in nature by waves.)
Still, its a fascinating subject and I am glad that Jean Paoli feels the same way.
Posted by m.david at 08:09 PM | TrackBack
Want to quickly put a place holder up for Pieters test tool he has been developing that helps in the ability to run high level testing comparisons between processors. It was pretty sweet when I last saw it about a month ago so I am guessing its even sweeter now. A recent resurgence in Saxon.NET activity and a comment Pieter just left prompted the reminder.
BTW... You might notice Pieter calling me Mark in the comment he left. Those in whom I have known for a while know me by Mark as this is the name I have traditionally gone by. The switch to using M. David Peterson in professional situations came about 3 or 4 years ago when, in signing my emails M. decided that in the sea of Mark Petersons in this world a better way to distinguish myself would be to use M. David instead. A Google search for "M. David Peterson" as opposed to "Mark Peterson" will help you further understand the benefits in regards to my consulting career and name recognition. I still go by M. or David as well so any of these work (some go as far as calling me Mdot :)
Posted by m.david at 08:56 AM | Comments (0) | TrackBack
In a recent post to XML-DEV Michael Champion speakes to Kurt Cagles latest post on his blog (or is ihis blog <XSLT:Blog/> or.. well, eventually you'll find out why <XSLT:Blog/> took on a striking and sudden resemblence to the Metaphorical Web yesterday. Unfortunately I forgot to put a tape in the camera and there's no after-the-fact coverage of his live performance... I'll tell you what, that man has rug-cutting skills like none I have ever seen!!! ') More soon...
Moving forward in this post Mike states:
"We had a classically xml-devish thread back in October about the implications of Shannon's information theory for XML. I must say I didn't understand much of that thread, but Kurt Cagle has an intriguing entry in his weblog http://metaphoricalweb.blogspot.com/2004/12/xml-and-entropy.html that puts forth some ideas that seem both interesting and somewhat practical."
The entire script from the post is in the extended portion of this blog. While I always listen in to XML-DEV I do my best to stay out and in fact have never posted there as someone like me could spend all day doing nothing but posting to that particular group of XML powerhouses. I think its safe to say that I post plenty right here and don't need to take any more time away from my clients, especially when the XSLT community is quite well represented on that list :)
I will keep an eye on this thread and see where it leads. In the mean time be watching for an announcement in the near future in regards to a new Kurt Cagle content site hosted here on the SLC-Server(the main server is back east connected to a MUCH bigger pipeline than my 1.5mbps line here in my home office) of x2x2x.org (Kurt is a card carrying member of the group.)
Cheers!
[UPDATE: Added new comments from Michael Champion to this post]
We had a classically xml-devish thread back in October about the
implications of Shannon's information theory for XML. I must say I
didn't understand much of that thread, but Kurt Cagle has an
intriguing entry in his weblog
http://metaphoricalweb.blogspot.com/2004/12/xml-and-entropy.html that
puts forth some ideas that seem both interesting and somewhat
practical.
"Entropy is important because it can better clarify the domain at
which it is best to work with a given document. XQuery I think
provides a good case in point here. XQuery supports XPath, and so it
has some of the advantages that XSLT has, but it's not really all that
useful for dealing with documents -- converting a DocBook document
into WordML or vice versa would be impossible in XQuery, but for many
business schemas with comparatively low entropies, XSLT is definitely
overkill."
I for one like the idea of his interpretation of the entropy of an
XML document in terms of the number of discrete states that its
(implicit or explicit?) schema allows. I also like the idea that
certain tools are more or less appropriate depending on the entropy of
the documents being processed -- perhaps it's something like SAX and
DOM for low entropy, XQuery for medium entropy, and XSLT for high
entropy (very document-ish) documents. I wonder, however, about the
assertions made for the appropriateness of XQuery and XSLT, e.g.
"converting a DocBook document into WordML or vice versa would be
impossible in XQuery". It gets back into our XSLT vs XQuery
permathread -- do the two have radically different capabilities with
respect to handling recursive structures and/or recursive alorithms,
or are they more or less different syntaxes for the same capabilities?
Thoughts, anyone? Sorry to reopen the permathread, but I think
Kurt's approach might lead to a more focused and possibly conclusive
discussion, Maybe wwe can all can trade ideas about this with our
relatives over the holidays :-)
---
M. Champion follow-up post:
---
I haven't seen anybody assert that entropy is a measure of quality.
It's one of those cases where the conventional meaning of a word
("disorder" in this case) carries an implicit value judgment that the
technical meaning does not.
In Kurt's post, and I think in Shannon's theory, entropy measures the
number of discrete states that a message could be in. When talking
about schemas, that's the number of valid instance *structures*
(forget the text content) that are valid according to the schema.
Some, such as a schema describing a row in a relational DB table, have
only one, hence the entropy i(the base 2 logarithm of 1) is zero.
Something like DocBook, XHTML,or WordML would have an enormous number
of valid instance structures (Kurt proposes a rule for counting only
the first recursive reference to a structure, so the number is not
infinite).
The point I took away from the post is that XSLT is (allegedly)
optimal for high entropy scenarios because of its recursive templating
mechanism, but it is overkill (for most of us ordinary mortals anyway)
for low-entropy scenarios. OK, I guess high entropy would be "low
quality" to someone with only SAX to work with ... or low entropy
would be "low value" to an XSLT geek for hire, :-)
So, my question is whether others agree with this? If so, it is a
cleaner way of pointing people in the direction of one XML tool or
another. "The measured entropy of your schema is on the order of 20,
so you probably want to use XSLT" sounds *so* much more credible to
the Pointy Haired Bosses of the world than "Well now, that there's
looks like a real document-ish type of schema in my humble opinion, so
if I was you, I'd use XSLT."
Posted by m.david at 08:27 AM | Comments (0) | TrackBack
In a recent post to the Saxon Help support group Dr. Michael Kay, director of Saxonica and creator of the Saxon XSLT and XQuery processing engine announced:
---
Saxon 8.2 has been released, in both the Saxon-B and Saxon-SA versions.
Links to both versions are at http://saxon.sf.net/
The documentation on the Saxonica site hasn't been updated yet, but full
details of changes are as usual included with the download. Highlights are:
- support for JAXP 1.3 XPath and schema validation APIs
- support for XOM object model
- some significant new optimizations
- static checking against the schema in the SA product
- improved backwards compatibility for stylesheets specifying version="1.0".
Saxon 8.2 can be used either with JDK 1.5 or JDK 1.4. If you use JDK 1.4,
however, you will need to install JAXP 1.3 as a separate package (it can be
downloaded from the Sun Java web site).
Wishing you all a happy Christmas and a peaceful 2005,
Michael Kay
Saxonica Limited
---
Woohoo! :) :D I guess its time I cracked open Eclipse and start working on bringing Saxon.NET v.0.1.8.2 to life... :)
Thank you Dr. Kay!
All, while I can't guarantee anything I will make an attempt to run through the code as quickly as possible and get a new build of Saxon.NET up on the main Saxon.NET project site in the next 24 to 48 hours. I will also get in contact with our project PM, Pieter Siegers, to ensure it is made available on the SF.net project download page at the same time.
Cheers!
Posted by m.david at 05:56 AM | Comments (2) | TrackBack
I was recently pointed to an article by C. M. Sperberg-McQueen in which I found the following quotation:
“As R. W. Floyd points out, the conditions imply |X| ≤ 6, so the minimum execution time is achieved by referring to a table” in which one word is loaded with the value of -613 and the next with -513 and the next with -413 … all of which can be computed. [more audience laughter]I don’t know about you, but my reaction then and now is: “But that’s cheating!” [shouts of audience laughter]
My second reaction is: “Yes, that is cheating. And that is the difference between a dutiful student and a great computer scientist. The great computer scientist has no hesitation in cheating!” [shouts of audience laughter]
I am developing several projects at the moment that require extensive processing of strings and lists of data at a constant rate. The importance of using algorithms that are fast, precise, and reusable is EXTREMELY important to maintain any sort of expectation of performance from these applications. Over the last week or so I have been utlizing Dimitre Novatchev's FXSL library extensions to provide an immense amount of reusable capability that otherwise would require hundreds of hours of programming to get even the basic functionality that is provided by this fantastic set of "plug and play" stylesheets. While it may be considered "cheating" I have every intention for these projects to be nothing less than that in which a great computer scientist would be capable of producing. And a great computer scientist is definitely responsible for the development of the FXSL functional programming library extensions to the XSLT 1.0 and now 2.0 W3C specifications (although the 2.0 spec is still in working draft status.)
Thank you Dimitre :) My eyes have been opened!!!
Posted by m.david at 04:11 AM | Comments (0) | TrackBack
IT Observer Tech Columns - Firefox Saves Time and Money
This link is by no means related to anything besides showcasing Yet Another Article on the benefits of Firefox. But I wonder why nobody has picked up on the idea that while many are switching to Firefox, few, if any are switching to an alternate OS or platform to use it. As such it seems that Firefox not only saves us time and as such money but it also saves Microsoft from the massive costs involved with updating Internet Explorer to a lighter weight, slightly-more secure browsing technology such as that in which we find in Firefox. I plan to follow this post later with more insite but I just wanted to throw this tidbit out there and see what type of reaction it gets.
Cheers!
Posted by m.david at 03:08 AM | Comments (0) | TrackBack
In a recent post to XSL-List Dimitre Novatchev helps us all understand the benefits of using time tested XML data grouping methodologies in XSLT by pushing the envelope one level deeper into the recursive nature of such activity. In this post he showcases the source for two different methodologies used in grouping similar XML elements, attributes, and/or the data they contain and brings out the following results:
The results in milliseconds, using Saxon 6.5.3 on a 3GHz 2GB RAM PC are as follows: Muenchian code: 1265 Sergio recursive: 38188
He then follows with:
I will be glad to provide the source xml document used in the test to any interested person (and why not put them somewhere on the web?).
Ummmm… might I suggest <XSLT:Blog/> as an appropriate publishing platform and download location for these results? :D
Dimitre, Thanks for showcasing the need to push the envelope further when it comes to making an attempt to understand the complex-nature of XML grouping methodologies. For those interested in looking at the details of his post but don’t subscribe to XSL-List I’ve added the content from the original post to the extended portion of this posting.
[POST UPDATED: I’ve added Dimitre’s second and most recent post to XSL-List in regards to his Muenchian Method findings. In this post he has suggested plans to take me up on my offer to host the download of these stylesheets. I’m watching for his email now and will update this entry with the download links as soon as they are available.]
[UPDATED: Download file Content of this zip file is explained in the extended portion of this entry]
Hi Sergio,
I performed some tests and here are the results on a source xml document containing 20516 elements that had to be grouped in two levels. The document has the same structure as the one in your examples, but more “instances”.
I had to upgrade your code to make it general, so that it can now handle any number of levels of grouping. The names of the attributes on which to group consecutively are given as a parameter.
Here’s your modified code (50 lines):
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:template match="/booklist">
<authors>
<xsl:call-template name="RecursiveGrouping">
<xsl:with-param name="list" select="book"/>
<xsl:with-param name="attrList" select="/*/book[1]/@*"/>
</xsl:call-template>
</authors>
</xsl:template>
<xsl:template name="RecursiveGrouping">
<xsl:param name="list"/>
<xsl:param name="attrList"/>
<xsl:if test="$attrList">
<!-- Selecting the first attribute name as group identifier and the group
itself-->
<xsl:variable name="attrName" select="name($attrList[1])"/>
<xsl:variable name="group-identifier" select="$list[1]/@*[name()
= $attrName]"/>
<xsl:variable name="group"
select="$list[@*[name()=$attrName]=$group-identifier]"/>
<!-- Do some work for the group -->
<xsl:element name="{$attrName}">
<xsl:attribute name="value">
<xsl:value-of select="$group-identifier"/>
</xsl:attribute>
<xsl:call-template name="RecursiveGrouping">
<xsl:with-param name="list" select="$group"/>
<xsl:with-param name="attrList" select="$attrList[position() > 1]"/>
</xsl:call-template>
</xsl:element>
<!-- If there are other groups left, calls itself -->
<xsl:if test="count($list)>count($group)">
<xsl:call-template name="RecursiveGrouping">
<xsl:with-param name="list"
select="$list[not(@*[name()=$attrName]=$group-identifier)]"/>
<xsl:with-param name="attrList" select="$attrList"/>
</xsl:call-template>
</xsl:if>
</xsl:if>
</xsl:template>
</xsl:stylesheet>
Here’s the code using the Muenchian method:
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:key name="kAuth" match="book" use="@author"/>
<xsl:key name="kAuthTitle" match="book"
use="concat(@author, '+', @title)"/>
<xsl:template match="/">
<xsl:for-each select=
"/*/book[generate-id()
=
generate-id(key('kAuth', @author)[1])
]">
<xsl:element name="author">
<xsl:attribute name="value">
<xsl:value-of select="@author"/>
</xsl:attribute>
<xsl:for-each select=
"key('kAuth', @author)
[generate-id()
=
generate-id(key('kAuthTitle',
concat(@author, '+', @title)
)[1]
)
]">
<xsl:element name="title">
<xsl:attribute name="value">
<xsl:value-of select="@title"/>
</xsl:attribute>
</xsl:element>
</xsl:for-each>
</xsl:element>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
The results in milliseconds, using Saxon 6.5.3 on a 3GHz 2GB RAM PC are as follows:
Muenchian code: 1265
Sergio recursive: 38188
I will be glad to provide the source xml document used in the test to any interested person (and why not put them somewhere on the web?).
Cheers,
Dimitre
On Tue, 21 Dec 2004 20:09:22 +1100, Dimtre Novatchev dnovatchev@gmail.com wrote:
The results in milliseconds, using Saxon 6.5.3 on a 3GHz 2GB RAM PC are as follows:
Muenchian code: 1265
Sergio recursive: 38188
More data — this time testing the originally-provided one-level grouping:
Muenchian code: 9796
Sergiu recursive: 16016
However, the original code produces also the count of each group. This is not a requirement for grouping and is not part of the Muenchian method at all.
With counting removed, the results are:
Muenchian code: 953
Sergiu recursive: 15922
>
I will be glad to provide the source xml document used in the test to any interested person (and why not put them somewhere on the web?).
Thanks to M.David Peterson, who offered to host the test data on www.XSLTBLOG.com
I’m sending the data to him in a moment.
The data I’m using is artificial but not at all unusual. It contains 183 different authors. In real cases data extracted from a database will contain thousands of different objects (persons, authors, employees etc.)
Cheers,
The test xml file and the different stylesheet modules used in the benchmark:
my25600.xml — the source xml file
test-groupSergiuOriginal.xsl — Sirgiu Ignat’s original code as downloaded from your site.
test-groupSergiuOriginal.xsl — as above, but with counting of the groups removed
test-group.xsl — Sergiu’s code updated by me so that it can handle any level of nested grouping
test-group-m.xsl — the Muenchian code as downloaded from your site
test-group-mNoCount.xsl — as above, but with counting of the groups removed
Posted by m.david at 02:13 AM | Comments (0) | TrackBack
Students uncover dozens of Unix software flaws
NOTE: This is in no way a bash post for Linux, Unix, or their variants. It is simply recognition to the fact that security issues exist everywhere and we need to be aware of this so that we can fix them and as such live and play in a "safer" World-Wide online community such as the internet.
---
One of the strengths of open-source software is the fact that it is open(a startling revelation, I know. ;)) Because of this its easy enough to find and subsequently fix problems that exist by anyone with a desire strong enough to look. Many arguments can be made in favor of closed-source systems as well and I have no intention of turning this into a debate on either topic.
One of the things that bothers me when I hear people bash Microsoft is the apparent lack of recognition that no system, no matter who funded its development (open-source is most definitely a form of funding as no matter how you look at it time is money no matter who you are, where you live, what you drive, or what your primary OS is.) or what development and/or marketing methodology used in its development is inherently flaw free. I happen to be a fan of Linux and most especially a fan of the GNOME Desktop and the Mono-Project. Clean, simple, and powerful... three deadly combinations. However my primary Desktop OS is still Windows (despite my reason "threat" to make the permanent switch to Linux a few weeks ago... I'm a little more calm now that I have a clean install of a living, breathing, virus-free (I hope!) version of WinXP Pro back in action) as their is a reson Microsoft dominates the marketplace in this area... It's a fantastic platfrom and a *GREAT* UI that provides me with what I need to get my job done as well as plenty of ways to enjoy life outside of my work-related desktop environment.
But this isn't a love-in post for Microsoft either. Both Windows and Unix/Linux are powerful platforms with upsides and downsides to using either. I'm sure you have your own opinions on which OS you prefer so I'm not going to try to inflict nor pursuade you to believe that my feelings on the matter are inherently better. You like what you like. I like what I like. And chances are good we're both going to wake up in the morning and go to bed at night (speaking in relative terms of what morning and night might mean to one another of course ;) happy with the decisions we have made in regards to our OS of choice.
As I summarized in the NOTE above the point of this post is simply to suggest an eye opening recognition to the fact that security problems exist everywhere. I commend computer scientists of influence like Daniel Bernstein for helping his students better understand that problems exist everywhere, you simply have to be willing to look. Hopefully because of efforts like Professor Bernstein's we will have better, more secure computer-connected world in which we can easily, simply, and joyfully get our jobs done and not have to deal with frustrating and time-stealing situations like I was faced with a few weeks ago. I'm not going to link to it necessarily as it was more of a rant that I am now over. If you really want to read it it's easy enough to find so I'll leave you to it if that is your desire.
Posted by m.david at 01:34 AM | Comments (0) | TrackBack
IBM Gets Ready to Google-ize the Enterprise
Document storage company Iron Mountain Inc., for one, is running a 15-terabyte XML database based on Oracle databases, Shimp said. In addition, Release 2 of Database 10g will feature XQuery, the native XML search format, as a standard feature.
---
'Nuff said? Probably not, but its a start at understanding where XQuery's design will shine in its use within our applications: as an extremely powerful way to query a XML data-set searching for a particular sequence of elements, attributes and content and where XSLT, and in particular XSLT 2.0, will be the more powerful and appropriate of the two: In the transformation of that returned data-set into something that can more easily be consumed by human or machine; native to the tounge of the human and the machine-data format of the machine, whatever that may be. Understanding the primary designed purpose of a Domain Specific Language will be the difference in developing an application that runs smooth, built using the technologies best suited for the purpose at hand, and an application that lacks feature, stability, and peformance built intstead using a DSL that was never designed nor intended for the purpose it is being used for.
If not obvious I pointed out the two key words in the names chosen by the members of the W3C and the related technology working groups(marketing geniuses, all of them! ;)
XQuery : eXtensible (Markup Language) Query
XSLT : eXtensible Stylesheet Language - Transformations
Extracting the keywords from these two technology recommendations and by accessing their definitions as listed in Wikepedia:
--- For Query we find:
Query
From Wikipedia, the free encyclopedia.
In general, a query is a form of questioning, in a line of inquiry.
In computing, a database query is often specified using the structured query language SQL.
--- For Transformation we find:
Transformation
From Wikipedia, the free encyclopedia.
* Transformation has two meanings in molecular biology:
o Transformation is the genetic alteration of a cell resulting from the introduction, uptake and expression of foreign DNA.
o Transformation is also the process by which normal cells are converted into cells that will continue to divide without limit. Normal cells can divide only a certain number of times before they will stop dividing. Cells that have been transformed no longer have such a limit (for example, cancer cells) are able to grow and divide potentially forever.
* In mathematics, a transformation is any of a variety of different operations that can be performed using linear algebra. For example, in 3D computer graphics, the operations of moving, scaling, or rotating a 3D model are commonly called transformations. See linear transformation, transformation geometry, transformation group; also infinitesimal transformation.
* In music, a transformation is any operation or process that may be applied to a musical variable, usually a set or tone row in twelve tone music, such as transposition, inversion, multiplication, retrograde, or rotation and combinations thereof. See: operation, permutation.
* Transformation can be a synonym for metamorphosis and shapeshifting, as in the stories featured on the Transformation Stories Archive.
* In the terms of military operations, transformation is the process of transitioning to a lightweight, fast-moving force that heavily utilizes network-centric warfare. [1] (http://www.oft.osd.mil/)
* Transformation is the title of a 2000 novel by Carol Berg
---
Makes sense to me.
I particularly like the military definition:
* In the terms of military operations, transformation is the process of transitioning to a lightweight, fast-moving force that heavily utilizes network-centric warfare. [1] (http://www.oft.osd.mil/)
Are we at war with XSLT? It sure does feel like it sometimes.
Posted by m.david at 12:04 AM | Comments (0) | TrackBack
If any of you happened to be visiting <XSLT:Blog/> you may have suddenly seen my hidden desire to be Kurt Cagle and the Metaphorical Web... I guess I just have a thing for him ;)
Actually, Kurt is in the middle of putting together a sing and dance presentation for us all to enjoy and we were just testing the lights.
Ummm... Why are you looking at me like that? I'm serious! The man does a mean soft shoe and you should see him when "Staying Alive" takes center stage... Its UNREAL!
Well, back to your regular scheduled program... Enjoy!
Posted by m.david at 05:04 PM | Comments (0) | TrackBack
Thanks to George Christian Bina this actually is making it out to you today... It amazes me how simple skills, or in this case not even skills but basic knowledge of the commandline, can be the difference in getting done with a project on time and turning it in 3 weeks late. Well, this isnt exactly 3 weeks late, more like 3 or 4 hours past the mental due date I had set but still, its 3 or 4 hours extra for the simple fact that my commandline skills apparently suck. Well, they did. If I didn't have the Windows CommandLine guide memorized before (obviously that WAS the case) I do now! The link to download the first part of this test suite is in the extended porition of this entry.
I am amazed at how long a grouping excercise can take when run against a 25,000 element file, all of which are candidates to be grouped by this particular test. While I am [still!] watching the grouping process take place from my commandline view I have been able to brush-up my commandline skillset as well as tidy up some files for a clients project I am just finishing. Actually, for what I thought was going to be a "didn't get jack done today" kind of day my morning has actually turned out pretty productive. I should create testsuites more often. That, or suck at more technologies (is the command line a technology anymore?) :)
The main point for developing these files was to create an automated way to test the challenge to the Meunchian Method post from the other day. For those interested in what has become a completely configurable test suite system thats starts with a couple XML config files and ends with 30 or 40 .bat files and a controller .bat file to boot you can access that portion of the test suite right here > xsltblog-dynamic-xml-test-suite.zip
This was an excercise in XSLT 2.0 coding. In reality I chose to stay away for embedding conditional logic into the XPath (Now a VERY BIG part of XPath 2.0, and is exactly where conditional logic belongs... Hidden! :) because I didn't want to make it impossible to read for someone who is brand new to the 2.0 specification. So this is a cross breed of 1.0 and 2.0 code, focuses more on the result-document portion of XSLT 2.0 more than anything else.
Still to come is a GUI that allows for transformations on the client that are coupled with a auto-documentation mechanism and XSLT "filter" for viewing portions of a stylesheet based on the selected section via a tree style interface to the left. There actually a lot more to it than this part as its something that I have been piecing together for quite some time. But I'm not sure how soon the other parts will be ready so I'm going to try and get this piece out before Christmas for the UnderstandingXSLT community members to play with. The cool part is that you can edit files you are viewing either directly or as "copies"(using just the standard htmltextbox, nothing fancy) and run the transform while living within the same view of your files without a refresh. Of course adding a simple web service will allow you to save your changes but the idea isn't to spend tons of time using this tool to develop but instead to quickly learn a concept, try it out, and move back to your regular editor where your'e more comfortable writing actual app code. As I hope it will showcase it will be a REALLY cool way to share code quickly and easily via client-side web services... We'll see what happens :)
Anyway, more on that soon. In the mean time I would love your feed back on the above files.
Cheers!
<M:D/>
Posted by m.david at 12:09 PM | Comments (0) | TrackBack
Visions of Aestia �
I don't think I will ever tire of finding ways to make variations to one of the greatest premises a movie has ever been built upon... Fortunately for you there's only so many variations that CAN be made :)
It seems Oleg's idea has already found some community support. And from none other than one of my more favorite commentors to this blog, John C. Barstow. I guess maybe Oleg might be on to something.... Hmmmm...
Posted by m.david at 03:36 PM | Comments (0) | TrackBack
While I still find it amazing that Mike has found his way to my little tiny corner of the Blogosphere to comment on some of my posts I am grateful that he has none-the-less. For further clarification of Mike's role on the XML Webdata team as well as an understanding to how he feels that we as a development community can best represent our desires for future XML technology support visit his recent comments on my earlier "Could someone get the door..." post.
As mentioned in several of his posts Mike is desirous to hear from the community. If you have comments you feel appropriate to direct his way you can find a place to do just that right here.
Thanks Mike!
Posted by m.david at 02:55 PM | Comments (0) | TrackBack
The funniest comment I have ever heard in regards to users of Mac came from Devin Sylva, the System's Admin where I am currently on contract at. In trying to promote the use of client-side XSLT I suggested that Mac users have Firefox and therefore have client-side XSLT support in TransforMiiX. His response:
As soon as we suggest to a Mac user that they install Firefox they're going to call us back and ask us where to plug it into.
That was a week and half ago and I still get tears in my eyes from laughter when I think about it.
Posted by m.david at 10:50 AM | Comments (0) | TrackBack
As I'm sure we are all aware by now Mike Champion has taken a position with Microsoft acting as what seems to be a filter for XML technologies: determining the good, the bad, the indifferent, and that in which should be bashed with a shovel and buried before it trys to procreate into nastier little versions of its nasty little self. I'm sure we all have our own opinions as to which XML-language variant/mutant we would choose as the first "bash and bury" victim but the truth of the matter is that opinions and reality rarely match up when it comes to language use and adoption. History has proven this so many times I wonder why we still feel our opinions matter and furthermore have an impact on what others might feel or think (If anything the harder one pushes the harder the other pushes back -- in fact its a fundamental law of physics and yet we, as those in whom purport to know a thing or two about the physical universe still try to prove the equal and opposite law to be wrong... Why?)
I would contend that code and content speak much louder than whichever schizophrenic variant of our opinions happens to rear its ugly head at any given moment. We're all guilty of it, myself included and maybe even more than I would want to think or admit. The fact of the matter is that if we spent half as much time contending with each other and the other half developing real-world use cases, real-world code, and real-world business logic the chances of being heard are far greater than they ever could be using just our words alone.
In the above link and in follow-up commentary on Kurt Cagle's [xml] most recent blog posting/publication ;) [That reminds me... I have a pretty cool announcement to make in regards to Kurt in the not to distant future. Stay tuned.] Mike Champion has opened up the forums, giving us access in various forms to speak our minds and promote our opinions. Might I suggest that maybe the best way to promote these opinions is by building code instead of talking smack? With Saxon and now subsequently Saxon.NET we have two processors in which we can build XSLT 2.0, XPath 2.0, and XQuery 1.0 solutions against. It seems to me that we have all we need to showcase the use of both XSLT 2.0 and XQuery by using them in real-world solutions. As the lead developer of the Saxon.NET project I can assure you there will always be a Saxon.NET (or whatever marketing name Microsoft might choose in the future.) As such writing XSLT 2.0 for the .NET platform is not a losing proposition. Nor is writing XQuery code for that matter.
So lets stop jabbering and get down to it... and it doesn't have to be from a "lets prove it to Microsoft" standpoint either. In fact it shouldn't be that way at all. What MS chooses to do is up to MS. As I mentioned in a previous post hiring Mike Champion I think is one of the most significant accomplishments Microsoft has made in terms of acquiring the absolute best person for the job. Being as accomplished as Mike is in regards to XML and related technologies (as well as many, MANY other areas) lends extremely well to the idea that the future of XML at Microsoft is at worst a bright and shiny one. But even with all of this in mind it seems our focus should not be set towards what MS may or may not do and instead oriented towards solving the problems we have with the tools and technologies we have now and know we are going to have in the future. If MS ends up supporting XSLT 2.0 (or bits and pieces of it as Oleg has suggested) in the future that's simply icing on the cake in regards to performance and compatibility with other CLI technologies. It's icing I would *LOVE* to have on my slice of CLI cake, but its icing none the less, and it would only be slightly sweeter and yummier than the icing we already have with Saxon.NET (thanks to Dr. Kay, Saxonica, and the IKVM.NET project!) Either way the cake still tastes good and as such I might wonder... with Saxon.NET are we really in that bad of shape in regards to the support of XSLT 2.0 on the .NET platform? No, I don't think we are.
Posted by m.david at 09:38 AM | Comments (2) | TrackBack
Would you like to see XSLT1.1 + EXSLT in .NET2?
As an official member of the <XSLT:Blog/> "Legends of the XSLT Community" I generally tend to pay attention and respect what Oleg has to say in regards to XML/XSLT and related technologies. As an official Microsoft XML MVP Microsoft obviously tends to feel the same way... and for good reason:
The facts are plain and simple: The man knows what he's talking about.
I definitely have some comments I want to make in regards to Oleg's "idea". But I think I need some time to let his thoughts sink in a bit and then offer a follow-up post once they have. I will say one thing though... Do you think Oleg might know something we don't? Going back to the MS XML MVP thing there is a lot of faith and trust (and signed NDA's ;)) put upon members of this elite group of XML professionals. Now I'm not suggesting that I know that he knows something in particular that he's not telling us. But I am suggesting that because of the faith and trust put into Oleg (and the rest of the XML-MVP's) by MS it might be worth paying attention. I know Microsoft will be. And so will I.
Posted by m.david at 08:31 AM | Comments (4) | TrackBack
The test XML files and XSLT file used to build them are available here. I will be using these files with an updated test suite and post it as soon as its done. Once built I will rerun the tests from my previous "Alternative to Meunchian Method" post and post the results when complete. I will also provide an explanation to the XSLT file I built to create the various test output files and add a new post with the details a bit later. In the mean time, enjoy! :)
Posted by m.david at 09:38 PM | Comments (0) | TrackBack
Posted by m.david at 07:59 PM | Comments (0) | TrackBack
IT-Director.com: The Complete Transformer
I have no idea what this one is all about beyond appearing to be an extension to Java for transforming XML messages. It seems to make an attempt to be a "I'm better than them" stab at XSLT and XQuery which leads me to question whether the benefits that come from YAXTA really outweigh the cost of deploying a proprietary Java extension that ultimatelly leaves you with the same XML data-set you get using a standards (or eventually to become a standard) based solution like XSLT or XQuery? I don't know the answer... maybe if you have an opinion or have more details on this technology you could fill the rest of us in?
Posted by m.david at 07:57 PM | Comments (0) | TrackBack
In a post to XSL-List yesterday Sergiu Ignat states:
I would like to present you a simple, XSLT 1.0, fast grouping method with a O(N*log(N)) complexity, the same as sorting. The only grouping method I knew so far is Muenchian that has O(N^2) complexity.
As Jay Bryant states in a follow up at first look this method seems interesting but as Michael Kay points out things may not be exactly as Sergiu suggests. The best way to find out of course is to write the code using the Muenchian method that uses the same criteria to produce the same output and then transform the test XML with both stylesheets using Saxon and the -t option to determine the time each method takes to finish. So I’ve done just that. The code and the results of the transformations are as follows:
Suggested alternative to Muenchian Method:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/booklist">
<authors>
<xsl:call-template name="RecursiveGrouping">
<xsl:with-param name="list" select="book"/>
</xsl:call-template>
</authors>
</xsl:template>
<xsl:template name="RecursiveGrouping">
<xsl:param name="list"/>
<!-- Selecting the first author name as group identifier and the group
itself-->
<xsl:variable name="group-identifier" select="$list[1]/@author"/>
<xsl:variable name="group" select="$list[@author=$group-identifier]"/>
<!-- Do some work for the group -->
<author name="{$group-identifier}" number-of-books="{count($group)}"/>
<!-- If there are other groups left, calls itself -->
<xsl:if test="count($list)>count($group)">
<xsl:call-template name="RecursiveGrouping">
<xsl:with-param name="list"
select="$list[not(@author=$group-identifier)]"/>
</xsl:call-template>
</xsl:if>
</xsl:template>
</xsl:stylesheet>
Solution using Muenchian Method:
While I technically wrote this code this is a technique I learned from Jeni Tennisons online tutorial a while back so credit must be given to her and Steve Muench, the originally developer in whom first suggested this method and as such the method was named after:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:key name="author" match="@author" use="."/>
<xsl:template match="/booklist">
<authors>
<xsl:apply-templates
select="book[generate-id(@author) = generate-id(key('author', @author))]"/>
</authors>
</xsl:template>
<xsl:template match="book">
<xsl:variable name="count" select="count(following-sibling::book[@author = current()/@author])"/>
<author name="{@author}" number-of-books="{$count + 1}"/>
</xsl:template>
</xsl:stylesheet>
—
The XML file presented for use is as follows:
<booklist>
<book author="Frank Herbert" title="Dune"/>
<book author="Roberto Quaglia" title="Bread, Butter and Paradoxine"/>
<book author="Kate Wilhelm" title="Where Late the Sweet Bird Sang"/>
<book author="Anthony Burgess" title="A Clockwork Orange"/>
<book author="Frank Herbert" title="Dragon in the Sea"/>
<book author="Anthony Burgess" title="Earthly Powers"/>
<book author="Isaak Asimov" title="The Foundation Trilogy"/>
<book author="Frank Herbert" title="Children of Dune"/>
<book author="Isaak Asimov" title="The Caves of Steel"/>
</booklist>
—
Rather a small sampling so this isn’t going to give us any sort of realistic feedback as to the actual processing speed of either method. I don’t plan to draw any conclusions from this, just simply present the code and data and let you decide from there if any of it is useful.
The description of the testing process used is as follows:
The first run was used to determine the initial compilation of the stylesheet + transformation.
I took note of the compilation time on the second, third, fourth, and fifth runs but generally speaking this is going to be smaller as the compiled stylesheet will be stored in memory from this first go round. However this is not always the case. See the manual for the processor you are using to determine the specifics in how a compiled stylesheet is handled while it is still the primary stylesheet of record.
With this in mind in all 5 cases I took note of the compile time and process time.
For this test I used Saxon 8.1.1 from Saxonica. The test was run on a Pentium4 2.8 Ghz processor with 1 GByte of 400Mhz Front-side Bus Ram.
In all cases (totalling 10 between the two) the following XML was returned by Saxon:
The output was as follows:
<?xml version="1.0" encoding="UTF-8"?>
<authors>
<author number-of-books="3" name="Frank Herbert"/>
<author number-of-books="1" name="Roberto Quaglia"/>
<author number-of-books="1" name="Kate Wilhelm"/>
<author number-of-books="2" name="Anthony Burgess"/>
<author number-of-books="2" name="Isaak Asimov"/>
</authors>
Sergiu’s Method
Run One: Compile Time: 938 Milliseconds Execution Time: 78 Milliseconds
Run Two: Compile Time: 672 Milliseconds Execution Time: 109 Milliseconds
Run Three: Compile Time: 438 Milliseconds Execution Time: 62 Milliseconds
Run Four: Compile Time: 453 Milliseconds Execution Time: 63 Milliseconds
Run Five: Compile Time: 437 Milliseconds Execution Time: 63 Milliseconds
It seems the execution time of run two was out of sorts in comparison. My guess is that another process on the computer caused the processing to slow and has nothing to do with Sergiu’s stylesheet.
Meunchian Method
Run One: Compile Time: 438 Milliseconds Execution Time: 78 Milliseconds
Run Two: Compile Time: 453 Milliseconds Execution Time: 62 Milliseconds
Run Three: Compile Time: 437 Milliseconds Execution Time: 63 Milliseconds
Run Four: Compile Time: 453 Milliseconds Execution Time: 63 Milliseconds
Run Five: Compile Time: 488 Milliseconds Execution Time: 62 Milliseconds
It seems that except for Run Two of Sergiu’s code the execution time for each method was near exact.
Oddly, the compile time for the Meunchian method on average increased through the completion of the 5 runs. In my opinion however the increase was not of significant proportion to let this anamoly raise any sort of concern.
The explanation as to the methode behind Sergiu’s code is as follows:
The main idea is to have a named template that takes as a parameter the node list that should be grouped, processes the group defined by the first element and recursively calls itself for the rest of the list excluding that group. The example below will group books in a book list and will compute how many books each author has (input XML is shown after it).
Sergiu Ignat Dynamic Ventures www.dyve.com
Again, I have no intention of drawing any conclusions. I will bring out the fact that the Meuncian Method allows <xsl:sort ../> to be run against the transformation where as Sergiu’s method can not use this built in method for sorting; at least not in its current state as the sort element can only be a child element of xsl:for-each and xsl:apply-templates.
Posted by m.david at 10:15 AM | Comments (7) | TrackBack
In a recent post to XSL-List Dimitre Novatchev announced the availability of version 1.1 of his FXSL for XSLT 2.0 template library. FXSL is a combination of Functional Programming extensions to XSLT that brings an astounding level of power and higher-order capability unavailable in the base foundation of both XSLT 1.0 as well as XSLT 2.0. In addition to this XSLT 2.0-based release there is a version of the library available for XSLT 1.0 conformant processors. Both versions, introduction to functional programming tutorials, sample applications built with this library, as well as extended information regarding this release can be found at the projects home on Source Forge.
For the purpose of reference I have re-published the content of this announcement made to XSL-List in the extend portion of this entry.
17 Dec. 2004
FXSL for XSLT 2.0 (version 1.1) has been released and can be downloaded from:
https://sourceforge.net/project/showfiles.php?group_id=53841
This is a maintenance release. One major bug has been systematically fixed within all stylesheet modules.
This affects the way in which template references should be declared.
Any template, a reference node to which will be passed as a parameter to an FXSL xsl:function or xsl:template, now must have the
mode="f:FXSL"
attribute, where the prefix "f" is associated with the FXSL namespace-uri:
xmlns:f="http://fxsl.sf.net/"
Example:
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:foldl-func="foldl-func"
xmlns:f="http://fxsl.sf.net/"
exclude-result-prefixes="f foldl-func"
>
<xsl:import href="func-foldl.xsl"/>
<!-- This transformation must be applied to:
numList.xml
-->
<foldl-func:foldl-func/>
<xsl:variable name="vFoldlFun" select="document('')/*/foldl-func:*[1]"/>
<xsl:output encoding="UTF-8" omit-xml-declaration="yes"/>
<xsl:template match="/">
<xsl:value-of select="f:foldl($vFoldlFun, 1, 1 to 10 )"/>
</xsl:template>
<xsl:template match="*[namespace-uri() = 'foldl-func']"
mode="f:FXSL">
<xsl:param name="arg1" select="0"/>
<xsl:param name="arg2" select="0"/>
<xsl:value-of select="$arg1 * $arg2"/>
</xsl:template>
</xsl:stylesheet>
Using unique mode is necessary to ensure that no other template will be selected for processing (note that the FXSL stylesheet modules are imported into unknown user's code).
Cheers, Dimitre Novatchev.
Posted by m.david at 02:54 AM | Comments (0) | TrackBack
Priscilla Walmsley on XQuery and XML Schema Technologies
Posted by m.david at 08:28 PM | Comments (0) | TrackBack
In a recent post to XSL-List W. Eliot Kimber announced:
The second official working draft of "Extensible Stylesheet Language
(XSL) Version 1.1" has been published at:
http://www.w3.org/TR/2004/WD-xsl11-20041216/
For those of you wondering this draft is for the specification more commonly known as XSL-FO as opposed to the latest working draft of XSLT 2.0 which is the current working draft version for XSLT.
Posted by m.david at 04:48 PM | Comments (0) | TrackBack
10,000 Firefox enthusiasts make history - Spread Firefox
Congratulations Mozilla.org!
Posted by m.david at 04:19 PM | Comments (0) | TrackBack
We have our first entry! See the comments section of the "XSLT 1.0 - Building on what we already have" post inspired by Simon St. Laurents challenge from this morning. Quick glance tells me this might be a pretty sweet entry! Please trackback, comment, or otherwise let me know your thoughts. Thanks Alex!
Posted by m.david at 03:54 PM | Comments (0) | TrackBack
Timeshifting not always a good thing?
In a recent comment Michael Champion [who is now part of the XML team at Microsoft] writes:
See Arpan Desai's discussion of the timing issue as well.
This is a FANTASTIC explanation by the XQuery and XSLT Program Manager Arpan Desai as to the decision making process involved in whether to support or not support any particular technology on the .NET/CLI platform. Its very specific to XQuery and XSLT 2.0 and answers a TON of lingering questions. My "The future of XSLT Support on the CLI Platform" candle is beginning to burn just a little brighter this morning. :)
A snippet to appease you while you wait for the link to load:
- When we do decide support something, it should have a pretty long lifetime. XQuery 1.0 and XSLT 2.0 are huge undertakings. Writing an implementation is, surprisingly enough, is one of the simpler factors. Making sure it's scalable makes things a little harder. Getting the quality high enough so it's enterprise-ready (btw, this is much, much more than passing XYZ test suite) is pretty difficult. Getting tooling support like query generators, debuggers, and profilers is a substantial amount of work on top of everything else. Investing this much into a couple of unfinished standards? Maybe not the best idea.Thanks for the link Michael!
Posted by m.david at 06:54 AM | Comments (0) | TrackBack
Building on what we already have
This is an absolutely FANTASTIC article by the ever-so-entertaining and right-on-the-XML-money Simon St. Laurent. This article has reminded me that even with XSLT 2.0 and all of its wonderful additions and features looming on the horizon the here-and-now is XSLT 1.0 - A VERY powerful language in and of itself.
Sometimes it takes a swift kick to the cranium to make me realize that not everything in the world of software development has to be different and new to be useful and exciting. In fact I think Google has proven with applications like Gmail that some of the most powerful and useful applications can be created using the same "old-things" that have been laying around our metaphorical software "junk-drawer" for years.
Makes me wonder... what kind of [updated-insert: other] cool things can we do in the here-and-now with XSLT [updated-insert: that we're not already doing] via a 1.0-compliant processor, a processor that supports the EXSLT extensions, XSLT 1.0 compliant stylesheet extensions like Dimitre's FXSL, as well as the various extensions to XSLT made available to us via MSXML, System.Xml.Xsl, Xalan, Saxon, libxslt, and yes (I can't believe I'm letting myself say this), even Sablotron (agghhhhh, I think I need to go take a shower now.... bllluuckck.)
Maybe we could start a little XSLT Virtual Science Fair (look what I made ma!!! :D ). It could be kind of fun seeing what cool and wonderful things we could make with the same old "junk" we've had laying around for years. Google helped make simple cool again (THANK FREAKIN' GOODNESS!!!) The new MSN Music site has proven just how powerful simple can be (I flat out LOVE that site... Whoever is responsible for that fantastic spectacle of simplicity - my hat goes off to you - THANK YOU! :) So now that we can be cool AND simple at the same time and not risk getting beat-up on the World-Wide Playground [updated-insert: of cyberspace] after school maybe its time we did just that.
Anybody up for the challenge?
Thanks for the reminder Simon! As always your insite into the reality of XML and how we can best use it in our development is respected and appreciated.
Posted by m.david at 04:49 AM | Comments (3) | TrackBack
XML.com: XML Namespace Processing in Apache
Some of the best advice I have ever been given came from Dr. Wendell Piez when he commented (and I paraphrase) not to let "religion" overcome common sense. He wasn't speaking to religion in the sense of my belief in God but in the sense of my belief in XSLT, two obviously very different things :) His advice was very appropriate and has stuck with me ever since.
This article suggests that to those willing to work at a much lower level in the form of the Apache and SAX API there are alternatives to the more commonly understood and therefore used languages in Java, XSLT, and PHP. From my side of the world I would add that there are also many alternatives to XSLT that exist within the .NET framework and can be accessed at very high levels via many different languages, C# and VB.NET being the most common.
Don't get me wrong. I have no plans nor intentions of hanging up my XSLT hat at any point in the foreseeable future. Its simply too powerful of a language to not use when the time is appropriate and the benefits that come from its use outweigh the cost in the extra processing time incurred by its use. In fact as I have stated before (not so much on this blog but in other forums like XSL-List) and as I know people like Oleg Tkachenko full whole heartedly believe client-side processing of XSLT via MSXML, client-side use of System.Xml.Xsl, TransforMiiX, Saxon, Saxon.NET, and in the near future libxslt on Safari (see previous link to Oleg's comments on this) is a VERY ATTRACTIVE and POWERFUL tool that has been in our toolbag via MSXML since IE 5.0. But it hasn't been until very recently that it has been considered a realistic solution given its historically recent addition to the Mozilla family of browsers, thus making the solution cross-platform. And with open-source projects like Sarissa turning two very different API's into one very accessible and powerful wrapper API this "new found" alternative becomes that much more appealing.
But this article has nothing to do with the client and everything to do with the server. If nothing else its good to know that there are alternatives to server-side XML processing. This is one of them.
NOTE: This article focuses on the SAX-style XML Push processing model [-> link to push vs. pull comparison] The CLI (.NET framework via System.Xml) introduces the pull processing method which is extremely fast, very powerful, and something that should be looked into and considered when looking to increase XML processing performance on the server.
Posted by m.david at 03:40 AM | Comments (0) | TrackBack
This is a conversation that Jeff Julian began and has since been followed up by Soumitra Sengupta on the Microsoft XML team and later by Oleg Tkachenko. The title of the piece doesn't give a clear understanding as to what the conversation is about so let me summarize:
Soumitra: snip... I am interested in your take on XQuery. Did we make the right or wrong call on this?
Jeff: snip... Yeah, I would say you made the wrong decision.
Soumitra: XQuery is not a W3C recommendation yet and will not be for at least a year (maybe more) snip...
I'll let you follow the link if your'e interested in following this "saga" in the making and potentially participating in it yourself. But some things have recently come to my attention that I had never even considered in regards to all of this so let me quickly follow with some comments on the matter.
In a recent conversation with someone close to this situation it has become suddenly and painfully obvious why Microsoft first cut XSLT 2.0 and has since cut XQuery (there is still a subset supported in Yukon, but the .NET client/server support is gone) from the release of .NET 2.0. Obviously this was a painful blow to the XSLT community when we first heard about it and I will be the first to admit that I experienced a bit of a sense of glea when I first discovered that XQuery would be cut as well [I don't hate XQuery I just love XSLT so its tough not to have those kinds of feelings when the "competition" gets cut right along with you]. But even when that happened the obvious still didn't occur to me. It wasn't until I read the following that it suddenly dawned on me why the support was cut:
"Clearly MS helped put XSLT on that map by supporting it in IE5, but that experience (or rather, the fact that a pre-Rec version was initially supported and that has to be maintained for a long time in the future) has made the idea of supporting XSLT 2 *before* a Recommendation a total non-starter here."
Obviously the same is true for XQuery. No W3C Rec, no MS support. Plain and simple. Now, I'm not suggesting that I happen to know any specifics as to whether this is an official policy for EVERYTHING at Microsoft. But I think its obvious for something as big as XSLT 2.0 and XQuery that the implications of long term support of a technology within a product require that MS has some sort of assurity that what they ship is going to be what is officially deemed a W3C recommendation. To be honest, now that my eyes have been opened to what should have been obvious I don't blame them one bit. If I was Microsoft I would be covering my A$$ too...
While its obvious there was nothing "revealing" in the above statement that shouldn't already be obvious it does do one thing for the little XSLT 2.0 candle burning inside of me: It does give me a bit of hope that when the final rec comes from the W3C that MS may decide to offer support in some future release of the CLI (.NET as it is known in today's marketing terms). My guess is (and this is just a guess, my connections to Microsoft are not THAT strong) that if we, as the XSLT community, can showcase the fact that adding support for XSLT 2.0 is something that adds value to their customer base then there is no reason why they wouldn't find reason to put the resources into bringing this support into the CLI fold at some point in the future.
Maybe with Saxon, Saxon-SA, and their Saxon.NET counterparts we will be able to prove just that... I guess maybe in some ways its up to us?
Something to think about...
Posted by m.david at 04:54 PM | Comments (3) | TrackBack
Every once and a while someone will post a question to XSL-List in regards to accessing non-XML files and using them in a transformation. While its impossible in XSLT 1.0 to directly access non-XML text files heres a trick that David Carlisle recently posted to yet another question on this subject:
--
> I need my xsl reads a txt file, like this:
XSL1 can only read XML files, although you can easily make an xml file wrapper around your text if you have a file.txt that you know doesn't have any < or or > & characters in it then you can make a file.xml that looks like
<!DOCTYPE vector [
<!ENTITY x SYSTEM "file.txt">
]]>
<vector>&x;</vector>
then in your xslt you can go
<xsl:copy-of select="document('file.xml')"/>
and will get
<vector>
10101010101010101111010101010
10101011100001010101010101010
00011010101010101010101011011
</vector>
as the result.
-- In follow up Michael Kay adds:
In 2.0 it's simply:
<vector>
<xsl:value-of select="unparsed-text('file.txt')"/>
</vector>
--
Related to this topic, special character handling in XSLT is something that is not very well understood. A fantastic reference on this subject was created by Dave Pawson and can be found within his excellent XSL FAQ
And to close up this post: Encoding happens to be one of the current topics over on UnderstandingXSLT.com in which Jeni Tennison has posted a lot of valuable insite and related links. If you haven't had a chance to add the XML feed of your choice to your reader here is the Atom, RSS 1.0(RDF), and RSS 2.0 feed.
Posted by m.david at 05:30 AM | Comments (0) | TrackBack
For the record Nat Friedman and Edd Dumbill et Al. have been developing the dashboard project for quite some time. A blog journaling their efforts can be seen here. [XML]
Posted by m.david at 09:12 PM | Comments (0) | TrackBack
Hmmm... In all fairness I'm guessing DataPower has something similar so if I hear about or discover anything of this sort for their product I will post it.
In the mean time this report seems quite interesting and worthy of a read for sure.
[Update: In further review of this the following seems like an important detail to take notice to. Very Interesting Stuff!]
---
"Using real world test cases, we tested XML Web services security and
acceleration at very high transaction rates and widely diverse sizes using a
single Sarvega appliance against ten dual-processor Pentium 4 Xeon servers.
The results of the Sarvega products demonstrated new levels for performance
not before seen from a single product." said Kevin Cooke, Director of
Independent Testing Services."
---
Hey Sarvega: Did I mention I would be more than happy to run independent tests of my own and publish them here on XSLTBlog? You don't have to thank me... it would be my pleasure ;) :D
Posted by m.david at 08:56 PM | Comments (2) | TrackBack
InfoTrends/CAP Ventures Articulates Business Benefits of XSLT 2.0
Sorry for copying all of the text from this press release but this is WAY to big of a deal to not highlight!
---
[All of this is a direct copy from the press release]
According to a new analysis report from InfoTrends/CAP Ventures, the World Wide Web Consortium's (W3C's) XSLT 2.0 (Extensible Stylesheet Language Transformations) specification demonstrates the tangible benefits of a corporate and IT investment in XML (Extensible Markup Language). Titled "A Focus on XSLT 2.0: Understanding the Development and Business Benefits," the report discusses XSLT 2.0's ability to substantially reduce code complexity and streamline development while simultaneously allowing developers to increase the capabilities of XML transformations.
"XML usage is widespread throughout a myriad of data and document-driven business processes, and information transformation is a critical component for its success," said Mike Maziarka, Director of InfoTrends/CAP Ventures' Dynamic Content Software Strategies Consulting Service. "With the significant improvements made by the W3C to the XSLT 2.0 specification, we expect it to play an even larger role in applications focused on enterprise application integration, single source publishing, and content management."
The full six-page analysis report is currently available to the public and can be downloaded free of charge at http://www.capv.com/home/Downloads/10.22.04.pdf. The report explains the most recent additions to XSLT as outlined in the W3C's XSLT 2.0 working draft and the benefits of the additions from developer and corporate perspectives. The report also discusses the relationship of XSLT 2.0 with its sublanguage, XPath 2.0, and how these interdependent transformation and navigation languages form the key components of functional programming for XML content. These specifications provide several important benefits for developers and corporations, including enhanced developer productivity, data reusability and interoperability, and application versatility.
XSLT 2.0's productivity and development quality benefits highlighted in the report include the reduction of complex and proprietary coding through the use of higher order functions and support for strong data typing. Notable data reusability benefits include support for user-defined functions, multiple output processing from a single XSLT transformation, and data grouping and aggregation. Notable areas of data interoperability include support for multiple input processing as well as string sorting and comparison. In addition, the specification's versatility is indicated by the introduction of temporary trees, independent processing capabilities, and support for complex text and data manipulation.
Posted by m.david at 08:46 PM | Comments (0) | TrackBack
COMARCH COMPLETED OSS IMPLEMENTATION AT O2
"Comarch, a provider of OSS/BSS solutions, has successfully completed the implementation of its network management solution based on Comarch InsightNet platform at O2 a mobile operator in Germany. With the new open and flexible solution provided by Comarch the major benefits for the customer include centralized and unified management of its multi-vendor transmission network and low total cost of ownership. Currently Comarch InsightNet covers over 20 000 network elements at O2 Germany."
and a bit further down...
"The project for O2 consisted of four stages and was commenced in July 2003. Comarch used open technologies during the project (XML/XSL, Java etc.) which assured quick and smooth integration with other sub-systems. In particular, the benefits included short development time and reduced work effort (about 70% effort saved in comparison to legacy technologies), easy deployment and simple way of implementing changes. Modern technologies used to develop InsightNet assured the full integration of all the IT systems at O2 Germany and the efficient flow of information among different platforms and systems."
Cool!
Posted by m.david at 08:34 PM | Comments (0) | TrackBack
Intelligent Enterprise Magazine: Beyond the World Wide Web
Posted by m.david at 12:03 AM | Comments (0) | TrackBack
InformationWeek > Data Management > Oracle Aims To Tame Out-Of-Control Data > December 13, 2004
Actually theres no mention of Google in this article per se... But it seems that Larry Ellison has no plans on letting Microsoft and Yahoo be the only real competitors in the hunt for the the Golden Google Egg of search. Of course their focus is from the corporate customer perspective, allowing the ability to build and manage complex datastores that are exposed via XML documents which can then be queried against using XQuery...
From the article:
"Oracle appears to be listening. Last week, it unveiled new ways for customers to deal with unstructured data. Oracle is building XQuery into release 2 of the Oracle 10g database, due in mid-2005. XQuery lets users create queries to search stored XML documents and look for specific pieces of information, much like SQL queries do with relational databases."
[Lots more on this in the extended portion of this posting...]
No direct mention of anything beyond the IntraCorporate document base that their current customers undoubtedly want easier programmatic access to. XQuery is of course the obvious solution for a base of Oracle developers looking to extend their existing Query Langauge skill-set to access and query XML documents... makes perfect sense.
But one can't help but wonder what is really going on in the mind of Larry Ellison and company when you consider this snippet:
"Oracle also debuted Oracle Files 10g, a content-management system due early next year for managing and storing E-mail, Word documents, spreadsheets, and Web pages. Content will be searchable and specific items can be retrieved without users knowing their whereabouts."
Let me pull out the part that struck me to be a bit more interesting than the rest of that paragraph... "...retrieved without users knowing their whereabouts."
WinFS is obviously focused on this exact premise: to rid our world of the so-called evil and dreaded folder-based heierarchy file systems we currently use. From a Google perspective: While making no mention as to any attempt to compete in the core file system market [which of course would be the core Operating System market given the inherent co-dependent nature between a File System and Operating System] it seems that they feel confident they have no need to as its not the file system thats the biggest problem but the habit of the user to rely on human memory as their primary search tool. Even with this in mind its tough to ignore the idea that the Google/Firefox/Mozilla relationship could easily lead to a Google funded Uber-Browser [They've got the money to do it now! Many strides must be made on the XUL/XVG side of things but they already know this so no doubt Brendan Eich and company are investing the necessary time and brain-power to bring these technologies to where they need to be to compete with XAML and WinFX] -- Add to this Adam Bosworth, the purchase of Picasa and Keyhole, the Gmail client-side application, the long running Web API program, orkut (which interestingly enough runs on .NET) and a continued list of other interesting pieces and you have to give credit to the idea that the resources exist to do some pretty interesting things. Hell, with Adam Bosworth alone you have to give at least a wrinkled brow or twos worth of "hmmmm"'s to the idea and in fact shame Google at a later date if they were to NOT make an honest attempt to use what they have... Something tells me that there's nothing to be concerned about from this front... You don't acquire Adam Bosworth because of dumb luck nor would I believe it of you told me he went their because of any other reason beyond the fact that he knows what needs to be done and now has the resources to do it... :)
Moving on and back to Oracle... Of course with the release of the MSN Desktop Search today and Yahoo!'s plan for a January release of their desktop search beta you can't help but wonder why Oracle would just sit back and not at least make a corporate level attempt at delivering a similar program to their customers... Oh wait, they are....
[Repeat from most recent quote:]
"Oracle also debuted Oracle Files 10g, a content-management system due early next year for managing and storing E-mail, Word documents, spreadsheets, and Web pages. Content will be searchable and specific items can be retrieved without users knowing their whereabouts."
It seems things are about to get interesting in the coming months and I am glad to see that XQuery will be given a chance to prove itself in an application specific domain such that Oracle is gearing it towards. Can I just make one quick suggestion...
...when you have your XML subset returned to you via yourXQuery based query don't try and use XQuery for formatting it into each respective output format. If there is a demise of the use of XQuery it will not be from its inability to easily Query XML data but at the attempt by the developer to also use it as an XML document transformation utlity. While functional-based its not template-based, it can not make self references, or in other words query itself as to its code structure and usage (especially useful for self-documentation and debugging) and it's lack of recursive template usage pigeon-holes its reusability to somewhat hard code restraints, none of which lends well to building libraries of reusable generic code that can easily be used or at very least retrofitted to be used for a completely seperate schema of data. We are beginning to live in a world of Domain Specific Languages... lets not try to turn a DSL into something it wasn't designed for and instead use a DSL that was designed for this very specific and necessary task... recursive, template driven transformations that, with XSLT 2.0 can be output to multiple sources during the same transformation, process strings and text nodes using Regular Expressions, use 80% of XQueries capabilbity via XPath 2.0 and functions, conditional logic expressions, etc... built directly into the syntax, treat dyanically built element structures as node-sets (actually sequences), build custom and reusable functions, etc.. etc.. etc..
If probably used both technologies will not only survive but thrive..
With that said your going to be hard pressed finding a developer on the planet who sees XSLT as a reliable alternative to SQL-like Querying of XML documents. In fact, I am almost inclined to suggest that, in reality, XQuery and XSLT have very little in common when considering the practical usage of each technologies focus and strength. So to reemphasize, by all means, use XQuery to query XML documents for content, return the XML subset to a stream object, and pass that stream to either a storage system for later transformation or directly pipe it into an XSLT 1.0 or 2.0 based transformation process where you can easily make use of what will very soon be a near unlimited library of reusable XSLT stylesheets that will act in the capacity of an API-level development platform developed by some of the biggest and the best from the XSLT community and beyond... How do I know this... well, you'll soon find out how I know this... so stay tuned ;)
Cheers!
<M:D/>
Posted by m.david at 10:43 PM | Comments (0) | TrackBack
Create ASP.NET pages from XML data: Builder AU: Web Development
Yet Another <asp:Xml> Server Control tutorial but this is short and sweet and it actually covers adding params via this method - something I rarely see (see this post from a few weeks back in further regards to this.) Given its size and the fact that it covers params its seems like a perfect tutorial for an experienced developer looking for a quick "glance over" tutorial to get up and running with server side control-based XSLT transformations.
Posted by m.david at 09:37 PM | TrackBack
Ektron Offers a Visual Development Environment for Rapid CMS Integration and Deployment
From the article:
"In addition to visual server controls, developers can integrate Ektron CMS functionality in other ways. Web developers can access CMS data objects, exposed through server controls in their own code-behind, so they can programmatically manage data and create highly customized and dynamic Web sites. Developers can also apply an XSLT to data returned by the controls, supporting flexible Web presentation options and enabling developers, system integrators and Web development firms to build custom code within templates."
Posted by m.david at 09:28 PM | Comments (0) | TrackBack
Dare Obasanjo aka Carnage4Life - XML Heavyweights Migrate to Redmond
It seems that the MS Recruiters have yet another reason to stick a metaphorical feather in their metaphorical cap. In a recent appearance to the comments section of this blog the East Coast Don (DonXML) writes:
---
FYI, Mike Champion now works for Microsoft. See Dare's post: http://www.25hoursaday.com/weblog/PermaLink.aspx?guid=2c36ee96-026f-42d5-b649-483f716376ee
---
It seems I need to go and open up my feed reader and email client and catch up on the news... Actually, I'm kind of scared to do so as I have primarily been using my Gmail account that Don so graciously invited me into a few weeks back and its been several days if not more since I've accessed my regular email account... Not a thought I want to think about at the moment as I discovered in the past that letting that account "collect" mail for too many days straight tends to force me into a 5 hour catch-up session from hell... FYI... If you've sent email to me via my regular email address in the past few days now you know why I haven't responded :) I'll catch up tonight after I finish up a project I'm working on... Sorry for the delay!!!
Thanks for this tidbit Don! This is exciting to think about from the standpoint of XSLT as someone like Mike Champion could have a serious impact in regards to the future of XSLT support at Microsoft. Definitely something to keep an eye on.
Cheers!
Posted by m.david at 12:19 PM | Comments (0) | TrackBack
Metaphorical Web: Imports and Tunnels in XSLT2
A pretty interesting post by Kurt Cagle on XSLT 2.0 and the changes on stylesheet imports from 1.0 with some interesting follow-up comments from Dimitre.
Posted by m.david at 10:29 AM | Comments (0) | TrackBack
The answer from Tim in regards to my earlier post came after a pretty funny post to xml-dev from Michael Champion:
---
On Thu, 2 Dec 2004 17:52:17 -0000, Michael Kay
> >
> > Developers who prefer XSLT to
> > C#/Java/Perl/PHP/Python/Javascript are in the minority and at
> > best are a niche market.
>
> Developers are a niche market.
http://www.xsltblog.com/archives/2004/12/could_it_be_tha.html may be
the last word on this topic: :-)
"Tim Bray declared that to understand XSLT you must first reach up
with both hands and grab the two halves of your brain peeling each
back until you have successfully turned your brain completely inside
out ...Are we all masochists???!!!" "
I'm pretty sure that masochists are a niche within a niche market,
---
:) I'm pretty sure they are too :)
In follow-up Tim Bray posted:
---
That's amusing but I don't *think* I said it.... mind you, we stayed up pretty late. I seem to recall saying something along the lines of a long-time procedural-language guy like me having to invert the brain to use XSLT effectively... -Tim
---
:) It was definitely the end of a very long travel day so its safe to assume that the exact details of the comment were forgotten by both of us just as quickly as they were made. None-the-less, whatever the details as to the specifics I found myself laughing for days after Tim had made this comment. While the exact details are missing the general idea is still there... actually I think it was more of the hand gestures and the look on Tim's face when he said it that had me rolling in the aisles. Definitely a missed Kodak moment :) Good times, good times... ;)
Actually, in wake of the "not-my-top-20-list" post from last week I'm just glad to see that this didn't spawn a similar "not-my-comment" post ;) Thanks for the laugh Tim!
Posted by m.david at 09:52 AM | Comments (1) | TrackBack
Magic Bean Dip ? Blog Archive ? Unencoded Amazon Web Service data makes XSLT abort
While sitting at the Skamania Lodge bar and surrounded by a sea of gawking fans (actually I think it was just me, Adam Kinney, and possibly Steve Maine but I can’t be certain… I was too mesmerized by the moment ;) Tim Bray declared that to understand XSLT you must first reach up with both hands and grab the two halves of your brain peeling each back until you have successfully turned your brain completely inside out (I wish I could remember the exact quote as it was a lot better than my description… Tim, if you happen to read this could you please give us the official “Tim Bray’s Definitive Guide to Understanding XSLT” description… for the record :)
To further add fuel to Tim’s descriptive fire according to Mike “The Magic Bean Dip” Majorowicz:
“For reasons I’m not completely sure of, I’m a fan of XSLT. There are times when I actually enjoy trying to figure out ways to do things in XSLT that would be simple in other languages. I use Lagoon and XML/XSLT to maintain a website for my wife’s artwork. I’ll admit that my fondness for XSLT may be masochistic, but I draw the line at trying to process unpredictable data with XSLT.”
If you follow the above link you’ll have a better understanding of that last line but taking things further could The Bean be on to something here…?
Are we all masochists???!!!
I will definitely add my name to the list of hackers who finds pleasure in seeking a way to do with XSLT (e.g. string manipulation) what would equate to 2 or 3 lines of Perl. But that’s true for any hacker and his or her favorite language. Pushing the envelope is a true hackers nature… It’s what makes a hacker a hacker! It’s what seperates the men from the boys’, the addicts from the recreationists, the hackers from those in whom truly believe writing code starts at 9 and ends at 5… (If you find yourself looking for clarification as to whether I mean 9am or 9pm chances are good you’re a hacker ;) [Just to clarify… To a true hacker writing code starts at noon and ends when you pass out.]
Still, I most definitely think that Mr. Masochistic, err, Majorowicz could be on to something… and it seems this something is a something Mr. Bray has known all along…
Stupid Simple It Keep! (oddly, KISS spells SSIK backwards…. hmmmm.)
Posted by m.david at 11:57 AM | Comments (0) | TrackBack
I'll be taking down the server for about 30 minutes to do a quick hardware upgrade in about 10 minutes.
UPDATE: Maintenance Completed at 02:48 MST
Posted by m.david at 02:24 AM | Comments (0) | TrackBack
![]()
I got a call from my local B&N today telling me a book I had ordered was in. I wasn't sure at first which one they were refering to (I tend to have them order a lot of titles that they don't have in stock as made more obvious by this post) but when I got there and saw them pull "The Little Schemer" off the hold shelf a huge smile cut across my face. As you can see I am quite excited by this. In a post from a week or two ago I made mention to a post to XSL-List by Andy Dent who spoke about this title as one that had helped him learn the thought process and techniques behind functional programming via little brain excercises. The book is published by MIT Press, one of my favorite publishers (O'Reilly and Apress being my other favorites.) While I wasn't necessarily looking to purchase a title on learning the fundamentals behind functional programming (I feel pretty comfortable with my knowledge and skillset in this area) I am quickly learning from the UnderstandingXSLT project I started a few weeks back that it doesn't really matter how much you know or think you know on a certain topic you are only going to get better if you start back at the beginning and re-learn what you already know or think you know. Its amazing the holes and cracks you can fill in by running through an excercise like this. And seeing things from others perspective helps shed a lot of light onto areas that, in the past, I hadn't even considered important. How about this for the catch phrase of the week:
"Open minds open books."
Think about that for a second if it doesn't hit you right away as to its meaning.
Cheers!
NOTE: I realize this is a phrase thats been used and has been around for a while. I just like it :)
Posted by m.david at 04:19 PM | Comments (0) | TrackBack
In a recent comment to my most recent post Bryan from Itnisk pointed out the following post from xml-dev:
http://lists.xml.org/archives/xml-dev/200209/msg00282.html
Notice the date: Date: Thu, 12 Sep 2002 07:05:07 -0700 - This post is now 2 years old.
Are the "times they are a changing" and people are beginning to see things from a slightly different perspective now that binaryXML is threatening that in which they have spent so much time and energy building? Or was it that 2 years ago people didn't recognize that a major problem with network capacity was looming and as such simply didn't see the point in accelerating something that at the time seemed fine the way it was?
I have no idea what the answer to this question is. In my world I'm not dealing with networks that are overburdened with XML data. In fact to me it seems that XML has solved more bandwidth issues than its created. But my world is obviously different than the world others are faced with as its obvious this is a serious problem for those who are dealing with networks that were not designed for the capacity that they are currently dealing with. Thats not to say that if Sarvega or DataPower suddenly decided they wanted XSLTBlog to be running on top of their hardware that I would say no (was that obvious enough or should I just flat out say it.... I WANT ONE!!!!!!!!! or TWO!!!!!!! ;) :) :D ) Faster is always better.... err, wait.... ummmm.... well, anyway, I want one no matter if it is or if it isn't ;)
But whether my Christmas stocking comes stuffed with hardware acceleration or not the question still remains... What is the problem and is hardware acceleration the solution? If not two years ago, why now? Is "xoptimize" the word of the year for 2005 (How cool would it be to say that you coined the "word of the year" for 2005 -- Wait! Before you come and try and tell me I wasn't the first one to use the word just let me live in my fantasy world for just one more day, k?! ;) :D )
Thoughts, comments, questions, answers?
Posted by m.david at 03:28 AM | Comments (0) | TrackBack
As I mentioned in my last post I owe Rich Salz [By the way Rich, it's great to have you back! You were missed!!!] and DataPower a post of their own. While I haven't had a chance to look further into their XML Hardware Accelerator the mere fact that Rich Salz is involved suggests that its going to be a pretty kick-butt product. Besides, just as Rich suggested a quick Google for xsltmark provides a wealth of links to the benchmarks related to this product. And by visiting DataPowers site you can gain access to an entire array of whitepapers that cover topics from securing web services to managing the complexities of web services deployments. Interesting stuff!
As Rich mentioned in his comment hardware acceleration is a pretty hot ticket at the moment, and for good reason. While some might argue all hardware acceleration does is bring XML applications to the same performance level of binary data-based applications my counter question/remark would be "You mean I can get all the power and benefit that a XML/XSLT-based solution brings AND get the same performance as an application that has been painstakingly handcoded in C or at best C++? WOOHOO!!!"
Actually, rumor has it that the performance might even be better...
Thoughts?
Posted by m.david at 11:33 PM | Comments (2) | TrackBack
Not sure if my earlier post had anything to do with this or not but Girish, a member of the Sarvega staff, just left a comment suggesting that I return to the Sarvega site to gain access to the missing benchmark. Sure enough after following the link there it was... I had to provide a tidbit of personal information but thats to be expected. Sure enough, after handing over a completely fake identity (of course I'm kidding ;) I was given access to the said benchmark study and kit... WooHoo!!! I will follow up later with any information that seems important enough for a post.
In the mean time I owe Rich Salz a post as well. He was good enough to give me pointers to the DataPower XML hardware accelerator either the same day or the day after my post regarding the missing benchmark on Sarvega's site. While I haven't had a chance to review this offering the mere fact that he was good enough to leave me this information I think more than deserves a post completely dedicated to his companies offering. I'll do that next. Sorry for not getting to this sooner Rich!
Posted by m.david at 11:03 PM | Comments (0) | TrackBack
So if anybody is ever trying to track down friends from years past I've discovered a really good way to do it. Just blog it, wait about 2 1/2 weeks, and WHAMO!!! there they are. Its like magic :)
It seems my old buddy from long before Microsoft was even a twinkle in either of our eyes (oh the stories Kerry could tell you... yikes!!!) has just returned from his honeymoon (YOU GOT MARRIED????!!!!) and somehow either got pointed to one of the first entries on this blog or simply came across it himself. Hey Kerry, I will be in contact via email here in a jiffy but I couldn't help but point out the fact that my blog-based "tracking system" actually worked! :) Actually, given that Kerry still seems to be in the MSN group where he's basically been since he started at MS back in '96 I guess I could have just tried his @microsoft.com email address and tracked him down just as easily. But that wouldn't have been as fun ;) :D
Posted by m.david at 08:31 PM | Comments (0) | TrackBack
IBM moves the database goalposts | The Register
<xsl:if test="XML/Embrace[Extend]">We Have A Winner!</xsl:if>
Posted by m.david at 08:42 PM | Comments (0) | TrackBack
A P R E S S . C O M | Books for Professionals, by Professionals ...
Youve got to love free content... especially free content thats also really good!
Posted by m.david at 08:31 PM | Comments (0) | TrackBack
If you haven't heard of John C. Barstow my guess is that sooner or later (or how about right now :) you will. In a post I made last week in regards to the thought that I may be the last guy on the planet who was not developing with Python and just what was Python all about anyway John was quick to follow up with an explanation that quite honestly made absolute perfect sense. And it took all of half a page... In BIG PRINT, to explain. As Michael Kay and Dave Pawson (as well as probably 99.100% of the regular subscribers to XSL-List) will undoubtedly agree the verbosity of XSLT doesn't hold a candle to the verbosity of some of my posts. A month or two back in an email to Dave Pawson in which I made the preceding statement "In short..." to then follow with several paragraphs of explanation Dave responded "I'm beginning to think that the two of you (refering to the phrase "In short") are but strangers to each other". In a reply once from Michael Kay... "Will you please not write so much..." :)
Being one of verbose linguistic proportions you might think I might also be the type who appreciates a good novel or two's worth of content on any given subject. And yet when I read explanations like John's insite into the boolean-like comparison of RDF/OWL == XML/XSLT I find myself thinking "Dude, you need to find a way to simply stop talking so dang much..." Ahhhhhh.... well, such is the life of one who grew up in the GooGoo eyed world of 4 beautiful and adoring older sisters followed by 1 younger sister who made sure I didn't forget just how important yack, yack, yacking it up was. In my household the following choices existed... either beat my head against a wall until I knocked myself out and no longer had to listen to the chat, chat, chattering that surrounded me or simply join on in with the festivities. You can thank my sisters later ;)
In the mean time take a look at the following links:
http://www.nzlinux.org.nz/blogs/index.php?p=63
and
http://www.nzlinux.org.nz/blogs/index.php?p=64
The category link is:
http://www.nzlinux.org.nz/blogs/index.php?cat=7
Thanks John! These are fantastic comparisons and I am grateful you took the time to point them out to me. I believe a lot of people will have a much better understanding of the comparison of RDF/OWL to XML/XSLT in just about the same amount of time, if not less, it took to read this post.
Cheers!
Posted by m.david at 07:33 PM | Comments (0) | TrackBack
In a recent post to xml-dev Tim Bray writes:
"On Dec 9, 2004, at 8:20 AM, Jonathan Robie wrote:
> I'm surprised by the continuing length of this thread. Isn't it
> obvious that both XSLT and XQuery have advantages, a reason to exist,
> and a market?
No, for XQuery that's not obvious it all. It seems plausible, and it
will certainly be interesting to find out, but obvious? No. -Tim"
I've added a new category >> "XSLT vs. XQuery - The Debate" which will allow you easier access to the posted threads in regards to this hot debate taking place on xml-dev. I am in the middle of finishing some work but when I'm done I will add of the posts that are specific to the xml-dev debate to this category as well as whatever other category they are currently filed under.
If you would like to send trackback comments or links specific to this category please use:
http://www.xsltblog.com/xslt-blog-mt/mt-tb.cgi/141
I believe we have a new XSLT Quote of the Day although I have another from Dare Obasanjo I've been saving that I think I might want to use first. At any rate at some point Tim Bray will be taking his rightful ownership in the XSLT Quote of the Day category.
Cheers!
Posted by m.david at 02:34 PM | Comments (0) | TrackBack
In a recent post to his blog Edd Dumbill has made somewhat of a "Call-to-Arms" for the open source community to pick up projects like IronPython, bring them to the Mono project, and get them fixed so that the support for dynamic languages such as Python will be available to developers on the .NET platform. Coming from a very strong Microsoft/.NET development background into the Open Source community has definitely been an eye opener in making an attempt to understand so many technologies that have Unix/Linux roots in which I have simply never had a chance to learn and therefore understand. The Mono project definitely was something I took great interest in, especially as of late, given that it brought .NET further into the Open Source limelight and opened its doors to a wealth of developers who would have otherwise had no interest. It has also helped in my personal transition to this community as it has given me the opportunity to learn about things like GTK using a language syntax I was more used to in C# (via the GTK# project.)
A few months back I created a project and site design for MonoNucleus.com which I had earmarked as a place for developers like you and I to come together and learn, discuss, enrich, extend, and publish information in regards to the Mono platform. However I haven't done a lot with it since then for the simple reason that my priorities have been with other projects. I have made note on that site that if you are interested in helping me get this site started to please contact me as such. I think having a central place in which we can all come together and work as a team on various projects building, blogging, and documenting the processes as we go could be a fantastic way to take projects like IronPython and bring them into a reality for the .NET platform via the Mono project. I have had every intention of taking MonoNucleus to where it needs to be when the time was right. Maybe that time is now?!
The other portion of MonoNucleus.com is MonoBlogs.com which was conceived to be exactly as it sounds. I just checked and it seems I never updated the zone files after I registered the domain so its still pointing at the GoDaddy parked page. I've made the change to point it to one of my servers and if there is enough interest I will be more than happy to get it set-up such that those interested in developing a blog that is directly related to the Mono platform can do so, free of charge. I have no plan nor desire to try and fund either of these projects via any source other than my own wallet as bandwidth and server space is quite cheap these days. So if you have an interest in either of these projects you can rest assured that you're not going to wake up one day and suddenly find that your blog has become a dynamic corporate billboard for something totally and completey different. In addition, and maybe even more appropriately, if you would like to have a third-tier domain like mdavid.monoblogs.com point to a specific IP or redirected to a different URL I would be more than happy to update the zonefile to something of your interest. This would of course allow existing Mono-based blogs to have a MonoBlogs.com based URI without having to move or make any changes to your existing blog. These, of course, are just ideas and I am open to hearing any others that you might have.
If you do have interest in helping me get MonoNucleus up and running or you would like to create a Mono related blog on MonoBlogs.com please contact me directly to let me know. Thanks for the kick in the butt Edd!
Cheers!
<M:D/>
Posted by m.david at 03:46 AM | Comments (0) | TrackBack
In a recent comment Dimitre Novatchev points out:
"See also NiceXSL:
http://embedded.eecs.berkeley.edu/caltrop/NiceXSL/
Cheers,
Dimitre"
Thanks for the link Dimitre! This was definitely one I was unaware of.
Posted by m.david at 01:27 AM | Comments (0) | TrackBack
Theres a lot of satisfaction that comes when you see people taking an open-source project that you built and putting it to good use. Adam Kinney, a developer in whom I had the pleasure to meet and hang out with at the Chris Sells Applied XML DevCon a couple of months ago, has recently launched his new blog which is built entirely from the ground up in XSLT 2.0-based stylesheets using Saxon.NET to transform and render both HTML *AND* XAML versions of his site. This is FANTASTIC!
Congratulations Adam! Looking forward to reading more of your postings in regards to XAML and life in general.
Cheers!
Posted by m.david at 11:45 PM | Comments (0) | TrackBack
I just looked at the MovableType counter in the control panel for this blog and noticed that the last post was #99. I couldn't believe it for a second given the fact that the first post was officially posted on November 19th, just over 2 and 1/2 weeks ago. This is a project I have had earmarked to start for some time but it wasn't until November 16th, the day XSLT turned 5 years old, that I finally took the time to put things together. Actually, I have a "Happy Birthday XSLT!" post that I didn't finish in time for the 16th and decided to not post it. I think I should at least finish it up and post it for the shear novelty of the piece being originally authored on XSLT's 5 year Birthday, even though it wasn't finished and posted. I'll try to get to that sometime this week and make note of its existence given that it probably won't actually show up on your radar screen given that it will have a date of 11/16/2004 attached to it.
A lot has happened in the few short weeks of XSLTBlog's existence and I am excited by all of them. Thanks for taking the time to listen to what I have to say!
Cheers!
<M:D/>
Posted by m.david at 10:30 PM | Comments (0) | TrackBack
In reading through the XSLT vs. XQuery string of threads over on xml-dev I was reminded of XSLScript and thought it would be worth noting for those unfamiliar with the project. In a nutshell XSLScript is 1 -> 1 mapping to XSLT, a way to write stylesheets in more of a scripting style and then compile them to true XSLT using the XSLScript compiler which is used in coordination with Saxon for the actual transformation of those generated stylesheets. There are utilities which are part of the compiler which allow you to get a memory-dump of the converted stylesheet if you so please.
While I am not one of the people who have a hard time reading or writing XSLT I do understand the fact that not everybody feels the same way. If you are one of those people who love the power of XSLT but hate the verbosity of the XSLT 1.0 syntax this may be what you are looking for.
NOTE: XSLScript has been around for quite some time although I can't really say how long. While I don't use it myself, from what I understand the script compiler and associated syntax is fairly strong and most, if not all, of the bugs have been worked out. The latest build is still sitting at version 0.7 which would lead me to believe that PaulT, the creator of XSLScript (among other things), still sees it as a work in progress, potentially looking to version 2.0 of XSLT to finish things off? You'll have to ask him that question. :)
Posted by m.david at 10:19 PM | Comments (4) | TrackBack
Something to take note of...
Posted by m.david at 09:59 PM | Comments (0) | TrackBack
XML.com: Word to XML and Back Again
From the article:
"In this article, I will show you how to take the frighteningly messy result of Word's "Save as Web Page" and turn it into well-formed XML, using a few lines of Python and a touch of XSLT."
FANTASTIC!!!
Posted by m.david at 08:56 PM | Comments (1) | TrackBack
For those who have not had a chance to read Edd's latest post to his XML-Deviant column I give it a recommendation of High to Extremely High (not that such a rating system even exists here on XSLTBlog -- I think I'll invent one ;). As the column is set-up to do this article is mostly commentary on several posts made to xml-dev as well as an article on the subject by Tim Bray. In my personal opinion (have I ever mentioned I really dislike the acronym "IMHO"? The acronymic base for IMHO - "In My Humble Opinion" - seems to suggest that Humility has nothing to do with you or your opinion. Just something I thought I would throw in for fun... ;)) Edd is spot-on for bringing this argument to light which says a lot as there are very few things that Tim Bray has to say that I disagree with usually. However, this is definitely one of them.
Enjoy!
Posted by m.david at 07:19 PM | Comments (0) | TrackBack
At some point this topic is going to get old and boring and posting links to Yet Another Post Covering the Benefits of XSLT over XQuery will cause people to get annoyed and turn off this channel. At the moment though this is an important topic to understand and is one that seems to be in hot debate over at xml-dev at the present time. So, for now, I will continue to follow the progress of this debate and post follow-ups that help bring light to the subject. This is one of those posts:
In a follow-up comment to a post on http://www.understandingxslt.com George James writes:
---
"And if you haven’t been following it, I think this is the start of the particular thread that lead to Mike Kay’s comment: http://lists.xml.org/archives/xml-dev/200412/msg00058.html.
But this debate has been going on for years. See:
http://www.xml.com/pub/a/2001/08/29/anglebrackets.html
and
http://www.xmlportfolio.com/xquery.html
both of which provide quite lucid introductions to some of the issues being discussed in that thread.
George"
Thanks for the links and the insite George. It is very much appreciated!
Posted by m.david at 04:23 PM | Comments (0) | TrackBack
In a post to xml-dev earlier today Dimitre Novatchev follows with additional insite to a post from Dr. Michael Kay that Oleg made notice to yesterday:
"I'll add another essential benefit, somewhat related to (f):
(g) Just drop an XSLT 2.0 schema into an intelligent XML IDE and voilla --
you have a syntax-oriented XSLT 2.0 editor with:
- syntax colouring;
- intellisense;
- autocompletion;
- expand/collapse trees;
- meaningful error messages;
- re-formatting and pretty-printing;
- natural potential to add refactoring;
And you have this the same second you specify the schema!
Not just a theoretical meandring -- I have done this and other people have
done this, too, see for example:
http://norman.walsh.name/2004/07/25/xslt20
Cheers,
Dimitre Novatchev."
---
Excellent post Dimitre! Thank you for this and for the link to Norm Walsh's posting. As always the insite that you both bring to the XSLT community is respected and appreciated.
Posted by m.david at 04:00 PM | Comments (0) | TrackBack
For those of you that don't subscribe to the exslt.org mailing list this is an important thing to take note of. In a recent post to this list Uche Ogbuji writes:
"I apologize for the short notice, but there will be a server outage
today as we upgrade hardware and hosting arrangements. This will affect
the Web sites, mailing lists, CVS, FTP, etc.
We expect the outage will be no more than a few hours.
-- Uche Ogbuji "
Thanks Uche! Keep up the great work you all have done and are doing with this project. I know a lot of people including myself who have come to rely on the work you have done with exslt in our daily development lives. Your efforts are very much appreciated!
Posted by m.david at 10:07 AM | Comments (0) | TrackBack
XyEnterprise Makes EContent 100 List of Top Digital Content Companies for Second Year in Row
Posted by m.david at 09:51 AM | Comments (0) | TrackBack
LinuxWorld | Sleepycat releases Berkeley DB XML 2.0
Hmmmmmm..........
Posted by m.david at 07:39 PM | Comments (0) | TrackBack
Sweet!
Posted by m.david at 07:34 PM | Comments (0) | TrackBack
Amazon Web Services Blog: Alexa Web Information Service -- Sample Style Sheets
Found this on the same Amazon Web Services site. It was posted in November so I didn't catch it the first time through.
Posted by m.david at 06:25 AM | Comments (0) | TrackBack
Jeff Bar, a friend of mine who leads the Web Services team at Amazon, pointed me to the Amazon Web Services weblog to check out a post. I didn't realize this site even existed until he showed it to me. At the time I thought "cool! I'll add this to my watchlist as I'm sure at some point something interesting and useful will popup." It did! Here is the text of a "conversation" I had via MSN Messenger with Amazon Messenger, a new beta program Amazon is running that allows you to interact with the Amazon catalog via messenger. Check this out!!!
---
M. David [in SLC] says:
menu
Amazon Messenger says:
Welcome, m.david@x2x2x.org. My name is Amazon Buddy.
M. David [in SLC] says:
hi
Amazon Messenger says:
Hello and welcome to Amazon Messenger.
Please note usage of this service is subject to our terms and conditions:
http://www.insidec.com/amazon
Please type MENU to continue.
You can provide feedback by typing FEEDBACK.
M. David [in SLC] says:
MENU
Amazon Messenger says:
Your shopping domain is not set. It must be set prior to continuing.
1 Set my shopping to be on the USA Amazon site
2 Set my shopping to be on the United Kingdom Amazon site
3 Set my shopping to be on the German Amazon site (for Euros)
4 Set my shopping to be on the Japanese Amazon site
M. David [in SLC] says:
1
Amazon Messenger says:
Your domain has been set to the US site.
Type the NUMBER of your choice.
Your current domain is amazon.com. Change it by typing DOMAIN.
I want to search for:
1 a CD by artist, title or key word
2 a BOOK by artist, title or key word
3 a DVD by actor, title or key word
4 The best deals on an iPod
5 electronics
6 a general Amazon search
Type the NUMBER of your choice.
Give us feedback by typing FEEDBACK at any time.
M. David [in SLC] says:
BOOK
Amazon Messenger says:
Type the name of the author, book or even topic.
To return without searching, type MENU.
M. David [in SLC] says:
Michael Kay
Amazon Messenger says:
Page 1 of 8 pages found for this search.
1 XSLT : Programmer's Reference (Programmer to Programmer) by Michael Kay (Paperback): Was $34.99, now $23.79!
2 XSLT 2.0 Programmer's Reference (Programmer to Programmer) by Michael Kay (Paperback): Was $39.99, now $26.39!
3 XPathTM 2.0 Programmer's Reference (Programmer to Programmer) by Michael Kay (Paperback): Was $34.99, now $23.09!
4 Journey Beyond Abuse: A Step-By-Step Guide to Facilitating Women's Domestic Abuse Groups by Kay-Laurel Fischer (Paperback): $54.95
5 Professional XML by Mark Birbeck (Paperback): $49.99
6 Financial Accounting: Reporting and Analysis by Earl Kay Stice (Hardcover): $129.95
7 XQuery from the Experts: A Guide to the W3C XML Query Language by Howard Katz (Paperback): Was $49.99, now $33.99!
Amazon Messenger says:
8 Iron Horses (Picture Books) by Verla Kay (Hardcover): Was $16.99, now $11.55!
9 Professional XML Databases by Kevin Williams (Paperback): $49.99
10 Classic Optical Illusions by Gyles Brandreth (Hardcover): $6.98
Type the number of the title you would like to view.
Type MENU to get back to main menu and exit.
Type PAGE 2 to see the next page etc.
M. David [in SLC] says:
2
Amazon Messenger says:
$39.99
Customers who bought this book also bought or looked at the following:
XPathTM 2.0 Programmer's Reference (Programmer to Programmer)
XSLT Cookbook
Beginning XSLT 2.0: From Novice to Professional (Beginning: from Novice to Professional)
Definitive XML Schema
Professional XML Development with Apache Tools : Xerces, Xalan, FOP, Cocoon, Axis, Xindice (Wrox Professional Guides)
Amazon Messenger says:
Special offer! Was $39.99, now $26.39.
XSLT 2.0 Programmer's Reference (Programmer to Programmer) by Michael Kay (Paperback) at $26.39
1 Add this book to my Amazon Messenger shopping cart
2 Add this book to my Amazon Messenger wishlist
3 Return to the list
4 Return to the main menu
5 eMail this product to a friend/yourself
Please type the number of your choice
You can see the full detail about this book here: http://www.amazon.com/gp/redirect.html?tag=insidec-21&location=/exec/obidos/ASIN/0764569090%3FSubscriptionId=0VCF7QAGAAWW10JGNT82
---
Please tell me you find this as cool as I do! I can see so many future possibilities with something like this and whats even more amazing is how easy it would be to write an application to tie into existing Web Services-based applications that I am sure we all have running in one format or another. The Windows Messenger SDK showcases how to develop applications using Windows Messenger. To be honest I haven't looked into the technical differences between MSN Messenger and Windows Messenger but I'm fairly sure there are at least a few differences as I remember DonXML mentioning something as such in a conversation we had a few weeks ago. None-the-less given that Amazon is using MSN Messenger successfully I'm sure it is possible to write applications from the API level with both MSN and Windows Messenger. And beyond this I have no doubt that Amazon will integrate this with existing vendor ID's so that this can become yet another way of providing services to your customers via Amazon.
Stay tuned...
Posted by m.david at 04:41 AM | Comments (1) | TrackBack
Not that it wasn't interesting when I looked at it 3 or 4 months ago but back then I was looking at it as a possible easy way to get Saxon.NET working within both browsers on the client which is not something it can do. yet... ;)
Actually I have Saxon.NET working from within Internet Explorer and in a way that is really interesting from the standpoint of running client/server .NET-based applications that allow full use of XSLT 2.0, XPath 2.0, and XQuery. I haven't released anything on it yet as I want to wait until Dr. Kay releases Saxon 8.2, something I heard rumor could happen in the near future, and do a rebuild of Saxon.NET from that source code base. Actually, its not really rumor more than a reply he gave via XSL-List giving his "about every 3 months" general rule of thumb release schedule as the "official" answer to when 8.2 would be available. Based on the October 8th date the 8.1.1 build was posted to SF.net that puts us within a months reach as a possibility for an 8.2 release. Still, if playing with XSLT 2.0, XPath 2.0, and XQuery from within your .NET-based client server apps running inside IE sounds like an ideal Christmas vacation activity I'm sure I could be pursuaded to put something out there based on the 8.1.1-based Saxon.NET build.
Back to Sarissa... In looking through the docs I'm thinking this to be something very interesting... One client-side API for both major browsers or derivatives thereof... Hmmmmmm...
The project documentation can be viewed from its SF.net project page and the code-base downloaded via typical SF.net mechanisms. When I have a chance to play around with this I will post further comments.
Posted by m.david at 09:23 PM | Comments (0) | TrackBack
If any of you read my rant on XSL-List in regards to Altova and the claims made on their site in regards to their offerings in the XSLT 2.0 space you may be wondering why I am now highlighting them. Simple... this is XSLTBlog and they are in the XSLT business. Its as simple as that :) Besides, I believe that teaming up with Oracle on tool deliveries can be a very, VERY good thing for both us the developers and XSLT 2.0 in general... So I will leave any further comments on the subject left unsaid... for now ;)
Posted by m.david at 09:03 PM | Comments (0) | TrackBack
These guys are EVERYWHERE! I'm just glad that this time around I didn't have to go through an "ad gateway" just to read another type of ad -- the press release.
Posted by m.david at 08:53 PM | TrackBack
Always looking to showcase fantastic examples of both high quality XSLT code and solutions to puzzling coding problems here is an entry into this category from the mind of Dimitre Novatchev. I’ll let it speak for itself as its pretty amazing stuff!
In the extended portion of this entry I will post the code that solves the infamous Google “We Brake for Number Theory” blog posting…
Time to solve problem: 1890 milliseconds using XSLT 2.0-based code.
As always, my hat goes off to one of the true masters of the XSLT art!
NOTE: This solution requires Dimitre’s XSLT 2.0 version of the FXSL library.
Cheers!
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:saxon="http://saxon.sf.net/"
xmlns:f="http://fxsl.sf.net/"
exclude-result-prefixes="xs saxon f"
>
<xsl:import href="func-sqrt.xsl"/>
<xsl:output method="text"/>
<!--
Solves the following problem:
Find the first 10-digit prime in consecutive digits of e
See e.g:
http://www.google.com/googleblog/2004/07/warning-we-brake-for-number-theory.html
-->
<xsl:variable name="vE" select=
"concat('2.71828182845904523536',
'02874713526624977572470',
'93699959574966967627724',
'07663035354759457138217',
'85251664274274663919320',
'03059921817413596629043',
'57290033429526059563073',
'81323286279434907632338',
'29880753195251019011573',
'83418793070215408914993',
'48841675092447614606680',
'82264800168477411853742',
'34544243710753907774499',
'20695517027618'
)"/>
<xsl:template match="/*">
<xsl:variable name="vPortions"
select="for $n in 3 to string-length($vE)-9
return(substring($vE, $n, 10))
"/>
<xsl:value-of select="$vPortions[f:isPrime(xs:integer(.))][1]"/>
</xsl:template>
<xsl:function name="f:isPrime" as="xs:boolean" saxon:memo-function="yes">
<xsl:param name="pNum" />
<xsl:variable name="vstrNum" select="string($pNum)" as="xs:string"/>
<xsl:variable name="vLastDigit"
select="substring($vstrNum, string-length($vstrNum))"/>
<xsl:value-of select=
"if(not(translate($vLastDigit, '024568', '')) )
then false()
else
empty(
(3, 7, (11 to xs:integer(round(f:sqrt($pNum, 0.1E0)))))
[f:divisor(., $pNum)]
)
"/>
</xsl:function>
<xsl:function name="f:allPrimes" as="xs:integer*" >
<xsl:param name="pN" as="xs:integer"/>
<xsl:sequence select="(2,3,5,7)[. le $pN], ((11 to $pN)[f:isPrime(.)])"/>
</xsl:function>
<xsl:function name="f:divisor" as="xs:boolean" saxon:memo-function="yes">
<xsl:param name="pK" as="xs:integer"/>
<xsl:param name="pN" as="xs:integer"/>
<xsl:sequence select="$pN mod $pK = 0"/>
</xsl:function>
</xsl:stylesheet>
Posted by m.david at 02:31 PM | Comments (0) | TrackBack
In reading Tim Bray's last post I found myself at xfytec.com faster than you can say xfytec.com looking for the "DOWNLOAD NOW!!!" button. While the combination of forms I am filling out are some of the more cleanly designed I have seen in recent history I am still finding myself getting annoyed on that last section requiring me to spend the next 3 minutes telling them what industry I work in, what I do in that industry, how I heard of.... etc... that at times tend to cause loss of interest in the product all together. Thats not going to happen in this case but in going trough Yet Another Form w/ the same or similar questions as pretty much every other form on the planet I find myself wondering why we have not (or maybe we have and it failed or...?) developed a common schema of a general to moderately personal dataset that those in desire of such information could be given access to via a simple javascript-based "click here to fill this form with your Personal Information Schema Dataset" (hmmm... maybe PISD isn't the best acronym... although it does somewhat accurately described the annoyance felt when filling out YAF for YADownload... maybe not so bad afterall ;) With all of the backlash in past years at programs attempting to give us unrestricted, username/password free backdoor passes into all the web has to offer its seems to me that someone might have suggested something like this somewhere along the way... Did they and I just missed it or is this one of those things that just kind of got skipped over during the whole "how do we make the web less annoying and more productive and yet still gain access to all the info we want and more from visitors to our site" debate? I realise there are things like the Google form-filler-outer but this requires the installation and use of something I may or may not have interest in (as well as use of Internet Explorer which disqualifies a good chunk of developers reading this post) or use just so I can fill in forms faster and ultimately gives control of that information to another process beyond what I know I have complete and total control over (or at least I would like to think so)... my filesystem.
Anybody?
Posted by m.david at 11:50 PM | Comments (0) | TrackBack
As many of you may already know we will be starting into Jeni Tennisons "Beginning XSLT" title come Monday morning. For those unaware of what I am refering to the Understanding XSLT (http://www.UnderstandingXSLT.com) project was started so that we, as a XSLT community, can work together to better understand XSLT, starting from the very beginning and moving forward.
Anyone and everyone is welcome to join in this effort to become better XSLT programmers. While I intend to do all I can to keep things moving forward throughout the course of this "adventure" there is no set schedule. I plan to submit two to three posts a day to act as food and fodder but by no means will these be the required focus. By utilizing the blog format it allows those who are not ready to move on the ability to stay where they're at, asking questions via comments and relying on answers from the community to help in better understanding that particular area of XSLT. This format also allows those who are ready to move ahead the ability to do so without feeling the need to wait for others to catch up. In many ways this will allow a relaxed, self-paced environment for you to jump in at any point and begin to better your XSLT programming skills. This also allows for those only interested to better their skills in certain aspects of the language the ability to jump in and out as they please. In the end we will hopefully have created a nice reference for others to come along and utilize as well as ourselves to reference as needs be.
Also, George Christian Bina has offered a discount for community members for the <oXygenXML /> development tool. Details can be found at the site. Please note that this is not an official sponsor of any sort. If you have a XSLT-related development product you would like to offer the community at a discount please let me know and I will be more than happy to make a post to the site. Please note that to ensure this doesn't turn into a product billboard on the web I will only make one post for each product offered and will be moderating comments to ensure that this doesn't become a spammers paradise. I am not seeking advertisers for this project so please don't bother asking.
I am really looking forward to being a part of this project as I think its going to be a lot of fun and a great way to either learn from the beginning or fine-tune your existing XSLT development skills. See ya on Monday! :)
Posted by m.david at 03:30 PM | Comments (0) | TrackBack
RELAX NG with custom datatype libraries
Not sure how I missed this (published Nov. 23rd 2004) but here is what seems to be (at first glance) a great intro/overview of Relax NG. Given that its Elliotte Rusty Harold I think we can safely assume its pretty good... :)
Posted by m.david at 10:41 PM | Comments (0) | TrackBack
If blog , a word that only came into being in recent years, is "Word of the Year" for 2004 then based on the shear volume of articles as of late speaking to various forms of XML optimation (hardware, software, binaryXML, etc...) I would think it appropriate to try and come up with a word-merger for XML optimization as to try and catch some of the publicity that is inherent to words that represent cool technologies that nobody really knows all that much about... Might I suggest "xop" pronounced "zop"? Or how about its extension "xoptimize"? "We are going to xoptimize our network" might very well be the catch-phrase of the year for 2005 if such an award exists. :)
NOTE: It suddenly occured to me that I didn't recognize in this post that my reference to "xop" comes directly from the XML-binary Optimisation Packaging project at the W3C and was meant to directly play off this into a more flashy, marketing-friendly word like "xoptimize". I made the assumption that people would already know what the XOP project as W3C was and then realized this morning that maybe that wasn't necessarily the case. I thought it best to clarify this in case it wasn't a well known acronym, as it seems most people reference the project as the binaryXML Working Group at the W3C.
Posted by m.david at 09:55 PM | Comments (0) | TrackBack
And while were on the subject of Functional programming and more particular Lisp here's a post via Brad Abrams that speaks to a project focused on a Scheme to MSIL compiler project. I LOVE IT!!!! BTW... The originating post was Brad Abrams but I learned of it via Steve Maine. Must give credit where credit is due :)
Posted by m.david at 09:40 PM | Comments (0) | TrackBack
While we're on the general Python subject here is what seems to be an interesting post that compares the use of XML within the project formerly known as Xen coupled with C# alongside Python and the same type of functionality, the prior published in one of my more favorite papers on the integration of programming paradigms ala a comparison to Circles, Squares, and Triangles.
Actually, I believe Xen, along with X#, has been pulled into the COmega project -- or are/were X# and Xen one in the same in the first place? -- I never know anymore, its too hard to keep track of Microsoft project code-names and their current state, non-state, or absortion into something bigger, better, faster, stronger. Either way, I believe they are both now a part of COmega -- you can download the latest iteration of the COmega compiler directly from Microsoft Research. One of the more interesting comparisons I have seen as of late involves comparing the functionality of Lisp, a "hack" to XML'ify it, and then comparing this capability to COmega. Hmmmmmm... ;) :)
None-the-less, I like the fact that this author talks to "Programming with Circles, Triangles and Rectangles" by Erik Meijer et al. as, like I said, it is one of my favorite papers to be released by the general likes of Microsoft Research over the past year or so. I believe the inclusion of XML and the conceptual methodology and subsequent inclusion of Functional programming as part of this paper make this a very appropriate topic for <XSLTBlog /> as it compares well to the underlying functional-like foundation that XSLT is built upon. And even without the comparison this is a fantastic read and worth every second spent studying its content. I'll warn you ahead of time that if you are new to programming this paper is DEEP and may not be appropriate as a starting point into some of the deeper levels of the current scientific thinking involved with developing the next generation programming lanuage at Microsoft. Read at your own risk and please don't come ask me to explain it to you as I don't understand half of it myself! :)
BTW, I didn't link the mentions of Xen and X# as a quick Google for each was to confusing to make out anymore what is what... I'll just assume that they are both a part of COmega now and leave it at that. If I am incorrect, please let me know and I will correct this post.
Enjoy!
Posted by m.david at 09:30 PM | Comments (0) | TrackBack
While I dont have time to test this out at the moment once I have finished up a project I am working on for a client I will try and spend some time testing this out. Apparently there is a way of using a combination of plug-ins and XSL stylesheets to make your bookmarks portable between installs of Firefox...
http://makeworld.blogspot.com/2004/12/more-firefox-tricks.html
If you are able to test this out and validate that it truly does work (no doubt that it does, just need to allow for the fact that not everbody's documentation of a process get translated correctly) please comment or provide a trackback ping to let the rest of us know.
Posted by m.david at 02:47 PM | Comments (0) | TrackBack
As I mentioned in a previous post and have listed at the bottom of the “Legends of the XSLT Community” on the main page of http://www.xsltblog.com I plan to add several individuals to this list as it becomes apparent to me that I have either missed them entirely and should have included them in the original list or along the course of any given year it becomes obvious that a contribution or combination thereof by an individual qualifies them to be considered a legend of this community. The original list was built using members of the XSL Community who we each see every day in their posts to XSL-List in whom I considered legends based on their overall contributions through books, postings, evangelizing, development of XSLT related software, etc… I felt this was a good starting point at which I could add to as it became obvious a particular individual belonged as an original member of this list.
While not someone we see everyday on XSL-List thats probably because Bob DuCharme is out speaking at conferences, or writing yet another fantastic article for XML.com on how to better our skills and uses of XSLT in our software development. I think many of us are grateful for his book XSLT Quickly in which I know I can safely say has helped a tremendous number of developers over the years learn XSLT and add it to their list of development languages they use on a regular basis. Speaking more to the XML-specific side of things Bob’s XML: The Annotated Reference has become a common classic amongst the titles in many of our libraries. I don’t think the significance of this title can be better said by anyone beyond the comments made by Dr. Wendell Piez, another Legend of the XSLT Community, and someone in whom I know we all look up to. This excerpt is taken from the page linked to above:
“DuCharme’s annotations can be usefully compared to those of Tim Bray, a co-editor of the specification, as they appear on the World Wide Web (at http://www.xml.com). Where Bray presents advice on how to go about reading and interpreting the specification (which sections are important, which need clarification, etc.), his annotations do not provide as much direct explanation as DuCharme’s. (Where they do, they are effective and to the point, but as a whole they are necessarily more succinct for the web medium. They also have the advantage of hypertext links for relating parts of the spec to one another). DuCharme’s notes are more extensive, more elementary, and probably of more direct help to the new user, giving more attention to the underlying concepts, for example, of element content modeling.”
While no one could or would ever argue the impact and significance of Tim Bray’s original and “ongoing” (pun intended) work on XML and related technologies Bob took a fantastic specification and helped us all understand it better through this title. I was fortunate enough to meet Tim Bray [this links to a pic I took of him at the Applied XML DevCon] a month or two back, buy him a beer, and thank him for all he has done in bringing XML into our collective development lives. If I am fortunate enough to meet Bob along the way I plan to to buy him a beer as well and thank him for his contributions in helping us all better understand what XML is and how to use its full power in our software development. In the mean time…
Bob, Thanks for your many contributions to both the XML and XSLT communities abroad. You have more than earned a right to be considered a true legend of this community. Welcome to the list! :)
To emphasize further, I do not in any way consider this list to be complete. As it becomes apparent that I have missed someone I plan to add them as if they had been there the whole time. If there is someone you would like to point out to me as an obvious oversight please don’t hesitate to let me know.
Posted by m.david at 12:33 PM | Comments (0) | TrackBack
From a recent post to xml-dev Michael Kay writes:
“XQuery may be computationally complete, but it’s not actually closed over the data model - there is no way of generating a namespace dynamically. As far as I can see at the moment, that’s a stopper, and this exercise has to be coded in XSLT.”
Michael Kay http://www.saxonica.com/
Posted by m.david at 02:37 AM | Comments (0) | TrackBack
I was about to update the "XSLT Quote of the Day" in the right hand column when I realized I had never entered the first entry as a post... Here now is that first entry...
From a question posted to the xml-dev list Norman Walsh replied as follows:
Q: "Is the intent of the W3 to deprecate (i.e., eliminate) XSLT once XQuery is released?" /Roger
A: "No.
But I'm biased. I have no real interest in XQuery. It's a non-queriable, non-transformable subset of XSLT 2.0. I should care why? No, don't answer that. There are lots and lots of good reasons for XQuery and I'm not moved or excited by any of them.
Be seeing you,
norm"
Posted by m.david at 02:18 AM | Comments (0) | TrackBack
In a recent post to xml-dev Michael Kay writes in response to a post questioning the lack of comparisons between XSLT and XQuery:
It seems odd to me that I’ve never seen an article comparing actual XSLT and XQuery code for say moderately complex operations.
Apart from my Knight’s Tour, which Jonathan cited (and which is a very untypical application), I thought I’d try a very simple transformation that I had to do recently. The task is to remove those parts of a document rooted at an element having the attribute secret=”yes”. This is bog-standard XSLT and doesn’t need any 2.0 features:
<xsl:template match="*">
<xsl:copy>
<xsl:copy-of select="@*"/>
<xsl:apply-templates/>
</xsl:copy>
</xsl:template>
<xsl:template match="*[@secret='yes']"/>
7 lines, of which 6 are copy-and-paste from many other stylesheets that you’ve written before. (Add two lines if you will for the header and footer).
Here’s an attempt at an XQuery solution:
declare function m:copy($e as element()) as element()? {
if ($e/@secret = 'yes')
then ()
else element {node-name($e)} {
$e/@*,
for $n in $e/node() return
if $n instance of element()
then m:copy($n)
else $n
}
}
document{
m:copy(doc('input.xml')/*)
}
14 lines of code (twice as much), and less scope for reuse. No great difference in the conceptual difficulty - both require an understanding of recursion - but I think XSLT emerges here as the winner. (And remember this is only XSLT 1.0).
But in fact there’s a bigger issue - the XQuery code is wrong. It loses the namespaces from the source document. Perhaps I’m missing something, but I can’t see any way to solve this. XQuery may be computationally complete, but it’s not actually closed over the data model - there is no way of generating a namespace dynamically. As far as I can see at the moment, that’s a stopper, and this exercise has to be coded in XSLT.
Of course, I’m sure there are other problems where XQuery has the edge.
Michael Kay http://www.saxonica.com/
I think we have a new quote of the day!!! (an area in which sadly has not had much attention since Dimitre submitted the first entry about a week ago)…
Something like…
“XQuery may be computationally complete, but it’s not actually closed over the data model - there is no way of generating a namespace dynamically. As far as I can see at the moment, that’s a stopper, and this exercise has to be coded in XSLT.”
I think it’s time to update the “XSLT Quote of the Day” :)
I’ll do that now…
Posted by m.david at 01:54 AM | Comments (2) | TrackBack
XSL Transformations using ASP.NET
This is actually a really good tutorial on getting started with XSLTransformations on .NET using ASP.NET. The one thing I would add to this would be to showcase the ability to pass parameters into the transformation when using the asp:Xml server-side control. For whatever reason that piece of information never seems to get propogated via tutorials or even the documentation. So in the extended portion of this post I’ll just post some code I have lying around that showcases how to do this. This article does a great job of explaining the ins and outs of XSLT via ASP.NET so I’ll just let the additional code sample speak for itself.
<%@ Page Trace="false" Language="C#" Debug="false" %>
<%@ Import Namespace="System.Xml" %>
<%@ Import Namespace="System.Xml.Xsl" %>
<%@ import Namespace="System.IO" %>
<%@ import Namespace="System.Globalization" %>
<script runat="server">
string xmlSource = "index.xml";
string xslSource = "/gdc/home/index.xslt";
string defaultRSS = "content.rss";
DateTime dt = DateTime.Now;
void Page_Load(Object sender, EventArgs e)
{
if (Request.QueryString["xml"] != null) defaultRSS = Request.QueryString["xml"];
XmlDocument doc = new XmlDocument();
doc.Load(Server.MapPath(xmlSource));
string date = dt.ToString("U", DateTimeFormatInfo.InvariantInfo);
XslTransform trans = new XslTransform();
trans.Load(Server.MapPath(xslSource));
XsltArgumentList xslArg = new XsltArgumentList();
xslArg.AddParam("defaultRSS", "", defaultRSS);
xslArg.AddParam("dateTime", "", date);
mainTransform.Document = doc;
mainTransform.Transform = trans;
mainTransform.TransformArgumentList = xslArg;
}
</script>
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"DTD/xhtml1-strict.dtd">
<asp:Xml id="mainTransform" runat="server"/>
Posted by m.david at 08:23 PM | Comments (0) | TrackBack
When using XQuery over XSLT makes sense you won't find me arguing one single little bit against it. It seems that this particular application makes great use of XQuery in a way that makes sense and is particular to the reason XQuery was developed in the first place... to use a SQL-like syntax to query XML data for particular information.
What to do with the returned subset of XML from the XQuery-based query? Might I suggest transforming it into various other types of data flows using XSLT? :D
Posted by m.david at 06:12 PM | Comments (0) | TrackBack
XML.com: XSLT Web Service Clients
While a link to this article has undoubtedly reached your RSS/ATOM/RDF reader several times from several sources my reason for linking to it may be a little different. It seems that everywhere I look now someone is mentioning "when I did this with Python" or "heres a Python script that does this..." leading me to believe that I may very well be the last guy on the planet not using Python in XML/XSLT related development.
Someone, anyone, whomever wants to take the time to tackle this question.... what is it with Python that has me feeling like the last kid picked for dodge ball at recess? I'm not trying to suggest its not a fantastic language, I simply just don't know a thing about it... and it just seems like maybe I need to put a bit of investment of time into learning it. But then again I don't want to spend my time learning a new language only to find out it does'nt do anything all that great and wonderful that I can't already do with a language I already know.
Comments?
Posted by m.david at 06:02 PM | Comments (8) | TrackBack
While there is no specific mention of XSLT being used by the SSA project the fact that several other XML technologies are being used I think is significant enough to warrant a post/link.
Posted by m.david at 05:46 PM | Comments (0) | TrackBack
As many of you already know there are two types of processors described in the XSLT 2.0 spec: Basic and Schema Aware. Earlier today Jay Bryant posted a question to XSL-List asking:
I imagine that this question has come up in the past, but I thought I’d ask anyway: What are the benefits of schema-aware XSL processors?
I’d like to learn more about the issue in both general terms and as it applies to the specific application I’m working on. I’m consulting with a firm that specializes in data warehousing for the insurance industry. We are using XML for a variety of document-production purposes (started with a dynamically generated data dictionary, now working on dynamically generating online help, etc.), but we are also exploring the xml->database and database->xml potential of XSL. What benefits might we derive from using a schema-aware-processor in such an environment?
Thanks.
Jay Bryant Bryant Communication Services
This is a question that has been asked several times on the list and in fact there is still an open monologue between myself and Dr. Kay in which I have tried to drill down a bit further into the possibilities that exist for Schema Aware processing. I hope to find some time to finish that monologue at some point in the future as I feel it is an important area to focus on. In the mean time in the extended part of this entry I will post the answer that Dr. Kay gave to Jay’s question. As the editor of the XSLT 2.0 specification Dr. Kay obviously has the edge as far as understanding the implications that the Schema Aware processor portion of the spec brings to XSLT developers. His answer is quite lengthy so as mentioned I will paste it into the extended portion of this entry.
The full text of Dr. Michael Kay’s answer in regards to Jay Bryant’s Schema Aware question is as follows:
The benefits fall into two categories: robustness and optimization. Optimization is still a theoretical, speculative benefit, so I’ll concentrate on robustness.
You can argue the case in high-level abstract terms, or with low-level coding examples. Let’s try a bit of each.
Firstly, stylesheets are written with knowledge of the input and output schema, but at the moment this knowledge is in the programmer’s head and isn’t shared with the compiler. This means that when the programmer makes mistakes, due to incorrect reading of the schema, or perhaps because the schema has changed, the compiler cannot detect them. It’s good software engineering discipline to describe the inputs and outputs of a component (the preconditions and postconditions) and this applies to XSLT as much as anything else. The more complex the schema becomes (and some industrial schemas are very complex indeed) the harder it is for the programmer to keep everything in their head. In addition, it’s very hard to achieve 100% test coverage. Many schemas contain parts that are only rarely used, but if you want to produce a production-quality stylesheet you need confidence that it can handle everything that will be thrown at it.
At a practical level there’s no doubt that debugging and testing XSLT stylesheets is currently rather difficult, and most of us don’t do it very rigorously. We tend to test a stylesheet on a rather small sample of input documents, and we check the output visually to see if it looks OK, perhaps running a few sample outputs through a schema checker if we’re being conscientious. When we get things wrong it can be very hard to spot where the trouble is, especially if it’s in code written by someone else a while back when the schema was rather different from the way it is now.
I like to demonstrate this by taking a correct stylesheet and introducing random errors, and showing how without a schema they produce bad output that can be very difficult to spot (in one example I can cite, it meant that out-of-range numbers were not being highlighted as they should have been, and no-one noticed), while if you make the same error with a schema-aware processor, you get an explicit error message telling you exactly what’s wrong.
If you can define the schema for your input and output documents and make this known to the XSLT processor, this can make a big difference to the development cycle. In practical terms, the biggest benefit I’ve seen is from integrated validation of the result document: if your stylesheet tries to write invalid output, you get an error message pinpointing exactly where the error in your stylesheet is, rather than 300 identical errors from the schema processor telling you that the output is wrong, which you probably knew anyway. At present with Saxon this validation is mainly done at run-time, but more and more of it will be done at compile time, which means that you even get to know about errors in code that hasn’t been executed because you haven’t written the test data for it yet.
I’ve yet to see such a big impact from using a schema for the input document, but I think the potential is there too. The biggest potential advantage is better reuse of stylesheet code, and better resilience to changes in the input schema, by driving your template rules from schema types rather than lexical patterns. This mainly applies to the kind of complex schemas with hundreds of element types. In such schemas there is usually some kind of type hierarchy, and if it is well-designed then you should be able to get the kind of benefits you see from object-oriented programming, by writing code that’s generic or specific as the need arises.
I hope that gives you something to think about!
Michael Kay http://www.saxonica.com/
Posted by m.david at 04:55 PM | Comments (0) | TrackBack
In follow-up to yesterday's post, here is the proof I was refering to. Russ was waiting on approval from O'Reilly for the translation and republishing of his Spring Framwork article which he was given so now posting this becomes more relevant.
To protect from SPAM harvesters I have x'd out the emails. Please access the extended portion of this entry for the remainder of its content.
---
From: ???
TO: xxxxxxxxxxxxxxxx.xxx
CC:
Date: Wed Dec 01, 2004 08:26:03 AM GMT
Subject: Can I translate your article into chinese?
Dear Russell:
I'm a software engineer which had been working in Java technology for sevel years. Your article ,"An Introduction to Aspect-Oriented Programming with the Spring Framework", really give me a impression. AOP, which I interested and learned recently, is a hot topic in China developers. And the articles you wrote about using AOP in Spring framework is the best material for learning that I have seen. I really want to present my appreciation to you,since I got a lot from your articles.
But many chinese developers aren't good at English.It's difficult for them to read your articles in English directly. They are thirsty to learn new technology ,new methodology,new ideas from outer world.
I want to share my delight which I got by reading your articles to my countrymen.So,I have a strong desire to translate your article into chinese and got them readable in the technology magazine named PROGRAMMER in China. This will also make chinese developers get more familiarity about you.
So, I wrote to you and wondered whether you agree it.
Thanks and Best Regards
Roey Zhang
Software Engineer
China Networkshanghai CO..ltd (www.networkshanghai.com)
Email:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.xxx
---
It seems that developers in China already know just how important Aspect-Oriented Programming is. I have no doubt that if you haven't already figured it out a little Googling on the topic will do much to convince you of the relevance of this programming methodology.
More information on AOSD related projects and technologies can be found at http://www.AOSD.net. There you will find a link to how this is relevant to XSLT as the folks at AOSD.net have the AspectXML project that Russ and I worked on listed in the "Tools for Practioneers" section. The base of that project is XSLT.
Posted by m.david at 12:43 PM | Comments (0) | TrackBack
A few days ago I got an email from Dimitre Novatchev complimenting me on my blog and suggesting that I contact Edd Dumbill and ask him to syndicate me on http://planet.xmlhack.com. He had copied Oleg Tkachenko who responded with a similar compliment and a notice that he had already sent the suggestion to Edd and encouraged Dimitre to do the same. Well with as much frustration as I had yesterday you can imagine how grateful I am to be feeling something much different right now and in fact the exact opposite x 100 if not more. I woke up this morning to an email from Oleg who informed me that “You’re in…”. At first I thought he was refering to my comments from the Sarvega post and he had somehow secured a couple of devices to play with… and then I realized what he meant was that I was in at http://planet.xmlhack.com. It seems that either Edd liked what he was reading or he put faith in Oleg’s and Dimitre’s suggestion and began to syndicate my XML feed. As you can imagine I am a bit in shock right now.
Thank you Edd, Oleg, Dimitre, and everyone else who reads this blog. To be considered by you all to be worthy to be syndicated alongside such an amazing group of industry icons is truly an honor and is something I will never ever forget. I will continue to do my best to find and write about things of interest and appropriateness to the XSLT community and again thank you for helping extend the reach of this blog to your base of subscribers.
Cheers to you all!!!
<M:D/>
Posted by m.david at 09:09 AM | Comments (0) | TrackBack
I am so aggravated right now I want to answer this question with a resounding YES!!! But I am not so rediculously stupid as to think that the time has come that I will never work on a Windows box again. There are too many good things about Windows to let little things like this make me swear the use of it off forever:
I have just spent the last 3 hours wrestling with whatever strain of whatever variant of whatever virus happens to be going around at the moment. I'm tired of it. I've already lost enough time in the past wrestling with some silly script kiddies version of a practical joke.
To whomever is responsible for the virus that is attempting to eat my latest install of Windows XP Professional:
STOP WRITING FUCKING VIRUSES!
I'm sorry for my choice of words here for those of you who may be offended by this. But if you are a Windows user you undoubtedly have had a similar breakdown at the moment you discover that you are now going to have to spend the next X hours of your day either tracking down the virus or, if things get too out of hand or begin to take too long, reinstalling Windows and every piece of software you use on a regular basis. It seems that every 2-3 months this same cycle is repeated after yet another blue screen of death has forced me to do what I should have done 2 years ago: Move over to Linux!
Like I said I am not going to allow myself, no matter how frustrated I get, to make such a statement as I am never going to use Windows again. I am just sick and tired of this process and of all the time and energy spent and lost because of someone's "War" with someone else on IRC. Children, these are real people's lifes you are messing with... stealing away time that should be spent, in my case, writing better software or fixing the problems there is with existing software. Other people do other things with their time that is in no way any less important. The time you spend writing these viruses could be spent doing so many more constructive things. You could actually be getting paid to write code that helps people instead of sitting in some dark corner somewhere scheming up some way to "make yourself king" in your silly little virtual world of nothingness. A world that breeds hate and fear and nastiness, and yet none of it is real.
But I do know what is real. The world that I live and work in on a daily basis is real. The peoples lives you affect on a daily basis are real. The systems we rely on on a daily basis to help us get to work on time and return home again to our families... those systems are real and our families are very real. When those systems go down because of some silly tribal war between you and your rival(s) and someone is killed in a car accident because the lights at an intersection are no longer working correctly: those lives and the people who love them are very, very real! And when people in Redmond, Washington, a town right next door to Kirkland, Washington where I grew up, start losing their jobs because of some silly little "turf-war" between you and your "arch enemy"... those people are real. What you do with your time... thats real! But it sucks! Its lame as are you for doing it. Please stop doing it! Please stop stealing my time and the time of everybody else who relies on these systems to live their lives happily and productively. Please become one of these productive people... please use your mind for something constructive, not destructive. Why do you want to waste your time and your talent destroying things, being remembered by few and loved by even less. Why not be the next Frank Lloyd Wright or the next Linus Torvalds or even the next Bill Gates?
Don't want to be any of them? Then why not be yourself but make that self someone who is no less important than these men are. Right now you are nobody. But you could be somebody. You just have to refocus your time and energy. Please do it.
If you don't I'll tell you what eventually is going to happen... enough people like myself who spend our lives each day writing the code that drives these systems and applications are going to get fed up. And when enough of us have reached that point where we are no longer willing to live in a world where silly little children and their silly little games can shutdown and in some cases destroy the work and lives of people they've never met nor will ever know you will have started a war that I promise you you can not win. If you think that you know something that we don't: think again. We built these systems. We know how they work better than all of your little underworld buddies combined. Don't mess with something you don't fully understand as it will come back to bite you. And at some point the teeth that rip into you are going to look a lot like mine.
I must get back to work doing things that matter. Things that matter to me. Things that matter to my son. Things that matter to the people I work for and with. Things that matter to the people who take the time to read this blog. People who may not know me but use the software I have written on a daily basis. People who might be influenced by what I write, both in verbal communication and in code. To these people what I do with my time and energy matters... please find something to do with your life that really matters too.
Yours sincerely,
M. David Peterson
Posted by m.david at 06:01 PM | Comments (2) | TrackBack
In a recent comment to my Book Addiction post Kimbro Staken asked:
Do you have a Safari subscription? Highly recommended if not. It won’t cure the book addication, but it can sure lighten the load for certain uses.
Posted by: Kimbro Staken at December 1, 2004 02:52 PM
My reply:
Sadly, I do. :( I should add to my post this simple fact as it will help realize the extent of my book buying addiction. Actually, the reason for buying so many books while also maintaining a Safari subscription is simple… I love the feel of a book. Looking up things is one thing… even a quick overview of a chapter via a printed PDF will work for quick and dirty knowledge increasing tasks. But when it comes to sitting down and just reading there isn’t an electronic reader or subscription service on the planet you will find anywhere near me. I simply love the feeling of a book in my hand… not as efficient but efficiency shouldnt always drive what we do. At least, thats how I feel when it comes to printed books vs. electronic books.
The reason for “highliting” this comment entry is that I feel strongly on the subject of printed books vs. electronic books. As I mentioned for looking things up or for quick overviews of a technology services like Safari are fantastic. In fact I shudder at the thought of not having my Safari subscription, especially with as much traveling as I do with consulting gigs. But when it comes to just sitting down and reading… well I have already stated my feelings on this, no reason to repeat what was already a repeat of a repeat :)
Cheers!
<M:D/>
Posted by m.david at 03:20 PM | Comments (0) | TrackBack
In a recent post to XSL-List Colin Paul Adams writes:
---
As per the subject.
Home page is:
http://gestalt.sourceforge.net/
-- Colin Paul Adams Preston Lancashire
---
I encourage users of Mac/OSX to download this build and provide feedback to Colin in regards to bugs, performance issues, etc...
Thanks again Colin!
Posted by m.david at 02:22 PM | Comments (0) | TrackBack
Boeing Australia Expands XyEnterprise XML Content Management and Publishing Solution
This press release speaks specific to the XML Content Management and Publishing Solution from XyEnterprise. While not immediately apparent further review of the XyEnterprise site (nicely designed site by-the-way) showcases:
The XyEnterprise corporate vision encourages the use of standards throughout the workflow and the enterprise as well as within the products themselves. Specifically:
XML for content - supporting the ability to create, manipulate, store, manage, and publish content marked up in XML. This applies to content components as well as metadata. In our products, it applies to SGML as well as XML.
XSLT for transformation - using XSL stylesheets to reorder and transform XML instances at critical points in the workflow, enabling delivery in the form of choice
Web Services for integration - building on the XML standards, XyEnterprise products have open APIs and provide Web-based access to contributors in the content creation, management, and delivery workflow, wherever they may be
Formatting - capturing, reusing, and managing style information is key to the XyEnterprise strategy and the use of XSL-FO is a strong component of that strategy
My favorite quote from the above - “using XSL stylesheets to reorder and transform XML instances at critical points in the workflow, enabling delivery in the form of choice”
“choice”
I do very much like that word…
As you read through both the press release and the other links above see if you notice the same things I did…
Boeing Australia is in the business of developing products and providing services that are mission critical real-time products and services.
The XyEnterprise XML Content Managment and Publishing Solution meets the real-time needs of Boeing Australia for publishing and accessing mission critical information
XSL via Transformations and Formatting-Objects is at the core of XyEnterprises ability to meet Boeing Australia’s needs of real-time mission critical access to, and publishing of, data.
Brushing and Flossing with XSLT on a daily basis keeps your teeth clean and your breath fresh and minty. Furthermore you will suddenly become more attractive to the opposite sex and in some cases being called a “Sex God” or “Goddess” will become an all too common occurence.
Posted by m.david at 12:45 PM | Comments (0) | TrackBack
Mike Krisher's Blog: ATOM converted to valid RSS 2.0 using PHP and XSL
For those looking for this capability look no further...
Posted by m.david at 12:11 PM | Comments (0) | TrackBack
They're Back!!!
NOTE: I've had my copy, via iTunes, for a week. But in all fairness to other suppliers of music decided to wait until it was readily available before I suggested it as a must have for your record collection.
Posted by m.david at 11:52 AM | Comments (0) | TrackBack
If you do not find this a sad image-based commentary on just where a life of illicit behaviors of late-night programming sessions can lead... well then maybe we both need to get a life...
Title for Image > Last weeks take home from Barnes & Noble (this is not a joke)

Not that any addiction is good but I can definitely think of worse things I could be spending my money on...
NOTE: There are at least two books in that pile that I already own. Why then buy another copy? Well, the Mozilla title in the bottom left is a replacement for one that I left on a Southwest Airlines flight from Seattle to Salt Lake City (if you found it, don't worry, keep it, I already have another copy ;) which was actually a replacement for a copy I had given to Kurt Cagle who, at the time, was doing a Firefox related project.... he had been looking for the title but hadn't found a copy. Being the nice guy that I am... Ok, scratch the start of that last sentence... Being one always looking for an opportunity to increase my ever expanding (obviously!) library of tech titles traded it to him for a signed copy of one of his titles... (Being the nice guy Kurt is he gave me two titles! :)
The second title is the Mono Developers Notebook on top. I left my copy in the office at Honeywell in Redmond and I am working from home in Salt Lake and could not live without it... so I purchased another. :) I recommend that you locate a copy as fast as you can!!!!
Posted by m.david at 10:58 AM | Comments (2) | TrackBack
Actually, the sole purpose of this post is to act as a placeholder and reminder to follow this up with some actual evidence as to the prediction I am about to make… The prediction?
Mark my words…
Aspect-Oriented Programming (or Aspect-Oriented Software Development as the case may be) is about to hit the development world in a big, Gigantic, ENORMOUS sort of way.
Evidence of this to follow… (I’m waiting on an approval that stems from another approval… don’t worry, no government agencies are involved so we’re talking hours, not months, or possibly even years as the case is sometimes)
Posted by m.david at 10:38 AM | Comments (0) | TrackBack
Signs on the Sand: Hardware XSLT Acceleration
I had planned a much lengthier follow-up to my earlier post regarding Sarvega’s XML Speedway Accelerator but Oleg has already posted an excellent summary as to the features of this product so I will hold off for now until such time as I am able to get a hold of that missing benchmark.
I apologize in advance for the onslaught of information you are about to get but I have several half finished posts that I need to finish up before they become dated. Midway through the day yesterday a sudden realization came upon me as to the congruent relationship several projects that I am working on have. It was one of those spine tingling realizations you get when it seems to have no other explanation beyond something much bigger than anything we might understand has had a hand in things. As such I decided I needed to get out of from behind the computer and get away for a bit so I could try to make a bit more sense of things. I think it has helped as this morning seems a bit more clear as to direction and focus so I guess we will see where it leads.
Cheers!
<M:D/>
Posted by m.david at 09:39 AM | Comments (4) | TrackBack