Subject: RE: Unix login name and full name into output? From: "Didier PH Martin" <martind@xxxxxxxxxxxxx> Date: Sat, 14 Aug 1999 07:06:32 -0400 |
Hi Brandon: Brandon said: -------------------------------------------- In theory (if my understanding of OpenJade's internals is correct), this should be quite simple. OpenJade supposedly uses some type of generic interface to groves. SPGrove is an in-memory implementation of this interface based on SP. Could we not create a new implementation of this interface which would pull in the appropriate information when requested via SDQL? My question would be what OpenJade's abilities are as far as interfacing to multiple grove implementations in a single session. In other words, could the object returned by (environment-grove-root) (or whatever we call it) somehow indicate which grove implementation serves that grove? Didier says: ------------------------------------------- I Have checked the spgrove package and more particularly the grovebuilder.cxx file. Yes you are right, this implies that we create a new node type (ex: environment) having as child the (grove-root) element. Talking of grove, we discovered that there is indeed some services available to update the grove. These services could be useful for the transformation part or for custom grove plan based on grove plans. This would require a grove plan interpreter able to dynamically create a grove in accordance to this grove plan. Thus, a grove built from a grove plan requires an interpreter able to decode property sets declarations. Such interpreter need to process SP parser events and update the grove accordingly. The code used to update the grove is the chunk series of struct and classes having this inheritance (ref: groveBuilder.cxx): Chunk (struct) |__ LocChunk (struct) |__ ParentChunk (struct) |__ ElementChunk (class) So, the class to use is ElementChunk having the following members: - setNodePtrFirst which is used to set a node' content ( data, element, or node list) To add to the collection of existing items a new environmentobject, we need to create a new grove element (packaged as a class). When the class is instantiated it pulls the environments variables from the system and keep that in class's internal variables. Then, when a SQL request is made on the grove manager for an "environment" node type, the content is accessible. Matthias, included in the OpenJade to do list support for grove plans, this implies that the grove engine, could be parameterized with property sets. This is a very powerful capability because, if the grove engine can be set to any kind of property set, then we can create new objects and, therefore, create more significant grove objects. Steve Newcomb reported that groves have been created for the legal field. This implies that you can query not only a generic object like a sgml-document node but also a more semantically significant node object like a legal-document. This latter instance created from a class which itself inherits from the sgml-document class. This has major impacts on the query language part of DSSSL. Thus, if we can set grove plans, we can build the infrastructure for semantically rich query language based on the domain language instead of the generic static and more general purpose grove plan. In the OpenJade team, we are slowly gaining more knowledge about the grove engine and we are studying how to modify it so that the grove could be dynamically defined by a grove plan. If we can reach that point, the next step is to provide an interface to external grove engines based on different memory schema than the local heap (i.e. relational database, object data base, directory service, etc...). Imagine for a second, the impacts of such grove manager. We would be able to query a directory service as you would query a document, or we would be able to format an invoice or statement directly form a relational database (this is a major impact for enterprises having their ERP system already based on relational databases). We did not set any priority yet, just a to do list. However, we agreed that our first goal is to fill the missing gaps in the actual core language and in some backend engines. Matthias is working on the core language and me on the html backend. Matthias goal is to add support for the corte language missing constructs. My goal is to have a single script which would use the same flow objects and format a SGML or XML document into: a) html, b) rtf, c) pdf, d)MIF and have these documents respectively rendered in: a) a html 4 browser, b) word, c) Adobe pdf viewer, d) framemaker. Having this would mean that we have reached to a certain point the goal of "write once" "output everywhere", or at least having progressed toward that goal. To reach that goal I need to bring the html backend to the level of the other backends and add support for tables, links (on url instead of idrefs, etc...) As a parallel activity, we have to slowly build the DSSSL-2 draft (this task is not an OpenJade task but more an ISO task - but based on this community experience and wisdom). Like said earlier, we are just probing the needs and are lurking the good things learned in other languages like for instance XSL. XSL made a proof of concept for template based processing and the leverage of their kind of processing which allows transformations or a descriptive way of programming a style sheet. Ken Holman one day told that this is a kind of programming by example. This is indeed a powerful paradigm. We can study carefully is this kind of capability could not be included in DSSSL. At a certain point, the authors of DSSSL where thinking seriously to include such feature into DSSSL. We can at least make our homework and see how we can integrate template based notation in to the DSSSL framework. Also, James started the work to simplify the query language (ref: http://www.netfolder.com/OpenJade/dsssl2.htm#ExtendedPatterns ), the result of this work is now found mostly in XPath. We can see how we can harmoniously integrate a new kind of query-expression in DSSSL-2. Jeames made interesting suggestions base on grove navigation (parent, sibling, child, document, processing-instruction, etc...). The suggested extended pattern was mostly for element pattern match and not necessarily for queries. However, this could also be used in the context of queries because the operators are based on the grove. (NOTE: I hope that this time, people reading the messages a bit too fast won't make comments about our inability to discern between the dsssl2 features set of OpenJade and the DSSSL-2 next generation specifications). Very recently, James made an announcement for a new XT version. Something in it grabbed my attention: Support for single/multiple input and single/multiple output. Said differently, James created an extension allowing xml document aggregation (multiple input) and the creation of multiple documents (multiple output). A very recent thread on this list just showed a need for such feature. I played with XT to see how this behaves and I could create a batch processing domain language. The good thing is that this batch processing has the potential to be platform independent and run as well on Linux as Windows (no platform dependent script to do, instead a standard based language to express a batch file). This reinforce me to think that this is a good feature. Now, if this kind of feature is implemented in OpenJade, we have the advantage of our "write once" "output everywhere". Thus, SGML/XML documents could be transformed in more than one output format. I only I got this for the demo next week in Montreal. But now the goal could be to get this for the demo next year. This feature also depend on the grove. So, it seems that the give manage is at the hart of several improvements: a) grove plans and semantically rich groves and therefore semantically rich queries. This implies a dynamic grove instead of a static grove. For example, a grove plan may state that a legal-document class inherit from a sgml-document class and this would translate into new properties and then, queries possible on these properties. b) Grove memory management for multiple input/multiple output. A better memory management (i.e. garbage collection) of groves is required for this kind of processing. Up to now, OpenJade is missing document or file level operators or functions. With this kind of feature, OpenJade would have the capability to output more than one document in more than one format. This is not negligible. c) Template based and pull processing needs also good grove management. However, if we can add semantically rich groves (created with custom grove plans) to OpenJade, we also provide a way to create domain dependant queries. Thus, particular domain languages could share common grove plans and then query constructs (i.e. particular to declared additional or complementary properties). This is not even dreamed yet by the XSL world which depend on DOM and this latter is light years behind the grove concept as demonstrated by Paul Prescod (ref: http://www.prescod.net/groves/shorttut/) CALL FOR HELP: If you have C++ skill, we need help. If some people would just give a bit of time to help us build the next generation OpenJade, this would be very appreciated. regards Didier PH Martin mailto:martind@xxxxxxxxxxxxx http://www.netfolder.com DSSSList info and archive: http://www.mulberrytech.com/dsssl/dssslist
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: Unix login name and full name i, Brandon Ibach | Thread | RE: Unix login name and full name i, Avi Kivity |
Re: About XML to multiple language/, Karl Eichwalder | Date | Groves processing in OpenJade, Didier PH Martin |
Month |