| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528352935303531353235333534353535363537353835393540354135423543354435453546354735483549355035513552355335543555355635573558355935603561356235633564356535663567356835693570357135723573357435753576357735783579358035813582358335843585358635873588358935903591359235933594359535963597359835993600360136023603360436053606360736083609361036113612361336143615361636173618361936203621362236233624362536263627362836293630363136323633363436353636363736383639364036413642364336443645364636473648364936503651365236533654365536563657365836593660366136623663366436653666366736683669367036713672367336743675367636773678367936803681368236833684368536863687368836893690369136923693369436953696369736983699370037013702370337043705370637073708370937103711371237133714371537163717371837193720372137223723372437253726372737283729373037313732373337343735373637373738373937403741374237433744374537463747374837493750375137523753375437553756375737583759376037613762376337643765376637673768376937703771377237733774377537763777377837793780378137823783378437853786378737883789379037913792379337943795379637973798379938003801380238033804380538063807380838093810381138123813381438153816381738183819382038213822382338243825382638273828382938303831383238333834383538363837383838393840384138423843384438453846384738483849385038513852385338543855385638573858385938603861386238633864386538663867386838693870387138723873387438753876387738783879388038813882388338843885388638873888388938903891389238933894389538963897389838993900390139023903390439053906390739083909391039113912391339143915391639173918391939203921392239233924392539263927392839293930393139323933393439353936393739383939394039413942394339443945394639473948394939503951395239533954395539563957395839593960396139623963396439653966396739683969397039713972397339743975397639773978397939803981398239833984398539863987398839893990399139923993399439953996399739983999400040014002400340044005400640074008400940104011401240134014401540164017401840194020402140224023402440254026402740284029403040314032403340344035403640374038403940404041404240434044404540464047404840494050405140524053405440554056405740584059406040614062406340644065406640674068406940704071407240734074407540764077407840794080408140824083408440854086408740884089409040914092409340944095409640974098409941004101410241034104410541064107410841094110411141124113411441154116411741184119412041214122412341244125412641274128412941304131413241334134413541364137413841394140414141424143414441454146414741484149415041514152415341544155415641574158415941604161416241634164416541664167416841694170417141724173417441754176417741784179418041814182418341844185418641874188418941904191419241934194419541964197419841994200420142024203420442054206420742084209421042114212421342144215421642174218421942204221422242234224422542264227422842294230423142324233423442354236423742384239424042414242424342444245424642474248424942504251425242534254425542564257425842594260426142624263426442654266426742684269427042714272427342744275427642774278427942804281428242834284428542864287428842894290429142924293429442954296429742984299430043014302430343044305430643074308430943104311431243134314431543164317431843194320432143224323432443254326432743284329433043314332433343344335433643374338433943404341434243434344434543464347434843494350435143524353435443554356435743584359436043614362436343644365436643674368436943704371437243734374437543764377437843794380438143824383438443854386438743884389439043914392439343944395439643974398439944004401440244034404440544064407440844094410441144124413441444154416441744184419442044214422442344244425442644274428442944304431443244334434443544364437443844394440444144424443444444454446444744484449445044514452445344544455445644574458445944604461446244634464446544664467446844694470447144724473447444754476447744784479448044814482448344844485448644874488448944904491449244934494449544964497449844994500450145024503450445054506450745084509451045114512451345144515451645174518451945204521452245234524452545264527452845294530453145324533453445354536453745384539454045414542454345444545454645474548454945504551455245534554455545564557455845594560456145624563456445654566456745684569457045714572457345744575457645774578457945804581458245834584458545864587458845894590459145924593459445954596459745984599460046014602460346044605460646074608460946104611461246134614461546164617461846194620462146224623462446254626462746284629463046314632463346344635463646374638463946404641464246434644464546464647464846494650465146524653465446554656465746584659466046614662466346644665466646674668466946704671467246734674467546764677467846794680468146824683468446854686468746884689469046914692469346944695469646974698469947004701470247034704470547064707470847094710471147124713471447154716471747184719472047214722472347244725472647274728472947304731473247334734473547364737473847394740474147424743474447454746474747484749475047514752475347544755475647574758475947604761476247634764476547664767476847694770477147724773477447754776477747784779478047814782478347844785478647874788478947904791479247934794479547964797479847994800480148024803480448054806480748084809481048114812481348144815481648174818481948204821482248234824482548264827482848294830483148324833483448354836483748384839484048414842484348444845484648474848484948504851485248534854485548564857485848594860486148624863486448654866486748684869487048714872487348744875487648774878487948804881488248834884488548864887488848894890489148924893489448954896489748984899490049014902490349044905490649074908490949104911491249134914491549164917491849194920492149224923492449254926492749284929493049314932493349344935493649374938493949404941494249434944494549464947494849494950495149524953495449554956495749584959496049614962496349644965496649674968496949704971497249734974497549764977497849794980498149824983498449854986498749884989499049914992499349944995499649974998499950005001500250035004500550065007500850095010501150125013501450155016501750185019502050215022502350245025502650275028502950305031503250335034503550365037503850395040504150425043504450455046504750485049505050515052505350545055505650575058505950605061506250635064506550665067506850695070507150725073507450755076507750785079508050815082508350845085508650875088508950905091509250935094509550965097509850995100510151025103510451055106510751085109511051115112511351145115511651175118511951205121512251235124512551265127512851295130513151325133513451355136513751385139514051415142514351445145514651475148514951505151515251535154515551565157515851595160516151625163516451655166516751685169517051715172517351745175517651775178517951805181518251835184518551865187518851895190519151925193519451955196519751985199520052015202520352045205520652075208520952105211521252135214521552165217521852195220522152225223522452255226522752285229523052315232523352345235523652375238523952405241524252435244524552465247524852495250525152525253525452555256525752585259526052615262526352645265526652675268526952705271527252735274527552765277527852795280528152825283528452855286528752885289529052915292529352945295529652975298529953005301530253035304530553065307530853095310531153125313531453155316531753185319532053215322532353245325532653275328532953305331533253335334533553365337533853395340534153425343534453455346534753485349535053515352535353545355535653575358535953605361536253635364536553665367536853695370537153725373537453755376537753785379538053815382538353845385538653875388538953905391539253935394539553965397539853995400540154025403540454055406540754085409541054115412541354145415541654175418541954205421542254235424542554265427542854295430543154325433543454355436543754385439544054415442544354445445544654475448544954505451545254535454545554565457545854595460546154625463546454655466546754685469547054715472547354745475547654775478547954805481548254835484548554865487548854895490549154925493549454955496549754985499550055015502550355045505550655075508550955105511551255135514551555165517551855195520552155225523552455255526552755285529553055315532553355345535553655375538553955405541554255435544554555465547554855495550555155525553555455555556555755585559556055615562556355645565556655675568556955705571557255735574557555765577557855795580558155825583558455855586558755885589559055915592559355945595559655975598559956005601560256035604560556065607560856095610561156125613561456155616561756185619562056215622562356245625562656275628562956305631563256335634563556365637563856395640564156425643564456455646564756485649565056515652565356545655565656575658565956605661566256635664566556665667566856695670567156725673567456755676567756785679568056815682568356845685568656875688568956905691569256935694569556965697569856995700570157025703570457055706570757085709571057115712571357145715571657175718571957205721572257235724572557265727572857295730573157325733573457355736573757385739574057415742574357445745574657475748574957505751575257535754575557565757575857595760576157625763576457655766576757685769577057715772577357745775577657775778577957805781578257835784578557865787578857895790579157925793579457955796579757985799580058015802580358045805580658075808580958105811581258135814581558165817581858195820582158225823582458255826582758285829583058315832583358345835583658375838583958405841584258435844584558465847584858495850585158525853585458555856585758585859586058615862586358645865586658675868586958705871587258735874587558765877587858795880588158825883588458855886588758885889589058915892589358945895589658975898589959005901590259035904590559065907590859095910591159125913591459155916591759185919592059215922592359245925592659275928592959305931593259335934593559365937593859395940594159425943594459455946594759485949595059515952595359545955595659575958595959605961596259635964596559665967596859695970597159725973597459755976597759785979598059815982598359845985598659875988598959905991599259935994599559965997599859996000600160026003600460056006600760086009601060116012601360146015601660176018601960206021602260236024602560266027602860296030603160326033603460356036603760386039604060416042604360446045604660476048604960506051605260536054605560566057605860596060606160626063606460656066606760686069607060716072607360746075607660776078607960806081608260836084608560866087608860896090609160926093609460956096609760986099610061016102610361046105610661076108610961106111611261136114611561166117611861196120612161226123612461256126612761286129613061316132613361346135613661376138613961406141614261436144614561466147614861496150615161526153615461556156615761586159616061616162616361646165616661676168616961706171617261736174617561766177617861796180618161826183618461856186618761886189619061916192619361946195619661976198619962006201620262036204620562066207620862096210621162126213621462156216621762186219622062216222622362246225622662276228622962306231623262336234623562366237623862396240624162426243624462456246624762486249625062516252625362546255625662576258625962606261626262636264626562666267626862696270627162726273627462756276627762786279628062816282628362846285628662876288628962906291629262936294629562966297629862996300630163026303630463056306630763086309631063116312631363146315631663176318631963206321632263236324632563266327632863296330633163326333633463356336633763386339634063416342634363446345634663476348634963506351635263536354635563566357635863596360636163626363636463656366636763686369637063716372637363746375637663776378637963806381638263836384638563866387638863896390639163926393639463956396639763986399640064016402640364046405640664076408640964106411641264136414 | 
							- # Open Document Format for Office Applications (OpenDocument) Version 1.3
 
- # Committee Specification 02
 
- # 30 October 2020
 
- # Copyright (c) OASIS Open 2020. All Rights Reserved.
 
- # Source: https://docs.oasis-open.org/office/OpenDocument/v1.3/cs02/schemas/
 
- # Latest stage of specification: https://docs.oasis-open.org/office/OpenDocument/v1.3/OpenDocument-v1.3-part1-introduction.html
 
- # TC IPR Statement: https://www.oasis-open.org/committees/office/ipr.php
 
- #
 
- #    Open Document Format for Office Applications (OpenDocument) Version 1.3
 
- #    Relax-NG Schema
 
- #    OpenDocument-v1.3-schema.rng
 
- # https://issues.oasis-open.org/browse/OFFICE-2153
 
- namespace anim = "urn:oasis:names:tc:opendocument:xmlns:animation:1.0"
 
- namespace chart = "urn:oasis:names:tc:opendocument:xmlns:chart:1.0"
 
- namespace config = "urn:oasis:names:tc:opendocument:xmlns:config:1.0"
 
- namespace db = "urn:oasis:names:tc:opendocument:xmlns:database:1.0"
 
- namespace dc = "http://purl.org/dc/elements/1.1/"
 
- namespace dr3d = "urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0"
 
- namespace draw = "urn:oasis:names:tc:opendocument:xmlns:drawing:1.0"
 
- namespace fo =
 
-   "urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0"
 
- namespace form = "urn:oasis:names:tc:opendocument:xmlns:form:1.0"
 
- namespace grddl = "http://www.w3.org/2003/g/data-view#"
 
- namespace math = "http://www.w3.org/1998/Math/MathML"
 
- namespace meta = "urn:oasis:names:tc:opendocument:xmlns:meta:1.0"
 
- namespace number = "urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0"
 
- namespace office = "urn:oasis:names:tc:opendocument:xmlns:office:1.0"
 
- namespace presentation =
 
-   "urn:oasis:names:tc:opendocument:xmlns:presentation:1.0"
 
- namespace rng = "http://relaxng.org/ns/structure/1.0"
 
- namespace script = "urn:oasis:names:tc:opendocument:xmlns:script:1.0"
 
- namespace smil =
 
-   "urn:oasis:names:tc:opendocument:xmlns:smil-compatible:1.0"
 
- namespace style = "urn:oasis:names:tc:opendocument:xmlns:style:1.0"
 
- namespace svg =
 
-   "urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0"
 
- namespace table = "urn:oasis:names:tc:opendocument:xmlns:table:1.0"
 
- namespace text = "urn:oasis:names:tc:opendocument:xmlns:text:1.0"
 
- namespace xforms = "http://www.w3.org/2002/xforms"
 
- namespace xhtml = "http://www.w3.org/1999/xhtml"
 
- namespace xlink = "http://www.w3.org/1999/xlink"
 
- start =
 
-   office-document
 
-   | office-document-content
 
-   | office-document-styles
 
-   | office-document-meta
 
-   | office-document-settings
 
- CURIE =
 
-   xsd:string { pattern = "(([\i-[:]][\c-[:]]*)?:)?.+" minLength = "1" }
 
- CURIEs = list { CURIE+ }
 
- ID = xsd:ID
 
- IDREF = xsd:IDREF
 
- IDREFS = xsd:IDREFS
 
- NCName = xsd:NCName
 
- SafeCURIE =
 
-   xsd:string {
 
-     pattern = "\[(([\i-[:]][\c-[:]]*)?:)?.+\]"
 
-     minLength = "3"
 
-   }
 
- URIorSafeCURIE = anyURI | SafeCURIE
 
- angle = xsd:string
 
- anim-animate-color-attlist =
 
-   attribute anim:color-interpolation { "rgb" | "hsl" }?
 
-   & attribute anim:color-interpolation-direction {
 
-       "clockwise" | "counter-clockwise"
 
-     }?
 
- anim-animate-motion-attlist =
 
-   attribute svg:path { pathData }?
 
-   & attribute svg:origin { \string }?
 
-   & attribute smil:calcMode {
 
-       "discrete" | "linear" | "paced" | "spline"
 
-     }?
 
- anim-animate-transform-attlist =
 
-   attribute svg:type {
 
-     "translate" | "scale" | "rotate" | "skewX" | "skewY"
 
-   }
 
- anim-audio-attlist =
 
-   attribute xlink:href { anyIRI }?
 
-   & attribute anim:audio-level { double }?
 
- anim-command-attlist = attribute anim:command { \string }
 
- anim-iterate-attlist =
 
-   common-anim-target-attlist
 
-   & attribute anim:iterate-type { \string }?
 
-   & attribute anim:iterate-interval { duration }?
 
- anim-transition-filter-attlist =
 
-   attribute smil:type { \string }
 
-   & attribute smil:subtype { \string }?
 
-   & attribute smil:direction { "forward" | "reverse" }?
 
-   & attribute smil:fadeColor { color }?
 
-   & attribute smil:mode { "in" | "out" }?
 
- animation-element =
 
-   element anim:animate {
 
-     common-anim-target-attlist,
 
-     common-anim-named-target-attlist,
 
-     common-anim-values-attlist,
 
-     common-anim-spline-mode-attlist,
 
-     common-spline-anim-value-attlist,
 
-     common-timing-attlist,
 
-     common-anim-add-accum-attlist
 
-   }
 
-   | element anim:set {
 
-       common-anim-target-attlist,
 
-       common-anim-named-target-attlist,
 
-       common-anim-set-values-attlist,
 
-       common-timing-attlist,
 
-       common-anim-add-accum-attlist
 
-     }
 
-   | element anim:animateMotion {
 
-       anim-animate-motion-attlist,
 
-       common-anim-target-attlist,
 
-       common-anim-named-target-attlist,
 
-       common-anim-add-accum-attlist,
 
-       common-anim-values-attlist,
 
-       common-timing-attlist,
 
-       common-spline-anim-value-attlist
 
-     }
 
-   | element anim:animateColor {
 
-       common-anim-target-attlist,
 
-       common-anim-named-target-attlist,
 
-       common-anim-add-accum-attlist,
 
-       common-anim-values-attlist,
 
-       common-anim-spline-mode-attlist,
 
-       common-spline-anim-value-attlist,
 
-       anim-animate-color-attlist,
 
-       common-timing-attlist
 
-     }
 
-   | element anim:animateTransform {
 
-       common-anim-target-attlist,
 
-       common-anim-named-target-attlist,
 
-       common-anim-add-accum-attlist,
 
-       common-anim-values-attlist,
 
-       anim-animate-transform-attlist,
 
-       common-timing-attlist
 
-     }
 
-   | element anim:transitionFilter {
 
-       common-anim-target-attlist,
 
-       common-anim-add-accum-attlist,
 
-       common-anim-values-attlist,
 
-       common-anim-spline-mode-attlist,
 
-       anim-transition-filter-attlist,
 
-       common-timing-attlist
 
-     }
 
-   | element anim:par {
 
-       common-anim-attlist,
 
-       common-timing-attlist,
 
-       common-endsync-timing-attlist,
 
-       animation-element*
 
-     }
 
-   | element anim:seq {
 
-       common-anim-attlist,
 
-       common-endsync-timing-attlist,
 
-       common-timing-attlist,
 
-       animation-element*
 
-     }
 
-   | element anim:iterate {
 
-       common-anim-attlist,
 
-       anim-iterate-attlist,
 
-       common-timing-attlist,
 
-       common-endsync-timing-attlist,
 
-       animation-element*
 
-     }
 
-   | element anim:audio {
 
-       common-anim-attlist,
 
-       anim-audio-attlist,
 
-       common-basic-timing-attlist
 
-     }
 
-   | element anim:command {
 
-       common-anim-attlist,
 
-       anim-command-attlist,
 
-       common-begin-end-timing-attlist,
 
-       common-anim-target-attlist,
 
-       element anim:param {
 
-         attribute anim:name { \string },
 
-         attribute anim:value { \string }
 
-       }*
 
-     }
 
- any-date =
 
-   number-day
 
-   | number-month
 
-   | number-year
 
-   | number-era
 
-   | number-day-of-week
 
-   | number-week-of-year
 
-   | number-quarter
 
-   | number-hours
 
-   | number-am-pm
 
-   | number-minutes
 
-   | number-seconds
 
- any-number = number-number | number-scientific-number | number-fraction
 
- any-time = number-hours | number-am-pm | number-minutes | number-seconds
 
- anyAttListOrElements =
 
-   attribute * { text }*,
 
-   anyElements
 
- anyElements =
 
-   element * {
 
-     mixed { anyAttListOrElements }
 
-   }*
 
- anyIRI =
 
-   xsd:anyURI
 
-   >> dc:description [
 
-        "An IRI-reference as defined in [RFC3987]. See ODF 1.3 Part 3 section 18.3."
 
-      ]
 
- anyURI = xsd:anyURI
 
- base64Binary = xsd:base64Binary
 
- boolean = "true" | "false"
 
- borderWidths = list { positiveLength, positiveLength, positiveLength }
 
- bound-column = attribute form:bound-column { \string }?
 
- button-type = attribute form:button-type { types }?
 
- cellAddress =
 
-   xsd:string {
 
-     pattern = "($?([^\. ']+|'([^']|'')+'))?\.$?[A-Z]+$?[0-9]+"
 
-   }
 
- cellRangeAddress =
 
-   xsd:string {
 
-     pattern =
 
-       "($?([^\. ']+|'([^']|'')+'))?\.$?[A-Z]+$?[0-9]+(:($?([^\. ']+|'([^']|'')+'))?\.$?[A-Z]+$?[0-9]+)?"
 
-   }
 
-   | xsd:string {
 
-       pattern =
 
-         "($?([^\. ']+|'([^']|'')+'))?\.$?[0-9]+:($?([^\. ']+|'([^']|'')+'))?\.$?[0-9]+"
 
-     }
 
-   | xsd:string {
 
-       pattern =
 
-         "($?([^\. ']+|'([^']|'')+'))?\.$?[A-Z]+:($?([^\. ']+|'([^']|'')+'))?\.$?[A-Z]+"
 
-     }
 
- cellRangeAddressList =
 
-   xsd:string
 
-   >> dc:description [
 
-        'Value is a space separated list of "cellRangeAddress" patterns'
 
-      ]
 
- change-mark-attr = attribute text:change-id { IDREF }
 
- change-marks =
 
-   element text:change { change-mark-attr }
 
-   | element text:change-start { change-mark-attr }
 
-   | element text:change-end { change-mark-attr }
 
- character = xsd:string { length = "1" }
 
- chart-axis =
 
-   element chart:axis {
 
-     chart-axis-attlist, chart-title?, chart-categories?, chart-grid*
 
-   }
 
- chart-axis-attlist =
 
-   attribute chart:dimension { chart-dimension }
 
-   & attribute chart:name { \string }?
 
-   & attribute chart:style-name { styleNameRef }?
 
- chart-categories =
 
-   element chart:categories {
 
-     attribute table:cell-range-address { cellRangeAddressList }?
 
-   }
 
- chart-chart =
 
-   element chart:chart {
 
-     chart-chart-attlist,
 
-     chart-title?,
 
-     chart-subtitle?,
 
-     chart-footer?,
 
-     chart-legend?,
 
-     chart-plot-area,
 
-     shape*,
 
-     # https://issues.oasis-open.org/browse/OFFICE-2123
 
-     table-table?
 
-   }
 
- chart-chart-attlist =
 
-   attribute chart:class { namespacedToken }
 
-   & common-draw-size-attlist
 
-   & attribute chart:column-mapping { \string }?
 
-   & attribute chart:row-mapping { \string }?
 
-   & attribute chart:style-name { styleNameRef }?
 
-   & (attribute xlink:type { "simple" },
 
-      attribute xlink:href { anyIRI })?
 
-   & xml-id?
 
- chart-coordinate-region =
 
-   element chart:coordinate-region {
 
-     chart-coordinate-region-attlist, empty
 
-   }
 
- chart-coordinate-region-attlist =
 
-   common-draw-position-attlist, common-draw-size-attlist
 
- # https://issues.oasis-open.org/browse/OFFICE-3928
 
- chart-data-label =
 
-   element chart:data-label { chart-data-label-attlist, text-p? }
 
- chart-data-label-attlist =
 
-   common-draw-position-attlist
 
-   & attribute chart:style-name { styleNameRef }?
 
- chart-data-point =
 
-   element chart:data-point {
 
-     chart-data-point-attlist, chart-data-label?
 
-   }
 
- chart-data-point-attlist =
 
-   attribute chart:repeated { positiveInteger }?
 
-   & attribute chart:style-name { styleNameRef }?
 
-   & xml-id?
 
- chart-dimension = "x" | "y" | "z"
 
- chart-domain =
 
-   element chart:domain {
 
-     attribute table:cell-range-address { cellRangeAddressList }?
 
-   }
 
- chart-equation =
 
-   element chart:equation { chart-equation-attlist, text-p? }
 
- chart-equation-attlist =
 
-   attribute chart:automatic-content { boolean }?
 
-   & attribute chart:display-r-square { boolean }?
 
-   & attribute chart:display-equation { boolean }?
 
-   & common-draw-position-attlist
 
-   & attribute chart:style-name { styleNameRef }?
 
- chart-error-indicator =
 
-   element chart:error-indicator { chart-error-indicator-attlist, empty }
 
- chart-error-indicator-attlist =
 
-   attribute chart:style-name { styleNameRef }?
 
-   & attribute chart:dimension { chart-dimension }
 
- chart-floor = element chart:floor { chart-floor-attlist, empty }
 
- chart-floor-attlist =
 
-   attribute svg:width { length }?
 
-   & attribute chart:style-name { styleNameRef }?
 
- chart-footer = element chart:footer { chart-title-attlist, text-p? }
 
- chart-grid = element chart:grid { chart-grid-attlist }
 
- chart-grid-attlist =
 
-   attribute chart:class { "major" | "minor" }?
 
-   & attribute chart:style-name { styleNameRef }?
 
- chart-legend = element chart:legend { chart-legend-attlist, text-p? }
 
- chart-legend-attlist =
 
-   ((attribute chart:legend-position {
 
-       "start" | "end" | "top" | "bottom"
 
-     },
 
-     attribute chart:legend-align { "start" | "center" | "end" }?)
 
-    | attribute chart:legend-position {
 
-        "top-start" | "bottom-start" | "top-end" | "bottom-end"
 
-      }
 
-    | empty)
 
-   & common-draw-position-attlist
 
-   & (attribute style:legend-expansion { "wide" | "high" | "balanced" }
 
-      | (attribute style:legend-expansion { "custom" },
 
-         attribute style:legend-expansion-aspect-ratio { double },
 
-         common-draw-size-attlist
 
-         # https://issues.oasis-open.org/browse/OFFICE-3883
 
-         )
 
-      | empty)
 
-   & attribute chart:style-name { styleNameRef }?
 
- chart-mean-value =
 
-   element chart:mean-value { chart-mean-value-attlist, empty }
 
- chart-mean-value-attlist = attribute chart:style-name { styleNameRef }?
 
- chart-plot-area =
 
-   element chart:plot-area {
 
-     chart-plot-area-attlist,
 
-     # https://issues.oasis-open.org/browse/OFFICE-3928
 
-     chart-coordinate-region?,
 
-     dr3d-light*,
 
-     chart-axis*,
 
-     chart-series*,
 
-     chart-stock-gain-marker?,
 
-     chart-stock-loss-marker?,
 
-     chart-stock-range-line?,
 
-     chart-wall?,
 
-     chart-floor?
 
-   }
 
- chart-plot-area-attlist =
 
-   common-draw-position-attlist
 
-   & common-draw-size-attlist
 
-   & attribute chart:style-name { styleNameRef }?
 
-   & attribute table:cell-range-address { cellRangeAddressList }?
 
-   & attribute chart:data-source-has-labels {
 
-       "none" | "row" | "column" | "both"
 
-     }?
 
-   & dr3d-scene-attlist
 
-   & common-dr3d-transform-attlist
 
-   & xml-id?
 
- chart-regression-curve =
 
-   element chart:regression-curve {
 
-     chart-regression-curve-attlist, chart-equation?
 
-   }
 
- chart-regression-curve-attlist =
 
-   attribute chart:style-name { styleNameRef }?
 
- chart-series =
 
-   element chart:series {
 
-     chart-series-attlist,
 
-     chart-domain*,
 
-     chart-mean-value?,
 
-     chart-regression-curve*,
 
-     chart-error-indicator*,
 
-     chart-data-point*,
 
-     chart-data-label?
 
-   }
 
- chart-series-attlist =
 
-   attribute chart:values-cell-range-address { cellRangeAddressList }?
 
-   & attribute chart:label-cell-address { cellRangeAddressList }?
 
-   & attribute chart:class { namespacedToken }?
 
-   & attribute chart:attached-axis { \string }?
 
-   & attribute chart:style-name { styleNameRef }?
 
-   & xml-id?
 
- chart-stock-gain-marker =
 
-   element chart:stock-gain-marker { common-stock-marker-attlist }
 
- chart-stock-loss-marker =
 
-   element chart:stock-loss-marker { common-stock-marker-attlist }
 
- chart-stock-range-line =
 
-   element chart:stock-range-line { common-stock-marker-attlist }
 
- chart-subtitle = element chart:subtitle { chart-title-attlist, text-p? }
 
- chart-title = element chart:title { chart-title-attlist, text-p? }
 
- chart-title-attlist =
 
-   attribute table:cell-range { cellRangeAddressList }?
 
-   & common-draw-position-attlist
 
-   & attribute chart:style-name { styleNameRef }?
 
- chart-wall = element chart:wall { chart-wall-attlist, empty }
 
- chart-wall-attlist =
 
-   attribute svg:width { length }?
 
-   & attribute chart:style-name { styleNameRef }?
 
- clipShape =
 
-   xsd:string {
 
-     pattern =
 
-       "rect\([ ]*((-?([0-9]+(\.[0-9]*)?|\.[0-9]+)((cm)|(mm)|(in)|(pt)|(pc)))|(auto))([ ]*,[ ]*((-?([0-9]+(\.[0-9]*)?|\.[0-9]+)((cm)|(mm)|(in)|(pt)|(pc))))|(auto)){3}[ ]*\)"
 
-   }
 
- color = xsd:string { pattern = "#[0-9a-fA-F]{6}" }
 
- column-controls =
 
-   element form:text { form-text-attlist, common-form-control-content }
 
-   | element form:textarea {
 
-       form-textarea-attlist, common-form-control-content, text-p*
 
-     }
 
-   | element form:formatted-text {
 
-       form-formatted-text-attlist, common-form-control-content
 
-     }
 
-   | element form:number {
 
-       form-number-attlist,
 
-       common-numeric-control-attlist,
 
-       common-form-control-content,
 
-       common-linked-cell,
 
-       common-spin-button,
 
-       common-repeat,
 
-       common-delay-for-repeat
 
-     }
 
-   | element form:date {
 
-       form-date-attlist,
 
-       common-numeric-control-attlist,
 
-       common-form-control-content,
 
-       common-linked-cell,
 
-       common-spin-button,
 
-       common-repeat,
 
-       common-delay-for-repeat
 
-     }
 
-   | element form:time {
 
-       form-time-attlist,
 
-       common-numeric-control-attlist,
 
-       common-form-control-content,
 
-       common-linked-cell,
 
-       common-spin-button,
 
-       common-repeat,
 
-       common-delay-for-repeat
 
-     }
 
-   | element form:combobox {
 
-       form-combobox-attlist, common-form-control-content, form-item*
 
-     }
 
-   | element form:listbox {
 
-       form-listbox-attlist, common-form-control-content, form-option*
 
-     }
 
-   | element form:checkbox {
 
-       form-checkbox-attlist, common-form-control-content
 
-     }
 
- common-anim-add-accum-attlist =
 
-   attribute smil:accumulate { "none" | "sum" }?
 
-   & attribute smil:additive { "replace" | "sum" }?
 
- common-anim-attlist =
 
-   attribute presentation:node-type {
 
-     "default"
 
-     | "on-click"
 
-     | "with-previous"
 
-     | "after-previous"
 
-     | "timing-root"
 
-     | "main-sequence"
 
-     | "interactive-sequence"
 
-   }?
 
-   & attribute presentation:preset-id { \string }?
 
-   & attribute presentation:preset-sub-type { \string }?
 
-   & attribute presentation:preset-class {
 
-       "custom"
 
-       | "entrance"
 
-       | "exit"
 
-       | "emphasis"
 
-       | "motion-path"
 
-       | "ole-action"
 
-       | "media-call"
 
-     }?
 
-   & attribute presentation:master-element { IDREF }?
 
-   & attribute presentation:group-id { \string }?
 
-   & (xml-id,
 
-      attribute anim:id { NCName }?)?
 
- common-anim-named-target-attlist =
 
-   attribute smil:attributeName { \string }
 
- common-anim-set-values-attlist = attribute smil:to { \string }?
 
- common-anim-spline-mode-attlist =
 
-   attribute smil:calcMode {
 
-     "discrete" | "linear" | "paced" | "spline"
 
-   }?
 
- common-anim-target-attlist =
 
-   attribute smil:targetElement { IDREF }?
 
-   & attribute anim:sub-item { \string }?
 
- common-anim-values-attlist =
 
-   attribute smil:values { \string }?
 
-   & attribute anim:formula { \string }?
 
-   & common-anim-set-values-attlist
 
-   & attribute smil:from { \string }?
 
-   & attribute smil:by { \string }?
 
- common-auto-reorder-attlist =
 
-   attribute number:automatic-order { boolean }?
 
- common-background-color-attlist =
 
-   attribute fo:background-color { "transparent" | color }?
 
- common-background-transparency-attlist =
 
-   attribute style:background-transparency { zeroToHundredPercent }?
 
- common-basic-timing-attlist =
 
-   common-begin-end-timing-attlist,
 
-   common-dur-timing-attlist,
 
-   common-repeat-timing-attlist,
 
-   common-restart-timing-attlist,
 
-   common-restart-default-attlist,
 
-   common-fill-timing-attlist,
 
-   common-fill-default-attlist
 
- common-begin-end-timing-attlist =
 
-   attribute smil:begin { \string }?
 
-   & attribute smil:end { \string }?
 
- common-border-attlist =
 
-   attribute fo:border { \string }?,
 
-   attribute fo:border-top { \string }?,
 
-   attribute fo:border-bottom { \string }?,
 
-   attribute fo:border-left { \string }?,
 
-   attribute fo:border-right { \string }?
 
- common-border-line-width-attlist =
 
-   attribute style:border-line-width { borderWidths }?,
 
-   attribute style:border-line-width-top { borderWidths }?,
 
-   attribute style:border-line-width-bottom { borderWidths }?,
 
-   attribute style:border-line-width-left { borderWidths }?,
 
-   attribute style:border-line-width-right { borderWidths }?
 
- common-break-attlist =
 
-   attribute fo:break-before { "auto" | "column" | "page" }?,
 
-   attribute fo:break-after { "auto" | "column" | "page" }?
 
- common-calendar-attlist =
 
-   attribute number:calendar {
 
-     "gregorian"
 
-     | "gengou"
 
-     | "ROC"
 
-     | "hanja_yoil"
 
-     | "hanja"
 
-     | "hijri"
 
-     | "jewish"
 
-     | "buddhist"
 
-     | \string
 
-   }?
 
- common-contour-attlist = attribute draw:recreate-on-edit { boolean }
 
- common-control-id-attlist =
 
-   xml-id,
 
-   attribute form:id { NCName }?
 
- common-convert-empty-attlist =
 
-   attribute form:convert-empty-to-null { boolean }?
 
- common-current-value-attlist = attribute form:current-value { \string }?
 
- common-data-field-attlist = attribute form:data-field { \string }?
 
- common-data-style-attlist =
 
-   attribute style:name { styleName }
 
-   & attribute style:display-name { \string }?
 
-   & attribute number:language { languageCode }?
 
-   & attribute number:country { countryCode }?
 
-   & attribute number:script { scriptCode }?
 
-   & attribute number:rfc-language-tag { language }?
 
-   & attribute number:title { \string }?
 
-   & attribute style:volatile { boolean }?
 
-   & attribute number:transliteration-format { \string }?
 
-   & attribute number:transliteration-language { countryCode }?
 
-   & attribute number:transliteration-country { countryCode }?
 
-   & attribute number:transliteration-style {
 
-       "short" | "medium" | "long"
 
-     }?
 
- common-db-default-value = common-value-and-type-attlist?
 
- common-db-object-description = attribute db:description { \string }?
 
- common-db-object-name = attribute db:name { \string }
 
- common-db-object-title = attribute db:title { \string }?
 
