Insertion du plabn comptable général dans la base de données eXist

View: New views
2 Messages — Rating Filter:   Alert me  

Insertion du plabn comptable général dans la base de données eXist

by Myriam-2 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

- <#> Bonjour,

A partir d'un fichier XML basique contenant la liste des comptes du plan
comptable général, je souhaiterais insérer ce plan comptable dans ma
base de données eXist. Dans cette base, chaque compte sera un document à
part entière (chaque compte ayant un "docid").

Structure du fichier .xml en entrée :

<PCG>
     <Compte>
          <num>0</num>
          <name>Plan comptable</name>
          <treenodparent />
  </Compte>
     <Compte>
          <num>1</num>
          <name>COMPTES DE CAPITAUX</name>
          <treenodparent>0</treenodparent>
  </Compte>
...
</PGC>


Voici la requête XQuery que j'ai écrite pour faire ces insertions, à
partir de ce document (Plan.xml), après quelques remanipulations des
données :


let $pcg := doc('/db/Plan.xml')

for $account in $pcg/PCG/Compte

let $meta :=

<meta>

<doctype>org.openbluelab.financial.generalAccounting.Account</doctype>

<author>init</author>

<Account>

<number>{$account/num/text()}</number>

<name>{$account/name/text()}</name>

<Account>

<under-account>{$account/treenodparent/text()}</under-account>

</Account>

</Account>

</meta>

let $md5 := util:md5($meta)


let $doc :=

<document>

<docid>{$md5}</docid>

{$meta}

<versions/>

</document>


return update insert $doc into
collection('/db/openbluelab/demo.openbluelab.org')


Ceci fonctionnerait-il correctement? Ne faut-il pas créer un fichier par
$doc, et insérer ces fichiers dans la base?


Merci d'avance.

Myriam







Re: Insertion du plabn comptable général dans la base de données eXist

by Myriam-2 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Il faut bien créer un fichier par document '$doc' à insérer dans la base.
Voici la requête exacte pour insérer le plan comptable dans la base à
partir du fichier Plan.xml. La structure des données est modifiée et
directement insérée dans les fichiers de la base de données :

let $pcg := doc('/db/Plan.xml')

for $account in $pcg/PCG/Compte

return

    let $meta :=

    <meta>

       
<doctype>org.openbluelab.financial.generalAccounting.Account</doctype>

        <author>system</author>

        <Account>

            <number>{$account/num/text()}</number>

            <name>{$account/name/text()}</name>

            <Account>

               
<underAccount>{$account/treenodparent/text()}</underAccount>

            </Account>

        </Account>

    </meta>

    let $md5 := util:md5($meta)

    let $doc :=

        <document>

            <docid>{$md5}</docid>

            {$meta}

        <versions/>

    </document>

let $collection := '/db/openbluelab/demo.openbluelab.org'

return xmldb:store($collection, $md5, $doc)



Merci à l'équipe d'OpenBlueLab pour l'aide apportée ;-)

Myriam


Myriam a écrit :

> - <#> Bonjour,
>
> A partir d'un fichier XML basique contenant la liste des comptes du
> plan comptable général, je souhaiterais insérer ce plan comptable dans
> ma base de données eXist. Dans cette base, chaque compte sera un
> document à part entière (chaque compte ayant un "docid").
>
> Structure du fichier .xml en entrée :
>
> <PCG>
>     <Compte>
>          <num>0</num>
>          <name>Plan comptable</name>
>          <treenodparent />
>  </Compte>
>     <Compte>
>          <num>1</num>
>          <name>COMPTES DE CAPITAUX</name>
>          <treenodparent>0</treenodparent>
>  </Compte>
> ...
> </PGC>
>
>
> Voici la requête XQuery que j'ai écrite pour faire ces insertions, à
> partir de ce document (Plan.xml), après quelques remanipulations des
> données :
>
>
> let $pcg := doc('/db/Plan.xml')
>
> for $account in $pcg/PCG/Compte
>
> let $meta :=
>
> <meta>
>
> <doctype>org.openbluelab.financial.generalAccounting.Account</doctype>
>
> <author>init</author>
>
> <Account>
>
> <number>{$account/num/text()}</number>
>
> <name>{$account/name/text()}</name>
>
> <Account>
>
> <under-account>{$account/treenodparent/text()}</under-account>
>
> </Account>
>
> </Account>
>
> </meta>
>
> let $md5 := util:md5($meta)
>
>
> let $doc :=
>
> <document>
>
> <docid>{$md5}</docid>
>
> {$meta}
>
> <versions/>
>
> </document>
>
>
> return update insert $doc into
> collection('/db/openbluelab/demo.openbluelab.org')
>
>
> Ceci fonctionnerait-il correctement? Ne faut-il pas créer un fichier
> par $doc, et insérer ces fichiers dans la base?
>
>
> Merci d'avance.
>
> Myriam
>
>
>
>
>
>