At 12:46 pm +0100 3/12/01, Stefano Mazzocchi wrote:
>Jeremy Quinn wrote:

>> How do you want to specify where the {prepend|replace|append} goes, with an
>> XPath?
>
>At the API level:
>
> Location loc = database.getLocation(xpath);
>
>then you pass the location object with what to insert (using an
>outputstream or a contentHandler)

Yea, sorry, I am trying to understand it from a the point of view of the
SiteMap, probably jumping the gun ....

<snip/>

>> Incedentally, what you were writing about earlier, having versioning as a
>> side effect of using XMLDB, still puzzles me.
>
>Please explain.

You have definitely picked up on a large chunk of what I meant, below and I
agree with a lot of what you say, however, I think there is more ....

>> While I find these capabilities very important, will it ever be possible to
>> come up with a versioning scheme that suits everyone (granularity of
>> information again).
>
>Oh, I don't know about "everyone" but I'm sure I won't stop pushing
>until it suits my personal needs. If everybody does this, it will suits
>"everyone involved", which is normally good enough (well, it has been
>around here so far).

I agree about the collaboration bit ;)

But I think you may have missed the point about granularity, one of the
reasons I think a one-size-fits-all scheme for versioning would be
difficult, would be that people will have different legitimate requirements
for the granularity of the versioning.

For instance, if I have long articles stored as single blobs and someone
edits a few words here and there, a couple of times, I'd find it far more
efficient to version at say the paragraph level rather than the whole
document.

I was not sure this was implied in your original email.


>> Or should versioning be something that is added at the "application" level?
>> ie. it is not achieved by special hidden views of the DB but through the
>> XML Schema and the XPaths that are used to access it?
>>
>>         /article/version[@status='publishable' and @latest='true']
>
>This is a very good question.
>
>In a perfect world, we would have a version-agnostic db engine down
>below and a versioning wrapper that would transform/adapt queries to
>take versioning into consideration. Something like
>
> +----------------------------+
> | Versioning/Workflow XML DB |
> |  +-----------------------+ |
> |  | Native XML DB         | |
> |  +-----------------------+ |
> +----------------------------+
>
>So, you would ask the CMS for
>
> //article//author[@name="Jeremy"]
>
>and the versioning layer will adapt this into
>
> //article//author[@name="Jeremy" and @cms:status="published" and
>@cms:latest='true']
>
>I see two problems:
>
> 1) performance

This is all potentially cacheable, no?

> 2) space

Why keep all old versions in the "active" storage area?

If you only need a couple of versions like the current one and any active
under-development workflow versions, then off-load the rest to cvs://
javaspace:// etc.

Hopefully the wrapper/toolkit approach can provide a way for people to put
together their own appropriate solution

>(the two are related)
>
>I mean, versioning and workflow could simply be considered metadata.
>Since the native XML DB must be namespace capable in both elements and
>attributes, we could use specific namespaces to indicate our metadata
>(both as wrapping elements or as marking attributes).
>
>My perception is that my making these metadata built-in into the DB,
>query performance would be faster and database size would be reduced.
>
>But at the same time, as a first implementation, it's probably the way
>to go to show off the power of such a concept.
>
>> >> That said, yes I am very interested in finding an alternative to XUpdate,
>> >> but please do not forget that some of what it does is useful and IMHO
>> >> relevant.
>> >
>> >Ok, point taken and stored.
>>
>> excellent
>>
>> >Still, I think XUpdate is totally useless as a language since all the
>> >functionality should be placed at the API level.
>>
>> I agree with you about the language!
>
>good
>
>> Maybe I'll have a go at writing a test "FileResourceWriterTransformer", to
>> investigate the process of taking input from the user, having it modify a
>> Resource using XSLT then writing it out again.
>
>Yeah, it might give you (and us) more insights and ideas.
>
>Anyway, I'll rethink about adding versioning/workflow information as
>metadata on existing native DB systems and understand how complex would
>that be to implement and how that would impact updating/inserting
>content.

I have been experimenting with a further abstraction layer I call LinkMap.

The LinkMap represents a site (or subsite) structural heirarchy using
XLinks which implement a mapping between named resources in the site and
internal pipelines in Cocoon. This is how it is used in the SiteMap:

                        <map:match pattern="*">
                                <map:generate src="xlink/linkmap.xml"/>
                                <!-- setup for XInclude -->
                                <map:transform src="xsl/linkmap-cincl.xsl">
                                        <map:parameter name="id" value="{1}"/>
                                        <map:parameter name="context" 
value="cocoon:/"/>
                                </map:transform>
                                <!-- import document and linkbase -->
                                <map:transform type="cinclude"/>
                                <map:transform src="xsl/linkmap-xlink.xsl"/>
                                <map:transform src="xsl/linkmap-html.xsl"/>
                                <map:serialize type="html"/>
                        </map:match>

(I'll write an RT about it if you like :)
I get automatic link glossaries and page context stuff like a site tree,
page path and local nav.

I was thinking that either XLinks in your XML:DB, or some kind of link
glossary idea that maps static "url names" to the currently valid asset
somewhere, might be easier and provide a point of human intervention (or
control).

That is to say, instead of keeping all versioning info together in one
expensive to extract parcel have a clean version in your active serving
datastore and a way of either moving versions around or add a further layer
of abstraction and map that url to a different version.


Anyway, enough for now, I've got to get back to work =:-O


regards Jeremy

-- 
   ___________________________________________________________________

   Jeremy Quinn                                           Karma Divers
                                                       webSpace Design
                                            HyperMedia Research Centre

   <mailto:[EMAIL PROTECTED]>                    <http://www.media.demon.co.uk>
   <phone:+44.[0].20.7737.6831>             <pager:[EMAIL PROTECTED]>

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, email: [EMAIL PROTECTED]

Reply via email to