4 ms·
I tried using XML on a lark the other day and realized that XSDs are actually somewhat load bearing. It's difficult to map data in XML to objects in your favori
by striking 9mo ago
I tried using XML on a lark the other day and realized that XSDs are actually somewhat load bearing. It's difficult to map data in XML to objects in your favorite programming language without the schema being known beforehand as lists of a single element are hard to distinguish from just a property of the overall object.
Maybe this is okay if you know your schema beforehand and are willing to write an XSD. My usecase relied on not knowing the schema. Despite my excitement to use a SAX-style parser, I tucked my tail between my legs and switched back to JSONL. Was I missing something?
- mkozlows 9mo agoXML was designed as a document format, not a data structure serialization format. You're supposed to parse it into a DOM or similar format, not a bunch of strongly-typed objects. You definitely need some extra tooling if you're trying to do the latter, and yes, that's one of XSD's purposes.
- froh 9mo agothat's underselling xml. xml is explicitly meant for data serialization and exchange, xsd reflects that, and it's the reason for jaxb Java xml binding tooling. get me right: Json is superior in many aspects, xml is utterly overengineered. but xml absolutely was _meant_ for data exchange, machine to machine.
- mkozlows 9mo agoNo. That use case was grafted onto it later. You can look at the original 1998 XML 1.0 spec first edition to see what people were saying at the time: https://www.w3.org/TR/1998/REC-xml-19980210#sec-origin-goals https://www.w3.org/TR/1998/REC-xml-19980210#sec-origin-goals Here's the bullet point from that verbatim: The design goals for XML are: XML shall be straightforwardly usable over the Internet. XML shall support a wide variety of applications. XML shall be compatible with SGML. It shall be easy to write programs which process XML documents. The number of optional features in XML is to be kept to the absolute minimum, ideally zero. XML documents should be human-legible and reasonably clear. The XML design should be prepared quickly. The design of XML shall be formal and concise. XML documents shall be easy to create. Terseness in XML markup is of minimal importance. Or heck, even more concisely from the abstract: "The Extensible Markup Language (XML) is a subset of SGML that is completely described in this document. Its goal is to enable generic SGML to be served, received, and processed on the Web in the way that is now possible with HTML. XML has been designed for ease of implementation and for interoperability with both SGML and HTML." It's always talking about documents. It was a way to serve up marked-up documents that didn't depend on using the specific HTML tag vocabulary. Everything else happened to it later, and was a bad idea.
- froh 9mo agoplease bear with me... data exchange was baked into xml from the get go, the following predate the 1.0 release and come from people involved in writing the standard: XML, Java, and the future of the Web Jon Bosak, *Sun Microsystems* Last revised *1997.03.10* section on Database interchange: the universal hub https://www.ibiblio.org/bosak/xml/why/xmlapps.htm https://www.ibiblio.org/bosak/xml/why/xmlapps.htm Guidelines for using XML for Electronic Data Interchange Version 0.04 *23rd December 1997* https://xml.coverpages.org/xml-ediGuide971223.html https://xml.coverpages.org/xml-ediGuide971223.html the origin of the latter, the edi/xml WG, was the successor of an edi/sgml WG which had started in the early 1990, and was born out of the desire to get a "universal electronic data exchange" that would work cross platform, vms, mainframes, unix and even DOS hehe, and to leverage the successful sgml doc book interoperability. was it niche? yes. was it starting in sgml already? and baked into xml/xsd/xslt? I think so.
- fsckboy 9mo agoto be fair >XML shall be straightforwardly usable over the Internet. is machine to machine communication to me, XML is an example of worse is better, or rather, better is worse. it would never have come out of Bell Labs in the early 70s. Neither would JSON for that matter.
- mkozlows 9mo agoAnd as for JAXB, it was released in 2003, well into XML's decadent period. The original Java APIs for XML parsing were SAX and DOM, both of which are tag and document oriented.
- zarzavat 9mo agoYou have to use the right tool for the job. XML is extensible markup, i.e. it's like HTML that can be applied to tasks outside of representing web pages. It's designed to be written by hand. It has comments! A good use for XML would be declaring a native UI: it's not HTML but it's like HTML. JSON is a plain text serialization format. It's designed to be generated and consumed by computers whilst being readable by humans. Neither is a configuration language but both have been abused as one.
- ahf8Aithaex7Nai 9mo ago> It's designed to be written by hand Are you sure about that? I've heard XML gurus say the exact opposite. This is a very good example of why I detest the phrase “use the right tool for the job.” People say this as an appeal to reason, as if there weren't an obvious follow-up question that different people might answer very differently.
- zarzavat 9mo agoPerfectly sure. XML is eXtensible Markup Language, the generalized counterpart to Hypertext Markup Language. XML, HTML, SGML are all designed to be written by hand. You can generate XML, just like you can generate HTML, but the language wasn't designed to make that easy. Computers don't need comments, matching </end> tags, or whitespace stripping. There was a time, in the early-mid 2000s when XML was the hammer for every screw. But then JSON was invented and it took over most of those use cases. Perhaps those XML gurus are stuck in a time warp. XML remains a good way to represent tree structures that need to be human editable.
- unscaled 9mo agoSGML was designed for documents, and it can be written by hand (or by a machine). HTML (another descendant of SGML) is in fact written by hand regularly. When you're using SGML descendants for what they were meant for (documents) they're pretty good for this purpose. Writing documents — not configuration files, not serialized data, not code — by hand. XML can still be used as a very powerful generic document markup language, that is more restricted (and thus easier to parse) than SGML. The problems started when people started using XML for other things, especially for configuration files, data interchange and even for programming language. So I don't think GP is wrong. The authors of the original XML spec probably envisioned people writing this by hand. But XML is very bad for writing by hand the things that it eventually got used for.
- froh 9mo agothere were tools that derive the schema from sample data and relaxng is a human friendly schema syntax that has transformers from and to xsd.