Update:

The family analogy is an apt one: probably about 80% of my XPathing is pulling information from the current node’s children, and a comparable amount of time in my personal life is spent telling my son to get back into bed.

*GREAT* analogy from piers!

Update:

So give Goldfarb credit for his presentations of uhh.. 1991 with the input/transform/output diagrams on them…

Done. :)

[Original Post]

… and ends with…

Thinking”Thinking XML: The XML decade”

The company I work for has had a lot of success with XML, and are planning to move the internal data structure for our application from maps to XML. There is one simple reason for our sucess with it: XSLT. A customer asks for output in a specific format? Write a template. Want to display the data on a web page? Write a template that converts to HTML. Want to print to PDF? Write a template that converts to XSL, and use one of many available XSL->PDF processors. Want to use PDF forms to input data? Write a template to convert XFDF to our format. Want to import data from a competitor and steal their customer? You get the picture.

Bingo! The secret to XML’s value is transformation. Pass it on.

(note-to-Uche: passed ;)

So back to “and ends with…” >> SLT

Believe it! ;)

Actually, extending from this a bit, and placing credit where credit is truly due…

While I wholeheartedly agree with Uche’s statement, I know for a fact he will agree with me as I take this one step further…

While XML’s value *truly does* exist in transformations, there’s more to it than *JUST* XSLT. In fact, what makes XSLT such a powerful language in the first place has absolutely *ZERO* resemblance to the document-based nature of well formed angle brackets.

The true power of XML (and the reason why XML is EVERYWHERE)?

XPath.

Why XPath?

Because its *NOT XML*! Well, that and the fact that in its 1.0 incarnation, it exposed to the world a concise, well thought through design that used the shortest *path* possible to locate and select *ANY* data from *ANYWHERE* inside of *ANY* XML infoset from *ANYWHERE* else inside of that same infoset using the most logical foundation of hierarchal terminology in which each of us have understood since the day we each were born…

Family.

Parents, Siblings, Ancestors, Children, Descendants (that seems to be about the right order in which we learn about each segment of our personal genealogical hierarchy) >> These are things in which makes sense to even the most non-technical people on the planet. Add to this the fact that if there is any one thing that anyone who uses a computer encounters (and therefore is most likely to comprehend) more often than anything else, it would be that of the path syntax that represents the *hierarchy* of folder structure, a well designed website, etc… — and what you have is by far and beyond the most natural extension of human expression that could possibly exist in the world of non-human expression evaluation (i.e. a computer)

Of course, without XML acting as the source of “inspiration” for XPath’s genealogical approach to the selection of hierarchal data collections, then obviously XPath wouldn’t even exist (or at least not with the same generalized purpose). So suffice it to say that this conversation wouldn’t even be taking place had it not been for XML, so please don’t take my statement to mean anything other than that of providing XPath proper credit where credit is due.

And with all of this: To those of you who dream of building the next great programming language, or the next great data format, or the next great anything else related to computing in any way, shape or form.

- Start with a data format that utilizes a syntax in which we each are most likely to instinctively understand (e.g. Family, Hierarchy, Genealogy), (and make sure its text-based instead of binary-based such that we humans can make logical sense of what it is and what it means.)
- Create a reference syntax that builds from this same foundation and extend into that in which each of us are most likely to recognize what it means (e.g. path-based hierarchy selection)
- Utilize common keywords for selecting (e.g. select), matching (e.g. match), making decisions (e.g. choose, if, when, otherwise), and in other ways make logical decisions based on common human expressions.

And then pat yourself on the back for just reinventing XML, XPath, and XSLT.

One final note,

Hi, I’m a human browsing the web.

Link One:

http://example.org/1100567/tr572/xxED?foo=bar&loc=11768&id=7785247&page=1109876

Link Two:

http://example.org/products/apparel/men/shoes/basketball/nike#Zoom_Lebron_IV

Enjoy your holiday shopping, whichever *path* you feel most compelled to *choose*.

WW:*

Give it a *REST*, Peterson!

M.:

Uhhhh, yeah.. I just did.