Slashdot Mirror


The Future of XML

An anonymous reader writes "How will you use XML in years to come? The wheels of progress turn slowly, but turn they do. The outline of XML's future is becoming clear. The exact timeline is a tad uncertain, but where XML is going isn't. XML's future lies with the Web, and more specifically with Web publishing. 'Word processors, spreadsheets, games, diagramming tools, and more are all migrating into the browser. This trend will only accelerate in the coming year as local storage in Web browsers makes it increasingly possible to work offline. But XML is still firmly grounded in Web 1.0 publishing, and that's still very important.'"

30 of 273 comments (clear)

  1. "How will you use XML in years to come?" by Ant+P. · · Score: 5, Insightful

    Sparingly. JSON is just plain better, and doesn't inflict an enterprisey mindset on anyone that tries to use it.

    1. Re:"How will you use XML in years to come?" by MagikSlinger · · Score: 3, Insightful

      Sparingly. JSON is just plain better, and doesn't inflict an enterprisey mindset on anyone that tries to use it.

      JSON is inflicting Javascript on everyone. There are other programming languages out there. Also, XML can painlessly create meta-documents made up of other people's XML documents.

      --
      The bitter lessons of a veteran coder: http://bitterprogrammer.blogspot.com
    2. Re:"How will you use XML in years to come?" by MagikSlinger · · Score: 5, Insightful

      JSON is inflicting Javascript on everyone.

      No, it really doesn't, but if "JavaScript" in the name bothers you, you might feel better with YAML.

      No, it wouldn't because JSON is bare bones data. It's simply nested hash tables, arrays and strings. XML does much more than that. XML can represent a lot of information in a simple, easy-to-understand format. JSON strips it out for speed & efficiency. Which sort of gets into the point I did want to make but was too impatient to explain: JSON is good where JSON is best, and XML is good where XML is best. I dislike the one-uber-alles arguments because it's ignoring other situations and their needs.

      There are other programming languages out there.

      And there are JSON and/or YAML libraries for quite a lot of them. So what?

      Would you like to live in a world of S-expressions? The LISP people would point out there are libraries to read/write S-expressions, so why use JSON? The answer of course is that we want more than simply nesting lists of strings. We want our markup languages to fit our requirements, not the other way around. And saying "JSON for Everything", which the original poster did was... silly.

      My problems with JSON are:

      • No schema: XML Schema not only makes it easier to unit test, but it can be fed into tools that can do useful things like automatic creation of Java classes and code to read/write. Does JSON have anything like that? Of course not, because it would defeat JSON's purpose: easy Javascript data transmission.
      • Expressability: With XML, I can create a model that fits my logical model of the data where I use attributes to augment the data in the child elements. Doing that in JSON is a kludge with a hash-table to represent an element which can't be easily converted into a graph for easy understanding.
      • Diversity: I use GML in my day job. A lot. I can easily set up an object conversion rule with Jakarta Digester that I can painlessly drop into future projects without modification. That's the power of namespaces. I can build an XML document using tags from a dozen different schema, and then feed it to another application that only looks for the tags it cares about.
      • XPath. 'Nuff said. Ok, one thing: this should have replaced SAX/DOM years ago.

      JSON is great for AJAX where XML is clunky and a little bit slower (my own speed tests hasn't shown there's a huge hit, but it is significant). XML is great for document-type data like formatted documents or electronic data interchange between heavy-weight processes. My point was that the original poster's JSON is everything was narrow-minded, and that XML answers a very specific need. There are tonnes of mark-up languages out there, and I think XML is a great machine-based language. I hate it when humans have to write XML to configure something though. That really ticks me off. But that's the point: there should not be one mark-up language to rule them all. A mark-up language for every purpose.

      --
      The bitter lessons of a veteran coder: http://bitterprogrammer.blogspot.com
    3. Re:"How will you use XML in years to come?" by filbranden · · Score: 2, Insightful

      JSON is inflicting Javascript on everyone. There are other programming languages out there.

      On the browser? If you want to use AJAX-like technology, JavaScript is still the only viable and portable option as the programming language for the client side.

    4. Re:"How will you use XML in years to come?" by aoteoroa · · Score: 4, Insightful

      Hear! Hear!

      One file (format) will not rule them all.

      XML is good if you want to design a communication protocol between your software, and some other unknown program.

      JSON is much lighter. Far less kilobits needed to transfer the same information so when performance is important and you control everything then use JSON.

      When it comes to humans editing config files I find traditional ini files, or .properties easier to read and perfectly suitable in most cases.

      Writing more complex, relational data to disk? Sqlite often solves the problem quickly.

    5. Re:"How will you use XML in years to come?" by slawo · · Score: 2, Insightful

      JSON is fit mostly for communication and transfer of simple data between JS and server side scripts through object serialization. But it remains limited. You can compare JSON to XML only if your knowledge of XML stops at the X in AJAX
      Beyond that scope comparing these two unrelated "things" is irrelevant.

      The tools and libraries available for XML go well beyond JSON's scope. DOM, RSS & ATOM, OASIS, Xpath, XSLT, eXist DB are just few examples of tools and libraries surrounding XML.
      XML is designed to let you create your own protocols and formats while using only one simple base format (XML), one simple descriptor language (Schema or DTS) and you can convert your formats and protocols using one transformation technology (XSLT).
      There are languages to query XML files and collections, XLM databases and many more examples including scientific, vectorial and 3d imaging formats.
      I believe the word Interoperability was created with XML in mind... Or maybe the other way round... whatever.

      --
      The road to hell is paved with good intentions...
    6. Re:"How will you use XML in years to come?" by CoughDropAddict · · Score: 5, Insightful
      I'm so depressed. You represent an entire generation of programmers who can't figure out the difference between marked-up text and data, and why mark-up languages suck so bad for data interchange.

      Pop quiz. Here's an excerpt of GML from that page you linked to.

      <gml:coordinates>100,200</gml:coordinates>
      Do the contents of this node represent:
      1. the text string "100,200"
      2. the number 100200 (with a customary comma for nice formatting)
      3. the number 100.2 (hey, that's the way that the crazy Europeans do it)
      4. a tuple of two numbers: 100 and 200
      "Obviously it's two numbers, they're coordinates" you may say. But such things are not "obvious" to an XML parser. If you're an XML parser the answer is (1): it's a simple text string. So to get to the real data you have to parse that text string again to split on a comma, and to turn the two resulting text strings into numbers. Note this is a completely separate parser and is completely outside the XML data model, so all your fancy schema validation, xpath, etc. are useless to access data at this level.

      Why all this pain? Because XML simply has no way to say "this is a list of things" or "this is a number."

      Sure, you can approximate such things. You could write something like:

      <gml:coordinates>
          <gml:coordinateX>100</gml:coordinateX>
          <gml:coordinateY>200</gml:coordinateY>
      </gml:coordinates>
      But the fact remains that even though you may intuitively understand this to be two coordinates when you look at it (and at least you can select the coordinates individually with xpath in this example, but they're still strings, not numbers) to XML this is still nothing but a tree of nodes.

      Did you catch that? A tree of nodes. You're taking a concept which is logically a pair of integers, and encoding it in a format that's representing it in a tree of nodes. Specifically, that tree looks something like this:

      elementNode name=gml:coordinates
      \-> textNode, text="\n " *
      \-> elementNode name=gml:coordinateX
          \-> textNode text="100"
      \-> textNode, text="\n " *
      \-> elementNode name=gml:coordinateY
          \-> textNode, text="200"
      \-> textNode, text="\n" *


      (*: yep, it keeps all that whitespace that you only intended for formatting. XML is a text markup language, so all text anywhere in the document is significant to the parser.)

      So let's recap. Using XML, we've taken a structure which is logically just a pair of integers and encoded it as a tree of 7 nodes, three of which are meaningless whitespace that was only put there for formatting, and even after all this XML has no clue that what we're dealing with is a pair of integers.

      Now let's try this example in JSON:

      {"coordinates": [100, 200]}
      JSON knows two things that your fancy shmancy XML parser will never know: that 100 and 200 are numbers, and that they are two elements of an array (which might be more appropriately thought of as a "tuple" in this context). It's smart enough to know that the whitespace is not significant, it doesn't build this complex and meaningless node tree; it just lets you express, directly and succinctly, the data you are trying to encode.

      That's because JSON is a data format, and XML is a marked up text format. But we're suffering from the fact that no one realized this ten years ago, and compensated for the parity mismatch by layering mountains of horribly complex software on top of XML instead of just using something that is actually good at data interchange.
    7. Re:"How will you use XML in years to come?" by dkf · · Score: 3, Insightful

      My problems with JSON are:
      • No schema: XML Schema not only makes it easier to unit test, but it can be fed into tools that can do useful things like automatic creation of Java classes and code to read/write. Does JSON have anything like that? Of course not, because it would defeat JSON's purpose: easy Javascript data transmission.
      While I hate XML Schema, it's still better for many uses than just throwing random crap on the wire and hoping that the other end can make sense of it. And no, throwing some javascript on the wire as well doesn't help that much. I want the computer to do stuff with the data without having to ship a program specifically for the purpose; after all, I can't think of all the purposes for the data right now and I want to let others come up with new cool stuff too.

      • XPath. 'Nuff said. Ok, one thing: this should have replaced SAX/DOM years ago.
      I use a DOM library that includes XPath support so that I can simply do a search starting at any node. It makes working with DOM much more pleasant.

      I hate it when humans have to write XML to configure something though. That really ticks me off. Simpler stuff works quite well when you've got configuration of software from a single vendor, but when you've got to combine stuff from lots of sources, XML stops being quite such a bad choice. (If only people who edit config files would actually demonstrate an ability to write well-formed XML though. Idiots...)
      --
      "Little does he know, but there is no 'I' in 'Idiot'!"
    8. Re:"How will you use XML in years to come?" by Anonymous Coward · · Score: 4, Insightful

      You are arguing the merits of isolated XML, while in fact it is a collective technology. Yes, the XML itself is not strongly typed, that is why you have SCHEMA (formerly DTD). Using XML-SCHEMA (coincidently also written in XML) you DO get a strongly typed document where you can say that a tag can only contain one letter followed by 12 digits or whatever. Then you can use XSL to transform the document, knowing with certainty every single bit of the format.

      The only difference here is that XML separates these 3 (markup, validation, transformation) operations, since you might find situations where you don't need all of them.

    9. Re:"How will you use XML in years to come?" by CoughDropAddict · · Score: 2, Insightful

      What you are describing is the "mountains of horribly complex software on top of XML" that I was referring to. Sure, you can always add one more layer of standards and software to address the deficiencies of what you started with. You could add a validation layer on top of absolutely anything; that doesn't mean that what you started with is any good.

      Also, this isn't just a matter of validation. It's a matter of actually being able to access the structure of the data you're trying to encode. OK, so let's say you've written an XML schema rule for gml:coordinates that says "this must contain numbers, then a comma, then numbers." You still have to run a separate parser to pull that information apart at parse time and convert strings to integers, and that data is still not accessible through the DOM or xpath or whatever.

    10. Re:"How will you use XML in years to come?" by DragonWriter · · Score: 2, Insightful

      While I hate XML Schema, it's still better for many uses than just throwing random crap on the wire and hoping that the other end can make sense of it.


      XML Schema may let the other end validate it, but it doesn't let the other end make sense of it. The other end can only make sense of it if they've got code written to handle the kind of data it contains: which is true, really, of any data format.
  2. I don't understand... by ilovegeorgebush · · Score: 5, Insightful

    I don't get it. We can argue the merits of data exchange formats 'till we're blue in the face; yet I cannot see why XML is so popular. For the majority of applications that use it, it's overboard. Yes, it's easier on the eye, but ultimately how often do you have to play with the XML your CAD software uses?

    I'm a programmer, just like the rest of you here, so I'm quite used to having to write a parser here or there, or fixing an issue or two in an ant script. The thing that puzzles me, is why it's used so much on the web. XML is bulky, and when designed badly it can be far too complex; this all adds to bandwidth and processing on the client (think AJAX), so I'm not seeing why anyone would want to use it. Formats like JSON are just as usable, and not to mention more lightweight. Where's the gain?

    1. Re:I don't understand... by SpaceHamster · · Score: 5, Insightful

      My best stab at the popularity:

      1. Looks a lot like HTML. "Oh, it has angle brackets, I know this!"
      2. Inertia.
      3. Has features that make it a good choice for business: schemas and validation, transforms, namespaces, a type system.
      4. Inertia.

      There just isn't that much need to switch. Modern parsers/hardware make the slowness argument moot, and everyone knows how to work with it.

      As an interchange format with javascript (and other dynamically typed languages) it is sub-optimal for a number of reasons, and so an alternative, JSON has developed which fills that particular niche. But when I sit down to right yet another line of business app, my default format is going to be XML, and will be for the foreseeable future.

      --
      "BeOS is a great operating system" -Doug Miller, Microsoft
    2. Re:I don't understand... by GodfatherofSoul · · Score: 5, Insightful

      XML gives you a parsable standard on two levels; generic XML syntax and specific to your protocol via schemas. It's verbose enough to allow by-hand manual editing while the syntax will catch any errors save semantic errors you'll likely have. It's also a little more versatile as far as the syntax goes. Yes, there are less verbose parsing syntaxes out there, but you always seem to lose something when it comes to manual viewing or editing.

      Plus, as far as writing parsers, why burn the time when there are so many tools for XML out there? It's a design choice I suppose like every other one; i.e. what are you losing/gaining by DIYing? Personally, I love XML and regret that it hasn't taken off more. Especially in the area of network protocols. People have been trying to shove everything into an HTML pipe, when XML over the much underrated BEEP is a far more versatile. There are costs, though as you've already mentioned.

      --
      I swear to God...I swear to God! That is NOT how you treat your human!
    3. Re:I don't understand... by Anonymous Coward · · Score: 5, Insightful

      I don't get it. We can argue the merits of data exchange formats 'till we're blue in the face; yet I cannot see why XML is so popular.

      Because it's a standard that everyone (even reluctantly) can agree on.

      Because there are well-debugged libraries for reading, writing and manipulating it.

      Because (as a last resort) text is easy to manipulate with scripting languages like perl and python.

      Because if verbosity is a problem, text compresses very well.

    4. Re:I don't understand... by batkiwi · · Score: 5, Insightful

      XML IS:
      -Easily validated
      -Easily parsed
      -Easily compressed (in transit or stored)
      -Human readable in case of emergency
      -Easily extendable

    5. Re:I don't understand... by Anonymous Coward · · Score: 3, Insightful

      For one, it has off-the-shelf parsers and validation tools. Parsing XML is, at it's hardest, a matter of writing a SAX parser. XML binding APIs make things even easier. The standardized validation tools also make it great for ensuring that people in charge of generating the data are using the form expected by those receiving the data.

      Our biggest usage is in our customer data feeds. These feeds are often 1GB+ when compressed. Since switching to an XML format from a tab-delimited format, we've been able to give our customers an XSD to validate the file before sending it to us. The result has been far fewer round trips between us and our customers before receiving an acceptable feed. As you can probably imagine, fewer round trips is a very good thing when each round trip involves sending 1GB+ of data over the internet.

      Also, gzip and other compression methods do very well with XML files...to the point where the difference between a compressed XML file and a compressed JSON or other formatting of the same data is pretty minimal. So your point about AJAX applications isn't particularly relevant once you've enabled gzip content coding.

      The human-readable benefit is more of a nice side effect rather than a must have, though it does come in quite handy when debugging.

      So you might want to ask yourself why not use it? What are the drawbacks of your CAD program using XML to store its files, especially if it does something like OpenOffice does by compressing them. Why not take advantage of tools that make it simple to parse information? If it's just the "XML is bulky" complaint, that's basically been addressed.

    6. Re:I don't understand... by kwerle · · Score: 2, Insightful
      I don't get it. We can argue the merits of data exchange formats 'till we're blue in the face; yet I cannot see why XML is so popular. For the majority of applications that use it, it's overboard. Yes, it's easier on the eye, but ultimately how often do you have to play with the XML your CAD software uses?

      Let's say you need to store data, and a database is not an option. What format shall you store it in?
      1. Proprietary binary
      2. Proprietary text
      3. JSON
      4. XML


      1 & 2 are untried, untested, and it is not possible to find 3rd party tools for working with/validating/generating/etc.
      3 is just insane.
      With XML you get a very well tested format. You get a million libraries and tools (a few of which don't suck) in any language you care to mention. Your users get all the benefits of an open spec and all the same tools. The question becomes: why would you not use XML?
    7. Re:I don't understand... by maxwell+demon · · Score: 2, Insightful

      -Easily compressed (in transit or stored)

      Which just means that it has lots of redundancy. Or, as one might call it, bloat.
      --
      The Tao of math: The numbers you can count are not the real numbers.
    8. Re:I don't understand... by solafide · · Score: 2, Insightful

      so programmers don't have to see or care how much overhead is involved

      Which is how we got to the point where, Dr. Dewar and Dr. Schonberg:

      ...students who know how to put a simple program together, but do not know how to program. A further pitfall of the early use of libraries and frameworks is that it is impossible for the student to develop a sense of the run-time cost of what is written because it is extremely hard to know what any method call will eventually execute.
      And you're saying overhead doesn't matter?
    9. Re:I don't understand... by Xtifr · · Score: 3, Insightful

      From an academic viewpoint, it probably matters. From a point of view of trying to get the job done...not so much. I studied the performance and efficiency of a wide variety of sort algorithms when I was in school, but nowadays, I generally just call some library to do my sorting for me. It may not be quite as efficient for the machine to use some random, generic sort, but for me, it's the difference between a few seconds to type "sort" vs. a few hours to code and debug a sort routine that is probably, at best, only a few percent faster.

      XML is, in many cases (including mine), the path of least resistance. It's not particularly fast or efficient, but it's simple and quick and I don't have to spend hours documenting my formats for the dozens of other people in the company who have to use my data. Many of whom are probably not programmers by Dewar and Schonberg's definition, but who still do valuable work for the company.

    10. Re:I don't understand... by Otto · · Score: 4, Insightful

      -Easily compressed (in transit or stored)

      Which just means that it has lots of redundancy. Or, as one might call it, bloat. Test question: Which is quicker?
      1. Spending a few hours coding your formats in some binary format making maximum use of all the bits.
      2. Spending a few minutes writing code to send your internal data structure to a library that will serialize it into XML and then running the XML through a generic compression routine (if space/speed actually makes any difference to your particular application).

      Consider the question in both the short and the long term. Also consider that you're paying that programmer a few hundred an hour.

      Discuss.

      --
      - Give a man a fire and he's warm for a day, but set him on fire and he's warm for the rest of his life.
    11. Re:I don't understand... by batkiwi · · Score: 2, Insightful

      Why is it bloat? How does it affect anything?

      -it doesn't affect transit time when compressed
      -it minimally takes more cpu to gunzip a stream, but the same could be said of translating ANY binary format (unless you're sending direct memory dumps, which is dangerous)
      -it's never really in memory as the entire point is to serialize/deserialize

    12. Re:I don't understand... by l0b0 · · Score: 2, Insightful

      Maybe another comparison would help: QWERTY vs. Dvorak. The one "everyone" knows and uses - and, incidentally, design keyboard shortcuts according to; I'm looking at you, Vim - was designed to avoid jams in mechanical keyboards way back in the ass-end of time, while the other was designed to be efficient on electronic hardware.

      A "Dvorak solution" for XML would have to solve some fundamental problem while keeping all the good attributes (no pun intended) of the original. IMO, that would mean more readable cdata separators, less or no attributes (most data is not truly atomic, and having lists in attributes is just ugly), and doctype declarations moved to the XML header.

  3. Why is XML so popular by Hal_Porter · · Score: 2, Insightful

    It seems to me to be a slight improvement on ini files, csv and the like. But parsing it is hideously inefficient compared to a binary format. It's bloated too, so it takes more time to send it over the net or save it to disk. I've seen some XML schema that are aggressively hard to read too. And yet it's become something that every new technology, protocol or applications needs to namecheck.

    --
    echo -e 'global _start\n _start:\n mov eax, 2\n int 80h\n jmp _start' > a.asm; nasm a.asm -f elf; ld a.o -o a;
    1. Re:Why is XML so popular by InlawBiker · · Score: 2, Insightful

      Because everyone said "XML is the future." And because it has an "X" it was perceived as shiny and cool. So therefore all managers and inexperienced developers jumped all over it. Now I have to encapsulate a few bytes into a huge XML message and reverse it on incoming messages, when I could have just said "name=value" and been done with it. I can see a use for XML in some applications, but it's been dreadfully overused.

  4. Re:Too many 'this stuff sucks' moments by Belial6 · · Score: 2, Insightful

    I'm not saying that XML is the end all be all, but if your application blows up because someone fed it bad data in XML, your program is broken, and no data format is going to fix it. As the developer, it is your responsibility to vet the data before trying to use it.

  5. Re:Too many 'this stuff sucks' moments by QRDeNameland · · Score: 3, Insightful

    Too bad I used up all my mod points earlier...this post deserves a +1 Insightful.

    I was just a neophyte developer when XML first surfaced in buzzword bingo, but it was the beginning of my realization of how to recognize a "Kool-aid" technology: if the people who espouse a technology can not give you a simple explanation of what it is and why it's good, they are probably "drinking the "Kool-aid".

    Unfortunately, I also have since discovered the unsettling corollary: you will have it forced down your throat anyway.

    --
    Momentarily, the need for the construction of new light will no longer exist.
  6. Re:Too many 'this stuff sucks' moments by Anonymous Coward · · Score: 2, Insightful
    Wow...that's a lot of FUD to fit into one single post.

    To pick just a few of your actual points...

    So you have to dedicate a thread to keeping the stack state for the parser, or read the whole document in one big buffer and pass it to the parser.
    Why on earth would you use a separate thread. SAX callbacks allow you ample opportunity to maintain whatever state you need and DOM parsers cache the entire thing into a hierarchy that you can navigate to avoid having to maintain any state of your own. Granted, the uses for DOM parsers are few and far between, but SAX parsers are quite simple to write, don't require an extra thread and can be done on-the-fly to avoid having to load the entire document at any time. I'm not sure how you get "primitive and difficult to work with" since it rarely takes me more than a few minutes to write a SAX parser, and XML binding technologies (e.g. JAXB, Castor, etc) make it even easier.

    ...you can't easily limit the size of elements in a document, for example...
    That's entirely incorrect. See the following snippet:

        <element name="myelement">
            <simpleType>
                <restriction base="token">
                    <maxLength value="20"/>
                    <minLength value="1"/>
                </restriction>
            </simpleType>
        </element>


    Somewhat verbose, yes. But it's not particularly difficult to learn the syntax. And then a value that's not within the expected bounds will now result in a validation error.

    You just gotta accept that the parser could blow up your program if someone feeds it bad data.
    If you apply an XSD validation, and your XSD is somewhat complete, you can be pretty sure that anything that makes it past the parser will be of acceptable length or even has an acceptable value (in the case of enumerations and unique constraints). This is all pretty simple stuff and it's not difficult to do. Compare this with writing your own parser where you have to do all validation of the format yourself. How is that easier again?

    Finally, my application had poor performance because XML is so slow and bloated to read in as a wire protocol.
    When was the last time you tried it, 1995? Nowadays, compression algorithms require so little processing power that XML adds only a minimal amount of overhead when transfered over the wire.

    In summary - XML sucks, and I refuse to use it, and actively fight against it every opportunity I get.
    Quite frankly, your position makes about as much sense to me as the people who advocate using XML for everything (XSL-T creators, I'm looking in your direction). XML is a tool, and a useful one at that. In some situations it's very helpful and in others it's not. It's not hard to tell the difference. If you need hierarchically-structured data that's easy to parse, XML is great. It's simple to write parsers and the available toolset handles a lot of what you'd otherwise have to do manually.

    I'm actually curious what an XML-luddite like yourself would advocate instead. Give me an example of another technology that allows me to represent hierarchical data, have a standardized validation format so I can allow others to create data in a format I specify and uses an existing parser that takes me almost no time to integrate with. What would you recommend I use when presented with this all-to-common scenario?
  7. MOD PARENT UP! Re:Errrm, folks, what's the big by DIGITAiLor · · Score: 2, Insightful


    Cheers, Qbertino. This is the best explanation of XML's raison d'etre I have ever heard.

    I think what people might hate most is DTDs. That makes sense. Even their creator says they suck. There are many ways around them... Lisp can be one big full-service XML processor. Easily. With happy ending and no need for the DOM or SAX.

    The bottom line is, XML is nothing (literally) until you spec YourML. And most people don't have a need for that! So it seems useless to them. If you are writing markup languages for application spaces that don't have them it's a godsend. And it is leading to improvements and much-needed standardization.

    I've never understood why seemingly rational people whine about XML. It's like whining about mathematics. They're like that for a reason; their intrinsic structure provides their utility. It's not some arbitrary syntax decision that you can whine about. Don't like how modulo works or the concept of recursion? It's AXIOMATIC, baby. Don't like close tags? They're there for a reason.

    As for a SQL replacement... have you checked out Berkeley DB XML? Have you found anything promising that you like?