File: hw.xml

package info (click to toggle)
phpdoc 20020310-1
  • links: PTS
  • area: main
  • in suites: woody
  • size: 35,272 kB
  • ctags: 354
  • sloc: xml: 799,767; php: 1,395; cpp: 500; makefile: 200; sh: 140; awk: 51
file content (1964 lines) | stat: -rw-r--r-- 83,399 bytes parent folder | download
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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
1733
1734
1735
1736
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
1799
1800
1801
1802
1803
1804
1805
1806
1807
1808
1809
1810
1811
1812
1813
1814
1815
1816
1817
1818
1819
1820
1821
1822
1823
1824
1825
1826
1827
1828
1829
1830
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
1853
1854
1855
1856
1857
1858
1859
1860
1861
1862
1863
1864
1865
1866
1867
1868
1869
1870
1871
1872
1873
1874
1875
1876
1877
1878
1879
1880
1881
1882
1883
1884
1885
1886
1887
1888
1889
1890
1891
1892
1893
1894
1895
1896
1897
1898
1899
1900
1901
1902
1903
1904
1905
1906
1907
1908
1909
1910
1911
1912
1913
1914
1915
1916
1917
1918
1919
1920
1921
1922
1923
1924
1925
1926
1927
1928
1929
1930
1931
1932
1933
1934
1935
1936
1937
1938
1939
1940
1941
1942
1943
1944
1945
1946
1947
1948
1949
1950
1951
1952
1953
1954
1955
1956
1957
1958
1959
1960
1961
1962
1963
1964
<?xml version="1.0" encoding="iso-8859-1"?>
<reference id="ref.hyperwave">
 <title>Hyperwave</title>
 <titleabbrev>Hyperwave</titleabbrev>
 <partintro>
  <sect1 id="hw-intro">
  <title>Introduction</title>
  <para>
   <productname>Hyperwave</productname> a &eacute;t&eacute; d&eacute;velopp&eacute; par
   <ulink url="&url.iicm;">IICM</ulink> &agrave; Graz. Son nom
   original &eacute;tait <acronym>Hyper-G</acronym> et il a pris le nom de
   Hyperwave lors de sa commercialisation (en 1996, si mes souvenirs sont bons).
  </para>
  <para>
   Hyperwave n'est pas gratuit. La version actuelle est la 4.1, disponible &agrave;
   <ulink url="&url.hyperwave;">&url.hyperwave;</ulink>. Une version
   limit&eacute;e &agrave; 30 jours peut &ecirc;tre demand&eacute;e.
  </para>
  <para>
   <acronym>HIS</acronym> est un syst&egrave;me d'information similaire &agrave;
   une base de donn&eacute;es, (HIS, Hyperwave Information Server). HIS se
   concentre sur l'enregistrement et la gestion des documents. Un document peut
   &ecirc;tre n'importe quelle donn&eacute;e, qui peut &ecirc;tre stock&eacute;e
   dans un fichier. Chaque document est accompagn&eacute; par un enregistrement.
   Cet enregistrement contient des m&eacute;ta donn&eacute;es &agrave; propos
   du document. Ces m&eacute;ta donn&eacute;es sont des listes d'attributs qui
   peuvent &ecirc;tre &eacute;tendues par l'utilisateur. Un attribut est une paire
   cl&eacute;/valeur de la forme : cl&eacute; =valeur. L'enregistrement complet
   contient autant de paire que le d&eacute;sire l'utilisateur. Le nom d'un
   attribut n'a pas besoin d'&ecirc;tre unique, c'est-&agrave;-dire qu'une
   m&ecirc;me cl&eacute; peut appara&icirc;tre plusieurs fois dans un
   enregistrement. Cela peut &ecirc;tre utile si vous devez donner un
   titre &agrave; votre document en plusieurs langues, par exemple. Dans un
   cas pareil, la convention est que chaque valeur de titre est
   pr&eacute;c&eacute;d&eacute;e par deux lettres et deux points, tel que :
   'fr:Titre en fran&ccedil;ais' ou 'ge:Titel in deutsch'. D'autres attributs
   comme une description ou des mots cl&eacute;s sont aussi susceptibles de
   recourir &agrave; ce genre de proc&eacute;d&eacute;. Vous pouvez aussi
   remplacer l'abr&eacute;viation de langage par une autre cha&icirc;ne,
   tant qu'elle est s&eacute;par&eacute;e de la valeur par les deux points.
  </para>
  <para>
   Chaque enregistrement a une repr&eacute;sentation native qui contient toutes
   les paires cl&eacute;/valeur, s&eacute;par&eacute;es par un retour &agrave;
   la ligne. L'extension Hyperwave reconna&icirc;t une autre repr&eacute;sentation
   qui est un tableau associatif, o&ugrave; les attributs servent de cl&eacute;s.
   Les attributs multilingues &eacute;tant g&eacute;r&eacute; sous la forme d'un
   autre tableau associatif, dont les cl&eacute;s sont les cha&icirc;nes de
   langue. En fait, tous les attributs multiformes sont g&eacute;r&eacute;s
   sous la forme de tableau associatif. (Cela n'est pas encore compl&egrave;tement
   cod&eacute;. Uniquement les attributs de titre, description et mot cl&eacute;s
   sont trait&eacute;s correctement).
  </para>
  <para>
   En dehors des documents, tous les hyper liens contenus dans un documents sont
   enregistr&eacute;s dans un autre enregistrement. Les hyperliens qui sont
   &agrave; l'int&eacute;rieur d'un document en seront supprim&eacute;s, et
   enregistr&eacute;s dans des objets particuliers, au moment de l'insertion
   dans la base de donn&eacute;es. L'enregistrement des hyper-liens
   contient les informations d'origine et d'objectif. Afin d'acc&eacute;der
   au document original, vous devrez lire le document sans les liens, puis lire
   les liens, et les r&eacute;ins&eacute;rer (les
   <function>hw_pipedocument</function> et <function>hw_gettext</function> le
   font pour vous. L'avantage de s&eacute;parer les liens du document est
   &eacute;vident : une fois qu'un document, cible d'un hyperlien, a
   &eacute;t&eacute; renomm&eacute;, le liens peut facilement &ecirc;tre
   modifi&eacute;. Le document contenant le lien n'est pas modifi&eacute;
   pour autant. Vous pouvez m&ecirc;me ajouter un lien &agrave; un document sans
   le modifier.
  </para>
  <para>
   Dire que <function>hw_pipedocument</function> et <function>hw_gettext</function>
   font l'insertion automatiquement n'est pas aussi simple qu'il n'y para&icirc;t.
   L'insertion implique une certaine hi&eacute;rarchie de documents. Sur un serveur
   web, la hi&eacute;rarchie est fournie par le syst&egrave;me de fichiers, mais
   Hyperwave dispose de sa propre hi&eacute;rarchie et les noms de fichiers ne
   refl&egrave;tent pas la position d'un objet dans cette hi&eacute;rarchie.
   Ainsi, la cr&eacute;ation de liens requiert en premier lieu
   la construction de la hi&eacute;rarchie et de l'espace des noms dans
   une hi&eacute;rarchie web et un espace de nom web. La diff&eacute;rence
   fondamentale entre Hyperwave et le web est qu'il y a une distinction claire
   en les noms et la hi&eacute;rarchie dans Hyperwave. Le nom ne contient aucune
   information &agrave; propos de la position de l'objet dans la hi&eacute;rarchie.
   Sur le web, le nom contient les informations de localisation dans la
   hi&eacute;rarchie. Cela conduit &agrave; deux m&eacute;thodes de d'acc&egrave;s :
   soit la hi&eacute;rarchie Hyperwave et le nom de l'objet sont inscrits dans
   l'URL. Pour simplifier les choses, une deuxi&egrave;me approche est
   pratiqu&eacute;e. L'objet Hyperwave de nom 'mon_objet' correspond &agrave;
   l'URL 'http://hote/mon_objet', peu importe alors o&ugrave; il est rang&eacute;
   dans la hi&eacute;rarchie. Un objet dont le nom est 'parent/mon_objet' peut
   &ecirc;tre le fils de l'objet 'mon_objet' dans la hi&eacute;rarchie Hyperwave,
   bien que ce soit le contraire en convention web, et cela risque de perturber
   l'utilisateur.
  </para>
  <para>
   Ayant pris cette d&eacute;cision, un deuxi&egrave;me probl&egrave;me surgit :
   comment faire l'interface avec PHP ? L'URL http://hote/mon_objet n'appellera
   aucun script PHP &agrave; moins que vous ne demandiez &agrave; votre serveur
   web de le remplacer par autre chose, comme par exemple :
   'http://host/php3_script/mon_objet' et le script 'php3_script' utilise la
   variable $PATH_INFO pour rechercher l'objet 'mon_objet' sur le serveur Hyperwave.
   Il y a juste un petit inconv&eacute;nient , qui peut facilement &ecirc;tre
   corrig&eacute;. R&eacute;&eacute;crire une URL ne vous permettra aucun
   acc&egrave;s aux autres documents du serveur web. Un script de recherche
   dans le serveur Hyperwave serait impossible. Il vous faudra donc au moins
   une autre r&egrave;gle pour exclure certaines URL, comme par exemple celles
   qui commencent par http://host/Hyperwave. Voici, de mani&egrave;re simple,
   la mani&egrave;re de partager un espace de nom entre un serveur web et un
   serveur Hyperwave serveur.
  </para>
  <para>
   Bas&eacute; sur le m&eacute;canisme pr&eacute;c&eacute;dent, on trouve
   l'insertion dans les documents.
  </para>
  <para>
   Il est plus compliqu&eacute; d'avoir PHP ne fonctionne pas comme un module
   de serveur, ou un script CGI, mais comme une application ind&eacute;pendante.
   Dans ce cas, il est utile d'inscrire la hi&eacute;rarchie et le nom de fichier
   Hyperwave dans le syst&egrave;me de fichier. Mais comme cela risque d'entrer
   en conflit avec le s&eacute;parateur de dossier ('/'), il faut le remplacer
   par un autre caract&egrave;re,. '_'.
  </para>
  <para>
   Le protocole r&eacute;seau pour communiquer avec un serveur Hyperwave est
   appel&eacute; <ulink url="&spec.hyperwave;">HG-CSP</ulink>
   (Hyper-G Client/Server Protocol). Il est bas&eacute; sur des messages qui
   initie des actions, comme par exemple, lire l'en-t&ecirc;te de fichier. Dans
   les premi&egrave;res versions de Hyperwave Server deux clients natifs
   (Harmony, Amadeus) &eacute;taient fournis pour permettre la communication
   avec le serveur. Ils ont disparu lors de la commercialisation de Hyperwave.
   En tant qu'ersatz, un client appel&eacute; wavemaster est  d&eacute;sormais
   fourni. wavemaster est un esp&egrave;ce ce convertisseur de protocole de
   <abbrev>HTTP</abbrev> en <abbrev>HG-CSP</abbrev>. L'id&eacute;e est de faire
   toute l'administration de la base et la visualisation des documents par une
   interface web. Le wavemaster impl&eacute;mente un jeu d'emplacement pour
   certaines actions de personnalisation de l'interface. Ce jeu est appel&eacute;
   <abbrev>PLACE</abbrev> language. <abbrev>PLACE</abbrev> p&ecirc;che encore par
   le manque de nombreuses fonctions de programmation, et le manque
   d'&eacute;volutivit&eacute;. Cela a conduit &agrave; l'utilisation de
   JavaScript ce qui ne rend pas la vie facile.
  </para>
  <para>
   Que PHP supporte Hyperwave permet de combler ces manques. PHP impl&eacute;mente
   tous les messages d&eacute;finis par <abbrev>HG-CSP</abbrev> mais fourni
   d'autres commandes puissantes, comme par exemple, celle de lire des documents
   complets.
  </para>
  <para>
   Hyperwave dispose de sa propre terminologie pour localiser certaines
   informations. Cette terminologie a &eacute;t&eacute; largement &eacute;tendue.
   Presque toutes les fonctions utilisent l'un des types de donn&eacute;es
   suivants :
   <itemizedlist>
    <listitem>
     <simpara>
      object ID: un entier, unique pour chaque objet sur le serveur Hyperwave. C'est
      aussi un des attributs de l'enregistrement de l'objet (ObjectID).Les object ids
      sont souvent utilis&eacute;es comme param&egrave;tre d'entr&eacute;e pour
      sp&eacute;cifier un objet.
     </simpara>
    </listitem>
    <listitem>
     <simpara>
      object record: Une cha&icirc;ne contenant des paires cl&eacute;=valeur. Les
      paires sont s&eacute;par&eacute;es par un retour &agrave; la ligne. Un
      enregistrement d'objet peut facilement &ecirc;tre converti en tableau, avec
      la fonction <function>hw_objrec2array</function>. De nombreuses fonctions
      retournent un object records. Ces fonctions ont leur nom qui finit par obj.
     </simpara>
    </listitem>
    <listitem>
     <simpara>
      object array: Un tableau associatif qui contient tous les attributs d'un objet.
      La cl&eacute; est l'attribut. Si un attribut appara&icirc;t plusieurs fois, il
      sera repr&eacute;sent&eacute; sous la forme d'un tableau associatif ou
      index&eacute;. Les attributs qui d&eacute;pendent des langues (comme title,
      keyword ou description) seront repr&eacute;sent&eacute;s sous la forme d'un
      tableau associatif, dont les cl&eacute;s seront les abr&eacute;viations de
      langues. Tous les autres attributs &agrave; valeur multiple prendront la
      forme d'un tableau index&eacute;.
     </simpara>
    </listitem>
    <listitem>
     <simpara>
      hw_document: Ce type est un nouveau type de donn&eacute;es, qui contient le
      document lui-m&ecirc;me, comme par exemple HTML, PDF etc. Il est
      optimis&eacute; pour les documents HTML mais peut s'utiliser avec n'importe
      quel format.
     </simpara>
    </listitem>
   </itemizedlist>
  </para>
  <para>
   De nombreuses fonctions qui retournent un tableau d'enregistrements, retournent
   aussi un tableau associ&eacute;, avec des informations statistiques. Ce tableau
   est le dernier &eacute;l&eacute;ment du tableau d'enregistrements. Les
   statistiques contiennent les entr&eacute;es suivantes :
   <variablelist>
   <varlistentry>
   <term>Hidden</term>
   <listitem>
    <simpara>
     Nombre d'objets dont l'attribut PresentationHints est Hidden.
    </simpara>
   </listitem>
   </varlistentry>
   <varlistentry>
   <term>CollectionHead</term>
   <listitem>
    <simpara>
     Nombre d'objet dont l'attribut PresentationHints est CollectionHead.
    </simpara>
   </listitem>
   </varlistentry>
   <varlistentry>
   <term>FullCollectionHead</term>
   <listitem>
    <simpara>
     Nombre d'objet dont l'attribut PresentationHints est FullCollectionHead.
    </simpara>
   </listitem>
   </varlistentry>
   <varlistentry>
   <term>CollectionHeadNr</term>
   <listitem>
    <simpara>
     Index du premier objet du tableau d'enregistrement avec l'attribut
     PresentationHints &agrave; CollectionHead.
    </simpara></listitem>
    </varlistentry>
    <varlistentry>
    <term>FullCollectionHeadNr</term>
    <listitem>
     <simpara>
      Index du premier objet du tableau d'enregistrement avec l'attribut
      PresentationHints est FullCollectionHead.
     </simpara>
    </listitem>
    </varlistentry>
    <varlistentry>
    <term>Total</term>
    <listitem>
     <simpara>
      Total: Nombre d'enregistrements.
     </simpara>
    </listitem>
    </varlistentry>
    </variablelist>
   </para>
   </sect1>
   <sect1 id="hw-apache">
   <title>Int&eacute;gration avec Apache</title>
   <para>
    L'extension Hyperwave est utilis&eacute;e de mani&egrave;re optimale lorsque
    PHP est compil&eacute; comme module Apache. Dans ce cas, le serveur Hyperwave
    sous jacent peut &ecirc;tre cach&eacute; quasiment totalement aux utilisateurs,
    si Apache utilise son moteur d'&eacute;criture. Les explications suivantes vous
    &eacute;claireront :
   </para>
   <para>
    Etant donn&eacute; que PHP avec l'extension Hyperwave et Apache tend &agrave;
    remplacer la solution native bas&eacute;e sur Wavemaster, je vais supposer que
    le serveur Apache servira seulement d'interface Hyperwave. Ce n'est pas
    n&eacute;cessaire, mais cela simplifie grandment la configuration. Le
    concept est tr&egrave;s simple. Premi&egrave;rement, vous avez besoin d'un
    script PHP qui &eacute;value la variable <envar>PATH_INFO</envar> et
    consid&egrave;re que cette valeur est un objet Hyperwave. Appelons ce script
    'Hyperwave'. L'URL
    <systemitem role="url">http://votre.hote/Hyperwave/nom_objet</systemitem>
    retourne alors l'objet Hyperwave dont le nom est 'nom_objet'. Le script doit
    alors r&eacute;agir suivant le type de l'objet. Si c'est un groupe, il devra
    probablement retourner une liste de fils. Si c'est un document, il pourra
    retourner son type MIME et son contenu. Une am&eacute;lioration peut
    &ecirc;tre obtenue en utilisant le moteur de r&eacute;&eacute;criture d'Apache.
    D'un point de vue utilisateur, il est plus direct si l'URL
    <systemitem role="url">http://votre.hote/nom_objet</systemitem>
    retourne l'objet. La r&egrave;gle de r&eacute;&eacute;criture est simple :
    <informalexample>
     <programlisting role="apache-conf">
RewriteRule ^/(.*) /usr/local/apache/htdocs/HyperWave/$1 [L]
     </programlisting>
    </informalexample>
    Maintenant toutes les URL pointent sur un objet Hyperwave. Cela conduit &agrave;
    un probl&egrave;me simple. Il n'y a pas d'autre fa&ccedil;on d'ex&eacute;cuter,
    c'est-&agrave;-dire rechercher, un autre script que ce script 'Hyperwave'.
    Cela pourra &ecirc;tre corrig&eacute; avec une autre r&egrave;gle telle que:
    <informalexample>
     <programlisting role="apache-conf">
RewriteRule ^/hw/(.*) /usr/local/apache/htdocs/hw/$1 [L]
     </programlisting>
    </informalexample>
    Le dossier <filename class="directory">/usr/local/apache/htdocs/hw</filename>
    sera ainsi r&eacute;serv&eacute; pour d'autres scripts et fichiers. Assurez-vous que
    cette r&egrave;gle est &eacute;valu&eacute;e avant la premi&egrave;re
    r&egrave;gle que nous avons d&eacute;finie. Il y a juste un l&eacute;ger
    inconv&eacute;nient : tous les objets Hyperwave qui commencent par 'hw/' seront
    cach&eacute;s. Alors, assurez-vous que vous n'utilisez pas de tels noms. Si vous
    avez besoin d'autres dossiers, par exemple, un dossier d'images, ajoutez
    simplement d'autres r&egrave;gles. N'oubliez pas de lancer le moteur de
    r&eacute;&eacute;criture avec
    <informalexample>
     <programlisting role="apache-conf">
RewriteEngine on
     </programlisting>
    </informalexample>
    Mon exp&eacute;rience m'a montr&eacute; que vous aurez besoin
    des scripts suivants :
    <itemizedlist>
     <listitem>
      <simpara>
       Retourne l'objet lui-m&ecirc;me
      </simpara>
     </listitem>
     <listitem>
      <simpara>
       Pour autoriser la recherche
      </simpara>
     </listitem>
     <listitem>
      <simpara>
       S'identifier
      </simpara>
     </listitem>
     <listitem>
      <simpara>
       Choisir une configuration
      </simpara>
     </listitem>
     <listitem>
      <simpara>
       Un script pour chaque fonction suppl&eacute;mentaire, comme afficher
       un objet, afficher des informations sur les utilisateurs, afficher
       le statut du serveur, etc...
      </simpara>
     </listitem>
    </itemizedlist>
   </para>
   </sect1>
   <sect1 id="hw-todo">
   <title>A faire</title>
   <para>
    Il reste encore beaucoup &agrave; faire :
    <itemizedlist>
     <listitem>
      <simpara>
       La fonction hw_InsertDocument doit &ecirc;tre s&eacute;par&eacute;e
       en deux : hw_insertobject() et hw_putdocument().
      </simpara>
     </listitem>
     <listitem>
      <simpara>
       Les noms de nombreuses fonctions ne sont pas encore fix&eacute;s.
      </simpara>
     </listitem>
     <listitem>
      <simpara>
       La majorit&eacute; des fonctions requi&egrave;rent la connexion courante
       comme premier param&egrave;tre. Cela conduit &agrave; beaucoup de frappe
       clavier, m&ecirc;me s'il n'y a souvent qu'une seule connexion en jeu.
       Une connexion par d&eacute;faut am&eacute;liorerait ceci.
      </simpara>
     </listitem>
    </itemizedlist>
   </para>
   </sect1>
  </partintro>
  <refentry id="function.hw-array2objrec">
   <refnamediv>
    <refname>hw_Array2Objrec</refname>
    <refpurpose>Convertit un tableau en un objet.</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Description</title>
     <methodsynopsis>
      <type>string</type><methodname>hw_array2objrec</methodname>
      <methodparam><type>array</type><parameter>object_array</parameter></methodparam>
     </methodsynopsis>
    <para>
     <function>hw_array2objrec</function> convertit un
     <parameter>object_array</parameter> en un objet. Les attributs multiples
     tels que 'Title' en diff&eacute;rentes langues seront trait&eacute;s
     correctement.
    </para>
    <para>
     Voir aussi
     <function>hw_objrec2array</function>.
    </para>
   </refsect1>
  </refentry>
  <refentry id="function.hw-children">
   <refnamediv>
    <refname>hw_Children</refname>
    <refpurpose>Liste des object ids des objets fils.</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Description</title>
     <methodsynopsis>
      <type>array</type><methodname>hw_children</methodname>
      <methodparam><type>resource</type><parameter>connection</parameter></methodparam>
      <methodparam><type>resource</type><parameter>objectID</parameter></methodparam>
     </methodsynopsis>
    <para>
     <function>hw_children</function> retourne un tableau avec des object ids.
     Chaque object id est celui d'un des fils du groupe dont l'id est
     <parameter>objectID</parameter>. Ce tableau contient tous les fils,
     documents et groupes.
    </para>
   </refsect1>
  </refentry>
  <refentry id="function.hw-childrenobj">
   <refnamediv>
    <refname>hw_ChildrenObj</refname>
    <refpurpose>Liste des object records des objets fils.</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Description</title>
     <methodsynopsis>
      <type>array</type><methodname>hw_childrenobj</methodname>
      <methodparam><type>resource</type><parameter>connection</parameter></methodparam>
      <methodparam><type>resource</type><parameter>objectID</parameter></methodparam>
     </methodsynopsis>
    <para>
     <function>hw_childrenobj</function> retourne un tableau avec des
     object records. Chaque object records est celui d'un des fils du groupe
     dont l'id est <parameter>objectID</parameter>.
     Ce tableau contient tous les fils, documents et groupes
    </para>
   </refsect1>
  </refentry>
  <refentry id="function.hw-close">
   <refnamediv>
    <refname>hw_Close</refname>
    <refpurpose>Ferme la connexion Hyperwave.</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Description</title>
     <methodsynopsis>
      <type>int</type><methodname>hw_close</methodname>
      <methodparam><type>resource</type><parameter>connection</parameter></methodparam>
     </methodsynopsis>
    <para>
     <function>hw_close</function> retourne &false; si la connexion n'est pas
     valide, et sinon, &true;. Ferme la connexion connection &agrave; un serveur
     Hyperwave.
    </para>
   </refsect1>
  </refentry>
  <refentry id="function.hw-connect">
   <refnamediv>
    <refname>hw_Connect</refname>
    <refpurpose>Ouvre une connexion Hyperwave.</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Description</title>
     <methodsynopsis>
      <type>resource</type><methodname>hw_connect</methodname>
      <methodparam><type>string</type><parameter>host</parameter></methodparam>
      <methodparam><type>int</type><parameter>port</parameter></methodparam>
      <methodparam><type>string</type><parameter>username</parameter></methodparam>
      <methodparam><type>string</type><parameter>password</parameter></methodparam>
     </methodsynopsis>
    <para>
      <function>hw_connect</function> ouvre une connexion Hyperwave et retourne
      un identifiant de connexion, en cas de succ&egrave;s, ou &false;, si la
      connexion n'a pas pu &ecirc;tre cr&eacute;&eacute;e. Chaque argument
      doit &ecirc;tre entour&eacute; de guillemets, sauf le num&eacute;ro de
      port. Les arguments <parameter>username</parameter> et
      <parameter>password</parameter> sont optionnels, et peuvent &ecirc;tre
      ignor&eacute;s. Dans ce cas, aucune identification ne sera faite au niveau
      du serveur. Cela revient &agrave; s'identifier en tant qu'utilisateur
      anonyme. Cette fonction retourne un identifiant de connexion qui sera
      n&eacute;cessaire aux autres fonctions Hyperwave. Vous pouvez avoir
      plusieurs connexions simultan&eacute;es. N'oubliez pas que les mots de
      passe ne sont pas crypt&eacute;s.
    </para>
    <para>
     Voir aussi
     <function>hw_pconnect</function>.
    </para>
   </refsect1>
  </refentry>
  <refentry id="function.hw-cp">
   <refnamediv>
    <refname>hw_Cp</refname>
    <refpurpose>Copie des objets.</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Description</title>
     <methodsynopsis>
      <type>resource</type><methodname>hw_cp</methodname>
      <methodparam><type>resource</type><parameter>connection</parameter></methodparam>
      <methodparam><type>array</type><parameter>object_id_array</parameter></methodparam>
      <methodparam><type>int</type><parameter>destination_id</parameter></methodparam>
     </methodsynopsis>
    <para>
     <function>hw_cp</function> copie les objets ayant les identifiants
     <parameter>object_id_array</parameter>, et cr&eacute;e un groupe
     ayant l'object id <parameter>destination_id</parameter>.
    </para>
    <para>
     La valeur retourn&eacute;e est le nombre d'objets copi&eacute;s.
    </para>
    <para>
    Voir aussi
    <function>hw_mv</function>.</para>
   </refsect1>
  </refentry>
  <refentry id="function.hw-deleteobject">
   <refnamediv>
    <refname>hw_Deleteobject</refname>
    <refpurpose>Efface des objets.</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Description</title>
     <methodsynopsis>
      <type>int</type><methodname>hw_deleteobject</methodname>
      <methodparam><type>resource</type><parameter>connection</parameter></methodparam>
      <methodparam><type>int</type><parameter>object_to_delete</parameter></methodparam>
     </methodsynopsis>
    <para>
     <function>hw_deleteobject</function> efface l'objet dont l'identifiant est
     <parameter>object_to_delete</parameter>. Toutes les instances de l'objet
     <parameter>object_to_delete</parameter> seront effac&eacute;es.
    </para>
    <para>
     <function>hw_deleteobject</function> retourne &true;
     si aucune erreur ne survient, et sinon, &false;.
    </para>
    <para>
     Voir aussi
     <function>hw_mv</function>.
    </para>
   </refsect1>
  </refentry>
  <refentry id="function.hw-docbyanchor">
   <refnamediv>
    <refname>hw_DocByAnchor</refname>
    <refpurpose>Identifiant d'objet de l'objet dans l'ancrage.</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Description</title>
     <methodsynopsis>
      <type>resource</type><methodname>hw_docbyanchor</methodname>
      <methodparam><type>resource</type><parameter>connection</parameter></methodparam>
      <methodparam><type>int</type><parameter>anchorID</parameter></methodparam>
     </methodsynopsis>
    <para>
     <function>hw_docbyanchor</function> retourne l'dentifiant d'objet de
     l'objet dans l'ancrage <parameter>anchorID</parameter>.
    </para>
   </refsect1>
  </refentry>
  <refentry id="function.hw-docbyanchorobj">
   <refnamediv>
    <refname>hw_DocByAnchorObj</refname>
    <refpurpose>Attributs de l'objet dans l'ancrage.</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Description</title>
     <methodsynopsis>
      <type>string</type><methodname>hw_docbyanchorobj</methodname>
      <methodparam><type>resource</type><parameter>connection</parameter></methodparam>
      <methodparam><type>int</type><parameter>anchorID</parameter></methodparam>
     </methodsynopsis>
    <para>
     <function>hw_docbyanchorobj</function> retourne les attributs du
     document qui correspond &agrave; <parameter>anchorID</parameter>.
    </para>
   </refsect1>
  </refentry>
  <refentry id="function.hw-documentattributes">
   <refnamediv>
    <refname>hw_DocumentAttributes</refname>
    <refpurpose>Object record de hw_document.</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Description</title>
     <methodsynopsis>
      <type>string</type><methodname>hw_documentattributes</methodname>
      <methodparam><type>int</type><parameter>hw_document</parameter></methodparam>
     </methodsynopsis>
    <para>
     <function>hw_documentattributes</function> retourne les attributs du document.
    </para>
    <para>
     Voir aussi
     <function>hw_documentbodytag</function> et
     <function>hw_documentsize</function>.
    </para>
   </refsect1>
  </refentry>
  <refentry id="function.hw-documentbodytag">
   <refnamediv>
    <refname>hw_DocumentBodyTag</refname>
    <refpurpose>Balise de corps d'un document.</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Description</title>
     <methodsynopsis>
      <type>string</type><methodname>hw_documentbodytag</methodname>
      <methodparam><type>int</type><parameter>hw_document</parameter></methodparam>
     </methodsynopsis>
    <para>
     <function>hw_documentbodytag</function> retourne la balise BODY du
     document.Si le document est un document HTML , la balise BODY doit
     &ecirc;tre affich&eacute;e avant le document.
    </para>
    <para>
     Voir aussi
     <function>hw_documentattributes</function> et
     <function>hw_documentsize</function>.
    </para>
   </refsect1>
  </refentry>
  <refentry id="function.hw-documentcontent">
   <refnamediv>
    <refname>hw_DocumentContent</refname>
    <refpurpose>Contenu d'un document.</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Description</title>
     <methodsynopsis>
      <type>string</type><methodname>hw_documentcontent</methodname>
      <methodparam><type>int</type><parameter>hw_document</parameter></methodparam>
     </methodsynopsis>
    <para>
     <function>hw_documentcontent</function> retourne la balise BODY du
     document.Si le document est un document HTML , la balise BODY doit
     &ecirc;tre affich&eacute;e avant le document.
    </para>
    <para>
     Voir aussi
     <function>hw_documentattributes</function>,
     <function>hw_documentsize</function> et
     <function>hw_documentsetcontent</function>.
    </para>
   </refsect1>
  </refentry>
  <refentry id="function.hw-documentsetcontent">
   <refnamediv>
    <refname>hw_DocumentSetContent</refname>
    <refpurpose>Modifie/remplace le contenu d'un document.</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Description</title>
     <methodsynopsis>
      <type>string</type><methodname>hw_documentsetcontent</methodname>
      <methodparam><type>int</type><parameter>hw_document</parameter></methodparam>
      <methodparam><type>string</type><parameter>content</parameter></methodparam>
     </methodsynopsis>
    <para>
     <function>hw_documentsetcontent</function> modifie/remplace le contenu
     d'un document. Si le document est un document HTML, le contenu
     repr&eacute;sente tout qui est plac&eacute; au-del&agrave; de la balise BODY.
     Les informations de HEAD et de la balise BODY sont enregistr&eacute;s
     dans les attributs. Si vous fournissez aussi ces informations dans le
     corps du document, le serveur Hyperwave modifiera les attributs. Cela
     n'est cependant pas une bonne id&eacute;e. Si la fonction &eacute;choue,
     l'ancien contenu est restaur&eacute;.
    </para>
    <para>
     Voir aussi
     <function>hw_documentattributes</function>,
     <function>hw_documentsize</function> et
     <function>hw_documentcontent</function>.
    </para>
   </refsect1>
  </refentry>
  <refentry id="function.hw-documentsize">
   <refnamediv>
    <refname>hw_DocumentSize</refname>
    <refpurpose>Taille d'un document.</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Description</title>
     <methodsynopsis>
      <type>int</type><methodname>hw_documentsize</methodname>
      <methodparam><type>int</type><parameter>hw_document</parameter></methodparam>
     </methodsynopsis>
    <para>
     <function>hw_documentsize</function> retourne la taille du document
     en octets.
    </para>
    <para>
     Voir aussi
     <function>hw_documentbodytag</function> et
     <function>hw_documentattributes</function>.
    </para>
   </refsect1>
  </refentry>
  <refentry id="function.hw-errormsg">
   <refnamediv>
    <refname>hw_ErrorMsg</refname>
    <refpurpose>Retourne un message d'erreur.</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Description</title>
     <methodsynopsis>
      <type>string</type><methodname>hw_errormsg</methodname>
      <methodparam><type>resource</type><parameter>connection</parameter></methodparam>
     </methodsynopsis>
    <para>
     <function>hw_errormsg</function> retourne une cha&icirc;ne contenant
     le dernier message d'erreur, ou 'No Error' (pas d'erreur). Si &false;
     est retourn&eacute;, cette fonction a &eacute;chou&eacute;. Ce message
     est relatif &agrave; la derni&egrave;re commande ex&eacute;cut&eacute;e.
    </para>
   </refsect1>
  </refentry>
  <refentry id="function.hw-edittext">
   <refnamediv>
    <refname>hw_EditText</refname>
    <refpurpose>Retourne un document texte.</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Description</title>
     <methodsynopsis>
      <type>int</type><methodname>hw_edittext</methodname>
      <methodparam><type>resource</type><parameter>connection</parameter></methodparam>
      <methodparam><type>int</type><parameter>hw_document</parameter></methodparam>
     </methodsynopsis>
    <para>
     <function>hw_edittext</function> charge le texte du document sur le
     serveur. Les attributs du document ne doivent pas &ecirc;tre
     modifi&eacute;s tant que le document est en train d'&ecirc;tre
     &eacute;dit&eacute;. Cette fonction n'est disponible que sur les
     documents texte. Elle n'ouvrira pas de canal de transfert, et donc,
     bloquera le script durant le transfert.
    </para>
    <para>
     Voir aussi
     <function>hw_pipedocument</function>,
     <function>hw_free_document</function>,
     <function>hw_documentbodytag</function>,
     <function>hw_documentsize</function>,
     <function>hw_outputdocument</function> et
     <function>hw_gettext</function>.
    </para>
   </refsect1>
  </refentry>
  <refentry id="function.hw-error">
   <refnamediv>
    <refname>hw_Error</refname>
    <refpurpose>Retourne le code d'erreur.</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Description</title>
     <methodsynopsis>
      <type>int</type><methodname>hw_error</methodname>
      <methodparam><type>resource</type><parameter>connection</parameter></methodparam>
     </methodsynopsis>
    <para>
     <function>hw_error</function> retourne le code d'erreur de la derni&egrave;re
     erreur. Si la valeur 0 est retourn&eacute;e, c'est qu'il n'y avait pas d'erreur.
     L'erreur se rapporte &agrave; la derni&egrave;re commande.
    </para>
   </refsect1>
  </refentry>
  <refentry id="function.hw-free-document">
   <refnamediv>
    <refname>hw_Free_Document</refname>
    <refpurpose>D&eacute;truit un document.</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Description</title>
     <methodsynopsis>
      <type>int</type><methodname>hw_free_document</methodname>
      <methodparam><type>resource</type><parameter>hw_document</parameter></methodparam>
     </methodsynopsis>
    <para>
     <function>hw_free_document</function> d&eacute;truit un document Hyperwave.
    </para>
   </refsect1>
  </refentry>
  <refentry id="function.hw-getparents">
   <refnamediv>
    <refname>hw_GetParents</refname>
    <refpurpose>Identifiant d'objet des parents.</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Description</title>
     <methodsynopsis>
      <type>array</type><methodname>hw_getparents</methodname>
      <methodparam><type>resource</type><parameter>connection</parameter></methodparam>
      <methodparam><type>resource</type><parameter>objectID</parameter></methodparam>
     </methodsynopsis>
    <para>
     <function>hw_getparents</function> retourne un tableau index&eacute;
     avec les identifiants des objets parents de <parameter>objectID</parameter>.
    </para>
   </refsect1>
  </refentry>
  <refentry id="function.hw-getparentsobj">
   <refnamediv>
    <refname>hw_GetParentsObj</refname>
    <refpurpose>Attributs des parents.</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Description</title>
     <methodsynopsis>
      <type>array</type><methodname>hw_getparentsobj</methodname>
      <methodparam><type>resource</type><parameter>connection</parameter></methodparam>
      <methodparam><type>resource</type><parameter>objectID</parameter></methodparam>
     </methodsynopsis>
    <para>
     <function>hw_getparentsobj</function> retourne un tableau index&eacute;,
     avec les attributs et un tableau associ&eacute;, d'informations statistiques
     &agrave; propos des attributs. Ce tableau associ&eacute; est le dernier
     &eacute;l&eacute;ment du tableau retourn&eacute;. Chaque attribut
     appartient au p&egrave;re de l'objet <parameter>objectID</parameter>.
    </para>
   </refsect1>
  </refentry>
  <refentry id="function.hw-getchildcoll">
   <refnamediv>
    <refname>hw_GetChildColl</refname>
    <refpurpose>Identifiant d'objet des groupes fils.</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Description</title>
     <methodsynopsis>
      <type>array</type><methodname>hw_getchildcoll</methodname>
      <methodparam><type>resource</type><parameter>connection</parameter></methodparam>
      <methodparam><type>resource</type><parameter>objectID</parameter></methodparam>
     </methodsynopsis>
    <para>
     <function>hw_getchildcoll</function> retourne un tableau contenant les
     identifiants d'objets des groupes fils du groupe
     <parameter>objectID</parameter>. Cette fonction ne retournera pas
     d'identifiants d'objets des documents fils.
    </para>
    <para>
     Voir aussi
     <function>hw_getchilddoccoll</function>.
    </para>
   </refsect1>
  </refentry>
  <refentry id="function.hw-getchildcollobj">
   <refnamediv>
    <refname>hw_GetChildCollObj</refname>
    <refpurpose>object records d'un groupe d'enfants.</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Description</title>
     <methodsynopsis>
      <type>array</type><methodname>hw_getchildcollobj</methodname>
      <methodparam><type>resource</type><parameter>connection</parameter></methodparam>
      <methodparam><type>resource</type><parameter>objectID</parameter></methodparam>
     </methodsynopsis>
    <para>
     <function>hw_getchildcollobj</function> retourne un tableau d'object record.
     Chaque object records appartient &agrave; un groupe d'enfants de la
     collection <parameter>objectID</parameter>. La fonction ne retournera pas
     de documents enfants.
    </para>
    <para>
     Voir aussi
     <function>hw_childrenobj</function> et
     <function>hw_getchilddoccollobj</function>.
    </para>
   </refsect1>
  </refentry>
  <refentry id="function.hw-getremote">
   <refnamediv>
    <refname>hw_GetRemote</refname>
    <refpurpose>Retourne un document distant.</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Description</title>
     <methodsynopsis>
      <type>resource</type><methodname>hw_getremote</methodname>
      <methodparam><type>resource</type><parameter>connection</parameter></methodparam>
      <methodparam><type>resource</type><parameter>objectID</parameter></methodparam>
     </methodsynopsis>
    <para>
     <function>hw_getremote</function> retourne un document distant. Les documents
     distants sont , en Hyperwave, des documents lus depuis une source externe. La
     plupart des documents &eacute;loign&eacute;s sont des pages web externes, ou
     des requ&ecirc;tes sur une base de donn&eacute;es. Afin de pouvoir
     acc&eacute;der &agrave; des sources externes, gr&acirc;ce aux documents distants,
     Hyperwave introduit l'interface HGI (Hyperwave Gateway Interface) qui est
     similaire &agrave; CGI. Actuellement, seuls les protocoles de FTP, HTTP et
     certaines bases de donn&eacute;es sont accessibles avec HGI.
     <function>hw_getremote</function> retourne le document de la source
     distante. Si vous voulez utiliser cette fonction, il vous faut vous
     familiariser avec HGIs. Il est aussi pr&eacute;f&eacute;rable d'utiliser
     PHP plut&ocirc;t que Hyperwave pour acc&eacute;der aux sources externes.
     Le support des bases de donn&eacute;es sera plus difficile avec Hyperwave
     que PHP.
    </para>
    <para>
     Voir aussi
     <function>hw_getremotechildren</function>.
    </para>
   </refsect1>
  </refentry>
  <refentry id="function.hw-getremotechildren">
   <refnamediv>
    <refname>hw_GetRemoteChildren</refname>
    <refpurpose>Retourne les fils d'un document distant.</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Description</title>
     <methodsynopsis>
      <type>resource</type><methodname>hw_getremotechildren</methodname>
      <methodparam><type>resource</type><parameter>connection</parameter></methodparam>
      <methodparam><type>string</type><parameter>object_record</parameter></methodparam>
     </methodsynopsis>
    <para>
     <function>hw_getremotechildren</function> retourne les fils d'un document
     distant. Les fils d'un document distant sont des documents distants eux
     m&ecirc;mes. Cela est coh&eacute;rent si une requ&ecirc;te sur une base
     de donn&eacute;es doit &ecirc;tre rendu plus s&eacute;lective, comme
     expliqu&eacute; dans Hyperwave Programmers' Guide. Si le nombre de fils
     est 1 la fonction va retourner le document lui-m&ecirc;me, la fonction
     retournera le document lui-m&ecirc;me, format&eacute; Hyperwave Gateway
     Interface (HGI). Si le nombre de fils est sup&eacute;rieur 1 la fonction
     retournera un tableau d'attributs, qui pourra servir &agrave; une nouvelle
     requ&ecirc;te avec <function>hw_getremotechildren</function>. Ces attributs
     sont virtuels et n'existent pas sur le serveur Hyperwave, et ainsi, n'ont pas
     d'identifiant d'objet valide. L'ordre exact de ces objets est du ressort de HGI.
     Si vous voulez utiliser cette fonction, vous devez &ecirc;tre tr&egrave;s
     familier HGIs. Il vaut mieux PHP plut&ocirc;t que Hyperwave pour acc&eacute;der
     aux fichiers distants. Le support de base de donn&eacute;es y est bien meilleur.
    </para>
    <para>
     Voir aussi
     <function>hw_getremote</function>.
    </para>
   </refsect1>
  </refentry>
  <refentry id="function.hw-getsrcbydestobj">
   <refnamediv>
    <refname>hw_GetSrcByDestObj</refname>
    <refpurpose>Retourne les ancrages qui pointent sur un objet.</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Description</title>
     <methodsynopsis>
      <type>array</type><methodname>hw_getsrcbydestobj</methodname>
      <methodparam><type>resource</type><parameter>connection</parameter></methodparam>
      <methodparam><type>resource</type><parameter>objectID</parameter></methodparam>
     </methodsynopsis>
    <para>
     <function>hw_getsrcbydestobj</function> retourne les attributs de tous
     les ancrages qui pointent sur <parameter>objectID</parameter>. L'objet
     peut &ecirc;tre un document ou un autre ancrage, de type destination.
    </para>
    <para>
     Voir aussi
     <function>hw_getanchors</function>.
    </para>
   </refsect1>
  </refentry>
  <refentry id="function.hw-getobject">
   <refnamediv>
    <refname>hw_GetObject</refname>
    <refpurpose>Attributs d'un objet.</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Description</title>
     <methodsynopsis>
      <type>array</type><methodname>hw_getobject</methodname>
      <methodparam><type>resource</type><parameter>connection</parameter></methodparam>
      <methodparam><type>int|array</type><parameter>objectID</parameter></methodparam>
      <methodparam><type>string</type><parameter>query</parameter></methodparam>
     </methodsynopsis>
    <para>
     <function>hw_getobject</function> retourne les attributs de l'objet dont
     l'identifiant est <parameter>objectID</parameter>, si le second
     param&egrave;tre est un entier. Si le second param&egrave;tre est un
     tableau, la fonction retournera un tableau d'attributs. Dans ce cas,
     le dernier param&egrave;tre est aussi &eacute;valu&eacute;.
    </para>
    <para>
     <parameter>query</parameter> a la syntaxe suivante :
    </para>
    <simpara>
     &lt;expression> ::= "(" &lt;expression> ")" |
    </simpara>
    <simpara>
     "!" &lt;expression> |          /* NOT */
    </simpara>
    <simpara>
     &lt;expression> "||" &lt;expression> |  /* OR */
    </simpara>
    <simpara>
     &lt;expression> "&amp;&amp;" &lt;expression> |  /* AND */
    </simpara>
    <simpara>
     &lt;attribute> &lt;operator> &lt;value>
    </simpara>
    <simpara>
     &lt;attribute> ::= /* * n'importe quel attribut  (Title, Author, DocumentType ...) */
    </simpara>
    <simpara>
     &lt;operator> ::= "=" |    /* &eacute;gal */
    </simpara>
    <simpara>
     "&lt;" |    /* moins que (comparaison de type cha&icirc;ne) */
    </simpara>
    <simpara>
     ">" |    /* plus que (comparaison de type cha&icirc;ne) */
    </simpara>
    <simpara>
     "~"      /* recherche par expression r&eacute;guli&egrave;re */
    </simpara>
    <simpara>
    </simpara>
    <para>
     <parameter>query</parameter> permet de s&eacute;lectionner une nouvelle fois
     certains objets dans la liste des objets donn&eacute;s. Contrairement aux
     autres requ&ecirc;tes, celle-ci peut utiliser des attributs non index&eacute;s.
     Le nombre d'attributs retourn&eacute; d&eacute;pend de la requ&ecirc;te de la
     requ&ecirc;te, et des autorisations d'acc&egrave;s aux objets.
    </para>
    <para>
     Voir aussi
     <function>hw_getandlock</function> et
     <function>hw_getobjectbyquery</function>.
    </para>
   </refsect1>
  </refentry>
  <refentry id="function.hw-getandlock">
   <refnamediv>
    <refname>hw_GetAndLock</refname>
    <refpurpose>Retourne les attributs, et verrouille l'objet.</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Description</title>
     <methodsynopsis>
      <type>string</type><methodname>hw_getandlock</methodname>
      <methodparam><type>resource</type><parameter>connection</parameter></methodparam>
      <methodparam><type>resource</type><parameter>objectID</parameter></methodparam>
     </methodsynopsis>
    <para>
     <function>hw_getandlock</function> retourne les attributs, et verrouille
     l'objet  <parameter>objectID</parameter>. Le verrouillage emp&ecirc;chera
     les autres utilisateurs d'y acc&eacute;der, jusqu'&agrave; ce qu'il soit
     deverrouill&eacute;.
    </para>
    <para>
     Voir aussi
     <function>hw_unlock</function> et
     <function>hw_getobject</function>.
    </para>
   </refsect1>
  </refentry>
  <refentry id="function.hw-gettext">
   <refnamediv>
    <refname>hw_GetText</refname>
    <refpurpose>Retourne un document texte.</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Description</title>
     <methodsynopsis>
      <type>int</type><methodname>hw_gettext</methodname>
      <methodparam><type>resource</type><parameter>connection</parameter></methodparam>
      <methodparam><type>resource</type><parameter>objectID</parameter></methodparam>
      <methodparam choice="opt"><type>mixed</type><parameter>
       rootID/prefix
       </parameter></methodparam>
     </methodsynopsis>
    <para>
     <function>hw_gettext</function> retourne le document de l'objet
     <parameter>objectID</parameter>. Si le document poss&egrave;de des ancrages
     qui peuvent &ecirc;tre ins&eacute;r&eacute;s, ils seront d&eacute;j&agrave;
     ins&eacute;r&eacute;s. L'option rootID/prefix peut &ecirc;tre une
     cha&icirc;ne ou un entier. Si c'est un entier, il d&eacute;termine la
     m&eacute;thode d'insertion des liens dans le document. Par d&eacute;faut,
     il vaut 0 et les liens seront construits en fonction du nom de l'objet cible.
     Cela sert beaucoup dans les applications web. Si un lien pointe sur un objet
     avec le nom 'film_internet' le lien HTML sera &lt;A HREF="/internet_movie">.
     La position r&eacute;elle de la source et de la cible dans la hi&eacute;rarchie
     seront ignor&eacute;s. Vous devrez modificer votre site web pour qu'il
     r&eacute;&eacute;crive les URL, comme par exemple
     '/mon_script.php3/film_internet'. 'mon_script.php3' devra analyser
     $PATH_INFO et savoir recherche le document '/mon_script.php3/film_internet'.
     Si vous ne voulez pas de ce comportement, vous pouvez affecter &agrave;
     rootID/prefix n'importe quel prefixe. Dans ce cas, ce sera une cha&icirc;ne.
    </para>
    <para>
     Si <parameter>rootID/prefix</parameter> est un entier diff&eacute;rent de 0
     le lien sera construit avec tous les noms de la hi&eacute;rarchie, en
     commen&ccedil;ant &agrave; l'objet d'identifiant rootID/prefix, et s&eacute;par&eacute;
     par des slash. Si, par exemple, le document 'film_internet' est situ&eacute;
     &agrave; 'a-b-c-internet_movie' et '-' qui sert de s&eacute;parateur
     hi&eacute;rarchique de niveau sur le serveur Hyperwave et le document
     source est situ&eacute; dans 'a-b-d-source' alors, le lien HTML serait:
     &lt;A HREF="../c/internet_movie">. Cela est tr&egrave;s pratique si vous
     voulez t&eacute;l&eacute;charger tout le contenu d'un serveur sur un disque,
     et faire une carte du syst&egrave;me sur votre disque.
    </para>
    <para>
     <function>hw_gettext</function> n'est op&eacute;rationnelle qu'avec des
     documents de pur texte. Elle n'ouvrira pas de canal sp&eacute;cial de
     transfert, et ainsi, bloquera le script le temps du transfert.
    </para>
    <para>
     Voir aussi
     <function>hw_pipedocument</function>,
     <function>hw_free_document</function>,
     <function>hw_documentbodytag</function>,
     <function>hw_documentsize</function> et
     <function>hw_outputdocument</function>.
    </para>
   </refsect1>
  </refentry>
  <refentry id="function.hw-getobjectbyquery">
   <refnamediv>
    <refname>hw_GetObjectByQuery</refname>
    <refpurpose>Recherche un objet.</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Description</title>
     <methodsynopsis>
      <type>array</type><methodname>hw_getobjectbyquery</methodname>
      <methodparam><type>resource</type><parameter>connection</parameter></methodparam>
      <methodparam><type>string</type><parameter>query</parameter></methodparam>
      <methodparam><type>int</type><parameter>max_hits</parameter></methodparam>
     </methodsynopsis>
    <para>
     <function>hw_getobjectbyquery</function> recherche un objet sur tout le serveur
     et retourne un tableau d' object ids. Le nombre maximum d'objet est limit&eacute;
     par <parameter>max_hits</parameter>. Si <parameter>max_hits</parameter> vaut -1
     il n'y a pas de limite.
    </para>
    <para>
     La requ&ecirc;te ne fonctionnera qu'avec des attributs index&eacute;s.
    </para>
    <para>
     Voir aussi
     <function>hw_getobjectbyqueryobj</function>.
    </para>
   </refsect1>
  </refentry>
  <refentry id="function.hw-getobjectbyqueryobj">
   <refnamediv>
    <refname>hw_GetObjectByQueryObj</refname>
    <refpurpose>Recherche un objet.</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Description</title>
     <methodsynopsis>
      <type>array</type><methodname>hw_getobjectbyqueryobj</methodname>
      <methodparam><type>resource</type><parameter>connection</parameter></methodparam>
      <methodparam><type>string</type><parameter>query</parameter></methodparam>
      <methodparam><type>int</type><parameter>max_hits</parameter></methodparam>
     </methodsynopsis>
    <para>
     <function>hw_getobjectbyqueryobj</function> recherche un objet sur tout le
     serveur et retourne un tableau d' object records. Le nombre maximum d'objet
     est limit&eacute; par <parameter>max_hits</parameter>. Si
     <parameter>max_hits</parameter> vaut -1 il n'y a pas de limite.
    </para>
    <para>
     La requ&ecirc;te ne fonctionnera qu'avec des attributs index&eacute;s.
    </para>
    <para>
     Voir aussi
     <function>hw_getobjectbyquery</function>.
    </para>
   </refsect1>
  </refentry>
  <refentry id="function.hw-getobjectbyquerycoll">
   <refnamediv>
    <refname>hw_GetObjectByQueryColl</refname>
    <refpurpose>Recherche un objet dans un groupe.</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Description</title>
     <methodsynopsis>
      <type>array</type><methodname>hw_getobjectbyquerycoll</methodname>
      <methodparam><type>resource</type><parameter>connection</parameter></methodparam>
      <methodparam><type>resource</type><parameter>objectID</parameter></methodparam>
      <methodparam><type>string</type><parameter>query</parameter></methodparam>
      <methodparam><type>int</type><parameter>max_hits</parameter></methodparam>
     </methodsynopsis>
    <para>
     <function>hw_getobjectbyquerycoll</function> recherche un objet sur tout
     le groupe objectID et retourne un tableau d' object records. Le nombre
     maximum d'objet est limit&eacute; par <parameter>objectID</parameter>. Si
     <parameter>objectID</parameter> vaut -1 il n'y a pas de limite.
    </para>
    <para>
     La requ&ecirc;te ne fonctionnera qu'avec des attributs index&eacute;s.
    </para>
    <para>
     Voir aussi
     <function>hw_getobjectbyquerycollobj</function>.
    </para>
   </refsect1>
  </refentry>
  <refentry id="function.hw-getobjectbyquerycollobj">
   <refnamediv>
    <refname>hw_GetObjectByQueryCollObj</refname>
    <refpurpose>Recherche un objet dans un groupe.</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Description</title>
     <methodsynopsis>
      <type>array</type><methodname>hw_getobjectbyquerycollobj</methodname>
      <methodparam><type>resource</type><parameter>connection</parameter></methodparam>
      <methodparam><type>resource</type><parameter>objectID</parameter></methodparam>
      <methodparam><type>string</type><parameter>query</parameter></methodparam>
      <methodparam><type>int</type><parameter>max_hits</parameter></methodparam>
     </methodsynopsis>
    <para>
     <function>hw_getobjectbyquerycollobj</function> recherche un objet sur tout
     le groupe objectID et retourne un tableau d' object records. Le nombre maximum
     d'objet est limit&eacute; par <parameter>objectID</parameter>. Si
     <parameter>objectID</parameter> vaut -1 il n'y a pas de limite.
    </para>
    <para>
     La requ&ecirc;te ne fonctionnera qu'avec des attributs index&eacute;s.
    </para>
    <para>
     Voir aussi
     <function>hw_getobjectbyquerycoll</function>.
    </para>
   </refsect1>
  </refentry>
  <refentry id="function.hw-getchilddoccoll">
   <refnamediv>
    <refname>hw_GetChildDocColl</refname>
    <refpurpose>ids des documents fils d'un groupe.</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Description</title>
     <methodsynopsis>
      <type>array</type><methodname>hw_getchilddoccoll</methodname>
      <methodparam><type>resource</type><parameter>connection</parameter></methodparam>
      <methodparam><type>resource</type><parameter>objectID</parameter></methodparam>
     </methodsynopsis>
    <para>
     <function>hw_getchilddoccoll</function> retourne un tableau avec les id
     des documents fils d'une collection.
    </para>
    <para>
     Voir aussi
     <function>hw_getchildcoll</function>.
    </para>
   </refsect1>
  </refentry>
  <refentry id="function.hw-getchilddoccollobj">
   <refnamediv>
    <refname>hw_GetChildDocCollObj</refname>
    <refpurpose>Attributs des documents fils d'un groupe.</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Description</title>
     <methodsynopsis>
      <type>array</type><methodname>hw_getchilddoccollobj</methodname>
      <methodparam><type>resource</type><parameter>connection</parameter></methodparam>
      <methodparam><type>resource</type><parameter>objectID</parameter></methodparam>
     </methodsynopsis>
    <para>
     <function>hw_getchilddoccollobj</function> retourne un tableau contenant
     les attributs des documents fils du groupe <parameter>objectID</parameter>.
    </para>
    <para>
     Voir aussi
     <function>hw_childrenobj</function> et
     <function>hw_getchildcollobj</function>.
    </para>
   </refsect1>
  </refentry>
  <refentry id="function.hw-getanchors">
   <refnamediv>
    <refname>hw_GetAnchors</refname>
    <refpurpose>Identifiants des ancrages d'un document.</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Description</title>
     <methodsynopsis>
      <type>array</type><methodname>hw_getanchors</methodname>
      <methodparam><type>resource</type><parameter>connection</parameter></methodparam>
      <methodparam><type>resource</type><parameter>objectID</parameter></methodparam>
     </methodsynopsis>
    <para>
     <function>hw_getanchors</function> retourne un tableau contenant les
     identifiants des ancrages du document <parameter>objectID</parameter>.
    </para>
   </refsect1>
  </refentry>
  <refentry id="function.hw-getanchorsobj">
   <refnamediv>
    <refname>hw_GetAnchorsObj</refname>
    <refpurpose>Attributs des ancrages d'un document.</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Description</title>
     <methodsynopsis>
      <type>array</type><methodname>hw_getanchorsobj</methodname>
      <methodparam><type>resource</type><parameter>connection</parameter></methodparam>
      <methodparam><type>resource</type><parameter>objectID</parameter></methodparam>
     </methodsynopsis>
    <para>
     <function>hw_getanchorsobj</function> retourne un tableau d'attributs
     des ancrages du document <parameter>objectID</parameter>.
    </para>
   </refsect1>
  </refentry>
  <refentry id="function.hw-mv">
   <refnamediv>
    <refname>hw_Mv</refname>
    <refpurpose>D&eacute;place un objet.</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Description</title>
     <methodsynopsis>
      <type>int</type><methodname>hw_mv</methodname>
      <methodparam><type>resource</type><parameter>connection</parameter></methodparam>
      <methodparam><type>array</type><parameter>object_id_array</parameter></methodparam>
      <methodparam><type>int</type><parameter>source_id</parameter></methodparam>
      <methodparam><type>int</type><parameter>destination_id</parameter></methodparam>
     </methodsynopsis>
    <para>
     <function>hw_mv</function> d&eacute;places les objets dont les identifiants
     sont pass&eacute;s dans le tableau <parameter>source_id</parameter>, depuis
     le <parameter>source_id</parameter> dans le
     <parameter>destination_id</parameter>. Si destination id vaut 0, les objets
     ne seront plus ins&eacute;r&eacute;s dans le groupe (ni dans le serveur).
     Dans ce cas, si une instance &eacute;tait la derni&egrave;re instance d'un
     objet, l'objet sera effac&eacute;. Si vous voulez effacer toutes les instances
     d'un coup, utilisez <function>hw_deleteobject</function>.
    </para>
    <para>
     La valeur retourn&eacute;e est le nombre d'objet d&eacute;plac&eacute;s.
    </para>
    <para>
     Voir aussi
     <function>hw_cp</function> et
     <function>hw_deleteobject</function>.
    </para>
   </refsect1>
  </refentry>
  <refentry id="function.hw-identify">
   <refnamediv>
    <refname>hw_Identify</refname>
    <refpurpose>Identifie un utilisateur.</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Description</title>
     <methodsynopsis>
      <type>int</type><methodname>hw_identify</methodname>
      <methodparam><type>string</type><parameter>username</parameter></methodparam>
      <methodparam><type>string</type><parameter>password</parameter></methodparam>
     </methodsynopsis>
    <para>
     <function>hw_identify</function> identifie un utilisateur, dont le nom
     d'utilisateur est <parameter>username</parameter> et le mot de passe
     <parameter>password</parameter>. L'identification n'est valide
     que pour la session en cours. Je ne pense pas que cette fonction serve
     souvent. Dans la plupart des cas, il est plus simple de s'identifier lors
     de l'ouverture de la connexion.
    </para>
    <para>
     Voir aussi
     <function>hw_connect</function>.
    </para>
   </refsect1>
  </refentry>
  <refentry id="function.hw-incollections">
   <refnamediv>
    <refname>hw_InCollections</refname>
    <refpurpose>
     V&eacute;rifie qu'un identifiant d'objet est dans un groupe.
    </refpurpose>
   </refnamediv>
   <refsect1>
    <title>Description</title>
     <methodsynopsis>
      <type>array</type><methodname>hw_incollections</methodname>
      <methodparam><type>resource</type><parameter>connection</parameter></methodparam>
      <methodparam><type>array</type><parameter>object_id_array</parameter></methodparam>
      <methodparam><type>array</type><parameter>collection_id_array</parameter></methodparam>
      <methodparam><type>int</type><parameter>return_collections</parameter></methodparam>
     </methodsynopsis>
    <para>
     <function>hw_incollections</function> v&eacute;rifie qu'un ensemble d'objets
     (documents ou groupes) donn&eacute;s par <parameter>object_id_array</parameter>
     fait partie des groupe list&eacute;s par <parameter>object_id_array</parameter>.
     Lorsque le quatri&egrave;me param&egrave;tre
     <parameter>return_collections</parameter> vaut 0, le sous ensemble
     d'identifiants qui font partie d'un groupe (i.e. les documents ou groupes
     qui sont fils d'un ou plusieurs groupe, ou leurs fils, r&eacute;cursivement)
     est retourn&eacute; sous la forme d'un tableau. Cette option permet de mettre
     en valeur la partie de l'arborescence qui contient le r&eacute;sultat d'une
     requ&ecirc;te, dans un sens graphique.
    </para>
   </refsect1>
  </refentry>
  <refentry id="function.hw-info">
   <refnamediv>
    <refname>hw_Info</refname>
    <refpurpose>Informations &agrave; propos d'une connexion.</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Description</title>
     <methodsynopsis>
      <type>string</type><methodname>hw_info</methodname>
      <methodparam><type>resource</type><parameter>connection</parameter></methodparam>
     </methodsynopsis>
    <para>
     <function>hw_info</function> retourne les informations de la connexion
     courante. La cha&icirc;ne retourn&eacute;e a le format suivant :
     &lt;Serverstring&gt;, &lt;Host&gt;, &lt;Port&gt;, &lt;Username&gt;,
     &lt;Port of Client&gt;, &lt;Byte swapping&gt;
    </para>
   </refsect1>
  </refentry>
  <refentry id="function.hw-inscoll">
   <refnamediv>
    <refname>hw_InsColl</refname>
    <refpurpose>Ins&egrave;re un groupe.</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Description</title>
     <methodsynopsis>
      <type>int</type><methodname>hw_inscoll</methodname>
      <methodparam><type>resource</type><parameter>connection</parameter></methodparam>
      <methodparam><type>resource</type><parameter>objectID</parameter></methodparam>
      <methodparam><type>array</type><parameter>object_array</parameter></methodparam>
     </methodsynopsis>
    <para>
     <function>hw_inscoll</function> ins&egrave;re un nouveau groupe, avec
     les attributs <parameter>object_array</parameter> dans le groupe
     <parameter>objectID</parameter>.
    </para>
   </refsect1>
  </refentry>
  <refentry id="function.hw-insdoc">
   <refnamediv>
    <refname>hw_InsDoc</refname>
    <refpurpose>Ins&egrave;re un document.</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Description</title>
     <methodsynopsis>
      <type>int</type><methodname>hw_insdoc</methodname>
      <methodparam><type>resource</type><parameter>connection</parameter></methodparam>
      <methodparam><type>int</type><parameter>parentID</parameter></methodparam>
      <methodparam><type>string</type><parameter>object_record</parameter></methodparam>
      <methodparam><type>string</type><parameter>text</parameter></methodparam>
     </methodsynopsis>
    <para>
     <function>hw_insdoc</function> ins&egrave;re un nouveau document avec
     les attributs <parameter>object_record</parameter>, dans le groupe
     <parameter>parentID</parameter>. Cette fonction ins&egrave;re soit un objet
     avec ses seuls attributs, soit pur objet ascii, avec
     <parameter>text</parameter> s'il est fourni. Si vous voulez ins&eacute;rer
     un document de type g&eacute;n&eacute;ral, utilisez plut&ocirc;t
     <function>hw_insertdocument</function>.
    </para>
    <para>
     Voir aussi
     <function>hw_insertdocument</function> et
     <function>hw_inscoll</function>.
    </para>
   </refsect1>
  </refentry>
  <refentry id="function.hw-insertdocument">
   <refnamediv>
    <refname>hw_InsertDocument</refname>
    <refpurpose>Ins&egrave;re un document dans un groupe.</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Description</title>
     <methodsynopsis>
      <type>int</type><methodname>hw_insertdocument</methodname>
      <methodparam><type>resource</type><parameter>connection</parameter></methodparam>
      <methodparam><type>int</type><parameter>parent_id</parameter></methodparam>
      <methodparam><type>int</type><parameter>hw_document</parameter></methodparam>
     </methodsynopsis>
    <para>
     <function>hw_insertdocument</function> ins&egrave;re un document dans le
     groupe <parameter>parent_id</parameter>. Le document doit avoir
     &eacute;t&eacute; cr&eacute;&eacute; auparavant avec
     <function>hw_new_document</function>. Assurez-vous que les attributs du
     nouveau document contiennent au moins les attributs suivants :
     Type, DocumentType, Title et Name. Vous aurez aussi parfois besoin de
     MimeType. La fonction retourne l'identifiant de l'objet ins&eacute;r&eacute;,
     ou bien &false;.
    </para>
    <para>
     Voir aussi
     <function>hw_pipedocument</function>.
    </para>
   </refsect1>
  </refentry>
  <refentry id="function.hw-insertobject">
   <refnamediv>
    <refname>hw_InsertObject</refname>
    <refpurpose>Ins&egrave;re un object record.</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Description</title>
     <methodsynopsis>
      <type>int</type><methodname>hw_insertobject</methodname>
      <methodparam><type>resource</type><parameter>connection</parameter></methodparam>
      <methodparam><type>string</type><parameter>object_rec</parameter></methodparam>
      <methodparam><type>string</type><parameter>parameter</parameter></methodparam>
     </methodsynopsis>
    <para>
     <function>hw_insertobject</function> ins&egrave;re un objet dans
     le serveur. L'objet peut &ecirc;tre n'importe quel objet Hyperwave
     valide. Reportez-vous &agrave; la documentation HG-CSP pour plus
     de d&eacute;tails sur les param&egrave;tres.
    </para>
    <para>
     Note: Si vous voulez ins&eacute;rer un ancre, l'attribut Position
     doit &ecirc;tre mis &agrave; la valeur start/end (d&eacute;but ou
     fin) ou encore 'invisible'. Les positions invisibles sont n&eacute;cessaire
     si l'annotation n'a pas de liens correspondant dans le texte de
     l'annotation.
    </para>
    <para>
     Voir aussi
     <function>hw_pipedocument</function>,
     <function>hw_insertdocument</function>,
     <function>hw_insdoc</function> et
     <function>hw_inscoll</function>.
    </para>
   </refsect1>
  </refentry>
  <refentry id="function.hw-mapid">
   <refnamediv>
    <refname>hw_mapid</refname>
    <refpurpose>Repr&eacute;sente un id globale en un id virtuel local.</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Description</title>
     <methodsynopsis>
      <type>int</type><methodname>hw_mapid</methodname>
      <methodparam><type>resource</type><parameter>connection</parameter></methodparam>
      <methodparam><type>int</type><parameter>server_id</parameter></methodparam>
      <methodparam><type>int</type><parameter>object_id</parameter></methodparam>
     </methodsynopsis>
    <para>
     <function>hw_mapid</function> repr&eacute;sente l'id d'un objet global de n'importe
     quel serveur Hyperwave, m&ecirc;me si vous ne vous y &ecirc;tes pas
     connect&eacute; avec <function>hw_connect</function>, avec un id d'objet
     local virtuel. Cet id d'objet local peut alors &ecirc;tre utilis&eacute;
     comme n'importe quel id d'objet : par exemple on peut obtenir l'enregistrement
     d'objet avec la fonction <function>hw_getobject</function>. L'id du serveur
     est la premi&egrave;re partie de l'id global (GOid) de l'objet, qui est en
     fait une adresse IP.
    </para>
    <para>
     Note: Afin d'utiliser cette fonction, vous devez lever le flag F_DISTRIBUTED,
     ce qui ne peut &ecirc;tre fait qu'&agrave; la compilation. Par d&eacute;faut,
     il n'est pas lev&eacute;. Lisez les commentaires dans le fichier hg_comm.c
    </para>
   </refsect1>
  </refentry>
  <refentry id="function.hw-modifyobject">
   <refnamediv>
    <refname>hw_Modifyobject</refname>
    <refpurpose>Modifie les attributs d'objet record.</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Description</title>
     <methodsynopsis>
      <type>int</type><methodname>hw_modifyobject</methodname>
      <methodparam><type>resource</type><parameter>connection</parameter></methodparam>
      <methodparam><type>int</type><parameter>object_to_change</parameter></methodparam>
      <methodparam><type>array</type><parameter>remove</parameter></methodparam>
      <methodparam><type>array</type><parameter>add</parameter></methodparam>
      <methodparam><type>int</type><parameter>mode</parameter></methodparam>
     </methodsynopsis>
    <para>
     <function>hw_modifyobject</function> permet d'effacer, d'ajouter ou de
     modifier les attributs d'un objet. L'objet est reper&eacute; par son
     identifiant  <parameter>object_to_change</parameter>. Le premier tableau,
     <parameter>remove</parameter>, est la liste des attributs &agrave; effacer.
     Le deuxi&egrave;me tableau <parameter>add</parameter> est la liste des
     attributs &agrave; ajouter. Afin de modifier un attribut, il vous faudra
     dont l'effacer, puis l'ajouter &agrave; nouveau.
     <function>hw_modifyobject</function> effacera toujours les attributs avant
     de les ajouter, &agrave; moins que la valeur de l'attribut &agrave; effacer
     ne soit pas une cha&icirc;ne, ou un tableau.
    </para>
    <para>
     Le dernier param&egrave;tre d&eacute;termine si la modification est
     r&eacute;cursive ou pas. 1 signifie que la modification est r&eacute;cursive.
     Si un objet ne peut pas &ecirc;tre modifi&eacute;, il sera ignor&eacute;.
     <function>hw_error</function> n'indiquera alors pas toujours d'erreur,
     m&ecirc;me si certains objets n'ont pas pu &ecirc;tre modifi&eacute;.
    </para>
    <para>
     Les cl&eacute;s des deux tableaux sont les noms des attributs. La valeur
     de chaque &eacute;l&eacute;ment peut &ecirc;tre un tableau, ou une cha&icirc;ne
     ou n'importe quoi d'autre. Dans le cas du tableau, la valeur de l'attribut
     est construite en s&eacute;parant chaque &eacute;l&eacute;ment par un
     point virgule. Dans le cas de la cha&icirc;ne, elle sert directement de
     valeur. Une cha&icirc;ne vide provoquera un effacement de l'attribut.
     Dans le cas o&ugrave; la valeur n'est ni un tableau, ni une cha&icirc;ne,
     aucune op&eacute;ration ne sera effectu&eacute;e. Cela est n&eacute;cessaire
     si vous voulez ajouter un attribut compl&egrave;tement une nouvelle valeur pour
     un attribut existant. Si le tableau d'effacement contenait une cha&icirc;ne
     vide comme attribut, le serveur tenterait d'effacer l'attribut, ce qui
     &eacute;chouerai de toute mani&egrave;re, car cet attribut n'existe pas.
     L'ajout de cet attribut &eacute;chouerai aussi. Affecter la valeur de 0
     &agrave; cet attribut ne l'effacerait pas, et l'ajout fonctionnerait.
    </para>
    <para>
     Si vous voulez changer l'attribut 'Nom' de valeur courante 'livres' en
     'articles' vous devrez faire deux tableaux, et appeler
     <function>hw_modifyobject</function>.
     <example>
      <title>Modification d'un attribut</title>
      <programlisting role="php">
&lt;?php
       // $connect est une connexion valide
       // $objid est l'identifiant de l'objet
       $remarr = array("Name" =&gt; "books");
       $addarr = array("Name" =&gt; "articles");
       $hw_modifyobject($connect, $objid, $remarr, $addarr);
?&gt;
      </programlisting>
     </example>
     Afin d'effacer/ajouter une paire nom=valeur aux attributs d'un objet,
     utilisez simplement les tableaux d'effacement et d'ajout, et laissez
     le dernier/troisi&egrave;me param&egrave;tre vide. Si l'attribut est
     le premier de ce nom &agrave; ajouter, donnez une valeur enti&egrave;re
     &agrave; cet &eacute;l&eacute;ment.
     <example>
      <title>Ajouter un nouvel attribut</title>
      <programlisting role="php">
&lt;?php
       // $connect st une connexion Hyperwave valide
       // $objid est l'identifiant de l'objet &agrave; modifier
       $remarr = array("Name" =&gt; 0);
       $addarr = array("Name" =&gt; "articles");
       $hw_modifyobject($connect, $objid, $remarr, $addarr);
?&gt;
      </programlisting>
     </example>
    </para>
    <para>
     <note>
      <simpara>
       Les attributs multilingues, (tels que 'Title'), peuvent &ecirc;tre
       modifi&eacute;s de deux mani&egrave;res : soit en fournissant la
       valeur de ces attributs de mani&egrave;re native (langue :valeur),
       soit en fournissant un tableau avec les &eacute;l&eacute;ments de
       chaque langue, comme d&eacute;crit ci-dessus. L'exemple deviendrai
       alors :
      </simpara>
     </note>
     <example>
      <title>Modifier l'attribut de Titre (Title)</title>
      <programlisting role="php">
&lt;?php
       $remarr = array("Title" =&gt; "en:Books");
       $addarr = array("Title" =&gt; "en:Articles");
       $hw_modifyobject($connect, $objid, $remarr, $addarr);
?&gt;
      </programlisting>
     </example>
     ou
     <example>
      <title>Modifier l'attribut Title</title>
      <programlisting role="php">
&lt;?php
       $remarr = array("Title" =&gt; array("en" =&gt; "Books"));
       $addarr = array("Title" =&gt; array("en" =&gt; "Articles", "ge"=&gt;"Artikel"));
       $hw_modifyobject($connect, $objid, $remarr, $addarr);
?&gt;
      </programlisting>
     </example>
     Pour supprimer l'entr&eacute;e fran&ccedil;aise 'Livres' et ajouter
     l'entr&eacute;e 'Articles' et l'entr&eacute;e allemande 'Artikel'.
     <example>
      <title>Suppression d'un attribut</title>
      <programlisting role="php">
&lt;?php
$remarr = array("Title" =&gt; "");
$addarr = array("Title" =&gt; "en:Articles");
$hw_modifyobject($connect, $objid, $remarr, $addarr);
?&gt;
      </programlisting>
     </example>
     <note>
      <simpara>
       Cet exemple va effacer tous les attributs avec le nom 'Title' et ajouter
       un nouvel attribut 'Title'. Cela peut &ecirc;tre pratique pour effacer
       des attributs r&eacute;cursivement.
      </simpara>
     </note>
     <note>
      <simpara>
       Si vous devez effacer tous les attributs avec un certains nom, vous devez
       passer une cha&icirc;ne vide comme valeur.
      </simpara>
     </note>
    <note>
     <simpara>
      Seuls les attributs 'Title', 'Description' et 'Keyword' g&egrave;re
      correctement le pr&eacute;fixe de langue. Pour les autres attributs qui
      ne portent pas de pr&eacute;fixe de language, le pr&eacute;fixe 'xx' sera
      assign&eacute;.
    </simpara>
   </note>
   <note>
    <simpara>
     L'attribut 'Name' est un peu particuluer. Dans certains cas, il ne peut pas
     &ecirc;tre compl&eacute;tement effac&eacute;. Vous aurez alors le message
     'Change of base attribute' (l'apparition de cette erreur n'est pas
     tr&egrave;s claire). Ainsi, vous aurez &agrave; ajouter une nouvelle
     entr&eacute;e pour Name puis, effacer l'ancien.
    </simpara>
   </note>
   <note>
    <simpara>
     Il ne faut pas encadrer cette fonction par des appels &agrave;
     <function>hw_getandlock</function> et <function>hw_unlock</function>.
     <function>hw_modifyobject</function> le fait de mani&egrave;re interne.
     </simpara>
    </note>
   </para>
   <para>
     Retourne &true; si aucune erreur ne survient, et &false; sinon.
    </para>
   </refsect1>
  </refentry>
  <refentry id="function.hw-new-document">
   <refnamediv>
    <refname>hw_New_Document</refname>
    <refpurpose>Cr&eacute;e un nouveau document.</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Description</title>
     <methodsynopsis>
      <type>int</type><methodname>hw_new_document</methodname>
      <methodparam><type>string</type><parameter>object_record</parameter></methodparam>
      <methodparam><type>string</type><parameter>document_data</parameter></methodparam>
      <methodparam><type>int</type><parameter>document_size</parameter></methodparam>
     </methodsynopsis>
    <para>
     <function>hw_new_document</function> retourne un nouveau document Hyperwave
     avec comme donn&eacute;es <parameter>document_data</parameter> et comme
     attributs <parameter>object_record</parameter>. La longueur de
     <parameter>document_data</parameter> doit &ecirc;tre donn&eacute;es dans
     <parameter>document_size</parameter>. Cette fonction n'ins&egrave;re pas
     l'objet dans le serveur Hyperwave.
    </para>
    <para>
     Voir aussi
     <function>hw_free_document</function>,
     <function>hw_documentsize</function>,
     <function>hw_documentbodytag</function>,
     <function>hw_outputdocument</function> et
     <function>hw_insertdocument</function>.
    </para>
   </refsect1>
  </refentry>
  <refentry id="function.hw-objrec2array">
   <refnamediv>
    <refname>hw_Objrec2Array</refname>
    <refpurpose>Convertit les attributs d'un objet en tableau.</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Description</title>
     <methodsynopsis>
      <type>array</type><methodname>hw_objrec2array</methodname>
      <methodparam><type>string</type><parameter>object_record</parameter></methodparam>
     </methodsynopsis>
    <para>
     <function>hw_objrec2array</function> convertit les attributs
     <parameter>object_record</parameter> d'un objet en un tableau. Les
     cl&eacute;s du tableau seront les noms des attributs. Les attributs
     multiples comme par exemple 'Title', dans diff&eacute;rentes langues,
     seront rassembl&eacute;es dans un autre tableau. Une cl&eacute; est la
     partie gauche d'un attribut. Actuellement, seuls les attributs 'Title',
     'Description' et 'Keyword' sont trait&eacute;s correctement.
    </para>
    <para>
     Voir aussi
     <function>hw_array2objrec</function>.
    </para>
   </refsect1>
  </refentry>
  <refentry id="function.hw-outputdocument">
   <refnamediv>
    <refname>hw_OutputDocument</refname>
    <refpurpose>Affiche hw_document.</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Description</title>
     <methodsynopsis>
      <type>int</type><methodname>hw_outputdocument</methodname>
      <methodparam><type>int</type><parameter>hw_document</parameter></methodparam>
     </methodsynopsis>
    <para>
     <function>hw_outputdocument</function> affiche
     <parameter>hw_document</parameter> sans la balise BODY.
    </para>
   </refsect1>
  </refentry>
  <refentry id="function.hw-pconnect">
   <refnamediv>
    <refname>hw_pConnect</refname>
    <refpurpose>Cr&eacute;e une connexion persistante.</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Description</title>
     <methodsynopsis>
      <type>int</type><methodname>hw_pconnect</methodname>
      <methodparam><type>string</type><parameter>host</parameter></methodparam>
      <methodparam><type>int</type><parameter>port</parameter></methodparam>
      <methodparam><type>string</type><parameter>username</parameter></methodparam>
      <methodparam><type>string</type><parameter>password</parameter></methodparam>
     </methodsynopsis>
    <para>
     <function>hw_pconnect</function> retourne un index de connexion en cas de
     succ&egrave;s, et &false; si la connexion n'a pas
     pu &ecirc;tre cr&eacute;&eacute;e.
     <function>hw_pconnect</function> ouvre une connexion persistante &agrave;
     un serveur Hyperwave. Tous les
     arguments doivent &ecirc;tre entre guillemets, hormis le num&eacute;ro
     de port <parameter>port</parameter>. Les arguments <parameter>username</parameter> et
     <parameter>password</parameter> sont optionnels, et peuvent &ecirc;tre
     ignor&eacute;s. Dans ce cas, aucune authentification ne sera faite,
     (connexion anonyme). Cette fonction retourne un index de connexion qui
     sera utilis&eacute;e par les autres fonctions Hyperwave. Vous pouvez
     ouvrir plusieurs connexions simultan&eacute;es.
    </para>
    <para>
     Voir aussi
     <function>hw_connect</function>.
    </para>
   </refsect1>
  </refentry>
  <refentry id="function.hw-pipedocument">
   <refnamediv>
    <refname>hw_PipeDocument</refname>
    <refpurpose>Retourne un document.</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Description</title>
     <methodsynopsis>
      <type>int</type><methodname>hw_pipedocument</methodname>
      <methodparam><type>resource</type><parameter>connection</parameter></methodparam>
      <methodparam><type>resource</type><parameter>objectID</parameter></methodparam>
     </methodsynopsis>
    <para>
     <function>hw_pipedocument</function> retourne le document Hyperwave d'objet
     id <parameter>objectID</parameter>. Si le document a des ancrages, ils seront
     ins&eacute;r&eacute;s. Le document sera transmis via une connexion de
     donn&eacute;es sp&eacute;ciale, qui ne bloque pas la connexion de
     contr&ocirc;le (ie, le serveur n'attend pas la fin du transfert pour
     rendre la main).
    </para>
    <para>
     Voir aussi
     <function>hw_gettext</function> (insertions),
     <function>hw_free_document</function>,
     <function>hw_documentsize</function>,
     <function>hw_documentbodytag</function> et
     <function>hw_outputdocument</function>.
    </para>
   </refsect1>
  </refentry>
  <refentry id="function.hw-root">
   <refnamediv>
    <refname>hw_Root</refname>
    <refpurpose>Object id de la racine.</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Description</title>
     <methodsynopsis>
      <type>int</type><methodname>hw_root</methodname>
      <void/>
     </methodsynopsis>
    <para>
     <function>hw_root</function> retourne l'object id de la racine.
     Actuellement, cette identifiant est toujours 0. L'ensemble des fils
     de la racine est celui du serveur courant.
    </para>
   </refsect1>
  </refentry>
  <refentry id="function.hw-unlock">
   <refnamediv>
    <refname>hw_Unlock</refname>
    <refpurpose>D&eacute;verrouille un objet.</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Description</title>
     <methodsynopsis>
      <type>int</type><methodname>hw_unlock</methodname>
      <methodparam><type>resource</type><parameter>connection</parameter></methodparam>
      <methodparam><type>resource</type><parameter>objectID</parameter></methodparam>
     </methodsynopsis>
    <para>
     <function>hw_unlock</function> d&eacute;verrouille un document, et laisse
     l'acc&egrave;s aux autres utilisateurs.
    </para>
    <para>
     Voir aussi
     <function>hw_getandlock</function>.
    </para>
   </refsect1>
  </refentry>
  <refentry id="function.hw-who">
   <refnamediv>
    <refname>hw_Who</refname>
    <refpurpose>Liste des utilisateurs actuellement identifi&eacute;s.</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Description</title>
     <methodsynopsis>
      <type>int</type><methodname>hw_who</methodname>
      <methodparam><type>resource</type><parameter>connection</parameter></methodparam>
     </methodsynopsis>
    <para>
     <function>hw_who</function> retourne un tableau contenant la liste des
     utilisateurs actuellement connect&eacute;s au serveur Hyperwave. Chaque
     &eacute;l&eacute;ment du tableau est lui-m&ecirc;me un tableau, qui contient
     l'identifiant de l'&eacute;l&eacute;ment, le nom, le syst&egrave;me, la date
     de connexion (onSinceDate), l'heure de connexion (onSinceTime), la
     dur&eacute;e de connexion (TotalTime ) et self. 'self' contient
     l'&eacute;l&eacute;ment est l'utilisateur qui a appel&eacute; la fonction.
    </para>
   </refsect1>
  </refentry>
  <refentry id="function.hw-getusername">
   <refnamediv>
    <refname>hw_Username</refname>
    <refpurpose>Nom de l'utilisateur actuellement identifi&eacute;.</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Description</title>
     <methodsynopsis>
      <type>string</type><methodname>hw_getusername</methodname>
      <methodparam><type>resource</type><parameter>connection</parameter></methodparam>
     </methodsynopsis>
    <para>
     <function>hw_getusername</function> retourne le nom d'utilisateur
     utilis&eacute; par la connexion.
    </para>
   </refsect1>
  </refentry>
 </reference>
 <!-- Keep this comment at the end of the file
 Local variables:
 mode: sgml
 sgml-omittag:t
 sgml-shorttag:t
 sgml-minimize-attributes:nil
 sgml-always-quote-attributes:t
 sgml-indent-step:1
 sgml-indent-data:t
indent-tabs-mode:nil
 sgml-parent-document:nil
 sgml-default-dtd-file:"../manual.ced"
 sgml-exposed-tags:nil
 sgml-local-catalogs:nil
 sgml-local-ecat-files:nil
 End:
 -->