Hi Erik,

Le jeudi 16 d�cembre 2004 � 12:24 +0100, Erik Bruchez a �crit :
>  > The flow to edit a document is thus:
>  >
>  >       * initialise the model with the current document in the pipeline
>  >         referred by the "xforms" attribute of the page definition.
> 
> Using a pipeline to generate the XForms model should be used only when
> your model *must* be generated dynamically. I elaborate below.
> 
> It is important to realize that the model includes not only the
> skeleton of the instance with its default values, but also, and maybe
> even more importantly, references to schemas, and bind elements for
> calculations and validation.
> 
> Now an XForms model, whether static (XML file) or dynamic (in
> Presentation Server generated by a pipeline), is currently the only
> place where you can specify all of this, *except* for the XForms
> instance itself: because it is so important to be able to manipulate
> an XForms instance, Presentation Server gives you direct access to it
> in its Page Flow pipelines, and allows you to pass or update XForms
> instances between pages. This way instances can be created, modified,
> and updated without making any changes to the XForms model.

Hmmm... I had missed the fact that the model pipeline could be used to
initialise the instance!

> So the bottom line is that if what you want to do is just edit
> instances of XML documents that conform to a certain schema, and that
> those documents are retrieved from some kind of persistent store, you
> don't need to generate a dynamic XForms model. You can just produce
> the instance in your page model pipeline, or generate it from an
> action pipeline in a page and pass it to another page with the PFC.
> 
>  >       * save the instance model as the updated document in the pipeline
>  >         referred by the "model" or "view" attribute.
> 
> Typically, you would do this in an action pipeline, which directly
> receives the XForms instance, rather than a model pipeline.

OK.

> This is really the typical XForms scenario by the way. The BizDoc
> example (supported by the tutorial) is showing (at least that was the
> hope!) how easy and elegant it is to combine XForms, Page Flow and
> pipelines to achieve all this.

I have re-read it carefully and that's much clearer by now.

The simplest page flow I can think of to follow these principles is:

    <page path-info=".*/xform"  matcher="oxf:perl5-matcher" 
      xforms="form.xml" model="read.xpl" view="view-form.xsl">
        <action when  ="normalize-space(/*) != ''" 
            action  ="write.xpl" />
    </page>

In that example:

      * form.xml is a static XForms model with an empty instance.
      * read.xpl is a pipeline that reads the instance from the file
        (connecting the data output of the identity processor to the
        instance output).
      * "normalize-space(/*) != ''" checks if the document submitted by
        the form is empty or not.
      * write.xpl saves its "instance" input to the file

Would you say that this is cleaner and more conform to the page flow
architecture than my previous attempt? 

> Now if you are *really* trying to generate different models, for
> example because you have an external definition of your form, which
> requires producing more than just an instance, then you will want to
> use a pipeline to generate the entire model. But this should be the 1%
> of cases.

Probably the most promising, though :-) ... 

> One reason for this is that in most scenarios I can imagine, you
> wouldn't create a model based on nothing: you would want to configure
> this creation based on some kind of parameters. Now where to you get
> those? Typically, from an XForms instance... You don't have access to
> any in an XForms model pipeline, because you are just in the process
> of creating the main XForms instance for the current page, so you are
> stuck using request parameters, or who knows what. So again, if
> possible, this should be reserved to very specific cases.

Yep.

>  > The tests I have done seems to show that this is working but I was
>  > wondering if these two actions could be done in the same pipeline
>  > (this would let us centralise the definition of the "backend"
>  > related to the form).
> 
> You mean reading the instance from and writing it to a persistent
> store in the same pipeline? I would rather have one pipeline doing one
> function, and the other doing the other. That's how the BizDoc example
> works, for example. In fact, it has a data access layer with separate
> pipelines for creating, reading, updating and deleting (CRUD)
> documents, as well as providing a listing of all documents.
> 
>  > As I understand from the answers I have got so far, this is not
>  > possible:
>  >
>  >       * the purpose of the first pipeline is to build the model, the
>  >         instance isn't available at that moment and thus it's too early
>  >         to save it.
>  >       * In the second pipelines (where the instance is available), the
>  >         model has already be built and thus it's too late to load the
>  >         initial values.
> 
> Now does my rambling above shed some light on the general problem, or
> have I made everything even blurrier? ;-)

No, that's much clearer by now.

Thanks!

Eric

-- 
Curious about Relax NG? Read my book online.
                                   http://books.xmlschemata.org/relaxng/
------------------------------------------------------------------------
Eric van der Vlist       http://xmlfr.org            http://dyomedea.com
(ISO) RELAX NG   ISBN:0-596-00421-4 http://oreilly.com/catalog/relax
(W3C) XML Schema ISBN:0-596-00252-1 http://oreilly.com/catalog/xmlschema
------------------------------------------------------------------------



-------------------------------------------------------
SF email is sponsored by - The IT Product Guide
Read honest & candid reviews on hundreds of IT Products from real users.
Discover which products truly live up to the hype. Start reading now.
http://productguide.itmanagersjournal.com/
_______________________________________________
orbeon-user mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/orbeon-user

Reply via email to