summaryrefslogtreecommitdiff
path: root/xsd/documentation/cxx/tree/manual/cxx-tree-manual.ps
diff options
context:
space:
mode:
Diffstat (limited to 'xsd/documentation/cxx/tree/manual/cxx-tree-manual.ps')
-rw-r--r--xsd/documentation/cxx/tree/manual/cxx-tree-manual.ps6630
1 files changed, 0 insertions, 6630 deletions
diff --git a/xsd/documentation/cxx/tree/manual/cxx-tree-manual.ps b/xsd/documentation/cxx/tree/manual/cxx-tree-manual.ps
deleted file mode 100644
index 2c43453..0000000
--- a/xsd/documentation/cxx/tree/manual/cxx-tree-manual.ps
+++ /dev/null
@@ -1,6630 +0,0 @@
-%!PS
-%%Title: C++/Tree Mapping User Manual
-%%Creator: html2ps version 1.0 beta5
-%%EndComments
-save
-2000 dict begin
-/d {bind def} bind def
-/D {def} d
-/t true D
-/f false D
-/FL [/Times-Roman
-/Times-Italic
-/Times-Bold
-/Times-BoldItalic
-/Courier
-/Courier-Oblique
-/Courier-Bold
-/Courier-BoldOblique
-/Helvetica
-/Helvetica-Oblique
-/Helvetica-Bold
-/Helvetica-BoldOblique] D
-/WF t D
-/WI 0 D
-/F 1 D
-/IW 471 F div D
-/IL 621 F div D
-/PS 791 D
-/EF [0 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 2 2] D
-/EZ [12 10 19 17 15 13 12 11 12 12 12 12 12 12 12 12 12 12 12 12 12 12 8 8] D
-/Ey [0 0 2 2 2 2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] D
-/EG [-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1] D
-/Tm [1 1 0.8 0.8 0.8 0.8 0.8 0.8 0 0 0 0 0 0 0.5 1 1 1 1 0 0 1.3 0 0] D
-/Bm [1 1 0.5 0.5 0.5 0.5 0.5 0.5 0 0 0 0 0 0 0.5 1 1 1 1 0 0 1 0 0] D
-/Lm [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 2 0 0 2 0 0 0] D
-/Rm [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0] D
-/EU [-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 0 0] D
-/NO f D
-/YY [[{()}{ h }][{ h }{()}][{()}{()}]] D
-/ZZ [[{ (April 2010) }{ Pn }][{ Pn }{ (April 2010) }][{ Ti(, v)join ME 0 get join }{ Ti(, v)join ME 0 get join }]] D
-/Ts EZ 0 get D
-/TU f D
-/Xp t D
-/AU f D
-/SN 0 D
-/Cf t D
-/Tp t D
-/Fe f D
-/TI 2 Ts mul D
-/Fm 14 D
-/xL 71 D
-/xR 71 D
-/yL 706 D
-/yR 706 D
-/Wl 471 F div D
-/Wr 471 F div D
-/hL 621 F div D
-/hR 621 F div D
-/FE {newpath Fm neg Fm M CP BB IW Fm add Fm L IW Fm add IL Fm add neg L CP BB
- Fm neg IL Fm add neg L closepath} D
-/LA {PM 0 eq{/IW Wl D /IL hL D}{/IW Wr D /IL hR D}ie /W IW D /LL W D /LS W D
- TU PM 0 eq and{IW 56 F div add SA{Sf div}if 0 translate}
- {PM 0 eq{xL yL}{xR yR}ie translate F SA{Sf mul}if dup scale
- CS CF FS Cf{CA CL get VC}if /Bb f D}ie 0 0 M
- TF not Tc or {Cf{gsave SA{1 Sf div dup scale}if Cb VC FE fill grestore}if}if}D
-/Pi 0 Ts mul D
-/SG [0.8 1 1] D
-/Ab 15 D
-/J 0 D
-/Tc t D
-/NH 6 D
-/Nf f D
-/Pa f D
-/LH 1.2 D
-/XR f D
-/Xr {/pN E D ( [p ) WB pN WB (] )WB} D
-/Db [16#FF 16#FF 16#FF] D
-/Dt [16#00 16#00 16#00] D
-/eA f D
-/Fi f D
-/bT f D
-/Lc t D
-/Dl [16#00 16#00 16#00] D
-/LX f D
-/Br 0.25 D
-/IA ([IMAGE]) D
-/DS {/PF f D()WB NL NP()pop RC ZF} D
-/Gb f D
-/Mb t D
-/Hc [16#00 16#00 16#00] D
-/Bl 3 D
-/MI -15.6 D
-/DX (DRAFT) D
-/Di 0 D
-/Tt 113.385826771654 D
-/Th { (
-) 2 Al()BR (
- ) 0 1 -1 H()4 FZ (C++/Tree Mapping User Manual) ES()EH (
- ) 0 1 -1 H ( ) EH (
- ) 0 1 -1 H ( ) EH (
- ) 0 1 -1 H ( ) EH (
- ) 0 1 -1 H ( ) EH (
- ) 0 1 -1 H ( ) EH (
- ) 0 1 -1 H ( ) EH (
- ) 0 1 -1 H ( ) EH (
-) Ea()BR (
- ) 0 P (Revision ) ME 0 get join(     April 2010)join EP (
- ) 0 P (Copyright © 2005-2010 CODE SYNTHESIS TOOLS CC) EP (
-
- ) 0 P (Permission is granted to copy, distribute and/or modify this
- document under the terms of the
- ) R0 2 A (GNU Free
- Documentation License, version 1.2) EA (; with no Invariant Sections,
- no Front-Cover Texts and no Back-Cover Texts.
- ) EP (
-
- ) 0 P (This document is available in the following formats:
- ) R1 2 A (XHTML) EA (,
- ) R2 2 A (PDF) EA (, and
- ) R3 2 A (PostScript) EA (.) EP()} D
-/tH {()0 1 -1 H (Table of Contents) EH()} D
-/FD 2 D
-/Dy 2 D
-/cD [16#F0 16#F0 16#F0] D
-/FW 0.6 D
-/FU [16#00 16#00 16#00] D
-/ET {/RM f D /A0 3 D /PN SN D /OU t D /Ou t D /W IW D /LL W D D1
- Ms not TP and{Ip}if /TF f D} D
-
-%-- End of variable part --
-/MySymbol 10 dict dup begin
- /FontType 3 D /FontMatrix [.001 0 0 .001 0 0 ] D /FontBBox [25 -10 600 600] D
- /Encoding 256 array D 0 1 255{Encoding exch /.notdef put}for
- Encoding (e) 0 get /euro put
- /Metrics 2 dict D Metrics begin
- /.notdef 0 D
- /euro 651 D
- end
- /BBox 2 dict D BBox begin
- /.notdef [0 0 0 0] D
- /euro [25 -10 600 600] D
- end
- /CharacterDefs 2 dict D CharacterDefs begin
- /.notdef {} D
- /euro{newpath 114 600 moveto 631 600 lineto 464 200 lineto 573 200 lineto
- 573 0 lineto -94 0 lineto 31 300 lineto -10 300 lineto closepath clip
- 50 setlinewidth newpath 656 300 moveto 381 300 275 0 360 arc stroke
- -19 350 moveto 600 0 rlineto -19 250 moveto 600 0 rlineto stroke}d
- end
- /BuildChar{0 begin
- /char E D /fontdict E D /charname fontdict /Encoding get char get D
- fontdict begin
- Metrics charname get 0 BBox charname get aload pop setcachedevice
- CharacterDefs charname get exec
- end
- end}D
- /BuildChar load 0 3 dict put /UniqueID 1 D
-end
-definefont pop
-
-/Cd {aload length 2 idiv dup dict begin {D} repeat currentdict end} D
-/EX {EC cvx exec} D
-/DU {} d
-/BB {pop pop}d
-/ie {ifelse} d
-/E {exch} d
-/M {moveto} d
-/R {rmoveto} d
-/L {lineto} d
-/RL {rlineto} d
-/CP {currentpoint} d
-/SW {stringwidth} d
-/GI {getinterval} d
-/PI {putinterval} d
-/Sg {setgray} d
-/LW {setlinewidth} d
-/S {dup () ne OU and{0 Co R AT 3 eq LB and HF not and A1 0 ne A2 0 ne or and
- {A2 0 32 A1 0 6 -1 roll awidthshow}{show}ie 0 Co neg R}{pop}ie
- OU PH 3 eq or{/Ms t D}if} D
-/U {OU{gsave CP currentfont /FontInfo get /UnderlinePosition get
- 0 E currentfont /FontMatrix get dtransform E pop add newpath M dup SW pop
- CJ 0 RL stroke grestore}if} D
-/B {OU Br 0 gt and{CP Ts neg Ts .33 mul R gsave 0 Sg
- CP newpath Ts Br mul 0 360 arc closepath UI 2 mod 0 eq{stroke}{fill}ie
- grestore M CP E Ts Br 1 add mul sub E BB /Ms t D}if}D
-/NP {Ms TP not or PA and OU and{TP{OR}if f1{mF k2 /mF E D /YC 0 D}if
- TP TU not PM 0 eq or and{showpage}if DU Ip TE not{LA}if 0.6 LW
- /CI 0 D /TP t D /Hs f D /hl 6 D /Hv 6 D /HI hi D /Ms f D}if Bs XO BO M} D
-/Np {LE sub CP E pop gt PL 0 eq and{NP}if}D
-/Ip {/PN PN 1 add D /Pn RM{1}{4}ie PN Ns D /PM PN SN sub 2 mod D} D
-/GP {E dup 3 -1 roll get PN 1 add 2 mod get dup type /integertype eq
- {get 0 get}{E pop}ie}d
-/Fc {dup 2 GP exec SW pop /S1 E D dup 1 GP exec SW pop /S2 E D 0 GP exec SW
- pop /S3 E D S1 0 gt{S2 2 mul S1 add S3 2 mul S1 add 2 copy lt{E}if pop}{0}ie
- S2 S3 add 2 copy lt{E}if pop IW .9 mul div dup 1 gt{1 E div}{pop 1}ie}D
-/OR {Df{Sd}if tp not{gsave SA{1 Sf div dup scale}if Fe{Cf{FU VC}if FW LW
- 1 setlinejoin FE stroke}if /YO {60 F div dup 40 gt{pop 40}if}D /cs CS D
- /cf CF D /CF 0 D /pf PF D /PF f D /Fn FN D /At AT D /AT 0 D /FN EF Hf 1 add
- get D Fz Fs FS ZZ Fc Fz mul Fs FS EU Hf 1 add get dup type /arraytype eq
- Cf and{VC}{pop 0 Sg}ie IW IL neg YO sub M ZZ 1 GP exec dup SW pop neg 0 R Sh
- 0 IL neg YO sub M ZZ 0 GP exec Sh ZZ 2 GP exec dup SW pop IW E sub 2 div
- IL neg YO sub M Sh Fz Fs FS NO{/AW IW Pn SW pop sub D AW 2 div IL neg YO sub
- S1 0 gt S2 AW .45 mul gt or S3 AW .45 mul gt or{Fz 2 mul sub}if M Pn Sh}if
- EU Hf get dup type /arraytype eq Cf and{VC}{pop 0 Sg}ie YY Fc /FN EF Hf get D
- Hz mul HS FS IW YO M YY 1 GP exec dup SW pop neg 0 R Sh 0 YO M YY 0 GP exec Sh
- YY 2 GP exec dup SW pop IW E sub 2 div YO M Sh /FN Fn D /AT At D t Pb XO SZ
- SL get neg R /PF pf D grestore /CF 0 D cs cf FS}if}D
-/Sh {dup () ne{CP Hz 4 div sub BB show CP CS add BB}{pop}ie}D
-/Pb {/OU E D /Ou OU D /PB t D 0 0 M Ba{/Sa save D /BP t D /Fl t D RC /PL 0 D
- /PH 0 D /W IW D /LE IL .7 mul D /EO 0 D SI ZF /YA 0 D /BO 0 D /C1 () D
- BA 0 Ts neg R Bb{Xl Yl Xh Yh}if Bb CP Sa restore M
- {/Yh E D /Xh E D /Yl E D /Xl E D}if /Fl t D}if
- BL /OU t D /HM f D /Ou t D /PB f D} D
-/Bs {/BP Ba not D}D
-/reencodeISO {
- dup dup findfont dup length dict begin{1 index /FID ne{D}{pop pop}ie}forall
- /Encoding ISOLatin1Encoding D currentdict end definefont} D
-/ISOLatin1Encoding [
-/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
-/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
-/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
-/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
-/space/exclam/quotedbl/numbersign/dollar/percent/ampersand/quoteright
-/parenleft/parenright/asterisk/plus/comma/hyphen/period/slash
-/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon
-/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N
-/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright
-/asciicircum/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m
-/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft/bar/braceright/asciitilde
-/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
-/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
-/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
-/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
-/.notdef/space/exclamdown/cent/sterling/currency/yen/brokenbar
-/section/dieresis/copyright/ordfeminine/guillemotleft/logicalnot
-/hyphen/registered/macron/degree/plusminus/twosuperior/threesuperior
-/acute/mu/paragraph/periodcentered/cedilla/onesuperior/ordmasculine
-/guillemotright/onequarter/onehalf/threequarters/questiondown
-/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla
-/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex
-/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis
-/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute
-/Thorn/germandbls/agrave/aacute/acircumflex/atilde/adieresis
-/aring/ae/ccedilla/egrave/eacute/ecircumflex/edieresis/igrave
-/iacute/icircumflex/idieresis/eth/ntilde/ograve/oacute/ocircumflex
-/otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex/udieresis
-/yacute/thorn/ydieresis
-] D
-[128/backslash 129/parenleft 130/parenright 141/circumflex 142/tilde
-143/perthousand 144/dagger 145/daggerdbl 146/Ydieresis 147/scaron 148/Scaron
-149/oe 150/OE 151/guilsinglleft 152/guilsinglright 153/quotesinglbase
-154/quotedblbase 155/quotedblleft 156/quotedblright 157/endash 158/emdash
-159/trademark]
-aload length 2 idiv 1 1 3 -1 roll{pop ISOLatin1Encoding 3 1 roll put}for
-/colorimage where{pop}{
- /colorimage {
- pop pop /Pr E D {/Cv Pr D /Gr Cv length 3 idiv string D 0 1 Gr length 1 sub
- {Gr E dup /i E 3 mul D Cv i get 0.299 mul Cv i 1 add get 0.587 mul add
- Cv i 2 add get 0.114 mul add cvi put}for Gr} image} D
-}ie
-/pdfmark where{pop}{userdict /pdfmark /cleartomark load put}ie
-WF{FL{reencodeISO D}forall}{4 1 FL length 1 sub{FL E get reencodeISO D}for}ie
-/Symbol dup dup findfont dup length dict begin
- {1 index /FID ne{D}{pop pop}ie}forall /Encoding [Encoding aload pop]
- dup 128 /therefore put D currentdict end definefont D
-
-/SF {/CS E D SZ SL CS put FO SL FN put /YI CS LH neg mul D dup ST cvs ( ) join
- CS ST cvs join C1 E join ( NF ) join /C1 E D CS NF /Wf WF FN 0 gt or D
- /BW Wf{( ) SW pop}{0}ie D}D
-/NF {/cS E D /cF E D cF 0 ge{FL cF get}{cF -1 eq{/Symbol}{/MySymbol}ie}ie
- findfont cS scalefont setfont} D
-/FS {CF or /CF E D FR SL CF put CF CF 0 ge{FN 4 mul add}if E SF} D
-/PC {SH /BP f D fin not GL not and{NL}if /HM t D /LL LS D} D
-/BS {/TX E D Wf{/fin f D /CW 0 D /LK 0 D /SC 0 D
- /RT TX D {RT ( ) search{/NW E D pop /RT E D /WH NW SW pop D CW WH add LL gt
- {TX SC LK SC sub 1 sub NN GI GL{SH cF cS OC
- 2 copy cS ne E cF ne or{NF}{pop pop}ie}{PC /CW WH BW add D}ie
- /SC LK D}
- {GL{JC}if
- /CW CW WH add BW add D /HM t D}ie /GL f D /Ph f D
- /LK LK NW length 1 add add D}{pop exit}ie}loop
- /fin t D TX SC LK SC sub GI SH RT () ne{GL not{CC}if}if
- /LC TX length D /WH RT SW pop D CW WH add Hy{HC SW pop add}if LL gt
- {RT GL{SH cF cS OC 2 copy cS ne E cF ne or{NF}{pop pop}ie
- Hy{/Ph t D}if /LL LS D}{NL /LL LS D SH}ie}
- {RT PC Hy{CC}if /Ph Ph Hy or D}ie RT () ne{/GL t D /HM t D}if}
- {TX SW pop LL le{TX SH}{/NW () D 0 2 TX length 1 sub
- {/CW E D TX 0 CW GI dup SW pop LL gt{pop NW SH /HM t D NL/LL W XO sub MR sub D
- /CW CW 2 sub NN D /TX TX CW TX length CW sub GI D TX BS exit}
- {/NW E D}ie}for}ie}ie /HM t D}D
-/CC {C0 length 0 gt{JC}if /C0 [C1 L1 YA YB Mf NS NB TB AF Bw] D
- /C1 () D /L0 L1 D /YA 0 D /YB 0 D /Mf 0 D /NS 0 D /NB 0 D}D
-/JC {C0 aload length 0 gt{pop pop pop NB add /NB E D NS add /NS E D
- dup Mf gt{/Mf E D}{pop}ie dup YB gt{/YB E D}{pop}ie
- dup YA gt{/YA E D}{pop}ie pop C1 join /C1 E D /C0 [] D}if}D
-/OC {C0 length 0 gt{C1 L1 L0 sub YA YB Mf NS NB TB AF Bw GL C0 aload pop
- /Bw E D /AF E D /TB E D /NB E D /NS E D /Mf E D /YB E D /YA E D /C0 [] D
- /L1 E D /C1 E D Ph{HC SH}if NL /GL E D /Bw E D /AF E D /TB E D /NB E D /NS E D
- /Mf E D /YB E D /YA E D /L1 E D /LL W L1 sub XO sub MR sub WH sub D /CW 0 D
- C1 E join /C1 E D}if}D
-/BT {/LB t D dup length string copy RS dup dup () ne E ( ) ne and
- {/CI 0 D /LS LL D /LL W L1 sub XO sub MR sub D BS}
- {dup ( ) eq{/GL f D}if dup () eq L1 0 eq or{pop}{SH /BP f D /Ph f D}ie}ie
- /LB f D} D
-/BL {CP E pop XO E M} D
-/NL {JC /GL f D /SK W XO sub MR sub L1 sub TB{Bw add}if D
- /YA LF{Mf HM Fl not and PF or{LH mul}if}{0 /LF t D}ie YA 2 copy lt{E}if pop D
- C1 () ne{/FB YB Mf SA{Sf mul}if 4 div 2 copy lt{E}if pop D}if Fl{/Ya YA D}if
- CP E pop YA sub YB sub LE neg lt Fl not and PB not and{NP}if NT TL BL
- OU PF not and PB or{/RE L1 TB{Bw sub}if
- W XO sub MR sub div YA YB add LE BO add div 2 copy lt{E}if pop D
- RE 1 gt{BL 1 RE div dup scale}if}if
- AT 2 le{SK AT mul 2 div YA neg R}if
- AT 3 eq{0 YA neg R TB{/NB NB 1 sub D /NS NS 1 sub D}if /NB NB 1 sub NN D
- /A3 NS 6 mul NB add D NS NB add 0 eq
- {/A1 0 D /A2 0 D}
- {NS 0 eq{/A1 SK NB div dup J gt{pop 0}if D /A2 0 D}{J A3 mul SK lt
- {/A1 J D /A2 SK J NB mul sub NS div dup Ab gt{/A1 0 D pop 0}if D}
- {/A1 SK A3 div D /A2 A1 6 mul D}ie}ie}ie /A1 A1 NN D /A2 A2 NN D}if
- AT 4 eq{0 YA neg R PH 2 le{PD 0 lt{/PD L1 D}if PD M1 gt{/M1 PD D}if
- L1 PD sub M2 gt{/M2 L1 PD sub D}if}{DV ID 1 sub get 0 ge{Lo 0 R}if}ie}if
- F0 cF ne Cs cS ne or{F0 Cs NF}if
- /ms Ms D /Ms f D CP FB sub
- C1 cvx exec XO EO sub L1 add TB{BW sub}if dup LM gt{/LM E D}{pop}ie
- PH 0 eq PH 4 eq or Ms and{HF not{/PO t D /AH t D}if
- BB CP YA add E AT 3 eq LB and{A1 sub}if TB{BW sub}if E BB}
- {pop pop}ie Ms HM PH 3 eq and or{/BP f D /Fl f D}if
- /Lo 0 D /L1 0 D /F0 cF D /Cs cS D BP not{0 YB NN neg R}if
- OU f1 and mF not and{k2 /f1 f D}if
- OU PF not and PB or{RE 1 gt{RE dup scale}if}if /Ms ms Ms or D
- /C1 AF{(Cp )}{()}ie D /YA 0 D /YB 0 D BL
- AT 4 eq LB not and PH 3 ge and
- {ID DV length lt{DV ID get dup 0 ge{DO E sub /Lo E D /L1 Lo D}{pop}ie
- /ID ID 1 add D}if}if /T t D CD{/LN LN 1 add D PD}if
- /PD -1 D /NS 0 D /NB 0 D /TB f D /Ph f D /Mf 0 D /HM f D} D
-/RS {/TM E D /CN 0 D TM{10 eq{TM CN ( ) PI}if /CN CN 1 add D}forall
- /CN 0 D /BK HM EN and{0}{1}ie D TM
- {dup 32 ne{TM CN 3 2 roll put /CN CN 1 add D /BK 0 D}
- {pop BK 0 eq{TM CN 32 put /CN CN 1 add D}if /BK 1 D}ie}forall
- TM 0 CN GI dup dup () ne E ( ) ne and
- {dup CN 1 sub get 32 eq{/EN f D}{/EN t D}ie}if} D
-/join {2 copy length E length add string dup 4 2 roll 2 index 0 3 index
- PI E length E PI}d
-/WR {(\n) search{dup () ne BP not or
- {Li 4 le CP E pop YI Li mul add LE add 0 lt and PL 0 eq and{NP}if
- SH NL pop /Li Li 1 sub D WR}{pop pop WR}ie}{SH}ie /CI 0 D /BP f D} D
-/SH {dup dup () ne E ( ) ne and PF or CS Mf gt and{/Mf CS D}if
- T not Wf and{( ) E join /T t D}if dup BP{/MF CS D}if
- AT 3 eq{2 copy length dup 0 gt{/NB E NB add D
- {( ) search{/NS NS 1 add D pop pop}{pop exit}ie}loop}{pop pop}ie}if
- CD PD 0 lt and{dup DC search{SW pop /PD E L1 add D pop pop}{pop}ie}if
- 0 Np dup SW pop L1 add /L1 E D dup () ne
- {C1 (\() join E join (\)) join AU AF and UF or Wf and{( U ) join}if
- sF{( s ) join}if ( S ) join
- /C1 E D dup length 1 sub get 32 eq /TB E D /Bw BW D}{pop pop}ie} D
-/BG {AI LG BC add add 0 eq} D
-/ON {OU{Ty AR AI NN get dup 1 add Ln Ns Ty 2 mod 0 eq{(. )}{(\) )}ie join
- dup SW pop neg 0 R CP E 0 lt{0 E M}{pop}ie CP BB show /Ms t D}if} D
-/Ln {AR AI 3 -1 roll put}D
-/SP {dup CI lt BP not and{dup CI sub 0 E R /CI E D}{pop}ie} D
-/BN {PF{WR /HM f D}{BT NL}ie} D
-/NN {dup 0 lt{pop 0}if} D
-/h {(h) HI ST cvs join cvx exec dup 1 get E Nf{0 get E join}{pop}ie} D
-/H {/fn FN D /Hi E 1 add D 1 sub /HL E D /H2 HL 2 add D /GS EZ H2 get D
- E Tm H2 get GS mul BE dup 0 gt{1 sub}{pop EG H2 get dup 0 lt{pop AT}if}ie NA
- WW Np /SL SL 1 add D /FN EF H2 get D GS Ey H2 get FS
- EU H2 get Sc Hs not HL Hl lt and Hs HL hl lt and or Hi 0 eq or
- {/HI Hi D /Hs t D /hl HL D /Hv HL D}if HL Hl lt{/hi Hi D}if
- Nf HI 0 gt and{(h) Hi ST cvs join cvx exec 0 get WB}if
- /HF t D /AH f D /PO f D} D
-/EH {Bm H2 get GS mul BE OA /SL SL 1 sub NN D /CF 0 D /FN fn D
- SZ SL get FR SL get FS /HF f D /GS Ts D ()Ec} D
-/P {E PF{WR}{PO{EP}{BN}ie Ts 4 mul Np AE not{Tm 0 get Ts mul neg SP}if
- dup 0 ge AH and{Pi Pd}if}ie 1 sub dup 0 lt{pop AV AL get}if /AT E D /PO t D} D
-/EP {PF{WR}{BN Ts 4 mul Np}ie AE not{Bm 0 get Ts mul neg SP}if
- /AT AV AL get D /PO f D} D
-/BE {E PO{EP}{BN}ie Ts 4 mul Np neg SP} D
-/HR {/Aw W EO sub D /RW E dup 0 gt{Aw mul}{neg}ie dup Aw gt{pop Aw}if D /RZ E D
- E BN Ts neg SP 1 sub 2 div Aw RW sub mul EO add CP E pop M PF{0 Ps neg R}if
- 0 Np OU{gsave RZ LW Cf{Hc VC}{0 Sg}ie CP BB RW 0 RL CP BB stroke grestore}if
- /CI 0 D /BP f D PF not{Ts neg SP}if /Ms t D} D
-/AD {I NL EG 14 get dup 0 lt{pop AT}if NA /AE t D Tm 14 get Ts mul neg SP
- Cf{EU 14 get dup -1 eq{pop CA CL get}if Sc}if} D
-/DA {BN ()ES OA /AE f D ()Ec Bm 14 get Ts mul neg SP} D
-/PR {/MW E D /Li E D Tm 1 get Ps mul BE 0 NA /FN Fp D /PF t D SI /SL SL 1 add D
- /CF 0 D Ps CS mul Ts div MW WC mul CS mul Ts div dup LL gt PL 0 eq and
- {LL div div}{pop}ie Ey 1 get FS CP E pop LE add YI neg div cvi dup Li lt
- AH and{4 lt YI Li mul 5 mul LE add 0 gt or PL 0 eq and{NP}if}{pop}ie
- EU 1 get Sc /GS Ps D}D
-/RP {WR NL () /PF f D SI /FN 0 D ES Bm 1 get Ps mul neg SP OA /GS Ts D} D
-/SI {/XO Lm 15 get BC NN mul Lm 16 get AI UI sub NN mul add
- Lm 17 get UI NN mul add Lm 20 get LG NN mul add Ts mul
- PF{Lm 1 get Ps mul add}if EO add D
- /MR Rm 15 get BC NN mul Rm 16 get AI UI sub NN mul add
- Rm 17 get UI NN mul add Rm 20 get LG NN mul add Ts mul
- PF{Rm 1 get Ps mul add}if D /LL W XO sub MR sub D} D
-/DT {/cC E D BN /LG LG 1 sub D SI /LG LG 1 add D WW 2 div Np BL} D
-/DD {WB Cc 0 eq cC 0 eq and L1 0 eq or Lm 20 get Ts mul L1 sub TB{BW add}if
- Ts 2 div lt or NL /LF E D SI BL /cC 0 D} D
-/DL {Dc LG Cc put /Cc E D BG{Tm 18 get Ts mul BE}{BN}ie /LG LG 1 add D BL} D
-/LD {BN LG 0 gt{/LG LG 1 sub D}if /Cc Dc LG get D SI
- BG{()Bm 18 get Ts mul BE}if BL} D
-/UL {BG{Tm 17 get Ts mul BE}{BN}ie NR AI NN 0 put /UI UI 1 add D
- /AI AI 1 add D SI BL} D
-/LU {BN /UI UI 1 sub D /AI AI 1 sub D SI BG{()Bm 17 get Ts mul BE}if BL} D
-/OL {E BG{Tm 16 get Ts mul BE}{BN}ie TR AI NN Ty put /Ty E D NR AI NN 1 put
- /AI AI 1 add D SI BL 1 Ln} D
-/LO {BN /AI AI 1 sub D /Ty TR AI get D SI BG{()Bm 16 get Ts mul BE}if BL} D
-/LI {E BN -1 SP /BP f D /CI 0 D 0 Np NR AI 1 sub NN get 1 eq
- {dup dup 0 gt E 4 le and{/Ty E D}{pop}ie
- /L1 L1 Ty AR AI NN get Ns SW pop XO sub dup 0 lt{pop 0}if add D ( ON )}
- {pop ( B )}ie C1 E join /C1 E D CS Mf gt{/Mf CS D}if BL} D
-/BQ {Tm 15 get Ts mul BE /BC BC 1 add D SI BL} D
-/QB {Bm 15 get Ts mul BE /BC BC 1 sub D SI BL} D
-/Al {E EP 1 sub dup 0 lt{pop AV AL get}if NA} D
-/Ea {EP OA} D
-/WB {PF{WR}{BT}ie} D
-/F1 {WB /FN 0 D CS 0 FS} D
-/F2 {WB /FN WI D CS 0 FS} D
-/HY {/Hy t D WB /Hy f D} D
-/YH {WB} D
-/A {/LT E D LT 1 eq{/RN E D}if /Lh E D WB /C1 C1 ( Cp ) join D
- Lc AF not and{Cl Sc}if /AF t D} D
-/EA {Lc AF and{Ec}{WB}ie TL Pa AF and Lh 0 ne and
- {( \() Lh join (\)) join /AF f D WB}if /AF f D} D
-/TL {C1 ( Tl ) apa /C1 E D} d
-/apa {AF OU and Lh 0 ne LT 1 eq or and{LT 1 eq{RN ( /) E ST cvs join}
- {(\() Lh join (\)) join}ie E join join}{pop}ie} d
-/Cp {/Xc CP /Yc E D D} D
-/SS {Cf{dup 0 ge{EU E get dup -1 eq{pop CA CL get}if}{pop CA CL get}ie Sc}
- {pop}ie SZ SL get /SL SL 1 add D} D
-/I {WB 8 SS 1 FS} D
-/EM {WB 8 SS /CF CF 1 xor D 0 FS} D
-/BD {WB 9 SS 2 FS} D
-/TT {WB 10 SS /FN Fp D 0 FS} D
-/KB {WB 11 SS /FN Fp D 2 FS} D
-/CT {WB 12 SS 1 FS} D
-/SM {WB 13 SS /FN Fp D 0 FS} D
-/Q {/QL QL 1 add D QO QL 2 mod get La get join WB} D
-/EQ {QC QL 2 mod get La get join WB /QL QL 1 sub D} D
-/RO {WB -1 SS /CF 0 D 0 FS} D
-/SY {WB -1 SS -1 FS} D
-/MY {WB -1 SS -2 FS} D
-/ES {WB /SL SL 1 sub NN D /CF 0 D /FN FO SL get D SZ SL get FR SL get FS ()Ec}D
-/FZ {3 sub 1.2 E exp GS mul E WB TL /C1 C1 ( Cp ) join D /SL SL 1 add D 0 FS} D
-/Ef {WB TL ()ES /C1 C1 ( Cp ) join D} D
-/BZ {dup /Bf E D FZ}D
-/Sc {dup -1 ne Cf and{/CL CL 1 add D dup 0 eq{pop [0 0 0]}if
- dup CA E CL E put VS ( VC ) join C1 E join /C1 E D}{pop}ie} D
-/Ec {WB Cf{/CL CL 1 sub NN D CA CL get VS ( VC ) join C1 E join /C1 E D}if} D
-/VS {dup type /arraytype eq{([) E {ST cvs join ( ) join}forall (]) join}if} D
-/VC {{255 div}forall setrgbcolor} D
-/Sl {dup type /integertype ne{Ds}if /La E D WB}d
-/UN {WB /UF t D} D
-/NU {WB /UF f D} D
-/SE {WB /sF t D} D
-/XE {WB /sF f D} D
-/sM {/C1 C1 ( k1 ) join D}d
-/eM {/C1 C1 ( k2 ) join D}d
-/k1 {/YC CP E pop Ts add D /mF t D /f1 t D}d
-/k2 {gsave 3 LW -9 CP E pop Ts 0.2 mul sub M -9 YC L stroke grestore /mF f D}d
-/Ac {/AC E D WB}d
-/Ca {eA{( \()join AC join(\) )join}if WB}d
-/s {OU{gsave 0 CS .25 mul R dup SW pop CJ 0 RL stroke grestore}if}D
-/CJ {AT 3 eq LB and{E dup dup length 1 sub A1 mul E
- {( ) search{pop pop E A2 add E}{pop exit}ie}loop 3 -1 roll add
- W CP pop sub 2 copy gt{E}if pop}if}D
-/So {/Co E D} D
-/SO {C1 Yo ST cvs join ( So ) join /C1 E D (j) SW pop 2 div Pd} D
-/Se {E WB CS E div Pd}D
-/Pd {dup type /stringtype eq{SW pop}if dup /L1 E L1 add D
- ST cvs ( 0 R ) join C1 E join /C1 E D} D
-/Sp {0.35 CO} D
-/Sb {-0.2 CO} D
-/CO {OV Io Yo put /Yo E CS mul Yo add D /Io Io 1 add D -1.5 Io mul 3 add FZ SO
- CS Yo add dup YA gt{/YA E D}{pop}ie
- Yo neg dup YB gt{/YB E D}{pop}ie} D
-/Es {ES /Io Io 1 sub NN D /Yo OV Io get D SO} D
-/SB {/N2 0 D 0 1 NI{/N E D{IX N2 get 0 lt{/N2 N2 1 add D}{exit}ie}loop
- /K WS N get FC N get mul D /NY AY N2 get D /BV NY array D
- 0 1 NY 1 sub{/TM K string D currentfile TM readhexstring pop pop BV E TM put}
- for BM N BV put /N2 N2 1 add D}for} D
-/IC [{/MA E D /MB 0 D}{2 div /MA E D /MB MA D}{/MB E CS sub D /MA CS D}
- {pop /MA YS AB mul D /MB 1 AB sub YS mul D}{pop /MA 0 D /MB 0 D}] D
-/IP {BV N get /N N 1 add D} D
-/II {/K E D IX K get 0 lt{/EC E D}if /TY E D
- TY 4 eq{/Y E D /X E D}if TY 3 eq{/AB E D}if
- /XW AX K get D /YW AY K get D /IS SG IT K get get D /XS XW IS mul D
- /YS YW IS mul D YS IC TY get exec /MA MA Fl not{3 add}if D} D
-/IM {II /ty TY D /xs XS D /ys YS D /ya YA D /yb YB D /ma MA D /mb MB D /k K D
- /ec EC D /BP f D /CI 0 D WB TL L1 xs add dup XO add MR add W gt
- {pop /ma ma Fl{3 add}if D NL /YA ma D /YB mb D /YS ys D /L1 xs D}
- {/L1 E D ma YA gt{/YA ma D}if mb YB gt{/YB mb D}if}ie /TB f D
- OU{CP E pop YS sub LE neg lt Fl not and PB not and{NP /YA ma D /YB mb D}if
- /BP f D ty ST cvs ( ) join IX k get 0 lt{(\() join ec join (\) ) join}if
- k ST cvs join ty 3 eq{AB ST cvs ( ) join E join}if
- ty 4 eq{X ST cvs ( ) join Y ST cvs join ( ) join E join}if C1 E join
- ( DI ) join FP 2 eq FP 1 eq AF and or{( FM ) join}if
- ( Il Cp ) apa /C1 E D /EN f D}if /HM t D /T f D} D
-/DI {II /Xc CP /Yc E D D /YN YW neg D /HM t D /CI 0 D /K2 IX K get D gsave
- TY 4 eq{OX X IS mul add OY FY add YS sub Y IS mul sub}
- {/FY YS D CP MB sub 2 copy /OY E D /OX E D}ie
- translate K2 0 ge{/DP AZ K2 get D /BV BM K2 get D XS YS scale /N 0 D XW YW DP
- [XW 0 0 YN 0 YW] {IP} FC K2 get 1 eq{image}{f 3 colorimage}ie}
- {EX}ie grestore XS 0 R /Ms t D} D
-/FM {gsave 0 Sg CP MB sub translate XS neg 0 M 0 YS RL XS 0 RL 0 YS neg RL
- XS neg 0 RL stroke grestore} D
-/NA {/AT E D /AL AL 1 add D AV AL AT put} D
-/OA {AL 0 gt{/AL AL 1 sub D /AT AV AL get D}if} D
-/D1 {/BR {CP E pop E BN Mb{CP E pop eq{0 YI R}if}{pop}ie} D
- /Sn {OU{C1 E ST cvs join ( Ld ) join /C1 E D}{pop}ie} D} D
-/D1 {/BR {BN} D /Sn {OU {C1 E ST cvs join ( Ld ) join /C1 E D} {pop} ie} D} D
-/TC {/TF t D /ML 0 D HN{SW pop dup ML gt{/ML E D}{pop}ie}forall NP /RM RM not D
- RC /OU Tc D Ep /PN 0 D Ms not TP and{Ip}if /W IW ML sub Ts sub D
- /A0 0 D TH{/BR {( ) join BT} D /Sn {pop} D /Au () D}if} D
-/TN {0 eq{E EA PF HF or not XR and{HN E get Xr}{pop}ie}
- {OU{Tn 0 ge{() BN}if /Tn E D}{pop}ie WB}ie} D
-/NT {OU LB not and Tn 0 ge and{PL 0 eq{Ms not{CS CF FS}if CP dup
- /y E YA sub D W 9 sub CS -1.8 mul XO L1 add 2 add{y M (.) show}for
- HN Tn get dup SW pop IW E sub y M show CP BB M}if /Tn -1 D}if} D
-/Ld {/DN E D HN DN Pn put [/View [/XYZ -4 Fl{PS}{CP YA add US E pop}ie null]
- /Dest DN ST cvs cvn /DEST pdfmark} D
-/C {ND 1 eq{1 sub}if TI mul /XO E D NL Nf not{pop()}if 0 3 -1 roll 1 A} D
-/OP {BP not{NP}if PN 2 mod 0 eq{/Ms t D NP}if}D
-/Ep {Xp PN 2 mod 0 eq and OU and{/Pn (-) D showpage /PM 1 D LA}if}D
-/Dg [73 86 88 76 67 68 77] D
-/Rd [0 [1 1 0][2 1 0][3 1 0][2 1 1][1 1 1][2 2 1][3 3 1][4 4 1][2 1 2]] D
-/Ns {/m E D /c E 32 mul D /j m 1000 idiv D /p j 12 add string D
- c 96 le m 0 gt and{c 32 le {/i 0 D /d 77 D /l 100 D /m m j 1000 mul sub D
- j -1 1 {pop p i d c add put /i i 1 add D}for
- 4 -2 0 {/j E D /n m l idiv D /m m n l mul sub D /d Dg j get D
- n 0 gt {/x Rd n get D x 0 get -1 1 {pop p i d c add put /i i 1 add D}for
- p i x 1 get sub Dg x 2 get j add get c add put}if /l l 10 idiv D
- }for p 0 i GI}
- {/i ST length 1 sub D m {1 sub dup 0 ge{dup 26 mod c add 1 add
- ST i 3 -1 roll put 26 idiv dup 0 eq{pop exit}if}if /i i 1 sub D}loop
- ST i ST length i sub GI}ie}
- {m p cvs}ie} D
-/US {matrix currentmatrix matrix defaultmatrix matrix invertmatrix
- matrix concatmatrix transform} D
-/GB {Gb{US}if}D
-/Tl {/Rn E D Xc CP pop ne{
- [/Rect [Xc 1 sub Yc cS 0.25 mul sub GB CP E 1 add E cS 0.85 mul add GB]
- /Subtype /Link /Border [0 0 Cf Lc and LX and AU or{0}{1}ie] Rn type
- /nametype eq {/Dest Rn}{/Action [/Subtype /URI /URI Rn] Cd}ie
- /ANN pdfmark}if} D
-/Il {/Rn E D [/Rect [Xc Yc GB Xc XS add Yc YS add GB] /Subtype /Link
- /Border [0 0 0] Rn type /nametype eq{/Dest Rn}
- {/Action [/Subtype /URI /URI Rn] Cd}ie /ANN pdfmark} D
-/XP {[{/Z Bz 2 div D Z 0 R Z Z RL Z neg Z RL Z neg Z neg RL Z Z neg RL
- Fi cH 1 eq and{fill}if} {Bz 0 RL 0 Bz RL Bz neg 0 RL 0 Bz neg RL
- Fi cH 1 eq and{fill}if} {0 -5 R Bz 0 RL 0 21 RL Bz neg 0 RL 0 -21 RL}]} D
-/MS {/Sm E D WB}D
-/O {BN()0 Sm BX} D
-/BX {/Bt E D Bt 2 lt{/Ch E D CS 0.8 mul}{11 mul}ie W XO sub MR sub
- 2 copy gt{E}if pop /HZ E D Bt 2 eq{Fi not{pop()}if ( )E join /Ft E D TT
- /PF t D /MW 1 D /Li 1 D /Fw Ft SW pop D Fw HZ gt{/HZ Fw 8 add D}if
- HZ ST cvs( )join}{WB Ch ST cvs( )join}ie L1 HZ add XO add MR add W gt{NL}if
- Bt 2 eq{Ft ES Fw neg HM{CS sub}if Pd}if Bt ST cvs join( Bx )join
- Bt 2 eq HM and{CS Pd}if C1 E join /C1 E D /L1 L1 HZ add D /T f D
- ( ) Pd /PF f D Bt 2 lt{YA CS .8 mul lt{/YA CS .8 mul D}if}
- {YB 5 lt{/YB 5 D}if YA 21 lt{/YA 21 D}if}ie /CI 0 D} D
-/Bx {dup 2 eq{E /Bz E D}{E /cH E D /Bz CS .8 mul D}ie
- OU {gsave 0 Sg XP E get exec stroke grestore}{pop}ie Bz 0 R /Ms t D}D
-/SD {FD 4 mul Dy add DZ NF newpath 0 0 M DX t charpath pathbbox
- 3 -1 roll sub /DY E D E dup /X1 E D sub WM mul WX DY mul add WM DG mul E div
- /DF E D /DR WX DF mul DY mul WM div 2 div D} d
-/Sd {gsave 0 IL Di mul neg translate IL IW atan Di 0 eq{neg}if rotate
- FD 4 mul Dy add DZ NF DR X1 sub DY 2 div neg M cD VC DX show grestore} d
-/Pt {/tp t D Tp{NP /Pn (TP) D 0 Tt neg R Th BN NP Ep ET RC ZF}if /tp f D} D
-/RC {/AI 0 D /LG 0 D /BC 0 D /UI 0 D /PF f D /Cc 0 D /cC 0 D /Dc 10 array D
- /NR [0 1 9{pop 0}for] D /La Ds D /AR 10 array D /TR 10 array D /AV 30 array D
- SI /AL -1 D /AT A0 D AT NA /OV 9 array D /Yo 0 D /Co 0 D /Io 0 D /Hy f D
- /Ph f D /CL -1 D Ct Sc}D
-/ZF {/FR [0 1 30{pop 0}for] D /SZ [0 1 30{pop 0}for] D /FO [0 1 30{pop 0}for] D
- /SL 0 D /CF 0 D /FN 0 D 0 Ts SF}D
-/QO [[(\234)(\233)(\253\240)(\232)(\273)(\253)][(')(`)(\253\240)(\231)(\273)(\253)]] D
-/QC [[(\234)(\234)(\240\273)(\233)(\253)(\273)][(')(')(\240\273)(`)(\253)(\273)]] D
-/Hf EF length 2 sub D
-/Hz EZ Hf get D
-/HS Ey Hf get D
-/Fz EZ Hf 1 add get D
-/Fs Ey Hf 1 add get D
-/LE IL D
-/Ps EZ 1 get D
-/Fp EF 1 get D
-/XO 0 D
-/YI 0 D
-/CI 0 D
-/FP 0 D
-/WW Ts 7 mul D
-/Mf 0 D
-/YA 0 D
-/YB 0 D
-/Cs Ts D
-/GS Ts D
-/F0 0 D
-/NS 0 D
-/NB 0 D
-/N 0 D
-/C0 [] D
-/C1 () D
-/Lo 0 D
-/L1 0 D
-/LM 0 D
-/PH 0 D
-/EC 0 D
-/Lh 0 D
-/LT 0 D
-/CH 1 string D
-/ST 16 string D
-/CA 9 array D
-/HC (\255) D
-/HM f D
-/PF f D
-/EN f D
-/TB f D
-/UF f D
-/sF f D
-/AE f D
-/AF f D
-/BP t D
-/CD f D
-/PA t D
-/GL f D
-/T t D
-/HF f D
-/AH f D
-/SA f D
-/PB f D
-/f1 f D
-/mF f D
-/OX 0 D
-/OY 0 D
-/FY 0 D
-/EO 0 D
-/FB 0 D
-/PL 0 D
-/Bw 0 D
-/PD -1 D
-/TP f D
-/tp f D
-/TH t D
-/Ty 4 D
-/Tn -1 D
-/Fl t D
-/LB t D
-/PM 1 D
-/Ms f D
-/Ba f D
-/Bb f D
-/Hl 3 D
-/hl 6 D
-/Hv 6 D
-/Hs f D
-/HI 0 D
-/hi 0 D
-/PO t D
-/TE f D
-/LF t D
-/BO 0 D
-/Sm 1 D
-/Bf 3 D
-/A1 0 D
-/A2 0 D
-/Ds 1 D
-/QL -1 D
-/Cb Db D
-/Ct Dt D
-/Cl Dl D
-[/Creator (html2ps version 1.0 beta5) /Author () /Keywords (xsd, xml, schema, c++, mapping, data, binding, tree, serialization, guide, manual, examples) /Subject ()
- /Title (C++/Tree Mapping User Manual) /DOCINFO pdfmark
-/ND 1 D
-/HN [(1) (1) (1) (1) (1) (1) (1) (2) (2) (2) (3) (3) (3) (4) (5) (5) (5) (5)
-(6) (6) (7) (??) (9) (10) (11) (11) (12) (14) (17) (18) (19) (21) (22) (23)
-(24) (24) (25) (26) (27) (28) (28) (30) (31) (31) (35) (35) (35) (37) (39)
-(43) (45) (46) (48) (50) (50) (53) (54) (56) (59) (64) (69) (69) (72) (72)
-(73) (75) (76) (76) (77) (78) (78) (78) (79) (79) (80) (80) (80) (81) (81)
-(83) (83) (85) (86) (86) (87) (87) (87) (88) (89) (90) (90) (92) (93) (??)
-(1) (1) (1) (1) (2) (2) (2) (3) (3) (3) (4) (5) (5) (5) (5) (6) (6) (7)
-(9) (10) (11) (11) (12) (14) (17) (18) (19) (21) (22) (23) (24) (24) (25)
-(26) (27) (28) (28) (30) (31) (31) (35) (35) (35) (37) (39) (43) (45) (46)
-(48) (50) (50) (53) (54) (56) (59) (64) (69) (69) (72) (72) (73) (75) (76)
-(76) (77) (78) (78) (78) (79) (79) (80) (80) (80) (81) (81) (83) (83) (85)
-(86) (86) (87) (87) (87) (88) (89) (90) (90) (92) (93)] D
-/h0 [()(Table of Contents)] D
-/h1 [(1\240\240)(Preface)] D
-/h2 [(1.1\240\240)(About This Document)] D
-/h3 [(1.2\240\240)(More Information)] D
-/h4 [(2\240\240)(1 Introduction)] D
-/h5 [(3\240\240)(2 C++/Tree Mapping)] D
-/h6 [(3.1\240\240)(2.1 Preliminary Information)] D
-/h7 [(3.1.1\240\240)(2.1.1 Identifiers)] D
-/h8 [(3.1.2\240\240)(2.1.2 Character Type and Encoding)] D
-/h9 [(3.1.3\240\240)(2.1.3 XML Schema Namespace)] D
-/h10 [(3.1.4\240\240)(2.1.4 Anonymous Types)] D
-/h11 [(3.2\240\240)(2.2 Error Handling)] D
-/h12 [(3.2.1\240\240)(2.2.1 xml_schema::duplicate_id)] D
-/h13 [(3.3\240\240)(2.3 Mapping for import and include)] D
-/h14 [(3.3.1\240\240)(2.3.1 Import)] D
-/h15 [(3.3.2\240\240)(2.3.2 Inclusion with Target Namespace)] D
-/h16 [(3.3.3\240\240)(2.3.3 Inclusion without Target Namespace)] D
-/h17 [(3.4\240\240)(2.4 Mapping for Namespaces)] D
-/h18 [(3.5\240\240)(2.5 Mapping for Built-in Data Types)] D
-/h19 [(3.5.1\240\240)(2.5.1 Inheritance from Built-in Data Types)] D
-/h20 [(3.5.2\240\240)(2.5.2 Mapping for anyType)] D
-/h21 [(3.5.3\240\240)(2.5.3 Mapping for anySimpleType)] D
-/h22 [(3.5.4\240\240)(2.5.4 Mapping for QName)] D
-/h23 [(3.5.5\240\240)(2.5.5 Mapping for IDREF)] D
-/h24 [(3.5.6\240\240)(2.5.6 Mapping for base64Binary and hexBinary)] D
-/h25 [(3.6\240\240)(2.5.7 Time Zone Representation)] D
-/h26 [(3.7\240\240)(2.5.8 Mapping for date)] D
-/h27 [(3.8\240\240)(2.5.9 Mapping for dateTime)] D
-/h28 [(3.9\240\240)(2.5.10 Mapping for duration)] D
-/h29 [(3.10\240\240)(2.5.11 Mapping for gDay)] D
-/h30 [(3.11\240\240)(2.5.12 Mapping for gMonth)] D
-/h31 [(3.12\240\240)(2.5.13 Mapping for gMonthDay)] D
-/h32 [(3.13\240\240)(2.5.14 Mapping for gYear)] D
-/h33 [(3.14\240\240)(2.5.15 Mapping for gYearMonth)] D
-/h34 [(3.15\240\240)(2.5.16 Mapping for time)] D
-/h35 [(3.16\240\240)(2.6 Mapping for Simple Types)] D
-/h36 [(3.16.1\240\240)(2.6.1 Mapping for Derivation by Restriction)] D
-/h37 [(3.16.2\240\240)(2.6.2 Mapping for Enumerations)] D
-/h38 [(3.16.3\240\240)(2.6.3 Mapping for Derivation by List)] D
-/h39 [(3.16.4\240\240)(2.6.4 Mapping for Derivation by Union)] D
-/h40 [(3.17\240\240)(2.7 Mapping for Complex Types)] D
-/h41 [(3.17.1\240\240)(2.7.1 Mapping for Derivation by Extension)] D
-/h42 [(3.17.2\240\240)(2.7.2 Mapping for Derivation by Restriction)] D
-/h43 [(3.18\240\240)(2.8 Mapping for Local Elements and Attributes)] D
-/h44 [(3.18.1\240\240)(2.8.1 Mapping for Members with the One Cardinality Class)] D
-/h45 [(3.18.2\240\240)(2.8.2 Mapping for Members with the Optional Cardinality Class)] D
-/h46 [(3.18.3\240\240)(2.8.3 Mapping for Members with the Sequence Cardinality Class)] D
-/h47 [(3.19\240\240)(2.9 Mapping for Global Elements)] D
-/h48 [(3.19.1\240\240)(2.9.1 Element Types)] D
-/h49 [(3.19.2\240\240)(2.9.2 Element Map)] D
-/h50 [(3.20\240\240)(2.10 Mapping for Global Attributes)] D
-/h51 [(3.21\240\240)(2.11 Mapping for xsi:type and Substitution Groups)] D
-/h52 [(3.22\240\240)(2.12 Mapping for any and anyAttribute)] D
-/h53 [(3.22.1\240\240)(2.12.1 Mapping for any with the One Cardinality Class)] D
-/h54 [(3.22.2\240\240)(2.12.2 Mapping for any with the Optional Cardinality Class)] D
-/h55 [(3.22.3\240\240)(2.12.3 Mapping for any with the Sequence Cardinality Class)] D
-/h56 [(3.22.4\240\240)(2.12.4 Mapping for anyAttribute)] D
-/h57 [(3.23\240\240)(2.13 Mapping for Mixed Content Models)] D
-/h58 [(4\240\240)(3 Parsing)] D
-/h59 [(4.1\240\240)(3.1 Initializing the Xerces-C++ Runtime)] D
-/h60 [(4.2\240\240)(3.2 Flags and Properties)] D
-/h61 [(4.3\240\240)(3.3 Error Handling)] D
-/h62 [(4.3.1\240\240)(3.3.1 xml_schema::parsing)] D
-/h63 [(4.3.2\240\240)(3.3.2 xml_schema::expected_element)] D
-/h64 [(4.3.3\240\240)(3.3.3 xml_schema::unexpected_element)] D
-/h65 [(4.3.4\240\240)(3.3.4 xml_schema::expected_attribute)] D
-/h66 [(4.3.5\240\240)(3.3.5 xml_schema::unexpected_enumerator)] D
-/h67 [(4.3.6\240\240)(3.3.6 xml_schema::expected_text_content)] D
-/h68 [(4.3.7\240\240)(3.3.7 xml_schema::no_type_info)] D
-/h69 [(4.3.8\240\240)(3.3.8 xml_schema::not_derived)] D
-/h70 [(4.3.9\240\240)(3.3.9 xml_schema::no_prefix_mapping)] D
-/h71 [(4.4\240\240)(3.4 Reading from a Local File or URI)] D
-/h72 [(4.5\240\240)(3.5 Reading from std::istream)] D
-/h73 [(4.6\240\240)(3.6 Reading from xercesc::InputSource)] D
-/h74 [(4.7\240\240)(3.7 Reading from DOM)] D
-/h75 [(5\240\240)(4 Serialization)] D
-/h76 [(5.1\240\240)(4.1 Initializing the Xerces-C++ Runtime)] D
-/h77 [(5.2\240\240)(4.2 Namespace Infomap and Character Encoding)] D
-/h78 [(5.3\240\240)(4.3 Flags)] D
-/h79 [(5.4\240\240)(4.4 Error Handling)] D
-/h80 [(5.4.1\240\240)(4.4.1 xml_schema::serialization)] D
-/h81 [(5.4.2\240\240)(4.4.2 xml_schema::unexpected_element)] D
-/h82 [(5.4.3\240\240)(4.4.3 xml_schema::no_type_info)] D
-/h83 [(5.5\240\240)(4.5 Serializing to std::ostream)] D
-/h84 [(5.6\240\240)(4.6 Serializing to xercesc::XMLFormatTarget)] D
-/h85 [(5.7\240\240)(4.7 Serializing to DOM)] D
-/h86 [(6\240\240)(5 Additional Functionality)] D
-/h87 [(6.1\240\240)(5.1 DOM Association)] D
-/h88 [(6.2\240\240)(5.2 Binary Serialization)] D
-/h89 [(7\240\240)(Appendix A \236 Default and Fixed Values)] D
-/Hr [94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111
-112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129
-130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147
-148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165
-166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182]D
-/HV [1 2 2 1 1 2 3 3 3 3 2 3 2 3 3 3 2 2 3 3 3 3 3 3 2 2 2 2 2 2 2 2 2
-2 2 3 3 3 3 2 3 3 2 3 3 3 2 3 3 2 2 2 3 3 3 3 2 1 2 2 2 3 3 3 3 3 3 3 3
-3 2 2 2 2 1 2 2 2 2 3 3 3 2 2 2 1 2 2 1]D
-/Cn [2 0 0 0 23 4 0 0 0 0 1 0 3 0 0 0 0 6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 4 0 0 0 0 2 0 0 3 0 0 0 2 0 0 0 0 4 0 0 0 0 0 7 0 0 9 0 0 0 0 0 0 0 0
-0 0 0 0 0 7 0 0 0 3 0 0 0 0 0 0 2 0 0 0]D
-Hr length 0 gt{[/PageMode /UseOutlines /DOCVIEW pdfmark}if
-/Hn 1 D
-0 1 Hr length 1 sub{
- /Bn E D [Cn Bn get dup 0 gt{/Count E HV Bn get Bl ge{neg}if}{pop}ie
- /Dest Hr Bn get dup abs ST cvs cvn E 0 ge{(h)Hn ST cvs join cvx exec
- dup 1 get E Nf{0 get E join}{pop}ie /Hn Hn 1 add D}{()}ie
- /Title E dup length 255 gt{0 255 getinterval}if /OUT pdfmark}for
-ZF /FN Fp D Ps 0 FS /WC Wf{( )}{<A1A1>}ie SW pop D
-ET RC ZF
-/Df f D
-/R0 (http://www.codesynthesis.com/licenses/fdl-1.2.txt) D
-/R1 (http://www.codesynthesis.com/projects/xsd/documentation/cxx/tree/manual/index.xhtml) D
-/R2 (http://www.codesynthesis.com/projects/xsd/documentation/cxx/tree/manual/cxx-tree-manual.pdf) D
-/R3 (http://www.codesynthesis.com/projects/xsd/documentation/cxx/tree/manual/cxx-tree-manual.ps) D
-/R1 (http://www.codesynthesis.com/products/xsd) D
-/R2 (http://codesynthesis.com/projects/xsd/documentation/cxx/tree/manual/index.xhtml) D
-/R3 (http://codesynthesis.com/projects/xsd/documentation/cxx/tree/manual/cxx-tree-manual.pdf) D
-/R4 (http://codesynthesis.com/projects/xsd/documentation/cxx/tree/manual/cxx-tree-manual.ps) D
-/R5 (http://www.codesynthesis.com/projects/xsd/documentation/cxx/tree/guide/) D
-/R6 (http://wiki.codesynthesis.com/Tree/Customization_guide) D
-/R7 (http://www.codesynthesis.com/projects/xsd/documentation/cxx/tree/dbxml/) D
-/R8 (http://wiki.codesynthesis.com/Tree/FAQ) D
-/R9 (http://www.codesynthesis.com/projects/xsd/documentation/xsd.xhtml) D
-/R10 (http://www.codesynthesis.com/mailman/listinfo/xsd-users) D
-/R11 (http://www.codesynthesis.com/pipermail/xsd-users/) D
-/R12 (http://en.wikipedia.org/wiki/Character_code) D
-/TS {
- tables E get /table E D
- table aload pop /rdesc E D /cdesc E D /tdesc E D
- tdesc aload pop /capalg E D /caption E D /rules E D /frame E D /nfoot E D
- /nhead E D /ncol E D /nrow E D /border E D /twid E D /units E D /talign E D
- /flow E D /clear E D /tclass E D pop pop
- /w W D /eps 0.1 D /OU f D /PL 1 D
- /FN EF 21 get D EZ 21 get Ey 21 get FS
- 0 1 1{
- /pass E D
- 0 1 nrow{
- /irow E D
- /cells rdesc irow get 6 get D
- 0 1 ncol{
- /icol E D
- /cell cells icol get D
- cell 0 ne{
- cell aload pop /ang E D /CB E D pop pop pop
- /DV E D /bot E D /top E D /right E D /left E D /nowrap E D /valign E D
- /dp E D /align E D /rspan E D /cspan E D /cclass E D /ctype E D /cmax E D
- /cmin E D /proc E D
- rspan 0 eq{/rspan nrow irow sub 1 add D}if
- cspan 0 eq{/cspan ncol icol sub 1 add D}if
- pass 0 eq cspan 1 eq and pass 1 eq cspan 1 gt and or{
- /W 1e5 D /LL W D /PH 1 D
- ctype 1 eq{() BD}if
- RC align NA
- AT 4 eq{/CD t D /DC dp D /LN 0 D /M1 0 D /M2 0 D}{/CD f D}ie
- 0 0 M /LM 0 D proc exec BN
- AT 4 eq{
- LN array astore cell 15 3 -1 roll put
- cdesc icol get dup dup 5 get M1 lt{5 M1 put}{5 get /M1 E D}ie
- dup 6 get M2 lt{6 M2 put}{6 get /M2 E D}ie
- /LM M1 M2 add D
- }if
- /CD f D
- ang 0 ne{/LM CP E pop neg D}if
- /thiswid LM left add right add eps add D
- /oldmin 0 D /oldmax 0 D
- 0 1 cspan 1 sub{
- icol add cdesc E get dup 2 get /oldmax E oldmax add D
- 1 get /oldmin E oldmin add D
- }for
- thiswid oldmax ge{
- 0 1 cspan 1 sub{
- icol add cdesc E get dup 2 E 2 get oldmax 0 eq
- {pop thiswid cspan div}{thiswid mul oldmax div}ie
- put
- }for
- }if
- nowrap 1 eq{
- thiswid oldmin ge{
- 0 1 cspan 1 sub{
- icol add cdesc E get dup 1 E 1 get oldmin 0 eq
- {pop thiswid cspan div}{thiswid mul oldmin div}ie
- put
- }for
- }if
- }{
- /W 0 D /LL W D /PH 2 D
- ctype 1 eq{() ES () BD}if
- 0 0 M /LM 0 D RC proc exec BN
- /thiswid LM left add right add eps add D
- thiswid oldmin ge{
- 0 1 cspan 1 sub{
- icol add cdesc E get dup 1 E 1 get oldmin 0 eq
- {pop thiswid cspan div}{thiswid mul oldmin div}ie
- put
- }for
- }if
- }ie
- ctype 1 eq{() ES}if
- }if
- }if
- }for
- }for
- }for
- /tmin 0 D /tmax 0 D
- 0 1 ncol{
- cdesc E get dup 1 get E 2 get 2 copy gt{pop dup}if
- tmax add /tmax E D tmin add /tmin E D
- }for
- twid 0 lt{twid neg IW gt{IW neg}{twid}ie /twid E D}if
- tdesc 0 twid neg tmin 2 copy lt{E}if pop put
- tdesc 1 twid neg tmax 2 copy lt{E}if pop put
- /W w D /LL W D /OU t D /PH 0 D /PL 0 D
-} D
-/PT {
- /PL PL 1 add D
- tables E get /table E D Tm 21 get Ts mul BE
- PL 2 ge{save}if
- /SL SL 1 add D /FN EF 21 get D EZ 21 get Ey 21 get FS
- table aload pop /rdesc E D /cdesc E D /tdesc E D
- tdesc aload pop /capalg E D /caption E D /rules E D /frame E D /nfoot E D
- /nhead E D /ncol E D /nrow E D /border E D /twid E D /units E D /talign E D
- /flow E D /clear E D /tclass E D /tmax E D /tmin E D
- /w W D /xo XO D /mr MR D /ll LL D /lg LG D /ai AI D /bc BC D /nr NR D /ar AR D
- /tr TR D /ui UI D /ph PH D /a0 A0 D /pf PF D /at AT D /av AV D /al AL D
- /Le LE D /la La D
- talign 0 lt{/talign AL 0 gt{AV AL get}{A0 2 le{A0}{0}ie}ie D}if
- ph 1 eq ph 2 eq or{
- NL ph 1 eq{tmax}{tmin}ie dup XO add LM gt{/LM E XO add D}{pop}ie LM E
- }{
- /PH 3 D /LE 1e5 D RC %ZF
- border 0 gt{/border 1 D}if
- /twidth 0 D /avail W xo sub D
- twid 0 eq{0 1 ncol{cdesc E get dup 2 get E 3 get dup 0 gt{div neg dup twid lt
- {/twid E D}{pop}ie}{pop pop}ie}for}if
- /twid twid dup 0 lt{neg avail 2 copy gt{E}if pop}{avail mul}ie D
- /OK t D 0 1 ncol{cdesc E get dup 1 get E 3 get twid mul gt{/OK f D}if}for
- 0 1 ncol{
- cdesc E get dup 1 get /colmin E D dup 3 get /cwid E twid mul D dup
- tmax avail le{2 get}if
- tmin avail le tmax avail gt and{
- dup 2 get E 1 get dup 3 1 roll sub avail tmin sub mul tmax tmin sub div add
- }if
- tmin avail gt{1 get}if
- 0 E colmin cwid lt OK and{pop cwid}if dup /twidth E twidth add D put
- }for
- /OU f D CP
- tmin twid le{
- 0 1 ncol{cdesc E get dup 0 get twidth div twid mul 0 E put}for
- /twidth twid D
- }if
- CP printcap CP E pop sub /caphig E D pop
- 0 1 1{
- /pass E D
- 0 1 nrow{
- /irow E D
- /cells rdesc irow get 6 get D
- 0 1 ncol{
- /icol E D
- /cell cells icol get D
- cell 0 ne{
- cell aload pop /ang E D /CB E D pop pop pop
- /DV E D /bot E D /top E D /right E D /left E D /nowrap E D /valign E D
- /dp E D /align E D /rspan E D /cspan E D /cclass E D /ctype E D /cmax E D
- /cmin E D /proc E D
- rspan 0 eq{/rspan nrow irow sub 1 add D}if
- cspan 0 eq{/cspan ncol icol sub 1 add D}if
- /W 0 D
- 0 1 cspan 1 sub{icol add cdesc E get 0 get /W E W add D}for
- pass 0 eq rspan 1 eq and pass 1 eq rspan 1 gt and or{
- ctype 1 eq{() BD}if
- /W W left sub right sub D /XO 0 D /EO 0 D SI
- /A0 align D RC align NA
- AT 4 eq{
- /DC dp D /DO 0 D /ID 1 D
- 0 1 DV length 1 sub{DV E get dup DO gt{/DO E D}{pop}ie}for
- /Lo DO DV 0 get sub D /L1 Lo D
- }if
- 0 0 M /BP t D /Fl t D /MF 0 D /FB 0 D
- proc exec T not{/CI 0 D}if BN 0 FB neg R MF 0 eq{/MF CS D}if
- CP /thishig E neg bot add top add CI add D pop
- ang 0 ne{/thishig LM bot add top add D}if
- cell 16 MF put cell 17 Ya put cell 18 thishig put
- valign 4 eq{
- /below thishig Ya sub D
- rdesc irow get dup dup 4 get Ya lt
- {4 Ya put}{4 get /Ya E D}ie
- dup 5 get below lt{5 below put}{5 get /below E D}ie
- /thishig Ya below add D
- }if
- ctype 1 eq{()ES}if
- /oldhig 0 D
- 0 1 rspan 1 sub{
- irow add rdesc E get 0 get /oldhig E oldhig add D
- }for
- thishig oldhig ge{
- 0 1 rspan 1 sub{
- irow add rdesc E get dup 0 E 0 get oldhig 0 eq
- {pop thishig rspan div}{thishig mul oldhig div}ie
- put
- }for
- }if
- }if
- }if
- }for
- }for
- }for M RC %ZF
- /thight 0 D /racc 0 D /maxh 0 D /brk 0 D /rbeg nhead nfoot add D
- 0 1 nrow{
- rdesc E get dup 0 get dup /thight E thight add D
- brk 0 eq{/racc E D}{/racc E racc add D}ie
- racc maxh gt{/maxh racc D}if 2 get /brk E D
- }for
- ph 3 ge{thight caphig add E}if
- ph 0 eq ph 4 eq or{
- /PH 4 D /LE Le D /OU Ou D /yoff 0 D /headsz 0 D
- 0 1 nhead 1 sub{rdesc E get 0 get headsz add /headsz E D}for
- /footsz 0 D
- 0 1 nfoot 1 sub{rdesc E nhead add get 0 get footsz add /footsz E D}for
- /ahig LE BO add MI add D /maxh maxh headsz add footsz add D
- /thight thight headsz add footsz add D
- tmin avail gt maxh ahig gt or
- {/Sf avail tmin div dup ahig maxh div gt{pop ahig maxh div}if D /SA t D}
- {/Sf 1 D}ie
- tclass 1 eq thight LE 15 sub gt and
- {/SA t D LE 15 sub thight div dup Sf lt{/Sf E D}{pop}ie}if
- SA{Sf Sf scale /ll ll Sf div D /xo xo Sf div D /LE LE Sf div D
- /mr mr Sf div D /BO BO Sf div D /ahig ahig Sf div D}if
- nhead nfoot add getwid
- LE CP E pop add capalg 0 eq{caphig sub}if
- bT{f}{dup thight lt thight ahig lt and}ie
- E headsz sub footsz sub rwid lt or{NP}if
- capalg 0 eq{printcap -8 SP}if
- CP /ycur E D pop
- printhead
- rbeg 1 nrow{/row E D row
- getwid
- ycur yoff add rwid sub footsz sub LE add 0 lt
- {nfoot 0 gt{printfoot}if Tf NP /rbeg irow1 D
- Ba{MI /MI MI SA{Sf div}if D MI SP /MI E D}if
- CP /ycur E D pop /yoff 0 D printhead}if
- irow1 printrow
- }for
- printfoot /row row 1 add D Tf
- 0 ycur yoff add M
- capalg 1 eq{/EO 0 D SI -3 SP printcap}if
- Sf 1 lt{1 Sf div dup scale /ll ll Sf mul D /xo xo Sf mul D /LE LE Sf mul D
- /mr mr Sf mul D /BO BO Sf mul D /SA f D}if
- /EO 0 D
- }if
- }ie
- /W w D /XO xo D /MR mr D /LL ll D /LG lg D /AI ai D /BC bc D /NR nr D /AR ar D
- /TR tr D /UI ui D /PH ph D /A0 a0 D /PF pf D /AT at D /AV av D /AL al D
- /La la D
- /SL SL 1 sub NN D /CF 0 D /FN 0 D SZ SL get FR SL get FS Wf not{()F2}if
- PL 2 ge{Ms E restore Ms or /Ms E D PH 1 eq PH 2 eq or
- {/LM E D}if PH 3 ge{/CI 0 D NL 0 E neg R}if
- }if
- /PL PL 1 sub D /CI 0 D /BP f D /PO f D () Bm 21 get Ts mul BE BL %CF CS SF
-} D
-/printcap{
- capalg 0 ge{
- SA{/W w Sf div D}
- {talign 1 eq{/XO xo ll twidth sub 2 div add D}if
- talign 2 eq{/XO xo ll twidth sub add D}if
- /W XO twidth add D
- }ie /XO xo D /LL W XO sub MR sub D
- /PA f D /Fl capalg 0 eq D
- 1 NA BL caption exec BN OA /PA t D
- }if
-} D
-/getwid{
- /irow1 E D
- /irow2 irow1 D
- /rwid 0 D
- {rdesc irow2 get dup 0 get rwid add /rwid E D 2 get 0 eq
- {exit}{/irow2 irow2 1 add D}ie
- }loop
-} D
-/printrow{
- /xoff ll twidth PL 2 ge{Sf div}if sub talign mul 2 div D
- /xleft xoff xo add D
- /irow E D
- /cells rdesc irow get 6 get D
- 0 1 ncol{
- /icol E D
- /cell cells icol get D
- cell 0 ne{
- cell aload pop /ang E D /CB E D /cvsize E D /above E D /fontsz E D
- /DV E D /bot E D /top E D /right E D /left E D /nowrap E D /valign E D
- /dp E D /align E D /rspan E D /cspan E D /cclass E D /ctype E D /cmax E D
- /cmin E D /proc E D
- rspan 0 eq{/rspan nrow irow sub 1 add D}if
- cspan 0 eq{/cspan ncol icol sub 1 add D}if
- /width 0 D
- 0 1 cspan 1 sub{icol add cdesc E get 0 get /width E width add D}for
- /rhight rdesc irow get 0 get D
- /hight rhight D
- 1 1 rspan 1 sub{irow add rdesc E get 0 get /hight E hight add D}for
- /W xo xoff add width add right sub D
- ang 0 ne{/W xo xoff add hight add right sub D}if
- /EO xo xoff add left add D SI
- Cf{
- gsave CB VC xo xoff add ycur yoff add M
- 0 hight neg RL width 0 RL 0 hight RL width neg 0 RL fill
- grestore
- }if
- ctype 1 eq{() BD}if
- /A0 align D RC
- AT 4 eq{
- /DC dp D /ID 1 D /DO cdesc icol get 5 get D /Lo DO DV 0 get sub D /L1 Lo D
- }if
- ang 0 ne{
- gsave ang 90 eq
- {xoff ycur add hight cvsize sub 2 div sub ycur hight sub xoff sub}
- {xoff ycur sub width add hight cvsize sub 2 div add ycur xoff add}ie
- translate ang rotate
- }if
- valign 3 le{0 ycur yoff add top sub
- hight cvsize sub valign 1 sub mul 2 div sub M}
- {0 ycur yoff add top sub above add rdesc irow get 4 get sub M}ie
- /PA f D /BP t D /Fl t D
- BL proc exec BN
- ang 0 ne{grestore}if
- /PA t D
- ctype 1 eq{() ES}if
- }if
- /xoff xoff cdesc icol get 0 get add D
- }for
- /yoff yoff rhight sub D
-} D
-/printhead {0 1 nhead 1 sub{printrow}for} D
-/printfoot {nhead 1 nhead nfoot add 1 sub{printrow}for} D
-/Tf {
- OU{rules 2 ge{/yoff 0 D
- gsave 0 Sg
- [0 1 nhead 1 sub{}for rbeg 1 row 1 sub{}for nhead 1 nhead nfoot add 1 sub{}for]{
- /irow E D
- /xoff ll twidth PL 2 ge{Sf div}if sub talign mul 2 div D
- /cells rdesc irow get 6 get D
- 0 1 ncol{
- /icol E D
- /cell cells icol get D
- cell 0 ne{
- /rspan cell 6 get D
- /cspan cell 5 get D
- rspan 0 eq{/rspan nrow irow sub 1 add D}if
- cspan 0 eq{/cspan ncol icol sub 1 add D}if
- /width 0 D
- 0 1 cspan 1 sub{icol add cdesc E get 0 get /width E width add D}for
- /rhight rdesc irow get 0 get D
- /hight rhight D
- 1 1 rspan 1 sub{irow add rdesc E get 0 get /hight E hight add D}for
- xo xoff add width add ycur yoff add M
- 0 hight neg icol cspan add 1 sub ncol lt
- {cdesc icol 1 add get 4 get dup rules 3 le{1 eq}{pop t}ie
- {1 eq{0.8}{0.3}ie
- LW RL CP stroke M}{pop R}ie}{R}ie
- irow nhead nfoot add 1 sub ne nfoot 0 eq or
- {irow rspan add 1 sub nrow lt
- {rdesc irow rspan add get 3 get}{nfoot 0 eq{0}{1}ie}ie
- dup rules 2 mod 0 eq{1 eq}{pop t}ie
- {1 eq irow rspan add nhead eq or irow rspan add row eq nfoot 0 gt and or
- {0.8}{0.3}ie LW width neg 0 RL CP stroke M}{pop}ie}if
- }if
- /xoff xoff cdesc icol get 0 get add D
- }for
- /yoff yoff rhight sub D
- }forall
- grestore
- /Ms t D
- }if
- frame 1 gt{
- gsave
- 1 LW 0 Sg
- xleft ycur M CP BB
- 0 yoff frame 5 eq frame 7 ge or{RL}{R}ie
- twidth 0 frame 3 eq frame 4 eq or frame 8 ge or{RL}{R}ie CP BB
- 0 yoff neg frame 6 ge{RL}{R}ie
- twidth neg 0 frame 2 eq frame 4 eq or frame 8 ge or{RL}{R}ie
- closepath stroke
- grestore
- /Ms t D
- }if
- }if
-} D
-/tables [[[0 0 0 0 0 -1 0 0 1 58 2 0 0 9 5 {()} -1]
- [[0 0 0 0 0 0 0][0 0 0 0 0 0 0][0 0 0 0 0 0 0]]
- [[0 0 0 0 0 0 [[{()1 Sl()WB(XML Schema type)} 0 0 1 0 1 1 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB(Alias in the )SM(xml_schema)ES( names)HY(pace)YH()} 0 0 1 0 1 1 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB(C++ type
- )} 0 0 1 0 1 1 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB(anyType and anySim)HY(ple)HY(Type)YH( types
- )} 0 0 1 0 3 1 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-0
-0
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(anyType)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(type)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()0 23 1 A(Section 2.5.2, "Mapping for )SM(anyType)ES(")23 0 TN TL()Ec /AF f D(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(anySim)HY(ple)HY(Type)YH()ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(simple_type)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()0 24 1 A(Section 2.5.3, "Mapping for )SM(anySim)HY(ple)HY(Type)YH()ES(")24 0 TN TL()Ec /AF f D(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB(fixed-length inte)HY(gral)YH( types
- )} 0 0 1 0 3 1 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-0
-0
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(byte)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(byte)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(signed\240char)ES(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(unsigned)HY(Byte)YH()ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(unsigned_byte)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(unsigned\240char)ES(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(short)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(short_)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(short)ES(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(unsigned)HY(Short)YH()ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(unsigned_short)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(unsigned\240short)ES(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(int)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(int_)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(int)ES(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(unsignedInt)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(unsigned_int)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(unsigned\240int)ES(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(long)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(long_)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(long\240long)ES(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(unsigned)HY(Long)YH()ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(unsigned_long)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(unsigned\240long\240long)ES(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB(arbi)HY(trary)YH(-length inte)HY(gral)YH( types
- )} 0 0 1 0 3 1 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-0
-0
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(integer)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(integer)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(long\240long)ES(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(nonPos)HY(i)HY(tiveIn)HY(te)HY(ger)YH()ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(non_posi)HY(tive)YH(_integer)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(long\240long)ES(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(nonNeg)HY(a)HY(tiveIn)HY(te)HY(ger)YH()ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(non_nega)HY(tive)YH(_integer)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(unsigned long\240long)ES(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(posi)HY(tiveIn)HY(te)HY(ger)YH()ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(posi)HY(tive)YH(_integer)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(unsigned long\240long)ES(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(nega)HY(tiveIn)HY(te)HY(ger)YH()ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(nega)HY(tive)YH(_integer)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(long\240long)ES(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB(boolean types
- )} 0 0 1 0 3 1 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-0
-0
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(boolean)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(boolean)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(bool)ES(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB(fixed-preci)HY(sion)YH( float)HY(ing)YH(-point types
- )} 0 0 1 0 3 1 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-0
-0
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(float)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(float_)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(float)ES(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(double)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(double_)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(double)ES(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB(arbi)HY(trary)YH(-preci)HY(sion)YH( float)HY(ing)YH(-point types
- )} 0 0 1 0 3 1 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-0
-0
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(decimal)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(decimal)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(double)ES(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB(string types
- )} 0 0 1 0 3 1 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-0
-0
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(string)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(string)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB(type derived from )SM(std::basic_string)ES(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(normal)HY(ized)HY(String)YH()ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(normal)HY(ized)YH(_string)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB(type derived from )SM(string)ES(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(token)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(token)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB(type\240derived\240from\240)SM(normal)HY(ized)YH(_string)ES(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(Name)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(name)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB(type derived from )SM(token)ES(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(NMTOKEN)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(nmtoken)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB(type derived from )SM(token)ES(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(NMTO)HY(KENS)YH()ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(nmto)HY(kens)YH()ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB(type derived from )SM(sequence<nmtoken>)ES(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(NCName)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(ncname)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB(type derived from )SM(name)ES(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(language)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(language)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB(type derived from )SM(token)ES(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB(qual)HY(i)HY(fied)YH( name
- )} 0 0 1 0 3 1 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-0
-0
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(QName)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(qname)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()0 25 1 A(Section 2.5.4, "Mapping for )SM(QName)ES(")25 0 TN TL()Ec /AF f D(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB(ID/IDREF types
- )} 0 0 1 0 3 1 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-0
-0
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(ID)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(id)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB(type derived from )SM(ncname)ES(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(IDREF)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(idref)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()0 26 1 A(Section 2.5.5, "Mapping for )SM(IDREF)ES(")26 0 TN TL()Ec /AF f D(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(IDREFS)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(idrefs)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB(type derived from )SM(sequence<idref>)ES(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB(URI types
- )} 0 0 1 0 3 1 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-0
-0
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(anyURI)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(uri)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB(type derived from )SM(std::basic_string)ES(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB(binary types
- )} 0 0 1 0 3 1 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-0
-0
-]]
-[0 0 1 0 0 0 [[{()1 Sl()WB()SM(base64Binary)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(base64_binary)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()0 27 1 A(Section 2.5.6, "Mapping for
- )SM(base64Binary)ES( and )SM(hexBi)HY(nary)YH()ES(")27 0 TN TL()Ec /AF f D(
- )} 0 0 0 0 1 2 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(hexBi)HY(nary)YH()ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(hex_binary)ES(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-0
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB(date/time types
- )} 0 0 1 0 3 1 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-0
-0
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(date)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(date)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()0 29 1 A(Section 2.5.8, "Mapping for
- )SM(date)ES(")29 0 TN TL()Ec /AF f D(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(date)HY(Time)YH()ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(date_time)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()0 30 1 A(Section 2.5.9, "Mapping for
- )SM(date)HY(Time)YH()ES(")30 0 TN TL()Ec /AF f D(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(dura)HY(tion)YH()ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(dura)HY(tion)YH()ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()0 31 1 A(Section 2.5.10, "Mapping for
- )SM(dura)HY(tion)YH()ES(")31 0 TN TL()Ec /AF f D(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(gDay)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(gday)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()0 32 1 A(Section 2.5.11, "Mapping for
- )SM(gDay)ES(")32 0 TN TL()Ec /AF f D(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(gMonth)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(gmonth)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()0 33 1 A(Section 2.5.12, "Mapping for
- )SM(gMonth)ES(")33 0 TN TL()Ec /AF f D(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(gMon)HY(th)HY(Day)YH()ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(gmonth_day)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()0 34 1 A(Section 2.5.13, "Mapping for
- )SM(gMon)HY(th)HY(Day)YH()ES(")34 0 TN TL()Ec /AF f D(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(gYear)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(gyear)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()0 35 1 A(Section 2.5.14, "Mapping for
- )SM(gYear)ES(")35 0 TN TL()Ec /AF f D(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(gYear)HY(Month)YH()ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(gyear_month)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()0 36 1 A(Section 2.5.15, "Mapping for
- )SM(gYear)HY(Month)YH()ES(")36 0 TN TL()Ec /AF f D(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(time)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(time)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()0 37 1 A(Section 2.5.16, "Mapping for
- )SM(time)ES(")37 0 TN TL()Ec /AF f D(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB(entity types
- )} 0 0 1 0 3 1 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-0
-0
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(ENTITY)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(entity)ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB(type derived from )SM(name)ES(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 0 0 0 0 [[{()1 Sl()WB()SM(ENTI)HY(TIES)YH()ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()SM(enti)HY(ties)YH()ES()} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB(type derived from )SM(sequence<entity>)ES(
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-]]
-[[0 0 0 0 0 -1 0 0 1 8 5 0 0 9 5 {()} -1]
- [[0 0 0 0 0 0 0][0 0 0 0 0 0 0][0 0 0 0 0 0 0][0 0 0 0 0 0 0][0 0 0 0 0 0 0][0 0 0 0 0 0 0]]
- [[0 0 0 0 0 0 [[{()1 Sl()WB()} 0 0 1 0 1 1 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB()} 0 0 1 0 1 1 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB(default)} 0 0 1 0 2 1 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-0
-[{()1 Sl()WB(fixed
- )} 0 0 1 0 2 1 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-0
-]]
-[0 0 1 0 0 0 [[{()1 Sl()WB(element)} 0 0 1 0 1 4 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB(not present)} 0 0 1 0 1 2 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB(optional)} 0 0 1 0 1 1 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB(required)} 0 0 1 0 1 1 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB(optional)} 0 0 1 0 1 1 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB(required
- )} 0 0 1 0 1 1 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 1 0 0 0 [0
-0
-[{()1 Sl()WB(not present)} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB(invalid instance)} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB(not present)} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB(invalid instance
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 1 0 0 0 [0
-[{()1 Sl()WB(empty)} 0 0 1 0 1 1 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB(default value is used)} 0 0 0 0 2 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-0
-[{()1 Sl()WB(fixed value is used
- )} 0 0 0 0 2 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-0
-]]
-[0 0 0 0 0 0 [0
-[{()1 Sl()WB(value)} 0 0 1 0 1 1 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB(value is used)} 0 0 0 0 2 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-0
-[{()1 Sl()WB(value is used provided it's the same as fixed
- )} 0 0 0 0 2 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-0
-]]
-[0 0 1 0 0 0 [[{()1 Sl()WB(attribute)} 0 0 1 0 1 4 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB(not present)} 0 0 1 0 1 2 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB(optional)} 0 0 1 0 1 1 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB(required)} 0 0 1 0 1 1 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB(optional)} 0 0 1 0 1 1 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB(required
- )} 0 0 1 0 1 1 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 1 0 0 0 [0
-0
-[{()1 Sl()WB(default value is used)} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB(invalid schema)} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB(fixed value is used)} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB(invalid instance
- )} 0 0 0 0 1 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-]]
-[0 0 1 0 0 0 [0
-[{()1 Sl()WB(empty)} 0 0 1 0 1 1 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB(empty value is used)} 0 0 0 0 2 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-0
-[{()1 Sl()WB(empty value is used provided it's the same as fixed
- )} 0 0 0 0 2 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-0
-]]
-[0 0 0 0 0 0 [0
-[{()1 Sl()WB(value)} 0 0 1 0 1 1 1 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-[{()1 Sl()WB(value is used)} 0 0 0 0 2 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-0
-[{()1 Sl()WB(value is used provided it's the same as fixed
- )} 0 0 0 0 2 1 0 (.) 2 0 4 4 2 6 0 0 0 0 Db 0 ]
-0
-]]
-]]
-] D
-0 1 1{TS}for RC ZF
-/Ba f D /BO 0 D Bs
-/UR (/home/boris/work/xsd/xsd/documentation/cxx/tree/manual/index.xhtml) D
-/Ti (C++/Tree Mapping User Manual) D
-/Au () D
-/Df f D
-/ME [(2.3.0)] D
-Pt
-/BO 0 D TC /Ba f D Bs /AU f D /UR () D RC ZF
- tH WB
-ND 1 gt{Ts 3 mul Np 0()0 C()BD(C++/Tree Mapping User Manual)ES()0 1 TN()EA()BN}if
-1 NH le{94(1\240\240)1 C(Preface)WB 3 Sn()94 1 TN()EA()BN}if
-2 NH le{95(1.1\240\240)2 C(About)WB 4 Sn( This Docu)HY(ment)YH()95 1 TN()EA()BN}if
-2 NH le{96(1.2\240\240)2 C(More)WB 5 Sn( Infor)HY(ma)HY(tion)YH()96 1 TN()EA()BN}if
-1 NH le{97(2\240\240)1 C(1)WB 6 Sn( Intro)HY(duc)HY(tion)YH()97 1 TN()EA()BN}if
-1 NH le{98(3\240\240)1 C(2)WB 7 Sn( C++/Tree Mapping)98 1 TN()EA()BN}if
-2 NH le{99(3.1\240\240)2 C(2.1)WB 8 Sn( Prelim)HY(i)HY(nary)YH( Infor)HY(ma)HY(tion)YH()99 1 TN()EA()BN}if
-3 NH le{100(3.1.1\240\240)3 C(2.1.1)WB 9 Sn( Iden)HY(ti)HY(fiers)YH()100 1 TN()EA()BN}if
-3 NH le{101(3.1.2\240\240)3 C(2.1.2)WB 10 Sn( Char)HY(ac)HY(ter)YH( Type and Encod)HY(ing)YH()101 1 TN()EA()BN}if
-3 NH le{102(3.1.3\240\240)3 C(2.1.3)WB 11 Sn( XML Schema Names)HY(pace)YH()102 1 TN()EA()BN}if
-3 NH le{103(3.1.4\240\240)3 C(2.1.4)WB 12 Sn( Anony)HY(mous)YH( Types)103 1 TN()EA()BN}if
-2 NH le{104(3.2\240\240)2 C(2.2)WB 13 Sn( Error Handling)104 1 TN()EA()BN}if
-3 NH le{105(3.2.1\240\240)3 C(2.2.1)WB 14 Sn( )SM(xml_schema::dupli)HY(cate)YH(_id)ES()105 1 TN()EA()BN}if
-2 NH le{106(3.3\240\240)2 C(2.3)WB 15 Sn( Mapping for )SM(import)ES( and )SM(include)ES()106 1 TN()EA()BN}if
-3 NH le{107(3.3.1\240\240)3 C(2.3.1)WB 16 Sn( Import)107 1 TN()EA()BN}if
-3 NH le{108(3.3.2\240\240)3 C(2.3.2)WB 17 Sn( Inclu)HY(sion)YH( with Target Names)HY(pace)YH()108 1 TN()EA()BN}if
-3 NH le{109(3.3.3\240\240)3 C(2.3.3)WB 18 Sn( Inclu)HY(sion)YH( without Target Names)HY(pace)YH()109 1 TN()EA()BN}if
-2 NH le{110(3.4\240\240)2 C(2.4)WB 19 Sn( Mapping for Names)HY(paces)YH()110 1 TN()EA()BN}if
-2 NH le{111(3.5\240\240)2 C(2.5)WB 20 Sn( Mapping for Built-in Data Types)111 1 TN()EA()BN}if
-3 NH le{112(3.5.1\240\240)3 C(2.5.1)WB 22 Sn( Inher)HY(i)HY(tance)YH( from Built-in Data Types)112 1 TN()EA()BN}if
-3 NH le{113(3.5.2\240\240)3 C(2.5.2)WB 23 Sn( Mapping for )SM(anyType)ES()113 1 TN()EA()BN}if
-3 NH le{114(3.5.3\240\240)3 C(2.5.3)WB 24 Sn( Mapping for )SM(anySim)HY(ple)HY(Type)YH()ES()114 1 TN()EA()BN}if
-3 NH le{115(3.5.4\240\240)3 C(2.5.4)WB 25 Sn( Mapping for )SM(QName)ES()115 1 TN()EA()BN}if
-3 NH le{116(3.5.5\240\240)3 C(2.5.5)WB 26 Sn( Mapping for )SM(IDREF)ES()116 1 TN()EA()BN}if
-3 NH le{117(3.5.6\240\240)3 C(2.5.6)WB 27 Sn( Mapping for )SM(base64Binary)ES( and
- )SM(hexBi)HY(nary)YH()ES()117 1 TN()EA()BN}if
-2 NH le{118(3.6\240\240)2 C(2.5.7)WB 28 Sn( Time Zone Repre)HY(sen)HY(ta)HY(tion)YH()118 1 TN()EA()BN}if
-2 NH le{119(3.7\240\240)2 C(2.5.8)WB 29 Sn( Mapping for )SM(date)ES()119 1 TN()EA()BN}if
-2 NH le{120(3.8\240\240)2 C(2.5.9)WB 30 Sn( Mapping for )SM(date)HY(Time)YH()ES()120 1 TN()EA()BN}if
-2 NH le{121(3.9\240\240)2 C(2.5.10)WB 31 Sn( Mapping for )SM(dura)HY(tion)YH()ES()121 1 TN()EA()BN}if
-2 NH le{122(3.10\240\240)2 C(2.5.11)WB 32 Sn( Mapping for )SM(gDay)ES()122 1 TN()EA()BN}if
-2 NH le{123(3.11\240\240)2 C(2.5.12)WB 33 Sn( Mapping for )SM(gMonth)ES()123 1 TN()EA()BN}if
-2 NH le{124(3.12\240\240)2 C(2.5.13)WB 34 Sn( Mapping for )SM(gMon)HY(th)HY(Day)YH()ES()124 1 TN()EA()BN}if
-2 NH le{125(3.13\240\240)2 C(2.5.14)WB 35 Sn( Mapping for )SM(gYear)ES()125 1 TN()EA()BN}if
-2 NH le{126(3.14\240\240)2 C(2.5.15)WB 36 Sn( Mapping for )SM(gYear)HY(Month)YH()ES()126 1 TN()EA()BN}if
-2 NH le{127(3.15\240\240)2 C(2.5.16)WB 37 Sn( Mapping for )SM(time)ES()127 1 TN()EA()BN}if
-2 NH le{128(3.16\240\240)2 C(2.6)WB 38 Sn( Mapping for Simple Types)128 1 TN()EA()BN}if
-3 NH le{129(3.16.1\240\240)3 C(2.6.1)WB 39 Sn( Mapping for Deriva)HY(tion)YH( by Restric)HY(tion)YH()129 1 TN()EA()BN}if
-3 NH le{130(3.16.2\240\240)3 C(2.6.2)WB 40 Sn( Mapping for Enumer)HY(a)HY(tions)YH()130 1 TN()EA()BN}if
-3 NH le{131(3.16.3\240\240)3 C(2.6.3)WB 41 Sn( Mapping for Deriva)HY(tion)YH( by List)131 1 TN()EA()BN}if
-3 NH le{132(3.16.4\240\240)3 C(2.6.4)WB 42 Sn( Mapping for Deriva)HY(tion)YH( by Union)132 1 TN()EA()BN}if
-2 NH le{133(3.17\240\240)2 C(2.7)WB 43 Sn( Mapping for Complex Types)133 1 TN()EA()BN}if
-3 NH le{134(3.17.1\240\240)3 C(2.7.1)WB 44 Sn( Mapping for Deriva)HY(tion)YH( by Exten)HY(sion)YH()134 1 TN()EA()BN}if
-3 NH le{135(3.17.2\240\240)3 C(2.7.2)WB 45 Sn( Mapping for Deriva)HY(tion)YH( by Restric)HY(tion)YH()135 1 TN()EA()BN}if
-2 NH le{136(3.18\240\240)2 C(2.8)WB 46 Sn( Mapping for Local Elements and Attributes)136 1 TN()EA()BN}if
-3 NH le{137(3.18.1\240\240)3 C(2.8.1)WB 47 Sn( Mapping for Members with the One Cardi)HY(nal)HY(ity)YH( Class)137 1 TN()EA()BN}if
-3 NH le{138(3.18.2\240\240)3 C(2.8.2)WB 48 Sn( Mapping for Members with the Optional Cardi)HY(nal)HY(ity)YH( Class)138 1 TN()EA()BN}if
-3 NH le{139(3.18.3\240\240)3 C(2.8.3)WB 49 Sn( Mapping for Members with the Sequence Cardi)HY(nal)HY(ity)YH( Class)139 1 TN()EA()BN}if
-2 NH le{140(3.19\240\240)2 C(2.9)WB 50 Sn( Mapping for Global Elements)140 1 TN()EA()BN}if
-3 NH le{141(3.19.1\240\240)3 C(2.9.1)WB 51 Sn( Element Types)141 1 TN()EA()BN}if
-3 NH le{142(3.19.2\240\240)3 C(2.9.2)WB 52 Sn( Element Map)142 1 TN()EA()BN}if
-2 NH le{143(3.20\240\240)2 C(2.10)WB 53 Sn( Mapping for Global Attributes)143 1 TN()EA()BN}if
-2 NH le{144(3.21\240\240)2 C(2.11)WB 54 Sn( Mapping for )SM(xsi:type)ES( and Substi)HY(tu)HY(tion)YH(
- Groups)144 1 TN()EA()BN}if
-2 NH le{145(3.22\240\240)2 C(2.12)WB 55 Sn( Mapping for )SM(any)ES( and )SM(anyAt)HY(tribute)YH()ES()145 1 TN()EA()BN}if
-3 NH le{146(3.22.1\240\240)3 C(2.12.1)WB 56 Sn( Mapping for )SM(any)ES( with the One Cardi)HY(nal)HY(ity)YH( Class)146 1 TN()EA()BN}if
-3 NH le{147(3.22.2\240\240)3 C(2.12.2)WB 57 Sn( Mapping for )SM(any)ES( with the Optional Cardi)HY(nal)HY(ity)YH( Class)147 1 TN()EA()BN}if
-3 NH le{148(3.22.3\240\240)3 C(2.12.3)WB 58 Sn( Mapping for )SM(any)ES( with the Sequence Cardi)HY(nal)HY(ity)YH( Class)148 1 TN()EA()BN}if
-3 NH le{149(3.22.4\240\240)3 C(2.12.4)WB 59 Sn( Mapping for )SM(anyAt)HY(tribute)YH()ES()149 1 TN()EA()BN}if
-2 NH le{150(3.23\240\240)2 C(2.13)WB 60 Sn( Mapping for Mixed Content Models)150 1 TN()EA()BN}if
-1 NH le{151(4\240\240)1 C(3)WB 61 Sn( Parsing)151 1 TN()EA()BN}if
-2 NH le{152(4.1\240\240)2 C(3.1)WB 62 Sn( Initial)HY(iz)HY(ing)YH( the Xerces-C++ Runtime)152 1 TN()EA()BN}if
-2 NH le{153(4.2\240\240)2 C(3.2)WB 63 Sn( Flags and Prop)HY(er)HY(ties)YH()153 1 TN()EA()BN}if
-2 NH le{154(4.3\240\240)2 C(3.3)WB 64 Sn( Error Handling)154 1 TN()EA()BN}if
-3 NH le{155(4.3.1\240\240)3 C(3.3.1)WB 65 Sn( )SM(xml_schema::parsing)ES()155 1 TN()EA()BN}if
-3 NH le{156(4.3.2\240\240)3 C(3.3.2)WB 66 Sn( )SM(xml_schema::expected_element)ES()156 1 TN()EA()BN}if
-3 NH le{157(4.3.3\240\240)3 C(3.3.3)WB 67 Sn( )SM(xml_schema::unex)HY(pected)YH(_element)ES()157 1 TN()EA()BN}if
-3 NH le{158(4.3.4\240\240)3 C(3.3.4)WB 68 Sn( )SM(xml_schema::expected_attribute)ES()158 1 TN()EA()BN}if
-3 NH le{159(4.3.5\240\240)3 C(3.3.5)WB 69 Sn( )SM(xml_schema::unex)HY(pected)YH(_enumer)HY(a)HY(tor)YH()ES()159 1 TN()EA()BN}if
-3 NH le{160(4.3.6\240\240)3 C(3.3.6)WB 70 Sn( )SM(xml_schema::expected_text_content)ES()160 1 TN()EA()BN}if
-3 NH le{161(4.3.7\240\240)3 C(3.3.7)WB 71 Sn( )SM(xml_schema::no_type_info)ES()161 1 TN()EA()BN}if
-3 NH le{162(4.3.8\240\240)3 C(3.3.8)WB 72 Sn( )SM(xml_schema::not_derived)ES()162 1 TN()EA()BN}if
-3 NH le{163(4.3.9\240\240)3 C(3.3.9)WB 73 Sn( )SM(xml_schema::no_prefix_mapping)ES()163 1 TN()EA()BN}if
-2 NH le{164(4.4\240\240)2 C(3.4)WB 74 Sn( Reading from a Local File or URI)164 1 TN()EA()BN}if
-2 NH le{165(4.5\240\240)2 C(3.5)WB 75 Sn( Reading from )SM(std::istream)ES()165 1 TN()EA()BN}if
-2 NH le{166(4.6\240\240)2 C(3.6)WB 76 Sn( Reading from )SM(xercesc::Input)HY(Source)YH()ES()166 1 TN()EA()BN}if
-2 NH le{167(4.7\240\240)2 C(3.7)WB 77 Sn( Reading from DOM)167 1 TN()EA()BN}if
-1 NH le{168(5\240\240)1 C(4)WB 78 Sn( Seri)HY(al)HY(iza)HY(tion)YH()168 1 TN()EA()BN}if
-2 NH le{169(5.1\240\240)2 C(4.1)WB 79 Sn( Initial)HY(iz)HY(ing)YH( the Xerces-C++ Runtime)169 1 TN()EA()BN}if
-2 NH le{170(5.2\240\240)2 C(4.2)WB 80 Sn( Names)HY(pace)YH( Infomap and Char)HY(ac)HY(ter)YH( Encod)HY(ing)YH()170 1 TN()EA()BN}if
-2 NH le{171(5.3\240\240)2 C(4.3)WB 81 Sn( Flags)171 1 TN()EA()BN}if
-2 NH le{172(5.4\240\240)2 C(4.4)WB 82 Sn( Error Handling)172 1 TN()EA()BN}if
-3 NH le{173(5.4.1\240\240)3 C(4.4.1)WB 83 Sn( )SM(xml_schema::seri)HY(al)HY(iza)HY(tion)YH()ES()173 1 TN()EA()BN}if
-3 NH le{174(5.4.2\240\240)3 C(4.4.2)WB 84 Sn( )SM(xml_schema::unex)HY(pected)YH(_element)ES()174 1 TN()EA()BN}if
-3 NH le{175(5.4.3\240\240)3 C(4.4.3)WB 85 Sn( )SM(xml_schema::no_type_info)ES()175 1 TN()EA()BN}if
-2 NH le{176(5.5\240\240)2 C(4.5)WB 86 Sn( Seri)HY(al)HY(iz)HY(ing)YH( to )SM(std::ostream)ES()176 1 TN()EA()BN}if
-2 NH le{177(5.6\240\240)2 C(4.6)WB 87 Sn( Seri)HY(al)HY(iz)HY(ing)YH( to )SM(xercesc::XMLFor)HY(mat)HY(Tar)HY(get)YH()ES()177 1 TN()EA()BN}if
-2 NH le{178(5.7\240\240)2 C(4.7)WB 88 Sn( Seri)HY(al)HY(iz)HY(ing)YH( to DOM)178 1 TN()EA()BN}if
-1 NH le{179(6\240\240)1 C(5)WB 89 Sn( Addi)HY(tional)YH( Func)HY(tion)HY(al)HY(ity)YH()179 1 TN()EA()BN}if
-2 NH le{180(6.1\240\240)2 C(5.1)WB 90 Sn( DOM Asso)HY(ci)HY(a)HY(tion)YH()180 1 TN()EA()BN}if
-2 NH le{181(6.2\240\240)2 C(5.2)WB 91 Sn( Binary Seri)HY(al)HY(iza)HY(tion)YH()181 1 TN()EA()BN}if
-1 NH le{182(7\240\240)1 C(Appendix)WB 92 Sn( A \236 Default and Fixed Values)182 1 TN()EA()BN}if
-/OU t D /Cb Db D NP Ep ET
-/Cb Db D /Ct [16#00 16#00 16#00] D /Cl [16#00 16#00 16#00] D /CL -1 D Ct Sc
-
-/Ba f D /BO 0 D Bs
-/UR (/home/boris/work/xsd/xsd/documentation/cxx/tree/manual/index.xhtml) D
-/Ti (C++/Tree Mapping User Manual) D
-/Au () D
-/Df f D
-/ME [(2.3.0)] D
-
-NP RC ZF
-()1 Sl()WB 0 Sn(
-
-)BR()WB 1 Sn( )BR()WB 2 Sn(
-
-
- )0 1 0 H(Preface)WB 94 Sn()WB 3 Sn()EA()EH(
-
- )0 2 1 H(About)WB 95 Sn()WB 4 Sn( This Docu)HY(ment)YH()EA()EH(
-
- )0 P(This docu)HY(ment)YH( describes the mapping of W3C XML Schema
- to the C++ program)HY(ming)YH( language as imple)HY(mented)YH( by
- )R1 2 A(CodeSyn)HY(the)HY(sis)YH(
- XSD)EA( - an XML Schema to C++ data binding compiler. The mapping
- repre)HY(sents)YH( infor)HY(ma)HY(tion)YH( stored in XML instance docu)HY(ments)YH( as a
- stat)HY(i)HY(cally)YH(-typed, tree-like in-memory data struc)HY(ture)YH( and is
- called C++/Tree.
- )EP(
-
- )0 P(Revi)HY(sion)YH( 2.3.0)BR(
- This revi)HY(sion)YH( of the manual describes the C++/Tree
- mapping as imple)HY(mented)YH( by CodeSyn)HY(the)HY(sis)YH( XSD version 3.3.0.
- )EP(
-
- )0 P(This docu)HY(ment)YH( is avail)HY(able)YH( in the follow)HY(ing)YH( formats:
- )R2 2 A(XHTML)EA(,
- )R3 2 A(PDF)EA(, and
- )R4 2 A(PostScript)EA(.)EP(
-
- )0 2 2 H(More)WB 96 Sn()WB 5 Sn( Infor)HY(ma)HY(tion)YH()EA()EH(
-
- )0 P(Beyond this manual, you may also find the follow)HY(ing)YH( sources of
- infor)HY(ma)HY(tion)YH( useful:)EP(
-
- )UL( )-1 LI()R5 2 A(C++/Tree
- Mapping Getting Started Guide)EA(
-
- )-1 LI()R6 2 A(C++/Tree
- Mapping Customiza)HY(tion)YH( Guide)EA(
-
- )-1 LI()R7 2 A(C++/Tree
- Mapping and Berke)HY(ley)YH( DB XML Inte)HY(gra)HY(tion)YH( Guide)EA(
-
- )-1 LI()R8 2 A(C++/Tree
- Mapping Frequently Asked Ques)HY(tions)YH( \201FAQ\202)EA(
-
- )-1 LI()R9 2 A(XSD
- Compiler Command Line Manual)EA(
-
- )-1 LI(The )SM(exam)HY(ples)YH(/cxx/tree/)ES( direc)HY(tory)YH( in the XSD
- distri)HY(bu)HY(tion)YH( contains a collec)HY(tion)YH( of exam)HY(ples)YH( and a README
- file with an overview of each example.
-
- )-1 LI(The )SM(README)ES( file in the XSD distri)HY(bu)HY(tion)YH( explains
- how to compile the exam)HY(ples)YH( on various plat)HY(forms)YH(.
-
- )-1 LI(The )R10 2 A(xsd-users)EA(
- mailing list is a place to ask ques)HY(tions)YH(. Further)HY(more)YH( the
- )R11 2 A(archives)EA(
- may already have answers to some of your ques)HY(tions)YH(.
-
- )LU(
-
-
- )0 1 3 H(1)WB 97 Sn()WB 6 Sn( Intro)HY(duc)HY(tion)YH()EA()EH(
-
- )0 P(C++/Tree is a W3C XML Schema to C++ mapping that repre)HY(sents)YH( the
- data stored in XML as a stat)HY(i)HY(cally)YH(-typed, vocab)HY(u)HY(lary)YH(-specific
- object model. Based on a formal descrip)HY(tion)YH( of an XML vocab)HY(u)HY(lary)YH(
- \201schema\202, the C++/Tree mapping produces a tree-like data struc)HY(ture)YH(
- suit)HY(able)YH( for in-memory process)HY(ing)YH( as well as XML parsing and
- seri)HY(al)HY(iza)HY(tion)YH( code.)EP(
-
- )0 P(A typical appli)HY(ca)HY(tion)YH( that processes XML docu)HY(ments)YH( usually
- performs the follow)HY(ing)YH( three steps: it first reads \201parses\202 an XML
- instance docu)HY(ment)YH( to an object model, it then performs
- some useful compu)HY(ta)HY(tions)YH( on that model which may involve
- modi)HY(fi)HY(ca)HY(tion)YH( of the model, and finally it may write \201seri)HY(al)HY(ize)YH(\202
- the modi)HY(fied)YH( object model back to XML.
- )EP(
-
- )0 P(The C++/Tree mapping consists of C++ types that repre)HY(sent)YH( the
- given vocab)HY(u)HY(lary)YH( \201)0 7 1 A(Chapter 2, "C++/Tree Mapping")7 0 TN TL()Ec /AF f D(\202,
- a set of parsing func)HY(tions)YH( that convert XML docu)HY(ments)YH( to
- a tree-like in-memory data struc)HY(ture)YH( \201)0 61 1 A(Chapter 3,
- "Parsing")61 0 TN TL()Ec /AF f D(\202, and a set of seri)HY(al)HY(iza)HY(tion)YH( func)HY(tions)YH( that convert
- the object model back to XML \201)0 78 1 A(Chapter 4,
- "Seri)HY(al)HY(iza)HY(tion)YH(")78 0 TN TL()Ec /AF f D(\202. Further)HY(more)YH(, the mapping provides a number
- of addi)HY(tional)YH( features, such as DOM asso)HY(ci)HY(a)HY(tion)YH( and binary
- seri)HY(al)HY(iza)HY(tion)YH(, that can be useful in some appli)HY(ca)HY(tions)YH(
- \201)0 89 1 A(Chapter 5, "Addi)HY(tional)YH( Func)HY(tion)HY(al)HY(ity)YH(")89 0 TN TL()Ec /AF f D(\202.
- )EP(
-
-
-
-
-
- )0 1 4 H(2)WB 98 Sn()WB 7 Sn( C++/Tree Mapping)EA()EH(
-
- )0 2 5 H(2.1)WB 99 Sn()WB 8 Sn( Prelim)HY(i)HY(nary)YH( Infor)HY(ma)HY(tion)YH()EA()EH(
-
- )0 3 6 H(2.1.1)WB 100 Sn()WB 9 Sn( Iden)HY(ti)HY(fiers)YH()EA()EH(
-
- )0 P(XML Schema names may happen to be reserved C++ keywords or contain
- char)HY(ac)HY(ters)YH( that are illegal in C++ iden)HY(ti)HY(fiers)YH(. To avoid C++ compi)HY(la)HY(tion)YH(
- prob)HY(lems)YH(, such names are changed \201escaped\202 when mapped to C++. If an
- XML Schema name is a C++ keyword, the "_" suffix is added to it. All
- char)HY(ac)HY(ter)YH( of an XML Schema name that are not allowed in C++ iden)HY(ti)HY(fiers)YH(
- are replaced with "_".
- )EP(
-
- )0 P(For example, XML Schema name )SM(try)ES( will be mapped to
- C++ iden)HY(ti)HY(fier)YH( )SM(try_)ES(. Simi)HY(larly)YH(, XML Schema name
- )SM(strange.na-me)ES( will be mapped to C++ iden)HY(ti)HY(fier)YH(
- )SM(strange_na_me)ES(.
- )EP(
-
- )0 P(Further)HY(more)YH(, conflicts between type names and func)HY(tion)YH( names in the
- same scope are resolved using name escap)HY(ing)YH(. Such conflicts include
- both a global element \201which is mapped to a set of parsing and/or
- seri)HY(al)HY(iza)HY(tion)YH( func)HY(tions)YH( or element types, see )0 50 1 A(Section
- 2.9, "Mapping for Global Elements")50 0 TN TL()Ec /AF f D(\202 and a global type sharing the
- same name as well as a local element or attribute inside a type having
- the same name as the type itself.)EP(
-
- )0 P(For example, if we had a global type )SM(catalog)ES(
- and a global element with the same name then the type would be
- mapped to a C++ class with name )SM(catalog)ES( while the
- parsing func)HY(tions)YH( corre)HY(spond)HY(ing)YH( to the global element would have
- their names escaped as )SM(catalog_)ES(.
- )EP(
-
- )0 P(By default the mapping uses the so-called K&R \201Kernighan and
- Ritchie\202 iden)HY(ti)HY(fier)YH( naming conven)HY(tion)YH( which is also used through)HY(out)YH(
- this manual. In this conven)HY(tion)YH( both type and func)HY(tion)YH( names are in
- lower case and words are sepa)HY(rated)YH( by under)HY(scores)YH(. If your appli)HY(ca)HY(tion)YH(
- code or schemas use a differ)HY(ent)YH( nota)HY(tion)YH(, you may want to change the
- naming conven)HY(tion)YH( used by the mapping for consis)HY(tency)YH(.
- The compiler supports a set of widely-used naming conven)HY(tions)YH(
- that you can select with the )SM(--type-naming)ES( and
- )SM(--func)HY(tion)YH(-naming)ES( options. You can also further
- refine one of the prede)HY(fined)YH( conven)HY(tions)YH( or create a completely
- custom naming scheme by using the )SM(--*-regex)ES( options.
- For more detailed infor)HY(ma)HY(tion)YH( on these options refer to the NAMING
- CONVEN)HY(TION)YH( section in the )R9 2 A(XSD
- Compiler Command Line Manual)EA(.)EP(
-
- )0 3 7 H(2.1.2)WB 101 Sn()WB 10 Sn( Char)HY(ac)HY(ter)YH( Type and Encod)HY(ing)YH()EA()EH(
-
- )0 P(The code that imple)HY(ments)YH( the mapping, depend)HY(ing)YH( on the
- )SM(--char-type)ES( option, is gener)HY(ated)YH( using either
- )SM(char)ES( or )SM(wchar_t)ES( as the char)HY(ac)HY(ter)YH(
- type. In this docu)HY(ment)YH( code samples use symbol )SM(C)ES(
- to refer to the char)HY(ac)HY(ter)YH( type you have selected when trans)HY(lat)HY(ing)YH(
- your schemas, for example )SM(std::basic_string<C>)ES(.
- )EP(
-
- )0 P(Another aspect of the mapping that depends on the char)HY(ac)HY(ter)YH( type
- is char)HY(ac)HY(ter)YH( encod)HY(ing)YH(. For the )SM(char)ES( char)HY(ac)HY(ter)YH( type
- the default encod)HY(ing)YH( is UTF-8. Other supported encod)HY(ings)YH( are
- ISO-8859-1, Xerces-C++ Local Code Page \201LPC\202, as well as
- custom encod)HY(ings)YH( and can be selected with the
- )SM(--char-encod)HY(ing)YH()ES( command line option.)EP(
-
- )0 P(For the )SM(wchar_t)ES( char)HY(ac)HY(ter)YH( type the encod)HY(ing)YH( is
- auto)HY(mat)HY(i)HY(cally)YH( selected between UTF-16 and UTF-32/UCS-4 depend)HY(ing)YH(
- on the size of the )SM(wchar_t)ES( type. On some plat)HY(forms)YH(
- \201for example, Windows with Visual C++ and AIX with IBM XL C++\202
- )SM(wchar_t)ES( is 2 bytes long. For these plat)HY(forms)YH( the
- encod)HY(ing)YH( is UTF-16. On other plat)HY(forms)YH( )SM(wchar_t)ES( is 4 bytes
- long and UTF-32/UCS-4 is used.)EP(
-
- )0 3 8 H(2.1.3)WB 102 Sn()WB 11 Sn( XML Schema Names)HY(pace)YH()EA()EH(
-
- )0 P(The mapping relies on some prede)HY(fined)YH( types, classes, and func)HY(tions)YH(
- that are logi)HY(cally)YH( defined in the XML Schema names)HY(pace)YH( reserved for
- the XML Schema language \201)SM(http://www.w3.org/2001/XMLSchema)ES(\202.
- By default, this names)HY(pace)YH( is mapped to C++ names)HY(pace)YH(
- )SM(xml_schema)ES(. It is auto)HY(mat)HY(i)HY(cally)YH( acces)HY(si)HY(ble)YH(
- from a C++ compi)HY(la)HY(tion)YH( unit that includes a header file gener)HY(ated)YH(
- from an XML Schema defi)HY(ni)HY(tion)YH(.
- )EP(
-
- )0 P(Note that, if desired, the default mapping of this names)HY(pace)YH( can be
- changed as described in )0 19 1 A(Section 2.4, "Mapping for
- Names)HY(paces)YH(")19 0 TN TL()Ec /AF f D(.
- )EP(
-
-
- )0 3 9 H(2.1.4)WB 103 Sn()WB 12 Sn( Anony)HY(mous)YH( Types)EA()EH(
-
- )0 P(For the purpose of code gener)HY(a)HY(tion)YH(, anony)HY(mous)YH( types defined in
- XML Schema are auto)HY(mat)HY(i)HY(cally)YH( assigned names that are derived
- from enclos)HY(ing)YH( attributes and elements. Other)HY(wise)YH(, such types
- follows stan)HY(dard)YH( mapping rules for simple and complex type
- defi)HY(ni)HY(tions)YH( \201see )0 38 1 A(Section 2.6, "Mapping for Simple Types")38 0 TN TL()Ec /AF f D(
- and )0 43 1 A(Section 2.7, "Mapping for Complex Types")43 0 TN TL()Ec /AF f D(\202.
- For example, in the follow)HY(ing)YH( schema frag)HY(ment)YH(:
- )EP(
-
- ) 5 23 PR(<element name="object">
- <complexType>
- ...
- </complexType>
-</element>)RP(
-
- )0 P(The anony)HY(mous)YH( type defined inside element )SM(object)ES( will
- be given name )SM(object)ES(. The compiler has a number of
- options that control the process of anony)HY(mous)YH( type naming. For more
- infor)HY(ma)HY(tion)YH( refer to the )R9 2 A(XSD
- Compiler Command Line Manual)EA(.)EP(
-
-
- )0 2 10 H(2.2)WB 104 Sn()WB 13 Sn( Error Handling)EA()EH(
-
- )0 P(The mapping uses the C++ excep)HY(tion)YH( handling mech)HY(a)HY(nism)YH( as a primary way
- of report)HY(ing)YH( error condi)HY(tions)YH(. All excep)HY(tions)YH( that are spec)HY(i)HY(fied)YH( in
- this mapping derive from )SM(xml_schema::excep)HY(tion)YH()ES( which
- itself is derived from )SM(std::excep)HY(tion)YH()ES(:
- )EP(
-
- ) 14 60 PR(struct exception: virtual std::exception
-{
- friend
- std::basic_ostream<C>&
- operator<< \201std::basic_ostream<C>& os, const exception& e\202
- {
- e.print \201os\202;
- return os;
- }
-
-protected:
- virtual void
- print \201std::basic_ostream<C>&\202 const = 0;
-};)RP(
-
- )0 P(The excep)HY(tion)YH( hier)HY(ar)HY(chy)YH( supports "virtual" )SM(oper)HY(a)HY(tor)YH(<<)ES(
- which allows you to obtain diag)HY(nos)HY(tics)YH( corre)HY(spond)HY(ing)YH( to the thrown
- excep)HY(tion)YH( using the base excep)HY(tion)YH( inter)HY(face)YH(. For example:)EP(
-
- ) 8 38 PR(try
-{
- ...
-}
-catch \201const xml_schema::exception& e\202
-{
- cerr << e << endl;
-})RP(
-
- )0 P(The follow)HY(ing)YH( sub-sections describe excep)HY(tions)YH( thrown by the
- types that consti)HY(tute)YH( the object model.
- )0 64 1 A(Section 3.3, "Error Handling")64 0 TN TL()Ec /AF f D( of
- )0 61 1 A(Chapter 3, "Parsing")61 0 TN TL()Ec /AF f D( describes excep)HY(tions)YH(
- and error handling mech)HY(a)HY(nisms)YH( specific to the parsing func)HY(tions)YH(.
- )0 82 1 A(Section 4.4, "Error Handling")82 0 TN TL()Ec /AF f D( of
- )0 78 1 A(Chapter 4, "Seri)HY(al)HY(iza)HY(tion)YH(")78 0 TN TL()Ec /AF f D( describes excep)HY(tions)YH(
- and error handling mech)HY(a)HY(nisms)YH( specific to the seri)HY(al)HY(iza)HY(tion)YH( func)HY(tions)YH(.
- )EP(
-
-
- )0 3 11 H(2.2.1)WB 105 Sn()WB 14 Sn( )SM(xml_schema::dupli)HY(cate)YH(_id)ES()EA()EH(
-
- ) 10 48 PR(struct duplicate_id: virtual exception
-{
- duplicate_id \201const std::basic_string<C>& id\202;
-
- const std::basic_string<C>&
- id \201\202 const;
-
- virtual const char*
- what \201\202 const throw \201\202;
-};)RP(
-
- )0 P(The )SM(xml_schema::dupli)HY(cate)YH(_id)ES( is thrown when
- a conflict)HY(ing)YH( instance of )SM(xml_schema::id)ES( \201see
- )0 20 1 A(Section 2.5, "Mapping for Built-in Data Types")20 0 TN TL()Ec /AF f D(\202
- is added to a tree. The offend)HY(ing)YH( ID value can be obtained using
- the )SM(id)ES( func)HY(tion)YH(.
- )EP(
-
- )0 2 12 H(2.3)WB 106 Sn()WB 15 Sn( Mapping for )SM(import)ES( and )SM(include)ES()EA()EH(
-
- )0 3 13 H(2.3.1)WB 107 Sn()WB 16 Sn( Import)EA()EH(
-
- )0 P(The XML Schema )SM(import)ES( element is mapped to the C++
- Prepro)HY(ces)HY(sor)YH( )SM(#include)ES( direc)HY(tive)YH(. The value of
- the )SM(schemaLo)HY(ca)HY(tion)YH()ES( attribute is used to derive
- the name of the header file that appears in the )SM(#include)ES(
- direc)HY(tive)YH(. For instance:
- )EP(
-
- ) 2 53 PR(<import namespace="http://www.codesynthesis.com/test"
- schemaLocation="test.xsd"/>)RP(
-
- )0 P(is mapped to:)EP(
-
- ) 1 19 PR(#include "test.hxx")RP(
-
- )0 P(Note that you will need to compile imported schemas sepa)HY(rately)YH(
- in order to produce corre)HY(spond)HY(ing)YH( header files.)EP(
-
- )0 3 14 H(2.3.2)WB 108 Sn()WB 17 Sn( Inclu)HY(sion)YH( with Target Names)HY(pace)YH()EA()EH(
-
- )0 P(The XML Schema )SM(include)ES( element which refers to a schema
- with a target names)HY(pace)YH( or appears in a schema without a target names)HY(pace)YH(
- follows the same mapping rules as the )SM(import)ES( element,
- see )0 16 1 A(Section 2.3.1, "Import")16 0 TN TL()Ec /AF f D(.
- )EP(
-
- )0 3 15 H(2.3.3)WB 109 Sn()WB 18 Sn( Inclu)HY(sion)YH( without Target Names)HY(pace)YH()EA()EH(
-
- )0 P(For the XML Schema )SM(include)ES( element which refers to a schema
- without a target names)HY(pace)YH( and appears in a schema with a target
- names)HY(pace)YH( \201such inclu)HY(sion)YH( some)HY(times)YH( called "chameleon inclu)HY(sion)YH("\202,
- decla)HY(ra)HY(tions)YH( and defi)HY(ni)HY(tions)YH( from the included schema are gener)HY(ated)YH(
- in-line in the names)HY(pace)YH( of the includ)HY(ing)YH( schema as if they were
- declared and defined there verba)HY(tim)YH(. For example, consider the
- follow)HY(ing)YH( two schemas:
- )EP(
-
- ) 11 60 PR(<-- common.xsd -->
-<schema>
- <complexType name="type">
- ...
- </complexType>
-</schema>
-
-<-- test.xsd -->
-<schema targetNamespace="http://www.codesynthesis.com/test">
- <include schemaLocation="common.xsd"/>
-</schema>)RP(
-
- )0 P(The frag)HY(ment)YH( of inter)HY(est)YH( from the gener)HY(ated)YH( header file for
- )SM(text.xsd)ES( would look like this:)EP(
-
- ) 8 14 PR(// test.hxx
-namespace test
-{
- class type
- {
- ...
- };
-})RP(
-
- )0 2 16 H(2.4)WB 110 Sn()WB 19 Sn( Mapping for Names)HY(paces)YH()EA()EH(
-
- )0 P(An XML Schema names)HY(pace)YH( is mapped to one or more nested C++
- names)HY(paces)YH(. XML Schema names)HY(paces)YH( are iden)HY(ti)HY(fied)YH( by URIs.
- By default, a names)HY(pace)YH( URI is mapped to a sequence of
- C++ names)HY(pace)YH( names by remov)HY(ing)YH( the proto)HY(col)YH( and host parts
- and split)HY(ting)YH( the rest into a sequence of names with ')SM(/)ES('
- as the name sepa)HY(ra)HY(tor)YH(. For instance:
- )EP(
-
- ) 3 67 PR(<schema targetNamespace="http://www.codesynthesis.com/system/test">
- ...
-</schema>)RP(
-
- )0 P(is mapped to:)EP(
-
- ) 7 16 PR(namespace system
-{
- namespace test
- {
- ...
- }
-})RP(
-
- )0 P(The default mapping of names)HY(pace)YH( URIs to C++ names)HY(pace)YH( names can be
- altered using the )SM(--names)HY(pace)YH(-map)ES( and
- )SM(--names)HY(pace)YH(-regex)ES( options. See the
- )R9 2 A(XSD
- Compiler Command Line Manual)EA( for more infor)HY(ma)HY(tion)YH(.
- )EP(
-
- )0 2 17 H(2.5)WB 111 Sn()WB 20 Sn( Mapping for Built-in Data Types)EA()EH(
-
- )0 P(The mapping of XML Schema built-in data types to C++ types is
- summa)HY(rized)YH( in the table below.)EP(
-
-
- )0 PT(
-
- )0 P(All XML Schema built-in types are mapped to C++ classes that are
- derived from the )SM(xml_schema::simple_type)ES( class except
- where the mapping is to a funda)HY(men)HY(tal)YH( C++ type.)EP(
-
- )0 P(The )SM(sequence)ES( class template is defined in an
- imple)HY(men)HY(ta)HY(tion)YH(-specific names)HY(pace)YH(. It conforms to the
- sequence inter)HY(face)YH( as defined by the ISO/ANSI Stan)HY(dard)YH( for
- C++ \201ISO/IEC 14882:1998, Section 23.1.1, "Sequences"\202.
- Prac)HY(ti)HY(cally)YH(, this means that you can treat such a sequence
- as if it was )SM(std::vector)ES(. One notable exten)HY(sion)YH(
- to the stan)HY(dard)YH( inter)HY(face)YH( that is avail)HY(able)YH( only for
- sequences of non-funda)HY(men)HY(tal)YH( C++ types is the addi)HY(tion)YH( of
- the over)HY(loaded)YH( )SM(push_back)ES( and )SM(insert)ES(
- member func)HY(tions)YH( which instead of the constant refer)HY(ence)YH(
- to the element type accept auto)HY(matic)YH( pointer to the element
- type. These func)HY(tions)YH( assume owner)HY(ship)YH( of the pointed to
- object and resets the passed auto)HY(matic)YH( pointer.
- )EP(
-
- )0 3 18 H(2.5.1)WB 112 Sn()WB 22 Sn( Inher)HY(i)HY(tance)YH( from Built-in Data Types)EA()EH(
-
- )0 P(In cases where the mapping calls for an inher)HY(i)HY(tance)YH( from a built-in
- type which is mapped to a funda)HY(men)HY(tal)YH( C++ type, a proxy type is
- used instead of the funda)HY(men)HY(tal)YH( C++ type \201C++ does not allow
- inher)HY(i)HY(tance)YH( from funda)HY(men)HY(tal)YH( types\202. For instance:)EP(
-
- ) 3 27 PR(<simpleType name="my_int">
- <restriction base="int"/>
-</simpleType>)RP(
-
- )0 P(is mapped to:)EP(
-
- ) 4 42 PR(class my_int: public fundamental_base<int>
-{
- ...
-};)RP(
-
- )0 P(The )SM(funda)HY(men)HY(tal)YH(_base)ES( class template provides a close
- emula)HY(tion)YH( \201though not exact\202 of a funda)HY(men)HY(tal)YH( C++ type.
- It is defined in an imple)HY(men)HY(ta)HY(tion)YH(-specific names)HY(pace)YH( and has the
- follow)HY(ing)YH( inter)HY(face)YH(:)EP(
-
- ) 22 44 PR(template <typename X>
-class fundamental_base: public simple_type
-{
-public:
- fundamental_base \201\202;
- fundamental_base \201X\202
- fundamental_base \201const fundamental_base&\202
-
-public:
- fundamental_base&
- operator= \201const X&\202;
-
-public:
- operator const X & \201\202 const;
- operator X& \201\202;
-
- template <typename Y>
- operator Y \201\202 const;
-
- template <typename Y>
- operator Y \201\202;
-};)RP(
-
- )0 3 19 H(2.5.2)WB 113 Sn()WB 23 Sn( Mapping for )SM(anyType)ES()EA()EH(
-
- )0 P(The XML Schema )SM(anyType)ES( built-in data type is mapped to the
- )SM(xml_schema::type)ES( C++ class:)EP(
-
- ) 27 26 PR(class type
-{
-public:
- virtual
- ~type \201\202;
-
-public:
- type \201\202;
- type \201const type&\202;
-
-public:
- type&
- operator= \201const type&\202;
-
-public:
- virtual type*
- _clone \201\202 const;
-
- // DOM association.
- //
-public:
- const xercesc::DOMNode*
- _node \201\202 const;
-
- xercesc::DOMNode*
- _node \201\202;
-};)RP(
-
- )0 P(For more infor)HY(ma)HY(tion)YH( about DOM asso)HY(ci)HY(a)HY(tion)YH( refer to
- )0 90 1 A(Section 5.1, "DOM Asso)HY(ci)HY(a)HY(tion)YH(")90 0 TN TL()Ec /AF f D(.)EP(
-
- )0 3 20 H(2.5.3)WB 114 Sn()WB 24 Sn( Mapping for )SM(anySim)HY(ple)HY(Type)YH()ES()EA()EH(
-
- )0 P(The XML Schema )SM(anySim)HY(ple)HY(Type)YH()ES( built-in data type is mapped
- to the )SM(xml_schema::simple_type)ES( C++ class:)EP(
-
- ) 14 35 PR(class simple_type: public type
-{
-public:
- simple_type \201\202;
- simple_type \201const simple_type&\202;
-
-public:
- simple_type&
- operator= \201const simple_type&\202;
-
-public:
- virtual simple_type*
- _clone \201\202 const;
-};)RP(
-
-
- )0 3 21 H(2.5.4)WB 115 Sn()WB 25 Sn( Mapping for )SM(QName)ES()EA()EH(
-
- )0 P(The XML Schema )SM(QName)ES( built-in data type is mapped to the
- )SM(xml_schema::qname)ES( C++ class:)EP(
-
- ) 25 36 PR(class qname: public simple_type
-{
-public:
- qname \201const ncname&\202;
- qname \201const uri&, const ncname&\202;
- qname \201const qname&\202;
-
-public:
- qname&
- operator= \201const qname&\202;
-
-public:
- virtual qname*
- _clone \201\202 const;
-
-public:
- bool
- qualified \201\202 const;
-
- const uri&
- namespace_ \201\202 const;
-
- const ncname&
- name \201\202 const;
-};)RP(
-
- )0 P(The )SM(qual)HY(i)HY(fied)YH()ES( acces)HY(sor)YH( func)HY(tion)YH( can be used to deter)HY(mine)YH(
- if the name is qual)HY(i)HY(fied)YH(.)EP(
-
- )0 3 22 H(2.5.5)WB 116 Sn()WB 26 Sn( Mapping for )SM(IDREF)ES()EA()EH(
-
- )0 P(The XML Schema )SM(IDREF)ES( built-in data type is mapped to the
- )SM(xml_schema::idref)ES( C++ class. This class imple)HY(ments)YH( the
- smart pointer C++ idiom:)EP(
-
- ) 56 44 PR(class idref: public ncname
-{
-public:
- idref \201const C* s\202;
- idref \201const C* s, std::size_t n\202;
- idref \201std::size_t n, C c\202;
- idref \201const std::basic_string<C>&\202;
- idref \201const std::basic_string<C>&,
- std::size_t pos,
- std::size_t n = npos\202;
-
-public:
- idref \201const idref&\202;
-
-public:
- virtual idref*
- _clone \201\202 const;
-
-public:
- idref&
- operator= \201C c\202;
-
- idref&
- operator= \201const C* s\202;
-
- idref&
- operator= \201const std::basic_string<C>&\202
-
- idref&
- operator= \201const idref&\202;
-)WR(
-public:
- const type*
- operator-> \201\202 const;
-
- type*
- operator-> \201\202;
-
- const type&
- operator* \201\202 const;
-
- type&
- operator* \201\202;
-
- const type*
- get \201\202 const;
-
- type*
- get \201\202;
-
- // Conversion to bool.
- //
-public:
- typedef void \201idref::*bool_convertible\202\201\202;
- operator bool_convertible \201\202 const;
-};)RP(
-
- )0 P(The object, )SM(idref)ES( instance refers to, is the imme)HY(di)HY(ate)YH(
- container of the match)HY(ing)YH( )SM(id)ES( instance. For example,
- with the follow)HY(ing)YH( instance docu)HY(ment)YH( and schema:
- )EP(
-
-
- ) 22 49 PR(<!-- test.xml -->
-<root>
- <object id="obj-1" text="hello"/>
- <reference>obj-1</reference>
-</root>
-
-<!-- test.xsd -->
-<schema>
- <complexType name="object_type">
- <attribute name="id" type="ID"/>
- <attribute name="text" type="string"/>
- </complexType>
-
- <complexType name="root_type">
- <sequence>
- <element name="object" type="object_type"/>
- <element name="reference" type="IDREF"/>
- </sequence>
- </complexType>
-
- <element name="root" type="root_type"/>
-</schema>)RP(
-
- )0 P(The )SM(ref)ES( instance in the code below will refer to
- an object of type )SM(object_type)ES(:)EP(
-
- ) 4 53 PR(root_type& root = ...;
-xml_schema::idref& ref \201root.reference \201\202\202;
-object_type& obj \201dynamic_cast<object_type&> \201*ref\202\202;
-cout << obj.text \201\202 << endl;)RP(
-
- )0 P(The smart pointer inter)HY(face)YH( of the )SM(idref)ES( class always
- returns a pointer or refer)HY(ence)YH( to )SM(xml_schema::type)ES(.
- This means that you will need to manu)HY(ally)YH( cast such pointer or
- refer)HY(ence)YH( to its real \201dynamic\202 type before you can use it \201unless
- all you need is the base inter)HY(face)YH( provided by
- )SM(xml_schema::type)ES(\202. As a special exten)HY(sion)YH( to the XML
- Schema language, the mapping supports static typing of )SM(idref)ES(
- refer)HY(ences)YH( by employ)HY(ing)YH( the )SM(refType)ES( exten)HY(sion)YH( attribute.
- The follow)HY(ing)YH( example illus)HY(trates)YH( this mech)HY(a)HY(nism)YH(:
- )EP(
-
- ) 11 72 PR(<!-- test.xsd -->
-<schema
- xmlns:xse="http://www.codesynthesis.com/xmlns/xml-schema-extension">
-
- ...
-
- <element name="reference" type="IDREF" xse:refType="object_type"/>
-
- ...
-
-</schema>)RP(
-
- )0 P(With this modi)HY(fi)HY(ca)HY(tion)YH( we do not need to do manual casting anymore:
- )EP(
-
- ) 4 51 PR(root_type& root = ...;
-root_type::reference_type& ref \201root.reference \201\202\202;
-object_type& obj \201*ref\202;
-cout << ref->text \201\202 << endl;)RP(
-
-
- )0 3 23 H(2.5.6)WB 117 Sn()WB 27 Sn( Mapping for )SM(base64Binary)ES( and
- )SM(hexBi)HY(nary)YH()ES()EA()EH(
-
- )0 P(The XML Schema )SM(base64Binary)ES( and )SM(hexBi)HY(nary)YH()ES(
- built-in data types are mapped to the
- )SM(xml_schema::base64_binary)ES( and
- )SM(xml_schema::hex_binary)ES( C++ classes, respec)HY(tively)YH(. The
- )SM(base64_binary)ES( and )SM(hex_binary)ES( classes
- support a simple buffer abstrac)HY(tion)YH( by inher)HY(it)HY(ing)YH( from the
- )SM(xml_schema::buffer)ES( class:
- )EP(
-
- ) 64 58 PR(class bounds: public virtual exception
-{
-public:
- virtual const char*
- what \201\202 const throw \201\202;
-};
-
-class buffer
-{
-public:
- typedef std::size_t size_t;
-
-public:
- buffer \201size_t size = 0\202;
- buffer \201size_t size, size_t capacity\202;
- buffer \201const void* data, size_t size\202;
- buffer \201const void* data, size_t size, size_t capacity\202;
- buffer \201void* data,
- size_t size,
- size_t capacity,
- bool assume_ownership\202;
-
-public:
- buffer \201const buffer&\202;
-
- buffer&
- operator= \201const buffer&\202;
-
- void
- swap \201buffer&\202;
-)WR(
-public:
- size_t
- capacity \201\202 const;
-
- bool
- capacity \201size_t\202;
-
-public:
- size_t
- size \201\202 const;
-
- bool
- size \201size_t\202;
-
-public:
- const char*
- data \201\202 const;
-
- char*
- data \201\202;
-
- const char*
- begin \201\202 const;
-
- char*
- begin \201\202;
-
- const char*
- end \201\202 const;
-)WR(
- char*
- end \201\202;
-};)RP(
-
- )0 P(The last over)HY(loaded)YH( construc)HY(tor)YH( reuses an exist)HY(ing)YH( data buffer instead
- of making a copy. If the )SM(assume_owner)HY(ship)YH()ES( argu)HY(ment)YH( is
- )SM(true)ES(, the instance assumes owner)HY(ship)YH( of the
- memory block pointed to by the )SM(data)ES( argu)HY(ment)YH( and will
- even)HY(tu)HY(ally)YH( release it by calling )SM(oper)HY(a)HY(tor)YH( delete)ES(. The
- )SM(capac)HY(ity)YH()ES( and )SM(size)ES( modi)HY(fier)YH( func)HY(tions)YH( return
- )SM(true)ES( if the under)HY(ly)HY(ing)YH( buffer has moved.
- )EP(
-
- )0 P(The )SM(bounds)ES( excep)HY(tion)YH( is thrown if the construc)HY(tor)YH(
- argu)HY(ments)YH( violate the )SM(\201size\240<=\240capac)HY(ity)YH(\202)ES(
- constraint.)EP(
-
- )0 P(The )SM(base64_binary)ES( and )SM(hex_binary)ES( classes
- support the )SM(buffer)ES( inter)HY(face)YH( and perform auto)HY(matic)YH(
- decod)HY(ing)YH(/encod)HY(ing)YH( from/to the Base64 and Hex formats, respec)HY(tively)YH(:
- )EP(
-
- ) 25 65 PR(class base64_binary: public simple_type, public buffer
-{
-public:
- base64_binary \201size_t size = 0\202;
- base64_binary \201size_t size, size_t capacity\202;
- base64_binary \201const void* data, size_t size\202;
- base64_binary \201const void* data, size_t size, size_t capacity\202;
- base64_binary \201void* data,
- size_t size,
- size_t capacity,
- bool assume_ownership\202;
-
-public:
- base64_binary \201const base64_binary&\202;
-
- base64_binary&
- operator= \201const base64_binary&\202;
-
- virtual base64_binary*
- _clone \201\202 const;
-
-public:
- std::basic_string<C>
- encode \201\202 const;
-};)RP(
-
- ) 25 62 PR(class hex_binary: public simple_type, public buffer
-{
-public:
- hex_binary \201size_t size = 0\202;
- hex_binary \201size_t size, size_t capacity\202;
- hex_binary \201const void* data, size_t size\202;
- hex_binary \201const void* data, size_t size, size_t capacity\202;
- hex_binary \201void* data,
- size_t size,
- size_t capacity,
- bool assume_ownership\202;
-
-public:
- hex_binary \201const hex_binary&\202;
-
- hex_binary&
- operator= \201const hex_binary&\202;
-
- virtual hex_binary*
- _clone \201\202 const;
-
-public:
- std::basic_string<C>
- encode \201\202 const;
-};)RP(
-
-
- )0 2 24 H(2.5.7)WB 118 Sn()WB 28 Sn( Time Zone Repre)HY(sen)HY(ta)HY(tion)YH()EA()EH(
-
- )0 P(The )SM(date)ES(, )SM(date)HY(Time)YH()ES(, )SM(gDay)ES(,
- )SM(gMonth)ES(, )SM(gMon)HY(th)HY(Day)YH()ES(, )SM(gYear)ES(,
- )SM(gYear)HY(Month)YH()ES(, and )SM(time)ES( XML Schema built-in
- types all include an optional time zone compo)HY(nent)YH(. The follow)HY(ing)YH(
- )SM(xml_schema::time_zone)ES( base class is used to repre)HY(sent)YH(
- this infor)HY(ma)HY(tion)YH(:)EP(
-
- ) 30 48 PR(class time_zone
-{
-public:
- time_zone \201\202;
- time_zone \201short hours, short minutes\202;
-
- bool
- zone_present \201\202 const;
-
- void
- zone_reset \201\202;
-
- short
- zone_hours \201\202 const;
-
- void
- zone_hours \201short\202;
-
- short
- zone_minutes \201\202 const;
-
- void
- zone_minutes \201short\202;
-};
-
-bool
-operator== \201const time_zone&, const time_zone&\202;
-
-bool
-operator!= \201const time_zone&, const time_zone&\202;)RP(
-
- )0 P(The )SM(zone_present\201\202)ES( acces)HY(sor)YH( func)HY(tion)YH( returns )SM(true)ES(
- if the time zone is spec)HY(i)HY(fied)YH(. The )SM(zone_reset\201\202)ES( modi)HY(fier)YH(
- func)HY(tion)YH( resets the time zone object to the )EM(not spec)HY(i)HY(fied)YH()ES(
- state. If the time zone offset is nega)HY(tive)YH( then both hours and
- minutes compo)HY(nents)YH( are repre)HY(sented)YH( as nega)HY(tive)YH( inte)HY(gers)YH(.)EP(
-
-
- )0 2 25 H(2.5.8)WB 119 Sn()WB 29 Sn( Mapping for )SM(date)ES()EA()EH(
-
- )0 P(The XML Schema )SM(date)ES( built-in data type is mapped to the
- )SM(xml_schema::date)ES( C++ class which repre)HY(sents)YH( a year, a day,
- and a month with an optional time zone. Its inter)HY(face)YH( is presented
- below. For more infor)HY(ma)HY(tion)YH( on the base )SM(xml_schema::time_zone)ES(
- class refer to )0 28 1 A(Section 2.5.7, "Time Zone
- Repre)HY(sen)HY(ta)HY(tion)YH(")28 0 TN TL()Ec /AF f D(.)EP(
-
- ) 41 60 PR(class date: public simple_type, public time_zone
-{
-public:
- date \201int year, unsigned short month, unsigned short day\202;
- date \201int year, unsigned short month, unsigned short day,
- short zone_hours, short zone_minutes\202;
-
-public:
- date \201const date&\202;
-
- date&
- operator= \201const date&\202;
-
- virtual date*
- _clone \201\202 const;
-
-public:
- int
- year \201\202 const;
-
- void
- year \201int\202;
-
- unsigned short
- month \201\202 const;
-
- void
- month \201unsigned short\202;
-
- unsigned short
- day \201\202 const;)WR(
-
- void
- day \201unsigned short\202;
-};
-
-bool
-operator== \201const date&, const date&\202;
-
-bool
-operator!= \201const date&, const date&\202;)RP(
-
- )0 2 26 H(2.5.9)WB 120 Sn()WB 30 Sn( Mapping for )SM(date)HY(Time)YH()ES()EA()EH(
-
- )0 P(The XML Schema )SM(date)HY(Time)YH()ES( built-in data type is mapped to the
- )SM(xml_schema::date_time)ES( C++ class which repre)HY(sents)YH( a year, a month,
- a day, hours, minutes, and seconds with an optional time zone. Its inter)HY(face)YH(
- is presented below. For more infor)HY(ma)HY(tion)YH( on the base
- )SM(xml_schema::time_zone)ES( class refer to )0 28 1 A(Section
- 2.5.7, "Time Zone Repre)HY(sen)HY(ta)HY(tion)YH(")28 0 TN TL()Ec /AF f D(.)EP(
-
- ) 62 67 PR(class date_time: public simple_type, public time_zone
-{
-public:
- date_time \201int year, unsigned short month, unsigned short day,
- unsigned short hours, unsigned short minutes,
- double seconds\202;
-
- date_time \201int year, unsigned short month, unsigned short day,
- unsigned short hours, unsigned short minutes,
- double seconds, short zone_hours, short zone_minutes\202;
-public:
- date_time \201const date_time&\202;
-
- date_time&
- operator= \201const date_time&\202;
-
- virtual date_time*
- _clone \201\202 const;
-
-public:
- int
- year \201\202 const;
-
- void
- year \201int\202;
-
- unsigned short
- month \201\202 const;
-
- void
- month \201unsigned short\202;)WR(
-
- unsigned short
- day \201\202 const;
-
- void
- day \201unsigned short\202;
-
- unsigned short
- hours \201\202 const;
-
- void
- hours \201unsigned short\202;
-
- unsigned short
- minutes \201\202 const;
-
- void
- minutes \201unsigned short\202;
-
- double
- seconds \201\202 const;
-
- void
- seconds \201double\202;
-};
-
-bool
-operator== \201const date_time&, const date_time&\202;
-
-bool)WR(
-operator!= \201const date_time&, const date_time&\202;)RP(
-
-
- )0 2 27 H(2.5.10)WB 121 Sn()WB 31 Sn( Mapping for )SM(dura)HY(tion)YH()ES()EA()EH(
-
- )0 P(The XML Schema )SM(dura)HY(tion)YH()ES( built-in data type is mapped to the
- )SM(xml_schema::dura)HY(tion)YH()ES( C++ class which repre)HY(sents)YH( a poten)HY(tially)YH(
- nega)HY(tive)YH( dura)HY(tion)YH( in the form of years, months, days, hours, minutes,
- and seconds. Its inter)HY(face)YH( is presented below.)EP(
-
- ) 64 71 PR(class duration: public simple_type
-{
-public:
- duration \201bool negative,
- unsigned int years, unsigned int months, unsigned int days,
- unsigned int hours, unsigned int minutes, double seconds\202;
-public:
- duration \201const duration&\202;
-
- duration&
- operator= \201const duration&\202;
-
- virtual duration*
- _clone \201\202 const;
-
-public:
- bool
- negative \201\202 const;
-
- void
- negative \201bool\202;
-
- unsigned int
- years \201\202 const;
-
- void
- years \201unsigned int\202;
-
- unsigned int
- months \201\202 const;
-)WR(
- void
- months \201unsigned int\202;
-
- unsigned int
- days \201\202 const;
-
- void
- days \201unsigned int\202;
-
- unsigned int
- hours \201\202 const;
-
- void
- hours \201unsigned int\202;
-
- unsigned int
- minutes \201\202 const;
-
- void
- minutes \201unsigned int\202;
-
- double
- seconds \201\202 const;
-
- void
- seconds \201double\202;
-};
-
-bool
-operator== \201const duration&, const duration&\202;)WR(
-
-bool
-operator!= \201const duration&, const duration&\202;)RP(
-
-
- )0 2 28 H(2.5.11)WB 122 Sn()WB 32 Sn( Mapping for )SM(gDay)ES()EA()EH(
-
- )0 P(The XML Schema )SM(gDay)ES( built-in data type is mapped to the
- )SM(xml_schema::gday)ES( C++ class which repre)HY(sents)YH( a day of the
- month with an optional time zone. Its inter)HY(face)YH( is presented below.
- For more infor)HY(ma)HY(tion)YH( on the base )SM(xml_schema::time_zone)ES(
- class refer to )0 28 1 A(Section 2.5.7, "Time Zone
- Repre)HY(sen)HY(ta)HY(tion)YH(")28 0 TN TL()Ec /AF f D(.)EP(
-
- ) 29 66 PR(class gday: public simple_type, public time_zone
-{
-public:
- explicit
- gday \201unsigned short day\202;
- gday \201unsigned short day, short zone_hours, short zone_minutes\202;
-
-public:
- gday \201const gday&\202;
-
- gday&
- operator= \201const gday&\202;
-
- virtual gday*
- _clone \201\202 const;
-
-public:
- unsigned short
- day \201\202 const;
-
- void
- day \201unsigned short\202;
-};
-
-bool
-operator== \201const gday&, const gday&\202;
-
-bool
-operator!= \201const gday&, const gday&\202;)RP(
-
-
- )0 2 29 H(2.5.12)WB 123 Sn()WB 33 Sn( Mapping for )SM(gMonth)ES()EA()EH(
-
- )0 P(The XML Schema )SM(gMonth)ES( built-in data type is mapped to the
- )SM(xml_schema::gmonth)ES( C++ class which repre)HY(sents)YH( a month of the
- year with an optional time zone. Its inter)HY(face)YH( is presented below.
- For more infor)HY(ma)HY(tion)YH( on the base )SM(xml_schema::time_zone)ES(
- class refer to )0 28 1 A(Section 2.5.7, "Time Zone
- Repre)HY(sen)HY(ta)HY(tion)YH(")28 0 TN TL()Ec /AF f D(.)EP(
-
- ) 30 50 PR(class gmonth: public simple_type, public time_zone
-{
-public:
- explicit
- gmonth \201unsigned short month\202;
- gmonth \201unsigned short month,
- short zone_hours, short zone_minutes\202;
-
-public:
- gmonth \201const gmonth&\202;
-
- gmonth&
- operator= \201const gmonth&\202;
-
- virtual gmonth*
- _clone \201\202 const;
-
-public:
- unsigned short
- month \201\202 const;
-
- void
- month \201unsigned short\202;
-};
-
-bool
-operator== \201const gmonth&, const gmonth&\202;
-
-bool
-operator!= \201const gmonth&, const gmonth&\202;)RP(
-
-
- )0 2 30 H(2.5.13)WB 124 Sn()WB 34 Sn( Mapping for )SM(gMon)HY(th)HY(Day)YH()ES()EA()EH(
-
- )0 P(The XML Schema )SM(gMon)HY(th)HY(Day)YH()ES( built-in data type is mapped to the
- )SM(xml_schema::gmonth_day)ES( C++ class which repre)HY(sents)YH( a day and
- a month of the year with an optional time zone. Its inter)HY(face)YH( is presented
- below. For more infor)HY(ma)HY(tion)YH( on the base )SM(xml_schema::time_zone)ES(
- class refer to )0 28 1 A(Section 2.5.7, "Time Zone
- Repre)HY(sen)HY(ta)HY(tion)YH(")28 0 TN TL()Ec /AF f D(.)EP(
-
- ) 35 56 PR(class gmonth_day: public simple_type, public time_zone
-{
-public:
- gmonth_day \201unsigned short month, unsigned short day\202;
- gmonth_day \201unsigned short month, unsigned short day,
- short zone_hours, short zone_minutes\202;
-
-public:
- gmonth_day \201const gmonth_day&\202;
-
- gmonth_day&
- operator= \201const gmonth_day&\202;
-
- virtual gmonth_day*
- _clone \201\202 const;
-
-public:
- unsigned short
- month \201\202 const;
-
- void
- month \201unsigned short\202;
-
- unsigned short
- day \201\202 const;
-
- void
- day \201unsigned short\202;
-};
-
-bool)WR(
-operator== \201const gmonth_day&, const gmonth_day&\202;
-
-bool
-operator!= \201const gmonth_day&, const gmonth_day&\202;)RP(
-
-
- )0 2 31 H(2.5.14)WB 125 Sn()WB 35 Sn( Mapping for )SM(gYear)ES()EA()EH(
-
- )0 P(The XML Schema )SM(gYear)ES( built-in data type is mapped to the
- )SM(xml_schema::gyear)ES( C++ class which repre)HY(sents)YH( a year with
- an optional time zone. Its inter)HY(face)YH( is presented below. For more
- infor)HY(ma)HY(tion)YH( on the base )SM(xml_schema::time_zone)ES( class refer
- to )0 28 1 A(Section 2.5.7, "Time Zone Repre)HY(sen)HY(ta)HY(tion)YH(")28 0 TN TL()Ec /AF f D(.)EP(
-
- ) 29 57 PR(class gyear: public simple_type, public time_zone
-{
-public:
- explicit
- gyear \201int year\202;
- gyear \201int year, short zone_hours, short zone_minutes\202;
-
-public:
- gyear \201const gyear&\202;
-
- gyear&
- operator= \201const gyear&\202;
-
- virtual gyear*
- _clone \201\202 const;
-
-public:
- int
- year \201\202 const;
-
- void
- year \201int\202;
-};
-
-bool
-operator== \201const gyear&, const gyear&\202;
-
-bool
-operator!= \201const gyear&, const gyear&\202;)RP(
-
-
- )0 2 32 H(2.5.15)WB 126 Sn()WB 36 Sn( Mapping for )SM(gYear)HY(Month)YH()ES()EA()EH(
-
- )0 P(The XML Schema )SM(gYear)HY(Month)YH()ES( built-in data type is mapped to
- the )SM(xml_schema::gyear_month)ES( C++ class which repre)HY(sents)YH(
- a year and a month with an optional time zone. Its inter)HY(face)YH( is presented
- below. For more infor)HY(ma)HY(tion)YH( on the base )SM(xml_schema::time_zone)ES(
- class refer to )0 28 1 A(Section 2.5.7, "Time Zone
- Repre)HY(sen)HY(ta)HY(tion)YH(")28 0 TN TL()Ec /AF f D(.)EP(
-
- ) 34 55 PR(class gyear_month: public simple_type, public time_zone
-{
-public:
- gyear_month \201int year, unsigned short month\202;
- gyear_month \201int year, unsigned short month,
- short zone_hours, short zone_minutes\202;
-public:
- gyear_month \201const gyear_month&\202;
-
- gyear_month&
- operator= \201const gyear_month&\202;
-
- virtual gyear_month*
- _clone \201\202 const;
-
-public:
- int
- year \201\202 const;
-
- void
- year \201int\202;
-
- unsigned short
- month \201\202 const;
-
- void
- month \201unsigned short\202;
-};
-
-bool
-operator== \201const gyear_month&, const gyear_month&\202;)WR(
-
-bool
-operator!= \201const gyear_month&, const gyear_month&\202;)RP(
-
-
- )0 2 33 H(2.5.16)WB 127 Sn()WB 37 Sn( Mapping for )SM(time)ES()EA()EH(
-
- )0 P(The XML Schema )SM(time)ES( built-in data type is mapped to
- the )SM(xml_schema::time)ES( C++ class which repre)HY(sents)YH( hours,
- minutes, and seconds with an optional time zone. Its inter)HY(face)YH( is
- presented below. For more infor)HY(ma)HY(tion)YH( on the base
- )SM(xml_schema::time_zone)ES( class refer to
- )0 28 1 A(Section 2.5.7, "Time Zone Repre)HY(sen)HY(ta)HY(tion)YH(")28 0 TN TL()Ec /AF f D(.)EP(
-
- ) 41 70 PR(class time: public simple_type, public time_zone
-{
-public:
- time \201unsigned short hours, unsigned short minutes, double seconds\202;
- time \201unsigned short hours, unsigned short minutes, double seconds,
- short zone_hours, short zone_minutes\202;
-
-public:
- time \201const time&\202;
-
- time&
- operator= \201const time&\202;
-
- virtual time*
- _clone \201\202 const;
-
-public:
- unsigned short
- hours \201\202 const;
-
- void
- hours \201unsigned short\202;
-
- unsigned short
- minutes \201\202 const;
-
- void
- minutes \201unsigned short\202;
-
- double
- seconds \201\202 const;)WR(
-
- void
- seconds \201double\202;
-};
-
-bool
-operator== \201const time&, const time&\202;
-
-bool
-operator!= \201const time&, const time&\202;)RP(
-
-
-
-
- )0 2 34 H(2.6)WB 128 Sn()WB 38 Sn( Mapping for Simple Types)EA()EH(
-
- )0 P(An XML Schema simple type is mapped to a C++ class with the same
- name as the simple type. The class defines a public copy construc)HY(tor)YH(,
- a public copy assign)HY(ment)YH( oper)HY(a)HY(tor)YH(, and a public virtual
- )SM(_clone)ES( func)HY(tion)YH(. The )SM(_clone)ES( func)HY(tion)YH( is
- declared )SM(const)ES(, does not take any argu)HY(ments)YH(, and returns
- a pointer to a complete copy of the instance allo)HY(cated)YH( in the free
- store. The )SM(_clone)ES( func)HY(tion)YH( shall be used to make copies
- when static type and dynamic type of the instance may differ \201see
- )0 54 1 A(Section 2.11, "Mapping for )SM(xsi:type)ES(
- and Substi)HY(tu)HY(tion)YH( Groups")54 0 TN TL()Ec /AF f D(\202. For instance:)EP(
-
- ) 3 26 PR(<simpleType name="object">
- ...
-</simpleType>)RP(
-
- )0 P(is mapped to:)EP(
-
- ) 16 28 PR(class object: ...
-{
-public:
- object \201const object&\202;
-
-public:
- object&
- operator= \201const object&\202;
-
-public:
- virtual object*
- _clone \201\202 const;
-
- ...
-
-};)RP(
-
- )0 P(The base class spec)HY(i)HY(fi)HY(ca)HY(tion)YH( and the rest of the class defi)HY(ni)HY(tion)YH(
- depend on the type of deriva)HY(tion)YH( used to define the simple type. )EP(
-
-
- )0 3 35 H(2.6.1)WB 129 Sn()WB 39 Sn( Mapping for Deriva)HY(tion)YH( by Restric)HY(tion)YH()EA()EH(
-
- )0 P(XML Schema deriva)HY(tion)YH( by restric)HY(tion)YH( is mapped to C++ public
- inher)HY(i)HY(tance)YH(. The base type of the restric)HY(tion)YH( becomes the base
- type for the result)HY(ing)YH( C++ class. In addi)HY(tion)YH( to the members described
- in )0 38 1 A(Section 2.6, "Mapping for Simple Types")38 0 TN TL()Ec /AF f D(, the
- result)HY(ing)YH( C++ class defines a public construc)HY(tor)YH( with the base type
- as its single argu)HY(ment)YH(. For instance:)EP(
-
- ) 5 27 PR(<simpleType name="object">
- <restriction base="base">
- ...
- </restriction>
-</simpleType>)RP(
-
- )0 P(is mapped to:)EP(
-
- ) 14 28 PR(class object: public base
-{
-public:
- object \201const base&\202;
- object \201const object&\202;
-
-public:
- object&
- operator= \201const object&\202;
-
-public:
- virtual object*
- _clone \201\202 const;
-};)RP(
-
-
- )0 3 36 H(2.6.2)WB 130 Sn()WB 40 Sn( Mapping for Enumer)HY(a)HY(tions)YH()EA()EH(
-
-)0 P(XML Schema restric)HY(tion)YH( by enumer)HY(a)HY(tion)YH( is mapped to a C++ class
- with seman)HY(tics)YH( similar to C++ )SM(enum)ES(. Each XML Schema
- enumer)HY(a)HY(tion)YH( element is mapped to a C++ enumer)HY(a)HY(tor)YH( with the
- name derived from the )SM(value)ES( attribute and defined
- in the class scope. In addi)HY(tion)YH( to the members
- described in )0 38 1 A(Section 2.6, "Mapping for Simple Types")38 0 TN TL()Ec /AF f D(,
- the result)HY(ing)YH( C++ class defines a public construc)HY(tor)YH( that can be called
- with one of the enumer)HY(a)HY(tors)YH( as its single argu)HY(ment)YH(, a public construc)HY(tor)YH(
- that can be called with enumer)HY(a)HY(tion)YH('s base value as its single
- argu)HY(ment)YH(, a public assign)HY(ment)YH( oper)HY(a)HY(tor)YH( that can be used to assign the
- value of one of the enumer)HY(a)HY(tors)YH(, and a public implicit conver)HY(sion)YH(
- oper)HY(a)HY(tor)YH( to the under)HY(ly)HY(ing)YH( C++ enum type.)EP(
-
-)0 P(Further)HY(more)YH(, for string-based enumer)HY(a)HY(tion)YH( types, the result)HY(ing)YH( C++
- class defines a public construc)HY(tor)YH( with a single argu)HY(ment)YH( of type
- )SM(const C*)ES( and a public construc)HY(tor)YH( with a single
- argu)HY(ment)YH( of type )SM(const std::basic_string<C>&)ES(.
- For instance:)EP(
-
- ) 7 32 PR(<simpleType name="color">
- <restriction base="string">
- <enumeration value="red"/>
- <enumeration value="green"/>
- <enumeration value="blue"/>
- </restriction>
-</simpleType>)RP(
-
- )0 P(is mapped to:)EP(
-
- ) 31 38 PR(class color: xml_schema::string
-{
-public:
- enum value
- {
- red,
- green,
- blue
- };
-
-public:
- color \201value\202;
- color \201const C*\202;
- color \201const std::basic_string<C>&\202;
- color \201const xml_schema::string&\202;
- color \201const color&\202;
-
-public:
- color&
- operator= \201value\202;
-
- color&
- operator= \201const color&\202;
-
-public:
- virtual color*
- _clone \201\202 const;
-
-public:
- operator value \201\202 const;
-};)WR()RP(
-
- )0 3 37 H(2.6.3)WB 131 Sn()WB 41 Sn( Mapping for Deriva)HY(tion)YH( by List)EA()EH(
-
- )0 P(XML Schema deriva)HY(tion)YH( by list is mapped to C++ public
- inher)HY(i)HY(tance)YH( from )SM(xml_schema::simple_type)ES(
- \201)0 24 1 A(Section 2.5.3, "Mapping for
- )SM(anySim)HY(ple)HY(Type)YH()ES(")24 0 TN TL()Ec /AF f D(\202 and a suit)HY(able)YH( sequence type.
- The list item type becomes the element type of the sequence.
- In addi)HY(tion)YH( to the members described in )0 38 1 A(Section 2.6,
- "Mapping for Simple Types")38 0 TN TL()Ec /AF f D(, the result)HY(ing)YH( C++ class defines
- a public default construc)HY(tor)YH(, a public construc)HY(tor)YH(
- with the first argu)HY(ment)YH( of type )SM(size_type)ES( and
- the second argu)HY(ment)YH( of list item type that creates
- a list object with the spec)HY(i)HY(fied)YH( number of copies of the spec)HY(i)HY(fied)YH(
- element value, and a public construc)HY(tor)YH( with the two argu)HY(ments)YH(
- of an input iter)HY(a)HY(tor)YH( type that creates a list object from an
- iter)HY(a)HY(tor)YH( range. For instance:
- )EP(
-
- ) 3 28 PR(<simpleType name="int_list">
- <list itemType="int"/>
-</simpleType>)RP(
-
- )0 P(is mapped to:)EP(
-
- ) 19 42 PR(class int_list: public simple_type,
- public sequence<int>
-{
-public:
- int_list \201\202;
- int_list \201size_type n, int x\202;
-
- template <typename I>
- int_list \201const I& begin, const I& end\202;
- int_list \201const int_list&\202;
-
-public:
- int_list&
- operator= \201const int_list&\202;
-
-public:
- virtual int_list*
- _clone \201\202 const;
-};)RP(
-
- )0 P(The )SM(sequence)ES( class template is defined in an
- imple)HY(men)HY(ta)HY(tion)YH(-specific names)HY(pace)YH(. It conforms to the
- sequence inter)HY(face)YH( as defined by the ISO/ANSI Stan)HY(dard)YH( for
- C++ \201ISO/IEC 14882:1998, Section 23.1.1, "Sequences"\202.
- Prac)HY(ti)HY(cally)YH(, this means that you can treat such a sequence
- as if it was )SM(std::vector)ES(. One notable exten)HY(sion)YH(
- to the stan)HY(dard)YH( inter)HY(face)YH( that is avail)HY(able)YH( only for
- sequences of non-funda)HY(men)HY(tal)YH( C++ types is the addi)HY(tion)YH( of
- the over)HY(loaded)YH( )SM(push_back)ES( and )SM(insert)ES(
- member func)HY(tions)YH( which instead of the constant refer)HY(ence)YH(
- to the element type accept auto)HY(matic)YH( pointer to the element
- type. These func)HY(tions)YH( assume owner)HY(ship)YH( of the pointed to
- object and resets the passed auto)HY(matic)YH( pointer.
- )EP(
-
- )0 3 38 H(2.6.4)WB 132 Sn()WB 42 Sn( Mapping for Deriva)HY(tion)YH( by Union)EA()EH(
-
- )0 P(XML Schema deriva)HY(tion)YH( by union is mapped to C++ public
- inher)HY(i)HY(tance)YH( from )SM(xml_schema::simple_type)ES(
- \201)0 24 1 A(Section 2.5.3, "Mapping for
- )SM(anySim)HY(ple)HY(Type)YH()ES(")24 0 TN TL()Ec /AF f D(\202 and )SM(std::basic_string<C>)ES(.
- In addi)HY(tion)YH( to the members described in )0 38 1 A(Section 2.6,
- "Mapping for Simple Types")38 0 TN TL()Ec /AF f D(, the result)HY(ing)YH( C++ class defines a
- public construc)HY(tor)YH( with a single argu)HY(ment)YH( of type )SM(const C*)ES(
- and a public construc)HY(tor)YH( with a single argu)HY(ment)YH( of type
- )SM(const std::basic_string<C>&)ES(. For instance:
- )EP(
-
- ) 3 47 PR(<simpleType name="int_string_union">
- <xsd:union memberTypes="xsd:int xsd:string"/>
-</simpleType>)RP(
-
- )0 P(is mapped to:)EP(
-
- ) 16 51 PR(class int_string_union: public simple_type,
- public std::basic_string<C>
-{
-public:
- int_string_union \201const C*\202;
- int_string_union \201const std::basic_string<C>&\202;
- int_string_union \201const int_string_union&\202;
-
-public:
- int_string_union&
- operator= \201const int_string_union&\202;
-
-public:
- virtual int_string_union*
- _clone \201\202 const;
-};)RP(
-
- )0 2 39 H(2.7)WB 133 Sn()WB 43 Sn( Mapping for Complex Types)EA()EH(
-
- )0 P(An XML Schema complex type is mapped to a C++ class with the same
- name as the complex type. The class defines a public copy construc)HY(tor)YH(,
- a public copy assign)HY(ment)YH( oper)HY(a)HY(tor)YH(, and a public virtual
- )SM(_clone)ES( func)HY(tion)YH(. The )SM(_clone)ES( func)HY(tion)YH( is
- declared )SM(const)ES(, does not take any argu)HY(ments)YH(, and returns
- a pointer to a complete copy of the instance allo)HY(cated)YH( in the free
- store. The )SM(_clone)ES( func)HY(tion)YH( shall be used to make copies
- when static type and dynamic type of the instance may differ \201see
- )0 54 1 A(Section 2.11, "Mapping for )SM(xsi:type)ES(
- and Substi)HY(tu)HY(tion)YH( Groups")54 0 TN TL()Ec /AF f D(\202.)EP(
-
- )0 P(Addi)HY(tion)HY(ally)YH(, the result)HY(ing)YH( C++ class
- defines two public construc)HY(tors)YH( that take an initial)HY(izer)YH( for each
- member of the complex type and all its base types that belongs to
- the One cardi)HY(nal)HY(ity)YH( class \201see )0 46 1 A(Section 2.8, "Mapping
- for Local Elements and Attributes")46 0 TN TL()Ec /AF f D(\202. In the first construc)HY(tor)YH(,
- the argu)HY(ments)YH( are passed as constant refer)HY(ences)YH( and the newly created
- instance is initial)HY(ized)YH( with copies of the passed objects. In the
- second construc)HY(tor)YH(, argu)HY(ments)YH( that are complex types \201that is,
- they them)HY(selves)YH( contain elements or attributes\202 are passed as
- refer)HY(ences)YH( to )SM(std::auto_ptr)ES(. In this case the newly
- created instance is directly initial)HY(ized)YH( with and assumes owner)HY(ship)YH(
- of the pointed to objects and the )SM(std::auto_ptr)ES( argu)HY(ments)YH(
- are reset to )SM(0)ES(. For instance:)EP(
-
- ) 15 66 PR(<complexType name="complex">
- <sequence>
- <element name="a" type="int"/>
- <element name="b" type="string"/>
- </sequence>
-</complexType>
-
-<complexType name="object">
- <sequence>
- <element name="s-one" type="boolean"/>
- <element name="c-one" type="complex"/>
- <element name="optional" type="int" minOccurs="0"/>
- <element name="sequence" type="string" maxOccurs="unbounded"/>
- </sequence>
-</complexType>)RP(
-
- )0 P(is mapped to:)EP(
-
- ) 36 60 PR(class complex: xml_schema::type
-{
-public:
- object \201const int& a, const xml_schema::string& b\202;
- object \201const complex&\202;
-
-public:
- object&
- operator= \201const complex&\202;
-
-public:
- virtual complex*
- _clone \201\202 const;
-
- ...
-
-};
-
-class object: xml_schema::type
-{
-public:
- object \201const bool& s_one, const complex& c_one\202;
- object \201const bool& s_one, std::auto_ptr<complex>& c_one\202;
- object \201const object&\202;
-
-public:
- object&
- operator= \201const object&\202;
-
-public:
- virtual object*)WR(
- _clone \201\202 const;
-
- ...
-
-};)RP(
-
- )0 P(Notice that the gener)HY(ated)YH( )SM(complex)ES( class does not
- have the second \201)SM(std::auto_ptr)ES(\202 version of the
- construc)HY(tor)YH( since all its required members are of simple types.)EP(
-
- )0 P(If an XML Schema complex type has an ulti)HY(mate)YH( base which is an XML
- Schema simple type then the result)HY(ing)YH( C++ class also defines a public
- construc)HY(tor)YH( that takes an initial)HY(izer)YH( for the base type as well as
- for each member of the complex type and all its base types that
- belongs to the One cardi)HY(nal)HY(ity)YH( class. For instance:)EP(
-
- ) 7 61 PR(<complexType name="object">
- <simpleContent>
- <extension base="date">
- <attribute name="lang" type="language" use="required"/>
- </extension>
- </simpleContent>
-</complexType>)RP(
-
- )0 P(is mapped to:)EP(
-
- ) 11 44 PR(class object: xml_schema::string
-{
-public:
- object \201const xml_schema::language& lang\202;
-
- object \201const xml_schema::date& base,
- const xml_schema::language& lang\202;
-
- ...
-
-};)RP(
-
- )0 P(Further)HY(more)YH(, for string-based XML Schema complex types, the result)HY(ing)YH( C++
- class also defines two public construc)HY(tors)YH( with the first argu)HY(ments)YH(
- of type )SM(const C*)ES( and )SM(std::basic_string<C>&)ES(,
- respec)HY(tively)YH(, followed by argu)HY(ments)YH( for each member of the complex
- type and all its base types that belongs to the One cardi)HY(nal)HY(ity)YH(
- class. For enumer)HY(a)HY(tion)YH(-based complex types the result)HY(ing)YH( C++
- class also defines a public construc)HY(tor)YH( with the first argu)HY(ments)YH(
- of the under)HY(ly)HY(ing)YH( enum type followed by argu)HY(ments)YH( for each member
- of the complex type and all its base types that belongs to the One
- cardi)HY(nal)HY(ity)YH( class. For instance:)EP(
-
- ) 15 61 PR(<simpleType name="color">
- <restriction base="string">
- <enumeration value="red"/>
- <enumeration value="green"/>
- <enumeration value="blue"/>
- </restriction>
-</simpleType>
-
-<complexType name="object">
- <simpleContent>
- <extension base="color">
- <attribute name="lang" type="language" use="required"/>
- </extension>
- </simpleContent>
-</complexType>)RP(
-
- )0 P(is mapped to:)EP(
-
- ) 37 44 PR(class color: xml_schema::string
-{
-public:
- enum value
- {
- red,
- green,
- blue
- };
-
-public:
- color \201value\202;
- color \201const C*\202;
- color \201const std::basic_string<C>&\202;
-
- ...
-
-};
-
-class object: color
-{
-public:
- object \201const color& base,
- const xml_schema::language& lang\202;
-
- object \201const color::value& base,
- const xml_schema::language& lang\202;
-
- object \201const C* base,
- const xml_schema::language& lang\202;
-)WR(
- object \201const std::basic_string<C>& base,
- const xml_schema::language& lang\202;
-
- ...
-
-};)RP(
-
- )0 P(Addi)HY(tional)YH( construc)HY(tors)YH( can be requested with the
- )SM(--gener)HY(ate)YH(-default-ctor)ES( and
- )SM(--gener)HY(ate)YH(-from-base-ctor)ES( options. See the
- )R9 2 A(XSD
- Compiler Command Line Manual)EA( for details.)EP(
-
- )0 P(If an XML Schema complex type is not explic)HY(itly)YH( derived from any type,
- the result)HY(ing)YH( C++ class is derived from )SM(xml_schema::type)ES(.
- In cases where an XML Schema complex type is defined using deriva)HY(tion)YH(
- by exten)HY(sion)YH( or restric)HY(tion)YH(, the result)HY(ing)YH( C++ base class spec)HY(i)HY(fi)HY(ca)HY(tion)YH(
- depends on the type of deriva)HY(tion)YH( and is described in the subse)HY(quent)YH(
- sections.
- )EP(
-
- )0 P(The mapping for elements and attributes that are defined in a complex
- type is described in )0 46 1 A(Section 2.8, "Mapping for Local
- Elements and Attributes")46 0 TN TL()Ec /AF f D(.
- )EP(
-
- )0 3 40 H(2.7.1)WB 134 Sn()WB 44 Sn( Mapping for Deriva)HY(tion)YH( by Exten)HY(sion)YH()EA()EH(
-
- )0 P(XML Schema deriva)HY(tion)YH( by exten)HY(sion)YH( is mapped to C++ public
- inher)HY(i)HY(tance)YH(. The base type of the exten)HY(sion)YH( becomes the base
- type for the result)HY(ing)YH( C++ class.
- )EP(
-
- )0 3 41 H(2.7.2)WB 135 Sn()WB 45 Sn( Mapping for Deriva)HY(tion)YH( by Restric)HY(tion)YH()EA()EH(
-
- )0 P(XML Schema deriva)HY(tion)YH( by restric)HY(tion)YH( is mapped to C++ public
- inher)HY(i)HY(tance)YH(. The base type of the restric)HY(tion)YH( becomes the base
- type for the result)HY(ing)YH( C++ class. XML Schema elements and
- attributes defined within restric)HY(tion)YH( do not result in any
- defi)HY(ni)HY(tions)YH( in the result)HY(ing)YH( C++ class. Instead, corre)HY(spond)HY(ing)YH(
- \201unre)HY(stricted)YH(\202 defi)HY(ni)HY(tions)YH( are inher)HY(ited)YH( from the base class.
- In the future versions of this mapping, such elements and
- attributes may result in redef)HY(i)HY(ni)HY(tions)YH( of acces)HY(sors)YH( and
- modi)HY(fiers)YH( to reflect their restricted seman)HY(tics)YH(.
- )EP(
-
-
-
- )0 2 42 H(2.8)WB 136 Sn()WB 46 Sn( Mapping for Local Elements and Attributes)EA()EH(
-
- )0 P(XML Schema element and attribute defi)HY(ni)HY(tions)YH( are called local
- if they appear within a complex type defi)HY(ni)HY(tion)YH(, an element group
- defi)HY(ni)HY(tion)YH(, or an attribute group defi)HY(ni)HY(tions)YH(.
- )EP(
-
- )0 P(Local XML Schema element and attribute defi)HY(ni)HY(tions)YH( have the same
- C++ mapping. There)HY(fore)YH(, in this section, local elements and
- attributes are collec)HY(tively)YH( called members.
- )EP(
-
- )0 P(While there are many differ)HY(ent)YH( member cardi)HY(nal)HY(ity)YH( combi)HY(na)HY(tions)YH(
- \201deter)HY(mined)YH( by the )SM(use)ES( attribute for attributes and
- the )SM(minOc)HY(curs)YH()ES( and )SM(maxOc)HY(curs)YH()ES( attributes
- for elements\202, the mapping divides all possi)HY(ble)YH( cardi)HY(nal)HY(ity)YH(
- combi)HY(na)HY(tions)YH( into three cardi)HY(nal)HY(ity)YH( classes:
- )EP(
-
- )0 DL( )0 DT()I(one)ES(
- )DD(attributes: )SM(use == "required")ES(
- )DD(attributes: )SM(use == "optional")ES( and has default or fixed value
- )DD(elements: )SM(minOc)HY(curs)YH( == "1")ES( and )SM(maxOc)HY(curs)YH( == "1")ES(
-
- )0 DT()I(optional)ES(
- )DD(attributes: )SM(use == "optional")ES( and doesn't have default or fixed value
- )DD(elements: )SM(minOc)HY(curs)YH( == "0")ES( and )SM(maxOc)HY(curs)YH( == "1")ES(
-
- )0 DT()I(sequence)ES(
- )DD(elements: )SM(maxOc)HY(curs)YH( > "1")ES(
- )LD(
-
- )0 P(An optional attribute with a default or fixed value acquires this value
- if the attribute hasn't been spec)HY(i)HY(fied)YH( in an instance docu)HY(ment)YH( \201see
- )0 92 1 A(Appendix A, "Default and Fixed Values")92 0 TN TL()Ec /AF f D(\202. This
- mapping places such optional attributes to the One cardi)HY(nal)HY(ity)YH(
- class.)EP(
-
- )0 P(A member is mapped to a set of public type defi)HY(ni)HY(tions)YH(
- \201)SM(typedef)ES(s\202 and a set of public acces)HY(sor)YH( and modi)HY(fier)YH(
- func)HY(tions)YH(. Type defi)HY(ni)HY(tions)YH( have names derived from the member's
- name. The acces)HY(sor)YH( and modi)HY(fier)YH( func)HY(tions)YH( have the same name as the
- member. For example:
- )EP(
-
- ) 5 42 PR(<complexType name="object">
- <sequence>
- <element name="member" type="string"/>
- </sequence>
-</complexType>)RP(
-
- )0 P(is mapped to:)EP(
-
- ) 11 41 PR(class object: xml_schema::type
-{
-public:
- typedef xml_schema::string member_type;
-
- const member_type&
- member \201\202 const;
-
- ...
-
-};)RP(
-
- )0 P(In addi)HY(tion)YH(, if a member has a default or fixed value, a static
- acces)HY(sor)YH( func)HY(tion)YH( is gener)HY(ated)YH( that returns this value. For
- example:)EP(
-
-) 3 55 PR(<complexType name="object">
- <attribute name="data" type="string" default="test"/>
-</complexType>)RP(
-
- )0 P(is mapped to:)EP(
-
- ) 14 39 PR(class object: xml_schema::type
-{
-public:
- typedef xml_schema::string data_type;
-
- const data_type&
- data \201\202 const;
-
- static const data_type&
- data_default_value \201\202;
-
- ...
-
-};)RP(
-
- )0 P(Names and seman)HY(tics)YH( of type defi)HY(ni)HY(tions)YH( for the member as well
- as signa)HY(tures)YH( of the acces)HY(sor)YH( and modi)HY(fier)YH( func)HY(tions)YH( depend on
- the member's cardi)HY(nal)HY(ity)YH( class and are described in the follow)HY(ing)YH(
- sub-sections.
- )EP(
-
-
- )0 3 43 H(2.8.1)WB 137 Sn()WB 47 Sn( Mapping for Members with the One Cardi)HY(nal)HY(ity)YH( Class)EA()EH(
-
- )0 P(For the One cardi)HY(nal)HY(ity)YH( class, the type defi)HY(ni)HY(tions)YH( consist of
- an alias for the member's type with the name created by append)HY(ing)YH(
- the )SM(_type)ES( suffix to the member's name.
- )EP(
-
- )0 P(The acces)HY(sor)YH( func)HY(tions)YH( come in constant and non-constant versions.
- The constant acces)HY(sor)YH( func)HY(tion)YH( returns a constant refer)HY(ence)YH( to the
- member and can be used for read-only access. The non-constant
- version returns an unre)HY(stricted)YH( refer)HY(ence)YH( to the member and can
- be used for read-write access.
- )EP(
-
- )0 P(The first modi)HY(fier)YH( func)HY(tion)YH( expects an argu)HY(ment)YH( of type refer)HY(ence)YH( to
- constant of the member's type. It makes a deep copy of its argu)HY(ment)YH(.
- Except for member's types that are mapped to funda)HY(men)HY(tal)YH( C++ types,
- the second modi)HY(fier)YH( func)HY(tion)YH( is provided that expects an argu)HY(ment)YH(
- of type auto)HY(matic)YH( pointer to the member's type. It assumes owner)HY(ship)YH(
- of the pointed to object and resets the passed auto)HY(matic)YH( pointer.
- For instance:)EP(
-
- ) 5 42 PR(<complexType name="object">
- <sequence>
- <element name="member" type="string"/>
- </sequence>
-</complexType>)RP(
-
- )0 P(is mapped to:)EP(
-
- ) 25 41 PR(class object: xml_schema::type
-{
-public:
- // Type definitions.
- //
- typedef xml_schema::string member_type;
-
- // Accessors.
- //
- const member_type&
- member \201\202 const;
-
- member_type&
- member \201\202;
-
- // Modifiers.
- //
- void
- member \201const member_type&\202;
-
- void
- member \201std::auto_ptr<member_type>\202;
- ...
-
-};)RP(
-
- )0 P(In addi)HY(tion)YH(, if requested by spec)HY(i)HY(fy)HY(ing)YH( the )SM(--gener)HY(ate)YH(-detach)ES(
- option and only for members of non-funda)HY(men)HY(tal)YH( C++ types, the mapping
- provides a detach func)HY(tion)YH( that returns an auto)HY(matic)YH( pointer to the
- member's type, for example:)EP(
-
- ) 10 30 PR(class object: xml_schema::type
-{
-public:
- ...
-
- std::auto_ptr<member_type>
- detach_member \201\202;
- ...
-
-};)RP(
-
- )0 P(This func)HY(tion)YH( detaches the value from the tree leaving the member
- value unini)HY(tial)HY(ized)YH(. Access)HY(ing)YH( such an unini)HY(tial)HY(ized)YH( value prior to
- re-initial)HY(iz)HY(ing)YH( it results in unde)HY(fined)YH( behav)HY(ior)YH(.)EP(
-
- )0 P(The follow)HY(ing)YH( code shows how one could use this mapping:)EP(
-
- ) 16 66 PR(void
-f \201object& o\202
-{
- using xml_schema::string;
-
- string s \201o.member \201\202\202; // get
- object::member_type& sr \201o.member \201\202\202; // get
-
- o.member \201"hello"\202; // set, deep copy
- o.member \201\202 = "hello"; // set, deep copy
-
- std::auto_ptr<string> p \201new string \201"hello"\202\202;
- o.member \201p\202; // set, assumes ownership
- p = o.detach_member \201\202; // detach, member is uninitialized
- o.member \201p\202; // re-attach
-})RP(
-
-
-)0 3 44 H(2.8.2)WB 138 Sn()WB 48 Sn( Mapping for Members with the Optional Cardi)HY(nal)HY(ity)YH( Class)EA()EH(
-
- )0 P(For the Optional cardi)HY(nal)HY(ity)YH( class, the type defi)HY(ni)HY(tions)YH( consist of
- an alias for the member's type with the name created by append)HY(ing)YH(
- the )SM(_type)ES( suffix to the member's name and an alias for
- the container type with the name created by append)HY(ing)YH( the
- )SM(_optional)ES( suffix to the member's name.
- )EP(
-
- )0 P(Unlike acces)HY(sor)YH( func)HY(tions)YH( for the One cardi)HY(nal)HY(ity)YH( class, acces)HY(sor)YH(
- func)HY(tions)YH( for the Optional cardi)HY(nal)HY(ity)YH( class return refer)HY(ences)YH( to
- corre)HY(spond)HY(ing)YH( contain)HY(ers)YH( rather than directly to members. The
- acces)HY(sor)YH( func)HY(tions)YH( come in constant and non-constant versions.
- The constant acces)HY(sor)YH( func)HY(tion)YH( returns a constant refer)HY(ence)YH( to
- the container and can be used for read-only access. The non-constant
- version returns an unre)HY(stricted)YH( refer)HY(ence)YH( to the container
- and can be used for read-write access.
- )EP(
-
- )0 P(The modi)HY(fier)YH( func)HY(tions)YH( are over)HY(loaded)YH( for the member's
- type and the container type. The first modi)HY(fier)YH( func)HY(tion)YH(
- expects an argu)HY(ment)YH( of type refer)HY(ence)YH( to constant of the
- member's type. It makes a deep copy of its argu)HY(ment)YH(.
- Except for member's types that are mapped to funda)HY(men)HY(tal)YH( C++ types,
- the second modi)HY(fier)YH( func)HY(tion)YH( is provided that expects an argu)HY(ment)YH(
- of type auto)HY(matic)YH( pointer to the member's type. It assumes owner)HY(ship)YH(
- of the pointed to object and resets the passed auto)HY(matic)YH( pointer.
- The last modi)HY(fier)YH( func)HY(tion)YH( expects an argu)HY(ment)YH( of type refer)HY(ence)YH(
- to constant of the container type. It makes a deep copy of its
- argu)HY(ment)YH(. For instance:
- )EP(
-
- ) 5 56 PR(<complexType name="object">
- <sequence>
- <element name="member" type="string" minOccurs="0"/>
- </sequence>
-</complexType>)RP(
-
- )0 P(is mapped to:)EP(
-
- ) 30 48 PR(class object: xml_schema::type
-{
-public:
- // Type definitions.
- //
- typedef xml_schema::string member_type;
- typedef optional<member_type> member_optional;
-
- // Accessors.
- //
- const member_optional&
- member \201\202 const;
-
- member_optional&
- member \201\202;
-
- // Modifiers.
- //
- void
- member \201const member_type&\202;
-
- void
- member \201std::auto_ptr<member_type>\202;
-
- void
- member \201const member_optional&\202;
-
- ...
-
-};)RP(
-
-
- )0 P(The )SM(optional)ES( class template is defined in an
- imple)HY(men)HY(ta)HY(tion)YH(-specific names)HY(pace)YH( and has the follow)HY(ing)YH(
- inter)HY(face)YH(. The )SM(auto_ptr)ES(-based construc)HY(tor)YH(
- and modi)HY(fier)YH( func)HY(tion)YH( are only avail)HY(able)YH( if the template
- argu)HY(ment)YH( is not a funda)HY(men)HY(tal)YH( C++ type.
- )EP(
-
- ) 97 52 PR(template <typename X>
-class optional
-{
-public:
- optional \201\202;
-
- // Makes a deep copy.
- //
- explicit
- optional \201const X&\202;
-
- // Assumes ownership.
- //
- explicit
- optional \201std::auto_ptr<X>\202;
-
- optional \201const optional&\202;
-
-public:
- optional&
- operator= \201const X&\202;
-
- optional&
- operator= \201const optional&\202;
-
- // Pointer-like interface.
- //
-public:
- const X*
- operator-> \201\202 const;
-)WR(
- X*
- operator-> \201\202;
-
- const X&
- operator* \201\202 const;
-
- X&
- operator* \201\202;
-
- typedef void \201optional::*bool_convertible\202 \201\202;
- operator bool_convertible \201\202 const;
-
- // Get/set interface.
- //
-public:
- bool
- present \201\202 const;
-
- const X&
- get \201\202 const;
-
- X&
- get \201\202;
-
- // Makes a deep copy.
- //
- void
- set \201const X&\202;
-
- // Assumes ownership.)WR(
- //
- void
- set \201std::auto_ptr<X>\202;
-
- // Detach and return the contained value.
- //
- std::auto_ptr<X>
- detach \201\202;
-
- void
- reset \201\202;
-};
-
-template <typename X>
-bool
-operator== \201const optional<X>&, const optional<X>&\202;
-
-template <typename X>
-bool
-operator!= \201const optional<X>&, const optional<X>&\202;
-
-template <typename X>
-bool
-operator< \201const optional<X>&, const optional<X>&\202;
-
-template <typename X>
-bool
-operator> \201const optional<X>&, const optional<X>&\202;
-
-template <typename X>)WR(
-bool
-operator<= \201const optional<X>&, const optional<X>&\202;
-
-template <typename X>
-bool
-operator>= \201const optional<X>&, const optional<X>&\202;)RP(
-
-
- )0 P(The follow)HY(ing)YH( code shows how one could use this mapping:)EP(
-
- ) 32 62 PR(void
-f \201object& o\202
-{
- using xml_schema::string;
-
- if \201o.member \201\202.present \201\202\202 // test
- {
- string& s \201o.member \201\202.get \201\202\202; // get
- o.member \201"hello"\202; // set, deep copy
- o.member \201\202.set \201"hello"\202; // set, deep copy
- o.member \201\202.reset \201\202; // reset
- }
-
- // Same as above but using pointer notation:
- //
- if \201o.member \201\202\202 // test
- {
- string& s \201*o.member \201\202\202; // get
- o.member \201"hello"\202; // set, deep copy
- *o.member \201\202 = "hello"; // set, deep copy
- o.member \201\202.reset \201\202; // reset
- }
-
- std::auto_ptr<string> p \201new string \201"hello"\202\202;
- o.member \201p\202; // set, assumes ownership
-
- p = new string \201"hello"\202;
- o.member \201\202.set \201p\202; // set, assumes ownership
-
- p = o.member \201\202.detach \201\202; // detach, member is reset
- o.member \201\202.set \201p\202; // re-attach)WR(
-})RP(
-
-
- )0 3 45 H(2.8.3)WB 139 Sn()WB 49 Sn( Mapping for Members with the Sequence Cardi)HY(nal)HY(ity)YH( Class)EA()EH(
-
- )0 P(For the Sequence cardi)HY(nal)HY(ity)YH( class, the type defi)HY(ni)HY(tions)YH( consist of an
- alias for the member's type with the name created by append)HY(ing)YH(
- the )SM(_type)ES( suffix to the member's name, an alias of
- the container type with the name created by append)HY(ing)YH( the
- )SM(_sequence)ES( suffix to the member's name, an alias of
- the iter)HY(a)HY(tor)YH( type with the name created by append)HY(ing)YH( the
- )SM(_iter)HY(a)HY(tor)YH()ES( suffix to the member's name, and an alias
- of the constant iter)HY(a)HY(tor)YH( type with the name created by append)HY(ing)YH( the
- )SM(_const_iter)HY(a)HY(tor)YH()ES( suffix to the member's name.
- )EP(
-
- )0 P(The acces)HY(sor)YH( func)HY(tions)YH( come in constant and non-constant versions.
- The constant acces)HY(sor)YH( func)HY(tion)YH( returns a constant refer)HY(ence)YH( to the
- container and can be used for read-only access. The non-constant
- version returns an unre)HY(stricted)YH( refer)HY(ence)YH( to the container and can
- be used for read-write access.
- )EP(
-
- )0 P(The modi)HY(fier)YH( func)HY(tion)YH( expects an argu)HY(ment)YH( of type refer)HY(ence)YH( to
- constant of the container type. The modi)HY(fier)YH( func)HY(tion)YH(
- makes a deep copy of its argu)HY(ment)YH(. For instance:
- )EP(
-
-
- ) 5 64 PR(<complexType name="object">
- <sequence>
- <element name="member" type="string" minOccurs="unbounded"/>
- </sequence>
-</complexType>)RP(
-
- )0 P(is mapped to:)EP(
-
- ) 26 64 PR(class object: xml_schema::type
-{
-public:
- // Type definitions.
- //
- typedef xml_schema::string member_type;
- typedef sequence<member_type> member_sequence;
- typedef member_sequence::iterator member_iterator;
- typedef member_sequence::const_iterator member_const_iterator;
-
- // Accessors.
- //
- const member_sequence&
- member \201\202 const;
-
- member_sequence&
- member \201\202;
-
- // Modifier.
- //
- void
- member \201const member_sequence&\202;
-
- ...
-
-};)RP(
-
- )0 P(The )SM(sequence)ES( class template is defined in an
- imple)HY(men)HY(ta)HY(tion)YH(-specific names)HY(pace)YH(. It conforms to the
- sequence inter)HY(face)YH( as defined by the ISO/ANSI Stan)HY(dard)YH( for
- C++ \201ISO/IEC 14882:1998, Section 23.1.1, "Sequences"\202.
- Prac)HY(ti)HY(cally)YH(, this means that you can treat such a sequence
- as if it was )SM(std::vector)ES(. Two notable exten)HY(sions)YH(
- to the stan)HY(dard)YH( inter)HY(face)YH( that are avail)HY(able)YH( only for
- sequences of non-funda)HY(men)HY(tal)YH( C++ types are the addi)HY(tion)YH( of
- the over)HY(loaded)YH( )SM(push_back)ES( and )SM(insert)ES(
- as well as the )SM(detach_back)ES( and )SM(detach)ES(
- member func)HY(tions)YH(. The addi)HY(tional)YH( )SM(push_back)ES( and
- )SM(insert)ES( func)HY(tions)YH( accept an auto)HY(matic)YH( pointer to the
- element type instead of the constant refer)HY(ence)YH(. They assume
- owner)HY(ship)YH( of the pointed to object and resets the passed
- auto)HY(matic)YH( pointer. The )SM(detach_back)ES( and
- )SM(detach)ES( func)HY(tions)YH( detach the element
- value from the sequence container and, by default, remove
- the element from the sequence. These addi)HY(tional)YH( func)HY(tions)YH(
- have the follow)HY(ing)YH( signa)HY(tures)YH(:)EP(
-
- ) 22 46 PR(template <typename X>
-class sequence
-{
-public:
- ...
-
- void
- push_back \201std::auto_ptr<X>\202
-
- iterator
- insert \201iterator position, std::auto_ptr<X>\202
-
- std::auto_ptr<X>
- detach_back \201bool pop = true\202;
-
- iterator
- detach \201iterator position,
- std::auto_ptr<X>& result,
- bool erase = true\202
-
- ...
-})RP(
-
- )0 P(The follow)HY(ing)YH( code shows how one could use this mapping:)EP(
-
- ) 30 66 PR(void
-f \201object& o\202
-{
- using xml_schema::string;
-
- object::member_sequence& s \201o.member \201\202\202;
-
- // Iteration.
- //
- for \201object::member_iterator i \201s.begin \201\202\202; i != s.end \201\202; ++i\202
- {
- string& value \201*i\202;
- }
-
- // Modification.
- //
- s.push_back \201"hello"\202; // deep copy
-
- std::auto_ptr<string> p \201new string \201"hello"\202\202;
- s.push_back \201p\202; // assumes ownership
- p = s.detach_back \201\202; // detach and pop
- s.push_back \201p\202; // re-append
-
- // Setting a new container.
- //
- object::member_sequence n;
- n.push_back \201"one"\202;
- n.push_back \201"two"\202;
- o.member \201n\202; // deep copy
-})RP(
-
- )0 2 46 H(2.9)WB 140 Sn()WB 50 Sn( Mapping for Global Elements)EA()EH(
-
- )0 P(An XML Schema element defi)HY(ni)HY(tion)YH( is called global if it appears
- directly under the )SM(schema)ES( element.
- A global element is a valid root of an instance docu)HY(ment)YH(. By
- default, a global element is mapped to a set of over)HY(loaded)YH(
- parsing and, option)HY(ally)YH(, seri)HY(al)HY(iza)HY(tion)YH( func)HY(tions)YH( with the
- same name as the element. It is also possi)HY(ble)YH( to gener)HY(ate)YH( types
- for root elements instead of parsing and seri)HY(al)HY(iza)HY(tion)YH( func)HY(tions)YH(.
- This is primar)HY(ily)YH( useful to distin)HY(guish)YH( object models with the
- same root type but with differ)HY(ent)YH( root elements. See
- )0 51 1 A(Section 2.9.1, "Element Types")51 0 TN TL()Ec /AF f D( for details.
- It is also possi)HY(ble)YH( to request the gener)HY(a)HY(tion)YH( of an element map
- which allows uniform parsing and seri)HY(al)HY(iza)HY(tion)YH( of multi)HY(ple)YH( root
- elements. See )0 52 1 A(Section 2.9.2, "Element Map")52 0 TN TL()Ec /AF f D(
- for details.
- )EP(
-
- )0 P(The parsing func)HY(tions)YH( read XML instance docu)HY(ments)YH( and return
- corre)HY(spond)HY(ing)YH( object models. Their signa)HY(tures)YH(
- have the follow)HY(ing)YH( pattern \201)SM(type)ES( denotes
- element's type and )SM(name)ES( denotes element's
- name\202:
- )EP(
-
- ) 2 19 PR(std::auto_ptr<type>
-name \201....\202;)RP(
-
- )0 P(The process of parsing, includ)HY(ing)YH( the exact signa)HY(tures)YH( of the parsing
- func)HY(tions)YH(, is the subject of )0 61 1 A(Chapter 3, "Parsing")61 0 TN TL()Ec /AF f D(.
- )EP(
-
- )0 P(The seri)HY(al)HY(iza)HY(tion)YH( func)HY(tions)YH( write object models
- back to XML instance docu)HY(ments)YH(. Their signa)HY(tures)YH(
- have the follow)HY(ing)YH( pattern:
- )EP(
-
- ) 2 41 PR(void
-name \201<stream type>&, const type&, ....\202;)RP(
-
- )0 P(The process of seri)HY(al)HY(iza)HY(tion)YH(, includ)HY(ing)YH( the exact signa)HY(tures)YH( of the
- seri)HY(al)HY(iza)HY(tion)YH( func)HY(tions)YH(, is the subject of )0 78 1 A(Chapter 4,
- "Seri)HY(al)HY(iza)HY(tion)YH(")78 0 TN TL()Ec /AF f D(.
- )EP(
-
-
- )0 3 47 H(2.9.1)WB 141 Sn()WB 51 Sn( Element Types)EA()EH(
-
- )0 P(The gener)HY(a)HY(tion)YH( of element types is requested with the
- )SM(--gener)HY(ate)YH(-element-map)ES( option. With this option
- each global element is mapped to a C++ class with the
- same name as the element. Such a class is derived from
- )SM(xml_schema::element_type)ES( and contains the same set
- of type defi)HY(ni)HY(tions)YH(, construc)HY(tors)YH(, and member func)HY(tion)YH( as would a
- type contain)HY(ing)YH( a single element with the One cardi)HY(nal)HY(ity)YH( class
- named )SM("value")ES(. In addi)HY(tion)YH(, the element type also
- contains a set of member func)HY(tions)YH( for access)HY(ing)YH( the element
- name and names)HY(pace)YH( as well as its value in a uniform manner.
- For example:)EP(
-
- ) 7 34 PR(<complexType name="type">
- <sequence>
- ...
- </sequence>
-</complexType>
-
-<element name="root" type="type"/>)RP(
-
-)0 P(is mapped to:)EP(
-
- ) 62 59 PR(class type
-{
- ...
-};
-
-class root: public xml_schema::element_type
-{
-public:
- // Element value.
- //
- typedef type value_type;
-
- const value_type&
- value \201\202 const;
-
- value_type&
- value \201\202;
-
- void
- value \201const value_type&\202;
-
- void
- value \201std::auto_ptr<value_type>\202;
-
- // Constructors.
- //
- root \201const value_type&\202;
-
- root \201std::auto_ptr<value_type>\202;
-
- root \201const xercesc::DOMElement&, xml_schema::flags = 0\202;)WR(
-
- root \201const root&, xml_schema::flags = 0\202;
-
- virtual root*
- _clone \201xml_schema::flags = 0\202 const;
-
- // Element name and namespace.
- //
- static const std::string&
- name \201\202;
-
- static const std::string&
- namespace_ \201\202;
-
- virtual const std::string&
- _name \201\202 const;
-
- virtual const std::string&
- _namespace \201\202 const;
-
- // Element value as xml_schema::type.
- //
- virtual const xml_schema::type*
- _value \201\202 const;
-
- virtual xml_schema::type*
- _value \201\202;
-};
-
-void)WR(
-operator<< \201xercesc::DOMElement&, const root&\202;)RP(
-
- )0 P(The )SM(xml_schema::element_type)ES( class is a common
- base type for all element types and is defined as follows:)EP(
-
- ) 24 39 PR(namespace xml_schema
-{
- class element_type
- {
- public:
- virtual
- ~element_type \201\202;
-
- virtual element_type*
- _clone \201flags f = 0\202 const = 0;
-
- virtual const std::basic_string<C>&
- _name \201\202 const = 0;
-
- virtual const std::basic_string<C>&
- _namespace \201\202 const = 0;
-
- virtual xml_schema::type*
- _value \201\202 = 0;
-
- virtual const xml_schema::type*
- _value \201\202 const = 0;
- };
-})RP(
-
- )0 P(The )SM(_value\201\202)ES( member func)HY(tion)YH( returns a pointer to
- the element value or 0 if the element is of a funda)HY(men)HY(tal)YH( C++
- type and there)HY(fore)YH( is not derived from )SM(xml_schema::type)ES(.
- )EP(
-
- )0 P(Unlike parsing and seri)HY(al)HY(iza)HY(tion)YH( func)HY(tions)YH(, element types
- are only capable of parsing and seri)HY(al)HY(iz)HY(ing)YH( from/to a
- )SM(DOMEle)HY(ment)YH()ES( object. This means that the appli)HY(ca)HY(tion)YH(
- will need to perform its own XML-to-DOM parsing and DOM-to-XML
- seri)HY(al)HY(iza)HY(tion)YH(. The follow)HY(ing)YH( section describes a mech)HY(a)HY(nism)YH(
- provided by the mapping to uniformly parse and seri)HY(al)HY(ize)YH(
- multi)HY(ple)YH( root elements.)EP(
-
-
- )0 3 48 H(2.9.2)WB 142 Sn()WB 52 Sn( Element Map)EA()EH(
-
- )0 P(When element types are gener)HY(ated)YH( for root elements it is also
- possi)HY(ble)YH( to request the gener)HY(a)HY(tion)YH( of an element map with the
- )SM(--gener)HY(ate)YH(-element-map)ES( option. The element map
- allows uniform parsing and seri)HY(al)HY(iza)HY(tion)YH( of multi)HY(ple)YH( root
- elements via the common )SM(xml_schema::element_type)ES(
- base type. The )SM(xml_schema::element_map)ES( class is
- defined as follows:)EP(
-
- ) 12 58 PR(namespace xml_schema
-{
- class element_map
- {
- public:
- static std::auto_ptr<xml_schema::element_type>
- parse \201const xercesc::DOMElement&, flags = 0\202;
-
- static void
- serialize \201xercesc::DOMElement&, const element_type&\202;
- };
-})RP(
-
- )0 P(The )SM(parse\201\202)ES( func)HY(tion)YH( creates the corre)HY(spond)HY(ing)YH(
- element type object based on the element name and names)HY(pace)YH(
- and returns it as a pointer to )SM(xml_schema::element_type)ES(.
- The )SM(seri)HY(al)HY(ize)YH(\201\202)ES( func)HY(tion)YH( seri)HY(al)HY(izes)YH( the passed element
- object to )SM(DOMEle)HY(ment)YH()ES(. Note that in case of
- )SM(seri)HY(al)HY(ize)YH(\201\202)ES(, the )SM(DOMEle)HY(ment)YH()ES( object
- should have the correct name and names)HY(pace)YH(. If no element type is
- avail)HY(able)YH( for an element, both func)HY(tions)YH( throw the
- )SM(xml_schema::no_element_info)ES( excep)HY(tion)YH(:)EP(
-
- ) 14 66 PR(struct no_element_info: virtual exception
-{
- no_element_info \201const std::basic_string<C>& element_name,
- const std::basic_string<C>& element_namespace\202;
-
- const std::basic_string<C>&
- element_name \201\202 const;
-
- const std::basic_string<C>&
- element_namespace \201\202 const;
-
- virtual const char*
- what \201\202 const throw \201\202;
-};)RP(
-
- )0 P(The appli)HY(ca)HY(tion)YH( can discover the actual type of the element
- object returned by )SM(parse\201\202)ES( either using
- )SM(dynamic_cast)ES( or by compar)HY(ing)YH( element names and
- names)HY(paces)YH(. The follow)HY(ing)YH( code frag)HY(ments)YH( illus)HY(trate)YH( how the
- element map can be used:)EP(
-
- ) 18 50 PR(// Parsing.
-//
-DOMElement& e = ... // Parse XML to DOM.
-
-auto_ptr<xml_schema::element_type> r \201
- xml_schema::element_map::parse \201e\202\202;
-
-if \201root1 r1 = dynamic_cast<root1*> \201r.get \201\202\202\202
-{
- ...
-}
-else if \201r->_name == root2::name \201\202 &&
- r->_namespace \201\202 == root2::namespace_ \201\202\202
-{
- root2& r2 \201static_cast<root2&> \201*r\202\202;
-
- ...
-})RP(
-
- ) 13 68 PR(// Serialization.
-//
-xml_schema::element_type& r = ...
-
-string name \201r._name \201\202\202;
-string ns \201r._namespace \201\202\202;
-
-DOMDocument& doc = ... // Create a new DOMDocument with name and ns.
-DOMElement& e \201*doc->getDocumentElement \201\202\202;
-
-xml_schema::element_map::serialize \201e, r\202;
-
-// Serialize DOMDocument to XML.)RP(
-
-
-
- )0 2 49 H(2.10)WB 143 Sn()WB 53 Sn( Mapping for Global Attributes)EA()EH(
-
- )0 P(An XML Schema attribute defi)HY(ni)HY(tion)YH( is called global if it appears
- directly under the )SM(schema)ES( element. A global
- attribute does not have any mapping.
- )EP(
-
-
-
- )0 2 50 H(2.11)WB 144 Sn()WB 54 Sn( Mapping for )SM(xsi:type)ES( and Substi)HY(tu)HY(tion)YH(
- Groups)EA()EH(
-
- )0 P(The mapping provides optional support for the XML Schema poly)HY(mor)HY(phism)YH(
- features \201)SM(xsi:type)ES( and substi)HY(tu)HY(tion)YH( groups\202 which can
- be requested with the )SM(--gener)HY(ate)YH(-poly)HY(mor)HY(phic)YH()ES( option.
- When used, the dynamic type of a member may be differ)HY(ent)YH( from
- its static type. Consider the follow)HY(ing)YH( schema defi)HY(ni)HY(tion)YH( and
- instance docu)HY(ment)YH(:
- )EP(
-
- ) 28 62 PR(<!-- test.xsd -->
-<schema>
- <complexType name="base">
- <attribute name="text" type="string"/>
- </complexType>
-
- <complexType name="derived">
- <complexContent>
- <extension base="base">
- <attribute name="extra-text" type="string"/>
- </extension>
- </complexContent>
- </complexType>
-
- <complexType name="root_type">
- <sequence>
- <element name="item" type="base" maxOccurs="unbounded"/>
- </sequence>
- </complexType>
-
- <element name="root" type="root_type"/>
-</schema>
-
-<!-- test.xml -->
-<root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
- <item text="hello"/>
- <item text="hello" extra-text="world" xsi:type="derived"/>
-</root>)RP(
-
- )0 P(In the result)HY(ing)YH( object model, the container for
- the )SM(root::item)ES( member will have two elements:
- the first element's type will be )SM(base)ES( while
- the second element's \201dynamic\202 type will be
- )SM(derived)ES(. This can be discov)HY(ered)YH( using the
- )SM(dynamic_cast)ES( oper)HY(a)HY(tor)YH( as shown in the follow)HY(ing)YH(
- example:
- )EP(
-
- ) 17 56 PR(void
-f \201root& r\202
-{
- for \201root::item_const_iterator i \201r.item \201\202.begin \201\202\202;
- i != r.item \201\202.end \201\202
- ++i\202
- {
- if \201derived* d = dynamic_cast<derived*> \201&\201*i\202\202\202
- {
- // derived
- }
- else
- {
- // base
- }
- }
-})RP(
-
- )0 P(The )SM(_clone)ES( virtual func)HY(tion)YH( should be used instead of
- copy construc)HY(tors)YH( to make copies of members that might use
- poly)HY(mor)HY(phism)YH(:
- )EP(
-
- ) 10 56 PR(void
-f \201root& r\202
-{
- for \201root::item_const_iterator i \201r.item \201\202.begin \201\202\202;
- i != r.item \201\202.end \201\202
- ++i\202
- {
- std::auto_ptr<base> c \201i->_clone \201\202\202;
- }
-})RP(
-
- )0 P(The mapping can often auto)HY(mat)HY(i)HY(cally)YH( deter)HY(mine)YH( which types are
- poly)HY(mor)HY(phic)YH( based on the substi)HY(tu)HY(tion)YH( group decla)HY(ra)HY(tions)YH(. However,
- if your XML vocab)HY(u)HY(lary)YH( is not using substi)HY(tu)HY(tion)YH( groups or if
- substi)HY(tu)HY(tion)YH( groups are defined in a sepa)HY(rate)YH( schema, then you will
- need to use the )SM(--poly)HY(mor)HY(phic)YH(-type)ES( option to specify
- which types are poly)HY(mor)HY(phic)YH(. When using this option you only need
- to specify the root of a poly)HY(mor)HY(phic)YH( type hier)HY(ar)HY(chy)YH( and the mapping
- will assume that all the derived types are also poly)HY(mor)HY(phic)YH(.
- Also note that you need to specify this option when compil)HY(ing)YH( every
- schema file that refer)HY(ences)YH( the poly)HY(mor)HY(phic)YH( type. Consider the follow)HY(ing)YH(
- two schemas as an example:)EP(
-
- ) 13 55 PR(<!-- base.xsd -->
-<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
-
- <xs:complexType name="base">
- <xs:sequence>
- <xs:element name="b" type="xs:int"/>
- </xs:sequence>
- </xs:complexType>
-
- <!-- substitution group root -->
- <xs:element name="base" type="base"/>
-
-</xs:schema>)RP(
-
- ) 18 70 PR(<!-- derived.xsd -->
-<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
-
- <include schemaLocation="base.xsd"/>
-
- <xs:complexType name="derived">
- <xs:complexContent>
- <xs:extension base="base">
- <xs:sequence>
- <xs:element name="d" type="xs:string"/>
- </xs:sequence>
- </xs:extension>
- </xs:complexContent>
- </xs:complexType>
-
- <xs:element name="derived" type="derived" substitutionGroup="base"/>
-
-</xs:schema>)RP(
-
- )0 P(In this example we need to specify ")SM(--poly)HY(mor)HY(phic)YH(-type base)ES("
- when compil)HY(ing)YH( both schemas because the substi)HY(tu)HY(tion)YH( group is declared
- in a schema other than the one defin)HY(ing)YH( type )SM(base)ES(.)EP(
-
- )0 P(You can also indi)HY(cate)YH( that all types should be treated as poly)HY(mor)HY(phic)YH(
- with the )SM(--poly)HY(mor)HY(phic)YH(-type-all)ES(. However, this may result
- in slower gener)HY(ated)YH( code with a greater foot)HY(print)YH(.)EP(
-
-
-
-
-
- )0 2 51 H(2.12)WB 145 Sn()WB 55 Sn( Mapping for )SM(any)ES( and )SM(anyAt)HY(tribute)YH()ES()EA()EH(
-
- )0 P(For the XML Schema )SM(any)ES( and )SM(anyAt)HY(tribute)YH()ES(
- wild)HY(cards)YH( an optional mapping can be requested with the
- )SM(--gener)HY(ate)YH(-wild)HY(card)YH()ES( option. The mapping repre)HY(sents)YH(
- the content matched by wild)HY(cards)YH( as DOM frag)HY(ments)YH(. Because the
- DOM API is used to access such content, the Xerces-C++ runtime
- should be initial)HY(ized)YH( by the appli)HY(ca)HY(tion)YH( prior to parsing and
- should remain initial)HY(ized)YH( for the life)HY(time)YH( of objects with
- the wild)HY(card)YH( content. For more infor)HY(ma)HY(tion)YH( on the Xerces-C++
- runtime initial)HY(iza)HY(tion)YH( see )0 62 1 A(Section 3.1,
- "Initial)HY(iz)HY(ing)YH( the Xerces-C++ Runtime")62 0 TN TL()Ec /AF f D(.
- )EP(
-
- )0 P(The mapping for )SM(any)ES( is similar to the mapping for
- local elements \201see )0 46 1 A(Section 2.8, "Mapping for Local
- Elements and Attributes")46 0 TN TL()Ec /AF f D(\202 except that the type used in the
- wild)HY(card)YH( mapping is )SM(xercesc::DOMEle)HY(ment)YH()ES(. As with local
- elements, the mapping divides all possi)HY(ble)YH( cardi)HY(nal)HY(ity)YH( combi)HY(na)HY(tions)YH(
- into three cardi)HY(nal)HY(ity)YH( classes: )I(one)ES(, )I(optional)ES(, and
- )I(sequence)ES(.
- )EP(
-
- )0 P(The mapping for )SM(anyAt)HY(tribute)YH()ES( repre)HY(sents)YH( the attributes
- matched by this wild)HY(card)YH( as a set of )SM(xercesc::DOMAttr)ES(
- objects with a key being the attribute's name and names)HY(pace)YH(.)EP(
-
- )0 P(Similar to local elements and attributes, the )SM(any)ES( and
- )SM(anyAt)HY(tribute)YH()ES( wild)HY(cards)YH( are mapped to a set of public type
- defi)HY(ni)HY(tions)YH( \201type)HY(defs)YH(\202 and a set of public acces)HY(sor)YH( and modi)HY(fier)YH(
- func)HY(tions)YH(. Type defi)HY(ni)HY(tions)YH( have names derived from )SM("any")ES(
- for the )SM(any)ES( wild)HY(card)YH( and )SM("any_attribute")ES(
- for the )SM(anyAt)HY(tribute)YH()ES( wild)HY(card)YH(. The acces)HY(sor)YH( and modi)HY(fier)YH(
- func)HY(tions)YH( are named )SM("any")ES( for the )SM(any)ES( wild)HY(card)YH(
- and )SM("any_attribute")ES( for the )SM(anyAt)HY(tribute)YH()ES(
- wild)HY(card)YH(. Subse)HY(quent)YH( wild)HY(cards)YH( in the same type have escaped names
- such as )SM("any1")ES( or )SM("any_attribute1")ES(.
- )EP(
-
- )0 P(Because Xerces-C++ DOM nodes always belong to a )SM(DOMDoc)HY(u)HY(ment)YH()ES(,
- each type with a wild)HY(card)YH( has an asso)HY(ci)HY(ated)YH( )SM(DOMDoc)HY(u)HY(ment)YH()ES(
- object. The refer)HY(ence)YH( to this object can be obtained using the acces)HY(sor)YH(
- func)HY(tion)YH( called )SM(dom_docu)HY(ment)YH()ES(. The access to the docu)HY(ment)YH(
- object from the appli)HY(ca)HY(tion)YH( code may be neces)HY(sary)YH( to create or modify
- the wild)HY(card)YH( content. For example:
- )EP(
-
- ) 6 37 PR(<complexType name="object">
- <sequence>
- <any namespace="##other"/>
- </sequence>
- <anyAttribute namespace="##other"/>
-</complexType>)RP(
-
- )0 P(is mapped to:)EP(
-
- ) 37 73 PR(class object: xml_schema::type
-{
-public:
- // any
- //
- const xercesc::DOMElement&
- any \201\202 const;
-
- void
- any \201const xercesc::DOMElement&\202;
-
- ...
-
- // any_attribute
- //
- typedef attribute_set any_attribute_set;
- typedef any_attribute_set::iterator any_attribute_iterator;
- typedef any_attribute_set::const_iterator any_attribute_const_iterator;
-
- const any_attribute_set&
- any_attribute \201\202 const;
-
- any_attribute_set&
- any_attribute \201\202;
-
- ...
-
- // DOMDocument object for wildcard content.
- //
- const xercesc::DOMDocument&
- dom_document \201\202 const;)WR(
-
- xercesc::DOMDocument&
- dom_document \201\202;
-
- ...
-};)RP(
-
-
- )0 P(Names and seman)HY(tics)YH( of type defi)HY(ni)HY(tions)YH( for the wild)HY(cards)YH( as well
- as signa)HY(tures)YH( of the acces)HY(sor)YH( and modi)HY(fier)YH( func)HY(tions)YH( depend on the
- wild)HY(card)YH( type as well as the cardi)HY(nal)HY(ity)YH( class for the )SM(any)ES(
- wild)HY(card)YH(. They are described in the follow)HY(ing)YH( sub-sections.
- )EP(
-
-
- )0 3 52 H(2.12.1)WB 146 Sn()WB 56 Sn( Mapping for )SM(any)ES( with the One Cardi)HY(nal)HY(ity)YH( Class)EA()EH(
-
- )0 P(For )SM(any)ES( with the One cardi)HY(nal)HY(ity)YH( class,
- there are no type defi)HY(ni)HY(tions)YH(. The acces)HY(sor)YH( func)HY(tions)YH( come in
- constant and non-constant versions. The constant acces)HY(sor)YH( func)HY(tion)YH(
- returns a constant refer)HY(ence)YH( to )SM(xercesc::DOMEle)HY(ment)YH()ES( and
- can be used for read-only access. The non-constant version returns
- an unre)HY(stricted)YH( refer)HY(ence)YH( to )SM(xercesc::DOMEle)HY(ment)YH()ES( and can
- be used for read-write access.
- )EP(
-
- )0 P(The first modi)HY(fier)YH( func)HY(tion)YH( expects an argu)HY(ment)YH( of type refer)HY(ence)YH(
- to constant )SM(xercesc::DOMEle)HY(ment)YH()ES( and makes a deep copy
- of its argu)HY(ment)YH(. The second modi)HY(fier)YH( func)HY(tion)YH( expects an argu)HY(ment)YH( of
- type pointer to )SM(xercesc::DOMEle)HY(ment)YH()ES(. This modi)HY(fier)YH(
- func)HY(tion)YH( assumes owner)HY(ship)YH( of its argu)HY(ment)YH( and expects the element
- object to be created using the DOM docu)HY(ment)YH( asso)HY(ci)HY(ated)YH( with this
- instance. For example:
- )EP(
-
- ) 5 30 PR(<complexType name="object">
- <sequence>
- <any namespace="##other"/>
- </sequence>
-</complexType>)RP(
-
- )0 P(is mapped to:)EP(
-
- ) 22 35 PR(class object: xml_schema::type
-{
-public:
- // Accessors.
- //
- const xercesc::DOMElement&
- any \201\202 const;
-
- xercesc::DOMElement&
- any \201\202;
-
- // Modifiers.
- //
- void
- any \201const xercesc::DOMElement&\202;
-
- void
- any \201xercesc::DOMElement*\202;
-
- ...
-
-};)RP(
-
-
- )0 P(The follow)HY(ing)YH( code shows how one could use this mapping:)EP(
-
- ) 10 66 PR(void
-f \201object& o, const xercesc::DOMElement& e\202
-{
- using namespace xercesc;
-
- DOMElement& e1 \201o.any \201\202\202; // get
- o.any \201e\202 // set, deep copy
- DOMDocument& doc \201o.dom_document \201\202\202;
- o.any \201doc.createElement \201...\202\202; // set, assumes ownership
-})RP(
-
- )0 3 53 H(2.12.2)WB 147 Sn()WB 57 Sn( Mapping for )SM(any)ES( with the Optional Cardi)HY(nal)HY(ity)YH( Class)EA()EH(
-
- )0 P(For )SM(any)ES( with the Optional cardi)HY(nal)HY(ity)YH( class, the type
- defi)HY(ni)HY(tions)YH( consist of an alias for the container type with name
- )SM(any_optional)ES( \201or )SM(any1_optional)ES(, etc., for
- subse)HY(quent)YH( wild)HY(cards)YH( in the type defi)HY(ni)HY(tion)YH(\202.
- )EP(
-
- )0 P(Unlike acces)HY(sor)YH( func)HY(tions)YH( for the One cardi)HY(nal)HY(ity)YH( class, acces)HY(sor)YH(
- func)HY(tions)YH( for the Optional cardi)HY(nal)HY(ity)YH( class return refer)HY(ences)YH( to
- corre)HY(spond)HY(ing)YH( contain)HY(ers)YH( rather than directly to )SM(DOMEle)HY(ment)YH()ES(.
- The acces)HY(sor)YH( func)HY(tions)YH( come in constant and non-constant versions.
- The constant acces)HY(sor)YH( func)HY(tion)YH( returns a constant refer)HY(ence)YH( to
- the container and can be used for read-only access. The non-constant
- version returns an unre)HY(stricted)YH( refer)HY(ence)YH( to the container
- and can be used for read-write access.
- )EP(
-
- )0 P(The modi)HY(fier)YH( func)HY(tions)YH( are over)HY(loaded)YH( for )SM(xercesc::DOMEle)HY(ment)YH()ES(
- and the container type. The first modi)HY(fier)YH( func)HY(tion)YH( expects an argu)HY(ment)YH( of
- type refer)HY(ence)YH( to constant )SM(xercesc::DOMEle)HY(ment)YH()ES( and
- makes a deep copy of its argu)HY(ment)YH(. The second modi)HY(fier)YH( func)HY(tion)YH(
- expects an argu)HY(ment)YH( of type pointer to )SM(xercesc::DOMEle)HY(ment)YH()ES(.
- This modi)HY(fier)YH( func)HY(tion)YH( assumes owner)HY(ship)YH( of its argu)HY(ment)YH( and expects
- the element object to be created using the DOM docu)HY(ment)YH( asso)HY(ci)HY(ated)YH(
- with this instance. The third modi)HY(fier)YH( func)HY(tion)YH( expects an argu)HY(ment)YH(
- of type refer)HY(ence)YH( to constant of the container type and makes a
- deep copy of its argu)HY(ment)YH(. For instance:
- )EP(
-
- ) 5 44 PR(<complexType name="object">
- <sequence>
- <any namespace="##other" minOccurs="0"/>
- </sequence>
-</complexType>)RP(
-
- )0 P(is mapped to:)EP(
-
- ) 29 40 PR(class object: xml_schema::type
-{
-public:
- // Type definitions.
- //
- typedef element_optional any_optional;
-
- // Accessors.
- //
- const any_optional&
- any \201\202 const;
-
- any_optional&
- any \201\202;
-
- // Modifiers.
- //
- void
- any \201const xercesc::DOMElement&\202;
-
- void
- any \201xercesc::DOMElement*\202;
-
- void
- any \201const any_optional&\202;
-
- ...
-
-};)RP(
-
-
- )0 P(The )SM(element_optional)ES( container is a
- special)HY(iza)HY(tion)YH( of the )SM(optional)ES( class template described
- in )0 48 1 A(Section 2.8.2, "Mapping for Members with the Optional
- Cardi)HY(nal)HY(ity)YH( Class")48 0 TN TL()Ec /AF f D(. Its inter)HY(face)YH( is presented below:
- )EP(
-
- ) 72 71 PR(class element_optional
-{
-public:
- explicit
- element_optional \201xercesc::DOMDocument&\202;
-
- // Makes a deep copy.
- //
- element_optional \201const xercesc::DOMElement&, xercesc::DOMDocument&\202;
-
- // Assumes ownership.
- //
- element_optional \201xercesc::DOMElement*, xercesc::DOMDocument&\202;
-
- element_optional \201const element_optional&, xercesc::DOMDocument&\202;
-
-public:
- element_optional&
- operator= \201const xercesc::DOMElement&\202;
-
- element_optional&
- operator= \201const element_optional&\202;
-
- // Pointer-like interface.
- //
-public:
- const xercesc::DOMElement*
- operator-> \201\202 const;
-
- xercesc::DOMElement*
- operator-> \201\202;)WR(
-
- const xercesc::DOMElement&
- operator* \201\202 const;
-
- xercesc::DOMElement&
- operator* \201\202;
-
- typedef void \201element_optional::*bool_convertible\202 \201\202;
- operator bool_convertible \201\202 const;
-
- // Get/set interface.
- //
-public:
- bool
- present \201\202 const;
-
- const xercesc::DOMElement&
- get \201\202 const;
-
- xercesc::DOMElement&
- get \201\202;
-
- // Makes a deep copy.
- //
- void
- set \201const xercesc::DOMElement&\202;
-
- // Assumes ownership.
- //
- void)WR(
- set \201xercesc::DOMElement*\202;
-
- void
- reset \201\202;
-};
-
-bool
-operator== \201const element_optional&, const element_optional&\202;
-
-bool
-operator!= \201const element_optional&, const element_optional&\202;)RP(
-
-
- )0 P(The follow)HY(ing)YH( code shows how one could use this mapping:)EP(
-
- ) 25 69 PR(void
-f \201object& o, const xercesc::DOMElement& e\202
-{
- using namespace xercesc;
-
- DOMDocument& doc \201o.dom_document \201\202\202;
-
- if \201o.any \201\202.present \201\202\202 // test
- {
- DOMElement& e1 \201o.any \201\202.get \201\202\202; // get
- o.any \201\202.set \201e\202; // set, deep copy
- o.any \201\202.set \201doc.createElement \201...\202\202; // set, assumes ownership
- o.any \201\202.reset \201\202; // reset
- }
-
- // Same as above but using pointer notation:
- //
- if \201o.member \201\202\202 // test
- {
- DOMElement& e1 \201*o.any \201\202\202; // get
- o.any \201e\202; // set, deep copy
- o.any \201doc.createElement \201...\202\202; // set, assumes ownership
- o.any \201\202.reset \201\202; // reset
- }
-})RP(
-
-
-
- )0 3 54 H(2.12.3)WB 148 Sn()WB 58 Sn( Mapping for )SM(any)ES( with the Sequence Cardi)HY(nal)HY(ity)YH( Class)EA()EH(
-
- )0 P(For )SM(any)ES( with the Sequence cardi)HY(nal)HY(ity)YH( class, the type
- defi)HY(ni)HY(tions)YH( consist of an alias of the container type with name
- )SM(any_sequence)ES( \201or )SM(any1_sequence)ES(, etc., for
- subse)HY(quent)YH( wild)HY(cards)YH( in the type defi)HY(ni)HY(tion)YH(\202, an alias of the iter)HY(a)HY(tor)YH(
- type with name )SM(any_iter)HY(a)HY(tor)YH()ES( \201or )SM(any1_iter)HY(a)HY(tor)YH()ES(,
- etc., for subse)HY(quent)YH( wild)HY(cards)YH( in the type defi)HY(ni)HY(tion)YH(\202, and an alias
- of the constant iter)HY(a)HY(tor)YH( type with name )SM(any_const_iter)HY(a)HY(tor)YH()ES(
- \201or )SM(any1_const_iter)HY(a)HY(tor)YH()ES(, etc., for subse)HY(quent)YH( wild)HY(cards)YH(
- in the type defi)HY(ni)HY(tion)YH(\202.
- )EP(
-
- )0 P(The acces)HY(sor)YH( func)HY(tions)YH( come in constant and non-constant versions.
- The constant acces)HY(sor)YH( func)HY(tion)YH( returns a constant refer)HY(ence)YH( to the
- container and can be used for read-only access. The non-constant
- version returns an unre)HY(stricted)YH( refer)HY(ence)YH( to the container and can
- be used for read-write access.
- )EP(
-
- )0 P(The modi)HY(fier)YH( func)HY(tion)YH( expects an argu)HY(ment)YH( of type refer)HY(ence)YH( to
- constant of the container type. The modi)HY(fier)YH( func)HY(tion)YH( makes
- a deep copy of its argu)HY(ment)YH(. For instance:
- )EP(
-
-
- ) 5 52 PR(<complexType name="object">
- <sequence>
- <any namespace="##other" minOccurs="unbounded"/>
- </sequence>
-</complexType>)RP(
-
- )0 P(is mapped to:)EP(
-
- ) 25 58 PR(class object: xml_schema::type
-{
-public:
- // Type definitions.
- //
- typedef element_sequence any_sequence;
- typedef any_sequence::iterator any_iterator;
- typedef any_sequence::const_iterator any_const_iterator;
-
- // Accessors.
- //
- const any_sequence&
- any \201\202 const;
-
- any_sequence&
- any \201\202;
-
- // Modifier.
- //
- void
- any \201const any_sequence&\202;
-
- ...
-
-};)RP(
-
- )0 P(The )SM(element_sequence)ES( container is a
- special)HY(iza)HY(tion)YH( of the )SM(sequence)ES( class template described
- in )0 49 1 A(Section 2.8.3, "Mapping for Members with the
- Sequence Cardi)HY(nal)HY(ity)YH( Class")49 0 TN TL()Ec /AF f D(. Its inter)HY(face)YH( is similar to
- the sequence inter)HY(face)YH( as defined by the ISO/ANSI Stan)HY(dard)YH( for
- C++ \201ISO/IEC 14882:1998, Section 23.1.1, "Sequences"\202 and is
- presented below:
- )EP(
-
- ) 178 70 PR(class element_sequence
-{
-public:
- typedef xercesc::DOMElement value_type;
- typedef xercesc::DOMElement* pointer;
- typedef const xercesc::DOMElement* const_pointer;
- typedef xercesc::DOMElement& reference;
- typedef const xercesc::DOMElement& const_reference;
-
- typedef <implementation-defined> iterator;
- typedef <implementation-defined> const_iterator;
- typedef <implementation-defined> reverse_iterator;
- typedef <implementation-defined> const_reverse_iterator;
-
- typedef <implementation-defined> size_type;
- typedef <implementation-defined> difference_type;
- typedef <implementation-defined> allocator_type;
-
-public:
- explicit
- element_sequence \201xercesc::DOMDocument&\202;
-
- // DOMElement cannot be default-constructed.
- //
- // explicit
- // element_sequence \201size_type n\202;
-
- element_sequence \201size_type n,
- const xercesc::DOMElement&,
- xercesc::DOMDocument&\202;
-)WR(
- template <typename I>
- element_sequence \201const I& begin,
- const I& end,
- xercesc::DOMDocument&\202;
-
- element_sequence \201const element_sequence&, xercesc::DOMDocument&\202;
-
- element_sequence&
- operator= \201const element_sequence&\202;
-
-public:
- void
- assign \201size_type n, const xercesc::DOMElement&\202;
-
- template <typename I>
- void
- assign \201const I& begin, const I& end\202;
-
-public:
- // This version of resize can only be used to shrink the
- // sequence because DOMElement cannot be default-constructed.
- //
- void
- resize \201size_type\202;
-
- void
- resize \201size_type, const xercesc::DOMElement&\202;
-
-public:
- size_type)WR(
- size \201\202 const;
-
- size_type
- max_size \201\202 const;
-
- size_type
- capacity \201\202 const;
-
- bool
- empty \201\202 const;
-
- void
- reserve \201size_type\202;
-
- void
- clear \201\202;
-
-public:
- const_iterator
- begin \201\202 const;
-
- const_iterator
- end \201\202 const;
-
- iterator
- begin \201\202;
-
- iterator
- end \201\202;
-)WR(
- const_reverse_iterator
- rbegin \201\202 const;
-
- const_reverse_iterator
- rend \201\202 const
-
- reverse_iterator
- rbegin \201\202;
-
- reverse_iterator
- rend \201\202;
-
-public:
- xercesc::DOMElement&
- operator[] \201size_type\202;
-
- const xercesc::DOMElement&
- operator[] \201size_type\202 const;
-
- xercesc::DOMElement&
- at \201size_type\202;
-
- const xercesc::DOMElement&
- at \201size_type\202 const;
-
- xercesc::DOMElement&
- front \201\202;
-
- const xercesc::DOMElement&
- front \201\202 const;)WR(
-
- xercesc::DOMElement&
- back \201\202;
-
- const xercesc::DOMElement&
- back \201\202 const;
-
-public:
- // Makes a deep copy.
- //
- void
- push_back \201const xercesc::DOMElement&\202;
-
- // Assumes ownership.
- //
- void
- push_back \201xercesc::DOMElement*\202;
-
- void
- pop_back \201\202;
-
- // Makes a deep copy.
- //
- iterator
- insert \201iterator position, const xercesc::DOMElement&\202;
-
- // Assumes ownership.
- //
- iterator
- insert \201iterator position, xercesc::DOMElement*\202;)WR(
-
- void
- insert \201iterator position, size_type n, const xercesc::DOMElement&\202;
-
- template <typename I>
- void
- insert \201iterator position, const I& begin, const I& end\202;
-
- iterator
- erase \201iterator position\202;
-
- iterator
- erase \201iterator begin, iterator end\202;
-
-public:
- // Note that the DOMDocument object of the two sequences being
- // swapped should be the same.
- //
- void
- swap \201sequence& x\202;
-};
-
-inline bool
-operator== \201const element_sequence&, const element_sequence&\202;
-
-inline bool
-operator!= \201const element_sequence&, const element_sequence&\202;)RP(
-
-
- )0 P(The follow)HY(ing)YH( code shows how one could use this mapping:)EP(
-
- ) 20 63 PR(void
-f \201object& o, const xercesc::DOMElement& e\202
-{
- using namespace xercesc;
-
- object::any_sequence& s \201o.any \201\202\202;
-
- // Iteration.
- //
- for \201object::any_iterator i \201s.begin \201\202\202; i != s.end \201\202; ++i\202
- {
- DOMElement& e \201*i\202;
- }
-
- // Modification.
- //
- s.push_back \201e\202; // deep copy
- DOMDocument& doc \201o.dom_document \201\202\202;
- s.push_back \201doc.createElement \201...\202\202; // assumes ownership
-})RP(
-
-
- )0 3 55 H(2.12.4)WB 149 Sn()WB 59 Sn( Mapping for )SM(anyAt)HY(tribute)YH()ES()EA()EH(
-
- )0 P(For )SM(anyAt)HY(tribute)YH()ES( the type defi)HY(ni)HY(tions)YH( consist of an alias
- of the container type with name )SM(any_attribute_set)ES(
- \201or )SM(any1_attribute_set)ES(, etc., for subse)HY(quent)YH( wild)HY(cards)YH(
- in the type defi)HY(ni)HY(tion)YH(\202, an alias of the iter)HY(a)HY(tor)YH( type with name
- )SM(any_attribute_iter)HY(a)HY(tor)YH()ES( \201or )SM(any1_attribute_iter)HY(a)HY(tor)YH()ES(,
- etc., for subse)HY(quent)YH( wild)HY(cards)YH( in the type defi)HY(ni)HY(tion)YH(\202, and an alias
- of the constant iter)HY(a)HY(tor)YH( type with name )SM(any_attribute_const_iter)HY(a)HY(tor)YH()ES(
- \201or )SM(any1_attribute_const_iter)HY(a)HY(tor)YH()ES(, etc., for subse)HY(quent)YH(
- wild)HY(cards)YH( in the type defi)HY(ni)HY(tion)YH(\202.
- )EP(
-
- )0 P(The acces)HY(sor)YH( func)HY(tions)YH( come in constant and non-constant versions.
- The constant acces)HY(sor)YH( func)HY(tion)YH( returns a constant refer)HY(ence)YH( to the
- container and can be used for read-only access. The non-constant
- version returns an unre)HY(stricted)YH( refer)HY(ence)YH( to the container and can
- be used for read-write access.
- )EP(
-
- )0 P(The modi)HY(fier)YH( func)HY(tion)YH( expects an argu)HY(ment)YH( of type refer)HY(ence)YH( to
- constant of the container type. The modi)HY(fier)YH( func)HY(tion)YH( makes
- a deep copy of its argu)HY(ment)YH(. For instance:
- )EP(
-
-
- ) 6 37 PR(<complexType name="object">
- <sequence>
- ...
- </sequence>
- <anyAttribute namespace="##other"/>
-</complexType>)RP(
-
- )0 P(is mapped to:)EP(
-
- ) 25 73 PR(class object: xml_schema::type
-{
-public:
- // Type definitions.
- //
- typedef attribute_set any_attribute_set;
- typedef any_attribute_set::iterator any_attribute_iterator;
- typedef any_attribute_set::const_iterator any_attribute_const_iterator;
-
- // Accessors.
- //
- const any_attribute_set&
- any_attribute \201\202 const;
-
- any_attribute_set&
- any_attribute \201\202;
-
- // Modifier.
- //
- void
- any_attribute \201const any_attribute_set&\202;
-
- ...
-
-};)RP(
-
- )0 P(The )SM(attribute_set)ES( class is an asso)HY(cia)HY(tive)YH( container
- similar to the )SM(std::set)ES( class template as defined by
- the ISO/ANSI Stan)HY(dard)YH( for C++ \201ISO/IEC 14882:1998, Section 23.3.3,
- "Class template set"\202 with the key being the attribute's name
- and names)HY(pace)YH(. Unlike )SM(std::set)ES(, )SM(attribute_set)ES(
- allows search)HY(ing)YH( using names and names)HY(paces)YH( instead of
- )SM(xercesc::DOMAttr)ES( objects. It is defined in an
- imple)HY(men)HY(ta)HY(tion)YH(-specific names)HY(pace)YH( and its inter)HY(face)YH( is presented
- below:
- )EP(
-
- ) 166 70 PR(class attribute_set
-{
-public:
- typedef xercesc::DOMAttr key_type;
- typedef xercesc::DOMAttr value_type;
- typedef xercesc::DOMAttr* pointer;
- typedef const xercesc::DOMAttr* const_pointer;
- typedef xercesc::DOMAttr& reference;
- typedef const xercesc::DOMAttr& const_reference;
-
- typedef <implementation-defined> iterator;
- typedef <implementation-defined> const_iterator;
- typedef <implementation-defined> reverse_iterator;
- typedef <implementation-defined> const_reverse_iterator;
-
- typedef <implementation-defined> size_type;
- typedef <implementation-defined> difference_type;
- typedef <implementation-defined> allocator_type;
-
-public:
- attribute_set \201xercesc::DOMDocument&\202;
-
- template <typename I>
- attribute_set \201const I& begin, const I& end, xercesc::DOMDocument&\202;
-
- attribute_set \201const attribute_set&, xercesc::DOMDocument&\202;
-
- attribute_set&
- operator= \201const attribute_set&\202;
-
-public:)WR(
- const_iterator
- begin \201\202 const;
-
- const_iterator
- end \201\202 const;
-
- iterator
- begin \201\202;
-
- iterator
- end \201\202;
-
- const_reverse_iterator
- rbegin \201\202 const;
-
- const_reverse_iterator
- rend \201\202 const;
-
- reverse_iterator
- rbegin \201\202;
-
- reverse_iterator
- rend \201\202;
-
-public:
- size_type
- size \201\202 const;
-
- size_type
- max_size \201\202 const;)WR(
-
- bool
- empty \201\202 const;
-
- void
- clear \201\202;
-
-public:
- // Makes a deep copy.
- //
- std::pair<iterator, bool>
- insert \201const xercesc::DOMAttr&\202;
-
- // Assumes ownership.
- //
- std::pair<iterator, bool>
- insert \201xercesc::DOMAttr*\202;
-
- // Makes a deep copy.
- //
- iterator
- insert \201iterator position, const xercesc::DOMAttr&\202;
-
- // Assumes ownership.
- //
- iterator
- insert \201iterator position, xercesc::DOMAttr*\202;
-
- template <typename I>
- void)WR(
- insert \201const I& begin, const I& end\202;
-
-public:
- void
- erase \201iterator position\202;
-
- size_type
- erase \201const std::basic_string<C>& name\202;
-
- size_type
- erase \201const std::basic_string<C>& namespace_,
- const std::basic_string<C>& name\202;
-
- size_type
- erase \201const XMLCh* name\202;
-
- size_type
- erase \201const XMLCh* namespace_, const XMLCh* name\202;
-
- void
- erase \201iterator begin, iterator end\202;
-
-public:
- size_type
- count \201const std::basic_string<C>& name\202 const;
-
- size_type
- count \201const std::basic_string<C>& namespace_,
- const std::basic_string<C>& name\202 const;
-)WR(
- size_type
- count \201const XMLCh* name\202 const;
-
- size_type
- count \201const XMLCh* namespace_, const XMLCh* name\202 const;
-
- iterator
- find \201const std::basic_string<C>& name\202;
-
- iterator
- find \201const std::basic_string<C>& namespace_,
- const std::basic_string<C>& name\202;
-
- iterator
- find \201const XMLCh* name\202;
-
- iterator
- find \201const XMLCh* namespace_, const XMLCh* name\202;
-
- const_iterator
- find \201const std::basic_string<C>& name\202 const;
-
- const_iterator
- find \201const std::basic_string<C>& namespace_,
- const std::basic_string<C>& name\202 const;
-
- const_iterator
- find \201const XMLCh* name\202 const;
-
- const_iterator)WR(
- find \201const XMLCh* namespace_, const XMLCh* name\202 const;
-
-public:
- // Note that the DOMDocument object of the two sets being
- // swapped should be the same.
- //
- void
- swap \201attribute_set&\202;
-};
-
-bool
-operator== \201const attribute_set&, const attribute_set&\202;
-
-bool
-operator!= \201const attribute_set&, const attribute_set&\202;)RP(
-
- )0 P(The follow)HY(ing)YH( code shows how one could use this mapping:)EP(
-
- ) 25 73 PR(void
-f \201object& o, const xercesc::DOMAttr& a\202
-{
- using namespace xercesc;
-
- object::any_attribute_set& s \201o.any_attribute \201\202\202;
-
- // Iteration.
- //
- for \201object::any_attribute_iterator i \201s.begin \201\202\202; i != s.end \201\202; ++i\202
- {
- DOMAttr& a \201*i\202;
- }
-
- // Modification.
- //
- s.insert \201a\202; // deep copy
- DOMDocument& doc \201o.dom_document \201\202\202;
- s.insert \201doc.createAttribute \201...\202\202; // assumes ownership
-
- // Searching.
- //
- object::any_attribute_iterator i \201s.find \201"name"\202\202;
- i = s.find \201"http://www.w3.org/XML/1998/namespace", "lang"\202;
-})RP(
-
-
-
- )0 2 56 H(2.13)WB 150 Sn()WB 60 Sn( Mapping for Mixed Content Models)EA()EH(
-
- )0 P(XML Schema mixed content models do not have a direct C++ mapping.
- Instead, infor)HY(ma)HY(tion)YH( in XML instance docu)HY(ments)YH(, corre)HY(spond)HY(ing)YH( to
- a mixed content model, can be accessed using generic DOM nodes that
- can option)HY(ally)YH( be asso)HY(ci)HY(ated)YH( with object model nodes. See
- )0 90 1 A(Section 5.1, "DOM Asso)HY(ci)HY(a)HY(tion)YH(")90 0 TN TL()Ec /AF f D( for more
- infor)HY(ma)HY(tion)YH( about keeping asso)HY(ci)HY(a)HY(tion)YH( with DOM nodes.
- )EP(
-
-
-
-
-
- )0 1 57 H(3)WB 151 Sn()WB 61 Sn( Parsing)EA()EH(
-
- )0 P(This chapter covers various aspects of parsing XML instance
- docu)HY(ments)YH( in order to obtain corre)HY(spond)HY(ing)YH( tree-like object
- model.
- )EP(
-
- )0 P(Each global XML Schema element in the form:)EP(
-
- ) 1 34 PR(<element name="name" type="type"/>)RP(
-
- )0 P(is mapped to 14 over)HY(loaded)YH( C++ func)HY(tions)YH( in the form:)EP(
-
- ) 96 65 PR(// Read from a URI or a local file.
-//
-
-std::auto_ptr<type>
-name \201const std::basic_string<C>& uri,
- xml_schema::flags = 0,
- const xml_schema::properties& = xml_schema::properties \201\202\202;
-
-std::auto_ptr<type>
-name \201const std::basic_string<C>& uri,
- xml_schema::error_handler&,
- xml_schema::flags = 0,
- const xml_schema::properties& = xml_schema::properties \201\202\202;
-
-std::auto_ptr<type>
-name \201const std::basic_string<C>& uri,
- xercesc::DOMErrorHandler&,
- xml_schema::flags = 0,
- const xml_schema::properties& = xml_schema::properties \201\202\202;
-
-
-// Read from std::istream.
-//
-
-std::auto_ptr<type>
-name \201std::istream&,
- xml_schema::flags = 0,
- const xml_schema::properties& = xml_schema::properties \201\202\202;
-
-std::auto_ptr<type>
-name \201std::istream&,)WR(
- xml_schema::error_handler&,
- xml_schema::flags = 0,
- const xml_schema::properties& = xml_schema::properties \201\202\202;
-
-std::auto_ptr<type>
-name \201std::istream&,
- xercesc::DOMErrorHandler&,
- xml_schema::flags = 0,
- const xml_schema::properties& = xml_schema::properties \201\202\202;
-
-
-std::auto_ptr<type>
-name \201std::istream&,
- const std::basic_string<C>& id,
- xml_schema::flags = 0,
- const xml_schema::properties& = xml_schema::properties \201\202\202;
-
-std::auto_ptr<type>
-name \201std::istream&,
- const std::basic_string<C>& id,
- xml_schema::error_handler&,
- xml_schema::flags = 0,
- const xml_schema::properties& = xml_schema::properties \201\202\202;
-
-std::auto_ptr<type>
-name \201std::istream&,
- const std::basic_string<C>& id,
- xercesc::DOMErrorHandler&,
- xml_schema::flags = 0,
- const xml_schema::properties& = xml_schema::properties \201\202\202;)WR(
-
-
-// Read from InputSource.
-//
-
-std::auto_ptr<type>
-name \201xercesc::InputSource&,
- xml_schema::flags = 0,
- const xml_schema::properties& = xml_schema::properties \201\202\202;
-
-std::auto_ptr<type>
-name \201xercesc::InputSource&,
- xml_schema::error_handler&,
- xml_schema::flags = 0,
- const xml_schema::properties& = xml_schema::properties \201\202\202;
-
-std::auto_ptr<type>
-name \201xercesc::InputSource&,
- xercesc::DOMErrorHandler&,
- xml_schema::flags = 0,
- const xml_schema::properties& = xml_schema::properties \201\202\202;
-
-
-// Read from DOM.
-//
-
-std::auto_ptr<type>
-name \201const xercesc::DOMDocument&,
- xml_schema::flags = 0,
- const xml_schema::properties& = xml_schema::properties \201\202\202;)WR(
-
-std::auto_ptr<type>
-name \201xml_schema::dom::auto_ptr<xercesc::DOMDocument>&,
- xml_schema::flags = 0,
- const xml_schema::properties& = xml_schema::properties \201\202\202;)RP(
-
- )0 P(You can choose between reading an XML instance from a local file,
- URI, )SM(std::istream)ES(, )SM(xercesc::Input)HY(Source)YH()ES(,
- or a pre-parsed DOM instance in the form of
- )SM(xercesc::DOMDoc)HY(u)HY(ment)YH()ES(. Each of these parsing func)HY(tions)YH(
- is discussed in more detail in the follow)HY(ing)YH( sections.
- )EP(
-
- )0 2 58 H(3.1)WB 152 Sn()WB 62 Sn( Initial)HY(iz)HY(ing)YH( the Xerces-C++ Runtime)EA()EH(
-
- )0 P(Some parsing func)HY(tions)YH( expect you to initial)HY(ize)YH( the Xerces-C++
- runtime while others initial)HY(ize)YH( and termi)HY(nate)YH( it as part of their
- work. The general rule is as follows: if a func)HY(tion)YH( has any argu)HY(ments)YH(
- or return a value that is an instance of a Xerces-C++ type, then
- this func)HY(tion)YH( expects you to initial)HY(ize)YH( the Xerces-C++ runtime.
- Other)HY(wise)YH(, the func)HY(tion)YH( initial)HY(izes)YH( and termi)HY(nates)YH( the runtime for
- you. Note that it is legal to have nested calls to the Xerces-C++
- initial)HY(ize)YH( and termi)HY(nate)YH( func)HY(tions)YH( as long as the calls are balanced.
- )EP(
-
- )0 P(You can instruct parsing func)HY(tions)YH( that initial)HY(ize)YH( and termi)HY(nate)YH(
- the runtime not to do so by passing the
- )SM(xml_schema::flags::dont_initial)HY(ize)YH()ES( flag \201see
- )0 63 1 A(Section 3.2, "Flags and Prop)HY(er)HY(ties)YH(")63 0 TN TL()Ec /AF f D(\202.
- )EP(
-
-
- )0 2 59 H(3.2)WB 153 Sn()WB 63 Sn( Flags and Prop)HY(er)HY(ties)YH()EA()EH(
-
- )0 P(Parsing flags and prop)HY(er)HY(ties)YH( are the last two argu)HY(ments)YH( of every
- parsing func)HY(tion)YH(. They allow you to fine-tune the process of
- instance vali)HY(da)HY(tion)YH( and parsing. Both argu)HY(ments)YH( are optional.
- )EP(
-
-
- )0 P(The follow)HY(ing)YH( flags are recog)HY(nized)YH( by the parsing func)HY(tions)YH(:)EP(
-
- )0 DL( )0 DT()SM(xml_schema::flags::keep_dom)ES(
- )DD(Keep asso)HY(ci)HY(a)HY(tion)YH( between DOM nodes and the result)HY(ing)YH(
- object model nodes. For more infor)HY(ma)HY(tion)YH( about DOM asso)HY(ci)HY(a)HY(tion)YH(
- refer to )0 90 1 A(Section 5.1, "DOM Asso)HY(ci)HY(a)HY(tion)YH(")90 0 TN TL()Ec /AF f D(.
-
- )0 DT()SM(xml_schema::flags::own_dom)ES(
- )DD(Assume owner)HY(ship)YH( of the DOM docu)HY(ment)YH( passed. This flag only
- makes sense together with the )SM(keep_dom)ES( flag in
- the call to the parsing func)HY(tion)YH( with the
- )SM(xml_schema::dom::auto_ptr<DOMDoc)HY(u)HY(ment)YH(>)ES(
- argu)HY(ment)YH(.
-
- )0 DT()SM(xml_schema::flags::dont_vali)HY(date)YH()ES(
- )DD(Do not vali)HY(date)YH( instance docu)HY(ments)YH( against schemas.
-
- )0 DT()SM(xml_schema::flags::dont_initial)HY(ize)YH()ES(
- )DD(Do not initial)HY(ize)YH( the Xerces-C++ runtime.
- )LD(
-
- )0 P(You can pass several flags by combin)HY(ing)YH( them using the bit-wise OR
- oper)HY(a)HY(tor)YH(. For example:)EP(
-
- ) 4 61 PR(using xml_schema::flags;
-
-std::auto_ptr<type> r \201
- name \201"test.xml", flags::keep_dom | flags::dont_validate\202\202;)RP(
-
- )0 P(By default, vali)HY(da)HY(tion)YH( of instance docu)HY(ments)YH( is turned on even
- though parsers gener)HY(ated)YH( by XSD do not assume instance
- docu)HY(ments)YH( are valid. They include a number of checks that prevent
- construc)HY(tion)YH( of incon)HY(sis)HY(tent)YH( object models. This,
- however, does not mean that an instance docu)HY(ment)YH( that was
- success)HY(fully)YH( parsed by the XSD-gener)HY(ated)YH( parsers is
- valid per the corre)HY(spond)HY(ing)YH( schema. If an instance docu)HY(ment)YH( is not
- "valid enough" for the gener)HY(ated)YH( parsers to construct consis)HY(tent)YH(
- object model, one of the excep)HY(tions)YH( defined in
- )SM(xml_schema)ES( names)HY(pace)YH( is thrown \201see
- )0 64 1 A(Section 3.3, "Error Handling")64 0 TN TL()Ec /AF f D(\202.
- )EP(
-
- )0 P(For more infor)HY(ma)HY(tion)YH( on the Xerces-C++ runtime initial)HY(iza)HY(tion)YH(
- refer to )0 62 1 A(Section 3.1, "Initial)HY(iz)HY(ing)YH( the Xerces-C++
- Runtime")62 0 TN TL()Ec /AF f D(.
- )EP(
-
- )0 P(The )SM(xml_schema::prop)HY(er)HY(ties)YH()ES( class allows you to
- program)HY(mat)HY(i)HY(cally)YH( specify schema loca)HY(tions)YH( to be used instead
- of those spec)HY(i)HY(fied)YH( with the )SM(xsi::schemaLo)HY(ca)HY(tion)YH()ES(
- and )SM(xsi::noNames)HY(paceSchemaLo)HY(ca)HY(tion)YH()ES( attributes
- in instance docu)HY(ments)YH(. The inter)HY(face)YH( of the )SM(prop)HY(er)HY(ties)YH()ES(
- class is presented below:
- )EP(
-
- ) 9 70 PR(class properties
-{
-public:
- void
- schema_location \201const std::basic_string<C>& namespace_,
- const std::basic_string<C>& location\202;
- void
- no_namespace_schema_location \201const std::basic_string<C>& location\202;
-};)RP(
-
- )0 P(Note that all loca)HY(tions)YH( are rela)HY(tive)YH( to an instance docu)HY(ment)YH( unless
- they are URIs. For example, if you want to use a local file as your
- schema, then you will need to pass
- )SM(file:///abso)HY(lute)YH(/path/to/your/schema)ES( as the loca)HY(tion)YH(
- argu)HY(ment)YH(.
- )EP(
-
- )0 2 60 H(3.3)WB 154 Sn()WB 64 Sn( Error Handling)EA()EH(
-
- )0 P(As discussed in )0 13 1 A(Section 2.2, "Error Handling")13 0 TN TL()Ec /AF f D(,
- the mapping uses the C++ excep)HY(tion)YH( handling mech)HY(a)HY(nism)YH( as its primary
- way of report)HY(ing)YH( error condi)HY(tions)YH(. However, to handle recov)HY(er)HY(able)YH(
- parsing and vali)HY(da)HY(tion)YH( errors and warn)HY(ings)YH(, a call)HY(back)YH( inter)HY(face)YH( maybe
- preferred by the appli)HY(ca)HY(tion)YH(.)EP(
-
- )0 P(To better under)HY(stand)YH( error handling and report)HY(ing)YH( strate)HY(gies)YH( employed
- by the parsing func)HY(tions)YH(, it is useful to know that the
- trans)HY(for)HY(ma)HY(tion)YH( of an XML instance docu)HY(ment)YH( to a stat)HY(i)HY(cally)YH(-typed
- tree happens in two stages. The first stage, performed by Xerces-C++,
- consists of parsing an XML docu)HY(ment)YH( into a DOM instance. For short,
- we will call this stage the XML-DOM stage. Vali)HY(da)HY(tion)YH(, if not disabled,
- happens during this stage. The second stage,
- performed by the gener)HY(ated)YH( parsers, consist of parsing the DOM
- instance into the stat)HY(i)HY(cally)YH(-typed tree. We will call this stage
- the DOM-Tree stage. Addi)HY(tional)YH( checks are performed during this
- stage in order to prevent construc)HY(tion)YH( of incon)HY(sis)HY(tent)YH( tree which
- could other)HY(wise)YH( happen when vali)HY(da)HY(tion)YH( is disabled, for example.)EP(
-
- )0 P(All parsing func)HY(tions)YH( except the one that oper)HY(ates)YH( on a DOM instance
- come in over)HY(loaded)YH( triples. The first func)HY(tion)YH( in such a triple
- reports error condi)HY(tions)YH( exclu)HY(sively)YH( by throw)HY(ing)YH( excep)HY(tions)YH(. It
- accu)HY(mu)HY(lates)YH( all the parsing and vali)HY(da)HY(tion)YH( errors of the XML-DOM
- stage and throws them in a single instance of the
- )SM(xml_schema::parsing)ES( excep)HY(tion)YH( \201described below\202.
- The second and the third func)HY(tions)YH( in the triple use call)HY(back)YH(
- inter)HY(faces)YH( to report parsing and vali)HY(da)HY(tion)YH( errors and warn)HY(ings)YH(.
- The two call)HY(back)YH( inter)HY(faces)YH( are )SM(xml_schema::error_handler)ES(
- and )SM(xercesc::DOMEr)HY(rorHan)HY(dler)YH()ES(. For more infor)HY(ma)HY(tion)YH(
- on the )SM(xercesc::DOMEr)HY(rorHan)HY(dler)YH()ES( inter)HY(face)YH( refer to
- the Xerces-C++ docu)HY(men)HY(ta)HY(tion)YH(. The )SM(xml_schema::error_handler)ES(
- inter)HY(face)YH( is presented below:
- )EP(
-
- ) 23 51 PR(class error_handler
-{
-public:
- struct severity
- {
- enum value
- {
- warning,
- error,
- fatal
- };
- };
-
- virtual bool
- handle \201const std::basic_string<C>& id,
- unsigned long line,
- unsigned long column,
- severity,
- const std::basic_string<C>& message\202 = 0;
-
- virtual
- ~error_handler \201\202;
-};)RP(
-
- )0 P(The )SM(id)ES( argu)HY(ment)YH( of the )SM(error_handler::handle)ES(
- func)HY(tion)YH( iden)HY(ti)HY(fies)YH( the resource being parsed \201e.g., a file name or
- URI\202.
- )EP(
-
- )0 P(By return)HY(ing)YH( )SM(true)ES( from the )SM(handle)ES( func)HY(tion)YH(
- you instruct the parser to recover and continue parsing. Return)HY(ing)YH(
- )SM(false)ES( results in termi)HY(na)HY(tion)YH( of the parsing process.
- An error with the )SM(fatal)ES( sever)HY(ity)YH( level results in
- termi)HY(na)HY(tion)YH( of the parsing process no matter what is returned from
- the )SM(handle)ES( func)HY(tion)YH(. It is safe to throw an excep)HY(tion)YH(
- from the )SM(handle)ES( func)HY(tion)YH(.
- )EP(
-
- )0 P(The DOM-Tree stage reports error condi)HY(tions)YH( exclu)HY(sively)YH( by throw)HY(ing)YH(
- excep)HY(tions)YH(. Indi)HY(vid)HY(ual)YH( excep)HY(tions)YH( thrown by the parsing func)HY(tions)YH(
- are described in the follow)HY(ing)YH( sub-sections.
- )EP(
-
-
- )0 3 61 H(3.3.1)WB 155 Sn()WB 65 Sn( )SM(xml_schema::parsing)ES()EA()EH(
-
- ) 57 56 PR(struct severity
-{
- enum value
- {
- warning,
- error
- };
-
- severity \201value\202;
- operator value \201\202 const;
-};
-
-struct error
-{
- error \201severity,
- const std::basic_string<C>& id,
- unsigned long line,
- unsigned long column,
- const std::basic_string<C>& message\202;
-
- severity
- severity \201\202 const;
-
- const std::basic_string<C>&
- id \201\202 const;
-
- unsigned long
- line \201\202 const;
-
- unsigned long
- column \201\202 const;)WR(
-
- const std::basic_string<C>&
- message \201\202 const;
-};
-
-std::basic_ostream<C>&
-operator<< \201std::basic_ostream<C>&, const error&\202;
-
-struct diagnostics: std::vector<error>
-{
-};
-
-std::basic_ostream<C>&
-operator<< \201std::basic_ostream<C>&, const diagnostics&\202;
-
-struct parsing: virtual exception
-{
- parsing \201\202;
- parsing \201const diagnostics&\202;
-
- const diagnostics&
- diagnostics \201\202 const;
-
- virtual const char*
- what \201\202 const throw \201\202;
-};)RP(
-
- )0 P(The )SM(xml_schema::parsing)ES( excep)HY(tion)YH( is thrown if there
- were parsing or vali)HY(da)HY(tion)YH( errors reported during the XML-DOM stage.
- If no call)HY(back)YH( inter)HY(face)YH( was provided to the parsing func)HY(tion)YH(, the
- excep)HY(tion)YH( contains a list of errors and warn)HY(ings)YH( acces)HY(si)HY(ble)YH( using
- the )SM(diag)HY(nos)HY(tics)YH()ES( func)HY(tion)YH(. The usual condi)HY(tions)YH( when
- this excep)HY(tion)YH( is thrown include malformed XML instances and, if
- vali)HY(da)HY(tion)YH( is turned on, invalid instance docu)HY(ments)YH(.
- )EP(
-
- )0 3 62 H(3.3.2)WB 156 Sn()WB 66 Sn( )SM(xml_schema::expected_element)ES()EA()EH(
-
- ) 16 60 PR(struct expected_element: virtual exception
-{
- expected_element \201const std::basic_string<C>& name,
- const std::basic_string<C>& namespace_\202;
-
-
- const std::basic_string<C>&
- name \201\202 const;
-
- const std::basic_string<C>&
- namespace_ \201\202 const;
-
-
- virtual const char*
- what \201\202 const throw \201\202;
-};)RP(
-
- )0 P(The )SM(xml_schema::expected_element)ES( excep)HY(tion)YH( is thrown
- when an expected element is not encoun)HY(tered)YH( by the DOM-Tree stage.
- The name and names)HY(pace)YH( of the expected element can be obtained using
- the )SM(name)ES( and )SM(names)HY(pace)YH(_)ES( func)HY(tions)YH( respec)HY(tively)YH(.
- )EP(
-
-
- )0 3 63 H(3.3.3)WB 157 Sn()WB 67 Sn( )SM(xml_schema::unex)HY(pected)YH(_element)ES()EA()EH(
-
- ) 25 72 PR(struct unexpected_element: virtual exception
-{
- unexpected_element \201const std::basic_string<C>& encountered_name,
- const std::basic_string<C>& encountered_namespace,
- const std::basic_string<C>& expected_name,
- const std::basic_string<C>& expected_namespace\202
-
-
- const std::basic_string<C>&
- encountered_name \201\202 const;
-
- const std::basic_string<C>&
- encountered_namespace \201\202 const;
-
-
- const std::basic_string<C>&
- expected_name \201\202 const;
-
- const std::basic_string<C>&
- expected_namespace \201\202 const;
-
-
- virtual const char*
- what \201\202 const throw \201\202;
-};)RP(
-
- )0 P(The )SM(xml_schema::unex)HY(pected)YH(_element)ES( excep)HY(tion)YH( is thrown
- when an unex)HY(pected)YH( element is encoun)HY(tered)YH( by the DOM-Tree stage.
- The name and names)HY(pace)YH( of the encoun)HY(tered)YH( element can be obtained
- using the )SM(encoun)HY(tered)YH(_name)ES( and
- )SM(encoun)HY(tered)YH(_names)HY(pace)YH()ES( func)HY(tions)YH( respec)HY(tively)YH(. If an
- element was expected instead of the encoun)HY(tered)YH( one, its name
- and names)HY(pace)YH( can be obtained using the )SM(expected_name)ES( and
- )SM(expected_names)HY(pace)YH()ES( func)HY(tions)YH( respec)HY(tively)YH(. Other)HY(wise)YH(
- these func)HY(tions)YH( return empty strings.
- )EP(
-
- )0 3 64 H(3.3.4)WB 158 Sn()WB 68 Sn( )SM(xml_schema::expected_attribute)ES()EA()EH(
-
- ) 16 62 PR(struct expected_attribute: virtual exception
-{
- expected_attribute \201const std::basic_string<C>& name,
- const std::basic_string<C>& namespace_\202;
-
-
- const std::basic_string<C>&
- name \201\202 const;
-
- const std::basic_string<C>&
- namespace_ \201\202 const;
-
-
- virtual const char*
- what \201\202 const throw \201\202;
-};)RP(
-
- )0 P(The )SM(xml_schema::expected_attribute)ES( excep)HY(tion)YH( is thrown
- when an expected attribute is not encoun)HY(tered)YH( by the DOM-Tree stage.
- The name and names)HY(pace)YH( of the expected attribute can be obtained using
- the )SM(name)ES( and )SM(names)HY(pace)YH(_)ES( func)HY(tions)YH( respec)HY(tively)YH(.
- )EP(
-
-
- )0 3 65 H(3.3.5)WB 159 Sn()WB 69 Sn( )SM(xml_schema::unex)HY(pected)YH(_enumer)HY(a)HY(tor)YH()ES()EA()EH(
-
- ) 10 65 PR(struct unexpected_enumerator: virtual exception
-{
- unexpected_enumerator \201const std::basic_string<C>& enumerator\202;
-
- const std::basic_string<C>&
- enumerator \201\202 const;
-
- virtual const char*
- what \201\202 const throw \201\202;
-};)RP(
-
- )0 P(The )SM(xml_schema::unex)HY(pected)YH(_enumer)HY(a)HY(tor)YH()ES( excep)HY(tion)YH( is thrown
- when an unex)HY(pected)YH( enumer)HY(a)HY(tor)YH( is encoun)HY(tered)YH( by the DOM-Tree stage.
- The enumer)HY(a)HY(tor)YH( can be obtained using the )SM(enumer)HY(a)HY(tor)YH()ES(
- func)HY(tions)YH(.
- )EP(
-
- )0 3 66 H(3.3.6)WB 160 Sn()WB 70 Sn( )SM(xml_schema::expected_text_content)ES()EA()EH(
-
- ) 5 47 PR(struct expected_text_content: virtual exception
-{
- virtual const char*
- what \201\202 const throw \201\202;
-};)RP(
-
- )0 P(The )SM(xml_schema::expected_text_content)ES( excep)HY(tion)YH( is thrown
- when a content other than text is encoun)HY(tered)YH( and the text content was
- expected by the DOM-Tree stage.
- )EP(
-
- )0 3 67 H(3.3.7)WB 161 Sn()WB 71 Sn( )SM(xml_schema::no_type_info)ES()EA()EH(
-
- ) 14 60 PR(struct no_type_info: virtual exception
-{
- no_type_info \201const std::basic_string<C>& type_name,
- const std::basic_string<C>& type_namespace\202;
-
- const std::basic_string<C>&
- type_name \201\202 const;
-
- const std::basic_string<C>&
- type_namespace \201\202 const;
-
- virtual const char*
- what \201\202 const throw \201\202;
-};)RP(
-
- )0 P(The )SM(xml_schema::no_type_info)ES( excep)HY(tion)YH( is thrown
- when there is no type infor)HY(ma)HY(tion)YH( asso)HY(ci)HY(ated)YH( with a type spec)HY(i)HY(fied)YH(
- by the )SM(xsi:type)ES( attribute. This excep)HY(tion)YH( is thrown
- by the DOM-Tree stage. The name and names)HY(pace)YH( of the type in ques)HY(tion)YH(
- can be obtained using the )SM(type_name)ES( and
- )SM(type_names)HY(pace)YH()ES( func)HY(tions)YH( respec)HY(tively)YH(. Usually, catch)HY(ing)YH(
- this excep)HY(tion)YH( means that you haven't linked the code gener)HY(ated)YH(
- from the schema defin)HY(ing)YH( the type in ques)HY(tion)YH( with your appli)HY(ca)HY(tion)YH(
- or this schema has been compiled without the
- )SM(--gener)HY(ate)YH(-poly)HY(mor)HY(phic)YH()ES( option.
- )EP(
-
-
- )0 3 68 H(3.3.8)WB 162 Sn()WB 72 Sn( )SM(xml_schema::not_derived)ES()EA()EH(
-
- ) 23 67 PR(struct not_derived: virtual exception
-{
- not_derived \201const std::basic_string<C>& base_type_name,
- const std::basic_string<C>& base_type_namespace,
- const std::basic_string<C>& derived_type_name,
- const std::basic_string<C>& derived_type_namespace\202;
-
- const std::basic_string<C>&
- base_type_name \201\202 const;
-
- const std::basic_string<C>&
- base_type_namespace \201\202 const;
-
-
- const std::basic_string<C>&
- derived_type_name \201\202 const;
-
- const std::basic_string<C>&
- derived_type_namespace \201\202 const;
-
- virtual const char*
- what \201\202 const throw \201\202;
-};)RP(
-
- )0 P(The )SM(xml_schema::not_derived)ES( excep)HY(tion)YH( is thrown
- when a type spec)HY(i)HY(fied)YH( by the )SM(xsi:type)ES( attribute is
- not derived from the expected base type. This excep)HY(tion)YH( is thrown
- by the DOM-Tree stage. The name and names)HY(pace)YH( of the expected
- base type can be obtained using the )SM(base_type_name)ES( and
- )SM(base_type_names)HY(pace)YH()ES( func)HY(tions)YH( respec)HY(tively)YH(. The name
- and names)HY(pace)YH( of the offend)HY(ing)YH( type can be obtained using the
- )SM(derived_type_name)ES( and
- )SM(derived_type_names)HY(pace)YH()ES( func)HY(tions)YH( respec)HY(tively)YH(.
- )EP(
-
- )0 3 69 H(3.3.9)WB 163 Sn()WB 73 Sn( )SM(xml_schema::no_prefix_mapping)ES()EA()EH(
-
- ) 10 57 PR(struct no_prefix_mapping: virtual exception
-{
- no_prefix_mapping \201const std::basic_string<C>& prefix\202;
-
- const std::basic_string<C>&
- prefix \201\202 const;
-
- virtual const char*
- what \201\202 const throw \201\202;
-};)RP(
-
- )0 P(The )SM(xml_schema::no_prefix_mapping)ES( excep)HY(tion)YH( is thrown
- during the DOM-Tree stage if a names)HY(pace)YH( prefix is encoun)HY(tered)YH( for
- which a prefix-names)HY(pace)YH( mapping hasn't been provided. The names)HY(pace)YH(
- prefix in ques)HY(tion)YH( can be obtained using the )SM(prefix)ES(
- func)HY(tion)YH(.
- )EP(
-
- )0 2 70 H(3.4)WB 164 Sn()WB 74 Sn( Reading from a Local File or URI)EA()EH(
-
- )0 P(Using a local file or URI is the simplest way to parse an XML instance.
- For example:)EP(
-
- ) 4 67 PR(using std::auto_ptr;
-
-auto_ptr<type> r1 \201name \201"test.xml"\202\202;
-auto_ptr<type> r2 \201name \201"http://www.codesynthesis.com/test.xml"\202\202;)RP(
-
- )0 2 71 H(3.5)WB 165 Sn()WB 75 Sn( Reading from )SM(std::istream)ES()EA()EH(
-
- )0 P(When using an )SM(std::istream)ES( instance, you may also
- pass an optional resource id. This id is used to iden)HY(tify)YH( the
- resource \201for example in error messages\202 as well as to resolve
- rela)HY(tive)YH( paths. For instance:)EP(
-
- ) 12 48 PR(using std::auto_ptr;
-
-{
- std::ifstream ifs \201"test.xml"\202;
- auto_ptr<type> r \201name \201ifs, "test.xml"\202\202;
-}
-
-{
- std::string str \201"..."\202; // Some XML fragment.
- std::istringstream iss \201str\202;
- auto_ptr<type> r \201name \201iss\202\202;
-})RP(
-
- )0 2 72 H(3.6)WB 166 Sn()WB 76 Sn( Reading from )SM(xercesc::Input)HY(Source)YH()ES()EA()EH(
-
- )0 P(Reading from a )SM(xercesc::Input)HY(Source)YH()ES( instance
- is similar to the )SM(std::istream)ES( case except
- the resource id is main)HY(tained)YH( by the )SM(Input)HY(Source)YH()ES(
- object. For instance:)EP(
-
- ) 2 34 PR(xercesc::StdInInputSource is;
-std::auto_ptr<type> r \201name \201is\202\202;)RP(
-
- )0 2 73 H(3.7)WB 167 Sn()WB 77 Sn( Reading from DOM)EA()EH(
-
- )0 P(Reading from a )SM(xercesc::DOMDoc)HY(u)HY(ment)YH()ES( instance allows
- you to setup a custom XML-DOM stage. Things like DOM
- parser reuse, schema pre-parsing, and schema caching can be achieved
- with this approach. For more infor)HY(ma)HY(tion)YH( on how to obtain DOM
- repre)HY(sen)HY(ta)HY(tion)YH( from an XML instance refer to the Xerces-C++
- docu)HY(men)HY(ta)HY(tion)YH(. In addi)HY(tion)YH(, the
- )R8 2 A(C++/Tree Mapping
- FAQ)EA( shows how to parse an XML instance to a Xerces-C++
- DOM docu)HY(ment)YH( using the XSD runtime util)HY(i)HY(ties)YH(.
- )EP(
-
- )0 P(The last parsing func)HY(tion)YH( is useful when you would like to perform
- your own XML-to-DOM parsing and as)HY(so)HY(ciate)YH( the result)HY(ing)YH( DOM docu)HY(ment)YH(
- with the object model nodes. If parsing is successe)HY(ful)YH(, the
- auto)HY(matic)YH( )SM(DOMDoc)HY(u)HY(ment)YH()ES( pointer is reset and the
- result)HY(ing)YH( object model assumes owner)HY(ship)YH( of the DOM docu)HY(ment)YH(
- passed. For example:)EP(
-
- ) 6 72 PR(xml_schema::dom::auto_ptr<xercesc::DOMDocument> doc = ...
-
-std::auto_ptr<type> r \201
- name \201doc, xml_schema::flags::keep_dom | xml_schema::flags::own_dom\202\202;
-
-// At this point doc is reset to 0.)RP(
-
-
-
- )0 1 74 H(4)WB 168 Sn()WB 78 Sn( Seri)HY(al)HY(iza)HY(tion)YH()EA()EH(
-
- )0 P(This chapter covers various aspects of seri)HY(al)HY(iz)HY(ing)YH( a
- tree-like object model to DOM or XML.
- In this regard, seri)HY(al)HY(iza)HY(tion)YH( is compli)HY(men)HY(tary)YH( to the reverse
- process of parsing a DOM or XML instance into an object model
- which is discussed in )0 61 1 A(Chapter 3,
- "Parsing")61 0 TN TL()Ec /AF f D(. Note that the gener)HY(a)HY(tion)YH( of the seri)HY(al)HY(iza)HY(tion)YH( code
- is optional and should be explic)HY(itly)YH( requested with the
- )SM(--gener)HY(ate)YH(-seri)HY(al)HY(iza)HY(tion)YH()ES( option. See the
- )R9 2 A(XSD
- Compiler Command Line Manual)EA( for more infor)HY(ma)HY(tion)YH(.
- )EP(
-
- )0 P(Each global XML Schema element in the form:
- )EP(
-
-
- ) 1 38 PR(<xsd:element name="name" type="type"/>)RP(
-
- )0 P(is mapped to 8 over)HY(loaded)YH( C++ func)HY(tions)YH( in the form:)EP(
-
- ) 70 53 PR(// Serialize to std::ostream.
-//
-void
-name \201std::ostream&,
- const type&,
- const xml_schema::namespace_fomap& =
- xml_schema::namespace_infomap \201\202,
- const std::basic_string<C>& encoding = "UTF-8",
- xml_schema::flags = 0\202;
-
-void
-name \201std::ostream&,
- const type&,
- xml_schema::error_handler&,
- const xml_schema::namespace_infomap& =
- xml_schema::namespace_infomap \201\202,
- const std::basic_string<C>& encoding = "UTF-8",
- xml_schema::flags = 0\202;
-
-void
-name \201std::ostream&,
- const type&,
- xercesc::DOMErrorHandler&,
- const xml_schema::namespace_infomap& =
- xml_schema::namespace_infomap \201\202,
- const std::basic_string<C>& encoding = "UTF-8",
- xml_schema::flags = 0\202;
-
-
-// Serialize to XMLFormatTarget.
-//)WR(
-void
-name \201xercesc::XMLFormatTarget&,
- const type&,
- const xml_schema::namespace_infomap& =
- xml_schema::namespace_infomap \201\202,
- const std::basic_string<C>& encoding = "UTF-8",
- xml_schema::flags = 0\202;
-
-void
-name \201xercesc::XMLFormatTarget&,
- const type&,
- xml_schema::error_handler&,
- const xml_schema::namespace_infomap& =
- xml_schema::namespace_infomap \201\202,
- const std::basic_string<C>& encoding = "UTF-8",
- xml_schema::flags = 0\202;
-
-void
-name \201xercesc::XMLFormatTarget&,
- const type&,
- xercesc::DOMErrorHandler&,
- const xml_schema::namespace_infomap& =
- xml_schema::namespace_infomap \201\202,
- const std::basic_string<C>& encoding = "UTF-8",
- xml_schema::flags = 0\202;
-
-
-// Serialize to DOM.
-//
-xml_schema::dom::auto_ptr<xercesc::DOMDocument>)WR(
-name \201const type&,
- const xml_schema::namespace_infomap&
- xml_schema::namespace_infomap \201\202,
- xml_schema::flags = 0\202;
-
-void
-name \201xercesc::DOMDocument&,
- const type&,
- xml_schema::flags = 0\202;)RP(
-
- )0 P(You can choose between writing XML to )SM(std::ostream)ES( or
- )SM(xercesc::XMLFor)HY(mat)HY(Tar)HY(get)YH()ES( and creat)HY(ing)YH( a DOM instance
- in the form of )SM(xercesc::DOMDoc)HY(u)HY(ment)YH()ES(. Seri)HY(al)HY(iza)HY(tion)YH(
- to )SM(ostream)ES( or )SM(XMLFor)HY(mat)HY(Tar)HY(get)YH()ES( requires a
- consid)HY(er)HY(ably)YH( less work while seri)HY(al)HY(iza)HY(tion)YH( to DOM provides
- for greater flex)HY(i)HY(bil)HY(ity)YH(. Each of these seri)HY(al)HY(iza)HY(tion)YH( func)HY(tions)YH(
- is discussed in more detail in the follow)HY(ing)YH( sections.
- )EP(
-
-
- )0 2 75 H(4.1)WB 169 Sn()WB 79 Sn( Initial)HY(iz)HY(ing)YH( the Xerces-C++ Runtime)EA()EH(
-
- )0 P(Some seri)HY(al)HY(iza)HY(tion)YH( func)HY(tions)YH( expect you to initial)HY(ize)YH( the Xerces-C++
- runtime while others initial)HY(ize)YH( and termi)HY(nate)YH( it as part of their
- work. The general rule is as follows: if a func)HY(tion)YH( has any argu)HY(ments)YH(
- or return a value that is an instance of a Xerces-C++ type, then
- this func)HY(tion)YH( expects you to initial)HY(ize)YH( the Xerces-C++ runtime.
- Other)HY(wise)YH(, the func)HY(tion)YH( initial)HY(izes)YH( and termi)HY(nates)YH( the runtime for
- you. Note that it is legal to have nested calls to the Xerces-C++
- initial)HY(ize)YH( and termi)HY(nate)YH( func)HY(tions)YH( as long as the calls are balanced.
- )EP(
-
- )0 P(You can instruct seri)HY(al)HY(iza)HY(tion)YH( func)HY(tions)YH( that initial)HY(ize)YH( and termi)HY(nate)YH(
- the runtime not to do so by passing the
- )SM(xml_schema::flags::dont_initial)HY(ize)YH()ES( flag \201see
- )0 81 1 A(Section 4.3, "Flags")81 0 TN TL()Ec /AF f D(\202.
- )EP(
-
- )0 2 76 H(4.2)WB 170 Sn()WB 80 Sn( Names)HY(pace)YH( Infomap and Char)HY(ac)HY(ter)YH( Encod)HY(ing)YH()EA()EH(
-
- )0 P(When a docu)HY(ment)YH( being seri)HY(al)HY(ized)YH( uses XML names)HY(paces)YH(, custom
- prefix-names)HY(pace)YH( asso)HY(ci)HY(a)HY(tions)YH( can to be estab)HY(lished)YH(. If custom
- prefix-names)HY(pace)YH( mapping is not provided then generic prefixes
- \201)SM(p1)ES(, )SM(p2)ES(, etc\202 are auto)HY(mat)HY(i)HY(cally)YH( assigned
- to names)HY(paces)YH( as needed. Also, if
- you would like the result)HY(ing)YH( instance docu)HY(ment)YH( to contain the
- )SM(schemaLo)HY(ca)HY(tion)YH()ES( or )SM(noNames)HY(paceSchemaLo)HY(ca)HY(tion)YH()ES(
- attributes, you will need to provide names)HY(pace)YH(-schema asso)HY(ci)HY(a)HY(tions)YH(.
- The )SM(xml_schema::names)HY(pace)YH(_infomap)ES( class is used
- to capture this infor)HY(ma)HY(tion)YH(:)EP(
-
- ) 16 63 PR(struct namespace_info
-{
- namespace_info \201\202;
- namespace_info \201const std::basic_string<C>& name,
- const std::basic_string<C>& schema\202;
-
- std::basic_string<C> name;
- std::basic_string<C> schema;
-};
-
-// Map of namespace prefix to namespace_info.
-//
-struct namespace_infomap: public std::map<std::basic_string<C>,
- namespace_info>
-{
-};)RP(
-
- )0 P(Consider the follow)HY(ing)YH( asso)HY(ci)HY(a)HY(tions)YH( as an example:)EP(
-
- ) 4 52 PR(xml_schema::namespace_infomap map;
-
-map["t"].name = "http://www.codesynthesis.com/test";
-map["t"].schema = "test.xsd";)RP(
-
- )0 P(This map, if passed to one of the seri)HY(al)HY(iza)HY(tion)YH( func)HY(tions)YH(,
- could result in the follow)HY(ing)YH( XML frag)HY(ment)YH(:)EP(
-
- ) 4 72 PR(<?xml version="1.0" ?>
-<t:name xmlns:t="http://www.codesynthesis.com/test"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.codesynthesis.com/test test.xsd">)RP(
-
- )0 P(As you can see, the seri)HY(al)HY(iza)HY(tion)YH( func)HY(tion)YH( auto)HY(mat)HY(i)HY(cally)YH( added names)HY(pace)YH(
- mapping for the )SM(xsi)ES( prefix. You can change this by
- provid)HY(ing)YH( your own prefix:)EP(
-
- ) 6 62 PR(xml_schema::namespace_infomap map;
-
-map["xsn"].name = "http://www.w3.org/2001/XMLSchema-instance";
-
-map["t"].name = "http://www.codesynthesis.com/test";
-map["t"].schema = "test.xsd";)RP(
-
- )0 P(This could result in the follow)HY(ing)YH( XML frag)HY(ment)YH(:)EP(
-
- ) 4 72 PR(<?xml version="1.0" ?>
-<t:name xmlns:t="http://www.codesynthesis.com/test"
- xmlns:xsn="http://www.w3.org/2001/XMLSchema-instance"
- xsn:schemaLocation="http://www.codesynthesis.com/test test.xsd">)RP(
-
- )0 P(To specify the loca)HY(tion)YH( of a schema without a names)HY(pace)YH( you can use
- an empty prefix as in the example below: )EP(
-
- ) 3 34 PR(xml_schema::namespace_infomap map;
-
-map[""].schema = "test.xsd";)RP(
-
- )0 P(This would result in the follow)HY(ing)YH( XML frag)HY(ment)YH(:)EP(
-
- ) 3 59 PR(<?xml version="1.0" ?>
-<name xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:noNamespaceSchemaLocation="test.xsd">)RP(
-
- )0 P(To make a partic)HY(u)HY(lar)YH( names)HY(pace)YH( default you can use an empty
- prefix, for example:)EP(
-
- ) 4 51 PR(xml_schema::namespace_infomap map;
-
-map[""].name = "http://www.codesynthesis.com/test";
-map[""].schema = "test.xsd";)RP(
-
- )0 P(This could result in the follow)HY(ing)YH( XML frag)HY(ment)YH(:)EP(
-
- ) 4 70 PR(<?xml version="1.0" ?>
-<name xmlns="http://www.codesynthesis.com/test"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.codesynthesis.com/test test.xsd">)RP(
-
-
- )0 P(Another bit of infor)HY(ma)HY(tion)YH( that you can pass to the seri)HY(al)HY(iza)HY(tion)YH(
- func)HY(tions)YH( is the char)HY(ac)HY(ter)YH( encod)HY(ing)YH( method that you would like to use.
- Common values for this argu)HY(ment)YH( are )SM("US-ASCII")ES(,
- )SM("ISO8859-1")ES(, )SM("UTF-8")ES(,
- )SM("UTF-16BE")ES(, )SM("UTF-16LE")ES(,
- )SM("UCS-4BE")ES(, and )SM("UCS-4LE")ES(. The default
- encod)HY(ing)YH( is )SM("UTF-8")ES(. For more infor)HY(ma)HY(tion)YH( on
- encod)HY(ing)YH( methods see the
- ")R12 2 A(Char)HY(ac)HY(ter)YH(
- Encod)HY(ing)YH()EA(" article from Wikipedia.
- )EP(
-
- )0 2 77 H(4.3)WB 171 Sn()WB 81 Sn( Flags)EA()EH(
-
- )0 P(Seri)HY(al)HY(iza)HY(tion)YH( flags are the last argu)HY(ment)YH( of every seri)HY(al)HY(iza)HY(tion)YH(
- func)HY(tion)YH(. They allow you to fine-tune the process of seri)HY(al)HY(iza)HY(tion)YH(.
- The flags argu)HY(ment)YH( is optional.
- )EP(
-
-
- )0 P(The follow)HY(ing)YH( flags are recog)HY(nized)YH( by the seri)HY(al)HY(iza)HY(tion)YH(
- func)HY(tions)YH(:)EP(
-
- )0 DL( )0 DT()SM(xml_schema::flags::dont_initial)HY(ize)YH()ES(
- )DD(Do not initial)HY(ize)YH( the Xerces-C++ runtime.
-
- )0 DT()SM(xml_schema::flags::dont_pretty_print)ES(
- )DD(Do not add extra spaces or new lines that make the result)HY(ing)YH( XML
- slightly bigger but easier to read.
-
- )0 DT()SM(xml_schema::flags::no_xml_decla)HY(ra)HY(tion)YH()ES(
- )DD(Do not write XML decla)HY(ra)HY(tion)YH( \201<?xml ... ?>\202.
- )LD(
-
- )0 P(You can pass several flags by combin)HY(ing)YH( them using the bit-wise OR
- oper)HY(a)HY(tor)YH(. For example:)EP(
-
- ) 9 45 PR(std::auto_ptr<type> r = ...
-std::ofstream ofs \201"test.xml"\202;
-xml_schema::namespace_infomap map;
-name \201ofs,
- *r,
- map,
- "UTF-8",
- xml_schema::flags::no_xml_declaration |
- xml_schema::flags::dont_pretty_print\202;)RP(
-
- )0 P(For more infor)HY(ma)HY(tion)YH( on the Xerces-C++ runtime initial)HY(iza)HY(tion)YH(
- refer to )0 79 1 A(Section 4.1, "Initial)HY(iz)HY(ing)YH( the Xerces-C++
- Runtime")79 0 TN TL()Ec /AF f D(.
- )EP(
-
- )0 2 78 H(4.4)WB 172 Sn()WB 82 Sn( Error Handling)EA()EH(
-
- )0 P(As with the parsing func)HY(tions)YH( \201see )0 64 1 A(Section 3.3,
- "Error Handling")64 0 TN TL()Ec /AF f D(\202, to better under)HY(stand)YH( error handling and
- report)HY(ing)YH( strate)HY(gies)YH( employed by the seri)HY(al)HY(iza)HY(tion)YH( func)HY(tions)YH(, it
- is useful to know that the trans)HY(for)HY(ma)HY(tion)YH( of a stat)HY(i)HY(cally)YH(-typed
- tree to an XML instance docu)HY(ment)YH( happens in two stages. The first
- stage, performed by the gener)HY(ated)YH( code, consist of build)HY(ing)YH( a DOM
- instance from the stat)HY(i)HY(cally)YH(-typed tree . For short, we will call
- this stage the Tree-DOM stage. The second stage, performed by
- Xerces-C++, consists of seri)HY(al)HY(iz)HY(ing)YH( the DOM instance into the XML
- docu)HY(ment)YH(. We will call this stage the DOM-XML stage.
- )EP(
-
- )0 P(All seri)HY(al)HY(iza)HY(tion)YH( func)HY(tions)YH( except the two that seri)HY(al)HY(ize)YH( into
- a DOM instance come in over)HY(loaded)YH( triples. The first func)HY(tion)YH(
- in such a triple reports error condi)HY(tions)YH( exclu)HY(sively)YH( by throw)HY(ing)YH(
- excep)HY(tions)YH(. It accu)HY(mu)HY(lates)YH( all the seri)HY(al)HY(iza)HY(tion)YH( errors of the
- DOM-XML stage and throws them in a single instance of the
- )SM(xml_schema::seri)HY(al)HY(iza)HY(tion)YH()ES( excep)HY(tion)YH( \201described below\202.
- The second and the third func)HY(tions)YH( in the triple use call)HY(back)YH(
- inter)HY(faces)YH( to report seri)HY(al)HY(iza)HY(tion)YH( errors and warn)HY(ings)YH(. The two
- call)HY(back)YH( inter)HY(faces)YH( are )SM(xml_schema::error_handler)ES( and
- )SM(xercesc::DOMEr)HY(rorHan)HY(dler)YH()ES(. The
- )SM(xml_schema::error_handler)ES( inter)HY(face)YH( is described in
- )0 64 1 A(Section 3.3, "Error Handling")64 0 TN TL()Ec /AF f D(. For more infor)HY(ma)HY(tion)YH(
- on the )SM(xercesc::DOMEr)HY(rorHan)HY(dler)YH()ES( inter)HY(face)YH( refer to the
- Xerces-C++ docu)HY(men)HY(ta)HY(tion)YH(.
- )EP(
-
- )0 P(The Tree-DOM stage reports error condi)HY(tions)YH( exclu)HY(sively)YH( by throw)HY(ing)YH(
- excep)HY(tions)YH(. Indi)HY(vid)HY(ual)YH( excep)HY(tions)YH( thrown by the seri)HY(al)HY(iza)HY(tion)YH( func)HY(tions)YH(
- are described in the follow)HY(ing)YH( sub-sections.
- )EP(
-
- )0 3 79 H(4.4.1)WB 173 Sn()WB 83 Sn( )SM(xml_schema::seri)HY(al)HY(iza)HY(tion)YH()ES()EA()EH(
-
- ) 11 39 PR(struct serialization: virtual exception
-{
- serialization \201\202;
- serialization \201const diagnostics&\202;
-
- const diagnostics&
- diagnostics \201\202 const;
-
- virtual const char*
- what \201\202 const throw \201\202;
-};)RP(
-
- )0 P(The )SM(xml_schema::diag)HY(nos)HY(tics)YH()ES( class is described in
- )0 65 1 A(Section 3.3.1, ")SM(xml_schema::parsing)ES(")65 0 TN TL()Ec /AF f D(.
- The )SM(xml_schema::seri)HY(al)HY(iza)HY(tion)YH()ES( excep)HY(tion)YH( is thrown if
- there were seri)HY(al)HY(iza)HY(tion)YH( errors reported during the DOM-XML stage.
- If no call)HY(back)YH( inter)HY(face)YH( was provided to the seri)HY(al)HY(iza)HY(tion)YH( func)HY(tion)YH(,
- the excep)HY(tion)YH( contains a list of errors and warn)HY(ings)YH( acces)HY(si)HY(ble)YH( using
- the )SM(diag)HY(nos)HY(tics)YH()ES( func)HY(tion)YH(.
- )EP(
-
-
- )0 3 80 H(4.4.2)WB 174 Sn()WB 84 Sn( )SM(xml_schema::unex)HY(pected)YH(_element)ES()EA()EH(
-
- )0 P(The )SM(xml_schema::unex)HY(pected)YH(_element)ES( excep)HY(tion)YH( is
- described in )0 67 1 A(Section 3.3.3,
- ")SM(xml_schema::unex)HY(pected)YH(_element)ES(")67 0 TN TL()Ec /AF f D(. It is thrown
- by the seri)HY(al)HY(iza)HY(tion)YH( func)HY(tions)YH( during the Tree-DOM stage if the
- root element name of the provided DOM instance does not match with
- the name of the element this seri)HY(al)HY(iza)HY(tion)YH( func)HY(tion)YH( is for.
- )EP(
-
- )0 3 81 H(4.4.3)WB 175 Sn()WB 85 Sn( )SM(xml_schema::no_type_info)ES()EA()EH(
-
- )0 P(The )SM(xml_schema::no_type_info)ES( excep)HY(tion)YH( is
- described in )0 71 1 A(Section 3.3.7,
- ")SM(xml_schema::no_type_info)ES(")71 0 TN TL()Ec /AF f D(. It is thrown
- by the seri)HY(al)HY(iza)HY(tion)YH( func)HY(tions)YH( during the Tree-DOM stage when there
- is no type infor)HY(ma)HY(tion)YH( asso)HY(ci)HY(ated)YH( with a dynamic type of an
- element. Usually, catch)HY(ing)YH( this excep)HY(tion)YH( means that you haven't
- linked the code gener)HY(ated)YH( from the schema defin)HY(ing)YH( the type in
- ques)HY(tion)YH( with your appli)HY(ca)HY(tion)YH( or this schema has been compiled
- without the )SM(--gener)HY(ate)YH(-poly)HY(mor)HY(phic)YH()ES( option.
- )EP(
-
- )0 2 82 H(4.5)WB 176 Sn()WB 86 Sn( Seri)HY(al)HY(iz)HY(ing)YH( to )SM(std::ostream)ES()EA()EH(
-
- )0 P(In order to seri)HY(al)HY(ize)YH( to )SM(std::ostream)ES( you will need
- an object model, an output stream and, option)HY(ally)YH(, a names)HY(pace)YH(
- infomap. For instance:)EP(
-
- ) 14 61 PR(// Obtain the object model.
-//
-std::auto_ptr<type> r = ...
-
-// Prepare namespace mapping and schema location information.
-//
-xml_schema::namespace_infomap map;
-
-map["t"].name = "http://www.codesynthesis.com/test";
-map["t"].schema = "test.xsd";
-
-// Write it out.
-//
-name \201std::cout, *r, map\202;)RP(
-
- )0 P(Note that the output stream is treated as a binary stream. This
- becomes impor)HY(tant)YH( when you use a char)HY(ac)HY(ter)YH( encod)HY(ing)YH( that is wider
- than 8-bit )SM(char)ES(, for instance UTF-16 or UCS-4. For
- example, things will most likely break if you try to seri)HY(al)HY(ize)YH(
- to )SM(std::ostringstream)ES( with UTF-16 or UCS-4 as an
- encod)HY(ing)YH(. This is due to the special value,
- )SM('\2000')ES(, that will most likely occur as part of such
- seri)HY(al)HY(iza)HY(tion)YH( and it won't have the special meaning assumed by
- )SM(std::ostringstream)ES(.
- )EP(
-
-
- )0 2 83 H(4.6)WB 177 Sn()WB 87 Sn( Seri)HY(al)HY(iz)HY(ing)YH( to )SM(xercesc::XMLFor)HY(mat)HY(Tar)HY(get)YH()ES()EA()EH(
-
- )0 P(Seri)HY(al)HY(iz)HY(ing)YH( to an )SM(xercesc::XMLFor)HY(mat)HY(Tar)HY(get)YH()ES( instance
- is similar the )SM(std::ostream)ES( case. For instance:
- )EP(
-
- ) 38 63 PR(using std::auto_ptr;
-
-// Obtain the object model.
-//
-auto_ptr<type> r = ...
-
-// Prepare namespace mapping and schema location information.
-//
-xml_schema::namespace_infomap map;
-
-map["t"].name = "http://www.codesynthesis.com/test";
-map["t"].schema = "test.xsd";
-
-using namespace xercesc;
-
-XMLPlatformUtils::Initialize \201\202;
-
-{
- // Choose a target.
- //
- auto_ptr<XMLFormatTarget> ft;
-
- if \201argc != 2\202
- {
- ft = auto_ptr<XMLFormatTarget> \201new StdOutFormatTarget \201\202\202;
- }
- else
- {
- ft = auto_ptr<XMLFormatTarget> \201
- new LocalFileFormatTarget \201argv[1]\202\202;
- })WR(
-
- // Write it out.
- //
- name \201*ft, *r, map\202;
-}
-
-XMLPlatformUtils::Terminate \201\202;)RP(
-
- )0 P(Note that we had to initial)HY(ize)YH( the Xerces-C++ runtime before we
- could call this seri)HY(al)HY(iza)HY(tion)YH( func)HY(tion)YH(.)EP(
-
- )0 2 84 H(4.7)WB 178 Sn()WB 88 Sn( Seri)HY(al)HY(iz)HY(ing)YH( to DOM)EA()EH(
-
- )0 P(The mapping provides two over)HY(loaded)YH( func)HY(tions)YH( that imple)HY(ment)YH(
- seri)HY(al)HY(iza)HY(tion)YH( to a DOM instance. The first creates a DOM instance
- for you and the second seri)HY(al)HY(izes)YH( to an exist)HY(ing)YH( DOM instance.
- While seri)HY(al)HY(iz)HY(ing)YH( to a new DOM instance is similar to seri)HY(al)HY(iz)HY(ing)YH(
- to )SM(std::ostream)ES( or )SM(xercesc::XMLFor)HY(mat)HY(Tar)HY(get)YH()ES(,
- seri)HY(al)HY(iz)HY(ing)YH( to an exist)HY(ing)YH( DOM instance requires quite a bit of work
- from your side. You will need to set all the custom names)HY(pace)YH( mapping
- attributes as well as the )SM(schemaLo)HY(ca)HY(tion)YH()ES( and/or
- )SM(noNames)HY(paceSchemaLo)HY(ca)HY(tion)YH()ES( attributes. The follow)HY(ing)YH(
- listing should give you an idea about what needs to be done:
- )EP(
-
- ) 24 67 PR(// Obtain the object model.
-//
-std::auto_ptr<type> r = ...
-
-using namespace xercesc;
-
-XMLPlatformUtils::Initialize \201\202;
-
-{
- // Create a DOM instance. Set custom namespace mapping and schema
- // location attributes.
- //
- DOMDocument& doc = ...
-
- // Serialize to DOM.
- //
- name \201doc, *r\202;
-
- // Serialize the DOM document to XML.
- //
- ...
-}
-
-XMLPlatformUtils::Terminate \201\202;)RP(
-
- )0 P(For more infor)HY(ma)HY(tion)YH( on how to create and seri)HY(al)HY(ize)YH( a DOM instance
- refer to the Xerces-C++ docu)HY(men)HY(ta)HY(tion)YH(. In addi)HY(tion)YH(, the
- )R8 2 A(C++/Tree Mapping
- FAQ)EA( shows how to imple)HY(ment)YH( these oper)HY(a)HY(tions)YH( using the XSD
- runtime util)HY(i)HY(ties)YH(.
- )EP(
-
- )0 1 85 H(5)WB 179 Sn()WB 89 Sn( Addi)HY(tional)YH( Func)HY(tion)HY(al)HY(ity)YH()EA()EH(
-
- )0 P(The C++/Tree mapping provides a number of optional features
- that can be useful in certain situ)HY(a)HY(tions)YH(. They are described
- in the follow)HY(ing)YH( sections.)EP(
-
- )0 2 86 H(5.1)WB 180 Sn()WB 90 Sn( DOM Asso)HY(ci)HY(a)HY(tion)YH()EA()EH(
-
- )0 P(Normally, after parsing is complete, the DOM docu)HY(ment)YH( which
- was used to extract the data is discarded. However, the parsing
- func)HY(tions)YH( can be instructed to preserve the DOM docu)HY(ment)YH(
- and create an asso)HY(ci)HY(a)HY(tion)YH( between the DOM nodes and object model
- nodes. When there is an asso)HY(ci)HY(a)HY(tion)YH( between the DOM and
- object model nodes, you can obtain the corre)HY(spond)HY(ing)YH( DOM element
- or attribute node from an object model node as well as perform
- the reverse tran)HY(si)HY(tion)YH(: obtain the corre)HY(spond)HY(ing)YH( object model
- from a DOM element or attribute node.)EP(
-
- )0 P(Main)HY(tain)HY(ing)YH( DOM asso)HY(ci)HY(a)HY(tion)YH( is normally useful when the appli)HY(ca)HY(tion)YH(
- needs access to XML constructs that are not preserved in the
- object model, for example, text in the mixed content model.
- Another useful aspect of DOM asso)HY(ci)HY(a)HY(tion)YH( is the ability of the
- appli)HY(ca)HY(tion)YH( to navi)HY(gate)YH( the docu)HY(ment)YH( tree using the generic DOM
- inter)HY(face)YH( \201for example, with the help of an XPath proces)HY(sor)YH(\202
- and then move back to the stat)HY(i)HY(cally)YH(-typed object model. Note
- also that while you can change the under)HY(ly)HY(ing)YH( DOM docu)HY(ment)YH(,
- these changes are not reflected in the object model and will
- be ignored during seri)HY(al)HY(iza)HY(tion)YH(. If you need to not only access
- but also modify some aspects of XML that are not preserved in
- the object model, then type customiza)HY(tion)YH( with custom parsing
- constructs and seri)HY(al)HY(iza)HY(tion)YH( oper)HY(a)HY(tors)YH( should be used instead.)EP(
-
- )0 P(To request DOM asso)HY(ci)HY(a)HY(tion)YH( you will need to pass the
- )SM(xml_schema::flags::keep_dom)ES( flag to one of the
- parsing func)HY(tions)YH( \201see )0 63 1 A(Section 3.2,
- "Flags and Prop)HY(er)HY(ties)YH(")63 0 TN TL()Ec /AF f D( for more infor)HY(ma)HY(tion)YH(\202. In this case the
- DOM docu)HY(ment)YH( is retained and will be released when the object model
- is deleted. Note that since DOM nodes "out-live" the parsing func)HY(tion)YH(
- call, you need to initial)HY(ize)YH( the Xerces-C++ runtime before calling
- one of the parsing func)HY(tions)YH( with the )SM(keep_dom)ES( flag and
- termi)HY(nate)YH( it after the object model is destroyed \201see
- )0 62 1 A(Section 3.1, "Initial)HY(iz)HY(ing)YH( the Xerces-C++ Runtime")62 0 TN TL()Ec /AF f D(\202.
- The DOM asso)HY(ci)HY(a)HY(tion)YH( is also main)HY(tained)YH( in complete copies of the
- object model \201that is, the DOM docu)HY(ment)YH( is cloned and asso)HY(ci)HY(a)HY(tions)YH(
- are reestab)HY(lished)YH(\202.)EP(
-
- )0 P(To obtain the corre)HY(spond)HY(ing)YH( DOM node from an object model node
- you will need to call the )SM(_node)ES( acces)HY(sor)YH( func)HY(tion)YH(
- which returns a pointer to )SM(DOMNode)ES(. You can then query
- this DOM node's type and cast it to either )SM(DOMAttr*)ES(
- or )SM(DOMEle)HY(ment)YH(*)ES(. To obtain the corre)HY(spond)HY(ing)YH( object
- model node from a DOM node, the DOM user data API is used. The
- )SM(xml_schema::dom::tree_node_key)ES( vari)HY(able)YH( contains
- the key for object model nodes. The follow)HY(ing)YH( schema and code
- frag)HY(ment)YH( show how to navi)HY(gate)YH( from DOM to object model nodes
- and in the oppo)HY(site)YH( direc)HY(tion)YH(:)EP(
-
- ) 7 37 PR(<complexType name="object">
- <sequence>
- <element name="a" type="string"/>
- </sequence>
-</complexType>
-
-<element name="root" type="object"/>)RP(
-
- ) 42 68 PR(using namespace xercesc;
-
-XMLPlatformUtils::Initialize \201\202;
-
-{
- // Parse XML to object model.
- //
- std::auto_ptr<type> r = root \201
- "root.xml",
- xml_schema::flags::keep_dom |
- xml_schema::flags::dont_initialize\202;
-
- DOMNode* n = root->_node \201\202;
- assert \201n->getNodeType \201\202 != DOMNode::ELEMENT_NODE\202;
- DOMElement* re = static_cast<DOMElement*> \201n\202;
-
- // Get the 'a' element. Note that it is not necessarily the
- // first child node of 'root' since there could be whitespace
- // nodes before it.
- //
- DOMElement* ae;
-
- for \201n = re->getFirstChild \201\202; n != 0; n = n->getNextSibling \201\202\202
- {
- if \201n->getNodeType \201\202 == DOMNode::ELEMENT_NODE\202
- {
- ae = static_cast<DOMElement*> \201n\202;
- break;
- }
- }
-)WR(
- // Get from the 'a' DOM element to xml_schema::string object model
- // node.
- //
- xml_schema::type& t \201
- *reinterpret_cast<xml_schema::type*> \201
- ae->getUserData \201xml_schema::dom::tree_node_key\202\202\202;
-
- xml_schema::string& a \201dynamic_cast<xml_schema::string&> \201t\202\202;
-}
-
-XMLPlatformUtils::Terminate \201\202;)RP(
-
- )0 P(The 'mixed' example which can be found in the XSD distri)HY(bu)HY(tion)YH(
- shows how to handle the mixed content using DOM asso)HY(ci)HY(a)HY(tion)YH(.)EP(
-
- )0 2 87 H(5.2)WB 181 Sn()WB 91 Sn( Binary Seri)HY(al)HY(iza)HY(tion)YH()EA()EH(
-
- )0 P(Besides reading from and writing to XML, the C++/Tree mapping
- also allows you to save the object model to and load it from a
- number of prede)HY(fined)YH( as well as custom data repre)HY(sen)HY(ta)HY(tion)YH(
- formats. The prede)HY(fined)YH( binary formats are CDR \201Common Data
- Repre)HY(sen)HY(ta)HY(tion)YH(\202 and XDR \201eXter)HY(nal)YH( Data Repre)HY(sen)HY(ta)HY(tion)YH(\202. A
- custom format can easily be supported by provid)HY(ing)YH(
- inser)HY(tion)YH( and extrac)HY(tion)YH( oper)HY(a)HY(tors)YH( for basic types.)EP(
-
- )0 P(Binary seri)HY(al)HY(iza)HY(tion)YH( saves only the data without any meta
- infor)HY(ma)HY(tion)YH( or markup. As a result, saving to and loading
- from a binary repre)HY(sen)HY(ta)HY(tion)YH( can be an order of magni)HY(tude)YH(
- faster than parsing and seri)HY(al)HY(iz)HY(ing)YH( the same data in XML.
- Further)HY(more)YH(, the result)HY(ing)YH( repre)HY(sen)HY(ta)HY(tion)YH( is normally several
- times smaller than the equiv)HY(a)HY(lent)YH( XML repre)HY(sen)HY(ta)HY(tion)YH(. These
- prop)HY(er)HY(ties)YH( make binary seri)HY(al)HY(iza)HY(tion)YH( ideal for inter)HY(nal)YH( data
- exchange and storage. A typical appli)HY(ca)HY(tion)YH( that uses this
- facil)HY(ity)YH( stores the data and commu)HY(ni)HY(cates)YH( within the
- system using a binary format and reads/writes the data
- in XML when commu)HY(ni)HY(cat)HY(ing)YH( with the outside world.)EP(
-
- )0 P(In order to request the gener)HY(a)HY(tion)YH( of inser)HY(tion)YH( oper)HY(a)HY(tors)YH( and
- extrac)HY(tion)YH( construc)HY(tors)YH( for a specific prede)HY(fined)YH( or custom
- data repre)HY(sen)HY(ta)HY(tion)YH( stream, you will need to use the
- )SM(--gener)HY(ate)YH(-inser)HY(tion)YH()ES( and )SM(--gener)HY(ate)YH(-extrac)HY(tion)YH()ES(
- compiler options. See the
- )R9 2 A(XSD
- Compiler Command Line Manual)EA( for more infor)HY(ma)HY(tion)YH(.)EP(
-
- )0 P(Once the inser)HY(tion)YH( oper)HY(a)HY(tors)YH( and extrac)HY(tion)YH( construc)HY(tors)YH( are
- gener)HY(ated)YH(, you can use the )SM(xml_schema::istream)ES(
- and )SM(xml_schema::ostream)ES( wrapper stream templates
- to save the object model to and load it from a specific format.
- The follow)HY(ing)YH( code frag)HY(ment)YH( shows how to do this using ACE
- \201Adap)HY(tive)YH( Commu)HY(ni)HY(ca)HY(tion)YH( Envi)HY(ron)HY(ment)YH(\202 CDR streams as an example:)EP(
-
- ) 8 37 PR(<complexType name="object">
- <sequence>
- <element name="a" type="string"/>
- <element name="b" type="int"/>
- </sequence>
-</complexType>
-
-<element name="root" type="object"/>)RP(
-
- ) 21 51 PR(// Parse XML to object model.
-//
-std::auto_ptr<type> r = root \201"root.xml"\202;
-
-// Save to a CDR stream.
-//
-ACE_OutputCDR ace_ocdr;
-xml_schema::ostream<ACE_OutputCDR> ocdr \201ace_ocdr\202;
-
-ocdr << *r;
-
-// Load from a CDR stream.
-//
-ACE_InputCDR ace_icdr \201buf, size\202;
-xml_schema::istream<ACE_InputCDR> icdr \201ace_icdr\202;
-
-std::auto_ptr<object> copy \201new object \201icdr\202\202;
-
-// Serialize to XML.
-//
-root \201std::cout, *copy\202;)RP(
-
- )0 P(The XSD distri)HY(bu)HY(tion)YH( contains a number of exam)HY(ples)YH( that
- show how to save the object model to and load it from
- CDR, XDR, and a custom format.)EP(
-
-
-
-
- )0 1 88 H(Appendix)WB 182 Sn()WB 92 Sn( A \236 Default and Fixed Values)EA()EH(
-
- )0 P(The follow)HY(ing)YH( table summa)HY(rizes)YH( the effect of default and fixed
- values \201spec)HY(i)HY(fied)YH( with the )SM(default)ES( and )SM(fixed)ES(
- attributes, respec)HY(tively)YH(\202 on attribute and element values. The
- )SM(default)ES( and )SM(fixed)ES( attributes are mutu)HY(ally)YH(
- exclu)HY(sive)YH(. It is also worth)HY(while)YH( to note that the fixed value seman)HY(tics)YH(
- is a super)HY(set)YH( of the default value seman)HY(tics)YH(.
- )EP(
-
-
- )1 PT(
-
- )BR(
-)BR(
-
-
-)WB NL
-/TE t D NP TU PM 0 eq and{/Pn () D showpage}if end restore