- common-db-table-name-attlist =
 
-   attribute db:name { \string }
 
-   & attribute db:catalog-name { \string }?
 
-   & attribute db:schema-name { \string }?
 
- common-db-table-style-name =
 
-   attribute db:style-name { styleNameRef }?
 
-   & attribute db:default-row-style-name { styleNameRef }?
 
- common-dde-connection-decl-attlist =
 
-   attribute office:dde-application { \string }
 
-   & attribute office:dde-topic { \string }
 
-   & attribute office:dde-item { \string }
 
-   & attribute office:automatic-update { boolean }?
 
- common-decimal-places-attlist =
 
-   attribute number:decimal-places { integer }?,
 
-   (attribute number:min-decimal-places { integer }?)
 
-   # https://issues.oasis-open.org/browse/OFFICE-3860  added number:min-decimal-places
 
- common-delay-for-repeat = attribute form:delay-for-repeat { duration }?
 
- common-disabled-attlist = attribute form:disabled { boolean }?
 
- common-dr3d-transform-attlist = attribute dr3d:transform { \string }?
 
- common-draw-area-attlist =
 
-   (attribute xlink:type { "simple" },
 
-    attribute xlink:href { anyIRI },
 
-    attribute office:target-frame-name { targetFrameName }?,
 
-    attribute xlink:show { "new" | "replace" }?)?
 
-   & attribute office:name { \string }?
 
-   & attribute draw:nohref { "nohref" }?
 
- common-draw-caption-id-attlist = attribute draw:caption-id { IDREF }?
 
- common-draw-circle-ellipse-attlist =
 
-   attribute draw:kind { "full" | "section" | "cut" | "arc" }?
 
-   & attribute draw:start-angle { angle }?
 
-   & attribute draw:end-angle { angle }?
 
- common-draw-circle-ellipse-pos-attlist =
 
-   attribute svg:cx { coordinate },
 
-   attribute svg:cy { coordinate }
 
- common-draw-data-attlist =
 
-   attribute xlink:type { "simple" },
 
-   attribute xlink:href { anyIRI },
 
-   attribute xlink:show { "embed" }?,
 
-   attribute xlink:actuate { "onLoad" }?
 
- common-draw-gradient-attlist =
 
-   attribute draw:name { styleName }?
 
-   & attribute draw:display-name { \string }?
 
-   & attribute draw:style { gradient-style }
 
-   & attribute draw:cx { percent }?
 
-   & attribute draw:cy { percent }?
 
-   & attribute draw:angle { angle }?
 
-   & attribute draw:border { percent }?
 
- common-draw-id-attlist =
 
-   (xml-id,
 
-    attribute draw:id { NCName }?)?
 
- common-draw-layer-name-attlist = attribute draw:layer { \string }?
 
- common-draw-mime-type-attlist = attribute draw:mime-type { \string }?
 
- # https://issues.oasis-open.org/browse/OFFICE-3943
 
- common-draw-name-attlist = attribute draw:name { \string }?
 
- common-draw-path-data-attlist = attribute svg:d { pathData }
 
- common-draw-points-attlist = attribute draw:points { points }
 
- common-draw-position-attlist =
 
-   attribute svg:x { coordinate }?,
 
-   attribute svg:y { coordinate }?
 
- common-draw-rel-size-attlist =
 
-   common-draw-size-attlist,
 
-   attribute style:rel-width { percent | "scale" | "scale-min" }?,
 
-   attribute style:rel-height { percent | "scale" | "scale-min" }?
 
- common-draw-shape-with-styles-attlist =
 
-   common-draw-z-index-attlist,
 
-   common-draw-id-attlist,
 
-   common-draw-layer-name-attlist,
 
-   common-draw-style-name-attlist,
 
-   common-draw-transform-attlist,
 
-   common-draw-name-attlist,
 
-   common-text-spreadsheet-shape-attlist
 
- common-draw-shape-with-text-and-styles-attlist =
 
-   common-draw-shape-with-styles-attlist,
 
-   common-draw-text-style-name-attlist
 
- common-draw-size-attlist =
 
-   attribute svg:width { length }?,
 
-   attribute svg:height { length }?
 
- common-draw-style-name-attlist =
 
-   (attribute draw:style-name { styleNameRef }?,
 
-    attribute draw:class-names { styleNameRefs }?)
 
-   | (attribute presentation:style-name { styleNameRef }?,
 
-      attribute presentation:class-names { styleNameRefs }?)
 
- common-draw-text-style-name-attlist =
 
-   attribute draw:text-style-name { styleNameRef }?
 
- common-draw-transform-attlist = attribute draw:transform { \string }?
 
- common-draw-viewbox-attlist =
 
-   attribute svg:viewBox {
 
-     list { integer, integer, integer, integer }
 
-   }
 
- common-draw-z-index-attlist =
 
-   attribute draw:z-index { nonNegativeInteger }?
 
- common-dur-timing-attlist = attribute smil:dur { \string }?
 
- common-editable-attlist = attribute style:editable { boolean }?
 
- common-endsync-timing-attlist =
 
-   attribute smil:endsync { "first" | "last" | "all" | "media" | IDREF }?
 
- common-field-data-style-name-attlist =
 
-   attribute style:data-style-name { styleNameRef }?
 
- common-field-database-name =
 
-   attribute text:database-name { \string }?
 
-   | form-connection-resource
 
- common-field-database-table =
 
-   common-field-database-table-attlist, common-field-database-name
 
- common-field-database-table-attlist =
 
-   attribute text:table-name { \string }
 
-   & attribute text:table-type { "table" | "query" | "command" }?
 
- common-field-description-attlist =
 
-   attribute text:description { \string }?
 
- common-field-display-value-formula-attlist =
 
-   attribute text:display { "value" | "formula" }?
 
- common-field-display-value-formula-none-attlist =
 
-   attribute text:display { "value" | "formula" | "none" }?
 
- common-field-display-value-none-attlist =
 
-   attribute text:display { "value" | "none" }?
 
- common-field-fixed-attlist = attribute text:fixed { boolean }?
 
- common-field-formula-attlist = attribute text:formula { \string }?
 
- common-field-name-attlist = attribute text:name { variableName }
 
- common-field-num-format-attlist = common-num-format-attlist?
 
- common-fill-default-attlist =
 
-   attribute smil:fillDefault {
 
-     "remove" | "freeze" | "hold" | "transition" | "auto" | "inherit"
 
-   }?
 
- common-fill-timing-attlist =
 
-   attribute smil:fill {
 
-     "remove" | "freeze" | "hold" | "auto" | "default" | "transition"
 
-   }?
 
- common-form-control-attlist =
 
-   attribute form:name { \string }?
 
-   & attribute form:control-implementation { namespacedToken }?
 
- common-form-control-content = form-properties?, office-event-listeners?
 
- common-form-relative-image-position-attlist =
 
-   attribute form:image-position { "center" }?
 
-   | (attribute form:image-position {
 
-        "start" | "end" | "top" | "bottom"
 
-      },
 
-      attribute form:image-align { "start" | "center" | "end" }?)
 
- common-form-visual-effect-attlist =
 
-   attribute form:visual-effect { "flat" | "3d" }?
 
- common-format-source-attlist =
 
-   attribute number:format-source { "fixed" | "language" }?
 
- common-horizontal-margin-attlist =
 
-   attribute fo:margin-left { length | percent }?,
 
-   attribute fo:margin-right { length | percent }?
 
- common-in-content-meta-attlist =
 
-   attribute xhtml:about { URIorSafeCURIE },
 
-   attribute xhtml:property { CURIEs },
 
-   common-meta-literal-attlist
 
- common-keep-with-next-attlist =
 
-   attribute fo:keep-with-next { "auto" | "always" }?
 
- common-linked-cell =
 
-   attribute form:linked-cell { cellAddress | \string }?
 
- common-margin-attlist =
 
-   attribute fo:margin { nonNegativeLength | percent }?
 
- common-maxlength-attlist =
 
-   attribute form:max-length { nonNegativeInteger }?
 
- common-meta-literal-attlist =
 
-   attribute xhtml:datatype { CURIE }?,
 
-   attribute xhtml:content { \string }?
 
- common-num-format-attlist =
 
-   attribute style:num-format { "1" | "i" | "I" | \string | empty }
 
-   | (attribute style:num-format { "a" | "A" },
 
-      style-num-letter-sync-attlist)
 
-   | empty
 
- common-num-format-prefix-suffix-attlist =
 
-   attribute style:num-prefix { \string }?,
 
-   attribute style:num-suffix { \string }?
 
- common-number-attlist =
 
-   attribute number:min-integer-digits { integer }?
 
-   & attribute number:grouping { boolean }?
 
- common-numeric-control-attlist =
 
-   form-control-attlist,
 
-   common-disabled-attlist,
 
-   common-maxlength-attlist,
 
-   common-printable-attlist,
 
-   common-readonly-attlist,
 
-   common-tab-attlist,
 
-   common-title-attlist,
 
-   common-convert-empty-attlist,
 
-   common-data-field-attlist
 
- common-office-annotation-name-attlist =
 
-   attribute office:name { \string }
 
- common-padding-attlist =
 
-   attribute fo:padding { nonNegativeLength }?,
 
-   attribute fo:padding-top { nonNegativeLength }?,
 
-   attribute fo:padding-bottom { nonNegativeLength }?,
 
-   attribute fo:padding-left { nonNegativeLength }?,
 
-   attribute fo:padding-right { nonNegativeLength }?
 
- common-page-number-attlist =
 
-   attribute style:page-number {
 
-     (nonNegativeInteger | "auto")
 
-     # https://issues.oasis-open.org/browse/OFFICE-3923
 
-   }?
 
- common-presentation-effect-attlist =
 
-   attribute draw:shape-id { IDREF }
 
-   & attribute presentation:effect { presentationEffects }?
 
-   & attribute presentation:direction { presentationEffectDirections }?
 
-   & attribute presentation:speed { presentationSpeeds }?
 
-   & attribute presentation:delay { duration }?
 
-   & attribute presentation:start-scale { percent }?
 
-   & attribute presentation:path-id { \string }?
 
- common-presentation-header-footer-attlist =
 
-   attribute presentation:use-header-name { \string }?
 
-   & attribute presentation:use-footer-name { \string }?
 
-   & attribute presentation:use-date-time-name { \string }?
 
- common-printable-attlist = attribute form:printable { boolean }?
 
- common-readonly-attlist = attribute form:readonly { boolean }?
 
- common-ref-format-values = "page" | "chapter" | "direction" | "text"
 
- common-repeat = attribute form:repeat { boolean }?
 
- common-repeat-timing-attlist =
 
-   attribute smil:repeatDur { \string }?,
 
-   attribute smil:repeatCount { nonNegativeDecimal | "indefinite" }?
 
- common-restart-default-attlist =
 
-   attribute smil:restartDefault {
 
-     "never" | "always" | "whenNotActive" | "inherit"
 
-   }?
 
- common-restart-timing-attlist =
 
-   attribute smil:restart {
 
-     "never" | "always" | "whenNotActive" | "default"
 
-   }?
 
- common-rotation-angle-attlist =
 
-   attribute style:rotation-angle { angle }?
 
- common-section-attlist =
 
-   attribute text:style-name { styleNameRef }?
 
-   & attribute text:name { \string }
 
-   & attribute text:protected { boolean }?
 
-   & attribute text:protection-key { \string }?
 
-   & attribute text:protection-key-digest-algorithm { anyIRI }?
 
-   & xml-id?
 
- common-shadow-attlist = attribute style:shadow { shadowType }?
 
- common-source-cell-range =
 
-   attribute form:source-cell-range { cellRangeAddress | \string }?
 
- common-spin-button = attribute form:spin-button { boolean }?
 
- common-spline-anim-value-attlist =
 
-   attribute smil:keyTimes { \string }?
 
-   & attribute smil:keySplines { \string }?
 
- common-stock-marker-attlist =
 
-   attribute chart:style-name { styleNameRef }?
 
- common-style-direction-attlist =
 
-   attribute style:direction { "ltr" | "ttb" }?
 
- common-style-header-footer-attlist =
 
-   attribute style:display { boolean }?
 
- common-svg-font-face-xlink-attlist =
 
-   attribute xlink:type { "simple" },
 
-   attribute xlink:href { anyIRI },
 
-   attribute xlink:actuate { "onRequest" }?
 
- common-svg-gradient-attlist =
 
-   attribute svg:gradientUnits { "objectBoundingBox" }?
 
-   & attribute svg:gradientTransform { \string }?
 
-   & attribute svg:spreadMethod { "pad" | "reflect" | "repeat" }?
 
-   & attribute draw:name { styleName }
 
-   & attribute draw:display-name { \string }?
 
- common-tab-attlist =
 
-   attribute form:tab-index { nonNegativeInteger }?
 
-   & attribute form:tab-stop { boolean }?
 
- common-table-cell-address-attlist =
 
-   attribute table:column { integer },
 
-   attribute table:row { integer },
 
-   attribute table:table { integer }
 
- common-table-cell-range-address-attlist =
 
-   attribute table:start-column { integer },
 
-   attribute table:start-row { integer },
 
-   attribute table:start-table { integer },
 
-   attribute table:end-column { integer },
 
-   attribute table:end-row { integer },
 
-   attribute table:end-table { integer }
 
- common-table-change-attlist =
 
-   attribute table:id { \string }
 
-   & attribute table:acceptance-state {
 
-       "accepted" | "rejected" | "pending"
 
-     }?
 
-   & attribute table:rejecting-change-id { \string }?
 
- common-table-range-attlist =
 
-   common-table-cell-address-attlist
 
-   | common-table-cell-range-address-attlist
 
- common-table-template-attlist =
 
-   attribute table:style-name { styleNameRef },
 
-   attribute table:paragraph-style-name { styleNameRef }?
 
- common-text-align =
 
-   attribute fo:text-align {
 
-     "start" | "end" | "left" | "right" | "center" | "justify"
 
-   }?
 
- common-text-anchor-attlist =
 
-   attribute text:anchor-type {
 
-     "page" | "frame" | "paragraph" | "char" | "as-char"
 
-   }?
 
-   & attribute text:anchor-page-number { positiveInteger }?
 
- common-text-spreadsheet-shape-attlist =
 
-   attribute table:end-cell-address { cellAddress }?
 
-   & attribute table:end-x { coordinate }?
 
-   & attribute table:end-y { coordinate }?
 
-   & attribute table:table-background { boolean }?
 
-   & common-text-anchor-attlist
 
- common-time-manip-attlist =
 
-   attribute smil:accelerate { zeroToOneDecimal }?
 
-   & attribute smil:decelerate { zeroToOneDecimal }?
 
-   & attribute smil:autoReverse { boolean }?
 
- common-timing-attlist =
 
-   common-basic-timing-attlist, common-time-manip-attlist
 
- common-title-attlist = attribute form:title { \string }?
 
- common-value-and-type-attlist =
 
-   (attribute office:value-type { "float" },
 
-    attribute office:value { double })
 
-   | (attribute office:value-type { "percentage" },
 
-      attribute office:value { double })
 
-   | (attribute office:value-type { "currency" },
 
-      attribute office:value { double },
 
-      attribute office:currency { \string }?)
 
-   | (attribute office:value-type { "date" },
 
-      attribute office:date-value { dateOrDateTime })
 
-   | (attribute office:value-type { "time" },
 
-      attribute office:time-value { duration })
 
-   | (attribute office:value-type { "boolean" },
 
-      attribute office:boolean-value { boolean })
 
-   | (attribute office:value-type { "string" },
 
-      attribute office:string-value { \string }?)
 
- common-value-attlist = attribute form:value { \string }?
 
- common-value-type-attlist = attribute office:value-type { valueType }
 
- common-vertical-margin-attlist =
 
-   attribute fo:margin-top { nonNegativeLength | percent }?,
 
-   attribute fo:margin-bottom { nonNegativeLength | percent }?
 
- common-vertical-pos-attlist =
 
-   attribute style:vertical-pos {
 
-     "top" | "middle" | "bottom" | "from-top" | "below"
 
-   }?,
 
-   attribute svg:y { coordinate }?
 
- common-vertical-rel-attlist =
 
-   attribute style:vertical-rel {
 
-     "page"
 
-     | "page-content"
 
-     | "frame"
 
-     | "frame-content"
 
-     | "paragraph"
 
-     | "paragraph-content"
 
-     | "char"
 
-     | "line"
 
-     | "baseline"
 
-     | "text"
 
-   }?
 
- common-writing-mode-attlist =
 
-   attribute style:writing-mode {
 
-     "lr-tb" | "rl-tb" | "tb-rl" | "tb-lr" | "lr" | "rl" | "tb" | "page"
 
-   }?
 
- config-config-item =
 
-   element config:config-item { config-config-item-attlist, text }
 
- config-config-item-attlist =
 
-   attribute config:name { \string }
 
-   & attribute config:type {
 
-       "boolean"
 
-       | "short"
 
-       | "int"
 
-       | "long"
 
-       | "double"
 
-       | "string"
 
-       | "datetime"
 
-       | "base64Binary"
 
-     }
 
- config-config-item-map-entry =
 
-   element config:config-item-map-entry {
 
-     config-config-item-map-entry-attlist, config-items
 
-   }
 
- config-config-item-map-entry-attlist =
 
-   attribute config:name { \string }?
 
- config-config-item-map-indexed =
 
-   element config:config-item-map-indexed {
 
-     config-config-item-map-indexed-attlist,
 
-     config-config-item-map-entry+
 
-   }
 
- config-config-item-map-indexed-attlist =
 
-   attribute config:name { \string }
 
- config-config-item-map-named =
 
-   element config:config-item-map-named {
 
-     config-config-item-map-named-attlist, config-config-item-map-entry+
 
-   }
 
- config-config-item-map-named-attlist = attribute config:name { \string }
 
- config-config-item-set =
 
-   element config:config-item-set {
 
-     config-config-item-set-attlist, config-items
 
-   }
 
- config-config-item-set-attlist = attribute config:name { \string }
 
- config-items =
 
-   (config-config-item
 
-    | config-config-item-set
 
-    | config-config-item-map-named
 
-    | config-config-item-map-indexed)+
 
- controls =
 
-   column-controls
 
-   | element form:password {
 
-       form-password-attlist, common-form-control-content
 
-     }
 
-   | element form:file { form-file-attlist, common-form-control-content }
 
-   | element form:fixed-text {
 
-       form-fixed-text-attlist, common-form-control-content
 
-     }
 
-   | element form:button {
 
-       form-button-attlist, common-form-control-content
 
-     }
 
-   | element form:image {
 
-       form-image-attlist, common-form-control-content
 
-     }
 
-   | element form:radio {
 
-       form-radio-attlist, common-form-control-content
 
-     }
 
-   | element form:frame {
 
-       form-frame-attlist, common-form-control-content
 
-     }
 
-   | element form:image-frame {
 
-       form-image-frame-attlist, common-form-control-content
 
-     }
 
-   | element form:hidden {
 
-       form-hidden-attlist, common-form-control-content
 
-     }
 
-   | element form:grid {
 
-       form-grid-attlist, common-form-control-content, form-column*
 
-     }
 
-   | element form:value-range {
 
-       form-value-range-attlist, common-form-control-content
 
-     }
 
-   | element form:generic-control {
 
-       form-generic-control-attlist, common-form-control-content
 
-     }
 
- coordinate = length
 
- countryCode = xsd:token { pattern = "[A-Za-z0-9]{1,8}" }
 
- currency-symbol-and-text =
 
-   number-currency-symbol,
 
-   number-text-with-fillchar
 
-   # https://issues.oasis-open.org/browse/OFFICE-3765
 
-   ?
 
- current-selected = attribute form:current-selected { boolean }?
 
- custom-shape-type = "non-primitive" | \string
 
- date = xsd:date
 
- dateOrDateTime = xsd:date | xsd:dateTime
 
- dateTime = xsd:dateTime
 
- db-application-connection-settings =
 
-   element db:application-connection-settings {
 
-     db-application-connection-settings-attlist,
 
-     db-table-filter?,
 
-     db-table-type-filter?,
 
-     db-data-source-settings?
 
-   }
 
- db-application-connection-settings-attlist =
 
-   attribute db:is-table-name-length-limited { boolean }?
 
-   & attribute db:enable-sql92-check { boolean }?
 
-   & attribute db:append-table-alias-name { boolean }?
 
-   & attribute db:ignore-driver-privileges { boolean }?
 
-   & attribute db:boolean-comparison-mode {
 
-       "equal-integer"
 
-       | "is-boolean"
 
-       | "equal-boolean"
 
-       | "equal-use-only-zero"
 
-     }?
 
-   & attribute db:use-catalog { boolean }?
 
-   & attribute db:max-row-count { integer }?
 
-   & attribute db:suppress-version-columns { boolean }?
 
- db-apply-command = attribute db:apply-command { boolean }?
 
- db-auto-increment =
 
-   element db:auto-increment { db-auto-increment-attlist, empty }
 
- db-auto-increment-attlist =
 
-   attribute db:additional-column-statement { \string }?
 
-   & attribute db:row-retrieving-statement { \string }?
 
- db-character-set =
 
-   element db:character-set { db-character-set-attlist, empty }
 
- db-character-set-attlist = attribute db:encoding { textEncoding }?
 
- db-column =
 
-   element db:column {
 
-     db-column-attlist,
 
-     common-db-object-name,
 
-     common-db-object-title,
 
-     common-db-object-description,
 
-     common-db-default-value
 
-   }
 
- db-column-attlist =
 
-   attribute db:visible { boolean }?
 
-   & attribute db:style-name { styleNameRef }?
 
-   & attribute db:default-cell-style-name { styleNameRef }?
 
- db-column-definition =
 
-   element db:column-definition {
 
-     db-column-definition-attlist, common-db-default-value
 
-   }
 
- db-column-definition-attlist =
 
-   attribute db:name { \string }
 
-   & attribute db:data-type { db-data-types }?
 
-   & attribute db:type-name { \string }?
 
-   & attribute db:precision { positiveInteger }?
 
-   & attribute db:scale { positiveInteger }?
 
-   & attribute db:is-nullable { "no-nulls" | "nullable" }?
 
-   & attribute db:is-empty-allowed { boolean }?
 
-   & attribute db:is-autoincrement { boolean }?
 
- db-column-definitions =
 
-   element db:column-definitions {
 
-     db-column-definitions-attlist, db-column-definition+
 
-   }
 
- db-column-definitions-attlist = empty
 
- db-columns = element db:columns { db-columns-attlist, db-column+ }
 
- db-columns-attlist = empty
 
- db-command = attribute db:command { \string }
 
- db-component =
 
-   element db:component {
 
-     db-component-attlist,
 
-     common-db-object-name,
 
-     common-db-object-title,
 
-     common-db-object-description,
 
-     (office-document | math-math)?
 
-   }
 
- db-component-attlist =
 
-   (attribute xlink:type { "simple" },
 
-    attribute xlink:href { anyIRI },
 
-    attribute xlink:show { "none" }?,
 
-    attribute xlink:actuate { "onRequest" }?)?
 
-   & attribute db:as-template { boolean }?
 
- db-component-collection =
 
-   element db:component-collection {
 
-     db-component-collection-attlist,
 
-     common-db-object-name,
 
-     common-db-object-title,
 
-     common-db-object-description,
 
-     (db-component | db-component-collection)*
 
-   }
 
- db-component-collection-attlist = empty
 
- db-connection-data =
 
-   element db:connection-data {
 
-     db-connection-data-attlist,
 
-     (db-database-description | db-connection-resource),
 
-     db-login?
 
-   }
 
- db-connection-data-attlist = empty
 
- db-connection-resource =
 
-   element db:connection-resource {
 
-     db-connection-resource-attlist, empty
 
-   }
 
- db-connection-resource-attlist =
 
-   attribute xlink:type { "simple" },
 
-   attribute xlink:href { anyIRI },
 
-   attribute xlink:show { "none" }?,
 
-   attribute xlink:actuate { "onRequest" }?
 
- db-data-source =
 
-   element db:data-source {
 
-     db-data-source-attlist,
 
-     db-connection-data,
 
-     db-driver-settings?,
 
-     db-application-connection-settings?
 
-   }
 
- db-data-source-attlist = empty
 
- db-data-source-setting =
 
-   element db:data-source-setting {
 
-     db-data-source-setting-attlist, db-data-source-setting-value+
 
-   }
 
- db-data-source-setting-attlist =
 
-   attribute db:data-source-setting-is-list { boolean }?
 
-   & attribute db:data-source-setting-name { \string }
 
-   & attribute db:data-source-setting-type {
 
-       db-data-source-setting-types
 
-     }
 
- db-data-source-setting-types =
 
-   "boolean" | "short" | "int" | "long" | "double" | "string"
 
- db-data-source-setting-value =
 
-   element db:data-source-setting-value {
 
-     db-data-source-setting-value-attlist, \string
 
-   }
 
- db-data-source-setting-value-attlist = empty
 
- db-data-source-settings =
 
-   element db:data-source-settings {
 
-     db-data-source-settings-attlist, db-data-source-setting+
 
-   }
 
- db-data-source-settings-attlist = empty
 
- db-data-types =
 
-   "bit"
 
-   | "boolean"
 
-   | "tinyint"
 
-   | "smallint"
 
-   | "integer"
 
-   | "bigint"
 
-   | "float"
 
-   | "real"
 
-   | "double"
 
-   | "numeric"
 
-   | "decimal"
 
-   | "char"
 
-   | "varchar"
 
-   | "longvarchar"
 
-   | "date"
 
-   | "time"
 
-   | "timestmp"
 
-   | "binary"
 
-   | "varbinary"
 
-   | "longvarbinary"
 
-   | "sqlnull"
 
-   | "other"
 
-   | "object"
 
-   | "distinct"
 
-   | "struct"
 
-   | "array"
 
-   | "blob"
 
-   | "clob"
 
-   | "ref"
 
- db-database-description =
 
-   element db:database-description {
 
-     db-database-description-attlist,
 
-     (db-file-based-database | db-server-database)
 
-   }
 
- db-database-description-attlist = empty
 
- db-delimiter = element db:delimiter { db-delimiter-attlist, empty }
 
- db-delimiter-attlist =
 
-   attribute db:field { \string }?
 
-   & attribute db:string { \string }?
 
-   & attribute db:decimal { \string }?
 
-   & attribute db:thousand { \string }?
 
- db-driver-settings =
 
-   element db:driver-settings {
 
-     db-driver-settings-attlist,
 
-     db-auto-increment?,
 
-     db-delimiter?,
 
-     db-character-set?,
 
-     db-table-settings?
 
-   }
 
- db-driver-settings-attlist =
 
-   db-show-deleted
 
-   & attribute db:system-driver-settings { \string }?
 
-   & attribute db:base-dn { \string }?
 
-   & db-is-first-row-header-line
 
-   & attribute db:parameter-name-substitution { boolean }?
 
- db-file-based-database =
 
-   element db:file-based-database { db-file-based-database-attlist }
 
- db-file-based-database-attlist =
 
-   attribute xlink:type { "simple" }
 
-   & attribute xlink:href { anyIRI }
 
-   & attribute db:media-type { \string }
 
-   & attribute db:extension { \string }?
 
- db-filter-statement =
 
-   element db:filter-statement { db-command, db-apply-command, empty }
 
- db-forms =
 
-   element db:forms {
 
-     db-forms-attlist, (db-component | db-component-collection)*
 
-   }
 
- db-forms-attlist = empty
 
- db-host-and-port =
 
-   attribute db:hostname { \string },
 
-   attribute db:port { positiveInteger }?
 
- db-index = element db:index { db-index-attlist, db-index-columns+ }
 
- db-index-attlist =
 
-   attribute db:name { \string }
 
-   & attribute db:catalog-name { \string }?
 
-   & attribute db:is-unique { boolean }?
 
-   & attribute db:is-clustered { boolean }?
 
- db-index-column =
 
-   element db:index-column { db-index-column-attlist, empty }
 
- db-index-column-attlist =
 
-   attribute db:name { \string }
 
-   & attribute db:is-ascending { boolean }?
 
- db-index-columns = element db:index-columns { db-index-column+ }
 
- db-indices = element db:indices { db-indices-attlist, db-index+ }
 
- db-indices-attlist = empty
 
- db-is-first-row-header-line =
 
-   attribute db:is-first-row-header-line { boolean }?
 
- db-key = element db:key { db-key-attlist, db-key-columns+ }
 
- db-key-attlist =
 
-   attribute db:name { \string }?
 
-   & attribute db:type { "primary" | "unique" | "foreign" }
 
-   & attribute db:referenced-table-name { \string }?
 
-   & attribute db:update-rule {
 
-       "cascade" | "restrict" | "set-null" | "no-action" | "set-default"
 
-     }?
 
-   & attribute db:delete-rule {
 
-       "cascade" | "restrict" | "set-null" | "no-action" | "set-default"
 
-     }?
 
- db-key-column = element db:key-column { db-key-column-attlist, empty }
 
- db-key-column-attlist =
 
-   attribute db:name { \string }?
 
-   & attribute db:related-column-name { \string }?
 
- db-key-columns =
 
-   element db:key-columns { db-key-columns-attlist, db-key-column+ }
 
- db-key-columns-attlist = empty
 
- db-keys = element db:keys { db-keys-attlist, db-key+ }
 
- db-keys-attlist = empty
 
- db-local-socket-name = attribute db:local-socket { \string }?
 
- db-login = element db:login { db-login-attlist, empty }
 
- db-login-attlist =
 
-   (attribute db:user-name { \string }
 
-    | attribute db:use-system-user { boolean })?
 
-   & attribute db:is-password-required { boolean }?
 
-   & attribute db:login-timeout { positiveInteger }?
 
- db-order-statement =
 
-   element db:order-statement { db-command, db-apply-command, empty }
 
- db-queries =
 
-   element db:queries {
 
-     db-queries-attlist, (db-query | db-query-collection)*
 
-   }
 
- db-queries-attlist = empty
 
- db-query =
 
-   element db:query {
 
-     db-query-attlist,
 
-     common-db-object-name,
 
-     common-db-object-title,
 
-     common-db-object-description,
 
-     common-db-table-style-name,
 
-     db-order-statement?,
 
-     db-filter-statement?,
 
-     db-columns?,
 
-     db-update-table?
 
-   }
 
- db-query-attlist =
 
-   attribute db:command { \string }
 
-   & attribute db:escape-processing { boolean }?
 
- db-query-collection =
 
-   element db:query-collection {
 
-     db-query-collection-attlist,
 
-     common-db-object-name,
 
-     common-db-object-title,
 
-     common-db-object-description,
 
-     (db-query | db-query-collection)*
 
-   }
 
- db-query-collection-attlist = empty
 
- db-reports =
 
-   element db:reports {
 
-     db-reports-attlist, (db-component | db-component-collection)*
 
-   }
 
- db-reports-attlist = empty
 
- db-schema-definition =
 
-   element db:schema-definition {
 
-     db-schema-definition-attlist, db-table-definitions
 
-   }
 
- db-schema-definition-attlist = empty
 
- db-server-database =
 
-   element db:server-database { db-server-database-attlist, empty }
 
- db-server-database-attlist =
 
-   attribute db:type { namespacedToken }
 
-   & (db-host-and-port | db-local-socket-name)
 
-   & attribute db:database-name { \string }?
 
- db-show-deleted = attribute db:show-deleted { boolean }?
 
- db-table-definition =
 
-   element db:table-definition {
 
-     common-db-table-name-attlist,
 
-     db-table-definition-attlist,
 
-     db-column-definitions,
 
-     db-keys?,
 
-     db-indices?
 
-   }
 
- db-table-definition-attlist = attribute db:type { \string }?
 
- db-table-definitions =
 
-   element db:table-definitions {
 
-     db-table-definitions-attlist, db-table-definition*
 
-   }
 
- db-table-definitions-attlist = empty
 
- db-table-exclude-filter =
 
-   element db:table-exclude-filter {
 
-     db-table-exclude-filter-attlist, db-table-filter-pattern+
 
-   }
 
- db-table-exclude-filter-attlist = empty
 
- db-table-filter =
 
-   element db:table-filter {
 
-     db-table-filter-attlist,
 
-     db-table-include-filter?,
 
-     db-table-exclude-filter?
 
-   }
 
- db-table-filter-attlist = empty
 
- db-table-filter-pattern =
 
-   element db:table-filter-pattern {
 
-     db-table-filter-pattern-attlist, \string
 
-   }
 
- db-table-filter-pattern-attlist = empty
 
- db-table-include-filter =
 
-   element db:table-include-filter {
 
-     db-table-include-filter-attlist, db-table-filter-pattern+
 
-   }
 
- db-table-include-filter-attlist = empty
 
- db-table-presentation =
 
-   element db:table-representation {
 
-     db-table-presentation-attlist,
 
-     common-db-table-name-attlist,
 
-     common-db-object-title,
 
-     common-db-object-description,
 
-     common-db-table-style-name,
 
-     db-order-statement?,
 
-     db-filter-statement?,
 
-     db-columns?
 
-   }
 
- db-table-presentation-attlist = empty
 
- db-table-presentations =
 
-   element db:table-representations {
 
-     db-table-presentations-attlist, db-table-presentation*
 
-   }
 
- db-table-presentations-attlist = empty
 
- db-table-setting =
 
-   element db:table-setting {
 
-     db-table-setting-attlist, db-delimiter?, db-character-set?, empty
 
-   }
 
- db-table-setting-attlist = db-is-first-row-header-line, db-show-deleted
 
- db-table-settings = element db:table-settings { db-table-setting* }
 
- db-table-type = element db:table-type { db-table-type-attlist, \string }
 
- db-table-type-attlist = empty
 
- db-table-type-filter =
 
-   element db:table-type-filter {
 
-     db-table-type-filter-attlist, db-table-type*
 
-   }
 
- db-table-type-filter-attlist = empty
 
- db-update-table =
 
-   element db:update-table { common-db-table-name-attlist }
 
- dc-creator = element dc:creator { \string }
 
- dc-date = element dc:date { dateTime }
 
- distance = length
 
- double = xsd:double
 
- dr3d-cube =
 
