Précédent   Forum des professionnels en informatique > Bases de données > Décisions SGBD
Décisions SGBD Forum de décisions sur le choix en bases de données. Le Comparatif
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 23/02/2007, 13h36   #1
Futur Membre du Club
 
Inscription : octobre 2006
Messages : 21
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 21
Points : 17
Points : 17
Par défaut Quel SGBD gratuit sachant gérer nativement des champs XML ?

Bonjour,
je suis à la recherche d'une SGBD gratuite sachant gérer nativement des champs XML et ayant des functions capables de parser ses champs sans avoir à les extraires .
Je voulais donc savoir si quelqu'un connaissait une telle merveille
KLnikita est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/02/2007, 14h05   #2
vh
Futur Membre du Club
 
Inscription : mars 2006
Messages : 24
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 24
Points : 17
Points : 17
le XQuery devrait te convenir mais ensuite il faut trouver des programmes qui l'utilisent
j'en ai trouvé un payant sur Google et des autres gratuits sur Sourceforge
http://sourceforge.net/projects/mxquery/
http://sourceforge.net/projects/saxon/
http://sourceforge.net/projects/exist/
vh est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/02/2007, 12h38   #3
Rédacteur/Modérateur

 
Avatar de SQLpro
 
Homme Frédéric BROUARD
Expert SGBDR & SQL
Inscription : mai 2002
Messages : 10 959
Détails du profil
Informations personnelles :
Nom : Homme Frédéric BROUARD
Localisation : France

Informations professionnelles :
Activité : Expert SGBDR & SQL
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 10 959
Points : 17 793
Points : 17 793
SQL Server le fait très bien et permet le mélange des comandes XQuery et SQL dans une même requête avec en plus la notion d'intra jointure... et l'indexation des documents XML.

Il existe en version gratuite mais limité à 4 Go par base (version 2005 express)

Un exemple de traitement :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
-- création d'un schéma XML pour validation des données d'une colonne XML
 
CREATE XML SCHEMA COLLECTION XSC_DONNEES_ENTREPRISE AS N'
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:company="http://www.exemple.com/entreprise"
    targetNamespace="http://www.exemple.com/entreprise" elementFormDefault="qualified">
  <xs:element name="personnel">
    <xs:complexType>
      <xs:choice maxOccurs="unbounded">
        <xs:element name="employe">
          <xs:complexType>
            <xs:all>
              <xs:element name="nom" type="xs:string" />
            </xs:all>
            <xs:attribute name="matricule" type="xs:ID" />
          </xs:complexType>
        </xs:element>
      </xs:choice>
    </xs:complexType>
  </xs:element>
</xs:schema>'
-- cette table possède une colonne de type XML dont les données 
-- doivent se conformer au schéma ci avant
 
CREATE TABLE T_ENTREPRISE_EMPLOIS_EEP
(EEP_ID         INTEGER PRIMARY KEY IDENTITY, 
 EEP_NAME       VARCHAR(12),
 EEP_XML_DATA   XML (XSC_DONNEES_ENTREPRISE))
 
-- insertion de deux listes d'employés 
-- pour les entreprises IBM et Microsoft
 
INSERT INTO T_ENTREPRISE_EMPLOIS_EEP 
       VALUES ('IBM',
'<personnel xmlns="http://www.exemple.com/entreprise">
  <employe matricule="M0108"><nom>Jean</nom></employe>
  <employe matricule="X0017"><nom>Jacques</nom></employe>
  <employe matricule="V0009"><nom>Jules</nom></employe>
</personnel>')
 
INSERT INTO T_ENTREPRISE_EMPLOIS_EEP 
       VALUES ('Microsoft',
'<personnel xmlns="http://www.exemple.com/entreprise">
  <employe matricule="AC23"><nom>Marc</nom></employe>
  <employe matricule="VF42"><nom>Marcel</nom></employe>
</personnel>')
 
-- extraction de la liste des employés de toutes les entreprises
-- dont le nom comporte la lettre 'a'
 
WITH XMLNAMESPACES (DEFAULT 'http://www.exemple.com/entreprise')
SELECT EEP_ID AS [Clef entreprise], 
       NoeudXML.value( './@matricule', 'nvarchar(10)' ) AS [Matricule employé],
       NoeudXML.value( './nom', 'nvarchar(16)' ) AS [Nom employé]
FROM   T_ENTREPRISE_EMPLOIS_EEP
       CROSS APPLY EEP_XML_DATA.nodes('/personnel/employe') AS T(NoeudXML)
WHERE  NoeudXML.value( './nom', 'nvarchar(16)' ) LIKE '%a%'
 
Clef entreprise Matricule employé Nom employé
--------------- ----------------- ----------------
3               M0108             Jean
3               X0017             Jacques
4               AC23              Marc
4               VF42              Marcel

Dans cet exemple, la liste des employés à été extraite de chaque document xml et mise en relation par intra jointure croisée (CROSS APPLY) avec les informations des colonnes de la table. La requête mêle les langages SQL, XQuery et XPath sur des données SQL et XML…

A +
__________________
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro
http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation
* * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * *
SQLpro est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 18h21.


 
 
 
 
Partenaires

Hébergement Web