public.dhe.ibm.compublic.dhe.ibm.com/.../letter/nlv/ko_kr/db2xqrk90.pdf · duration...
TRANSCRIPT
DB2®
XQuery ���
�� 9Linux, UNIX � Windows�
SA30-3021-00
���
DB2®
XQuery ���
�� 9Linux, UNIX � Windows�
SA30-3021-00
���
�!
� ��� � ��� ���� ��� ���� ��, ��� ����� ������.
��� ����
� ��� IBM� �� ��� �� �����. �� ��� ���� ���� ���� ��� �� ��� ����. � ���
��� ��� ��� �� ��� ���� ��� � ����� ���� ��� ��� �� �� ���� ����.
IBM � �� �� �� �� IBM ���� �� �� � ����.
v ���� �� ����� IBM Publications Center(www.ibm.com/shop/publications/order)� ������.
v �� �� IBM ���� ���� IBM Directory of Worldwide Contacts(www.ibm.com/planetwide)� ������.
�� �� ���� DB2 Marketing and Sales�� DB2 �� ����� 1-800-IBM-4YOU(426-4968)� ������
IBM� ��� ���, IBM ��� ��� ���� �� � ��� IBM� ����� ���� ���� ��� ��� ��
� ����� � � ����.
© Copyright International Business Machines Corporation 2006. All rights reserved.
��
�. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ix
�� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xi
� 1 � DB2 XQuery �� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
XQuery �� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
XQuery� SQL �� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
XQuery ��� ���� DB2 ��� � . . . . . . . . . . . . . . . . . . . . . . . . . 3
XQuery � XPath ��� �� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
��� � �� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
�� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
�� �� �� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
�� �� �� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
�� �� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
��� �� �� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
�� ID . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
��� � � �� . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
XDM� � �� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
XML � ���� � QName . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
��� �(QNames) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
���� ��� � ���� . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
�� �� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
���� �� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
�� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
�� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
XQuery� �� ��� ��� �� � . . . . . . . . . . . . . . . . . . . . . . . . . . 19
� 2 � �� ��� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
� �� �� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
��� � . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
�� ��� �� ����� �� . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
� ��� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
anyAtomicType ��� � . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
anySimpleType ��� � . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
anyType ��� � . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
anyURI ��� � . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
base64Binary ��� � . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
boolean ��� � . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
byte ��� � . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
date ��� � . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
dateTime ��� � . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
dayTimeDuration ��� � . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
decimal ��� � . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
double ��� � . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
© Copyright IBM Corp. 2006 iii
duration ��� � . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
ENTITY ��� � . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
float ��� � . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
gDay ��� � . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
gMonth ��� � . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
gMonthDay ��� � . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
gYear ��� � . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
gYearMonth ��� � . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
hexBinary ��� � . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
ID ��� � . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
IDREF ��� � . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
int ��� � . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
integer ��� � . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
language ��� � . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
long ��� � . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
Name ��� � . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
NCName ��� � . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
negativeInteger ��� �. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
NMTOKEN ��� � . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
nonNegativeInteger ��� � . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
nonPositiveInteger ��� � . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
normalizedString ��� � . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
NOTATION ��� � . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
positiveInteger ��� � . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
QName ��� � . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
short ��� � . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
string ��� � . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
time ��� � . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
token ��� � . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
unsignedByte ��� � . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
unsignedInt ��� � . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
unsignedLong ��� � . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
unsignedShort ��� � . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
untyped ��� � . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
untypedAtomic ��� �. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
yearMonthDuration ��� � . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
� 3 � ���� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
�� � . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
boundary-space � . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
���� � . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
Copy-namespaces � . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
default element/type namespace � . . . . . . . . . . . . . . . . . . . . . . . . . . 50
default function namespace � . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
empty order � . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
ordering mode � . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
� ���� � . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
iv IBM DB2 XQuery ���
� 4 � ��� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
��� ��� �� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
�� ���� � �. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
XQuery ����� � � �� . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
��� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
�� � �� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
� �� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
��� �� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
�� ��� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
��� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
�� �� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
�� �� ��� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
���� �� ��� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
�� �� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
�� ��� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
�� ���� �� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
� ��. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
�� ���� �� �� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
�� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
��� ��� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
���� � �� ���. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
� ��� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
�� ��� ��� � ��� . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
�� ��� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
�� ��� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
��. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
�� �� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
�� �� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
��� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
����� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
������� ��� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
� � ����� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
��� � ����� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
��� � ����� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
�� �� ����� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
��� �� ����� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
�� ��� ����� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
�� ����� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
FLWOR ��� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
FLWOR ���� �� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
for� let� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
where� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
order by� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
return� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
FLWOR �� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
�� v
���. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
�� ��� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
��� ��� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
� 5 � �� �� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
��� �� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
abs �� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
avg �� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
boolean �� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
ceiling ��. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
codepoints-to-string �� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
compare �� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
concat �� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
contains �� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
count �� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
current-date �� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
current-dateTime �� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
current-time �� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
data �� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
dateTime �� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
deep-equal �� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133
default-collation �� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
distinct-values �� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
empty �� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
ends-with ��. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
exactly-one �� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
exists �� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
false �� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
floor �� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
implicit-timezone �� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140
in-scope-prefixes �� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140
index-of �� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
insert-before ��. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142
last �� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
local-name �� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
local-name-from-QName �� . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144
lower-case �� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145
matches �� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145
max �� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147
min ��. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148
name �� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149
namespace-uri �� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150
namespace-uri-for-prefix �� . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151
namespace-uri-from-QName �� . . . . . . . . . . . . . . . . . . . . . . . . . . . 152
node-name �� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153
normalize-space �� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153
normalize-unicode ��. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154
vi IBM DB2 XQuery ���
not �� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155
number �� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156
one-or-more �� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156
position �� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
QName �� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158
remove �� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158
replace �� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
resolve-QName ��. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
reverse �� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
root �� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163
round �� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164
round-half-to-even ��. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165
sqlquery �� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166
starts-with �� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167
string �� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168
string-join �� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169
string-length ��. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169
string-to-codepoints �� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170
subsequence �� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171
substring �� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171
substring-after �� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172
substring-before �� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173
sum �� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174
tokenize �� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175
translate �� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177
true ��. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178
unordered �� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178
upper-case �� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179
xmlcolumn �� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180
zero-or-one �� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181
� 6 � �� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183
XQuery ��� �� �� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183
�� �� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185
DB2 �� �����(PDF ��) . . . . . . . . . . . . . . . . . . . . . . . . . . . 187
��� DB2 � �� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189
DB2 ��� �� �� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191
���� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193
IBM� �� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197
�� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199
�� vii
viii IBM DB2 XQuery ���
�
1. ��� �� � � . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2. DB2 XQuery�� �� �� � ���� . . . . . . . . . . . . . . . . . . . . . . 16
3. Generic ��� � . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
4. Untyped ��� � . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
5. String ��� � . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
6. numeric ��� � . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
7. date, time � duration ��� � . . . . . . . . . . . . . . . . . . . . . . . . . 24
8. �� ��� �. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
9. �� � ���, �� 1(xdt:untypedAtomic�� xs:dateTime��� ��) . . . . . . . . . . . . 27
10. �� � ���, �� 2(xs:time�� xs:NOTATION��� ��) . . . . . . . . . . . . . . . 28
11. DB2 XQuery�� �� �� � ���� . . . . . . . . . . . . . . . . . . . . . . 54
12. DB2 XQuery�� � . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
13. XQuery ����� � � �� � . . . . . . . . . . . . . . . . . . . . . . . . 57
14. XQuery�� �� �� � �� ���� EBV . . . . . . . . . . . . . . . . . . . . 60
15. DB2 XQuery�� �� ��� ��� ��. . . . . . . . . . . . . . . . . . . . . . . 62
16. DB2 XQuery�� ���� � . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
17. DB2 XQuery�� ���� � ��� . . . . . . . . . . . . . . . . . . . . . . . . 70
18. DB2 XQuery�� ���� �� ��� . . . . . . . . . . . . . . . . . . . . . . . . 70
19. �� ���� �� �� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
20. ��� �� � �� ��. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
21. �� ��� ��� � XQuery ��� . . . . . . . . . . . . . . . . . . . . . . . 76
22. XQuery�� �� ��� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
23. �� ��� ����� �� � . . . . . . . . . . . . . . . . . . . . . . . . . 78
24. XQuery�� �� ��� . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
25. XQuery�� �� ��� . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
26. XQuery�� �� �� ��� . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
27. XQuery�� ��� ��� . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
28. ����� EBV� ���� �� ���� � . . . . . . . . . . . . . . . . . . . . . 84
29. � � �� �� �� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
30. � ���� �� �� �� . . . . . . . . . . . . . . . . . . . . . . . . . . 89
31. FLWOR ����� for� let� �� . . . . . . . . . . . . . . . . . . . . . . . 107
32. XQuery�� �� �� � �� ���� EBV . . . . . . . . . . . . . . . . . . . 125
33. ����� �� �� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
34. XQuery �� ��� �� �� . . . . . . . . . . . . . . . . . . . . . . . . . 183
35. XQuery ��, �� � ���� ��� �� �� . . . . . . . . . . . . . . . . . . . 184
36. DB2 �� �� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187
37. DB2 Connect �� �� �� . . . . . . . . . . . . . . . . . . . . . . . . . . . 188
38. WebSphere Information Integration �� �� . . . . . . . . . . . . . . . . . . . . . 188
© Copyright IBM Corp. 2006 ix
x IBM DB2 XQuery ���
��
1. XQuery�� �� ��� �� . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
2. products.xml ��� ��� �� ��� . . . . . . . . . . . . . . . . . . . . . . 8
3. DB2 XQuery � �� �� . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
© Copyright IBM Corp. 2006 xi
xii IBM DB2 XQuery ���
� 1 � DB2 XQuery ��
�� ��� �� XQuery ��� ���� DB2® �������� XQuery� �� ��� �����.
XQuery ��
XQuery� W3C(World Wide Web Consortium)� XML ��� ��� �� ���� ���� � �
�� �� ��� �����.
�� ��� �� ��� ��� �� ���� �, XML ���� � ������. XML ����
�� � ��, ����, �� ��� �� ����.
XML ���� ��� �� � ���� XML ���� �� ��� �� ��� �� �� �� �
�� ����. XQuery ��� ��� ��� ��� ���� � � �� � �����. �� �,
�� ��� ���� XML ��� � � � ����.
v � � �� �� �� �� � �� �� XML �
v ���� �� ��� �� ��(�: �� ��� ����)
v �� �� � ��
XQuery�� ��� ��� �� � �����. ��� �� � ��� ��� ��� ���.
��� �� �� � � �� �� � ����. � ��� ��� �� ��� ���� ��� �
� �����. �� �� ��� � � ���� ���� � ���. � ��� ��� �� ��
� ���� ��� �� XQuery ����� � � ����.
2 ���� 1 �� ��� ��� �����. � ���, � ��� �� �� ����. ��
� ��� ���� � �� XQuery ��� ��� ����, ��� � ���� � � ��
�� � � � �� �� � ���� URI� �����. �� ���� price_list �� �
�� ���� � ����. price_list �� ��� price� �� � ���� ��� product
�� �����.
© Copyright IBM Corp. 2006 1
�� ��
47 ���� � 3 � �� ��
55 ���� � 4 � �����
XQuery� SQL ��
DB2� ���� ��� �� XML ��� �� � SQL, XQuery �� SQL XQuery� ��� ���
� �������� XML ��� �� �����. �� � �� �� ��� ����, �� �
� ��� �� �� �� ����.
XQuery
XQuery� � ���� ��� �� XQUERY� �����. � ��� XQuery� ����
�� ��� DB2 ���� XQuery ��� ���� ���� �� ��� ��� �� ����
�. �� �� XQuery ���� ���� � ���� ����� ���� ���. XQuery �
�� EQL ��� ���� � � ���� SQLCODE � SQLSTATE� �����. XQuery
��� ����� ��� ���� ����. XQuery� DB2 ��� � �� XML ���� �
��� ��� ���� ���� ����. XQuery� SQL ����� ��� � ����. � �
, SQL ��� ��� ��� ���� XML ���� XQuery� � � ����. XQuery�
XML ���� ���� � XML � �(�: � � � )� � �� ��� ���� ����
�. XQuery� ��� ����� SQL�� ��� ���� �� � � ��� � ��
� �� �����.
SQL SQL XML ��� �� � ���� ������ �� �����. �� XML ���
���� �� XML �� �� ��� � ���, ��� XML ��� �� �� �
� � ��, ���� �� �� ��� � ����. ��, � �� ���� XML �� �
��� SQL ����� ��� ���� XML � � � ����. XQuery� ���� XML
1. XQuery�� �� ��� ��
2 IBM DB2 XQuery ���
���� ���� SQL ���� ���� �� ���� XML ���� ���� ��� ��
���. XML � �� ���� � ����� ��, SQL XML ��� � ��� ��
�� ��� �� ����.
SQL/XML SQL�� XQuery� ���� �� � �� � ��� �����.
XMLQUERY
XMLQUERY� XQuery ���� �� ��� XML ���� ���� ��� ����
�. � ���� SQL � XQuery ���� XQuery ����� ��� � ����
� �����. XMLQUERY� ���� XML SQL ��� ���� ��� � ��
� � ����.
XMLTABLE
XMLTABLE XQuery ���� ���� XML ������ SQL ���� � �� �
�� ����, SQL�� � ��� � ����.
XMLEXISTS
XMLEXISTS� XQuery ���� �� ��� ���� � ���(�� �� � ���)
� ����� ��� ��� SQL �����.
�� ��
�XQuery ��� ���� DB2 ��� ��
XQuery ��� ���� DB2 ��� ��
XQuery��, ��� �� db2-fn:sqlquery� db2-fn:xmlcolumn � ��� ���� DB2 ��������
�� XML ���� � � ����.
�� db2-fn:xmlcolumn �� XML ��� ���, db2-fn:sqlquery� SQL fullselect� ���� ��
XML � ����.
db2-fn:xmlcolumn
db2-fn:xmlcolumn ��� ��� �� � XML ��� ���� �� ��� �� ���
��� � �� XML � ���� �����. � ��� �� ����� �����. ��
��� �� � XML� ��� �� ��� ���. � ��� ���� � ��� ���
� ��� �� XML ��� ��� �� � ����.
�� ��� ��� db2-fn:xmlcolumn ��� ���� BUSINESS.ORDERS ����
PURCHASE_ORDER ��� �� �� �� ��� �����. � �� � �� ���� ��
�� � �� ��� �� ���� ��� �����. ��� � � ���� ��� �� �� �
�����.
db2-fn:xmlcolumn(’BUSINESS.ORDERS.PURCHASE_ORDER’)/shipping_address/city
db2-fn:sqlquery
db2-fn:sqlquery ��� fullselect� ���� �� �� ��� fullselect�� ���� XML
� 1 � DB2 XQuery �� 3
� �� XML ���� �����. fullselect� �� ��� � ��� ��� �� ��� �
�� � XML�� ���. fullselect� ���� SQL �� ���� XML ���� XQuery
� ��� � ����.
�� ��� BUSINESS.ORDERS�� ����� PURCHASE_ORDER�� XML ��� ���
�. � �� ��� db2-fn:sqlquery ��� ���� �� ��� 2005� 6� 15� �� �� �
�� ���� SQL� �����. � �� � �� ���� ���� � �� ��� �� ��
�� ��� �����. ��� � � 6� 15�� ���� ��� �� �� ������.
db2-fn:sqlquery("SELECT purchase_order FROM business.ordersWHERE ship_date = ’2005-06-15’ ")/shipping_address/city
����: db2-fn:sqlquery �� db2-fn:xmlcolumn ��� ���� XML ����� �� � ���
���� �� XML � ��� � ����. ��� ��� �� � ��� �� ���� �
���� ����. �� �, ��� XML ��� �� ���� �� �� (�: 36)� �
� �� ����.
SQL XQuery� �� ���� ��� �� ��� ����. db2-fn:sqlquery � db2-fn:xmlcolumn �
�� ���� ��� ��� ��� �� �� ���.
SQL� ���� �� ��� ����.
���� SQL��� ���� �� �� ID� ���� ���� �����. ���, SQL ��
� � ��� � �� ��� BUSINESS.ORDERS � PURCHASE_ORDER� �� ����
� ��� ����. SQL��� ��� business.orders � purchase_order� �� ��� �
�� ��� � ���, SQL�� ���� �� ���� ���� �����. (�� �� ��
�� �� ���� SQL�� �� ID�� ���� �� �� � �� ����.)
XQuery� ����� ��� ����.
XQuery� ��� �� ���� ���� ����. ��� �� ��� XQuery� SQL� ��
���� � ��� � � ����. db2-fn:sqlquery� �� �� SQL ��� ����,
�� �� ���� ���� SQL �� ���� �� �� �����. ��� db2-fn:sqlquery
���� ��� � business.orders� �� � purchase_order � ship_date� ��� �� �
��� ��� � ����. �� db2-fn:xmlcolumn� ����� SQL ��� ����. ���
�� ����� ���� ��� �� ���� XQuery �� ������. ��� � �
BUSINESS.ORDERS.PURCHASE_ORDER��� � � db2-fn:xmlcolumn� ������
���� ���� ���.
�� ��
2 ���� �XQuery� SQL ���
�� ��
180 ���� �xmlcolumn ���
166 ���� �sqlquery ���
4 IBM DB2 XQuery ���
XQuery � XPath ��� ��
XQuery ��� XQuery � XPath ��� ��(XDM)� ���� �� ���� ��� ��� ��
�� �����. XDM �� ��� XML �� �� ��� � ��� �����. ��� �� ��
��� ���� � ���� XQuery�� ���� �� ���� � �����.
XDM��� XML ��� �� �� � ��� �� ��� �� � XQuery� ���� ����
�� �����. ��� ��� � �� �� �� XML ��� �� ���� XDM� ���� ���
��. ��� �� �� �� �� �� �� �� �� �� �� ����.
XDM �� ��� ���� �����.
�� ��
14 ���� �XDM� � ���
��� � ��
XDM� ���� ������. ���� 0� �� ��� �� �����. �� �� �� ���
��.
���� ��, �� �� ��� �� � ��� �� � ����. �� �, �� ����
��.
v 36
v <dog/>
v (2, 3, 4)
v (36, <dog/>, "cat")
v ()
v XML ��
�: ��� �� ��� ���� XQuery�� ���� � �� � ���� ��� �� ���� ��
��. ���� � �� �� �����. �� ���� �� �� � ����. � �� � �
���� ����. ��� ���� �� �� ��� � �� ���� �����. ��
�, ��� (36) �� 36 �� � ����.
���� ��� ����. ���� ���� � � �� ��� �� � � ������. ��
�, ��� (2, 3)� ��� (3, 5, 6)� ���� � � �� ��� (3, 5, 6, 2, 3)���. ���� ��
� ��� ����, � ��� � � (3, 5, 6, (2, 3))� �� ����.
��� 0� ���� � ����� ���. � ���� ���� � � �� ��� ���� � ��
���.
�� ��
73 ���� ���� ����
� 1 � DB2 XQuery �� 5
64 ���� ����� �� ����
82 ���� ��� ���
�� �
�� XML ��� ��� �� �� ��� �� ������. ��� ��� � ��, �
�, 10��, �� � �� �� �� �����. ��� � � �� �� � ��� ��� ����
�.
��� �, �� ID� ��� ����. �� � �� ���(�: �� 7) � �� �
���� �����.
�� �� �� � � �� � �� ��� ����.
v ���� ����� ����� �� ���. ���� ����� �� ���� ��� ��
���.
v �� �� �� ���� ���. XQuery�� ��� �� �� �����. �� �, �� ���
�� �� �����.
– ″this is a string″(� xs:string)
– 45(� xs:integer)
– 1.44(� xs:decimal)
v ����� ��� �� ���. �� �, �� ����� ��� �� ″2005-01-01″��� � xs:date
� � �����.
xs:date("2005-01-01")
v �� �� fn:true() � fn:false()�� ���. ��� ��� �� true� false� �����.
� ���� ��� � ����.
v �� �� ���(�: �� ��� � ���)�� �����.
�� ��
58 ���� �����
21 ���� � 2 � �� ����
55 ���� � 4 � �����
26 ���� ��� ��� �� ����� ���
�� ��
61 ���� �����
178 ���� �true ���
138 ���� �false ���
6 IBM DB2 XQuery ���
�� �� ��
���� ��� �� ��� �� ���� � �� ����� �� � �� �� ��� � ��
�� ��� �� �� �� ��� ���. �� ��� � ��� �� ��� ���, �� �� ��
� � ��� �� ��� ����. DB2� 6 ��� ��(��, �, � , ���, �� ��� � ��)�
�����.
�� XML �� products.xml�� products�� �� �� ��, �� product �� ����.
� product ��� pid(product ID)�� � description��� � �� ����. description
��� name � price�� � �� ����.
<products><product xmlns="http://posample.org" pid="10">
<description><name>Fleece jacket</name><price>19.99</price>
</description></product><product xmlns="http://posample.org" pid="11">
<description><name>Nylon pants</name><price>9.99</price>
</description></product>
</products>
8 ���� 2� products.xml� ��� ��� ����� �����. � �� �� ��(D), �
��(E), � ��(A) � ��� ��(T)� ����.
� 1 � DB2 XQuery �� 7
��� � � ���, ��� � ��� � ��� �� � ���� �� ��� �� �� ���
���. � ��� � product� products� � �����. � description product� � �
����. � name price� � description� � �����. � Fleece Jacket ��� �
�� � name� � ���, ��� �� 19.99� � price� � ����.
�� ��
12 ���� ���� �� ���
9 ���� ��� ���
�� ��
66 ���� ��� ����
76 ���� ��� ��� ��� � ����
pid
<name>
Fleece jacket Nylon pants19.99 9.99
<name><price> <price>
<product> <product>
products.xml
<description> <description>
pid
<products>
E
E
D
A A
E
E
T T T T
EE E
E
E
2. products.xml ��� ��� �� ���
8 IBM DB2 XQuery ���
�� �� ��
� ���� ��� � � ���� �� ��� ����. �� �, ��� �� ���� ��� �,
� ��, � ��, � � ��� ���� �� ��� ��� � ����. �� ��� �� ��
� �� ���� �� ��� ����.
��� �� �� �� � �� ��� �� � ����.
v �� �� - QName�� ���� ��� �
v � �� - �� ��� � ��
v �� �� - ��� ��(���) �(�� ����� �)
v �� - �� ��� � �� �� ���
v �� - �� ��� ��� � ��� ��
v ��� � - ���� �� � �� ��
v �� � - ���� �� � �� 0� ��� �� �� � �� ���
v � � �� ���� - ��� ��� � � � ����
v ��� - ��� ��
�� ��
��� ���
13 ���� ���� � � �� �
�� ��
DB2� 6 ��� ��(��, �, � , ���, �� ��� � ��)� �����.
�� ��
7 ���� ��� �� ���
�� ��
85 ���� �������
�� ��
�� ��� XML ��� �����.
�� ��� 0� ��� � ��� �� � ����. � � � ��, �� ��� ��, �� �� �
��� ��� �� � ����.
�� ��� �� �� ��� �� � ��� ��� �� ��� ��� � ����. ��
� � xs:string���. �� ��� � �� ���, �� � � �
xdt:untypedAtomic���.
�� ���� �� � �� �� ��� ����.
v � , �� �� � � ��
� 1 � DB2 XQuery �� 9
v ��
v �
�� ��� XQuery ����� ��� ������ ���� � � ����. �� ��� ����
db2-fn:xmlcolumn ����� �����.
�� ��
9 ���� ��� �� ���
�� ��
97 ���� ��� �� ������
180 ���� �xmlcolumn ���
�� ��
� ��� XML �� �����.
� ���� � ��� ��� �� ���, 0� ��� � ��� �� � ����. � � � �
�, �� ��� ��, �� �� � ��� ��� �� � ����. �� � � ��� � ��� �
� � � ����. �� � ��� � � � � � � ����. � ��� � �� ��� QName
� �� ���.
� ���� �� � �� �� ��� ����.
v �� �
v � , �� �� � � ��
v � �
v � , �� �� � � ��
v � , �� �� � � ��
v ��
v �
v � � � ����
� ��� XQuery ����� � �� ��� ������ ���� � � ����.
� ��� � � �� ��� � �� ��� ��� �����. �� �, � ���
� � �� �� xs:decimal � �� ″47.5″� �� �, � 10�� 47.5���. �
��� � � �� ��� xdt:untyped � �� � �� ���, �
xdt:untypedAtomic���.
�� ��
9 ���� ��� �� ���
10 IBM DB2 XQuery ���
�� ��
� ��� XML � � ����.
� ���� � ��� ��� �� ����. � � �� � ��� � ��� � �� �
� ����� � � � � �� ��� �����.
� ���� �� � �� �� ��� ����.
v �� �
v � , �� �� � � ��
v � �
v ��
v �
� ��� XQuery ����� � �� ��� ������ ���� � � ����.
� ��� � � �� ��� � �� ��� ��� �����. �� �, � ���
� � �� �� xs:decimal �� ″47.5″� �� �, � 10�� 47.5���.
�� ��
9 ���� ��� �� ���
�� ��
96 ���� ���� � ������
87 ���� �� � ������
��� ��
��� ��� XML �� ��� �����.
��� ���� � ��� ��� �� ����. �� �� � ��� � ��� ��� �� �
� ���� ����. �� �� � ��� � � � �� ��� ��� �� ��� ��� ���
��. � ��� ��� �� ��� �����.
��� ���� �� � �� �� ��� ����.
v ��, �� �� � � ��
v � , �� �� � � ��
��� ��� XQuery ����� ��� ������ ���� � ��� � � ������ ��
�� � � ����.
�� ��
9 ���� ��� �� ���
�� ��
98 ���� ���� �� ������
� 1 � DB2 XQuery �� 11
�� ��� ��
�� ��� ��� XML �� ���� �����.
�� ��� ���� � ��� ��� �� ����. �� ���� ���� ?> ��� �� �
����. �� ���� ��� NCName�� ���. (��� ���� ��� �� ����� �
��� � �����.)
�� ��� ���� �� �� �� ��� ����.
v ��
v ��
v � ��, �� �� � � ��
�� ��� ��� XQuery ����� � �� ��� ������ ���� � � ����.
�� ��
9 ���� ��� �� ���
�� ��
99 ���� ��� ��� ������
�� ��
�� ��� XML ��� �����.
�� ���� � ��� ��� �� ����. �� ��� ��� �� ″--″(��� �)� ��
� ���, ��� ��� ���(-)� � � ����.
�� ���� �� � �� �� ��� ����.
v ��
v � , �� �� � � ��
�� ��� XQuery ����� � �� ��� ������ ���� � � ����.
�� ��
18 ���� ����
9 ���� ��� �� ���
�� ��
101 ���� ��� ������
��� �� ��
�� ��� �� ��� �� ���� ��� ����, � ���� � ��� � ���� �� ���
��. �� ��� �� �� ��� � ��� XML� ��� � ��� ���� ��� �����.
��� �� ��� �����.
12 IBM DB2 XQuery ���
v �� ��� � �����.
v � ��� � ���� �� �����.
v � ��� ��� � �� �� ��� �����. � ��� ��� ��� �����, � ���
��� ���� �� ��� ����.
v � � ��� ��� �� �� ���� � ��� �� �����.
v ��� � �� � � � � �� ��� � ���� �� �����.
�� ��
7 ���� ��� �� ���
�� ID
� ���� ��� ID� ����. ��� � � � ��� �� ����. ���, ��
ID� ��� ����.
�� ID� ID � � �� ����. XML ��� �� �� � �� ID � � �� �� �
����. �� �� ID� ���� �� ��� ���� ����, ���� � � � ����.
�� ID� �� �� ���� ���� � �����.
v �� ��. �� ID� is ���� ��� ID� �� ��� � �����.
v �� ���. �� ID� �� ���� ��� ��� ���� � �����.
v ��� ���. �� ID� union, intersect �� except ���� ��� ��� ���� � ����
�.
�� ��
83 ���� ��� ���
66 ���� ��� ����
73 ���� ���� ����
��� �� � � ��� �
� ���� � �� � � � ����. ��� �� ��� �� XQuery ��(��� �)
� ��(fn:data, fn:string � fn:deep-equal �)� ��� �����.
� 1. ��� �� � �
�� �� ��� � �� �
�� �� � � � ��� ��� �� ��� ��� �
� xs:string ��� �� ���
�� � � � ��� ��� �� ��� ��� �
� xdt:untypedAtomic ��� �� ���
� 1 � DB2 XQuery �� 13
� 1. ��� �� � � (��)
�� �� ��� � �� �
�� � ��
��� �v �� ��� �(xs:decimal �) �� �� ���
�� �(��� xs:decimal ″temperature″ �)
� �� �� �� ��� �, �� �
� XML ���� �� �� � ���� ��
���.
v �� ��(���� � � � �)� �� � �
� �� �� �� �� ��� �, ��
�� ���� �� ��� ��� ��
xs:string ��� �� ������.
v ��(���� � � � �)� ���� �� �
� �� �� �� ��� �, �� ��
� �����.
v � �(���� ��)� ����� ��� ��
�� �� �� ��� �, �� ��
�� ��� �� � � �� �� ��� ��
� �� �� � ���.
v �� ��� �(xs:decimal �) �� �� ���
�� �(��� xs:decimal ″temperature″ �)
� �� �� �� ��� �, � ��
� �� � ����� ��� �� �(�
: xs:decimal)�� ���� � ���.
v �� ��(���� � � � �)� �� � �
� �� �� �� �� ��� �, �
�� ��� �� � � �� �� ��� ��
� �� xdt:untypedAtomic ��� �� ���
���.
v ��(���� � � � �)� ���� �� �
� �� �� �� ��� �, � �
������.
v � �(���� ��)� ����� ��� ��
�� �� �� ��� �, �� � �
�� ��� � � ����� ��(�� �,
fn:data ��� ����)� � � ��� ���.
�� � ��
� � ���
�
�� ��� �� � � �� �� ��� ��� �
� xs:string ��� �� ���
�� ��� �� � � �� �� ��� ��� �
� xdt:untypedAtomic ��� �� ���
�� � ��
��� �
�� XML ��� � � ���� xs:string ���
�� ���
�� � �� � ��� �� � � ��� �
�� ���� � . �� �, � � xs:decimal �
��� �� ��� �, � � � ��
�� ″74.8″� �� � ��� 74.8� ���.
�� � ��
� � ���
�
�� XML ��� � � ���� xs:string ���
�� ���
�� XML ��� � � ����
xdt:untypedAtomic ��� �� ���
��� xs:string ��� �� ��� �� xdt:untypedAtomic ��� �� ��� ��
�� xs:string ��� �� ��� �� xs:string ��� �� ��� ��
�� ��� xs:string ��� �� ��� �� xs:string ��� �� ��� ��
�� ��
9 ���� ��� �� ���
58 ���� �����
12 ���� ���� �� ���
9 ���� ��� ���
XDM� �� ��
XQuery ���� � � XDM� �����, � ����� ����� �� XML ���� ��� �
����.
14 IBM DB2 XQuery ���
� �� �� �� ��� � �� (XDM� ���)� XML ���� �����. � �� � �
�� �� � �� ��� ����� ����. ��, � ��� � � �� �� (�: 17)� ��
� ��� � � �� �� ���� � � ����.
XQuery� XDM� �� ��� ��� ���� ����. XDM� XML ���� � ���� ��
��� �� ��� �� ����. �� �, CLP(��� ����)� � �� ��� ��� � ��
� � ��� �� � ��� ��� ���� �����. �� �, CLP�� �� XQUERY (1, 2, 3)
� ���� ���� � � �� ����.
123
� �� SQL/XML �� XMLSERIALIZE� ���� ��� � ����.
�� ��
5 ���� �XQuery � XPath ��� ���
XML �� ���� � QNameXML � ����� �� ���� �� �����. XML � ����� � ���� URI� ��
�� �� �����. � ����� XQuery�� �, � , ��� � � ��� ���� ��
�� ��� �����. � ���� � �� ���� �� ��� �(QName)��� ���.
�� ��
53 ���� �� ���� ��
91 ���� �� ���� � � �
94 ���� �� � �� � � � �����
��� ��(QNames)
QName � � ���� � �� �� ��� � ���. � ���� � �� �� � �
��� �����. � ���� � �� URI(Universal Resource Identifier)� ���� URI� ��
� ��� �����.
��� ���� �� XQuery� QName� �� � ���� � �� ��� URI� �����.
�� QName � ���� URI� �� �� �����. � ���� URI� �� �� �
QName �����. � � �� �� � �� � � ���� URI� ��� �� QName
����.
�� �� QName� �����.
v ns1:name
v ns2:name
v name
� 1 � DB2 XQuery �� 15
� ��� ns1 URI http://posample.org� ��� � ���� . � � ns2� URI
http://mycompany.com� ���� ����. ��� � � ����� ns1 � ns2� ��� URI�
�� � URI���. � � � � �� � name���.
<ns1:name>This text is in an element named "name" that is qualifiedby the prefix "ns1".</ns1:name>
<ns2:name>This text is in an element named "name" that is qualifiedby the prefix "ns2".</ns2:name>
<name>This text is in an element named "name" that is in the defaultelement namespace.</name>
� ��� � � �� � name� ����� � � ����� ���� ��� ���� �
���. ���� ���� �� � ns1:name ns1� ��� URI� �� � name� ���� �
�� ����. ����� � ns2:name ns2� ��� URI� �� � name� ���� ���
����. � �� �� � name � �� ���� ����� ��� � � ����� ��
���. �� URI� ���� � � �� ���� ��� ��� �����.
QName(��� �) W3C recommendation Namespaces in XML�� ��� ��� �����.
�� ��
����� ��� � �����
�� ��
53 ���� �� ���� ��
161 ���� �resolve-QName ���
���� ��� �� ����
� ���� � �� � ���� �� �� URI� �����. �� ����� QName� ���
���� ��� � ���� � ��� ���� ��� � ������ ���. ���� ���
� ����� �� ���� �� ���� ����� ���� ���� �����.
�� � ���� � �� �� ��� ����. � � �� � � �� � �������
��� �� � ����. DB2�� �� ����� ���� �� �� � ���� � �� �
���.
� 2. DB2 XQuery�� �� �� � ����
��� URI ��
xml http://www.w3.org/XML/1998/namespace XML �� � ����
xs http://www.w3.org/2001/XMLSchema XML �� � ����
xsi http://www.w3.org/2001/XMLSchema-instance XML �� ��� � ���
�
fn http://www.w3.org/2005/xpath-functions ��� �� � ����
xdt http://www.w3.org/2005/xpath-datatypes XQuery � � ����
db2-fn http://www.ibm.com/xmlns/prod/db2/functions DB2 �� � ����
16 IBM DB2 XQuery ���
�� �� � ���� ��, ���� ��� � ���� ��� �� � ����� ��� �
����.
v �� � ��� � ���� � �� ��� � ���� �� ���� ��. �� �� �
���� � � ���� � � ns1� URI http://mycompany.com� ��� ��.
declare namespace ns1 = "http://mycompany.com";
�� �� default element/type namespace � � �� �� ��� � �� �� URI� ��
���.
declare default element namespace "http://posample.org";
v � ������� � ���� � � �� ��. �� �� � � �� � ��� � �
ns2� URI http://mycompany.com� ���� � ���� � � � ���� � ������
��.
<ns2:price xmlns:ns2="http://mycompany.com">14.99</ns2:price>
v SQL/XML�� ���. SQL/XML �� � ���� ��� �� � ����.
– SQL/XML �� �� � ����
– SQL/XML ����� � �� SQL/XML ����� �� � ����
SQL/XML� ���� � ����� � � �� � ������ �� � ���� ��� �
�� � ����. � ��� �� � ����� � ������ � ���� � � ��
��� � ����.
�� ��
15 ���� ���� �(QNames)�
�� ��
53 ���� �� ���� ��
91 ���� �� ���� � � �
94 ���� �� � �� � � � �����
�� ��
XQuery �� �� �� ���� �����.
���� ��
XQuery� ����� ���� �����.
XQuery� ��� ���� ���� ���� ����. XQuery ����� � ��� ��� ��
� ����.
�� ��
3 ���� �XQuery ��� ���� DB2 ��� ��
� 1 � DB2 XQuery �� 17
��
��� ��� ��� ��� �� ��� ���� XQuery ����� �� � ���� � ���
�����. �� �� ��(X‘20’), ��� ��(X‘0D’), � ���(X‘0A’) � �(X‘09’)�� � ���.
��� ���� �� � ��� ���� ����� �� ���� � �� ����.
v ��� �� ���� ����.
v �� �� ���� �� ��� ��� ��� ��� ���� ���.
v ��� � ������ ����. � �� boundary-space � � ������� ��� ��
� ��� ����.
�� �, �� ������ �� � � ��� ���.
v name- name� � � �����. �� ���� name� �� QName(��� �)�� ���� �
��� ��� ��� �����.
v name -name� � � ��� ����. �� ���� � name QName�� ��� �� ��
(-)� ���� �� �� � name � QName�� ����.
v name-name� � � ��� ����. ��, QName��� ���(-)� ��� ����� � ���
�� QName�� �� �����.
v �� ���� � � � �����.
– 10 div3
– 10div3
��� ����� �� ���� � ��� �� ���� �� � ����.
�� ��
92 ���� �� � ������� ���� �� ���
48 ���� �boundary-space ��
��
�� � � � �� ���� �����. �� �� ���� ��� �� ����.
�� �� (: :) ��� ��� � ���. �� �� XQuery� �����.
(: A comment. You can use comments to make your code easier to understand. :)
DB2 XQuery�� ��� ����� �� � �� ��� �����.
v �� �� � �� ��� ���� �� ��� �� ����. �� � �� �� ���� �
� ��� �� �� �����.
v �� ����� ����� ���� ����.
v �� �� �� � ��� �� ���� ��� � �� ���� (: :)� �� ���.
�� �� �� �� � � � ��� �� ��� �����.
18 IBM DB2 XQuery ���
v (: is this a comment? ::)� �� �����.
v (: is this a comment? ::) or an error? :)� �� �� (: :)� �� �� ���� � �
�����.
v (: commenting out a (: comment :) may be confusing, but often helpful :)� �� ��
�� ��� ����� �� �����.
v "this is just a string :)"� �� ������.
v (: "this is just a string :)" :)� � � �����. �����, "this is another string (:"
�� ������ (: "this is another string (:" :)� � � �����. ��� ���
� � �� �� �� �� ��� � � ����.
�� ��
12 ���� ��� ���
�� ��
101 ���� ��� ������
XQuery� �� ��� ��� �� �
DB2 XQuery� �� �� ��� �� ��� ��� �� ��� ������.
v XQuery 1.0
World Wide Web Consortium. XQuery 1.0: An XML Query Language. W3C Candidate
Recommendation, 03 November 2005. www.w3.org/TR/2005/CR-xquery-20051103/� ������.
v XQuery 1.0 � XPath 2.0 ��� ���
World Wide Web Consortium. XQuery 1.0 and XPath 2.0 Functions and Operators. W3C Candidate
Recommendation, 03 November 2005. www.w3.org/TR/2005/CR-xpath-functions-20051103/� ���
���.
v XQuery 1.0 � XPath 2.0 ��� ��
World Wide Web Consortium. XQuery 1.0 and XPath 2.0 Data Model. W3C Candidate
Recommendation, 3 November 2005. www.w3.org/TR/2005/CR-xpath-datamodel-20051103/� ���
���.
v XML �� �� ��
World Wide Web Consortium. XML Query Use Cases. W3C Working Draft, 15 September 2005.
www.w3.org/TR/xquery-use-cases/� ������.
v XML ���
World Wide Web Consortium. XML Schema, Parts 0, 1, and 2. W3C Recommendation, 2 May 2001.
www.w3.org/TR/2001/REC-xmlschema-0-20010502/, www.w3.org/TR/2001/REC-xmlschema-1-20010502/
� www.w3.org/TR/2001/REC-xmlschema-2-20010502/� ������.
� 1 � DB2 XQuery �� 19
v XML ��
W o r l d W i d e W e b C o n s o r t i u m . N a m e s p a c e s i n X M L . W 3 C R e c o m m e n d a t i o n .
www.w3.org/TR/REC-xml-names/� ������.
20 IBM DB2 XQuery ���
� 2 � �� ���
XQuery� ��� ���� ����, ��� � ��� ��� �� ��� �� ��� � ����
�. DB2 XQuery� � ����� XML ��� �� � � XQuery� �� ��� �� ����
�.
XML ��� �� � � ���� http://www.w3.org/2001/XMLSchema� ���, � ��� �
� �� � ���� � �� xs���. �� �� �� �� ��� xs:integer, xs:string � xs:date
� ����.
XQuery� �� ��� � � ���� http://www.w3.org/2005/xpath-datatypes� ���, � �
����� �� �� � ���� � �� xdt���. XQuery� �� ��� �� �� ���
xdt:untypedAtomic, xdt:yearMonthDuration � xdt:dayTimeDuration� ����.
� ��� ��� ��� ��� ������ � �� �� ��� �� � ���� � ���
� �� �� �� ��(lexical form)� ����.
�� ��
183 ���� �XQuery ��� �� ���
�� �� ��
DB2 XQuery � �� ��� XQuery ����� �� � �� �� �� �����.
22 ���� 3� �� ��� ��� �� � ��� �� �����. �� �� �
xdt:anyAtomicType ��� ��� �����. ��� � ��� �� � �� �� ��
���.
© Copyright IBM Corp. 2006 21
��� ��
DB2 XQuery�� �� �� ��� ����. generic, untyped, string, numeric, date, time, duration
� ��
xs:NOTATION
xs:QName
xs:anyURI
xs:base64Binary
xs:hexBinary
xs:boolean
xs:positiveInteger
xs:unsignedByte
xs:unsignedShort
xs:unsignedInt
xs:unsignedLong
xs:float
xs:double
xs:decimal
xs:integer
xs:string
xs:anySimpleType
xdt:untyped
xdt:untypedAtomic
xdt:anyAtomicType
xs:anyType
xs:nonNegativeInteger
xs:byte
xs:short
xs:int
xs:long
xs:negativeInteger
xs:nonPositiveInteger
xs:gMonth
xs:gDay
xs:gMonthDay
xs:gYear
xs:gYearMonth
xdt:dayTimeDuration
xdt:yearMonthDuration
xs:token
xs:normalizedString
xs:NCName
xs:Name
xs:NMTOKEN
xs:language
xs:ENTITY
xs:IDREF
xs:ID
xs:duration
xs:time
xs:date
xs:datetime
3. DB2 XQuery � �� ��
22 IBM DB2 XQuery ���
Generic ��� ��
� 3. Generic ��� �
�� ��
30 ���� �anyType ��� �� xs:anyType ��� � 0� ��� ��� 0� ��� ��
�� � �� ���� �����.
30 ���� �anySimpleType ��� �� xs:anySimpleType ��� � ��� �� �� � ��
����� ����. � ��� � �� �� �� ��
�� ��� �����. �� �� ���� �� � �
��� � � ����.
30 ���� �anyAtomicType ��� �� xdt:anyAtomicType ��� � �� � �� � �� �
���� ����. � ��� � �� �� �� �� �
�� �����. �� �� ���� ��, �� �� �
�� � �� � �� �� ���.
untyped ��� ��
� 4. Untyped ��� �
�� ��
44 ���� �untyped ��� �� xdt:untyped ��� � XML ��� �� � ��� �
��� �����.
44 ���� �untypedAtomic ��� �� xdt:untypedAtomic ��� � XML ��� �� � �
�� � �� � �����.
String ��� ��
� 5. String ��� �
�� ��
43 ���� �string ��� �� xs:string ��� � ��� ����.
41 ���� �normalizedString ��� �� xs:normalizedString ��� � �� ��� ��� ��
��.
43 ���� �token ��� �� xs:token ��� � ���� ��� ����.
40 ���� �language ��� �� xs:language ��� � RFC 3066�� ��� ��� ID�
����.
41 ���� �NMTOKEN ��� �� xs:NMTOKEN ��� � XML 1.0(3)� NMTOKEN �
�� ����.
40 ���� �Name ��� �� xs:Name ��� � XML �� ����.
40 ���� �NCName ��� �� xs:NCName ��� � ��� �� XML �� ���
�.
39 ���� �ID ��� �� xs:ID ��� � XML 1.0(3)� ID � �� ���
�.
39 ���� �IDREF ��� �� xs:IDREF ��� � XML 1.0(3)� IDREF � ��
����.
36 ���� �ENTITY ��� �� xs:ENTITY ��� � XML 1.0(3)� ENTITY � �
� ����.
� 2 � � ��� 23
numeric ��� ��
� 6. numeric ��� �
�� ��
34 ���� �decimal ��� �� xs:decimal ��� � 10��� ��� � �� �� �
��� ����.
36 ���� �float ��� �� xs:float ��� � IEEE ���� 32�� �� �� �
� �� ������.
34 ���� �double ��� �� xs:double ��� � IEEE ��� 64�� �� �� �
� �� ������.
39 ���� �int ��� �� xs:int ��� � 2 147 483 647�� ��� �� -2 147 483
648�� ��� � ��� ����.
41 ���� �nonPositiveInteger ��� �� xs:nonPositiveInteger ��� � 0�� ��� � ��� �
���.
40 ���� �negativeInteger ��� �� xs:negativeInteger ��� � 0�� � ��� ����.
41 ���� �nonNegativeInteger ��� �� xs:nonNegativeInteger ��� � 0�� ��� � ���
����.
40 ���� �long ��� �� xs:long ��� � 9 223 372 036 854 775 807�� ��
� �� -9 223 372 036 854 775 808�� ��� � ���
����.
40 ���� �integer ��� �� xs:integer ��� � 9 223 372 036 854 775 807�� �
�� �� -9 223 372 036 854 775 808�� ��� � ��
� ����.
42 ���� �short ��� �� xs:short ��� � 32 767�� ��� �� -32 768�� �
�� � ��� ����.
31 ���� �byte ��� �� xs:byte ��� � 127�� ��� �� -128�� ��� �
��� ����.
44 ���� �unsignedLong ��� �� xs:unsignedLong ��� � 9 223 372 036 854 775 807
�� ��� � �� �� ��� ����.
44 ���� �unsignedInt ��� �� xs:unsignedInt ��� � 4 294 967 295�� ��� �
�� �� ��� ����.
44 ���� �unsignedShort ��� �� xs:unsignedShort ��� � 65 535�� ��� � �� �
� ��� ����.
44 ���� �unsignedByte ��� �� xs:unsignedByte ��� � 255�� ��� � �� ��
��� ����.
42 ���� �positiveInteger ��� �� xs:positiveInteger ��� � 1�� ��� � �� ���
����.
date, time � duration ��� ��
� 7. date, time � duration ��� �
�� ��
35 ���� �duration ��� �� xs:duration ��� � ����� �, �, �, �, �, � �
�� ��� ����� ����.
24 IBM DB2 XQuery ���
� 7. date, time � duration ��� � (��)
�� ��
44 ���� �yearMonthDuration ��� �� xdt:yearMonthDuration ��� � ����� � � � �
�� ��� ����� ����.
33 ���� �dayTimeDuration ��� �� xdt:dayTimeDuration ��� � �, �, �, � � �� �
�� ����� ����.
32 ���� �dateTime ��� �� xs:dateTime ��� � �� �� ���� �, �, �, �,
� �� ��� 10�� �� ���� � ���� � � �
�� ���� �� ���� ����.
31 ���� �date ��� �� xs:date ��� � ��� �� ���� ���� ��
�� ��� ����. xs:date ��� � ���� ��
�� �, �, � �� ��� � ��� ���� � ���.
43 ���� �time ��� �� xs:time ��� � �� ���� ��� ���� ��
��.
38 ���� �gYearMonth ��� �� xs:gYearMonth ��� � �� ���� �� �� ��
�� �� ����. ����� � ISO 8601�� ���
��.
38 ���� �gYear ��� �� xs:gYear ��� � �� ������ ����. ��
��� � ISO 8601�� �����.
38 ���� �gMonthDay ��� �� xs:gMonthDay ��� � ���� ��� ������ �
���. �� ��� ISO 8601�� �����.
37 ���� �gDay ��� �� xs:gDay ��� � ���� �� ������ ����.
����� � ISO 8601�� �����.
37 ���� �gMonth ��� �� xs:gMonth ��� � �� ���� ������ ��
��� ���� ����. ����� � ISO 8601�� �
����.
�� ��� ��
� 8. �� ��� �
�� ��
31 ���� �boolean ��� �� xs:boolean ��� � ��� ���� true� false� �
�� ��� �����.
30 ���� �anyURI ��� �� xs:anyURI ��� � URI(Uniform Resource Identifier)�
����.
42 ���� �QName ��� �� xs:QName ��� � XML� ��� �(QName)� ��
��. QName � � ���� � �, XML � �
���� ���� URI � NCName �� ��� �����.
42 ���� �NOTATION ��� �� xs:NOTATION ��� � XML 1.0(3)� NOTATION �
�� ����.
39 ���� �hexBinary ��� �� xs:hexBinary ��� � 2�� ���� ��� 16���
����.
30 ���� �base64Binary ��� �� xs:base64Binary ��� � base64� ��� ���� �
��� ����.
� 2 � � ��� 25
�� ��
27 ���� �� ����
�� ��� ��� ����� ��
����� ��� � �� �� ���� � �� �� ���� �����. ����� ���
����� ��� XML ���� ��� � �� �� �� �� �����. ����� ��� ��
xdt:untypedAtomic ��� � � �� ��� ��� � xdt:yearMonthDuration xdt:dayTimeDuration
� ���� �����.
����� ��� xs:NOTATION, xs:anyType, xs:anySimpleType �� xdt:anyAtomicType� ���� �
� � ����.
�� �� �� �� ����� ��� �� �� ��� �����.�� type-name(value) ��
�: ����� �� type-name(value)� ��� ��� (value cast as type-name?) ���� �����.
type-name
�� ��� �� QName
value
�� ��� �� ���� � � . ���� � � �����. ��� � � � ����� �
���� �����. ��� � � � ��� ���� � ����� ��� �����. �� �
�� � �� � �� ��� ������. � ��� ��� � �� �� �� ���
��� 27 ���� �� ����� ������.
�� �, �� ��� XML �� ��� � xs:unsignedInt� �� ����� ��� ��� �
���.�� xs:unsignedInt(value) ��
� ����� ��� �� � �� �� ��� ��� ���� ���� � �� �� ���.
�� �, �� �� � ��� ���� ��� � xs:unsignedInt 12� �����.
xs:unsignedInt(12)xs:unsignedInt("12")
� ��� �� ��� 12� ����� ��� ����. ���� ��� ���� xs:integer� �
� ����, xs:integer xs:unsignedInt ��� ������. � ���� �� ��� ″12″�
����� ��� ����. �� ��� xs:string�� �� ����, xs:string � xs:unsignedInt
��� ������.
26 IBM DB2 XQuery ���
����� ��� ��� �� ��� �� ����. � �� DB2 XQuery� ��� ����� �
� ��� �� �� ������ �����. ������ �� � �� ��� ��� ��
� � ��� ��� �����.
xs:QName� �� ����� ��� �� �� ���� ��� ��� ����� ��� �� ��
����.
�� ��
58 ���� �����
�� ��
117 ���� ���� ����
�� ����
�� ���
� �� xdt:untypedAtomic, xs:integer, xs:duration�� ��� �(xdt:yearMonthDuration
xdt:dayTimeDuration) � XMA ���� ��� 19�� �� � ���� �����. � �� �
�� ��� � ����� ��� �����.
���� � ��� �� ����� �����. � ��� � ��� �� �� �� ��� ��
�� � ��� �� �� �� � �����. � ����� xdt:untypedAtomic�� xs:dateTime
��� ��� ��� � ����� xs:time�� xs:NOTATION��� ��� ����.
���� ��� �� � �� � ��� ����.
Y �. �� � �� �� � ��� ��� ���� �����.
N ���. �� � �� �� � ��� ��� ���� ��� �����.
M �. �� � �� �� ���� ��� �� � ���� ��� � � ����
��� ����.
xs:anySimpleType �� xdt:anyAtomicType ��� � ���� ��� ��� � � ����.
���� �� ���� ���� ��� �����.
� 9. �� � ���, �� 1(xdt:untypedAtomic�� xs:dateTime��� ��)
�� ��
� ��
�� ��� ��
uA string float double decimal integer dur yMD dTD dT
uA Y Y M M M M M M M M
string Y Y M M M M M M M M
float Y Y Y Y M M N N N N
double Y Y M Y M M N N N N
decimal Y Y Y Y Y M N N N N
integer Y Y Y Y Y Y N N N N
� 2 � � ��� 27
� 9. �� � ���, �� 1(xdt:untypedAtomic�� xs:dateTime��� ��) (��)
�� ��
� ��
�� ��� ��
uA string float double decimal integer dur yMD dTD dT
dur Y Y N N N N Y Y Y N
yMD Y Y N N N N Y Y N N
dTD Y Y N N N N Y N Y N
dT Y Y N N N N N N N Y
time Y Y N N N N N N N N
date Y Y N N N N N N N Y
gYM Y Y N N N N N N N N
gYr Y Y N N N N N N N N
gMD Y Y N N N N N N N N
gDay Y Y N N N N N N N N
gMon Y Y N N N N N N N N
bool Y Y Y Y Y Y N N N N
b64 Y Y N N N N N N N N
hxB Y Y N N N N N N N N
aURI Y Y N N N N N N N N
QN Y Y N N N N N N N N
NOT Y Y N N N N N N N N
� 10. �� � ���, �� 2(xs:time�� xs:NOTATION��� ��)
� � �
� � �
�
�� ��� ��
time date gYM gYr gMD gDay gMon bool b64 hxB aURI QN NOT
uA M M M M M M M M M M M N N
string M M M M M M M M M M M M M
float N N N N N N N Y N N N N N
double N N N N N N N Y N N N N N
decimal N N N N N N N Y N N N N N
integer N N N N N N N Y N N N N N
dur N N N N N N N N N N N N N
yMD N N N N N N N N N N N N N
dTD N N N N N N N N N N N N N
dT Y Y Y Y Y Y Y N N N N N N
time Y N N N N N N N N N N N N
date N Y Y Y Y Y Y N N N N N N
gYM N N Y N N N N N N N N N N
gYr N N N Y N N N N N N N N N
gMD N N N N Y N N N N N N N N
gDay N N N N N Y N N N N N N N
gMon N N N N N N Y N N N N N N
28 IBM DB2 XQuery ���
� 10. �� � ���, �� 2(xs:time�� xs:NOTATION��� ��) (��)
� � �
� � �
�
�� ��� ��
time date gYM gYr gMD gDay gMon bool b64 hxB aURI QN NOT
bool N N N N N N N Y N N N N N
b64 N N N N N N N N Y Y N N N
hxB N N N N N N N N Y Y N N N
aURI N N N N N N N N N N Y N N
QN N N N N N N N N N N N N N
NOT N N N N N N N N N N N N M
�� � �� � �� ���� � ��� �����.
v uA = xdt:untypedAtomic
v string = xs:string
v float = xs:float
v double = xs:double
v decimal = xs:decimal
v integer = xs:integer
v dur = xs:duration
v yMD = xdt:yearMonthDuration
v dTD = xdt:dayTimeDuration
v dT = xs:dateTime
v time = xs:time
v date = xs:date
v gYM = xs:gYearMonth
v gYr = xs:gYear
v gMD = xs:gMonthDay
v gDay = xs:gDay
v gMon = xs:gMonth
v bool = xs:boolean
v b64 = xs:base64Binary
v hxB = xs:hexBinary
v aURI = xs:anyURI
v QN = xs:QName
v NOT = xs:NOTATION
�� ��
� 2 � � ��� 29
26 ���� ��� ��� �� ����� ���
�� ��
117 ���� ���� ����
183 ���� �XQuery ��� �� ���
anyAtomicType ��� ��
xdt:anyAtomicType ��� � �� � �� � �� ����� ����. � ��� � �
� �� �� �� ��� �����. �� �� ���� ��, �� �� ��� � �� �
�� �� ���.
��� � xdt:anyAtomicType�� ���� �� � �� �� ��� ����.
xdt:anyAtomicType ��� �� �� ��� ���� ����.
anySimpleType ��� ��
xs:anySimpleType ��� � ��� �� �� � �� ����� ����. � ��� �
�� �� �� �� �� ��� �����. �� �� ���� �� � ���� � � ���
�.
xs:anySimpleType ��� ��� ���� �� � �� �� ��(lexical form)� ����.
��� � type xs:anySimpleType� �� ��� ���� ����.
anyType ��� ��
xs:anyType ��� � 0� ��� ��� 0� ��� �� �� � �� ���� �����.
anyURI ��� ��
xs:anyURI ��� � URI(Uniform Resource Identifier)� ����.
��� � xs:anyURI� �� �� RFC 2396�� ���� RFC 2732�� ��� ���� URI ��
���. %20� �� ��� ���� � ��� � �� � ��� ���� ����.
base64Binary ��� ��
xs:base64Binary ��� � base64� ��� ���� ���� ����.
Base-64 �� � �� ����� �� � �� �� Base-64 ���� ���� �����.
Base-64 ���� ���� RFC 2045�� �����.
30 IBM DB2 XQuery ���
xs:base64Binary� �� �� 65��� Base-64 ���� ����, �� ���� RFC 2045�� ���
��. ��� ��� a - z, A - Z, 0 - 9, ��� ��(+), �(/), ��(=) � XML 1.0(3)�� ���
� ��� ��� �����. � ��� ���� ����.
boolean ��� ��
xs:boolean ��� � ��� ���� true� false� ��� ��� �����.
��� � xs:boolean� �� �� true, false, 1 � 0�� ���.
byte ��� ��
xs:byte ��� � 127�� ��� �� -128�� ��� � ��� ����.
xs:byte� �� ��(lexical form) � ��� 10��� ��� ���� ��� ��� ������.
��� ���� ��� ��(+)� �����. �� ��� � ��� �� ��� ����. -1, 0, 126
� +100
date ��� ��
xs:date ��� � ��� �� ���� ���� �� �� ��� ����. xs:date ��� �
���� ���� �, �, � �� ��� � ��� ���� � ���.
xs:date �� ��� ���� �� �� ��� �� ��� �����. �� �� 00:00:00
� ���� �� �� �� 24:00:00� �� � �� �����. �� �, �� 2002-10-10+13:00
� �� 2002-10-10T00:00:00+13:00���. � 2002-10-09T11:00:00Z� ���,
2002-10-09-11:00� ����� ���. ���, 2002-10-10+13:00 2002-10-09-11:00 � ��
� ����.
xs:date� �� �� �� ��� ��� � ��� �� ������. yyyy-mm-ddzzzzzz. �� ���
���� ����. � ��� ���� ��� �� ��� �����.
yyyy
��� ���� 4�� ��. �� 0001�� 9999 ����. ��� ��(+)� ���� ���
�.
mm
�� ���� 2�� ��
dd ��� ���� �� ��
zzzzzz
�. � ��� �� �, ���� ����. � �� ��� �� �� ��� ��� 33 ��
�� ���� ����� ������.
� 2 � � ��� 31
dateTime ��� ��
xs:dateTime ��� � �� �� ���� �, �, �, �, � �� ��� 10�� �� ���� �
���� � � ��� ���� �� ���� ����.
xs:dateTime� ��� �� �� ��� ���� � � ����. ��� ���� �� ���� UTC(�
� ���, �� ������ �)� ��� ���� �����. �� �� ���� � �� ���
next-higher �� ��� �� ��� ��� ��� ���. �� �, �� 32� � � ��� 2002�
2��� 29� � � ����.
xs:dateTime� �� �� �� ��� ��� � ��� �� ������. yyyy-mm-ddThh:mm:ss.
sssssszzzzzz. �� ��� ���� ����. �� ��� � ��� �����.
yyyy
��� ���� 4�� ��. �� 0001�� 9999 ����. ��� ��(+)� ���� ���
�.
- �� �� ��� ���
mm
�� ���� 2�� ��
dd ��� ���� �� ��
T ��� ��� ���� ���� ���
hh �� ���� �� ��. 24� � �� 0� ���� ��� �����. �� 24:00:00� �
��� ��� �� �� 00:00:00�� �����.
: �� �� ��� ���
mm
�� ���� �� ��
ss �� �� ���� 2�� ��
.ssssss
�. � ��� �� �, �� ��� ���� 1�� 6��� �����.
zzzzzz
�. � ��� �� �, ���� ����. � �� ��� �� �� ��� ��� 33 ��
�� ���� ����� ������.
�� �, �� �� �� �� ���� 2005� 10� 10� ��� �����.
2005-10-10T12:00:00-05:00
� �� UTC�� 2002-10-10T17:00:00Z� �����.
32 IBM DB2 XQuery ���
��� ���
��� ���� �� �� �� �� � ��� ���� �����.
v ���(+) �� ��(-) �� ��� hh:mm. ��� �� �� �����.
hh �� ���� �� ��( � � ��� 0� � � ��). �� ����� 24�� ����
���� ��� ���� ����. ��� � �� �� 24� � �� ��� 0� ��� �
����.
mm
�� ���� �� ��. � �� ��� � 14 � � �� ��� 0�� ���.
+ ��� �� ���� UTC ���� hh � mm � � ���� ����.
- ��� �� ���� UTC ���� hh � mm � �� ���� ����.
v UTC ��� ���� ��� Z(Z� Zulu ��� ����, UTC� ���). ���� Z� ���� +00:00
�� -00:00� ���� � �����.
dayTimeDuration ��� ��
xdt:dayTimeDuration ��� � �, �, �, � � �� ��� ����� ����.
� ��� ��� ��� � �� � � -P83333333333333Y3M11574074074DT1H46M39.999999S�
� P83333333333333Y3M11574074074DT1H46M39.999999S�� �(�� -999999999999999��
-999999999999999.999999��� 999999999999999�� 999999999999999.999999� �)���.
xdt:dayTimeDuration� �� �� PnDTnHnMnS���. �� ISO 8601 �� ��� �����. ��
��� � ��� �����.
P ���� ���
nD
n � �� ���� �� �� �����.
T �� � �� ���
nH
n �� �� ���� �� �� �����.
nM
n � �� ���� �� �� �����.
nS n � �� ���� �� �� �����. ��� ���� ��� ��� � ��� ���� 1
�� 6��� �� ���.
�� �, �� �� ���� 3� 10�� 30�� �����.
P3DT10H30M
�� �� �� 120�� ����� �����.
� 2 � � ��� 33
-P120D
� �� ��(-)� ��� �� ����� �����. ��� ���� �� ������ �����.
� ���� ��� ���� ��� ��� ����� �� ���� ��� ���.
v ����� �, �, �, �� ���� ��� 0�� �� � �� ���� �� � ����. ��
��� ��� ��� �� ���� �� ���.
v � �� 10�� ��� �� � ����.
v ��� T� �� ��� �� ��� ���� ��, � ��� ���� ���. ��� P� ��
�� ���.
�� �, �� �� �����.
P13DPT47HP3DT2H-PT35.89SP4D251M
�� P-134D� ���� ��� �� -P1347D� �����.
decimal ��� ��
xs:decimal ��� � 10��� ��� � �� �� ���� ����.
xs:decimal� �� �� 10�� ����� ��� ���� 10�� ������. ��� � ���
�����. ��� ���� ��� ��(+)� �����. �� �� 0 ����. �� ��� 0
� ��� � �� 0� �� � ����. �� ��� � �� �� ��� ����.
-1.2312678967.543233+100000.00210
double ��� ��
xs:double ��� � IEEE ��� 64�� �� �� �� �� ������.
xs:double� �� �� -1.7976931348623158e+308�� -2.2250738585072014e-308 �
+2.2250738585072014e-308�� +1.7976931348623158e+308 � � �� � ���. xs:double� �
� �� �� �� � �����. �� ���, �� ���, �� 0, �� 0 � ��� ��(NaN).
xs:double� �� ��(lexical form) ���� ��� ��� �� E �� e� �� ��� ����.
��� ��� ���. ����� 10��� ���. �� � ����� �� xs:integer � xs:decimal
� �� ��� �� ���. E �� e� ��� ��� ��� ���� �, �� 0�� ����
�.
34 IBM DB2 XQuery ���
0� �� ��(lexical form) �� �� �� ��� �� � ����. �� ��� � ��� �� �
�� ����. -1E4, 1267.43233E12, 12.78e-2, 12 , -0 � 0
�� �� ���, �� ��� � ��� ��� �� ��(lexical form) �� INF, -INF � NaN
���. �� ���� �� ��(lexical form) �� ��� �� � ����.
�: �� INF, -INF � NaN� ��� ����. xs:double ����� �� ���� �����
INF, -INF � NaN� � ����. �: xs:double("INF")
�� ��
156 ���� �number ���
duration ��� ��
xs:duration ��� � ����� �, �, �, �, �, � � �� ��� ����� ����.
� ��� ��� ��� � �� � � -P83333333333333Y3M11574074074DT1H46M39.999999S�
� P83333333333333Y3M11574074074DT1H46M39.999999S�� �(�� -999999999999999��
-999999999999999.999999��� 999999999999999�� 999999999999999.999999� �)���.
xs:duration� �� ��(lexical form) ISO 8601 �� � PnYnMnDTnHnMnS���. �� ��� ��
�� �����.
P ���� ���
nY
n � �� ���� �� �� �����.
nM
n �� �� ���� �� �� �����.
nD
n � �� ���� �� �� �����.
T �� � �� ���
nH
n �� �� ���� �� �� �����.
nM
n � �� ���� �� �� �����.
nS n � �� ���� �� �� �����. ��� ���� ��� ��� � ��� ���� 1
�� 6��� �� ���.
�� �, �� �� ���� 1� 2�� 3� 10�� 30�� �����.
P1Y2M3DT10H30M
�� �� �� 120�� ����� �����.
� 2 � � ��� 35
-P120D
� �� ��(-)� ��� �� ����� �����. ��� ���� �� ������ �����.
� ���� ��� ���� ��� ��� ����� �� ���� ��� ���.
v ����� �, �, �, �, �, � � � 0 �� �� � �� � �� ���� �� � ���
�. �� ��� ��� ��� �� ���� �� ���.
v � �� 10�� ��� �� � ����.
v ��� T� �� ��� �� ��� ���� ��, � ��� ���� ���.
v ��� P� �� �� ���.
�� �, �� �� �����.
P1347YP1347MP1Y2MT2HP0Y1347MP0Y1347M0D
�� P1Y2MT� �� ��� ���� ���� ����. �� P-1347M ���� ��� �� -P1347M
�����.
ENTITY ��� ��
xs:ENTITY ��� � XML 1.0(3)� ENTITY � �� ����.
xs:ENTITY� �� ��(lexical form) ��� ���� �� XML �(NCName)���.
float ��� ��
xs:float ��� � IEEE ���� 32�� �� �� �� �� ������.
xs : f loat� � � � � -3 .4028234663852886e+38� � -1 .1754943508222875e-38 �
+1.1754943508222875e-38�� +3.4028234663852886e+38 � � �� � ���. xs:float� ��
�� �� �� � �����. �� ���, �� ���, �� 0, �� 0 � ��� ��(NaN).
xs:float� �� ��(lexical form) ���� ��� ��� �� E �� e� �� ��� ����.
��� ��� ���. ����� 10��� ���. �� � ����� �� xs:integer � xs:decimal
� �� ��� �� ���. E �� e� ������ ��� ���� � �� 0�� �����.
0� �� ��(lexical form) �� �� �� ��� �� � ����. �� ��� � ��� �� �
�� ����. -1E4, 1267.43233E12, 12.78e-2, 12, -0 � 0
�� �� ���, �� ��� � ��� ��� �� ��(lexical form) �� INF, -INF � NaN
���. �� ���� �� ��(lexical form) �� ��� �� � ����.
36 IBM DB2 XQuery ���
�: �� INF, -INF � NaN� ��� ����. xs:float ����� �� ���� ����� INF,
-INF � NaN � � ����. �: xs:float("INF")
gDay ��� ��
xs:gDay ��� � ���� �� ������ ����. ����� � ISO 8601�� ���
��.
� ��� � �� �� �� �����. �� �, � ��� �� ���� ���� �� 15���
�� � ����.
xs:gDay� �� ��(lexical form) ---ddzzzzzz���. �� � � �� ��� ���� �� ��
� xs:date �����. � ��� ���� ����. � � ���� ����. �� ��� � ��
� �����.
dd ��� ���� �� ��
zzzzzz
�. � ��� �� �, ���� ����. � �� ��� �� �� ��� ��� 33 ��
�� ���� ����� ������.
�� �, �� �� �� ���� �� �� 16� �� �����.
---16
gMonth ��� ��
xs:gMonth ��� � �� ���� ������ �� ��� ���� ����. �����
� ISO 8601�� �����.
� ��� � �� �� �� �����. �� �, � ��� �� ���� �� 12�� �����
��� ��� �� � ����.
xs:gMonth� �� ��(lexical form) --mmzzzzzz���. �� � � �� ��� ���� �� xs:date
� ��� �����. � ��� ���� ����. � � ���� ����. �� ��� � ��
� �����.
mm
�� ���� 2�� ��
zzzzzz
�. � ��� �� �, ���� ����. � �� ��� �� �� ��� ��� 33 ��
�� ���� ����� ������.
�� �, �� �� �� ���� �� � 12�� �����.
--12
� 2 � � ��� 37
gMonthDay ��� ��
xs:gMonthDay ��� � ���� ��� ������ ����. �� ��� ISO 8601�� ��
���.
� ��� � �� �� �� �����. �� �, � ��� �� ���� �� 4� 16� ��
� �� � ����.
xs:gMonthDay� �� ��(lexical form) --mm-ddzzzzzz���. �� � �� ��� ���� ��
xs:date� ��� �����. � ��� ���� ����. � � ���� ����. � ��� �
��� ��� �� ��� �����.
mm
�� ���� 2�� ��
dd ��� ���� �� ��
zzzzzz
�. � ��� �� �, ���� ����. � �� ��� �� �� ��� ��� 33 ��
�� ���� ����� ������.
�� �, �� �� �� ���� �� � 4� 16�� �����.
--04-16
gYear ��� ��
xs:gYear ��� � �� ������ ����. ����� � ISO 8601�� �����.
xs:gYear� �� �� yyyyzzzzzz���. � �� �, �, �� �� ��� ���� �� xs:dateTime
� ��� �����. �� ��� ���� ����. �� ��� � ��� �����.
yyyy
��� ���� 4�� ��. �� 0001�� 9999 ����. ��� ��(+)� ���� ���
�.
zzzzzz
�. � ��� �� �, ���� ����. � �� ��� �� �� ��� ��� 33 ��
�� ���� ����� ������.
�� �, �� �� 2005�� ������ ����. 2005.
gYearMonth ��� ��
xs:gYearMonth ��� � �� ���� �� �� ���� �� ����. ����� � ISO
8601�� �����.
38 IBM DB2 XQuery ���
xs:gYearMonth� �� ��(lexical form) yyyy-mmzzzzzz���. � �� �� �� �� ��� ��
�� �� xs:dateTime� ��� �����. �� ��� ���� ����. �� ��� � ��� ���
��.
yyyy
��� ���� 4�� ��. �� 0001�� 9999 ����. ��� ��(+)� ���� ���
�.
mm
�� ���� 2�� ��
zzzzzz
�. � ��� �� �, ���� ����. � �� ��� �� �� ��� ��� 33 ��
�� ���� ����� ������.
�� �, �� �� � ��� ���� ���� ���, 2005� 10���� �� �����.
2005-10
hexBinary ��� ��
xs:hexBinary ��� � 2�� ���� ��� 16��� ����.
xs:hexBinary� �� ��(lexical form) � 2�� ���� �� 16��� �� �� ������.
�� �, 2���� 111110110111�� 16�� ���� 4023� 16��� ��� 0FB7� ���.
ID ��� ��
xs:ID ��� � XML 1.0(3)� ID � �� ����.
xs:ID� �� ��(lexical form) ��� ���� �� XML �(NCName)���.
IDREF ��� ��
xs:IDREF ��� � XML 1.0(3)� IDREF � �� ����.
xs:IDREF� �� ��(lexical form) ��� ���� �� XML �(NCName)���.
int ��� ��
xs:int ��� � 2 147 483 647�� ��� �� -2 147 483 648�� ��� � ��� ����.
xs:int� �� ��(lexical form) � ��� ��� ���� 10�� ������. ��� ���� �
�� ��(+)� �����. �� ��� � ��� �� ��� ����. -1, 0, 126789675 � +100000
� 2 � � ��� 39
integer ��� ��
xs:integer ��� � 9 223 372 036 854 775 807�� ��� �� -9 223 372 036 854 775 808�
� ��� � ��� ����.
xs:integer� �� ��(lexical form) � � ��� �� ��� ���� 10�� ������. ��
� ���� ��� ��(+)� �����. �� ��� � ��� �� ��� ����. -1, 0,
12678967543233 � +100000
language ��� ��
xs:language ��� � RFC 3066�� ��� ��� ID� ����.
xs:language� �� ��(lexical form) ����� ��� � ��� � ���. � ��� ���
� �� ��� � ����. � �� ��� ��� �� � ��� �� �� ��� ���
�� � ����. �� �, en-US� ���� ���� ��� ����. �� ��
[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*� �����.
long ��� ��
xs:long ��� � 9 223 372 036 854 775 807�� ��� �� -9 223 372 036 854 775 808��
��� � ��� ����.
xs:long� �� ��(lexical form) � ��� ��� ���� 10�� ������. ��� ����
��� ��(+)� �����. �� ��� � ��� �� ��� ����. -1, 0, 12678967543233 �
+100000
Name ��� ��
xs:Name ��� � XML �� ����.
xs:Name� �� ��(lexical form) XML 1.0(3)� Name ���� ��� �����.
NCName ��� ��
xs:NCName ��� � ��� �� XML �� ����.
xs:NCName� �� ��(lexical form) ��� ���� �� XML ����.
negativeInteger ��� ��
xs:negativeInteger ��� � 0�� � ��� ����.
40 IBM DB2 XQuery ���
xs:negativeInteger� �� ��(lexical form) �� ��� ��� ���� 10�� ������. � ��
� ��� ��� � �� � � -9223372036854775808�� -1 ����. �� ��� � ��� �
� ��� ����. -1, -12678967543233 � -100000
NMTOKEN ��� ��
xs:NMTOKEN ��� � XML 1.0(3)� NMTOKEN � �� ����.
xs:NMTOKEN� �� ��(lexical form) XML 1.0(3)� Nmtoken ���� ��� �����.
nonNegativeInteger ��� ��
xs:nonNegativeInteger ��� � 0�� ��� � ��� ����.
xs:nonNegativeInteger� �� ��(lexical form) � ��� ��� ���� 10�� ������. �
�� ���� ��� ��(+)� �����. 0� ���� �� ��(lexical form)� � ��� ��(+)
�� ��(-)� � � ����. �� � �� ��(lexical form)� � ��� �� ��� ��(+)�
���. � ��� ��� ��� � �� � � 0�� +9223372036854775807 ����. �� ��
� � ��� �� ��� ����. 1, 0, 12678967543233 � +100000
nonPositiveInteger ��� ��
xs:nonPositiveInteger ��� � 0�� ��� � ��� ����.
xs:nonPositiveInteger� �� ��(lexical form) � � ��� �� ��� ���� 10�� ���
���. 0� ���� �� ��(lexical form)� � ��� ��(-)� ��� ��� � ��� � ��
�� ��(lexical form)��� �� ��(-)� �� ���. � ��� ��� ��� � �� � �
-9223372036854775808�� 0 ����. �� �� � ��� �� ��� ����. -1, 0,
-12678967543233 � -100000
normalizedString ��� ��
xs:normalizedString ��� � �� ��� ��� ����.
xs:normalizedString� �� ��(lexical form) ��� ��(X‘0D’), � ���(X‘0A’) �� �(X‘09’) �
�� ���� �� �����.
� 2 � � ��� 41
NOTATION ��� ��
xs:NOTATION ��� � XML 1.0(3)� NOTATION � �� ����.
xs:NOTATION ��� �� �� ��(lexical form) xs:QName �� �� ��(lexical form)���.
�� ��
�QName ��� ��
positiveInteger ��� ��
xs:positiveInteger ��� � 1�� ��� � �� ��� ����.
xs:positiveInteger� �� ��(lexical form) � �� ��(+)� ��� ���� 10�� �����
�. � ��� ��� ��� � �� � � +1�� +9223372036854775807 ����. �� ��� �
��� �� ��� ����. 1, 12678967543233 � +100000
QName ��� ��
xs:QName ��� � XML� ��� �(QName)� ����. QName � � ���� �
�, XML � ����� ���� URI � NCName �� ��� �����.
xs:QName ��� �� �� ��(lexical form) prefix:localName �� �����. � ��� �
��� ��� �� ��� �����.
prefix
�. � ���� � �. � ���� � �� � ���� �� �� URI ��� ���
� ���. � �� � ���� �� ���� ���� ����. � �� ���� ���
��� �/� � ����� �� URI� �����.
localName
��� �� �� �� NCName. NCName ��� �� XML ����.
�� �, �� �� � �� ���� QName� ��� �� ��(lexical form)���.
ns1:emp
short ��� ��
xs:short ��� � 32 767�� ��� �� -32 768�� ��� � ��� ����.
xs:short� �� ��(lexical form) � ��� ��� ���� 10�� ������. ��� ����
��� ��(+)� �����. �� ��� � ��� �� ��� ����. -1, 0, 12678 � +10000
42 IBM DB2 XQuery ���
string ��� ��
xs:string ��� � ��� ����.
xs:string� �� �� XML� �� �� � � �� ��� �� � �� �� ������.
time ��� ��
xs:time ��� � �� ���� ��� ���� ����.
xs:time� �� ��(lexical form) hh:mm:ss.sssssszzzzzz���. � �� �, � �� � �� ��
� ���� �� xs:dateTime� ��� �����. �� ��� � ��� �����.
hh �� ���� �� ��. 24� � �� 0� ���� ��� �����. �� 24:00:00� �
��� ��� �� �� 00:00:00�� �����.
: �� �� ��� ���
mm
�� ���� �� ��
ss �� �� ���� 2�� ��
.ssssss
�. � ��� �� �, �� ��� ���� 1�� 6��� �����.
zzzzzz
�. � ��� �� �, ���� ����. � �� ��� �� �� ��� ��� 33 ��
�� ���� ����� ������.
�� �, � ��� ���� ���� �� �� �� ���(UTC)�� 5�� � �� ���
1:20pm� ����.
13:20:00-05:00
token ��� ��
xs:token ��� � ���� ��� ����.
xs:token� �� �� �� ��� ���� �� �����.
v ��� ��(X‘0D’)
v � ���(X‘0A’)
v �(X‘09’)
v �� �� �� ��(X‘20’)
v ��� �� � ��� �� ���
� 2 � � ��� 43
unsignedByte ��� ��
xs:unsignedByte ��� � 255�� ��� � �� �� ��� ����.
xs:unsignedByte� �� �� ��� ���� 10�� ������. �� ��� � ��� �� ���
����. 0, 126 � 100.
unsignedInt ��� ��
xs:unsignedInt ��� � 4 294 967 295�� ��� � �� �� ��� ����.
xs:unsignedInt� �� �� ��� ���� 10�� ������. �� ��� � ��� �� ���
����. 0, 1267896754 � 100000
unsignedLong ��� ��
xs:unsignedLong ��� � 9 223 372 036 854 775 807�� ��� � �� �� ��� ���
�.
xs:unsignedLong� �� �� ��� ���� 10�� ������. �� ��� � ��� �� ��
� ����. 0, 12678967543233 � 100000
unsignedShort ��� ��
xs:unsignedShort ��� � 65 535�� ��� � �� �� ��� ����.
xs:unsignedShort� �� �� ��� ���� 10�� ������. �� ��� � ��� �� ��
� ����. 0, 12678 � 10000
untyped ��� ��
xdt:untyped ��� � XML ��� �� � ��� � ��� �����.
� ��� xdt:untyped�� ��� ��� �� � � � ��� xdt:untyped�� ��� �����.
untypedAtomic ��� ��
xdt:untypedAtomic ��� � XML ��� �� � ��� � �� � �����.
��� � xdt:untypedAtomic�� ���� �� � �� �� ��� ����.
yearMonthDuration ��� ��
xdt:yearMonthDuration ��� � ����� � � � � �� ��� ����� ����.
44 IBM DB2 XQuery ���
� ��� ��� ��� � �� � � -P83333333333333Y3M�� P83333333333333Y3M �(��
-999999999999999�� 999999999999999��)���.
xdt:yearMonthDuration� �� �� PnYnM��, �� ISO 8601 �� ��� �����. �� ��
� � ��� �����.
nY
n � �� ���� �� �� �����.
nM
n �� �� ���� �� �� �����.
� �� ��(-)� ��� �� ����� �����. ��� ���� �� ������ �����.
�� �, �� �� ���� 1� 2��� �����.
P1Y2M
�� �� �� 13��� ����� �����.
-P13M
� ���� ��� ���� ��� ��� ����� �� ���� ��� ���.
v ��� P� �� �� ���.
v ����� � �� �� ���� ��� 0�� �� � �� ���� �� � ����. �� �
�� ��� ��� �� ���(Y �� M)� �� ���.
�� �, �� �� �����.
P1347YP1347M
�� P-1347M ���� ��� �� -P1347M �����. Y �� � ��� ��� �� �� M
�� � ���� �� ��� �� P24YM � PY43M ���� ����.
� 2 � � ��� 45
46 IBM DB2 XQuery ���
� 3 � ����
� �� ��� �� ��� ���� ��� ����. � �� � � ���� ����(;)� ��
��. � �� ���� � �����. � � �� �� ������ ��� ��� � �
����.
� ��� � �� �, � ���� � � �� ��� ��� �� �� ��� � ���
� � � ��(setters)� �����.
DB2� ��� ���� ��� ���� � �� � �� boundary-space �� �����. � ��
�� � ���� � � ��� � ���� ��� � ���.
DB2� �� ��(setters)� �����. ��, DB2� � �� ��� �� ����� �� ��� �
���� ����.
v construction �
v Copy-namespaces �
v empty order �
v ordering mode �
�� �� �� ��� � �� � � �� ���. ��(setters) � �� � � ��� �
� � ��� ��� ���� ��� � ����.
��
�� �(1)
Version declaration Boundary-space declarationConstruction declarationCopy-namespaces declarationEmpty order declarationDefault element/type namespace declarationDefault function namespace declarationnamespace declarationOrdering mode declaration
��
�:
1 namespace declaration� ��� �� � � � �� � ����.
�� ��
1 ���� �XQuery ���
�� ��
�� � ��� �� ��� ���� ��� ���� � � XQuery �� � ��� ��� ���
��. �� ��� � �� ��� � ��� � � DB2�� �����.
© Copyright IBM Corp. 2006 47
�� �� �� ��� � �� �� ��� �� ���. DB2�� ���� ��� �� ″1.0″
���.
���� xquery version ″1.0″ ;
encoding StringLiteral��
1.0
��� ����� XQuery �� � ��� �� 1.0� �� �����.
StringLiteral
� �� ���� �� ���� �����. StringLiteral� �����, � �� �
��� ���� ��� ��� �� ����. DB2� �� �� UTF-8� �����.
�
�� �� � ��� XQuery �� 1.0� ���� ��� �� ���� �� �����.
xquery version "1.0";
boundary-space ��
�� � �� boundary-space � ��� ���� �� ��� �����. ���� �� ��
� ������ ���� ��� �� ��� �����. ���� ���� � ������� �
�� ��� ��� ����� �� ���� �� �� ��� �����.
���� �� �� �� � � ���� ��� ����� ����� �� � ����.
boundary-space �� ���� ��� ��� �� �� � � ���� ��� �����.
��� ���� � ��� ��� boundary-space �� �� � ����.
���� declare boundary-space strip ;
preserve��
strip
�� � � ���� ��� ����� �����.
preserve
�� � � ���� ��� ����� �����.
�
�� boundary-space � �� � � ���� ��� ����� �����.
declare boundary-space preserve;
�� ��
18 ���� ����
48 IBM DB2 XQuery ���
�� ��
92 ���� �� � ������� ���� �� ���
����� ��
�� � �� ���� � ��� �� ���� ��� �����. ���� ��� �� �
� ��� ��� ��� ��� � � � ��� � ��� �� ��� �����.
DB2 XQuery�� � � � ��� ���� ��� �� preserve���. ���� ��� preserve
� � � �� ��� � � � � � � �� �����.
���� �� preserve� �� � ���� �, � � ��� ���. � ��� ��� ���
��� ���� �� �� � ����.
���� declare construction preserve ; ��
preserve
� � �� ��� � � � � �� � �� ����� �����.
�
�� ���� � ����� � ����� ��� �� ���� ����.
declare construction preserve;
�� ��
21 ���� � 2 � �� ����
Copy-namespaces ��
copy-namespaces ��� � ������ �� � ��� �� � ���� � ���� ��
�����.
DB2�� copy-namespaces ��� �� preserve � inherit���. preserve �� �� �� ��
in-scope-namespaces� � ���� ����� �����. ��� � ����� � � ���� �
�� �����. � ��� ��� ��� � ����� ����� ��� � ����� �� �
�� �����. inherit �� ��� ��� � � ����� � � � ����� ����� ��
���. ��� �� ���� ��� � ���� �� ���.
preserve � inherit � ���� copy-namespaces �� � � �����. � ��� ��� ��
� ��� copy-namespaces �� �� � ����.
��
� 3 � � � 49
�� declare copy-namespaces preserve , inherit ; ��
preserve
�� �� �� in-scope � ����� � ���� ����� �����.
inherit
��� ��� � � ����� �� � � � ����� ����� �����.
�
�� copy namespace � ����� � ����� ��� �� ���� ����.
declare copy-namespaces preserve, inherit;
�� ��
94 ���� �� � �� � � � �����
default element/type namespace ��
�� � ��� default element/type namespace � � � � �� � �� ���� �
QNames(��� �)� �� �� � ����� �����.
�� � �� ��� default element/type namespace �� �� � ����. � � � �
������ � � ���� � � � ���� �� � ��� �� �� � � ����. ���
�/� � ����� ��� � ��� � �� �� � � � � � ����� ��
����.
��� �/� � ����� ���� � � �� ���� ����. � �� �� � �
� �� � � ����� �� ����.
���� declare default element namespace URILiteral ; ��
element
�� default element/type namespace ��� �����.
URILiteral
� ����� URI� ���� �� ���� �����. �� ��� ��� URI �� ��
0 ���� ���. ��� �/� � ���� �� �� ���� �� 0 ���
� � �� �� � � � � � ����� ����.
�
�� � � � � �� ��� � ����� URI http://posample.org� ��� � ��
���� �����.
declare default element namespace "http://posample.org";<name>Snow boots</name>
50 IBM DB2 XQuery ���
�� ��� ��� �� � � ��(name��� � ��)� � ���� URI http://posample.org
� ��� � ����� ����.
�� ��
15 ���� �XML � ���� � QName�
�� ��
53 ���� �� ���� ��
91 ���� �� ���� � � �
87 ���� �� � ������
default function namespace ��
�� � �� default function namespace � �� ���� � �� �� �� �� ��� �
����� URI� �����.
�� � �� ��� default function namespace �� �� � ����. ��� �� � ����
� � � � � � � , � � � � � � � � � � � XPath � XQuery � � � � � � � �
http://www.w3.org/2005/xpath-functions� ���. ��� �� � ����� �� �, � �
� ���� �� ��� �� � ����� �� ��� �� � ����.
� �� ���� � �� ��� �� �� ��� �� � ����� ��� ��� ��� DB2
� ��� �����.
���� declare default function namespace URILiteral ; ��
function
�� default function namespace ��� �����.
URILiteral
� ����� URI� ���� �� ���� �����. �� ��� ��� URI �� ��
0 ���� ���. default function namespace �� �� ���� �� 0 �� �
, �� ��� �� � ����� ���� �� �� �� � �� �� �� �� ���
���.
�
�� � ��� �� � ����� URI http://www.ibm.com/xmlns/prod/db2/functions� ��
�� �����.
declare default function namespace "http://www.ibm.com/xmlns/prod/db2/functions";
� �� �� ����� �� �� � �� ���� �� ��� �� � ����� �� ���
�� � ����. � ��� �� � ����� �� xmlcolumn� �����, db2-fn:xmlcolumn
� 3 � � � 51
(’T1.MYDOC’)�� ���� �� xmlcolumn(’T1.MYDOC’)�� �� � ����. ��, � �� ��
� �� � ����� � �� XQuery ��� � ����� ���� ����, XQuery �� ���
�� �� � �� ��� ���. �� �, current-date()� ��� fn:current-date()�� �
�� ���.
�� ��
119 ���� � 5 � ��� ���
empty order ��
�� � �� empty order � FLWOR ���� order by�� ��� � � ��� �� NaN �
���� ��� �� �� ���� ��� ��� ��� �����.
DB2 XQuery�� FLWOR ���� order by�� ��� � � ���� �� ���� �����. NaN
� ���� ��� � �� �� � �� �����. � �� ��� � ����. empty
greatest� �� � ���� � empty order � ��� ���. �� � �� ��� ��� �
�� empty order �� �� � ����.
���� declare default order empty greatest ; ��
greatest
FLWOR ���� order by�� ��� � � ���� �� ���� ����� �����. NaN
� ���� ��� � �� �� � �� �����.
�
�� empty order � �����.
declare default order empty greatest;
�� ��
109 ���� �order by��
ordering mode ��
�� � �� ordering mode � ��� �� �� ��� �����. �� ��� �� � � ��
��� �����.
DB2� XQuery 1.0: An XML Query Language� ��� �� ��� ���� ���� ordering mode
� unordered� ��� ���. DB2� �� � � ��� ���� ��� ���� 56 ����
�XQuery ����� � � ���� ������.
�� � �� ��� ordering mode �� �� � ����. unordered� �� � ���� ordering
mode �� � � �����.
52 IBM DB2 XQuery ���
���� declare ordering unordered ; ��
unordered
XQuery 1.0: An XML Query Language� ordered ��� �� ��� � � ��� �����. DB2
� �� � � ��� ���� ��� ���� 56 ���� �XQuery ����� � � ���� ��
����.
�
�� � �����, DB2� unordered ��� ����� �� ��� ��� �� ���� ���
�.
declare ordering unordered;
�� ��
56 ���� �XQuery ����� � � ���
�� ���� ��
�� � �� �� � ���� � � ���� � �� ��� � �� � ���� URI
� ��� ��. � �� � ���� URI ��� ��� � ���� ���� ���. � ��
�� ��� ��� � ����� ���� ��� � ����� �����. ���� ��� �
����� ��� ���� �� � ���� � �� ���� � �� � �� �� � ����
��� � ���.
� ���� � � � ������ � � ���� � � � ���� �� � ��� ��
�� � � ����. �� � ��� ��� � ���� � �� �� ��� � � ���
���.
���� declare namespace prefix = URILiteral ; ��
prefix
URILiteral� ���� URI� ��� � ���� � �� �����. � ���� � �� �
�� �(QName)�� ���� �, � , ��� � �� ��� � ����� �����.
� � xmlns� xml ���� ���, � ���� ��� � �� �� � ����.
URILiteral
� �� �� URI� �����. URILiteral �� 0� ��� ��� URI� � �� ���
�����.
� 3 � � � 53
�
�� ��� � ���� � � ns1� ��� � � �� � ���� URI http://posample.org
� ���� � ���� �� �����.
declare namespace ns1= "http://posample.org";<ns1:name>Thermal gloves</ns1:name>
�� ��� ��� �� � � ��(name��� � ��)� � ���� URI http://posample.org
� ��� � ����� ����.
�� ��� �� ���� ���
XQuery�� � ��� ���� �� ���� ��� � ����� ���� �� �� �� �� �
���� � �� ����. �� �� � �� ����� ��� �� �� � ����. DB2
XQuery� �� �� � ���� � ��� �� ���� �� � �� URI �� �����.
� 11. DB2 XQuery�� �� �� � ����
��� URI ��
xml http://www.w3.org/XML/1998/namespace XML �� � ����
xs http://www.w3.org/2001/XMLSchema XML �� � ����
xsi http://www.w3.org/2001/XMLSchema-instance XML �� ��� � ���
�
fn http://www.w3.org/2005/xpath-functions ��� �� � ����
xdt http://www.w3.org/2005/xpath-datatypes XQuery � � ����
db2-fn http://www.ibm.com/xmlns/prod/db2/functions DB2 �� � ����
�� � ��� � ���� �� ���� �� �� � ���� � �� ��� � ����.
�� � � xml ��� URI� ��� � ����.
�� ��
15 ���� �XML � ���� � QName�
�� ��
91 ���� �� ���� � � �
50 ���� �default element/type namespace ��
54 IBM DB2 XQuery ���
� 4 � ���
��� ��� �� � �����. ��� ���� ����� � ��� ���� �� ���
��� � ����. DB2 XQuery� XML ���� �� ���� �� ��� ���� �����.
��� ��� ��
�� ��� ��� ��� �� ���� �� ��� �� �����. ���� ���� �� ��, �
�� � �� � ��� ���� �� �� �� � ���� �� ��� �����.
�� ���� � ��
���� �� ����� ���� � � �� � �� �����. � ���� ��, ����
� ���� ��� � ��, �� ����� � � �����.
� DB2� ���� � ��� ���� �� �����. � �� ��� � ���.
���� ��
�� �� � �� �� ��. ���� �� �� ( . )�� � �� ���� �� ��
��� � � ����.
���� �
�� �� � ����� ���� ��� . ���� �� fn:position() ��� � ��
���.
���� ��
�� �� � ����� ��� �. ���� ��� fn:last() ��� � � ����.
�� ��
5 ���� ���� � ���
�� ��
64 ���� ����� �� ����
143 ���� �last ���
157 ���� �position ���
����
XQuery �� ��� ��� ��� �� � � �����. � � � ���� �
� � ���� ����� ���� �, � � � ��� �� �� � ���.
�� ��� � � � ��� � ��� XQuery ���� ���� �����. ���� ��
��� � � ���� ��� �� ���� ��� �����.
© Copyright IBM Corp. 2006 55
� 12. DB2 XQuery�� �
��� �� ��� ���
,(�) ���� ����
:= (��) ���� ����
FLWOR, some, every, if ���� ����
or ���� ����
and ���� ����
eq, ne, lt, le, gt, ge, =, !=, <, <=, >, >=, is, <<, >> ���� ����
to ���� ����
+, - ���� ����
*, div, idiv, mod ���� ����
union, | ���� ����
intersect, except ���� ����
cast ���� ����
-(unary), +(unary) ���� ����
? ���� ����
/, // ���� ����
[ ], ( ), {} ���� ����
�� ��
64 ���� ��� �� ����
77 ���� ��� ����
XQuery ����� ��� ��
DB2�� �� ��� ��� ��� ���� ���� ���� � ��� ��� �� ����.
�� ��� ��� ��� ��� �� ���� �����.
v ��� order by�� �� FLWOR ��� ��� ��� � � �����. �� �, �� ���
product �� ���� price� ����� �����.
for $p in /productorder by $p/pricereturn $p
v union, intersect �� except ���� ���� ���� ��� �� ��� � � �����.
v �� ��� ���� �� ��� �� ��� � � �����.
– �� ����� ��� � ��� � ����.
– �� �� �� �� ��� � ��, �� ����� �� ��� �� ����.
– �� ���� ��� � ��� ��� �� � ����.
– �� ��� fn:position �� �� �� fn:last �� ��� ���� ����.
�� �� �� ��� � � ���� �� �����, �� $bib� �� �� ����� ����
�.
56 IBM DB2 XQuery ���
$bib/book[title eq "War and Peace"]/chapter
v to ���� ���� ��� � ��� ��� ���� ����� �����. �: 15 to 25
v � ���� ���� ��� �� ����� ��� ��� �� ��� � � � �����
��� �����. �� �, �� ��� ��� (5, 10, 15, 16, 17, 18, 19, 20, 25)� �����.
(5, 10, 15 to 20, 25)
v ��� ��� � � ���� ���� ���� ���� �� ��� ��� ��� � � ����
�. �� �, �� $pub� �� �� ����� �� � �� ��� �� ���� then �
else �� ��� �� � � ����� ��� �� � � �����.
if ($pub/type eq "journal")then $pub/editorelse $pub/author
�� � ���� � ���� � ��� ��� ���� �, ����� ��� ��� �����
��.
� 13. XQuery ����� � � �� �
��� �� ��� �� �� ��� � �
FLWOR ��� order by� order by�� �� �� ��� product ��
���� price� �����
�����.
for $p in /productorder by $p/pricereturn $p
union, intersect �� except
���� �� ���
�� �� �� $managers union $students
�� ��� v �� ����� ��� � �
�� � ����.
v �� �� �� �� ���
� ��, �� ����� �
� ��� �� ����.
v �� ���� ��� � ��
� ��� �� � ���
�.
v �� ��� fn:position �
� �� �� fn:last �� �
�� ���� ����.
�� �� �� �� �� ��� � �
���� �� �����, ��
$bib� �� �� ����
� �����.
$bib/book[title eq "Warand Peace"]/chapter
to ���� ���� ���
� ���
�� ���� �� ��� 15 to 25
� 4 � ��� 57
� 13. XQuery ����� � � �� � (��)
��� �� ��� �� �� ��� � �
�� ��� ���� ���� � ���
��� � � �����.
�� ��� � � ��� �
� ���.
�� $pub� �� �� ��
��� �� � �� ���
�� ���� then � else ��
��� �� � � �����
��� �� � � �����.
if ($pub/typeeq "journal")then $pub/editorelse $pub/author
�: ��� ��� �� ���� ��� ��� ���� � � � ������, ���� �� ��
��� � ����.
�� ��
52 ���� �ordering mode ��
109 ���� �order by��
114 ���� �����
66 ���� ��� ����
���
���� �� ���� �� ���� ���� �������. ���� ����� �� ����
��� �����.
���� � �� �� ��� ���� �� �� �����.
v ��� �� � �� � �����.
v ��� �� � � � �����. ��� � ���� �� � �� 0� ��� ��
������. ��� � � �� � ��� �����.
���� ��� ���� � � ���� �� ����� fn:data ��� ���� � �����.
�� �, �� ���� ��� �� � ��� �����.
("Some text",<anElement xsi:type="string">More text</anElement>,<anotherElement xsi:type="decimal">1.23</anotherElement>,1001)
� ���� ���� ���� �� � �� ���� ���.
("Some text", "More text", 1.23, 1001)
�� XQuery ��� ���� ���� ��� �� �� �����.
v �� ���
v �� ���
v �� �� �� �� �� ��
58 IBM DB2 XQuery ���
v ��� ���
v ��� ��� ����� ���
v FLWOR ���� order by�
v � ����� ��
�� ��
5 ���� ���� � ���
6 ���� ��� �
13 ���� ���� � � �� �
�� ��
132 ���� �data ���
�� �� ��
�� � ��� ��� ����� ��� �� �� � ���� ����.
�� � ��� � � �� ���� ����. �� �, xs:decimal � ���� ��� xs:integer
� ����, �� xs:integer� �����.
�� ��� fn:compare ��� xs:string � xs:NCName �����.
fn:compare("product", xs:NCName("product"))
�� ��� � � ����� �� 0���. fn:compare ��� xs:string �� �����
xs:NCNAME � xs:string�� ��� ���� � �� ��� �� � ����.
�� � ��� �� ����� ��� � ���� �� ��� �����.
�� ��
21 ���� �� �� ���
21 ���� � 2 � �� ����
�� ��
� �� �� � � ��� ���� ���� ��� ���� �������. XQuery� ��
��, order by� � �� �� �� ����� �� ���� ��� �� � ��� �����.
XQuery� �� � ��� �����.
� �� �
xs:float �(�� xs:float��� ����� ��� �� �)� xs:double ��� ��� �
����. � � �� � xs:double ���.
xs:decimal �(�� xs:decimal��� ����� ��� �� �)� xs:float �� xs:double
��� ��� � ����. � ��� � � �� � � ��� ������� � �
� 4 � ��� 59
��. ��� ��� �� ���� �� �����.
�� ��� xs:double 13.54e-2� xs:decimal 100� � �� ���� fn:sum ��� �
��, xs:double �� � �����.
fn:sum(xs:double(13.54e-2), xs:decimal(100))
URI �� �
xs:anyURI �(�� xs:anyURI��� ����� ��� �� �)� xs:string ��� �
�� � ����. � ��� � � �� � xs:string ��� ������� � ���.
�� ��� URI ��� � xs:string�� ����, ��� 18� �����.
fn:string-length(xs:anyURI("http://example.com"))
� �� � �� � ��� �� �� ����.
v � ��� �, �� � ��� ����� ���� ��� �� �����.
v �� � ��� �, �� �� ���� ���� ����� ��� �� �����. ��
� � � �����.
�� ��
21 ���� � 2 � �� ����
��� �� �
���� ��� �� (EBV) �� � � ���� ���� �� ����� �����. � EBV
� � fn:boolean ��� ���� ����.
�� ��� �� �� � �� ���� EBV� �����.
� 14. XQuery�� �� �� � �� ���� EBV
� �� ���� EBV
� ��� false
��� �� ��� true
xs:boolean �(�� xs:boolean�� ��� �)� �� false - xs:boolean � false �
true - xs:boolean � true �
xs:string �� xdt:untypedAtomic �(�� ��� ��� �
�� �)� ��
false - � �� 0 �
true - � �� 0�� � �
�� �(�� �� ��� ��� �)� �� false - � NaN��� ����� 0 � �
true - � ����� 0 �� � �
� �� ��
�: �� ��� ��� �� ��� �� � ���� ���� ��� �� ��� �� � �� ����� �� � �
���.
���� ��� �� �� �� ���� ��� � ����� �����.
v ���(and, or)
v fn:not ��
60 IBM DB2 XQuery ���
v FLWOR ���� where�
v �� �� ��(�: a[b])
v ���(if)
v ��� ���(some, every)
�� ��
125 ���� �boolean ���
84 ���� �����
�� ���
�� ��� ��� �� �� �����. ���� ���, �� ��, �� �� ���, ���� ��
���, ����� � �� ��� �����.
���
��� �� � � �� �����. DB2 XQuery� ��� ���(�� ��� � �� ���)
� �����.
�� ��� xs:integer, xs:decimal �� xs:double �� �� ���.
v ��(.)� ���� �� e �� E ��� ���� �� �� ��� xs:integer �� �� ��
�. �� �, 12� �� ������.
v ��(.) ����� e �� E ��� ���� �� �� ��� xs:decimal �� �� ���.
�� �, 12.5� �� ������.
v e �� E ��� ���� �� ��� xs:double �� �� ���. �� �, 125E2� �� ��
����.
�� ���� XML ��� ��� �� �����.
�� ��� ���� ����(’) �� ����(″) �� � �� xs:string �� �� ���. �
� ��� �� ��� ��� �� � �� ��� �� � ����. �� �, �� �� ��
� �� ������.
"12.5""He said, ""Let it be."""’She said: "Why should I?"’"Ben & Jerry's""€65.50" (: denotes the string €65.50 :)
�: ����� ��� �� ��� �� ����� ����� �� �� ����� ���
���. �����, ����� ��� �� ��� �� ����� ����� �� �� ��
��� ������.
� 4 � ��� 61
�� ����� �� � XML 1.0(3)� ��� �� ������. ��� ��(X‘0D’) ��� � �
��(X‘0A’)� �� �� ���� �� � ���(X‘0A’)� �����. ��� � ���((X‘0A’)� �
� ��� ��(X‘0D’) �� � ���(X‘0A’)� �����.
������� � ��� ��� �� �, ����� �� �� �� ��� ���� � �� �
����. �� ��� ������ ��� ��� �� � �����.
v �� �� fn:true()� fn:false()� �� �� true� false� �����. ��� ����� �
� xs:boolean(″false″)� xs:boolean(″true″)��� ��� � ����.
v ����� �� xs:date("2005-04-16")� �� xs:date�� � 2005� 4� 16�� ���� ��
� �����.
v ����� �� xdt:dayTimeDuration("PT4H")� �� xdt:dayTimeDuration�� � 4��� ��
��� ���� � �����.
v ����� �� xs:float("NaN") ��� �� �� ″Not a Number″� �����.
v ����� �� xs:double("INF")� ��� ��� ″positive infinity″� �����.
�� ��
6 ���� ��� �
26 ���� ��� ��� �� ����� ���
119 ���� � 5 � ��� ���
�� ��
185 ���� ��� ���
�� ��� ��� ��
�� ��� ��� ��� DB2 XQuery�� �� �� ��� ��� ��� ���� � �� ���
���. �� ��� ��� ��� ���(&)� ���� ����(;)�� ����. �� ���� ��
� � �� ��� � ��� ��� ��� ���� ��� ����.
�� ��� DB2 XQuery� ��� �� ��� ��� ��� �����.
� 15. DB2 XQuery�� �� ��� ��� ��
��� �� ���� ��
< <
> >
& &
" ″
' ’
�� ��
63 ���� ��� ���
62 IBM DB2 XQuery ���
�� ��
�� ��� 10�� �� 16�� �� ��� ���� ���� ��� �� XML ��� �����.
�� ��� &#x �� &#� ���� ����(;)�� ����. �� ��� &#x� ���� �, ����
(;)�� ���� � �� ��� ��� ISO/IEC 10646 ���� �� �� ��� 16�� ��� ��
��. �� ��� &#� ���� � ����(;)�� ���� � �� ��� �� �� ��� 10�
�� ����.
�
�� �� € �� €� ��� ��(€)� ����.
�� ��
62 ���� ��� ��� ��� ���
�� ��
�� ��� � ��($) ��� �� NCName���. ��� �� � � �� ��� ��� ��
� �� �����. �� �� ��� �� ��� � � ��� � �� ���.
��� �� � ���� � � ��� �����.
v ��� ��� �� �� SQL/XML� ��, XMLQUERY ��, XMLTABLE �� �� XMLEXISTS
��� �� � � ��� ��� � ����. SQL/XML� �� ��� ��� XQuery �����
��� ��� � �� ���� �� � �� ��� �� � ����.
v ��� Query ���� �� � ��� � ����. ��� �� � �� ��� ��� FLWOR
��� �� ������. �� ��� �� ��� ��� �� ��� �� ����� � ��
� ����. XQuery ����� ��� ��� ��� ��� ����� � ����.
�� � FLWOR ����� � � � � ����. �� �, DB2� �� ���� ����
����.
for $i in (1, 2)for $i in ("a", "b")return $i
�� ��� � ��� � ��� �� �� ��� �, ��� �(� � � � �)�
�����.
�: ��� �� � � ��� ��� ��� �� ������.
�
�� ���� FLWOR ���� �� $seq� ��� (10, 20, 30)� �����.
let $seq := (10, 20, 30)return $seq[2];
�� 20���.
� 4 � ��� 63
�� ��
102 ���� �FLWOR ����
115 ���� ��� ����
�� �� ���
��� �� ���� ���� ����� ��� � ��� ���� � �����.
�� �, ��� (2 + 4) * 5� �� �� ��� (2 + 4)� �� �� � � � 5� ���� 30
�� ����. ��� �� ��� 2 + 4 * 5� � � � �� ���� �� �� � �� �
��� ���� 22� ���.
� ��� � ���� �����.
�� ��
55 ���� �� �
77 ���� ��� ����
���� �� ���
���� �� ��� �� ���(.)� � ���. ���� �� ��� ���� ���� ��� ��
���� �� ��� ����. ���� �� �� �� �� � � � ����. ���� �� �
� ��� � �� ������ �����.
�
�� �� � ��� 1 to 100� ��� ���� �� ���� ��� ���� �����.
(1 to 100)[. mod 5 eq 0]
� �� � � 1�� 100 � ��� 5� � � ���� ��� ������.
�� ��
55 ���� ��� ���� � ��
73 ���� ����
66 ���� ��� ����
�� ��
�� �� QName �� �� ��� 0� ��� ��� ���(�)� � ���. DB2 XQuery� �
� XQuery ��� DB2 �� �� ��� �����.
�� XQuery ��� � � fn� ��� � ���� http://www.w3.org/2005/xpath-functions�
����. DB2 �� ��� � � db2-fn� ��� � ���� http://www.ibm.com/xmlns/prod/
db2/functions� ����. �� ��� QName� � ���� � �� �� �, ��� ��� ��
64 IBM DB2 XQuery ���
� ����� �� ���. ��� �� � ����� �� � ��� ��� �� ��� �
����� ���� �� � �� XQuery ��� � ����(� � fn� ���)���.
����: �� ��� �� �� ����� �� �� � ���� ���� � ��� ��
�� � ���.
�� ��� DB2 XQuery� ��� ��� ����� �����.
1. DB2 XQuery� �� ���� �� �� � ���� ��� � ���� � �����.
2. � �� �� ��� �� �� ���� ��� ��� �����. �� �� �� �
� � ���� ���� �, DB2 XQuery� �� ��� ���� � � �� ��� ���
��.
a. ��� � ���� �����. � � �� � ������.
b. �� ���� � ��(xdt:untypedAtomic �) ��� �� ��� ������. �� ��
���� �� ��� �� xdt:untypedAtomic �� �� xs:double� ������.
c. �� � �� ��� �� ��� ��� � �� �� ���� �� �� ��� �����.
�� ���� xs:integer(�� xs:integer�� ��� �), xs:decimal, xs:float �� xs:double �
� �����.
d. �� �� xs:string �, xs:anyURI �� xs:anyURI ��� ��� �� �� ��� ��
xs:string�� �����.
3. ��� �� ��� � ���� ����. �� ��� � � ��� �� �� �� ���
��� �����.
�
��� ��� �� �� ��: �� �� �� xs:string �� �� �� �� ��� ��� xs:string
�� � �����.
fn:upper-case($ns1_customerinfo/ns1:addr/@country)
� ���, fn:upper-case ��� �� �� �� ������. � ��� ���� �� ���� ��
� � �� ���� ������. ���� � �� ��� � xs:string�� ������. ���
��� xs:string �� �� ���� �����.
��� ��� �� �� ��: �� ��� ��� (1, 2, 3)� �� ����.
fn:max((1, 2, 3))
�� fn:max� �� � ���� �� �� �����, �� ��� ���. �� 3���.
�� ��
15 ���� �XML � ���� � QName�
119 ���� � 5 � ��� ���
59 ���� �� ���
� 4 � ��� 65
58 ���� �����
�� ���
�� ��� XML ���� ��� �����. DB2 XQuery� �� ��� XPath 2.0 ��� ���
� ���.
�� ��� �(/) �� �� �(//)� ���� �� ��� ��� � ���. �� ��� ��
�� �� �� � ��� �� � ����. ��� �� ��� � ��� �� ��� ����
��� ���� �� ���� � ���.
��� ��� �� �� ����, �� �� �� �� ���� ���� �� ���� �� ���
�����. ��� ″/″� ���� ��� ���� ��� �� ���� ��� ���� �����. ��
� ″//″� ���� ��� ���� �� ��� �� ��� � �� �� ���� �� ��� �
� � � ��� ��� ���� �����.
� ��� �� ���� � � � ���� ��� �� � � ����� ����. ��� �� �
� � � ���� �� ��� ���� �� ���� ���. ��� ����� �� ID� ���
��� �����.
�� ���� ��� ��� ��� � ��� �� ������. � ��� ��� �� �
� � ���� � � ����. ��� � ��� �� ��� ���� ��� �����, ��� ���
��� �� � ���� �� � �� ��� �����. ��� �� � ���� ���� �� �
��� � � �����.
�� ���� � �� ���� �� ��� ���� ����. �� ���� �� ��� ��� �
� ����� ����� XQuery ����� � � ��� ���� ��� ������.
�� ��
7 ���� ��� �� ���
�� ��
56 ���� �XQuery ����� � � ���
� ���� ��
�� ���� � ��� � �� �� � ������. � ��� ���� ���� ��� �� �� �
� �� �� ���� �����. � ��� �� ��� 0� ��� ��� � ���.
��///
�
/ or //
axis stepfilter expression
��
axis step:
66 IBM DB2 XQuery ���
�node-testaxis:: [PredicateExpression]
filter expression:
�PrimaryExpression[PredicateExpression]
/ ��� � ��(/)� ���� ��� ���� ��� �� ��(�� ��� �)�� ��� ��
�� �����. �� ���� � ��� ��� �����.
// ��� �� � ��(//)� ���� ��� ���� �� ��� �� ��(�� ��� �)� �
�� �� ���� �� ��� �� � � ��� ��� ���� �����. �� ���
�� � ��� ��� ����� �� ��� �� ��� ������.
axis
XML �� �� ����� �� ��. ���� � ���� child, descendant, attribute, self,
descendant-or-self � parent� �����. ��� � �� ���� ��� � ����.
node-test
� ���� � ��� ��� true�� �� ��. � ���� ��� �� �� ��� �
� � ��� �� ��� ��� �� ��� �� �� ���� � � ����.
PrimaryExpression
�� ���
PredicateExpression
���� ��� ���� ����� ��� ��� ���
�
�� �� �� ��� ���� � ��� �����. � ��� ���� ���� secretary �
�� assistant � �� � � �� employee � �� � ���.
child::employee[secretary][assistant]
�� �� � ���� �� ���� ��� �����. � ��� ��� ��� � ��� ��� �
� �� � � ��� �����.
$book/(chapter | appendix)[fn:count(footnote) > 1]
�� ��
68 ���� �� ���
71 ���� ��� ���� �� ���
61 ���� ��� ����
73 ���� ����
� 4 � ��� 67
75 ���� � � ����
� ��
� ��� �� ��� ���� � �, �� ��� ���� �� ��� � ���� ��� ��
�� ���� ��� � ��� � ���. � ��� � � �� 0� ��� �� ������.
� ��� ���� ���� ���� �� ��� �� XML ��� �� ���� ��� �� �� ��
�� ���� ���� �� ��� ����� XML ��� �� ���� ��� ��� � � ����.
���� ��� ��� �� �, ���� � � ��� ���.
� ���� ���� � �� �� ���� ���� � � �� ���� � ��, ���
0� ��� ��� ���. � ���� �� �� ���� �� ��� ���� �� � ����.
�� ��� child� �� ��� para� � ��� � � ��� ����.
child::para
� ��� � ��� ���� ��� � �� para �� ���.
�� ��
7 ���� ��� �� ���
�� ��
73 ���� ����
71 ���� ��� ���� �� ���
�
� XML ���� �� ��� ���� � ��� �����.
� ��� � �� ��� �� � � ����. ��� ��� ���� ��� �� ���� ����
�� ��� ��� �����. ��� ��� ���� ��� �� ���� ���� �� ��� �
�� �����.
�� ������ DB2 XQuery�� ���� �� �� �����.
� 16. DB2 XQuery�� ���� �
� �� �� �
� ���� ��� � ��� ����
�.
��� �� �� � � ��� � ��� ����. ����
��� � ��� ����� � ��� �� �� �
� � �� �, � � � ������. �� �
� �� � ��� � ��� �, �� ���, ��
�� ��� ��� � � ����. � � �� ���
� ��� ��� � ����.
� � � ���� ��� � � �(� , �
� � �)� �����.
���
� ���� ��� � � �����. ��� ���� ��� � ��� �� � � � �� ��
��.
68 IBM DB2 XQuery ���
� 16. DB2 XQuery�� ���� � (��)
� �� �� �
�� ���� ��� �����. ���
� � �-
�� -
��
���� �� � ���� ���
� � �� �����.
���
� ���� ��� � � ����, ��
�� ��� � � �� � � ��
�� �����.
��� � ��� � ��� � � � � ��� � ���
� ��� � � � � ����.
� ���� �� ���� �� ��� �� � ���� ���� � � ��� �����. �
� ��� � � ���� � 1�� ���� �� ��� ��� �����. �� ��� � �
���� � 1�� ���� ��� �� ��� �����. ���� ��� ���� � ��
�� ����� ��� � ����.
�� ��
��� ����
73 ���� ����
�� ���
�� ���� � ���� � � �� ��� true���� �����. �� ���� � ��� �
� �� ���� ��� � ����. � ���� ��� �� �� ��� ���. �� ����
��� ��� �� ��� ���.
�� ���
� ���� QName �� ��� �� � ���. � ���� � ���� ����, ��� ���
��� QName �� ��� �� ��� ��� ���. � ���� � �� �� ���� �
�� � ���� ��� � � ���. �� � �� ��� ��� � ���� ���
�� ���. QName ��� �� QName� � ���� ��� �� Qname ��(�� �
� ����)� �� ����. �� Qname � � ���� URI� ���� �� ��
��� �(� ���� � �� ���� ����)� ����.
����: � ����� ��� � �� ���� �� ���� ��� � ���� � ��� ���
���. � ��� ���� � ���� �� � �� �� QName � ���� URI
� ��� ����. �� �� ��� ���� � ���� �� � �� �� QNmae �
�� �/� � ����� � ���� URI� ����.
� 4 � ��� 69
�� ��� DB2 XQuery�� ���� � ���� �� �����.
� 17. DB2 XQuery�� ���� � ���
�� �� �
QName ��� Qname ��� QName� �� �� ��(�
�� �� ��)� ����. �� � � � �
���� � ��� ����. �� � �� �
� ���� � ��� ����.
��� child::para�� � ��� para� � �
� �� para �� ���.
* ��� �� �� ��� ����. �� � �
� � ���� �� � ��� ����. ��
� �� � � ���� �� � ��� ��
��.
��� child::*�� � ��� *� � �� �
� �� ����.
NCName:* QName� � � ��� ���� NCName� ���
��. � � ���� � �� ��� � ��
�� URI� � ���� URI� ��� �� �
�(��� ���)� ����. �� � � �
� ���� � ��� ����. �� � ��
� � ���� � ��� ����.
��� child::ns1:*�� � ��� ns1:*� �
� ns1� ���� � ����� ��� � �
� �� �� ����.
*:NCName QName� �� ��� ���� NCName� ����
�. � � ���� �� �� NCName � �
� ��(��� ���)� ����. �� � �
� � ���� � ��� ����. �� �
�� � � ���� � ��� ����.
��� child::*:customerinfo�� � ���
*:customerinfo� � �� ��� � ����
� �� �� �� �� customerinfo � �
�� �� �� ����.
�� ���
�� ���� � ���� ����, ��� ��� ��� �� ���� ��� ��� ���.
�� ��� DB2 XQuery�� ���� �� ���� �� �����.
� 18. DB2 XQuery�� ���� �� ���
�� �� �
node() ��� �� �� ��� ����. ��� child::node()�� �� ��� node()
� � �� �� ��� ���.
text() ��� �� �� ��� ��� ����. ��� child::text()�� �� ��� text()
� � �� �� ��� ��� ���.
comment() ��� �� �� �� ��� ����. ��� child::comment()�� �� ���
comment()� � �� �� �� ���
���.
processing-instruction() ��� �� �� �� ��� ��� ����. ��� child::processing-instruction()��
�� ��� processing-instruction() �
�� �� �� ��� ��� ���.
element() �� element(*) ��� �� �� � ��� ����. ��� child::element()�� �� ���
element()� � �� �� �� ���.
��� child::element(*)�� �� ���
element(*)� � �� �� �� ��
�.
70 IBM DB2 XQuery ���
� 18. DB2 XQuery�� ���� �� ��� (��)
�� �� �
attribute() �� attribute(*) ��� �� �� � ��� ����. ��� child::attribute()�� �� ���
attribute()� � �� �� � ���
���. ��� child::attribute(*)�� �
� ��� attribute(*)� � �� �� �
��� ���.
document-node() ��� �� �� �� ��� ����. ��� self::document-node()�� �� ��
� document-node()� ���� �� �� �
�� ���.
�� ��
68 ���� ���
73 ���� ����
� ���� �� ��
XQuery��� �� ����� �� ���� �� ��� �� � ����.
�� ��� �� ����� �� � �� ��� �����.
� 19. �� ���� �� ��
�� �� �� �
��� � �� � ��� �� ���� �� attribute()� ��
�� � child:: ��� �� ��. � ��� �
���� ���� � ��� � attribute::
� �����.
�� ��� section/para�
child::section/child::para� �����. ��
��� section/attribute()�
child::section/attribute::attribute()� �
����.
@ attribute::� �� �� �� ��� section/@id�
child::section/attribute::id� �����.
// /descendant-or-self::node()/� �� ��� �
� ���� ��� � ��� ���� � ���
��.
� ��� �� ���� � � ���� �, �
��� ��� ���� ��� �� ��� ��� �
��� �� �� ���� � �� �� �� �
�� ���. � ��� �� ��� �� ��
� �� � ��� �����.
�� ��� div1//para� child::div1/
descendant-or-self::node()/child::para�
�����.
.. parent::node()� �� �� �� ��� ../title parent::node()/
child::title� �����.
�� �� � ��� ��� �
�� ������ �� �� � ��� ��� �� �����.
� 4 � ��� 71
� 20. ��� �� � �� ��
��� �� �� �� ��
child::para para ���� ��� � para
�� ���.
child::* * ���� ��� � ��
�� ���.
child::text() text() ���� ��� � ��
��� ��� ���.
child::node() node() ���� ��� �� � �
���. � ��� �
� ���� ���� � ��
� � ��� ���� �
���.
attribute::name @name ���� ��� name � �
���.
attribute::* @* ���� ��� �� � �
���.
child::para[fn:position() = 1] para[1] ���� ��� �
� para �� ���.
child::para[fn:position() = fn:last()] para[fn:last()] ���� ��� � ���
para �� ���.
/child::book/child::chapter[fn:position() = 5]
/child::section[fn:position() = 2]
/book/chapter[5]/section[2] � � ���� ��� �
�� �� �� book� ��
� chapter� �
section� ���.
child::para[attribute::type="warning"] para[@type="warning"] � warning type � �
��� ����� �� para
� � ���.
child::para[attribute::type=’warning’]
[fn:position() = 5]
para[@type="warning"][5] � warning type � �
��� ���� ��� ��
� para � � ���.
child::para[fn:position() = 5]
[attribute::type="warning"]
para[5][@type="warning"] ���� � �� � � �
para � � � warning
type � � ��� �
���.
child::chapter[child::title=’Introduction’] chapter[title="Introduction"] � � ��
Introduction � ��
��� title � � ���
���� ��� chapter �
� ���.
child::chapter[child::title] chapter[title] �� ��� title � � �
�� ���� ��� chapter
� � ���.
�� ��
66 ���� ��� ���� ���
68 ���� ���
72 IBM DB2 XQuery ���
��
��� �� ��� ������ �� ���� �����. ��� �� ������ ����� � �
� � ��� ���([]) �� � ����. �� ��� ��� �� � ��� �� ���� ���
� � ���� � � ����. �� ���� � �� �� ��(truth value)��� xs:boolean
� �����. �� ��� true �� ����, �� ��� false �� �����.
�� ��� ��� � �� ��� �����.
v �� ���� ��� �� � ���� �, �� �� �� ���� ��� �� ���.
v �� ���� �� � ���� �, �� �� ��� � ��� � �� � ��
� ���� true���. � ��� �� �� false���. � ��� ��� �� �� ��
���� ���. �� �, ��� $products[5]�� �� �� [5]� �� $products� ��� �
��� �� �� ��� �����.
����: �� ��� ����� � �� ���� ��� ��� �� ��� �����
�.
�: ��� �� �� ���� �� � ������ ��� �� ���, �� ���� �� ���
� � � �� �� ����. fn:boolean ��� [fn:boolean(PredicateExpression)] �� ��
�� ��� � � �� � ����� �� � ����. �� fn:position ��� [fn:position()
eq PredicateExpression] �� ���� ��� ���� ����� �� � ����.
�� ��� ����.
v chapter[2]� ���� ��� � �� � chapter �� ���.
v descendant::toy[@color = "Red"]� ���� ���� toy�� �� � � color � � �
″Red″ �� � � �� ���.
v employee[secretary][assistant]� ���� ���� secretary � �� assistant � �� �
� �� �� employee � � ���.
v (<cat />, <dog />, 47, <zebra />)[2]� <dog /> �� �����.
�� ��
60 ���� ���� �� �
�� ��
56 ���� �XQuery ����� � � ���
��� ���
��� ��� ��� ���� � �� ���� �����. ���� ��� ����. �� �,
1, (2, 3) � ( )� �� ���� ���� � � ��� (1, 2, 3)� ���.
�� ��
5 ���� ���� � ���
� 4 � ��� 73
���� ���� ���
���� � ��� �� � ���� ���� � ���.
�� ��
� ���� ���� ���� � ��� �� ���� � ��� ����(���)� ������. �
�� ���� �� � � ���� � ����� ��� ���� � ���� ���� �� �
���� ����. �� �, �� ���� � � �� �� ��� ���� ������.
(15, 1, 3, 5, 7)
���� ��� �� � ��� �� � ����. �� ���� � ���� ��� � �� ��
��. � ��� �� ���� ���� � ���� � �� � � ����� �� ���� �� �
�� ����, ���� �� �� ��� �� ����.
�� ��� � ���� ���� ���� � ���.
v � ��� �� �� 1, 2, 0, 2 � �� ���� ���� �� 5 �� ���� ����. �
���� � � ��� 10, 1, 2, 3, 4���.
(10, (1, 2), (), (3, 4))
v � ���� � � ���� ��� � �� salary � ��� ���� ��� � �� bonus
�� ���� ������.
(salary, bonus)
v �� $price� 10.50� ���� � ���� � � ��� 10.50, 10.50� ���.
($price, $price)
�� ���
� ��� ��� ��� ���� � ���. � ��� to ���� ���� �� ����
(���)� � ���. � ����� xs:integer �� �� �� �� ���. ����� � �
����� � ������ ��� ��� � ������ ��� ���� �� � ����
� � � ������. �� ��� � � ������ ��� �� ��� �� ��� ��
��� ����� ���� ������. �� �, �� � ��� ��� 1, 2, 3, 4� ����.
(1 to 4)
�� �� � ���� ���� ���� � ���.
v �� �� � ���� ��� � � � ����� �����. ��� ��� ��� 10, 1, 2, 3,
4� ����.
(10, 1 to 4)
v �� �� �� 1�� �� �� 10� ���� ���� � ���.
10 to 10
v �� �� � � �� 0 ������.
74 IBM DB2 XQuery ���
15 to 10
v �� �� fn:reverse ��� ���� � ��� �� �� ��� � �� ���� � ���. � �
�� ��� ��� 15, 14, 13, 12, 11, 10�� ����.
fn:reverse(10 to 15)
�� ��
5 ���� ���� � ���
�� ���
� ��� �� ��� 0� ��� ��� � ���. ��� �� �, �� �� ���� ���
� ���� �����.
� ���� � � �� ���� ��� ��� �� � true �� ���� � ���. ��� ��
� �� �, � � �� �� ���� � ���. � ���� �� �� ���� ��� ��
��� �����. ��� ��� �� � ���� ��� �� ���� �� ��� �� � ��
�� ���� � ����. � ���� � 1���.
��
�� �PrimaryExpression[ PredicateExpression ]
��
PrimaryExpression
�� ���
PredicateExpression
���� ��� ���� ����� ��� ��� ���
�
�� ���� � ���� ���� ��� ���� �����.
v ��� ��� ��� ���� ���� �, �� ��� price� 100�� � ��� �����.
$products[price gt 100]
v �� ��� ��� �� � ���� ���� 1 - 100 � �� 5� � � ���� �� ���
����. � ��� �� �� � ���� �� ����� �����.
(1 to 100)[. mod 5 eq 0]
v �� ���� � � �� 5���.
(1 to 21)[5]
v �� ��� � ���� �� ���� ��� �����. � ��� �� $book� ��� ��
��� � �� ��� �����.
$book/(chapter | appendix)[fn:last()]
� 4 � ��� 75
�� ��
5 ���� ���� � ���
�� ��
61 ���� ��� ����
73 ���� ����
�� ��� � �� ���
DB2 XQuery� �� ���� ���� ���� �����. ��� ����� union, intersect � except
� ����.
�� ��� �� ���� ���� � �� �� ���� �����.
� 21. �� ��� ��� � XQuery ���
��� ��
union �� | �� ���� ����� ��� ����� �� ��� ���� ����
�����. union ��� | ��� �����.
intersect �� ���� ����� ��� ����� � �� ��� ���� �
��� �����.
except �� ���� ����� ��� � ������ ��� � ���
��� �� �� ��� ���� ���� �����.
��� �� ���� � ����� �� ID� ���� ���� ��� �����. � ���� ��
��� �����.
union, intersect �� except� ����� ��� ���� ���� ��� ���. ����� ���
�� ��� �� ��� ��� �����.
� ���� ���� ���� ��, DB2 XQuery� ���� �� �� �� ���� ��� ���
(fn:index-of), ��� ��� ��� �� �� ��(fn:insert-before � fn:remove) � ����� �� �
� ��(fn:distinct-values)� � ��� �����.
�
��� ���� �� $managers� ��� ��� ���� employee �� ��� ���� �� ��
$students� �� ��� ���� employee �� ��� ���� ��� �����.
�� ��� � ���� ���� �� ���� ���� ��� ����.
v $managers union $students� ��� �� �� ��� ���� �� ��� �����.
v $managers intersect $students� ����� �� ��� ���� �� ��� �����.
v $managers except $students� ������ ��� �� ��� ���� �� ��� �����.
�� ��
5 ���� ���� � ���
76 IBM DB2 XQuery ���
13 ���� ��� ID�
�� ���
�� ��� ���, ��, ���, � � � ���� ���� ��� �����.
�� ��� �� ���� ���� � � � ����� ��� ����. �� ���� ��
����� ��� ��� � ��� �� ���� �� ����� � � ����.
� 22. XQuery�� �� ���
��� �� ���
-(unary), +(unary) ����� � ����, ����� � �����. ���� ����
*, div, idiv, mod ���, � �, �� � �, ��� ���� ����
+, - ���, �� ���� ����
�: �� ��� ��� ���� ��� �� � �� ��� �� ��� �� ���. �� �, a-b� ��� ����
� a - b � a -b� �� ���� �����.
�� ���� � � �� , � ��� �� �����. �� ���� ��� � � ����� ���
(���� ��)�� �� ��� �� �����.
v ���� ����� � ����� �� ���� � � � ������.
v ���� ����� � ��� � ���� ����� ��� �����.
v ���� ����� �� �� ��(xdt:untypedAtomic)�� � xs:double� ������. �
��� ��� ��� �����.
� �� ����� �� �� ���� �� ��� ����, ���� ���� ����� ����
� ��� � � ��� ��� ��� ���. (�� �, 0�� � � � � � ��� ���.) �
���� �� �� ���� �� ��� ��� ��� ��� �����.
78 ���� � 23 �� ��� �� �� ��� �����. � ����� �� A� ����
� ����� ���� �� B� � ����� ����. �� ��� xs:integer, xs:decimal, xs:float,
xs:double � �� ��� � � ���� ��� �� �� ����. ���� � �� ���
��� �, � � �� ����� �� � �� � � ���� �� ��� � �� ��
��(xs:integer, xs:decimal, xs:float, xs:double)� � �� ���.
� 4 � ��� 77
� 23. �� ��� ����� �� �
����� �� ��� ���� A� �� ���� B� �� �� ��
A + B �� �� ��
xs:date xdt:yearMonthDuration xs:date
xdt:yearMonthDuration xs:date xs:date
xs:date xdt:dayTimeDuration xs:date
xdt:dayTimeDuration xs:date xs:date
xs:time xdt:dayTimeDuration xs:time
xdt:dayTimeDuration xs:time xs:time
xs:dateTime xdt:yearMonthDuration xs:dateTime
xdt:yearMonthDuration xs:dateTime xs:dateTime
xs:dateTime xdt:dayTimeDuration xs:dateTime
xdt:dayTimeDuration xs:dateTime xs:dateTime
xdt:yearMonthDuration xdt:yearMonthDuration xdt:yearMonthDuration
xdt:dayTimeDuration xdt:dayTimeDuration xdt:dayTimeDuration
A - B �� �� ��
xs:date xs:date xdt:dayTimeDuration
xs:date xdt:yearMonthDuration xs:date
xs:date xdt:dayTimeDuration xs:date
xs:time xs:time xdt:dayTimeDuration
xs:time xdt:dayTimeDuration xs:time
xs:dateTime xs:dateTime xdt:dayTimeDuration
xs:dateTime xdt:yearMonthDuration xs:dateTime
xs:dateTime xdt:dayTimeDuration xs:dateTime
xdt:yearMonthDuration xdt:yearMonthDuration xdt:yearMonthDuration
xdt:dayTimeDuration xdt:dayTimeDuration xdt:dayTimeDuration
A * B �� �� ��
xdt:yearMonthDuration �� xdt:yearMonthDuration
�� xdt:yearMonthDuration xdt:yearMonthDuration
xdt:dayTimeDuration �� xdt:dayTimeDuration
�� xdt:dayTimeDuration xdt:dayTimeDuration
A idiv B �� �� xs:integer
A div B �� �� ��. �� ����� �
xs:integer � xs:decimal
xdt:yearMonthDuration �� xdt:yearMonthDuration
xdt:dayTimeDuration �� xdt:dayTimeDuration
xdt:yearMonthDuration xdt:yearMonthDuration xs:decimal
xdt:dayTimeDuration xdt:dayTimeDuration xs:decimal
A mod B �� �� ��
�
v �� � ��� xs:decimal -1.5� ���� � ��� xs:integer -1� �����.
78 IBM DB2 XQuery ���
-3 div 2-3 idiv 2
v �� ��� �� � ���� � � xdt:dayTimeDuration �� ���.
$emp/hiredate - $emp/birthdate
v �� �� �� ���� �� � unit-price � unit-discount� ���� ���� ��� ���
��.
$unit-price - $unit-discount
�� ��
58 ���� �����
18 ���� ����
59 ���� ��� � ���
59 ���� �� ���
21 ���� � 2 � �� ����
�� ��
55 ���� �� �
64 ���� ��� �� ����
�� ���
�� ��� � �����. XQuery� � ��� �� ��� � ��, �� �� � �� ���
�����.
� ��
��� �� � �����. �� ����� eq, ne, lt, le, gt � ge� ����.
�� ����� � ���� �����.
� 24. XQuery�� �� ���
��� ��
eq � � � ��� true� �����.
ne � � � �� ��� true� �����.
lt � � � �� ��� true� �����.
le � � � �� ��� ��� true� �����.
gt � � � �� �� true� �����.
ge � � � �� ��� ��� true� �����.
�� ��� � ����� �� �� � ����� � �� � ����. �� �
(xs:float, xs:integer, xs:decimal, xs:double � � ���� ��� �)� ����� �� � �
���. �� xs:string xs:anyURI � �� � ����.
� 4 � ��� 79
Special values: xs:float� xs:double � � �� 0 �� 0� ���� ����. INF� INF� ��
-INF� -INF� ����. NaN ��� �� ����. �� ���� � �� �
NaN �� ��, �� ���� � �� �NaN �� ����. NaN ne NaN true
��, NaN ��� � �� ��� false���. xs:QName �� � �
��� URI� ���� �� �� ���� ��� ��� �����(� ���� �
�� � �� ��).
��� � � �� , � ��� �� �����. ��� �� � � ����� ���(�� �
� ��)�� �� ��� �� �����.
v ���� ���� � ��� � ����� ��� � � � ������.
v ���� ���� � ��� � ��� � ���� ����� ��� �����.
v ���� ���� � ��� �� �� �� (xdt:untypedAtomic)�� xs:string�� ���
���.
xdt:untypedAtomic �� � xs:string�� ����� � ��� �� ����. ���, ��
��� �� ��� ���� � ��� ����� �� �� ����. ��� �� �� �
� ���� �� ��� �� ����. �� �, �� � xs:integer xs:float� ����
xs:integer� ����� ���� ��� xs:float �� ��� � ����.
v � �� ����� �� ���� �� ��� ���� ���� ���� ����� ����, �
�� � � true �� false� ���. ����� �� �� ���� �� ��� ��� ��� ��
� �����.
�� � eq �� ne ���� �� � ����. Gregorian��� ��� xs:gYearMonth, xs:gYear,
xs:gMonthDay, xs:gDay � xs:gMonth �� �����. Gregorian �� ����� �� ����
����� ����� � � � ��� ���. (�: � ����� �� xs:gDay�� � ���
�� �� xs:gDay� ���). �� numeric xs:integer, xs:decimal, xs:float, xs:double � � �
�� ����� ��� �� �����. numeric � � ��� �� �� �� � �� � �
� � ��� ���� ����� �� ����� ��� � �� �� ��(xs:integer, xs:decimal, xs:float,
xs:double)� � ��� �����.
v numeric
v xs:boolean
v xs:string
v xs:date
v xs:time
v xs:dateTime
v xs:duration
v xdt:yearMonthDuration
v xdt:dayTimeDuration
80 IBM DB2 XQuery ���
v Gregorian
v xs:hexBinary
v xs:base64Binary
v xs:QName
v xs:NOTATION
�� � gt, lt, ge � le ���� �� � ����. �� numeric xs:integer, xs:decimal, xs:float
� xs:double �� �����. numeric � � ��� �� �� �� � �� � �� � ��
� ���� ����� �� ����� ��� � �� �� ��(xs:integer, xs:decimal, xs:float, xs:double)�
� ��� �����.
v numeric
v xs:boolean
v xs:string
v xs:date
v xs:time
v xs:dateTime
v xdt:yearMonthDuration
v xdt:dayTimeDuration
�
v �� ��� ��� $book/author� ���� ��� ������. ��� � � xs:string ��
xdt:untypedAtomic� ��� ″Kennedy″ ��� ��� true���. ��� � � �� ��
� � ���� ����� ��� �����.
$book1/author eq "Kennedy"
v �� �� ����� weight� 100�� � ��� �� ��� � ����. weight �� ��
�� ��� � ��� � �����, �� �� ����.
//product[weight gt 100]
v �� ��� ID� � ���� � �� � � ��� ��� �� ��� � ���� true�
��.
<a>5</a> eq <a>5</a><a>5</a> eq <b>5</b>
�� ��
6 ���� ��� �
21 ���� � 2 � �� ����
� 4 � ��� 81
� ��
�� ��� �� �� �� ���� ���� ��� ���� � �� � ���� � �
�� ��� ��� ������ ����. �� �� ����� =, !=, <, <=, > � >=� ����.
�� ��� �� �� ���� �����.
� 25. XQuery�� �� ���
��� ��
= � ���� �� � � ���� �� ��� true� �����.
!= � ���� �� � � ���� �� �� ��� true� �����.
< � ���� �� � � ���� �� �� ��� true� �����.
<= � ���� �� � � ���� �� �� ��� ��� true� �����.
> � ���� �� � � ���� �� �� �� true� �����.
>= � ���� �� � � ���� �� �� ��� ��� true� �����.
�� ��� � � �� ��� �����. �� ��� �� � � ����� ���(�� � ��
�� ��)���. � ���� � ���� ���� ��� ���� � �� � ��
�� � ��� ��� ��� ������ ����. ��� �� � �� � �� ��� ����
�.
v � �� � xdt:untypedAtomic� ����� � �� � numeric �� ����� ��
xs:double ��� ������.
v � �� � xdt:untypedAtomic� ����� � �� � xdt:untypedAtomic �� xs:string�
����� xdt:untypedAtomic xs:string ��� ������.
v � �� � xdt:untypedAtomic� ����� � �� � xs:string, xdt:untypedAtomic �� �
� �� ���� ��� xdt:untypedAtomic � �� � ��� ������.
�� ��� �� �� ���� � �� �� ��� eq, ne, lt, le, gt �� ge � ��� �
��� �����.
�� � � � ���� ���� � ���� ���� �� �� ��� true ��
�� �� � true���.
�: ��� ���� � �� ��� � � �� �� ��� � � ����. �� �, �� (1, 2)
= (2, "Hello")� 2 eq 2� true��� true� �� �� ��, 1 ″Hello″� �� � ��
�� ��� �� �� ����.
�: �� � ���� ���� ����� XQuery �� fn:deep-equal� ������.
�
v $book1� �� � � �� �� � � xs:string �� xdt:untypedAtomic� ���� ″Kennedy″
�� �� ��� true���.
$book1/author = "Kennedy"
82 IBM DB2 XQuery ���
v �� ���� � �� �� ��� ���� ����. �� ��� true�� � � ���
false���. � �� �� ��� �� � ��� �� �����.
(1, 2) = (2, 3)(2, 3) = (3, 4)(1, 2) = (3, 4)
v �� ���� �� �� ��� � ���, � � true���. � ��� =� != ���� ��� �
� ��� ��� �����.
(1, 2) = (2, 3)(1, 2) != (2, 3)
v �� ��� �� $a, $b � $c� xdt:untypedAtomic �� �� �� � ��� �����. �
���� �� �� ″1″, ″2″ � ″2.0″� � ����. � ��� $b� $c� ��� (″2″� ″2.0″)
��� �����, �� ��� false� �����.
($a, $b) = ($c, 3.0)
��, �� ��� $b� ��� (″2″) 2.0� ��� ����� true� �����.
($a, $b) = ($c, 2.0)
�� ��
5 ���� ���� � ���
6 ���� ��� �
58 ���� �����
�� ��
133 ���� �deep-equal ���
�� ��
�� ��� ��� �����. ��� ���� �� ID� ����� �� ���� � ��� � �
� � ��� ��� ���� � � ����.
�� ��� XQuery�� �� �� �� �� ���� �����.
� 26. XQuery�� �� �� ���
��� ��
is ���� ��� ID� ��� true� �����.
<< �� ���� � ���� ��� � ���� ���� � �� true� �����.
>> �� ���� � ���� ��� � ���� �� ��� �� true� �����.
�� ��� � � �� , � ��� �� �����. �� ��� � � �� ��� �� �����.
v � ����� �� �� �� � ���� ���. �� ��� ��� �����.
v ���� � ��� � ����� ��� � � � ������.
v is ���� ���� ��� ���� ��� ��� ID� ��� � true�� �� ��� false
���.
� 4 � ��� 83
v << ���� ���� ��� �� ���� �� ���� ��� �� ���� ���� � � �
true� �����. �� ��� false� �����.
v >> ���� ���� ��� �� ��� ��� �� ���� �� ��� �� ��� �� �
true� ���� �� ��� false� �����.
�
v �� ��� �� ����� �� ����� �� ��� �� ��� ��� ��� ����.
/books/book[isbn="1558604820"] is /books/book[call="QA76.9 C3845"]
v �� ��� � � � ��� ��� ID� ���� false���.
<a>5</a> is <a>5</a>
v �� ��� �� ���� �� ����� ���� ��� �� ����� ���� ���� �
�� ��� ����.
/transactions/purchase[parcel="28-451"] << /transactions/sale[parcel="33-870"]
�� ��
13 ���� ��� ID�
12 ���� ���� �� ���
7 ���� ��� �� ���
���
��� ��� and� or� ���� �� (true �� false)� �����.
�� ��� �� ���� ���� � � � ����� ��� ����.
� 27. XQuery�� ��� ���
��� ��
and ���� � true�� true� �����.
or ��� � �� �� � � true�� true� �����.
���� � � �� (true �� false)��� �����. ���� ��� � � ����� EBV(Effective
Boolean Value)� ����. � �� ���� ����� EBV� ����, � � �� �� ��
� ���. ����� EBV� ���� ���� � � ��� ���. �� ��� ����� EBV�
���� ���� ���� � � �����.
� 28. ����� EBV� ���� �� ���� �
���� 1� EBV ��� ���� 2� EBV ��
true and true true
true and false false
false and true false
false and false false
84 IBM DB2 XQuery ���
� 28. ����� EBV� ���� �� ���� � (��)
���� 1� EBV ��� ���� 2� EBV ��
true and �� ��
�� and true ��
false and �� false �� ��
�� and false false �� ��
�� and �� ��
true or true true
false or false false
true or false true
false or true true
true or �� true �� ��
�� or true true �� ��
false or �� ��
�� or false ��
�� or �� ��
�: ��� ��, XQuery �� ���� ����� �� �� � ���� fn:not ��� �����.
�
v �� ��� true� �����.
1 eq 1 and 2 eq 21 eq 1 or 2 eq 3
v �� ��� false �� ��� �����.
1 eq 2 and 3 idiv 0 = 1
v �� ��� true �� ��� �����.
1 eq 1 or 3 idiv 0 = 1
v �� ��� ��� �����.
1 eq 1 and 3 idiv 0 = 1
�� ��
60 ���� ���� �� �
�� ��
155 ���� �not ���
�����
������ �� �� XML ��� � ���. XQuery� � ��, � ��, �� ��, ��� ��,
�� ��� �� � �� ��� � �� ������ �����. XQuery�� ��� �����(�
������ ��� �����)� ����.
� 4 � ��� 85
� ������ XML ��� ��� ���� �� �� XML ��� � ���. XQuery� � �
�(� ��, ��� ��, �� � ��� �� � ��), �� ��� �� � �� ��� � ��
� ������ �����. �� �, �� ������ ��� � � �� �� �� ����
book �� � ���.
<book isbn="isbn-0060229357"><title>Harold and the Purple Crayon</title><author>
<first>Crockett</first><last>Johnson</last>
</author></book>
��� ������ ���� ���� �� ��� ���� �� �� XML ��� � ���. �
�� ������ � ��� �� ���� ��� ����, �� ��� �(�� �� �
), ��� ��� �� ����� � ���. XQuery� � ��, � ��, �� ��, ��
� ��, �� ��� �� � �� ��� � �� ��� ������ �����. �� �, �� ��
�� �� ��� � ������ ��� � � � �� ��� ������ � ����.
element book {attribute isbn {"isbn-0060229357" },element title { "Harold and the Purple Crayon"},element author {
element first { "Crockett" },element last {"Johnson" }
}}
�� ��
9 ���� ��� ���
������� �� ���
��� ������� � � � ��� ��� � ���� � �����. ��� ���
������ ��� � � �� ��� �����. ��� ���({}) �� � ��� ���
���� �����.
��� �� ������� ��� � ���� � �� � ����.
v � � �����
– � � ������ �� �� �� � ���� �� � ����.
– � � ������ ��� � � ��� ��� � � � � ���� ���� ��
� ����.
v ��� �����
– ��� ��� ��� � �� � �� � ����.
�� �, �� � � ������ ���� �����.
86 IBM DB2 XQuery ���
<example><p> Here is a query. </p><eg> $b/title </eg><p> Here is the result of the query. </p><eg>{ $b/title }</eg>
</example>
� ������ ��� �� � � � � ���. (�� ��� � �� ��� �����.)
<example><p> Here is a query. </p><eg> $b/title </eg><p> Here is the result of the query. </p><eg><title>Harold and the Purple Crayon</title></eg>
</example>
�: � �� � � �� ��� ���� �� ��� ����� �� ��� �� ����� �
� ��� �� � ����. �� �, {{ �� ���� �� {� ��� � ����. �����,
}} �� ���� }� ��� � ����. �� �� �� {� }� ���� ��� ��
� �� � ����. ��� �� ���({)� ���� �� ����� �����. ��� �
� ���(})� �� �� �� ���� ��� �����.
�� ��
96 ���� ���� � ������
97 ���� ��� �� ������
98 ���� ���� �� ������
100 ���� ���� �� ��� ������
101 ���� ���� �� ������
�� �� �����
� � ������ XML ��� ��� ���� � ��� � ���. � � ��� �� �
�� � , ��� �� � �� �� ���� ��� �� � � ����.
� � ������ �� � � ��� �� ID� �� ��� � �����. � � ��� ��
� � � � �� ��� ID� �� � ��� ����.
��
�� �< ElementNameAttributeName = ’ AttributeValue ’
″ ″Namespace declaration attribute
�
� 4 � ��� 87
�
�
/>
> </ ElementName >ElementContent
��
Namespace declaration attribute:xmlns:prefixToBind = URILiteralxmlns
ElementName
� � �� ���� QName. �� �� ElementName� ���� � � � ��� �
��� �� �� �� ��� � �� �� ���. ElementName� � ���� � �
� �� � � �� � ���� URI� �� ���� ��� � ����� ���� ����
�. ElementName� � ���� � �� �� �, � ��� �/� � ����� ��
����� �����. ElementName� �� � �� QName � � � ��� �� �
��.
AttributeName
� � � �� ���� QName. AttributeName� � ���� � �� �� � � ��
� ���� URI� �� ���� ��� � ����� ���� �����. AttributeName� �
���� � �� �� �, � � ����� �� ����. AttributeName� �� �
�� QName � � � ��� �� ���. � � � �� QName ��� ���.
�� ��� ���� � � ��� ���.
� � ������ � � ��� �� ID� �� � � ��� � ���. � � ���
� � � � � �����. � � ���� xdt:untypedAtomic� � ��� �����.
AttributeValue
� � ���� ��. � � ������ ��� � � �� ��� ���� ���
�� ���� �� � ����. �� ��� ��� �� � �� ��� ���� � ��
�� ��� ����. �� ��� �� AttributeValue�� ����� ��� �� ��� ���
�� �� ��� ��� ��� �����.
� 29. � � �� �� ��
�� �� �� �� ��
{ �� �� ���({{)
} �� �� ���(}})
< <
& &
″ " �� �� ����(″″)
’ ' �� �� ����(″)
88 IBM DB2 XQuery ���
xmlns
� ���� � � � ���� ��. QName�� � �� ����, xmlns� prefixToBind�
� URILiteral� ���� URI� ���� �����. � � ���� � � ����� ��
� � ��� �� �� �� ���� �� ���� ��� � ����� �����. �� �
�� � ���� � � xmlns:metric = "http://example.org/metric/units"� � � metric
� � ���� http://example.org/metric/units� �����.
� �� �� ��� QName�� ���� � xmlns� ��� �/� � ����� URILiteral
� ���� �����. � ��� �/� � ����� � ����� ��� � ��� �
� �� �� ���(�� � ���� � � �� � � ����� �� �)� �� ���
��. �� ��� � ���� � � xmlns = "http://example.org/animals"� ��� �/
� � ����� http://example.org/animals� �����.
prefixToBind
URILiteral� ��� URI� ���� � �. prefixToBind xml �� xmlns� � � ����.
��� � ��� ���� � � ��� ���.
URILiteral
URI� ���� �� ���(���� �� ���� �� �� 0� ��� �� ���). ��
��� ��� URI� ���. URILiteral� � ���� � � � ��� �/� �
����� ���� � ��� ��� �� 0 ��� � � ����. �� � ��
URILiteral� �� 0 ��� ���� � � �����.
ElementContent
� � ������ ��. ��� ������ �� �� �� � ��� �� �� ���
� ���. � ����� ��� ���� ����� ���� �� � �� ���� ����
�� �� �����. � �� ���� �� ���� �����. � � �� ��� ���
���( ���� � ��� ��) �� ��� ��� �����. � � ��� � ��
���� � ���� � � ���.
ElementContent� �� ��� � � � ����.
v ��� ��. ��� ��� ��� �� � �� ��� ��� �� ��� ��� �����. �
� ���� �� �(eol) XML 1.0� �� ��� �� �(eol) �� ��� �� ������. �
� ��� �� ElementContent�� ����� ��� �� ��� ��� �� �� ��� �
�� ��� �����.
� 30. � ���� �� �� ��
�� �� ���� �� ��
{ �� �� ���({{)
} �� �� ���(}})
< <
& &
v ��� � �����
� 4 � ��� 89
v CDataSections. CDataSections� �� ��� ���� �����. <![CDATA[contents]]> ���
contents� ��� � ���. contents� ��� �� < � &� � �� �� �� ��
��� ��� ���� �����. ��� ]]>� CDataSection� ����� contents ��� ���
� ����.
v �� �� � �� ��� ��� ��. ���� �� �� ��� ��� �� � �� ��� ��
��� ����.
v �� ���. ��� ��� �� ��� XQuery ������. �� �, {5 + 7}
������. ���� �� � �� ���� � � ����. ��� � �
����� ��� ����, � � ��� ��� � � �� �� � ����. ����
��� � ��� �� ��� �� � � ��� ��� � ����, �� �� ��� ��
���. ElementContent� ��� � ��� � �� ���� ��� �� ���. ��� �
��� � � �� � � ���. ElementContent� ��� �� �, �� �� �� ��
� ��� �� � � ��� � � ���. ElementContent� ��� �� ��� ����
��� ��� ����, � � ��� � ��� ���. �� ��� ��� �� ��� ���
�����.
�
v �� � � ������ book �� � ���. book ��� � ��, �� �� � ��
� �� ��� ��� ���� ��� ��� �����.
<book isbn="isbn-0060229357"><title>Harold and the Purple Crayon</title><author>
<first>Crockett</first><last>Johnson</last>
</author></book>
v �� �� � � ������� � ��� ���� ��� �����.
– �� ��� ��� � ( ″1″� ���� ��� ��)� �� � ��� � ���.
<a>{1}</a>
– �� ��� ��� � ( ″1 2 3″� ���� ��� ��)� �� � ��� � ���.
<a>{1, 2, 3}</a>
– �� ��� ��� � ( ″123″� ���� ��� ��)� �� � ��� � ���.
<c>{1}{2}{3}</c>
– �� ��� ��� � ( ″1 2 3″� ���� ��� ��)� �� � ��� � ���.
<b>{1, "2", "3"}</b>
– �� ��� ��� � ( ″1 saw 8 cats″� ���� ��� ��)� �� � ��� � ��
�. :
<fact>I saw 8 cats.</fact>
90 IBM DB2 XQuery ���
– �� ��� ��� � ( ″1 saw 8 cats″� ���� ��� ��)� �� � ��� � ��
�.
<fact>I saw {5 + 3} cats.</fact>
– �� ��� � �� � (″I saw″� ���� ��� ��, howmany�� �� � � �� �
" cats."� ���� ��� ��)� �� � ��� � ���. � � ���� �� � (
″8″� ���� ��� ��)� ����.
<fact>I saw <howmany>{5 + 3}</howmany> cats.</fact>
�� ��
62 ���� ��� ��� ��� ���
63 ���� ��� ���
86 ���� �������� ����
�� ���� � � �
48 ���� �boundary-space ��
92 ���� �� � ������� ���� �� ���
�� ���� �� ��
� ���� � � � � ������ �� ��� �����. � ���� � � �
���� � �� URI� ����, � � � �� � � � � �� �� ��� �/�
�� ���� �� ���� �����.
����� � ���� � � � � ������ � ��� ����. � � �
� �����. � � �� QName���. � ��� URI� ���� �� ������.
� ���� � � � ��� � �� �� ����.
����: � � ������ � � ���� � � ��� ���. �� ��� ����
� � ��� ���.
URI� �� ���� ��� ���
QName� � � xmlns� ���� �� �� �� �, � � ���� � �(�� ��� �
��)� URI(� �� ���)� ���� � �����. �� �, � ���� � �
xmlns:metric = "http://example.org/metric/units"� � � metric� � ����
http://example.org/metric/units� �����.
� ���� � � � ��� � � �� URI� ����� ���� ���� ��� � �����
����, � �� ��� ��� � �� �� �����. � �� URI� �� � � �� �
� � ����� �� � ���� ��� ��� �� ����.
�� �, �� � ������� � ���� � � � ���� � � ��� � ��� �
��� � �����.
� 4 � ��� 91
<box xmlns:metric = "http://example.org/metric/units"xmlns:english = "http://example.org/english/units">
<height> <metric:meters>3</metric:meters> </height><width> <english:feet>6</english:feet> </width><depth> <english:inches>18</english:inches> </depth>
</box>
��� ��/�� �� ���� �
QName� � �� �� xmlns � � ��� �/� � ����� ���� � �����.
�� �, � ���� � � xmlns = "http://example.org/animals"� ��� �/� �
����� http://example.org/animals� �����.
� ���� � � � ��� � � � ���� URI� �����. � URI� ����� �
��� ��� �/� � ����� ����, � �� �� ���� �����. URI� �� �
� �� � � � ����� � � �� ����, � �� � �� �� ��� � ���� �
� �����. � ���� URI� �� 0 �� � ����� ���� ��� �/�
� ����� ″none″�� �����.
�� �, �� � � ������� � ���� � � ��� �/� � �����
http://example.org/animals� �����.
<cat xmlns = "http://example.org/animals"><breed>Persian</breed>
</cat>
�� ��
15 ���� �XML � ���� � QName�
�� ��
94 ���� �� � �� � � � �����
�� �� ������� ��� �� ��
� � �������, ���� �� ��� �� �� �, � ����� �� �� �� ����
� �� ���� ��� �� ��� ������. �� �, ���� �� ����� ���� �
��� � ������ �� �� �� �� �� � ����.
�� �� ���� ��� ��� � � ������ ����.
<product>
</product>
<description> </description>{ " enclosed expression " }
92 IBM DB2 XQuery ���
� ��� ���� ���� �� ��� �����. product� description �� �� � ���
� ��� �� ��� �� �� � �, description �� �� �� ��� ��� �� ��
� �, ��� description �� �� � ��� �� �� � �, description �� ��
� ��� � ��� �� ��� �����.
���� ���� �� �� �� ���� ����.
v ����� � � ��
v �� ��(�:  ) �� CDataSections� �� � � ��
v �� �� �� CDataSection� �� �� ��
���� �� �� ���� ��� � ������ �� ������ ��� �����. � ��
�� � �� boundary-space ��� �����. boundary-space �� strip�� ���� ����
�� �����. boundary-space �� preserve� ���� ���� �� �����. boundary-space
�� ���� ��� �� � � ���� �� ��� �� strip� ���.
�
v �� ��� � � cat � ���� breed� color�� �� � � ��� ����.
<cat><breed>{$b}</breed><color>{$c}</color>
</cat>
���� �� �� ���� strip���, � � � � �� � ������ �� �����.
v �� ��� ���� �� �� strip���. � �� <a>abc</a>� �����.
declare boundary-space strip;<a> {"abc"} </a>
v �� �� ��� ���� �� �� preserve���. � �� <a>abc</a>� �����.
declare boundary-space preserve;<a> {"abc"} </a>
���� �� ��� preserve��� ��� �� �� � ������� �����.
v �� ��� z � � �� ���� ��� ����. �� �� ����, � �� <a> z abc</a>
� �����.
<a> z {"abc"}</a>
v �� ��� �� �� � �� �� ��� �� � � �� ��� ���� �� ��� ����
�����. � �� <a> abc</a>� �����.
<a>  {"abc"}</a>
v ����� � � �� �� ���� ���� ���� ����, �� ��� ���� �
� ���� �� ��� ���� �����. � �� <a> </a>� �����.
<a>{" "}</a>
� 4 � ��� 93
���� ����� � ������ �� ���� � � �� �� �� � ��� ��
���.
�� ��
18 ���� ����
�� ��
48 ���� �boundary-space ��
87 ���� �� � ������
��� ��� �� � �� ����
� � � ���� � ���� � ��� � �� � � � ���� �� ��� ����.
� � ���� � � ���� � �� URI� �����. � ���� � � � �
� QName� �� � �� � ���� � � ��� �����.
����: � ��� ����� �� ��� ��� ��� ���.
�� � �� �� ����
���� ��� � ����� ���� �� �����. � �� ��� XQuery��
���� ���� ���� �� � ���� � �� ���� � ���� �
��� �����. ��� � �� � � ��� ����.
� � �� ����
� � � ����� � ��� �� �����. � �� ��� � � ��
��� ��� � XQuery� ���� �� ����� �� �� �� � ��
�� � ��� �����. ��� � �� � � ��� � ����� �
��� ����� �� �� ����.
� � �� � � � ������ �� � ���� � � �� � ���� �� ���
��.
v �� ���� �� ��� � ��� �. � ���� � �� ������� �� � �
���� � � � �� � ���.
– �� � �����
– �� � � �����(� ���� � � � �� � ����� �� �� ������ �
� ������ �� �)
v ���� �� �� �. � ���� � �� ���� � ���.
– � � xml� � ���� URI http://www.w3.org/XML/1998/namespace� ���� �. �
� � � �� �� �� � ���.
– � � �� � �� � � �� ���� � � ����� ��( �� � � � �
���� � ���� �� �� ���� �� �). ��� �� � �� ���� �
�� � ���� �� �����. �� � �� ��� � � � �� �� � ��
94 IBM DB2 XQuery ���
�. ��� � �� �� � �� ��� ��� ���� �� �� ��� � �� ��
� � �� ���� ��� � �� �� � ���� �� � ���.
����: QName� ��� � �� ��� URI �� � �� �� � � � �����
�� � �� ��� ���� ���. QName� �� � ��� ���� � �
�����.
�
�� ��� � ���� �� �� � �� � � ������ �� ��� �����.
declare namespace p="http://example.com/ns/p";declare namespace q="http://example.com/ns/q";declare namespace f="http://example.com/ns/f";
<p:newElement q:b="{f:func(2)}" xmlns:r="http://example.com/ns/r"/>
� �� � ���� � ���� ��� ���� � ����� � ���� �� ���
��. �� � ���� � ������ QName� ��� � ����� ���� ��� �
� �� � � � ����� �����. ��� p:newElement� � � � ����� ��
� ���� ��� � ���.
v p = "http://example.com/ns/p" - � � ���� � QName p:newElement� � � p�
���� � � � ����� �����.
v q = "http://example.com/ns/q" - � � ���� � � QName q:b� � � q� ���
� � � � ����� �����.
v r = "http://example.com/ns/r" - � � ���� � � ���� � � � ���� �
��� � � � ����� �����.
v xml = "http://www.w3.org/XML/1998/namespace" - � � ���� � � � �� � �
�� �� ���� ���� � � � ����� �����.
� ���� f="http://example.com/ns/f"� ���� � � � ����� �� ���� �
���. � ������� � � f� ���� � �� � �� ���� �� �����.
(f:func(2)� � � q:b� ��� �� ���). ���, � � ���� � ���� �
�� � ����� �� ��� ���� ��� �� � �� ��� �� � � ���� ����.
�� ��
15 ���� �XML � ���� � QName�
�� ��
91 ���� �� ���� � � �
���� � ������
��� �� �����
��� � ������ ���� �� ��� ��� �� � ��� � ���.
� 4 � ��� 95
��� � ������ �� � � ��� �� ID� �� ��� � �����. � � ��� �
� � � � � � ��� ����� ��� ����� �� ��� ID� �� � ��� ����.
���� element ElementName { }
ContentExpression��
element
� ��� � �� ���� �����.
ElementName
� �� QName. ElementName� � ���� � �� �� � � �� � ���� URI
� �� ���� ��� � ����� ���� �����. ElementName� � ���� � ��
�� �, � ��� �/� � ����� �� ����� �����. ElementName� �
� � �� QName � � � ��� �� ���.
ContentExpression
� � � ��� ��� � �� ���. ContentExpression� ��� ��� � �� �
� � ����. ContentExpression � � ��� �� � � � �� ���� � ��� � �
���. ContentExpression� ��� � ��� �� ��� �� � � ��� ��� � ���
�, �� �� ��� �����. ContentExpression� ��� � ��� �� ���� ���, �
� � � � � � � � � � � � � . ��� � � � � � � � � � � � � � .
ContentExpression� ��� �� �, �� �� �� ��� ��� �� � � ��� � � �
��. ContentExpression� ��� �� ��� ���� ��� ��� ����, � � ���
� � ���. �� ��� ��� �� ��� ��� �����.
�
�� ����� ��� � ������ �� �� ��� ��� � ���. �� $e� �� ���
�� �� �����. � ������ length�� �� � �� � ���. � �� $e� �
� � ���, $e ��� �� ��� ����.
element length {$e/@*, 2 * fn:data($e)}
� ��� $e ��� let $e := <length units="inches">{5}</length> ���� ����, �� �
�� � � � <length units="inches">10</length>� ���.
�� ��
86 ���� �������� ����
94 ���� �� � �� � � � �����
��� �� �����
��� � ������ ���� �� ���� � � � ��� � ���.
��� � ������ �� � � ��� �� ID� �� ��� � �����.
96 IBM DB2 XQuery ���
�: � ��� � � ��� � � ������� � � �� ���.
���� attribute AttributeName { }
AttributeValueExpression��
attribute
� ��� � �� ���� ��
AttributeName
� � � QName. AttributeName� � ���� � �� �� � � �� � ���� URI
� �� ���� ��� � ����� ���� �����. AttributeName� � ���� � �
� �� �, � � ����� �� ����. AttributeName� �� � �� QName
� � � ��� �� ���. � � � � � �� QName ��� ���. �� ���
���� � � ��� ���.
AttributeValueExpression
� ��� � � �� ���. ���� �� AttributeValueExpression� � � ���� ���
�, � ���� � �� ��� ������. ���� � ��� �� ��� ��
��� �����. ��� �� � � � ��� � ���.
�
��� ��� � ������ � ″7″ size�� � � � ���.
attribute size {4 + 3}
�� ��
11 ���� �� ���
�� ��
86 ���� �������� ����
87 ���� �� � ������
�� �� �����
�� �� �� ������ ��� ��������. �� �� ������ ���� �� ��
�� ��� �� ��� � ���. �� �� ������ ��� � � �� �� � �����.
�� �� ������ �� � � ��� �� ID� �� ��� �� �����.
����: � � �� ��� �� �� � ���� ����. XQuery �� �� ������ XML
��� ��� ���� XML 1.0 ��� � �� ����. �� �, �� ���� � ��
��� � ��� �� ����.
��
� 4 � ��� 97
�� document { ContentExpression } ��
document
� �� ��� ���� �����.
ContentExpression
� � �� ��� ��� � �� ���. ContentExpression� � ��� ��� �� ��
� � �� � � � ����. �� ���� � ��� ��� ��� �����. �� ���
� �� ��� � � �����. ContentExpression� ��� � ��� �� ��� �� � �
��� ��� � ����, �� �� ��� �����. �� ���� ��� �� �
��� ���� ��� ��� ����, � � �� ��� � � ���. �� ��� ��� �
� ��� ��� �����.
�
�� �� �� ������ customer-list�� �� �� ���� XML ��� ���� �� ��
�� �����.
document{
<customer-list>{db2-fn:xmlcolumn(’MYSCHEMA.CUSTOMER.INFO’)/ns1:customerinfo/name}
</customer-list>}
�� ��
9 ���� ��� ���
�� ��
86 ���� �������� ����
��� �� �����
�� ��� �� ������ ��� ��������. ��� �� ������ ���� �� ��
�� ��� ��� ��� � ���.
��� �� ������ �� � � ��� �� ID� �� ��� ��� �����.
���� text { ContentExpression } ��
text
� ��� ��� ���� �����.
ContentExpression
� � ��� ��� ��� � �� ���. ���� �� ContentExpression� � � ���� �
98 IBM DB2 XQuery ���
���, � ���� � �� ��� ������. ���� � ��� �� ��� �
� ��� �����. ��� �� � � ��� ��� ��� ���. ��� � � � ���
�� ��� ��� � �� ����.
�: ��� �� ������ �� 0 ��� ���� ��� ��� � �� � ��� � ����.
�� � ��� ��� � � � �� �� ��� ���� ���� �� ��� ��� ��
�� � ��� ��� �����.
�
�� ������ �� ″Hello″� ���� ��� ��� � ���.
text {"Hello"}
�� ��
11 ���� ���� ���
�� ��
86 ���� �������� ����
�� ��� �����
�� ��� ������ �� ��� ��� � ���. XQuery� �� ��� �� � � � � �
���� � ��� ������ �����.
� � ���� �� � �� �� ��� ����.
�� � ��
�� ���� �� ����� �����.
��� � ��
�� ���� ��� �����.
�� ��
12 ���� ��� ��� ���
�� �� ��� �����
� �� ��� ������ XML ��� ��� ���� �� ��� ��� � ���.
���� <? PITarget ?>
DirPIContents��
PITarget
�� ���� �� �� ����� �� ���� NCName. �� ���� PI ��� �� �
��� ���� �� ″XML″� � � � ����.
� 4 � ��� 99
DirPIContents
�� ���� ��� ���� ��� ��. �� ���� ���� ?> ��� �� � ���
�.
�
�� ������ �� ��� ��� � ���.
<?format role="output" ?>
�� ��
12 ���� ��� ��� ���
�� ��
���� �� ��� ������
��� �� ��� �����
��� �� ��� ������ ���� �� ��� ��� ���� �� ��� ��� � ��
�.
��� �� ��� ������ �� � � ��� �� ID� �� ��� �� ��� �����.
���� processing-instruction PITarget { }
PIContentExpression��
�� ��
�� ��� ��� � �� ���� ��
PITarget
�� ���� �� �� ����� �� ���� NCName. � � Namespaces in XML
� �� ���� NCName� �� ��� ���.
PIContentExpression
�� ��� ��� ��� � �� ���. ���� �� PIContentExpression� � � ����
����, � ���� � �� ��� ������. ���� � ��� �� ���
�� ��� �����. � � �� ����, ��� �� �� ��� ��� ��� ���.
��� � � � ��� � ���� �� 0 ��� ����. �� ����� ″?>″ �
�� �� � ����.
�
�� ��� ������ �� ��� <?audio-output beep?>� � ���.
processing-instruction audio-output {"beep"}
�� ��
12 ���� ��� ��� ���
100 IBM DB2 XQuery ���
�� ��
99 ���� �� �� ��� ������
86 ���� �������� ����
�� �����
�� ������ �� ��� � ���. XQuery� �� �� � � � ���� ��� �����
� �����.
�� ��
12 ���� ��� ���
18 ���� ����
�� �� �����
� �� ������ XML ��� ��� ���� �� ��� � ���.
���� <!-- DirCommentContents --> ��
DirCommentContents
��� ��� ���� ��� ��. ��� ��� �� ���� ���� �� � ���, �
���� �� �� ����.
�
�� ������ �� ��� � ���.
<!-- This is an XML comment. -->
�� ��
12 ���� ��� ���
�� ��
���� �� ������
��� �� �����
��� �� ������ ���� �� ��� ��� �� �� ��� � ���.
��� �� ������ �� � � ��� �� ID� �� ��� �� �����.
���� comment { CommentContents } ��
��
�� ��� � �� ���� ��
� 4 � ��� 101
CommentContents
��� ��� � �� ���. ���� �� CommentContents� � � ���� ����, ���
� ���� � �� ��� ������. ���� � ��� �� ��� �� ���
�����. ��� � � � ��� � ���� �� 0 ��� ����. �� ���
� �� �� ���� �� � ���, ����� �� �� ����.
�
�� ��� ������ <!--Houston, we have a problem.--> ��� � ���.
let $homebase := "Houston"return comment {fn:concat($homebase, ", we have a problem.")}
�� ��
12 ���� ��� ���
�� ��
101 ���� �� �� ������
86 ���� �������� ����
FLWOR ���
FLWOR ��� ���� �� ���� ��� �� � � �����. FLWOR ��� � ���
��� ��� ��, ��� ���� � � ��� �����.
FLWOR ���� ��
FLWOR ��� �� �(��� �)� ���� � ���. for, let, where, order by � return
�� � for clauselet clause where Expression
�
,ascending
order by Expressiondescending
�
� return Expression ��
for clause:
�
,
for $VariableName in Expressionat $PositionalVariableName
let clause:
102 IBM DB2 XQuery ���
�
,
let $VariableName := Expression
for
for�� ���� ��. for� Expression� � � ����, VariableName� Expression� ���
� ��� �����.
let let�� ���� ��. let� VariableName� Expression� �� � � �����.
VariableName
Expression� � � ����� ��� �
PositionalVariableName
for�� � ��� �� ���� ��� �� �� � � ���� � ��� �
Expression
XQuery ���. ���� �� �� � ���� �� �, ��� �� �� � ��
���.
where
where�� ���� ��. where� for� let��� � � �� �� ��� �����.
order by
order by�� ���� ��. order by� return��� � ��� ��� �����.
ascending
�� � ����� ����� �����.
descending
�� � � ���� ����� �����.
return
return�� ���� ��. return�� ��� for, let, where � order by��� � � ���
��� � ��� �� � � ����. return�� �� � � � FLWOR ���� � ��
���� �����.
�� ��
104 ���� �for� let��
108 ���� �where��
109 ���� �order by��
111 ���� �return��
63 ���� ��� ���
111 ���� �FLWOR ���
� 4 � ��� 103
for�� let�
FLWOR ����� for� �� let� �� ��� ��� FLWOR ���� � ��� �� � �
����.
�� ��
102 ���� �FLWOR ���� ���
109 ���� �order by��
for�
for� ���� � � �� ���� ���� � ��� ��� �����.
�� ��� �� for� ��� �� � ��� ���� �����. �� ��� for� $i�� ��
� ��� (1, 2, 3)� � �� ���� �����.
for $i in (1, 2, 3)return <output>{$i}</output>
for�� ��� � �� �� �� � ���(���� � ��� ��� �).
$i = 1$i = 2$i = 3
� ��� return� ��� � � ����. ���� � �� �� ����.
<output>1</output><output>2</output><output>3</output>
for��� �� ��� ��� � ���, ��� ���� � � ��� � ����. �� ��� for�
�� �� �� $a � $b� ��� 1 2 � 4 5� � �� ���� ����.
for $a in (1, 2), $b in (4, 5)return <output>{$a, $b}</output>
for�� ��� � � ��� �� �� �� ��� � ���. � � � �� �� � ���
��.
($a = 1, $b = 4)($a = 2, $b = 4)($a = 1, $b = 5)($a = 2, $b = 5)
� ��� return� � � ���� � � ����. ���� � �� �� ����.
<output>1 4</output><output>2 4</output><output>1 5</output><output>2 5</output>
� ���� � ���� �� ��� �, for �� � �� ��� ��� ���� ����.
104 IBM DB2 XQuery ���
for�� �� ��
for��� ���� � ��� ��� ���� ��� ��� �� � ����. ��� �
�� �� at� ����. ���� ��� �� ��� ��� � ��� 1�� ���� ����
�� � ���� ��� �� �����.
�� ��� for� $cat�� ��� ��� ("Persian", "Calico", "Siamese")� � �� ����
�����. � � �� � ������� order � � � ���� � ���� �� $i�
�����.
for $cat at $i in ("Persian", "Calico", "Siamese")return <cat order = "{$i}"> { $cat } </cat>
for�� ��� � ��� �� ���� � �� �� � ��� � ���.
($i = 1, $cat = "Persian")($i = 2, $cat = "Calico")($i = 3, $cat = "Siamese")
� ��� return� � � ���� � � ����. ���� � �� �� ����.
<cat order = "1">Persian</cat><cat order = "2">Calico</cat><cat order = "3">Siamese</cat>
� �� �� �� � � ���� ��� FLWOR ���� order by�(�: order by $i)� ����
�� � �� �� ��� �� � ��� ���� ����. ��� �� ��� � ��
� ��� �� ��� � �� � ����.
�� ��
106 ���� ���� ���� for� let��
107 ���� �for � let� ���
107 ���� �for� let��� �� � �
let�
let� ��� ���� �� � � �����. let� ��� ���� ����.
�� ��� �� let� ��� �� � ��� ���� �����. �� ��� let� $j�� ���
��� (1, 2, 3)� � �� ���� �����.
let $j := (1, 2, 3)return <output>{$j}</output>
let�� �� � ���� �� � �� ���� �� �� �� � ���.
$j = 1 2 3
� ��� return� � ����. ���� � �� �� ����.
<output>1 2 3</output>
� 4 � ��� 105
let� �� ��� �� � ����. �� for� � let� ���� �� ��� ���� � �
� ��� �����. �� ��� let��� �� �� $a � $b� ��� 1 2 � 4 5� � �� �
��� ����.
let $a := (1, 2), $b := (4, 5)return <output>{$a, $b}</output>
let�� ��� �� �� ��� �� � ���.
($a = 1 2, $b = 4 5)
� ��� return� ��� �� � ����. ���� � �� �� ����.
<output>1 2 4 5</output>
� ���� � ���� �� ��� �, � ���� � �� let �� � ���.
�� ��
���� ���� for� let��
107 ���� �for � let� ���
107 ���� �for� let��� �� � �
�� ���� for�� let�
FLWOR ���� for� let�� � � �� �, let�� � �� �� �� for�� � �� ��
�� �����.
�� ��� for� $a�� ��� ��� (1, 2, 3)� � �� ���� �����. let� $b�� �
�� ��� (4, 5, 6)� � �� ���� �����.
for $a in (1, 2, 3)let $b := (4, 5, 6)return <output>{$a, $b}</output>
� ��� for� let�� � � � �� � �����. ��� �� for��� �����.
($a = 1, $b = 4 5 6)($a = 2, $b = 4 5 6)($a = 3, $b = 4 5 6)
� ��� return� � � ���� � � ����. ���� � �� �� ����.
<output>1 4 5 6</output><output>2 4 5 6</output><output>3 4 5 6</output>
�� ��
107 ���� �for� let��� �� � �
107 ���� �for � let� ���
106 IBM DB2 XQuery ���
for � let� ��
for� let� � � ��� ����� ��� ���� ��� ����.
�� ��� ��� for� let�� ���� FLWOR ���� �� � � ��� ����.
� 31. FLWOR ����� for� let� ��
�� �� FLWOR ��� ��
�� �� �� for $i in ("a", "b", "c")return <output>{$i}</output>
<output>a</output><output>b</output><output>c</output>
let $i := ("a", "b", "c")return <output>{$i}</output>
<output>a b c</output>
�� �� �� for $i in ("a", "b"), $j in ("c", "d")return <output>{$i, $j}</output>
<output>a c</output><output>b c</output><output>a d</output><output>b d</output>
let $i := ("a", "b"), $j := ("c", "d")return <output>{$i, $j}</output>
<output>a b c d</output>
�: � ���� ����� order by�� ���� �� �� ��� �������.
�� ��
�for� let��� �� � �
106 ���� ���� ���� for� let��
for�� let��� �� ��
for� �� let��� ��� ��� �� � ��� ��� FLWOR ���� �� �� ����
�� � ����. � for� �� let� ��� � �� � �� �� ��� ��� ��� ��
� ����.
�� ��� FLWOR ����� �� �� ����.
v �� $orders� ���� let�
v $orders� ���� �� $i� ���� for�
v $orders� $i� � � ���� �� $c� ���� �� let�
�� �� ���� ���� �� �� �� ��� ���� � �� �� �� �� �����.
let $orders := db2-fn:xmlcolumn("ORDERS.XMLORDER")for $i in fn:distinct-values($orders/order/itemno)let $c := fn:count($orders/order[itemno = $i])return<ordercount>
<itemno> {$i} </itemno><count> {$c} </count>
</ordercount>
����: FLWOR ���� for� let��� � �� � � � �� � ����.
�� ��
� 4 � ��� 107
63 ���� ��� ���
107 ���� �for � let� ���
106 ���� ���� ���� for� let��
where�
FLWOR ����� where� for� � let��� � � �� �� ��� �����.
where� � �� �� ��� �� ��� �����. ��� true��(�, ���� � � ���
�� true �), �� ���� � return�� �� � �����. �� ���
�� �����.
�� ��� for� �� $x� $y� �� ���� �����.
for $x in (1.5, 2.6, 1.9), $y in (.5, 1.6, 1.7)where ((fn:floor($x) eq 1) and (fn:floor($y) eq 1))return <output>{$x, $y}</output>
for�� �� � �� �� �� � ��� � ���.
($x = 1.5, $y = .5)($x = 2.6, $y = .5)($x = 1.9, $y = .5)($x = 1.5, $y = 1.6)($x = 2.6, $y = 1.6)($x = 1.9, $y = 1.6)($x = 1.5, $y = 1.7)($x = 2.6, $y = 1.7)($x = 1.9, $y = 1.7)
where��� ��� ��� ���� �� �� ��� �����.
($x = 1.5, $y = 1.6)($x = 1.9, $y = 1.6)($x = 1.5, $y = 1.7)($x = 1.9, $y = 1.7)
return� ��� � ��� �� � � ����, ��� � � �� �� �����.
<output>1.5 1.6</output><output>1.9 1.6</output><output>1.5 1.7</output><output>1.9 1.7</output>
� �� ����� order by�� ����, �� �� ��� �������.
�� ��
60 ���� ���� �� �
�� ��
102 ���� �FLWOR ���� ���
107 ���� �for� let��� �� � �
108 IBM DB2 XQuery ���
order by�
FLWOR ���� order by� return��� � ��� ��� �����. order by�� ��� FLWOR
���� � � ��� �� �� �����.
order by��� �� ��� �� ��� � ����. �� �� where��� ��� � ��� ��
�� ��� �� ���� � �����. � ��� return�� ��� ��� �����.
� �� �� ��� �� � � �� ��� �� � �� ��(��� �� � ��)� ��
�� �� ���� � ���. ��� ��� ��� �� � � ���� ���� ���� ��
���.
�� ��� FLWOR ����� product� price� � ���� ���� order by�� ����.
<price_list>{for $prod in db2-fn:xmlcolumn(’PRODUCT.DESCRIPTION’)/product/descriptionorder by xs:decimal($prod/price) descendingreturn<product>{$prod/name, $prod/price}</product>}
</price_list>
order by�� ���� �� �� ��� ��� for��� � � � ��� �� ����. � �
�� �� ��� xs:decimal($prod/price)� �� 9.99���. �� �� ��� �� ����
���, ��� 19.99� �����. �� �� ��� � ���� ���� �����, price�
19.99 product� price� 9.99 product�� � ���. � �� ����� �� ��� �� ���
� � �����. � �� return� �� ��� �� �� � � ��� �� � � ����.
� �� ��� SAMPLE ������� PRODUCT.DESCRIPTION ���� �� ��� ���� �
� �� ����.
<price_list><product>
<name>Snow Shovel, Super Deluxe 26"</name><price>49.99</price>
</product><product>
<name>Snow Shovel, Deluxe 24"</name><price>19.99</price></product>
<product><name>Snow Shovel, Basic 22"</name><price>9.99</price>
</product><product>
<name>Ice Scraper, Windshield 4" Wide</name><price>3.99</price>
</product></price_list>
� ��� �� ��� ��� price �� ����� xs:decimal � � ���. � � �� XML
���� price �� �� �� xs:string��� ����. ��� ���� ��� � � �� ��
� ��� �� ��� �����.
� 4 � ��� 109
�� � �� �� xdt:untypedAtomic �, �� �� �� �� �� ���� ���
����� ����� ��� � ��� ���.
�: FLWOR ����� order by�� ���� �� � �� ���� ��� �� � ���
�. �� �, �� �� ��� �� ID(Cid)� 1000�� � customerinfo �� ��� ����
�.
db2-fn:xmlcolumn(’CUSTOMER.INFO’)/customerinfo[@Cid > "1000"]
�� �� �� ����� ��� ��� ����� order by�� ���� FLWOR ����
��� ���.
for $custinfo in db2-fn:xmlcolumn(’CUSTOMER.INFO’)/customerinfowhere ($custinfo/@Cid > "1000")order by $custinfo/name ascendingreturn $custinfo
�� � ��� ��� � ����. �� ��� �� �� ��� ��� � ���� � ���
��� �� ���� ����.
for $prod in db2-fn:xmlcolumn(’PRODUCT.DESCRIPTION’)/productorder by $prod/description/price descendingreturn $prod/name
�� �� �� ��
�� ��� � � �� ����� �� ��� ���� ���.
v �� ��� ���� ��� � � ���� �����. ��� � � �� �� ��� � ���
� ���. �� ��� ��� �����. �� ��� � � � �� �� ���.
v �� � �� xdt:untypedAtomic�� � xs:string ��� ������. �� �� ��
� ����� �� �� � �� �� ��� �� ��� �� ����� �� � ����.
v �� ��� �� � � � � ��� �� ��� ��� () �� � �� �� � �
�� �� �� ��� �����. � gt ���� ���� �� �� ��� ���� �����.
�� �, �� ��� xs:anyURI xs:string � � � ���� ��� � �� �, �
xs:string �� gt ���� ���� �����. ��� �� ��� �� � � �� � gt ���
� ���� �� �� ��� � � ��� ���.
v �� � ��� ��� ��� � return�� ��� ��� �����. ��� ��� �
� ��� ���� �� � ���� ���� ���� �����.
– �� ��� ��� �, �� � � ����� �� �����.
– �� ��� � �� �, �� � � ����� � �����.
�� � �� �(greater-than) ��� �� �� �����.
– � ���� � �� �� ���.
– NaN � ���� ��� � �� �� � �� �����.
– � � �� � gt ���� true� ���� � �� ���.
110 IBM DB2 XQuery ���
– +0.0 gt -0.0 -0.0 gt +0.0 � � false���, ��� �� �� �� 0 �� �� 0
�� �� � ��� �� ����.
�: �� � �� �� �� ��� ascending �� � �� �� � � �� ����,
descending �� ��� � �� �� � � ��� �����.
�� ��
58 ���� �����
59 ���� ��� � ���
59 ���� �� ���
�� ��
102 ���� �FLWOR ���� ���
56 ���� �XQuery ����� � � ���
return�
return� FLWOR ���� � � � ���.
return� FLWOR ���� � ��� � � �� �� � ��� �� � � ����. ��
� �� � � ���� FLWOR ���� � � ���. return�� ��� ��� ��� ��
�� ��� FLWOR ���� order by�� ���� �� ��� �������.
�: return��� �� � � ���� ���� ��� �� �� ����. FLWOR ���
� ����� � � ����, ��� ���� ��� �� � � ���� � �� �
��� � � �� �� �� � � � � � ����.
�� ��
102 ���� �FLWOR ���� ���
109 ���� �order by��
FLWOR �
� ����� ��� ���� FLWOR ���� ���� �, �� � ��� ���� ��� ��
�����.
XML ���� ���� FLWOR ���
�� ��� SAMPLE ������� �� PRODUCT � PURCHASEORDER ����� XML ���
� ��� 2005�� ��� �� ���� ��� ��� �� ����.
�� �� � PurchaseOrder �� � � �� �� ��� � ����� ����, ��� ��� �
�� � �� �� ��� ��� � ����� ��� ��� �����. for� � ″2005″
� 4 � ��� 111
� ���� OrderDate � � �� �� ��� �� PURCHASEORDER.PORDER ��� ����
�. � �� ���� let� $parts ��� partid � �����. � �� return�� �� ��� �
�� �� �� ����.
declare default element namespace ’http://posample.org’;for $po in db2-fn:xmlcolumn(’PURCHASEORDER.PORDER’)
/PurchaseOrder[fn:starts-with(@OrderDate, "2005")]let $parts := $po/item/partidreturn
<ProductList PoNum = "{$po/@PoNum}">{ db2-fn:xmlcolumn(’PRODUCT.DESCRIPTION’)
/product[@pid = $parts]/description/name }</ProductList>
�� � � �� ����.
<ProductList xmlns="http://posample.org" PoNum="5001"><name>Snow Shovel, Deluxe 24 inch</name><name>Snow Shovel, Super Deluxe 26 inch</name><name>Ice Scraper, Windshield 4 inch</name></ProductList><ProductList xmlns="http://posample.org" PoNum="5003"><name>Snow Shovel, Basic 22 inch</name></ProductList><ProductList xmlns="http://posample.org" PoNum="5004"><name>Snow Shovel, Basic 22 inch</name><name>Snow Shovel, Super Deluxe 26 inch</name></ProductList>
��� ����� FLWOR ���
�� ��� SAMPLE ������� CUSTOMER ���� �� �� �� ���� �����. for
� customerinfo ��� ���� � �� $city ��� �����. � ���� let� $cust-names
��� �� ��� �� ���� � �� �� � ��� �����. ��� �� � �� ��
� ���� �� ��� ��� � �� ���� �� �� �����.
declare default element namespace ’http://posample.org’;for $city in fn:distinct-values(db2-fn:xmlcolumn(’CUSTOMER.INFO’)
/customerinfo/addr/city)let $cust-names := db2-fn:xmlcolumn(’CUSTOMER.INFO’)
/customerinfo/name[../addr/city = $city]order by $cityreturn <city>{$city, $cust-names} </city>
112 IBM DB2 XQuery ���
�� � � �� ����.
<city xmlns="http://posample.org">Aurora<name>Robert Shoemaker</name>
</city><city xmlns="http://posample.org">Markham
<name>Kathy Smith</name><name>Jim Noodle</name>
</city><city xmlns="http://posample.org">Toronto
<name>Kathy Smith</name><name>Matt Foreman</name><name>Larry Menard</name>
</city>
���� ��� FLWOR ���
�� ��� 2005� � �� ���� � � � ��� ���� HTML ���� � ���.
��� 2005� �� �� � PurchaseOrder �� ���� �� for�� �� $po ��� ����
�. � �� $po/item/ �� ��� ���� � PurchaseOrder � �� � �� �� ���
��. �� ��� (price * quantity)��� �� ��� � ��� �����. fn:sum ��� � ��
� � ��� � ���� �����. let� fn:sum ��� � � �� $revenue� �����. order
by� � �� ��� � ��� ���� � � �����. ����� return���� � �� ���
�� ��� ����� � �� � ���.
declare default element namespace ’http://posample.org’;<html><body><h1>PO totals</h1><table><thead><tr><th>PO Number</th><th>Status</th><th>Revenue</th></tr></thead><tbody>{
for $po in db2-fn:xmlcolumn(’PURCHASEORDER.PORDER’)/PurchaseOrder[fn:starts-with(@OrderDate, "2005")]
let $revenue := sum($po/item/(price * quantity))order by $revenue descendingreturn<tr>
<td>{string($po/@PoNum)}</td><td>{string($po/@Status)}</td><td>{$revenue}</td>
</tr>}</tbody></table></body></html>
� ��� � � �� ����.
<html xmlns="http://posample.org"><body>
<h1>PO totals</h1><table>
<thead>
� 4 � ��� 113
<tr><th>PO Number</th><th>Status</th><th>Revenue</th>
</tr></thead><tbody>
<tr><td>5004</td><td>Shipped</td><td>139.94</td>
</tr><tr>
<td>5001</td><td>Shipped</td><td>123.96</td>
</tr><tr>
<td>5003</td><td>UnShipped</td><td>9.99</td>
</tr></tbody>
</table></body></html>
���� �� �� �� �� �����.
PO totals
PO Number Status Revenue
5004 Shipped 139.94
5001 Shipped 123.96
5003 Unshipped 9.99
�� ��
102 ���� �FLWOR ���� ���
���
��� �� if, then � else� ���� ��� ���� � true� false�� �� ��� �
��� ����.
���� if ( TestExpression ) then Expression else Expression ��
if ��� ��� �� � ��
TestExpression
���� �� ��� �� ��� XQuery ���
114 IBM DB2 XQuery ���
then
TestExpression� ��� �� � true�� � �� ��� ���� ����. ��� ���� �
�� �� � false�� ��� ���� ��� ��� ����.
else
TestExpression� ��� �� � false�� � �� ��� ���� ����. ��� ���� �
�� �� � true�� ��� ���� ��� ��� ����.
Expression
XQuery ���. ���� �� �� � ���� �� �, ��� �� �� � ��
���.
�
�� ��� ��� basic��� �� � � ���� product �� ��� � ���. basic � �
price �� � 10�� �� ��� �� ���� �����.
declare namespace ns1= "http://posample.org";for $prod in db2-fn:xmlcolumn(’PRODUCT.DESCRIPTION’)/ns1:product/ns1:descriptionreturn (if (xs:decimal($prod/ns1:price) < 10)then <product basic = "true">{fn:data($prod/ns1:name)}</product>else <product basic = "false">{fn:data($prod/ns1:name)}</product>)
� ��� � � �� ����.
<product basic="true">Snow Shovel, Basic 22"</product><product basic="false">Snow Shovel, Deluxe 24"</product><product basic="false">Snow Shovel, Super Deluxe 26"</product><product basic="true">Ice Scraper, Windshield 4" Wide</product>
� ���, ��� ��� price �� ���� xs:decimal � � ���. xs:decimal ��� ��
��� �����.
�� ��
60 ���� ���� �� �
�� ���
�� ��� �� ��� ���� � �� �� �� �� ��� �� ��� ���� ��� true
� �����. �� ���� �� true �� false���.
�� ��� ���(some �� every)� ���� ���� �� ��� ��� �� ��� ���
��� �����. ��� ���� ���� ��� ��� ��� ���� �� ��� �� ���.
� �� ��� ��� ��� ����� ���� �� �� �� ��� ��� �� ��� ����
�� ����.
� 4 � ��� 115
��
�� �
,
some $VariableName in Expression satisfies TestExpressionevery
��
some
� ��� ���� �� ��� TestExpression� ��� �� � Expression� ��� �� ��
� ��� �� true � true� �����. �� ��� �� ��� false� �����.
every
� ��� ���� �� ��� TestExpression� ��� �� � Expression� ��� �� ��
� �� true � true� �����. �� ��� �� ��� false� �����.
VariableName
Expression � � � ��� �� ��� �. �� ����� ��� ��� �� �����
�� � ��� �� �� ���� �� � ����.
Expression
XQuery ���. ���� �� �� � ���� �� �, ��� �� �� � ��
���.
satisfies
��� ��� �� � ��
TestExpression
Expression� ��� ���� �� �� �� ��� ��� �� ��� ���� XQuery ���
�: ��� ���� � �� ��� � � �� �� ��� � � ����.
�
v �� �� �� ��� SAMPLE ������� CUSTOMER.INFO ��� �� �� ��� Canada
� ��� �� � true� �����.
every $cust in db2-fn:xmlcolumn(’CUSTOMER.INFO’)/customerinfosatisfies $cust/addr/@country = "Canada"
v �� ��� � �� ��� �� a� b(� 9�� ��� ��)� ��� � �� ��� �� �
�� ���� ����.
�� ���� � � true���.
some $a in (3, 5, 9), $b in (1, 3, 5)satisfies $a * $b = 27
�� ���� � � false���.
every $a in (3, 5, 9), $b in (1, 3, 5)satisfies $a * $b = 27
116 IBM DB2 XQuery ���
v �� ���� �� ���� � � ��� � �� ���� ��� �����. ��� ���� �
�� �� ���� true� ���� � �� ���� ��� �����, � ��� true �
� ��� �����.
some $a in (3, 5, "six") satisfies $a * 3 = 9
�����, �� ��� false �� ��� �����.
every $a in (3, 5, "six") satisfies $a * 3 = 9
�� ��
60 ���� ���� �� �
�� ��
63 ���� ��� ���
��� ���
��� ��� �� � �� ��� �� � � � ���.
��� ���� ����� �(�� ��� �� �)���. ��� ���� ��� � ���� �
��� �� ���� � � �� �� � ���� �����. ��� � � �� � � �� ��
��� ��� �����. ��� ���� ��� ��� ��� �� � �� �� �� � � �
��� �����. �� � �� �� �� �� ���� ���� ����. � ��� ���
� �� �� �� ��� ��� 27 ���� �� ����� ������.
� ���� �� � ��� ���(?)� �� ��� ��� �� ���.
���� Expression cast as TargetType
?��
Expression
�� �� �� � ���� ���� XQuery ���. � ���� TargetType ��� ���( ? )
� �� ��� �����.
TargetType
Expression� � ��� �. TargetType �� ��� �� XML �� � �� ���
���. xs:NOTATION, xdt:anyAtomicType � xs:anySimpleType ��� � TargetType� �
� ��� �� ����.
? Expression� � � � ���� � � ��� �����.
�
�� ��� ��� ��� xs:string � price � � xs:decimal ��� ����� � ���
��.
� 4 � ��� 117
for $price in db2-fn:xmlcolumn(’PRODUCT.DESCRIPTION’)/product/description/pricereturn $price cast as xs:decimal
� �� ��� SAMPLE ������� PRODUCT.DESCRIPTION ���� �� ��� ���� �
� �� ����.
9.9919.9949.993.99
�� ��
21 ���� � 2 � �� ����
58 ���� �����
�� ��
27 ���� �� ����
118 IBM DB2 XQuery ���
� 5 � �� ��
DB2 XQuery� XML ���� �� ���� �� ��� ����� �����. ��� �� ���
XQuery �� �� � DB2 �� ��� �����.
XQuery �� ��
XQuery �� ��� � � fn� ��� � ����� ����. � � ����� ���
�� � �������. � � ���� � �� ���� �� XQuery �� ��� �� �
����. � ��� �� � ����� �� � �� default function namespace ��� �
��� �, � � fn� ���� XQuery �� ��� ��� ���.
DB2 �� ��
�� DB2 �� ��� db2-fn:xmlcolumn db2-fn:sqlquery��, DB2 �������� XML
� ����� � �����. � � db2-fn ��� �� � ����� ����, ��� �
�� ���� ��� �� � ��� default function namespace ��� ��� � ��
��� ���� �� � � ���� � �� ��� ���.
�� ��
15 ���� �XML � ���� � QName�
�� ��
51 ���� �default function namespace ��
��� ��
�� �� �� ��� string, boolean, number, date, sequence, QName, node � �����.
String ��
�� ��
127 ���� �codepoints-to-string ��� fn:codepoints-to-string ��� ���� �� ��� ����
��� ��� �����.
127 ���� �compare ��� fn:compare ��� ��� �����.
128 ���� �concat ��� fn:concat ��� � ��� �� � ��� ��� ����
�.
129 ���� �contains ��� fn:contains ��� ��� ��� �� ��� ���� ��
� ����.
136 ���� �ends-with ��� fn:ends-with ��� ��� ��� �� ��� �����
��� ����.
145 ���� �lower-case ��� fn:lower-case ��� ��� ���� �����.
145 ���� �matches ��� fn:matches ��� ��� ��� �� ����� ���
����.
153 ���� �normalize-space ��� fn:normalize-space ��� �� �� �� ��� ���
��� � �� �� ���� �� �� ��� ����.
© Copyright IBM Corp. 2006 119
�� ��
154 ���� �normalize-unicode ��� fn:normalize-unicode ��� ��� �� ���� ���� �
����.
159 ���� �replace ��� fn:replace ��� �� �� � �� ��� ��� �� �
���, ��� ��� ��� � �� ��� ����.
167 ���� �starts-with ��� fn:starts-with ��� ��� ��� �� ��� �����
��� ����.
168 ���� �string ��� fn:string ��� � �� ��� �����.
169 ���� �string-join ��� fn:string-join ��� ���� ��� ��� ���� � �
��� �����.
169 ���� �string-length ��� fn:string-length ��� ��� �� �����.
170 ���� �string-to-codepoints ��� fn:string-to-codepoints ��� �� � ���� ���� �
� ��� ���� �����.
171 ���� �substring ��� fn:substring ��� ��� �� ��� �����.
172 ���� �substring-after ��� fn:substring-after ��� ��� � ��� � ����
� � ��� ���� ���� �� ��� �����.
173 ���� �substring-before ��� fn:substring-before ��� ��� � ��� � ���
� ��� ���� ���� �� ��� �����.
175 ���� �tokenize ��� fn:tokenize ��� ��� �� ��� ���� �����.
177 ���� �translate ��� fn:translate ��� ���� � ��� �� ��� ��
��.
179 ���� �upper-case ��� fn:upper-case ��� ��� ���� �����.
Boolean ��
�� ��
125 ���� �boolean ��� fn:boolean ��� ���� ��� �� � �����.
138 ���� �false ��� fn:false ��� xs:boolean false� �����.
155 ���� �not ��� fn:not ��� ���� ��� �� � true�� false� ��
��, ���� ��� �� � false�� true� �����.
178 ���� �true ��� fn:true ��� xs:boolean true� �����.
181 ���� �zero-or-one ��� fn:zero-or-one ��� �� ��� ��� ��� �� � �
�� � �� �����.
Number ��
�� ��
123 ���� �abs ��� fn:abs ��� �� � ��� �����.
124 ���� �avg ��� fn:avg ��� ���� ��� � �� �����.
126 ���� �ceiling ��� fn:ceiling ��� ��� �� �� ��� � � �� �
��� �����.
139 ���� �floor ��� fn:floor ��� ��� �� �� ��� � � �� �
��� �����.
147 ���� �max ��� fn:max ��� ���� � ��� �����.
120 IBM DB2 XQuery ���
�� ��
148 ���� �min ��� fn:min ��� ���� � ��� �����.
156 ���� �number ��� fn:number ��� � xs:double ��� ��� �����.
164 ���� �round ��� fn:round ��� ��� �� � �� � � ��� ����
�.
165 ���� �round-half-to-even ��� fn:round-half-to-even ��� ��� �� � �� � � ��
� ���� �� � �����.
174 ���� �sum ��� fn:sum ��� ���� �� � ��� �����.
date ��
�� ��
130 ���� �current-date ��� fn:current-date ��� UTC� ��� ����� �� ��� �
����.
131 ���� �current-dateTime ��� fn:current-dateTime ��� UTC� ��� ����� �� ��
� ��� �����.
131 ���� �current-time ��� fn:current-time ��� UTC� ��� ����� �� ��� �
����.
132 ���� �dateTime ��� fn:dateTime ��� xs:date xs:time �����
xs:dateTime � � ���.
140 ���� �implicit-timezone ��� fn:implicit-timezone ��� PTOS� ��� ���
(xs:dayTimeDuration �)� �����. PT0S� UTC� �
�� ����� �����.
Sequence ��
�� ��
130 ���� �count ��� fn:count ��� ���� �� � �� �����.
132 ���� �data ��� fn:data ��� � �� �� ���� ��� �� � ��
���� �����.
133 ���� �deep-equal ��� fn:deep-equal ��� ���� ���� �� ���� �
����� ��� ����.
135 ���� �distinct-values ��� fn:distinct-values ��� ����� ���� � �����.
136 ���� �empty ��� fn:empty ��� �� � ����� ��� �����.
137 ���� �exactly-one ��� fn:exactly-one ��� �� ��� ��� �� �� ���
��.
138 ���� �exists ��� fn:exists ��� ���� � ���� ���� ��� ����
�.
143 ���� �last ��� fn:last ��� �� �� � ���� �� � �� ����
�.
141 ���� �index-of ��� fn:index-of ��� ����� ��� ���� � ����
�.
142 ���� �insert-before ��� fn:insert-before ��� � ���� ��� � ����
�����.
� 5 � �� �� 121
�� ��
156 ���� �one-or-more ��� fn:one-or-more ��� �� �� ��� ��� �� �
�� �����.
157 ���� �position ��� fn:position ��� �� �� � ����� ���� ���
� �����.
158 ���� �remove ��� fn:remove ��� ����� ��� �����.
162 ���� �reverse ��� fn:reverse ��� ����� ��� ��� ����� ����.
171 ���� �subsequence ��� fn:subsequence ��� ���� �� ���� �����.
178 ���� �unordered ��� fn:unordered ��� ���� ��� ���� � ��� �
����.
QName ��
�� ��
140 ���� �in-scope-prefixes ��� fn:in-scope-prefixes ��� �� �� � � � ����
� � � ��� �����.
144 ���� �local-name-from-QName ��� fn:local-name-from-QName ��� xs:QName � �� ���
�����.
151 ���� �namespace-uri-for-prefix ��� fn:namespace-uri-for-prefix ��� �� � � � ���
�� �� � �� ��� � ���� URI� �����.
152 ���� �namespace-uri-from-QName ��� fn:namespace-uri-from-QName ��� xs:QName � � �
��� URI ��� �����.
158 ���� �QName ��� fn:QName ��� � ���� URI� �� QName(� �
�� ��)� � �� ����� �� �� �����.
161 ���� �resolve-QName ��� fn:resolve-QName ��� � ���� URI� �� � ��
�� � �� ���� � �� � � � ����� �
���, �� QName� � �� ��� �� QName��
�����.
Node ��
�� ��
143 ���� �local-name ��� fn:local-name ��� ��� �� � �� ��� �����.
149 ���� �name ��� fn:name ��� �� �� � � � �� � ��� ���
��.
150 ���� �namespace-uri ��� fn:namespace-uri ��� ��� �� ��� �� � ���
� URI� �����.
153 ���� �node-name ��� fn:node-name ��� ��� �� QName� �����.
163 ���� �root ��� fn:root ��� ��� ��� ��� �� ��� �����.
�� ��
�� ��
135 ���� �default-collation ��� fn:default-collation ��� ������� �� ��� ��� �
�� ���� URI� �����.
122 IBM DB2 XQuery ���
�� ��
166 ���� �sqlquery ��� db2-fn:sqlquery ��� �� ��� DB2 �������� SQL
fullselect� � ���� ����.
180 ���� �xmlcolumn ��� db2-fn:xmlcolumn ��� �� ��� DB2 ������� ��
�� ���� ����.
�� ��
51 ���� �default function namespace ��
abs ��
fn:abs ��� �� � ��� �����.
���� fn:abs(numeric-value) ��
numeric-value
�� �� � ���
numeric-value� �� �� �� � � �����.
v xs:float
v xs:double
v xs:decimal
v xs:integer
v � �� ��� ��� �
v xdt:untypedAtomic
numeric-value� xdt:untypedAtomic ��� ��� xs:double �� �����.
���
numeric-value� � ���� ��� �� numeric-value� �����.
numeric-value� � ����� fn:abs� � ���� �����.
��� ��� � numeric-value� ��� �� �� ����.
v numeric-value� xs:float, xs:double, xs:decimal �� xs:integer �, ���� numeric-value�
��� ����.
v numeric-value� xs:float, xs:double, xs:decimal �� xs:integer��� ��� ���, ����
numeric-value� �� � � ��� ����.
v numeric-value� xdt:untypedAtomic ��� ��� ���� � ��� � xs:double���.
� 5 � �� �� 123
�
�� ��� –10.5� ��� �����.
fn:abs(-10.5)
�� 10.5���.
�� ��
21 ���� � 2 � �� ����
avg ��
fn:avg ��� ���� ��� � �� �����.
���� fn:avg(sequence-expression) ��
sequence-expression
�� �� �� ��� ���� ��� �� � ���
v xs:float
v xs:double
v xs:decimal
v xs:integer
v xdt:untypedAtomic
v xdt:dayTimeDuration
v xdt:yearMonthDuration
v � �� ��� ��� �
xdt:untypedAtomic �� �� �� xs:double� ������. ��� ��� �� �� ���
� �� �� �� �� �� � ��� �� �� ��� �� �� ���. � � �
� ��� �����. �� �, �� ���� money(xs:decimal�� ���) � stockprice(xs:float
�� ���) �� �� �, � xs:float ��� �����.
���
sequence-expression � ���� ���, �� sequence-expression� �� � ����. ��
� ��� � sequence-expression� �� ��� ��� � ��� sequence-expression� �
�� ��� ��� ����.
sequence-expression� � ����� � ���� �����.
�
�� ��� ��� (5, 1.0E2, 40.5)� �� �����.
fn:avg((5, 1.0E2, 40.5))
124 IBM DB2 XQuery ���
xs:double ��� ��� �����. ��� xs:double 4.85E1� ����, � ″48.5″� �
�����.
�� ��
5 ���� ���� � ���
59 ���� �� ���
boolean ��
fn:boolean ��� ���� ��� �� � �����.
���� fn:boolean(sequence-expression) ��
sequence-expression
�� �� ��� ��� ��� �� � ���
���
���� ��� �� sequence-expression� � �� ����.
� 32. XQuery�� �� �� � �� ���� EBV
� �� ���� EBV
� ��� false
��� �� ��� true
xs:boolean �(�� xs:boolean�� ��� �)� �� false - xs:boolean � false �
true - xs:boolean � true �
xs:string �� xdt:untypedAtomic �(�� ��� ��� �
�� �)� ��
false - � �� 0 �
true - � �� 0�� � �
�� �(�� �� ��� ��� �)� �� false - � NaN��� ����� 0 � �
true - � ����� 0 �� � �
� �� ��
�: �� ��� ��� �� ��� �� � ���� ���� ��� �� ��� �� � �� ����� �� � �
���.
�
�� � � ��� �: �� ��� 0� ��� �� � �����.
fn:boolean(0)
�� false���.
�� �� ���� ��� �: �� ��� (<a/>, 0, <b/>)� ��� �� � �����.
fn:boolean((<a/>, 0, <b/>))
� 5 � �� �� 125
�� true���.
�� ��
60 ���� ���� �� �
5 ���� ���� � ���
ceiling ��
fn:ceiling ��� ��� �� �� ��� � � �� � ��� �����.
���� fn:ceiling(numeric-value) ��
numeric-value
�� �� � ���
numeric-value� �� �� �� � � �����.
v xs:float
v xs:double
v xs:decimal
v xs:integer
v xdt:untypedAtomic
v � �� ��� ��� �
numeric-value� xdt:untypedAtomic ��� ��� xs:double �� �����.
���
numeric-value� � ���� ��� �� numeric-value�� ��� � � �� � �����.
��� ��� � numeric-value� ��� �� �� ����.
v numeric-value� xs:float, xs:double, xs:decimal �� xs:integer � ���� numeric-value�
��� ����.
v numeric-value� xs:float, xs:double, xs:decimal �� xs:integer��� ��� ���, ����
numeric-value� �� � � ��� ����.
numeric-value� � ����� �� � ������.
�
�� ��� �: �� ��� 0.5� �� � �����.
fn:ceiling(0.5)
�� 1���.
�� ��� �: �� ��� (-1.2)� �� � �����.
126 IBM DB2 XQuery ���
fn:ceiling(-1.2)
�� -1���.
�� ��
21 ���� � 2 � �� ����
codepoints-to-string ��
fn:codepoints-to-string ��� ���� �� ��� ���� ��� ��� �����.
���� fn:codepoints-to-string(codepoint-sequence) ��
codepoint-sequence
���� �� ��� ���� �� ���� �� � ���
���
codepoint-sequence� � ���� �� � �� codepoint-sequence� �� ��� ��� ��
� �����. codepoint-sequence� �� ���� �� ��� �� ��� ��� ��� ����
�.
codepoint-sequence� � ����� �� �� 0 �����.
�
�� ��� UTF-8 �� �� (88,81,117,101,114,121)� ��� ��� �����.
fn:codepoints-to-string((88,81,117,101,114,121))
�� ‘XQuery’���.
�� ��
170 ���� �string-to-codepoints ���
compare ��
fn:compare ��� ��� �����.
���� fn:compare(string-1,string-2) ��
string-1 , string-2
�� xs:string
� 5 � �� �� 127
���
string-1 � string-2� � ���� ��� �� � ��� �����.
-1 string-1� string-2�� � �
0 string-1� string-2� � �
1 string-1� string-2�� � �
string-1 string-2� �� ��(�� 0 � ��) �� �� ��� ��� ��� ��� ����.
string-1 string-2� �� ��� �� ��(�� �� � ��)� ��� � �� ��� �� ����
� ��� � �� ���� ����. � ��� ��� ���� � ���.
string-1� string-2�� �� string-2� �� ��� string-1� � ��� ��� string-1� string-2��
���.
string-1 �� string-2� � ����� � ���� �����.
�
�� ��� ��� ��� ���� ‘ABC’� ‘ABD’� �����.
fn:compare(’ABC’, ’ABD’)
‘ABC’� ‘ABD’�� ����. �� -1���.
concat ��
fn:concat ��� � ��� �� � ��� ��� �����.
����
�
fn:concat(atomic-value,atomic-value ),
, atomic-value
��
atomic-value
�� �� � ���. �� � ��� �, �� �� 0 ��� �����.
atomic-value� xs:string � �� ��� ���� �� xs:string�� ������.
���
�� atomic-value �� � ����� �� �� 0 �����. �� ��� ��
atomic-value �� ��� ���� � xs:string � �����.
128 IBM DB2 XQuery ���
�
�� ��� �� ‘ABC’, ‘ABD’, � ��� � ‘ABE’� �����.
fn:concat(’ABC’, ’ABD’, (), ’ABE’)
�� ‘ABCABDABE’���.
�� ��
6 ���� ��� �
�� ��
175 ���� �tokenize ���
contains ��
fn:contains ��� ��� ��� �� ��� ���� ��� ����.
���� fn:contains(string,substring) ��
string substring� � ��
string xs:string ��� ���� � ������. string� � ��� � string �� 0
��� �����.
substring
string�� � ����
substring xs:string ��� ���� � ������.
���
�� �� � ��� ���� � �� xs:boolean true���.
v substring� string �� ���� �� �
v substring� � ������ �� 0 �� �
�� ��� �� false���.
�
�� ��� �� ‘Test literal’� ‘lite’�� ��� ����� ��� ����.
fn:contains(’Test literal’,’lite’)
�� true���.
�� ��
136 ���� �ends-with ���
167 ���� �starts-with ���
� 5 � �� �� 129
count ��
fn:count ��� ���� �� � �� �����.
���� fn:count(sequence-expression) ��
sequence-expression
�� �� ��� ��� ��� �� � ���
���
sequence-expression� � ���� ��� sequence-expression� �� �����. sequence-expression
� � ����� 0� �����.
�
�� ��� ��� (5, 1.0E2, 40.5)� �� �� �����.
fn:count((5, 1.0E2, 40.5))
�� 3���.
�� ��
5 ���� ���� � ���
current-date ��
fn:current-date ��� UTC� ��� ����� �� ��� �����.
���� fn:current-date() ��
���
�� �� ��� ���� xs:date ���.
�
�� ��� �� ��� �����.
fn:current-date()
2005� 12� 2�� � ��� ���� �, �� 2005-12-02Z���.
�� ��
131 ���� �current-dateTime ���
131 ���� �current-time ���
130 IBM DB2 XQuery ���
132 ���� �dateTime ���
140 ���� �implicit-timezone ���
current-dateTime ��
fn:current-dateTime ��� UTC� ��� ����� �� �� � ��� �����.
���� fn:current-dateTime() ��
���
�� �� �� � ��� ���� xs:dateTime ���.
�
�� ��� �� �� � ��� �����.
fn:current-dateTime()
2005� 12� 2� 6� 25�� ���(��� -PT5H)�� � ��� ���� � , ��
2005-12-02T011:25:30.864001Z���.
�� ��
130 ���� �current-date ���
�current-time ���
132 ���� �dateTime ���
140 ���� �implicit-timezone ���
current-time ��
fn:current-time ��� UTC� ��� ����� �� ��� �����.
���� fn:current-time() ��
���
�� �� ��� ���� xs:time ���.
�
�� ��� �� ��� �����.
fn:current-time()
� 5 � �� �� 131
�� ���� 6� 31�� � ��� ���� �, �� 06:31:35.519001Z� ���.
�� ��
130 ���� �current-date ���
131 ���� �current-dateTime ���
�dateTime ���
140 ���� �implicit-timezone ���
data ��
fn:data ��� � �� �� ���� ��� �� � �� ���� �����.
���� fn:data(sequence-expression) ��
sequence-expression
� ���� ��� �� ���
���
sequence-expression� � ��� � �� � ������.
sequence-expression� �� �� � �� sequence-expression���.
sequence-expression� �� �� � �� sequence-expression� � ���.
sequence-expression� � ��� ���� � ��� �, sequence-expression� ���� �� ��
�� �����. sequence-expression� � �� ���� �� �� ����. sequence-expression�
� ��� 0� ��� �� ��� � �� ����.
�
�� ��� ���(<x xsi:type=″string″>ABC</x>,<y xsi:type=″decimal″>1.23</y>)� �� � ��
� ���� ���� �����.
fn:data((<x xsi:type="string">ABC</x>,<y xsi:type="decimal">1.23</y>))
�� (″ABC″,1.23)���.
�� ��
13 ���� ���� � � �� �
dateTime ��
fn:dateTime ��� xs:date xs:time ����� xs:dateTime � � ���.
132 IBM DB2 XQuery ���
���� fn:dateTime(date-value,time-value) ��
date-value
xs:date
time-value
xs:time
���
�� �� � �� date-value� �� �� � �� time-value� � xs:dateTime ���. �
� ���� �� �� �����.
v � � ���� �� �, � � ���� ����.
v � �� ���� ��� �� ��� ���� ��� � � ������.
v �� � ���� ��� ��� �����.
�
�� ��� xs:date xs:time �� xs:dateTime� �����.
fn:dateTime((xs:date("2005-04-16")), (xs:time("12:30:59")))
�� xs:dateTime 2005-04-16T12:30:59���.
�� ��
130 ���� �current-date ���
131 ���� �current-time ���
140 ���� �implicit-timezone ���
deep-equal ��
fn:deep-equal ��� ���� ���� �� ���� ������ ��� ����.
���� fn:deep-equal(sequence-1,sequence-2) ��
sequence-1, sequence-2
�� ���. � ���� �� �� �� �� �� ��� � � ����.
���
�� sequence-1 sequence-2� ��� � xs:boolean true���. �� ��� �� false
���.
sequence-1 sequence-2� � ����� �����.
� 5 � �� �� 133
���� �� �� �� �� ��� � � ���� � ���� �����.
v sequence-1� �� �� sequence-2� �� �� ����.
v sequence-1� � ��(item-1) sequence-2� �� ��(item-2) ��� ��� ��� ��� �
��. item-1 � item-2� �� �� � ��� �� � �����.
– item-1 item-2� � � �� �� �� ��� �����.
- ��� item-1 eq item-2� true� �����.
- item-1 item-2� � xs:float �� xs:double NaN� ����.
– item-1 item-2 � � � ��� ���� �� ����� �� ��� �����.
� 33. ����� �� ��
item-1 � item-2� �� �� �� ��
�� item-1� ��� � � � � ���� item-2� ��� � � � � ���� �����.
� �� ��� � true�� ���.
v item-1 item-2� �� ����. � � ���� URI � �� �� ����. � �
���� � �� �����.
v item-1 item-2� � �� ��� item-1� �� � item-2� �� � � �����.
v �� �� � ��� true�� ���.
– �� � �� �� �� ��� �� ��(��� � � � � �)� ���
��� �� �� ��, item-1� ��� � � � � ���� item-2� ��� �
� � � ���� �����.
– �� � �� �(xs:decimal �) �� �� ��� �� �(��� xs:decimal
″temperature″ �)��, item-1� � � item-2� � �����.
– �� � ��(���� � � � )� ���� �� ��� �� ����.
– �� � � �� ��(��� ��)�� ��� �� ���, item-1� � �
�� ���� item-2� � � �� �����.
� �� ��� � true�� ���.
v item-1 item-2� �� ����. � � ���� URI � �� �� ����. � �
���� � �� �����.
v item-1� � � item-2� � �����.
��� �� �� �� eq ���� ���� ��� �� � �����.
�� �� �� �� eq ���� ���� ��� �� � �����.
�� ��� �� ��� � true�� ���.
v item-1 item-2� �� �����.
v �� �� �� eq ���� ���� ��� �� � �����.
�
�� ��� ��� (1,‘ABC’)� (1,‘ABCD’)� ���� �����. �� ��� ��� ��� ���
��.
fn:deep-equal((1,’ABC’), (1,’ABCD’))
134 IBM DB2 XQuery ���
�� false���.
�� ��
13 ���� ���� � � �� �
9 ���� ��� ���
�� ��
82 ���� ��� ���
default-collation ��
fn:default-collation ��� ������� �� ��� ��� ��� ���� URI� �����.
���� fn:default-collation() ��
���
�� xs:anyURI ��� ������� ��� �����.
�
DB2 ������� ��� �� UCA400_NO� � ���. � ������� �� � �� ���
http://www.ibm.com/xmlns/prod/db2/sql/collations?name=UCA400_NO� �����.
fn:default-collation()
distinct-values ��
fn:distinct-values ��� ����� ���� � �����.
���� fn:distinct-values(sequence-expression) ��
sequence-expression
�� ��� �� � ���
���
sequence-expression� � ���� ��� �� sequence-expression� ���� � ���� ���
���. value1 value2� ���� value1 eq value2� false���. eq ���� � �� ��
�� ��� ��� ���� ��� �����.
xdt:untypedAtomic �� ���� �� xs:string �� �� �����.
xs:float � xs:double � � sequence-expression� �� NaN � ���� ��� �� NaN �
�����.
� 5 � �� �� 135
xs:dateTime, xs:date �� xs:time � � ���� �� � ��� ��� �����. ���� ��
��� ���(UTC)� �����.
sequence-expression� � ����� � ���� �����.
�� ���� � eq ���� ��� � � ��� �� � ��� � � � � ��
�� �����. � ������ �� ���� ��� ���� ����.
�
�� ��� ���� ��� ���� � ����� ���� � �����.
fn:distinct-values((1, ’a’, 1.0, ’A’, <greeting>Hello</greeting>))
�� (1, ‘a’, ‘A’, ‘Hello’) �� (1.0, ‘A’, ‘a’, ‘Hello’)� ���.
�� ��
79 ���� � ���
empty ��
fn:empty ��� �� � ����� ��� �����.
���� fn:empty(item) ��
item ��� �� ��� �� � ���
���
item� � ����� �� true���. �� ��� �� false���.
�
�� �� empty ��� ���� �� $seq� ���� � ����� ��� ����.
let $seq := (5, 10)return fn:empty($seq)
�� false���.
�� ��
5 ���� ���� � ���
ends-with ��
fn:ends-with ��� ��� ��� �� ��� ����� ��� ����.
136 IBM DB2 XQuery ���
���� fn:ends-with(string,substring) ��
string substring� � ��
string xs:string ��� ���� � ������. string� � ��� � string �� 0
��� �����.
substring
string� ��� � �� ��
substring xs:string ��� ���� � ������.
���
�� �� � ��� ���� � �� xs:boolean true���.
v substring� string� �� �� �
v substring� � ������ �� 0 �� �
�� ��� �� false���.
�
�� ��� �� ‘Test literal’� ‘literal’��� ��� ����� ��� ����.
fn:ends-with(’Test literal’,’literal’)
�� true���.
�� ��
129 ���� �contains ���
167 ���� �starts-with ���
exactly-one ��
fn:exactly-one ��� �� ��� ��� �� �� �����.
���� fn:exactly-one(sequence-expression) ��
sequence-expression
� ���� ��� �� ���
���
sequence-expression� ��� ��� �� � sequence-expression� �����. �� ��� ��� �
����.
� 5 � �� �� 137
�
�� �� exactly-one ��� ���� �� $seq� ��� ��� � ���� ��� ����.
let $seq := 5return fn:exactly-one($seq)
5� �����.
�� ��
5 ���� ���� � ���
�� ��
156 ���� �one-or-more ���
181 ���� �zero-or-one ���
exists ��
fn:exists ��� ���� � ���� ���� ��� �����.
���� fn:exists(sequence-expression) ��
sequence-expression
�� ��� �� ��� �� � ���
���
sequence-expression� � ���� ��� �� true���. �� ��� �� false���.
�
�� �� exists ��� ���� �� $seq� ���� � ���� ���� ��� ����.
let $seq := (5, 10)return fn:exists($seq)
true� �����.
�� ��
5 ���� ���� � ���
false ��
fn:false ��� xs:boolean false� �����.
��
138 IBM DB2 XQuery ���
�� fn:false() ��
���
�� xs:boolean false���.
�
false ��� ���� false� �����.
fn:false()
false� �����.
�� ��
178 ���� �true ���
floor ��
fn:floor ��� ��� �� �� ��� � � �� � ��� �����.
���� fn:floor(numeric-value) ��
numeric-value
�� �� � ���
numeric-value� �� �� �� � � �����.
v xs:float
v xs:double
v xs:decimal
v xs:integer
v xdt:untypedAtomic
v � �� ��� ��� �
�� � xdt:untypedAtomic ��� ��� xs:double �� �����.
���
numeric-value� � ���� ��� �� numeric-value�� � � �� � �����. ���
��� � numeric-value� ��� �� �� ����.
v numeric-value� xs:float, xs:double, xs:decimal �� xs:integer �, ���� numeric-value�
��� ����.
v numeric-value� xs:float, xs:double, xs:decimal �� xs:integer��� ��� ���, ����
numeric-value �� � � ��� ����.
� 5 � �� �� 139
numeric-value� � ����� �� � ������.
�
�� ��� �: �� ��� 0.5� ��� �����.
fn:floor(0.5)
�� 0���.
�� ��� �: �� ��� (-1.2)� ��� �����.
fn:floor(-1.2)
�� -2���.
implicit-timezone ��
fn:implicit-timezone ��� PTOS� ��� ��� (xs:dayTimeDuration �)� �����. PT0S�
UTC� ��� ����� �����.
���� fn:implicit-timezone() ��
���
�� xs:dayTimeDuration ��� �� UTC PTOS���.
�
�� ��� xdt:dayTimeDuration(″PT0S″)� �����.
fn:implicit-timezone()
�� ��
130 ���� �current-date ���
131 ���� �current-dateTime ���
131 ���� �current-time ���
132 ���� �dateTime ���
in-scope-prefixes ��
fn:in-scope-prefixes ��� �� �� � � � ����� � � ��� �����.
���� fn:in-scope-prefixes(element) ��
140 IBM DB2 XQuery ���
element
� � � ����� � �� � �
���
�� element� �� � � � ����� � � xs:NCName � ������. ��� � �
���� element� � ���, ��� � ���� � �� ��� �� �� 0 �����. �
���� ″xml″ �� � � � ����� �� �����.
�
�� ��� � emp� � � � ����� �� � �� ���(NCName��)� �����.
declare namespace d="http://www.example.org";let $department := document {<comp:dept xmlns:comp="http://www.mycompany.com" id="A07"><comp:emp id="31201" />
</comp:dept> }return fn:in-scope-prefixes($department/d:dept/d:emp)
�� (″xml″, ″comp″)��, ��� �� � ����.
�� ��
94 ���� �� � �� � � � �����
index-of ��
fn:index-of ��� ����� ��� ���� � �����.
���� fn:index-of(sequence-expression,search-value) ��
sequence-expression
�� �� ��� �� � ���
search-value
sequence-expression�� ��
���
�� sequence-expression�� eq ���� ��� ���� �� � search-value� ��� ���
� ���� xs:integer � ������. eq ����� ���� � ���� �� � �� �
� search-value� ��� �� ��� ����� � ���� ����. ���� � ���
� 1���.
sequence-expression� ��� ��� search-value� ��� sequence-expression� � ����� ��
� � ���� �����.
� 5 � �� �� 141
�
�� ��� ����� ‘ABC’� ���� � �����.
fn:index-of((’ABC’,’DEF’,’ABC’,’123’), ’ABC’)
�� ��� (1,3)���.
�� ��
5 ���� ���� � ���
insert-before ��
fn:insert-before ��� � ���� ��� � ���� �����.
���� fn:insert-before(source-sequence,insert-position,insert-sequence) ��
source-sequence
���� �� ���
source-sequence� �� ��� � ��� ������ � ������.
insert-position
source-sequence�� �� � ���� �� . insert-position� ��� � xs:integer�
��. insert-position<=0 � insert-position 1� �����. insert-position� source-sequence
� �� ��� �� insert-position source-sequence� �� ��� 1�� � �� �����.
insert-sequence
source-sequence� �� ���
insert-sequence� �� ��� � ��� ������ � ������.
���
source-sequence� � ���� �� �
v insert-sequence� � ���� �� �, �� �� ��� ���� ��� ������.
– source-sequence�� insert-position � ��
– insert-sequence� ��
– source-sequence�� insert-position ��� ��
– source-sequence�� insert-position ��� ��
v insert-sequence� � ����� �� source-sequence���.
source-sequence� � ��� �
v insert-sequence� � ���� ��� �� insert-sequence���.
v insert-sequence� � ����� �� � ������.
142 IBM DB2 XQuery ���
�
�� ��� ��� (1,2,3,7)� 4 � ��� (4,5,6)� ��� � ���� �����.
fn:insert-before((1,2,3,7),4,(4,5,6))
�� (1,2,3,4,5,6,7)���.
�� ��
5 ���� ���� � ���
last ��
fn:last ��� �� �� � ���� �� � �� �����.
���� fn:last() ��
���
�� �� � ���� � ���� ��� �� ���� ��� � ����. �� �� � ��
�� � ����� �� � ������.
�
�� ��� �� ��� (5, 1.0E2, 40.5)� �� �� �����.
fn:last()
�� 3���.
�� ��
5 ���� ���� � ���
�� ��
55 ���� ��� ���� � ��
local-name ��
fn:local-name ��� ��� �� � �� ��� �����.
���� fn:local-name( )
node��
node � �� �� �� �����. node� ���� ��� fn:local-name �� ���� ��
� �� ����.
� 5 � �� �� 143
���
�� node� ��� ��� �� � node� � �� ����.
v node� ���� ��� ���� ��� �� �� �����.
v node� �� � �� ��� ��� ���� �� 0 ��� �����.
– node� � ������.
– node� � ��, � �� �� �� ��� ��� ����.
v node� �� � �� ��� ��� ���� ��� �����.
– node� ���� �����.
– node� ��� ����.
v � ��� ���� ��� node� �� �� �� �� � ��� ���� xs:string � ��
���.
�
�� ��� �� emp� �� �� �����.
declare namespace a="http://posample.org";fn:local-name(<a:b/>)
�� b���.
�� ��
9 ���� ��� �� ���
local-name-from-QName ��
fn:local-name-from-QName ��� xs:QName � �� ��� �����.
���� fn:local-name-from-QName(qualified-name) ��
qualified-name
�� ��� � ��� � � �� ���� ��� �
qualified-name xs:QName ��� ���� � ������.
���
qualified-name� � ���� �� �, �� qualified-name� �� �� xs:NCName ���.
qualified-name� � ����� � ���� �����.
144 IBM DB2 XQuery ���
�
�� ��� ��� �� �� ��� �����.
fn:local-name-from-QName(fn:QName("http://www.mycompany.com/", "ns:employee"))
�� ″employee″���.
�� ��
15 ���� ���� �(QNames)�
lower-case ��
fn:lower-case ��� ��� ���� �����.
���� fn:lower-case(source-string) ��
source-string
���� �� ��
source-string xs:string ��� ���� � ������.
���
source-string� � ���� ��� �� � ��� ���� ��� ��� ���� ���� ���
source-string���. ���� ���� �� �� ��� ��� � �� �����.
source-string� � ����� �� �� 0 �����.
�
�� ��� �� ″Wireless Router TB2561″� ���� �����.
fn:lower-case("Wireless Router TB2561")
�� ″wireless router tb2561″���.
matches ��
fn:matches ��� ��� ��� �� ����� ��� ����.
���� fn:matches(source-string,pattern )
,flags��
source-string
��� �� ��
� 5 � �� �� 145
source-string xs:string �� � ������.
pattern
source-string� �� ���. ��� � ��� �� �� �� �� ���� ��, �
�� � � ��� �����.
pattern xs:string ���.
flags pattern� source-string� ����� ���� �� � ��� �� � �� xs:string
s ���(.)� �� ��� ��� �����.
s �� ���� ��� ���(.)� � ��� ��(X‘0A’)� ��� �� ��� �
���.
m ��(^)� �� ��(� ��� �� �� ) ���, � ��($)� �� �(� ��
� �� � ) ��� �����.
m �� ���� ��� ��(^) ��� �� ��� � ��($)� ��� �
����.
i �� ����� ���� ��� �����.
i �� ���� ��� ����� ���� �� �����.
x pattern �� �� ��� ���� �����.
x �� ���� ��� �� ��� �� �����.
���
source-string� � ���� ��� source-string� pattern ��� �� �� true���.
source-string� pattern ��� ��� �� false���.
pattern� �� �� �� �� � �� �� ��(^)� ���� ��� �� � �� �� � � ��
($)� ���� �� �, source-string� �� ��� pattern� ��� source-string pattern� �
���. pattern� �� �� �� �� � �� �� ��(^)� �� �, source-string source-string
� �� �� source-string�� � �� ���� source-string� pattern ��� ��� pattern �
���. pattern� �� � �� �� � � �� � ��($)� �� �, source-string source-string
� � �� source-string�� � �� ��� source-string� pattern ��� ��� pattern �
���. m �� ��� �� �� �� ���� �� ���� ��� ����.
source-string� � ����� �� false���.
�
��� � �� ���� ��� ��� �: �� ��� �� ″abbcacadbdcd″� ����� �� ″ac″
�� ″bd″� ��� ����.
fn:matches("abbcacadbdcd","(ac)|(bd)")
146 IBM DB2 XQuery ���
�� true���.
�� ���� ��� ��� �: �� ��� �� ″bd″� �� ″ac″ �� ″bd″� ����� ��
��.
fn:matches("bd","^(ac)|(bd)$")
�� true���.
�� ��
���
��� ��� ��� ���� � ���� ���� �� ������. ��� �� XQuery
���� �����. fn:matches, fn:replace � fn:tokenize. DB2 XQuery ��� �� W3C
Recommendation XML Schema Part 2: Datatypes Second Edition�� ��� XML �� ��� �
�� ���� �� W3C Candidate Recommendation XQuery 1.0 and XPath 2.0 Functions and
Operators�� ��� �� ��� ���.
max ��
fn:max ��� ���� � ��� �����.
���� fn:max(sequence-expression) ��
sequence-expression
�� �� �� ��� ���� ��� �� � ���
v xs:float
v xs:double
v xs:decimal
v xs:integer
v xs:string
v xs:date
v xs:time
v xs:dateTime
v xdt:untypedAtomic
v xdt:dayTimeDuration
v xdt:yearMonthDuration
v � �� ��� ��� �
xdt:untypedAtomic �� �� �� xs:double� ������. ��� ��� �� �� ���
� �� �� �� �� �� � ��� �� ge ���� ���� �� ��� �� ��
���. �� � �� ��� �����. �� �, �� ���� money(xs:decimal��
���) � stockprice(xs:float�� ���) �� �� �, �� xs:float ��� ����
�.
� 5 � �� �� 147
date, time �� dateTime � ����� �� ���� ���� ���. ��� ���
� �� �� datetime ��� ��� UTC� �����.
���
sequence-expression� � ���� ��� �� sequence-expression� �� � �����. ��
� ��� � sequence-expression� �� ��� ��� � ��� sequence-expression� ��
� ��� �� ��� ����.
sequence-expression� � ����� � ���� �����. ���� NaN� ���� � NaN� �
����.
�
�� ��� ��� (500, 1.0E2, 40.5)� ��� �����.
fn:max((500, 1.0E2, 40.5))
xs:double ��� ��� �����. ��� xs:double 5.0E2� ����, � ″500″�� �
�����.
�� ��
�min ���
min ��
fn:min ��� ���� � ��� �����.
���� fn:min(sequence-expression) ��
sequence-expression
�� �� �� ��� ���� ��� �� � ���
v xs:float
v xs:double
v xs:decimal
v xs:integer
v xs:string
v xs:date
v xs:time
v xs:dateTime
v xdt:untypedAtomic
v xdt:dayTimeDuration
v xdt:yearMonthDuration
v � �� ��� ��� �
148 IBM DB2 XQuery ���
xdt:untypedAtomic �� �� �� xs:double� ������. ��� ��� �� �� ���
� �� �� �� �� �� � ��� �� le ���� ���� �� ��� �� ��
���. �� � �� ��� �����. �� �, �� ���� money(xs:decimal�� �
��) � stockprice(xs:float�� ���) �� �� �, �� xs:float ��� �����.
date, time �� dateTime � ����� �� ���� ���� ���. ��� ���
� �� �� datetime ��� ��� UTC� �����.
���
sequence-expression� � ���� ��� �� sequence-expression� �� � �����. ��
� ��� � sequence-expression� �� ��� ��� � ��� sequence-expression� �
�� ��� �� ��� ����.
sequence-expression� � ����� � ���� �����.���� NaN� ���� � NaN� �
����.
�
� ��� �: �� ��� ��� (500, 1.0E2, 40.5)� ��� �����.
fn:min((500, 1.0E2, 40.5))
xs:double ��� ��� �����. ��� xs:double 4.05E1� ����, � ″40.5″� �
�����.
��� ��� �: �� ��� ��� ��� ���� ��� (″x″, ″y″, ″Z″)� ��� �����. ��
� �� ����� ���� �� �����.
fn:min(("x", "y", "Z"))
�� ″x″���.
�� ��
147 ���� �max ���
name ��
fn:name ��� �� �� � � � �� � ��� �����.
���� fn:name( )
node��
node � �� �� ��� ��� �. node� ���� ��� fn:name �� ���� ���
�� ����.
� 5 � �� �� 149
���
�� node� � �� ����.
v node� �� � �� ��� ��� ���� �� 0 ��� �����.
– node� � ������.
– node� � ��, � �� �� �� ��� ��� ����.
v node� �� � �� ��� ��� ���� ��� �����.
– node� ���� �����.
– node� ��� ����.
v � ��� ���� ��� � �(�� �)� node� �� �� ���� xs:string � ����
�.
�
�� ��� ″comp:emp″� �����.
declare namespace d="http://www.example.org";let $department := document {<comp:dept xmlns:comp="http://www.mycompany.com" id="A07"><comp:emp id="31201" />
</comp:dept> }return fn:name($department/d:dept/d:emp)
�� ��� ″comp:emp″� �����.
declare namespace d="http://www.example.org";let $department := document {<comp:dept xmlns:comp="http://www.mycompany.com" id="A07"><comp:emp id="31201" />
</comp:dept> }return $department/d:dept/d:emp/fn:name()
�� ��
9 ���� ��� �� ���
namespace-uri ��
fn:namespace-uri ��� ��� �� ��� �� � ���� URI� �����.
���� fn:namespace-uri( )
node��
node � ���� URI� � ��� ��� �. node� ���� ��� fn:namespace-uri� ��
���� ��� �� ����.
150 IBM DB2 XQuery ���
���
�� node� � �� ����.
v node� �� � �� ��� ��� ���� �� 0 ��� �����.
– node� � ������.
– node� � �� �� � ��� ����.
– node� � �� �� � ����� node� �� ��� �� � ����� �� ����.
v node� �� � �� ��� ��� ���� ��� �����.
– node� ���� �����.
– node� ��� ����.
v � ��� ���� ��� node� �� �� �� � ���� URI� ���� xs:string �
�����.
�
�� ��� ″http://www.mycompany.com″� �����.
declare namespace d="http://www.example.org";let $department := document {<comp:dept xmlns:comp="http://www.mycompany.com" id="A07"><comp:emp id="31201" />
</comp:dept> }return fn:namespace-uri($department/d:dept/d:emp)
�� ��� ″http://www.mycompany.com″� �����.
declare namespace d="http://www.example.org";let $department := document {<comp:dept xmlns:comp="http://www.mycompany.com" id="A07"><comp:emp id="31201" />
</comp:dept> }return $department/d:dept/d:emp/fn:namespace-uri()
�� ��
15 ���� �XML � ���� � QName�
namespace-uri-for-prefix ��
fn:namespace-uri-for-prefix ��� �� � � � ����� �� � �� ��� � ���� URI
� �����.
���� fn:namespace-uri-for-prefix(prefix,element) ��
prefix �� � ����� �� � �
prefix� xs:string ��� �(�� 0� � ��)��� � ������.
� 5 � �� �� 151
element
prefix� ����� � � � ����� �� �
���
�� prefix� � �� ����.
v element� � � � ����� � � � prefix� ��� �� � ����� � ��
�� URI� �����.
v element� � � � ����� � � � prefix� ��� ��� � ���� �����.
v prefix� �� 0 ����� � ����� ��� � ����� � ���� URI� ����
�.
�
�� ��� ″http://www.mycompany.com″� �����.
declare namespace d="http://www.example.org";let $department := document {<comp:dept xmlns:comp="http://www.mycompany.com" id="A07"><comp:emp id="31201" />
</comp:dept> }return fn:namespace-uri-for-prefix("comp", $department/d:dept/d:emp)
�� ��
15 ���� �XML � ���� � QName�
namespace-uri-from-QName ��
fn:namespace-uri-from-QName ��� xs:QName � � ���� URI ��� �����.
���� fn:namespace-uri-from-QName(qualified-name) ��
qualified-name
� � ���� URI ���� ��� �
qualified-name xs:QName ��� ���� � ������.
���
qualified-name� � ���� �� �, �� qualified-name� � ���� URI �� xs:string
���. qualified-name� � ����� �� ��� �� 0 ��� �����. qualified-name
� � ����� � ���� �����.
152 IBM DB2 XQuery ���
�
�� ��� �� ″http://www.mycompany.com″� �����.
fn:namespace-uri-from-QName(fn:QName("http://www.mycompany.com", "comp:employee"))
�� ��
15 ���� �XML � ���� � QName�
node-name ��
fn:node-name ��� ��� �� QName� �����.
���� fn:node-name(node) ��
node �� �� � �����.
���
�� node� �� QName� ���� xs:QName ���. node� � ����� � ���� ���
��.
�
�� ��� URI http://www.mycompany.com � �� QName comp:emp� ���� �� QName�
�����.
declare namespace d="http://www.example.org";let $department := document {<comp:dept xmlns:comp="http://www.mycompany.com" id="A07"><comp:emp id="31201" />
</comp:dept> }return fn:node-name($department/d:dept/d:emp)
�� ��
9 ���� ��� �� ���
normalize-space ��
fn:normalize-space ��� �� �� �� ��� ��� ��� � �� �� ���� �� �� �
�� ����.
���� fn:normalize-space( )
source-string��
source-string
��� ��� ��
� 5 � �� �� 153
source-string xs:string �� � ������.
source-string� ���� ��� fn:normalize-space� �� �� ���� ����, fn:string �
�� ���� xs:string �� �����.
���
�� source-string� �� �� ��� ��� � xs:string ���.
v �� �� �� ��� �����.
v �� ��� �� �� ��� �� ���� �� ����(X‘20’) ��� ����.
�� ��� ����(X‘20’), �(X‘09’), � ���(X‘0A’) � ��� ��(X‘0D’)���.
source-string� � ����� �� 0 ��� �����.
�
�� ��� �� ″ a b c d ″�� ��� �� ��� �����.
fn:normalize-space(" a b c d " )
�� ″a b c d″���.
�� ��
18 ���� ����
normalize-unicode ��
fn:normalize-unicode ��� ��� �� ���� ���� �����.
���� fn:normalize-unicode(source-string )
,normalization-type��
source-string
�� ���� ����
source-string xs:string �� � ������.
normalization-type
�� ���� ���� �� ���� xs:string . �� �� ����.
NFC ���� ��� �� C. normalization-type� ���� ��� NFC ���� �����.
NFD ���� ��� �� D
NFKC
���� ��� �� KC
154 IBM DB2 XQuery ���
NFKD
���� ��� �� KD
�� 0 ��� ���� ���� ���� ����.
���
source-string� � ���� �� �, �� normalization-type�� ��� ���� ���� source-string
� �� ��� � xs:string ���. normalization-type� ���� � �, source-string� ��
���� ��� �� C(NFC)� �����. ���� ���� ���� Character Model for the World
Wide Web 1.0� ���� ����.
source-string� � ����� �� 0 ��� �����.
�
�� ��� �� ṃ″(�� � �� ��� ��� m)� �� ���� ��� �� C
� �����.
fn:normalize-unicode("ĉࠃ","NFC")
�� ″&x7747;″���.
not ��
fn:not ��� ���� ��� �� � true�� false� ����, ���� ��� �� � false�� true
� �����.
���� fn:not(sequence-expression) ��
sequence-expression
�� �� ��� ��� ��� �� � ���
���
sequence-expression� � ���� ��� �� ���� ��� �� � false � true���. �
��� ��� �� � true � �� false���.
sequence-expression� � ����� �� true���.
�
�� ��� ��� ��� �� � true��� false� �����.
fn:not(<employee />)
�� ��
� 5 � �� �� 155
60 ���� ���� �� �
number ��
fn:number ��� � xs:double ��� ��� �����.
���� fn:number( )
atomic-value��
atomic-value
�� �� � ���. atomic-value� ���� ��� fn:number� �� ���� ��� ��
����.
���
atomic-value� � ���� ��� �� atomic-value� xs:double� ���� � ���. atomic-value
� xs:double ��� ��� ��� � ��� NaN� �����.
numeric-value� � ����� NaN� �����.
�
xs:decimal �� xs:double� ��� �: �� ��� xs:decimal 2.75� xs:double� �����.
fn:number(2.75)
�� 2.75E0���.
xs:boolean �� xs:double� ��� �: �� ��� boolean false()� xs:double� �����.
fn:number(false())
�� 0.0E0���.
�� ��
34 ���� �double ��� ��
one-or-more ��
fn:one-or-more ��� �� �� ��� ��� �� � �� �����.
���� fn:one-or-more(sequence-expression) ��
sequence-expression
� ���� ��� �� ���
156 IBM DB2 XQuery ���
���
sequence-expression� �� ��� ��� �� � sequence-expression� �����. �� ��� �
�� �����.
�
�� �� fn:one-or-more ��� ���� �� $seq� �� ��� ��� � ��� ����.
let $seq := (5,10)return fn:one-or-more($seq)
(5,10)� �����.
�� ��
5 ���� ���� � ���
�� ��
137 ���� �exactly-one ���
181 ���� �zero-or-one ���
position ��
fn:position ��� �� �� � ����� ���� ��� � �����.
���� fn:position() ��
���
�� �� �� � ����� ���� ��� � ���� xs:integer ���. ���� ���
���� � � ��� �����. position ��� ���� ��� ���� ���� ��� ��� �
� ��� ��� � � �����. position ��� ����� ��� �����.
�
�� ����� position ��� 10�� ���� � �� ���� � ��� �� �����. � ���
�� position ��� ��� ��� ��� � �����. �� position() eq 5� ���� ��
� ��� ���� true���.
(11 to 20)[position() eq 5]
� ���� �� 15���.
�� ��
12 ���� ���� �� ���
5 ���� ���� � ���
� 5 � �� �� 157
�� ��
55 ���� ��� ���� � ��
QName ��
fn:QName ��� � ���� URI� �� QName(� � �� ��)� � �� �����
�� �� �����.
���� fn:QName(URI,QName) ��
URI �� ��� � ���� ��
URI� xs:string ��� ���� � �� �� ������.
QName
xs:QName ��� �� �� �� ��(lexical form)
QName� ��� � xs:string���.
���
�� URI� ��� � ���� URI� �� QName� ��� � � � �� �� �� �� �
xs:QName ���.
fn:QName ��� QName� � ���� � �� URI� ��� ��. QName� � ���� �
�� �� �, URI� �� 0 ���� � ���� � � ����. QName� �� �� ��
� �� �� �, URI� �� 0 ���� � ���� � � ����.
�
�� ��� � ���� URI � �� QName� ���� ��� ����, �� xs:QName �
���.
fn:QName("http://www.mycompany.com", "comp:employee")
�� � ���� URI ″http://www.mycompany.com″, � � ″comp″ � �� � ″employee″�
� �� xs:QName ���.
�� ��
15 ���� �XML � ���� � QName�
remove ��
fn:remove ��� ����� ��� �����.
158 IBM DB2 XQuery ���
���� fn:remove(source-sequence,remove-position) ��
source-sequence
��� �� ���. ����� ��� ��
source-sequence� �� ��� � ��� ������ � ������.
remove-position
source-sequence�� ��� �� . remove-position� ��� � xs:integer���.
���
source-sequence� � ���� �� �
v remove-position� 1�� ��� source-sequence� ��� �� �� source-sequence���.
v remove-position� 1�� ��� �� source-sequence� ��� ��� ��� �� �� ����
�� ���� � �� ������.
– source-sequence�� remove-position � ��
– source-sequence�� remove-position ��� ��
v source-sequence� � ����� �� � ������.
�
�� ��� ��� (1,2,4,7)�� � � � �� ��� ��� � ���� �����.
fn:remove((1,2,4,7),3)
�� (1,2,7)���.
�� ��
5 ���� ���� � ���
replace ��
fn:replace ��� �� �� � �� ��� ��� �� ����, ��� ��� ��� � ��
��� ����.
���� fn:replace(source-string,pattern,replacement-string )
,flags��
source-string
�� ��� ���� ��
source-string xs:string �� � ������.
� 5 � �� �� 159
pattern
source-string� �� ���. ��� � ��� �� �� �� �� ���� ��, �
�� � � ��� �����.
pattern xs:string ���.
replacement-string
source-string�� pattern ��� ��� �� ��� ���� ��
replacement-string xs:string ���.
replacement-string �� $0�� $9 �� �� � ����. $0 pattern� �� ��� �
���. �� $1�� $9 �� pattern�� �� 9��� ��� �� ���� ����. ($1
� �� ���, $2� � �� ��� �� ����.)
replacement-string�� ��� � ��($)� ����� �� ″₩$″� ������ .
replacement-string�� ��� � �(₩)� ����� �� ″₩₩″� ������.
flags pattern� source-string� ���� �� � �� � �� � �� xs:string
s ���(.)� �� ��� ���� �����.
s �� ���� ��� ���(.)� � ��� ��(X‘0A’)� ��� �� ��� ��
���.
m ��(^)� �� ��(� ��� �� �� )� ���� � ��($)� �� �(� ��
� �� � )� ���� �����.
m �� ���� ��� ��(^) ��� ��� ���� � ��($)� ���
�� �����.
i �� ����� ���� ��� �����.
i �� ���� ��� ����� ���� �� �����.
x pattern �� �� ��� ���� �����.
x �� ���� ��� �� ��� �� �����.
���
source-string� � ���� ��� �� source-string� �� �� ��� ��� � ����
�.
v source-string�� pattern� ��� ��� ����. pattern� � ��� �� �� ��� ���
pattern�� source-string� ��� ��� � �� ��� ��� ���� �����.
v source-string�� pattern ��� � �� ��� replacement-string�� ����. replacement-string
� �� $0�� $9 �� ��� �� �, ��� ��� ���� pattern� �� ��� ���
source-string� �� �� replacement-string� ��� �����. � �� ��� replacement-string
160 IBM DB2 XQuery ���
� source-string� �����. �� ���� ��� ��� �� ��� source-string ���
�� ��� ��� ��� pattern� ���� �� ��� ��� �� 0 ���
replacement-string� ��� �����.
source-string�� pattern� ���� ��� ��� �����.
source-string� � ����� �� 0 ��� �����.
�
�� ���� � �� ���� �� �: �� ��� �� ″abbcacadbdcd″�� �� ″a″ ����
″ba″� ����.
fn:replace("abbcacadbdcd","a","ba")
�� ″babbcbacbadbdcd″���.
��� �� ���� �� �� ���� �� �: �� ��� ″a″ � ″a″ ��� ���
″abbcacadbdcd″�� ″a″ ��� �� ���� ����.
fn:replace("abbcacadbdcd","a(.)","$1$1")
�� ″bbbcccddbdcd″���.
�� ��
177 ���� �translate ���
���
��� ��� ��� ���� � ���� ���� �� ������. ��� �� XQuery
���� �����. fn:matches, fn:replace � fn:tokenize. DB2 XQuery ��� �� W3C
Recommendation XML Schema Part 2: Datatypes Second Edition�� ��� XML �� ��� �
�� ���� �� W3C Candidate Recommendation XQuery 1.0 and XPath 2.0 Functions and
Operators�� ��� �� ��� ���.
resolve-QName ��
fn:resolve-QName ��� � ���� URI� �� � ���� � �� ���� � �� � �
� ����� ����, �� QName� � �� ��� �� QName�� �����.
���� fn:resolve-QName(qualified-name,element-for-namespace) ��
qualified-name
��� � � ��
qualified-name xs:string ��� ���� � ������.
� 5 � �� �� 161
element-for-namespace
qualified-name� � � � ����� ���� �
element-for-namespace� � �����.
���
qualified-name� � ���� ��� �� �� �� � �� �� ����.
v �� QName� � � � �� � qualified-name�� ����.
v qualified-name� � �� �� � �� element-for-namespace� � � � ����� � �
� ��� �, � � �� ��� � ���� URI� ��� � ���� URI���.
v qualified-name� � �� �� ��� � ���� URI� element-for-namespace� � � � �
����� ��� �, � ��� � ���� URI� ��� � ���� URI���.
v qualified-name� � �� �� element-for-namespace� � � � ������ ��� ��� �
���� URI� �� �, ���� � ���� URI� ����.
v qualified-name� � �� element-for-namespace� � � � ����� � ���� � �� �
�� ��� qualified-name� ��� �� ��� ��� ��� ��� �����.
qualified-name� � ����� � ���� �����.
�
�� ��� URI http://www.mycompany.com � �� QName comp:dept� ���� �� QName�
�����.
declare namespace d="http://www.mycompany.com";let $department := document {<comp:dept xmlns:comp="http://www.mycompany.com" id="A07">
<comp:emp id="31201" /></comp:dept> }return fn:resolve-QName("comp:dept", $department/d:dept/d:emp)
�� ��
15 ���� �XML � ���� � QName�
reverse ��
fn:reverse ��� ����� ��� ��� ����� ����.
���� fn:reverse(source-sequence) ��
source-sequence
����� �� ���
source-sequence� �� ��� � ��� ������ � ������.
162 IBM DB2 XQuery ���
���
source-sequence� � ���� ��� �� source-sequence� �� ��� ���� �� �����
�.
source-sequence� � ����� � ���� �����.
�
�� ��� ��� (1,2,3,7)� ��� ��� ��� �����.
fn:reverse((1,2,3,7))
�� (7,3,2,1)���.
�� ��
5 ���� ���� � ���
root ��
fn:root ��� ��� ��� ��� �� ��� �����.
���� fn:root( )
node��
node �� �� � ��� node� ��� ���� �����.
���
node� � ���� ��� �� node� ��� ��� �� �����. node� ��� �� ����
�� node���.
node� � ����� �� � ������.
�
�� XQuery ��� �� �� ����� �����.
let $f := <first>Laura</first>let $e := <emp> {$f} <last>Brown</last> </emp>let $doc := document {<emps>{$e}</emps>}
��� �� ��� ��� �: �� ��� last�� �� �� ��� �����.
fn:root($e/last)
�� <emp><first>Laura</first><last>Brown</last></emp>���.
�� �� ��� ��� �: �� ��� �� $doc� ��� ��� �� ��� �����.
� 5 � �� �� 163
fn:root($doc)
�� �� �����.
�� ��
7 ���� ��� �� ���
round ��
fn:round ��� ��� �� � �� � � ��� �����.
���� fn:round(numeric-value) ��
numeric-value
�� �� � ���
numeric-value� �� �� �� � � �����.
v xs:float
v xs:double
v xs:decimal
v xs:integer
v xdt:untypedAtomic
v � �� ��� ��� �
numeric-value� xdt:untypedAtomic ��� ��� xs:double �� �����.
���
numeric-value� � ���� ��� �� numeric-value� �� � � ����� . �
fn:round(numeric-value)� fn:floor(numeric-value+0.5)� ����. ��� ��� � numeric-value
� ��� �� �� ����.
v numeric-value� xs:float, xs:double, xs:decimal �� xs:integer �, ���� numeric-value�
��� ����.
v numeric-value� xs:float, xs:double, xs:decimal �� xs:integer��� ��� ���, ����
numeric-value �� � � ��� ����.
numeric-value� � ����� �� � ������.
�
�� ��� �: �� ��� 0.5� �� � �����.
fn:round(0.5)
�� 1���.
164 IBM DB2 XQuery ���
�� ��� �: �� ��� (-1.5)� �� � �����.
fn:round(-1.5)
�� -1���.
�� ��
�round-half-to-even ���
round-half-to-even ��
fn:round-half-to-even ��� ��� �� � �� � � ��� ���� �� � �����.
���� fn:round-half-to-even(numeric-value )
,precision��
numeric-value
�� �� � ���
numeric-value� �� �� �� � � �����.
v xs:float
v xs:double
v xs:decimal
v xs:integer
v xdt:untypedAtomic
v � �� ��� ��� �
numeric-value� xdt:untypedAtomic ��� ��� xs:double �� �����.
precision
numeric-value� �� �� ��� ���. precision xs:integer ���. precision� �
�� 0���.
���
numeric-value� � ���� ��� precision� 0��� ���� � �, �� numeric-value� �
� � � �����. numeric-value� ��� ��� � � �� �� �����.
numeric-value� � ���� ��� precision� 0� �� �, �� ��� ���� numeric-value
� �� � � precision ������. numeric-value� � ��� � � �� �� �� ��
���� �� ���.
��� ��� � numeric-value� ��� �� �� ����.
v numeric-value� xs:float, xs:double, xs:decimal �� xs:integer �, ���� numeric-value�
��� ����.
� 5 � �� �� 165
v numeric-value� xs:float, xs:double, xs:decimal �� xs:integer��� ��� � �, ����
numeric-value �� � � ��� ����.
numeric-value� � ����� �� � ������.
�
precision ��� �� �: �� ��� 0.5� �� � �����.
fn:round-half-to-even(0.5)
�� 0���.
0� �� precision ��� �: �� ��� 1.5432� �� ��� �� � � �����.
fn:round-half-to-even(1.5432,2)
�� 1.54���.
�� precision� �: �� ��� 35600� �����.
fn:round-half-to-even(35612.25, -2)
�� ��
164 ���� �round ���
sqlquery ��
db2-fn:sqlquery ��� �� ��� DB2 �������� SQL fullselect� � ���� ����.
���� db2-fn:sqlquery(string-literal) ��
string-literal
fullselect� �����. fullselect� �� ��� � ��� ��� ��, ��� ��� �
XML�� ���.
fullselect� ����� ���� �(�: �� �� ��), �� �� ���� �� �
���. �:
"select c1 from t1 where c2 = ’Hello’"
fullselect� ����� ���� �(�: �� ID ��), �� �� ���� �� ���
�. �:
’select c1 from "t1" where c2 = 47’
fullselect� ����� ����� � � ���� �, �� �� ���� �� � ��
� � ����� �� �� ����� ������. �:
’select c1 from "t1" where c2 = ’’Hello’’’
166 IBM DB2 XQuery ���
���
�� string-literal� fullselect � ������. DB2� �� �� � � ��� �� ��� �
� SQL ��� ��� SQL��� fullselect� �����. fullselect�� ���� XML ���� �
�� � � ���. �(NULL) � ���� � � ���� ��� �� ����. fullselect�
�� ���� ��� �(NULL) � ���� �, ��� � � � ������.
fullselect� ���� ��� �(NULL) � ��� �� �� �� ��� ���� �� �� ����,
db2-fn:sqlquery ��� ���� ���� �� �� fullselect� ���� � �� �� � ����.
�
� ���� ��� fullselect� �: �� �� ��� PRODUCT� ��� �� ���� ���� �
� �� ��� �����. ��� �� DESCRIPTION� ����.
�� ��� � � � � � ���.
db2-fn:sqlquery(’select description from product’)db2-fn:sqlquery(’SELECT DESCRIPTION FROM PRODUCT’)db2-fn:sqlquery(’select "DESCRIPTION" from "PRODUCT"’)
�� �� ��� fullselect� �: �� �� ��� PRODUCT� �� �� ���� �����. ��
� �� DESCRIPTION� ��� �� PID ’100-103-01’� �����.
�� ��� � � � � � ���.
db2-fn:sqlquery(’select Description from Product where pID=’’100-103-01’’’)db2-fn:sqlquery("select description from product where pid=’100-103-01’")db2-fn:sqlquery("select ""DESCRIPTION"" from product where pid=’100-103-01’")
�� ��
3 ���� �XQuery ��� ���� DB2 ��� ��
�� ��
180 ���� �xmlcolumn ���
starts-with ��
fn:starts-with ��� ��� ��� �� ��� ����� ��� ����.
���� fn:starts-with(string,substring) ��
string substring� � ��
string xs:string ��� ���� � ������. string� � ��� � string �� 0
��� �����.
� 5 � �� �� 167
substring
string� ���� � �� ��
substring xs:string ��� ���� � ������.
���
�� �� � ��� ���� � �� xs:boolean true���.
v substring� string� ��� �� �
v substring� � ������ �� 0 �� �
�� ��� �� false���.
�
�� ��� �� ‘Test literal’� ‘lite’�� ��� ����� ��� ����.
fn:starts-with(’Test literal’,’lite’)
�� false���.
�� ��
129 ���� �contains ���
136 ���� �ends-with ���
string ��
fn:string ��� � �� ��� �����.
���� fn:string( )
value��
value ��� ���
value� �� �� �� ��� � ������.
value� ���� ��� fn:string �� ���� ��� �� ����. �� ���� ��� �
��� � � ��� �����.
���
value� � ���� �� �
v value� ���� �� ��� �� ���.
v value� �� �� �� value� xs:string ��� ���� � ���.
value� � ����� � � �� 0 �����.
168 IBM DB2 XQuery ���
�
�� ��� 123� �� ��� �����.
fn:string(xs:integer(123))
�� ‘123’���.
string-join ��
fn:string-join ��� ���� ��� ��� ���� � � ��� �����.
���� fn:string-join(sequence,separator) ��
sequence
��� ��� �� �� ���
sequence� xs:string � ��� �� � ������.
separator
� ��� sequence �� ��� ���� ����
separator� ��� � xs:string���.
���
�� sequence� ��� ��� ���� separator� �����. separator� �� 0 ���
� sequence� �� ��� �� �����. sequence� � ����� �� 0 ��� ����
�.
�
�� ��� �� ��� ���� ���� ��� (″I″, ″made″, ″a″, ″sentence!″)� ��� ��� �
��� �����.
fn:string-join(("I" , "made", "a", "sentence!"), " ")
�� �� ″I made a sentence!″���.
string-length ��
fn:string-length ��� ��� �� �����.
���� fn:string-length(source-string) ��
source-string
�� �� ��
� 5 � �� �� 169
source-string xs:string ��� ���� � ������.
���
source-string� � ���� ��� �� source-string� �� ����. �� 16�� � ��
��� ���� xFFFF�� � �� ��� �� ��� � ��� �����. source-string
xs:integer ���.
source-string� � ����� �� 0���.
�
�� ��� �� ‘Test literal’� �� �����.
fn:string-length(’Test literal’)
�� 12���.
string-to-codepoints ��
fn:string-to-codepoints ��� �� � ���� ���� �� ��� ���� �����.
���� fn:string-to-codepoints(source-string) ��
source-string
� ��� ���� �� �� �� � ���� �� ��
���
source-string� � ���� ��� �� 0� ��� �� source-string� �� ��� �� ���
���� xs:integer � ������.
source-string� � ������ �� 0�� �� � ������.
�
�� ��� �� ‘XQuery’� �� ��� ���� �� ��� ���� �����.
fn:string-to-codepoints("XQuery")
�� (88,81,117,101,114,121)���.
�� ��
127 ���� �codepoints-to-string ���
170 IBM DB2 XQuery ���
subsequence ��
fn:subsequence ��� ���� �� ���� �����.
���� fn:subsequence(source-sequence,start )
,length��
source-sequence
�� ���� � ���
source-sequence� � ���� ��� �� ������.
start source-sequence�� �� ���� �� . source-sequence� � � 1���. start<=0
�� start� 1� �����.
start� ��� � xs:double���.
length �� ���� �� �. length� ��� source-sequence� �� ����. start + length - 1�
source-sequence� ��� �� length� (source-sequence� �) - start + 1� �����.
length� ��� � xs:double���.
���
source-sequence� � ���� ��� �� start�� ���� length�� ��� ����
source-sequence� �� ������.
source-sequence� � ����� � ���� �����.
�
�� ��� ��� (’T’,’e’,’s’,’t’,’ ’,’s’,’e’,’q’,’u’,’e’,’n’,’c’,’e’)�� �� � ���� � �� ��� �
����.
fn:subsequence((’T’,’e’,’s’,’t’,’ ’,’s’,’e’,’q’,’u’,’e’,’n’,’c’,’e’),6,3)
�� (‘s’,‘e’,‘q’)���.
�� ��
5 ���� ���� � ���
substring ��
fn:substring ��� ��� �� ��� �����.
���� fn:substring(source-string,start )
,length��
� 5 � �� �� 171
source-string
�� ��� � ��
source-string xs:string ��� ���� � ������.
start source-string�� �� ��� �� �� . source-string� � � 1���. start< =
0 � start� 1� �����. �� 16�� � �� ��� ���� xFFFF�� � ��
��� � ��� �����.
start� ��� � xs:double���.
length �� ��� �. length� ��� source-string� ����. start + length - 1� source-string
� ��� �� length� (source-string� �) - start + 1� �����. �� 16�� �
�� ��� ���� xFFFF�� � �� ��� �� ��� � ��� �����.
length� ��� � xs:double���.
���
source-string� � ���� ��� �� �� start�� ���� length�� ��� ����
source-string� �� �����. source-string� � ����� � � �� 0 �����.
�
�� ��� �� ‘Test literal’� �� � ���� ���� �� �� ��� �����.
fn:substring(’Test literal’,6,7)
�� ‘literal’���.
�� ��
�substring-after ���
173 ���� �substring-before ���
substring-after ��
fn:substring-after ��� ��� � ��� � ����� � ��� ���� ���� �� �
�� �����.
���� fn:substring-after(source-string,search-string) ��
source-string
�� ��� � ��
source-string xs:string ��� ���� � ������. source-string� � ��� �
source-string �� 0 ��� �����.
172 IBM DB2 XQuery ���
search-string
source-string�� � ��
search-string xs:string ��� ���� � ������.
���
source-string� � ���� ���� �� 0 �� �
v source-string� �� n � m<n�� �����. search-string� source-string�� ���� source-string
�� search-string� � ����� �� m� �� �, �� source-string� m+1
�� ���� n�� ��� �� �����.
v source-string� �� n�� �����. search-string� source-string�� ���� source-string��
search-string� � ����� �� n� �� �, �� �� 0 �����.
v search-string� � ����� �� 0 ���� �� source-string���.
v search-string� source-string�� ���� ��� �� �� 0 �����.
source-string� � ����� �� 0 ���� �� �� 0 �����.
�
�� ��� ��� ��� ���� �� ‘DEFABCD’�� ‘ABC’ ��� ��� ����.
fn:substring-after(’DEFABCD’, ’ABC’)
�� ‘D’���.
�� ��
�substring-before ���
171 ���� �substring ���
substring-before ��
fn:substring-before ��� ��� � ��� � ���� ��� ���� ���� �� ��
� �����.
���� fn:substring-before(source-string,search-string) ��
source-string
�� ��� � ��
source-string xs:string ��� ���� � ������. source-string� � ��� �,
source-string �� 0 ��� �����.
search-string
source-string�� � ��
� 5 � �� �� 173
search-string xs:string ��� ���� � ������.
���
source-string� � ���� ���� �� 0 �� �
v search-string� source-string� m �� ���� m>1�� �� 1�� ���� source-string
� m �� ��� �� �����.
v search-string� source-string� 1�� ���� ��� �� �� 0 �����.
v search-string� � ������ �� 0 ���� �� source-string���.
v search-string� source-string�� ���� ��� �� �� 0 �����.
source-string� � ����� �� 0 ���� �� �� 0 �����.
�
�� ��� ��� ��� ���� �� ‘DEFABCD’�� ‘ABC’ ��� ��� ����.
fn:substring-before(’DEFABCD’, ’ABC’)
�� ‘DEF’���.
�� ��
172 ���� �substring-after ���
171 ���� �substring ���
sum ��
fn:sum ��� ���� �� � ��� �����.
���� fn:sum(sequence-expression )
,empty-sequence-replacement��
sequence-expression
�� �� �� ��� ���� ��� �� � ���
v xs:float
v xs:double
v xs:decimal
v xs:integer
v xdt:untypedAtomic
v xdt:dayTimeDuration
v xdt:yearMonthDuration
v � �� ��� ��� �
174 IBM DB2 XQuery ���
xdt:untypedAtomic �� �� �� xs:double� ������. ��� ��� �� �� ���
� �� �� �� �� �� � ��� �� �� ��� �� �� ���. ��� � �
� ��� �����. �� �, �� ���� money(xs:decimal�� ���) � stockprice(xs:float
�� ���) �� �� �, ��� xs:float ��� �����.
empty-sequence-replacement
sequence-expression� � ��� � ���� . empty-sequence-replacement�
sequence-expression� �� ��� � � ��� � ����.
���
sequence-expression � ���� ���, �� sequence-expression� �� � �����. ��
� ��� � sequence-expression� �� ��� ��� � ��� sequence-expression� ��
� ��� ��� ����.
sequence-expression� � ����� empty-sequence-replacement� ���� ��� fn:sum 0.0E0� �
����. sequence-expression� � ����� empty-sequence-replacement� ���� fn:sum
empty-sequence-replacement� �����.
�
�� ��� ��� (500, 1.0E2, 40.5)� ��� �����.
fn:sum((500, 1.0E2, 40.5))
xs:double ��� ��� �����. ��� xs:double 6.405E2� ����, � ″640.5″�
� �����.
�� ��
5 ���� ���� � ���
tokenize ��
fn:tokenize ��� ��� �� ��� ���� �����.
���� fn:tokenize( source-string , pattern )
, flags��
source-string
�� ��� ���� �� ��
source-string xs:string �� � ������.
pattern
source-string� �� �� ��� ����
� 5 � �� �� 175
pattern ���� ���� xs:string ���. ��� � ��� �� �� �� ��
���� ��, ��� � � ��� �����.
flags pattern� source-string� ����� ���� ���� �� � �� � �� xs:string
s ���� ���(.)� � ��� ��(X’0A’)� ��� �� ��� ��� �����.
s �� ���� ��� ���(.)� � ��� ��(X‘0A’)� ��� �� ��� �
���.
m ��(^)� �� ��(� ��� �� �� ) ���, � ��($)� �� �(� ��
� �� � ) ��� �����.
m �� ���� ��� ��(^) ��� �� ��� � ��($)� ��� �
����.
i �� ����� ���� ��� �����.
i �� ���� ��� ����� ���� �� �����.
x pattern �� �� ��� ���� �����.
x �� ���� ��� �� ��� �� �����.
���
source-string� � ��� �� �� 0 ��� ��� �� source-string� �� �� ��� �
�� � ������.
v source-string�� pattern� ��� ��� ����.
v pattern� � ��� �� �� ��� ��� pattern�� source-string� ��� ��� � ��
��� ��� ���� �����.
v pattern� ��� �� � �� ��� � ���� ��� ���.
v pattern� source-string� �� �� ��� ���� ���� � �� �� 0 ��
���.
v source-string�� �� pattern ��� �� 0 ��� ���� �����.
v pattern� source-string� � �� ��� ���� ���� ��� �� �� 0 ����
�.
source-string�� pattern� ���� ��� ��� �����.
source-string� � ������ �� 0 ���� � � � ������.
�
�� ��� �� ″Tokenize this sentence, please.″�� ���� � ���. ″₩s+″� �� ��� ��
��� ���� ������.
fn:tokenize("Tokenize this sentence, please.", "₩s+")
176 IBM DB2 XQuery ���
�� ��� (″Tokenize″, ″this″, ″sentence,″, ″please.″)���.
�� ��
128 ���� �concat ���
���
��� ��� ��� ���� � ���� ���� �� ������. ��� �� XQuery
���� �����. fn:matches, fn:replace � fn:tokenize. DB2 XQuery ��� �� W3C
Recommendation XML Schema Part 2: Datatypes Second Edition�� ��� XML �� ��� �
�� ���� �� W3C Candidate Recommendation XQuery 1.0 and XPath 2.0 Functions and
Operators�� ��� �� ��� ���.
translate ��
fn:translate ��� ���� � ��� �� ��� ����.
���� fn:translate(source-string,original-string,replacement-string) ��
source-string
�� ��
source-string xs:string ��� ���� � ������.
original-string
�� ��� ���� ��
original-string� ��� � xs:string���.
replacement-string
original-string� ��� �� ��� ���� ��
replacement-string� ��� � xs:string���.
replacement-string� �� original-string� ��� �� replacement-string� �� ��� �
����.
���
source-string� � ���� ��� �� �� ��� ��� � xs:string ���.
v original-string� ��� source-string� � ��� ��� source-string� ��� original-string�� �
� ��� replacement-string� ��� ����.
original-string� �� replacement-string� ��� � �, original-string� ��� source-string
� � ��� ���� original-string�� �� � replacement-string�� ���� � ���
�.
� 5 � �� �� 177
original-string�� � ��� �� ���� �, original-string�� �� ��� � ���
�� � replacement-string�� ��� ��� ����.
v original-string� ���� �� source-string� � ��� �� ��� .
source-string� � ����� �� 0 ��� �����.
�
�� ��� �� ‘Test literal’�� e� o� ��� l� m�� �� � ��� �����.
fn:translate(’Test literal’,’el’,’om’)
�� ‘Tost mitoram’���.
�� ��� �� ��� ‘Another test literal’�� A� B�, t� f�, e� i� � r� m�� �� �
��� �����.
fn:translate(’Another test literal’, ’Ater’, ’Bfim’)
�� ‘Bnofhim fisf lifimal’���.
�� ��
159 ���� �replace ���
true ��
fn:true ��� xs:boolean true� �����.
���� fn:true() ��
���
�� xs:boolean true���.
�
true ��� ���� true� �����.
fn:true()
true� �����.
�� ��
138 ���� �false ���
unordered ��
fn:unordered ��� ���� ��� ���� � ��� �����.
178 IBM DB2 XQuery ���
���� fn:unordered(sequence-expression) ��
sequence-expression
� ���� ��� �� ���
���
�� ��� ���� � sequence-expression� �����. � ����� ��� ��� ��
�� ��� ��� �� � �� ������ �����.
�
�� ��� ��� (1,2,3)� ��� ��� �� �� �����.
fn:unordered((1,2,3))
�� ��
5 ���� ���� � ���
�� ��
56 ���� �XQuery ����� � � ���
upper-case ��
fn:upper-case ��� ��� ���� �����.
���� fn:upper-case(source-string) ��
source-string
���� �� ��
source-string xs:string ��� ���� � ������.
���
source-string� � ���� ��� �� � ��� ���� ��� source-string���.
source-string� � ���� ��� �� � ��� ���� ���� ��� �� ���� ���
source-string���. ���� ���� �� �� ��� ��� � �� �����.
source-string� � ����� �� �� 0 �����.
�
�� ��� �� ‘Test literal 1’� ���� �����.
fn:upper-case(’Test literal 1’)
� 5 � �� �� 179
�� ‘TEST LITERAL 1’���.
�� ��
lower-case ��
xmlcolumn ��
db2-fn:xmlcolumn ��� �� ��� DB2 ������� ���� ���� ����.
���� db2-fn:xmlcolumn(string-literal) ��
string-literal
���� � �� �� �����. �� � ��� �, � �� �� �� ��
���� XML ��� �� ��� ��� ���. SQL �� � ����. SQL �
� �� ���� � �, CURRENT SCHEMA �� ����� ��� �� � ���
���� �����. string-literal ����� �����. string-literal ������� �� �
� ���� ��� ��� ��� ���.
���
�� string-literal� ���� ���� �(NULL)� �� XML � ��� ������. ��� ��
��� �� �� �, db2-fn:xmlcolumn � ���� �����.
��� �� �� ��� �� ��� �(NULL) � ��� �� �� �� ��� ���� �� ��
���� db2-fn:xmlcolumn ��� ���� ���� �� �� ��� �� �� ��� �� �� ��
� ����.
db2-fn:xmlcolumn ��� db2-fn:sqlquery ��� ����, � � ��� � � � � ����. �
� ��� �� ���� ���� ����. db2-fn:xmlcolumn ��� �� XQuery� �����
����� �����. DB2�� ��� � �� � ���� ������ db2-fn:xmlcolumn�
�� ����� ������. db2-fn:sqlquery ��� �� SQL� ����� ID� ���� ����
�����.
�� �� �� ����, � � � �����.
db2-fn:xmlcolumn(’SQLSCHEMA.TABLENAME.COLNAME’)db2-fn:sqlquery(’select colname from sqlschema.tablename’)
�
� ���� ��� �: �� ��� PRODUCT�� ���(� ���� SQL �� SAMPLE� �
�)� DESCRIPTION � XML� ��� XML �� ���� �����.
db2-fn:xmlcolumn(’SAMPLE.PRODUCT.DESCRIPTION’)
180 IBM DB2 XQuery ���
��� SQL ���� ��� �: �� ��� DB2� CURRENT SCHEMA �� ����� SAMPLE
� ����� � ��� � �� ��� � � �����.
db2-fn:xmlcolumn(’PRODUCT.DESCRIPTION’)
SQL �� ID� ��� �: �� ��� ″Student″ ���(�� CURRENT SCHEMA� ��� ��
� ��� ���)� ″Thesis″ ��� ��� �� ���� �����. ��� � � �� �� ���
� � ���� db2-fn:xmlcolumn ��� �� ��� �� �� ���� �� � ����.
v SQL �� ID� ��(���� ��):
db2-fn:xmlcolumn(’"Student"."Thesis"’)
v SQL �� ID �� �� ��� ��:
db2-fn:xmlcolumn(’Student.Thesis’)
��, db2-fn:sqlquery�� ���� ��� ��� � ��� �� � SQL �� ID� ��� �
��.
db2-fn:sqlquery(’select "Thesis" from "Student"’)
�� ��
3 ���� �XQuery ��� ���� DB2 ��� ��
�� ��
166 ���� �sqlquery ���
zero-or-one ��
fn:zero-or-one ��� �� ��� ��� ��� �� � ��� � �� �����.
���� fn:zero-or-one(sequence-expression) ��
sequence-expression
� ���� ��� �� ���
���
sequence-expression� ��� ��� ��� � ��� � sequence-expression� �����. �� �
�� ��� �����.
�
�� �� fn:zero-or-one ��� ���� �� $seq� ���� 1� ��� ��� � ��� ���
�.
let $seq := (5,10)return fn:zero-or-one($seq)
���� �� ��� � ��� ��� �����.
� 5 � �� �� 181
�� ��
5 ���� ���� � ���
�� ��
137 ���� �exactly-one ���
156 ���� �one-or-more ���
182 IBM DB2 XQuery ���
� 6 � ��
DB2 XQuery�� �� ��� ��� � ��� ����.
XQuery ��� ��� ��
� ����� �� DB2 XQuery ��� ��� ���� � � � �����.
� 34. XQuery �� ��� �� ��
��� �� �� ��
xs:float �� -3.4028234663852886e+38
�� +3.4028234663852886e+38
�� �� +1.1754943508222875e-38
�� �� -1.1754943508222875e-38
xs:double �� -1.7976931348623158e+308
�� +1.7976931348623158e+308
�� �� +2.2250738585072014e-308
�� �� +2.2250738585072014e-308
xs:decimal �� 10�� ��� 31��
xs:integer �� -9 223 372 036 854 775 808
�� +9 223 372 036 854 775 807
xs:nonPositiveInteger �� -9 223 372 036 854 775 808
�� 0
xs:negativeInteger �� -9 223 372 036 854 775 808
�� -1
xs:long �� -9 223 372 036 854 775 808
�� 9 223 372 036 854 775 807
xs:int �� -2 147 483 648
�� +2 147 483 647
xs:short �� -32 768
�� +32 767
xs:byte �� -128
�� +127
xs:nonNegativeInteger �� 0
�� +9 223 372 036 854 775 807
xs:unsignedLong �� 0
�� +9 223 372 036 854 775 807
xs:unsignedInt �� 0
�� 4 294 967 295
xs:unsignedShort �� 0
�� +65 535
© Copyright IBM Corp. 2006 183
� 34. XQuery �� ��� �� �� (��)
��� �� �� ��
xs:unsignedByte �� 0
�� +255
xs:positiveInteger �� +1
�� +9 223 372 036 854 775 807
� 35. XQuery ��, �� � ���� ��� �� ��
��� �� �� ��
xs:duration �� -P83333333333333Y3M11574074074DT1H46M39.999999S
�� P83333333333333Y3M11574074074DT1H46M39.999999S
xdt:yearMonthDuration �� -P83333333333333Y3M
�� P83333333333333Y3M
xdt:dayTimeDuration �� -P11574074074DT1H46M39.999999S
�� P11574074074DT1H46M39.999999S
xs:dateTime1, 2 �� 0001-01-01T00:00:00.000000Z
�� 9999-12-31T23:59:59.999999Z
xs:date1 �� 0001-01-01Z
�� 9999-12-31Z
xs:time2 �� 00:00:00Z
�� 23:59:59Z
xs:gDay1 �� 01Z
�� 31Z
xs:gMonth1 �� 01Z
�� 12Z
xs:gYear1 �� 0001Z
�� 9999Z
xs:gYearMonth1 �� 0001-01Z
�� 9999-12Z
xs:gMonthDay1 �� 01-01Z
�� 12-31Z
�: DB2 XQuery� �� ��� ���� ����.
�� ��
21 ���� � 2 � �� ����
�� ��
27 ���� �� ����
184 IBM DB2 XQuery ���
�� ��
�� ��� � ��� �� DB2 XQuery� ���� ��� ����.
�� ���� �� ��� 32672������.
�� �� �� ��� 2 097 152������.
�� ��
61 ���� �����
� 6 � �� 185
186 IBM DB2 XQuery ���
DB2 �� �����(PDF ��)
�� ������ IBM® Publications Center(www.ibm.com/shop/publications/order)� �� DB2 ��
��� �����.
����� � �� �� ��� ��� ���, �� �� �� ���� �� �� ��� �� �
����.
� �� �� ��� �� DB2 ����� ��� ��, DB2 Connect™ �� �� DB2 ��� ���
� ���, ������ ���� ����� �����.
� 36. DB2 �� ��
�� � � �� �� ��
�� ���: �� SA30-2857 �
�� ���: � SA30-2859 �
Administrative API Reference SC10-4231 �
�� SQL �� � SA30-2895 ���
Call Level Interface Guide and Reference,
Volume 1
SC10-4224 �
Call Level Interface Guide and Reference,
Volume 2
SC10-4225 �
Command Reference SC10-4226 ���
��� �� ���� �� � ��� SA30-2863 �
��� �� � ��� �� � ��� SA30-2860 �
ADO.NET � OLE DB ���� �
�
SA30-2866 �
Embedded SQL ���� �� SA30-2870 �
Java™ ���� �� SA30-2869 �
Perl � PHP ���� �� SA30-2867 ���
������ ���� �� ���� SA30-2868 �
Linux® � Windows®�� DB2 � � �
� ����
GA30-2875 �
��� ��� �� 1 SA30-2880 ���
��� ��� �� 2 SA30-2881 ���
�� ��� GA30-2876 �
Net Search Extender �� � ��� ��
�
�: � ��� �� HTML HTML ��
CD�� ��� ����.
SA30-3022 �
��� SA30-2858 �
Query Patroller �� � ��� ��� GA30-2865 �
DB2 Client � �� GA30-2877 ���
DB2 Server � �� GA30-2874 �
© Copyright IBM Corp. 2006 187
� 36. DB2 �� �� (��)
�� � � �� �� ��
Spatial Extender � Geodetic Data
Management Feature ��� ��� � �
��
SA30-3019 �
SQL ��� SA30-2871 �
SQL ���, �� 1 SA30-2871 �
SQL ���, �� 2 SA30-2873 �
��� ��� �� � ��� SA30-2862 �
�� �� ��� GA30-2864 ���
Visual Explain ��� SA30-3234 ���
��� � SA30-2882 �
XML Extender �� � ��� SA30-3020 �
XML ��� SA30-2861 �
XQuery ��� SA30-3021 �
� 37. DB2 Connect �� �� ��
�� � � �� �� ��
DB2 Connect ��� ��� SA30-2879 �
DB2 Connect Personal Edition � �� GA30-3199 �
DB2 Connect Server � �� GA30-2878 �
� 38. WebSphere Information Integration �� ��
�� � � �� �� ��
WebSphere® Information Integration:
Administration Guide for Federated
Systems
SC19-1001 �
WebSphere Information Integration:
ASNCLP Program Reference for
Replication and Event Publishing
SC19-1000 �
WebSphere Information Integration: ��
���� ��� ��� � ���
�� � �� ���
WebSphere Information Integration: SQL
�� �� � ���
SC19-1002 �
�: DB2 ��� ��� �� ��� � Fixpack �� �� ��� �����.
188 IBM DB2 XQuery ���
��� DB2 � ��
�� DB2 �� �, ���� �� � ����. (�� �� �� ��� ���� ����.)
���� �� ��� IBM ������ �� DB2 �� �� � ����. DB2 PDF �� CD�� �
� ��� � � �� � ����(�: DB2 ��� ���).
DB2 PDF �� CD� �� �� DB2 �� �� �� IBM� �� ���� �� � ����. �
��� ��� �� IBM Publications Center�� ���� �� �� �� ����. �� �� ��
���� �� ��� �� ���� ���� �� ��� IBM ������ �� DB2 �� ��
� ����. DB2 PDF �� CD� �� �� � �� �� � ����.
�: �� � ��� DB2 ��� DB2 �� ��(http://publib.boulder.ibm.com/infocenter/db2help/)�� �
������.
�� DB2 � ����:
1. �� �� �� ���� �� DB2 �� ���� �� � ��� ��� ���� IBM
Publications Center � ���(http://www.ibm.com/shop/publications/order)� �����. �� ��
��� ������ ��/��/��� � �� �� �� �� ����� �����.
2. �� IBM ������ �� DB2 �� ����� �� � ��� � ���� �� �� ��� �
�� �����.
a. IBM Worldwide Directory of Contacts(http://www.ibm.com/planetwide)
b. IBM Publications Center � ���(http://www.ibm.com/shop/publications/order). �� ��� �
� �� �� � ���� ������ ��/��/��� � ���. � ����� ″� ��
� ��″ ��� ������.
3. ��� �� �, ����� DB2 ��� ������.
4. ����� ����� �� �� � �� �� ������.
© Copyright IBM Corp. 2006 189
190 IBM DB2 XQuery ���
DB2 ��� �� ��
�� � �� �� � �� � ��� DB2 ��� ���� �� � ����.
�� ��� �� ����.
DB2 �
�� �� ��� DB2 �� �� ��� �� DB2 �� ��� �� � �� �� ���
�� � ����. ���� �� ��� �� ��� �� DB2 �� �� � ����, ��
� ���� ��� ���� ���� ��� �� �� � DB2 ��� ����� �� � �
� ��� ���� ��� �� �� ������ �� � ����.
DB2 �� � � ���
��� �� �, �� � � ��� �� � �� ���� ��� DB2 �� �� � ��
�� ������. �� �� ����� �� DB2 ��, TechNotes, APAR(Authorized Program
Analysis Report) �� � ��, Fixpack ��� ��� �� ��� ����. ��� �� �
�� ��� ��� �� �� ��� �� � ����.
DB2 �� �� � ���(http://www.ibm.com/software/data/db2/udb/support.html)� ������
�.
© Copyright IBM Corp. 2006 191
192 IBM DB2 XQuery ���
���
IBM � ���� � �� ��� ��, ��� �� �� ���� �� �� ����. �� ��
� �� �� � ���� �� ��� �� IBM ����� ������. � ��� IBM ��, ��
�� ���� ����� �� �� IBM ��, �� �� ����� �� � ��� �� ����
� ����. IBM� �� ���� ���� �� �, ���� ��� ��, �� �� ���� ��
�� �� ����. �� �IBM ��, �� �� ���� ��� �� � � � ���� �
����.
IBM � ��� ��� �� �� ��� �� ��� ���� ��� �� �� �� �� � ����.
� �� ����� �� ��� �� ���� � ���� � ����. ����� �� ���� �
��� ������.
135-270
����� ��� ��� 467-12, ������
�� ��.�.� ����
������
���: 080-023-8080
2 ���(DBCS) ��� �� ���� ��� �� IBM ������� ����� �� ��� �� ��
��� ���.
IBM World Trade Asia Corporation
Licensing
2-31 Roppongi 3-chome, Minato-ku
Tokyo 106, Japan
�� ��� ���� ��� ���� �� ���� ���� ����. IBM �� �� ���, �
� � �� ���� �� � �� ��� ��� ����(�, �� ��� ��) ����� �����
��� ��� ���� � �� ������� �����. �� ����� �� �� ��� ��� ��
��� ��� ����� ���� ���� � ��� ���� �� �� ����.
� ���� ����� ���� ���� ��� ��� �� � ����. � ��� ����� ���
�, ��� �� ��� �����. IBM � ��� ��� �� �/�� ��� �� ���� �
��� � �/�� �� � ����.
� ���� ���� �IBM� � ���� �� ��� ��� ���, �� ����� � � ����
����� �� � ����. �� � ���� ��� � IBM �� ��� ��� ���� �� � �
�� ���� � � ��� �� ��� ���.
IBM ��� ��� ���� �� � ��� ����� ���� ���� ��� ��� ��� ��
��� � � ����.
© Copyright IBM Corp. 2006 193
(i) ����� � � �� � ��(� �� ��) �� �� �� � (ii) ��� ��� �
� ��� ���� � ��� �� ��� ��� �� ���� ���� �� ��� ������.
135-270
����� ��� ��� 467-12, ������
�� ��.�.� ����
������
��� ��� �� ��(�� �, ��� �� �)� �� �� � ����.
� ��� ��� ����� �� �� � ��� �� �� �� �� ����� ��� ���
IBM� IBM �� ��, IBM �� ���� ��(IPLA) �� �� ��� ��� �� ��� ���
�.
� ��� ��� �� ���� ��� ���� ��� ����. ��� � �� ���� ���
� � �� �� � ����. �� ��� �� � ����� � � � � ���, ��� ���
��� ����� ���� �� ������ ���� ��� ����� �� � ����. ��, �
� ��� �� ��� � �� ���� � � � �� � ����. � �� ���� �� �
��� ���� �� ���� �� ���.
�IBM ��� �� ��� �� ��� ����, �� �� �� �� �� ����� � ����. IBM
��� ��� �IBM ��� ����� �����, � �� ��� � �� , �� �� ��
��� ���� � � ����. �IBM ��� � �� ���� �� ��� ����� ���
���.
IBM� ���� �� �� ��� �� ��� ��� ��� ���� ��� � ����.
� ���� ��� ���� ���� ���� �� � ���� �� ��� � ����. � ����
�� ���� ��� ���� � �, ��, �� � ��� �� ��� � ����. � �
� ��� ���, � ��� � � ��� ������ �� ���� ����.
���:
� ���� �� �� �� ������ ��� ��� ���� �� ��� � �� �����
� ����. ��� ��� �� ��� � ��� � �� ���� ���� ��� �
���(API)� ���� ����� ��, ��, � �� �� ���� �� ���� �� �� �
�� ��� ��� ��, �� � � � ����. ��� �� �� �� ����� ��
���� � ����. ��� IBM � �� ��� � , ��� � �� �� ���
�� ���� ����.
��� �� �� �� �� ��� � ���� ���� ��� �� � ��� ��� ����
���.
194 IBM DB2 XQuery ���
© (��� ���) (��). � ��� ��� IBM Corp.� �� ���� �����. © Copyright IBM
Corp. _ ��_. All rights reserved.
��
DB2 �� 9 �� ����� ���� ���� ��, �� � ��� � IBM(International Business
Machines) Corporation �� �� ��� �� �� �������. �� �� �� ���� ���� IBM
Corporation� ��� �� ��� http://www.ibm.com/legal/copytrade.shtml� ����.
�� ��� �� ��� �� �� ������, DB2 �� ����� �� ��� ��� ���� �
����.
Microsoft®, Windows, Windows NT® � Windows ��� �� �� �� ���� ���� Microsoft
Corporation� �����.
Intel®, Itanium®, Pentium® � Xeon™ �� �� �� ���� ���� Intel Corporation� ����
�.
Java � �� Java �� ��� �� �� �� ���� ���� Sun Microsystems, Inc.� �����.
UNIX®� �� �� �� ���� ���� Open Group� �������.
Linux� �� �� �� ���� ���� Linus Torvalds� �����.
�� ��, �� � ��� � ��� �� �� �������.
���� 195
196 IBM DB2 XQuery ���
IBM� ��
�� �� �� ��� IBM� ����� IBM Directory of Worldwide Contacts(http://www.ibm.com/
planetwide)� �����.
DB2 ��� �� ��� ��� ��� http://www.ibm.com/software/data/db2/� ������.
© Copyright IBM Corp. 2006 197
198 IBM DB2 XQuery ���
��
���, �� 6
�� ��, ��� � 21
��, �� � 55
��� �(QName)
� 15
��, �� 161
����� ��� �, ����� 26
�� ID 13
������� ��, �� �� 17
�� ����, ��� 55
����� ��� �, �� 23
��� ���, � �� 52
�����(setters), � � 47
�� ��� �, �� 24
����� ��� �, �� 23
������, ��� � 27
����� QName
�� 161
�� QName (��)
�� 15
Aabs �� 123
and ��� 84
anyAtomicType ��� � 30
anySimpleType ��� � 30
anyType ��� � 30
anyURI ��� � 30
avg �� 124
Bbase64Binary ��� � 30
boolean ��� � 31
boolean �� 125
boolean ��, �� 120
boundary-space � 48
byte ��� � 31
Cceiling �� 126
codepoints-to-string �� 127
compare �� 127
concat �� 128
construction � 49
contains �� 129
copy-namespace � 49
count �� 130
current-date �� 130
current-dateTime �� 131
current-time �� 131
DDB2 �� �� 119
DB2 XQuery ��
�� ��, �� 122
�� � 153
QName 158
© Copyright IBM Corp. 2006 199
DB2 XQuery �� (��)
QName ��, �� 122
abs 123
avg 124
boolean 125
boolean ��, �� 120
ceiling 126
codepoints-to-string 127
compare 127
concat 128
contains 129
count 130
current-date 130
current-dateTime 131
current-time 131
data 132
date ��, �� 121
dateTime 133
deep-equal 133
default-collation 135
distinct-values 135
empty 136
ends-with 137
exactly-one 137
exists 138
false 139
floor 139
implicit-timezone �� 140
in-scope-prefixes 141
index-of 141
insert-before 142
last 143
local-name 143
local-name-from-QName 144
lower-case 145
matches 145
max 147
min 148
name 149
namespace-uri 150
namespace-uri-for-prefix 151
namespace-uri-from-QName 152
node ��, �� 122
normalize-space 153
normalize-unicode 154
DB2 XQuery �� (��)
not 155
number 156
number ��, �� 120
one-or-more 156
position 157
remove 159
replace 159
resolve-QName 161
reverse 162
root 163
round 164
round-half-to-even 165
sequence ��, �� 121
sqlquery 3, 166
starts-with 167
string 168
string ��, �� 119
string-join 169
string-length 169
string-to-codepoints 170
subsequence 171
substring 172
substring-after 172
substring-before 173
sum 174
tokenize 175
translate 177
true 178
unordered 179
upper-case 179
xmlcolumn 3, 180
zero-or-one 181
DB2 XQuery, � 1
data �� 132
date ��� � 31
date ��� �, �� 24
date ��, �� 121
dateTime ��� � 32
dateTime �� 133
dayTimeDuration ��� � 33
decimal ��� � 34
deep-equal �� 133
default element/type namespace � 50
default function namespace � 51
200 IBM DB2 XQuery ���
default-collation �� 135
distinct-values �� 135
double ��� � 34
duration ��� � 35
duration ��� �, �� 24
EENTITY ��� � 36
empty �� 136
empty order � 52
ends-with �� 137
exactly-one �� 137
exists �� 138
FFLWOR ���
� 102
�� 102
� 111
for� let�
� 104
��� ����� 106
�� 107
�� � 107
for� 104
let�
�� 105
order by� 109
return� 111
where� 108
false �� 139
float ��� � 36
floor �� 139
for�
�� 104
GgDay ��� � 37
gMonth ��� � 37
gMonthDay ��� � 38
gYear ��� � 38
gYearMonth ��� � 39
HhexBinary ��� � 39
IID ��� � 39
IDREF ��� � 39
if-then-else ���
�� 114
implicit-timezone �� 140
in-scope-prefixes �� 141
index-of �� 141
insert-before �� 142
int ��� � 39
integer ��� � 40
Llanguage ��� � 40
last �� 143
let�
�� 105
local-name �� 143
local-name-from-QName �� 144
long ��� � 40
lower-case �� 145
Mmatches �� 145
max �� 147
min �� 148
NNCName ��� � 40
NMTOKEN ��� � 41
NOTATION ��� � 42
Name ��� � 40
name �� 149
namespace-uri �� 150
namespace-uri-for-prefix �� 151
namespace-uri-from-QName �� 152
negativeInteger ��� � 41
node-name �� 153
� 201
nonNegativeInteger ��� � 41
nonPositiveInteger ��� � 41
normalize-space �� 153
normalize-unicode �� 154
normalizedString ��� � 41
not �� 155
number �� 156
number ��, �� 120
Oone-or-more �� 156
or ��� 84
order by� 109
ordering mode � 52
Pposition �� 157
positiveInteger ��� � 42
QQName ��� � 42
QName �� 158
QName(��� �)
� 15
��, �� 161
Rremove �� 159
replace �� 159
resolve-QName �� 161
return� 111
reverse �� 162
root �� 163
round �� 164
round-half-to-even �� 165
Ssequence ��, �� 121
short ��� � 42
sqlquery �� 3, 166
starts-with �� 167
string ��� � 43
string �� 168
string ��, �� 119
string-join �� 169
string-length �� 169
string-to-codepoints �� 170
subsequence �� 171
substring �� 172
substring-after �� 172
substring-before �� 173
sum �� 174
Ttime ��� � 43
time ��� �, �� 24
timezone, implicit 140
token ��� � 43
tokenize �� 175
translate �� 177
true �� 178
UURI
� ���� � � � 91
unordered �� 179
unsignedByte ��� � 44
unsignedInt ��� � 44
unsignedLong ��� � 44
unsignedShort ��� � 44
untyped ��� � 44
untyped ��� �, �� 23
untypedAtomic ��� � 44
upper-case �� 179
Wwhere�
�� 108
XXML ���
DB2 �������� �� 2
XMLEXISTS �� 3
202 IBM DB2 XQuery ���
XMLQUERY �� 3
XMLTABLE �� 3
XQuery
� 1
�� 19
SQL�� �� 3
XQuery � XPath ��� �� 5
XQuery �� �� 119
xmlcolumn �� 3, 180
YyearMonthDuration ��� � 45
Zzero-or-one �� 181
�� 79
�
���� �� 56
� � �� 56
�� ���
�� 66
�� 66
� �� 68
�� � ��� �� 71
��� � ����� 96
��� �����
�� 86
�
�� 96
� 96
�� 101
�� ��� 100
�� �� �� 12
��
���� 48
�� 18
� � ������� 92
�� �� ��� 64
��
FLWOR ��� 102
�� 71
�� ��
XQuery 19
�� ��� 61
�� ���� 187
�� �� 119
��
ID 13
� 7, 9
�� �� 12
�� �� 9
��
�� 9
� 97
�� 13
�� 83
� 11
��� �� 76
� 10
� 13
��
� , � 101
��� ����� 101
�� 12
� ����� 101
�� 13
�� ���
�� 12
� 99
���
�� 11
� 98
�� ��� 69
��� �� 13
��� � 13
��� 84
��� ��
XQuery � XPath 5
��� �
��, �� 25
��, ����� 26
��, �� 23
��, �� 24
��, �� 23
date, time � duration, �� 24
untyped, �� 23
xdt:anyAtomicType 30
xdt:dayTimeDuration 33
� 203
��� � (��)
xdt:untyped 44
xdt:untypedAtomic 44
xdt:yearMonthDuration 45
xs:ENTITY 36
xs:ID 39
xs:IDREF 39
xs:NCName 40
xs:NMTOKEN 41
xs:NOTATION 42
xs:Name 40
xs:QName 42
xs:anySimpleType 30
xs:anyType 30
xs:anyURI 30
xs:base64Binary 30
xs:boolean 31
xs:byte 31
xs:date 31
xs:dateTime 32
xs:decimal 34
xs:double 34
xs:duration 35
xs:float 36
xs:gDay 37
xs:gMonth 37
xs:gMonthDay 38
xs:gYear 38
xs:gYearMonth 39
xs:hexBinary 39
xs:int 39
xs:integer 40
xs:language 40
xs:long 40
xs:negativeInteger 41
xs:nonNegativeInteger 41
xs:nonPositiveInteger 41
xs:normalizedString 41
xs:positiveInteger 42
xs:short 42
xs:string 43
xs:time 43
xs:token 43
xs:unsignedByte 44
xs:unsignedInt 44
��� � (��)
xs:unsignedLong 44
xs:unsignedShort 44
� 21
�� 59
�� 23
�� 23
�� � � 55
�� 59
��� 27
�� 183
��� � �� �� 21
��� 61
���
������� 86
�� ��
�� 9
� 97
�� �� 12
�� �� 63
�� ��� 61
�� � 191
�� ��
�� 191
���� ��
� 48
� � ������� 92
�� � 48
� � � ���� 94
� ��� 74
�� ���� 193
��
for� let��� � � 107
for�� 105
�� 63
�� � �� 59
�� ���
79
� 79
�� 83
�� 82
�� ��� 77
� � 69
�
copy-namespaces 49
204 IBM DB2 XQuery ���
� (��)
default element/type namespace � 50
��� �� � ���� 51
���� �� 48
�� 48
� �� 52
�� �� 52
� ���� 53
���� 49
� � 47
�
��� �����
�� 96
� ���� � 91
� 96
� �� 11
� � 68
�� ��� 115
��
����� 73
�� ��� 61
�� �� 73
���
��, �� 76
� 52
�� 5
��� 58
��� �� 60
� 74
��� � �� 5
��� ��� 73
��� �� 62
��� � 68
���
� 55
�
��� ����� 96
� � � ���� 94
� ����� 87
� �� 10
�
���� ��� 55
�� � ��� 27
�� 6
�� � 21
��� 58
�� 73
���� �� 63
�
��� � �� 23
� �� �� 21
� �� 59
� ��� 27
��� �� 60
� ����
��� �/� 50, 92
��� �� 91
� � 94
� 53
� � � 91
�� ��� 51
� ���� � 53
� ���� � � 91
� ��� 69
�� �� 82
��
XQuery 19
�� � 69
��� � 68
���� ��� � ���� 94
��� 114
�� ��� 70
��
� 189
��
� , � 101
�� ��, �� 18
��� ����� 101
� ����� 101
�� �� 12
� �����
�� 86
�
�� 87
��� �� 92
�� 101
�� ��� 99
�� ��� ��
�� 12
� 99
� 205
�� �� 109
�
�� ����� 68
�� �� 71
� ��
�� ����� 68
�� ��� 69
�� �� 71
��� ��� 117
�����
XML 86
��� � 96
��� � 96
��� �� 101
��� �� ��� 100
�� � 26
��� 86
�� �� 97
� � � ���� 94
�
�� 96
� ���� � � 91
� �
�� 87
� �� 101
� �� ��� 99
�� ��� 99
��� �� 98
���� �� ��� 64
��
�� 1
�� ��
XML ��� 2
���� �� 17
�� 18
��� ��
�� 11
� 98
���
FLWOR
� 102
�� 102
� 111
for� let�, � 104
for� let�, �� � 107
��� (��)
FLWOR (��)
for� let�, �� 107
for� let�, �� 106
for� 104
let� 105
order by� 109
return� 111
where� 108
� 55
� � �� 56
��
�� 66
�� 66
�� �� 71
��
� 61
�� 64
��� 61
�� �� 63
�� �� 63
��� �� 62
���� �� 64
�� �� 64
�� ��� �� 76
��� 84
�� ���� 55
� 74
�� � �� 59
��
79
� 79
�� 83
�� 82
�� 77
�� 73
��� 73
� 55
��� 58
� �� 59
��� �� 60
� ��� 74
�� 115
�� 114
�� 55
206 IBM DB2 XQuery ���
��� (��)
� 55
��� 117
�����
��� � 96
��� � 96
��� �� 101
��� �� ��� 100
�� �� 97
� � � ���� 94
�� 86
� ���� � � 91
� � 87
� �� 101
� �� ��� 99
�� ��� 99
��� �� 98
������� �� 86
� 75
��� � 55
���� � 55
���� ���� 55
� �
boundary-space � 48
construction � 49
copy-namespace � 49
default element/type namespace � 50
default function namespace � 51
empty order � 52
ordering mode � 52
�� 47
�� � 48
� ���� � 53
� ��� 75
��� � � �� �� � 69
� � � � 68
� � 68
��
XQuery ��� � 183
�� 185
��
DB2 XQuery
�� ��, �� 122
�� � 153
�� 119
�� 119
QName 158
QName ��, �� 122
abs 123
avg 124
boolean 125
boolean ��, �� 120
ceiling 126
codepoints-to-string 127
compare 127
concat 128
contains 129
count 130
current-date 130
current-dateTime 131
current-time 131
data 132
date ��, �� 121
dateTime 133
deep-equal 133
default-collation 135
distinct-values 135
empty 136
ends-with 137
exactly-one 137
exists 138
false 139
floor 139
implicit-timezone 140
index-of 141
ins-scope-prefixes 141
insert-before 142
last 143
local-name 143
local-name-from-QName 144
lower-case 145
matches 145
max 147
min 148
name 149
� 207
�� (��)
DB2 XQuery (��)
namespace-uri 150
namespace-uri-for-prefix 151
namespace-uri-from-QName 152
node ��, �� 122
normalize-space 153
normalize-unicode 154
not 155
number 156
number ��, �� 120
one-or-more 156
position 157
remove 159
replace 159
resolve-QName 161
reverse 162
root 163
round 164
round-half-to-even 165
sequence ��, �� 121
sqlquery 166
starts-with 167
string 168
string ��, �� 119
string-join 169
string-length 169
string-to-codepoints 170
subsequence 171
substring 172
substring-after 172
substring-before 173
sum 174
tokenize 175
translate 177
true 178
unordered 179
upper-case 179
xmlcolumn 180
zero-or-one 181
�� �� 64
208 IBM DB2 XQuery ���
���
SA30-3021-00