-   element dr3d:cube {
 
-     dr3d-cube-attlist,
 
-     common-draw-z-index-attlist,
 
-     common-draw-id-attlist,
 
-     common-draw-layer-name-attlist,
 
-     common-draw-style-name-attlist,
 
-     common-dr3d-transform-attlist,
 
-     empty
 
-   }
 
- dr3d-cube-attlist =
 
-   attribute dr3d:min-edge { vector3D }?,
 
-   attribute dr3d:max-edge { vector3D }?
 
- dr3d-extrude =
 
-   element dr3d:extrude {
 
-     common-draw-path-data-attlist,
 
-     common-draw-viewbox-attlist,
 
-     common-draw-id-attlist,
 
-     common-draw-z-index-attlist,
 
-     common-draw-layer-name-attlist,
 
-     common-draw-style-name-attlist,
 
-     common-dr3d-transform-attlist,
 
-     empty
 
-   }
 
- dr3d-light = element dr3d:light { dr3d-light-attlist, empty }
 
- dr3d-light-attlist =
 
-   attribute dr3d:diffuse-color { color }?
 
-   & attribute dr3d:direction { vector3D }
 
-   & attribute dr3d:enabled { boolean }?
 
-   & attribute dr3d:specular { boolean }?
 
- dr3d-rotate =
 
-   element dr3d:rotate {
 
-     common-draw-viewbox-attlist,
 
-     common-draw-path-data-attlist,
 
-     common-draw-z-index-attlist,
 
-     common-draw-id-attlist,
 
-     common-draw-layer-name-attlist,
 
-     common-draw-style-name-attlist,
 
-     common-dr3d-transform-attlist,
 
-     empty
 
-   }
 
- dr3d-scene =
 
-   element dr3d:scene {
 
-     dr3d-scene-attlist,
 
-     common-draw-position-attlist,
 
-     common-draw-size-attlist,
 
-     common-draw-style-name-attlist,
 
-     common-draw-z-index-attlist,
 
-     common-draw-id-attlist,
 
-     common-draw-layer-name-attlist,
 
-     common-text-spreadsheet-shape-attlist,
 
-     common-dr3d-transform-attlist,
 
-     common-draw-caption-id-attlist,
 
-     svg-title?,
 
-     svg-desc?,
 
-     dr3d-light*,
 
-     shapes3d*,
 
-     draw-glue-point*
 
-   }
 
- dr3d-scene-attlist =
 
-   attribute dr3d:vrp { vector3D }?
 
-   & attribute dr3d:vpn { vector3D }?
 
-   & attribute dr3d:vup { vector3D }?
 
-   & attribute dr3d:projection { "parallel" | "perspective" }?
 
-   & attribute dr3d:distance { length }?
 
-   & attribute dr3d:focal-length { length }?
 
-   & attribute dr3d:shadow-slant { angle }?
 
-   & attribute dr3d:shade-mode {
 
-       "flat" | "phong" | "gouraud" | "draft"
 
-     }?
 
-   & attribute dr3d:ambient-color { color }?
 
-   & attribute dr3d:lighting-mode { boolean }?
 
- dr3d-sphere =
 
-   element dr3d:sphere {
 
-     dr3d-sphere-attlist,
 
-     common-draw-z-index-attlist,
 
-     common-draw-id-attlist,
 
-     common-draw-layer-name-attlist,
 
-     common-draw-style-name-attlist,
 
-     common-dr3d-transform-attlist,
 
-     empty
 
-   }
 
- dr3d-sphere-attlist =
 
-   attribute dr3d:center { vector3D }?
 
-   & attribute dr3d:size { vector3D }?
 
- draw-a = element draw:a { draw-a-attlist, shape-instance }
 
- draw-a-attlist =
 
-   attribute xlink:type { "simple" }
 
-   & attribute xlink:href { anyIRI }
 
-   & attribute xlink:actuate { "onRequest" }?
 
-   & attribute office:target-frame-name { targetFrameName }?
 
-   & attribute xlink:show { "new" | "replace" }?
 
-   & attribute office:name { \string }?
 
-   & attribute office:title { \string }?
 
-   & attribute office:server-map { boolean }?
 
-   & xml-id?
 
- draw-applet =
 
-   element draw:applet {
 
-     draw-applet-attlist, common-draw-data-attlist?, draw-param*
 
-   }
 
- draw-applet-attlist =
 
-   attribute draw:code { \string }?
 
-   & attribute draw:object { \string }?
 
-   & attribute draw:archive { \string }?
 
-   & attribute draw:may-script { boolean }?
 
-   & xml-id?
 
- draw-area-circle =
 
-   element draw:area-circle {
 
-     common-draw-area-attlist,
 
-     attribute svg:cx { coordinate },
 
-     attribute svg:cy { coordinate },
 
-     attribute svg:r { length },
 
-     svg-title?,
 
-     svg-desc?,
 
-     office-event-listeners?
 
-   }
 
- draw-area-polygon =
 
-   element draw:area-polygon {
 
-     common-draw-area-attlist,
 
-     attribute svg:x { coordinate },
 
-     attribute svg:y { coordinate },
 
-     attribute svg:width { length },
 
-     attribute svg:height { length },
 
-     common-draw-viewbox-attlist,
 
-     common-draw-points-attlist,
 
-     svg-title?,
 
-     svg-desc?,
 
-     office-event-listeners?
 
-   }
 
- draw-area-rectangle =
 
-   element draw:area-rectangle {
 
-     common-draw-area-attlist,
 
-     attribute svg:x { coordinate },
 
-     attribute svg:y { coordinate },
 
-     attribute svg:width { length },
 
-     attribute svg:height { length },
 
-     svg-title?,
 
-     svg-desc?,
 
-     office-event-listeners?
 
-   }
 
- draw-caption =
 
-   element draw:caption {
 
-     draw-caption-attlist,
 
-     common-draw-position-attlist,
 
-     common-draw-size-attlist,
 
-     common-draw-shape-with-text-and-styles-attlist,
 
-     common-draw-caption-id-attlist,
 
-     svg-title?,
 
-     svg-desc?,
 
-     office-event-listeners?,
 
-     draw-glue-point*,
 
-     draw-text
 
-   }
 
- draw-caption-attlist =
 
-   (attribute draw:caption-point-x { coordinate },
 
-    attribute draw:caption-point-y { coordinate })?
 
-   & attribute draw:corner-radius { nonNegativeLength }?
 
- draw-circle =
 
-   element draw:circle {
 
-     ((draw-circle-attlist, common-draw-circle-ellipse-pos-attlist)
 
-      | (common-draw-position-attlist, common-draw-size-attlist)),
 
-     common-draw-circle-ellipse-attlist,
 
-     common-draw-shape-with-text-and-styles-attlist,
 
-     common-draw-caption-id-attlist,
 
-     svg-title?,
 
-     svg-desc?,
 
-     office-event-listeners?,
 
-     draw-glue-point*,
 
-     draw-text
 
-   }
 
- draw-circle-attlist = attribute svg:r { length }
 
- draw-connector =
 
-   element draw:connector {
 
-     draw-connector-attlist,
 
-     common-draw-shape-with-text-and-styles-attlist,
 
-     common-draw-caption-id-attlist,
 
-     common-draw-viewbox-attlist,
 
-     svg-title?,
 
-     svg-desc?,
 
-     office-event-listeners?,
 
-     draw-glue-point*,
 
-     draw-text
 
-   }
 
- draw-connector-attlist =
 
-   attribute draw:type { "standard" | "lines" | "line" | "curve" }?
 
-   & (attribute svg:x1 { coordinate },
 
-      attribute svg:y1 { coordinate })?
 
-   & attribute draw:start-shape { IDREF }?
 
-   & attribute draw:start-glue-point { nonNegativeInteger }?
 
-   & (attribute svg:x2 { coordinate },
 
-      attribute svg:y2 { coordinate })?
 
-   & attribute draw:end-shape { IDREF }?
 
-   & attribute draw:end-glue-point { nonNegativeInteger }?
 
-   & attribute draw:line-skew {
 
-       list { length, (length, length?)? }
 
-     }?
 
-   & attribute svg:d { pathData }?
 
- draw-contour-path =
 
-   element draw:contour-path {
 
-     common-contour-attlist,
 
-     common-draw-size-attlist,
 
-     common-draw-viewbox-attlist,
 
-     common-draw-path-data-attlist,
 
-     empty
 
-   }
 
- draw-contour-polygon =
 
-   element draw:contour-polygon {
 
-     common-contour-attlist,
 
-     common-draw-size-attlist,
 
-     common-draw-viewbox-attlist,
 
-     common-draw-points-attlist,
 
-     empty
 
-   }
 
- draw-control =
 
-   element draw:control {
 
-     draw-control-attlist,
 
-     common-draw-position-attlist,
 
-     common-draw-size-attlist,
 
-     common-draw-shape-with-text-and-styles-attlist,
 
-     common-draw-caption-id-attlist,
 
-     svg-title?,
 
-     svg-desc?,
 
-     draw-glue-point*
 
-   }
 
- draw-control-attlist = attribute draw:control { IDREF }
 
- draw-custom-shape =
 
-   element draw:custom-shape {
 
-     draw-custom-shape-attlist,
 
-     common-draw-position-attlist,
 
-     common-draw-size-attlist,
 
-     common-draw-shape-with-text-and-styles-attlist,
 
-     common-draw-caption-id-attlist,
 
-     svg-title?,
 
-     svg-desc?,
 
-     office-event-listeners?,
 
-     draw-glue-point*,
 
-     draw-text,
 
-     draw-enhanced-geometry?
 
-   }
 
- draw-custom-shape-attlist =
 
-   attribute draw:engine { namespacedToken }?
 
-   & attribute draw:data { \string }?
 
- draw-ellipse =
 
-   element draw:ellipse {
 
-     ((draw-ellipse-attlist, common-draw-circle-ellipse-pos-attlist)
 
-      | (common-draw-position-attlist, common-draw-size-attlist)),
 
-     common-draw-circle-ellipse-attlist,
 
-     common-draw-shape-with-text-and-styles-attlist,
 
-     common-draw-caption-id-attlist,
 
-     svg-title?,
 
-     svg-desc?,
 
-     office-event-listeners?,
 
-     draw-glue-point*,
 
-     draw-text
 
-   }
 
- draw-ellipse-attlist =
 
-   attribute svg:rx { length },
 
-   attribute svg:ry { length }
 
- draw-enhanced-geometry =
 
-   element draw:enhanced-geometry {
 
-     draw-enhanced-geometry-attlist, draw-equation*, draw-handle*
 
-   }
 
- draw-enhanced-geometry-attlist =
 
-   attribute draw:type { custom-shape-type }?
 
-   & attribute svg:viewBox {
 
-       list { integer, integer, integer, integer }
 
-     }?
 
-   & attribute draw:mirror-vertical { boolean }?
 
-   & attribute draw:mirror-horizontal { boolean }?
 
-   & attribute draw:text-rotate-angle { angle }?
 
-   & attribute draw:extrusion-allowed { boolean }?
 
-   & attribute draw:text-path-allowed { boolean }?
 
-   & attribute draw:concentric-gradient-fill-allowed { boolean }?
 
-   & attribute draw:extrusion { boolean }?
 
-   & attribute draw:extrusion-brightness { zeroToHundredPercent }?
 
-   & attribute draw:extrusion-depth {
 
-       list { length, double }
 
-     }?
 
-   & attribute draw:extrusion-diffusion { percent }?
 
-   & attribute draw:extrusion-number-of-line-segments { integer }?
 
-   & attribute draw:extrusion-light-face { boolean }?
 
-   & attribute draw:extrusion-first-light-harsh { boolean }?
 
-   & attribute draw:extrusion-second-light-harsh { boolean }?
 
-   & attribute draw:extrusion-first-light-level { zeroToHundredPercent }?
 
-   & attribute draw:extrusion-second-light-level {
 
-       zeroToHundredPercent
 
-     }?
 
-   & attribute draw:extrusion-first-light-direction { vector3D }?
 
-   & attribute draw:extrusion-second-light-direction { vector3D }?
 
-   & attribute draw:extrusion-metal { boolean }?
 
-   & attribute dr3d:shade-mode {
 
-       "flat" | "phong" | "gouraud" | "draft"
 
-     }?
 
-   & attribute draw:extrusion-rotation-angle {
 
-       list { angle, angle }
 
-     }?
 
-   & attribute draw:extrusion-rotation-center { vector3D }?
 
-   & attribute draw:extrusion-shininess { zeroToHundredPercent }?
 
-   & attribute draw:extrusion-skew {
 
-       list { double, angle }
 
-     }?
 
-   & attribute draw:extrusion-specularity { zeroToHundredPercent }?
 
-   & attribute dr3d:projection { "parallel" | "perspective" }?
 
-   & attribute draw:extrusion-viewpoint { point3D }?
 
-   & attribute draw:extrusion-origin {
 
-       list { extrusionOrigin, extrusionOrigin }
 
-     }?
 
-   & attribute draw:extrusion-color { boolean }?
 
-   & attribute draw:enhanced-path { \string }?
 
-   & attribute draw:path-stretchpoint-x { double }?
 
-   & attribute draw:path-stretchpoint-y { double }?
 
-   & attribute draw:text-areas { \string }?
 
-   & attribute draw:glue-points { \string }?
 
-   & attribute draw:glue-point-type {
 
-       "none" | "segments" | "rectangle"
 
-     }?
 
-   & attribute draw:glue-point-leaving-directions { \string }?
 
-   & attribute draw:text-path { boolean }?
 
-   & attribute draw:text-path-mode { "normal" | "path" | "shape" }?
 
-   & attribute draw:text-path-scale { "path" | "shape" }?
 
-   & attribute draw:text-path-same-letter-heights { boolean }?
 
-   & attribute draw:modifiers { \string }?
 
- draw-equation = element draw:equation { draw-equation-attlist, empty }
 
- draw-equation-attlist =
 
-   attribute draw:name { \string }?
 
-   & attribute draw:formula { \string }?
 
- draw-fill-image =
 
-   element draw:fill-image {
 
-     draw-fill-image-attlist,
 
-     # XLink duplicate declaration removed. see common-draw-data-attlist
 
-     ((common-draw-data-attlist, empty) | office-binary-data)
 
-     # https://issues.oasis-open.org/browse/OFFICE-3933
 
-   }
 
- draw-fill-image-attlist =
 
-   attribute draw:name { styleName }
 
-   & attribute draw:display-name { \string }?
 
-   & attribute svg:width { length }?
 
-   & attribute svg:height { length }?
 
- draw-floating-frame =
 
-   element draw:floating-frame {
 
-     draw-floating-frame-attlist, common-draw-data-attlist
 
-   }
 
- draw-floating-frame-attlist =
 
-   attribute draw:frame-name { \string }?
 
-   & xml-id?
 
- draw-frame =
 
-   element draw:frame {
 
-     common-draw-shape-with-text-and-styles-attlist,
 
-     common-draw-position-attlist,
 
-     common-draw-rel-size-attlist,
 
-     common-draw-caption-id-attlist,
 
-     presentation-shape-attlist,
 
-     draw-frame-attlist,
 
-     (draw-text-box
 
-      | draw-image
 
-      | draw-object
 
-      | draw-object-ole
 
-      | draw-applet
 
-      | draw-floating-frame
 
-      | draw-plugin
 
-      | table-table)*,
 
-     office-event-listeners?,
 
-     draw-glue-point*,
 
-     draw-image-map?,
 
-     svg-title?,
 
-     svg-desc?,
 
-     (draw-contour-polygon | draw-contour-path)?
 
-   }
 
- draw-frame-attlist = attribute draw:copy-of { \string }?
 
- draw-g =
 
-   element draw:g {
 
-     draw-g-attlist,
 
-     common-draw-z-index-attlist,
 
-     common-draw-name-attlist,
 
-     common-draw-id-attlist,
 
-     common-draw-style-name-attlist,
 
-     common-text-spreadsheet-shape-attlist,
 
-     common-draw-caption-id-attlist,
 
-     svg-title?,
 
-     svg-desc?,
 
-     office-event-listeners?,
 
-     draw-glue-point*,
 
-     shape*
 
-   }
 
- draw-g-attlist = attribute svg:y { coordinate }?
 
- draw-glue-point =
 
-   element draw:glue-point { draw-glue-point-attlist, empty }
 
- draw-glue-point-attlist =
 
-   attribute draw:id { nonNegativeInteger }
 
-   & attribute svg:x { distance | percent }
 
-   & attribute svg:y { distance | percent }
 
-   & attribute draw:align {
 
-       "top-left"
 
-       | "top"
 
-       | "top-right"
 
-       | "left"
 
-       | "center"
 
-       | "right"
 
-       | "bottom-left"
 
-       | "bottom-right"
 
-     }?
 
-   & attribute draw:escape-direction {
 
-       "auto"
 
-       | "left"
 
-       | "right"
 
-       | "up"
 
-       | "down"
 
-       | "horizontal"
 
-       | "vertical"
 
-     }
 
- draw-gradient =
 
-   element draw:gradient {
 
-     common-draw-gradient-attlist, draw-gradient-attlist, empty
 
-   }
 
- draw-gradient-attlist =
 
-   attribute draw:start-color { color }?
 
-   & attribute draw:end-color { color }?
 
-   & attribute draw:start-intensity { zeroToHundredPercent }?
 
-   & attribute draw:end-intensity { zeroToHundredPercent }?
 
- draw-handle = element draw:handle { draw-handle-attlist, empty }
 
- draw-handle-attlist =
 
-   attribute draw:handle-mirror-vertical { boolean }?
 
-   & attribute draw:handle-mirror-horizontal { boolean }?
 
-   & attribute draw:handle-switched { boolean }?
 
-   & attribute draw:handle-position { \string }
 
-   & attribute draw:handle-range-x-minimum { \string }?
 
-   & attribute draw:handle-range-x-maximum { \string }?
 
-   & attribute draw:handle-range-y-minimum { \string }?
 
-   & attribute draw:handle-range-y-maximum { \string }?
 
-   & attribute draw:handle-polar { \string }?
 
-   & attribute draw:handle-radius-range-minimum { \string }?
 
-   & attribute draw:handle-radius-range-maximum { \string }?
 
- draw-hatch = element draw:hatch { draw-hatch-attlist, empty }
 
- draw-hatch-attlist =
 
-   attribute draw:name { styleName }
 
-   & attribute draw:display-name { \string }?
 
-   & attribute draw:style { "single" | "double" | "triple" }
 
-   & attribute draw:color { color }?
 
-   & attribute draw:distance { length }?
 
-   & attribute draw:rotation { angle }?
 
- draw-image =
 
-   element draw:image {
 
-     draw-image-attlist,
 
-     (common-draw-data-attlist | office-binary-data),
 
-     draw-text
 
-   }
 
- draw-image-attlist =
 
-   attribute draw:filter-name { \string }?
 
-   & common-draw-mime-type-attlist
 
-   & # https://issues.oasis-open.org/browse/OFFICE-3943
 
-     xml-id?
 
- draw-image-map =
 
-   element draw:image-map {
 
-     (draw-area-rectangle | draw-area-circle | draw-area-polygon)*
 
-   }
 
- draw-layer =
 
-   element draw:layer { draw-layer-attlist, svg-title?, svg-desc? }
 
- draw-layer-attlist =
 
-   attribute draw:name { \string }
 
-   & attribute draw:protected { boolean }?
 
-   & attribute draw:display { "always" | "screen" | "printer" | "none" }?
 
- draw-layer-set = element draw:layer-set { draw-layer* }
 
- draw-line =
 
-   element draw:line {
 
-     draw-line-attlist,
 
-     common-draw-shape-with-text-and-styles-attlist,
 
-     common-draw-caption-id-attlist,
 
-     svg-title?,
 
-     svg-desc?,
 
-     office-event-listeners?,
 
-     draw-glue-point*,
 
-     draw-text
 
-   }
 
- draw-line-attlist =
 
-   attribute svg:x1 { coordinate }
 
-   & attribute svg:y1 { coordinate }
 
-   & attribute svg:x2 { coordinate }
 
-   & attribute svg:y2 { coordinate }
 
- draw-marker =
 
-   element draw:marker {
 
-     draw-marker-attlist,
 
-     common-draw-viewbox-attlist,
 
-     common-draw-path-data-attlist,
 
-     empty
 
-   }
 
- draw-marker-attlist =
 
-   attribute draw:name { styleName }
 
-   & attribute draw:display-name { \string }?
 
- draw-measure =
 
-   element draw:measure {
 
-     draw-measure-attlist,
 
-     common-draw-shape-with-text-and-styles-attlist,
 
-     common-draw-caption-id-attlist,
 
-     svg-title?,
 
-     svg-desc?,
 
-     office-event-listeners?,
 
-     draw-glue-point*,
 
-     draw-text
 
-   }
 
- draw-measure-attlist =
 
-   attribute svg:x1 { coordinate }
 
-   & attribute svg:y1 { coordinate }
 
-   & attribute svg:x2 { coordinate }
 
-   & attribute svg:y2 { coordinate }
 
- draw-object =
 
-   element draw:object {
 
-     draw-object-attlist,
 
-     (common-draw-data-attlist | office-document | math-math)
 
-   }
 
- draw-object-attlist =
 
-   attribute draw:notify-on-update-of-ranges {
 
-     cellRangeAddressList | \string
 
-   }?
 
-   & xml-id?
 
- draw-object-ole =
 
-   element draw:object-ole {
 
-     draw-object-ole-attlist,
 
-     (common-draw-data-attlist | office-binary-data)
 
-   }
 
- draw-object-ole-attlist =
 
-   attribute draw:class-id { \string }?
 
-   & xml-id?
 
- draw-opacity =
 
-   element draw:opacity {
 
-     common-draw-gradient-attlist, draw-opacity-attlist, empty
 
-   }
 
- draw-opacity-attlist =
 
-   attribute draw:start { zeroToHundredPercent }?,
 
-   attribute draw:end { zeroToHundredPercent }?
 
- draw-page =
 
-   element draw:page {
 
-     common-presentation-header-footer-attlist,
 
-     draw-page-attlist,
 
-     svg-title?,
 
-     svg-desc?,
 
-     draw-layer-set?,
 
-     office-forms?,
 
-     shape*,
 
-     (presentation-animations | animation-element)?,
 
-     presentation-notes?
 
-   }
 
- draw-page-attlist =
 
-   attribute draw:name { \string }?
 
-   & attribute draw:style-name { styleNameRef }?
 
-   & attribute draw:master-page-name { styleNameRef }
 
-   & attribute presentation:presentation-page-layout-name {
 
-       styleNameRef
 
-     }?
 
-   & (xml-id,
 
-      attribute draw:id { NCName }?)?
 
-   & attribute draw:nav-order { IDREFS }?
 
- draw-page-thumbnail =
 
-   element draw:page-thumbnail {
 
-     draw-page-thumbnail-attlist,
 
-     common-draw-position-attlist,
 
-     common-draw-size-attlist,
 
-     presentation-shape-attlist,
 
-     common-draw-shape-with-styles-attlist,
 
-     common-draw-caption-id-attlist,
 
-     svg-title?,
 
-     svg-desc?
 
-   }
 
- draw-page-thumbnail-attlist =
 
-   attribute draw:page-number { positiveInteger }?
 
- draw-param = element draw:param { draw-param-attlist, empty }
 
- draw-param-attlist =
 
-   attribute draw:name { \string }?
 
-   & attribute draw:value { \string }?
 
- draw-path =
 
-   element draw:path {
 
-     common-draw-path-data-attlist,
 
-     common-draw-position-attlist,
 
-     common-draw-size-attlist,
 
-     common-draw-viewbox-attlist,
 
-     common-draw-shape-with-text-and-styles-attlist,
 
-     common-draw-caption-id-attlist,
 
-     svg-title?,
 
-     svg-desc?,
 
-     office-event-listeners?,
 
-     draw-glue-point*,
 
-     draw-text
 
-   }
 
- draw-plugin =
 
-   element draw:plugin {
 
-     draw-plugin-attlist, common-draw-data-attlist, draw-param*
 
-   }
 
- draw-plugin-attlist = common-draw-mime-type-attlist & xml-id?
 
- # https://issues.oasis-open.org/browse/OFFICE-3943
 
- draw-polygon =
 
-   element draw:polygon {
 
-     common-draw-points-attlist,
 
-     common-draw-position-attlist,
 
-     common-draw-size-attlist,
 
-     common-draw-viewbox-attlist,
 
-     common-draw-shape-with-text-and-styles-attlist,
 
-     common-draw-caption-id-attlist,
 
-     svg-title?,
 
-     svg-desc?,
 
-     office-event-listeners?,
 
-     draw-glue-point*,
 
-     draw-text
 
-   }
 
- draw-polyline =
 
-   element draw:polyline {
 
-     common-draw-points-attlist,
 
-     common-draw-position-attlist,
 
-     common-draw-size-attlist,
 
-     common-draw-viewbox-attlist,
 
-     common-draw-shape-with-text-and-styles-attlist,
 
-     common-draw-caption-id-attlist,
 
-     svg-title?,
 
-     svg-desc?,
 
-     office-event-listeners?,
 
-     draw-glue-point*,
 
-     draw-text
 
-   }
 
- draw-rect =
 
-   element draw:rect {
 
-     draw-rect-attlist,
 
-     common-draw-position-attlist,
 
-     common-draw-size-attlist,
 
-     common-draw-shape-with-text-and-styles-attlist,
 
-     common-draw-caption-id-attlist,
 
-     svg-title?,
 
-     svg-desc?,
 
-     office-event-listeners?,
 
-     draw-glue-point*,
 
-     draw-text
 
-   }
 
- draw-rect-attlist =
 
-   attribute draw:corner-radius { nonNegativeLength }?
 
-   | (attribute svg:rx { nonNegativeLength }?,
 
-      attribute svg:ry { nonNegativeLength }?)
 
- draw-regular-polygon =
 
-   element draw:regular-polygon {
 
-     draw-regular-polygon-attlist,
 
-     common-draw-position-attlist,
 
-     common-draw-size-attlist,
 
-     common-draw-shape-with-text-and-styles-attlist,
 
-     common-draw-caption-id-attlist,
 
-     svg-title?,
 
-     svg-desc?,
 
-     office-event-listeners?,
 
-     draw-glue-point*,
 
-     draw-text
 
-   }
 
- draw-regular-polygon-attlist =
 
-   (attribute draw:concave { "false" }
 
-    | (attribute draw:concave { "true" },
 
-       draw-regular-polygon-sharpness-attlist))
 
-   & attribute draw:corners { positiveInteger }
 
- draw-regular-polygon-sharpness-attlist =
 
-   attribute draw:sharpness { percent }
 
- draw-stroke-dash =
 
-   element draw:stroke-dash { draw-stroke-dash-attlist, empty }
 
- draw-stroke-dash-attlist =
 
-   attribute draw:name { styleName }
 
-   & attribute draw:display-name { \string }?
 
-   & attribute draw:style { "rect" | "round" }?
 
-   & attribute draw:dots1 { integer }?
 
-   & attribute draw:dots1-length { length | percent }?
 
-   & attribute draw:dots2 { integer }?
 
-   & attribute draw:dots2-length { length | percent }?
 
-   & attribute draw:distance { length | percent }?
 
- draw-text = (text-p | text-list)*
 
- draw-text-box =
 
-   element draw:text-box { draw-text-box-attlist, text-content* }
 
- draw-text-box-attlist =
 
-   attribute draw:chain-next-name { \string }?
 
-   & attribute draw:corner-radius { nonNegativeLength }?
 
-   & attribute fo:min-height { length | percent }?
 
-   & attribute fo:min-width { length | percent }?
 
-   & attribute fo:max-height { length | percent }?
 
-   & attribute fo:max-width { length | percent }?
 
-   & (xml-id,
 
-      attribute text:id { NCName }?)?
 
- dropdown = attribute form:dropdown { boolean }?
 
- duration = xsd:duration
 
- extrusionOrigin =
 
-   xsd:double { minInclusive = "-0.5" maxInclusive = "0.5" }
 
- fontFamilyGeneric =
 
-   "roman" | "swiss" | "modern" | "decorative" | "script" | "system"
 
- fontPitch = "fixed" | "variable"
 
- fontStyle = "normal" | "italic" | "oblique"
 
- fontVariant = "normal" | "small-caps"
 
- fontWeight =
 
-   "normal"
 
-   | "bold"
 
-   | "100"
 
-   | "200"
 
-   | "300"
 
-   | "400"
 
-   | "500"
 
-   | "600"
 
-   | "700"
 
-   | "800"
 
-   | "900"
 
- for = attribute form:for { \string }?
 
- form-button-attlist =
 
-   form-control-attlist
 
-   & button-type
 
-   & common-disabled-attlist
 
-   & label
 
-   & image-data
 
-   & common-printable-attlist
 
-   & common-tab-attlist
 
-   & target-frame
 
-   & target-location
 
-   & common-title-attlist
 
-   & common-value-attlist
 
-   & common-form-relative-image-position-attlist
 
-   & common-repeat
 
-   & common-delay-for-repeat
 
-   & attribute form:default-button { boolean }?
 
-   & attribute form:toggle { boolean }?
 
-   & attribute form:focus-on-click { boolean }?
 
-   & attribute form:xforms-submission { \string }?
 
- form-checkbox-attlist =
 
-   form-control-attlist
 
-   & common-disabled-attlist
 
-   & label
 
-   & common-printable-attlist
 
-   & common-tab-attlist
 
-   & common-title-attlist
 
-   & common-value-attlist
 
-   & common-data-field-attlist
 
-   & common-form-visual-effect-attlist
 
-   & common-form-relative-image-position-attlist
 
-   & common-linked-cell
 
-   & attribute form:current-state { states }?
 
-   & attribute form:is-tristate { boolean }?
 
-   & attribute form:state { states }?
 
- form-column =
 
-   element form:column { form-column-attlist, column-controls+ }
 
- form-column-attlist =
 
-   common-form-control-attlist, label, text-style-name
 
- form-combobox-attlist =
 
-   form-control-attlist
 
-   & common-current-value-attlist
 
-   & common-disabled-attlist
 
-   & dropdown
 
-   & common-maxlength-attlist
 
-   & common-printable-attlist
 
-   & common-readonly-attlist
 
-   & size
 
-   & common-tab-attlist
 
-   & common-title-attlist
 
-   & common-value-attlist
 
-   & common-convert-empty-attlist
 
-   & common-data-field-attlist
 
-   & list-source
 
-   & list-source-type
 
-   & common-linked-cell
 
-   & common-source-cell-range
 
-   & attribute form:auto-complete { boolean }?
 
- form-connection-resource =
 
-   element form:connection-resource {
 
-     attribute xlink:href { anyIRI },
 
-     empty
 
-   }
 
- form-control-attlist =
 
-   common-form-control-attlist,
 
-   common-control-id-attlist,
 
-   xforms-bind-attlist
 
- form-date-attlist =
 
-   attribute form:value { date }?
 
-   & attribute form:current-value { date }?
 
-   & attribute form:min-value { date }?
 
-   & attribute form:max-value { date }?
 
- form-file-attlist =
 
-   form-control-attlist,
 
-   common-current-value-attlist,
 
-   common-disabled-attlist,
 
-   common-maxlength-attlist,
 
-   common-printable-attlist,
 
-   common-readonly-attlist,
 
-   common-tab-attlist,
 
-   common-title-attlist,
 
-   common-value-attlist,
 
-   common-linked-cell
 
- form-fixed-text-attlist =
 
-   form-control-attlist
 
-   & for
 
-   & common-disabled-attlist
 
-   & label
 
-   & common-printable-attlist
 
-   & common-title-attlist
 
-   & attribute form:multi-line { boolean }?
 
- form-form =
 
-   element form:form {
 
-     common-form-control-attlist,
 
-     form-form-attlist,
 
-     form-properties?,
 
-     office-event-listeners?,
 
-     (controls | form-form)*,
 
-     form-connection-resource?
 
-   }
 
- form-form-attlist =
 
-   (attribute xlink:type { "simple" },
 
-    attribute xlink:href { anyIRI },
 
-    attribute xlink:actuate { "onRequest" }?)?
 
-   & attribute office:target-frame { targetFrameName }?
 
-   & attribute form:method { "get" | "post" | \string }?
 
-   & attribute form:enctype { \string }?
 
-   & attribute form:allow-deletes { boolean }?
 
-   & attribute form:allow-inserts { boolean }?
 
-   & attribute form:allow-updates { boolean }?
 
-   & attribute form:apply-filter { boolean }?
 
-   & attribute form:command-type { "table" | "query" | "command" }?
 
-   & attribute form:command { \string }?
 
-   & attribute form:datasource { anyIRI | \string }?
 
-   & attribute form:master-fields { \string }?
 
-   & attribute form:detail-fields { \string }?
 
-   & attribute form:escape-processing { boolean }?
 
-   & attribute form:filter { \string }?
 
-   & attribute form:ignore-result { boolean }?
 
-   & attribute form:navigation-mode { navigation }?
 
-   & attribute form:order { \string }?
 
-   & attribute form:tab-cycle { tab-cycles }?
 
- form-formatted-text-attlist =
 
-   form-control-attlist
 
-   & common-current-value-attlist
 
-   & common-disabled-attlist
 
-   & common-maxlength-attlist
 
-   & common-printable-attlist
 
-   & common-readonly-attlist
 
-   & common-tab-attlist
 
-   & common-title-attlist
 
-   & common-value-attlist
 
-   & common-convert-empty-attlist
 
-   & common-data-field-attlist
 
-   & common-linked-cell
 
-   & common-spin-button
 
-   & common-repeat
 
-   & common-delay-for-repeat
 
-   & attribute form:max-value { \string }?
 
-   & attribute form:min-value { \string }?
 
-   & attribute form:validation { boolean }?
 
- form-frame-attlist =
 
-   form-control-attlist,
 
-   common-disabled-attlist,
 
-   for,
 
-   label,
 
-   common-printable-attlist,
 
-   common-title-attlist
 
- form-generic-control-attlist = form-control-attlist
 
- form-grid-attlist =
 
