| 9 | | <title>Deprecation notice</title> |
|---|
| 10 | | <para> |
|---|
| 11 | | From PostgreSQL 8.3 on, there is XML-related |
|---|
| 12 | | functionality based on the SQL/XML standard in the core server. |
|---|
| 13 | | That functionality covers XML syntax checking and XPath queries, |
|---|
| 14 | | which is what this module does as well, and more, but the API is |
|---|
| 15 | | not at all compatible. It is planned that this module will be |
|---|
| 16 | | removed in PostgreSQL 8.4 in favor of the newer standard API, so |
|---|
| 17 | | you are encouraged to try converting your applications. If you |
|---|
| 18 | | find that some of the functionality of this module is not |
|---|
| 19 | | available in an adequate form with the newer API, please explain |
|---|
| 20 | | your issue to pgsql-hackers@postgresql.org so that the deficiency |
|---|
| 21 | | can be addressed. |
|---|
| | 9 | <title>Notice d'obsolescence</title> |
|---|
| | 10 | <para> |
|---|
| | 11 | à partir de PostgreSQL 8.3, les fonctionnalités XML basées sur le standard |
|---|
| | 12 | SQL/XML sont dans le cœur du serveur. Cela couvre la vérification de la |
|---|
| | 13 | syntaxe XML et les requêtes XPath, ce que fait aussi ce module (en dehors |
|---|
| | 14 | d'autres choses) mais l'API n'est pas du tout compatible. Il est prévu |
|---|
| | 15 | que ce module sera supprimé avec PostgreSQL 8.4 pour faire place à une |
|---|
| | 16 | nouvelle API standard, donc vous êtes encouragés à convertir vos |
|---|
| | 17 | applications. Si vous trouvez que des fonctionnalités de ce module ne sont |
|---|
| | 18 | pas disponibles dans un format adéquat avec la nouvelle API, merci |
|---|
| | 19 | d'expliquer votre problÚme sur la liste pgsql-hackers@postgresql.org pour |
|---|
| | 20 | que ce problÚme soit corrigé. |
|---|
| 43 | | This parses the document text in its parameter and returns true if the |
|---|
| 44 | | document is well-formed XML. (Note: before PostgreSQL 8.2, this function |
|---|
| 45 | | was called xml_valid(). That is the wrong name since validity and |
|---|
| 46 | | well-formedness have different meanings in XML. The old name is still |
|---|
| 47 | | available, but is deprecated and will be removed in 8.3.) |
|---|
| | 43 | Ceci analyse un document fourni comme argument au format text et |
|---|
| | 44 | renvoie true si le document est du XML bien formé (notez qu'avant |
|---|
| | 45 | PostgreSQL 8.2, cette fonction était appelée xml_valid(). C'est un |
|---|
| | 46 | mauvais nom car un document bien formé n'est pas forcément un |
|---|
| | 47 | document valide en XML. L'ancien nom est toujours disponible mais |
|---|
| | 48 | est obsolÚte et sera supprimé en 8.3.) |
|---|
| 144 | | This is a table function which evaluates a set of XPath queries on |
|---|
| 145 | | each of a set of documents and returns the results as a table. The |
|---|
| 146 | | primary key field from the original document table is returned as the |
|---|
| 147 | | first column of the result so that the resultset from xpath_table can |
|---|
| 148 | | be readily used in joins. |
|---|
| 149 | | </para> |
|---|
| 150 | | <para> |
|---|
| 151 | | The function itself takes 5 arguments, all text. |
|---|
| | 151 | Ceci est une fonction <acronym>SRF</acronym> qui évalue un ensemble |
|---|
| | 152 | de requêtes XPath sur un ensemble de documents et renvoie les résultats |
|---|
| | 153 | comme une table. Le champ de clé primaire de la table des documents est |
|---|
| | 154 | renvoyé comme premiÚre colonne des résultats pour que les résultats |
|---|
| | 155 | puissent être utilisés dans des jointures. |
|---|
| | 156 | </para> |
|---|
| | 157 | <para> |
|---|
| | 158 | La fonction prend cinq arguments, tous de type text. |
|---|
| 221 | | so those parameters can be *anything* valid in those particular |
|---|
| 222 | | locations. The result from this SELECT needs to return exactly two |
|---|
| 223 | | columns (which it will unless you try to list multiple fields for key |
|---|
| 224 | | or document). Beware that this simplistic approach requires that you |
|---|
| 225 | | validate any user-supplied values to avoid SQL injection attacks. |
|---|
| | 229 | Donc les paramÚtres peuvent être tout ce qui est valide dans ces |
|---|
| | 230 | emplacements particuliers. Le résultat de ce SELECT a besoin de renvoyer |
|---|
| | 231 | exactement deux colonnes (ce qu'il fera sauf si vous essayer d'indiquer |
|---|
| | 232 | plusieurs champs pour la clé ou le document). Cette approche simpliste |
|---|
| | 233 | implique que vous validiez avant tout valeur fournie par un utilisateur |
|---|
| | 234 | pour éviter les attaques par injection de code SQL. |
|---|
| 248 | | The AS clause defines the names and types of the columns in the |
|---|
| 249 | | virtual table. If there are more XPath queries than result columns, |
|---|
| 250 | | the extra queries will be ignored. If there are more result columns |
|---|
| 251 | | than XPath queries, the extra columns will be NULL. |
|---|
| 252 | | </para> |
|---|
| 253 | | |
|---|
| 254 | | <para> |
|---|
| 255 | | Note that I've said in this example that pages is an integer. The |
|---|
| 256 | | function deals internally with string representations, so when you say |
|---|
| 257 | | you want an integer in the output, it will take the string |
|---|
| 258 | | representation of the XPath result and use PostgreSQL input functions |
|---|
| 259 | | to transform it into an integer (or whatever type the AS clause |
|---|
| 260 | | requests). An error will result if it can't do this - for example if |
|---|
| 261 | | the result is empty - so you may wish to just stick to 'text' as the |
|---|
| 262 | | column type if you think your data has any problems. |
|---|
| 263 | | </para> |
|---|
| 264 | | <para> |
|---|
| 265 | | The select statement doesn't need to use * alone - it can reference the |
|---|
| 266 | | columns by name or join them to other tables. The function produces a |
|---|
| 267 | | virtual table with which you can perform any operation you wish (e.g. |
|---|
| 268 | | aggregation, joining, sorting etc). So we could also have: |
|---|
| | 257 | La clause AS définit les noms et types des colonnes de la table virtuelle. |
|---|
| | 258 | S'il y a plus de requêtes XPath que de colonnes résultats, les requêtes |
|---|
| | 259 | supplémentaires seront ignorées, S'il y a plus de colonnes résultats que |
|---|
| | 260 | de requêtes XPath, les colonnes supplémentaires seront NULL. |
|---|
| | 261 | </para> |
|---|
| | 262 | |
|---|
| | 263 | <para> |
|---|
| | 264 | Notez que j'ai dit dans cet exemple que pages est un entier (integer). La |
|---|
| | 265 | fonction gÚre en interne les représentations textes, donc quand vous |
|---|
| | 266 | dites que vous voulez un entier en sortie, il prendre la représentation |
|---|
| | 267 | texte du résultat XPath et utilisera les fonctions en entrée de |
|---|
| | 268 | PostgreSQL pour la transformer en entier (ou tout type que la clause AS |
|---|
| | 269 | réclame). Vous obtiendrez une erreur s'il ne peut pas le faire - par |
|---|
| | 270 | exemple si le résultat est vide - donc rester sur du texte est préférable |
|---|
| | 271 | si vous pensez que vos données peuvent poser problÚme. |
|---|
| | 272 | </para> |
|---|
| | 273 | <para> |
|---|
| | 274 | L'instruction SELECT n'a pas besoin d'utiliser * seule, elle peut référencer |
|---|
| | 275 | les colonnes par nom ou les joindre à d'autres tables. La fonction |
|---|
| | 276 | produit une table virtuelle avec laquelle vous pouvez réaliser toutes les |
|---|
| | 277 | opérations que vous souhaitez (c'est-à -dire agrégation, jointure, tri, etc.) |
|---|
| | 278 | Donc nous pouvons aussi avoir : |
|---|
| 286 | | <title>Multivalued results</title> |
|---|
| 287 | | <para> |
|---|
| 288 | | The xpath_table function assumes that the results of each XPath query |
|---|
| 289 | | might be multi-valued, so the number of rows returned by the function |
|---|
| 290 | | may not be the same as the number of input documents. The first row |
|---|
| 291 | | returned contains the first result from each query, the second row the |
|---|
| 292 | | second result from each query. If one of the queries has fewer values |
|---|
| 293 | | than the others, NULLs will be returned instead. |
|---|
| 294 | | </para> |
|---|
| 295 | | <para> |
|---|
| 296 | | In some cases, a user will know that a given XPath query will return |
|---|
| 297 | | only a single result (perhaps a unique document identifier) - if used |
|---|
| 298 | | alongside an XPath query returning multiple results, the single-valued |
|---|
| 299 | | result will appear only on the first row of the result. The solution |
|---|
| 300 | | to this is to use the key field as part of a join against a simpler |
|---|
| 301 | | XPath query. As an example: |
|---|
| | 296 | <title>Résultats à plusieurs valeurs</title> |
|---|
| | 297 | <para> |
|---|
| | 298 | La fonction xpath_table suppose que les résultats de chaque requête |
|---|
| | 299 | XPath ramÚnent plusieurs valeurs, donc le nombre de lignes renvoyées |
|---|
| | 300 | par la fonction pourrait ne pas être le même que le nombre de documents |
|---|
| | 301 | en entrée. La premiÚre ligne renvoyée contient le premier résultat de |
|---|
| | 302 | chaque requête, la deuxiÚme le second résultat de chaque requête. Si |
|---|
| | 303 | une res requêtes a moins de valeur que les autres, NULL sera renvoyé. |
|---|
| | 304 | </para> |
|---|
| | 305 | <para> |
|---|
| | 306 | Dans certains cas, un utilisateur saura qu'une requête XPath renverra |
|---|
| | 307 | seulement un seul résultat, peut-être un identifiant unique de |
|---|
| | 308 | document) - si elle est utilisée avec une requête XPath renvoyant plusieurs |
|---|
| | 309 | résultats, le résultat sur une ligne apparaîtra seulement sur la premiÚre |
|---|
| | 310 | ligne du résultat. La solution à cela est d'utiliser le champ clé pour |
|---|
| | 311 | une jointure avec une requête XPath. Comme exemple : |
|---|
| 395 | | This function appplies the XSL stylesheet to the document and returns |
|---|
| 396 | | the transformed result. The paramlist is a list of parameter |
|---|
| 397 | | assignments to be used in the transformation, specified in the form |
|---|
| 398 | | 'a=1,b=2'. Note that this is also proof-of-concept code and the |
|---|
| 399 | | parameter parsing is very simple-minded (e.g. parameter values cannot |
|---|
| 400 | | contain commas!) |
|---|
| 401 | | </para> |
|---|
| 402 | | <para> |
|---|
| 403 | | Also note that if either the document or stylesheet values do not |
|---|
| 404 | | begin with a < then they will be treated as URLs and libxslt will |
|---|
| 405 | | fetch them. It thus follows that you can use xslt_process as a means |
|---|
| 406 | | to fetch the contents of URLs - you should be aware of the security |
|---|
| 407 | | implications of this. |
|---|
| | 404 | Cette fonction applique la feuille de style XSLT au document et renvoie |
|---|
| | 405 | le résultat transformé. Le paramÚtre paramlist est une liste de paramÚtres |
|---|
| | 406 | à utiliser dans la transformation, spécifiée sous la forme |
|---|
| | 407 | 'a=1,b=2'. Notez que c'est un code non stable et que l'analyse des |
|---|
| | 408 | paramÚtres est simpliste (c'est-à -dire que les valeurs des paramÚtres ne |
|---|
| | 409 | peuvent pas contenir de virgules !) |
|---|
| | 410 | </para> |
|---|
| | 411 | <para> |
|---|
| | 412 | De plus, notez que si le document ou les valeurs de la feuille de style |
|---|
| | 413 | ne commencent pas avec un <, ils seront traités comme des URL et |
|---|
| | 414 | libxslt tentera de les récupérer. Donc, vous pouvez utiliser |
|---|
| | 415 | xslt_process comme moyen pour récupérer le contenu d'URL. Vous devez |
|---|
| | 416 | en comprendre les implications en terme de sécurité. |
|---|
| 417 | | <title>Credits</title> |
|---|
| 418 | | <para> |
|---|
| 419 | | Development of this module was sponsored by Torchbox Ltd. (www.torchbox.com) |
|---|
| 420 | | It has the same BSD licence as PostgreSQL. |
|---|
| 421 | | </para> |
|---|
| 422 | | <para> |
|---|
| 423 | | This version of the XML functions provides both XPath querying and |
|---|
| 424 | | XSLT functionality. There is also a new table function which allows |
|---|
| 425 | | the straightforward return of multiple XML results. Note that the current code |
|---|
| 426 | | doesn't take any particular care over character sets - this is |
|---|
| 427 | | something that should be fixed at some point! |
|---|
| 428 | | </para> |
|---|
| 429 | | <para> |
|---|
| 430 | | If you have any comments or suggestions, please do contact me at |
|---|
| 431 | | <email>jgray@azuli.co.uk.</email> Unfortunately, this isn't my main job, so |
|---|
| 432 | | I can't guarantee a rapid response to your query! |
|---|
| | 426 | <title>Crédits</title> |
|---|
| | 427 | <para> |
|---|
| | 428 | Le développement de ce module a été sponsorisé par Torchbox Ltd. |
|---|
| | 429 | (www.torchbox.com) |
|---|
| | 430 | Il utilise la même licence BSD que PostgreSQL. |
|---|
| | 431 | </para> |
|---|
| | 432 | <para> |
|---|
| | 433 | Cette version des fonctions XML fournit à la fois les requêtes XPath |
|---|
| | 434 | et les fonctionnalités du XSLT. Il y a aussi une nouvelle fonction SRF |
|---|
| | 435 | qui permet un renvoi simple de plusieurs résultats XML. Notez que le code |
|---|
| | 436 | actuel ne fait pas particuliÚrement attention aux jeux de caractÚres. Ceci |
|---|
| | 437 | devra être corrigé un jour ! |
|---|
| | 438 | </para> |
|---|
| | 439 | <para> |
|---|
| | 440 | Si vous avez des commentaires ou des suggestions, merci de me contacter |
|---|
| | 441 | sur mon adresse mail (<email>jgray@azuli.co.uk.</email>). Malheureusement, |
|---|
| | 442 | ce n'est pas mon travail principal, donc je ne garantis par une réponse |
|---|
| | 443 | rapide à votre demande ! |
|---|