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 webautoma...@gmail.com

-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to