-   form-control-attlist,
 
-   common-disabled-attlist,
 
-   common-printable-attlist,
 
-   common-tab-attlist,
 
-   common-title-attlist
 
- form-hidden-attlist = form-control-attlist, common-value-attlist
 
- form-image-attlist =
 
-   form-control-attlist,
 
-   button-type,
 
-   common-disabled-attlist,
 
-   image-data,
 
-   common-printable-attlist,
 
-   common-tab-attlist,
 
-   target-frame,
 
-   target-location,
 
-   common-title-attlist,
 
-   common-value-attlist
 
- form-image-frame-attlist =
 
-   form-control-attlist,
 
-   common-disabled-attlist,
 
-   image-data,
 
-   common-printable-attlist,
 
-   common-readonly-attlist,
 
-   common-title-attlist,
 
-   common-data-field-attlist
 
- form-item = element form:item { form-item-attlist, text }
 
- form-item-attlist = label
 
- form-listbox-attlist =
 
-   form-control-attlist
 
-   & common-disabled-attlist
 
-   & dropdown
 
-   & common-printable-attlist
 
-   & size
 
-   & common-tab-attlist
 
-   & common-title-attlist
 
-   & bound-column
 
-   & common-data-field-attlist
 
-   & list-source
 
-   & list-source-type
 
-   & common-linked-cell
 
-   & list-linkage-type
 
-   & common-source-cell-range
 
-   & attribute form:multiple { boolean }?
 
-   & attribute form:xforms-list-source { \string }?
 
- form-number-attlist =
 
-   attribute form:value { double }?
 
-   & attribute form:current-value { double }?
 
-   & attribute form:min-value { double }?
 
-   & attribute form:max-value { double }?
 
- form-option = element form:option { form-option-attlist, text }
 
- form-option-attlist =
 
-   current-selected, selected, label, common-value-attlist
 
- form-password-attlist =
 
-   form-control-attlist
 
-   & common-disabled-attlist
 
-   & common-maxlength-attlist
 
-   & common-printable-attlist
 
-   & common-tab-attlist
 
-   & common-title-attlist
 
-   & common-value-attlist
 
-   & common-convert-empty-attlist
 
-   & common-linked-cell
 
-   & attribute form:echo-char { character }?
 
- form-properties = element form:properties { form-property+ }
 
- form-property =
 
-   element form:property {
 
-     form-property-name, form-property-value-and-type-attlist
 
-   }
 
-   | element form:list-property {
 
-       form-property-name, form-property-type-and-value-list
 
-     }
 
- form-property-name = attribute form:property-name { \string }
 
- form-property-type-and-value-list =
 
-   (attribute office:value-type { "float" },
 
-    element form:list-value {
 
-      attribute office:value { double }
 
-    }*)
 
-   | (attribute office:value-type { "percentage" },
 
-      element form:list-value {
 
-        attribute office:value { double }
 
-      }*)
 
-   | (attribute office:value-type { "currency" },
 
-      element form:list-value {
 
-        attribute office:value { double },
 
-        attribute office:currency { \string }?
 
-      }*)
 
-   | (attribute office:value-type { "date" },
 
-      element form:list-value {
 
-        attribute office:date-value { dateOrDateTime }
 
-      }*)
 
-   | (attribute office:value-type { "time" },
 
-      element form:list-value {
 
-        attribute office:time-value { duration }
 
-      }*)
 
-   | (attribute office:value-type { "boolean" },
 
-      element form:list-value {
 
-        attribute office:boolean-value { boolean }
 
-      }*)
 
-   | (attribute office:value-type { "string" },
 
-      element form:list-value {
 
-        attribute office:string-value { \string }
 
-      }*)
 
-   | attribute office:value-type { "void" }
 
- form-property-value-and-type-attlist =
 
-   common-value-and-type-attlist
 
-   | attribute office:value-type { "void" }
 
- form-radio-attlist =
 
-   form-control-attlist,
 
-   current-selected,
 
-   common-disabled-attlist,
 
-   label,
 
-   common-printable-attlist,
 
-   selected,
 
-   common-tab-attlist,
 
-   common-title-attlist,
 
-   common-value-attlist,
 
-   common-data-field-attlist,
 
-   common-form-visual-effect-attlist,
 
-   common-form-relative-image-position-attlist,
 
-   common-linked-cell
 
- form-text-attlist =
 
-   form-control-attlist,
 
-   common-current-value-attlist,
 
-   common-disabled-attlist,
 
-   common-maxlength-attlist,
 
-   common-printable-attlist,
 
-   common-readonly-attlist,
 
-   common-tab-attlist,
 
-   common-title-attlist,
 
-   common-value-attlist,
 
-   common-convert-empty-attlist,
 
-   common-data-field-attlist,
 
-   common-linked-cell
 
- form-textarea-attlist =
 
-   form-control-attlist,
 
-   common-current-value-attlist,
 
-   common-disabled-attlist,
 
-   common-maxlength-attlist,
 
-   common-printable-attlist,
 
-   common-readonly-attlist,
 
-   common-tab-attlist,
 
-   common-title-attlist,
 
-   common-value-attlist,
 
-   common-convert-empty-attlist,
 
-   common-data-field-attlist,
 
-   common-linked-cell
 
- form-time-attlist =
 
-   attribute form:value { time }?
 
-   & attribute form:current-value { time }?
 
-   & attribute form:min-value { time }?
 
-   & attribute form:max-value { time }?
 
- form-value-range-attlist =
 
-   form-control-attlist
 
-   & common-disabled-attlist
 
-   & common-printable-attlist
 
-   & common-tab-attlist
 
-   & common-title-attlist
 
-   & common-value-attlist
 
-   & common-linked-cell
 
-   & common-repeat
 
-   & common-delay-for-repeat
 
-   & attribute form:max-value { integer }?
 
-   & attribute form:min-value { integer }?
 
-   & attribute form:step-size { positiveInteger }?
 
-   & attribute form:page-step-size { positiveInteger }?
 
-   & attribute form:orientation { "horizontal" | "vertical" }?
 
- gradient-style =
 
-   "linear" | "axial" | "radial" | "ellipsoid" | "square" | "rectangular"
 
- header-footer-content =
 
-   (text-tracked-changes,
 
-    text-decls,
 
-    (text-h
 
-     | text-p
 
-     | text-list
 
-     | table-table
 
-     | text-section
 
-     | text-table-of-content
 
-     | text-illustration-index
 
-     | text-table-index
 
-     | text-object-index
 
-     | text-user-index
 
-     | text-alphabetical-index
 
-     | text-bibliography
 
-     | text-index-title
 
-     | change-marks)*)
 
-   | (style-region-left?, style-region-center?, style-region-right?)
 
- heading-attrs =
 
-   attribute text:outline-level { positiveInteger }
 
-   & attribute text:restart-numbering { boolean }?
 
-   & attribute text:start-value { nonNegativeInteger }?
 
-   & attribute text:is-list-header { boolean }?
 
- horiBackPos = "left" | "center" | "right"
 
- horizontal-mirror =
 
-   "horizontal" | "horizontal-on-odd" | "horizontal-on-even"
 
- image-data = attribute form:image-data { anyIRI }?
 
- index-content-main = text-content | text-index-title
 
- integer = xsd:integer
 
- label = attribute form:label { \string }?
 
- labelPositions =
 
-   "avoid-overlap"
 
-   | "center"
 
-   | "top"
 
-   | "top-right"
 
-   | "right"
 
-   | "bottom-right"
 
-   | "bottom"
 
-   | "bottom-left"
 
-   | "left"
 
-   | "top-left"
 
-   | "inside"
 
-   | "outside"
 
-   | "near-origin"
 
- language = xsd:language
 
- languageCode = xsd:token { pattern = "[A-Za-z]{1,8}" }
 
- length =
 
-   xsd:string {
 
-     pattern =
 
-       "-?([0-9]+(\.[0-9]*)?|\.[0-9]+)((cm)|(mm)|(in)|(pt)|(pc)|(px))"
 
-   }
 
- lineMode = "continuous" | "skip-white-space"
 
- lineStyle =
 
-   "none"
 
-   | "solid"
 
-   | "dotted"
 
-   | "dash"
 
-   | "long-dash"
 
-   | "dot-dash"
 
-   | "dot-dot-dash"
 
-   | "wave"
 
- lineType = "none" | "single" | "double"
 
- lineWidth =
 
-   "auto"
 
-   | "normal"
 
-   | "bold"
 
-   | "thin"
 
-   | "medium"
 
-   | "thick"
 
-   | positiveInteger
 
-   | percent
 
-   | positiveLength
 
- list-linkage-type =
 
-   attribute form:list-linkage-type {
 
-     "selection" | "selection-indices"
 
-   }?
 
- list-source = attribute form:list-source { \string }?
 
- list-source-type =
 
-   attribute form:list-source-type {
 
-     "table"
 
-     | "query"
 
-     | "sql"
 
-     | "sql-pass-through"
 
-     | "value-list"
 
-     | "table-fields"
 
-   }?
 
- math-math = element math:math { mathMarkup }
 
- [
 
-   dc:description [
 
-     "To avoid inclusion of the complete MathML schema, anything is allowed within a math:math top-level element"
 
-   ]
 
- ]
 
- mathMarkup =
 
-   (attribute * { text }
 
-    | text
 
-    | element * { mathMarkup })*
 
- meta-date-string = element meta:date-string { \string }
 
- namespacedToken = xsd:QName { pattern = "[^:]+:[^:]+" }
 
- navigation = "none" | "current" | "parent"
 
- nonNegativeDecimal = xsd:decimal { minInclusive = "0.0" }
 
- nonNegativeInteger = xsd:nonNegativeInteger
 
- nonNegativeLength =
 
-   xsd:string {
 
-     pattern =
 
-       "([0-9]+(\.[0-9]*)?|\.[0-9]+)((cm)|(mm)|(in)|(pt)|(pc)|(px))"
 
-   }
 
- nonNegativePixelLength =
 
-   xsd:string { pattern = "([0-9]+(\.[0-9]*)?|\.[0-9]+)(px)" }
 
- number-am-pm = element number:am-pm { empty }
 
- number-and-text =
 
-   number-number,
 
-   (number-text-with-fillchar?)
 
-   # https://issues.oasis-open.org/browse/OFFICE-3765
 
- number-boolean = element number:boolean { empty }
 
- number-boolean-style =
 
-   element number:boolean-style {
 
-     common-data-style-attlist,
 
-     style-text-properties?,
 
-     number-text?,
 
-     (number-boolean, number-text?)?,
 
-     style-map*
 
-   }
 
- number-currency-style =
 
-   element number:currency-style {
 
-     common-data-style-attlist,
 
-     common-auto-reorder-attlist,
 
-     style-text-properties?,
 
-     number-text-with-fillchar?,
 
-     # https://issues.oasis-open.org/browse/OFFICE-3765
 
-     ((number-and-text, currency-symbol-and-text?)
 
-      | (currency-symbol-and-text, number-and-text?))?,
 
-     style-map*
 
-   }
 
- number-currency-symbol =
 
-   element number:currency-symbol {
 
-     number-currency-symbol-attlist, text
 
-   }
 
- number-currency-symbol-attlist =
 
-   attribute number:language { languageCode }?,
 
-   attribute number:country { countryCode }?,
 
-   attribute number:script { scriptCode }?,
 
-   attribute number:rfc-language-tag { language }?
 
- number-date-style =
 
-   element number:date-style {
 
-     common-data-style-attlist,
 
-     common-auto-reorder-attlist,
 
-     common-format-source-attlist,
 
-     style-text-properties?,
 
-     number-text-with-fillchar?,
 
-     # https://issues.oasis-open.org/browse/OFFICE-3765
 
-     (any-date,
 
-      (number-text-with-fillchar?)
 
-      # https://issues.oasis-open.org/browse/OFFICE-3765
 
-      )+,
 
-     style-map*
 
-   }
 
- number-day =
 
-   element number:day {
 
-     number-day-attlist, common-calendar-attlist, empty
 
-   }
 
- number-day-attlist = attribute number:style { "short" | "long" }?
 
- number-day-of-week =
 
-   element number:day-of-week {
 
-     number-day-of-week-attlist, common-calendar-attlist, empty
 
-   }
 
- number-day-of-week-attlist =
 
-   attribute number:style { "short" | "long" }?
 
- number-embedded-text =
 
-   element number:embedded-text { number-embedded-text-attlist, text }
 
- number-embedded-text-attlist = attribute number:position { integer }
 
- number-era =
 
-   element number:era {
 
-     number-era-attlist, common-calendar-attlist, empty
 
-   }
 
- number-era-attlist = attribute number:style { "short" | "long" }?
 
- number-fill-character = element number:fill-character { text }
 
- # https://issues.oasis-open.org/browse/OFFICE-3765
 
- number-fraction =
 
-   element number:fraction {
 
-     number-fraction-attlist, common-number-attlist, empty
 
-   }
 
- number-fraction-attlist =
 
-   attribute number:min-numerator-digits { integer }?
 
-   & attribute number:min-denominator-digits { integer }?
 
-   & attribute number:denominator-value { integer }?
 
-   & (attribute number:max-denominator-value { positiveInteger }?)
 
-     # https://issues.oasis-open.org/browse/OFFICE-3695 max-denominator-value
 
- number-hours = element number:hours { number-hours-attlist, empty }
 
- number-hours-attlist = attribute number:style { "short" | "long" }?
 
- number-minutes =
 
-   element number:minutes { number-minutes-attlist, empty }
 
- number-minutes-attlist = attribute number:style { "short" | "long" }?
 
- number-month =
 
-   element number:month {
 
-     number-month-attlist, common-calendar-attlist, empty
 
-   }
 
- number-month-attlist =
 
-   attribute number:textual { boolean }?
 
-   & attribute number:possessive-form { boolean }?
 
-   & attribute number:style { "short" | "long" }?
 
- number-number =
 
-   element number:number {
 
-     number-number-attlist,
 
-     common-decimal-places-attlist,
 
-     common-number-attlist,
 
-     number-embedded-text*
 
-   }
 
- number-number-attlist =
 
-   attribute number:decimal-replacement { \string }?
 
-   & attribute number:display-factor { double }?
 
- number-number-style =
 
-   element number:number-style {
 
-     common-data-style-attlist,
 
-     style-text-properties?,
 
-     number-text-with-fillchar?,
 
-     # https://issues.oasis-open.org/browse/OFFICE-3765
 
-     (any-number, number-text-with-fillchar?)?,
 
-     # https://issues.oasis-open.org/browse/OFFICE-3765
 
-     style-map*
 
-   }
 
- number-percentage-style =
 
-   element number:percentage-style {
 
-     common-data-style-attlist,
 
-     style-text-properties?,
 
-     number-text-with-fillchar?,
 
-     # https://issues.oasis-open.org/browse/OFFICE-3765
 
-     number-and-text?,
 
-     style-map*
 
-   }
 
- number-quarter =
 
-   element number:quarter {
 
-     number-quarter-attlist, common-calendar-attlist, empty
 
-   }
 
- number-quarter-attlist = attribute number:style { "short" | "long" }?
 
- number-scientific-number =
 
-   element number:scientific-number {
 
-     number-scientific-number-attlist,
 
-     common-decimal-places-attlist,
 
-     common-number-attlist,
 
-     empty
 
-   }
 
- number-scientific-number-attlist =
 
-   attribute number:min-exponent-digits { integer }?
 
-   & attribute number:exponent-interval { positiveInteger }?
 
-   & # https://issues.oasis-open.org/browse/OFFICE-1828 exponent-interval
 
-     attribute number:forced-exponent-sign { boolean }
 
-     # https://issues.oasis-open.org/browse/OFFICE-3860 added number:forced-exponent-sign
 
-     ?
 
- number-seconds =
 
-   element number:seconds { number-seconds-attlist, empty }
 
- number-seconds-attlist =
 
-   attribute number:style { "short" | "long" }?
 
-   & attribute number:decimal-places { integer }?
 
- number-text = element number:text { text }
 
- number-text-content = element number:text-content { empty }
 
- number-text-style =
 
-   element number:text-style {
 
-     common-data-style-attlist,
 
-     style-text-properties?,
 
-     number-text-with-fillchar?,
 
-     # https://issues.oasis-open.org/browse/OFFICE-3765
 
-     (number-text-content,
 
-      (number-text-with-fillchar?)
 
-      # https://issues.oasis-open.org/browse/OFFICE-3765
 
-      )*,
 
-     style-map*
 
-   }
 
- number-text-with-fillchar =
 
-   number-text?, (number-fill-character, number-text?)?
 
- # https://issues.oasis-open.org/browse/OFFICE-3765
 
- number-time-style =
 
-   element number:time-style {
 
-     number-time-style-attlist,
 
-     common-data-style-attlist,
 
-     common-format-source-attlist,
 
-     style-text-properties?,
 
-     number-text-with-fillchar?,
 
-     # https://issues.oasis-open.org/browse/OFFICE-3765
 
-     (any-time,
 
-      (number-text-with-fillchar?)
 
-      # https://issues.oasis-open.org/browse/OFFICE-3765
 
-      )+,
 
-     style-map*
 
-   }
 
- number-time-style-attlist =
 
-   attribute number:truncate-on-overflow { boolean }?
 
- number-week-of-year =
 
-   element number:week-of-year { common-calendar-attlist, empty }
 
- number-year =
 
-   element number:year {
 
-     number-year-attlist, common-calendar-attlist, empty
 
-   }
 
- number-year-attlist = attribute number:style { "short" | "long" }?
 
- office-annotation =
 
-   element office:annotation {
 
-     office-annotation-attlist,
 
-     draw-caption-attlist,
 
-     common-draw-position-attlist,
 
-     common-draw-size-attlist,
 
-     common-draw-shape-with-text-and-styles-attlist,
 
-     dc-creator?,
 
-     dc-date?,
 
-     meta-date-string?,
 
-     element meta:creator-initials { text }?,
 
-     # https://issues.oasis-open.org/browse/OFFICE-3776
 
-     (text-p | text-list)*
 
-   }
 
- office-annotation-attlist =
 
-   attribute office:display { boolean }?
 
-   & common-office-annotation-name-attlist?
 
- office-annotation-end =
 
-   element office:annotation-end { office-annotation-end-attlist }
 
- office-annotation-end-attlist = common-office-annotation-name-attlist
 
- office-automatic-styles =
 
-   element office:automatic-styles { styles & style-page-layout* }?
 
- office-binary-data = element office:binary-data { base64Binary }
 
- office-body = element office:body { office-body-content }
 
- office-body-content =
 
-   element office:text {
 
-     office-text-attlist,
 
-     office-text-content-prelude,
 
-     office-text-content-main,
 
-     office-text-content-epilogue
 
-   }
 
-   | element office:drawing {
 
-       office-drawing-attlist,
 
-       office-drawing-content-prelude,
 
-       office-drawing-content-main,
 
-       office-drawing-content-epilogue
 
-     }
 
-   | element office:presentation {
 
-       office-presentation-attlist,
 
-       office-presentation-content-prelude,
 
-       office-presentation-content-main,
 
-       office-presentation-content-epilogue
 
-     }
 
-   | element office:spreadsheet {
 
-       office-spreadsheet-attlist,
 
-       office-spreadsheet-content-prelude,
 
-       office-spreadsheet-content-main,
 
-       office-spreadsheet-content-epilogue
 
-     }
 
-   | element office:chart {
 
-       office-chart-attlist,
 
-       office-chart-content-prelude,
 
-       office-chart-content-main,
 
-       office-chart-content-epilogue
 
-     }
 
-   | element office:image {
 
-       office-image-attlist,
 
-       office-image-content-prelude,
 
-       office-image-content-main,
 
-       office-image-content-epilogue
 
-     }
 
-   | office-database
 
- office-change-info =
 
-   element office:change-info { dc-creator, dc-date, text-p* }
 
- office-chart-attlist = empty
 
- office-chart-content-epilogue = table-functions
 
- office-chart-content-main = chart-chart
 
- office-chart-content-prelude = text-decls, table-decls
 
- office-database =
 
-   element office:database {
 
-     db-data-source,
 
-     db-forms?,
 
-     db-reports?,
 
-     db-queries?,
 
-     db-table-presentations?,
 
-     db-schema-definition?
 
-   }
 
- office-dde-source =
 
-   element office:dde-source {
 
-     office-dde-source-attlist, common-dde-connection-decl-attlist
 
-   }
 
- office-dde-source-attlist =
 
-   attribute office:name { \string }?
 
-   & attribute office:conversion-mode {
 
-       "into-default-style-data-style"
 
-       | "into-english-number"
 
-       | "keep-text"
 
-     }?
 
- office-document =
 
-   element office:document {
 
-     office-document-attrs,
 
-     office-document-common-attrs,
 
-     office-meta,
 
-     office-settings,
 
-     office-scripts,
 
-     office-font-face-decls,
 
-     office-styles,
 
-     office-automatic-styles,
 
-     office-master-styles,
 
-     office-body
 
-   }
 
- office-document-attrs = attribute office:mimetype { \string }
 
- office-document-common-attrs =
 
-   attribute office:version { "1.3" }
 
-   & attribute grddl:transformation {
 
-       list { anyIRI* }
 
-     }?
 
- office-document-content =
 
-   element office:document-content {
 
-     office-document-common-attrs,
 
-     office-scripts,
 
-     office-font-face-decls,
 
-     office-automatic-styles,
 
-     office-body
 
-   }
 
- office-document-meta =
 
-   element office:document-meta {
 
-     office-document-common-attrs, office-meta
 
-   }
 
- office-document-settings =
 
-   element office:document-settings {
 
-     office-document-common-attrs, office-settings
 
-   }
 
- office-document-styles =
 
-   element office:document-styles {
 
-     office-document-common-attrs,
 
-     office-font-face-decls,
 
-     office-styles,
 
-     office-automatic-styles,
 
-     office-master-styles
 
-   }
 
- office-drawing-attlist = empty
 
- office-drawing-content-epilogue = table-functions
 
- office-drawing-content-main = draw-page*
 
- office-drawing-content-prelude = text-decls, table-decls
 
- office-event-listeners =
 
-   element office:event-listeners {
 
-     (script-event-listener | presentation-event-listener)*
 
-   }
 
- office-font-face-decls =
 
-   element office:font-face-decls { style-font-face* }?
 
- office-forms =
 
-   element office:forms {
 
-     office-forms-attlist, (form-form | xforms-model)*
 
-   }?
 
- office-forms-attlist =
 
-   attribute form:automatic-focus { boolean }?
 
-   & attribute form:apply-design-mode { boolean }?
 
- office-image-attlist = empty
 
- office-image-content-epilogue = empty
 
- office-image-content-main = draw-frame
 
- office-image-content-prelude = empty
 
- office-master-styles =
 
-   element office:master-styles {
 
-     style-master-page* & style-handout-master? & draw-layer-set?
 
-   }?
 
- office-meta = element office:meta { office-meta-content-strict }?
 
- office-meta-content-strict = office-meta-data*
 
- office-meta-data =
 
-   element meta:generator { \string }
 
-   | element dc:title { \string }
 
-   | element dc:description { \string }
 
-   | element dc:subject { \string }
 
-   | element meta:keyword { \string }
 
-   | element meta:initial-creator { \string }
 
-   | dc-creator
 
-   | element meta:printed-by { \string }
 
-   | element meta:creation-date { dateTime }
 
-   | dc-date
 
-   | element meta:print-date { dateTime }
 
-   | element meta:template {
 
-       attribute xlink:type { "simple" },
 
-       attribute xlink:href { anyIRI },
 
-       attribute xlink:actuate { "onRequest" }?,
 
-       attribute xlink:title { \string }?,
 
-       attribute meta:date { dateTime }?
 
-     }
 
-   | element meta:auto-reload {
 
-       (attribute xlink:type { "simple" },
 
-        attribute xlink:href { anyIRI },
 
-        attribute xlink:show { "replace" }?,
 
-        attribute xlink:actuate { "onLoad" }?)?,
 
-       attribute meta:delay { duration }?
 
-     }
 
-   | element meta:hyperlink-behaviour {
 
-       attribute office:target-frame-name { targetFrameName }?,
 
-       attribute xlink:show { "new" | "replace" }?
 
-     }
 
-   | element dc:language { language }
 
-   | element meta:editing-cycles { nonNegativeInteger }
 
-   | element meta:editing-duration { duration }
 
-   | element meta:document-statistic {
 
-       attribute meta:page-count { nonNegativeInteger }?,
 
-       attribute meta:table-count { nonNegativeInteger }?,
 
-       attribute meta:draw-count { nonNegativeInteger }?,
 
-       attribute meta:image-count { nonNegativeInteger }?,
 
-       attribute meta:ole-object-count { nonNegativeInteger }?,
 
-       attribute meta:object-count { nonNegativeInteger }?,
 
-       attribute meta:paragraph-count { nonNegativeInteger }?,
 
-       attribute meta:word-count { nonNegativeInteger }?,
 
-       attribute meta:character-count { nonNegativeInteger }?,
 
-       attribute meta:frame-count { nonNegativeInteger }?,
 
-       attribute meta:sentence-count { nonNegativeInteger }?,
 
-       attribute meta:syllable-count { nonNegativeInteger }?,
 
-       attribute meta:non-whitespace-character-count {
 
-         nonNegativeInteger
 
-       }?,
 
-       attribute meta:row-count { nonNegativeInteger }?,
 
-       attribute meta:cell-count { nonNegativeInteger }?
 
-     }
 
-   | element meta:user-defined {
 
-       attribute meta:name { \string },
 
-       ((attribute meta:value-type { "float" },
 
-         double)
 
-        | (attribute meta:value-type { "date" },
 
-           dateOrDateTime)
 
-        | (attribute meta:value-type { "time" },
 
-           duration)
 
-        | (attribute meta:value-type { "boolean" },
 
-           boolean)
 
-        | (attribute meta:value-type { "string" },
 
-           \string)
 
-        | text)
 
-     }
 
- office-presentation-attlist = empty
 
- office-presentation-content-epilogue =
 
-   presentation-settings, table-functions
 
- office-presentation-content-main = draw-page*
 
- office-presentation-content-prelude =
 
-   text-decls, table-decls, presentation-decls
 
- # removed from text as well
 
- # <rng:define name="office-process-content">
 
- #   <rng:optional>
 
- #     <rng:attribute name="office:process-content">
 
- #       <rng:ref name="boolean"/>
 
- #     </rng:attribute>
 
- #   </rng:optional>
 
- # </rng:define>
 
- office-script =
 
-   element office:script {
 
-     office-script-attlist,
 
-     mixed { anyElements }
 
-   }
 
- office-script-attlist = attribute script:language { \string }
 
- office-scripts =
 
-   element office:scripts { office-script*, office-event-listeners? }?
 
- office-settings = element office:settings { config-config-item-set+ }?
 
- office-spreadsheet-attlist =
 
-   attribute table:structure-protected { boolean }?,
 
-   attribute table:protection-key { \string }?,
 
-   attribute table:protection-key-digest-algorithm { anyIRI }?
 
- office-spreadsheet-content-epilogue = table-functions
 
- office-spreadsheet-content-main = table-table*
 
- office-spreadsheet-content-prelude =
 
-   table-tracked-changes?, text-decls, table-decls
 
- office-styles =
 
-   element office:styles {
 
-     styles
 
-     & style-default-style*
 
-     & style-default-page-layout?
 
-     & text-outline-style?
 
-     & text-notes-configuration*
 
-     & text-bibliography-configuration?
 
-     & text-linenumbering-configuration?
 
-     & draw-gradient*
 
-     & svg-linearGradient*
 
-     & svg-radialGradient*
 
-     & draw-hatch*
 
-     & draw-fill-image*
 
-     & draw-marker*
 
-     & draw-stroke-dash*
 
-     & draw-opacity*
 
-     & style-presentation-page-layout*
 
-     & table-table-template*
 
-   }?
 
- office-text-attlist =
 
-   attribute text:global { boolean }?
 
-   & attribute text:use-soft-page-breaks { boolean }?
 
- office-text-content-epilogue = table-functions
 
- office-text-content-main =
 
-   text-content*
 
-   | (text-page-sequence, (shape)*)
 
- office-text-content-prelude =
 
-   office-forms, text-tracked-changes, text-decls, table-decls
 
- paragraph-attrs =
 
-   attribute text:style-name { styleNameRef }?
 
-   & attribute text:class-names { styleNameRefs }?
 
-   & attribute text:cond-style-name { styleNameRef }?
 
-   & (xml-id,
 
-      attribute text:id { NCName }?)?
 
-   & common-in-content-meta-attlist?
 
- paragraph-content =
 
-   text
 
-   | element text:s {
 
-       attribute text:c { nonNegativeInteger }?
 
-     }
 
-   | element text:tab { text-tab-attr }
 
-   | element text:line-break { empty }
 
-   | text-soft-page-break
 
-   | element text:span {
 
-       attribute text:style-name { styleNameRef }?,
 
-       attribute text:class-names { styleNameRefs }?,
 
-       paragraph-content-or-hyperlink*
 
-     }
 
-   | element text:meta {
 
-       text-meta-attlist, paragraph-content-or-hyperlink*
 
-     }
 
-   | (text-bookmark | text-bookmark-start | text-bookmark-end)
 
-   | element text:reference-mark {
 
-       attribute text:name { \string }
 
-     }
 
-   | (element text:reference-mark-start {
 
-        attribute text:name { \string }
 
-      }
 
-      | element text:reference-mark-end {
 
-          attribute text:name { \string }
 
-        })
 
-   | element text:note {
 
-       text-note-class,
 
-       attribute text:id { \string }?,
 
-       element text:note-citation {
 
-         attribute text:label { \string }?,
 
-         text
 
-       },
 
-       element text:note-body { text-content* }
 
-     }
 
-   | element text:ruby {
 
-       attribute text:style-name { styleNameRef }?,
 
-       element text:ruby-base { paragraph-content-or-hyperlink* },
 
-       element text:ruby-text {
 
-         attribute text:style-name { styleNameRef }?,
 
-         text
 
-       }
 
-     }
 
-   | (office-annotation | office-annotation-end)
 
-   | change-marks
 
-   | shape
 
-   | element text:date { text-date-attlist, text }
 
-   | element text:time { text-time-attlist, text }
 
-   | element text:page-number { text-page-number-attlist, text }
 
-   | element text:page-continuation {
 
-       text-page-continuation-attlist, text
 
-     }
 
-   | element text:sender-firstname { common-field-fixed-attlist, text }
 
-   | element text:sender-lastname { common-field-fixed-attlist, text }
 
-   | element text:sender-initials { common-field-fixed-attlist, text }
 
-   | element text:sender-title { common-field-fixed-attlist, text }
 
-   | element text:sender-position { common-field-fixed-attlist, text }
 
-   | element text:sender-email { common-field-fixed-attlist, text }
 
-   | element text:sender-phone-private {
 
-       common-field-fixed-attlist, text
 
-     }
 
-   | element text:sender-fax { common-field-fixed-attlist, text }
 
-   | element text:sender-company { common-field-fixed-attlist, text }
 
-   | element text:sender-phone-work { common-field-fixed-attlist, text }
 
-   | element text:sender-street { common-field-fixed-attlist, text }
 
-   | element text:sender-city { common-field-fixed-attlist, text }
 
-   | element text:sender-postal-code { common-field-fixed-attlist, text }
 
-   | element text:sender-country { common-field-fixed-attlist, text }
 
-   | element text:sender-state-or-province {
 
-       common-field-fixed-attlist, text
 
-     }
 
-   | element text:author-name { common-field-fixed-attlist, text }
 
-   | element text:author-initials { common-field-fixed-attlist, text }
 
-   | element text:chapter { text-chapter-attlist, text }
 
-   | element text:file-name { text-file-name-attlist, text }
 
-   | element text:template-name { text-template-name-attlist, text }
 
-   | element text:sheet-name { text }
 
-   | element text:variable-set {
 
-       (common-field-name-attlist
 
-        & common-field-formula-attlist
 
-        & common-value-and-type-attlist
 
-        & common-field-display-value-none-attlist
 
-        & common-field-data-style-name-attlist),
 
-       text
 
-     }
 
-   | element text:variable-get {
 
-       (common-field-name-attlist
 
-        & common-field-display-value-formula-attlist
 
-        & common-field-data-style-name-attlist),
 
-       text
 
-     }
 
-   | element text:variable-input {
 
-       (common-field-name-attlist
 
-        & common-field-description-attlist
 
-        & common-value-type-attlist
 
-        & common-field-display-value-none-attlist
 
-        & common-field-data-style-name-attlist),
 
-       text
 
-     }
 
-   | element text:user-field-get {
 
-       (common-field-name-attlist
 
-        & common-field-display-value-formula-none-attlist
 
-        & common-field-data-style-name-attlist),
 
-       text
 
-     }
 
-   | element text:user-field-input {
 
-       (common-field-name-attlist
 
-        & common-field-description-attlist
 
-        & common-field-data-style-name-attlist),
 
-       text
 
-     }
 
-   | element text:sequence {
 
-       (common-field-name-attlist
 
-        & common-field-formula-attlist
 
-        & common-field-num-format-attlist
 
-        & text-sequence-ref-name),
 
-       text
 
-     }
 
-   | element text:expression {
 
-       (common-field-formula-attlist
 
-        & common-value-and-type-attlist?
 
-        & common-field-display-value-formula-attlist
 
-        & common-field-data-style-name-attlist),
 
-       text
 
-     }
 
-   | element text:text-input { common-field-description-attlist, text }
 
-   | text-drop-down
 
-   | # OFFICE-3881
 
-     element text:initial-creator { common-field-fixed-attlist, text }
 
-   | element text:creation-date {
 
-       (common-field-fixed-attlist
 
-        & common-field-data-style-name-attlist
 
-        & attribute text:date-value { dateOrDateTime }?),
 
-       text
 
-     }
 
-   | element text:creation-time {
 
-       (common-field-fixed-attlist
 
-        & common-field-data-style-name-attlist
 
-        & attribute text:time-value { timeOrDateTime }?),
 
-       text
 
-     }
 
