Hello, people. I am looking for community feedback about my
ideas for XML binding & persistence library:
XML binding & persistence library
Description: object-oriented library for mapping XML file
structure, binding to PHP 5 class. Library would provide
functionality for using XML based entity descriptions,
described in XML Schema, to perform data manipulations(CRUD
facility), and would use described entity relations for
persisting XML entries. Association and/or aggregation would
represent O-O abstractions for XML entity relations. For
performing queries would be used either on-the-fly or
automatically generated translation of XML entity properties,
characteristics to XPath expressions, which can give a
performance boost for production (read: non-development)
usage. Also should be implemented functionality for building
XML formatters from XML Schema, which itself avoids a lot of
script execution speed reduction for preparing & splitting
together XML tree data structures
Main implementation reasons and usage opportunities:
*
Most of XML structures represent complex entries, where
both nested tags and tag properties represent characteristics
and behavior. This usually results in escalation of
complexity of XML interpretation rules, code will be more
heavy. Additional development penalty is that often such
rules are less similar against each other – amount of
reusable code is very low. Also data entries, related to
entities with deeply nested relations, would require
manipulation of a group of files as a single transaction to
provide persistence; normally there is no way to reuse XPath
queries in a way, that is entry based
1.
I have motivation to go even farther: iterators
would act as a fork, moving back an forth (development stage)
threw a set of tags and/or tag properties. Iterators can
become reusable in different projects, for different XML
structures, simply changing naming convention (read: the way
how the tag names, with respect to W3C qualified name
features)
2. Can help a lot in translating XML binding code
threw XPath expressions (because of specific W3C
specification rules, which supposed to query all matched
entries by default). Even possible to force relations in
generated XPath to speed up querying – a complex expression
can specify one rules before another (for example, if
specific ancestor in XML tree would arrive less often then
some tag property, it can be possible to mention ancestor
requirement before property requirement – less line count
would be iterated*)
*
You could use PHP 5 reflection and O-O features of PHP
5 to describe classes. And after that you can simply generate
required XML Schema. Awesome for using non-DOM (read: SAX)
libraries at production environment, especially if there
would be a mix of PHP 5 code and, say, Java code (by the way
– code generator can produce code for other languages, if
necessary). Good for situations where you should develop some
administration tools with web interface in PHP 5, which would
operate on Java software XML based configuration files (for
example, XML configuration file for Java message broker)
*
Of course, the well known mixing of database
mapping(ORM) and XML mapping. Would be awesome if there would
be an import of ORM classes to XML related ones and vice
versa – more flexible RDBMS table structure. Awesome for
complex storage manipulations (storing objects and/or their
entities in XML and RDBMS, without an performance penalty of
forcing RDBMS to format XML for you). And, probably the most
awesome here – you can move data from XML storage to RDBMS
and vice versa for balancing load performance, especially if
data characteristics can vary a lot. Generation of
performance tests can be added if necessary
*
XML web site maps. Yea, those are often in XML. Also
their CMS systems, that can manage site structure threw XML.
And because MVC frameworks are most wide solution – the site
map itself is referred (directly or not) to controller class
– action name pairs. As a result – it is hard to forget about
automatic testing, that is where PHPUnit can come up. Main
idea – use site map as a prototype for defining more complex
mapping. Some kind of XML tree with entities described
(entries are referred to controller-index pairs, remember),
where entities described in a test feature driven manner; you
can force your testing automation with a guaranty of covering
necessary QA features, even connect QA software to
development tools. Note: DOM library would be used at
background due to complexity of testing configuration
*
And, of course, the famous RESTful Web services ;) At
least can help in data deduplication...
Thanks. John aka webautomator@gmail.com
Hello, people. I am looking for community feedback about my
ideas for XML binding & persistence library:
<skip…>
Are you thinking about implementing it as some kind of extension? or about php-code?
or just reusable C-library with bindings for PHP?