Xquery et sql

Résolu
Bonjour,

J'essaye actuellement d'interroger une base depuis une xquery cependant je ne sais pas du tout comment m'y prendre et j'avoue que même après avoir passer 1 heure à lire de la doc je ne sais pas comment amorcer des choses toutes simples comme

-> Spécifier l'adresse de la base
-> récupérer le resultat d'une requete
-> ecrire une requete.

Par exemple j'ai le cas d'exemple suivant.
J'ai une base qui contient une table 'transcod' dans cette table il y a 4 colonnes (tr_id : integer, tr_cod : char(30), tr_value : char(30), tr_type : char(30)).

Côté Xquery j'ai en entrée un fichier xml de cette définition :
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <xsd:element name="SourceMessage">
    	<xsd:complexType>
            <xsd:sequence>
    			<xsd:element name="firstName">
        			<xsd:simpleType>
            			<xsd:restriction
                			base="xsd:string">
               			</xsd:restriction>
        			</xsd:simpleType>
   				</xsd:element>
   				<xsd:element name="name">
        			<xsd:simpleType>
            			<xsd:restriction
                			base="xsd:string">
               			</xsd:restriction>
        			</xsd:simpleType>
   				</xsd:element>
   				<xsd:element name="country">
        			<xsd:simpleType>
            			<xsd:restriction
                			base="xsd:string">
               			</xsd:restriction>
        			</xsd:simpleType>
   				</xsd:element>
   				<xsd:element name="currency">
        			<xsd:simpleType>
            			<xsd:restriction
                			base="xsd:string">
               			</xsd:restriction>
        			</xsd:simpleType>
   				</xsd:element>
			</xsd:sequence>
        </xsd:complexType>
    </xsd:element>
</xsd:schema>


j'aimerai en fait faire du passe plat au niveau de ma xquery mais pouvoir modify mes country code et currency code qui sont répertorié en base.
Exemple : la base a une ligne
1, '1','France','country'
2,'1','EUR','currency'

dans le xml j'ai
<SourceMessage>
   <firstName>Test</firstName>
   <lastName>Test</lastName>
   <country>1</country>
   <currency>1</currency>
</SourceMessage>


et j'aimerai le transformer en
<SourceMessage>
   <firstName>Test</firstName>
   <lastName>Test</lastName>
   <country>France</country>
   <currency>EUR</currency>
</SourceMessage>

Grâce à ma xquery.. et donc en allant rechercher les valeurs en base de donnée..
Quelqu'un pourrait m'expliquer ? ou me renvoyer vers une doc explicite ?parce que je n'ai réellement rien trouvé avec un exemple concret... =/

Merci d'avance

1 réponse

  1. J'ai résolu partiellement mon problème il fallait déjà créer un jndi datasource pour pointer vers ma base puis m'en servir dans ma requete.

    Dans la requete que j'ai créée :
    fn-bea:execute-sql(
                		'ds.MyJDBCDataSource',
        				xs:QName('countryCode'),
        				'select tr_value from TRANSCODIFICATION.TRANSCOD where tr_code=? AND tr_type=?',
    		    		data($sourceMessage1/countryCode/text()),
        				xs:string('country')
    

    j'obtiens une erreur qui me dit que la fonction n'existe pas ou que le nombre de paramètres est mauvais...
    là je suis à sec u_u je trouve pas pourquoi workshop ne reconnait pas la fonction vu que c'est à la base lui qui me l'a proposé... =/
    0