-   | element text:description { common-field-fixed-attlist, text }
 
-   | element text:user-defined {
 
-       (common-field-fixed-attlist
 
-        & attribute text:name { \string }
 
-        & common-field-data-style-name-attlist
 
-        & attribute office:value { double }?
 
-        & attribute office:date-value { dateOrDateTime }?
 
-        & attribute office:time-value { duration }?
 
-        & attribute office:boolean-value { boolean }?
 
-        & attribute office:string-value { \string }?),
 
-       text
 
-     }
 
-   | element text:print-time {
 
-       (common-field-fixed-attlist
 
-        & common-field-data-style-name-attlist
 
-        & attribute text:time-value { time }?),
 
-       text
 
-     }
 
-   | element text:print-date {
 
-       (common-field-fixed-attlist
 
-        & common-field-data-style-name-attlist
 
-        & attribute text:date-value { date }?),
 
-       text
 
-     }
 
-   | element text:printed-by { common-field-fixed-attlist, text }
 
-   | element text:title { common-field-fixed-attlist, text }
 
-   | element text:subject { common-field-fixed-attlist, text }
 
-   | element text:keywords { common-field-fixed-attlist, text }
 
-   | element text:editing-cycles { common-field-fixed-attlist, text }
 
-   | element text:editing-duration {
 
-       (common-field-fixed-attlist
 
-        & common-field-data-style-name-attlist
 
-        & attribute text:duration { duration }?),
 
-       text
 
-     }
 
-   | element text:modification-time {
 
-       (common-field-fixed-attlist
 
-        & common-field-data-style-name-attlist
 
-        & attribute text:time-value { time }?),
 
-       text
 
-     }
 
-   | element text:modification-date {
 
-       (common-field-fixed-attlist
 
-        & common-field-data-style-name-attlist
 
-        & attribute text:date-value { date }?),
 
-       text
 
-     }
 
-   | element text:creator { common-field-fixed-attlist, text }
 
-   | element text:page-count
 
-             | text:paragraph-count
 
-             | text:word-count
 
-             | text:character-count
 
-             | text:table-count
 
-             | text:image-count
 
-             | text:object-count {
 
-       common-field-num-format-attlist, text
 
-     }
 
-   | element text:database-display {
 
-       text-database-display-attlist, text
 
-     }
 
-   | element text:database-next { text-database-next-attlist }
 
-   | element text:database-row-select {
 
-       text-database-row-select-attlist
 
-     }
 
-   | element text:database-row-number {
 
-       (common-field-database-table
 
-        & common-field-num-format-attlist
 
-        & attribute text:value { nonNegativeInteger }?),
 
-       text
 
-     }
 
-   | element text:database-name { common-field-database-table, text }
 
-   | element text:page-variable-set {
 
-       text-set-page-variable-attlist, text
 
-     }
 
-   | element text:page-variable-get {
 
-       text-get-page-variable-attlist, text
 
-     }
 
-   | element text:placeholder { text-placeholder-attlist, text }
 
-   | element text:conditional-text {
 
-       text-conditional-text-attlist, text
 
-     }
 
-   | element text:hidden-text { text-hidden-text-attlist, text }
 
-   | element text:reference-ref | text:bookmark-ref {
 
-       text-common-ref-content & text-bookmark-ref-content
 
-     }
 
-   | element text:note-ref {
 
-       text-common-ref-content & text-note-ref-content
 
-     }
 
-   | element text:sequence-ref {
 
-       text-common-ref-content & text-sequence-ref-content
 
-     }
 
-   | element text:script {
 
-       ((attribute xlink:type { "simple" },
 
-         attribute xlink:href { anyIRI })
 
-        | text)
 
-       & attribute script:language { \string }?
 
-     }
 
-   | element text:execute-macro {
 
-       attribute text:name { \string }?,
 
-       office-event-listeners?,
 
-       text
 
-     }
 
-   | element text:hidden-paragraph {
 
-       text-hidden-paragraph-attlist, text
 
-     }
 
-   | element text:dde-connection {
 
-       attribute text:connection-name { \string },
 
-       text
 
-     }
 
-   | element text:measure {
 
-       attribute text:kind { "value" | "unit" | "gap" },
 
-       text
 
-     }
 
-   | element text:table-formula {
 
-       (common-field-formula-attlist
 
-        & common-field-display-value-formula-attlist
 
-        & common-field-data-style-name-attlist),
 
-       text
 
-     }
 
-   | element text:meta-field {
 
-       text-meta-field-attlist, paragraph-content-or-hyperlink*
 
-     }
 
-   | element text:toc-mark-start { text-toc-mark-start-attrs }
 
-   | element text:toc-mark-end { text-id }
 
-   | element text:toc-mark {
 
-       attribute text:string-value { \string },
 
-       text-outline-level
 
-     }
 
-   | element text:user-index-mark-start {
 
-       text-id, text-outline-level, text-index-name
 
-     }
 
-   | element text:user-index-mark-end { text-id }
 
-   | element text:user-index-mark {
 
-       attribute text:string-value { \string },
 
-       text-outline-level,
 
-       text-index-name
 
-     }
 
-   | element text:alphabetical-index-mark-start {
 
-       text-id, text-alphabetical-index-mark-attrs
 
-     }
 
-   | element text:alphabetical-index-mark-end { text-id }
 
-   | element text:alphabetical-index-mark {
 
-       attribute text:string-value { \string },
 
-       text-alphabetical-index-mark-attrs
 
-     }
 
-   | element text:bibliography-mark {
 
-       attribute text:bibliography-type { text-bibliography-types },
 
-       attribute text:identifier
 
-                 | text:address
 
-                 | text:annote
 
-                 | text:author
 
-                 | text:booktitle
 
-                 | text:chapter
 
-                 | text:edition
 
-                 | text:editor
 
-                 | text:howpublished
 
-                 | text:institution
 
-                 | text:journal
 
-                 | text:month
 
-                 | text:note
 
-                 | text:number
 
-                 | text:organizations
 
-                 | text:pages
 
-                 | text:publisher
 
-                 | text:school
 
-                 | text:series
 
-                 | text:title
 
-                 | text:report-type
 
-                 | text:volume
 
-                 | text:year
 
-                 | text:url
 
-                 | text:custom1
 
-                 | text:custom2
 
-                 | text:custom3
 
-                 | text:custom4
 
-                 | text:custom5
 
-                 | text:isbn
 
-                 | text:issn { \string }*,
 
-       text
 
-     }
 
-   | element presentation:header { empty }
 
-   | element presentation:footer { empty }
 
-   | element presentation:date-time { empty }
 
- paragraph-content-or-hyperlink = paragraph-content | text-a
 
- pathData = xsd:string
 
- percent = xsd:string { pattern = "-?([0-9]+(\.[0-9]*)?|\.[0-9]+)%" }
 
- point3D =
 
-   xsd:string {
 
-     pattern =
 
-       "\([ ]*-?([0-9]+(\.[0-9]*)?|\.[0-9]+)((cm)|(mm)|(in)|(pt)|(pc))([ ]+-?([0-9]+(\.[0-9]*)?|\.[0-9]+)((cm)|(mm)|(in)|(pt)|(pc))){2}[ ]*\)"
 
-   }
 
- points =
 
-   xsd:string { pattern = "-?[0-9]+,-?[0-9]+([ ]+-?[0-9]+,-?[0-9]+)*" }
 
- positiveInteger = xsd:positiveInteger
 
- positiveLength =
 
-   xsd:string {
 
-     pattern =
 
-       "([0-9]*[1-9][0-9]*(\.[0-9]*)?|0+\.[0-9]*[1-9][0-9]*|\.[0-9]*[1-9][0-9]*)((cm)|(mm)|(in)|(pt)|(pc)|(px))"
 
-   }
 
- presentation-animation-elements =
 
-   presentation-show-shape
 
-   | presentation-show-text
 
-   | presentation-hide-shape
 
-   | presentation-hide-text
 
-   | presentation-dim
 
-   | presentation-play
 
- presentation-animation-group =
 
-   element presentation:animation-group {
 
-     presentation-animation-elements*
 
-   }
 
- presentation-animations =
 
-   element presentation:animations {
 
-     (presentation-animation-elements | presentation-animation-group)*
 
-   }
 
- presentation-classes =
 
-   "title"
 
-   | "outline"
 
-   | "subtitle"
 
-   | "text"
 
-   | "graphic"
 
-   | "object"
 
-   | "chart"
 
-   | "table"
 
-   | "orgchart"
 
-   | "page"
 
-   | "notes"
 
-   | "handout"
 
-   | "header"
 
-   | "footer"
 
-   | "date-time"
 
-   | "page-number"
 
- presentation-date-time-decl-attlist =
 
-   attribute presentation:name { \string }
 
-   & attribute presentation:source { "fixed" | "current-date" }
 
-   & attribute style:data-style-name { styleNameRef }?
 
- presentation-decl =
 
-   element presentation:header-decl {
 
-     presentation-header-decl-attlist, text
 
-   }
 
-   | element presentation:footer-decl {
 
-       presentation-footer-decl-attlist, text
 
-     }
 
-   | element presentation:date-time-decl {
 
-       presentation-date-time-decl-attlist, text
 
-     }
 
- presentation-decls = presentation-decl*
 
- presentation-dim =
 
-   element presentation:dim {
 
-     presentation-dim-attlist, presentation-sound?
 
-   }
 
- presentation-dim-attlist =
 
-   attribute draw:shape-id { IDREF }
 
-   & attribute draw:color { color }
 
- presentation-event-listener =
 
-   element presentation:event-listener {
 
-     presentation-event-listener-attlist, presentation-sound?
 
-   }
 
- presentation-event-listener-attlist =
 
-   attribute script:event-name { \string }
 
-   & attribute presentation:action {
 
-       "none"
 
-       | "previous-page"
 
-       | "next-page"
 
-       | "first-page"
 
-       | "last-page"
 
-       | "hide"
 
-       | "stop"
 
-       | "execute"
 
-       | "show"
 
-       | "verb"
 
-       | "fade-out"
 
-       | "sound"
 
-       | "last-visited-page"
 
-     }
 
-   & attribute presentation:effect { presentationEffects }?
 
-   & attribute presentation:direction { presentationEffectDirections }?
 
-   & attribute presentation:speed { presentationSpeeds }?
 
-   & attribute presentation:start-scale { percent }?
 
-   & (attribute xlink:type { "simple" },
 
-      attribute xlink:href { anyIRI },
 
-      attribute xlink:show { "embed" }?,
 
-      attribute xlink:actuate { "onRequest" }?)?
 
-   & attribute presentation:verb { nonNegativeInteger }?
 
- presentation-footer-decl-attlist =
 
-   attribute presentation:name { \string }
 
- presentation-header-decl-attlist =
 
-   attribute presentation:name { \string }
 
- presentation-hide-shape =
 
-   element presentation:hide-shape {
 
-     common-presentation-effect-attlist, presentation-sound?
 
-   }
 
- presentation-hide-text =
 
-   element presentation:hide-text {
 
-     common-presentation-effect-attlist, presentation-sound?
 
-   }
 
- presentation-notes =
 
-   element presentation:notes {
 
-     common-presentation-header-footer-attlist,
 
-     presentation-notes-attlist,
 
-     office-forms,
 
-     shape*
 
-   }
 
- presentation-notes-attlist =
 
-   attribute style:page-layout-name { styleNameRef }?
 
-   & attribute draw:style-name { styleNameRef }?
 
- presentation-placeholder =
 
-   element presentation:placeholder {
 
-     attribute presentation:object { presentation-classes },
 
-     attribute svg:x { coordinate | percent },
 
-     attribute svg:y { coordinate | percent },
 
-     attribute svg:width { length | percent },
 
-     attribute svg:height { length | percent },
 
-     empty
 
-   }
 
- presentation-play =
 
-   element presentation:play { presentation-play-attlist, empty }
 
- presentation-play-attlist =
 
-   attribute draw:shape-id { IDREF },
 
-   attribute presentation:speed { presentationSpeeds }?
 
- presentation-settings =
 
-   element presentation:settings {
 
-     presentation-settings-attlist, presentation-show*
 
-   }?
 
- presentation-settings-attlist =
 
-   attribute presentation:start-page { \string }?
 
-   & attribute presentation:show { \string }?
 
-   & attribute presentation:full-screen { boolean }?
 
-   & attribute presentation:endless { boolean }?
 
-   & attribute presentation:pause { duration }?
 
-   & attribute presentation:show-logo { boolean }?
 
-   & attribute presentation:force-manual { boolean }?
 
-   & attribute presentation:mouse-visible { boolean }?
 
-   & attribute presentation:mouse-as-pen { boolean }?
 
-   & attribute presentation:start-with-navigator { boolean }?
 
-   & attribute presentation:animations { "enabled" | "disabled" }?
 
-   & attribute presentation:transition-on-click {
 
-       "enabled" | "disabled"
 
-     }?
 
-   & attribute presentation:stay-on-top { boolean }?
 
-   & attribute presentation:show-end-of-presentation-slide { boolean }?
 
- presentation-shape-attlist =
 
-   attribute presentation:class { presentation-classes }?
 
-   & attribute presentation:placeholder { boolean }?
 
-   & attribute presentation:user-transformed { boolean }?
 
- presentation-show =
 
-   element presentation:show { presentation-show-attlist, empty }
 
- presentation-show-attlist =
 
-   attribute presentation:name { \string }
 
-   & attribute presentation:pages { \string }
 
- presentation-show-shape =
 
-   element presentation:show-shape {
 
-     common-presentation-effect-attlist, presentation-sound?
 
-   }
 
- presentation-show-text =
 
-   element presentation:show-text {
 
-     common-presentation-effect-attlist, presentation-sound?
 
-   }
 
- presentation-sound =
 
-   element presentation:sound {
 
-     presentation-sound-attlist,
 
-     attribute xlink:type { "simple" },
 
-     attribute xlink:href { anyIRI },
 
-     attribute xlink:actuate { "onRequest" }?,
 
-     attribute xlink:show { "new" | "replace" }?,
 
-     empty
 
-   }
 
- presentation-sound-attlist =
 
-   attribute presentation:play-full { boolean }?
 
-   & xml-id?
 
- presentationEffectDirections =
 
-   "none"
 
-   | "from-left"
 
-   | "from-top"
 
-   | "from-right"
 
-   | "from-bottom"
 
-   | "from-center"
 
-   | "from-upper-left"
 
-   | "from-upper-right"
 
-   | "from-lower-left"
 
-   | "from-lower-right"
 
-   | "to-left"
 
-   | "to-top"
 
-   | "to-right"
 
-   | "to-bottom"
 
-   | "to-upper-left"
 
-   | "to-upper-right"
 
-   | "to-lower-right"
 
-   | "to-lower-left"
 
-   | "path"
 
-   | "spiral-inward-left"
 
-   | "spiral-inward-right"
 
-   | "spiral-outward-left"
 
-   | "spiral-outward-right"
 
-   | "vertical"
 
-   | "horizontal"
 
-   | "to-center"
 
-   | "clockwise"
 
-   | "counter-clockwise"
 
- presentationEffects =
 
-   "none"
 
-   | "fade"
 
-   | "move"
 
-   | "stripes"
 
-   | "open"
 
-   | "close"
 
-   | "dissolve"
 
-   | "wavyline"
 
-   | "random"
 
-   | "lines"
 
-   | "laser"
 
-   | "appear"
 
-   | "hide"
 
-   | "move-short"
 
-   | "checkerboard"
 
-   | "rotate"
 
-   | "stretch"
 
- presentationSpeeds = "slow" | "medium" | "fast"
 
- region-content = text-p*
 
- relativeLength = xsd:string { pattern = "[0-9]+\*" }
 
- rowOrCol = "row" | "column"
 
- script-event-listener =
 
-   element script:event-listener { script-event-listener-attlist, empty }
 
- script-event-listener-attlist =
 
-   attribute script:event-name { \string }
 
-   & attribute script:language { \string }
 
-   & (attribute script:macro-name { \string }
 
-      | (attribute xlink:type { "simple" },
 
-         attribute xlink:href { anyIRI },
 
-         attribute xlink:actuate { "onRequest" }?))
 
- scriptCode = xsd:token { pattern = "[A-Za-z0-9]{1,8}" }
 
- selected = attribute form:selected { boolean }?
 
- shadowType = "none" | \string
 
- shape = shape-instance | draw-a
 
- shape-instance =
 
-   draw-rect
 
-   | draw-line
 
-   | draw-polyline
 
-   | draw-polygon
 
-   | draw-regular-polygon
 
-   | draw-path
 
-   | draw-circle
 
-   | draw-ellipse
 
-   | draw-g
 
-   | draw-page-thumbnail
 
-   | draw-frame
 
-   | draw-measure
 
-   | draw-caption
 
-   | draw-connector
 
-   | draw-control
 
-   | dr3d-scene
 
-   | draw-custom-shape
 
- shapes3d =
 
-   dr3d-scene | dr3d-extrude | dr3d-sphere | dr3d-rotate | dr3d-cube
 
- signedZeroToHundredPercent =
 
-   xsd:string {
 
-     pattern = "-?([0-9]?[0-9](\.[0-9]*)?|100(\.0*)?|\.[0-9]+)%"
 
-   }
 
- size = attribute form:size { nonNegativeInteger }?
 
- states = "unchecked" | "checked" | "unknown"
 
- \string = xsd:string
 
- style-background-image =
 
-   element style:background-image {
 
-     style-background-image-attlist,
 
-     (common-draw-data-attlist | office-binary-data | empty)
 
-   }?
 
- style-background-image-attlist =
 
-   attribute style:repeat { "no-repeat" | "repeat" | "stretch" }?
 
-   & attribute style:position {
 
-       "left"
 
-       | "center"
 
-       | "right"
 
-       | "top"
 
-       | "bottom"
 
-       | list { horiBackPos, vertBackPos }
 
-       | list { vertBackPos, horiBackPos }
 
-     }?
 
-   & attribute style:filter-name { \string }?
 
-   & attribute draw:opacity { zeroToHundredPercent }?
 
- style-chart-properties =
 
-   element style:chart-properties {
 
-     style-chart-properties-content-strict
 
-   }
 
- style-chart-properties-attlist =
 
-   attribute chart:scale-text { boolean }?
 
-   & attribute chart:three-dimensional { boolean }?
 
-   & attribute chart:deep { boolean }?
 
-   & attribute chart:right-angled-axes { boolean }?
 
-   & (attribute chart:symbol-type { "none" }
 
-      | attribute chart:symbol-type { "automatic" }
 
-      | (attribute chart:symbol-type { "named-symbol" },
 
-         attribute chart:symbol-name {
 
-           "square"
 
-           | "diamond"
 
-           | "arrow-down"
 
-           | "arrow-up"
 
-           | "arrow-right"
 
-           | "arrow-left"
 
-           | "bow-tie"
 
-           | "hourglass"
 
-           | "circle"
 
-           | "star"
 
-           | "x"
 
-           | "plus"
 
-           | "asterisk"
 
-           | "horizontal-bar"
 
-           | "vertical-bar"
 
-         })
 
-      | (attribute chart:symbol-type { "image" },
 
-         element chart:symbol-image {
 
-           attribute xlink:href { anyIRI }
 
-         })
 
-      | empty)
 
-   & attribute chart:symbol-width { nonNegativeLength }?
 
-   & attribute chart:symbol-height { nonNegativeLength }?
 
-   & attribute chart:sort-by-x-values { boolean }?
 
-   & attribute chart:vertical { boolean }?
 
-   & attribute chart:connect-bars { boolean }?
 
-   & attribute chart:gap-width { integer }?
 
-   & attribute chart:overlap { integer }?
 
-   & attribute chart:group-bars-per-axis { boolean }?
 
-   & attribute chart:japanese-candle-stick { boolean }?
 
-   & attribute chart:interpolation {
 
-       "none"
 
-       | "cubic-spline"
 
-       | "b-spline"
 
-       | "step-start"
 
-       | "step-end"
 
-       | "step-center-x"
 
-       | "step-center-y"
 
-     }?
 
-   & attribute chart:spline-order { positiveInteger }?
 
-   & attribute chart:spline-resolution { positiveInteger }?
 
-   & attribute chart:pie-offset { nonNegativeInteger }?
 
-   & attribute chart:angle-offset { angle }?
 
-   & attribute chart:hole-size { percent }?
 
-   & attribute chart:lines { boolean }?
 
-   & attribute chart:solid-type {
 
-       "cuboid" | "cylinder" | "cone" | "pyramid"
 
-     }?
 
-   & attribute chart:stacked { boolean }?
 
-   & attribute chart:percentage { boolean }?
 
-   & attribute chart:treat-empty-cells {
 
-       "use-zero" | "leave-gap" | "ignore"
 
-     }?
 
-   & attribute chart:link-data-style-to-source { boolean }?
 
-   & attribute chart:logarithmic { boolean }?
 
-   & attribute chart:maximum { double }?
 
-   & attribute chart:minimum { double }?
 
-   & attribute chart:origin { double }?
 
-   & attribute chart:interval-major { double }?
 
-   & attribute chart:interval-minor-divisor { positiveInteger }?
 
-   & attribute chart:tick-marks-major-inner { boolean }?
 
-   & attribute chart:tick-marks-major-outer { boolean }?
 
-   & attribute chart:tick-marks-minor-inner { boolean }?
 
-   & attribute chart:tick-marks-minor-outer { boolean }?
 
-   & attribute chart:reverse-direction { boolean }?
 
-   & attribute chart:display-label { boolean }?
 
-   & attribute chart:text-overlap { boolean }?
 
-   & attribute text:line-break { boolean }?
 
-   & attribute chart:label-arrangement {
 
-       "side-by-side" | "stagger-even" | "stagger-odd"
 
-     }?
 
-   & common-style-direction-attlist
 
-   & common-rotation-angle-attlist
 
-   & attribute chart:data-label-number {
 
-       "none" | "value" | "percentage" | "value-and-percentage"
 
-     }?
 
-   & attribute chart:data-label-text { boolean }?
 
-   & attribute chart:data-label-symbol { boolean }?
 
-   & element chart:label-separator { text-p }?
 
-   & attribute chart:label-position { labelPositions }?
 
-   & attribute chart:label-position-negative { labelPositions }?
 
-   & attribute chart:visible { boolean }?
 
-   & attribute chart:auto-position { boolean }?
 
-   & attribute chart:auto-size { boolean }?
 
-   & attribute chart:mean-value { boolean }?
 
-   & attribute chart:error-category {
 
-       "none"
 
-       | "variance"
 
-       | "standard-deviation"
 
-       | "percentage"
 
-       | "error-margin"
 
-       | "constant"
 
-       | "standard-error"
 
-       | "cell-range"
 
-     }?
 
-   & attribute chart:error-percentage { double }?
 
-   & attribute chart:error-margin { double }?
 
-   & attribute chart:error-lower-limit { double }?
 
-   & attribute chart:error-upper-limit { double }?
 
-   & attribute chart:error-upper-indicator { boolean }?
 
-   & attribute chart:error-lower-indicator { boolean }?
 
-   & attribute chart:error-lower-range { cellRangeAddressList }?
 
-   & attribute chart:error-upper-range { cellRangeAddressList }?
 
-   & attribute chart:series-source { "columns" | "rows" }?
 
-   & attribute chart:regression-type {
 
-       "none"
 
-       | "linear"
 
-       | "logarithmic"
 
-       | "moving-average"
 
-       | "exponential"
 
-       | "power"
 
-       | "polynomial"
 
-     }?
 
-   & attribute chart:regression-max-degree { positiveInteger }?
 
-   & attribute chart:regression-force-intercept { boolean }?
 
-   & attribute chart:regression-intercept-value { double }?
 
-   & attribute chart:regression-name { \string }?
 
-   & # https://issues.oasis-open.org/browse/OFFICE-3958
 
-     attribute chart:regression-period { positiveInteger }?
 
-   & attribute chart:regression-moving-type {
 
-       "prior" | "central" | "averaged-abscissa"
 
-     }?
 
-   & # https://issues.oasis-open.org/browse/OFFICE-3959
 
-     attribute chart:axis-position { "start" | "end" | double }?
 
-   & attribute chart:axis-label-position {
 
-       "near-axis"
 
-       | "near-axis-other-side"
 
-       | "outside-start"
 
-       | "outside-end"
 
-     }?
 
-   & attribute chart:tick-mark-position {
 
-       "at-labels" | "at-axis" | "at-labels-and-axis"
 
-     }?
 
-   & attribute chart:include-hidden-cells { boolean }?
 
-   & (attribute chart:data-label-series { boolean }?)
 
-     # https://issues.oasis-open.org/browse/OFFICE-2117
 
- style-chart-properties-content-strict =
 
-   style-chart-properties-attlist, style-chart-properties-elements
 
- style-chart-properties-elements = empty
 
- style-column = element style:column { style-column-attlist }
 
- style-column-attlist =
 
-   attribute style:rel-width { relativeLength }
 
-   & attribute fo:start-indent { length }?
 
-   & attribute fo:end-indent { length }?
 
-   & attribute fo:space-before { length }?
 
-   & attribute fo:space-after { length }?
 
- style-column-sep = element style:column-sep { style-column-sep-attlist }
 
- style-column-sep-attlist =
 
-   attribute style:style {
 
-     "none" | "solid" | "dotted" | "dashed" | "dot-dashed"
 
-   }?
 
-   & attribute style:width { length }
 
-   & attribute style:height { zeroToHundredPercent }?
 
-   & attribute style:vertical-align { "top" | "middle" | "bottom" }?
 
-   & attribute style:color { color }?
 
- style-columns =
 
-   element style:columns {
 
-     style-columns-attlist, style-column-sep?, style-column*
 
-   }?
 
- style-columns-attlist =
 
-   attribute fo:column-count { positiveInteger }
 
-   & attribute fo:column-gap { length }?
 
- style-default-page-layout =
 
-   element style:default-page-layout { style-page-layout-content }
 
- style-default-style =
 
-   element style:default-style { style-style-content }
 
- style-drawing-page-properties =
 
-   element style:drawing-page-properties {
 
-     style-drawing-page-properties-content-strict
 
-   }
 
- style-drawing-page-properties-attlist =
 
-   attribute presentation:transition-type {
 
-     "manual" | "automatic" | "semi-automatic"
 
-   }?
 
-   & attribute presentation:transition-style {
 
-       "none"
 
-       | "fade-from-left"
 
-       | "fade-from-top"
 
-       | "fade-from-right"
 
-       | "fade-from-bottom"
 
-       | "fade-from-upperleft"
 
-       | "fade-from-upperright"
 
-       | "fade-from-lowerleft"
 
-       | "fade-from-lowerright"
 
-       | "move-from-left"
 
-       | "move-from-top"
 
-       | "move-from-right"
 
-       | "move-from-bottom"
 
-       | "move-from-upperleft"
 
-       | "move-from-upperright"
 
-       | "move-from-lowerleft"
 
-       | "move-from-lowerright"
 
-       | "uncover-to-left"
 
-       | "uncover-to-top"
 
-       | "uncover-to-right"
 
-       | "uncover-to-bottom"
 
-       | "uncover-to-upperleft"
 
-       | "uncover-to-upperright"
 
-       | "uncover-to-lowerleft"
 
-       | "uncover-to-lowerright"
 
-       | "fade-to-center"
 
-       | "fade-from-center"
 
-       | "vertical-stripes"
 
-       | "horizontal-stripes"
 
-       | "clockwise"
 
-       | "counterclockwise"
 
-       | "open-vertical"
 
-       | "open-horizontal"
 
-       | "close-vertical"
 
-       | "close-horizontal"
 
-       | "wavyline-from-left"
 
-       | "wavyline-from-top"
 
-       | "wavyline-from-right"
 
-       | "wavyline-from-bottom"
 
-       | "spiralin-left"
 
-       | "spiralin-right"
 
-       | "spiralout-left"
 
-       | "spiralout-right"
 
-       | "roll-from-top"
 
-       | "roll-from-left"
 
-       | "roll-from-right"
 
-       | "roll-from-bottom"
 
-       | "stretch-from-left"
 
-       | "stretch-from-top"
 
-       | "stretch-from-right"
 
-       | "stretch-from-bottom"
 
-       | "vertical-lines"
 
-       | "horizontal-lines"
 
-       | "dissolve"
 
-       | "random"
 
-       | "vertical-checkerboard"
 
-       | "horizontal-checkerboard"
 
-       | "interlocking-horizontal-left"
 
-       | "interlocking-horizontal-right"
 
-       | "interlocking-vertical-top"
 
-       | "interlocking-vertical-bottom"
 
-       | "fly-away"
 
-       | "open"
 
-       | "close"
 
-       | "melt"
 
-     }?
 
-   & attribute presentation:transition-speed { presentationSpeeds }?
 
-   & attribute smil:type { \string }?
 
-   & attribute smil:subtype { \string }?
 
-   & attribute smil:direction { "forward" | "reverse" }?
 
-   & attribute smil:fadeColor { color }?
 
-   & attribute presentation:duration { duration }?
 
-   & attribute presentation:visibility { "visible" | "hidden" }?
 
-   & attribute draw:background-size { "full" | "border" }?
 
-   & attribute presentation:background-objects-visible { boolean }?
 
-   & attribute presentation:background-visible { boolean }?
 
-   & attribute presentation:display-header { boolean }?
 
-   & attribute presentation:display-footer { boolean }?
 
-   & attribute presentation:display-page-number { boolean }?
 
-   & attribute presentation:display-date-time { boolean }?
 
- style-drawing-page-properties-content-strict =
 
-   style-graphic-fill-properties-attlist,
 
-   style-drawing-page-properties-attlist,
 
-   style-drawing-page-properties-elements
 
- style-drawing-page-properties-elements = presentation-sound?
 
- style-drop-cap =
 
-   element style:drop-cap { style-drop-cap-attlist, empty }?
 
- style-drop-cap-attlist =
 
-   attribute style:length { "word" | positiveInteger }?
 
-   & attribute style:lines { positiveInteger }?
 
-   & attribute style:distance { length }?
 
-   & attribute style:style-name { styleNameRef }?
 
- style-font-face =
 
-   element style:font-face {
 
-     style-font-face-attlist, svg-font-face-src?, svg-definition-src?
 
-   }
 
- style-font-face-attlist =
 
-   attribute svg:font-family { \string }?
 
-   & attribute svg:font-style { fontStyle }?
 
-   & attribute svg:font-variant { fontVariant }?
 
-   & attribute svg:font-weight { fontWeight }?
 
-   & attribute svg:font-stretch {
 
-       "normal"
 
-       | "ultra-condensed"
 
-       | "extra-condensed"
 
-       | "condensed"
 
-       | "semi-condensed"
 
-       | "semi-expanded"
 
-       | "expanded"
 
-       | "extra-expanded"
 
-       | "ultra-expanded"
 
-     }?
 
-   & attribute svg:font-size { positiveLength }?
 
-   & attribute svg:unicode-range { \string }?
 
-   & attribute svg:units-per-em { integer }?
 
-   & attribute svg:panose-1 { \string }?
 
-   & attribute svg:stemv { integer }?
 
-   & attribute svg:stemh { integer }?
 
-   & attribute svg:slope { integer }?
 
-   & attribute svg:cap-height { integer }?
 
-   & attribute svg:x-height { integer }?
 
-   & attribute svg:accent-height { integer }?
 
-   & attribute svg:ascent { integer }?
 
-   & attribute svg:descent { integer }?
 
-   & attribute svg:widths { \string }?
 
-   & attribute svg:bbox { \string }?
 
-   & attribute svg:ideographic { integer }?
 
-   & attribute svg:alphabetic { integer }?
 
-   & attribute svg:mathematical { integer }?
 
-   & attribute svg:hanging { integer }?
 
-   & attribute svg:v-ideographic { integer }?
 
-   & attribute svg:v-alphabetic { integer }?
 
-   & attribute svg:v-mathematical { integer }?
 
-   & attribute svg:v-hanging { integer }?
 
-   & attribute svg:underline-position { integer }?
 
-   & attribute svg:underline-thickness { integer }?
 
-   & attribute svg:strikethrough-position { integer }?
 
-   & attribute svg:strikethrough-thickness { integer }?
 
-   & attribute svg:overline-position { integer }?
 
-   & attribute svg:overline-thickness { integer }?
 
-   & attribute style:name { \string }
 
-   & attribute style:font-adornments { \string }?
 
-   & attribute style:font-family-generic { fontFamilyGeneric }?
 
-   & attribute style:font-pitch { fontPitch }?
 
-   & attribute style:font-charset { textEncoding }?
 
- style-footer =
 
-   element style:footer {
 
-     common-style-header-footer-attlist, header-footer-content
 
-   }
 
- style-footer-first =
 
-   element style:footer-first {
 
-     common-style-header-footer-attlist,
 
-     header-footer-content
 
-     # https://issues.oasis-open.org/browse/OFFICE-3789
 
-   }
 
- style-footer-left =
 
-   element style:footer-left {
 
-     common-style-header-footer-attlist, header-footer-content
 
-   }
 
- style-footer-style =
 
-   element style:footer-style { style-header-footer-properties? }
 
- style-footnote-sep =
 
-   element style:footnote-sep { style-footnote-sep-attlist, empty }?
 
- style-footnote-sep-attlist =
 
-   attribute style:width { length }?,
 
-   attribute style:rel-width { percent }?,
 
-   attribute style:color { color }?,
 
-   attribute style:line-style { lineStyle }?,
 
-   attribute style:adjustment { "left" | "center" | "right" }?,
 
-   attribute style:distance-before-sep { length }?,
 
-   attribute style:distance-after-sep { length }?
 
- style-graphic-fill-properties-attlist =
 
-   attribute draw:fill {
 
-     "none" | "solid" | "bitmap" | "gradient" | "hatch"
 
-   }?
 
-   & attribute draw:fill-color { color }?
 
-   & attribute draw:secondary-fill-color { color }?
 
-   & attribute draw:fill-gradient-name { styleNameRef }?
 
-   & attribute draw:gradient-step-count { nonNegativeInteger }?
 
-   & attribute draw:fill-hatch-name { styleNameRef }?
 
-   & attribute draw:fill-hatch-solid { boolean }?
 
-   & attribute draw:fill-image-name { styleNameRef }?
 
-   & attribute style:repeat { "no-repeat" | "repeat" | "stretch" }?
 
-   & attribute draw:fill-image-width { length | percent }?
 
-   & attribute draw:fill-image-height { length | percent }?
 
-   & attribute draw:fill-image-ref-point-x { percent }?
 
-   & attribute draw:fill-image-ref-point-y { percent }?
 
-   & attribute draw:fill-image-ref-point {
 
-       "top-left"
 
-       | "top"
 
-       | "top-right"
 
-       | "left"
 
-       | "center"
 
-       | "right"
 
-       | "bottom-left"
 
-       | "bottom"
 
-       | "bottom-right"
 
-     }?
 
-   & attribute draw:tile-repeat-offset {
 
-       list { zeroToHundredPercent, ("horizontal" | "vertical") }
 
-     }?
 
-   & attribute draw:opacity { zeroToHundredPercent }?
 
-   & attribute draw:opacity-name { styleNameRef }?
 
-   & attribute svg:fill-rule { "nonzero" | "evenodd" }?
 
- style-graphic-properties =
 
-   element style:graphic-properties {
 
-     style-graphic-properties-content-strict
 
-   }
 
- style-graphic-properties-attlist =
 
-   attribute draw:stroke { "none" | "dash" | "solid" }?
 
-   & attribute draw:stroke-dash { styleNameRef }?
 
-   & attribute draw:stroke-dash-names { styleNameRefs }?
 
-   & attribute svg:stroke-width { length }?
 
-   & attribute svg:stroke-color { color }?
 
-   & attribute draw:marker-start { styleNameRef }?
 
-   & attribute draw:marker-end { styleNameRef }?
 
-   & attribute draw:marker-start-width { length }?
 
-   & attribute draw:marker-end-width { length }?
 
-   & attribute draw:marker-start-center { boolean }?
 
-   & attribute draw:marker-end-center { boolean }?
 
-   & attribute svg:stroke-opacity {
 
-       xsd:double { minInclusive = "0" maxInclusive = "1" }
 
-       | zeroToHundredPercent
 
-     }?
 
-   & attribute draw:stroke-linejoin {
 
-       "miter" | "round" | "bevel" | "middle" | "none"
 
-     }?
 
-   & attribute svg:stroke-linecap { "butt" | "square" | "round" }?
 
-   & attribute draw:symbol-color { color }?
 
-   & attribute text:animation {
 
-       "none" | "scroll" | "alternate" | "slide"
 
-     }?
 
-   & attribute text:animation-direction {
 
-       "left" | "right" | "up" | "down"
 
-     }?
 
-   & attribute text:animation-start-inside { boolean }?
 
-   & attribute text:animation-stop-inside { boolean }?
 
-   & attribute text:animation-repeat { nonNegativeInteger }?
 
-   & attribute text:animation-delay { duration }?
 
-   & attribute text:animation-steps { length }?
 
-   & attribute draw:auto-grow-width { boolean }?
 
-   & attribute draw:auto-grow-height { boolean }?
 
-   & attribute draw:fit-to-size { boolean }?
 
-   & attribute draw:fit-to-contour { boolean }?
 
-   & attribute draw:textarea-vertical-align {
 
-       "top" | "middle" | "bottom" | "justify"
 
-     }?
 
-   & attribute draw:textarea-horizontal-align {
 
-       "left" | "center" | "right" | "justify"
 
-     }?
 
-   & attribute fo:wrap-option { "no-wrap" | "wrap" }?
 
-   & attribute style:shrink-to-fit { boolean }?
 
-   & attribute draw:color-mode {
 
-       "greyscale" | "mono" | "watermark" | "standard"
 
-     }?
 
-   & attribute draw:color-inversion { boolean }?
 
-   & attribute draw:luminance { signedZeroToHundredPercent }
 
-     # https://issues.oasis-open.org/browse/OFFICE-3821
 
-     ?
 
-   & attribute draw:contrast { percent }?
 
-   & attribute draw:gamma { percent }?
 
-   & attribute draw:red { signedZeroToHundredPercent }?
 
-   & attribute draw:green { signedZeroToHundredPercent }?
 
-   & attribute draw:blue { signedZeroToHundredPercent }?
 
-   & attribute draw:image-opacity { zeroToHundredPercent }?
 
-   & attribute draw:shadow { "visible" | "hidden" }?
 
-   & attribute draw:shadow-offset-x { length }?
 
-   & attribute draw:shadow-offset-y { length }?
 
-   & attribute draw:shadow-color { color }?
 
-   & attribute draw:shadow-opacity { zeroToHundredPercent }?
 
-   & attribute draw:start-line-spacing-horizontal { distance }?
 
-   & attribute draw:start-line-spacing-vertical { distance }?
 
-   & attribute draw:end-line-spacing-horizontal { distance }?
 
-   & attribute draw:end-line-spacing-vertical { distance }?
 
-   & attribute draw:line-distance { distance }?
 
-   & attribute draw:guide-overhang { length }?
 
-   & attribute draw:guide-distance { distance }?
 
-   & attribute draw:start-guide { length }?
 
-   & attribute draw:end-guide { length }?
 
-   & attribute draw:placing { "below" | "above" }?
 
-   & attribute draw:parallel { boolean }?
 
-   & attribute draw:measure-align {
 
-       "automatic" | "left-outside" | "inside" | "right-outside"
 
-     }?
 
-   & attribute draw:measure-vertical-align {
 
-       "automatic" | "above" | "below" | "center"
 
-     }?
 
-   & attribute draw:unit {
 
-       "automatic"
 
-       | "mm"
 
-       | "cm"
 
-       | "m"
 
-       | "km"
 
-       | "pt"
 
-       | "pc"
 
-       | "inch"
 
-       | "ft"
 
-       | "mi"
 
-     }?
 
-   & attribute draw:show-unit { boolean }?
 
-   & attribute draw:decimal-places { nonNegativeInteger }?
 
-   & attribute draw:caption-type {
 
-       "straight-line" | "angled-line" | "angled-connector-line"
 
-     }?
 
-   & attribute draw:caption-angle-type { "fixed" | "free" }?
 
-   & attribute draw:caption-angle { angle }?
 
-   & attribute draw:caption-gap { distance }?
 
-   & attribute draw:caption-escape-direction {
 
-       "horizontal" | "vertical" | "auto"
 
-     }?
 
-   & attribute draw:caption-escape { length | percent }?
 
-   & attribute draw:caption-line-length { length }?
 
-   & attribute draw:caption-fit-line-length { boolean }?
 
-   & attribute dr3d:horizontal-segments { nonNegativeInteger }?
 
-   & attribute dr3d:vertical-segments { nonNegativeInteger }?
 
-   & attribute dr3d:edge-rounding { percent }?
 
-   & attribute dr3d:edge-rounding-mode { "correct" | "attractive" }?
 
-   & attribute dr3d:back-scale { percent }?
 
-   & attribute dr3d:depth { length }?
 
-   & attribute dr3d:backface-culling { "enabled" | "disabled" }?
 
-   & attribute dr3d:end-angle { angle }?
 
-   & attribute dr3d:close-front { boolean }?
 
-   & attribute dr3d:close-back { boolean }?
 
-   & attribute dr3d:lighting-mode { "standard" | "double-sided" }?
 
-   & attribute dr3d:normals-kind { "object" | "flat" | "sphere" }?
 
-   & attribute dr3d:normals-direction { "normal" | "inverse" }?
 
-   & attribute dr3d:texture-generation-mode-x {
 
-       "object" | "parallel" | "sphere"
 
-     }?
 
-   & attribute dr3d:texture-generation-mode-y {
 
-       "object" | "parallel" | "sphere"
 
-     }?
 
-   & attribute dr3d:texture-kind { "luminance" | "intensity" | "color" }?
 
-   & attribute dr3d:texture-filter { "enabled" | "disabled" }?
 
-   & attribute dr3d:texture-mode { "replace" | "modulate" | "blend" }?
 
-   & attribute dr3d:ambient-color { color }?
 
-   & attribute dr3d:emissive-color { color }?
 
-   & attribute dr3d:specular-color { color }?
 
-   & attribute dr3d:diffuse-color { color }?
 
-   & attribute dr3d:shininess { percent }?
 
-   & attribute dr3d:shadow { "visible" | "hidden" }?
 
-   & common-draw-rel-size-attlist
 
-   & attribute fo:min-width { length | percent }?
 
-   & attribute fo:min-height { length | percent }?
 
-   & attribute fo:max-height { length | percent }?
 
-   & attribute fo:max-width { length | percent }?
 
-   & common-horizontal-margin-attlist
 
-   & common-vertical-margin-attlist
 
-   & common-margin-attlist
 
-   & attribute style:print-content { boolean }?
 
-   & attribute style:protect {
 
-       "none"
 
-       | list { ("content" | "position" | "size")+ }
 
-     }?
 
-   & attribute style:horizontal-pos {
 
-       "left"
 
-       | "center"
 
-       | "right"
 
-       | "from-left"
 
-       | "inside"
 
-       | "outside"
 
-       | "from-inside"
 
-     }?
 
-   & attribute svg:x { coordinate }?
 
-   & attribute style:horizontal-rel {
 
-       "page"
 
-       | "page-content"
 
-       | "page-start-margin"
 
-       | "page-end-margin"
 
-       | "frame"
 
-       | "frame-content"
 
-       | "frame-start-margin"
 
-       | "frame-end-margin"
 
-       | "paragraph"
 
-       | "paragraph-content"
 
-       | "paragraph-start-margin"
 
-       | "paragraph-end-margin"
 
-       | "char"
 
-     }?
 
-   & common-vertical-pos-attlist
 
-   & common-vertical-rel-attlist
 
-   & common-text-anchor-attlist
 
-   & common-border-attlist
 
-   & common-border-line-width-attlist
 
-   & common-padding-attlist
 
-   & common-shadow-attlist
 
-   & common-background-color-attlist
 
-   & common-background-transparency-attlist
 
-   & common-editable-attlist
 
-   & attribute style:wrap {
 
-       "none"
 
-       | "left"
 
-       | "right"
 
-       | "parallel"
 
-       | "dynamic"
 
-       | "run-through"
 
-       | "biggest"
 
-     }?
 
-   & attribute style:wrap-dynamic-threshold { nonNegativeLength }?
 
-   & attribute style:number-wrapped-paragraphs {
 
-       "no-limit" | positiveInteger
 
-     }?
 
-   & attribute style:wrap-contour { boolean }?
 
-   & attribute style:wrap-contour-mode { "full" | "outside" }?
 
-   & attribute style:run-through { "foreground" | "background" }?
 
-   & attribute style:flow-with-text { boolean }?
 
-   & attribute style:overflow-behavior {
 
-       "clip" | "auto-create-new-frame"
 
-     }?
 
-   & attribute style:mirror {
 
-       "none"
 
-       | "vertical"
 
-       | horizontal-mirror
 
-       | list { "vertical", horizontal-mirror }
 
-       | list { horizontal-mirror, "vertical" }
 
-     }?
 
-   & attribute fo:clip { "auto" | clipShape }?
 
-   & attribute draw:wrap-influence-on-position {
 
-       "iterative" | "once-concurrent" | "once-successive"
 
-     }?
 
-   & common-writing-mode-attlist
 
-   & attribute draw:frame-display-scrollbar { boolean }?
 
-   & attribute draw:frame-display-border { boolean }?
 
-   & attribute draw:frame-margin-horizontal { nonNegativePixelLength }?
 
-   & attribute draw:frame-margin-vertical { nonNegativePixelLength }?
 
-   & attribute draw:visible-area-left { nonNegativeLength }?
 
-   & attribute draw:visible-area-top { nonNegativeLength }?
 
-   & attribute draw:visible-area-width { positiveLength }?
 
-   & attribute draw:visible-area-height { positiveLength }?
 
-   & attribute draw:draw-aspect {
 
-       "content" | "thumbnail" | "icon" | "print-view"
 
-     }?
 
-   & attribute draw:ole-draw-aspect { nonNegativeInteger }?
 
- style-graphic-properties-content-strict =
 
-   style-graphic-properties-attlist,
 
-   style-graphic-fill-properties-attlist,
 
-   style-graphic-properties-elements
 
- style-graphic-properties-elements =
 
-   text-list-style? & style-background-image & style-columns
 
- style-handout-master =
 
-   element style:handout-master {
 
-     common-presentation-header-footer-attlist,
 
-     style-handout-master-attlist,
 
-     shape*
 
-   }
 
- style-handout-master-attlist =
 
-   attribute presentation:presentation-page-layout-name { styleNameRef }?
 
-   & attribute style:page-layout-name { styleNameRef }
 
-   & attribute draw:style-name { styleNameRef }?
 
- style-header =
 
-   element style:header {
 
-     common-style-header-footer-attlist, header-footer-content
 
-   }
 
- style-header-first =
 
-   element style:header-first {
 
-     common-style-header-footer-attlist,
 
-     header-footer-content
 
-     # https://issues.oasis-open.org/browse/OFFICE-3789
 
-   }
 
- style-header-footer-properties =
 
-   element style:header-footer-properties {
 
-     style-header-footer-properties-content-strict
 
-   }
 
- style-header-footer-properties-attlist =
 
-   attribute svg:height { length }?
 
-   & attribute fo:min-height { length }?
 
-   & common-horizontal-margin-attlist
 
-   & common-vertical-margin-attlist
 
-   & common-margin-attlist
 
-   & common-border-attlist
 
-   & common-border-line-width-attlist
 
-   & common-padding-attlist
 
-   & common-background-color-attlist
 
-   & common-shadow-attlist
 
-   & attribute style:dynamic-spacing { boolean }?
 
- style-header-footer-properties-content-strict =
 
-   style-header-footer-properties-attlist,
 
-   style-header-footer-properties-elements
 
- style-header-footer-properties-elements = style-background-image
 
- style-header-left =
 
-   element style:header-left {
 
-     common-style-header-footer-attlist, header-footer-content
 
-   }
 
- style-header-style =
 
-   element style:header-style { style-header-footer-properties? }
 
- style-list-level-label-alignment =
 
-   element style:list-level-label-alignment {
 
-     style-list-level-label-alignment-attlist, empty
 
-   }?
 
- style-list-level-label-alignment-attlist =
 
-   attribute text:label-followed-by { "listtab" | "space" | "nothing" }
 
-   & attribute text:list-tab-stop-position { length }?
 
-   & attribute fo:text-indent { length }?
 
-   & attribute fo:margin-left { length }?
 
- style-list-level-properties =
 
-   element style:list-level-properties {
 
-     style-list-level-properties-content-strict
 
-   }
 
- style-list-level-properties-attlist =
 
-   common-text-align
 
-   & attribute text:space-before { length }?
 
-   & attribute text:min-label-width { nonNegativeLength }?
 
-   & attribute text:min-label-distance { nonNegativeLength }?
 
-   & attribute style:font-name { \string }?
 
-   & attribute fo:width { positiveLength }?
 
-   & attribute fo:height { positiveLength }?
 
-   & common-vertical-rel-attlist
 
-   & common-vertical-pos-attlist
 
-   & attribute text:list-level-position-and-space-mode {
 
-       "label-width-and-position" | "label-alignment"
 
-     }?
 
- style-list-level-properties-content-strict =
 
-   style-list-level-properties-attlist,
 
-   style-list-level-properties-elements
 
- style-list-level-properties-elements = style-list-level-label-alignment
 
- style-map = element style:map { style-map-attlist, empty }
 
- style-map-attlist =
 
-   attribute style:condition { \string }
 
-   & attribute style:apply-style-name { styleNameRef }
 
-   & attribute style:base-cell-address { cellAddress }?
 
- style-master-page =
 
-   element style:master-page {
 
-     style-master-page-attlist,
 
-     (style-header,
 
-      style-header-left?,
 
-      (style-header-first?)
 
-      # https://issues.oasis-open.org/browse/OFFICE-3789
 
-      )?,
 
-     (style-footer,
 
-      style-footer-left?,
 
-      (style-footer-first?)
 
-      # https://issues.oasis-open.org/browse/OFFICE-3789
 
-      )?,
 
-     draw-layer-set?,
 
-     office-forms?,
 
-     shape*,
 
-     animation-element?,
 
-     presentation-notes?
 
-   }
 
- style-master-page-attlist =
 
-   attribute style:name { styleName }
 
-   & attribute style:display-name { \string }?
 
-   & attribute style:page-layout-name { styleNameRef }
 
-   & attribute draw:style-name { styleNameRef }?
 
-   & attribute style:next-style-name { styleNameRef }?
 
- style-num-letter-sync-attlist =
 
-   attribute style:num-letter-sync { boolean }?
 
- style-page-layout =
 
-   element style:page-layout {
 
-     style-page-layout-attlist, style-page-layout-content
 
-   }
 
- style-page-layout-attlist =
 
-   attribute style:name { styleName }
 
-   & attribute style:page-usage {
 
-       "all" | "left" | "right" | "mirrored"
 
-     }?
 
- style-page-layout-content =
 
-   style-page-layout-properties?,
 
-   style-header-style?,
 
-   style-footer-style?
 
- style-page-layout-properties =
 
-   element style:page-layout-properties {
 
-     style-page-layout-properties-content-strict
 
-   }
 
- style-page-layout-properties-attlist =
 
-   attribute fo:page-width { length }?
 
-   & attribute fo:page-height { length }?
 
-   & common-num-format-attlist?
 
-   & common-num-format-prefix-suffix-attlist
 
-   & attribute style:paper-tray-name { "default" | \string }?
 
-   & attribute style:print-orientation { "portrait" | "landscape" }?
 
-   & common-horizontal-margin-attlist
 
-   & common-vertical-margin-attlist
 
-   & common-margin-attlist
 
-   & common-border-attlist
 
-   & common-border-line-width-attlist
 
-   & common-padding-attlist
 
-   & common-shadow-attlist
 
-   & common-background-color-attlist
 
-   & attribute style:register-truth-ref-style-name { styleNameRef }?
 
-   & attribute style:print {
 
-       list {
 
-         ("headers"
 
-          | "grid"
 
-          | "annotations"
 
-          | "objects"
 
-          | "charts"
 
-          | "drawings"
 
-          | "formulas"
 
-          | "zero-values")*
 
-       }
 
-     }?
 
-   & attribute style:print-page-order { "ttb" | "ltr" }?
 
-   & attribute style:first-page-number { positiveInteger | "continue" }?
 
-   & (attribute style:scale-to { percent }?
 
-      | attribute style:scale-to-pages { positiveInteger }?
 
-      | (attribute style:scale-to-X { positiveInteger }?,
 
-         attribute style:scale-to-Y { positiveInteger }?))
 
-   & # https://issues.oasis-open.org/browse/OFFICE-3857
 
-     attribute style:table-centering {
 
-       "horizontal" | "vertical" | "both" | "none"
 
-     }?
 
-   & attribute style:footnote-max-height { length }?
 
-   & common-writing-mode-attlist
 
-   & attribute style:layout-grid-mode { "none" | "line" | "both" }?
 
-   & attribute style:layout-grid-standard-mode { boolean }?
 
-   & attribute style:layout-grid-base-height { length }?
 
-   & attribute style:layout-grid-ruby-height { length }?
 
-   & attribute style:layout-grid-lines { positiveInteger }?
 
-   & attribute style:layout-grid-base-width { length }?
 
-   & attribute style:layout-grid-color { color }?
 
-   & attribute style:layout-grid-ruby-below { boolean }?
 
-   & attribute style:layout-grid-print { boolean }?
 
-   & attribute style:layout-grid-display { boolean }?
 
-   & attribute style:layout-grid-snap-to { boolean }?
 
- style-page-layout-properties-content-strict =
 
-   style-page-layout-properties-attlist,
 
-   style-page-layout-properties-elements
 
- style-page-layout-properties-elements =
 
-   style-background-image & style-columns & style-footnote-sep
 
- style-paragraph-properties =
 
-   element style:paragraph-properties {
 
-     style-paragraph-properties-content-strict
 
-   }
 
- style-paragraph-properties-attlist =
 
-   attribute style:contextual-spacing { boolean }?
 
-   & # https://issues.oasis-open.org/browse/OFFICE-3767
 
-     attribute fo:line-height { "normal" | nonNegativeLength | percent }?
 
-   & attribute style:line-height-at-least { nonNegativeLength }?
 
-   & attribute style:line-spacing { length }?
 
-   & attribute style:font-independent-line-spacing { boolean }?
 
-   & common-text-align
 
-   & attribute fo:text-align-last { "start" | "center" | "justify" }?
 
-   & attribute style:justify-single-word { boolean }?
 
-   & attribute fo:keep-together { "auto" | "always" }?
 
-   & attribute fo:widows { nonNegativeInteger }?
 
-   & attribute fo:orphans { nonNegativeInteger }?
 
-   & attribute style:tab-stop-distance { nonNegativeLength }?
 
-   & attribute fo:hyphenation-keep { "auto" | "page" }?
 
-   & attribute fo:hyphenation-ladder-count {
 
-       "no-limit" | positiveInteger
 
-     }?
 
-   & attribute style:register-true { boolean }?
 
-   & common-horizontal-margin-attlist
 
-   & attribute fo:text-indent { length | percent }?
 
-   & attribute style:auto-text-indent { boolean }?
 
-   & common-vertical-margin-attlist
 
-   & common-margin-attlist
 
-   & common-break-attlist
 
-   & common-background-color-attlist
 
-   & common-border-attlist
 
-   & common-border-line-width-attlist
 
-   & attribute style:join-border { boolean }?
 
-   & common-padding-attlist
 
-   & common-shadow-attlist
 
-   & common-keep-with-next-attlist
 
-   & attribute text:number-lines { boolean }?
 
-   & attribute text:line-number { nonNegativeInteger }?
 
-   & attribute style:text-autospace { "none" | "ideograph-alpha" }?
 
-   & attribute style:punctuation-wrap { "simple" | "hanging" }?
 
-   & attribute style:line-break { "normal" | "strict" }?
 
-   & attribute style:vertical-align {
 
-       "top" | "middle" | "bottom" | "auto" | "baseline"
 
-     }?
 
-   & common-writing-mode-attlist
 
-   & attribute style:writing-mode-automatic { boolean }?
 
-   & attribute style:snap-to-layout-grid { boolean }?
 
-   & common-page-number-attlist
 
-   & common-background-transparency-attlist
 
- style-paragraph-properties-content-strict =
 
-   style-paragraph-properties-attlist,
 
-   style-paragraph-properties-elements
 
- style-paragraph-properties-elements =
 
-   style-tab-stops & style-drop-cap & style-background-image
 
- style-presentation-page-layout =
 
-   element style:presentation-page-layout {
 
-     attribute style:name { styleName },
 
-     attribute style:display-name { \string }?,
 
-     presentation-placeholder*
 
-   }
 
- style-region-center = element style:region-center { region-content }
 
- style-region-left = element style:region-left { region-content }
 
- style-region-right = element style:region-right { region-content }
 
- style-ruby-properties =
 
-   element style:ruby-properties { style-ruby-properties-content-strict }
 
- style-ruby-properties-attlist =
 
-   attribute style:ruby-position { "above" | "below" }?
 
-   & attribute style:ruby-align {
 
-       "left"
 
-       | "center"
 
-       | "right"
 
-       | "distribute-letter"
 
-       | "distribute-space"
 
-     }?
 
- style-ruby-properties-content-strict =
 
-   style-ruby-properties-attlist, style-ruby-properties-elements
 
- style-ruby-properties-elements = empty
 
- style-section-properties =
 
-   element style:section-properties {
 
-     style-section-properties-content-strict
 
-   }
 
- style-section-properties-attlist =
 
-   common-background-color-attlist
 
-   & common-horizontal-margin-attlist
 
-   & attribute style:protect { boolean }?
 
-   & common-editable-attlist
 
-   & attribute text:dont-balance-text-columns { boolean }?
 
-   & common-writing-mode-attlist
 
- style-section-properties-content-strict =
 
-   style-section-properties-attlist, style-section-properties-elements
 
- style-section-properties-elements =
 
-   style-background-image & style-columns & text-notes-configuration*
 
- style-style =
 
-   element style:style {
 
-     style-style-attlist, style-style-content, style-map*
 
-   }
 
- style-style-attlist =
 
-   attribute style:name { styleName }
 
-   & attribute style:display-name { \string }?
 
-   & attribute style:parent-style-name { styleNameRef }?
 
-   & attribute style:next-style-name { styleNameRef }?
 
-   & attribute style:list-level { positiveInteger | empty }?
 
-   & attribute style:list-style-name { styleName | empty }?
 
-   & attribute style:master-page-name { styleNameRef }?
 
-   & attribute style:auto-update { boolean }?
 
-   & attribute style:data-style-name { styleNameRef }?
 
-   & attribute style:percentage-data-style-name { styleNameRef }?
 
-   & attribute style:class { \string }?
 
-   & attribute style:default-outline-level { positiveInteger | empty }?
 
- style-style-content =
 
-   (attribute style:family { "text" },
 
-    style-text-properties?)
 
-   | (attribute style:family { "paragraph" },
 
-      style-paragraph-properties?,
 
-      style-text-properties?)
 
-   | (attribute style:family { "section" },
 
-      style-section-properties?)
 
-   | (attribute style:family { "ruby" },
 
-      style-ruby-properties?)
 
-   | (attribute style:family { "table" },
 
-      style-table-properties?)
 
-   | (attribute style:family { "table-column" },
 
-      style-table-column-properties?)
 
-   | (attribute style:family { "table-row" },
 
-      style-table-row-properties?)
 
-   | (attribute style:family { "table-cell" },
 
-      style-table-cell-properties?,
 
-      style-paragraph-properties?,
 
-      style-text-properties?)
 
-   | (attribute style:family { "graphic" | "presentation" },
 
-      style-graphic-properties?,
 
-      style-paragraph-properties?,
 
-      style-text-properties?)
 
-   | (attribute style:family { "drawing-page" },
 
-      style-drawing-page-properties?)
 
-   | (attribute style:family { "chart" },
 
-      style-chart-properties?,
 
-      style-graphic-properties?,
 
-      style-paragraph-properties?,
 
-      style-text-properties?)
 
- style-tab-stop =
 
-   element style:tab-stop { style-tab-stop-attlist, empty }
 
- style-tab-stop-attlist =
 
-   attribute style:position { length }
 
-   & (attribute style:type { "left" | "center" | "right" }?
 
-      | (attribute style:type { "char" },
 
-         style-tab-stop-char-attlist))
 
-   & attribute style:leader-type { lineType }?
 
-   & attribute style:leader-style { lineStyle }?
 
-   & attribute style:leader-width { lineWidth }?
 
-   & attribute style:leader-color { "font-color" | color }?
 
-   & attribute style:leader-text { character }?
 
-   & attribute style:leader-text-style { styleNameRef }?
 
- style-tab-stop-char-attlist = attribute style:char { character }
 
- style-tab-stops = element style:tab-stops { style-tab-stop* }?
 
- style-table-cell-properties =
 
-   element style:table-cell-properties {
 
-     style-table-cell-properties-content-strict
 
-   }
 
- style-table-cell-properties-attlist =
 
-   attribute style:vertical-align {
 
-     "top" | "middle" | "bottom" | "automatic"
 
-   }?
 
-   & attribute style:text-align-source { "fix" | "value-type" }?
 
-   & common-style-direction-attlist
 
-   & attribute style:glyph-orientation-vertical {
 
-       "auto" | "0" | "0deg" | "0rad" | "0grad"
 
-     }?
 
-   & common-writing-mode-attlist
 
-   & common-shadow-attlist
 
-   & common-background-color-attlist
 
-   & common-border-attlist
 
-   & attribute style:diagonal-tl-br { \string }?
 
-   & attribute style:diagonal-tl-br-widths { borderWidths }?
 
-   & attribute style:diagonal-bl-tr { \string }?
 
-   & attribute style:diagonal-bl-tr-widths { borderWidths }?
 
-   & common-border-line-width-attlist
 
-   & common-padding-attlist
 
-   & attribute fo:wrap-option { "no-wrap" | "wrap" }?
 
-   & common-rotation-angle-attlist
 
-   & attribute style:rotation-align {
 
-       "none" | "bottom" | "top" | "center"
 
-     }?
 
-   & attribute style:cell-protect {
 
-       "none"
 
-       | "hidden-and-protected"
 
-       | list { ("protected" | "formula-hidden")+ }
 
-     }?
 
-   & attribute style:print-content { boolean }?
 
-   & attribute style:decimal-places { nonNegativeInteger }?
 
-   & attribute style:repeat-content { boolean }?
 
-   & attribute style:shrink-to-fit { boolean }?
 
- style-table-cell-properties-content-strict =
 
-   style-table-cell-properties-attlist,
 
-   style-table-cell-properties-elements
 
- style-table-cell-properties-elements = style-background-image
 
- style-table-column-properties =
 
-   element style:table-column-properties {
 
-     style-table-column-properties-content-strict
 
-   }
 
- style-table-column-properties-attlist =
 
-   attribute style:column-width { positiveLength }?
 
-   & attribute style:rel-column-width { relativeLength }?
 
-   & attribute style:use-optimal-column-width { boolean }?
 
-   & common-break-attlist
 
- style-table-column-properties-content-strict =
 
-   style-table-column-properties-attlist,
 
-   style-table-column-properties-elements
 
- style-table-column-properties-elements = empty
 
- style-table-properties =
 
-   element style:table-properties {
 
-     style-table-properties-content-strict
 
-   }
 
- style-table-properties-attlist =
 
-   attribute style:width { positiveLength }?
 
-   & attribute style:rel-width { percent }?
 
-   & attribute table:align { "left" | "center" | "right" | "margins" }?
 
-   & common-horizontal-margin-attlist
 
-   & common-vertical-margin-attlist
 
-   & common-margin-attlist
 
-   & common-page-number-attlist
 
-   & common-break-attlist
 
-   & common-background-color-attlist
 
-   & common-shadow-attlist
 
-   & common-keep-with-next-attlist
 
-   & attribute style:may-break-between-rows { boolean }?
 
-   & attribute table:border-model { "collapsing" | "separating" }?
 
-   & common-writing-mode-attlist
 
-   & attribute table:display { boolean }?
 
-   & (attribute table:tab-color { color }?)
 
-     # https://issues.oasis-open.org/browse/OFFICE-2173
 
- style-table-properties-content-strict =
 
-   style-table-properties-attlist, style-table-properties-elements
 
- style-table-properties-elements = style-background-image
 
- style-table-row-properties =
 
-   element style:table-row-properties {
 
-     style-table-row-properties-content-strict
 
-   }
 
- style-table-row-properties-attlist =
 
-   attribute style:row-height { positiveLength }?
 
-   & attribute style:min-row-height { nonNegativeLength }?
 
-   & attribute style:use-optimal-row-height { boolean }?
 
-   & common-background-color-attlist
 
-   & common-break-attlist
 
-   & attribute fo:keep-together { "auto" | "always" }?
 
- style-table-row-properties-content-strict =
 
-   style-table-row-properties-attlist,
 
-   style-table-row-properties-elements
 
- style-table-row-properties-elements = style-background-image
 
- style-text-properties =
 
-   element style:text-properties { style-text-properties-content-strict }
 
- style-text-properties-attlist =
 
-   attribute fo:font-variant { fontVariant }?
 
-   & attribute fo:text-transform {
 
-       "none" | "lowercase" | "uppercase" | "capitalize"
 
-     }?
 
-   & attribute fo:color { color }?
 
-   & attribute style:use-window-font-color { boolean }?
 
-   & attribute style:text-outline { boolean }?
 
-   & attribute style:text-line-through-type { lineType }?
 
-   & attribute style:text-line-through-style { lineStyle }?
 
-   & attribute style:text-line-through-width { lineWidth }?
 
-   & attribute style:text-line-through-color { "font-color" | color }?
 
-   & attribute style:text-line-through-text { \string }?
 
-   & attribute style:text-line-through-text-style { styleNameRef }?
 
-   & attribute style:text-position {
 
-       list { (percent | "super" | "sub"), percent? }
 
-     }?
 
-   & attribute style:font-name { \string }?
 
-   & attribute style:font-name-asian { \string }?
 
-   & attribute style:font-name-complex { \string }?
 
-   & attribute fo:font-family { \string }?
 
-   & attribute style:font-family-asian { \string }?
 
-   & attribute style:font-family-complex { \string }?
 
-   & attribute style:font-family-generic { fontFamilyGeneric }?
 
-   & attribute style:font-family-generic-asian { fontFamilyGeneric }?
 
-   & attribute style:font-family-generic-complex { fontFamilyGeneric }?
 
-   & attribute style:font-style-name { \string }?
 
-   & attribute style:font-style-name-asian { \string }?
 
-   & attribute style:font-style-name-complex { \string }?
 
-   & attribute style:font-pitch { fontPitch }?
 
-   & attribute style:font-pitch-asian { fontPitch }?
 
-   & attribute style:font-pitch-complex { fontPitch }?
 
-   & attribute style:font-charset { textEncoding }?
 
-   & attribute style:font-charset-asian { textEncoding }?
 
-   & attribute style:font-charset-complex { textEncoding }?
 
-   & attribute fo:font-size { positiveLength | percent }?
 
-   & attribute style:font-size-asian { positiveLength | percent }?
 
-   & attribute style:font-size-complex { positiveLength | percent }?
 
-   & attribute style:font-size-rel { length }?
 
-   & attribute style:font-size-rel-asian { length }?
 
-   & attribute style:font-size-rel-complex { length }?
 
-   & attribute style:script-type {
 
-       "latin" | "asian" | "complex" | "ignore"
 
-     }?
 
-   & attribute fo:letter-spacing { length | "normal" }?
 
-   & attribute fo:language { languageCode }?
 
-   & attribute style:language-asian { languageCode }?
 
-   & attribute style:language-complex { languageCode }?
 
-   & attribute fo:country { countryCode }?
 
-   & attribute style:country-asian { countryCode }?
 
-   & attribute style:country-complex { countryCode }?
 
-   & attribute fo:script { scriptCode }?
 
-   & attribute style:script-asian { scriptCode }?
 
-   & attribute style:script-complex { scriptCode }?
 
-   & attribute style:rfc-language-tag { language }?
 
-   & attribute style:rfc-language-tag-asian { language }?
 
-   & attribute style:rfc-language-tag-complex { language }?
 
-   & attribute fo:font-style { fontStyle }?
 
-   & attribute style:font-style-asian { fontStyle }?
 
-   & attribute style:font-style-complex { fontStyle }?
 
-   & attribute style:font-relief { "none" | "embossed" | "engraved" }?
 
-   & attribute fo:text-shadow { shadowType }?
 
-   & attribute style:text-underline-type { lineType }?
 
-   & attribute style:text-underline-style { lineStyle }?
 
-   & attribute style:text-underline-width { lineWidth }?
 
-   & attribute style:text-underline-color { "font-color" | color }?
 
-   & attribute style:text-overline-type { lineType }?
 
-   & attribute style:text-overline-style { lineStyle }?
 
-   & attribute style:text-overline-width { lineWidth }?
 
-   & attribute style:text-overline-color { "font-color" | color }?
 
-   & attribute style:text-overline-mode { lineMode }?
 
-   & attribute fo:font-weight { fontWeight }?
 
-   & attribute style:font-weight-asian { fontWeight }?
 
-   & attribute style:font-weight-complex { fontWeight }?
 
-   & attribute style:text-underline-mode { lineMode }?
 
-   & attribute style:text-line-through-mode { lineMode }?
 
-   & attribute style:letter-kerning { boolean }?
 
-   & attribute style:text-blinking { boolean }?
 
-   & common-background-color-attlist
 
-   & attribute style:text-combine { "none" | "letters" | "lines" }?
 
-   & attribute style:text-combine-start-char { character }?
 
-   & attribute style:text-combine-end-char { character }?
 
-   & attribute style:text-emphasize {
 
-       "none"
 
-       | list {
 
-           ("none" | "accent" | "dot" | "circle" | "disc"),
 
-           ("above" | "below")
 
-         }
 
-     }?
 
-   & attribute style:text-scale { percent }?
 
-   & attribute style:text-rotation-angle { angle }?
 
-   & attribute style:text-rotation-scale { "fixed" | "line-height" }?
 
-   & attribute fo:hyphenate { boolean }?
 
-   & attribute fo:hyphenation-remain-char-count { positiveInteger }?
 
-   & attribute fo:hyphenation-push-char-count { positiveInteger }?
 
-   & (attribute text:display { "true" }
 
-      | attribute text:display { "none" }
 
-      | (attribute text:display { "condition" },
 
-         attribute text:condition { "none" })
 
-      | empty)
 
- style-text-properties-content-strict =
 
-   style-text-properties-attlist, style-text-properties-elements
 
- style-text-properties-elements = empty
 
- styleName = xsd:NCName
 
- styleNameRef = xsd:NCName | empty
 
- styleNameRefs = list { xsd:NCName* }
 
- styles =
 
-   style-style*
 
-   & text-list-style*
 
-   & number-number-style*
 
-   & number-currency-style*
 
-   & number-percentage-style*
 
-   & number-date-style*
 
-   & number-time-style*
 
-   & number-boolean-style*
 
-   & number-text-style*
 
- svg-definition-src =
 
-   element svg:definition-src {
 
-     common-svg-font-face-xlink-attlist, empty
 
-   }
 
- svg-desc = element svg:desc { text }
 
- svg-font-face-format =
 
-   element svg:font-face-format {
 
-     attribute svg:string { \string }?,
 
-     empty
 
-   }
 
- svg-font-face-name =
 
-   element svg:font-face-name {
 
-     attribute svg:name { \string }?,
 
-     empty
 
-   }
 
- svg-font-face-src =
 
-   element svg:font-face-src {
 
-     (svg-font-face-uri | svg-font-face-name)+
 
-   }
 
- svg-font-face-uri =
 
-   element svg:font-face-uri {
 
-     common-svg-font-face-xlink-attlist, svg-font-face-format*
 
-   }
 
- svg-linearGradient =
 
-   element svg:linearGradient {
 
-     common-svg-gradient-attlist,
 
-     attribute svg:x1 { coordinate | percent }?,
 
-     attribute svg:y1 { coordinate | percent }?,
 
-     attribute svg:x2 { coordinate | percent }?,
 
-     attribute svg:y2 { coordinate | percent }?,
 
-     svg-stop*
 
-   }
 
- svg-radialGradient =
 
-   element svg:radialGradient {
 
-     common-svg-gradient-attlist,
 
-     attribute svg:cx { coordinate | percent }?,
 
-     attribute svg:cy { coordinate | percent }?,
 
-     attribute svg:r { coordinate | percent }?,
 
-     attribute svg:fx { coordinate | percent }?,
 
-     attribute svg:fy { coordinate | percent }?,
 
-     svg-stop*
 
-   }
 
- svg-stop =
 
-   element svg:stop {
 
-     attribute svg:offset { double | percent },
 
-     attribute svg:stop-color { color }?,
 
-     attribute svg:stop-opacity { double }?
 
-   }
 
- svg-title = element svg:title { text }
 
- tab-cycles = "records" | "current" | "page"
 
- table-background =
 
-   element table:background { table-background-attlist, empty }
 
- table-background-attlist = attribute table:style-name { styleNameRef }
 
- table-body = element table:body { common-table-template-attlist, empty }
 
- table-calculation-setting-attlist =
 
-   attribute table:case-sensitive { boolean }?
 
-   & attribute table:precision-as-shown { boolean }?
 
-   & attribute table:search-criteria-must-apply-to-whole-cell {
 
-       boolean
 
-     }?
 
-   & attribute table:automatic-find-labels { boolean }?
 
-   & attribute table:use-regular-expressions { boolean }?
 
-   & attribute table:use-wildcards { boolean }?
 
-   & attribute table:null-year { positiveInteger }?
 
- table-calculation-settings =
 
-   element table:calculation-settings {
 
-     table-calculation-setting-attlist,
 
-     table-null-date?,
 
-     table-iteration?
 
-   }
 
- table-cell-address =
 
-   element table:cell-address {
 
-     common-table-cell-address-attlist, empty
 
-   }
 
- table-cell-content-change =
 
-   element table:cell-content-change {
 
-     common-table-change-attlist,
 
-     table-cell-address,
 
-     office-change-info,
 
-     table-dependencies?,
 
-     table-deletions?,
 
-     table-previous
 
-   }
 
- table-cell-content-deletion =
 
-   element table:cell-content-deletion {
 
-     attribute table:id { \string }?,
 
-     table-cell-address?,
 
-     table-change-track-table-cell?
 
-   }
 
- table-cell-range-source =
 
-   element table:cell-range-source {
 
-     table-table-cell-range-source-attlist,
 
-     table-linked-source-attlist,
 
-     empty
 
-   }
 
- table-change-deletion =
 
-   element table:change-deletion {
 
-     attribute table:id { \string }?,
 
-     empty
 
-   }
 
- table-change-track-table-cell =
 
-   element table:change-track-table-cell {
 
-     table-change-track-table-cell-attlist, text-p*
 
-   }
 
- table-change-track-table-cell-attlist =
 
-   attribute table:cell-address { cellAddress }?
 
-   & attribute table:matrix-covered { boolean }?
 
-   & attribute table:formula { \string }?
 
-   & attribute table:number-matrix-columns-spanned { positiveInteger }?
 
-   & attribute table:number-matrix-rows-spanned { positiveInteger }?
 
-   & common-value-and-type-attlist?
 
- table-columns = table-table-columns | table-table-column+
 
- table-columns-and-groups =
 
-   (table-table-column-group | table-columns-no-group)+
 
- table-columns-no-group =
 
-   (table-columns, (table-table-header-columns, table-columns?)?)
 
-   | (table-table-header-columns, table-columns?)
 
- table-consolidation =
 
-   element table:consolidation { table-consolidation-attlist, empty }
 
- table-consolidation-attlist =
 
-   attribute table:function {
 
-     "average"
 
-     | "count"
 
-     | "countnums"
 
-     | "max"
 
-     | "min"
 
-     | "product"
 
-     | "stdev"
 
-     | "stdevp"
 
-     | "sum"
 
-     | "var"
 
-     | "varp"
 
-     | \string
 
-   }
 
-   & attribute table:source-cell-range-addresses { cellRangeAddressList }
 
-   & attribute table:target-cell-address { cellAddress }
 
-   & attribute table:use-labels { "none" | "row" | "column" | "both" }?
 
-   & attribute table:link-to-source-data { boolean }?
 
- table-content-validation =
 
-   element table:content-validation {
 
-     table-validation-attlist,
 
-     table-help-message?,
 
-     (table-error-message | (table-error-macro, office-event-listeners))?
 
-   }
 
- table-content-validations =
 
-   element table:content-validations { table-content-validation+ }
 
- table-covered-table-cell =
 
-   element table:covered-table-cell {
 
-     table-table-cell-attlist, table-table-cell-content
 
-   }
 
- table-cut-offs =
 
-   element table:cut-offs {
 
-     table-movement-cut-off+
 
-     | (table-insertion-cut-off, table-movement-cut-off*)
 
-   }
 
- table-data-pilot-display-info =
 
-   element table:data-pilot-display-info {
 
-     table-data-pilot-display-info-attlist, empty
 
-   }
 
- table-data-pilot-display-info-attlist =
 
-   attribute table:enabled { boolean }
 
-   & attribute table:data-field { \string }
 
-   & attribute table:member-count { nonNegativeInteger }
 
-   & attribute table:display-member-mode { "from-top" | "from-bottom" }
 
- table-data-pilot-field =
 
-   element table:data-pilot-field {
 
-     table-data-pilot-field-attlist,
 
-     table-data-pilot-level?,
 
-     table-data-pilot-field-reference?,
 
-     table-data-pilot-groups?
 
-   }
 
- table-data-pilot-field-attlist =
 
-   attribute table:source-field-name { \string }
 
-   & (attribute table:orientation {
 
-        "row" | "column" | "data" | "hidden"
 
-      }
 
-      | (attribute table:orientation { "page" },
 
-         attribute table:selected-page { \string }))
 
-   & attribute table:is-data-layout-field { \string }?
 
-   & attribute table:function {
 
-       "auto"
 
-       | "average"
 
-       | "count"
 
-       | "countnums"
 
-       | "max"
 
-       | "min"
 
-       | "product"
 
-       | "stdev"
 
-       | "stdevp"
 
-       | "sum"
 
-       | "var"
 
-       | "varp"
 
-       | \string
 
-     }?
 
-   & attribute table:used-hierarchy { integer }?
 
- table-data-pilot-field-reference =
 
-   element table:data-pilot-field-reference {
 
-     table-data-pilot-field-reference-attlist
 
-   }
 
- table-data-pilot-field-reference-attlist =
 
-   attribute table:field-name { \string }
 
-   & ((attribute table:member-type { "named" },
 
-       attribute table:member-name { \string })
 
-      | attribute table:member-type { "previous" | "next" })
 
-   & attribute table:type {
 
-       "none"
 
-       | "member-difference"
 
-       | "member-percentage"
 
-       | "member-percentage-difference"
 
-       | "running-total"
 
-       | "row-percentage"
 
-       | "column-percentage"
 
-       | "total-percentage"
 
-       | "index"
 
-     }
 
- table-data-pilot-group =
 
-   element table:data-pilot-group {
 
-     table-data-pilot-group-attlist, table-data-pilot-group-member+
 
-   }
 
- table-data-pilot-group-attlist = attribute table:name { \string }
 
- table-data-pilot-group-member =
 
-   element table:data-pilot-group-member {
 
-     table-data-pilot-group-member-attlist
 
-   }
 
- table-data-pilot-group-member-attlist = attribute table:name { \string }
 
- table-data-pilot-groups =
 
-   element table:data-pilot-groups {
 
-     table-data-pilot-groups-attlist, table-data-pilot-group+
 
-   }
 
- table-data-pilot-groups-attlist =
 
-   attribute table:source-field-name { \string }
 
-   & (attribute table:date-start { dateOrDateTime | "auto" }
 
-      | attribute table:start { double | "auto" })?
 
-   & (attribute table:date-end { dateOrDateTime | "auto" }
 
-      | attribute table:end { double | "auto" })?
 
-   & attribute table:step { double }?
 
-   & attribute table:grouped-by {
 
-       "seconds"
 
-       | "minutes"
 
-       | "hours"
 
-       | "days"
 
-       | "months"
 
-       | "quarters"
 
-       | "years"
 
-     }?
 
- # https://issues.oasis-open.org/browse/OFFICE-2118
 
- table-data-pilot-layout-info =
 
-   element table:data-pilot-layout-info {
 
-     table-data-pilot-layout-info-attlist, empty
 
-   }
 
- table-data-pilot-layout-info-attlist =
 
-   attribute table:layout-mode {
 
-     "tabular-layout"
 
-     | "outline-subtotals-top"
 
-     | "outline-subtotals-bottom"
 
-   }
 
-   & attribute table:add-empty-lines { boolean }
 
- table-data-pilot-level =
 
-   element table:data-pilot-level {
 
-     table-data-pilot-level-attlist,
 
-     table-data-pilot-subtotals?,
 
-     table-data-pilot-members?,
 
-     table-data-pilot-display-info?,
 
-     table-data-pilot-sort-info?,
 
-     table-data-pilot-layout-info?
 
-   }
 
- table-data-pilot-level-attlist = attribute table:show-empty { boolean }?
 
- table-data-pilot-member =
 
-   element table:data-pilot-member {
 
-     table-data-pilot-member-attlist, empty
 
-   }
 
- table-data-pilot-member-attlist =
 
-   attribute table:name { \string }
 
-   & attribute table:display { boolean }?
 
-   & attribute table:show-details { boolean }?
 
- table-data-pilot-members =
 
-   element table:data-pilot-members { table-data-pilot-member* }
 
- table-data-pilot-sort-info =
 
-   element table:data-pilot-sort-info {
 
-     table-data-pilot-sort-info-attlist, empty
 
-   }
 
- table-data-pilot-sort-info-attlist =
 
-   ((attribute table:sort-mode { "data" },
 
-     attribute table:data-field { \string })
 
-    | attribute table:sort-mode { "none" | "manual" | "name" })
 
-   & attribute table:order { "ascending" | "descending" }
 
- table-data-pilot-subtotal =
 
-   element table:data-pilot-subtotal {
 
-     table-data-pilot-subtotal-attlist, empty
 
-   }
 
- table-data-pilot-subtotal-attlist =
 
-   attribute table:function {
 
-     "auto"
 
-     | "average"
 
-     | "count"
 
-     | "countnums"
 
-     | "max"
 
-     | "min"
 
-     | "product"
 
-     | "stdev"
 
-     | "stdevp"
 
-     | "sum"
 
-     | "var"
 
-     | "varp"
 
-     | \string
 
-   }
 
- table-data-pilot-subtotals =
 
-   element table:data-pilot-subtotals { table-data-pilot-subtotal* }
 
- table-data-pilot-table =
 
-   element table:data-pilot-table {
 
-     table-data-pilot-table-attlist,
 
-     (table-database-source-sql
 
-      | table-database-source-table
 
-      | table-database-source-query
 
-      | table-source-service
 
-      | table-source-cell-range)?,
 
-     table-data-pilot-field+
 
-   }
 
- table-data-pilot-table-attlist =
 
-   attribute table:name { \string }
 
-   & attribute table:application-data { \string }?
 
-   & attribute table:grand-total { "none" | "row" | "column" | "both" }?
 
-   & attribute table:ignore-empty-rows { boolean }?
 
-   & attribute table:identify-categories { boolean }?
 
-   & attribute table:target-range-address { cellRangeAddress }
 
-   & attribute table:buttons { cellRangeAddressList }?
 
-   & attribute table:show-filter-button { boolean }?
 
-   & attribute table:drill-down-on-double-click { boolean }?
 
- table-data-pilot-tables =
 
-   element table:data-pilot-tables { table-data-pilot-table* }
 
- table-database-range =
 
-   element table:database-range {
 
-     table-database-range-attlist,
 
-     (table-database-source-sql
 
-      | table-database-source-table
 
-      | table-database-source-query)?,
 
-     table-filter?,
 
-     table-sort?,
 
-     table-subtotal-rules?
 
-   }
 
- table-database-range-attlist =
 
-   attribute table:name { \string }?
 
-   & attribute table:is-selection { boolean }?
 
-   & attribute table:on-update-keep-styles { boolean }?
 
-   & attribute table:on-update-keep-size { boolean }?
 
-   & attribute table:has-persistent-data { boolean }?
 
-   & attribute table:orientation { "column" | "row" }?
 
-   & attribute table:contains-header { boolean }?
 
-   & attribute table:display-filter-buttons { boolean }?
 
-   & attribute table:target-range-address { cellRangeAddress }
 
-   & attribute table:refresh-delay { boolean }?
 
- table-database-ranges =
 
-   element table:database-ranges { table-database-range* }
 
- table-database-source-query =
 
-   element table:database-source-table {
 
-     table-database-source-table-attlist, empty
 
-   }
 
- table-database-source-query-attlist =
 
-   attribute table:database-name { \string }
 
-   & attribute table:query-name { \string }
 
- table-database-source-sql =
 
-   element table:database-source-sql {
 
-     table-database-source-sql-attlist, empty
 
-   }
 
- table-database-source-sql-attlist =
 
-   attribute table:database-name { \string }
 
-   & attribute table:sql-statement { \string }
 
-   & attribute table:parse-sql-statement { boolean }?
 
- table-database-source-table =
 
-   element table:database-source-query {
 
-     table-database-source-query-attlist, empty
 
-   }
 
- table-database-source-table-attlist =
 
-   attribute table:database-name { \string }
 
-   & attribute table:database-table-name { \string }
 
- table-dde-link =
 
-   element table:dde-link { office-dde-source, table-table }
 
- table-dde-links = element table:dde-links { table-dde-link+ }
 
- table-decls =
 
-   table-calculation-settings?,
 
-   table-content-validations?,
 
-   table-label-ranges?
 
- table-deletion =
 
-   element table:deletion {
 
-     table-deletion-attlist,
 
-     common-table-change-attlist,
 
-     office-change-info,
 
-     table-dependencies?,
 
-     table-deletions?,
 
-     table-cut-offs?
 
-   }
 
- table-deletion-attlist =
 
-   attribute table:type { "row" | "column" | "table" }
 
-   & attribute table:position { integer }
 
-   & attribute table:table { integer }?
 
-   & attribute table:multi-deletion-spanned { integer }?
 
- table-deletions =
 
-   element table:deletions {
 
-     (table-cell-content-deletion | table-change-deletion)+
 
-   }
 
- table-dependencies = element table:dependencies { table-dependency+ }
 
- table-dependency =
 
-   element table:dependency {
 
-     attribute table:id { \string },
 
-     empty
 
-   }
 
- table-desc = element table:desc { text }
 
- table-detective =
 
-   element table:detective { table-highlighted-range*, table-operation* }
 
- table-error-macro =
 
-   element table:error-macro {
 
-     attribute table:execute { boolean }?
 
-   }
 
- table-error-message =
 
-   element table:error-message {
 
-     attribute table:title { \string }?,
 
-     attribute table:display { boolean }?,
 
-     attribute table:message-type {
 
-       "stop" | "warning" | "information"
 
-     }?,
 
-     text-p*
 
-   }
 
- table-even-columns =
 
-   element table:even-columns { common-table-template-attlist, empty }
 
- table-even-rows =
 
-   element table:even-rows { common-table-template-attlist, empty }
 
- table-filter =
 
-   element table:filter {
 
-     table-filter-attlist,
 
-     (table-filter-condition | table-filter-and | table-filter-or)
 
-   }
 
- table-filter-and =
 
-   element table:filter-and {
 
-     (table-filter-or | table-filter-condition)+
 
-   }
 
- table-filter-attlist =
 
-   attribute table:target-range-address { cellRangeAddress }?
 
-   & attribute table:condition-source { "self" | "cell-range" }?
 
-   & attribute table:condition-source-range-address { cellRangeAddress }?
 
-   & attribute table:display-duplicates { boolean }?
 
- table-filter-condition =
 
-   element table:filter-condition {
 
-     table-filter-condition-attlist, table-filter-set-item*
 
-   }
 
- table-filter-condition-attlist =
 
-   attribute table:field-number { nonNegativeInteger }
 
-   & attribute table:value { \string | double }
 
-   & attribute table:operator { \string }
 
-   & attribute table:case-sensitive { \string }?
 
-   & attribute table:data-type { "text" | "number" }?
 
- table-filter-or =
 
-   element table:filter-or {
 
-     (table-filter-and | table-filter-condition)+
 
-   }
 
- table-filter-set-item =
 
-   element table:filter-set-item {
 
-     attribute table:value { \string },
 
-     empty
 
-   }
 
- table-first-column =
 
-   element table:first-column { common-table-template-attlist, empty }
 
- table-first-row =
 
-   element table:first-row { common-table-template-attlist, empty }
 
- table-functions =
 
-   table-named-expressions?,
 
-   table-database-ranges?,
 
-   table-data-pilot-tables?,
 
-   table-consolidation?,
 
-   table-dde-links?
 
- table-help-message =
 
-   element table:help-message {
 
-     attribute table:title { \string }?,
 
-     attribute table:display { boolean }?,
 
-     text-p*
 
-   }
 
- table-highlighted-range =
 
-   element table:highlighted-range {
 
-     (table-highlighted-range-attlist
 
-      | table-highlighted-range-attlist-invalid),
 
-     empty
 
-   }
 
- table-highlighted-range-attlist =
 
-   attribute table:cell-range-address { cellRangeAddress }?
 
-   & attribute table:direction {
 
-       "from-another-table" | "to-another-table" | "from-same-table"
 
-     }
 
-   & attribute table:contains-error { boolean }?
 
- table-highlighted-range-attlist-invalid =
 
-   attribute table:marked-invalid { boolean }
 
- table-insertion =
 
-   element table:insertion {
 
-     table-insertion-attlist,
 
-     common-table-change-attlist,
 
-     office-change-info,
 
-     table-dependencies?,
 
-     table-deletions?
 
-   }
 
- table-insertion-attlist =
 
-   attribute table:type { "row" | "column" | "table" }
 
-   & attribute table:position { integer }
 
-   & attribute table:count { positiveInteger }?
 
-   & attribute table:table { integer }?
 
- table-insertion-cut-off =
 
-   element table:insertion-cut-off {
 
-     table-insertion-cut-off-attlist, empty
 
-   }
 
- table-insertion-cut-off-attlist =
 
-   attribute table:id { \string }
 
-   & attribute table:position { integer }
 
- table-iteration =
 
-   element table:iteration {
 
-     attribute table:status { "enable" | "disable" }?,
 
-     attribute table:steps { positiveInteger }?,
 
-     attribute table:maximum-difference { double }?,
 
-     empty
 
-   }
 
- table-label-range =
 
-   element table:label-range { table-label-range-attlist, empty }
 
- table-label-range-attlist =
 
-   attribute table:label-cell-range-address { cellRangeAddress }
 
-   & attribute table:data-cell-range-address { cellRangeAddress }
 
-   & attribute table:orientation { "column" | "row" }
 
- table-label-ranges = element table:label-ranges { table-label-range* }
 
- table-last-column =
 
-   element table:last-column { common-table-template-attlist, empty }
 
- table-last-row =
 
-   element table:last-row { common-table-template-attlist, empty }
 
- table-linked-source-attlist =
 
-   attribute xlink:type { "simple" }
 
-   & attribute xlink:href { anyIRI }
 
-   & attribute xlink:actuate { "onRequest" }?
 
-   & attribute table:filter-name { \string }?
 
-   & attribute table:filter-options { \string }?
 
-   & attribute table:refresh-delay { duration }?
 
- table-movement =
 
-   element table:movement {
 
-     common-table-change-attlist,
 
-     table-source-range-address,
 
-     table-target-range-address,
 
-     office-change-info,
 
-     table-dependencies?,
 
-     table-deletions?
 
-   }
 
- table-movement-cut-off =
 
-   element table:movement-cut-off {
 
-     table-movement-cut-off-attlist, empty
 
-   }
 
- table-movement-cut-off-attlist =
 
-   attribute table:position { integer }
 
-   | (attribute table:start-position { integer },
 
-      attribute table:end-position { integer })
 
- table-named-expression =
 
-   element table:named-expression {
 
-     table-named-expression-attlist, empty
 
-   }
 
- table-named-expression-attlist =
 
-   attribute table:name { \string },
 
-   attribute table:expression { \string },
 
-   attribute table:base-cell-address { cellAddress }?
 
- table-named-expressions =
 
-   element table:named-expressions {
 
-     (table-named-range | table-named-expression)*
 
-   }
 
- table-named-range =
 
-   element table:named-range { table-named-range-attlist, empty }
 
- table-named-range-attlist =
 
-   attribute table:name { \string },
 
-   attribute table:cell-range-address { cellRangeAddress },
 
-   attribute table:base-cell-address { cellAddress }?,
 
-   attribute table:range-usable-as {
 
-     "none"
 
-     | list {
 
-         ("print-range" | "filter" | "repeat-row" | "repeat-column")+
 
-       }
 
-   }?
 
- table-null-date =
 
-   element table:null-date {
 
-     attribute table:value-type { "date" }?,
 
-     attribute table:date-value { date }?,
 
-     empty
 
-   }
 
- table-odd-columns =
 
-   element table:odd-columns { common-table-template-attlist, empty }
 
- table-odd-rows =
 
-   element table:odd-rows { common-table-template-attlist, empty }
 
- table-operation =
 
-   element table:operation { table-operation-attlist, empty }
 
- table-operation-attlist =
 
-   attribute table:name {
 
-     "trace-dependents"
 
-     | "remove-dependents"
 
-     | "trace-precedents"
 
-     | "remove-precedents"
 
-     | "trace-errors"
 
-   }
 
-   & attribute table:index { nonNegativeInteger }
 
- table-previous =
 
-   element table:previous {
 
-     attribute table:id { \string }?,
 
-     table-change-track-table-cell
 
-   }
 
- table-rows =
 
-   table-table-rows | (text-soft-page-break?, table-table-row)+
 
- table-rows-and-groups = (table-table-row-group | table-rows-no-group)+
 
- table-rows-no-group =
 
-   (table-rows, (table-table-header-rows, table-rows?)?)
 
-   | (table-table-header-rows, table-rows?)
 
- table-scenario =
 
-   element table:scenario { table-scenario-attlist, empty }
 
- table-scenario-attlist =
 
-   attribute table:scenario-ranges { cellRangeAddressList }
 
-   & attribute table:is-active { boolean }
 
-   & attribute table:display-border { boolean }?
 
-   & attribute table:border-color { color }?
 
-   & attribute table:copy-back { boolean }?
 
-   & attribute table:copy-styles { boolean }?
 
-   & attribute table:copy-formulas { boolean }?
 
-   & attribute table:comment { \string }?
 
-   & attribute table:protected { boolean }?
 
- table-shapes = element table:shapes { shape+ }
 
- table-sort = element table:sort { table-sort-attlist, table-sort-by+ }
 
- table-sort-attlist =
 
-   attribute table:bind-styles-to-content { boolean }?
 
-   & attribute table:target-range-address { cellRangeAddress }?
 
-   & attribute table:case-sensitive { boolean }?
 
-   & attribute table:language { languageCode }?
 
-   & attribute table:country { countryCode }?
 
-   & attribute table:script { scriptCode }?
 
-   & attribute table:rfc-language-tag { language }?
 
-   & attribute table:algorithm { \string }?
 
-   & attribute table:embedded-number-behavior {
 
-       "alpha-numeric" | "integer" | "double"
 
-     }?
 
- table-sort-by = element table:sort-by { table-sort-by-attlist, empty }
 
- table-sort-by-attlist =
 
-   attribute table:field-number { nonNegativeInteger }
 
-   & attribute table:data-type {
 
-       "text" | "number" | "automatic" | \string
 
-     }?
 
-   & attribute table:order { "ascending" | "descending" }?
 
- table-sort-groups =
 
-   element table:sort-groups { table-sort-groups-attlist, empty }
 
- table-sort-groups-attlist =
 
-   attribute table:data-type {
 
-     "text" | "number" | "automatic" | \string
 
-   }?
 
-   & attribute table:order { "ascending" | "descending" }?
 
- table-source-cell-range =
 
-   element table:source-cell-range {
 
-     table-source-cell-range-attlist, table-filter?
 
-   }
 
- table-source-cell-range-attlist =
 
-   # OFFICE-3665
 
-   (attribute table:cell-range-address { cellRangeAddress }
 
-    | (attribute table:name { \string },
 
-       attribute table:cell-range-address { cellRangeAddress }?))
 
- table-source-range-address =
 
-   element table:source-range-address {
 
-     common-table-range-attlist, empty
 
-   }
 
- table-source-service =
 
-   element table:source-service { table-source-service-attlist, empty }
 
- table-source-service-attlist =
 
-   attribute table:name { \string }
 
-   & attribute table:source-name { \string }
 
-   & attribute table:object-name { \string }
 
-   & attribute table:user-name { \string }?
 
-   & attribute table:password { \string }?
 
- table-subtotal-field =
 
-   element table:subtotal-field { table-subtotal-field-attlist, empty }
 
- table-subtotal-field-attlist =
 
-   attribute table:field-number { nonNegativeInteger }
 
-   & attribute table:function {
 
-       "average"
 
-       | "count"
 
-       | "countnums"
 
-       | "max"
 
-       | "min"
 
-       | "product"
 
-       | "stdev"
 
-       | "stdevp"
 
-       | "sum"
 
-       | "var"
 
-       | "varp"
 
-       | \string
 
-     }
 
- table-subtotal-rule =
 
-   element table:subtotal-rule {
 
-     table-subtotal-rule-attlist, table-subtotal-field*
 
-   }
 
- table-subtotal-rule-attlist =
 
-   attribute table:group-by-field-number { nonNegativeInteger }
 
- table-subtotal-rules =
 
-   element table:subtotal-rules {
 
-     table-subtotal-rules-attlist,
 
-     table-sort-groups?,
 
-     table-subtotal-rule*
 
-   }
 
- table-subtotal-rules-attlist =
 
-   attribute table:bind-styles-to-content { boolean }?
 
-   & attribute table:case-sensitive { boolean }?
 
-   & attribute table:page-breaks-on-group-change { boolean }?
 
- table-table =
 
-   element table:table {
 
-     table-table-attlist,
 
-     table-title?,
 
-     table-desc?,
 
-     table-table-source?,
 
-     office-dde-source?,
 
-     table-scenario?,
 
-     office-forms?,
 
-     table-shapes?,
 
-     table-columns-and-groups,
 
-     table-rows-and-groups,
 
-     table-named-expressions?
 
-   }
 
- table-table-attlist =
 
-   attribute table:name { \string }?
 
-   & attribute table:style-name { styleNameRef }?
 
-   & attribute table:template-name { \string }?
 
-   & attribute table:use-first-row-styles { boolean }?
 
-   & attribute table:use-last-row-styles { boolean }?
 
-   & attribute table:use-first-column-styles { boolean }?
 
-   & attribute table:use-last-column-styles { boolean }?
 
-   & attribute table:use-banding-rows-styles { boolean }?
 
-   & attribute table:use-banding-columns-styles { boolean }?
 
-   & attribute table:protected { boolean }?
 
-   & attribute table:protection-key { \string }?
 
-   & attribute table:protection-key-digest-algorithm { anyIRI }?
 
-   & attribute table:print { boolean }?
 
-   & attribute table:print-ranges { cellRangeAddressList }?
 
-   & xml-id?
 
-   & attribute table:is-sub-table { boolean }?
 
- table-table-cell =
 
-   element table:table-cell {
 
-     table-table-cell-attlist,
 
-     table-table-cell-attlist-extra,
 
-     table-table-cell-content
 
-   }
 
- table-table-cell-attlist =
 
-   attribute table:number-columns-repeated { positiveInteger }?
 
-   & attribute table:style-name { styleNameRef }?
 
-   & attribute table:content-validation-name { \string }?
 
-   & attribute table:formula { \string }?
 
-   & common-value-and-type-attlist?
 
-   & attribute table:protect { boolean }?
 
-   & attribute table:protected { boolean }?
 
-   & xml-id?
 
-   & common-in-content-meta-attlist?
 
- table-table-cell-attlist-extra =
 
-   attribute table:number-columns-spanned { positiveInteger }?
 
-   & attribute table:number-rows-spanned { positiveInteger }?
 
-   & attribute table:number-matrix-columns-spanned { positiveInteger }?
 
-   & attribute table:number-matrix-rows-spanned { positiveInteger }?
 
- table-table-cell-content =
 
-   table-cell-range-source?,
 
-   office-annotation?,
 
-   table-detective?,
 
-   text-content*
 
- table-table-cell-range-source-attlist =
 
-   attribute table:name { \string }
 
-   & attribute table:last-column-spanned { positiveInteger }
 
-   & attribute table:last-row-spanned { positiveInteger }
 
- table-table-column =
 
-   element table:table-column { table-table-column-attlist, empty }
 
- table-table-column-attlist =
 
-   attribute table:number-columns-repeated { positiveInteger }?
 
-   & attribute table:style-name { styleNameRef }?
 
-   & attribute table:visibility { table-visibility-value }?
 
-   & attribute table:default-cell-style-name { styleNameRef }?
 
-   & xml-id?
 
- table-table-column-group =
 
-   element table:table-column-group {
 
-     table-table-column-group-attlist, table-columns-and-groups
 
-   }
 
- table-table-column-group-attlist = attribute table:display { boolean }?
 
- table-table-columns =
 
-   element table:table-columns { table-table-column+ }
 
- table-table-header-columns =
 
-   element table:table-header-columns { table-table-column+ }
 
- table-table-header-rows =
 
-   element table:table-header-rows {
 
-     (text-soft-page-break?, table-table-row)+
 
-   }
 
- table-table-row =
 
-   element table:table-row {
 
-     table-table-row-attlist,
 
-     (table-table-cell | table-covered-table-cell)+
 
-   }
 
- table-table-row-attlist =
 
-   attribute table:number-rows-repeated { positiveInteger }?
 
-   & attribute table:style-name { styleNameRef }?
 
-   & attribute table:default-cell-style-name { styleNameRef }?
 
-   & attribute table:visibility { table-visibility-value }?
 
-   & xml-id?
 
- table-table-row-group =
 
-   element table:table-row-group {
 
-     table-table-row-group-attlist, table-rows-and-groups
 
-   }
 
- table-table-row-group-attlist = attribute table:display { boolean }?
 
- table-table-rows =
 
-   element table:table-rows { (text-soft-page-break?, table-table-row)+ }
 
- table-table-source =
 
-   element table:table-source {
 
-     table-table-source-attlist, table-linked-source-attlist, empty
 
-   }
 
- table-table-source-attlist =
 
-   attribute table:mode { "copy-all" | "copy-results-only" }?
 
-   & attribute table:table-name { \string }?
 
- table-table-template =
 
-   element table:table-template {
 
-     table-table-template-attlist,
 
-     table-first-row?,
 
-     table-last-row?,
 
-     table-first-column?,
 
-     table-last-column?,
 
-     table-body,
 
-     table-even-rows?,
 
-     table-odd-rows?,
 
-     table-even-columns?,
 
-     table-odd-columns?,
 
-     table-background?
 
-   }
 
- table-table-template-attlist =
 
-   attribute table:name { \string }
 
-   & attribute table:first-row-start-column { rowOrCol }
 
-   & attribute table:first-row-end-column { rowOrCol }
 
-   & attribute table:last-row-start-column { rowOrCol }
 
-   & attribute table:last-row-end-column { rowOrCol }
 
- table-target-range-address =
 
-   element table:target-range-address {
 
-     common-table-range-attlist, empty
 
-   }
 
- table-title = element table:title { text }
 
- table-tracked-changes =
 
-   element table:tracked-changes {
 
-     table-tracked-changes-attlist,
 
-     (table-cell-content-change
 
-      | table-insertion
 
-      | table-deletion
 
-      | table-movement)*
 
-   }
 
- table-tracked-changes-attlist =
 
-   attribute table:track-changes { boolean }?
 
- table-validation-attlist =
 
-   attribute table:name { \string }
 
-   & attribute table:condition { \string }?
 
-   & attribute table:base-cell-address { cellAddress }?
 
-   & attribute table:allow-empty-cell { boolean }?
 
-   & attribute table:display-list {
 
-       "none" | "unsorted" | "sort-ascending"
 
-     }?
 
- table-visibility-value = "visible" | "collapse" | "filter"
 
- target-frame = attribute office:target-frame { targetFrameName }?
 
- target-location = attribute xlink:href { anyIRI }?
 
- targetFrameName = "_self" | "_blank" | "_parent" | "_top" | \string
 
- text-a =
 
-   element text:a {
 
-     text-a-attlist, office-event-listeners?, paragraph-content*
 
-   }
 
- text-a-attlist =
 
-   attribute office:name { \string }?
 
-   & attribute office:title { \string }?
 
-   & attribute xlink:type { "simple" }
 
-   & attribute xlink:href { anyIRI }
 
-   & attribute xlink:actuate { "onRequest" }?
 
-   & attribute office:target-frame-name { targetFrameName }?
 
-   & attribute xlink:show { "new" | "replace" }?
 
-   & attribute text:style-name { styleNameRef }?
 
-   & attribute text:visited-style-name { styleNameRef }?
 
- text-alphabetical-index =
 
-   element text:alphabetical-index {
 
-     common-section-attlist,
 
-     text-alphabetical-index-source,
 
-     text-index-body
 
-   }
 
- text-alphabetical-index-auto-mark-file =
 
-   element text:alphabetical-index-auto-mark-file {
 
-     attribute xlink:type { "simple" },
 
-     attribute xlink:href { anyIRI }
 
-   }
 
- text-alphabetical-index-entry-template =
 
-   element text:alphabetical-index-entry-template {
 
-     text-alphabetical-index-entry-template-attrs,
 
-     (text-index-entry-chapter
 
-      | text-index-entry-page-number
 
-      | text-index-entry-text
 
-      | text-index-entry-span
 
-      | text-index-entry-tab-stop)*
 
-   }
 
- text-alphabetical-index-entry-template-attrs =
 
-   attribute text:outline-level { "1" | "2" | "3" | "separator" }
 
-   & attribute text:style-name { styleNameRef }
 
- text-alphabetical-index-mark-attrs =
 
-   attribute text:key1 { \string }?
 
-   & attribute text:key2 { \string }?
 
-   & attribute text:string-value-phonetic { \string }?
 
-   & attribute text:key1-phonetic { \string }?
 
-   & attribute text:key2-phonetic { \string }?
 
-   & attribute text:main-entry { boolean }?
 
- text-alphabetical-index-source =
 
-   element text:alphabetical-index-source {
 
-     text-alphabetical-index-source-attrs,
 
-     text-index-title-template?,
 
-     text-alphabetical-index-entry-template*
 
-   }
 
- text-alphabetical-index-source-attrs =
 
-   text-index-scope-attr
 
-   & text-relative-tab-stop-position-attr
 
-   & attribute text:ignore-case { boolean }?
 
-   & attribute text:main-entry-style-name { styleNameRef }?
 
-   & attribute text:alphabetical-separators { boolean }?
 
-   & attribute text:combine-entries { boolean }?
 
-   & attribute text:combine-entries-with-dash { boolean }?
 
-   & attribute text:combine-entries-with-pp { boolean }?
 
-   & attribute text:use-keys-as-entries { boolean }?
 
-   & attribute text:capitalize-entries { boolean }?
 
-   & attribute text:comma-separated { boolean }?
 
-   & attribute fo:language { languageCode }?
 
-   & attribute fo:country { countryCode }?
 
-   & attribute fo:script { scriptCode }?
 
-   & attribute style:rfc-language-tag { language }?
 
-   & attribute text:sort-algorithm { \string }?
 
- text-bibliography =
 
-   element text:bibliography {
 
-     common-section-attlist, text-bibliography-source, text-index-body
 
-   }
 
- text-bibliography-configuration =
 
-   element text:bibliography-configuration {
 
-     text-bibliography-configuration-attlist, text-sort-key*
 
-   }
 
- text-bibliography-configuration-attlist =
 
-   attribute text:prefix { \string }?
 
-   & attribute text:suffix { \string }?
 
-   & attribute text:numbered-entries { boolean }?
 
-   & attribute text:sort-by-position { boolean }?
 
-   & attribute fo:language { languageCode }?
 
-   & attribute fo:country { countryCode }?
 
-   & attribute fo:script { scriptCode }?
 
-   & attribute style:rfc-language-tag { language }?
 
-   & attribute text:sort-algorithm { \string }?
 
- text-bibliography-entry-template =
 
-   element text:bibliography-entry-template {
 
-     text-bibliography-entry-template-attrs,
 
-     (text-index-entry-span
 
-      | text-index-entry-tab-stop
 
-      | text-index-entry-bibliography)*
 
-   }
 
- text-bibliography-entry-template-attrs =
 
-   attribute text:bibliography-type { text-bibliography-types }
 
-   & attribute text:style-name { styleNameRef }
 
- text-bibliography-source =
 
-   element text:bibliography-source {
 
-     text-index-title-template?, text-bibliography-entry-template*
 
-   }
 
- text-bibliography-types =
 
-   "article"
 
-   | "book"
 
-   | "booklet"
 
-   | "conference"
 
-   | "custom1"
 
-   | "custom2"
 
-   | "custom3"
 
-   | "custom4"
 
-   | "custom5"
 
-   | "email"
 
-   | "inbook"
 
-   | "incollection"
 
-   | "inproceedings"
 
-   | "journal"
 
-   | "manual"
 
-   | "mastersthesis"
 
-   | "misc"
 
-   | "phdthesis"
 
-   | "proceedings"
 
-   | "techreport"
 
-   | "unpublished"
 
-   | "www"
 
- text-bookmark = element text:bookmark { text-bookmark-attlist, empty }
 
- text-bookmark-attlist =
 
-   attribute text:name { \string }
 
-   & xml-id?
 
- text-bookmark-end =
 
-   element text:bookmark-end { text-bookmark-end-attlist, empty }
 
- text-bookmark-end-attlist = attribute text:name { \string }
 
- text-bookmark-ref-content =
 
-   attribute text:reference-format {
 
-     common-ref-format-values
 
-     | "number-no-superior"
 
-     | "number-all-superior"
 
-     | "number"
 
-   }?
 
- text-bookmark-start =
 
-   element text:bookmark-start { text-bookmark-start-attlist, empty }
 
- text-bookmark-start-attlist =
 
-   attribute text:name { \string }
 
-   & xml-id?
 
-   & common-in-content-meta-attlist?
 
- text-changed-region =
 
-   element text:changed-region {
 
-     text-changed-region-attr, text-changed-region-content
 
-   }
 
- text-changed-region-attr =
 
-   xml-id,
 
-   attribute text:id { NCName }?
 
- text-changed-region-content =
 
-   element text:insertion { office-change-info }
 
-   | element text:deletion { office-change-info, text-content* }
 
-   | element text:format-change { office-change-info }
 
- text-chapter-attlist =
 
-   attribute text:display {
 
-     "name"
 
-     | "number"
 
-     | "number-and-name"
 
-     | "plain-number-and-name"
 
-     | "plain-number"
 
-   }
 
-   & attribute text:outline-level { nonNegativeInteger }
 
- text-common-ref-content =
 
-   text
 
-   & attribute text:ref-name { \string }?
 
- text-conditional-text-attlist =
 
-   attribute text:condition { \string }
 
-   & attribute text:string-value-if-true { \string }
 
-   & attribute text:string-value-if-false { \string }
 
-   & attribute text:current-value { boolean }?
 
- text-content =
 
-   text-h
 
-   | text-p
 
-   | text-list
 
-   | text-numbered-paragraph
 
-   | table-table
 
-   | text-section
 
-   | text-soft-page-break
 
-   | text-table-of-content
 
-   | text-illustration-index
 
-   | text-table-index
 
-   | text-object-index
 
-   | text-user-index
 
-   | text-alphabetical-index
 
-   | text-bibliography
 
-   | shape
 
-   | change-marks
 
- text-database-display-attlist =
 
-   common-field-database-table
 
-   & common-field-data-style-name-attlist
 
-   & attribute text:column-name { \string }
 
- text-database-next-attlist =
 
-   common-field-database-table
 
-   & attribute text:condition { \string }?
 
- text-database-row-select-attlist =
 
-   common-field-database-table
 
-   & attribute text:condition { \string }?
 
-   & attribute text:row-number { nonNegativeInteger }?
 
- text-date-attlist =
 
-   (common-field-fixed-attlist & common-field-data-style-name-attlist)
 
-   & attribute text:date-value { dateOrDateTime }?
 
-   & attribute text:date-adjust { duration }?
 
- text-dde-connection-decl =
 
-   element text:dde-connection-decl {
 
-     text-dde-connection-decl-attlist, common-dde-connection-decl-attlist
 
-   }
 
- text-dde-connection-decl-attlist = attribute office:name { \string }
 
- text-decls =
 
-   element text:variable-decls { text-variable-decl* }?,
 
-   element text:sequence-decls { text-sequence-decl* }?,
 
-   element text:user-field-decls { text-user-field-decl* }?,
 
-   element text:dde-connection-decls { text-dde-connection-decl* }?,
 
-   text-alphabetical-index-auto-mark-file?
 
- text-drop-down =
 
-   element text:drop-down {
 
-     attribute text:name { \string },
 
-     element text:label {
 
-       attribute text:value { \string }?,
 
-       attribute text:current-selected { boolean }?
 
-     }*,
 
-     text
 
-   }
 
- text-file-name-attlist =
 
-   attribute text:display {
 
-     "full" | "path" | "name" | "name-and-extension"
 
-   }?
 
-   & common-field-fixed-attlist
 
- text-get-page-variable-attlist = common-field-num-format-attlist
 
- text-h =
 
-   element text:h {
 
-     heading-attrs,
 
-     paragraph-attrs,
 
-     text-number?,
 
-     paragraph-content-or-hyperlink*
 
-   }
 
- text-hidden-paragraph-attlist =
 
-   attribute text:condition { \string }
 
-   & attribute text:is-hidden { boolean }?
 
- text-hidden-text-attlist =
 
-   attribute text:condition { \string }
 
-   & attribute text:string-value { \string }
 
-   & attribute text:is-hidden { boolean }?
 
- text-id = attribute text:id { \string }
 
- text-illustration-index =
 
-   element text:illustration-index {
 
-     common-section-attlist,
 
-     text-illustration-index-source,
 
-     text-index-body
 
-   }
 
- text-illustration-index-entry-content =
 
-   text-illustration-index-entry-template-attrs,
 
-   (text-index-entry-chapter
 
-    | text-index-entry-page-number
 
-    | text-index-entry-text
 
-    | text-index-entry-span
 
-    | text-index-entry-tab-stop
 
-    | text-index-entry-link-start
 
-    | text-index-entry-link-end
 
-      # https://issues.oasis-open.org/browse/OFFICE-3941
 
-      )*
 
- text-illustration-index-entry-template =
 
-   element text:illustration-index-entry-template {
 
-     text-illustration-index-entry-content
 
-   }
 
- text-illustration-index-entry-template-attrs =
 
-   attribute text:style-name { styleNameRef }
 
- text-illustration-index-source =
 
-   element text:illustration-index-source {
 
-     text-illustration-index-source-attrs,
 
-     text-index-title-template?,
 
-     text-illustration-index-entry-template?
 
-   }
 
- text-illustration-index-source-attrs =
 
-   text-index-scope-attr
 
-   & text-relative-tab-stop-position-attr
 
-   & attribute text:use-caption { boolean }?
 
-   & attribute text:caption-sequence-name { \string }?
 
-   & attribute text:caption-sequence-format {
 
-       "text" | "category-and-value" | "caption"
 
-     }?
 
- text-index-body = element text:index-body { index-content-main* }
 
- text-index-entry-bibliography =
 
-   element text:index-entry-bibliography {
 
-     text-index-entry-bibliography-attrs
 
-   }
 
- text-index-entry-bibliography-attrs =
 
-   attribute text:style-name { styleNameRef }?
 
-   & attribute text:bibliography-data-field {
 
-       "address"
 
-       | "annote"
 
-       | "author"
 
-       | "bibliography-type"
 
-       | "booktitle"
 
-       | "chapter"
 
-       | "custom1"
 
-       | "custom2"
 
-       | "custom3"
 
-       | "custom4"
 
-       | "custom5"
 
-       | "edition"
 
-       | "editor"
 
-       | "howpublished"
 
-       | "identifier"
 
-       | "institution"
 
-       | "isbn"
 
-       | "issn"
 
-       | "journal"
 
-       | "month"
 
-       | "note"
 
-       | "number"
 
-       | "organizations"
 
-       | "pages"
 
-       | "publisher"
 
-       | "report-type"
 
-       | "school"
 
-       | "series"
 
-       | "title"
 
-       | "url"
 
-       | "volume"
 
-       | "year"
 
-     }
 
- text-index-entry-chapter =
 
-   element text:index-entry-chapter {
 
-     attribute text:style-name { styleNameRef }?,
 
-     text-index-entry-chapter-attrs
 
-   }
 
- text-index-entry-chapter-attrs =
 
-   attribute text:display {
 
-     "name"
 
-     | "number"
 
-     | "number-and-name"
 
-     | "plain-number"
 
-     | "plain-number-and-name"
 
-   }?
 
-   & attribute text:outline-level { positiveInteger }?
 
- text-index-entry-link-end =
 
-   element text:index-entry-link-end {
 
-     attribute text:style-name { styleNameRef }?
 
-   }
 
- text-index-entry-link-start =
 
-   element text:index-entry-link-start {
 
-     attribute text:style-name { styleNameRef }?
 
-   }
 
- text-index-entry-page-number =
 
-   element text:index-entry-page-number {
 
-     attribute text:style-name { styleNameRef }?
 
-   }
 
- text-index-entry-span =
 
-   element text:index-entry-span {
 
-     attribute text:style-name { styleNameRef }?,
 
-     text
 
-   }
 
- text-index-entry-tab-stop =
 
-   element text:index-entry-tab-stop {
 
-     attribute text:style-name { styleNameRef }?,
 
-     text-index-entry-tab-stop-attrs
 
-   }
 
- text-index-entry-tab-stop-attrs =
 
-   attribute style:leader-char { character }?
 
-   & (attribute style:type { "right" }
 
-      | (attribute style:type { "left" },
 
-         attribute style:position { length }))
 
- text-index-entry-text =
 
-   element text:index-entry-text {
 
-     attribute text:style-name { styleNameRef }?
 
-   }
 
- text-index-name = attribute text:index-name { \string }
 
- text-index-scope-attr =
 
-   attribute text:index-scope { "document" | "chapter" }?
 
- text-index-source-style =
 
-   element text:index-source-style {
 
-     attribute text:style-name { styleNameRef },
 
-     empty
 
-   }
 
- # https://issues.oasis-open.org/browse/OFFICE-3675
 
- text-index-source-styles =
 
-   element text:index-source-styles {
 
-     attribute text:outline-level { positiveInteger },
 
-     text-index-source-style*
 
-   }
 
- text-index-title =
 
-   element text:index-title {
 
-     common-section-attlist, index-content-main*
 
-   }
 
- text-index-title-template =
 
-   element text:index-title-template {
 
-     attribute text:style-name { styleNameRef }?,
 
-     text
 
-   }
 
- text-linenumbering-configuration =
 
-   element text:linenumbering-configuration {
 
-     text-linenumbering-configuration-attlist,
 
-     text-linenumbering-separator?
 
-   }
 
- text-linenumbering-configuration-attlist =
 
-   attribute text:number-lines { boolean }?
 
-   & common-num-format-attlist?
 
-   & attribute text:style-name { styleNameRef }?
 
-   & attribute text:increment { nonNegativeInteger }?
 
-   & attribute text:number-position {
 
-       "left" | "right" | "inner" | "outer"
 
-     }?
 
-   & attribute text:offset { nonNegativeLength }?
 
-   & attribute text:count-empty-lines { boolean }?
 
-   & attribute text:count-in-text-boxes { boolean }?
 
-   & attribute text:restart-on-page { boolean }?
 
- text-linenumbering-separator =
 
-   element text:linenumbering-separator {
 
-     attribute text:increment { nonNegativeInteger }?,
 
-     text
 
-   }
 
- text-list =
 
-   element text:list {
 
-     text-list-attr, text-list-header?, text-list-item*
 
-   }
 
- text-list-attr =
 
-   attribute text:style-name { styleNameRef }?
 
-   & attribute text:continue-numbering { boolean }?
 
-   & attribute text:continue-list { IDREF }?
 
-   & xml-id?
 
- text-list-header =
 
-   element text:list-header {
 
-     text-list-header-attr, text-list-item-content
 
-   }
 
- text-list-header-attr = xml-id?
 
- text-list-item =
 
-   element text:list-item { text-list-item-attr, text-list-item-content }
 
- text-list-item-attr =
 
-   attribute text:start-value { nonNegativeInteger }?
 
-   & attribute text:style-override { styleNameRef }?
 
-   & xml-id?
 
- text-list-item-content =
 
-   text-number?, (text-p | text-h | text-list | text-soft-page-break)*
 
- text-list-level-style-attr = attribute text:level { positiveInteger }
 
- text-list-level-style-bullet-attr =
 
-   attribute text:style-name { styleNameRef }?
 
-   & attribute text:bullet-char { character }
 
-   & common-num-format-prefix-suffix-attlist
 
-   & attribute text:bullet-relative-size { percent }?
 
- text-list-level-style-image-attr =
 
-   common-draw-data-attlist | office-binary-data
 
- text-list-level-style-number-attr =
 
-   attribute text:style-name { styleNameRef }?
 
-   & common-num-format-attlist
 
-   & common-num-format-prefix-suffix-attlist
 
-   & attribute text:display-levels { positiveInteger }?
 
-   & attribute text:start-value { positiveInteger }?
 
- text-list-style =
 
-   element text:list-style {
 
-     text-list-style-attr, text-list-style-content*
 
-   }
 
- text-list-style-attr =
 
-   attribute style:name { styleName }
 
-   & attribute style:display-name { \string }?
 
-   & attribute text:consecutive-numbering { boolean }?
 
- text-list-style-content =
 
-   element text:list-level-style-number {
 
-     text-list-level-style-attr,
 
-     text-list-level-style-number-attr,
 
-     style-list-level-properties?,
 
-     style-text-properties?
 
-   }
 
-   | element text:list-level-style-bullet {
 
-       text-list-level-style-attr,
 
-       text-list-level-style-bullet-attr,
 
-       style-list-level-properties?,
 
-       style-text-properties?
 
-     }
 
-   | element text:list-level-style-image {
 
-       text-list-level-style-attr,
 
-       text-list-level-style-image-attr,
 
-       style-list-level-properties?
 
-     }
 
- text-meta-attlist = common-in-content-meta-attlist? & xml-id?
 
- text-meta-field-attlist = xml-id & common-field-data-style-name-attlist
 
- text-note-class = attribute text:note-class { "footnote" | "endnote" }
 
- text-note-ref-content =
 
-   attribute text:reference-format { common-ref-format-values }?
 
-   & text-note-class
 
- text-notes-configuration =
 
-   element text:notes-configuration { text-notes-configuration-content }
 
- text-notes-configuration-content =
 
-   text-note-class
 
-   & attribute text:citation-style-name { styleNameRef }?
 
-   & attribute text:citation-body-style-name { styleNameRef }?
 
-   & attribute text:default-style-name { styleNameRef }?
 
-   & attribute text:master-page-name { styleNameRef }?
 
-   & attribute text:start-value { nonNegativeInteger }?
 
-   & common-num-format-prefix-suffix-attlist
 
-   & common-num-format-attlist?
 
-   & attribute text:start-numbering-at {
 
-       "document" | "chapter" | "page"
 
-     }?
 
-   & attribute text:footnotes-position {
 
-       "text" | "page" | "section" | "document"
 
-     }?
 
-   & element text:note-continuation-notice-forward { text }?
 
-   & element text:note-continuation-notice-backward { text }?
 
- text-number = element text:number { \string }
 
- text-numbered-paragraph =
 
-   element text:numbered-paragraph {
 
-     text-numbered-paragraph-attr, text-number?, (text-p | text-h)
 
-   }
 
- text-numbered-paragraph-attr =
 
-   attribute text:list-id { NCName }
 
-   & attribute text:level { positiveInteger }?
 
-   & (attribute text:style-name { styleNameRef },
 
-      attribute text:continue-numbering { boolean },
 
-      attribute text:start-value { nonNegativeInteger })?
 
-   & xml-id?
 
- text-object-index =
 
-   element text:object-index {
 
-     common-section-attlist, text-object-index-source, text-index-body
 
-   }
 
- text-object-index-entry-template =
 
-   element text:object-index-entry-template {
 
-     text-illustration-index-entry-content
 
-   }
 
- text-object-index-source =
 
-   element text:object-index-source {
 
-     text-object-index-source-attrs,
 
-     text-index-title-template?,
 
-     text-object-index-entry-template?
 
-   }
 
- text-object-index-source-attrs =
 
-   text-index-scope-attr
 
-   & text-relative-tab-stop-position-attr
 
-   & attribute text:use-spreadsheet-objects { boolean }?
 
-   & attribute text:use-math-objects { boolean }?
 
-   & attribute text:use-draw-objects { boolean }?
 
-   & attribute text:use-chart-objects { boolean }?
 
-   & attribute text:use-other-objects { boolean }?
 
- text-outline-level = attribute text:outline-level { positiveInteger }?
 
- text-outline-level-style =
 
-   element text:outline-level-style {
 
-     text-outline-level-style-attlist,
 
-     style-list-level-properties?,
 
-     style-text-properties?
 
-   }
 
- text-outline-level-style-attlist =
 
-   attribute text:level { positiveInteger }
 
-   & attribute text:style-name { styleNameRef }?
 
-   & common-num-format-attlist
 
-   & common-num-format-prefix-suffix-attlist
 
-   & attribute text:display-levels { positiveInteger }?
 
-   & attribute text:start-value { positiveInteger }?
 
- text-outline-style =
 
-   element text:outline-style {
 
-     text-outline-style-attr, text-outline-level-style+
 
-   }
 
- text-outline-style-attr = attribute style:name { styleName }
 
- text-p =
 
-   element text:p { paragraph-attrs, paragraph-content-or-hyperlink* }
 
- text-page = element text:page { text-page-attlist, empty }
 
- text-page-attlist = attribute text:master-page-name { styleNameRef }
 
- text-page-continuation-attlist =
 
-   attribute text:select-page { "previous" | "next" }
 
-   & attribute text:string-value { \string }?
 
- text-page-number-attlist =
 
-   (common-field-num-format-attlist & common-field-fixed-attlist)
 
-   & attribute text:page-adjust { integer }?
 
-   & attribute text:select-page { "previous" | "current" | "next" }?
 
- text-page-sequence = element text:page-sequence { text-page+ }
 
- text-placeholder-attlist =
 
-   attribute text:placeholder-type {
 
-     "text" | "table" | "text-box" | "image" | "object"
 
-   }
 
-   & common-field-description-attlist
 
- text-relative-tab-stop-position-attr =
 
-   attribute text:relative-tab-stop-position { boolean }?
 
- text-section =
 
-   element text:section {
 
-     text-section-attlist,
 
-     (text-section-source | text-section-source-dde | empty),
 
-     text-content*
 
-   }
 
- text-section-attlist =
 
-   common-section-attlist
 
-   & (attribute text:display { "true" | "none" }
 
-      | (attribute text:display { "condition" },
 
-         attribute text:condition { \string })
 
-      | empty)
 
- text-section-source =
 
-   element text:section-source { text-section-source-attr }
 
- text-section-source-attr =
 
-   (attribute xlink:type { "simple" },
 
-    attribute xlink:href { anyIRI },
 
-    attribute xlink:show { "embed" }?)?
 
-   & attribute text:section-name { \string }?
 
-   & attribute text:filter-name { \string }?
 
- text-section-source-dde = office-dde-source
 
- text-sequence-decl =
 
-   element text:sequence-decl { text-sequence-decl-attlist }
 
- text-sequence-decl-attlist =
 
-   common-field-name-attlist
 
-   & attribute text:display-outline-level { nonNegativeInteger }
 
-   & attribute text:separation-character { character }?
 
- text-sequence-ref-content =
 
-   attribute text:reference-format {
 
-     common-ref-format-values
 
-     | "category-and-value"
 
-     | "caption"
 
-     | "value"
 
-   }?
 
- text-sequence-ref-name = attribute text:ref-name { \string }?
 
- text-set-page-variable-attlist =
 
-   attribute text:active { boolean }?
 
-   & attribute text:page-adjust { integer }?
 
- text-soft-page-break = element text:soft-page-break { empty }
 
- text-sort-key = element text:sort-key { text-sort-key-attlist, empty }
 
- text-sort-key-attlist =
 
-   attribute text:key {
 
-     "address"
 
-     | "annote"
 
-     | "author"
 
-     | "bibliography-type"
 
-     | "booktitle"
 
-     | "chapter"
 
-     | "custom1"
 
-     | "custom2"
 
-     | "custom3"
 
-     | "custom4"
 
-     | "custom5"
 
-     | "edition"
 
-     | "editor"
 
-     | "howpublished"
 
-     | "identifier"
 
-     | "institution"
 
-     | "isbn"
 
-     | "issn"
 
-     | "journal"
 
-     | "month"
 
-     | "note"
 
-     | "number"
 
-     | "organizations"
 
-     | "pages"
 
-     | "publisher"
 
-     | "report-type"
 
-     | "school"
 
-     | "series"
 
-     | "title"
 
-     | "url"
 
-     | "volume"
 
-     | "year"
 
-   },
 
-   attribute text:sort-ascending { boolean }?
 
- text-style-name = attribute form:text-style-name { styleNameRef }?
 
- text-tab-attr = attribute text:tab-ref { nonNegativeInteger }?
 
- text-table-index =
 
-   element text:table-index {
 
-     common-section-attlist, text-table-index-source, text-index-body
 
-   }
 
- text-table-index-entry-template =
 
-   element text:table-index-entry-template {
 
-     text-illustration-index-entry-content
 
-   }
 
- text-table-index-source =
 
-   element text:table-index-source {
 
-     text-illustration-index-source-attrs,
 
-     text-index-title-template?,
 
-     text-table-index-entry-template?
 
-   }
 
- text-table-of-content =
 
-   element text:table-of-content {
 
-     common-section-attlist,
 
-     text-table-of-content-source,
 
-     text-index-body
 
-   }
 
- text-table-of-content-children =
 
-   text-index-entry-chapter
 
-   | text-index-entry-page-number
 
-   | text-index-entry-text
 
-   | text-index-entry-span
 
-   | text-index-entry-tab-stop
 
-   | text-index-entry-link-start
 
-   | text-index-entry-link-end
 
- text-table-of-content-entry-template =
 
-   element text:table-of-content-entry-template {
 
-     text-table-of-content-entry-template-attlist,
 
-     text-table-of-content-children*
 
-   }
 
- text-table-of-content-entry-template-attlist =
 
-   attribute text:outline-level { positiveInteger }
 
-   & attribute text:style-name { styleNameRef }
 
- text-table-of-content-source =
 
-   element text:table-of-content-source {
 
-     text-table-of-content-source-attlist,
 
-     text-index-title-template?,
 
-     text-table-of-content-entry-template*,
 
-     text-index-source-styles*
 
-   }
 
- text-table-of-content-source-attlist =
 
-   attribute text:outline-level { positiveInteger }?
 
-   & attribute text:use-outline-level { boolean }?
 
-   & attribute text:use-index-marks { boolean }?
 
-   & attribute text:use-index-source-styles { boolean }?
 
-   & attribute text:index-scope { "document" | "chapter" }?
 
-   & attribute text:relative-tab-stop-position { boolean }?
 
- text-template-name-attlist =
 
-   attribute text:display {
 
-     "full" | "path" | "name" | "name-and-extension" | "area" | "title"
 
-   }?
 
- text-time-attlist =
 
-   (common-field-fixed-attlist & common-field-data-style-name-attlist)
 
-   & attribute text:time-value { timeOrDateTime }?
 
-   & attribute text:time-adjust { duration }?
 
- text-toc-mark-start-attrs = text-id, text-outline-level
 
- text-tracked-changes =
 
-   element text:tracked-changes {
 
-     text-tracked-changes-attr, text-changed-region*
 
-   }?
 
- text-tracked-changes-attr = attribute text:track-changes { boolean }?
 
- text-user-field-decl =
 
-   element text:user-field-decl {
 
-     common-field-name-attlist,
 
-     common-field-formula-attlist?,
 
-     common-value-and-type-attlist
 
-   }
 
- text-user-index =
 
-   element text:user-index {
 
-     common-section-attlist, text-user-index-source, text-index-body
 
-   }
 
- text-user-index-entry-template =
 
-   element text:user-index-entry-template {
 
-     text-user-index-entry-template-attrs,
 
-     (text-index-entry-chapter
 
-      | text-index-entry-page-number
 
-      | text-index-entry-text
 
-      | text-index-entry-span
 
-      | text-index-entry-tab-stop
 
-      | text-index-entry-link-start
 
-      | text-index-entry-link-end
 
-        # https://issues.oasis-open.org/browse/OFFICE-3941
 
-        )*
 
-   }
 
- text-user-index-entry-template-attrs =
 
-   attribute text:outline-level { positiveInteger }
 
-   & attribute text:style-name { styleNameRef }
 
- text-user-index-source =
 
-   element text:user-index-source {
 
-     text-user-index-source-attr,
 
-     text-index-title-template?,
 
-     text-user-index-entry-template*,
 
-     text-index-source-styles*
 
-   }
 
- text-user-index-source-attr =
 
-   text-index-scope-attr
 
-   & text-relative-tab-stop-position-attr
 
-   & attribute text:use-index-marks { boolean }?
 
-   & attribute text:use-index-source-styles { boolean }?
 
-   & attribute text:use-graphics { boolean }?
 
-   & attribute text:use-tables { boolean }?
 
-   & attribute text:use-floating-frames { boolean }?
 
-   & attribute text:use-objects { boolean }?
 
-   & attribute text:copy-outline-levels { boolean }?
 
-   & attribute text:index-name { \string }
 
- text-variable-decl =
 
-   element text:variable-decl {
 
-     common-field-name-attlist, common-value-type-attlist
 
-   }
 
- textEncoding = xsd:string { pattern = "[A-Za-z][A-Za-z0-9._\-]*" }
 
- time = xsd:time
 
- timeOrDateTime = xsd:time | xsd:dateTime
 
- types = "submit" | "reset" | "push" | "url"
 
- valueType =
 
-   "float"
 
-   | "time"
 
-   | "date"
 
-   | "percentage"
 
-   | "currency"
 
-   | "boolean"
 
-   | "string"
 
- variableName = xsd:string
 
- vector3D =
 
-   xsd:string {
 
-     pattern =
 
-       "\([ ]*-?([0-9]+(\.[0-9]*)?|\.[0-9]+)([ ]+-?([0-9]+(\.[0-9]*)?|\.[0-9]+)){2}[ ]*\)"
 
-   }
 
- vertBackPos = "top" | "center" | "bottom"
 
- xforms-bind-attlist = attribute xforms:bind { \string }?
 
- xforms-model = element xforms:model { anyAttListOrElements }
 
- xml-id = attribute xml:id { ID }
 
- zeroToHundredPercent =
 
-   xsd:string {
 
-     pattern = "([0-9]?[0-9](\.[0-9]*)?|100(\.0*)?|\.[0-9]+)%"
 
-   }
 
- zeroToOneDecimal = xsd:decimal { minInclusive = "0" maxInclusive = "1" }
 
 
  |