
My concern, as I indicated in the other thread, is that 1) <?xml version="1.0"?> <article_info isbn="foo"> <title>bar</title> <author>Testy McTest</author> </article_info> 2) <?xml version="1.0"?> <article_info isbn="foo"> <!--Title goes here--> <title>bar</title> <author>Testy McTest</author> </article_info> and 3) <?xml <!-- Prolog tag--> version="1.0"?> <article_info isbn="foo"> <!-- Author goes here --> <author>Testy McTest</author> <!-- Title goes here --> <title>bar</title> <!-- Maybe we could add more later--> </article_info> are all valid XML documents, and represent the same data. If this library were solely to be used for writing, I would say that this is not an issue. However, what is written must be read. The thing I don't understand about the type-safety proposals is how they intend to take into account data that is read from a file. Suppose we write a program to neatly display XML data from any generic XML file: boost::xml my_doc_reader(filename); would certainly be a step, and I would expect it to contain a full XML tree after this step is said and done with no extra intervention. The XML library certainly can't instantiate the proper structs in memory if we don't know what they are. Do they exist solely for writing the document? To me, type safety is a more specific problem than what the XML standard deals with. Yet, it is a common enough problem to warrant a library solution. Perhaps: public typesafe_xml: public xml { }; that requires you to define the document structure in class format, and can throw runtime exceptions when a document is read in with the wrong format? Jake On 7/13/07, Oliver.Kowalke@qimonda.com <Oliver.Kowalke@qimonda.com> wrote:
I would do it over templates - than it's type safe and a part of the xml validation can be done at compile time.
typedef tag< mpl::vector< title, author > // tags mpl::vector< isbn > // atributes
article_info;
I hadn't considered compile-time type safety when I wrote my above example. However, I feel an example like this might also preclude XML features like comments. If we were to parse an existing article:
<article_info isbn="foo"> <!--Article information goes here--> <title>bar</title> <author>Testy McTest</author> </article_info>
your definition doesn't immediately make it clear that the comment, when parsed, ends up in the document tree. I may, however, just be missing something. Complicating matters, according to the standard, they can also appear within the document type declaration, so comments significantly complicate the matter: http://www.w3.org/TR/REC-xml/#sec-prolog-dtd
And the standard also lists retrieval of comment text as optional: http://www.w3.org/TR/REC-xml/#sec-comments
But I think that a Boost.XML library should support the retrieval of the text of comments.
I believe that comments could be supported with a typesafe implementation. I don't know where you see problems with comments - article_info could contain optional instances of comment-class.
Oliver _______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost