While there is still plenty of news to report on from the weekend I am putting these in the Weekend Summary post. Todays news is a little light so I thought I would add some fun to your day by taking and making available this picture:
Now, with a little Photoshop/GIMP magic you can show all of your friends that you are part of the "in" crowd here at <XSLT:Blog/> (which really isn't saying much given that on most days the "in" crowd consists of pretty much just me ;) And if you're really lucky and get to be my "New Best Friend of the Day" (again, not really saying all that much ;) you could get overly creative and showcase yourself holding a printout of your award and morph it into this pic for extra fun for the whole family.
In other news... I have added an "Announcements" feed to the blog available in Atom, RSS/RDF, and RSS 2.0 formats as usual. This section will be for things like product announcements etc... In fact I have already added the first entry showcasing an announcement from Sun Microsystems Tony Graham in regards to the release of xmlroff 0.3.1, an open-source XSL formatter.
For now, enjoy!
Posted by m.david at 06:05 PM | Comments (0) | TrackBack
I've spent a majority of this weekend whackin' at some code for the site as well as preparing for phase 2 of the project, integration into Saxon.NET. There are still some features to finish on the side in regards to the client but I am quickly approaching the stage where I am in desperate need of some server-side functionality to enhance the client-side user experience. So I plan to wrap-up the remaining bits of the client today and then plan ahead to the server side integration for tomorrow. In the mean time, here is a summary of the news from this weekend. NOTE: I have created a raw news feed for the site available in Atom, RSS/RDF, and RSS 2.0 versions. This is an extremely raw feed and will eventually become somewhat automated. I don't recommend adding it to your reader unless you REALLY want everything that is XML/XSLT/XPath/XQuery coming in a rapid pace each and every day of the week.
Five IT Pilots Going 'Production Grade' in '05
Some interesting comments on the events to prepare for in 2005. XQuery is one of them. It might be a good idea to take into account the recent posting of Mike Champion in regards to this as this needs to be considered when thinking in terms of Microsoft and XQuery. This is Mike's follow-up to the official announcment from Soumitra Sengupta and Charlie Heinemann on MSDN. It seems that, for now, XQuery's future in production Microsoft products will reside within the SQL Server framework, a move that I completely and totally agree with as the need for an XQuery-like interface into SQL Server has been needed for a very long time. I am glad to see that this is something that Microsoft has deemed as important enough to ship pre-recommended spec. while at the same time recognizing that the development community was not completely in line with their decision to move forward with an XQuery/XSLT 1.0 solution for the future. Which reminds me... I have an award to give out.
Can I have the envelope please... In the category of "My New Best Friend for the Day" the award goes to... Oh my gosh we have a tie!
The *AWARDS* go to Mike Champion, Michael Rys, Soumitra Sengupta, Charlie Heinemann, and the Microsoft Corportation in general! Whoo Hooo!!!!
It's getting close to the end of the business day so I am going to publish this now and then keep adding to the news from the weekend and republish it again when I'm done...
Posted by m.david at 02:33 PM | Comments (0) | TrackBack
An event this morning ran longer than expected so I am just now getting to the report from yesterday. I actually only have a 15 minute window of opportunity to write this at the moment so I am going to get things started now, publish it, and then come back to it later this evening to finish things up.
Russell's presentation yesterday was fantastic! This was given to the development teams at Amazon as part of their Friday learning series. Jeff Bar blogged the whole thing here. Something I learned about Russ yesterday is that not only does he grok AOSD like few others do he ia also a fantastic speaker! I'm not sure if I have mentioned this before ;) but if you haven't already, BUY HIS BOOK!!!! If you need any further signs the "oh, and we have some copies of the book available to anyone who wants one" comment that Russ made at the end of his presentation begat what I will term a "stampede" of developers who, even though:
- Amazon had provided enough copies for each and every developer, his/her spouse or girlfriend/boyfriend, any children they might have, their pets (which they can bring to work if they would like), and any fleas their pets might happen to be suffering from.
- The books were maybe 7 feet at best from the front row of seats of which only went back about 20 rows before reaching the back of the room.
When the comment was made I was knocked against the back of my chair from the wind that was generated from the wall of Amazon developers JUMPING AND RUNNING to the front of the room to get their copy -- I will add to this that Kurt Cagle (Kurt and I were given permission by Amazon to attend the presentation-- Thanks Amazon!:) and all of the connections he has inside of the book industry was one of those "rushing" the stage.
Uh oh, my 15 minutes are up... I will add a lot more to this later tonight.
'til then, enjoy!
Posted by m.david at 05:10 PM | Comments (0) | TrackBack
I just got back from my day trip to Seattle and wanted to quickly make a post to let you know that I have quite a bit to report back on. I have some catch-up work to complete as well as some emails to send out at which point I will follow-up this post with the details.
[UPDATE: After finishing my first phase of emails I am realizing that the day has pretty much wiped me out. To ensure a quality report I am going to hold off until tomorrow.]
Posted by m.david at 11:18 PM | Comments (0) | TrackBack
A quick post to mention I will be making a quick trip to Seattle tomorrow to meet up with Russ, Kurt, and possibly Miguel de Icaza to chat about various topics including Saxon.NET and directions for XSLT and XQuery on the Mono platform. Schedules are tight as the same time Russ begins his presentation (hes giving an AOSD presentation tomorrow after lunch) is the time Miguel needs to be to the airport so we're still unsure if our schedules will mesh. None-the-less, if there are any questions or comments you have in regards to the Mono platform and XML/XSLT/XQuery futures please email them to me and, if appropriate, I will try to chat with him about it. Theres always email and phone calls available at anytime so I am mentioning this really to help stir your imaginations and maybe to generate some momentum for open source project ideas. Let me know...
Posted by m.david at 04:26 PM | Comments (0) | TrackBack
The evangelism for XQuery particular to DataDirect's offering received a boost when it was announced that Jonathon Bruce, formerly with Sun Microsystems, has joined DataDirect to act as their XQuery evangelist. As this press release points out:
Jonathan joins DataDirect from Sun Microsystems, Inc., where he served as the JDBC specification lead and architect for the Java Platform. While at Sun Microsystems, Jonathan led four Java Specification Request efforts and successfully patented technology that now forms an integral part of the latest J2SE and J2EE platforms. Jonathan's background also includes business development, sales support as well as inbound and outbound licensing consulting for the Java platform and database-dependent components of Sun's Java Enterprise System.
This is an obvious boost to DataDirect and XQuery in general. Without a doubt this should be interesting to watch.
As was recently pointed out on doron's blaahg XForms will be receiving a boost from the Mozilla project in the near future when XForms support will be available to Mozilla-based browsers via an XPI installable. This implementation uses the XTF technology which is the eXtensbible Tag Framework that came into existence post Mozilla 1.7. This is yet another big boost to the Mozilla project and will be interesting to see how the developers treat this new found luxury in client-side weblication development.
More to add to this post soon. 'Til then, enjoy!
Posted by m.david at 06:46 PM | Comments (0) | TrackBack
This will be a quick evening update as I have some matters to attend to but I wanted to quickly make note that while the template in use is temporary (will match the main site which; at current its only a partial match) the section is permanent and as soon as I have a chance I will add the feed to the main page to allow client-side transformation access. This section has its own Atom, RSS 1.0 RDF, and RSS 2.0 feeds as well as its own set of categories such that they can be further fine tuned into...
there respectful XSLT 1.0, 2.0, XPath 1.0, 2.0, XQuery 1.0, FXSL, EXSLT, etc... main code type and then further drilled into the type of problem they help solve... The hard URL for this main <XSLT:Blog/> category is found at http://www.xsltblog.com/codeoftheday/. The first entry for the category is from XSL-List today in which Dimitre Novatchev further expands with a complete code sample from Dr. Kays comments in regards to Data Types in XSLT 2.0. I plan to post as often as I find quality code samples that seem that they will be useful to the community as a whole. If you feel I have missed something on XSL-List, XML-DEV or any of the various forums please let me know. And if you have an entry you would like considered for Code of the Day please don't be ashamed. Speak up! If it helps solve a real world issue I have no reason to not post it so please, keep the code flowin' in... :D
Some quick but important news via Elliotte Rusty Harold regarding sXBL:
Cafe con Leche XML News and Resources
IBM's developerWorks has published my latest artivle, An Early Look at sXBL. sXBL is a descendant of Mozilla's XBL. The goal for it is fairly limited: really just a macro language for Scalable vector Graphics (SVG). However, I think it has more potential than perhaps its inventors realize, as I try to make clear in the article. In particular, I think it could become a very important stylesheet language that can take on tasks XSL and CSS just can't handle.
--- Very Cool!
More lead categories and related xml feeds to follow over the next few days as I tie together the loose ends of the site design, layout, and functionality. In the mean time, enjoy!
Posted by m.david at 07:29 PM | Comments (0) | TrackBack
Wow! It's been 4 days since I have made a post... I have no idea what happened to my weekend and now I wakeup and its Tuesday! While I have not spent any time writing content I have had a very productive development weekend for the new site design/functionality of which I have been pretty much posting in real-time -- It seems like an appropriate activity for a blog but if you found it annoying or confusing please let me know and I'll try to avoid it in the future. There's still a HUGE amount of work to be done but the client-side QuickScan/QuickView functionality is in place so feel free to pop-in and play around with it at will. Would love to get any feedback you have :) Which reminds me... email... uh oh 8-|
FYI... I am moving towards a new posting format for the site...
...allowing for more content to come from various sources that are either accessed client-side (via a live call to Technorati or other various weblog syndication sites) or from direct syndication from other XSLT-related blogs and such -- of which I will filter and summarize the good, bad, and the ugly at days end. I will also try to do a morning news update post on days that have a significant amount of news traffic. Otherwise I plan to create a secondary feed that will contain all news that seems important enough to post but then saving any comments for the end of the day summary. The potential exists for a huge amount of traffic to come through that particular feed as I begin to create more and more automation tools to gather and harvest XSLT-related news, commentary, code-samples, etc... from various disparate sources... Unless you have a desire to have instant access to this information I don't really recommend adding this feed to your feed reader as if you think I tend to post a lot wait until I add automation to the mix :)
The main purpose for this feed will be to pull and post an increase of XSLT-related content such that when the time is appropriate and you are looking for a specific XSLT-related item it will be available via a fine tuned search mechanism. As mentioned I plan to spend time at the end of each day filtering through this feed, finding that which seems important enough to post to the main feed, and then put it into one summary post. This will hopefully make it easier for both of us as it will reduce my time spent writing posts through out the day and will keep your feed reader a bit more manageable, at least from the XSLTBlog standpoint. Yet all of the content will still be made available, just in a more concise format.
Thats not to say that if the time/content seems worthy of a post I won't post it to the main feed. But the flood of news items that tend to come in with little or no comment will be shifted to one post at the end of the day and, if necessary, a morning post of overnight occurences... FYI... I tend to work on GMT even though I live in the states so my morning is based as such... so what will be a late afternoon summary post for those of you in the states is actually a late night, before I go to bed post... Not that this really matters all that much beyond having an understanding as to why a post marked "evening" is showing up at 3 in the afternoon and yet we live in or near the same time zone...
With that said theres a bunch of news-related items to reference so let me get these added to this post. Theres also some really good content from XSL-List regarding XSLT 2.0 and FXSL which I plan to cover eiter later today or first thing tomorrow... we'll see how the day plays out.
News from this last weekend and yesterday:
Stylus
Studio and Mark Logic Announce Integrated XQuery ...
ArriveNet (press release) - Castle Rock,CO,USA
...
com), the provider of the industry's leading XML content server, today
announced the immediate availability of new, integrated XQuery
development tools for the ...
JAPISoft
Announces a New Version of XFlows, an XML and XSLT ...
Emediawire (press release) - Ferndale,WA,USA
XFlows
is an XML and XSLT integrated solution, it helps you to create
complex scenarios, transforming a set of files with XSLT, publishing
your result into a ...
IBM
After Content Control
InternetNews.com
- Darien,CT,USA
... DB2 Content Manager 8.3 and DB2 Document
Manager 8.3 are the next step along IBM's path of improving the efficiency
with which its products process XML. ...
Datapower
adds virtualisation with XS40 update (Extensible Markup Language) network hardware maker DataPower Technology
Computerworld
Australia - Australia
New software features from XML
allow customers using its XS40 XML Security Gateway to ...
Navy
steams ahead with official XML rules
GCN.com - USA
Navy CIO David M. Wennergren said
in a memo that the rules will ensure that all service systems exchanging
data with XML are "based on a consistent set of ...
XML
Smell language developed by university
The
Inquirer - England,UK
A RESEARCHER at Huelva University in Spain
claims to have created a version of XML that can transmit smells.
Or fragrances if you prefer. ...
Posted by m.david at 06:56 AM | Comments (0) | TrackBack
I can't look another pixel in the face right now -- I have to get away from this monitor, from this computer, from this desk, and somewhere else that doesn't look anything remotely like it can render, process, or otherwise control my sanity by flashing 1x1 pixel lights at me a just enough hertz above what my mind can process as seperate images... but I know they're there... and its because I've reached this level of human-like emotional stand-off with my computer that I must go somewhere far-far away from here... Give me 8 hours or so and I'll be back raring to finish up all the details. In the mean time I think the general idea of where I decided to take this is there so if you can hold off from saying "but when I click this button it doesn't do anything" then I would love to come back to an inbox full of comments and critique. Thats how it gets better so hit me, I can take it! Uh oh, here comes my masochistic side again... run!
Bye for now :)
Posted by m.david at 08:59 AM | Comments (0) | TrackBack
DataPower's XS40 XML Secure Gateway Wins Product of the Year - ebizQ
Congratulations DataPower!
Posted by m.david at 01:06 AM | Comments (0) | TrackBack
CertCities.com | News: IBM Offering 2,000 WebSphere, XML Exam Vouchers
1/19/2005 -- IBM recently announced a free voucher offer for a number of its WebSphere and XML exams, although candidates must pass a $10 (U.S.) pre-assessment test to qualify.The company is offering 2,000 free vouchers worldwide to candidates who qualify for them via online pre-assessments tests. Those who pass will be given a voucher for the related certification exam, which can cost up to $175 (U.S.).
Sweet!
BTW... Does anyone know of any other XML specific ceritications? I took this one last year just to say I had an XML certification and as far as I could tell IBM's "XML and Related Technologies" was the only certification for no product or implementation specific XML certifications (and it definitely cost's $175 to take the test and for $10 you can't help but want to at least get a sneak peak at the questions and style of the exam -- so for the $10 this is a pretty sweet deal!)
Posted by m.david at 12:55 AM | Comments (0) | TrackBack
XML.com: Introducing the Amara XML Toolkit
Recently Uche Ogbuji, a member of the <XSLT:Blog/> Legends of the XSLT Community and avid hacker, writer, open-source contributer and lover of all music that is pure and decent (I mean that in a "pure sound" and "decent enough to enlist it in his music library for future listening" as opposed to the moral implications normally imposed on such a phrase) announced the release of his Amara XML Toolkit, a collection of XML tools for the Python development language. In this article Uche takes things one step further by introducing in further written detail the various tools made available via the Amara toolkit and examples of their usage. Thanks Uche!
Posted by m.david at 12:50 AM | Comments (0) | TrackBack
XML.com: Printing XML: Why CSS Is Better than XSL
I'm not sure how to interpret Norm's comments either. Was this a flat out statement of fact? If so I will simply hand in my CSS card on my way out the door and kindly ask Mr. Walsh for directions to whatever he might suggest as a better alternative.
I should admit ahead of time that the amount of information contained in my cranium in regards to which formatting technology is best for print output can be contained in a -- actually it can't be contained when it doesn't exist so I will simply state that this paper seems very well argued and if it wasn't for that lingering voice in my head suggesting that I'd best get some clarification first before I even start thinking about asking Norm for my card back. I will suggest though that the closing statement really seemed to suggest that the paper wasn't even really arguing against Norm's comments as much as seeing an opportunity to point out a "yeah, but..." to maybe gain some momentum from the fact that you're guaranteed to get more readers to filter this story for the simple fact that the opening statement suggested something which was bound to turn into some sort of cross-blog rumble between two power house technologists. Not a bad tactic ;)
Actually, this is a really good post in general in regards to technical content and worthy of a read regardless of any intonation of blogblood trickling from one or the others blognose. I'll give it 4em's on a scale 1-5em's. Given this is the first (and probably the last) em rating I have ever given to a post this suggest's that theres a good chance this post will hold the "Highest em rating ever on <XSLT:Blog/>" record for several years, if not more, to come. Nice work :) Maybe I'll make a little plaque or something to put... emmmm, no, nevermind.
Posted by m.david at 09:18 PM | Comments (1) | TrackBack
Of all the bad things that come from your server suddenly and mysteriously disappearing from the internet there is one very, VERY, positive thing... no comment spam for the last 5 1/2 hours... ahhhhhhhh..... ain't life grand ;)
Still don't know that after 4 hours of traveling back to SLC(I've been up in Northern Utah -- Snow. Lots and LOTS of snow -- I walked into the office in which I have my main blogging server only to find that the power was mysteriously turned off. Guess its time to tear open the log files to see what may have caused the shutdown. Til' then I am enjoying the peace, quiet, and joy that comes from staring at a screen in which there is not one single comment spam to ban-and-boot.
Posted by m.david at 09:00 PM | Comments (0) | TrackBack
I had to take a few hours off of the new site design and focus on another project. I was just sending off a response in regards to this project when a pointer to this post from Michael Kay arrived on my radar screen. Can I first suggest if you are really interested in reasearching XSLT 2.0 from the inside-out that the best thing for anyone to do is to spend the $75 US Dollars, cheaper if you buy it online, and purchase Dr. Kays XSLT 2.0 and XPath 2.0 titles. You can not find a better reference that goes any further into explaining XSLT (both 1.0/2.0 titles) and XPath (1.0 is covered in XSLT 1.0 book, 2.0 is its own seperate book) than through the very editor of the 2.0 specification, Dr. Kay. Go ahead, buy 'em, I'll wait here for you....
Ok, cool... While you are waiting for your package from Amazon to arrive heres something to tide you over :) Earlier today on XSL-List in response to a question regarding XSLT 2.0 Types Dr. Michael Kay writes:
>
> Maybe there is already a resource out there, but I can't seem
> to find a
> simple explanation. Maybe because its not so simple?
It's not that simple, certainly not with 2.0 when schemas start to come into
the picture.
I've covered it in my XPath 2.0 and XSLT 2.0 books, and it's certainly not
easy to condense into a quick message. But let's try a summary:
The value of an XPath expression is always a sequence; a sequence contains
zero or more items; an item may be an atomic value or a node.
The nodes fall into the same 7 kinds as XPath 1.0: elements, attributes,
text nodes, etc.
Atomic values belong to one of the primitive types defined in XML Schema:
xs:integer, xs:string, xs:boolean, xs:date, and so on. Alternatively they
may belong to a derived atomic type, which permits a subset of the values of
a primitive type (e.g. all strings of length 6). This can be a user-defined
type defined in a schema, or a built-in type.
If your source document has been through schema validation, then the
elements and attributes will be annotated with a schema type. This may be a
simple type or (in the case of elements) a complex type. For example, an
attribute annotated as xs:date contains a date. Complex types allow child
elements, simple types do not. Simple types may be atomic types (as above)
or they may be list types (a sequence of integers, say) or union types (a
decimal or a date). When in XPath you use a node in a context where atomic
values are expected, e.g. comparison or arithmetic, the typed value of the
node is extracted automatically (a process called atomization). This means
that if your schema declares attributes to be numbers, they will be
processed as numbers.
You can declare the types of all the variables and parameters, function
results etc in your stylesheet. You don't have to: the default is item()*
which allows any value (any sequence of any items). For example, if you
declare a parameter as xs:integer? then the value must be either an integer
or nothing (an empty sequence). Where the variable holds nodes, you can
declare both the kind of node and the required type annotation: for example
a parameter that's an element holding a purchase order might be declared
as="element(purchase-order)".
You can write XSLT templates based on types rather than names, for example
match="attribute(*, xs:date)" matches all attributes of type date. So you
can write one rule for formatting all such attributes, regardless of their
name.
When your stylesheet constructs new elements, you can ask for them to be
validated against a schema. This both checks them for correctness, and
annotates them with types that are used in any subsequent processing. You do
this using the validation and/or type attributes on instructions such as
xsl:element and xsl:result-document. This means for example that if your
stylesheet fails to output a value for a mandatory attribute, you'll get an
error message saying so, and telling you exactly where the error in the
stylesheet is. In some cases you'll even get this error at stylesheet
compile time.
You can ignore most of this and do dynamic typing as in XSLT 1.0 if you
prefer. But there are considerable software engineering advantages in
declaring your types: it means you get better error messages when you make
mistakes. In general, if you make coding errors in XSLT 1.0, your stylesheet
produces wrong output. The same mistake in 2.0 will often produce type
errors, reported often at compile time but at any rate at run-time.
OK? If not, there's more in the book...
Michael Kay
http://www.saxonica.com/
Posted by m.david at 02:12 PM | Comments (0) | TrackBack
While not as funny at the last two this is still worth a quick lunch time glance.
Posted by m.david at 12:01 PM | Comments (0) | TrackBack
Recently on xml-dev Tony Lavinio, a Stylus Studio Engineer, announced:
Stylus Studio 6 XML Professional Edition, Release 2 is now available for
free trial download at: http://www.stylusstudio.com/xml_download.html
The latest update of our XML IDE adds full support for Electronic Data
Interchange (EDI)-to-XML mapping in its Convert-to-XML legacy data
integration tool, and many new features and usability enhancements to
the Stylus Studio XML Schema Editor, Grid View, XML Mapper, XQuery
Editor and XSLT Editor.
Some of the highlights of the new release include:
* Convert-to-XML: Full support for EDI-to-XML mapping, including
component and subcomponent fields, as specified in HL7, UN/EDIFACT and
ANSI/X12 specs, support for common datatypes including BCD (packed and
unpacked) Comp-3 (COBOL format), and Zoned – (IBM signed/unsigned
decimal), multiple match patterns, key/value pairs, lookup tables for
decoding field values, XML Namespace/DOCTYPE support in output
document, support for stop patterns to stop processing of a particular
region, and many usability enhancements.
* XML Schema Editor: Simultaneous text-diagram view/editing in the XML
Schema Editor, in-place editing of any XML Schema component
references, support for substitution groups, intelligent copy/paste,
enhanced XML Schema data model re-factoring capabilities, and many
usability enhancements.
* XML Grid View: Expanded support for visual XPath analysis, rename
element/attribute, remember column width & expansion state, and many
other usability enhancements.
* XML Editor: Updated XML editing and validation support for the XSV 2.8
XML processor.
* XSLT Editor: Updated support for the Saxon 8.1.1 XSLT processor.
* XML Data Server Connectivity: Integration with Mark Logic Content
Interaction Server 2.2 and Sleepycat DB XML 2.0
For more information about the new features visit:
http://www.stylusstudio.com/xml_product_new_features.html
Sincerely,
Tony Lavinio
Stylus Studio Engineer
http://www.stylusstudio.com
Posted by m.david at 11:22 AM | Comments (0) | TrackBack
Microsoft CRM Customization – If You Give Up
And of course you should be familiar with all the legacy internet technologies, such as HTML, XML, XSLT, JavaScript and be good C#/VB/Net developer.
Isn't the term "Legacy" generally reserved for systems that are being phased out?
Ok, I can see the day that HTML is replaced by SVG, XUL, and XAML. Actually, I can see Atom, RSS(especially RDF), and other XML Syndication formats taking more and more of HTML's glory as we move further into a dynamic web structure where we define how we want the information formatted and by what markup language and interface. But then again I also think that Dynamic HTML, XHTML and CSS combined with Javascript and XSLT make an extremely powerful combination and we are going to see these technologies used together more and more rather than less and less. So in reality I can't see the day that HTML in one form or another doesn't take a commanding presence amongst the GUI markup technologies of the future.
I guess there's nothing really here to cry foul over but this isn't the first time I have seen this term used to describe technologies that, while competitors are in place, are not going away anytime soon and in fact will see more use in the future rather than less which, again, is generally the time I would think using "Legacy" would be appropriate. Just general ramblings, don't mind me... ;)
Posted by m.david at 10:09 PM | Comments (0) | TrackBack
"With the new Altova Online Training program, our goal is to provide participants with a relevant and flexible program that helps them develop the comprehensive skills needed for implementing successful XML development projects."
Now this is an Altova product I could stand behind. I think. I would definitely and very highly recommend a live and in person training course from G. Ken Holman or Mulberry Technologies. In fact...
...pretty much any live training session is going to give you far more advantage than anything you do online but then again online courses have their advantages as well. From an online standpoint Altova would be a good company to provide such services so I will give props where props are due. If any of you happen to take a course from them and have comments I would love to hear about it. It would be fantastic to see a good set of structured online courses and training made available and if there is a company that has the resources as well as the expertise to pull something like this off and pull it off well it would definitely be Altova.
Posted by m.david at 09:40 PM | Comments (0) | TrackBack
Slashdot | Are Extensible Programming Languages Coming?
gManZboy writes "Programming writer and instructor Greg Wilson is proposing that the next generation of programming languages will use XML to store not only such things as formatting (so you can see indentation your way, and I can see it my way, via XSLT) but even programmatic entities -- like: <invoke-expr method="myMethod"><evaluate>record</evaluate></invoke-expr>. Wacky, but perhaps wacky enough to be possible?"
My first take on this title was "aren't all programming languages extensible" and then I came to my senses and realized the keyword here was "language" not "code base". My next thought was "it's not whacky at all and in fact they already exist right now."
Dimitre's FXSL library is a fantastic example of embracing XSLT and extending it to contain a more complete implementation of a pure functional language. The EXSLT project is another perfect example. Whats really funny to me is that this "concept" is considered new? Lisp, second (amongst languages still in use today) in age only to Fortran, is built entirely around the extensible concept as is a myriad of other examples. I should probably read more than the first snippet of this article before I question what is meant by this comment so for now I will just leave it at this. I was actually just taking a quick break before I go back under to finalize a few more things on this sites design as well as UnderstandingXSLT.com site design. I'll come back to this later and see what more there is to add or subtract from my comments...
Posted by m.david at 09:34 PM | Comments (0) | TrackBack
InfoWorld: Interwoven unfurls LiveSite: January 17, 2005: By Cathleen Moore : APPLICATIONS
To construct templates for an extranet, intranet, or Internet-facing site, IT developers first define the standard items that need to be shared across multiple sites and then create XML- and XSL-based components, company officials said.
Posted by m.david at 05:09 PM | Comments (0) | TrackBack
In a recent comment on the post that Michael Rys recently linked to via a comment here on <XSLT:Blog/> (see previous post) Tum asks:
"Is there going to be a downloadable implementation for adventurous XML developers?"
In response Michael Rys points to the following downloads:
Hi Tum,You can download the SQL Server Express Beta from
http://lab.msdn.microsoft.com/express/sql/
or SQL Server 2005 Dev Edition from http://msdn.microsoft.com/SQL/2005/ (if you are an MSDN subscriber).
Posted by m.david at 03:59 PM | Comments (0) | TrackBack
Describing this release as "...a bugfix version of RSS 1.0, being a popular XML-based syndication format" in a post to xml-dev Sean B. Palmer (And here I thought he was only good at snowboarding -- haha, pretty funny joke, huh? I thought of it myself. I plan a stand-up tour for next fall ;) writes:
I'm pleased to announce the release of RSS 1.1: a bugfix version of RSS 1.0, being a popular XML-based syndication format.http://inamidst.com/rss1.1/ - RSS 1.1 Specification
This specification has been developed by a group of RSS 1.0 users including myself who sought not just to resolve the various bugs therein but also to improve the integrity of the specification in general, and provide RELAX NG and RDF Schemata.
To coincide with the release, we're also making available a number of tools, including an RSS 1.1 feed validator (using a SAX parser in Python), a converter (based on XSLT), a test suite, and various implementations for Movable Type, Wordpress, and others, all of which are linked to from the following guide:
http://inamidst.com/rss1.1/guide - A Rough Guide to RSS 1.1
Discussion of the format may be had in any of the following fora, depending upon the particular nature of the feedback:
- * xml-dev - Reply to this thread if you have comments about any XML related matters, especially including the validator and XSLT implementations.
- * irc.freenode.net #rss1.1 - For real time communication with the developers of the specification, and any general comments.
- * rss-dev mailing list: http://groups.yahoo.com/group/rss-dev/ For feedback on how RSS 1.1 relates to 1.0 and other syndication formats.
Specific typographical corrections may be sent directly to the editors, the contact details for whom are in the specification.
Thanks,
--
Sean B. Palmer, http://inamidst.com/sbp/
Posted by m.david at 01:35 PM | Comments (0) | TrackBack
In a recent post to XSL-List George Christian Bina writes:
Hi,I'm glad to let you know that a new version of
is available. The main additions in version 5.1 are folding, code templates, better Relax NG support, Schematron validation and the possibility to use MSXML and XSLTProc as XSLT transformers.
The full list of new features with descriptions and a few video demonstrations can be found at: http://www.oxygenxml.com/index.html#new-version
I will describe shortly below the new features directly related with XSLT development.
The XSLT editor contains a large number of code templates (thanks to M. David Peterson) covering most of the XSLT constructs. The code templates are editable so they can be customized to specific needs or preferences.
Another addition is the possibility to select not only a DTD or an XML Schema but also a Relax NG schema for the XSLT result - this is used to offer content completion proposals when xsl:element is allowed. Version 5.1 adds XSLTProc and MSXML 3.0/4.0/.NET to the existing XSLT processors (Xalan, Saxon - both version 8 and 6.5.3 - and any other JAXP compliant processor). There are also improvements in the XSLT Debugger GUI - the tables from the different debugging views are now sortable. Also the dynamic content completion added a couple of new cases handling now parameter names in xsl:param and offering possible template names on xsl:template/@name.
In the end I would like to mention also the Schematron support, although it is not directly related with XSLT it uses XPath and the validator is implemented in XSLT. <oXygen/> offers now support for validating XML documents against Schematron schemas and against XML Schemas or Relax NG schemas with embedded Schematron rules.
Best Regards,
George
---------------------------------------------------------------------
George Cristian Bina
<oXygen/> XML Editor, Schema Editor and XSLT Editor/Debugger http://www.oxygenxml.com
As George mentioned I was given the opportunity to be a part of this release by adding my list of abbreviations and matching templates. I appreciate the mention but in reality I didn't do all that much. I simply put together the list of (version 1.0) templates that I use in jEdit and gave a few implementation suggestions. The cool part about that though is that there is now abbreviation/template support :) which was my biggest hold out to sqitching to <oXygen/> on a full time development basis. And given its integration into Eclipse it made the decision that much easier :) Thanks George for a wonderful product!
Posted by m.david at 01:15 PM | Comments (0) | TrackBack
77 new comment spam to delete since last night at about 2am. A new record! Wait, thats not a good thing...
Is Viagra really all that difficult to obtain via normal means to justify the effort? Well, I guess it's not all that hard to build a comment spam bot so I guess it takes one buyer... Hmmm... well, while I look forward to my next batch of deletions please enjoy this tidbit of wisdom offered up my Michael Rys in a comment regarding my previous "Reasons for no XQuery on version 2.0 of the CLR..." post from last week:
http://www.xsltblog.com/archives/2005/01/understanding_x.html#comments
Thanks for the update Michael!
Posted by m.david at 01:05 PM | Comments (0) | TrackBack
In what I thought was going to be a fantastic day spent launching all sorts of new site designs, content, and code has instead turned into a day spent in frustrations after a late night coding session found a slight mishap which has fried my motherboard...
I think God is making me pay now for my comments from a week or two ago regarding the whole "God is a functional programmer -- Alpha and (C)Omega" metaphor... I'd linked to it but I am enjoying my current midi-sampler (I am currenly using a machine that can can do little more than access the internet and play midi show-tunes in a very ch op p ed up sequence) and would prefer to finish it out before He decides I haven't learned my lesson and fries this machine too. ;)
Hmmmmm... Well, maybe I'll get a machine up and running by the end of the day and tonight and tomorrow will be much more happy than today is (mind you, you might be amazed at just how happy a day can become when forced to listen to elevator music -- even REALLY BAD elevator music. You might even find yourself singing along like I am now :D I'm cancelling my Napster subscription. Who need's Napster when you've got midi! (you think theres a "Midi-Makers Association" that would find fault in "illegal" downloads? probably... guess Napster's safe for now ;)
BTW.. My head has been down for almost 4 (wait, make that 5) days now and if you have tried to contact me through means other than GMail chances are I haven't read your message yet. My apologies for this. I will hopefully be back on target soon!
In the mean time please enjoy a sampling of my favorite midi "show-tune" of sorts... Queens "Bohemian Rhapsody".
In case you would like to see along:
Is this the real life?Is this just fantasy?
Caught in a landslide
No escape from reality
Open your eyes
Look up to the skies and see
I'm just a poor boy, I need no sympathy
Because I'm easy come, easy go
A little high, little low
Anyway the wind blows, doesn't really matter to me, to me
continued...
Enjoy your day! :) I know I will mine...
Posted by m.david at 03:22 PM | Comments (0) | TrackBack
In a recent post to xml-dev MURATA Makoto writes:
Dear colleagues,Let me announce the final committee draft of Namespace-based Validation Dispatching Language (ISO/IEC FCD 19757-4). NVDL is a language for dividing a multi-namespace document into single-namespace fragments and then invoke validators for these fragments. The main target of this language is a composite XML document that combines multiple formats, such as XHTML, SVG, SMIL and XForms.
This language has several ancestors: RELAX Namespace (JIS TR and ISO/IEC DTR), Modular Namespaces (James Clark), Namespace Switchboard (Rick Jelliffe), and Namespace Routing Language (James Clark). NRL is the closest ancestor.
ISO/IEC FCD 19757-4 is available at:
http://www.jtc1sc34.org/repository/0586.pdf
http://www.asahi-net.or.jp/~eb2m-mrt/dsdl/
Here are some pointers to talks about NVDL.
- Opening keynote speech for SVG Open 2004 (MURATA Makoto)
http://www.asahi-net.or.jp/~eb2m-mrt/svgopen/
- Namespace Routing Language (James Clark)
http://www.thaiopensource.com/relaxng/nrl.html
- XML 2003 session report: Namespace Routing Language (Uche Ogbuji)
http://www.xmlhack.com/read.php?item=2125
- Combining multiple vocabularies (MURATA Makoto)
http://www.idealliance.org/proceedings/xml03/slides/murata/murata.ppt
- XML 2003 session report: Combining multiple vocabularies without tears (Uche Ogbuji)
http://xmlhack.com/read.php?item=2123
Cheers,
--
MURATA Makoto
It has long been predicted that the document would eventually become the application. Declaritive markup languages such as XUL, XAML, and SVG have made significant inroads into making these predictions a reality. The release of this document outlining the ability to divide multi-namespace documents into single-namespace fragments for validation provides one more link in the chain that will eventually bring together this long sought after vision. Who can say how many years will transpire before we see a single document structure take the place of the existing plethora of document structures that exist. But if you don't think namespaces, meta-data, and mime-types have a significant spot cemented in our computing future you may want to read some of the above links and think through just how important the ability to describe to a multi-data-type processing system the type of information contained in a document will be when instead of opening an instance of Word we simply describe the data contained in our document and let the system that is rendering this information decide what component will be necessary to render this data properly. The time is now to begin thinking of software not in the sense of applications but in the sense of individual components that all work together in a harmonious symbiotic relationship to provide services as needed to a single flow of interlinked data. Huh, when you think of it this data-flow sounds kind of like RDF. And isn't C# a Component-Oriented language as opposed to just and Object-Oriented language. And isn't...
Ok, you can probably see where I am going with this. These technologies have long been in the incubators of the top software companies and research organizations (think-tanks, Universities, etc...) and this is just one more document showcasing proof positive that no matter what it may feel like via the internet-year way of thinking things are moving in a positive direction and we can continue to look forward to a world where .doc, .xml, .whatever no longer exists as part of our computing world. Not that these formats are going away, they will just exist inside an enclosed compound-document structure similar to that described above. Cool! :D
Posted by m.david at 10:21 AM | Comments (0) | TrackBack
Fore those of you unaware Jeroen recently announced that he has posted the official 1.0 (0.10) release of IKVM.NET to SourceForge. Congratulations Jeroen!
Posted by m.david at 09:38 AM | Comments (0) | TrackBack
I was recently pointed to this blog posting by Sam Pullara showcasing his use of XQuery to solve a real world issue with URL length on mobile phones when trying to access them on the web (via the number pad.)
A summary of the technologies used are as follows:
The service is running on Tomcat 5.0 and is completely written using JSP 2.0 and the JSTL. There are no scriptlets in the JSP pages and all code is abstracted into .tag files. It makes use of the Saxon 8 XQuery/XSLT engine for transformations, the JTidy library for cleaning up HTML pages, the DisplayTag library for showing tables, and PostgreSQL for storing all the data. The whole thing was built using IntelliJ 4.5.3 with my JSP 2.0 enhancements. If you have any questions or want to add some features to it, I can give you CVS access with good google references.
Very cool!
Posted by m.david at 09:19 AM | Comments (0) | TrackBack
Understanding XML: Thoughts from VanX Talk
In a recent comment to Kurt Cagles recent entry regarding his talk at VanX last week Michael Rys writes:
Sorry that I missed your talk (the US consulate almost kept me long enough :-)). I think that we have not communicated that well what our strategy and reasoning for pulling XQuery from the .Net Framework (but not the SQL Server database) is. We plan to provide a clear statement on http://msdn.microsoft.com/xml/ in the near future.
I'll definitely be keeping an eye out and will keep you posted as to anything that I see.
Posted by m.david at 09:02 AM | Comments (1) | TrackBack
My most sincere apologies to Mike for this rediculous oversight. The funny thing is that I thought for sure I had him on there and so did the person who pointed this out to me. Hmmmmmm... well the problem is fixed now. Welcome (back?) Mike! Your presence in the community has long been appreciated and we look forward to what becomes of your presence at Microsoft :)
Posted by m.david at 08:13 PM | Comments (0) | TrackBack
Posted by m.david at 03:47 PM | Comments (0) | TrackBack
Putting XML in the fast lane | CNET News.com
Posted by m.david at 08:52 PM | Comments (0) | TrackBack
An Extensive Examination of Web Services Part 2
Posted by m.david at 08:51 PM | Comments (0) | TrackBack
XML data validation with XPath and XSL: Builder AU: Web Development
Posted by m.david at 07:39 PM | Comments (0) | TrackBack
"AspectJ Cookbook": Even Lazy Developers Can Write and Design Better Software
"This book is the one that I would have wanted on my desk when I first picked up AspectJ, and it's also the one that I still use," says Miles. "I use these recipes on a daily basis."
For those of you who would never even think of making such a statement think about it this way... don't we all tend to try and do this already? I mean we all take notes, sometimes.... and I know we all spend hours scrambling around looking for those notes until we finally give up and use some other hack to make it work... for now. So, if you are planning or are even thinking about making a plan to someday write a book... Then make it the book that you would want on your desk to reference as necessary. If you lose it I'd bet your publisher might even give you a new one :) We all know the "Cocky" and "Arrogant" developer who always claim they don't need to look something up... they practically wrote the book, right? WRONG!
Real writer/developers read and reference their own books all the time! Pretty down to earth quote if you ask me :) <-- That was a rhetorical question... please don't ask me ;) :D
Cheers Russ!
Posted by m.david at 01:06 PM | Comments (0) | TrackBack
SAN FRANCISCO--(BUSINESS WIRE)--Jan. 12, 2005--Quark, Inc. today introduced QuarkXPress Markup Language (QXML), an XML schema of the World Wide Web Consortium (W3C) Document Object Model (DOM) that will make it even easier for developers to create custom XTensions software for Quark's industry-leading page-layout software, QuarkXPress. The QXML schema fully describes the QuarkXPress file format in XML and enables QuarkXPress 6.5 XTensions software to be developed using industry standards and a wide variety of development platforms and languages, including Java, .Net, and many scripting languages.
Working with Standards"For many years, valuable content has been locked in proprietary file formats, while the move towards multi-channel publishing has dictated that it can no longer be used just for print," said Juergen Kurz, Quark's vice president of product development. "With an industry-standard methodology for describing the QuarkXPress file format, our customers have greater security because their QuarkXPress content can be easily integrated into today's complex multi-channel publishing environments."
Easier Programming
One of the strengths of QuarkXPress is its strong developer community with hundreds of third-party XTensions modules available to augment the functionality of QuarkXPress to meet the diverse requirements of its customers. XTensions software developers have always programmed in C or C , but with QXML, developers can write XTensions modules for multiple platforms in C , Java, any language supported on the .Net platform (including C# and VB.Net), and scripting languages (including AppleScript, Perl, JScript and VBScript)....
Press release continues...
Posted by m.david at 02:35 AM | Comments (0) | TrackBack
Ektron Supports Structured Content Strategies With XML Indexing Feature in a .NET Solution
AMHERST, NH -- (MARKET WIRE) -- 01/12/2005 -- Ektron Inc., today announced that the company's flagship .NET content management solution, CMS400.NET supports an end-to-end XML content strategy with built-in XML indexing that makes it easy and intuitive for Web site visitors to find and consume information. By structuring and indexing content, organizations can unlock the value of content and guide visitors to the right information.
Posted by m.david at 02:25 AM | Comments (0) | TrackBack
I'm posting this because:
- I love COmega
- I consider Dare to be one of the most intelligent developers I've never met.
I will say that there are some things stated which got me a little...
emmmm... well, they got me pretty fucking pissed off to be honest. I deleted them and am moving on. COmega is worth learning about and Dare is one HELL of a developer and writer. I feel comfortable leaving it at that, so I will.
Posted by m.david at 12:30 AM | Comments (0) | TrackBack
That or I'm taking a tript to Alaska for the rest of the winter as if this all turns out like it sounds like it might.... I may just have a few extra hours in my pocket to play with this winter :D
The topic or queue can be directed at an MDB or a JCA adapter, a specialized integration service such as XML caching, XSLT transformation, or could be mapped administratively to call out to an external web service. This mapping is done using SOAP over HTTP, or even WS-Reliability/WS-ReliableMessaging as those protocols reach maturity and become prevalent. Chappell concedes that just how the "integration architect" would access the ESB service API has yet to be decided. But the current direction could allow APIs to be implemented using such familiar (and open) toolkits such as Apache SOAP or Axis, and could conform to popular Java standards, such as JMS, JAX-RPC and SAAJ.
Posted by m.david at 12:18 AM | Comments (0) | TrackBack
Computerworld | DataPower updates firmware for acceleration engine
[INSERT: That last title SUCKED! If you happend to see it... sorry! :D]
"We built this whole new engine that relies on compilation technology to accelerate schema validation," says Eugene Kuznetsov, chief technology officer for DataPower. Last year, the company patented the compilation technology, which turns XML processing instructions into a form that can be read by the acceleration hardware.
+1
DataPower also added XML parsing support for transforming XML messages into Java objects and into Binary XML, an emerging and controversial XML format supported by DataPower.
+1
The company added partial support for XPath 2.0 and XSLT 2.0, which include enhancements such as decimal support that support monetary computations made in applications.
Add +1 even more..
The XA35 firmware version 3.1 is available now and is free for current customers
They've opened there door so let's make it four.
Now all we need to find out is if it actually works the way that claim it does. I have no doubt that it will but it would be nice to get some field numbers. Anybody want to share?
Posted by m.david at 12:03 AM | Comments (0) | TrackBack
In a recent post to XSL-List, B. Tommie Usdin, a member of the <XSLT:Blog/> "Legends of the XSLT Community" and founder of Mulberry Technologies (Maybe you've heard of her/them? ;) announced the Extreme Markup Languages 2005 Call for Participation. Please see the embedded links in the extended portion of this post to gain access to the various information available in regards to this very important XML industry conference.
A peer-reviewed technical conference. An unfettered festival of
unconventional markup. Pointy-brackets, pointed questions, and
sharp ideas. Nearly a week of geek speak.
Extreme Markup Languages® 2005
Produced by IDEAlliance
August 1-5, 2005
Hotel Europa, Montréal, Canada
Extreme Markup Languages is devoted to the theory and practice of
markup languages from industrial, academic, and other points of view.
It differs from other conferences partly in its unapologetic emphasis
on technical subjects and problems on the frontiers of current
practice, and partly in the participants it attracts. Extreme
typically has an unusually high concentration of markup theorists
computer scientists, linguists, taxonomists, publishers,
lexicographers, typographers, software developers, librarians, and
other people you want to spend time with - also anarchists,
curmudgeons, and deep thinkers - and a lower than average
concentration of managers in need of a clue.
Topics are likely to include:
- XML, XSLT, XSL-FO, XPath, RSS, OWL, XTM
- XML querying and searching
- Knowledge representation: Topic Maps, RDF graphs, and semantic
networks
- Constraint languages: DTDs and schemas
- Metadata registries and unregistered metadata
- Anthropology of markup adoption patterns
- XML databases and content management systems
- Performance and other deployment issues
- Making the world mark-upable: ontologies, taxonomies, controlled
vocabularies, and PSI
- The Next Big Edge Case
- Chicken lips, overlap, and other things you can't talk about
without using your hands
Specific Calls for Participation now available:
Call for Papers: http://www.mulberrytech.com/Extreme/details.html
Call for Peer Reviewers:
http://www.mulberrytech.com/Extreme/peerapply.html
Call for Tutorials:
http://www.mulberrytech.com/Extreme/tutorialcall.html
If you worry that your topic lacks geek chic, run it by us: send us
email at extreme@mulberrytech.com. Case studies, software development
war stories, project reports, markup archeology, and news from
far-flung fronts in the war for better knowledge and information
management are all welcome at Extreme. Vendor softsoap we use to
line the birdcage.
Details now at http://www.mulberrytech.com/Extreme
More information soon at: http://www.extrememarkup.com
Produced by IDEAlliance: http://www.idealliance.org
--
======================================================================
Extreme Markup Languages 2005 mailto:extreme@mulberrytech.com
August 1-5, 2005 http://www.mulberrytech.com/Extreme
Montreal, Canada http://www.extrememarkup.com
======================================================================
Posted by m.david at 04:20 PM | Comments (1) | TrackBack
<!— Ok, flat out, what I am about to say is a total lie —>
Those who have spent any length of time with me know that I’m one who trys to find fun in everything I do. <— Wait, that parts true… the next part is the lie :) —>
One of the past times that I would have to add to my list of all time most favorites things (probably in the world!) is to watch the flood of rapidfire responses that from time to time will enter my specially labeled XSL-List (and as such the email from XSL-List is routed directly to it. Its like friggin’ magic. WamBam, thank you Ms. email rerouting Mam!) Inbox all answering the same question, some with slight variations, and other that are flat out just complete and total… well, I think you’ve probably read one or two of the emails I’m refering to. Hell, for all I know I may have written one of them back in the day (BTW… if your immediatte response to my “back in day” comment was “yeah, like back yesterday… bwaa haaa hah haahh” — come on, you couldn’t come up with something just slightly more original? Actually, no, you’re right… its not a bad comeback… as long as you didn’t bust out laughing uncontrollably afterwards and then nudge you’re buddy like “that was a good one, huh?” — no, then it most definitely wouldn’t have been a good come back.
Alright, moving forward here… :D ;)
<!— This next part is true, then back to the lies again —> I know I am not the only one on the planet who enjoys it when Michael Kay — imagine if you will with me… close your eyes… tighter…. little tighter…ok, good.. — Now imagine that while Dr. Kay is getting ready to type Yet Another —
[QUICK DISCLAIMER: These are my own words imagined to be what Dr. Kay MIGHT be thinking — I’m just trying to get some amusement out of my day so just play along for like 2 more minutes, k? Thanks :D Oh, and, again this “quote” is my own fictitious mumblings and has NEVER nor do I honestly believe would EVER be said, thought, or otherwise implied by Dr. Kay — just me an my little hampster brain upstairs having some fun, K :D — So, here is what I envision might be being thought while the “Correction Email” is being written. I imagine him shaking his head slowly, putting his left hand to his forehead, taking a deep breath, and thinking…
“No you silly young chap, you must be confusing what the correct answer actually is with whatever the hell you call that crap you just engraved in electrons and sent out over the wires for some unsuspecting poor young soul to be infested with… Does your Mother know you type with those fingers?”
which (again, in my head — not his — mine — just so we’re clear on this) is then followed by:
“why did I ever think this whole open source thing was a good idea?”
<!— K, back to the lies… or, nah… I’m done —>
The whole point of this post in the first place (and in fact there really wasn’t any really gross errors made by anybody on this last post… I’m just waiting for the 4 feet of snow that got dumped on Logan, Utah — one of my sisters lives in Logan — to clear a bit so I can get on with my day of — oh, I guess I’m still going to be writing code when the snow clears… just somewhere different than where I’m at right now… I guess this post was totally pointless then… oh wait, no its not….
The point? If you want to output CDATA tags in your XML output go like this before you write your first <xsl:template …> (or in other words, this must be a direct child of <xsl:stylesheet…>)
<xsl:output cdata-section-elements="white space seperated element list"/>
Thats it! All that pain and suffering for one lousy line of code. I feel awful… you poor thing… you gonna be ok? Maybe you should take the rest of the day off work and go and lie down… ;)
I’m gonna go check the roads… Bye for now :D
Posted by m.david at 09:05 AM | Comments (1) | TrackBack
Amazon.co.uk: Books: AspectJ Cookbook
Well, apparently some of you were paying attention cuz' Amazon.co.uk (where Russ calls home -- well, the UK part of Amazon.co.uk anyway ;) - has just sold out!!!! Its currently got a sales rank of 5,022 for A.co.uk and here in the USA it sitting at 98,494! For a book that was still taking pre-orders 2 weeks ago I think its pretty safe to say that we've got ourselves a winner in AspectJ Cookbook! :)
Congratulations Russ!!!
Posted by m.david at 07:06 AM | Comments (0) | TrackBack
Understanding XML: XML In the Crystal Ball: How I Learned to Relax
...and thats never a bad thing!
You know there are very few people on this planet who can hold a candle to my verbosity in both the spoken and written language...
Kurt Cagle can hold 6 candles, 6 matching solid brass candle holders, a pair of authentic Japanese chop-sticks (correctly mind you), a salad fork, and 7 or 8 toothpicks that he'll casually fling at me (with surprising accuracy!) at random points in our conversations just to help keep me alert as I'm sure to him the dead stare and the dropped jaw is more of a sign of some ever so slight brain damage >>-- the drool is what does me in I think -- besides theres nothing slight about my brain or its damage... its there, its a brain (I think), and its damaged... pretty basic stuff... just ask any of the women I've dated, they'll tell you (among other things I'm sure!);):D) ---<< than what it really is -- the fact that I have simply never been outdone on such a consistent day in day out basis when it comes to my chat, chat, and chat some more capabilities. Hah! You'd think I was mute if you were to listen in on one of Kurts and my conversations ;) As far as I know there are only 6 people on this planet that can both out write me and out talk me.
My 5 sisters. And Kurt Cagle. :D
And thats not a slam (and he knows it even if nobody else realizes it :)! That is pure and simple respect my friends; pure, simple, and honest to goodness respect. Not that respect and fun can't be part of the same general activity....
In fact much like this post for example. See that link up top? It points to Yet Another Fanstastic Article by the NotoriousKC Himself -- Live, No Jyve, and Damn can than man dance to Stayin' Alive -- Ahhh, ahhh, ahhh, ahhhh, stayin' Alllllllllliiiiiiiiiiiiiiivvvvvvvvvvvvvvvvvvvvvvvveeeeeeeeeeeeeeeeeeeee Ahhh Whoooo.... You can tell by the way he ..... ok, I'll be quiet now :D
Cheers Kurt! Thanks for another great article :)
Posted by m.david at 01:05 AM | Comments (2) | TrackBack
Posted by m.david at 07:40 PM | Comments (0) | TrackBack
New software which makes use of the CSV compaction of XML easy? Thats what the subject line claims. Unfortunately I don't have the time right now to look into this further but for those of you in whom do not subscribe to xml-dev I wanted to get this out to you to play with and decide for yourself exactly what is being refered to. The post from just a few minutes ago is as follows:
UPDATE: Correction on the URL
Dear Sirs:
This is announcement that the software which makes use of
"CSV (Comma Separated Values) compaction for XML" easy was newly
added.
I introduced the revision of the CSV compaction software here in
last April. This is the still stronger reinforcement.
The added software is the GUI editor of Java version which generates
specifications of how to compact XML documents.
The CSV compaction is a tool which improves data-processing
performance for large data-centric XML documents by packing specified
non-process-target elements and attributes in the CSV format.
The CSV compaction is an reversible process. The compaction and
de-compaction are performed with the automatically generated XSL sheets.
We have distributed the trial version from the following site:
http://www.labs.fujitsu.com/en/freesoft/csvc4xml/
The new added software displays a tree image, after inputting its DTD.
And it can specify by GUI operations which elements and attributes are
compacted. Then it outputs specifications for the CSV compaction.
This software makes it easy to compact XML documents with many
kinds of element names and complicated data structure.
DTDs are generated by using a DTD generator tool from XML documents.
Some open source software is appended to this Java version software,
and, for this reason, this software can be tried without special
initial setting.
We express gratitude to the open source software used here,
Apache Xerces, Apache Xalan, Saxon, DTDGenerator and nekoDTD.
I would appreciate it very much if you try this software and give
us your comments.
Best Regards,
=================
Shigeru Yoshida
Fujitsu Labs. http://www.labs.fujitsu.com/en/
Posted by m.david at 04:46 PM | Comments (0) | TrackBack
Joel on Software - Advice for Computer Science College Students
I'll let Mr. Spolsky speak for himself... (thanks for the pointer Mr. YouKnowWhoYouAre ;)
Posted by m.david at 11:06 AM | Comments (0) | TrackBack
In a recent email to Jeroen Frijters I forwarded the announcment from the GNU JAXP team regarding the availability of the JAXP 1.3 libraries and asked:
> -----Original Message-----
> From: M. David Peterson [mailto:*.*****.*****@gmail.com]
> Sent: Tuesday, January 11, 2005 11:41 AM
> To: Jeroen Frijters
> Subject: Fwd: [xml-dev] ANN: GNU JAXP 1.3
>
> Is this part of the latest build?
His response:
Yes, the 0.10 version includes GNU Classpath 0.13
Sweet!
Visit Jeroens blog to download the latest bits....
Posted by m.david at 04:02 AM | Comments (0) | TrackBack
As per my last post.
Reason #1 - It's my damn blog and I will add whomever I damn well please ;)
Ok, that was a joke... kinda.
The real reason is that because of IKVM.NET we have Saxon.NET. Nothing I have done beyond adding a few hacks here and there and locating a couple extra open-source libraries (which anybody with half a brain could have done) to make things work outside of the Java infested, errrr, ummmmm..... hmmm... can't think of a way out of this one... well, anyway...
When Pieter and I first started the Saxon.NET project and Pieter located and pointed me at the IKVM.NET project (I had seen the project but was not aware there were any bits to play around with... Pieter discovered the existence of such bits, pointed me to them, and within 48 hours of hacking at the Java source code and locating a couple extra support libraries the first Saxon.NET build came into reality) it took a bit more than just a couple of hacks to get the first couple of Saxon.NET builds out the door. But thats no longer the case. While there still exists a few "minor" hacks to get the project to compile and run (problems with URI handling... see this post on the Saxon.NET project blog for more info) for the most part you can take the latest Saxon source and within a few hours have a living, breathing Saxon.NET build. Hows that possible? Jeroen Frijters, thats how.
Welcome Jeroen! Thank you for giving us IKVM.NET! :)
Posted by m.david at 03:26 AM | Comments (0) | TrackBack
I was going to hold off for a month or two before adding Emmanuil Batsis (Manos) to the Legends list. Why? No particular reason beyond the fact that... wait, there are ZERO good reasons to keep from adding Emmanuil to the list now and one VERY good reason why he has earned his spot. The reason?
Emmanuil has gone out of his way to provide what I feel is the second most important open source contribution to the software development world in 2004. Whats the first? IKVM.NET. In fact my very next post will be the addition of Jeroen Frijters to the Legends list. Why add Jeroen and the IKVM.NET project to the Legends of the XSLT Community List when IKVM.NET is a Java byte-code to CIL/MSIL conversion compiler/run-time engine? Read the next post and find out. :)
In the mean time, Welcome Emmanuil! Thank you for giving us Sarissa! :)
Posted by m.david at 02:30 AM | Comments (0) | TrackBack
IKVM.NET Weblog - 0.10 Release Candidate 2
Posted by m.david at 12:17 AM | Comments (0) | TrackBack
Don Demsak AKA DonXML is someone in whom many of us are familiar with through various means. I first "met" Don when he volunteered to take part in the Saxon.NET project that Pieter Siegers and I started back in June. I met Don in person for the first time at Chris Sells XML DevCon in October...
...and was even more impressed than I already was by his demeanor, attitude towards technology, and overall knowledge of pretty much every technical topic under the sun. Well, it seems that the status as one of Microsoft's XML MVP's has been "renewed" for yet another year. I am in no way surprised and I wanted to quickly point this out and congratulate Don publicly for a job well done! He deserves every bit of respect that inherently comes from being honored by Microsoft via their MVP program and I would like to second the motion so to speak from the standpoint of an XML hacker. Flat out, Don knows his XML sh--!
I am ever so grateful that he and I have become both friends and professional acquaintances and I look forward to continuing to work with him in various areas including the Saxon.NET project in which he has agreed to take on the task of the lead technical content developer and manager -- interested in a Saxon.NET article for your magazine or e-zine? Give Don a buzz :)
Congratulations Don!
Posted by m.david at 12:00 AM | Comments (0) | TrackBack
Intelligent Enterprise Magazine: When Worlds Collide
Posted by m.david at 11:17 PM | Comments (0) | TrackBack
Ok, so I have been meaning to do this post for a while but this is the first chance I have had to play with the Travel Messenger that I was fortunate enough to be given access to a few weeks back. A while back I did a piece on a really cool technology that I found at the Amazon Web Services blog. Riaan van Schoor subsequently sent me an email thanking me for the coverage. As it turns out Riann and his company(?) InsideC were the masterminds behind the creation of this cool little IM applet. Well, it seems the coolness doesn't stop there as he also gave me access to another IM applet he is working on called the "Travel Messenger". While it's still in the development process he asked me not to give out the handle. As such, I am unable to tell you where to go and play with this cool little tool but what I can show you is the conversation I just had which eventually led to finding the best round-trip airfare available for my planned trip to Seattle this week to drive up with Kurt to Vancouver BC for his presentation at the VanX XML User Group... Here are the results of the
"conversation"...
M. David [in SLC] says:MENU
Travel Messenger says:
Hello and welcome to TravelMessenger, V4
You can try the following:
1 Search for flights and prices
2 Update your last search
3 Flight information for arrivals at UK Airports
4 Suggestions or feedback
Type the relevant number of your choice. To get back to this menu, type MENU.
(Tip: You might want to maximise this window!)
M. David [in SLC] says:
1
Travel Messenger says:
Which city would you like to fly from?
M. David [in SLC] says:
SLC
Travel Messenger says:
And which city would you like to travel to?
M. David [in SLC] says:
SEA
Travel Messenger says:
When would you like to leave? (e.g. 12 Jul or 12 July 04)
M. David [in SLC] says:
11 Jan
Travel Messenger says:
When would you like to come back? (e.g. 18 Jul or 18 July 04)
M. David [in SLC] says:
13 Jan
Travel Messenger says:
Ok. So you want me to search for flights between Salt Lake City Intl Arpt (SLC) and Seattle Tacoma Intl Arpt (SEA), leaving on 11 Jan 05 and returning on 13 Jan 05. I might take up to a minute to respond. Is this correct? (Yes or No)
M. David [in SLC] says:
Yes
Travel Messenger says:
Ok, I am searching, just give me a minute or two.
Travel Messenger says:
Results are based on live availability. Fares shown include all taxes.
I have not done a hotel search as well.
Delta (DL) from 322.41 USD - 11 option(s) americawest (web fare) from 443.80 USD - 1 option(s) Alaska Airlines (AS) from 638.40 USD - 4 option(s) alaskaairlines (web fare) from 764.40 USD - 1 option(s) cheaptickets (web fare) from 1492.00 USD - 1 option(s)
Type SHOW Delta or Show DL (or other airline name or code appearing above).
Type MENU at any time to exit and get back to main menu.
Type FEEDBACK at any time to give us your feedback or comments.
M. David [in SLC] says:
SHOW Delta
Travel Messenger says:
There are 11 option(s) on this vendor
Option 1 on DL for 322.41 USD
DL 1889 Departs Salt Lake City Intl Arpt on 11 Jan 05 at 11:10
Arrives Seattle Tacoma Intl Arpt 11 Jan 05 at 12:21
DL 1802 Departs Seattle Tacoma Intl Arpt on 13 Jan 05 at 09:15
Arrives Salt Lake City Intl Arpt 13 Jan 05 at 12:10
Type MORE (for more results on this airline)
Type BOOK OPTION 1 or the relevant number you would like to book.
Type SHOW RESULTS to get back to the summary.
Type MENU at any time to exit.
Type FEEDBACK at any time to send us your feedback.
M. David [in SLC] says:
MORE
Travel Messenger says:
Option 2 on DL for 322.41 USD
DL 701 Departs Salt Lake City Intl Arpt on 11 Jan 05 at 08:30
Arrives Seattle Tacoma Intl Arpt 11 Jan 05 at 09:39
DL 1802 Departs Seattle Tacoma Intl Arpt on 13 Jan 05 at 09:15
Arrives Salt Lake City Intl Arpt 13 Jan 05 at 12:10
Type MORE (for more results on this airline)
Type BOOK OPTION 2 or the relevant number you would like to book.
Type SHOW RESULTS to get back to the summary.
Type MENU at any time to exit.
Type FEEDBACK at any time to send us your feedback.
Pretty cool, huh?!
I'm sure Riann would be happy to answer any questions you might have in regards to this REALLY COOL technology that he has developed. You can access his companies web site at http://www.insidec.com/
Posted by m.david at 12:39 PM | Comments (0) | TrackBack
Understanding XML: XML In the Crystal Ball: XForms and the Revitalized Client
A few months ago I had the pleasure of first: meeting Kurt Cagle; second: Become really good friends with him, and third: Finding and even deeper respect for a man I already had a high respect for.
As many of you are quite aware Kurt is one of those intellectual types that has command of the English language as close as one can get to likes of Tom Robbins (flat out my all time favorite author on this planet... While a dictionary is a required side-kick while consuming a Tom Robbins title (at least for me... I'm sure for Wendell Piez or Tim Bray it's not so necessary; but I'm not Wendell or Tim... I'm Mark David Peterson and as such I need a dictionary to read a Tom Robbins title :)) thats never a bad thing and in fact is quite enjoyable in the sense that I learn more of just how beautiful the English language can be if used by someone who truly understands how to squeeze every last wonderful drop of the richness and beauty that exists within one of the most complex languages -- at least this is what I understand from those in whom are multi-linquistic and have truly made it theres lifes passion to study the spoken/written languages in the same way I have made it my passion to study the computer languages -- the human population has ever created.
Back to Kurt. Of all the things I admire about Kurt I think the one thing that stands above the rest is that he speaks and writes from his heart. When he has written or said something that, as it turns out, is technically wrong in certain areas (a rare occasion) he admits it and moves on. That alone is a rare quality that must be admired. The man has vision and understanding in SO MANY areas! When the two of us sit down for coffee or chat on the phone I sit there in wonder and amazement each and every time. Genius can be defined at so many different levels and in so many different ways that it can be confusing at times just what the term "Genius" really means. But it doesn't matter in Kurts case because he fits into every single possible description and then some. I feel it to be one of the most wonderful things that he and I have become friends over the last few months and have no doubt in my mind that this friendship is of the type such that it will be proven as one of the few friendships we obtain in life that truly last forever.
Anyways, I didn't mean to turn this into some sort of mushy devotional. I simply wanted to point out the fact that, once again, Kurt has showcased his ability to present technical information in a way that is both entertaining, enlightening, and appropriate.
Thanks Kurt!
Posted by m.david at 11:00 AM | Comments (0) | TrackBack
PRESS RELEASE: Hot Web Design Trends for 2005
While web design is obviously an important piece to a complete web-site so is, and more importantly so, functionality and usability. If this "Hot Web Design Trends" included at least some acknowledgement to the fact that the real innovation will be with client-side interactivity via a much thicker client beyond that which has been seen by the likes of the Flash-enabled web sites of the past then I'd say its worth the read. It doesn't, so it's not.
Posted by m.david at 08:19 PM | Comments (2) | TrackBack
Ok, I think I'm pretty much done with changes to the new <XSLT:Blog/> site design and layout. I'm going to run a few errands and then will come back and take a fresh look at it. I find that by leaving something you've been starting at for the last 5 hours it gives your mind a chance to regroup and when you come back you find the obvious things that need changing.
Some things you may notice about the new design:
- Better use of screen real estate by taking 100% of the available screen.
- Smaller header with fewer graphics than a few days ago.
- Better contrast colors
- Less "BLAMM" in-your-face color usage allowing the ability to highlight certain areas without getting an overdose of fire-engine red.
- Inclusion of categories within each post
- Easier access to comments and trackbacks
- Moved calendar back down to right column
- Moved XSLT Quote of the Day to the right portion of the header content area and widened its container such that the text fits into the upper and lower borders on high definition screens using 120px per inch resolution.
- Adjusted "Categories" such that they use percentages for width sizing instead of the hardcoding of 145px. This allows for better resizing between resolutions and window sizes.
- Cleared out various hard-coded values throughout the entire site. Content and Right Column resize and still maintain readability and structure to a window size of 729px wide.
Moving on into the site features I plan to add a "Quick View" client-side XSLT viewer that allows you to view the latest postings in 5 posting increments in a show/hide style viewer below the header. It should make more sense when you see it. I also plan a client-side search utility for quickly searching the Atom feed for specific content as well as a client-side GUI reorganizer such that you can change the look and feel of the GUI more to your preferences and liking. As always your comments and suggestions are appreciated. Much of the current changes from a few days ago came directly from feedback received via email and is much appreciated!
For now though my eyes and mind need a break.
Cheers :)
<M:D/>
Posted by m.david at 03:00 PM | Comments (0) | TrackBack
2005 Will See XML\'s Powerful Next Wave [OETrends.Com]
DataDirect Predicts 2005 Will Be XQuery's Year
While my comments tend to suggest that I dislike XQuery the truth is I don't dislike XQuery at all and in fact am looking forward to using it as a VERY POWERFUL XML query tool. My only beef with advocates of XQuery is they generally tend to act as if XQuery is the end all be all of XML Transformation and Query languages and this couldn't be any further from the truth.
Posted by m.david at 08:57 AM | Comments (0) | TrackBack
I went to Barnes and Noble yesterday to purchase, or as the case of Doug Tidwell's title repurchase, every XSLT title that was available that was worth the paper it was printed on to add to the list of titles referenced in the UnderstandingXSLT project.
I did this as I want to make sure that in cases where there are several methods to perform a certain task that these methods are brought out such that in those cases where a particular method makes more sense to any particular person they can feel confident moving forward with it knowing that its not wrong, just different. Code, like the written language, can be written in so many different ways and yet ultimately mean the exact same thing. Recognizing this important point I hope will help further the understanding on a particular topic by allowing people to feel like moving forward in a certain manner is fine. If it makes more sense to you to use a certain method then you're not going to see me crying "code foul" if the particular method used gets the job done.
In the case of Doug Tidwell I realized that A) Somewhere along the way I have somehow misplaced his title, and B) In the past I have referenced his "XSLT" title more so than any other book on the subject. His book is very well layed out and combines the ability to use it as a quick reference on a particular XSLT 1.0 element or attribute with good overviews of the overall methodologies in which these elements and attributes might be used. While I want to be sure to add individuals or groups to the Legends list that are considered by the community as a whole and not just my own personal opinion to be Legends (while I still reserve the right to add to the list anyone I damn well please :D ) I definitely think Doug deserves a spot on the list as I know I am not the only one on the planet who feels this way about his title.
So with that said, Welcome Doug!
Posted by m.david at 05:30 AM | Comments (0) | TrackBack
So I got the skinny from an undisclosed source — [Ok, fine I got it from the Oxygen Users Group Mailing List you happy now? ;)] — that you can now download the Oxygen 5.1 beta by accessing the links via this post to the group >> http://www.oxygenxml.com/pipermail/oxygen-user/2005-January/000345.html
The cool thing about this release is that in what has become somewhat standard tradition at Sync.Ro Soft they look to the development community in whom uses their tools to find out what features are most wanted/needed and then they prioritize and work with a couple of the tool users to help bring these idea into reality by giving ideas and testing subsequent implementations in which feedback is used to fix and fine tune the next build and continue through this process until complete. This time around I got to participate in this process and my further contribution to this was to give George a list of all of the abbreviations I use within jEdit which is quite large. Why would I do something like that you ask?
Because this build has ABBREVIATIONS support!!!!!
Well, actually, in Oxygen Sync.Ro has chosen templates which if you think about it makes a lot of sense for a language in which templates are its primary focus, and further a template in XSLT can represent any output from the processor as can templates in Oxygen support the output of any template that you feel like definining > Or simply choose from the one of many templates built in which, I am excited to say, came partially from my list of Abbreviations I used in jEdit.
An example of usage of the template feature is as so:
type: “cwto” and then hit Ctrl + Space and BAMM! you get:
<xsl:choose>
<xsl:when test="">
</xsl:when>
<xsl:otherwise>
</xsl:otherwise>
</xsl:choose>
With the cursor placed strategically in between the first set of quotes. This (the placement of the cursor) is completely definable using the existing built in Macro language style your’e already used to if you are already a user or will naturally figure out quite easily if you are not. For example: “${caret}” without the quotes place anywhere in the template you are building tells the template engine to place the cursor, suprisingly enough, in the position that these characters are taking up temporary residence in.
Heres a screenshot of the templates editor as part of the preference dialog withing Eclipse.
Anyway, I shouldn’t spend too much time writing about it and simply encourage you to go and download this beta and start playing with all of these exciting new features which, when combined with everything else that is the <oXygenXML /> XML/XSLT/Schema-of-all-kinds editor is absolutely marvelous!
George did emphasize in an email correspondence that this was NOT the official 5.1 release but simply the beta that will hopefully help determine if this build or another subsequent build is necessary to deem this the official 5.1 release. I would keep this in mind and help erradicate any bugs as you find them by visiting the support page on the <oXygenXML /> site and choosing a method of submitting this information to Sync.Ro so they can work to get the official 5.1 release out into the mainstream.
This has been a fun experience! No doubt if you have an idea for a feature or would like to further participate in future early beta’s the best thing to do is to do what I did. Simply ask.
Cheers George! Thanks for letting me be a small part of helping bring a new feature into reality in what has become my primary XML editor of choice.
Posted by m.david at 10:16 AM | Comments (0) | TrackBack
Cafe con Leche XML News and Resources
Anybody else noticing a lot of XOM related releases lately? This, of course would be the most significant given that it *IS* XOM!
Get it while its hot!
Posted by m.david at 08:45 AM | Comments (0) | TrackBack
I'm not sure if you have noticed but <XSLT:Blog/> has taken on some ever so subtle changes in its design. Ok, maybe not so subtle ;)
When I first started this blog I decided to ignore the inner me stating "NO!!! Its not ready. Don't do it!" and listen instead to the outer Dave Pawson who stated "stop talking about it and just get on with it..." or words something to that affect. ;) Well, I had this design actually layed out in various forms for the Saxon.NET site and the AspectXML site but it was tough to find the time to implement them with those particular sites as there was a lot more involved than just slapping up a new design. As such the design was never implemented. Well it has now and has become the theme of several other sites I am involved with in one form or another (see here, and here) and will continue to find itself propogated to all the other sites as time becomes available over the next few weeks.
Theres actually quite a bit more to come especially in the area of client-side XSLT stuff so stay tuned for that... Its something I'm actually REALLY excited about as it begins to take things to the next level of client-side functionality at a fairly rapid pace. But until then please don't hesitate to tell me what you like or don't like about the new design. And dont be shy! Speak your mind especially if its to the negative. A site is only as good as it is usable so I would much rather here the criticism and have a more usable site that not and have something that ultimately is a piece of usability crap.
Enjoy!
Posted by m.david at 05:16 AM | Comments (2) | TrackBack
For all you .NET language developers - Don Syme has started an F# blog
Dear God: Thank you! Amen.
I really don't mean to make my chances of ever receiving any sort of decent afterlife even less than they are now but I swear I don't mean this in a sacreligious way! I mean think of it this way:
"I am the Beginning and the End, the Alpha and the (C)Omega..."
If ever I have seen a more perfect example of recursion I'm not sure where. Ok, I'm going to hell, that ain't no secret... but until I go at least I get to read from Don Syme's blog and program in F#. And that my friends is not that shabby of a parting gift. (though I would much rather get Heaven of course. I'm just thinking on a more realistic level ;)
From Jonathan Hardwick's post:
F# has been gradually building steam since then, adding the supporting infrastructure that you’d expect from a .NET language (Visual Studio authoring package, ASP.NET compatibility, …) and the cool features you’d expect from a programming language researcher (dynamic type test patterns, mutually dependent reactive values, …). Now it seems ready to take center-stage: Don has started a blog about F#, and his first post announces the preview release of F# version 1.0.
Posted by m.david at 04:33 AM | Comments (0) | TrackBack
XML.com: Fun With Amazon's Simple Queue Service
3 things I like about this article:
- Brief yet concise [Huh? Lets try that again...] Simple and concise technical overview.
- Well positioned base for the code sample - A chat application
- The fact that this comes from Amazon (further explanation as to why I say this in the extended entry portion of this post)
I'm not quite sure what is meant when the author states:
"by using an XML-over-HTTP (what Amazon calls a REST) interface".
I think its safe to say the author (Jason Leavitt) is familiar with the REST web services architecture so I can only assume he is suggesting that what Amazon is calling REST in his opinion is not what REST actually is? Which I guess makes could makes sense depending on the use of XML-over-HTTP that precedes his statement but I think that's maybe a question for Jason... As I have learned from past bad experiences its not good to make judgements on an articles content (even in more of a clarification manner as would be in this case) after a quick and simple scan as you may come to realize later after you have made such judgement that the articles author in fact pointed out the errors himself in the article but left them in place to make a particular point. Not a good way to win friends and influence people! I advise against it to anyone considering such an activity on their own blog. ;) :D
Ok, moving forward.
So, why the Amazon comment? Couple reasons.
- First and foremost Amazon is a Seattle-based company. Being native to the area I love companies such as Amazon that help boost the economy and bring good jobs to the part of the world in which will always be my home, no matter where I may live at any given time due to the contract I am working on or the consulting gig I have taken.
- Jeff Bar, Amazons Web Services Evangelist, Kicks A$$! Were you aware that he wakes up at 5:30 a.m. each and every day of the week so that he can work on Syndic8, his "side" project which is a gigantic XML feed syndication site. Beyond indexing and archiving the web's latest and greatest content the site offers a huge amount of value in the statistics made available that cover subjects such as "most popular blog feeds" and "the top sites they would like to see syndicated" (currently sitting at 5719.) You can find the percentage of RSS to Atom feeds in syndication that is then further broken down to the base language of the feed, types and numbers of XML encodings used, and even a "feed quality" section that contains information in regards to how many of the feeds contain particular RSS/Atom elements such as "Feeds with Editors", "Feed with Webmasters", "Feeds with Languages", "Feeds with Descriptions", etc... And this is only the tippy-tippy-top of an absolutey huge iceberg. There is a serious amount of information on this site and its well worth adding it to your daily scan of the web by at very least adding the following feeds to your reader:
OCS http://www.syndic8.com/genfeed.php?Format=ocs
OPML http://www.syndic8.com/genfeed.php?Format=opml
RSS http://www.syndic8.com/genfeed.php?Format=rss
The one thing I think that impresses me the most about Jeff is that he has truly, in every sense of the word, wrapped himself inside of the technologies that he evangelizes and because of his passions he is further enabled to truly understand what web users want and need which is then showcased by his influence on the Web Services offered by Amazon. I love to see passion in people in regards to what they do in life and Jeff is without a doubt a picture perfect example of someone who loves what he does and turns that love into REALLY USEFUL TECHNOLOGIES.
- Beyond the fact that Amazon helps Seattle economy and Jeff Barr kicks A$$ I love the fact that Amazon at a very early stage embraced the web communities, encouraging interaction and promoting the use of their interface and products by also allowing members (membership is free) to sell their own products which in some ways (like used books) compete directly with the products they have in their own catalog. When this idea was first introduced it really sent people spinning and back pedaling from Wall Streets e-commerce sweetheart of the late 90's. But what Jeff Bezos and the rest of the crew at Amazon realized and then showcased by such a bold move was that this was what the web was all about and to be the leader of the e-commerce world you had to embrace what the web was all about: community. By understanding this one very crucial point at an early stage Amazon positioned themselves to continue moving forward as a leader and innovator on the web, acting as a beacon of sort's for others to look to for direction. Bottom-line: Amazon simply gets it.
If you don't think that SQS is a sign of things bigger and better to come from Amazons Web Services division, well theres nothing I can do to keep you from feeling as such. But I can assure you of one thing: Of the few things I know in regards to the Amazon Web Services team I can assure you that what is coming out the door now is only a small sample of what will be available in the future. And its not like I have any sort of exclusive insider knowledge... You can access the Amazon Web Services division weblog right here.
Posted by m.david at 08:58 PM | Comments (0) | TrackBack
XML.com: Extending XSLT with EXSLT
The only thing I would note is that in addition to Saxon, Xalan-J, and libxslt you can find support for EXSLT in 4Suite by Fourthought, MSXML via Dimitre Novatchev's MSXML extension, and in .NET through the EXSLT .NET project headed by Dare Obasanjo. Uh oh... I was about to say that those who headed each of these projects are members of <XSLT:Blog/> Legends of the XSLT Community and then realized that somehow, in some freakish way I have forgotten to insert Dare Obasanjo into the Legends list. Dare without a doubt should have always been there for all of the contributions he has made to the development communities abroad and in particular to the XSLT development community via the EXSLT .NET project. I will fix that mistake now.
My apologies to you Dare. That was an evil, awful, and horrible mistake and is definitely something I should have caught a long time ago!
UPDATE: As Dimitre points out in a comment:
JD is another XSLT processor that implements EXSLT.
The MSXML4 support for EXSLT includes only the Common (only common:node-set()) and Sets modules. More information can be found here.
Cool! Thank Dimitre :)
Posted by m.david at 07:03 PM | Comments (1) | TrackBack
Um.... I was just about to pop-out for about an hour to run some errands when this popped up on my radar screen. This is a fairly significant release...
in fact I am still absorbing all of it and my mind seems to be rushing all over the place (surprise, surprise ;)). I will comment more on this when I return if I can fit it into my schedule as this is going to take a bit to go over. I am still working on bringing the XOM support into the Saxon.NET 8.2 release and it seems now I need to put a little more emphasis on this. More soon when I can devote the proper time to it. For now, enjoy!
BTW... For those who are unfamiliar with XOM it is the XML Object Model. A tutorial by XOM's BrainSake, Elliotte Rusty Harold, can be found here. Basically this is Elliotte Rusty Harold's brain put into an Object Model supported by an open-source codebase... its as near to perfection as you can get with an object model of any sort but obviously the focus is XML, which in my opinion falls into the "as near as you can get to perfection for a document/data structure" category. Don't take that comment wrong. Perfection doesnt imply that there is nothing wrong with it. But when used in the context for which it was designed it gets the job done better than any other format. XOM falls into the same base as this descriptor in my opinion.
This is to announce the nux-1.0rc1 release candidate available at
http://dsd.lbl.gov/nux
Nux is a small, natural, straightforward, and surprisingly effective
open-source extension of the XOM XML library.
This release is synchronized and works in tandem with the recent
saxon-8.2 and xom-1.0 final releases.
Features include:
• Seamless W3C XQuery and XPath support for XOM.
• Efficient and flexible pools and factories for XQueries, XSL
Transforms, as well as document Builders that validate against various
schema languages, including W3C XML Schemas, DTDs, RELAX NG,
Schematron, etc.
• Optional serialization and deserialization of XOM XML
documents to
and from an efficient and compact custom binary XML data format (bnux
format), without loss or change of any information. Serialization and
deserialization is much faster than with the standard textual XML
format, and the resulting binary data is more compressed than textual
XML.
• For simple and complex continuous queries and/or transformations
over very large or infinitely long XML input, a convenient streaming
path filter API combines full XQuery and XPath support with
straightforward filtering.
• Glue for integration with JAXB and for queries over ill-formed
HTML.
• Well documented API. Ships in a jar file that weighs just 60 KB.
Nux is geared towards versatile embedded integration and interchange,
in particular for high-throughput server container environments (e.g.
large-scale Peer-to-Peer messaging network infrastructures over
high-bandwidth networks, scalable MOMs, etc). But its simplicity also
makes it useful for client side XML query/transformation workflow
pipelines.
Changelog:
• This release is synchronized and works in tandem with the recent
saxon-8.2 and xom-1.0 final releases.
• Nux now works with the recent saxon-8.2 release, hence
implementing
W3C XQuery Working Draft 29 October 2004. The download includes the
saxon8.jar file from saxonb-8.2. As far as we can tell from testing,
it is not necessary to include any JAXP-1.3 jars (i.e. dom.jar,
jaxp-api.jar) in the classpath, even when running saxon-8.2 with JDK <
1.5. This is good news because it avoids licensing problems as well as
classpath, version, redistribution and deployment problems. Let us
know if you find Nux use cases where JAXP 1.3 is required. In any
case, this Nux release should continue to work fine with the old
saxon-8.1.1.
• NodeWrapper for XQuery: Performance improvements for
iteration over
XPath axes. Now executes queries at up to 200 MB/s.
• Low-level glue for native Saxon integration of XOM is
now separated
out into saxon8-xom.jar.
• Added simple command line demo that runs a given XQuery against a
set of files and prints the result sequence. See XQueryCommand.
• BinaryXMLCodec: General performance and memory improvements. Now
parses up to 101 MB/s.
• Javadoc improvements
• Building nomore requires JUnit - simply type "ant jar"
Cheers,
Wolfgang.
-----------------------------------------------------------------------
Wolfgang Hoschek |
Distributed Systems Department |
Berkeley Laboratory |
-----------------------------------------------------------------------
Posted by m.david at 04:12 PM | Comments (0) | TrackBack
per Scott Watermasysk I discovered that a little app that I have been using since Jeff Key first released it a year and a half ago is now availalble in a version 2.0 beta.
As Scott points out I don't know what I would do without Snippet Compiler by my side to quickly build and test .NET code that I don't necessarily need a Visual Studio project created for. If your'e a .NET developer and you don't use this tool I HIGHLY recommend that you download and add it to your list of "Tools Used Daily".
Cheers Jeff!
Posted by m.david at 12:40 PM | Comments (0) | TrackBack
Per Kurt's post.
If all goes as planned I will be driving up to Vancouver with Kurt to attend what I know is going to be another fantastic presentation on XML, this one entitled: XML In the Looking Glass.
He even plans to cover a bit on AspectXML, the project that Russ and I are involved with developing :) Oh what fun will be had by all :D
Posted by m.david at 12:14 PM | Comments (0) | TrackBack
Posted by m.david at 10:22 AM | Comments (0) | TrackBack
Posted by m.david at 10:21 AM | Comments (0) | TrackBack
Um, that was wierd... I went to send an email from Outlook and instead of hitting Ctrl + Enter I hit Tab + Enter (the equivalent to Ctrl + Enter in GMail). Huh... wierd... Not sure if Adam Bosworth had or has anything to do with GMail (based on an old Blog entry of his my impression is that he didn't or doesn't anymore at least) but I am adding it to "The Adam Bossworth Effect" category none-the-less.
Posted by m.david at 08:20 AM | Comments (1) | TrackBack
Just got this from Russ...
Subject: Seen this?
If not, then I feel the need to blog :) - but could just be that I'm coming to this a bit too late. Don't agree with all of it's extrapolations but it's interesting...
Cheers,
Russ
Umm... Up to 2010 so far and I've got chills going [up wait, that would be down, wouldn't it] my spine. Whoa!
Posted by m.david at 08:09 AM | Comments (0) | TrackBack
Either way, as it turns out it is Amelia Lewis who originally penned the Quote of the Day that so nicely fit into the Masochistic theme here at <XSLT:Blog/>.
Now I have to ask myself "am I really grateful that we as XSLT developers have found the Peanut Butter to go with our XSLT Jelly in Ada?" "Hit me harder Ada! Do it! Come on! I like it!" Hmmm... Well, while I ponder the thought of being Ada's sexual punching bag (and like it!) I will get on with my morning. Lets see... should I A) write code B) write code, or C) go for coffeee, then come back and write code?
I think C's the winner!
NOTE: Why should XQuery be thanking Amelia? Well, as I have mentioned about a week or two ago I had decided to be nice to XQuery and stop flaming it here on <XSLT:Blog/>. It wasn't so much a choice really... I mean XQuery was getting so weak from all of the beatings that it wasn't fun anymore... I figured if I gave it a couple of weeks to gain a little strength back it would at very least become an interesting situation again. I mean everybody needs there arch enemy to stay alive for the next episode. "The Matrix" even went as far as to put all the little broken up bits of Agent Smith back together and bring him back to refocus the series on. In a lot of ways I guess XQuery is the Agent Smith to our XSLT Neo. It may look like he's going to win and in fact he may even think that he has won. But then it'll happen. The realization that his destiny has just been fulfilled buy none other than himself will suddenly and ever so pointedly become a reality, XSLT will rise from what was thought to be its grave... Oh crap! Doesn't Neo eventually die in the end anyway? Hmmmmm... Well, it was a good try at an analogy anyway, right? And he does save the world. Thats not a bad parting gift... ;) :D Oh and he gets Trinity too! Thats definitely something to smiling in his grave over :D :D :D
Posted by m.david at 07:19 AM | Comments (0) | TrackBack
DataDirect Technologies Announces Top 10 XQuery and XML Predictions for 2005
Don't Forget XSLT: All the technical benefits of XQuery also apply to XSLT, the language for transforming XML documents into other XML documents, since they are closely related. For the same reasons why XQuery tools will be in demand, there will be a need for sophisticated XSLT editors, debuggers, mappers and performance profilers in 2005.
Ok, now I'm going to bed.
Posted by m.david at 08:44 PM | TrackBack
From a nicely pointed comment on XML-Dev Mike Champion "suggested" this should be Quote of the Day "somewhere". Given I just so happen to have a Quote of the Day section I thought it might look nice on the mantel that currently holds that cheezy freak quote I put up there the other day...
Among the bondage and discipline languages, Ada stands out as a laughing sadist.
Thanks for the new site decoration piece Mike!
NOTE: I was trying to come up with a good answer to "What did the Sadist developer say to the Masochist developer?" but after writing code for the last 30 hours I can't come up with one single good punch line... I can't even come up with a bad punch line... nada - nothing - notadamnthing.
I'm going to bed. Goodnight everyone!
Posted by m.david at 08:08 PM | Comments (1) | TrackBack
In a recent response to a thankyou email Jeroen pointed out:
You're welcome, but I didn't really do much, thank Mark Wielaard (the GNU Classpath developer/admin that imported GNU JAXP).
Thanks Mark! :D
Posted by m.david at 07:18 AM | Comments (0) | TrackBack
I'm still working through some URI file usage issues that make themselves apparent from the commandline but I posted a build with sample C# code using a...
slightly modified Saxon-B 8.1.1 source compiled with the latest IKVM.NET that includes the JAXP libraries as part of the ikvm.gnu.classpath.dll and as such doesn't require these to be included with the Saxon.NET.dll file (you must download the IKVM binaries though; link on site.) Please visit the still half finished (its been a busy night ;)) Saxon.NET weblog to gain access to the bits and sample C# implementation code.
Posted by m.david at 06:39 AM | Comments (0) | TrackBack
If your a Java developer looking to migrate your code to .NET (or simply want to move from Java to .NET and back again without even thinking twice) Jeroen Frijter's recently posted his New Years "gift" to the development community fixing all sorts of interesting bugs that could have a fairly significant impact on performance.
But this is not the most exciting part. Part of what has kept the size of the Saxon.NET.dll up and somewhat "dirty" with non-Saxon class files was the fact that Jeroen, for various reasons, had decided to hold off from including the GNU JAXP project files from the ikvm.gnu.classpath.dll file. As such, to bring Saxon.NET "to life" I needed to include these files as part of the build process (and subsequently as part of the dll.) Well, that is no longer the case as Jeroen has featured as the first in a long list of bug fixes and overall improvements for the latest build of the IKVM.NET project the following:
Sync'ed with GNU Classpath cvs (IKVM.GNU.Classpath now contains GNU JAXP XML processing library). You can now run Eclipse without having to add the xml stuff to the bootclasspath: eclipse -vm c:\ikvm\bin\ikvm.exe
As you can also see from this entry you can now run Eclipse on .NET a little easier as well which definitely brings a whole new level of ideas flooding into my head (uh oh! ;)
I haven't even had a just to unzip the file and run a new build (using the 8.1.1 class files for now) but that is my next process. Actually, the whole reason for visiting Jeroen's weblog was to verify the link I had added to the new Saxon.NET project weblog was set correctly -- the blog is actually not even finished (currently in process) but this seems as good a time as any to let you all know that you can now access the main project site at http://www.saxondotnet.org (still not updated -- that's next) and more importantly the official project blog at http://weblog.saxondotnet.org which will give you immeidatte access to all the latest and greatest from the Saxon.NET project and community as well as an easier place to find quick answers to your development questions. Please give me an hour or two before you "remind" me that the download links don't go anywhere, etc... :D
Hopefully I can run a quick build using the 8.1.1 source minus the JAXP files and have things simply work. If so (and I have no doubt they will) then I will post this updated build with some sample code on the project blog as soon as its available. I'll notify you here when it is.
Cheers!
Posted by m.david at 11:37 PM | Comments (0) | TrackBack
Not sure how I missed these but heres an article featuring the improvements made to XSLT processing in the upcoming release of the .NET 2.0 platform.
http://www.fawcette.com/vsm/2005_02/magazine/features/tthangarathinam/
and another by Uchi Ogbuji, a member of the <XSLT:Blog/> "Legends of the XSLT Community", covering error handling using XSLT lookup tables:
http://www-106.ibm.com/developerworks/xml/library/x-tiplook.html
Posted by m.david at 10:28 PM | Comments (0) | TrackBack
Something just occured to me as far as a really useful way of using the “meta-data” obtained during the recursive processing of a sequence of nodes. Take for example the following use-case:
Contained within the test-suite code I posted a week or two ago is contained a combination of XML and XSL files. In the config-bat-output.xml file the following XML structure and data exists:
<?xml version="1.0"?>
<output>
<files>
<source href="test-group.xml"/>
</files>
<defaults>
<processor id="saxon" call="Saxon8.jar">Saxon 8.1.1 form Saxonica</processor>
<platform id="java" call="java">Java 1.4.2_4 from Sun Micrososystems</platform>
<command-line id="cmdln" default-switch="-">
<switch call-id="java" no-switch="true"/>
<switch value="ms" multiple-of="1024" use="512m">Sets the minimum heap size for the Java VM</switch>
<switch value="mx" multiple-of="1024" use="512m">Sets the maximum heap size for the Java VM</switch>
<switch value="jar">Tells the Java VM to use the Java Archive option</switch>
<switch call-id="saxon" no-switch="true"/>
</command-line>
</defaults>
<sequence>
<node call-id="cmdln" />
<node>t</node>
<node>o</node>
<node>in-xml</node>
<node>in-xsl</node>
<node>capture-t</node>
</sequence>
<sequence>
<node call-id="cmdln" />
<node>t</node>
<node>3</node>
<node>o</node>
<node>in-xml</node>
<node>in-xsl</node>
<node>capture-t</node>
</sequence>
<sequence>
<node call-id="cmdln" />
<node>t</node>
<node>9</node>
<node>o</node>
<node>in-xml</node>
<node>in-xsl</node>
<node>capture-t</node>
</sequence>
</output>
Within this data structure exists a series of processes to invoke during the transformation in which there is a default set of data that goes along with each subsequent combination of sequences. Within the “defaults” element is contained a series of elements in which the name of each element is used by the stylesheet to invoke a particular type of text output. NOTE: I plan further to use the AspectXML data weaving engine that I built nearly a year ago, slightly modified, to further use an XML definition file to determine the output instead of “hardcoding” this information within the stylesheet. The ultimate goal of course is to be able to quickly and easily update particular aspects of an XML-based application and have these updates automagically reverberate throughout the entire code-base. All very possible but all in which time is needed to build the code and “Tiiiiiiiiiiiiimmmme is not on my side, no it’s not” at the moment. It will be though and this particular project will be seeing some serious dev-time by Russ and myself in the very near future :D
So anyways, long code explanation made short: Within each element is contained the ability to invoke a predefined sequence of elements by simply using the call-id attribute with the id of the sequence to invoke (any resemblance to Lisp is absolutely, totally, 100% intentional … if you are aware of some of my other projects then you can probably see where I intend to take this but for now its simply just sample code :D ;)).
When the stylesheet process is invoked the above file is “woven” together with the following xml data-set:
<?xml version="1.0"?>
<files>
<xsl-files>
<file identifier="b" name="test-group.xsl"/>
<file identifier="m" name="test-group-m.xsl"/>
</xsl-files>
<config-files>
<file id="bat-config" name="config-bat-output.xml"/>
</config-files>
<output-files>
<file number-of-elements="100"/>
<file number-of-elements="200"/>
<file number-of-elements="500"/>
<file number-of-elements="1000"/>
<file number-of-elements="2000"/>
<file number-of-elements="6400"/>
<file number-of-elements="12800"/>
<file number-of-elements="25600"/>
</output-files>
</files>
This file basically defines another series of sequences that need to take place in order to obtain the final resulting output of test files, each of which contains the specified number of elements (+/- based on using the round function to obtain the general number of recursive calls that need to be made to get the correct number of elements copied into each test file — this could be modified to be completely accurate but for this particular case being +/- a few elements here and there is not important as long as the same number is used for all stylesheet test cases).
Ultimatelly each sequence of recursive calls can have any number of additional recursive calls to other “functions” and so on and so forth. In the end the total number of recursive calls can become quite substantial making it difficult to know whether or not the correct sequences were called during the transformation process. Of course using a Schema Aware processor such as Saxon SA would at least make the debuggin process A LOT easier but thats not where I am taking this particular post so bear with me for one more second.
If, for example, this series of recursive function calls represented a user-invoked function that performed a series of sub-routines in which ultimatelly converted 250,000 randomly placed pixels from one RGB value to another or furthermore converted 250,000,000 such pixels into various shades of a particular RGB value how much easier would life be if we could have a “copy” of all the processes that took place during that series of sub-routines such that we could undo a certain percentage of these changes to vary the shading of an image to various levels. Such a programming task using an object oriented approach is a NIGHTMARE at best. But in this particular scenario would be a piece of cake given the fact that the meta-data captured during each process could easily be backed out or right back in and our code base wouldn’t need to know the difference. Its just repeating a series of recursive function calls, it could care less where they came from or how they got there.
Just food for thought…
Enjoy :)
BTW… In case you are curious as to what the XSL looks like to process the above XML files and yet don’t want to have to download, unzip, and open them up locally here it is:
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
<!-- This Stylesheet is licensed under the Creative Commons 2.0 Attribution License -->
<!-- For more information in regards to this license please visit the following URL -->
<!-- http://creativecommons.org/licenses/by/2.0/ -->
<!-- Original Author: M. David Peterson -->
<!-- Original Author's Contact Email: m.david@x2x2x.org -->
<!-- Original Author's Web Address: http://www.xsltblog.com -->
<!-- Original Release Date: December 20th, 2004 -->
<!-- Version Information: 0.1 -->
<!-- Any questions, comments, or concerns please visit my XSLT related blog at the address posted above. -->
<!-- This stylesheet requires a processor that supports the latest workking draft of the XSLT 2.0 specification -->
<!-- While there are several that are near completion and several more well on their way, the only processor -->
<!-- that can be considered completely up-to-date with the latest working draft specification -->
<!-- is Dr. Michaels Kays latest Saxon processor release. Please visit http://www.Saxonica.com for more details -->
<!-- Enjoy! -->
<!-- <M:D/> -->
<xsl:param name="output"/>
<xsl:param name="result-parent"/>
<xsl:param name="parent-bat-file"/>
<xsl:param name="execution-directory"/>
<xsl:variable name="bat-source-file" select="document(/files/config-files/file[@id = 'bat-config']/@name)"/>
<xsl:variable name="source-file" select="document($bat-source-file/output/files/source/@href)"/>
<xsl:variable name="source-file-elements" select="$source-file/booklist/book"/>
<xsl:variable name="defaults" select="$bat-source-file/output/defaults"/>
<xsl:variable name="xsl-file-names" select="/files/xsl-files"/>
<xsl:output name="text" method="text" encoding="utf-8"/>
<xsl:output name="xml" method="xml"/>
<xsl:template match="/">
<xsl:result-document format="text" href="file:///{$output}/{$parent-bat-file}">
<xsl:text>rem This is the beginning of the final output batch file that will
</xsl:text>
<xsl:text>rem automatically run the other batch files created during this process.
</xsl:text>
</xsl:result-document>
<xsl:apply-templates select="files/output-files/file"/>
</xsl:template>
<xsl:template match="file">
<xsl:variable name="file-name" select="concat(@number-of-elements, '.xml')"/>
<xsl:variable name="bat-file-name" select="concat(@number-of-elements, '.bat')"/>
<xsl:variable name="recurse-source-file-number" select="round(@number-of-elements div count($source-file-elements))"/>
<xsl:result-document href="file:///{$output}/{$file-name}">
<xsl:element name="{$result-parent}">
<xsl:call-template name="add-elements">
<xsl:with-param name="recurse-source-file-number" select="$recurse-source-file-number"/>
</xsl:call-template>
</xsl:element>
</xsl:result-document>
<xsl:apply-templates select="$xsl-file-names/file" mode="xsl-files">
<xsl:with-param name="in-xml-file-name" select="$file-name"/>
<xsl:with-param name="bat-file-name" select="$bat-file-name"/>
<xsl:with-param name="test-output-file-name" select="concat('o-', @number-of-elements, '.xml')"/>
</xsl:apply-templates>
</xsl:template>
<xsl:template name="add-elements">
<xsl:param name="recurse-source-file-number"/>
<xsl:if test="$recurse-source-file-number != 0">
<xsl:copy-of select="$source-file/booklist/book"/>
<xsl:call-template name="add-elements">
<xsl:with-param name="recurse-source-file-number" select="$recurse-source-file-number - 1"/>
</xsl:call-template>
</xsl:if>
</xsl:template>
<xsl:template match="file" mode="xsl-files">
<xsl:param name="in-xml-file-name"/>
<xsl:param name="bat-file-name"/>
<xsl:param name="test-output-file-name"/>
<xsl:apply-templates select="$bat-source-file/output/sequence">
<xsl:with-param name="in-xml-file-name" select="$in-xml-file-name"/>
<xsl:with-param name="in-xsl-file-name" select="@name"/>
<xsl:with-param name="identifier" select="@identifier"/>
<xsl:with-param name="bat-file-name" select="$bat-file-name"/>
<xsl:with-param name="test-output-file-name" select="$test-output-file-name"/>
</xsl:apply-templates>
</xsl:template>
<xsl:template match="sequence">
<xsl:param name="in-xml-file-name"/>
<xsl:param name="in-xsl-file-name"/>
<xsl:param name="identifier"/>
<xsl:param name="bat-file-name"/>
<xsl:param name="test-output-file-name"/>
<xsl:variable name="sequence-bat-file-name" select="concat('s-', position(), '-', $identifier, '-', $bat-file-name)"/>
<xsl:variable name="text-output">
<xsl:variable name="command-line">
<xsl:apply-templates select="$defaults/command-line"/>
</xsl:variable>
<xsl:apply-templates select="node">
<xsl:with-param name="test-output-file-name" select="$test-output-file-name"/>
<xsl:with-param name="in-xml" select="$in-xml-file-name"/>
<xsl:with-param name="in-xsl" select="$in-xsl-file-name"/>
<xsl:with-param name="identifier" select="concat($identifier, '-', position())"/>
<xsl:with-param name="command-line" select="$command-line"/>
</xsl:apply-templates>
</xsl:variable>
<xsl:result-document format="text" href="file:///{$output}/{$sequence-bat-file-name}">
<xsl:value-of select="$text-output"/>
</xsl:result-document>
<xsl:variable name="bat-file-parent-doc">
<xsl:value-of select="unparsed-text(concat('file:///', $output, '/', $parent-bat-file), 'utf-8')"/>
</xsl:variable>
<xsl:result-document format="text" href="file:///{$output}/{$parent-bat-file}">
<xsl:value-of select="$bat-file-parent-doc"/>
<xsl:text>call </xsl:text>
<xsl:value-of select="$sequence-bat-file-name"/>
<xsl:text>
</xsl:text>
</xsl:result-document>
</xsl:template>
<xsl:template match="command-line">
<xsl:apply-templates select="switch">
<xsl:with-param name="default-switch" select="@default-switch"/>
</xsl:apply-templates>
</xsl:template>
<xsl:template match="node[@call-id]">
<xsl:param name="command-line"/>
<xsl:value-of select="$command-line"/>
</xsl:template>
<xsl:template match="node[. = 'in-xml']">
<xsl:param name="in-xml"/>
<xsl:value-of select="$in-xml"/>
<xsl:text> </xsl:text>
</xsl:template>
<xsl:template match="switch[@call-id]">
<xsl:param name="default-switch"/>
<xsl:if test="@no-switch = 'false' or not(@no-switch)">
<xsl:value-of select="$default-switch"/>
</xsl:if>
<xsl:value-of select="ancestor::defaults/*[@id = current()/@call-id]/@call"/>
<xsl:text> </xsl:text>
</xsl:template>
<xsl:template match="switch[@value]">
<xsl:param name="default-switch"/>
<xsl:if test="@no-switch = 'false' or not(@no-switch)">
<xsl:value-of select="$default-switch"/>
</xsl:if>
<xsl:value-of select="@value"/>
<xsl:if test="@use">
<xsl:value-of select="@use"/>
</xsl:if>
<xsl:text> </xsl:text>
</xsl:template>
<xsl:template match="node[. = 'in-xsl']">
<xsl:param name="in-xsl"/>
<xsl:value-of select="$in-xsl"/>
<xsl:text> </xsl:text>
</xsl:template>
<xsl:template match="node[. = 'o']">
<xsl:param name="test-output-file-name"/>
<xsl:text>-o </xsl:text>
<xsl:value-of select="$test-output-file-name"/>
<xsl:text> </xsl:text>
</xsl:template>
<xsl:template match="node[. = 't']">
<xsl:text>-t </xsl:text>
</xsl:template>
<xsl:template match="node[. = 'capture-t']">
<xsl:param name="test-output-file-name"/>
<xsl:param name="identifier"/>
<xsl:text>2></xsl:text>
<xsl:value-of select="concat($execution-directory, '\', $test-output-file-name, '-', $identifier)"/>
<xsl:text>.txt</xsl:text>
</xsl:template>
<xsl:template match="node">
<xsl:text>-</xsl:text>
<xsl:value-of select="."/>
<xsl:text> </xsl:text>
</xsl:template>
</xsl:stylesheet>
BTW… When I wrote this I made the conscious choice not to use the capability contained in XPath 2.0 to use conditional logic statements embedded in the XPath to further reduce the verbosity of XSLT and hyperextend the capabilities to some fairly drastic levels. I did this as to not scare people who were used to using standard XSLT conditional statements with too many changes but I plan to update this code to take advantage of all XSLT 2.0 has to offer in the not too distant future.
The commandline values to invoke this process is as follows:
java -jar saxon8.jar config-test-files.xml build-test-xml.xsl output=C:/test/output result-parent=booklist parent-bat-file=runtests.bat execution-directory=execution-results
Posted by m.david at 05:35 PM | Comments (0) | TrackBack
I have a project I am working on who's domain starts with WWW (not as in WWW. but as in WWW.WWWsomethingorother -- its no where near ready to be showcased otherwise I would give the full domain.)
I think one of the truly great features of IE is exposed via the use of Ctrl + Enter after typing the second tier of a domain to get the http://www. + second tier domain + .com in its place. This feature was of course gobbled up by Firefox for obvious reasons and then extended to Shift + Enter to get the eqivalent .net domain and Shift + Ctrl + Enter to get .org. However I've just noticed that if you type in a second tier domain name that starts with WWW then it invokes instead a Google search for what it obviously sees as a search string as opposed to second tier domain. Anybody know why this is? Is this a Feature, Bug, or something else all together? I can understand that the Mozilla engine may be assuming that the first three W's is representative of the "fact" that the user has already typed in the WWW and therefore isn't looking to autocomplete which then invokes the process to send a GET request but given that the string is not recognized to be a domain the automatic push to Google as a search phrase is then invoked instead (assuming that this is ultimatelly the last "effort" the browser can make to give the user what he/she is looking for.) But it would seem that the autocomplete process would first look for the "." after the WWW before making such assumptions... anyway, no big deal... just a random wierdness that seemed worth noting.
Posted by m.david at 02:03 PM | Comments (0) | TrackBack
As I am now using Sarissa instead of my own hacks for client-side transformations and given that client-side transformations is a piece of the project I recently finished for a client and am subsequently uploading it piece by piece to the production server (can never be too careful when dealing with production servers as I am sure you know!)
I decided to check to see if I had the latest build of Sarissa. As it turns out I didn't and furthermore I discovered the following in the projects description which I had never noticed before:
Sarissa is a cross-browser ECMAScript library for client side XML manipulation, including XML loading from URLs or strings, XSLT transformations, XPath queries and more. Supported: Gecko (Mozilla, Firefox etc), IE, KHTML (Konqueror, Safari).
Now, I guess that could be interpreted to mean that it supports the usage of XmlHttpRequest but given that it more than likely at least supports this I wonder how much more effort it will take to implement client-side XSLT processing via the new XMLLib osax processor (see earlier post on the matter) and AppleScript. Not being one who uses Mac I have no idea what the answer to this is but I do know some people who do use Mac quite exclusively so let me see what I can find out. More later...
Posted by m.david at 09:48 AM | Comments (3) | TrackBack
Wanted to quickly do a community wide update as to the status of the Saxon.NET build for version 8.2. The problem I am currently working on that has held things up is the integration of XOM support into Saxon 8.2 and subsequent inclusion of this functionality into the Saxon.NET functionality.
Unfortunately I haven't had a good chunk of time to focus on this issue with the necessary attention it needs. I am just getting ready to spend the next 4-6 hours uploading a clients project onto the main production server but if there is anything left of my day after then this is where I plan to put all of my focus. More updates as they become available.
Also, as it turns out there may be more meanings to the term "Pushing String" as Eve recently pointed out in a comment. As such I would keep my eye over on her new blog for this updated explanation as well as dial in her XML feed into your reader of choice as I have a feelings LOTS AND LOTS of good XML things and beyond will be coming from her direction.
NOTE: For those of you who somehow slept the last 10 years of your life away and have missed out on this whole XML thing going on Eve Maler was one of the original developers of the XML specification. Suffice it to say she knows her sh--! :D
UPDATE: If you are reading this and you are not already aware of Eve's follow-up post then how come you haven't added her feed to your reader yet!
Posted by m.david at 08:22 AM | Comments (0) | TrackBack
In a conversation that started on XML-Dev and without me realizing it ended up being between just Dr. Michael Kay and myself (didn't realize that simply hitting reply doesn't inlcude the xml-dev alias) Dr. Kay made the following comment after my question as to what would warrant extending the trial license for the Saxon-SA processor:
I'm happy to offer generous terms to good research proposals, but I need to see the plan/budget for the research project and to be convinced that the resources are adequate to achieve something useful while also being inadequate to buy Saxon licenses on commercial terms. Since a Saxon license costs less than 1 day of a researcher's time, that can be a difficult case to make.
While it would be a difficult case to make for anyone else beyond a college student that does leave a fairly significant door open for students of Computer Science to put toghether a proposal to Dr. Kay with the intention of researching and developing solutions that use the Schema-Aware capabilities of the Saxon-SA processor. To further extend this idea I would love to aid in the development process of such a project by putting together a competition of sorts between individual students or groups of students in which would enjoy taking this challenge to task and showcasing your skill-set at the same time. You never know what potential future-employers of your skill-set may be paying attention ;) Contact me if this sounds like something you would like to take part in.
Either way, this "offer" of sorts from Dr. Kay is an interesting one and something that if I did'nt have the means to purchase a license would most definitely be attempting to take him up on. If unaware you can contact Dr. Kay through the Saxonica.com web presence.
Posted by m.david at 05:45 AM | Comments (0) | TrackBack
In going through my daily cruise of all that's new, wonderful, and exciting in the world of computer books at Amazon.com I discovered that Russell's AspectJ Cookbook from O'Reilly has moved from pre-order to "get-it-now-while-theres-still-enough-trees-to-make-paper-to-print-it-on" status.
btw... that's a reference to just how good I know this book is going to be and as such how many copies will be sold and not a knock at our tendency as consumers to tear down more trees than we plant for use as raw-material for things like paper. I think that, for the most part, this tendency is changing (would actually be a good study to find this out as part of my Reusablog project... for now I think I have enough projects but you never know what the future may hold.) Being from Washington state I have watched an entirely new process of using rapidly growing low-environmental-impact tree species such as the poplar ( << this points to a Wisconsin-based study, but the same is happening in Washington state and I am sure in other states in the US as well as other countries abroad) being used in "crop" style planting, harvesting, and rotation that has the potential to lead to a future where we are building and adding to our environment instead of tearing it down and destroying it as was the popular style of the 20th century. Interesting stuff!
Going back to Russell's book... I have watched this process from the start and I know for a fact that Russ has put his entire heart and soul into this title. And being witness to the results that take place as part of Russell's passion for software development I can assure you this will lend well to another quality title from O'Reilly.
Posted by m.david at 04:45 AM | Comments (0) | TrackBack
i-Newswire.com - Press Release Distribution - EDI Grows Stronger with XML
"When in doubt, embrace."
Ok maybe not such a good mantra to add to your daily chanting routing (what? You don't have a daily chanting routing? If you're EDI I might consider starting one ;)).
How about "When you're about to be replaced, embrace"?
Either way it seems thats the new focus for EDI.
Posted by m.david at 02:24 AM | Comments (0) | TrackBack
As I recently learned in an email from Bruce D'Arcus and now in a blog posting from Tim Bray, Eve Maler has recently entered the blogosphere. Nice! :)
It seems however that the way I interpreted her blogs title -- Pushing String -- is not what she intended to be meant as pointed out in this post.
Why Pushing String? While stitching away during another lecturer’s presentation on XML schema design at CSW’s wonderful XML Summer School in Oxford, U.K., I commented that some aspect or other of choosing a schema design style was really difficult, “like pushing string.” Looking down, I realized that that’s what cross-stitching is all about.
If you're wondering what my interpretation was -- My initial thought was more along the lines of "Pushing XML as a drug" given that XML is just text and furthermore a string of text. Leave it to the youth of GenerationXML to somehow bring the innocent meaning of a phrase into the bitter gall that is the drug dealing subculture. Oops!
At any rate, welcome Eve!
Posted by m.david at 01:53 AM | Comments (2) | TrackBack
This is something that I have struggled with and I am hoping that one of you out there (Wendell? :D ;)) can help shed some light. Given the technical spelling of extensible markup language but the acronymic representation XML which do I use as the determination as to whether I say *a* XML node-set or *an* XML node-set? If I understand correctly (even though I speak English natively I think we can all agree there's nothing proper about my grammatical usage of it :)) the decisive line is to use *a* when followed by a word starting with a consonant (as in "a bicycle") and *an* when followed by a word starting with a vowel (as in "an apple").
Looking further according to Dictionary.com:
[Middle English, variant of an, an. See an1.]
Usage Note: In writing, the form a is used before a word beginning with a consonant sound, regardless of its spelling (a frog, a university). The form an is used before a word beginning with a vowel sound (an orange, an hour). ·An was once a common variant before words beginning with h in which the first syllable was unstressed; thus 18th-century authors wrote either a historical or an historical but a history, not an history. This usage made sense in that people often did not pronounce the initial h in words such as historical and heroic, but by the late 19th century educated speakers usually pronounced initial h, and the practice of writing an before such words began to die out. Nowadays it survives primarily before the word historical. One may also come across it in the phrases an hysterectomy or an hereditary trait. These usages are acceptable in formal writing.
If I focus on "The form an is used before a word beginning with a vowel sound (an orange, an hour)." then it seems I can answer my own question by stating that *an* XML node-set would be proper (and as such my past interpretation is incorrect.) Still, it's probably best I don't rely on my own interpretation of the English language or definitions of its proper usage thereof in a majority of situations so if someone can help shed further light onto this for me I would very much appreciate it.
Cheers!
Posted by m.david at 11:35 PM | Comments (3) | TrackBack
In a recent post to XSL-List Dimitre Novatchev brings out what I believe to be an extremely important aspect in regards to understanding all that is taking place in our code and to easily be able to use that information in other areas of our code or in cases such as debugging, documentation, etc... More importantly he discusses that at present time the "meta-data" stored in an atomic value can not be represented "natively in XML" and as such must be processed first adding each atomic value to the node of a node-set or to further pipe the result of the transformation outside of the transformation as a delimited string for further processing by another application or language implementation.
As long as I am understanding things correctly then what Dimitre is stating is that if our result of a transformation of XML looks like this:
foo
bar
foo's grandson
bar's grandson
Then at present time there is no way to simply make a call to a function such as:
toXML(result)
and have it return a XML data-set to the be processed further.
While considering the spirit in which a Domain Specific Language like XSLT was created I can understand there being hesitation by the WG to require implementations of the spec to go beyond what is the highest priority function of any given DSL but I do believe that Dimitre has a very valid point in that the primary function of XSLT is to transform XML into *ANYTHING* else including XML and as such this doesn't seem like something that shouldn't fall directly into XSLT's primary function definition.
The full thread thus far between Dimitre and Dr. Michael Kay is listed in the extended portion of this post.
[UPDATE: I just realized that this was post 200 for <XSLT:Blog />. With post 100 on Dec. 8th I'd say I think I have finally found my medium for extending my passions to the web. I'm having fun! Hope you are too :)]
Dimitre's post:
---It is a common XSLT processing scenario that some intermediate results are produced and must be used later during the transformation.
These results are typically stored within a node-set. Especially for a sequence of atomic values, there is no way of representing it "natively in XML" -- one has to wrapp every item in a node or contrive some other scheme such as coding the sequence as a pipe-delimited string.
Things are even worse with a result, which is a node-identity (as opposed to a copy of a node)... To preserve this some kind of a key is necessary, such as one that matches a node using its generate-id().
Because as described the type of the result is generally lost when stored in such an intermediate structure, it is often difficult or impossible to use them correctly, when they are later reconstituted and used.
For example, after such storage and re-activation an integer will become a string and this will affect how it is processed -- comparing it to another xs:integer with the value comparison operators will raise a type error, while using the general comparison operators will result either in a string comparison or in an integer comparison, depending on which operand is first.
Certainly, this is not something new -- we know that XPath 2.0 made only the first step to a powerful enough type system.
A simple way to overcome some of these difficulties will be a function, which given an item returns it type -- e.g. the string "xs:integer"
Of course, ideall one would want a "type class" which captures the "signature" of a type, such as its constructor functions, its orderness (or lack of such), its "eq" and "gt" functions, its supertypes, etc. While this may be considerably difficult to provide in XPath 2.0, the simple function I described will suffice for many scenarios.
My question: is it possible and how to implement this function.
Cheers,
Dimitre Novatchev.
Michael Kay's response:
The WGs decided not to make the language introspective (or to provide access to metadata) this time round: types are not objects and there is no way of finding information about them.
The closest thing available is the "instance of" operator which allows you test whether a value is an instance of a known type.
There were moves to add an accessor function to get the actual type annotation of a node (or an atomic value, perhaps) but the WG decided against - I'm afraid I don't recall the detailed rationale. Saxon does provide an extension function saxon:type-annotation() for this purpose. At some time I might well experiment with further extensions to make schema information available.
Michael Kay
http://www.saxonica.com/
Dimitre's return response:
On Sun, 2 Jan 2005 16:49:09 -0000, Michael Kay
wrote: The WGs decided not to make the language introspective (or to provide access
> to metadata) this time round: types are not objects and there is no way of
> finding information about them. >
> The closest thing available is the "instance of" operator which allows you
> test whether a value is an instance of a known type.
But this will only return the type annotation -- that is, only if the document has been validated against a schema and given the type by the validation process.
The case I describe is to be able to get the type of intermediate results that are passed as parameters to a generic xsl:function or xsl:template expecting item()*
> There were moves to add an accessor function to get the actual type
> annotation of a node (or an atomic value, perhaps) but the WG decided
> against - I'm afraid I don't recall the detailed rationale. Saxon does
> provide an extension function saxon:type-annotation() for this purpose. At
> some time I might well experiment with further extensions to make schema
> information available.
Are there any chances that a standard function:
type-of(someItem*)
can still be included in XPath?
Cheers,
Dimitre
Posted by m.david at 11:08 PM | Comments (2) | TrackBack
I want to quickly let you all know that I have started up alphaCOmega.com to act in the capacity of documenting the learning process and indexing the technical details including code samples, etc... of the COmega development language currently in the R&D stage at Microsoft Research.
Please keep the following in mind:
Please also note that I in no way consider myself to be an expert of the COmega language or any of the development methodologies that are a part of the current research state of this project. There are specific areas in regards to functional programming methodologies and the C# language (up to version 2.0) as well as its relation to the current state of the Common Language Infrastructure (up to version 2.0) and its the various runtime implementations that I feel confident enough in my abilities to at least have a good chance at understanding the various aspects of COmega and projecting that knowledge via this blog. But for the most part this is going to be just as much a learning process for me as it may be for you. Please keep this in mind before you chop off my head via comments or trackbacks for making a mistake in my code or an error in a statement made in a comment or post. Don't let that keep you from correcting me, please! :D I want this site and all related content to be as accurate as possible. Your help in this area is greatly appreciated.
With that, if you feel like following along or quite possibly participating with this site please visit http://www.alphaCOmega.com or contact me at m.david@x2x2x.org.
Posted by m.david at 09:11 PM | Comments (0) | TrackBack
“Zope does for Python what JBoss does for Java,” he said, adding that text, files, Web pages, addresses and other types of content are stored in a database as objects. “You create templates like with XSLT, render these objects as pages and give them functionality.”
Posted by m.david at 03:18 AM | Comments (0) | TrackBack
I'm working on something that sounds a lot like this. Maybe I need to get in touch with XFY and combine resources... Hmmmmm...
Posted by m.david at 03:16 AM | Comments (0) | TrackBack
Firstly, HAPPY 11111010101 EVERYONE!!!!!!
Secondly, Apparently the power here in Salt Lake City and in particular the power supply feeding the machine <XSLT:Blog /> resides on had gone out at some point during the day and the site subsequently was unavailable. My apologies if you had made plans to begin reading every post since the sites inception during the period in which it was down and then became awakened every so rudely when you discovered this was not going to be possible. I can't really say for sure how long the site was down but based on the date stamped to the emails that came in telling me the site was down (thank you to those of you who tried to help out!) my guess is that its been pretty much the entire time I've been away, or about 12 t0 16 hours. My sincere apologies to you for this!
What has me scratching my head is that I thought I had prepared for such a mishap by setting the system to restart itself if the APC power supply backup were to ever run out (which apparently it must have.) Guess I will need to look into this and find out what the problem is. I do wonder if it might be smarter to move the site to the main x2x2x.org server such that the chances of this happening again are substantially smaller given the fact that this machine resides in an establishment in which seems to have been designed to survive a nuclear holocaust. While all the lines coming into the place may be fried that place will still be humming with internet activity, intra-traffic though it might be.
I'll look further into all of this now. In the mean time I hope your 11111010101 (2005 for those who can not read binary) is as fantastic as you hope and plan it to be!
Cheers!
<M:D/>
Posted by m.david at 12:28 AM | Comments (0) | TrackBack