A new XML editing experience
The Virtual Formatting concept is quite simple and yet brings many benefits. XML text formatting appears the same in the XML Editor, but, instead of the padding characters inserted by ordinary editors, the left-margin adjusts automatically to the XML.
The screenshots (Right) might help: top-most is a screenshot of XML created in XMLQuire, and below it is a screenshot of the same XML after a conventional XML editor has had to add padding characters to format the XML conventionally.
The extra yellow highlights show the new padding characters added by other editors, such that they're indistinguishable (check out the 'books' title in the XML text) from real XML content, these non-printable characters also add to a kind of 'editing latency'.
Apparently not, but once you realize the benefits this is quite surprising. As this is a new concept there's no recognised term for it, but 'Virtual Formatting' fits quite nicely. It's hard to say why this hasn't been done before, possibly because many XML editors are actually code editors first with XML features added later. XMLQuire is designed to demonstrate that this technology is effective in a real work environment, it's much more than a proof of concept.
This will be the typical case until more Virtual Formatting editors surface. XMLQuire first checks XML for signs of formatting, like regular patterns in leading whitespace. If found, these patterns are actually exploited to help ensure that the XML is trimmed safely, without removing significant whitespace. Conventional editors do the reverse (insert formatting characters), but without the benefit of any patterns, they are therefore much more prone to modifying whitespace where it should be preserved.
If XMLQuire detects no line-feeds after several element nodes have been parsed, it will insert line-feeds to assist readability. Line-feeds are not inserted in mixed-content, where xml:space preserve values are in scope, or for certain vocabularies' elements which are known to treat whitespace as significant, such as html:pre and xsl:text.
There are too many to list fully here - but here are some highlights: