docbook51b7.rnc 348 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900290129022903290429052906290729082909291029112912291329142915291629172918291929202921292229232924292529262927292829292930293129322933293429352936293729382939294029412942294329442945294629472948294929502951295229532954295529562957295829592960296129622963296429652966296729682969297029712972297329742975297629772978297929802981298229832984298529862987298829892990299129922993299429952996299729982999300030013002300330043005300630073008300930103011301230133014301530163017301830193020302130223023302430253026302730283029303030313032303330343035303630373038303930403041304230433044304530463047304830493050305130523053305430553056305730583059306030613062306330643065306630673068306930703071307230733074307530763077307830793080308130823083308430853086308730883089309030913092309330943095309630973098309931003101310231033104310531063107310831093110311131123113311431153116311731183119312031213122312331243125312631273128312931303131313231333134313531363137313831393140314131423143314431453146314731483149315031513152315331543155315631573158315931603161316231633164316531663167316831693170317131723173317431753176317731783179318031813182318331843185318631873188318931903191319231933194319531963197319831993200320132023203320432053206320732083209321032113212321332143215321632173218321932203221322232233224322532263227322832293230323132323233323432353236323732383239324032413242324332443245324632473248324932503251325232533254325532563257325832593260326132623263326432653266326732683269327032713272327332743275327632773278327932803281328232833284328532863287328832893290329132923293329432953296329732983299330033013302330333043305330633073308330933103311331233133314331533163317331833193320332133223323332433253326332733283329333033313332333333343335333633373338333933403341334233433344334533463347334833493350335133523353335433553356335733583359336033613362336333643365336633673368336933703371337233733374337533763377337833793380338133823383338433853386338733883389339033913392339333943395339633973398339934003401340234033404340534063407340834093410341134123413341434153416341734183419342034213422342334243425342634273428342934303431343234333434343534363437343834393440344134423443344434453446344734483449345034513452345334543455345634573458345934603461346234633464346534663467346834693470347134723473347434753476347734783479348034813482348334843485348634873488348934903491349234933494349534963497349834993500350135023503350435053506350735083509351035113512351335143515351635173518351935203521352235233524352535263527352835293530353135323533353435353536353735383539354035413542354335443545354635473548354935503551355235533554355535563557355835593560356135623563356435653566356735683569357035713572357335743575357635773578357935803581358235833584358535863587358835893590359135923593359435953596359735983599360036013602360336043605360636073608360936103611361236133614361536163617361836193620362136223623362436253626362736283629363036313632363336343635363636373638363936403641364236433644364536463647364836493650365136523653365436553656365736583659366036613662366336643665366636673668366936703671367236733674367536763677367836793680368136823683368436853686368736883689369036913692369336943695369636973698369937003701370237033704370537063707370837093710371137123713371437153716371737183719372037213722372337243725372637273728372937303731373237333734373537363737373837393740374137423743374437453746374737483749375037513752375337543755375637573758375937603761376237633764376537663767376837693770377137723773377437753776377737783779378037813782378337843785378637873788378937903791379237933794379537963797379837993800380138023803380438053806380738083809381038113812381338143815381638173818381938203821382238233824382538263827382838293830383138323833383438353836383738383839384038413842384338443845384638473848384938503851385238533854385538563857385838593860386138623863386438653866386738683869387038713872387338743875387638773878387938803881388238833884388538863887388838893890389138923893389438953896389738983899390039013902390339043905390639073908390939103911391239133914391539163917391839193920392139223923392439253926392739283929393039313932393339343935393639373938393939403941394239433944394539463947394839493950395139523953395439553956395739583959396039613962396339643965396639673968396939703971397239733974397539763977397839793980398139823983398439853986398739883989399039913992399339943995399639973998399940004001400240034004400540064007400840094010401140124013401440154016401740184019402040214022402340244025402640274028402940304031403240334034403540364037403840394040404140424043404440454046404740484049405040514052405340544055405640574058405940604061406240634064406540664067406840694070407140724073407440754076407740784079408040814082408340844085408640874088408940904091409240934094409540964097409840994100410141024103410441054106410741084109411041114112411341144115411641174118411941204121412241234124412541264127412841294130413141324133413441354136413741384139414041414142414341444145414641474148414941504151415241534154415541564157415841594160416141624163416441654166416741684169417041714172417341744175417641774178417941804181418241834184418541864187418841894190419141924193419441954196419741984199420042014202420342044205420642074208420942104211421242134214421542164217421842194220422142224223422442254226422742284229423042314232423342344235423642374238423942404241424242434244424542464247424842494250425142524253425442554256425742584259426042614262426342644265426642674268426942704271427242734274427542764277427842794280428142824283428442854286428742884289429042914292429342944295429642974298429943004301430243034304430543064307430843094310431143124313431443154316431743184319432043214322432343244325432643274328432943304331433243334334433543364337433843394340434143424343434443454346434743484349435043514352435343544355435643574358435943604361436243634364436543664367436843694370437143724373437443754376437743784379438043814382438343844385438643874388438943904391439243934394439543964397439843994400440144024403440444054406440744084409441044114412441344144415441644174418441944204421442244234424442544264427442844294430443144324433443444354436443744384439444044414442444344444445444644474448444944504451445244534454445544564457445844594460446144624463446444654466446744684469447044714472447344744475447644774478447944804481448244834484448544864487448844894490449144924493449444954496449744984499450045014502450345044505450645074508450945104511451245134514451545164517451845194520452145224523452445254526452745284529453045314532453345344535453645374538453945404541454245434544454545464547454845494550455145524553455445554556455745584559456045614562456345644565456645674568456945704571457245734574457545764577457845794580458145824583458445854586458745884589459045914592459345944595459645974598459946004601460246034604460546064607460846094610461146124613461446154616461746184619462046214622462346244625462646274628462946304631463246334634463546364637463846394640464146424643464446454646464746484649465046514652465346544655465646574658465946604661466246634664466546664667466846694670467146724673467446754676467746784679468046814682468346844685468646874688468946904691469246934694469546964697469846994700470147024703470447054706470747084709471047114712471347144715471647174718471947204721472247234724472547264727472847294730473147324733473447354736473747384739474047414742474347444745474647474748474947504751475247534754475547564757475847594760476147624763476447654766476747684769477047714772477347744775477647774778477947804781478247834784478547864787478847894790479147924793479447954796479747984799480048014802480348044805480648074808480948104811481248134814481548164817481848194820482148224823482448254826482748284829483048314832483348344835483648374838483948404841484248434844484548464847484848494850485148524853485448554856485748584859486048614862486348644865486648674868486948704871487248734874487548764877487848794880488148824883488448854886488748884889489048914892489348944895489648974898489949004901490249034904490549064907490849094910491149124913491449154916491749184919492049214922492349244925492649274928492949304931493249334934493549364937493849394940494149424943494449454946494749484949495049514952495349544955495649574958495949604961496249634964496549664967496849694970497149724973497449754976497749784979498049814982498349844985498649874988498949904991499249934994499549964997499849995000500150025003500450055006500750085009501050115012501350145015501650175018501950205021502250235024502550265027502850295030503150325033503450355036503750385039504050415042504350445045504650475048504950505051505250535054505550565057505850595060506150625063506450655066506750685069507050715072507350745075507650775078507950805081508250835084508550865087508850895090509150925093509450955096509750985099510051015102510351045105510651075108510951105111511251135114511551165117511851195120512151225123512451255126512751285129513051315132513351345135513651375138513951405141514251435144514551465147514851495150515151525153515451555156515751585159516051615162516351645165516651675168516951705171517251735174517551765177517851795180518151825183518451855186518751885189519051915192519351945195519651975198519952005201520252035204520552065207520852095210521152125213521452155216521752185219522052215222522352245225522652275228522952305231523252335234523552365237523852395240524152425243524452455246524752485249525052515252525352545255525652575258525952605261526252635264526552665267526852695270527152725273527452755276527752785279528052815282528352845285528652875288528952905291529252935294529552965297529852995300530153025303530453055306530753085309531053115312531353145315531653175318531953205321532253235324532553265327532853295330533153325333533453355336533753385339534053415342534353445345534653475348534953505351535253535354535553565357535853595360536153625363536453655366536753685369537053715372537353745375537653775378537953805381538253835384538553865387538853895390539153925393539453955396539753985399540054015402540354045405540654075408540954105411541254135414541554165417541854195420542154225423542454255426542754285429543054315432543354345435543654375438543954405441544254435444544554465447544854495450545154525453545454555456545754585459546054615462546354645465546654675468546954705471547254735474547554765477547854795480548154825483548454855486548754885489549054915492549354945495549654975498549955005501550255035504550555065507550855095510551155125513551455155516551755185519552055215522552355245525552655275528552955305531553255335534553555365537553855395540554155425543554455455546554755485549555055515552555355545555555655575558555955605561556255635564556555665567556855695570557155725573557455755576557755785579558055815582558355845585558655875588558955905591559255935594559555965597559855995600560156025603560456055606560756085609561056115612561356145615561656175618561956205621562256235624562556265627562856295630563156325633563456355636563756385639564056415642564356445645564656475648564956505651565256535654565556565657565856595660566156625663566456655666566756685669567056715672567356745675567656775678567956805681568256835684568556865687568856895690569156925693569456955696569756985699570057015702570357045705570657075708570957105711571257135714571557165717571857195720572157225723572457255726572757285729573057315732573357345735573657375738573957405741574257435744574557465747574857495750575157525753575457555756575757585759576057615762576357645765576657675768576957705771577257735774577557765777577857795780578157825783578457855786578757885789579057915792579357945795579657975798579958005801580258035804580558065807580858095810581158125813581458155816581758185819582058215822582358245825582658275828582958305831583258335834583558365837583858395840584158425843584458455846584758485849585058515852585358545855585658575858585958605861586258635864586558665867586858695870587158725873587458755876587758785879588058815882588358845885588658875888588958905891589258935894589558965897589858995900590159025903590459055906590759085909591059115912591359145915591659175918591959205921592259235924592559265927592859295930593159325933593459355936593759385939594059415942594359445945594659475948594959505951595259535954595559565957595859595960596159625963596459655966596759685969597059715972597359745975597659775978597959805981598259835984598559865987598859895990599159925993599459955996599759985999600060016002600360046005600660076008600960106011601260136014601560166017601860196020602160226023602460256026602760286029603060316032603360346035603660376038603960406041604260436044604560466047604860496050605160526053605460556056605760586059606060616062606360646065606660676068606960706071607260736074607560766077607860796080608160826083608460856086608760886089609060916092609360946095609660976098609961006101610261036104610561066107610861096110611161126113611461156116611761186119612061216122612361246125612661276128612961306131613261336134613561366137613861396140614161426143614461456146614761486149615061516152615361546155615661576158615961606161616261636164616561666167616861696170617161726173617461756176617761786179618061816182618361846185618661876188618961906191619261936194619561966197619861996200620162026203620462056206620762086209621062116212621362146215621662176218621962206221622262236224622562266227622862296230623162326233623462356236623762386239624062416242624362446245624662476248624962506251625262536254625562566257625862596260626162626263626462656266626762686269627062716272627362746275627662776278627962806281628262836284628562866287628862896290629162926293629462956296629762986299630063016302630363046305630663076308630963106311631263136314631563166317631863196320632163226323632463256326632763286329633063316332633363346335633663376338633963406341634263436344634563466347634863496350635163526353635463556356635763586359636063616362636363646365636663676368636963706371637263736374637563766377637863796380638163826383638463856386638763886389639063916392639363946395639663976398639964006401640264036404640564066407640864096410641164126413641464156416641764186419642064216422642364246425642664276428642964306431643264336434643564366437643864396440644164426443644464456446644764486449645064516452645364546455645664576458645964606461646264636464646564666467646864696470647164726473647464756476647764786479648064816482648364846485648664876488648964906491649264936494649564966497649864996500650165026503650465056506650765086509651065116512651365146515651665176518651965206521652265236524652565266527652865296530653165326533653465356536653765386539654065416542654365446545654665476548654965506551655265536554655565566557655865596560656165626563656465656566656765686569657065716572657365746575657665776578657965806581658265836584658565866587658865896590659165926593659465956596659765986599660066016602660366046605660666076608660966106611661266136614661566166617661866196620662166226623662466256626662766286629663066316632663366346635663666376638663966406641664266436644664566466647664866496650665166526653665466556656665766586659666066616662666366646665666666676668666966706671667266736674667566766677667866796680668166826683668466856686668766886689669066916692669366946695669666976698669967006701670267036704670567066707670867096710671167126713671467156716671767186719672067216722672367246725672667276728672967306731673267336734673567366737673867396740674167426743674467456746674767486749675067516752675367546755675667576758675967606761676267636764676567666767676867696770677167726773677467756776677767786779678067816782678367846785678667876788678967906791679267936794679567966797679867996800680168026803680468056806680768086809681068116812681368146815681668176818681968206821682268236824682568266827682868296830683168326833683468356836683768386839684068416842684368446845684668476848684968506851685268536854685568566857685868596860686168626863686468656866686768686869687068716872687368746875687668776878687968806881688268836884688568866887688868896890689168926893689468956896689768986899690069016902690369046905690669076908690969106911691269136914691569166917691869196920692169226923692469256926692769286929693069316932693369346935693669376938693969406941694269436944694569466947694869496950695169526953695469556956695769586959696069616962696369646965696669676968696969706971697269736974697569766977697869796980698169826983698469856986698769886989699069916992699369946995699669976998699970007001700270037004700570067007700870097010701170127013701470157016701770187019702070217022702370247025702670277028702970307031703270337034703570367037703870397040704170427043704470457046704770487049705070517052705370547055705670577058705970607061706270637064706570667067706870697070707170727073707470757076707770787079708070817082708370847085708670877088708970907091709270937094709570967097709870997100710171027103710471057106710771087109711071117112711371147115711671177118711971207121712271237124712571267127712871297130713171327133713471357136713771387139714071417142714371447145714671477148714971507151715271537154715571567157715871597160716171627163716471657166716771687169717071717172717371747175717671777178717971807181718271837184718571867187718871897190719171927193719471957196719771987199720072017202720372047205720672077208720972107211721272137214721572167217721872197220722172227223722472257226722772287229723072317232723372347235723672377238723972407241724272437244724572467247724872497250725172527253725472557256725772587259726072617262726372647265726672677268726972707271727272737274727572767277727872797280728172827283728472857286728772887289729072917292729372947295729672977298729973007301730273037304730573067307730873097310731173127313731473157316731773187319732073217322732373247325732673277328732973307331733273337334733573367337733873397340734173427343734473457346734773487349735073517352735373547355735673577358735973607361736273637364736573667367736873697370737173727373737473757376737773787379738073817382738373847385738673877388738973907391739273937394739573967397739873997400740174027403740474057406740774087409741074117412741374147415741674177418741974207421742274237424742574267427742874297430743174327433743474357436743774387439744074417442744374447445744674477448744974507451745274537454745574567457745874597460746174627463746474657466746774687469747074717472747374747475747674777478747974807481748274837484748574867487748874897490749174927493749474957496749774987499750075017502750375047505750675077508750975107511751275137514751575167517751875197520752175227523752475257526752775287529753075317532753375347535753675377538753975407541754275437544754575467547754875497550755175527553755475557556755775587559756075617562756375647565756675677568756975707571757275737574757575767577757875797580758175827583758475857586758775887589759075917592759375947595759675977598759976007601760276037604760576067607760876097610761176127613761476157616761776187619762076217622762376247625762676277628762976307631763276337634763576367637763876397640764176427643764476457646764776487649765076517652765376547655765676577658765976607661766276637664766576667667766876697670767176727673767476757676767776787679768076817682768376847685768676877688768976907691769276937694769576967697769876997700770177027703770477057706770777087709771077117712771377147715771677177718771977207721772277237724772577267727772877297730773177327733773477357736773777387739774077417742774377447745774677477748774977507751775277537754775577567757775877597760776177627763776477657766776777687769777077717772777377747775777677777778777977807781778277837784778577867787778877897790779177927793779477957796779777987799780078017802780378047805780678077808780978107811781278137814781578167817781878197820782178227823782478257826782778287829783078317832783378347835783678377838783978407841784278437844784578467847784878497850785178527853785478557856785778587859786078617862786378647865786678677868786978707871787278737874787578767877787878797880788178827883788478857886788778887889789078917892789378947895789678977898789979007901790279037904790579067907790879097910791179127913791479157916791779187919792079217922792379247925792679277928792979307931793279337934793579367937793879397940794179427943794479457946794779487949795079517952795379547955795679577958795979607961796279637964796579667967796879697970797179727973797479757976797779787979798079817982798379847985798679877988798979907991799279937994799579967997799879998000800180028003800480058006800780088009801080118012801380148015801680178018801980208021802280238024802580268027802880298030803180328033803480358036803780388039804080418042804380448045804680478048804980508051805280538054805580568057805880598060806180628063806480658066806780688069807080718072807380748075807680778078807980808081808280838084808580868087808880898090809180928093809480958096809780988099810081018102810381048105810681078108810981108111811281138114811581168117811881198120812181228123812481258126812781288129813081318132813381348135813681378138813981408141814281438144814581468147814881498150815181528153815481558156815781588159816081618162816381648165816681678168816981708171817281738174817581768177817881798180818181828183818481858186818781888189819081918192819381948195819681978198819982008201820282038204820582068207820882098210821182128213821482158216821782188219822082218222822382248225822682278228822982308231823282338234823582368237823882398240824182428243824482458246824782488249825082518252825382548255825682578258825982608261826282638264826582668267826882698270827182728273827482758276827782788279828082818282828382848285828682878288828982908291829282938294829582968297829882998300830183028303830483058306830783088309831083118312831383148315831683178318831983208321832283238324832583268327832883298330833183328333833483358336833783388339834083418342834383448345834683478348834983508351835283538354835583568357835883598360836183628363836483658366836783688369837083718372837383748375837683778378837983808381838283838384838583868387838883898390839183928393839483958396839783988399840084018402840384048405840684078408840984108411841284138414841584168417841884198420842184228423842484258426842784288429843084318432843384348435843684378438843984408441844284438444844584468447844884498450845184528453845484558456845784588459846084618462846384648465846684678468846984708471847284738474847584768477847884798480848184828483848484858486848784888489849084918492849384948495849684978498849985008501850285038504850585068507850885098510851185128513851485158516851785188519852085218522852385248525852685278528852985308531853285338534853585368537853885398540854185428543854485458546854785488549855085518552855385548555855685578558855985608561856285638564856585668567856885698570857185728573857485758576857785788579858085818582858385848585858685878588858985908591859285938594859585968597859885998600860186028603860486058606860786088609861086118612861386148615861686178618861986208621862286238624862586268627862886298630863186328633863486358636863786388639864086418642864386448645864686478648864986508651865286538654865586568657865886598660866186628663866486658666866786688669867086718672867386748675867686778678867986808681868286838684868586868687868886898690869186928693869486958696869786988699870087018702870387048705870687078708870987108711871287138714871587168717871887198720872187228723872487258726872787288729873087318732873387348735873687378738873987408741874287438744874587468747874887498750875187528753875487558756875787588759876087618762876387648765876687678768876987708771877287738774877587768777877887798780878187828783878487858786878787888789879087918792879387948795879687978798879988008801880288038804880588068807880888098810881188128813881488158816881788188819882088218822882388248825882688278828882988308831883288338834883588368837883888398840884188428843884488458846884788488849885088518852885388548855885688578858885988608861886288638864886588668867886888698870887188728873887488758876887788788879888088818882888388848885888688878888888988908891889288938894889588968897889888998900890189028903890489058906890789088909891089118912891389148915891689178918891989208921892289238924892589268927892889298930893189328933893489358936893789388939894089418942894389448945894689478948894989508951895289538954895589568957895889598960896189628963896489658966896789688969897089718972897389748975897689778978897989808981898289838984898589868987898889898990899189928993899489958996899789988999900090019002900390049005900690079008900990109011901290139014901590169017901890199020902190229023902490259026902790289029903090319032903390349035903690379038903990409041904290439044904590469047904890499050905190529053905490559056905790589059906090619062906390649065906690679068906990709071907290739074907590769077907890799080908190829083908490859086908790889089909090919092909390949095909690979098909991009101910291039104910591069107910891099110911191129113911491159116911791189119912091219122912391249125912691279128912991309131913291339134913591369137913891399140914191429143914491459146914791489149915091519152915391549155915691579158915991609161916291639164916591669167916891699170917191729173917491759176917791789179918091819182918391849185918691879188918991909191919291939194919591969197919891999200920192029203920492059206920792089209921092119212921392149215921692179218921992209221922292239224922592269227922892299230923192329233923492359236923792389239924092419242924392449245924692479248924992509251925292539254925592569257925892599260926192629263926492659266926792689269927092719272927392749275927692779278927992809281928292839284928592869287928892899290929192929293929492959296929792989299930093019302930393049305930693079308930993109311931293139314931593169317931893199320932193229323932493259326932793289329933093319332933393349335933693379338933993409341934293439344934593469347934893499350935193529353935493559356935793589359936093619362936393649365936693679368936993709371937293739374937593769377937893799380938193829383938493859386938793889389939093919392939393949395939693979398939994009401940294039404940594069407940894099410941194129413941494159416941794189419942094219422942394249425942694279428942994309431943294339434943594369437943894399440944194429443944494459446944794489449945094519452945394549455945694579458945994609461946294639464946594669467946894699470947194729473947494759476947794789479948094819482948394849485948694879488948994909491949294939494949594969497949894999500950195029503950495059506950795089509951095119512951395149515951695179518951995209521952295239524952595269527952895299530953195329533953495359536953795389539954095419542954395449545954695479548954995509551955295539554955595569557955895599560956195629563956495659566956795689569957095719572957395749575957695779578957995809581958295839584958595869587958895899590959195929593959495959596959795989599960096019602960396049605960696079608960996109611961296139614961596169617961896199620962196229623962496259626962796289629963096319632963396349635963696379638963996409641964296439644964596469647964896499650965196529653965496559656965796589659966096619662966396649665966696679668966996709671967296739674967596769677967896799680968196829683968496859686968796889689969096919692969396949695969696979698969997009701970297039704970597069707970897099710971197129713971497159716971797189719972097219722972397249725972697279728972997309731973297339734973597369737973897399740974197429743974497459746974797489749975097519752975397549755975697579758975997609761976297639764976597669767976897699770977197729773977497759776977797789779978097819782978397849785978697879788978997909791979297939794979597969797979897999800980198029803980498059806980798089809981098119812981398149815981698179818981998209821982298239824982598269827982898299830983198329833983498359836983798389839984098419842984398449845984698479848984998509851985298539854985598569857985898599860986198629863986498659866986798689869987098719872987398749875987698779878987998809881988298839884988598869887988898899890989198929893989498959896989798989899990099019902990399049905990699079908990999109911991299139914991599169917991899199920992199229923992499259926992799289929993099319932993399349935993699379938993999409941994299439944994599469947994899499950995199529953995499559956995799589959996099619962996399649965996699679968996999709971997299739974997599769977997899799980998199829983998499859986998799889989999099919992999399949995999699979998999910000100011000210003100041000510006100071000810009100101001110012100131001410015100161001710018100191002010021100221002310024100251002610027100281002910030100311003210033100341003510036100371003810039100401004110042100431004410045100461004710048100491005010051100521005310054100551005610057100581005910060100611006210063100641006510066100671006810069100701007110072100731007410075100761007710078100791008010081100821008310084100851008610087100881008910090100911009210093100941009510096100971009810099101001010110102101031010410105101061010710108101091011010111101121011310114101151011610117101181011910120101211012210123101241012510126101271012810129101301013110132101331013410135101361013710138101391014010141101421014310144101451014610147101481014910150101511015210153101541015510156101571015810159101601016110162101631016410165101661016710168101691017010171101721017310174101751017610177101781017910180101811018210183101841018510186101871018810189101901019110192101931019410195101961019710198101991020010201102021020310204102051020610207102081020910210102111021210213102141021510216102171021810219102201022110222102231022410225102261022710228102291023010231102321023310234102351023610237102381023910240102411024210243102441024510246102471024810249102501025110252102531025410255102561025710258102591026010261102621026310264102651026610267102681026910270102711027210273102741027510276102771027810279102801028110282102831028410285102861028710288102891029010291102921029310294102951029610297102981029910300103011030210303103041030510306103071030810309103101031110312103131031410315103161031710318103191032010321103221032310324103251032610327103281032910330103311033210333103341033510336103371033810339103401034110342103431034410345103461034710348103491035010351103521035310354103551035610357103581035910360103611036210363103641036510366103671036810369103701037110372103731037410375103761037710378103791038010381103821038310384103851038610387103881038910390103911039210393103941039510396103971039810399104001040110402104031040410405104061040710408104091041010411104121041310414104151041610417104181041910420104211042210423104241042510426104271042810429104301043110432104331043410435104361043710438104391044010441104421044310444104451044610447104481044910450104511045210453104541045510456104571045810459104601046110462104631046410465104661046710468104691047010471104721047310474104751047610477104781047910480104811048210483104841048510486104871048810489104901049110492104931049410495104961049710498104991050010501105021050310504105051050610507105081050910510105111051210513105141051510516105171051810519105201052110522105231052410525105261052710528105291053010531105321053310534105351053610537105381053910540105411054210543105441054510546105471054810549105501055110552105531055410555105561055710558105591056010561105621056310564105651056610567105681056910570105711057210573105741057510576105771057810579105801058110582105831058410585105861058710588105891059010591105921059310594105951059610597105981059910600106011060210603106041060510606106071060810609106101061110612106131061410615106161061710618106191062010621106221062310624106251062610627106281062910630106311063210633106341063510636106371063810639106401064110642106431064410645106461064710648106491065010651106521065310654106551065610657106581065910660106611066210663106641066510666106671066810669106701067110672106731067410675106761067710678106791068010681106821068310684106851068610687106881068910690106911069210693106941069510696106971069810699107001070110702107031070410705107061070710708107091071010711107121071310714107151071610717107181071910720107211072210723107241072510726107271072810729107301073110732107331073410735107361073710738107391074010741107421074310744107451074610747107481074910750107511075210753107541075510756107571075810759107601076110762107631076410765107661076710768107691077010771107721077310774107751077610777107781077910780107811078210783107841078510786107871078810789107901079110792107931079410795107961079710798107991080010801108021080310804108051080610807108081080910810108111081210813108141081510816108171081810819108201082110822108231082410825108261082710828108291083010831108321083310834108351083610837108381083910840108411084210843108441084510846108471084810849108501085110852108531085410855108561085710858108591086010861108621086310864108651086610867108681086910870108711087210873108741087510876108771087810879108801088110882108831088410885108861088710888108891089010891108921089310894108951089610897108981089910900109011090210903109041090510906109071090810909109101091110912109131091410915109161091710918109191092010921109221092310924109251092610927109281092910930109311093210933109341093510936109371093810939109401094110942109431094410945109461094710948109491095010951109521095310954109551095610957109581095910960109611096210963109641096510966109671096810969109701097110972109731097410975109761097710978109791098010981109821098310984109851098610987109881098910990109911099210993109941099510996109971099810999110001100111002110031100411005110061100711008110091101011011110121101311014110151101611017110181101911020110211102211023110241102511026110271102811029110301103111032110331103411035110361103711038110391104011041110421104311044110451104611047110481104911050110511105211053110541105511056110571105811059110601106111062110631106411065110661106711068110691107011071110721107311074110751107611077110781107911080110811108211083110841108511086110871108811089110901109111092110931109411095110961109711098110991110011101111021110311104111051110611107111081110911110111111111211113111141111511116111171111811119111201112111122111231112411125111261112711128111291113011131111321113311134111351113611137111381113911140111411114211143111441114511146111471114811149111501115111152111531115411155111561115711158111591116011161111621116311164111651116611167111681116911170111711117211173111741117511176111771117811179111801118111182111831118411185111861118711188111891119011191111921119311194111951119611197111981119911200112011120211203112041120511206112071120811209112101121111212112131121411215112161121711218112191122011221112221122311224112251122611227112281122911230112311123211233112341123511236112371123811239112401124111242112431124411245112461124711248112491125011251112521125311254112551125611257112581125911260112611126211263112641126511266112671126811269112701127111272112731127411275112761127711278112791128011281112821128311284112851128611287112881128911290112911129211293112941129511296112971129811299113001130111302113031130411305113061130711308113091131011311113121131311314113151131611317113181131911320113211132211323113241132511326113271132811329113301133111332113331133411335113361133711338113391134011341113421134311344113451134611347113481134911350113511135211353113541135511356113571135811359113601136111362113631136411365113661136711368113691137011371113721137311374113751137611377113781137911380113811138211383113841138511386113871138811389113901139111392113931139411395113961139711398113991140011401114021140311404114051140611407114081140911410114111141211413114141141511416114171141811419114201142111422114231142411425114261142711428114291143011431114321143311434114351143611437114381143911440114411144211443114441144511446114471144811449114501145111452114531145411455114561145711458114591146011461114621146311464114651146611467114681146911470114711147211473114741147511476114771147811479114801148111482114831148411485114861148711488114891149011491114921149311494114951149611497114981149911500115011150211503115041150511506115071150811509115101151111512115131151411515115161151711518115191152011521115221152311524115251152611527115281152911530115311153211533115341153511536115371153811539115401154111542115431154411545115461154711548115491155011551115521155311554115551155611557115581155911560115611156211563115641156511566115671156811569115701157111572115731157411575115761157711578115791158011581115821158311584115851158611587115881158911590115911159211593115941159511596115971159811599116001160111602116031160411605116061160711608116091161011611116121161311614116151161611617116181161911620116211162211623116241162511626116271162811629116301163111632116331163411635116361163711638116391164011641116421164311644116451164611647116481164911650116511165211653116541165511656116571165811659116601166111662116631166411665116661166711668116691167011671116721167311674116751167611677116781167911680116811168211683116841168511686116871168811689116901169111692116931169411695116961169711698116991170011701117021170311704117051170611707117081170911710117111171211713117141171511716117171171811719117201172111722117231172411725117261172711728117291173011731117321173311734117351173611737117381173911740117411174211743117441174511746117471174811749117501175111752117531175411755117561175711758117591176011761117621176311764117651176611767117681176911770117711177211773117741177511776117771177811779117801178111782117831178411785117861178711788117891179011791117921179311794117951179611797117981179911800118011180211803118041180511806118071180811809118101181111812118131181411815118161181711818118191182011821118221182311824118251182611827118281182911830118311183211833118341183511836118371183811839118401184111842118431184411845118461184711848118491185011851118521185311854118551185611857118581185911860118611186211863118641186511866118671186811869118701187111872118731187411875118761187711878118791188011881118821188311884118851188611887118881188911890118911189211893118941189511896118971189811899119001190111902119031190411905119061190711908119091191011911119121191311914119151191611917119181191911920119211192211923119241192511926119271192811929119301193111932119331193411935119361193711938119391194011941119421194311944119451194611947119481194911950119511195211953119541195511956119571195811959119601196111962119631196411965119661196711968119691197011971119721197311974119751197611977119781197911980119811198211983119841198511986119871198811989119901199111992119931199411995119961199711998119991200012001120021200312004120051200612007120081200912010120111201212013120141201512016120171201812019120201202112022120231202412025120261202712028120291203012031120321203312034120351203612037120381203912040120411204212043120441204512046120471204812049120501205112052120531205412055120561205712058120591206012061120621206312064120651206612067120681206912070120711207212073120741207512076120771207812079120801208112082120831208412085120861208712088120891209012091120921209312094120951209612097120981209912100121011210212103121041210512106121071210812109121101211112112121131211412115121161211712118121191212012121121221212312124121251212612127121281212912130121311213212133121341213512136121371213812139121401214112142121431214412145121461214712148121491215012151121521215312154121551215612157121581215912160121611216212163121641216512166121671216812169121701217112172121731217412175121761217712178121791218012181121821218312184121851218612187121881218912190121911219212193121941219512196121971219812199122001220112202122031220412205122061220712208122091221012211122121221312214122151221612217122181221912220122211222212223122241222512226122271222812229122301223112232122331223412235122361223712238122391224012241122421224312244122451224612247122481224912250122511225212253122541225512256122571225812259122601226112262122631226412265122661226712268122691227012271122721227312274122751227612277122781227912280122811228212283122841228512286122871228812289122901229112292122931229412295122961229712298122991230012301123021230312304123051230612307123081230912310123111231212313123141231512316123171231812319123201232112322123231232412325123261232712328123291233012331123321233312334123351233612337123381233912340123411234212343123441234512346123471234812349123501235112352123531235412355123561235712358123591236012361123621236312364123651236612367123681236912370123711237212373123741237512376123771237812379123801238112382123831238412385123861238712388123891239012391123921239312394123951239612397123981239912400124011240212403124041240512406124071240812409124101241112412124131241412415124161241712418124191242012421124221242312424124251242612427124281242912430124311243212433124341243512436124371243812439124401244112442124431244412445124461244712448124491245012451124521245312454124551245612457124581245912460124611246212463124641246512466124671246812469124701247112472124731247412475124761247712478124791248012481124821248312484124851248612487124881248912490124911249212493124941249512496124971249812499125001250112502125031250412505125061250712508125091251012511125121251312514125151251612517125181251912520125211252212523125241252512526125271252812529125301253112532125331253412535125361253712538125391254012541125421254312544125451254612547125481254912550125511255212553125541255512556125571255812559125601256112562125631256412565125661256712568125691257012571125721257312574125751257612577125781257912580125811258212583125841258512586125871258812589125901259112592125931259412595125961259712598125991260012601126021260312604126051260612607126081260912610126111261212613126141261512616126171261812619126201262112622126231262412625126261262712628126291263012631126321263312634126351263612637126381263912640126411264212643126441264512646126471264812649126501265112652126531265412655126561265712658126591266012661126621266312664126651266612667126681266912670126711267212673126741267512676126771267812679126801268112682126831268412685126861268712688126891269012691126921269312694126951269612697126981269912700127011270212703127041270512706127071270812709127101271112712127131271412715127161271712718127191272012721127221272312724127251272612727127281272912730127311273212733127341273512736127371273812739127401274112742127431274412745127461274712748127491275012751127521275312754127551275612757127581275912760127611276212763127641276512766127671276812769127701277112772127731277412775127761277712778127791278012781127821278312784127851278612787127881278912790127911279212793127941279512796127971279812799128001280112802128031280412805128061280712808128091281012811128121281312814128151281612817128181281912820128211282212823128241282512826128271282812829128301283112832128331283412835128361283712838128391284012841128421284312844128451284612847128481284912850128511285212853128541285512856128571285812859128601286112862128631286412865128661286712868128691287012871128721287312874128751287612877128781287912880128811288212883128841288512886128871288812889128901289112892128931289412895128961289712898128991290012901129021290312904129051290612907129081290912910129111291212913129141291512916129171291812919129201292112922129231292412925129261292712928129291293012931129321293312934129351293612937129381293912940129411294212943129441294512946129471294812949129501295112952129531295412955129561295712958129591296012961129621296312964129651296612967129681296912970129711297212973129741297512976
  1. namespace a = "http://relaxng.org/ns/compatibility/annotations/1.0"
  2. namespace ctrl = "http://nwalsh.com/xmlns/schema-control/"
  3. default namespace db = "http://docbook.org/ns/docbook"
  4. namespace html = "http://www.w3.org/1999/xhtml"
  5. namespace mml = "http://www.w3.org/1998/Math/MathML"
  6. namespace rng = "http://relaxng.org/ns/structure/1.0"
  7. namespace s = "http://purl.oclc.org/dsdl/schematron"
  8. namespace svg = "http://www.w3.org/2000/svg"
  9. namespace xlink = "http://www.w3.org/1999/xlink"
  10. # This file is part of DocBook V5.1b7
  11. #
  12. # Copyright 1992-2011 HaL Computer Systems, Inc.,
  13. # O'Reilly & Associates, Inc., ArborText, Inc., Fujitsu Software
  14. # Corporation, Norman Walsh, Sun Microsystems, Inc., and the
  15. # Organization for the Advancement of Structured Information
  16. # Standards (OASIS).
  17. #
  18. # Permission to use, copy, modify and distribute the DocBook schema
  19. # and its accompanying documentation for any purpose and without fee
  20. # is hereby granted in perpetuity, provided that the above copyright
  21. # notice and this paragraph appear in all copies. The copyright
  22. # holders make no representation about the suitability of the schema
  23. # for any purpose. It is provided "as is" without expressed or implied
  24. # warranty.
  25. #
  26. # If you modify the DocBook schema in any way, label your schema as a
  27. # variant of DocBook. See the reference documentation
  28. # (http://docbook.org/tdg5/en/html/ch05.html#s-notdocbook)
  29. # for more information.
  30. #
  31. # Please direct all questions, bug reports, or suggestions for changes
  32. # to the docbook@lists.oasis-open.org mailing list. For more
  33. # information, see http://www.oasis-open.org/docbook/.
  34. #
  35. # ======================================================================
  36. start =
  37. (db.set
  38. | db.book
  39. | db.divisions
  40. | db.components
  41. | db.navigation.components
  42. | db.section
  43. | db.para)
  44. | (db.abstract
  45. | db.mediaobject.content
  46. | db.audiodata
  47. | db.imagedata
  48. | db.textdata
  49. | db.videodata
  50. | db.caption
  51. | db.publishing.blocks
  52. | db.formal.blocks
  53. | db.informal.blocks
  54. | db.formalpara
  55. | db.inlinemediaobject
  56. | db.list.blocks
  57. | db.legalnotice
  58. | db.verbatim.blocks
  59. | db.graphic.blocks
  60. | db.personblurb
  61. | db.revhistory
  62. | db.simpara
  63. | db.step
  64. | db.stepalternatives)
  65. | (db.partintro | db.simplesect)
  66. | db.annotation
  67. | (db.sect1 | db.sect2 | db.sect3 | db.sect4 | db.sect5)
  68. | (db.refentry | db.refsection | db.refsynopsisdiv)
  69. | (db.refsect1 | db.refsect2 | db.refsect3)
  70. | (db.glossary | db.glossdiv | db.glosslist)
  71. | (db.bibliodiv | db.bibliolist)
  72. | (db.setindex | db.index | db.indexdiv)
  73. | (db.toc | db.tocdiv)
  74. | (db.task | db.taskprerequisites | db.taskrelated | db.tasksummary)
  75. | (db.calloutlist
  76. | db.programlistingco
  77. | db.screenco
  78. | db.imageobjectco)
  79. | (db.productionset | db.constraintdef)
  80. | (db.msg
  81. | db.msgexplan
  82. | db.msgmain
  83. | db.msgrel
  84. | db.msgset
  85. | db.msgsub)
  86. | (db.qandadiv | db.qandaentry | db.qandaset)
  87. | (db.equation | db.informalequation)
  88. | db.cmdsynopsis
  89. | (db.synopsis.blocks | db.funcsynopsisinfo | db.classsynopsisinfo)
  90. | db.admonition.blocks
  91. | db.topic
  92. div {
  93. db._any.attribute =
  94. ## Any attribute, including any attribute in any namespace.
  95. attribute * { text }
  96. db._any =
  97. ## Any element from almost any namespace
  98. element * - (db:* | html:*) {
  99. (db._any.attribute | text | db._any)*
  100. }
  101. }
  102. db.arch.attribute =
  103. ## Designates the computer or chip architecture to which the element applies
  104. attribute arch { text }
  105. db.audience.attribute =
  106. ## Designates the intended audience to which the element applies, for example, system administrators, programmers, or new users.
  107. attribute audience { text }
  108. db.condition.attribute =
  109. ## provides a standard place for application-specific effectivity
  110. attribute condition { text }
  111. db.conformance.attribute =
  112. ## Indicates standards conformance characteristics of the element
  113. attribute conformance { text }
  114. db.os.attribute =
  115. ## Indicates the operating system to which the element is applicable
  116. attribute os { text }
  117. db.revision.attribute =
  118. ## Indicates the editorial revision to which the element belongs
  119. attribute revision { text }
  120. db.security.attribute =
  121. ## Indicates something about the security level associated with the element to which it applies
  122. attribute security { text }
  123. db.userlevel.attribute =
  124. ## Indicates the level of user experience for which the element applies
  125. attribute userlevel { text }
  126. db.vendor.attribute =
  127. ## Indicates the computer vendor to which the element applies.
  128. attribute vendor { text }
  129. db.wordsize.attribute =
  130. ## Indicates the word size (width in bits) of the computer architecture to which the element applies
  131. attribute wordsize { text }
  132. db.effectivity.attributes =
  133. db.arch.attribute?
  134. & db.audience.attribute?
  135. & db.condition.attribute?
  136. & db.conformance.attribute?
  137. & db.os.attribute?
  138. & db.revision.attribute?
  139. & db.security.attribute?
  140. & db.userlevel.attribute?
  141. & db.vendor.attribute?
  142. & db.wordsize.attribute?
  143. db.endterm.attribute =
  144. ## Points to the element whose content is to be used as the text of the link
  145. attribute endterm { xsd:IDREF }
  146. db.linkend.attribute =
  147. ## Points to an internal link target by identifying the value of its xml:id attribute
  148. attribute linkend { xsd:IDREF }
  149. db.linkends.attribute =
  150. ## Points to one or more internal link targets by identifying the value of their xml:id attributes
  151. attribute linkends { xsd:IDREFS }
  152. db.xlink.href.attribute =
  153. ## Identifies a link target with a URI
  154. attribute xlink:href { xsd:anyURI }
  155. db.xlink.simple.type.attribute =
  156. ## Identifies the XLink link type
  157. attribute xlink:type {
  158. ## An XLink simple link type
  159. "simple"
  160. }
  161. db.xlink.role.attribute =
  162. ## Identifies the XLink role of the link
  163. attribute xlink:role { xsd:anyURI }
  164. db.xlink.arcrole.attribute =
  165. ## Identifies the XLink arcrole of the link
  166. attribute xlink:arcrole { xsd:anyURI }
  167. db.xlink.title.attribute =
  168. ## Identifies the XLink title of the link
  169. attribute xlink:title { text }
  170. db.xlink.show.enumeration =
  171. ## An application traversing to the ending resource should load it in a new window, frame, pane, or other relevant presentation context.
  172. "new"
  173. |
  174. ## An application traversing to the ending resource should load the resource in the same window, frame, pane, or other relevant presentation context in which the starting resource was loaded.
  175. "replace"
  176. |
  177. ## An application traversing to the ending resource should load its presentation in place of the presentation of the starting resource.
  178. "embed"
  179. |
  180. ## The behavior of an application traversing to the ending resource is unconstrained by XLink. The application should look for other markup present in the link to determine the appropriate behavior.
  181. "other"
  182. |
  183. ## The behavior of an application traversing to the ending resource is unconstrained by this specification. No other markup is present to help the application determine the appropriate behavior.
  184. "none"
  185. db.xlink.show.attribute =
  186. ## Identifies the XLink show behavior of the link
  187. attribute xlink:show { db.xlink.show.enumeration }
  188. db.xlink.actuate.enumeration =
  189. ## An application should traverse to the ending resource immediately on loading the starting resource.
  190. "onLoad"
  191. |
  192. ## An application should traverse from the starting resource to the ending resource only on a post-loading event triggered for the purpose of traversal.
  193. "onRequest"
  194. |
  195. ## The behavior of an application traversing to the ending resource is unconstrained by this specification. The application should look for other markup present in the link to determine the appropriate behavior.
  196. "other"
  197. |
  198. ## The behavior of an application traversing to the ending resource is unconstrained by this specification. No other markup is present to help the application determine the appropriate behavior.
  199. "none"
  200. db.xlink.actuate.attribute =
  201. ## Identifies the XLink actuate behavior of the link
  202. attribute xlink:actuate { db.xlink.actuate.enumeration }
  203. db.xlink.simple.link.attributes =
  204. db.xlink.simple.type.attribute?
  205. & db.xlink.href.attribute?
  206. & db.xlink.role.attribute?
  207. & db.xlink.arcrole.attribute?
  208. & db.xlink.title.attribute?
  209. & db.xlink.show.attribute?
  210. & db.xlink.actuate.attribute?
  211. db.xlink.attributes =
  212. db.xlink.simple.link.attributes
  213. | (db.xlink.extended.link.attributes
  214. | db.xlink.locator.link.attributes
  215. | db.xlink.arc.link.attributes
  216. | db.xlink.resource.link.attributes
  217. | db.xlink.title.link.attributes)
  218. db.xml.id.attribute =
  219. ## Identifies the unique ID value of the element
  220. attribute xml:id { xsd:ID }
  221. db.version.attribute =
  222. ## Specifies the DocBook version of the element and its descendants
  223. attribute version { text }
  224. db.xml.lang.attribute =
  225. ## Specifies the natural language of the element and its descendants
  226. attribute xml:lang { text }
  227. db.xml.base.attribute =
  228. ## Specifies the base URI of the element and its descendants
  229. attribute xml:base { xsd:anyURI }
  230. db.remap.attribute =
  231. ## Provides the name or similar semantic identifier assigned to the content in some previous markup scheme
  232. attribute remap { text }
  233. db.xreflabel.attribute =
  234. ## Provides the text that is to be generated for a cross reference to the element
  235. attribute xreflabel { text }
  236. db.xrefstyle.attribute =
  237. ## Specifies a keyword or keywords identifying additional style information
  238. attribute xrefstyle { text }
  239. db.revisionflag.enumeration =
  240. ## The element has been changed.
  241. "changed"
  242. |
  243. ## The element is new (has been added to the document).
  244. "added"
  245. |
  246. ## The element has been deleted.
  247. "deleted"
  248. |
  249. ## Explicitly turns off revision markup for this element.
  250. "off"
  251. db.revisionflag.attribute =
  252. ## Identifies the revision status of the element
  253. attribute revisionflag { db.revisionflag.enumeration }
  254. db.dir.enumeration =
  255. ## Left-to-right text
  256. "ltr"
  257. |
  258. ## Right-to-left text
  259. "rtl"
  260. |
  261. ## Left-to-right override
  262. "lro"
  263. |
  264. ## Right-to-left override
  265. "rlo"
  266. db.dir.attribute =
  267. ## Identifies the direction of text in an element
  268. attribute dir { db.dir.enumeration }
  269. db.common.base.attributes =
  270. db.version.attribute?
  271. & db.xml.lang.attribute?
  272. & db.xml.base.attribute?
  273. & db.remap.attribute?
  274. & db.xreflabel.attribute?
  275. & db.revisionflag.attribute?
  276. & db.dir.attribute?
  277. & db.effectivity.attributes
  278. db.common.attributes =
  279. db.xml.id.attribute?
  280. & db.common.base.attributes
  281. & db.annotations.attribute?
  282. db.common.idreq.attributes =
  283. db.xml.id.attribute
  284. & db.common.base.attributes
  285. & db.annotations.attribute?
  286. db.common.linking.attributes =
  287. (db.linkend.attribute | db.xlink.attributes)?
  288. db.common.req.linking.attributes =
  289. db.linkend.attribute | db.xlink.attributes
  290. db.common.data.attributes =
  291. ## Specifies the format of the data
  292. attribute format { text }?,
  293. (
  294. ## Indentifies the location of the data by URI
  295. attribute fileref { xsd:anyURI }
  296. |
  297. ## Identifies the location of the data by external identifier (entity name)
  298. attribute entityref { xsd:ENTITY })
  299. db.verbatim.continuation.enumeration =
  300. ## Line numbering continues from the immediately preceding element with the same name.
  301. "continues"
  302. |
  303. ## Line numbering restarts (begins at 1, usually).
  304. "restarts"
  305. db.verbatim.continuation.attribute =
  306. ## Determines whether line numbering continues from the previous element or restarts.
  307. attribute continuation { db.verbatim.continuation.enumeration }
  308. db.verbatim.linenumbering.enumeration =
  309. ## Lines are numbered.
  310. "numbered"
  311. |
  312. ## Lines are not numbered.
  313. "unnumbered"
  314. db.verbatim.linenumbering.attribute =
  315. ## Determines whether lines are numbered.
  316. attribute linenumbering { db.verbatim.linenumbering.enumeration }
  317. db.verbatim.startinglinenumber.attribute =
  318. ## Specifies the initial line number.
  319. attribute startinglinenumber { xsd:integer }
  320. db.verbatim.language.attribute =
  321. ## Identifies the language (i.e. programming language) of the verbatim content.
  322. attribute language { text }
  323. db.verbatim.xml.space.attribute =
  324. ## Can be used to indicate explicitly that whitespace in the verbatim environment is preserved. Whitespace must always be preserved in verbatim environments whether this attribute is specified or not.
  325. attribute xml:space {
  326. ## Whitespace must be preserved.
  327. "preserve"
  328. }
  329. db.verbatim.common.attributes =
  330. db.verbatim.continuation.attribute?
  331. & db.verbatim.linenumbering.attribute?
  332. & db.verbatim.startinglinenumber.attribute?
  333. & db.verbatim.xml.space.attribute?
  334. db.verbatim.attributes =
  335. db.verbatim.common.attributes & db.verbatim.language.attribute?
  336. db.label.attribute =
  337. ## Specifies an identifying string for presentation purposes
  338. attribute label { text }
  339. db.width.characters.attribute =
  340. ## Specifies the width (in characters) of the element
  341. attribute width { xsd:nonNegativeInteger }
  342. db.spacing.enumeration =
  343. ## The spacing should be "compact".
  344. "compact"
  345. |
  346. ## The spacing should be "normal".
  347. "normal"
  348. db.spacing.attribute =
  349. ## Specifies (a hint about) the spacing of the content
  350. attribute spacing { db.spacing.enumeration }
  351. db.pgwide.enumeration =
  352. ## The element should be rendered in the current text flow (with the flow column width).
  353. "0"
  354. |
  355. ## The element should be rendered across the full text page.
  356. "1"
  357. db.pgwide.attribute =
  358. ## Indicates if the element is rendered across the column or the page
  359. attribute pgwide { db.pgwide.enumeration }
  360. db.language.attribute =
  361. ## Identifies the language (i.e. programming language) of the content.
  362. attribute language { text }
  363. db.performance.enumeration =
  364. ## The content describes an optional step or steps.
  365. "optional"
  366. |
  367. ## The content describes a required step or steps.
  368. "required"
  369. db.performance.attribute =
  370. ## Specifies if the content is required or optional.
  371. attribute performance { db.performance.enumeration }
  372. db.floatstyle.attribute =
  373. ## Specifies style information to be used when rendering the float
  374. attribute floatstyle { text }
  375. db.width.attribute =
  376. ## Specifies the width of the element
  377. attribute width { text }
  378. db.depth.attribute =
  379. ## Specifies the depth of the element
  380. attribute depth { text }
  381. db.contentwidth.attribute =
  382. ## Specifies the width of the content rectangle
  383. attribute contentwidth { text }
  384. db.contentdepth.attribute =
  385. ## Specifies the depth of the content rectangle
  386. attribute contentdepth { text }
  387. db.scalefit.enumeration =
  388. ## False (do not scale-to-fit; anamorphic scaling may occur)
  389. "0"
  390. |
  391. ## True (scale-to-fit; anamorphic scaling is forbidden)
  392. "1"
  393. db.scale.attribute =
  394. ## Specifies the scaling factor
  395. attribute scale { xsd:positiveInteger }
  396. db.classid.attribute =
  397. ## Specifies a classid for a media object player
  398. attribute classid { text }
  399. db.autoplay.attribute =
  400. ## Specifies the autoplay setting for a media object player
  401. attribute autoplay { text }
  402. db.halign.enumeration =
  403. ## Centered horizontally
  404. "center"
  405. |
  406. ## Aligned horizontally on the specified character
  407. "char"
  408. |
  409. ## Fully justified (left and right margins or edges)
  410. "justify"
  411. |
  412. ## Left aligned
  413. "left"
  414. |
  415. ## Right aligned
  416. "right"
  417. db.valign.enumeration =
  418. ## Aligned on the bottom of the region
  419. "bottom"
  420. |
  421. ## Centered vertically
  422. "middle"
  423. |
  424. ## Aligned on the top of the region
  425. "top"
  426. db.biblio.class.enumeration =
  427. ## A digital object identifier.
  428. "doi"
  429. |
  430. ## An international standard book number.
  431. "isbn"
  432. |
  433. ## An international standard technical report number (ISO 10444).
  434. "isrn"
  435. |
  436. ## An international standard serial number.
  437. "issn"
  438. |
  439. ## An international standard text code.
  440. "istc"
  441. |
  442. ## A Library of Congress reference number.
  443. "libraryofcongress"
  444. |
  445. ## A publication number (an internal number or possibly organizational standard).
  446. "pubsnumber"
  447. |
  448. ## A Uniform Resource Identifier
  449. "uri"
  450. db.biblio.class-enum.attribute =
  451. ## Identifies the kind of bibliographic identifier
  452. attribute class { db.biblio.class.enumeration }?
  453. db.biblio.class-other.attribute =
  454. ## Identifies the nature of the non-standard bibliographic identifier
  455. attribute otherclass { xsd:NMTOKEN }
  456. db.biblio.class-other.attributes =
  457. ## Identifies the kind of bibliographic identifier
  458. attribute class {
  459. ## Indicates that the identifier is some 'other' kind.
  460. "other"
  461. }
  462. & db.biblio.class-other.attribute
  463. db.biblio.class.attribute =
  464. db.biblio.class-enum.attribute | db.biblio.class-other.attributes
  465. db.ubiq.inlines =
  466. (db.inlinemediaobject
  467. | db.remark
  468. | db.link.inlines
  469. | db.alt
  470. | db.trademark
  471. | # below, effectively the publishing inlines (as of 5.0)
  472. db.abbrev
  473. | db.acronym
  474. | db.date
  475. | db._emphasis
  476. | db.footnote
  477. | db.footnoteref
  478. | db._foreignphrase
  479. | db._phrase
  480. | db._quote
  481. | db.subscript
  482. | db.superscript
  483. | db.wordasword)
  484. | db.annotation
  485. | (db._firstterm | db._glossterm)
  486. | db.indexterm
  487. | db.coref
  488. db._text = (text | db.ubiq.inlines | db._phrase | db.replaceable)*
  489. db._title = db.title? & db.titleabbrev? & db.subtitle?
  490. db._title.req = db.title & db.titleabbrev? & db.subtitle?
  491. db._title.only = db.title? & db.titleabbrev?
  492. db._title.onlyreq = db.title & db.titleabbrev?
  493. db._info = (db._title, db.titleforbidden.info?) | db.info?
  494. db._info.title.req =
  495. (db._title.req, db.titleforbidden.info?) | db.titlereq.info
  496. db._info.title.only =
  497. (db._title.only, db.titleforbidden.info?) | db.titleonly.info
  498. db._info.title.onlyreq =
  499. (db._title.onlyreq, db.titleforbidden.info?) | db.titleonlyreq.info
  500. db._info.title.forbidden = db.titleforbidden.info?
  501. db.all.inlines =
  502. text
  503. | db.ubiq.inlines
  504. | db.general.inlines
  505. | db.domain.inlines
  506. | db.extension.inlines
  507. db.general.inlines =
  508. db.publishing.inlines
  509. | db.product.inlines
  510. | db.bibliography.inlines
  511. | db.graphic.inlines
  512. | db.indexing.inlines
  513. | db.link.inlines
  514. db.domain.inlines =
  515. db.technical.inlines
  516. | db.math.inlines
  517. | db.markup.inlines
  518. | db.gui.inlines
  519. | db.keyboard.inlines
  520. | db.os.inlines
  521. | db.programming.inlines
  522. | db.error.inlines
  523. db.technical.inlines =
  524. (db.replaceable | db.package | db.parameter)
  525. | db.termdef
  526. | db.nonterminal
  527. | (db.systemitem | db.option | db.optional | db.property)
  528. db.product.inlines =
  529. db.trademark
  530. | (db.productnumber
  531. | db.productname
  532. | db.database
  533. | db.application
  534. | db.hardware)
  535. db.bibliography.inlines =
  536. db.citation
  537. | db.citerefentry
  538. | db.citetitle
  539. | db.citebiblioid
  540. | db.author
  541. | db.person
  542. | db.personname
  543. | db.org
  544. | db.orgname
  545. | db.editor
  546. | db.jobtitle
  547. db.publishing.inlines =
  548. (db.abbrev
  549. | db.acronym
  550. | db.date
  551. | db.emphasis
  552. | db.footnote
  553. | db.footnoteref
  554. | db.foreignphrase
  555. | db.phrase
  556. | db.quote
  557. | db.subscript
  558. | db.superscript
  559. | db.wordasword)
  560. | db.glossary.inlines
  561. | db.coref
  562. db.graphic.inlines = db.inlinemediaobject
  563. db.indexing.inlines = notAllowed | db.indexterm
  564. db.link.inlines =
  565. (db.xref | db.link | db.olink | db.anchor) | db.biblioref
  566. db.extension.inlines = notAllowed
  567. db.nopara.blocks =
  568. (db.list.blocks
  569. | db.formal.blocks
  570. | db.informal.blocks
  571. | db.publishing.blocks
  572. | db.graphic.blocks
  573. | db.technical.blocks
  574. | db.verbatim.blocks
  575. | db.bridgehead
  576. | db.remark
  577. | db.revhistory)
  578. | db.indexterm
  579. | db.synopsis.blocks
  580. | db.admonition.blocks
  581. db.para.blocks = db.anchor | db.para | db.formalpara | db.simpara
  582. db.all.blocks =
  583. (db.nopara.blocks | db.para.blocks | db.extension.blocks)
  584. | db.annotation
  585. db.formal.blocks = (db.example | db.figure | db.table) | db.equation
  586. db.informal.blocks =
  587. (db.informalexample | db.informalfigure | db.informaltable)
  588. | db.informalequation
  589. db.publishing.blocks =
  590. db.sidebar | db.blockquote | db.address | db.epigraph
  591. db.graphic.blocks = db.mediaobject | db.screenshot
  592. db.technical.blocks =
  593. db.procedure
  594. | db.task
  595. | (db.productionset | db.constraintdef)
  596. | db.msgset
  597. db.list.blocks =
  598. (db.itemizedlist
  599. | db.orderedlist
  600. | db.procedure
  601. | db.simplelist
  602. | db.variablelist
  603. | db.segmentedlist)
  604. | db.glosslist
  605. | db.bibliolist
  606. | db.calloutlist
  607. | db.qandaset
  608. db.verbatim.blocks =
  609. (db.screen | db.literallayout)
  610. | (db.programlistingco | db.screenco)
  611. | (db.programlisting | db.synopsis)
  612. db.extension.blocks = notAllowed
  613. db.info.extension = db._any
  614. db.info.elements =
  615. (db.abstract
  616. | db.address
  617. | db.artpagenums
  618. | db.author
  619. | db.authorgroup
  620. | db.authorinitials
  621. | db.bibliocoverage
  622. | db.biblioid
  623. | db.bibliosource
  624. | db.collab
  625. | db.confgroup
  626. | db.contractsponsor
  627. | db.contractnum
  628. | db.copyright
  629. | db.cover
  630. | db.date
  631. | db.edition
  632. | db.editor
  633. | db.issuenum
  634. | db.keywordset
  635. | db.legalnotice
  636. | db.mediaobject
  637. | db.org
  638. | db.orgname
  639. | db.othercredit
  640. | db.pagenums
  641. | db.printhistory
  642. | db.pubdate
  643. | db.publisher
  644. | db.publishername
  645. | db.releaseinfo
  646. | db.revhistory
  647. | db.seriesvolnums
  648. | db.subjectset
  649. | db.volumenum
  650. | db.info.extension)
  651. | db.annotation
  652. | db.extendedlink
  653. | (db.bibliomisc | db.bibliomset | db.bibliorelation | db.biblioset)
  654. | db.itermset
  655. | (db.productname | db.productnumber)
  656. db.bibliographic.elements =
  657. db.info.elements
  658. | db.publishing.inlines
  659. | db.citerefentry
  660. | db.citetitle
  661. | db.citebiblioid
  662. | db.person
  663. | db.personblurb
  664. | db.personname
  665. | db.subtitle
  666. | db.title
  667. | db.titleabbrev
  668. div {
  669. db.title.role.attribute = attribute role { text }
  670. db.title.attlist =
  671. db.title.role.attribute?
  672. & db.common.attributes
  673. & db.common.linking.attributes
  674. db.title =
  675. ## The text of the title of a section of a document or of a formal block-level element
  676. element title { db.title.attlist, db.all.inlines* }
  677. }
  678. div {
  679. db.titleabbrev.role.attribute = attribute role { text }
  680. db.titleabbrev.attlist =
  681. db.titleabbrev.role.attribute?
  682. & db.common.attributes
  683. & db.common.linking.attributes
  684. db.titleabbrev =
  685. ## The abbreviation of a title
  686. element titleabbrev { db.titleabbrev.attlist, db.all.inlines* }
  687. }
  688. div {
  689. db.subtitle.role.attribute = attribute role { text }
  690. db.subtitle.attlist =
  691. db.subtitle.role.attribute?
  692. & db.common.attributes
  693. & db.common.linking.attributes
  694. db.subtitle =
  695. ## The subtitle of a document
  696. element subtitle { db.subtitle.attlist, db.all.inlines* }
  697. }
  698. div {
  699. db.info.role.attribute = attribute role { text }
  700. db.info.attlist = db.info.role.attribute? & db.common.attributes
  701. db.info =
  702. ## A wrapper for information about a component or other block
  703. element info { db.info.attlist, (db._title & db.info.elements*) }
  704. }
  705. div {
  706. db.titlereq.info.role.attribute = attribute role { text }
  707. db.titlereq.info.attlist =
  708. db.titlereq.info.role.attribute? & db.common.attributes
  709. db.titlereq.info =
  710. ## A wrapper for information about a component or other block with a required title
  711. element info {
  712. db.titlereq.info.attlist, (db._title.req & db.info.elements*)
  713. }
  714. }
  715. div {
  716. db.titleonly.info.role.attribute = attribute role { text }
  717. db.titleonly.info.attlist =
  718. db.titleonly.info.role.attribute? & db.common.attributes
  719. db.titleonly.info =
  720. ## A wrapper for information about a component or other block with only a title
  721. element info {
  722. db.titleonly.info.attlist, (db._title.only & db.info.elements*)
  723. }
  724. }
  725. div {
  726. db.titleonlyreq.info.role.attribute = attribute role { text }
  727. db.titleonlyreq.info.attlist =
  728. db.titleonlyreq.info.role.attribute? & db.common.attributes
  729. db.titleonlyreq.info =
  730. ## A wrapper for information about a component or other block with only a required title
  731. element info {
  732. db.titleonlyreq.info.attlist,
  733. (db._title.onlyreq & db.info.elements*)
  734. }
  735. }
  736. div {
  737. db.titleforbidden.info.role.attribute = attribute role { text }
  738. db.titleforbidden.info.attlist =
  739. db.titleforbidden.info.role.attribute? & db.common.attributes
  740. db.titleforbidden.info =
  741. ## A wrapper for information about a component or other block without a title
  742. element info { db.titleforbidden.info.attlist, db.info.elements* }
  743. }
  744. div {
  745. db.subjectset.role.attribute = attribute role { text }
  746. db.subjectset.scheme.attribute =
  747. ## Identifies the controlled vocabulary used by this set's terms
  748. attribute scheme { xsd:NMTOKEN }
  749. db.subjectset.attlist =
  750. db.subjectset.role.attribute?
  751. & db.common.attributes
  752. & db.common.linking.attributes
  753. & db.subjectset.scheme.attribute?
  754. db.subjectset =
  755. ## A set of terms describing the subject matter of a document
  756. element subjectset { db.subjectset.attlist, db.subject+ }
  757. }
  758. div {
  759. db.subject.role.attribute = attribute role { text }
  760. db.subject.weight.attribute =
  761. ## Specifies a ranking for this subject relative to other subjects in the same set
  762. attribute weight { text }
  763. db.subject.attlist =
  764. db.subject.role.attribute?
  765. & db.common.attributes
  766. & db.common.linking.attributes
  767. & db.subject.weight.attribute?
  768. db.subject =
  769. ## One of a group of terms describing the subject matter of a document
  770. element subject { db.subject.attlist, db.subjectterm+ }
  771. }
  772. div {
  773. db.subjectterm.role.attribute = attribute role { text }
  774. db.subjectterm.attlist =
  775. db.subjectterm.role.attribute?
  776. & db.common.attributes
  777. & db.common.linking.attributes
  778. db.subjectterm =
  779. ## A term in a group of terms describing the subject matter of a document
  780. element subjectterm { db.subjectterm.attlist, text }
  781. }
  782. div {
  783. db.keywordset.role.attribute = attribute role { text }
  784. db.keywordset.attlist =
  785. db.keywordset.role.attribute?
  786. & db.common.attributes
  787. & db.common.linking.attributes
  788. db.keywordset =
  789. ## A set of keywords describing the content of a document
  790. element keywordset { db.keywordset.attlist, db.keyword+ }
  791. }
  792. div {
  793. db.keyword.role.attribute = attribute role { text }
  794. db.keyword.attlist =
  795. db.keyword.role.attribute?
  796. & db.common.attributes
  797. & db.common.linking.attributes
  798. db.keyword =
  799. ## One of a set of keywords describing the content of a document
  800. element keyword { db.keyword.attlist, text }
  801. }
  802. db.table.choice = notAllowed | db.cals.table | db.html.table
  803. db.informaltable.choice =
  804. notAllowed | db.cals.informaltable | db.html.informaltable
  805. db.table = db.table.choice
  806. db.informaltable = db.informaltable.choice
  807. div {
  808. db.procedure.role.attribute = attribute role { text }
  809. db.procedure.attlist =
  810. db.procedure.role.attribute?
  811. & db.common.attributes
  812. & db.common.linking.attributes
  813. db.procedure.info = db._info.title.only
  814. db.procedure =
  815. ## A list of operations to be performed in a well-defined sequence
  816. [
  817. s:pattern [
  818. name = "Root must have version"
  819. "\x{a}" ~
  820. " "
  821. s:rule [
  822. context = "/db:procedure"
  823. "\x{a}" ~
  824. " "
  825. s:assert [
  826. test = "@version"
  827. "If this element is the root element, it must have a version attribute."
  828. ]
  829. "\x{a}" ~
  830. " "
  831. ]
  832. "\x{a}" ~
  833. " "
  834. ]
  835. ]
  836. element procedure {
  837. db.procedure.attlist, db.procedure.info, db.all.blocks*, db.step+
  838. }
  839. }
  840. div {
  841. db.step.role.attribute = attribute role { text }
  842. db.step.attlist =
  843. db.step.role.attribute?
  844. & db.common.attributes
  845. & db.common.linking.attributes
  846. & db.performance.attribute?
  847. db.step.info = db._info.title.only
  848. # This content model is blocks*, step|stepalternatives, blocks* but
  849. # expressed this way it avoids UPA issues in XSD and DTD versions
  850. db.step =
  851. ## A unit of action in a procedure
  852. [
  853. s:pattern [
  854. name = "Root must have version"
  855. "\x{a}" ~
  856. " "
  857. s:rule [
  858. context = "/db:step"
  859. "\x{a}" ~
  860. " "
  861. s:assert [
  862. test = "@version"
  863. "If this element is the root element, it must have a version attribute."
  864. ]
  865. "\x{a}" ~
  866. " "
  867. ]
  868. "\x{a}" ~
  869. " "
  870. ]
  871. ]
  872. element step {
  873. db.step.attlist,
  874. db.step.info,
  875. ((db.all.blocks+,
  876. ((db.substeps | db.stepalternatives), db.all.blocks*)?)
  877. | ((db.substeps | db.stepalternatives), db.all.blocks*))
  878. }
  879. }
  880. div {
  881. db.stepalternatives.role.attribute = attribute role { text }
  882. db.stepalternatives.attlist =
  883. db.stepalternatives.role.attribute?
  884. & db.common.attributes
  885. & db.common.linking.attributes
  886. & db.performance.attribute?
  887. db.stepalternatives.info = db._info.title.forbidden
  888. db.stepalternatives =
  889. ## Alternative steps in a procedure
  890. [
  891. s:pattern [
  892. name = "Root must have version"
  893. "\x{a}" ~
  894. " "
  895. s:rule [
  896. context = "/db:stepalternatives"
  897. "\x{a}" ~
  898. " "
  899. s:assert [
  900. test = "@version"
  901. "If this element is the root element, it must have a version attribute."
  902. ]
  903. "\x{a}" ~
  904. " "
  905. ]
  906. "\x{a}" ~
  907. " "
  908. ]
  909. ]
  910. element stepalternatives {
  911. db.stepalternatives.attlist, db.stepalternatives.info, db.step+
  912. }
  913. }
  914. div {
  915. db.substeps.role.attribute = attribute role { text }
  916. db.substeps.attlist =
  917. db.substeps.role.attribute?
  918. & db.common.attributes
  919. & db.common.linking.attributes
  920. & db.performance.attribute?
  921. db.substeps =
  922. ## A wrapper for steps that occur within steps in a procedure
  923. element substeps { db.substeps.attlist, db.step+ }
  924. }
  925. div {
  926. db.sidebar.floatstyle.attribute = db.floatstyle.attribute
  927. db.sidebar.role.attribute = attribute role { text }
  928. db.sidebar.attlist =
  929. db.sidebar.role.attribute?
  930. & db.sidebar.floatstyle.attribute?
  931. & db.common.attributes
  932. & db.common.linking.attributes
  933. db.sidebar.info = db._info
  934. db.sidebar =
  935. ## A portion of a document that is isolated from the main narrative flow
  936. [
  937. s:pattern [
  938. name = "Element exclusion"
  939. "\x{a}" ~
  940. " "
  941. s:rule [
  942. context = "db:sidebar"
  943. "\x{a}" ~
  944. " "
  945. s:assert [
  946. test = "not(.//db:sidebar)"
  947. "sidebar must not occur among the children or descendants of sidebar"
  948. ]
  949. "\x{a}" ~
  950. " "
  951. ]
  952. "\x{a}" ~
  953. " "
  954. ]
  955. s:pattern [
  956. name = "Root must have version"
  957. "\x{a}" ~
  958. " "
  959. s:rule [
  960. context = "/db:sidebar"
  961. "\x{a}" ~
  962. " "
  963. s:assert [
  964. test = "@version"
  965. "If this element is the root element, it must have a version attribute."
  966. ]
  967. "\x{a}" ~
  968. " "
  969. ]
  970. "\x{a}" ~
  971. " "
  972. ]
  973. ]
  974. element sidebar {
  975. db.sidebar.attlist, db.sidebar.info, db.all.blocks+
  976. }
  977. }
  978. div {
  979. db.abstract.role.attribute = attribute role { text }
  980. db.abstract.attlist =
  981. db.abstract.role.attribute?
  982. & db.common.attributes
  983. & db.common.linking.attributes
  984. db.abstract.info = db._info.title.only
  985. db.abstract =
  986. ## A summary
  987. [
  988. s:pattern [
  989. name = "Root must have version"
  990. "\x{a}" ~
  991. " "
  992. s:rule [
  993. context = "/db:abstract"
  994. "\x{a}" ~
  995. " "
  996. s:assert [
  997. test = "@version"
  998. "If this element is the root element, it must have a version attribute."
  999. ]
  1000. "\x{a}" ~
  1001. " "
  1002. ]
  1003. "\x{a}" ~
  1004. " "
  1005. ]
  1006. ]
  1007. element abstract {
  1008. db.abstract.attlist, db.abstract.info, db.para.blocks+
  1009. }
  1010. }
  1011. div {
  1012. db.personblurb.role.attribute = attribute role { text }
  1013. db.personblurb.attlist =
  1014. db.personblurb.role.attribute?
  1015. & db.common.attributes
  1016. & db.common.linking.attributes
  1017. db.personblurb.info = db._info.title.only
  1018. db.personblurb =
  1019. ## A short description or note about a person
  1020. [
  1021. s:pattern [
  1022. name = "Root must have version"
  1023. "\x{a}" ~
  1024. " "
  1025. s:rule [
  1026. context = "/db:personblurb"
  1027. "\x{a}" ~
  1028. " "
  1029. s:assert [
  1030. test = "@version"
  1031. "If this element is the root element, it must have a version attribute."
  1032. ]
  1033. "\x{a}" ~
  1034. " "
  1035. ]
  1036. "\x{a}" ~
  1037. " "
  1038. ]
  1039. ]
  1040. element personblurb {
  1041. db.personblurb.attlist, db.personblurb.info, db.para.blocks+
  1042. }
  1043. }
  1044. div {
  1045. db.blockquote.role.attribute = attribute role { text }
  1046. db.blockquote.attlist =
  1047. db.blockquote.role.attribute?
  1048. & db.common.attributes
  1049. & db.common.linking.attributes
  1050. db.blockquote.info = db._info.title.only
  1051. db.blockquote =
  1052. ## A quotation set off from the main text
  1053. [
  1054. s:pattern [
  1055. name = "Root must have version"
  1056. "\x{a}" ~
  1057. " "
  1058. s:rule [
  1059. context = "/db:blockquote"
  1060. "\x{a}" ~
  1061. " "
  1062. s:assert [
  1063. test = "@version"
  1064. "If this element is the root element, it must have a version attribute."
  1065. ]
  1066. "\x{a}" ~
  1067. " "
  1068. ]
  1069. "\x{a}" ~
  1070. " "
  1071. ]
  1072. ]
  1073. element blockquote {
  1074. db.blockquote.attlist,
  1075. db.blockquote.info,
  1076. db.attribution?,
  1077. db.all.blocks+
  1078. }
  1079. }
  1080. div {
  1081. db.attribution.role.attribute = attribute role { text }
  1082. db.attribution.attlist =
  1083. db.attribution.role.attribute?
  1084. & db.common.attributes
  1085. & db.common.linking.attributes
  1086. db.attribution =
  1087. ## The source of a block quote or epigraph
  1088. element attribution {
  1089. db.attribution.attlist,
  1090. (db._text
  1091. | db.person
  1092. | db.personname
  1093. | db.citetitle
  1094. | db.citation)*
  1095. }
  1096. }
  1097. div {
  1098. db.bridgehead.renderas.enumeration =
  1099. ## Render as a first-level section
  1100. "sect1"
  1101. |
  1102. ## Render as a second-level section
  1103. "sect2"
  1104. |
  1105. ## Render as a third-level section
  1106. "sect3"
  1107. |
  1108. ## Render as a fourth-level section
  1109. "sect4"
  1110. |
  1111. ## Render as a fifth-level section
  1112. "sect5"
  1113. db.bridgehead.renderas-enum.attribute =
  1114. ## Indicates how the bridge head should be rendered
  1115. attribute renderas { db.bridgehead.renderas.enumeration }?
  1116. db.bridgehead.renderas-other.attribute =
  1117. ## Identifies the nature of the non-standard rendering
  1118. attribute otherrenderas { xsd:NMTOKEN }
  1119. db.bridgehead.renderas-other.attributes =
  1120. ## Indicates how the bridge head should be rendered
  1121. attribute renderas {
  1122. ## Identifies a non-standard rendering
  1123. "other"
  1124. }
  1125. & db.bridgehead.renderas-other.attribute
  1126. db.bridgehead.renderas.attribute =
  1127. db.bridgehead.renderas-enum.attribute
  1128. | db.bridgehead.renderas-other.attributes
  1129. db.bridgehead.role.attribute = attribute role { text }
  1130. db.bridgehead.attlist =
  1131. db.bridgehead.role.attribute?
  1132. & db.common.attributes
  1133. & db.common.linking.attributes
  1134. & db.bridgehead.renderas.attribute?
  1135. db.bridgehead =
  1136. ## A free-floating heading
  1137. element bridgehead { db.bridgehead.attlist, db.all.inlines* }
  1138. }
  1139. div {
  1140. db.remark.role.attribute = attribute role { text }
  1141. db.remark.attlist =
  1142. db.remark.role.attribute?
  1143. & db.common.attributes
  1144. & db.common.linking.attributes
  1145. db.remark =
  1146. ## A remark (or comment) intended for presentation in a draft manuscript
  1147. element remark { db.remark.attlist, db.all.inlines* }
  1148. }
  1149. div {
  1150. db.epigraph.role.attribute = attribute role { text }
  1151. db.epigraph.attlist =
  1152. db.epigraph.role.attribute?
  1153. & db.common.attributes
  1154. & db.common.linking.attributes
  1155. db.epigraph.info = db._info.title.forbidden
  1156. db.epigraph =
  1157. ## A short inscription at the beginning of a document or component
  1158. [
  1159. s:pattern [
  1160. name = "Root must have version"
  1161. "\x{a}" ~
  1162. " "
  1163. s:rule [
  1164. context = "/db:epigraph"
  1165. "\x{a}" ~
  1166. " "
  1167. s:assert [
  1168. test = "@version"
  1169. "If this element is the root element, it must have a version attribute."
  1170. ]
  1171. "\x{a}" ~
  1172. " "
  1173. ]
  1174. "\x{a}" ~
  1175. " "
  1176. ]
  1177. ]
  1178. element epigraph {
  1179. db.epigraph.attlist,
  1180. db.epigraph.info,
  1181. db.attribution?,
  1182. (db.para.blocks | db.literallayout)+
  1183. }
  1184. }
  1185. div {
  1186. db.footnote.role.attribute = attribute role { text }
  1187. db.footnote.label.attribute =
  1188. ## Identifies the desired footnote mark
  1189. attribute label { xsd:NMTOKEN }
  1190. db.footnote.attlist =
  1191. db.footnote.role.attribute?
  1192. & db.common.attributes
  1193. & db.common.linking.attributes
  1194. & db.footnote.label.attribute?
  1195. db.footnote =
  1196. ## A footnote
  1197. [
  1198. s:pattern [
  1199. name = "Element exclusion"
  1200. "\x{a}" ~
  1201. " "
  1202. s:rule [
  1203. context = "db:footnote"
  1204. "\x{a}" ~
  1205. " "
  1206. s:assert [
  1207. test = "not(.//db:footnote)"
  1208. "footnote must not occur among the children or descendants of footnote"
  1209. ]
  1210. "\x{a}" ~
  1211. " "
  1212. ]
  1213. "\x{a}" ~
  1214. " "
  1215. ]
  1216. s:pattern [
  1217. name = "Element exclusion"
  1218. "\x{a}" ~
  1219. " "
  1220. s:rule [
  1221. context = "db:footnote"
  1222. "\x{a}" ~
  1223. " "
  1224. s:assert [
  1225. test = "not(.//db:example)"
  1226. "example must not occur among the children or descendants of footnote"
  1227. ]
  1228. "\x{a}" ~
  1229. " "
  1230. ]
  1231. "\x{a}" ~
  1232. " "
  1233. ]
  1234. s:pattern [
  1235. name = "Element exclusion"
  1236. "\x{a}" ~
  1237. " "
  1238. s:rule [
  1239. context = "db:footnote"
  1240. "\x{a}" ~
  1241. " "
  1242. s:assert [
  1243. test = "not(.//db:figure)"
  1244. "figure must not occur among the children or descendants of footnote"
  1245. ]
  1246. "\x{a}" ~
  1247. " "
  1248. ]
  1249. "\x{a}" ~
  1250. " "
  1251. ]
  1252. s:pattern [
  1253. name = "Element exclusion"
  1254. "\x{a}" ~
  1255. " "
  1256. s:rule [
  1257. context = "db:footnote"
  1258. "\x{a}" ~
  1259. " "
  1260. s:assert [
  1261. test = "not(.//db:table)"
  1262. "table must not occur among the children or descendants of footnote"
  1263. ]
  1264. "\x{a}" ~
  1265. " "
  1266. ]
  1267. "\x{a}" ~
  1268. " "
  1269. ]
  1270. s:pattern [
  1271. name = "Element exclusion"
  1272. "\x{a}" ~
  1273. " "
  1274. s:rule [
  1275. context = "db:footnote"
  1276. "\x{a}" ~
  1277. " "
  1278. s:assert [
  1279. test = "not(.//db:equation)"
  1280. "equation must not occur among the children or descendants of footnote"
  1281. ]
  1282. "\x{a}" ~
  1283. " "
  1284. ]
  1285. "\x{a}" ~
  1286. " "
  1287. ]
  1288. s:pattern [
  1289. name = "Element exclusion"
  1290. "\x{a}" ~
  1291. " "
  1292. s:rule [
  1293. context = "db:footnote"
  1294. "\x{a}" ~
  1295. " "
  1296. s:assert [
  1297. test = "not(.//db:sidebar)"
  1298. "sidebar must not occur among the children or descendants of footnote"
  1299. ]
  1300. "\x{a}" ~
  1301. " "
  1302. ]
  1303. "\x{a}" ~
  1304. " "
  1305. ]
  1306. s:pattern [
  1307. name = "Element exclusion"
  1308. "\x{a}" ~
  1309. " "
  1310. s:rule [
  1311. context = "db:footnote"
  1312. "\x{a}" ~
  1313. " "
  1314. s:assert [
  1315. test = "not(.//db:task)"
  1316. "task must not occur among the children or descendants of footnote"
  1317. ]
  1318. "\x{a}" ~
  1319. " "
  1320. ]
  1321. "\x{a}" ~
  1322. " "
  1323. ]
  1324. s:pattern [
  1325. name = "Element exclusion"
  1326. "\x{a}" ~
  1327. " "
  1328. s:rule [
  1329. context = "db:footnote"
  1330. "\x{a}" ~
  1331. " "
  1332. s:assert [
  1333. test = "not(.//db:epigraph)"
  1334. "epigraph must not occur among the children or descendants of footnote"
  1335. ]
  1336. "\x{a}" ~
  1337. " "
  1338. ]
  1339. "\x{a}" ~
  1340. " "
  1341. ]
  1342. s:pattern [
  1343. name = "Element exclusion"
  1344. "\x{a}" ~
  1345. " "
  1346. s:rule [
  1347. context = "db:footnote"
  1348. "\x{a}" ~
  1349. " "
  1350. s:assert [
  1351. test = "not(.//db:caution)"
  1352. "caution must not occur among the children or descendants of footnote"
  1353. ]
  1354. "\x{a}" ~
  1355. " "
  1356. ]
  1357. "\x{a}" ~
  1358. " "
  1359. ]
  1360. s:pattern [
  1361. name = "Element exclusion"
  1362. "\x{a}" ~
  1363. " "
  1364. s:rule [
  1365. context = "db:footnote"
  1366. "\x{a}" ~
  1367. " "
  1368. s:assert [
  1369. test = "not(.//db:important)"
  1370. "important must not occur among the children or descendants of footnote"
  1371. ]
  1372. "\x{a}" ~
  1373. " "
  1374. ]
  1375. "\x{a}" ~
  1376. " "
  1377. ]
  1378. s:pattern [
  1379. name = "Element exclusion"
  1380. "\x{a}" ~
  1381. " "
  1382. s:rule [
  1383. context = "db:footnote"
  1384. "\x{a}" ~
  1385. " "
  1386. s:assert [
  1387. test = "not(.//db:note)"
  1388. "note must not occur among the children or descendants of footnote"
  1389. ]
  1390. "\x{a}" ~
  1391. " "
  1392. ]
  1393. "\x{a}" ~
  1394. " "
  1395. ]
  1396. s:pattern [
  1397. name = "Element exclusion"
  1398. "\x{a}" ~
  1399. " "
  1400. s:rule [
  1401. context = "db:footnote"
  1402. "\x{a}" ~
  1403. " "
  1404. s:assert [
  1405. test = "not(.//db:tip)"
  1406. "tip must not occur among the children or descendants of footnote"
  1407. ]
  1408. "\x{a}" ~
  1409. " "
  1410. ]
  1411. "\x{a}" ~
  1412. " "
  1413. ]
  1414. s:pattern [
  1415. name = "Element exclusion"
  1416. "\x{a}" ~
  1417. " "
  1418. s:rule [
  1419. context = "db:footnote"
  1420. "\x{a}" ~
  1421. " "
  1422. s:assert [
  1423. test = "not(.//db:warning)"
  1424. "warning must not occur among the children or descendants of footnote"
  1425. ]
  1426. "\x{a}" ~
  1427. " "
  1428. ]
  1429. "\x{a}" ~
  1430. " "
  1431. ]
  1432. ]
  1433. element footnote { db.footnote.attlist, db.all.blocks+ }
  1434. }
  1435. div {
  1436. db.formalpara.role.attribute = attribute role { text }
  1437. db.formalpara.attlist =
  1438. db.formalpara.role.attribute?
  1439. & db.common.attributes
  1440. & db.common.linking.attributes
  1441. db.formalpara.info = db._info.title.onlyreq
  1442. db.formalpara =
  1443. ## A paragraph with a title
  1444. [
  1445. s:pattern [
  1446. name = "Root must have version"
  1447. "\x{a}" ~
  1448. " "
  1449. s:rule [
  1450. context = "/db:formalpara"
  1451. "\x{a}" ~
  1452. " "
  1453. s:assert [
  1454. test = "@version"
  1455. "If this element is the root element, it must have a version attribute."
  1456. ]
  1457. "\x{a}" ~
  1458. " "
  1459. ]
  1460. "\x{a}" ~
  1461. " "
  1462. ]
  1463. ]
  1464. element formalpara {
  1465. db.formalpara.attlist,
  1466. db.formalpara.info,
  1467. db.indexing.inlines*,
  1468. db.para
  1469. }
  1470. }
  1471. div {
  1472. db.para.role.attribute = attribute role { text }
  1473. db.para.attlist =
  1474. db.para.role.attribute?
  1475. & db.common.attributes
  1476. & db.common.linking.attributes
  1477. db.para.info = db._info.title.forbidden
  1478. db.para =
  1479. ## A paragraph
  1480. [
  1481. s:pattern [
  1482. name = "Root must have version"
  1483. "\x{a}" ~
  1484. " "
  1485. s:rule [
  1486. context = "/db:para"
  1487. "\x{a}" ~
  1488. " "
  1489. s:assert [
  1490. test = "@version"
  1491. "If this element is the root element, it must have a version attribute."
  1492. ]
  1493. "\x{a}" ~
  1494. " "
  1495. ]
  1496. "\x{a}" ~
  1497. " "
  1498. ]
  1499. ]
  1500. element para {
  1501. db.para.attlist,
  1502. db.para.info,
  1503. (db.all.inlines | db.nopara.blocks)*
  1504. }
  1505. }
  1506. div {
  1507. db.simpara.role.attribute = attribute role { text }
  1508. db.simpara.attlist =
  1509. db.simpara.role.attribute?
  1510. & db.common.attributes
  1511. & db.common.linking.attributes
  1512. db.simpara.info = db._info.title.forbidden
  1513. db.simpara =
  1514. ## A paragraph that contains only text and inline markup, no block elements
  1515. [
  1516. s:pattern [
  1517. name = "Root must have version"
  1518. "\x{a}" ~
  1519. " "
  1520. s:rule [
  1521. context = "/db:simpara"
  1522. "\x{a}" ~
  1523. " "
  1524. s:assert [
  1525. test = "@version"
  1526. "If this element is the root element, it must have a version attribute."
  1527. ]
  1528. "\x{a}" ~
  1529. " "
  1530. ]
  1531. "\x{a}" ~
  1532. " "
  1533. ]
  1534. ]
  1535. element simpara {
  1536. db.simpara.attlist, db.simpara.info, db.all.inlines*
  1537. }
  1538. }
  1539. div {
  1540. db.itemizedlist.role.attribute = attribute role { text }
  1541. db.itemizedlist.mark.attribute =
  1542. ## Identifies the type of mark to be used on items in this list
  1543. attribute mark { xsd:NMTOKEN }
  1544. db.itemizedlist.attlist =
  1545. db.itemizedlist.role.attribute?
  1546. & db.common.attributes
  1547. & db.common.linking.attributes
  1548. & db.spacing.attribute?
  1549. & db.itemizedlist.mark.attribute?
  1550. db.itemizedlist.info = db._info.title.only
  1551. db.itemizedlist =
  1552. ## A list in which each entry is marked with a bullet or other dingbat
  1553. [
  1554. s:pattern [
  1555. name = "Root must have version"
  1556. "\x{a}" ~
  1557. " "
  1558. s:rule [
  1559. context = "/db:itemizedlist"
  1560. "\x{a}" ~
  1561. " "
  1562. s:assert [
  1563. test = "@version"
  1564. "If this element is the root element, it must have a version attribute."
  1565. ]
  1566. "\x{a}" ~
  1567. " "
  1568. ]
  1569. "\x{a}" ~
  1570. " "
  1571. ]
  1572. ]
  1573. element itemizedlist {
  1574. db.itemizedlist.attlist,
  1575. db.itemizedlist.info,
  1576. db.all.blocks*,
  1577. db.listitem+
  1578. }
  1579. }
  1580. div {
  1581. db.orderedlist.role.attribute = attribute role { text }
  1582. db.orderedlist.continuation.enumeration =
  1583. ## Specifies that numbering should begin where the preceding list left off
  1584. "continues"
  1585. |
  1586. ## Specifies that numbering should begin again at 1
  1587. "restarts"
  1588. db.orderedlist.continuation.attribute =
  1589. ## Indicates how list numbering should begin relative to the immediately preceding list
  1590. attribute continuation { db.orderedlist.continuation.enumeration }
  1591. db.orderedlist.startingnumber.attribute =
  1592. ## Specifies the initial line number.
  1593. attribute startingnumber { xsd:integer }
  1594. db.orderedlist.inheritnum.enumeration =
  1595. ## Specifies that numbering should ignore list nesting
  1596. "ignore"
  1597. |
  1598. ## Specifies that numbering should inherit from outer-level lists
  1599. "inherit"
  1600. db.orderedlist.inheritnum.attribute =
  1601. ## Indicates whether or not item numbering should be influenced by list nesting
  1602. attribute inheritnum { db.orderedlist.inheritnum.enumeration }
  1603. db.orderedlist.numeration.enumeration =
  1604. ## Specifies Arabic numeration (1, 2, 3, …)
  1605. "arabic"
  1606. |
  1607. ## Specifies upper-case alphabetic numeration (A, B, C, …)
  1608. "upperalpha"
  1609. |
  1610. ## Specifies lower-case alphabetic numeration (a, b, c, …)
  1611. "loweralpha"
  1612. |
  1613. ## Specifies upper-case Roman numeration (I, II, III, …)
  1614. "upperroman"
  1615. |
  1616. ## Specifies lower-case Roman numeration (i, ii, iii …)
  1617. "lowerroman"
  1618. db.orderedlist.numeration.attribute =
  1619. ## Indicates the desired numeration
  1620. attribute numeration { db.orderedlist.numeration.enumeration }
  1621. db.orderedlist.attlist =
  1622. db.orderedlist.role.attribute?
  1623. & db.common.attributes
  1624. & db.common.linking.attributes
  1625. & db.spacing.attribute?
  1626. & (db.orderedlist.continuation.attribute
  1627. | db.orderedlist.startingnumber.attribute)?
  1628. & db.orderedlist.inheritnum.attribute?
  1629. & db.orderedlist.numeration.attribute?
  1630. db.orderedlist.info = db._info.title.only
  1631. db.orderedlist =
  1632. ## A list in which each entry is marked with a sequentially incremented label
  1633. [
  1634. s:pattern [
  1635. name = "Root must have version"
  1636. "\x{a}" ~
  1637. " "
  1638. s:rule [
  1639. context = "/db:orderedlist"
  1640. "\x{a}" ~
  1641. " "
  1642. s:assert [
  1643. test = "@version"
  1644. "If this element is the root element, it must have a version attribute."
  1645. ]
  1646. "\x{a}" ~
  1647. " "
  1648. ]
  1649. "\x{a}" ~
  1650. " "
  1651. ]
  1652. ]
  1653. element orderedlist {
  1654. db.orderedlist.attlist,
  1655. db.orderedlist.info,
  1656. db.all.blocks*,
  1657. db.listitem+
  1658. }
  1659. }
  1660. div {
  1661. db.listitem.role.attribute = attribute role { text }
  1662. db.listitem.override.attribute =
  1663. ## Specifies the keyword for the type of mark that should be used on this
  1664. ## item, instead of the mark that would be used by default
  1665. attribute override { xsd:NMTOKEN }
  1666. db.listitem.attlist =
  1667. db.listitem.role.attribute?
  1668. & db.common.attributes
  1669. & db.common.linking.attributes
  1670. & db.listitem.override.attribute?
  1671. db.listitem =
  1672. ## A wrapper for the elements of a list item
  1673. element listitem { db.listitem.attlist, db.all.blocks+ }
  1674. }
  1675. div {
  1676. db.segmentedlist.role.attribute = attribute role { text }
  1677. db.segmentedlist.attlist =
  1678. db.segmentedlist.role.attribute?
  1679. & db.common.attributes
  1680. & db.common.linking.attributes
  1681. db.segmentedlist.info = db._info.title.only
  1682. db.segmentedlist =
  1683. ## A segmented list, a list of sets of elements
  1684. [
  1685. s:pattern [
  1686. name = "Root must have version"
  1687. "\x{a}" ~
  1688. " "
  1689. s:rule [
  1690. context = "/db:segmentedlist"
  1691. "\x{a}" ~
  1692. " "
  1693. s:assert [
  1694. test = "@version"
  1695. "If this element is the root element, it must have a version attribute."
  1696. ]
  1697. "\x{a}" ~
  1698. " "
  1699. ]
  1700. "\x{a}" ~
  1701. " "
  1702. ]
  1703. ]
  1704. element segmentedlist {
  1705. db.segmentedlist.attlist,
  1706. db.segmentedlist.info,
  1707. db.segtitle+,
  1708. db.seglistitem+
  1709. }
  1710. }
  1711. div {
  1712. db.segtitle.role.attribute = attribute role { text }
  1713. db.segtitle.attlist =
  1714. db.segtitle.role.attribute?
  1715. & db.common.attributes
  1716. & db.common.linking.attributes
  1717. db.segtitle =
  1718. ## The title of an element of a list item in a segmented list
  1719. element segtitle { db.segtitle.attlist, db.all.inlines* }
  1720. }
  1721. div {
  1722. db.seglistitem.role.attribute = attribute role { text }
  1723. db.seglistitem.attlist =
  1724. db.seglistitem.role.attribute?
  1725. & db.common.attributes
  1726. & db.common.linking.attributes
  1727. db.seglistitem =
  1728. ## A list item in a segmented list
  1729. [
  1730. s:pattern [
  1731. name = "Cardinality of segments and titles"
  1732. "\x{a}" ~
  1733. " "
  1734. s:rule [
  1735. context = "db:seglistitem"
  1736. "\x{a}" ~
  1737. " "
  1738. s:assert [
  1739. test = "count(db:seg) = count(../db:segtitle)"
  1740. "The number of seg elements must be the same as the number of segtitle elements in the parent segmentedlist"
  1741. ]
  1742. "\x{a}" ~
  1743. " "
  1744. ]
  1745. "\x{a}" ~
  1746. " "
  1747. ]
  1748. ]
  1749. element seglistitem { db.seglistitem.attlist, db.seg+ }
  1750. }
  1751. div {
  1752. db.seg.role.attribute = attribute role { text }
  1753. db.seg.attlist =
  1754. db.seg.role.attribute?
  1755. & db.common.attributes
  1756. & db.common.linking.attributes
  1757. db.seg =
  1758. ## An element of a list item in a segmented list
  1759. element seg { db.seg.attlist, db.all.inlines* }
  1760. }
  1761. div {
  1762. db.simplelist.role.attribute = attribute role { text }
  1763. db.simplelist.type.enumeration =
  1764. ## A tabular presentation in row-major order.
  1765. "horiz"
  1766. |
  1767. ## A tabular presentation in column-major order.
  1768. "vert"
  1769. |
  1770. ## An inline presentation, usually a comma-delimited list.
  1771. "inline"
  1772. db.simplelist.type.attribute =
  1773. ## Specifies the type of list presentation.
  1774. [ a:defaultValue = "vert" ]
  1775. attribute type { db.simplelist.type.enumeration }
  1776. db.simplelist.columns.attribute =
  1777. ## Specifies the number of columns for horizontal or vertical presentation
  1778. attribute columns { xsd:integer }
  1779. db.simplelist.attlist =
  1780. db.simplelist.role.attribute?
  1781. & db.common.attributes
  1782. & db.common.linking.attributes
  1783. & db.simplelist.type.attribute?
  1784. & db.simplelist.columns.attribute?
  1785. db.simplelist =
  1786. ## An undecorated list of single words or short phrases
  1787. [
  1788. s:pattern [
  1789. name = "Root must have version"
  1790. "\x{a}" ~
  1791. " "
  1792. s:rule [
  1793. context = "/db:simplelist"
  1794. "\x{a}" ~
  1795. " "
  1796. s:assert [
  1797. test = "@version"
  1798. "If this element is the root element, it must have a version attribute."
  1799. ]
  1800. "\x{a}" ~
  1801. " "
  1802. ]
  1803. "\x{a}" ~
  1804. " "
  1805. ]
  1806. ]
  1807. element simplelist { db.simplelist.attlist, db.member+ }
  1808. }
  1809. div {
  1810. db.member.role.attribute = attribute role { text }
  1811. db.member.attlist =
  1812. db.member.role.attribute?
  1813. & db.common.attributes
  1814. & db.common.linking.attributes
  1815. db.member =
  1816. ## An element of a simple list
  1817. element member { db.member.attlist, db.all.inlines* }
  1818. }
  1819. div {
  1820. db.variablelist.role.attribute = attribute role { text }
  1821. db.variablelist.termlength.attribute =
  1822. ## Indicates a length beyond which the presentation system may consider a term too long and select an alternate presentation for that term, item, or list
  1823. attribute termlength { text }
  1824. db.variablelist.attlist =
  1825. db.variablelist.role.attribute?
  1826. & db.common.attributes
  1827. & db.common.linking.attributes
  1828. & db.spacing.attribute?
  1829. & db.variablelist.termlength.attribute?
  1830. db.variablelist.info = db._info.title.only
  1831. db.variablelist =
  1832. ## A list in which each entry is composed of a set of one or more terms and an associated description
  1833. [
  1834. s:pattern [
  1835. name = "Root must have version"
  1836. "\x{a}" ~
  1837. " "
  1838. s:rule [
  1839. context = "/db:variablelist"
  1840. "\x{a}" ~
  1841. " "
  1842. s:assert [
  1843. test = "@version"
  1844. "If this element is the root element, it must have a version attribute."
  1845. ]
  1846. "\x{a}" ~
  1847. " "
  1848. ]
  1849. "\x{a}" ~
  1850. " "
  1851. ]
  1852. ]
  1853. element variablelist {
  1854. db.variablelist.attlist,
  1855. db.variablelist.info,
  1856. db.all.blocks*,
  1857. db.varlistentry+
  1858. }
  1859. }
  1860. div {
  1861. db.varlistentry.role.attribute = attribute role { text }
  1862. db.varlistentry.attlist =
  1863. db.varlistentry.role.attribute?
  1864. & db.common.attributes
  1865. & db.common.linking.attributes
  1866. db.varlistentry =
  1867. ## A wrapper for a set of terms and the associated description in a variable list
  1868. element varlistentry {
  1869. db.varlistentry.attlist, db.term+, db.listitem
  1870. }
  1871. }
  1872. div {
  1873. db.term.role.attribute = attribute role { text }
  1874. db.term.attlist =
  1875. db.term.role.attribute?
  1876. & db.common.attributes
  1877. & db.common.linking.attributes
  1878. db.term =
  1879. ## The word or phrase being defined or described in a variable list
  1880. element term { db.term.attlist, db.all.inlines* }
  1881. }
  1882. div {
  1883. db.example.role.attribute = attribute role { text }
  1884. db.example.label.attribute = db.label.attribute
  1885. db.example.width.attribute = db.width.characters.attribute
  1886. db.example.pgwide.attribute = db.pgwide.attribute
  1887. db.example.floatstyle.attribute = db.floatstyle.attribute
  1888. db.example.attlist =
  1889. db.example.role.attribute?
  1890. & db.common.attributes
  1891. & db.common.linking.attributes
  1892. & db.example.label.attribute?
  1893. & db.example.floatstyle.attribute?
  1894. & (db.example.width.attribute | db.example.pgwide.attribute)?
  1895. db.example.info = db._info.title.onlyreq
  1896. db.example =
  1897. ## A formal example, with a title
  1898. [
  1899. s:pattern [
  1900. name = "Element exclusion"
  1901. "\x{a}" ~
  1902. " "
  1903. s:rule [
  1904. context = "db:example"
  1905. "\x{a}" ~
  1906. " "
  1907. s:assert [
  1908. test = "not(.//db:example)"
  1909. "example must not occur among the children or descendants of example"
  1910. ]
  1911. "\x{a}" ~
  1912. " "
  1913. ]
  1914. "\x{a}" ~
  1915. " "
  1916. ]
  1917. s:pattern [
  1918. name = "Element exclusion"
  1919. "\x{a}" ~
  1920. " "
  1921. s:rule [
  1922. context = "db:example"
  1923. "\x{a}" ~
  1924. " "
  1925. s:assert [
  1926. test = "not(.//db:figure)"
  1927. "figure must not occur among the children or descendants of example"
  1928. ]
  1929. "\x{a}" ~
  1930. " "
  1931. ]
  1932. "\x{a}" ~
  1933. " "
  1934. ]
  1935. s:pattern [
  1936. name = "Element exclusion"
  1937. "\x{a}" ~
  1938. " "
  1939. s:rule [
  1940. context = "db:example"
  1941. "\x{a}" ~
  1942. " "
  1943. s:assert [
  1944. test = "not(.//db:table)"
  1945. "table must not occur among the children or descendants of example"
  1946. ]
  1947. "\x{a}" ~
  1948. " "
  1949. ]
  1950. "\x{a}" ~
  1951. " "
  1952. ]
  1953. s:pattern [
  1954. name = "Element exclusion"
  1955. "\x{a}" ~
  1956. " "
  1957. s:rule [
  1958. context = "db:example"
  1959. "\x{a}" ~
  1960. " "
  1961. s:assert [
  1962. test = "not(.//db:equation)"
  1963. "equation must not occur among the children or descendants of example"
  1964. ]
  1965. "\x{a}" ~
  1966. " "
  1967. ]
  1968. "\x{a}" ~
  1969. " "
  1970. ]
  1971. s:pattern [
  1972. name = "Element exclusion"
  1973. "\x{a}" ~
  1974. " "
  1975. s:rule [
  1976. context = "db:example"
  1977. "\x{a}" ~
  1978. " "
  1979. s:assert [
  1980. test = "not(.//db:caution)"
  1981. "caution must not occur among the children or descendants of example"
  1982. ]
  1983. "\x{a}" ~
  1984. " "
  1985. ]
  1986. "\x{a}" ~
  1987. " "
  1988. ]
  1989. s:pattern [
  1990. name = "Element exclusion"
  1991. "\x{a}" ~
  1992. " "
  1993. s:rule [
  1994. context = "db:example"
  1995. "\x{a}" ~
  1996. " "
  1997. s:assert [
  1998. test = "not(.//db:important)"
  1999. "important must not occur among the children or descendants of example"
  2000. ]
  2001. "\x{a}" ~
  2002. " "
  2003. ]
  2004. "\x{a}" ~
  2005. " "
  2006. ]
  2007. s:pattern [
  2008. name = "Element exclusion"
  2009. "\x{a}" ~
  2010. " "
  2011. s:rule [
  2012. context = "db:example"
  2013. "\x{a}" ~
  2014. " "
  2015. s:assert [
  2016. test = "not(.//db:note)"
  2017. "note must not occur among the children or descendants of example"
  2018. ]
  2019. "\x{a}" ~
  2020. " "
  2021. ]
  2022. "\x{a}" ~
  2023. " "
  2024. ]
  2025. s:pattern [
  2026. name = "Element exclusion"
  2027. "\x{a}" ~
  2028. " "
  2029. s:rule [
  2030. context = "db:example"
  2031. "\x{a}" ~
  2032. " "
  2033. s:assert [
  2034. test = "not(.//db:tip)"
  2035. "tip must not occur among the children or descendants of example"
  2036. ]
  2037. "\x{a}" ~
  2038. " "
  2039. ]
  2040. "\x{a}" ~
  2041. " "
  2042. ]
  2043. s:pattern [
  2044. name = "Element exclusion"
  2045. "\x{a}" ~
  2046. " "
  2047. s:rule [
  2048. context = "db:example"
  2049. "\x{a}" ~
  2050. " "
  2051. s:assert [
  2052. test = "not(.//db:warning)"
  2053. "warning must not occur among the children or descendants of example"
  2054. ]
  2055. "\x{a}" ~
  2056. " "
  2057. ]
  2058. "\x{a}" ~
  2059. " "
  2060. ]
  2061. s:pattern [
  2062. name = "Root must have version"
  2063. "\x{a}" ~
  2064. " "
  2065. s:rule [
  2066. context = "/db:example"
  2067. "\x{a}" ~
  2068. " "
  2069. s:assert [
  2070. test = "@version"
  2071. "If this element is the root element, it must have a version attribute."
  2072. ]
  2073. "\x{a}" ~
  2074. " "
  2075. ]
  2076. "\x{a}" ~
  2077. " "
  2078. ]
  2079. ]
  2080. element example {
  2081. db.example.attlist, db.example.info, db.all.blocks+, db.caption?
  2082. }
  2083. }
  2084. div {
  2085. db.informalexample.role.attribute = attribute role { text }
  2086. db.informalexample.width.attribute = db.width.characters.attribute
  2087. db.informalexample.pgwide.attribute = db.pgwide.attribute
  2088. db.informalexample.floatstyle.attribute = db.floatstyle.attribute
  2089. db.informalexample.attlist =
  2090. db.informalexample.role.attribute?
  2091. & db.common.attributes
  2092. & db.common.linking.attributes
  2093. & db.informalexample.floatstyle.attribute?
  2094. & (db.informalexample.width.attribute
  2095. | db.informalexample.pgwide.attribute)?
  2096. db.informalexample.info = db._info.title.forbidden
  2097. db.informalexample =
  2098. ## A displayed example without a title
  2099. [
  2100. s:pattern [
  2101. name = "Root must have version"
  2102. "\x{a}" ~
  2103. " "
  2104. s:rule [
  2105. context = "/db:informalexample"
  2106. "\x{a}" ~
  2107. " "
  2108. s:assert [
  2109. test = "@version"
  2110. "If this element is the root element, it must have a version attribute."
  2111. ]
  2112. "\x{a}" ~
  2113. " "
  2114. ]
  2115. "\x{a}" ~
  2116. " "
  2117. ]
  2118. ]
  2119. element informalexample {
  2120. db.informalexample.attlist,
  2121. db.informalexample.info,
  2122. db.all.blocks+,
  2123. db.caption?
  2124. }
  2125. }
  2126. db.verbatim.inlines = (db.all.inlines | db.lineannotation) | db.co
  2127. db.verbatim.contentmodel =
  2128. db._info.title.forbidden, (db.textobject | db.verbatim.inlines*)
  2129. div {
  2130. db.literallayout.role.attribute = attribute role { text }
  2131. db.literallayout.class.enumeration =
  2132. ## The literal layout should be formatted with a monospaced font
  2133. "monospaced"
  2134. |
  2135. ## The literal layout should be formatted with the current font
  2136. "normal"
  2137. db.literallayout.class.attribute =
  2138. ## Specifies the class of literal layout
  2139. attribute class { db.literallayout.class.enumeration }
  2140. db.literallayout.attlist =
  2141. db.literallayout.role.attribute?
  2142. & db.common.attributes
  2143. & db.common.linking.attributes
  2144. & db.verbatim.attributes
  2145. & db.literallayout.class.attribute?
  2146. db.literallayout =
  2147. ## A block of text in which line breaks and white space are to be reproduced faithfully
  2148. [
  2149. s:pattern [
  2150. name = "Root must have version"
  2151. "\x{a}" ~
  2152. " "
  2153. s:rule [
  2154. context = "/db:literallayout"
  2155. "\x{a}" ~
  2156. " "
  2157. s:assert [
  2158. test = "@version"
  2159. "If this element is the root element, it must have a version attribute."
  2160. ]
  2161. "\x{a}" ~
  2162. " "
  2163. ]
  2164. "\x{a}" ~
  2165. " "
  2166. ]
  2167. ]
  2168. element literallayout {
  2169. db.literallayout.attlist, db.verbatim.contentmodel
  2170. }
  2171. }
  2172. div {
  2173. db.screen.role.attribute = attribute role { text }
  2174. db.screen.width.attribute = db.width.characters.attribute
  2175. db.screen.attlist =
  2176. db.screen.role.attribute?
  2177. & db.common.attributes
  2178. & db.common.linking.attributes
  2179. & db.verbatim.attributes
  2180. & db.screen.width.attribute?
  2181. db.screen =
  2182. ## Text that a user sees or might see on a computer screen
  2183. [
  2184. s:pattern [
  2185. name = "Root must have version"
  2186. "\x{a}" ~
  2187. " "
  2188. s:rule [
  2189. context = "/db:screen"
  2190. "\x{a}" ~
  2191. " "
  2192. s:assert [
  2193. test = "@version"
  2194. "If this element is the root element, it must have a version attribute."
  2195. ]
  2196. "\x{a}" ~
  2197. " "
  2198. ]
  2199. "\x{a}" ~
  2200. " "
  2201. ]
  2202. ]
  2203. element screen { db.screen.attlist, db.verbatim.contentmodel }
  2204. }
  2205. div {
  2206. db.screenshot.role.attribute = attribute role { text }
  2207. db.screenshot.attlist =
  2208. db.screenshot.role.attribute?
  2209. & db.common.attributes
  2210. & db.common.linking.attributes
  2211. db.screenshot.info = db._info
  2212. db.screenshot =
  2213. ## A representation of what the user sees or might see on a computer screen
  2214. [
  2215. s:pattern [
  2216. name = "Root must have version"
  2217. "\x{a}" ~
  2218. " "
  2219. s:rule [
  2220. context = "/db:screenshot"
  2221. "\x{a}" ~
  2222. " "
  2223. s:assert [
  2224. test = "@version"
  2225. "If this element is the root element, it must have a version attribute."
  2226. ]
  2227. "\x{a}" ~
  2228. " "
  2229. ]
  2230. "\x{a}" ~
  2231. " "
  2232. ]
  2233. ]
  2234. element screenshot {
  2235. db.screenshot.attlist, db.screenshot.info, db.mediaobject
  2236. }
  2237. }
  2238. div {
  2239. db.figure.role.attribute = attribute role { text }
  2240. db.figure.label.attribute = db.label.attribute
  2241. db.figure.pgwide.attribute = db.pgwide.attribute
  2242. db.figure.floatstyle.attribute = db.floatstyle.attribute
  2243. db.figure.attlist =
  2244. db.figure.role.attribute?
  2245. & db.common.attributes
  2246. & db.common.linking.attributes
  2247. & db.figure.label.attribute?
  2248. & db.figure.pgwide.attribute?
  2249. & db.figure.floatstyle.attribute?
  2250. db.figure.info = db._info.title.onlyreq
  2251. db.figure =
  2252. ## A formal figure, generally an illustration, with a title
  2253. [
  2254. s:pattern [
  2255. name = "Element exclusion"
  2256. "\x{a}" ~
  2257. " "
  2258. s:rule [
  2259. context = "db:figure"
  2260. "\x{a}" ~
  2261. " "
  2262. s:assert [
  2263. test = "not(.//db:example)"
  2264. "example must not occur among the children or descendants of figure"
  2265. ]
  2266. "\x{a}" ~
  2267. " "
  2268. ]
  2269. "\x{a}" ~
  2270. " "
  2271. ]
  2272. s:pattern [
  2273. name = "Element exclusion"
  2274. "\x{a}" ~
  2275. " "
  2276. s:rule [
  2277. context = "db:figure"
  2278. "\x{a}" ~
  2279. " "
  2280. s:assert [
  2281. test = "not(.//db:figure)"
  2282. "figure must not occur among the children or descendants of figure"
  2283. ]
  2284. "\x{a}" ~
  2285. " "
  2286. ]
  2287. "\x{a}" ~
  2288. " "
  2289. ]
  2290. s:pattern [
  2291. name = "Element exclusion"
  2292. "\x{a}" ~
  2293. " "
  2294. s:rule [
  2295. context = "db:figure"
  2296. "\x{a}" ~
  2297. " "
  2298. s:assert [
  2299. test = "not(.//db:table)"
  2300. "table must not occur among the children or descendants of figure"
  2301. ]
  2302. "\x{a}" ~
  2303. " "
  2304. ]
  2305. "\x{a}" ~
  2306. " "
  2307. ]
  2308. s:pattern [
  2309. name = "Element exclusion"
  2310. "\x{a}" ~
  2311. " "
  2312. s:rule [
  2313. context = "db:figure"
  2314. "\x{a}" ~
  2315. " "
  2316. s:assert [
  2317. test = "not(.//db:equation)"
  2318. "equation must not occur among the children or descendants of figure"
  2319. ]
  2320. "\x{a}" ~
  2321. " "
  2322. ]
  2323. "\x{a}" ~
  2324. " "
  2325. ]
  2326. s:pattern [
  2327. name = "Element exclusion"
  2328. "\x{a}" ~
  2329. " "
  2330. s:rule [
  2331. context = "db:figure"
  2332. "\x{a}" ~
  2333. " "
  2334. s:assert [
  2335. test = "not(.//db:caution)"
  2336. "caution must not occur among the children or descendants of figure"
  2337. ]
  2338. "\x{a}" ~
  2339. " "
  2340. ]
  2341. "\x{a}" ~
  2342. " "
  2343. ]
  2344. s:pattern [
  2345. name = "Element exclusion"
  2346. "\x{a}" ~
  2347. " "
  2348. s:rule [
  2349. context = "db:figure"
  2350. "\x{a}" ~
  2351. " "
  2352. s:assert [
  2353. test = "not(.//db:important)"
  2354. "important must not occur among the children or descendants of figure"
  2355. ]
  2356. "\x{a}" ~
  2357. " "
  2358. ]
  2359. "\x{a}" ~
  2360. " "
  2361. ]
  2362. s:pattern [
  2363. name = "Element exclusion"
  2364. "\x{a}" ~
  2365. " "
  2366. s:rule [
  2367. context = "db:figure"
  2368. "\x{a}" ~
  2369. " "
  2370. s:assert [
  2371. test = "not(.//db:note)"
  2372. "note must not occur among the children or descendants of figure"
  2373. ]
  2374. "\x{a}" ~
  2375. " "
  2376. ]
  2377. "\x{a}" ~
  2378. " "
  2379. ]
  2380. s:pattern [
  2381. name = "Element exclusion"
  2382. "\x{a}" ~
  2383. " "
  2384. s:rule [
  2385. context = "db:figure"
  2386. "\x{a}" ~
  2387. " "
  2388. s:assert [
  2389. test = "not(.//db:tip)"
  2390. "tip must not occur among the children or descendants of figure"
  2391. ]
  2392. "\x{a}" ~
  2393. " "
  2394. ]
  2395. "\x{a}" ~
  2396. " "
  2397. ]
  2398. s:pattern [
  2399. name = "Element exclusion"
  2400. "\x{a}" ~
  2401. " "
  2402. s:rule [
  2403. context = "db:figure"
  2404. "\x{a}" ~
  2405. " "
  2406. s:assert [
  2407. test = "not(.//db:warning)"
  2408. "warning must not occur among the children or descendants of figure"
  2409. ]
  2410. "\x{a}" ~
  2411. " "
  2412. ]
  2413. "\x{a}" ~
  2414. " "
  2415. ]
  2416. s:pattern [
  2417. name = "Root must have version"
  2418. "\x{a}" ~
  2419. " "
  2420. s:rule [
  2421. context = "/db:figure"
  2422. "\x{a}" ~
  2423. " "
  2424. s:assert [
  2425. test = "@version"
  2426. "If this element is the root element, it must have a version attribute."
  2427. ]
  2428. "\x{a}" ~
  2429. " "
  2430. ]
  2431. "\x{a}" ~
  2432. " "
  2433. ]
  2434. ]
  2435. element figure {
  2436. db.figure.attlist, db.figure.info, db.all.blocks+, db.caption?
  2437. }
  2438. }
  2439. div {
  2440. db.informalfigure.role.attribute = attribute role { text }
  2441. db.informalfigure.label.attribute = db.label.attribute
  2442. db.informalfigure.pgwide.attribute = db.pgwide.attribute
  2443. db.informalfigure.floatstyle.attribute = db.floatstyle.attribute
  2444. db.informalfigure.attlist =
  2445. db.informalfigure.role.attribute?
  2446. & db.common.attributes
  2447. & db.common.linking.attributes
  2448. & db.informalfigure.label.attribute?
  2449. & db.informalfigure.pgwide.attribute?
  2450. & db.informalfigure.floatstyle.attribute?
  2451. db.informalfigure.info = db._info.title.forbidden
  2452. db.informalfigure =
  2453. ## A untitled figure
  2454. [
  2455. s:pattern [
  2456. name = "Root must have version"
  2457. "\x{a}" ~
  2458. " "
  2459. s:rule [
  2460. context = "/db:informalfigure"
  2461. "\x{a}" ~
  2462. " "
  2463. s:assert [
  2464. test = "@version"
  2465. "If this element is the root element, it must have a version attribute."
  2466. ]
  2467. "\x{a}" ~
  2468. " "
  2469. ]
  2470. "\x{a}" ~
  2471. " "
  2472. ]
  2473. ]
  2474. element informalfigure {
  2475. db.informalfigure.attlist,
  2476. db.informalfigure.info,
  2477. db.all.blocks+,
  2478. db.caption?
  2479. }
  2480. }
  2481. db.mediaobject.content =
  2482. (db.videoobject | db.audioobject | db.imageobject | db.textobject)
  2483. | db.imageobjectco
  2484. div {
  2485. db.mediaobject.role.attribute = attribute role { text }
  2486. db.mediaobject.attlist =
  2487. db.mediaobject.role.attribute?
  2488. & db.common.attributes
  2489. & db.common.linking.attributes
  2490. db.mediaobject.info = db._info.title.forbidden
  2491. db.mediaobject =
  2492. ## A displayed media object (video, audio, image, etc.)
  2493. [
  2494. s:pattern [
  2495. name = "Root must have version"
  2496. "\x{a}" ~
  2497. " "
  2498. s:rule [
  2499. context = "/db:mediaobject"
  2500. "\x{a}" ~
  2501. " "
  2502. s:assert [
  2503. test = "@version"
  2504. "If this element is the root element, it must have a version attribute."
  2505. ]
  2506. "\x{a}" ~
  2507. " "
  2508. ]
  2509. "\x{a}" ~
  2510. " "
  2511. ]
  2512. ]
  2513. element mediaobject {
  2514. db.mediaobject.attlist,
  2515. db.mediaobject.info,
  2516. db.alt?,
  2517. db.mediaobject.content+,
  2518. db.caption?
  2519. }
  2520. }
  2521. div {
  2522. db.inlinemediaobject.role.attribute = attribute role { text }
  2523. db.inlinemediaobject.attlist =
  2524. db.inlinemediaobject.role.attribute?
  2525. & db.common.attributes
  2526. & db.common.linking.attributes
  2527. db.inlinemediaobject.info = db._info.title.forbidden
  2528. db.inlinemediaobject =
  2529. ## An inline media object (video, audio, image, and so on)
  2530. [
  2531. s:pattern [
  2532. name = "Root must have version"
  2533. "\x{a}" ~
  2534. " "
  2535. s:rule [
  2536. context = "/db:inlinemediaobject"
  2537. "\x{a}" ~
  2538. " "
  2539. s:assert [
  2540. test = "@version"
  2541. "If this element is the root element, it must have a version attribute."
  2542. ]
  2543. "\x{a}" ~
  2544. " "
  2545. ]
  2546. "\x{a}" ~
  2547. " "
  2548. ]
  2549. ]
  2550. element inlinemediaobject {
  2551. db.inlinemediaobject.attlist,
  2552. db.inlinemediaobject.info,
  2553. db.alt?,
  2554. db.mediaobject.content+
  2555. }
  2556. }
  2557. div {
  2558. db.videoobject.role.attribute = attribute role { text }
  2559. db.videoobject.attlist =
  2560. db.videoobject.role.attribute?
  2561. & db.common.attributes
  2562. & db.common.linking.attributes
  2563. db.videoobject.info = db._info.title.forbidden
  2564. db.videoobject =
  2565. ## A wrapper for video data and its associated meta-information
  2566. [
  2567. s:pattern [
  2568. name = "Root must have version"
  2569. "\x{a}" ~
  2570. " "
  2571. s:rule [
  2572. context = "/db:videoobject"
  2573. "\x{a}" ~
  2574. " "
  2575. s:assert [
  2576. test = "@version"
  2577. "If this element is the root element, it must have a version attribute."
  2578. ]
  2579. "\x{a}" ~
  2580. " "
  2581. ]
  2582. "\x{a}" ~
  2583. " "
  2584. ]
  2585. ]
  2586. element videoobject {
  2587. db.videoobject.attlist,
  2588. db.videoobject.info,
  2589. db.videodata,
  2590. db.multimediaparam*
  2591. }
  2592. }
  2593. div {
  2594. db.audioobject.role.attribute = attribute role { text }
  2595. db.audioobject.attlist =
  2596. db.audioobject.role.attribute?
  2597. & db.common.attributes
  2598. & db.common.linking.attributes
  2599. db.audioobject.info = db._info.title.forbidden
  2600. db.audioobject =
  2601. ## A wrapper for audio data and its associated meta-information
  2602. [
  2603. s:pattern [
  2604. name = "Root must have version"
  2605. "\x{a}" ~
  2606. " "
  2607. s:rule [
  2608. context = "/db:audioobject"
  2609. "\x{a}" ~
  2610. " "
  2611. s:assert [
  2612. test = "@version"
  2613. "If this element is the root element, it must have a version attribute."
  2614. ]
  2615. "\x{a}" ~
  2616. " "
  2617. ]
  2618. "\x{a}" ~
  2619. " "
  2620. ]
  2621. ]
  2622. element audioobject {
  2623. db.audioobject.attlist,
  2624. db.audioobject.info,
  2625. db.audiodata,
  2626. db.multimediaparam*
  2627. }
  2628. }
  2629. db.imageobject.content =
  2630. db.imagedata | db.imagedata.mathml | db.imagedata.svg
  2631. div {
  2632. db.imageobject.role.attribute = attribute role { text }
  2633. db.imageobject.attlist =
  2634. db.imageobject.role.attribute?
  2635. & db.common.attributes
  2636. & db.common.linking.attributes
  2637. db.imageobject.info = db._info.title.forbidden
  2638. db.imageobject =
  2639. ## A wrapper for image data and its associated meta-information
  2640. [
  2641. s:pattern [
  2642. name = "Root must have version"
  2643. "\x{a}" ~
  2644. " "
  2645. s:rule [
  2646. context = "/db:imageobject"
  2647. "\x{a}" ~
  2648. " "
  2649. s:assert [
  2650. test = "@version"
  2651. "If this element is the root element, it must have a version attribute."
  2652. ]
  2653. "\x{a}" ~
  2654. " "
  2655. ]
  2656. "\x{a}" ~
  2657. " "
  2658. ]
  2659. ]
  2660. element imageobject {
  2661. db.imageobject.attlist,
  2662. db.imageobject.info,
  2663. db.imageobject.content
  2664. }
  2665. }
  2666. div {
  2667. db.textobject.role.attribute = attribute role { text }
  2668. db.textobject.attlist =
  2669. db.textobject.role.attribute?
  2670. & db.common.attributes
  2671. & db.common.linking.attributes
  2672. db.textobject.info = db._info.title.forbidden
  2673. db.textobject =
  2674. ## A wrapper for a text description of an object and its associated meta-information
  2675. [
  2676. s:pattern [
  2677. name = "Root must have version"
  2678. "\x{a}" ~
  2679. " "
  2680. s:rule [
  2681. context = "/db:textobject"
  2682. "\x{a}" ~
  2683. " "
  2684. s:assert [
  2685. test = "@version"
  2686. "If this element is the root element, it must have a version attribute."
  2687. ]
  2688. "\x{a}" ~
  2689. " "
  2690. ]
  2691. "\x{a}" ~
  2692. " "
  2693. ]
  2694. ]
  2695. element textobject {
  2696. db.textobject.attlist,
  2697. db.textobject.info,
  2698. (db.phrase | db.textdata | db.all.blocks+)
  2699. }
  2700. }
  2701. div {
  2702. db.videodata.role.attribute = attribute role { text }
  2703. db.videodata.align.enumeration = db.halign.enumeration
  2704. db.videodata.align.attribute =
  2705. ## Specifies the (horizontal) alignment of the video data
  2706. attribute align { db.videodata.align.enumeration }
  2707. db.videodata.autoplay.attribute = db.autoplay.attribute
  2708. db.videodata.classid.attribute = db.classid.attribute
  2709. db.videodata.valign.enumeration = db.valign.enumeration
  2710. db.videodata.valign.attribute =
  2711. ## Specifies the vertical alignment of the video data
  2712. attribute valign { db.videodata.valign.enumeration }
  2713. db.videodata.width.attribute = db.width.attribute
  2714. db.videodata.depth.attribute = db.depth.attribute
  2715. db.videodata.contentwidth.attribute = db.contentwidth.attribute
  2716. db.videodata.contentdepth.attribute = db.contentdepth.attribute
  2717. db.videodata.scalefit.enumeration = db.scalefit.enumeration
  2718. db.videodata.scalefit.attribute =
  2719. ## Determines if anamorphic scaling is forbidden
  2720. attribute scalefit { db.videodata.scalefit.enumeration }
  2721. db.videodata.scale.attribute = db.scale.attribute
  2722. db.videodata.attlist =
  2723. db.videodata.role.attribute?
  2724. & db.common.attributes
  2725. & db.common.data.attributes
  2726. & db.videodata.align.attribute?
  2727. & db.videodata.valign.attribute?
  2728. & db.videodata.width.attribute?
  2729. & db.videodata.contentwidth.attribute?
  2730. & db.videodata.scalefit.attribute?
  2731. & db.videodata.scale.attribute?
  2732. & db.videodata.depth.attribute?
  2733. & db.videodata.contentdepth.attribute?
  2734. & db.videodata.autoplay.attribute?
  2735. & db.videodata.classid.attribute?
  2736. db.videodata.info = db._info.title.forbidden
  2737. db.videodata =
  2738. ## Pointer to external video data
  2739. [
  2740. s:pattern [
  2741. name = "Root must have version"
  2742. "\x{a}" ~
  2743. " "
  2744. s:rule [
  2745. context = "/db:videodata"
  2746. "\x{a}" ~
  2747. " "
  2748. s:assert [
  2749. test = "@version"
  2750. "If this element is the root element, it must have a version attribute."
  2751. ]
  2752. "\x{a}" ~
  2753. " "
  2754. ]
  2755. "\x{a}" ~
  2756. " "
  2757. ]
  2758. ]
  2759. element videodata { db.videodata.attlist, db.videodata.info }
  2760. }
  2761. div {
  2762. db.audiodata.role.attribute = attribute role { text }
  2763. db.audiodata.align.enumeration = db.halign.enumeration
  2764. db.audiodata.align.attribute =
  2765. ## Specifies the (horizontal) alignment of the video data
  2766. attribute align { db.audiodata.align.enumeration }
  2767. db.audiodata.autoplay.attribute = db.autoplay.attribute
  2768. db.audiodata.classid.attribute = db.classid.attribute
  2769. db.audiodata.contentwidth.attribute = db.contentwidth.attribute
  2770. db.audiodata.contentdepth.attribute = db.contentdepth.attribute
  2771. db.audiodata.depth.attribute = db.depth.attribute
  2772. db.audiodata.scale.attribute = db.scale.attribute
  2773. db.audiodata.scalefit.enumeration = db.scalefit.enumeration
  2774. db.audiodata.scalefit.attribute =
  2775. ## Determines if anamorphic scaling is forbidden
  2776. attribute scalefit { db.audiodata.scalefit.enumeration }
  2777. db.audiodata.valign.enumeration = db.valign.enumeration
  2778. db.audiodata.valign.attribute =
  2779. ## Specifies the vertical alignment of the video data
  2780. attribute valign { db.audiodata.valign.enumeration }
  2781. db.audiodata.width.attribute = db.width.attribute
  2782. db.audiodata.attlist =
  2783. db.audiodata.role.attribute?
  2784. & db.common.attributes
  2785. & db.common.data.attributes
  2786. & db.audiodata.align.attribute?
  2787. & db.audiodata.autoplay.attribute?
  2788. & db.audiodata.classid.attribute?
  2789. & db.audiodata.contentdepth.attribute?
  2790. & db.audiodata.contentwidth.attribute?
  2791. & db.audiodata.depth.attribute?
  2792. & db.audiodata.scale.attribute?
  2793. & db.audiodata.scalefit.attribute?
  2794. & db.audiodata.valign.attribute?
  2795. & db.audiodata.width.attribute?
  2796. db.audiodata.info = db._info.title.forbidden
  2797. db.audiodata =
  2798. ## Pointer to external audio data
  2799. [
  2800. s:pattern [
  2801. name = "Root must have version"
  2802. "\x{a}" ~
  2803. " "
  2804. s:rule [
  2805. context = "/db:audiodata"
  2806. "\x{a}" ~
  2807. " "
  2808. s:assert [
  2809. test = "@version"
  2810. "If this element is the root element, it must have a version attribute."
  2811. ]
  2812. "\x{a}" ~
  2813. " "
  2814. ]
  2815. "\x{a}" ~
  2816. " "
  2817. ]
  2818. ]
  2819. element audiodata { db.audiodata.attlist, db.audiodata.info }
  2820. }
  2821. div {
  2822. db.imagedata.role.attribute = attribute role { text }
  2823. db.imagedata.align.enumeration = db.halign.enumeration
  2824. db.imagedata.align.attribute =
  2825. ## Specifies the (horizontal) alignment of the image data
  2826. attribute align { db.imagedata.align.enumeration }
  2827. db.imagedata.valign.enumeration = db.valign.enumeration
  2828. db.imagedata.valign.attribute =
  2829. ## Specifies the vertical alignment of the image data
  2830. attribute valign { db.imagedata.valign.enumeration }
  2831. db.imagedata.width.attribute = db.width.attribute
  2832. db.imagedata.depth.attribute = db.depth.attribute
  2833. db.imagedata.contentwidth.attribute = db.contentwidth.attribute
  2834. db.imagedata.contentdepth.attribute = db.contentdepth.attribute
  2835. db.imagedata.scalefit.enumeration = db.scalefit.enumeration
  2836. db.imagedata.scalefit.attribute =
  2837. ## Determines if anamorphic scaling is forbidden
  2838. attribute scalefit { db.imagedata.scalefit.enumeration }
  2839. db.imagedata.scale.attribute = db.scale.attribute
  2840. db.imagedata.attlist =
  2841. db.imagedata.role.attribute?
  2842. & db.common.attributes
  2843. & db.common.data.attributes
  2844. & db.imagedata.align.attribute?
  2845. & db.imagedata.valign.attribute?
  2846. & db.imagedata.width.attribute?
  2847. & db.imagedata.contentwidth.attribute?
  2848. & db.imagedata.scalefit.attribute?
  2849. & db.imagedata.scale.attribute?
  2850. & db.imagedata.depth.attribute?
  2851. & db.imagedata.contentdepth.attribute?
  2852. db.imagedata.info = db._info.title.forbidden
  2853. db.imagedata =
  2854. ## Pointer to external image data
  2855. [
  2856. s:pattern [
  2857. name = "Root must have version"
  2858. "\x{a}" ~
  2859. " "
  2860. s:rule [
  2861. context = "/db:imagedata"
  2862. "\x{a}" ~
  2863. " "
  2864. s:assert [
  2865. test = "@version"
  2866. "If this element is the root element, it must have a version attribute."
  2867. ]
  2868. "\x{a}" ~
  2869. " "
  2870. ]
  2871. "\x{a}" ~
  2872. " "
  2873. ]
  2874. ]
  2875. element imagedata { db.imagedata.attlist, db.imagedata.info }
  2876. }
  2877. div {
  2878. db.textdata.role.attribute = attribute role { text }
  2879. db.textdata.encoding.attribute =
  2880. ## Identifies the encoding of the text in the external file
  2881. attribute encoding { text }
  2882. db.textdata.attlist =
  2883. db.textdata.role.attribute?
  2884. & db.common.attributes
  2885. & db.common.data.attributes
  2886. & db.textdata.encoding.attribute?
  2887. db.textdata.info = db._info.title.forbidden
  2888. db.textdata =
  2889. ## Pointer to external text data
  2890. [
  2891. s:pattern [
  2892. name = "Root must have version"
  2893. "\x{a}" ~
  2894. " "
  2895. s:rule [
  2896. context = "/db:textdata"
  2897. "\x{a}" ~
  2898. " "
  2899. s:assert [
  2900. test = "@version"
  2901. "If this element is the root element, it must have a version attribute."
  2902. ]
  2903. "\x{a}" ~
  2904. " "
  2905. ]
  2906. "\x{a}" ~
  2907. " "
  2908. ]
  2909. ]
  2910. element textdata { db.textdata.attlist, db.textdata.info }
  2911. }
  2912. div {
  2913. db.multimediaparam.role.attribute = attribute role { text }
  2914. db.multimediaparam.name.attribute =
  2915. ## Specifies the name of the parameter
  2916. attribute name { text }
  2917. db.multimediaparam.value.attribute =
  2918. ## Specifies the value of the parameter
  2919. attribute value { text }
  2920. db.multimediaparam.valuetype.attribute =
  2921. ## Specifies the type of the value of the parameter
  2922. attribute valuetype { text }
  2923. db.multimediaparam.attlist =
  2924. db.multimediaparam.role.attribute?
  2925. & db.common.attributes
  2926. & db.multimediaparam.name.attribute
  2927. & db.multimediaparam.value.attribute
  2928. & db.multimediaparam.valuetype.attribute?
  2929. db.multimediaparam =
  2930. ## Application specific parameters for a media player
  2931. element multimediaparam { db.multimediaparam.attlist, empty }
  2932. }
  2933. div {
  2934. db.caption.role.attribute = attribute role { text }
  2935. db.caption.attlist =
  2936. db.caption.role.attribute?
  2937. & db.common.attributes
  2938. & db.common.linking.attributes
  2939. db.caption.info = db._info.title.forbidden
  2940. db.caption =
  2941. ## A caption
  2942. [
  2943. s:pattern [
  2944. name = "Element exclusion"
  2945. "\x{a}" ~
  2946. " "
  2947. s:rule [
  2948. context = "db:caption"
  2949. "\x{a}" ~
  2950. " "
  2951. s:assert [
  2952. test = "not(.//db:example)"
  2953. "example must not occur among the children or descendants of caption"
  2954. ]
  2955. "\x{a}" ~
  2956. " "
  2957. ]
  2958. "\x{a}" ~
  2959. " "
  2960. ]
  2961. s:pattern [
  2962. name = "Element exclusion"
  2963. "\x{a}" ~
  2964. " "
  2965. s:rule [
  2966. context = "db:caption"
  2967. "\x{a}" ~
  2968. " "
  2969. s:assert [
  2970. test = "not(.//db:figure)"
  2971. "figure must not occur among the children or descendants of caption"
  2972. ]
  2973. "\x{a}" ~
  2974. " "
  2975. ]
  2976. "\x{a}" ~
  2977. " "
  2978. ]
  2979. s:pattern [
  2980. name = "Element exclusion"
  2981. "\x{a}" ~
  2982. " "
  2983. s:rule [
  2984. context = "db:caption"
  2985. "\x{a}" ~
  2986. " "
  2987. s:assert [
  2988. test = "not(.//db:table)"
  2989. "table must not occur among the children or descendants of caption"
  2990. ]
  2991. "\x{a}" ~
  2992. " "
  2993. ]
  2994. "\x{a}" ~
  2995. " "
  2996. ]
  2997. s:pattern [
  2998. name = "Element exclusion"
  2999. "\x{a}" ~
  3000. " "
  3001. s:rule [
  3002. context = "db:caption"
  3003. "\x{a}" ~
  3004. " "
  3005. s:assert [
  3006. test = "not(.//db:equation)"
  3007. "equation must not occur among the children or descendants of caption"
  3008. ]
  3009. "\x{a}" ~
  3010. " "
  3011. ]
  3012. "\x{a}" ~
  3013. " "
  3014. ]
  3015. s:pattern [
  3016. name = "Element exclusion"
  3017. "\x{a}" ~
  3018. " "
  3019. s:rule [
  3020. context = "db:caption"
  3021. "\x{a}" ~
  3022. " "
  3023. s:assert [
  3024. test = "not(.//db:sidebar)"
  3025. "sidebar must not occur among the children or descendants of caption"
  3026. ]
  3027. "\x{a}" ~
  3028. " "
  3029. ]
  3030. "\x{a}" ~
  3031. " "
  3032. ]
  3033. s:pattern [
  3034. name = "Element exclusion"
  3035. "\x{a}" ~
  3036. " "
  3037. s:rule [
  3038. context = "db:caption"
  3039. "\x{a}" ~
  3040. " "
  3041. s:assert [
  3042. test = "not(.//db:task)"
  3043. "task must not occur among the children or descendants of caption"
  3044. ]
  3045. "\x{a}" ~
  3046. " "
  3047. ]
  3048. "\x{a}" ~
  3049. " "
  3050. ]
  3051. s:pattern [
  3052. name = "Element exclusion"
  3053. "\x{a}" ~
  3054. " "
  3055. s:rule [
  3056. context = "db:caption"
  3057. "\x{a}" ~
  3058. " "
  3059. s:assert [
  3060. test = "not(.//db:caution)"
  3061. "caution must not occur among the children or descendants of caption"
  3062. ]
  3063. "\x{a}" ~
  3064. " "
  3065. ]
  3066. "\x{a}" ~
  3067. " "
  3068. ]
  3069. s:pattern [
  3070. name = "Element exclusion"
  3071. "\x{a}" ~
  3072. " "
  3073. s:rule [
  3074. context = "db:caption"
  3075. "\x{a}" ~
  3076. " "
  3077. s:assert [
  3078. test = "not(.//db:important)"
  3079. "important must not occur among the children or descendants of caption"
  3080. ]
  3081. "\x{a}" ~
  3082. " "
  3083. ]
  3084. "\x{a}" ~
  3085. " "
  3086. ]
  3087. s:pattern [
  3088. name = "Element exclusion"
  3089. "\x{a}" ~
  3090. " "
  3091. s:rule [
  3092. context = "db:caption"
  3093. "\x{a}" ~
  3094. " "
  3095. s:assert [
  3096. test = "not(.//db:note)"
  3097. "note must not occur among the children or descendants of caption"
  3098. ]
  3099. "\x{a}" ~
  3100. " "
  3101. ]
  3102. "\x{a}" ~
  3103. " "
  3104. ]
  3105. s:pattern [
  3106. name = "Element exclusion"
  3107. "\x{a}" ~
  3108. " "
  3109. s:rule [
  3110. context = "db:caption"
  3111. "\x{a}" ~
  3112. " "
  3113. s:assert [
  3114. test = "not(.//db:tip)"
  3115. "tip must not occur among the children or descendants of caption"
  3116. ]
  3117. "\x{a}" ~
  3118. " "
  3119. ]
  3120. "\x{a}" ~
  3121. " "
  3122. ]
  3123. s:pattern [
  3124. name = "Element exclusion"
  3125. "\x{a}" ~
  3126. " "
  3127. s:rule [
  3128. context = "db:caption"
  3129. "\x{a}" ~
  3130. " "
  3131. s:assert [
  3132. test = "not(.//db:warning)"
  3133. "warning must not occur among the children or descendants of caption"
  3134. ]
  3135. "\x{a}" ~
  3136. " "
  3137. ]
  3138. "\x{a}" ~
  3139. " "
  3140. ]
  3141. s:pattern [
  3142. name = "Root must have version"
  3143. "\x{a}" ~
  3144. " "
  3145. s:rule [
  3146. context = "/db:caption"
  3147. "\x{a}" ~
  3148. " "
  3149. s:assert [
  3150. test = "@version"
  3151. "If this element is the root element, it must have a version attribute."
  3152. ]
  3153. "\x{a}" ~
  3154. " "
  3155. ]
  3156. "\x{a}" ~
  3157. " "
  3158. ]
  3159. ]
  3160. element caption {
  3161. db.caption.attlist, db.caption.info, db.all.blocks+
  3162. }
  3163. }
  3164. div {
  3165. db.address.role.attribute = attribute role { text }
  3166. db.address.attlist =
  3167. db.address.role.attribute?
  3168. & db.common.attributes
  3169. & db.common.linking.attributes
  3170. & db.verbatim.attributes
  3171. db.address =
  3172. ## A real-world address, generally a postal address
  3173. [
  3174. s:pattern [
  3175. name = "Root must have version"
  3176. "\x{a}" ~
  3177. " "
  3178. s:rule [
  3179. context = "/db:address"
  3180. "\x{a}" ~
  3181. " "
  3182. s:assert [
  3183. test = "@version"
  3184. "If this element is the root element, it must have a version attribute."
  3185. ]
  3186. "\x{a}" ~
  3187. " "
  3188. ]
  3189. "\x{a}" ~
  3190. " "
  3191. ]
  3192. ]
  3193. element address {
  3194. db.address.attlist,
  3195. (db._text
  3196. | db.personname
  3197. | db.orgname
  3198. | db.pob
  3199. | db.street
  3200. | db.city
  3201. | db.state
  3202. | db.postcode
  3203. | db.country
  3204. | db.phone
  3205. | db.fax
  3206. | db.email
  3207. | db.uri
  3208. | db.otheraddr)*
  3209. }
  3210. }
  3211. div {
  3212. db.street.role.attribute = attribute role { text }
  3213. db.street.attlist =
  3214. db.street.role.attribute?
  3215. & db.common.attributes
  3216. & db.common.linking.attributes
  3217. db.street =
  3218. ## A street address in an address
  3219. element street { db.street.attlist, db._text }
  3220. }
  3221. div {
  3222. db.pob.role.attribute = attribute role { text }
  3223. db.pob.attlist =
  3224. db.pob.role.attribute?
  3225. & db.common.attributes
  3226. & db.common.linking.attributes
  3227. db.pob =
  3228. ## A post office box in an address
  3229. element pob { db.pob.attlist, db._text }
  3230. }
  3231. div {
  3232. db.postcode.role.attribute = attribute role { text }
  3233. db.postcode.attlist =
  3234. db.postcode.role.attribute?
  3235. & db.common.attributes
  3236. & db.common.linking.attributes
  3237. db.postcode =
  3238. ## A postal code in an address
  3239. element postcode { db.postcode.attlist, db._text }
  3240. }
  3241. div {
  3242. db.city.role.attribute = attribute role { text }
  3243. db.city.attlist =
  3244. db.city.role.attribute?
  3245. & db.common.attributes
  3246. & db.common.linking.attributes
  3247. db.city =
  3248. ## The name of a city in an address
  3249. element city { db.city.attlist, db._text }
  3250. }
  3251. div {
  3252. db.state.role.attribute = attribute role { text }
  3253. db.state.attlist =
  3254. db.state.role.attribute?
  3255. & db.common.attributes
  3256. & db.common.linking.attributes
  3257. db.state =
  3258. ## A state or province in an address
  3259. element state { db.state.attlist, db._text }
  3260. }
  3261. div {
  3262. db.country.role.attribute = attribute role { text }
  3263. db.country.attlist =
  3264. db.country.role.attribute?
  3265. & db.common.attributes
  3266. & db.common.linking.attributes
  3267. db.country =
  3268. ## The name of a country
  3269. element country { db.country.attlist, db._text }
  3270. }
  3271. div {
  3272. db.phone.role.attribute = attribute role { text }
  3273. db.phone.attlist =
  3274. db.phone.role.attribute?
  3275. & db.common.attributes
  3276. & db.common.linking.attributes
  3277. db.phone =
  3278. ## A telephone number
  3279. element phone { db.phone.attlist, db._text }
  3280. }
  3281. div {
  3282. db.fax.role.attribute = attribute role { text }
  3283. db.fax.attlist =
  3284. db.fax.role.attribute?
  3285. & db.common.attributes
  3286. & db.common.linking.attributes
  3287. db.fax =
  3288. ## A fax number
  3289. element fax { db.fax.attlist, db._text }
  3290. }
  3291. div {
  3292. db.otheraddr.role.attribute = attribute role { text }
  3293. db.otheraddr.attlist =
  3294. db.otheraddr.role.attribute?
  3295. & db.common.attributes
  3296. & db.common.linking.attributes
  3297. db.otheraddr =
  3298. ## Uncategorized information in address
  3299. element otheraddr { db.otheraddr.attlist, db._text }
  3300. }
  3301. div {
  3302. db.affiliation.role.attribute = attribute role { text }
  3303. db.affiliation.attlist =
  3304. db.affiliation.role.attribute?
  3305. & db.common.attributes
  3306. & db.common.linking.attributes
  3307. db.affiliation =
  3308. ## The institutional affiliation of an individual
  3309. element affiliation {
  3310. db.affiliation.attlist,
  3311. db.shortaffil?,
  3312. db.jobtitle*,
  3313. (db.org? | (db.orgname?, db.orgdiv*, db.address*))
  3314. }
  3315. }
  3316. div {
  3317. db.shortaffil.role.attribute = attribute role { text }
  3318. db.shortaffil.attlist =
  3319. db.shortaffil.role.attribute?
  3320. & db.common.attributes
  3321. & db.common.linking.attributes
  3322. db.shortaffil =
  3323. ## A brief description of an affiliation
  3324. element shortaffil { db.shortaffil.attlist, db._text }
  3325. }
  3326. div {
  3327. db.jobtitle.role.attribute = attribute role { text }
  3328. db.jobtitle.attlist =
  3329. db.jobtitle.role.attribute?
  3330. & db.common.attributes
  3331. & db.common.linking.attributes
  3332. db.jobtitle =
  3333. ## The title of an individual in an organization
  3334. element jobtitle { db.jobtitle.attlist, db._text }
  3335. }
  3336. div {
  3337. db.orgname.class.enumeration =
  3338. ## A consortium
  3339. "consortium"
  3340. |
  3341. ## A corporation
  3342. "corporation"
  3343. |
  3344. ## An informal organization
  3345. "informal"
  3346. |
  3347. ## A non-profit organization
  3348. "nonprofit"
  3349. db.orgname.class-enum.attribute =
  3350. ## Specifies the nature of the organization
  3351. attribute class { db.orgname.class.enumeration }
  3352. db.orgname.class-other.attributes =
  3353. ## Specifies the nature of the organization
  3354. attribute class {
  3355. ## Indicates a non-standard organization class
  3356. "other"
  3357. },
  3358. ## Identifies the non-standard nature of the organization
  3359. attribute otherclass { text }
  3360. db.orgname.class.attribute =
  3361. db.orgname.class-enum.attribute | db.orgname.class-other.attributes
  3362. db.orgname.role.attribute = attribute role { text }
  3363. db.orgname.attlist =
  3364. db.orgname.role.attribute?
  3365. & db.common.attributes
  3366. & db.common.linking.attributes
  3367. & db.orgname.class.attribute?
  3368. db.orgname =
  3369. ## The name of an organization
  3370. element orgname { db.orgname.attlist, db._text }
  3371. }
  3372. div {
  3373. db.orgdiv.role.attribute = attribute role { text }
  3374. db.orgdiv.attlist =
  3375. db.orgdiv.role.attribute?
  3376. & db.common.attributes
  3377. & db.common.linking.attributes
  3378. db.orgdiv =
  3379. ## A division of an organization
  3380. element orgdiv { db.orgdiv.attlist, db.all.inlines* }
  3381. }
  3382. div {
  3383. db.artpagenums.role.attribute = attribute role { text }
  3384. db.artpagenums.attlist =
  3385. db.artpagenums.role.attribute?
  3386. & db.common.attributes
  3387. & db.common.linking.attributes
  3388. db.artpagenums =
  3389. ## The page numbers of an article as published
  3390. element artpagenums { db.artpagenums.attlist, db._text }
  3391. }
  3392. div {
  3393. db.personname.role.attribute = attribute role { text }
  3394. db.personname.attlist =
  3395. db.personname.role.attribute?
  3396. & db.common.attributes
  3397. & db.common.linking.attributes
  3398. db.personname =
  3399. ## The personal name of an individual
  3400. element personname {
  3401. db.personname.attlist,
  3402. (db._text
  3403. | (db.honorific
  3404. | db.firstname
  3405. | db.surname
  3406. | db.lineage
  3407. | db.othername)+
  3408. | (db.honorific
  3409. | db.givenname
  3410. | db.surname
  3411. | db.lineage
  3412. | db.othername)+)
  3413. }
  3414. }
  3415. db.person.author.contentmodel =
  3416. db.personname,
  3417. (db.personblurb
  3418. | db.affiliation
  3419. | db.email
  3420. | db.uri
  3421. | db.address
  3422. | db.contrib)*
  3423. db.org.author.contentmodel =
  3424. db.orgname,
  3425. (db.orgdiv
  3426. | db.affiliation
  3427. | db.email
  3428. | db.uri
  3429. | db.address
  3430. | db.contrib)*
  3431. db.credit.contentmodel =
  3432. db.person.author.contentmodel | db.org.author.contentmodel
  3433. div {
  3434. db.author.role.attribute = attribute role { text }
  3435. db.author.attlist =
  3436. db.author.role.attribute?
  3437. & db.common.attributes
  3438. & db.common.linking.attributes
  3439. db.author =
  3440. ## The name of an individual author
  3441. element author { db.author.attlist, db.credit.contentmodel }
  3442. }
  3443. div {
  3444. db.authorgroup.role.attribute = attribute role { text }
  3445. db.authorgroup.attlist =
  3446. db.authorgroup.role.attribute?
  3447. & db.common.attributes
  3448. & db.common.linking.attributes
  3449. db.authorgroup =
  3450. ## Wrapper for author information when a document has multiple authors or collaborators
  3451. element authorgroup {
  3452. db.authorgroup.attlist, (db.author | db.editor | db.othercredit)+
  3453. }
  3454. }
  3455. div {
  3456. db.collab.role.attribute = attribute role { text }
  3457. db.collab.attlist =
  3458. db.collab.role.attribute?
  3459. & db.common.attributes
  3460. & db.common.linking.attributes
  3461. db.collab =
  3462. ## Identifies a collaborator
  3463. element collab {
  3464. db.collab.attlist,
  3465. (db.person | db.personname | db.org | db.orgname)+,
  3466. db.affiliation*
  3467. }
  3468. }
  3469. div {
  3470. db.authorinitials.role.attribute = attribute role { text }
  3471. db.authorinitials.attlist =
  3472. db.authorinitials.role.attribute?
  3473. & db.common.attributes
  3474. & db.common.linking.attributes
  3475. db.authorinitials =
  3476. ## The initials or other short identifier for an author
  3477. element authorinitials { db.authorinitials.attlist, db._text }
  3478. }
  3479. div {
  3480. db.person.role.attribute = attribute role { text }
  3481. db.person.attlist =
  3482. db.person.role.attribute?
  3483. & db.common.attributes
  3484. & db.common.linking.attributes
  3485. db.person =
  3486. ## A person and associated metadata
  3487. element person {
  3488. db.person.attlist,
  3489. db.personname,
  3490. (db.address
  3491. | db.affiliation
  3492. | db.email
  3493. | db.uri
  3494. | db.personblurb)*
  3495. }
  3496. }
  3497. div {
  3498. db.org.role.attribute = attribute role { text }
  3499. db.org.attlist =
  3500. db.org.role.attribute?
  3501. & db.common.attributes
  3502. & db.common.linking.attributes
  3503. db.org =
  3504. ## An organization and associated metadata
  3505. element org {
  3506. db.org.attlist,
  3507. db.orgname,
  3508. (db.address | db.affiliation | db.email | db.uri | db.orgdiv)*
  3509. }
  3510. }
  3511. div {
  3512. db.confgroup.role.attribute = attribute role { text }
  3513. db.confgroup.attlist =
  3514. db.confgroup.role.attribute?
  3515. & db.common.attributes
  3516. & db.common.linking.attributes
  3517. db.confgroup =
  3518. ## A wrapper for document meta-information about a conference
  3519. element confgroup {
  3520. db.confgroup.attlist,
  3521. (db.confdates
  3522. | db.conftitle
  3523. | db.confnum
  3524. | db.confsponsor
  3525. | db.address)*
  3526. }
  3527. }
  3528. div {
  3529. db.confdates.role.attribute = attribute role { text }
  3530. db.confdates.attlist =
  3531. db.confdates.role.attribute?
  3532. & db.common.attributes
  3533. & db.common.linking.attributes
  3534. db.confdates =
  3535. ## The dates of a conference for which a document was written
  3536. element confdates { db.confdates.attlist, db._text }
  3537. }
  3538. div {
  3539. db.conftitle.role.attribute = attribute role { text }
  3540. db.conftitle.attlist =
  3541. db.conftitle.role.attribute?
  3542. & db.common.attributes
  3543. & db.common.linking.attributes
  3544. db.conftitle =
  3545. ## The title of a conference for which a document was written
  3546. element conftitle { db.conftitle.attlist, db._text }
  3547. }
  3548. div {
  3549. db.confnum.role.attribute = attribute role { text }
  3550. db.confnum.attlist =
  3551. db.confnum.role.attribute?
  3552. & db.common.attributes
  3553. & db.common.linking.attributes
  3554. db.confnum =
  3555. ## An identifier, frequently numerical, associated with a conference for which a document was written
  3556. element confnum { db.confnum.attlist, db._text }
  3557. }
  3558. div {
  3559. db.confsponsor.role.attribute = attribute role { text }
  3560. db.confsponsor.attlist =
  3561. db.confsponsor.role.attribute?
  3562. & db.common.attributes
  3563. & db.common.linking.attributes
  3564. db.confsponsor =
  3565. ## The sponsor of a conference for which a document was written
  3566. element confsponsor { db.confsponsor.attlist, db._text }
  3567. }
  3568. div {
  3569. db.contractnum.role.attribute = attribute role { text }
  3570. db.contractnum.attlist =
  3571. db.contractnum.role.attribute?
  3572. & db.common.attributes
  3573. & db.common.linking.attributes
  3574. db.contractnum =
  3575. ## The contract number of a document
  3576. element contractnum { db.contractnum.attlist, db._text }
  3577. }
  3578. div {
  3579. db.contractsponsor.role.attribute = attribute role { text }
  3580. db.contractsponsor.attlist =
  3581. db.contractsponsor.role.attribute?
  3582. & db.common.attributes
  3583. & db.common.linking.attributes
  3584. db.contractsponsor =
  3585. ## The sponsor of a contract
  3586. element contractsponsor { db.contractsponsor.attlist, db._text }
  3587. }
  3588. div {
  3589. db.copyright.role.attribute = attribute role { text }
  3590. db.copyright.attlist =
  3591. db.copyright.role.attribute?
  3592. & db.common.attributes
  3593. & db.common.linking.attributes
  3594. db.copyright =
  3595. ## Copyright information about a document
  3596. element copyright { db.copyright.attlist, db.year+, db.holder* }
  3597. }
  3598. div {
  3599. db.year.role.attribute = attribute role { text }
  3600. db.year.attlist =
  3601. db.year.role.attribute?
  3602. & db.common.attributes
  3603. & db.common.linking.attributes
  3604. db.year =
  3605. ## The year of publication of a document
  3606. element year { db.year.attlist, db._text }
  3607. }
  3608. div {
  3609. db.holder.role.attribute = attribute role { text }
  3610. db.holder.attlist =
  3611. db.holder.role.attribute?
  3612. & db.common.attributes
  3613. & db.common.linking.attributes
  3614. db.holder =
  3615. ## The name of the individual or organization that holds a copyright
  3616. element holder { db.holder.attlist, db._text }
  3617. }
  3618. db.cover.contentmodel =
  3619. (db.para.blocks
  3620. | db.extension.blocks
  3621. | db.list.blocks
  3622. | db.informal.blocks
  3623. | db.publishing.blocks
  3624. | db.graphic.blocks
  3625. | db.technical.blocks
  3626. | db.verbatim.blocks
  3627. | db.bridgehead
  3628. | db.remark
  3629. | db.revhistory)
  3630. | db.synopsis.blocks
  3631. div {
  3632. db.cover.role.attribute = attribute role { text }
  3633. db.cover.attlist =
  3634. db.cover.role.attribute?
  3635. & db.common.attributes
  3636. & db.common.linking.attributes
  3637. db.cover =
  3638. ## Additional content for the cover of a publication
  3639. element cover { db.cover.attlist, db.cover.contentmodel+ }
  3640. }
  3641. db.date.contentmodel =
  3642. xsd:date | xsd:dateTime | xsd:gYearMonth | xsd:gYear | text
  3643. div {
  3644. db.date.role.attribute = attribute role { text }
  3645. db.date.attlist =
  3646. db.date.role.attribute?
  3647. & db.common.attributes
  3648. & db.common.linking.attributes
  3649. db.date =
  3650. ## The date of publication or revision of a document
  3651. element date { db.date.attlist, db.date.contentmodel }
  3652. }
  3653. div {
  3654. db.edition.role.attribute = attribute role { text }
  3655. db.edition.attlist =
  3656. db.edition.role.attribute?
  3657. & db.common.attributes
  3658. & db.common.linking.attributes
  3659. db.edition =
  3660. ## The name or number of an edition of a document
  3661. element edition { db.edition.attlist, db._text }
  3662. }
  3663. div {
  3664. db.editor.role.attribute = attribute role { text }
  3665. db.editor.attlist =
  3666. db.editor.role.attribute?
  3667. & db.common.attributes
  3668. & db.common.linking.attributes
  3669. db.editor =
  3670. ## The name of the editor of a document
  3671. element editor { db.editor.attlist, db.credit.contentmodel }
  3672. }
  3673. div {
  3674. db.biblioid.role.attribute = attribute role { text }
  3675. db.biblioid.attlist =
  3676. db.biblioid.role.attribute?
  3677. & db.common.attributes
  3678. & db.common.linking.attributes
  3679. & db.biblio.class.attribute
  3680. db.biblioid =
  3681. ## An identifier for a document
  3682. element biblioid { db.biblioid.attlist, db._text }
  3683. }
  3684. div {
  3685. db.citebiblioid.role.attribute = attribute role { text }
  3686. db.citebiblioid.attlist =
  3687. db.citebiblioid.role.attribute?
  3688. & db.common.attributes
  3689. & db.common.linking.attributes
  3690. & db.biblio.class.attribute
  3691. db.citebiblioid =
  3692. ## A citation of a bibliographic identifier
  3693. element citebiblioid { db.citebiblioid.attlist, db._text }
  3694. }
  3695. div {
  3696. db.bibliosource.role.attribute = attribute role { text }
  3697. db.bibliosource.attlist =
  3698. db.bibliosource.role.attribute?
  3699. & db.common.attributes
  3700. & db.common.linking.attributes
  3701. & db.biblio.class.attribute
  3702. db.bibliosource =
  3703. ## The source of a document
  3704. element bibliosource { db.bibliosource.attlist, db._text }
  3705. }
  3706. div {
  3707. db.bibliorelation.type.enumeration =
  3708. ## The described resource pre-existed the referenced resource, which is essentially the same intellectual content presented in another format
  3709. "hasformat"
  3710. |
  3711. ## The described resource includes the referenced resource either physically or logically
  3712. "haspart"
  3713. |
  3714. ## The described resource has a version, edition, or adaptation, namely, the referenced resource
  3715. "hasversion"
  3716. |
  3717. ## The described resource is the same intellectual content of the referenced resource, but presented in another format
  3718. "isformatof"
  3719. |
  3720. ## The described resource is a physical or logical part of the referenced resource
  3721. "ispartof"
  3722. |
  3723. ## The described resource is referenced, cited, or otherwise pointed to by the referenced resource
  3724. "isreferencedby"
  3725. |
  3726. ## The described resource is supplanted, displaced, or superceded by the referenced resource
  3727. "isreplacedby"
  3728. |
  3729. ## The described resource is required by the referenced resource, either physically or logically
  3730. "isrequiredby"
  3731. |
  3732. ## The described resource is a version, edition, or adaptation of the referenced resource; changes in version imply substantive changes in content rather than differences in format
  3733. "isversionof"
  3734. |
  3735. ## The described resource references, cites, or otherwise points to the referenced resource
  3736. "references"
  3737. |
  3738. ## The described resource supplants, displaces, or supersedes the referenced resource
  3739. "replaces"
  3740. |
  3741. ## The described resource requires the referenced resource to support its function, delivery, or coherence of content
  3742. "requires"
  3743. db.bibliorelation.type-enum.attribute =
  3744. ## Identifies the type of relationship
  3745. attribute type { db.bibliorelation.type.enumeration }?
  3746. db.bibliorelation.type-other.attributes =
  3747. ## Identifies the type of relationship
  3748. attribute type {
  3749. ## The described resource has a non-standard relationship with the referenced resource
  3750. "othertype"
  3751. }?,
  3752. ## A keyword that identififes the type of the non-standard relationship
  3753. attribute othertype { xsd:NMTOKEN }
  3754. db.bibliorelation.type.attribute =
  3755. db.bibliorelation.type-enum.attribute
  3756. | db.bibliorelation.type-other.attributes
  3757. db.bibliorelation.role.attribute = attribute role { text }
  3758. db.bibliorelation.attlist =
  3759. db.bibliorelation.role.attribute?
  3760. & db.common.attributes
  3761. & db.common.linking.attributes
  3762. & db.biblio.class.attribute
  3763. & db.bibliorelation.type.attribute
  3764. db.bibliorelation =
  3765. ## The relationship of a document to another
  3766. element bibliorelation { db.bibliorelation.attlist, db._text }
  3767. }
  3768. div {
  3769. db.bibliocoverage.spacial.enumeration =
  3770. ## The DCMI Point identifies a point in space using its geographic coordinates
  3771. "dcmipoint"
  3772. |
  3773. ## ISO 3166 Codes for the representation of names of countries
  3774. "iso3166"
  3775. |
  3776. ## The DCMI Box identifies a region of space using its geographic limits
  3777. "dcmibox"
  3778. |
  3779. ## The Getty Thesaurus of Geographic Names
  3780. "tgn"
  3781. db.bibliocoverage.spatial-enum.attribute =
  3782. ## Specifies the type of spatial coverage
  3783. attribute spatial { db.bibliocoverage.spacial.enumeration }?
  3784. db.bibliocoverage.spatial-other.attributes =
  3785. ## Specifies the type of spatial coverage
  3786. attribute spatial {
  3787. ## Identifies a non-standard type of coverage
  3788. "otherspatial"
  3789. }?,
  3790. ## A keyword that identifies the type of non-standard coverage
  3791. attribute otherspatial { xsd:NMTOKEN }
  3792. db.bibliocoverage.spatial.attribute =
  3793. db.bibliocoverage.spatial-enum.attribute
  3794. | db.bibliocoverage.spatial-other.attributes
  3795. db.bibliocoverage.temporal.enumeration =
  3796. ## A specification of the limits of a time interval
  3797. "dcmiperiod"
  3798. |
  3799. ## W3C Encoding rules for dates and times—a profile based on ISO 8601
  3800. "w3c-dtf"
  3801. db.bibliocoverage.temporal-enum.attribute =
  3802. ## Specifies the type of temporal coverage
  3803. attribute temporal { db.bibliocoverage.temporal.enumeration }?
  3804. db.bibliocoverage.temporal-other.attributes =
  3805. ## Specifies the type of temporal coverage
  3806. attribute temporal {
  3807. ## Specifies a non-standard type of coverage
  3808. "othertemporal"
  3809. }?,
  3810. ## A keyword that identifies the type of non-standard coverage
  3811. attribute othertemporal { xsd:NMTOKEN }
  3812. db.bibliocoverage.temporal.attribute =
  3813. db.bibliocoverage.temporal-enum.attribute
  3814. | db.bibliocoverage.temporal-other.attributes
  3815. db.bibliocoverage.coverage.attrib =
  3816. db.bibliocoverage.spatial.attribute
  3817. & db.bibliocoverage.temporal.attribute
  3818. db.bibliocoverage.role.attribute = attribute role { text }
  3819. db.bibliocoverage.attlist =
  3820. db.bibliocoverage.role.attribute?
  3821. & db.common.attributes
  3822. & db.common.linking.attributes
  3823. & db.bibliocoverage.coverage.attrib
  3824. db.bibliocoverage =
  3825. ## The spatial or temporal coverage of a document
  3826. element bibliocoverage { db.bibliocoverage.attlist, db._text }
  3827. }
  3828. div {
  3829. db.legalnotice.role.attribute = attribute role { text }
  3830. db.legalnotice.attlist =
  3831. db.legalnotice.role.attribute?
  3832. & db.common.attributes
  3833. & db.common.linking.attributes
  3834. db.legalnotice.info = db._info.title.only
  3835. db.legalnotice =
  3836. ## A statement of legal obligations or requirements
  3837. [
  3838. s:pattern [
  3839. name = "Root must have version"
  3840. "\x{a}" ~
  3841. " "
  3842. s:rule [
  3843. context = "/db:legalnotice"
  3844. "\x{a}" ~
  3845. " "
  3846. s:assert [
  3847. test = "@version"
  3848. "If this element is the root element, it must have a version attribute."
  3849. ]
  3850. "\x{a}" ~
  3851. " "
  3852. ]
  3853. "\x{a}" ~
  3854. " "
  3855. ]
  3856. ]
  3857. element legalnotice {
  3858. db.legalnotice.attlist, db.legalnotice.info, db.all.blocks+
  3859. }
  3860. }
  3861. div {
  3862. db.othercredit.class.enumeration =
  3863. ## A copy editor
  3864. "copyeditor"
  3865. |
  3866. ## A graphic designer
  3867. "graphicdesigner"
  3868. |
  3869. ## Some other contributor
  3870. "other"
  3871. |
  3872. ## A production editor
  3873. "productioneditor"
  3874. |
  3875. ## A technical editor
  3876. "technicaleditor"
  3877. |
  3878. ## A translator
  3879. "translator"
  3880. |
  3881. ## An indexer
  3882. "indexer"
  3883. |
  3884. ## A proof-reader
  3885. "proofreader"
  3886. |
  3887. ## A cover designer
  3888. "coverdesigner"
  3889. |
  3890. ## An interior designer
  3891. "interiordesigner"
  3892. |
  3893. ## An illustrator
  3894. "illustrator"
  3895. |
  3896. ## A reviewer
  3897. "reviewer"
  3898. |
  3899. ## A typesetter
  3900. "typesetter"
  3901. |
  3902. ## A converter (a persons responsible for conversion, not an application)
  3903. "conversion"
  3904. db.othercredit.class-enum.attribute =
  3905. ## Identifies the nature of the contributor
  3906. attribute class { db.othercredit.class.enumeration }?
  3907. db.othercredit.class-other.attribute =
  3908. ## Identifies the nature of the non-standard contribution
  3909. attribute otherclass { xsd:NMTOKEN }
  3910. db.othercredit.class-other.attributes =
  3911. ## Identifies the nature of the contributor
  3912. attribute class {
  3913. ## Identifies a non-standard contribution
  3914. "other"
  3915. }
  3916. & db.othercredit.class-other.attribute
  3917. db.othercredit.class.attribute =
  3918. db.othercredit.class-enum.attribute
  3919. | db.othercredit.class-other.attributes
  3920. db.othercredit.role.attribute = attribute role { text }
  3921. db.othercredit.attlist =
  3922. db.othercredit.role.attribute?
  3923. & db.common.attributes
  3924. & db.common.linking.attributes
  3925. & db.othercredit.class.attribute
  3926. db.othercredit =
  3927. ## A person or entity, other than an author or editor, credited in a document
  3928. element othercredit {
  3929. db.othercredit.attlist, db.credit.contentmodel
  3930. }
  3931. }
  3932. div {
  3933. db.pagenums.role.attribute = attribute role { text }
  3934. db.pagenums.attlist =
  3935. db.pagenums.role.attribute?
  3936. & db.common.attributes
  3937. & db.common.linking.attributes
  3938. db.pagenums =
  3939. ## The numbers of the pages in a book, for use in a bibliographic entry
  3940. element pagenums { db.pagenums.attlist, db._text }
  3941. }
  3942. div {
  3943. db.contrib.role.attribute = attribute role { text }
  3944. db.contrib.attlist =
  3945. db.contrib.role.attribute?
  3946. & db.common.attributes
  3947. & db.common.linking.attributes
  3948. db.contrib =
  3949. ## A summary of the contributions made to a document by a credited source
  3950. element contrib { db.contrib.attlist, db.all.inlines* }
  3951. }
  3952. div {
  3953. db.honorific.role.attribute = attribute role { text }
  3954. db.honorific.attlist =
  3955. db.honorific.role.attribute?
  3956. & db.common.attributes
  3957. & db.common.linking.attributes
  3958. db.honorific =
  3959. ## The title of a person
  3960. element honorific { db.honorific.attlist, db._text }
  3961. }
  3962. div {
  3963. db.firstname.role.attribute = attribute role { text }
  3964. db.firstname.attlist =
  3965. db.firstname.role.attribute?
  3966. & db.common.attributes
  3967. & db.common.linking.attributes
  3968. db.firstname =
  3969. ## A given name of a person
  3970. element firstname { db.firstname.attlist, db._text }
  3971. }
  3972. div {
  3973. db.givenname.role.attribute = attribute role { text }
  3974. db.givenname.attlist =
  3975. db.givenname.role.attribute?
  3976. & db.common.attributes
  3977. & db.common.linking.attributes
  3978. db.givenname =
  3979. ## The given name of a person
  3980. element givenname { db.givenname.attlist, db._text }
  3981. }
  3982. div {
  3983. db.surname.role.attribute = attribute role { text }
  3984. db.surname.attlist =
  3985. db.surname.role.attribute?
  3986. & db.common.attributes
  3987. & db.common.linking.attributes
  3988. db.surname =
  3989. ## An inherited or family name; in western cultures the last name
  3990. element surname { db.surname.attlist, db._text }
  3991. }
  3992. div {
  3993. db.lineage.role.attribute = attribute role { text }
  3994. db.lineage.attlist =
  3995. db.lineage.role.attribute?
  3996. & db.common.attributes
  3997. & db.common.linking.attributes
  3998. db.lineage =
  3999. ## The portion of a person's name indicating a relationship to ancestors
  4000. element lineage { db.lineage.attlist, db._text }
  4001. }
  4002. div {
  4003. db.othername.role.attribute = attribute role { text }
  4004. db.othername.attlist =
  4005. db.othername.role.attribute?
  4006. & db.common.attributes
  4007. & db.common.linking.attributes
  4008. db.othername =
  4009. ## A component of a person's name that is not a first name, surname, or lineage
  4010. element othername { db.othername.attlist, db._text }
  4011. }
  4012. div {
  4013. db.printhistory.role.attribute = attribute role { text }
  4014. db.printhistory.attlist =
  4015. db.printhistory.role.attribute?
  4016. & db.common.attributes
  4017. & db.common.linking.attributes
  4018. db.printhistory =
  4019. ## The printing history of a document
  4020. element printhistory { db.printhistory.attlist, db.para.blocks+ }
  4021. }
  4022. div {
  4023. db.pubdate.role.attribute = attribute role { text }
  4024. db.pubdate.attlist =
  4025. db.pubdate.role.attribute?
  4026. & db.common.attributes
  4027. & db.common.linking.attributes
  4028. db.pubdate =
  4029. ## The date of publication of a document
  4030. element pubdate { db.pubdate.attlist, db.date.contentmodel }
  4031. }
  4032. div {
  4033. db.publisher.role.attribute = attribute role { text }
  4034. db.publisher.attlist =
  4035. db.publisher.role.attribute?
  4036. & db.common.attributes
  4037. & db.common.linking.attributes
  4038. db.publisher =
  4039. ## The publisher of a document
  4040. element publisher {
  4041. db.publisher.attlist, db.publishername, db.address*
  4042. }
  4043. }
  4044. div {
  4045. db.publishername.role.attribute = attribute role { text }
  4046. db.publishername.attlist =
  4047. db.publishername.role.attribute?
  4048. & db.common.attributes
  4049. & db.common.linking.attributes
  4050. db.publishername =
  4051. ## The name of the publisher of a document
  4052. element publishername { db.publishername.attlist, db._text }
  4053. }
  4054. div {
  4055. db.releaseinfo.role.attribute = attribute role { text }
  4056. db.releaseinfo.attlist =
  4057. db.releaseinfo.role.attribute?
  4058. & db.common.attributes
  4059. & db.common.linking.attributes
  4060. db.releaseinfo =
  4061. ## Information about a particular release of a document
  4062. element releaseinfo { db.releaseinfo.attlist, db._text }
  4063. }
  4064. div {
  4065. db.revhistory.role.attribute = attribute role { text }
  4066. db.revhistory.attlist =
  4067. db.revhistory.role.attribute?
  4068. & db.common.attributes
  4069. & db.common.linking.attributes
  4070. db.revhistory.info = db._info.title.only
  4071. db.revhistory =
  4072. ## A history of the revisions to a document
  4073. [
  4074. s:pattern [
  4075. name = "Root must have version"
  4076. "\x{a}" ~
  4077. " "
  4078. s:rule [
  4079. context = "/db:revhistory"
  4080. "\x{a}" ~
  4081. " "
  4082. s:assert [
  4083. test = "@version"
  4084. "If this element is the root element, it must have a version attribute."
  4085. ]
  4086. "\x{a}" ~
  4087. " "
  4088. ]
  4089. "\x{a}" ~
  4090. " "
  4091. ]
  4092. ]
  4093. element revhistory {
  4094. db.revhistory.attlist, db.revhistory.info, db.revision+
  4095. }
  4096. }
  4097. div {
  4098. db.revision.role.attribute = attribute role { text }
  4099. db.revision.attlist =
  4100. db.revision.role.attribute?
  4101. & db.common.attributes
  4102. & db.common.linking.attributes
  4103. db.revision =
  4104. ## An entry describing a single revision in the history of the revisions to a document
  4105. element revision {
  4106. db.revision.attlist,
  4107. db.revnumber?,
  4108. db.date,
  4109. (db.authorinitials | db.author)*,
  4110. (db.revremark | db.revdescription)?
  4111. }
  4112. }
  4113. div {
  4114. db.revnumber.role.attribute = attribute role { text }
  4115. db.revnumber.attlist =
  4116. db.revnumber.role.attribute?
  4117. & db.common.attributes
  4118. & db.common.linking.attributes
  4119. db.revnumber =
  4120. ## A document revision number
  4121. element revnumber { db.revnumber.attlist, db._text }
  4122. }
  4123. div {
  4124. db.revremark.role.attribute = attribute role { text }
  4125. db.revremark.attlist =
  4126. db.revremark.role.attribute?
  4127. & db.common.attributes
  4128. & db.common.linking.attributes
  4129. db.revremark =
  4130. ## A description of a revision to a document
  4131. element revremark { db.revremark.attlist, db._text }
  4132. }
  4133. div {
  4134. db.revdescription.role.attribute = attribute role { text }
  4135. db.revdescription.attlist =
  4136. db.revdescription.role.attribute?
  4137. & db.common.attributes
  4138. & db.common.linking.attributes
  4139. db.revdescription =
  4140. ## A extended description of a revision to a document
  4141. element revdescription { db.revdescription.attlist, db.all.blocks* }
  4142. }
  4143. div {
  4144. db.seriesvolnums.role.attribute = attribute role { text }
  4145. db.seriesvolnums.attlist =
  4146. db.seriesvolnums.role.attribute?
  4147. & db.common.attributes
  4148. & db.common.linking.attributes
  4149. db.seriesvolnums =
  4150. ## Numbers of the volumes in a series of books
  4151. element seriesvolnums { db.seriesvolnums.attlist, db._text }
  4152. }
  4153. div {
  4154. db.volumenum.role.attribute = attribute role { text }
  4155. db.volumenum.attlist =
  4156. db.volumenum.role.attribute?
  4157. & db.common.attributes
  4158. & db.common.linking.attributes
  4159. db.volumenum =
  4160. ## The volume number of a document in a set (as of books in a set or articles in a journal)
  4161. element volumenum { db.volumenum.attlist, db._text }
  4162. }
  4163. div {
  4164. db.issuenum.role.attribute = attribute role { text }
  4165. db.issuenum.attlist =
  4166. db.issuenum.role.attribute?
  4167. & db.common.attributes
  4168. & db.common.linking.attributes
  4169. db.issuenum =
  4170. ## The number of an issue of a journal
  4171. element issuenum { db.issuenum.attlist, db._text }
  4172. }
  4173. div {
  4174. db.package.role.attribute = attribute role { text }
  4175. db.package.attlist =
  4176. db.package.role.attribute?
  4177. & db.common.attributes
  4178. & db.common.linking.attributes
  4179. db.package =
  4180. ## A software or application package
  4181. element package { db.package.attlist, db._text }
  4182. }
  4183. div {
  4184. db.email.role.attribute = attribute role { text }
  4185. db.email.attlist =
  4186. db.email.role.attribute?
  4187. & db.common.attributes
  4188. & db.common.linking.attributes
  4189. db.email =
  4190. ## An email address
  4191. element email { db.email.attlist, db._text }
  4192. }
  4193. div {
  4194. db.lineannotation.role.attribute = attribute role { text }
  4195. db.lineannotation.attlist =
  4196. db.lineannotation.role.attribute?
  4197. & db.common.attributes
  4198. & db.common.linking.attributes
  4199. db.lineannotation =
  4200. ## A comment on a line in a verbatim listing
  4201. element lineannotation { db.lineannotation.attlist, db._text }
  4202. }
  4203. div {
  4204. db.parameter.class.enumeration =
  4205. ## A command
  4206. "command"
  4207. |
  4208. ## A function
  4209. "function"
  4210. |
  4211. ## An option
  4212. "option"
  4213. db.parameter.class.attribute =
  4214. ## Identifies the class of parameter
  4215. attribute class { db.parameter.class.enumeration }
  4216. db.parameter.role.attribute = attribute role { text }
  4217. db.parameter.attlist =
  4218. db.parameter.role.attribute?
  4219. & db.common.attributes
  4220. & db.common.linking.attributes
  4221. & db.parameter.class.attribute?
  4222. db.parameter =
  4223. ## A value or a symbolic reference to a value
  4224. element parameter { db.parameter.attlist, db._text }
  4225. }
  4226. db.replaceable.inlines = db._text | db.co
  4227. div {
  4228. db.replaceable.class.enumeration =
  4229. ## A command
  4230. "command"
  4231. |
  4232. ## A function
  4233. "function"
  4234. |
  4235. ## An option
  4236. "option"
  4237. |
  4238. ## A parameter
  4239. "parameter"
  4240. db.replaceable.class.attribute =
  4241. ## Identifies the nature of the replaceable text
  4242. attribute class { db.replaceable.class.enumeration }
  4243. db.replaceable.role.attribute = attribute role { text }
  4244. db.replaceable.attlist =
  4245. db.replaceable.role.attribute?
  4246. & db.common.attributes
  4247. & db.common.linking.attributes
  4248. & db.replaceable.class.attribute?
  4249. db.replaceable =
  4250. ## Content that may or must be replaced by the user
  4251. element replaceable {
  4252. db.replaceable.attlist, db.replaceable.inlines*
  4253. }
  4254. }
  4255. div {
  4256. db.uri.type.attribute =
  4257. ## Identifies the type of URI specified
  4258. attribute type { text }?
  4259. db.uri.role.attribute = attribute role { text }
  4260. db.uri.attlist =
  4261. db.uri.role.attribute?
  4262. & db.common.attributes
  4263. & db.common.linking.attributes
  4264. & db.uri.type.attribute
  4265. db.uri =
  4266. ## A Uniform Resource Identifier
  4267. element uri { db.uri.attlist, db._text }
  4268. }
  4269. div {
  4270. db.abbrev.role.attribute = attribute role { text }
  4271. db.abbrev.attlist =
  4272. db.abbrev.role.attribute?
  4273. & db.common.attributes
  4274. & db.common.linking.attributes
  4275. db.abbrev =
  4276. ## An abbreviation, especially one followed by a period
  4277. element abbrev {
  4278. db.abbrev.attlist,
  4279. (db._text | db.superscript | db.subscript | db.trademark)*
  4280. }
  4281. }
  4282. div {
  4283. db.acronym.role.attribute = attribute role { text }
  4284. db.acronym.attlist =
  4285. db.acronym.role.attribute?
  4286. & db.common.attributes
  4287. & db.common.linking.attributes
  4288. db.acronym =
  4289. ## An often pronounceable word made from the initial (or selected) letters of a name or phrase
  4290. element acronym {
  4291. db.acronym.attlist,
  4292. (db._text | db.superscript | db.subscript | db.trademark)*
  4293. }
  4294. }
  4295. div {
  4296. db.citation.role.attribute = attribute role { text }
  4297. db.citation.attlist =
  4298. db.citation.role.attribute?
  4299. & db.common.attributes
  4300. & db.common.linking.attributes
  4301. db.citation =
  4302. ## An inline bibliographic reference to another published work
  4303. element citation { db.citation.attlist, db.all.inlines* }
  4304. }
  4305. div {
  4306. db.citerefentry.role.attribute = attribute role { text }
  4307. db.citerefentry.attlist =
  4308. db.citerefentry.role.attribute?
  4309. & db.common.attributes
  4310. & db.common.linking.attributes
  4311. db.citerefentry =
  4312. ## A citation to a reference page
  4313. element citerefentry {
  4314. db.citerefentry.attlist, db.refentrytitle, db.manvolnum?
  4315. }
  4316. }
  4317. div {
  4318. db.refentrytitle.role.attribute = attribute role { text }
  4319. db.refentrytitle.attlist =
  4320. db.refentrytitle.role.attribute?
  4321. & db.common.attributes
  4322. & db.common.linking.attributes
  4323. db.refentrytitle =
  4324. ## The title of a reference page
  4325. element refentrytitle { db.refentrytitle.attlist, db.all.inlines* }
  4326. }
  4327. div {
  4328. db.manvolnum.role.attribute = attribute role { text }
  4329. db.manvolnum.attlist =
  4330. db.manvolnum.role.attribute?
  4331. & db.common.attributes
  4332. & db.common.linking.attributes
  4333. db.manvolnum =
  4334. ## A reference volume number
  4335. element manvolnum { db.manvolnum.attlist, db._text }
  4336. }
  4337. div {
  4338. db.citetitle.pubwork.enumeration =
  4339. ## An article
  4340. "article"
  4341. |
  4342. ## A bulletin board system
  4343. "bbs"
  4344. |
  4345. ## A book
  4346. "book"
  4347. |
  4348. ## A CD-ROM
  4349. "cdrom"
  4350. |
  4351. ## A chapter (as of a book)
  4352. "chapter"
  4353. |
  4354. ## A DVD
  4355. "dvd"
  4356. |
  4357. ## An email message
  4358. "emailmessage"
  4359. |
  4360. ## A gopher page
  4361. "gopher"
  4362. |
  4363. ## A journal
  4364. "journal"
  4365. |
  4366. ## A manuscript
  4367. "manuscript"
  4368. |
  4369. ## A posting to a newsgroup
  4370. "newsposting"
  4371. |
  4372. ## A part (as of a book)
  4373. "part"
  4374. |
  4375. ## A reference entry
  4376. "refentry"
  4377. |
  4378. ## A section (as of a book or article)
  4379. "section"
  4380. |
  4381. ## A series
  4382. "series"
  4383. |
  4384. ## A set (as of books)
  4385. "set"
  4386. |
  4387. ## A web page
  4388. "webpage"
  4389. |
  4390. ## A wiki page
  4391. "wiki"
  4392. db.citetitle.pubwork.attribute =
  4393. ## Identifies the nature of the publication being cited
  4394. attribute pubwork { db.citetitle.pubwork.enumeration }
  4395. db.citetitle.role.attribute = attribute role { text }
  4396. db.citetitle.attlist =
  4397. db.citetitle.role.attribute?
  4398. & db.common.attributes
  4399. & db.common.linking.attributes
  4400. & db.citetitle.pubwork.attribute?
  4401. db.citetitle =
  4402. ## The title of a cited work
  4403. element citetitle { db.citetitle.attlist, db.all.inlines* }
  4404. }
  4405. div {
  4406. db.emphasis.role.attribute = attribute role { text }
  4407. db.emphasis.attlist =
  4408. db.emphasis.role.attribute?
  4409. & db.common.attributes
  4410. & db.common.linking.attributes
  4411. db.emphasis =
  4412. ## Emphasized text
  4413. element emphasis { db.emphasis.attlist, db.all.inlines* }
  4414. }
  4415. div {
  4416. db._emphasis =
  4417. ## A limited span of emphasized text
  4418. element emphasis { db.emphasis.attlist, db._text }
  4419. }
  4420. div {
  4421. db.foreignphrase.role.attribute = attribute role { text }
  4422. db.foreignphrase.attlist =
  4423. db.foreignphrase.role.attribute?
  4424. & db.common.attributes
  4425. & db.common.linking.attributes
  4426. db.foreignphrase =
  4427. ## A word or phrase in a language other than the primary language of the document
  4428. element foreignphrase {
  4429. db.foreignphrase.attlist, (text | db.general.inlines)*
  4430. }
  4431. }
  4432. div {
  4433. db._foreignphrase.role.attribute = attribute role { text }
  4434. db._foreignphrase.attlist =
  4435. db._foreignphrase.role.attribute?
  4436. & db.common.attributes
  4437. & db.common.linking.attributes
  4438. db._foreignphrase =
  4439. ## A limited word or phrase in a language other than the primary language of the document
  4440. element foreignphrase { db._foreignphrase.attlist, db._text }
  4441. }
  4442. div {
  4443. db.phrase.role.attribute = attribute role { text }
  4444. db.phrase.attlist =
  4445. db.phrase.role.attribute?
  4446. & db.common.attributes
  4447. & db.common.linking.attributes
  4448. db.phrase =
  4449. ## A span of text
  4450. element phrase { db.phrase.attlist, db.all.inlines* }
  4451. }
  4452. div {
  4453. db._phrase =
  4454. ## A limited span of text
  4455. element phrase { db.phrase.attlist, db._text }
  4456. }
  4457. div {
  4458. db.quote.role.attribute = attribute role { text }
  4459. db.quote.attlist =
  4460. db.quote.role.attribute?
  4461. & db.common.attributes
  4462. & db.common.linking.attributes
  4463. db.quote =
  4464. ## An inline quotation
  4465. element quote { db.quote.attlist, db.all.inlines* }
  4466. }
  4467. div {
  4468. db._quote.role.attribute = attribute role { text }
  4469. db._quote.attlist =
  4470. db._quote.role.attribute?
  4471. & db.common.attributes
  4472. & db.common.linking.attributes
  4473. db._quote =
  4474. ## A limited inline quotation
  4475. element quote { db._quote.attlist, db._text }
  4476. }
  4477. div {
  4478. db.subscript.role.attribute = attribute role { text }
  4479. db.subscript.attlist =
  4480. db.subscript.role.attribute?
  4481. & db.common.attributes
  4482. & db.common.linking.attributes
  4483. db.subscript =
  4484. ## A subscript (as in H2
  4485. ## O, the molecular formula for water)
  4486. element subscript { db.subscript.attlist, db._text }
  4487. }
  4488. div {
  4489. db.superscript.role.attribute = attribute role { text }
  4490. db.superscript.attlist =
  4491. db.superscript.role.attribute?
  4492. & db.common.attributes
  4493. & db.common.linking.attributes
  4494. db.superscript =
  4495. ## A superscript (as in x2
  4496. ## , the mathematical notation for x multiplied by itself)
  4497. element superscript { db.superscript.attlist, db._text }
  4498. }
  4499. div {
  4500. db.trademark.class.enumeration =
  4501. ## A copyright
  4502. "copyright"
  4503. |
  4504. ## A registered copyright
  4505. "registered"
  4506. |
  4507. ## A service
  4508. "service"
  4509. |
  4510. ## A trademark
  4511. "trade"
  4512. db.trademark.class.attribute =
  4513. ## Identifies the class of trade mark
  4514. attribute class { db.trademark.class.enumeration }
  4515. db.trademark.role.attribute = attribute role { text }
  4516. db.trademark.attlist =
  4517. db.trademark.role.attribute?
  4518. & db.common.attributes
  4519. & db.common.linking.attributes
  4520. & db.trademark.class.attribute?
  4521. db.trademark =
  4522. ## A trademark
  4523. element trademark { db.trademark.attlist, db._text }
  4524. }
  4525. div {
  4526. db.wordasword.role.attribute = attribute role { text }
  4527. db.wordasword.attlist =
  4528. db.wordasword.role.attribute?
  4529. & db.common.attributes
  4530. & db.common.linking.attributes
  4531. db.wordasword =
  4532. ## A word meant specifically as a word and not representing anything else
  4533. element wordasword { db.wordasword.attlist, db._text }
  4534. }
  4535. div {
  4536. db.footnoteref.role.attribute = attribute role { text }
  4537. db.footnoteref.label.attribute = db.label.attribute
  4538. db.footnoteref.attlist =
  4539. db.footnoteref.role.attribute?
  4540. & db.common.attributes
  4541. & db.linkend.attribute
  4542. & db.footnoteref.label.attribute?
  4543. db.footnoteref =
  4544. ## A cross reference to a footnote (a footnote mark)
  4545. [
  4546. s:pattern [
  4547. name = "Footnote reference type constraint"
  4548. "\x{a}" ~
  4549. " "
  4550. s:rule [
  4551. context = "db:footnoteref"
  4552. "\x{a}" ~
  4553. " "
  4554. s:assert [
  4555. test =
  4556. "local-name(//*[@xml:id=current()/@linkend]) = 'footnote' and namespace-uri(//*[@xml:id=current()/@linkend]) = 'http://docbook.org/ns/docbook'"
  4557. "@linkend on footnoteref must point to a footnote."
  4558. ]
  4559. "\x{a}" ~
  4560. " "
  4561. ]
  4562. "\x{a}" ~
  4563. " "
  4564. ]
  4565. ]
  4566. element footnoteref { db.footnoteref.attlist, empty }
  4567. }
  4568. div {
  4569. db.xref.role.attribute = attribute role { text }
  4570. db.xref.xrefstyle.attribute = db.xrefstyle.attribute
  4571. db.xref.endterm.attribute = db.endterm.attribute
  4572. db.xref.attlist =
  4573. db.xref.role.attribute?
  4574. & db.common.attributes
  4575. & db.common.req.linking.attributes
  4576. & db.xref.xrefstyle.attribute?
  4577. & db.xref.endterm.attribute?
  4578. db.xref =
  4579. ## A cross reference to another part of the document
  4580. element xref { db.xref.attlist, empty }
  4581. }
  4582. div {
  4583. db.link.role.attribute = attribute role { text }
  4584. db.link.xrefstyle.attribute = db.xrefstyle.attribute
  4585. db.link.endterm.attribute = db.endterm.attribute
  4586. db.link.attlist =
  4587. db.link.role.attribute?
  4588. & db.common.attributes
  4589. & db.common.req.linking.attributes
  4590. & db.link.xrefstyle.attribute?
  4591. & db.link.endterm.attribute?
  4592. db.link =
  4593. ## A hypertext link
  4594. element link { db.link.attlist, db.all.inlines* }
  4595. }
  4596. div {
  4597. db.olink.role.attribute = attribute role { text }
  4598. db.olink.xrefstyle.attribute = db.xrefstyle.attribute
  4599. db.olink.localinfo.attribute =
  4600. ## Holds additional information that may be used by the application when resolving the link
  4601. attribute localinfo { text }
  4602. db.olink.targetdoc.attribute =
  4603. ## Specifies the URI of the document in which the link target appears
  4604. attribute targetdoc { xsd:anyURI }
  4605. db.olink.targetptr.attribute =
  4606. ## Specifies the location of the link target in the document
  4607. attribute targetptr { text }
  4608. db.olink.type.attribute =
  4609. ## Identifies application-specific customization of the link behavior
  4610. attribute type { text }
  4611. db.olink.attlist =
  4612. db.common.attributes
  4613. & db.olink.targetdoc.attribute?
  4614. & db.olink.role.attribute?
  4615. & db.olink.xrefstyle.attribute?
  4616. & db.olink.localinfo.attribute?
  4617. & db.olink.targetptr.attribute?
  4618. & db.olink.type.attribute?
  4619. db.olink =
  4620. ## A link that addresses its target indirectly
  4621. element olink { db.olink.attlist, db.all.inlines* }
  4622. }
  4623. div {
  4624. db.anchor.role.attribute = attribute role { text }
  4625. db.anchor.attlist =
  4626. db.anchor.role.attribute? & db.common.idreq.attributes
  4627. db.anchor =
  4628. ## A spot in the document
  4629. element anchor { db.anchor.attlist, empty }
  4630. }
  4631. div {
  4632. db.alt.role.attribute = attribute role { text }
  4633. db.alt.attlist = db.alt.role.attribute? & db.common.attributes
  4634. db.alt =
  4635. ## A text-only annotation, often used for accessibility
  4636. element alt { db.alt.attlist, (text | db.inlinemediaobject)* }
  4637. }
  4638. db.status.attribute =
  4639. ## Identifies the editorial or publication status of the element on which it occurs
  4640. attribute status { text }
  4641. db.toplevel.sections =
  4642. ((db.section+, db.simplesect*) | db.simplesect+)
  4643. | (db.sect1+, db.simplesect*)
  4644. | db.refentry+
  4645. db.toplevel.blocks.or.sections =
  4646. (db.all.blocks+, db.toplevel.sections?) | db.toplevel.sections
  4647. db.recursive.sections =
  4648. ((db.section+, db.simplesect*) | db.simplesect+)
  4649. | db.refentry+
  4650. db.recursive.blocks.or.sections =
  4651. (db.all.blocks+, db.recursive.sections?) | db.recursive.sections
  4652. db.divisions = db.part | db.reference
  4653. db.components =
  4654. db.dedication
  4655. | db.acknowledgements
  4656. | db.preface
  4657. | db.chapter
  4658. | db.appendix
  4659. | db.article
  4660. | db.colophon
  4661. db.navigation.components =
  4662. notAllowed | db.glossary | db.bibliography | db.index | db.toc
  4663. db.component.contentmodel =
  4664. db.navigation.components*,
  4665. db.toplevel.blocks.or.sections,
  4666. db.navigation.components*
  4667. db.setindex.components = notAllowed | db.setindex
  4668. db.toc.components = notAllowed | db.toc
  4669. db.set.components = db.set | db.book
  4670. div {
  4671. db.set.status.attribute = db.status.attribute
  4672. db.set.role.attribute = attribute role { text }
  4673. db.set.attlist =
  4674. db.set.role.attribute?
  4675. & db.common.attributes
  4676. & db.common.linking.attributes
  4677. & db.label.attribute?
  4678. & db.set.status.attribute?
  4679. db.set.info = db._info.title.req
  4680. db.set =
  4681. ## A collection of books
  4682. [
  4683. s:pattern [
  4684. name = "Root must have version"
  4685. "\x{a}" ~
  4686. " "
  4687. s:rule [
  4688. context = "/db:set"
  4689. "\x{a}" ~
  4690. " "
  4691. s:assert [
  4692. test = "@version"
  4693. "If this element is the root element, it must have a version attribute."
  4694. ]
  4695. "\x{a}" ~
  4696. " "
  4697. ]
  4698. "\x{a}" ~
  4699. " "
  4700. ]
  4701. ]
  4702. element set {
  4703. db.set.attlist,
  4704. db.set.info,
  4705. db.toc.components?,
  4706. db.set.components+,
  4707. db.setindex.components?
  4708. }
  4709. }
  4710. db.book.components =
  4711. (db.navigation.components | db.components | db.divisions)* | db.topic*
  4712. div {
  4713. db.book.status.attribute = db.status.attribute
  4714. db.book.role.attribute = attribute role { text }
  4715. db.book.attlist =
  4716. db.book.role.attribute?
  4717. & db.common.attributes
  4718. & db.common.linking.attributes
  4719. & db.label.attribute?
  4720. & db.book.status.attribute?
  4721. db.book.info = db._info
  4722. db.book =
  4723. ## A book
  4724. [
  4725. s:pattern [
  4726. name = "Root must have version"
  4727. "\x{a}" ~
  4728. " "
  4729. s:rule [
  4730. context = "/db:book"
  4731. "\x{a}" ~
  4732. " "
  4733. s:assert [
  4734. test = "@version"
  4735. "If this element is the root element, it must have a version attribute."
  4736. ]
  4737. "\x{a}" ~
  4738. " "
  4739. ]
  4740. "\x{a}" ~
  4741. " "
  4742. ]
  4743. ]
  4744. element book { db.book.attlist, db.book.info, db.book.components }
  4745. }
  4746. div {
  4747. db.dedication.status.attribute = db.status.attribute
  4748. db.dedication.role.attribute = attribute role { text }
  4749. db.dedication.attlist =
  4750. db.dedication.role.attribute?
  4751. & db.common.attributes
  4752. & db.common.linking.attributes
  4753. & db.label.attribute?
  4754. & db.dedication.status.attribute?
  4755. db.dedication.info = db._info
  4756. db.dedication =
  4757. ## The dedication of a book or other component
  4758. [
  4759. s:pattern [
  4760. name = "Root must have version"
  4761. "\x{a}" ~
  4762. " "
  4763. s:rule [
  4764. context = "/db:dedication"
  4765. "\x{a}" ~
  4766. " "
  4767. s:assert [
  4768. test = "@version"
  4769. "If this element is the root element, it must have a version attribute."
  4770. ]
  4771. "\x{a}" ~
  4772. " "
  4773. ]
  4774. "\x{a}" ~
  4775. " "
  4776. ]
  4777. ]
  4778. element dedication {
  4779. db.dedication.attlist, db.dedication.info, db.all.blocks+
  4780. }
  4781. }
  4782. div {
  4783. db.acknowledgements.status.attribute = db.status.attribute
  4784. db.acknowledgements.role.attribute = attribute role { text }
  4785. db.acknowledgements.attlist =
  4786. db.acknowledgements.role.attribute?
  4787. & db.common.attributes
  4788. & db.common.linking.attributes
  4789. & db.label.attribute?
  4790. & db.acknowledgements.status.attribute?
  4791. db.acknowledgements.info = db._info
  4792. db.acknowledgements =
  4793. ## Acknowledgements of a book or other component
  4794. [
  4795. s:pattern [
  4796. name = "Root must have version"
  4797. "\x{a}" ~
  4798. " "
  4799. s:rule [
  4800. context = "/db:acknowledgements"
  4801. "\x{a}" ~
  4802. " "
  4803. s:assert [
  4804. test = "@version"
  4805. "If this element is the root element, it must have a version attribute."
  4806. ]
  4807. "\x{a}" ~
  4808. " "
  4809. ]
  4810. "\x{a}" ~
  4811. " "
  4812. ]
  4813. ]
  4814. element acknowledgements {
  4815. db.acknowledgements.attlist,
  4816. db.acknowledgements.info,
  4817. db.all.blocks+
  4818. }
  4819. }
  4820. div {
  4821. db.colophon.status.attribute = db.status.attribute
  4822. db.colophon.role.attribute = attribute role { text }
  4823. db.colophon.attlist =
  4824. db.colophon.role.attribute?
  4825. & db.common.attributes
  4826. & db.common.linking.attributes
  4827. & db.label.attribute?
  4828. & db.colophon.status.attribute?
  4829. db.colophon.info = db._info
  4830. db.colophon =
  4831. ## Text at the back of a book describing facts about its production
  4832. [
  4833. s:pattern [
  4834. name = "Root must have version"
  4835. "\x{a}" ~
  4836. " "
  4837. s:rule [
  4838. context = "/db:colophon"
  4839. "\x{a}" ~
  4840. " "
  4841. s:assert [
  4842. test = "@version"
  4843. "If this element is the root element, it must have a version attribute."
  4844. ]
  4845. "\x{a}" ~
  4846. " "
  4847. ]
  4848. "\x{a}" ~
  4849. " "
  4850. ]
  4851. ]
  4852. element colophon {
  4853. db.colophon.attlist,
  4854. db.colophon.info,
  4855. ((db.all.blocks+, db.simplesect*)
  4856. | (db.all.blocks*, db.simplesect+))
  4857. }
  4858. }
  4859. db.appendix.contentmodel = db.component.contentmodel | db.topic+
  4860. div {
  4861. db.appendix.status.attribute = db.status.attribute
  4862. db.appendix.role.attribute = attribute role { text }
  4863. db.appendix.attlist =
  4864. db.appendix.role.attribute?
  4865. & db.common.attributes
  4866. & db.common.linking.attributes
  4867. & db.label.attribute?
  4868. & db.appendix.status.attribute?
  4869. db.appendix.info = db._info.title.req
  4870. db.appendix =
  4871. ## An appendix in a book or article
  4872. [
  4873. s:pattern [
  4874. name = "Root must have version"
  4875. "\x{a}" ~
  4876. " "
  4877. s:rule [
  4878. context = "/db:appendix"
  4879. "\x{a}" ~
  4880. " "
  4881. s:assert [
  4882. test = "@version"
  4883. "If this element is the root element, it must have a version attribute."
  4884. ]
  4885. "\x{a}" ~
  4886. " "
  4887. ]
  4888. "\x{a}" ~
  4889. " "
  4890. ]
  4891. ]
  4892. element appendix {
  4893. db.appendix.attlist, db.appendix.info, db.appendix.contentmodel?
  4894. }
  4895. }
  4896. db.chapter.contentmodel = db.component.contentmodel | db.topic+
  4897. div {
  4898. db.chapter.status.attribute = db.status.attribute
  4899. db.chapter.role.attribute = attribute role { text }
  4900. db.chapter.attlist =
  4901. db.chapter.role.attribute?
  4902. & db.common.attributes
  4903. & db.common.linking.attributes
  4904. & db.label.attribute?
  4905. & db.chapter.status.attribute?
  4906. db.chapter.info = db._info.title.req
  4907. db.chapter =
  4908. ## A chapter, as of a book
  4909. [
  4910. s:pattern [
  4911. name = "Root must have version"
  4912. "\x{a}" ~
  4913. " "
  4914. s:rule [
  4915. context = "/db:chapter"
  4916. "\x{a}" ~
  4917. " "
  4918. s:assert [
  4919. test = "@version"
  4920. "If this element is the root element, it must have a version attribute."
  4921. ]
  4922. "\x{a}" ~
  4923. " "
  4924. ]
  4925. "\x{a}" ~
  4926. " "
  4927. ]
  4928. ]
  4929. element chapter {
  4930. db.chapter.attlist, db.chapter.info, db.chapter.contentmodel?
  4931. }
  4932. }
  4933. db.part.components =
  4934. (db.navigation.components | db.components)
  4935. | (db.refentry | db.reference)
  4936. db.part.contentmodel = db.part.components+ | db.topic+
  4937. div {
  4938. db.part.status.attribute = db.status.attribute
  4939. db.part.role.attribute = attribute role { text }
  4940. db.part.attlist =
  4941. db.part.role.attribute?
  4942. & db.common.attributes
  4943. & db.common.linking.attributes
  4944. & db.label.attribute?
  4945. & db.part.status.attribute?
  4946. db.part.info = db._info.title.req
  4947. db.part =
  4948. ## A division in a book
  4949. [
  4950. s:pattern [
  4951. name = "Root must have version"
  4952. "\x{a}" ~
  4953. " "
  4954. s:rule [
  4955. context = "/db:part"
  4956. "\x{a}" ~
  4957. " "
  4958. s:assert [
  4959. test = "@version"
  4960. "If this element is the root element, it must have a version attribute."
  4961. ]
  4962. "\x{a}" ~
  4963. " "
  4964. ]
  4965. "\x{a}" ~
  4966. " "
  4967. ]
  4968. ]
  4969. element part {
  4970. db.part.attlist,
  4971. db.part.info,
  4972. db.partintro?,
  4973. db.part.contentmodel?
  4974. }
  4975. }
  4976. div {
  4977. db.preface.status.attribute = db.status.attribute
  4978. db.preface.role.attribute = attribute role { text }
  4979. db.preface.attlist =
  4980. db.preface.role.attribute?
  4981. & db.common.attributes
  4982. & db.common.linking.attributes
  4983. & db.label.attribute?
  4984. & db.preface.status.attribute?
  4985. db.preface.info = db._info.title.req
  4986. db.preface =
  4987. ## Introductory matter preceding the first chapter of a book
  4988. [
  4989. s:pattern [
  4990. name = "Root must have version"
  4991. "\x{a}" ~
  4992. " "
  4993. s:rule [
  4994. context = "/db:preface"
  4995. "\x{a}" ~
  4996. " "
  4997. s:assert [
  4998. test = "@version"
  4999. "If this element is the root element, it must have a version attribute."
  5000. ]
  5001. "\x{a}" ~
  5002. " "
  5003. ]
  5004. "\x{a}" ~
  5005. " "
  5006. ]
  5007. ]
  5008. element preface {
  5009. db.preface.attlist, db.preface.info, db.component.contentmodel?
  5010. }
  5011. }
  5012. div {
  5013. db.partintro.status.attribute = db.status.attribute
  5014. db.partintro.role.attribute = attribute role { text }
  5015. db.partintro.attlist =
  5016. db.partintro.role.attribute?
  5017. & db.common.attributes
  5018. & db.common.linking.attributes
  5019. & db.label.attribute?
  5020. & db.partintro.status.attribute?
  5021. db.partintro.info = db._info
  5022. db.partintro =
  5023. ## An introduction to the contents of a part
  5024. [
  5025. s:pattern [
  5026. name = "Root must have version"
  5027. "\x{a}" ~
  5028. " "
  5029. s:rule [
  5030. context = "/db:partintro"
  5031. "\x{a}" ~
  5032. " "
  5033. s:assert [
  5034. test = "@version"
  5035. "If this element is the root element, it must have a version attribute."
  5036. ]
  5037. "\x{a}" ~
  5038. " "
  5039. ]
  5040. "\x{a}" ~
  5041. " "
  5042. ]
  5043. ]
  5044. element partintro {
  5045. db.partintro.attlist,
  5046. db.partintro.info,
  5047. db.toplevel.blocks.or.sections?
  5048. }
  5049. }
  5050. div {
  5051. db.section.status.attribute = db.status.attribute
  5052. db.section.role.attribute = attribute role { text }
  5053. db.section.attlist =
  5054. db.section.role.attribute?
  5055. & db.common.attributes
  5056. & db.common.linking.attributes
  5057. & db.label.attribute?
  5058. & db.section.status.attribute?
  5059. db.section.info = db._info.title.req
  5060. db.section =
  5061. ## A recursive section
  5062. [
  5063. s:pattern [
  5064. name = "Root must have version"
  5065. "\x{a}" ~
  5066. " "
  5067. s:rule [
  5068. context = "/db:section"
  5069. "\x{a}" ~
  5070. " "
  5071. s:assert [
  5072. test = "@version"
  5073. "If this element is the root element, it must have a version attribute."
  5074. ]
  5075. "\x{a}" ~
  5076. " "
  5077. ]
  5078. "\x{a}" ~
  5079. " "
  5080. ]
  5081. ]
  5082. element section {
  5083. db.section.attlist,
  5084. db.section.info,
  5085. db.recursive.blocks.or.sections?,
  5086. db.navigation.components*
  5087. }
  5088. }
  5089. div {
  5090. db.simplesect.status.attribute = db.status.attribute
  5091. db.simplesect.role.attribute = attribute role { text }
  5092. db.simplesect.attlist =
  5093. db.simplesect.role.attribute?
  5094. & db.common.attributes
  5095. & db.common.linking.attributes
  5096. & db.label.attribute?
  5097. & db.simplesect.status.attribute?
  5098. db.simplesect.info = db._info.title.req
  5099. db.simplesect =
  5100. ## A section of a document with no subdivisions
  5101. [
  5102. s:pattern [
  5103. name = "Root must have version"
  5104. "\x{a}" ~
  5105. " "
  5106. s:rule [
  5107. context = "/db:simplesect"
  5108. "\x{a}" ~
  5109. " "
  5110. s:assert [
  5111. test = "@version"
  5112. "If this element is the root element, it must have a version attribute."
  5113. ]
  5114. "\x{a}" ~
  5115. " "
  5116. ]
  5117. "\x{a}" ~
  5118. " "
  5119. ]
  5120. ]
  5121. element simplesect {
  5122. db.simplesect.attlist, db.simplesect.info, db.all.blocks*
  5123. }
  5124. }
  5125. db.article.components = db.toplevel.sections
  5126. db.article.navcomponents =
  5127. db.navigation.components
  5128. | db.acknowledgements
  5129. | db.dedication
  5130. | db.appendix
  5131. | db.colophon
  5132. div {
  5133. db.article.status.attribute = db.status.attribute
  5134. db.article.class.enumeration =
  5135. ## A collection of frequently asked questions.
  5136. "faq"
  5137. |
  5138. ## An article in a journal or other periodical.
  5139. "journalarticle"
  5140. |
  5141. ## A description of a product.
  5142. "productsheet"
  5143. |
  5144. ## A specification.
  5145. "specification"
  5146. |
  5147. ## A technical report.
  5148. "techreport"
  5149. |
  5150. ## A white paper.
  5151. "whitepaper"
  5152. db.article.class.attribute =
  5153. ## Identifies the nature of the article
  5154. attribute class { db.article.class.enumeration }
  5155. db.article.role.attribute = attribute role { text }
  5156. db.article.attlist =
  5157. db.article.role.attribute?
  5158. & db.common.attributes
  5159. & db.common.linking.attributes
  5160. & db.label.attribute?
  5161. & db.article.status.attribute?
  5162. & db.article.class.attribute?
  5163. db.article.info = db._info.title.req
  5164. db.article =
  5165. ## An article
  5166. [
  5167. s:pattern [
  5168. name = "Root must have version"
  5169. "\x{a}" ~
  5170. " "
  5171. s:rule [
  5172. context = "/db:article"
  5173. "\x{a}" ~
  5174. " "
  5175. s:assert [
  5176. test = "@version"
  5177. "If this element is the root element, it must have a version attribute."
  5178. ]
  5179. "\x{a}" ~
  5180. " "
  5181. ]
  5182. "\x{a}" ~
  5183. " "
  5184. ]
  5185. ]
  5186. element article {
  5187. db.article.attlist,
  5188. db.article.info,
  5189. db.article.navcomponents*,
  5190. ((db.all.blocks+, db.article.components?)
  5191. | db.article.components),
  5192. db.article.navcomponents*
  5193. }
  5194. }
  5195. db.annotations.attribute =
  5196. ## Identifies one or more annotations that apply to this element
  5197. attribute annotations { text }
  5198. div {
  5199. db.annotation.role.attribute = attribute role { text }
  5200. db.annotation.annotates.attribute =
  5201. ## Identifies one ore more elements to which this annotation applies
  5202. attribute annotates { text }
  5203. db.annotation.attlist =
  5204. db.annotation.role.attribute?
  5205. & db.annotation.annotates.attribute?
  5206. & db.common.attributes
  5207. db.annotation.info = db._info.title.only
  5208. db.annotation =
  5209. ## An annotation
  5210. [
  5211. s:pattern [
  5212. name = "Element exclusion"
  5213. "\x{a}" ~
  5214. " "
  5215. s:rule [
  5216. context = "db:annotation"
  5217. "\x{a}" ~
  5218. " "
  5219. s:assert [
  5220. test = "not(.//db:annotation)"
  5221. "annotation must not occur among the children or descendants of annotation"
  5222. ]
  5223. "\x{a}" ~
  5224. " "
  5225. ]
  5226. "\x{a}" ~
  5227. " "
  5228. ]
  5229. s:pattern [
  5230. name = "Root must have version"
  5231. "\x{a}" ~
  5232. " "
  5233. s:rule [
  5234. context = "/db:annotation"
  5235. "\x{a}" ~
  5236. " "
  5237. s:assert [
  5238. test = "@version"
  5239. "If this element is the root element, it must have a version attribute."
  5240. ]
  5241. "\x{a}" ~
  5242. " "
  5243. ]
  5244. "\x{a}" ~
  5245. " "
  5246. ]
  5247. ]
  5248. element annotation {
  5249. db.annotation.attlist, db.annotation.info, db.all.blocks+
  5250. }
  5251. }
  5252. db.xlink.extended.type.attribute =
  5253. ## Identifies the XLink extended link type
  5254. [
  5255. s:pattern [
  5256. name = "XLink extended placement"
  5257. "\x{a}" ~
  5258. " "
  5259. s:rule [
  5260. context = "*[@xlink:type='extended']"
  5261. "\x{a}" ~
  5262. " "
  5263. s:assert [
  5264. test = "not(parent::*[@xlink:type='extended'])"
  5265. "An XLink extended type element may not occur as the direct child of an XLink extended type element."
  5266. ]
  5267. "\x{a}" ~
  5268. " "
  5269. ]
  5270. "\x{a}" ~
  5271. " "
  5272. ]
  5273. ]
  5274. attribute xlink:type {
  5275. ## An XLink extended link type
  5276. "extended"
  5277. }
  5278. db.xlink.locator.type.attribute =
  5279. ## Identifies the XLink locator link type
  5280. [
  5281. s:pattern [
  5282. name = "XLink locator placement"
  5283. "\x{a}" ~
  5284. " "
  5285. s:rule [
  5286. context = "*[@xlink:type='locator']"
  5287. "\x{a}" ~
  5288. " "
  5289. s:assert [
  5290. test = "not(parent::*[@xlink:type='extended'])"
  5291. "An XLink locator type element must occur as the direct child of an XLink extended type element."
  5292. ]
  5293. "\x{a}" ~
  5294. " "
  5295. ]
  5296. "\x{a}" ~
  5297. " "
  5298. ]
  5299. ]
  5300. attribute xlink:type {
  5301. ## An XLink locator link type
  5302. "locator"
  5303. }
  5304. db.xlink.arc.type.attribute =
  5305. ## Identifies the XLink arc link type
  5306. [
  5307. s:pattern [
  5308. name = "XLink arc placement"
  5309. "\x{a}" ~
  5310. " "
  5311. s:rule [
  5312. context = "*[@xlink:type='arc']"
  5313. "\x{a}" ~
  5314. " "
  5315. s:assert [
  5316. test = "parent::*[@xlink:type='extended']"
  5317. "An XLink arc type element must occur as the direct child of an XLink extended type element."
  5318. ]
  5319. "\x{a}" ~
  5320. " "
  5321. ]
  5322. "\x{a}" ~
  5323. " "
  5324. ]
  5325. ]
  5326. attribute xlink:type {
  5327. ## An XLink arc link type
  5328. "arc"
  5329. }
  5330. db.xlink.resource.type.attribute =
  5331. ## Identifies the XLink resource link type
  5332. [
  5333. s:pattern [
  5334. name = "XLink resource placement"
  5335. "\x{a}" ~
  5336. " "
  5337. s:rule [
  5338. context = "*[@xlink:type='resource']"
  5339. "\x{a}" ~
  5340. " "
  5341. s:assert [
  5342. test = "not(parent::*[@xlink:type='extended'])"
  5343. "An XLink resource type element must occur as the direct child of an XLink extended type element."
  5344. ]
  5345. "\x{a}" ~
  5346. " "
  5347. ]
  5348. "\x{a}" ~
  5349. " "
  5350. ]
  5351. ]
  5352. attribute xlink:type {
  5353. ## An XLink resource link type
  5354. "resource"
  5355. }
  5356. db.xlink.title.type.attribute =
  5357. ## Identifies the XLink title link type
  5358. [
  5359. s:pattern [
  5360. name = "XLink title placement"
  5361. "\x{a}" ~
  5362. " "
  5363. s:rule [
  5364. context = "*[@xlink:type='title']"
  5365. "\x{a}" ~
  5366. " "
  5367. s:assert [
  5368. test =
  5369. "not(parent::*[@xlink:type='extended']) and not(parent::*[@xlink:type='locator']) and not(parent::*[@xlink:type='arc'])"
  5370. "An XLink title type element must occur as the direct child of an XLink extended, locator, or arc type element."
  5371. ]
  5372. "\x{a}" ~
  5373. " "
  5374. ]
  5375. "\x{a}" ~
  5376. " "
  5377. ]
  5378. ]
  5379. attribute xlink:type {
  5380. ## An XLink title link type
  5381. "title"
  5382. }
  5383. db.xlink.extended.link.attributes =
  5384. db.xlink.extended.type.attribute
  5385. & db.xlink.role.attribute?
  5386. & db.xlink.title.attribute?
  5387. db.xlink.locator.link.attributes =
  5388. db.xlink.locator.type.attribute
  5389. & db.xlink.href.attribute
  5390. & db.xlink.role.attribute?
  5391. & db.xlink.title.attribute?
  5392. & db.xlink.label.attribute?
  5393. db.xlink.arc.link.attributes =
  5394. db.xlink.arc.type.attribute
  5395. & db.xlink.arcrole.attribute?
  5396. & db.xlink.title.attribute?
  5397. & db.xlink.show.attribute?
  5398. & db.xlink.actuate.attribute?
  5399. & db.xlink.from.attribute?
  5400. & db.xlink.to.attribute?
  5401. db.xlink.resource.link.attributes =
  5402. db.xlink.resource.type.attribute
  5403. & db.xlink.role.attribute?
  5404. & db.xlink.title.attribute?
  5405. & db.xlink.label.attribute?
  5406. db.xlink.title.link.attributes = db.xlink.title.type.attribute
  5407. db.xlink.from.attribute =
  5408. ## Specifies the XLink traversal-from
  5409. attribute xlink:from { xsd:NMTOKEN }
  5410. db.xlink.label.attribute =
  5411. ## Specifies the XLink label
  5412. attribute xlink:label { xsd:NMTOKEN }
  5413. db.xlink.to.attribute =
  5414. ## Specifies the XLink traversal-to
  5415. attribute xlink:to { xsd:NMTOKEN }
  5416. div {
  5417. db.extendedlink.role.attribute = attribute role { text }
  5418. db.extendedlink.attlist =
  5419. db.extendedlink.role.attribute?
  5420. & db.common.attributes
  5421. &
  5422. ## Identifies the XLink link type
  5423. [ a:defaultValue = "extended" ]
  5424. attribute xlink:type {
  5425. ## An XLink extended link
  5426. "extended"
  5427. }?
  5428. & db.xlink.role.attribute?
  5429. & db.xlink.title.attribute?
  5430. db.extendedlink =
  5431. ## An XLink extended link
  5432. element extendedlink {
  5433. db.extendedlink.attlist, (db.locator | db.arc | db.link)+
  5434. }
  5435. }
  5436. div {
  5437. db.locator.role.attribute = attribute role { text }
  5438. db.locator.attlist =
  5439. db.locator.role.attribute?
  5440. & db.common.attributes
  5441. &
  5442. ## Identifies the XLink link type
  5443. [ a:defaultValue = "locator" ]
  5444. attribute xlink:type {
  5445. ## An XLink locator link
  5446. "locator"
  5447. }?
  5448. & db.xlink.href.attribute
  5449. & db.xlink.role.attribute?
  5450. & db.xlink.title.attribute?
  5451. & db.xlink.label.attribute?
  5452. db.locator =
  5453. ## An XLink locator in an extendedlink
  5454. element locator { db.locator.attlist, empty }
  5455. }
  5456. div {
  5457. db.arc.role.attribute = attribute role { text }
  5458. db.arc.attlist =
  5459. db.arc.role.attribute?
  5460. & db.common.attributes
  5461. &
  5462. ## Identifies the XLink link type
  5463. [ a:defaultValue = "arc" ]
  5464. attribute xlink:type {
  5465. ## An XLink arc link
  5466. "arc"
  5467. }?
  5468. & db.xlink.arcrole.attribute?
  5469. & db.xlink.title.attribute?
  5470. & db.xlink.show.attribute?
  5471. & db.xlink.actuate.attribute?
  5472. & db.xlink.from.attribute?
  5473. & db.xlink.to.attribute?
  5474. db.arc =
  5475. ## An XLink arc in an extendedlink
  5476. element arc { db.arc.attlist, empty }
  5477. }
  5478. db.sect1.sections = (db.sect2+, db.simplesect*) | db.simplesect+
  5479. div {
  5480. db.sect1.status.attribute = db.status.attribute
  5481. db.sect1.role.attribute = attribute role { text }
  5482. db.sect1.attlist =
  5483. db.sect1.role.attribute?
  5484. & db.common.attributes
  5485. & db.common.linking.attributes
  5486. & db.label.attribute?
  5487. & db.sect1.status.attribute?
  5488. db.sect1.info = db._info.title.req
  5489. db.sect1 =
  5490. ## A top-level section of document
  5491. [
  5492. s:pattern [
  5493. name = "Root must have version"
  5494. "\x{a}" ~
  5495. " "
  5496. s:rule [
  5497. context = "/db:sect1"
  5498. "\x{a}" ~
  5499. " "
  5500. s:assert [
  5501. test = "@version"
  5502. "If this element is the root element, it must have a version attribute."
  5503. ]
  5504. "\x{a}" ~
  5505. " "
  5506. ]
  5507. "\x{a}" ~
  5508. " "
  5509. ]
  5510. ]
  5511. element sect1 {
  5512. db.sect1.attlist,
  5513. db.sect1.info,
  5514. ((db.all.blocks+, db.sect1.sections?) | db.sect1.sections)?,
  5515. db.navigation.components*
  5516. }
  5517. }
  5518. db.sect2.sections = (db.sect3+, db.simplesect*) | db.simplesect+
  5519. div {
  5520. db.sect2.status.attribute = db.status.attribute
  5521. db.sect2.role.attribute = attribute role { text }
  5522. db.sect2.attlist =
  5523. db.sect2.role.attribute?
  5524. & db.common.attributes
  5525. & db.common.linking.attributes
  5526. & db.label.attribute?
  5527. & db.sect2.status.attribute?
  5528. db.sect2.info = db._info.title.req
  5529. db.sect2 =
  5530. ## A subsection within a sect1
  5531. [
  5532. s:pattern [
  5533. name = "Root must have version"
  5534. "\x{a}" ~
  5535. " "
  5536. s:rule [
  5537. context = "/db:sect2"
  5538. "\x{a}" ~
  5539. " "
  5540. s:assert [
  5541. test = "@version"
  5542. "If this element is the root element, it must have a version attribute."
  5543. ]
  5544. "\x{a}" ~
  5545. " "
  5546. ]
  5547. "\x{a}" ~
  5548. " "
  5549. ]
  5550. ]
  5551. element sect2 {
  5552. db.sect2.attlist,
  5553. db.sect2.info,
  5554. ((db.all.blocks+, db.sect2.sections?) | db.sect2.sections)?,
  5555. db.navigation.components*
  5556. }
  5557. }
  5558. db.sect3.sections = (db.sect4+, db.simplesect*) | db.simplesect+
  5559. div {
  5560. db.sect3.status.attribute = db.status.attribute
  5561. db.sect3.role.attribute = attribute role { text }
  5562. db.sect3.attlist =
  5563. db.sect3.role.attribute?
  5564. & db.common.attributes
  5565. & db.common.linking.attributes
  5566. & db.label.attribute?
  5567. & db.sect3.status.attribute?
  5568. db.sect3.info = db._info.title.req
  5569. db.sect3 =
  5570. ## A subsection within a sect2
  5571. [
  5572. s:pattern [
  5573. name = "Root must have version"
  5574. "\x{a}" ~
  5575. " "
  5576. s:rule [
  5577. context = "/db:sect3"
  5578. "\x{a}" ~
  5579. " "
  5580. s:assert [
  5581. test = "@version"
  5582. "If this element is the root element, it must have a version attribute."
  5583. ]
  5584. "\x{a}" ~
  5585. " "
  5586. ]
  5587. "\x{a}" ~
  5588. " "
  5589. ]
  5590. ]
  5591. element sect3 {
  5592. db.sect3.attlist,
  5593. db.sect3.info,
  5594. ((db.all.blocks+, db.sect3.sections?) | db.sect3.sections)?,
  5595. db.navigation.components*
  5596. }
  5597. }
  5598. db.sect4.sections = (db.sect5+, db.simplesect*) | db.simplesect+
  5599. div {
  5600. db.sect4.status.attribute = db.status.attribute
  5601. db.sect4.role.attribute = attribute role { text }
  5602. db.sect4.attlist =
  5603. db.sect4.role.attribute?
  5604. & db.common.attributes
  5605. & db.common.linking.attributes
  5606. & db.label.attribute?
  5607. & db.sect4.status.attribute?
  5608. db.sect4.info = db._info.title.req
  5609. db.sect4 =
  5610. ## A subsection within a sect3
  5611. [
  5612. s:pattern [
  5613. name = "Root must have version"
  5614. "\x{a}" ~
  5615. " "
  5616. s:rule [
  5617. context = "/db:sect4"
  5618. "\x{a}" ~
  5619. " "
  5620. s:assert [
  5621. test = "@version"
  5622. "If this element is the root element, it must have a version attribute."
  5623. ]
  5624. "\x{a}" ~
  5625. " "
  5626. ]
  5627. "\x{a}" ~
  5628. " "
  5629. ]
  5630. ]
  5631. element sect4 {
  5632. db.sect4.attlist,
  5633. db.sect4.info,
  5634. ((db.all.blocks+, db.sect4.sections?) | db.sect4.sections)?,
  5635. db.navigation.components*
  5636. }
  5637. }
  5638. db.sect5.sections = db.simplesect+
  5639. div {
  5640. db.sect5.status.attribute = db.status.attribute
  5641. db.sect5.role.attribute = attribute role { text }
  5642. db.sect5.attlist =
  5643. db.sect5.role.attribute?
  5644. & db.common.attributes
  5645. & db.common.linking.attributes
  5646. & db.label.attribute?
  5647. & db.sect5.status.attribute?
  5648. db.sect5.info = db._info.title.req
  5649. db.sect5 =
  5650. ## A subsection within a sect4
  5651. [
  5652. s:pattern [
  5653. name = "Root must have version"
  5654. "\x{a}" ~
  5655. " "
  5656. s:rule [
  5657. context = "/db:sect5"
  5658. "\x{a}" ~
  5659. " "
  5660. s:assert [
  5661. test = "@version"
  5662. "If this element is the root element, it must have a version attribute."
  5663. ]
  5664. "\x{a}" ~
  5665. " "
  5666. ]
  5667. "\x{a}" ~
  5668. " "
  5669. ]
  5670. ]
  5671. element sect5 {
  5672. db.sect5.attlist,
  5673. db.sect5.info,
  5674. ((db.all.blocks+, db.sect5.sections?) | db.sect5.sections)?,
  5675. db.navigation.components*
  5676. }
  5677. }
  5678. db.toplevel.refsection = db.refsection+ | db.refsect1+
  5679. db.secondlevel.refsection = db.refsection+ | db.refsect2+
  5680. db.reference.components = db.refentry
  5681. div {
  5682. db.reference.status.attribute = db.status.attribute
  5683. db.reference.role.attribute = attribute role { text }
  5684. db.reference.attlist =
  5685. db.reference.role.attribute?
  5686. & db.common.attributes
  5687. & db.common.linking.attributes
  5688. & db.reference.status.attribute?
  5689. & db.label.attribute?
  5690. db.reference.info = db._info.title.req
  5691. db.reference =
  5692. ## A collection of reference entries
  5693. [
  5694. s:pattern [
  5695. name = "Root must have version"
  5696. "\x{a}" ~
  5697. " "
  5698. s:rule [
  5699. context = "/db:reference"
  5700. "\x{a}" ~
  5701. " "
  5702. s:assert [
  5703. test = "@version"
  5704. "If this element is the root element, it must have a version attribute."
  5705. ]
  5706. "\x{a}" ~
  5707. " "
  5708. ]
  5709. "\x{a}" ~
  5710. " "
  5711. ]
  5712. ]
  5713. element reference {
  5714. db.reference.attlist,
  5715. db.reference.info,
  5716. db.partintro?,
  5717. db.reference.components*
  5718. }
  5719. }
  5720. div {
  5721. db.refentry.status.attribute = db.status.attribute
  5722. db.refentry.role.attribute = attribute role { text }
  5723. db.refentry.attlist =
  5724. db.refentry.role.attribute?
  5725. & db.common.attributes
  5726. & db.common.linking.attributes
  5727. & db.refentry.status.attribute?
  5728. & db.label.attribute?
  5729. db.refentry.info = db._info.title.forbidden
  5730. db.refentry =
  5731. ## A reference page (originally a UNIX man-style reference page)
  5732. [
  5733. s:pattern [
  5734. name = "Root must have version"
  5735. "\x{a}" ~
  5736. " "
  5737. s:rule [
  5738. context = "/db:refentry"
  5739. "\x{a}" ~
  5740. " "
  5741. s:assert [
  5742. test = "@version"
  5743. "If this element is the root element, it must have a version attribute."
  5744. ]
  5745. "\x{a}" ~
  5746. " "
  5747. ]
  5748. "\x{a}" ~
  5749. " "
  5750. ]
  5751. ]
  5752. element refentry {
  5753. db.refentry.attlist,
  5754. db.indexterm*,
  5755. db.refentry.info,
  5756. db.refmeta?,
  5757. db.refnamediv+,
  5758. db.refsynopsisdiv?,
  5759. db.toplevel.refsection
  5760. }
  5761. }
  5762. div {
  5763. db.refmeta.role.attribute = attribute role { text }
  5764. db.refmeta.attlist =
  5765. db.refmeta.role.attribute?
  5766. & db.common.attributes
  5767. & db.common.linking.attributes
  5768. db.refmeta =
  5769. ## Meta-information for a reference entry
  5770. element refmeta {
  5771. db.refmeta.attlist,
  5772. db.indexterm*,
  5773. db.refentrytitle,
  5774. db.manvolnum?,
  5775. db.refmiscinfo*,
  5776. db.indexterm*
  5777. }
  5778. }
  5779. db.refmiscinfo.class.enumeration =
  5780. ## The name of the software product or component to which this topic applies
  5781. "source"
  5782. |
  5783. ## The version of the software product or component to which this topic applies
  5784. "version"
  5785. |
  5786. ## The section title of the reference page (e.g., User Commands)
  5787. "manual"
  5788. |
  5789. ## The section title of the reference page (believed synonymous with "manual" but in wide use)
  5790. "sectdesc"
  5791. |
  5792. ## The name of the software product or component to which this topic applies (e.g., SunOS x.y; believed synonymous with "source" but in wide use)
  5793. "software"
  5794. db.refmiscinfo.class-enum.attribute =
  5795. ## Identifies the kind of miscellaneous information
  5796. attribute class { db.refmiscinfo.class.enumeration }?
  5797. db.refmiscinfo.class-other.attribute =
  5798. ## Identifies the nature of non-standard miscellaneous information
  5799. attribute otherclass { text }
  5800. db.refmiscinfo.class-other.attributes =
  5801. ## Identifies the kind of miscellaneious information
  5802. attribute class {
  5803. ## Indicates that the information is some 'other' kind.
  5804. "other"
  5805. }
  5806. & db.refmiscinfo.class-other.attribute
  5807. db.refmiscinfo.class.attribute =
  5808. db.refmiscinfo.class-enum.attribute
  5809. | db.refmiscinfo.class-other.attributes
  5810. div {
  5811. db.refmiscinfo.role.attribute = attribute role { text }
  5812. db.refmiscinfo.attlist =
  5813. db.refmiscinfo.role.attribute?
  5814. & db.common.attributes
  5815. & db.common.linking.attributes
  5816. & db.refmiscinfo.class.attribute?
  5817. db.refmiscinfo =
  5818. ## Meta-information for a reference entry other than the title and volume number
  5819. element refmiscinfo { db.refmiscinfo.attlist, db._text }
  5820. }
  5821. div {
  5822. db.refnamediv.role.attribute = attribute role { text }
  5823. db.refnamediv.attlist =
  5824. db.refnamediv.role.attribute?
  5825. & db.common.attributes
  5826. & db.common.linking.attributes
  5827. db.refnamediv =
  5828. ## The name, purpose, and classification of a reference page
  5829. element refnamediv {
  5830. db.refnamediv.attlist,
  5831. db.refdescriptor?,
  5832. db.refname+,
  5833. db.refpurpose,
  5834. db.refclass*
  5835. }
  5836. }
  5837. div {
  5838. db.refdescriptor.role.attribute = attribute role { text }
  5839. db.refdescriptor.attlist =
  5840. db.refdescriptor.role.attribute?
  5841. & db.common.attributes
  5842. & db.common.linking.attributes
  5843. db.refdescriptor =
  5844. ## A description of the topic of a reference page
  5845. element refdescriptor { db.refdescriptor.attlist, db.all.inlines* }
  5846. }
  5847. div {
  5848. db.refname.role.attribute = attribute role { text }
  5849. db.refname.attlist =
  5850. db.refname.role.attribute?
  5851. & db.common.attributes
  5852. & db.common.linking.attributes
  5853. db.refname =
  5854. ## The name of (one of) the subject(s) of a reference page
  5855. element refname { db.refname.attlist, db.all.inlines* }
  5856. }
  5857. div {
  5858. db.refpurpose.role.attribute = attribute role { text }
  5859. db.refpurpose.attlist =
  5860. db.refpurpose.role.attribute?
  5861. & db.common.attributes
  5862. & db.common.linking.attributes
  5863. db.refpurpose =
  5864. ## A short (one sentence) synopsis of the topic of a reference page
  5865. element refpurpose { db.refpurpose.attlist, db.all.inlines* }
  5866. }
  5867. div {
  5868. db.refclass.role.attribute = attribute role { text }
  5869. db.refclass.attlist =
  5870. db.refclass.role.attribute?
  5871. & db.common.attributes
  5872. & db.common.linking.attributes
  5873. db.refclass =
  5874. ## The scope or other indication of applicability of a reference entry
  5875. element refclass { db.refclass.attlist, (text | db.application)* }
  5876. }
  5877. div {
  5878. db.refsynopsisdiv.role.attribute = attribute role { text }
  5879. db.refsynopsisdiv.attlist =
  5880. db.refsynopsisdiv.role.attribute?
  5881. & db.common.attributes
  5882. & db.common.linking.attributes
  5883. db.refsynopsisdiv.info = db._info
  5884. db.refsynopsisdiv =
  5885. ## A syntactic synopsis of the subject of the reference page
  5886. [
  5887. s:pattern [
  5888. name = "Root must have version"
  5889. "\x{a}" ~
  5890. " "
  5891. s:rule [
  5892. context = "/db:refsynopsisdiv"
  5893. "\x{a}" ~
  5894. " "
  5895. s:assert [
  5896. test = "@version"
  5897. "If this element is the root element, it must have a version attribute."
  5898. ]
  5899. "\x{a}" ~
  5900. " "
  5901. ]
  5902. "\x{a}" ~
  5903. " "
  5904. ]
  5905. ]
  5906. element refsynopsisdiv {
  5907. db.refsynopsisdiv.attlist,
  5908. db.refsynopsisdiv.info,
  5909. ((db.all.blocks+, db.secondlevel.refsection?)
  5910. | db.secondlevel.refsection)
  5911. }
  5912. }
  5913. div {
  5914. db.refsection.status.attribute = db.status.attribute
  5915. db.refsection.role.attribute = attribute role { text }
  5916. db.refsection.attlist =
  5917. db.refsection.role.attribute?
  5918. & db.common.attributes
  5919. & db.common.linking.attributes
  5920. & db.refsection.status.attribute?
  5921. & db.label.attribute?
  5922. db.refsection.info = db._info.title.req
  5923. db.refsection =
  5924. ## A recursive section in a refentry
  5925. [
  5926. s:pattern [
  5927. name = "Root must have version"
  5928. "\x{a}" ~
  5929. " "
  5930. s:rule [
  5931. context = "/db:refsection"
  5932. "\x{a}" ~
  5933. " "
  5934. s:assert [
  5935. test = "@version"
  5936. "If this element is the root element, it must have a version attribute."
  5937. ]
  5938. "\x{a}" ~
  5939. " "
  5940. ]
  5941. "\x{a}" ~
  5942. " "
  5943. ]
  5944. ]
  5945. element refsection {
  5946. db.refsection.attlist,
  5947. db.refsection.info,
  5948. ((db.all.blocks+, db.refsection*) | db.refsection+)
  5949. }
  5950. }
  5951. db.refsect1.sections = db.refsect2+
  5952. div {
  5953. db.refsect1.status.attribute = db.status.attribute
  5954. db.refsect1.role.attribute = attribute role { text }
  5955. db.refsect1.attlist =
  5956. db.refsect1.role.attribute?
  5957. & db.common.attributes
  5958. & db.common.linking.attributes
  5959. & db.label.attribute?
  5960. & db.refsect1.status.attribute?
  5961. db.refsect1.info = db._info.title.req
  5962. db.refsect1 =
  5963. ## A major subsection of a reference entry
  5964. [
  5965. s:pattern [
  5966. name = "Root must have version"
  5967. "\x{a}" ~
  5968. " "
  5969. s:rule [
  5970. context = "/db:refsect1"
  5971. "\x{a}" ~
  5972. " "
  5973. s:assert [
  5974. test = "@version"
  5975. "If this element is the root element, it must have a version attribute."
  5976. ]
  5977. "\x{a}" ~
  5978. " "
  5979. ]
  5980. "\x{a}" ~
  5981. " "
  5982. ]
  5983. ]
  5984. element refsect1 {
  5985. db.refsect1.attlist,
  5986. db.refsect1.info,
  5987. ((db.all.blocks+, db.refsect1.sections?) | db.refsect1.sections)
  5988. }
  5989. }
  5990. db.refsect2.sections = db.refsect3+
  5991. div {
  5992. db.refsect2.status.attribute = db.status.attribute
  5993. db.refsect2.role.attribute = attribute role { text }
  5994. db.refsect2.attlist =
  5995. db.refsect2.role.attribute?
  5996. & db.common.attributes
  5997. & db.common.linking.attributes
  5998. & db.label.attribute?
  5999. & db.refsect2.status.attribute?
  6000. db.refsect2.info = db._info.title.req
  6001. db.refsect2 =
  6002. ## A subsection of a refsect1
  6003. [
  6004. s:pattern [
  6005. name = "Root must have version"
  6006. "\x{a}" ~
  6007. " "
  6008. s:rule [
  6009. context = "/db:refsect2"
  6010. "\x{a}" ~
  6011. " "
  6012. s:assert [
  6013. test = "@version"
  6014. "If this element is the root element, it must have a version attribute."
  6015. ]
  6016. "\x{a}" ~
  6017. " "
  6018. ]
  6019. "\x{a}" ~
  6020. " "
  6021. ]
  6022. ]
  6023. element refsect2 {
  6024. db.refsect2.attlist,
  6025. db.refsect2.info,
  6026. ((db.all.blocks+, db.refsect2.sections?) | db.refsect2.sections)
  6027. }
  6028. }
  6029. div {
  6030. db.refsect3.status.attribute = db.status.attribute
  6031. db.refsect3.role.attribute = attribute role { text }
  6032. db.refsect3.attlist =
  6033. db.refsect3.role.attribute?
  6034. & db.common.attributes
  6035. & db.common.linking.attributes
  6036. & db.label.attribute?
  6037. & db.refsect3.status.attribute?
  6038. db.refsect3.info = db._info.title.req
  6039. db.refsect3 =
  6040. ## A subsection of a refsect2
  6041. [
  6042. s:pattern [
  6043. name = "Root must have version"
  6044. "\x{a}" ~
  6045. " "
  6046. s:rule [
  6047. context = "/db:refsect3"
  6048. "\x{a}" ~
  6049. " "
  6050. s:assert [
  6051. test = "@version"
  6052. "If this element is the root element, it must have a version attribute."
  6053. ]
  6054. "\x{a}" ~
  6055. " "
  6056. ]
  6057. "\x{a}" ~
  6058. " "
  6059. ]
  6060. ]
  6061. element refsect3 {
  6062. db.refsect3.attlist, db.refsect3.info, db.all.blocks+
  6063. }
  6064. }
  6065. db.glossary.inlines =
  6066. db.firstterm | db.glossterm | db._firstterm | db._glossterm
  6067. db.baseform.attribute =
  6068. ## Specifies the base form of the term, the one that appears in the glossary. This allows adjectival, plural, and other variations of the term to appear in the element. The element content is the default base form.
  6069. attribute baseform { text }?
  6070. div {
  6071. db.glosslist.role.attribute = attribute role { text }
  6072. db.glosslist.attlist =
  6073. db.glosslist.role.attribute?
  6074. & db.common.attributes
  6075. & db.common.linking.attributes
  6076. db.glosslist.info = db._info.title.only
  6077. db.glosslist =
  6078. ## A wrapper for a list of glossary entries
  6079. [
  6080. s:pattern [
  6081. name = "Root must have version"
  6082. "\x{a}" ~
  6083. " "
  6084. s:rule [
  6085. context = "/db:glosslist"
  6086. "\x{a}" ~
  6087. " "
  6088. s:assert [
  6089. test = "@version"
  6090. "If this element is the root element, it must have a version attribute."
  6091. ]
  6092. "\x{a}" ~
  6093. " "
  6094. ]
  6095. "\x{a}" ~
  6096. " "
  6097. ]
  6098. ]
  6099. element glosslist {
  6100. db.glosslist.attlist,
  6101. db.glosslist.info?,
  6102. db.all.blocks*,
  6103. db.glossentry+
  6104. }
  6105. }
  6106. div {
  6107. db.glossentry.role.attribute = attribute role { text }
  6108. db.glossentry.sortas.attribute =
  6109. ## Specifies the string by which the element's content is to be sorted; if unspecified, the content is used
  6110. attribute sortas { text }
  6111. db.glossentry.attlist =
  6112. db.glossentry.role.attribute?
  6113. & db.common.attributes
  6114. & db.common.linking.attributes
  6115. & db.glossentry.sortas.attribute?
  6116. db.glossentry =
  6117. ## An entry in a glossary or glosslist
  6118. element glossentry {
  6119. db.glossentry.attlist,
  6120. db.glossterm,
  6121. db.acronym?,
  6122. db.abbrev?,
  6123. db.indexterm*,
  6124. (db.glosssee | db.glossdef+)
  6125. }
  6126. }
  6127. div {
  6128. db.glossdef.role.attribute = attribute role { text }
  6129. db.glossdef.subject.attribute =
  6130. ## Specifies a list of keywords for the definition
  6131. attribute subject { text }
  6132. db.glossdef.attlist =
  6133. db.glossdef.role.attribute?
  6134. & db.common.attributes
  6135. & db.common.linking.attributes
  6136. & db.glossdef.subject.attribute?
  6137. db.glossdef =
  6138. ## A definition in a glossentry
  6139. element glossdef {
  6140. db.glossdef.attlist, db.all.blocks+, db.glossseealso*
  6141. }
  6142. }
  6143. div {
  6144. db.glosssee.role.attribute = attribute role { text }
  6145. db.glosssee.otherterm.attribute =
  6146. ## Identifies the other term
  6147. attribute otherterm { xsd:IDREF }
  6148. db.glosssee.attlist =
  6149. db.glosssee.role.attribute?
  6150. & db.common.attributes
  6151. & db.common.linking.attributes
  6152. & db.glosssee.otherterm.attribute?
  6153. db.glosssee =
  6154. ## A cross-reference from one glossentry
  6155. ## to another
  6156. [
  6157. s:pattern [
  6158. name = "Glosssary 'see' type constraint"
  6159. "\x{a}" ~
  6160. " "
  6161. s:rule [
  6162. context = "db:glosssee[@otherterm]"
  6163. "\x{a}" ~
  6164. " "
  6165. s:assert [
  6166. test =
  6167. "local-name(//*[@xml:id=current()/@otherterm]) = 'glossentry' and namespace-uri(//*[@xml:id=current()/@otherterm]) = 'http://docbook.org/ns/docbook'"
  6168. "@otherterm on glosssee must point to a glossentry."
  6169. ]
  6170. "\x{a}" ~
  6171. " "
  6172. ]
  6173. "\x{a}" ~
  6174. " "
  6175. ]
  6176. ]
  6177. element glosssee { db.glosssee.attlist, db.all.inlines* }
  6178. }
  6179. div {
  6180. db.glossseealso.role.attribute = attribute role { text }
  6181. db.glossseealso.otherterm.attribute =
  6182. ## Identifies the other term
  6183. attribute otherterm { xsd:IDREF }
  6184. db.glossseealso.attlist =
  6185. db.glossseealso.role.attribute?
  6186. & db.common.attributes
  6187. & db.common.linking.attributes
  6188. & db.glossseealso.otherterm.attribute?
  6189. db.glossseealso =
  6190. ## A cross-reference from one glossentry to another
  6191. [
  6192. s:pattern [
  6193. name = "Glossary 'seealso' type constraint"
  6194. "\x{a}" ~
  6195. " "
  6196. s:rule [
  6197. context = "db:glossseealso[@otherterm]"
  6198. "\x{a}" ~
  6199. " "
  6200. s:assert [
  6201. test =
  6202. "local-name(//*[@xml:id=current()/@otherterm]) = 'glossentry' and namespace-uri(//*[@xml:id=current()/@otherterm]) = 'http://docbook.org/ns/docbook'"
  6203. "@otherterm on glossseealso must point to a glossentry."
  6204. ]
  6205. "\x{a}" ~
  6206. " "
  6207. ]
  6208. "\x{a}" ~
  6209. " "
  6210. ]
  6211. ]
  6212. element glossseealso { db.glossseealso.attlist, db.all.inlines* }
  6213. }
  6214. div {
  6215. db.firstterm.role.attribute = attribute role { text }
  6216. db.firstterm.attlist =
  6217. db.firstterm.role.attribute?
  6218. & db.common.attributes
  6219. & db.common.linking.attributes
  6220. & db.baseform.attribute
  6221. db.firstterm =
  6222. ## The first occurrence of a term
  6223. [
  6224. s:pattern [
  6225. name = "Glossary 'firstterm' type constraint"
  6226. "\x{a}" ~
  6227. " "
  6228. s:rule [
  6229. context = "db:firstterm[@linkend]"
  6230. "\x{a}" ~
  6231. " "
  6232. s:assert [
  6233. test =
  6234. "local-name(//*[@xml:id=current()/@linkend]) = 'glossentry' and namespace-uri(//*[@xml:id=current()/@linkend]) = 'http://docbook.org/ns/docbook'"
  6235. "@linkend on firstterm must point to a glossentry."
  6236. ]
  6237. "\x{a}" ~
  6238. " "
  6239. ]
  6240. "\x{a}" ~
  6241. " "
  6242. ]
  6243. ]
  6244. element firstterm { db.firstterm.attlist, db.all.inlines* }
  6245. }
  6246. div {
  6247. db._firstterm.role.attribute = attribute role { text }
  6248. db._firstterm.attlist =
  6249. db._firstterm.role.attribute?
  6250. & db.common.attributes
  6251. & db.common.linking.attributes
  6252. & db.baseform.attribute
  6253. db._firstterm =
  6254. ## The first occurrence of a term, with limited content
  6255. [
  6256. s:pattern [
  6257. name = "Glossary 'firstterm' type constraint"
  6258. "\x{a}" ~
  6259. " "
  6260. s:rule [
  6261. context = "db:firstterm[@linkend]"
  6262. "\x{a}" ~
  6263. " "
  6264. s:assert [
  6265. test =
  6266. "local-name(//*[@xml:id=current()/@linkend]) = 'glossentry' and namespace-uri(//*[@xml:id=current()/@linkend]) = 'http://docbook.org/ns/docbook'"
  6267. "@linkend on firstterm must point to a glossentry."
  6268. ]
  6269. "\x{a}" ~
  6270. " "
  6271. ]
  6272. "\x{a}" ~
  6273. " "
  6274. ]
  6275. ]
  6276. element firstterm { db._firstterm.attlist, db._text }
  6277. }
  6278. div {
  6279. db.glossterm.role.attribute = attribute role { text }
  6280. db.glossterm.attlist =
  6281. db.glossterm.role.attribute?
  6282. & db.common.attributes
  6283. & db.common.linking.attributes
  6284. & db.baseform.attribute
  6285. db.glossterm =
  6286. ## A glossary term
  6287. [
  6288. s:pattern [
  6289. name = "Glossary 'glossterm' type constraint"
  6290. "\x{a}" ~
  6291. " "
  6292. s:rule [
  6293. context = "db:glossterm[@linkend]"
  6294. "\x{a}" ~
  6295. " "
  6296. s:assert [
  6297. test =
  6298. "local-name(//*[@xml:id=current()/@linkend]) = 'glossentry' and namespace-uri(//*[@xml:id=current()/@linkend]) = 'http://docbook.org/ns/docbook'"
  6299. "@linkend on glossterm must point to a glossentry."
  6300. ]
  6301. "\x{a}" ~
  6302. " "
  6303. ]
  6304. "\x{a}" ~
  6305. " "
  6306. ]
  6307. ]
  6308. element glossterm { db.glossterm.attlist, db.all.inlines* }
  6309. }
  6310. div {
  6311. db._glossterm.role.attribute = attribute role { text }
  6312. db._glossterm.attlist =
  6313. db._glossterm.role.attribute?
  6314. & db.common.attributes
  6315. & db.common.linking.attributes
  6316. & db.baseform.attribute
  6317. db._glossterm =
  6318. ## A glossary term
  6319. [
  6320. s:pattern [
  6321. name = "Glossary 'glossterm' type constraint"
  6322. "\x{a}" ~
  6323. " "
  6324. s:rule [
  6325. context = "db:glossterm[@linkend]"
  6326. "\x{a}" ~
  6327. " "
  6328. s:assert [
  6329. test =
  6330. "local-name(//*[@xml:id=current()/@linkend]) = 'glossentry' and namespace-uri(//*[@xml:id=current()/@linkend]) = 'http://docbook.org/ns/docbook'"
  6331. "@linkend on glossterm must point to a glossentry."
  6332. ]
  6333. "\x{a}" ~
  6334. " "
  6335. ]
  6336. "\x{a}" ~
  6337. " "
  6338. ]
  6339. ]
  6340. element glossterm { db._glossterm.attlist, db._text }
  6341. }
  6342. div {
  6343. db.glossary.status.attribute = db.status.attribute
  6344. db.glossary.role.attribute = attribute role { text }
  6345. db.glossary.attlist =
  6346. db.glossary.role.attribute?
  6347. & db.common.attributes
  6348. & db.common.linking.attributes
  6349. & db.label.attribute?
  6350. & db.glossary.status.attribute?
  6351. db.glossary.info = db._info
  6352. db.glossary =
  6353. ## A glossary
  6354. [
  6355. s:pattern [
  6356. name = "Root must have version"
  6357. "\x{a}" ~
  6358. " "
  6359. s:rule [
  6360. context = "/db:glossary"
  6361. "\x{a}" ~
  6362. " "
  6363. s:assert [
  6364. test = "@version"
  6365. "If this element is the root element, it must have a version attribute."
  6366. ]
  6367. "\x{a}" ~
  6368. " "
  6369. ]
  6370. "\x{a}" ~
  6371. " "
  6372. ]
  6373. ]
  6374. element glossary {
  6375. db.glossary.attlist,
  6376. db.glossary.info,
  6377. db.all.blocks*,
  6378. (db.glossdiv* | db.glossentry*),
  6379. db.bibliography?
  6380. }
  6381. }
  6382. div {
  6383. db.glossdiv.status.attribute = db.status.attribute
  6384. db.glossdiv.role.attribute = attribute role { text }
  6385. db.glossdiv.attlist =
  6386. db.glossdiv.role.attribute?
  6387. & db.common.attributes
  6388. & db.common.linking.attributes
  6389. & db.label.attribute?
  6390. & db.glossdiv.status.attribute?
  6391. db.glossdiv.info = db._info.title.req
  6392. db.glossdiv =
  6393. ## A division in a glossary
  6394. [
  6395. s:pattern [
  6396. name = "Root must have version"
  6397. "\x{a}" ~
  6398. " "
  6399. s:rule [
  6400. context = "/db:glossdiv"
  6401. "\x{a}" ~
  6402. " "
  6403. s:assert [
  6404. test = "@version"
  6405. "If this element is the root element, it must have a version attribute."
  6406. ]
  6407. "\x{a}" ~
  6408. " "
  6409. ]
  6410. "\x{a}" ~
  6411. " "
  6412. ]
  6413. ]
  6414. element glossdiv {
  6415. db.glossdiv.attlist,
  6416. db.glossdiv.info,
  6417. db.all.blocks*,
  6418. db.glossentry+
  6419. }
  6420. }
  6421. div {
  6422. db.termdef.role.attribute = attribute role { text }
  6423. db.termdef.attlist =
  6424. db.termdef.role.attribute?
  6425. & db.glossentry.sortas.attribute?
  6426. & db.common.attributes
  6427. & db.common.linking.attributes
  6428. & db.baseform.attribute
  6429. db.termdef =
  6430. ## An inline definition of a term
  6431. [
  6432. s:pattern [
  6433. name = "Glossary term definition constraint"
  6434. "\x{a}" ~
  6435. " "
  6436. s:rule [
  6437. context = "db:termdef"
  6438. "\x{a}" ~
  6439. " "
  6440. s:assert [
  6441. test = "count(db:firstterm) = 1"
  6442. "A termdef must contain exactly one firstterm"
  6443. ]
  6444. "\x{a}" ~
  6445. " "
  6446. ]
  6447. "\x{a}" ~
  6448. " "
  6449. ]
  6450. ]
  6451. element termdef { db.termdef.attlist, db.all.inlines* }
  6452. }
  6453. db.relation.attribute =
  6454. ## Identifies the relationship between the bibliographic elemnts
  6455. attribute relation { text }
  6456. div {
  6457. db.biblioentry.role.attribute = attribute role { text }
  6458. db.biblioentry.attlist =
  6459. db.biblioentry.role.attribute?
  6460. & db.common.attributes
  6461. & db.common.linking.attributes
  6462. db.biblioentry =
  6463. ## A raw entry in a bibliography
  6464. element biblioentry {
  6465. db.biblioentry.attlist, db.bibliographic.elements+
  6466. }
  6467. }
  6468. div {
  6469. db.bibliomixed.role.attribute = attribute role { text }
  6470. db.bibliomixed.attlist =
  6471. db.bibliomixed.role.attribute?
  6472. & db.common.attributes
  6473. & db.common.linking.attributes
  6474. db.bibliomixed =
  6475. ## A cooked entry in a bibliography
  6476. element bibliomixed {
  6477. db.bibliomixed.attlist,
  6478. ((db._text
  6479. | db.honorific
  6480. | db.firstname
  6481. | db.surname
  6482. | db.lineage
  6483. | db.othername
  6484. | db.bibliographic.elements)*
  6485. | (db._text
  6486. | db.honorific
  6487. | db.givenname
  6488. | db.surname
  6489. | db.lineage
  6490. | db.othername
  6491. | db.bibliographic.elements)*)
  6492. }
  6493. }
  6494. div {
  6495. db.biblioset.relation.attribute = db.relation.attribute
  6496. db.biblioset.role.attribute = attribute role { text }
  6497. db.biblioset.attlist =
  6498. db.biblioset.role.attribute?
  6499. & db.common.attributes
  6500. & db.common.linking.attributes
  6501. & db.biblioset.relation.attribute?
  6502. db.biblioset =
  6503. ## A raw container for related bibliographic information
  6504. element biblioset {
  6505. db.biblioset.attlist, db.bibliographic.elements+
  6506. }
  6507. }
  6508. div {
  6509. db.bibliomset.relation.attribute = db.relation.attribute
  6510. db.bibliomset.role.attribute = attribute role { text }
  6511. db.bibliomset.attlist =
  6512. db.bibliomset.role.attribute?
  6513. & db.common.attributes
  6514. & db.common.linking.attributes
  6515. & db.bibliomset.relation.attribute?
  6516. db.bibliomset =
  6517. ## A cooked container for related bibliographic information
  6518. element bibliomset {
  6519. db.bibliomset.attlist,
  6520. ((db._text
  6521. | db.honorific
  6522. | db.firstname
  6523. | db.surname
  6524. | db.lineage
  6525. | db.othername
  6526. | db.bibliographic.elements)*
  6527. | (db._text
  6528. | db.honorific
  6529. | db.givenname
  6530. | db.surname
  6531. | db.lineage
  6532. | db.othername
  6533. | db.bibliographic.elements)*)
  6534. }
  6535. }
  6536. div {
  6537. db.bibliomisc.role.attribute = attribute role { text }
  6538. db.bibliomisc.attlist =
  6539. db.bibliomisc.role.attribute?
  6540. & db.common.attributes
  6541. & db.common.linking.attributes
  6542. db.bibliomisc =
  6543. ## Untyped bibliographic information
  6544. element bibliomisc { db.bibliomisc.attlist, db._text }
  6545. }
  6546. div {
  6547. db.bibliography.status.attrib = db.status.attribute
  6548. db.bibliography.role.attribute = attribute role { text }
  6549. db.bibliography.attlist =
  6550. db.bibliography.role.attribute?
  6551. & db.common.attributes
  6552. & db.common.linking.attributes
  6553. & db.label.attribute?
  6554. & db.bibliography.status.attrib?
  6555. db.bibliography.info = db._info
  6556. db.bibliography =
  6557. ## A bibliography
  6558. [
  6559. s:pattern [
  6560. name = "Root must have version"
  6561. "\x{a}" ~
  6562. " "
  6563. s:rule [
  6564. context = "/db:bibliography"
  6565. "\x{a}" ~
  6566. " "
  6567. s:assert [
  6568. test = "@version"
  6569. "If this element is the root element, it must have a version attribute."
  6570. ]
  6571. "\x{a}" ~
  6572. " "
  6573. ]
  6574. "\x{a}" ~
  6575. " "
  6576. ]
  6577. ]
  6578. element bibliography {
  6579. db.bibliography.attlist,
  6580. db.bibliography.info,
  6581. db.all.blocks*,
  6582. (db.bibliodiv+ | (db.biblioentry | db.bibliomixed)+)
  6583. }
  6584. }
  6585. div {
  6586. db.bibliodiv.status.attrib = db.status.attribute
  6587. db.bibliodiv.role.attribute = attribute role { text }
  6588. db.bibliodiv.attlist =
  6589. db.bibliodiv.role.attribute?
  6590. & db.common.attributes
  6591. & db.common.linking.attributes
  6592. & db.label.attribute?
  6593. & db.bibliodiv.status.attrib?
  6594. db.bibliodiv.info = db._info.title.req
  6595. db.bibliodiv =
  6596. ## A section of a bibliography
  6597. [
  6598. s:pattern [
  6599. name = "Root must have version"
  6600. "\x{a}" ~
  6601. " "
  6602. s:rule [
  6603. context = "/db:bibliodiv"
  6604. "\x{a}" ~
  6605. " "
  6606. s:assert [
  6607. test = "@version"
  6608. "If this element is the root element, it must have a version attribute."
  6609. ]
  6610. "\x{a}" ~
  6611. " "
  6612. ]
  6613. "\x{a}" ~
  6614. " "
  6615. ]
  6616. ]
  6617. element bibliodiv {
  6618. db.bibliodiv.attlist,
  6619. db.bibliodiv.info,
  6620. db.all.blocks*,
  6621. (db.biblioentry | db.bibliomixed)+
  6622. }
  6623. }
  6624. div {
  6625. db.bibliolist.role.attribute = attribute role { text }
  6626. db.bibliolist.attlist =
  6627. db.bibliolist.role.attribute?
  6628. & db.common.attributes
  6629. & db.common.linking.attributes
  6630. db.bibliolist.info = db._info.title.only
  6631. db.bibliolist =
  6632. ## A wrapper for a list of bibliography entries
  6633. [
  6634. s:pattern [
  6635. name = "Root must have version"
  6636. "\x{a}" ~
  6637. " "
  6638. s:rule [
  6639. context = "/db:bibliolist"
  6640. "\x{a}" ~
  6641. " "
  6642. s:assert [
  6643. test = "@version"
  6644. "If this element is the root element, it must have a version attribute."
  6645. ]
  6646. "\x{a}" ~
  6647. " "
  6648. ]
  6649. "\x{a}" ~
  6650. " "
  6651. ]
  6652. ]
  6653. element bibliolist {
  6654. db.bibliolist.attlist,
  6655. db.bibliolist.info?,
  6656. db.all.blocks*,
  6657. (db.biblioentry | db.bibliomixed)+
  6658. }
  6659. }
  6660. div {
  6661. db.biblioref.role.attribute = attribute role { text }
  6662. db.biblioref.xrefstyle.attribute = db.xrefstyle.attribute
  6663. db.biblioref.endterm.attribute = db.endterm.attribute
  6664. db.biblioref.units.attribute =
  6665. ## The units (for example, pages) used to identify the beginning and ending of a reference.
  6666. attribute units { xsd:token }
  6667. db.biblioref.begin.attribute =
  6668. ## Identifies the beginning of a reference; the location within the work that is being referenced.
  6669. attribute begin { xsd:token }
  6670. db.biblioref.end.attribute =
  6671. ## Identifies the end of a reference.
  6672. attribute end { xsd:token }
  6673. db.biblioref.attlist =
  6674. db.biblioref.role.attribute?
  6675. & db.common.attributes
  6676. & db.common.req.linking.attributes
  6677. & db.biblioref.xrefstyle.attribute?
  6678. & db.biblioref.endterm.attribute?
  6679. & db.biblioref.units.attribute?
  6680. & db.biblioref.begin.attribute?
  6681. & db.biblioref.end.attribute?
  6682. db.biblioref =
  6683. ## A cross-reference to a bibliographic entry
  6684. element biblioref { db.biblioref.attlist, empty }
  6685. }
  6686. db.significance.enumeration =
  6687. ## Normal
  6688. "normal"
  6689. |
  6690. ## Preferred
  6691. "preferred"
  6692. db.significance.attribute =
  6693. ## Specifies the significance of the term
  6694. attribute significance { db.significance.enumeration }
  6695. db.zone.attribute =
  6696. ## Specifies the IDs of the elements to which this term applies
  6697. attribute zone { xsd:IDREFS }
  6698. db.indexterm.pagenum.attribute =
  6699. ## Indicates the page on which this index term occurs in some version of the printed document
  6700. attribute pagenum { text }
  6701. db.scope.enumeration =
  6702. ## All indexes
  6703. "all"
  6704. |
  6705. ## The global index (as for a combined index of a set of books)
  6706. "global"
  6707. |
  6708. ## The local index (the index for this document only)
  6709. "local"
  6710. db.scope.attribute =
  6711. ## Specifies the scope of the index term
  6712. attribute scope { db.scope.enumeration }
  6713. db.sortas.attribute =
  6714. ## Specifies the string by which the term is to be sorted; if unspecified, the term content is used
  6715. attribute sortas { text }
  6716. db.index.type.attribute =
  6717. ## Specifies the target index for this term
  6718. attribute type { text }
  6719. div {
  6720. db.itermset.role.attribute = attribute role { text }
  6721. db.itermset.attlist =
  6722. db.itermset.role.attribute?
  6723. & db.common.attributes
  6724. & db.common.linking.attributes
  6725. db.itermset =
  6726. ## A set of index terms in the meta-information of a document
  6727. element itermset { db.itermset.attlist, db.indexterm.singular+ }
  6728. }
  6729. db.indexterm.contentmodel =
  6730. db.primary?,
  6731. ((db.secondary,
  6732. ((db.tertiary, (db.see | db.seealso+)?)
  6733. | db.see
  6734. | db.seealso+)?)
  6735. | db.see
  6736. | db.seealso+)?
  6737. div {
  6738. db.indexterm.singular.role.attribute = attribute role { text }
  6739. db.indexterm.singular.class.attribute =
  6740. ## Identifies the class of index term
  6741. attribute class {
  6742. ## A singular index term
  6743. "singular"
  6744. }
  6745. db.indexterm.singular.attlist =
  6746. db.indexterm.singular.role.attribute?
  6747. & db.common.attributes
  6748. & db.common.linking.attributes
  6749. & db.significance.attribute?
  6750. & db.zone.attribute?
  6751. & db.indexterm.pagenum.attribute?
  6752. & db.scope.attribute?
  6753. & db.index.type.attribute?
  6754. & db.indexterm.singular.class.attribute?
  6755. db.indexterm.singular =
  6756. ## A wrapper for an indexed term
  6757. element indexterm {
  6758. db.indexterm.singular.attlist, db.indexterm.contentmodel
  6759. }
  6760. }
  6761. div {
  6762. db.indexterm.startofrange.role.attribute = attribute role { text }
  6763. db.indexterm.startofrange.class.attribute =
  6764. ## Identifies the class of index term
  6765. attribute class {
  6766. ## The start of a range
  6767. "startofrange"
  6768. }
  6769. db.indexterm.startofrange.attlist =
  6770. db.indexterm.startofrange.role.attribute?
  6771. & db.common.attributes
  6772. & db.common.linking.attributes
  6773. & db.significance.attribute?
  6774. & db.zone.attribute?
  6775. & db.indexterm.pagenum.attribute?
  6776. & db.scope.attribute?
  6777. & db.index.type.attribute?
  6778. & db.indexterm.startofrange.class.attribute
  6779. db.indexterm.startofrange =
  6780. ## A wrapper for an indexed term that covers a range
  6781. element indexterm {
  6782. db.indexterm.startofrange.attlist, db.indexterm.contentmodel
  6783. }
  6784. }
  6785. div {
  6786. db.indexterm.endofrange.role.attribute = attribute role { text }
  6787. db.indexterm.endofrange.class.attribute =
  6788. ## Identifies the class of index term
  6789. attribute class {
  6790. ## The end of a range
  6791. "endofrange"
  6792. }
  6793. db.indexterm.endofrange.startref.attribute =
  6794. ## Points to the start of the range
  6795. attribute startref { xsd:IDREF }
  6796. db.indexterm.endofrange.attlist =
  6797. db.indexterm.endofrange.role.attribute?
  6798. & db.common.attributes
  6799. & db.common.linking.attributes
  6800. & db.indexterm.endofrange.class.attribute
  6801. & db.indexterm.endofrange.startref.attribute
  6802. db.indexterm.endofrange =
  6803. ## Identifies the end of a range associated with an indexed term
  6804. element indexterm { db.indexterm.endofrange.attlist, empty }
  6805. }
  6806. div {
  6807. db.indexterm =
  6808. db.indexterm.singular
  6809. | db.indexterm.startofrange
  6810. | db.indexterm.endofrange
  6811. }
  6812. div {
  6813. db.primary.role.attribute = attribute role { text }
  6814. db.primary.attlist =
  6815. db.primary.role.attribute?
  6816. & db.common.attributes
  6817. & db.common.linking.attributes
  6818. & db.sortas.attribute?
  6819. db.primary =
  6820. ## The primary word or phrase under which an index term should be sorted
  6821. element primary { db.primary.attlist, db.all.inlines* }
  6822. }
  6823. div {
  6824. db.secondary.role.attribute = attribute role { text }
  6825. db.secondary.attlist =
  6826. db.secondary.role.attribute?
  6827. & db.common.attributes
  6828. & db.common.linking.attributes
  6829. & db.sortas.attribute?
  6830. db.secondary =
  6831. ## A secondary word or phrase in an index term
  6832. element secondary { db.secondary.attlist, db.all.inlines* }
  6833. }
  6834. div {
  6835. db.tertiary.role.attribute = attribute role { text }
  6836. db.tertiary.attlist =
  6837. db.tertiary.role.attribute?
  6838. & db.common.attributes
  6839. & db.common.linking.attributes
  6840. & db.sortas.attribute?
  6841. db.tertiary =
  6842. ## A tertiary word or phrase in an index term
  6843. element tertiary { db.tertiary.attlist, db.all.inlines* }
  6844. }
  6845. div {
  6846. db.see.role.attribute = attribute role { text }
  6847. db.see.attlist =
  6848. db.see.role.attribute?
  6849. & db.common.attributes
  6850. & db.common.linking.attributes
  6851. db.see =
  6852. ## Part of an index term directing the reader instead to another entry in the index
  6853. element see { db.see.attlist, db.all.inlines* }
  6854. }
  6855. div {
  6856. db.seealso.role.attribute = attribute role { text }
  6857. db.seealso.attlist =
  6858. db.seealso.role.attribute?
  6859. & db.common.attributes
  6860. & db.common.linking.attributes
  6861. db.seealso =
  6862. ## Part of an index term directing the reader also to another entry in the index
  6863. element seealso { db.seealso.attlist, db.all.inlines* }
  6864. }
  6865. div {
  6866. db.index.status.attribute = db.status.attribute
  6867. db.index.role.attribute = attribute role { text }
  6868. db.index.attlist =
  6869. db.index.role.attribute?
  6870. & db.common.attributes
  6871. & db.common.linking.attributes
  6872. & db.label.attribute?
  6873. & db.index.status.attribute?
  6874. & db.index.type.attribute?
  6875. db.index.info = db._info
  6876. # Yes, db.indexdiv* and db.indexentry*; that way an <index/> is valid.
  6877. # Authors can use an empty index to indicate where a generated index should
  6878. # appear.
  6879. db.index =
  6880. ## An index to a book or part of a book
  6881. [
  6882. s:pattern [
  6883. name = "Root must have version"
  6884. "\x{a}" ~
  6885. " "
  6886. s:rule [
  6887. context = "/db:index"
  6888. "\x{a}" ~
  6889. " "
  6890. s:assert [
  6891. test = "@version"
  6892. "If this element is the root element, it must have a version attribute."
  6893. ]
  6894. "\x{a}" ~
  6895. " "
  6896. ]
  6897. "\x{a}" ~
  6898. " "
  6899. ]
  6900. ]
  6901. element index {
  6902. db.index.attlist,
  6903. db.index.info,
  6904. db.all.blocks*,
  6905. (db.indexdiv* | db.indexentry* | db.segmentedlist)
  6906. }
  6907. }
  6908. div {
  6909. db.setindex.status.attribute = db.status.attribute
  6910. db.setindex.role.attribute = attribute role { text }
  6911. db.setindex.attlist =
  6912. db.setindex.role.attribute?
  6913. & db.common.attributes
  6914. & db.common.linking.attributes
  6915. & db.label.attribute?
  6916. & db.setindex.status.attribute?
  6917. & db.index.type.attribute?
  6918. db.setindex.info = db._info
  6919. db.setindex =
  6920. ## An index to a set of books
  6921. [
  6922. s:pattern [
  6923. name = "Root must have version"
  6924. "\x{a}" ~
  6925. " "
  6926. s:rule [
  6927. context = "/db:setindex"
  6928. "\x{a}" ~
  6929. " "
  6930. s:assert [
  6931. test = "@version"
  6932. "If this element is the root element, it must have a version attribute."
  6933. ]
  6934. "\x{a}" ~
  6935. " "
  6936. ]
  6937. "\x{a}" ~
  6938. " "
  6939. ]
  6940. ]
  6941. element setindex {
  6942. db.setindex.attlist,
  6943. db.setindex.info,
  6944. db.all.blocks*,
  6945. (db.indexdiv* | db.indexentry*)
  6946. }
  6947. }
  6948. div {
  6949. db.indexdiv.status.attribute = db.status.attribute
  6950. db.indexdiv.role.attribute = attribute role { text }
  6951. db.indexdiv.attlist =
  6952. db.indexdiv.role.attribute?
  6953. & db.common.attributes
  6954. & db.common.linking.attributes
  6955. & db.label.attribute?
  6956. & db.indexdiv.status.attribute?
  6957. db.indexdiv.info = db._info.title.req
  6958. db.indexdiv =
  6959. ## A division in an index
  6960. [
  6961. s:pattern [
  6962. name = "Root must have version"
  6963. "\x{a}" ~
  6964. " "
  6965. s:rule [
  6966. context = "/db:indexdiv"
  6967. "\x{a}" ~
  6968. " "
  6969. s:assert [
  6970. test = "@version"
  6971. "If this element is the root element, it must have a version attribute."
  6972. ]
  6973. "\x{a}" ~
  6974. " "
  6975. ]
  6976. "\x{a}" ~
  6977. " "
  6978. ]
  6979. ]
  6980. element indexdiv {
  6981. db.indexdiv.attlist,
  6982. db.indexdiv.info,
  6983. db.all.blocks*,
  6984. (db.indexentry+ | db.segmentedlist)
  6985. }
  6986. }
  6987. div {
  6988. db.indexentry.role.attribute = attribute role { text }
  6989. db.indexentry.attlist =
  6990. db.indexentry.role.attribute?
  6991. & db.common.attributes
  6992. & db.common.linking.attributes
  6993. db.indexentry =
  6994. ## An entry in an index
  6995. element indexentry {
  6996. db.indexentry.attlist,
  6997. db.primaryie,
  6998. (db.seeie | db.seealsoie)*,
  6999. (db.secondaryie, (db.seeie | db.seealsoie | db.tertiaryie)*)*
  7000. }
  7001. }
  7002. div {
  7003. db.primaryie.role.attribute = attribute role { text }
  7004. db.primaryie.attlist =
  7005. db.primaryie.role.attribute?
  7006. & db.common.attributes
  7007. & db.linkends.attribute?
  7008. db.primaryie =
  7009. ## A primary term in an index entry, not in the text
  7010. element primaryie { db.primaryie.attlist, db.all.inlines* }
  7011. }
  7012. div {
  7013. db.secondaryie.role.attribute = attribute role { text }
  7014. db.secondaryie.attlist =
  7015. db.secondaryie.role.attribute?
  7016. & db.common.attributes
  7017. & db.linkends.attribute?
  7018. db.secondaryie =
  7019. ## A secondary term in an index entry, rather than in the text
  7020. element secondaryie { db.secondaryie.attlist, db.all.inlines* }
  7021. }
  7022. div {
  7023. db.tertiaryie.role.attribute = attribute role { text }
  7024. db.tertiaryie.attlist =
  7025. db.tertiaryie.role.attribute?
  7026. & db.common.attributes
  7027. & db.linkends.attribute?
  7028. db.tertiaryie =
  7029. ## A tertiary term in an index entry, rather than in the text
  7030. element tertiaryie { db.tertiaryie.attlist, db.all.inlines* }
  7031. }
  7032. div {
  7033. db.seeie.role.attribute = attribute role { text }
  7034. db.seeie.attlist =
  7035. db.seeie.role.attribute?
  7036. & db.common.attributes
  7037. & db.linkend.attribute?
  7038. db.seeie =
  7039. ## A See
  7040. ## entry in an index, rather than in the text
  7041. element seeie { db.seeie.attlist, db.all.inlines* }
  7042. }
  7043. div {
  7044. db.seealsoie.role.attribute = attribute role { text }
  7045. db.seealsoie.attlist =
  7046. db.seealsoie.role.attribute?
  7047. & db.common.attributes
  7048. & db.linkends.attribute?
  7049. db.seealsoie =
  7050. ## A See also
  7051. ## entry in an index, rather than in the text
  7052. element seealsoie { db.seealsoie.attlist, db.all.inlines* }
  7053. }
  7054. db.toc.pagenum.attribute =
  7055. ## Indicates the page on which this element occurs in some version of the printed document
  7056. attribute pagenum { text }
  7057. div {
  7058. db.toc.role.attribute = attribute role { text }
  7059. db.toc.attlist =
  7060. db.toc.role.attribute?
  7061. & db.common.attributes
  7062. & db.common.linking.attributes
  7063. db.toc.info = db._info.title.only
  7064. db.toc =
  7065. ## A table of contents
  7066. [
  7067. s:pattern [
  7068. name = "Root must have version"
  7069. "\x{a}" ~
  7070. " "
  7071. s:rule [
  7072. context = "/db:toc"
  7073. "\x{a}" ~
  7074. " "
  7075. s:assert [
  7076. test = "@version"
  7077. "If this element is the root element, it must have a version attribute."
  7078. ]
  7079. "\x{a}" ~
  7080. " "
  7081. ]
  7082. "\x{a}" ~
  7083. " "
  7084. ]
  7085. ]
  7086. element toc {
  7087. db.toc.attlist,
  7088. db.toc.info,
  7089. db.all.blocks*,
  7090. (db.tocdiv | db.tocentry)*
  7091. }
  7092. }
  7093. div {
  7094. db.tocdiv.role.attribute = attribute role { text }
  7095. db.tocdiv.pagenum.attribute = db.toc.pagenum.attribute
  7096. db.tocdiv.attlist =
  7097. db.tocdiv.role.attribute?
  7098. & db.common.attributes
  7099. & db.tocdiv.pagenum.attribute?
  7100. & db.linkend.attribute?
  7101. db.tocdiv.info = db._info
  7102. db.tocdiv =
  7103. ## A division in a table of contents
  7104. [
  7105. s:pattern [
  7106. name = "Root must have version"
  7107. "\x{a}" ~
  7108. " "
  7109. s:rule [
  7110. context = "/db:tocdiv"
  7111. "\x{a}" ~
  7112. " "
  7113. s:assert [
  7114. test = "@version"
  7115. "If this element is the root element, it must have a version attribute."
  7116. ]
  7117. "\x{a}" ~
  7118. " "
  7119. ]
  7120. "\x{a}" ~
  7121. " "
  7122. ]
  7123. ]
  7124. element tocdiv {
  7125. db.tocdiv.attlist,
  7126. db.tocdiv.info,
  7127. db.all.blocks*,
  7128. (db.tocdiv | db.tocentry)+
  7129. }
  7130. }
  7131. div {
  7132. db.tocentry.role.attribute = attribute role { text }
  7133. db.tocentry.pagenum.attribute = db.toc.pagenum.attribute
  7134. db.tocentry.attlist =
  7135. db.tocentry.role.attribute?
  7136. & db.common.attributes
  7137. & db.tocentry.pagenum.attribute?
  7138. & db.linkend.attribute?
  7139. db.tocentry =
  7140. ## A component title in a table of contents
  7141. element tocentry { db.tocentry.attlist, db.all.inlines* }
  7142. }
  7143. db.task.info = db._info.title.req
  7144. div {
  7145. db.task.role.attribute = attribute role { text }
  7146. db.task.attlist =
  7147. db.task.role.attribute?
  7148. & db.common.attributes
  7149. & db.common.linking.attributes
  7150. db.task =
  7151. ## A task to be completed
  7152. [
  7153. s:pattern [
  7154. name = "Root must have version"
  7155. "\x{a}" ~
  7156. " "
  7157. s:rule [
  7158. context = "/db:task"
  7159. "\x{a}" ~
  7160. " "
  7161. s:assert [
  7162. test = "@version"
  7163. "If this element is the root element, it must have a version attribute."
  7164. ]
  7165. "\x{a}" ~
  7166. " "
  7167. ]
  7168. "\x{a}" ~
  7169. " "
  7170. ]
  7171. ]
  7172. element task {
  7173. db.task.attlist,
  7174. db.task.info,
  7175. db.tasksummary?,
  7176. db.taskprerequisites?,
  7177. db.procedure+,
  7178. db.example*,
  7179. db.taskrelated?
  7180. }
  7181. }
  7182. div {
  7183. db.tasksummary.role.attribute = attribute role { text }
  7184. db.tasksummary.attlist =
  7185. db.tasksummary.role.attribute?
  7186. & db.common.attributes
  7187. & db.common.linking.attributes
  7188. db.tasksummary.info = db._info.title.only
  7189. db.tasksummary =
  7190. ## A summary of a task
  7191. [
  7192. s:pattern [
  7193. name = "Root must have version"
  7194. "\x{a}" ~
  7195. " "
  7196. s:rule [
  7197. context = "/db:tasksummary"
  7198. "\x{a}" ~
  7199. " "
  7200. s:assert [
  7201. test = "@version"
  7202. "If this element is the root element, it must have a version attribute."
  7203. ]
  7204. "\x{a}" ~
  7205. " "
  7206. ]
  7207. "\x{a}" ~
  7208. " "
  7209. ]
  7210. ]
  7211. element tasksummary {
  7212. db.tasksummary.attlist, db.tasksummary.info, db.all.blocks+
  7213. }
  7214. }
  7215. div {
  7216. db.taskprerequisites.role.attribute = attribute role { text }
  7217. db.taskprerequisites.attlist =
  7218. db.taskprerequisites.role.attribute?
  7219. & db.common.attributes
  7220. & db.common.linking.attributes
  7221. db.taskprerequisites.info = db._info.title.only
  7222. db.taskprerequisites =
  7223. ## The prerequisites for a task
  7224. [
  7225. s:pattern [
  7226. name = "Root must have version"
  7227. "\x{a}" ~
  7228. " "
  7229. s:rule [
  7230. context = "/db:taskprerequisites"
  7231. "\x{a}" ~
  7232. " "
  7233. s:assert [
  7234. test = "@version"
  7235. "If this element is the root element, it must have a version attribute."
  7236. ]
  7237. "\x{a}" ~
  7238. " "
  7239. ]
  7240. "\x{a}" ~
  7241. " "
  7242. ]
  7243. ]
  7244. element taskprerequisites {
  7245. db.taskprerequisites.attlist,
  7246. db.taskprerequisites.info,
  7247. db.all.blocks+
  7248. }
  7249. }
  7250. div {
  7251. db.taskrelated.role.attribute = attribute role { text }
  7252. db.taskrelated.attlist =
  7253. db.taskrelated.role.attribute?
  7254. & db.common.attributes
  7255. & db.common.linking.attributes
  7256. db.taskrelated.info = db._info.title.only
  7257. db.taskrelated =
  7258. ## Information related to a task
  7259. [
  7260. s:pattern [
  7261. name = "Root must have version"
  7262. "\x{a}" ~
  7263. " "
  7264. s:rule [
  7265. context = "/db:taskrelated"
  7266. "\x{a}" ~
  7267. " "
  7268. s:assert [
  7269. test = "@version"
  7270. "If this element is the root element, it must have a version attribute."
  7271. ]
  7272. "\x{a}" ~
  7273. " "
  7274. ]
  7275. "\x{a}" ~
  7276. " "
  7277. ]
  7278. ]
  7279. element taskrelated {
  7280. db.taskrelated.attlist, db.taskrelated.info, db.all.blocks+
  7281. }
  7282. }
  7283. db.area.units.enumeration =
  7284. ## Coordinates expressed as a pair of CALS graphic coordinates.
  7285. "calspair"
  7286. |
  7287. ## Coordinates expressed as a line and column.
  7288. "linecolumn"
  7289. |
  7290. ## Coordinates expressed as a pair of lines and columns.
  7291. "linecolumnpair"
  7292. |
  7293. ## Coordinates expressed as a line range.
  7294. "linerange"
  7295. db.area.units-enum.attribute =
  7296. ## Identifies the units used in the coords attribute. The default units vary according to the type of callout specified: calspair
  7297. ## for graphics and linecolumn
  7298. ## for line-oriented elements.
  7299. attribute units { db.area.units.enumeration }?
  7300. db.area.units-other.attributes =
  7301. ## Indicates that non-standard units are used for this area
  7302. ## . In this case otherunits
  7303. ## must be specified.
  7304. attribute units {
  7305. ## Coordinates expressed in some non-standard units.
  7306. "other"
  7307. }?,
  7308. ## Identifies the units used in the coords
  7309. ## attribute when the units
  7310. ## attribute is other
  7311. ## . This attribute is forbidden otherwise.
  7312. attribute otherunits { xsd:NMTOKEN }
  7313. db.area.units.attribute =
  7314. db.area.units-enum.attribute | db.area.units-other.attributes
  7315. div {
  7316. db.calloutlist.role.attribute = attribute role { text }
  7317. db.calloutlist.attlist =
  7318. db.calloutlist.role.attribute?
  7319. & db.common.attributes
  7320. & db.common.linking.attributes
  7321. db.calloutlist.info = db._info.title.only
  7322. db.calloutlist =
  7323. ## A list of callout
  7324. ## s
  7325. [
  7326. s:pattern [
  7327. name = "Root must have version"
  7328. "\x{a}" ~
  7329. " "
  7330. s:rule [
  7331. context = "/db:calloutlist"
  7332. "\x{a}" ~
  7333. " "
  7334. s:assert [
  7335. test = "@version"
  7336. "If this element is the root element, it must have a version attribute."
  7337. ]
  7338. "\x{a}" ~
  7339. " "
  7340. ]
  7341. "\x{a}" ~
  7342. " "
  7343. ]
  7344. ]
  7345. element calloutlist {
  7346. db.calloutlist.attlist,
  7347. db.calloutlist.info,
  7348. db.all.blocks*,
  7349. db.callout+
  7350. }
  7351. }
  7352. div {
  7353. db.callout.role.attribute = attribute role { text }
  7354. db.callout.arearefs.attribute =
  7355. ## Identifies the areas described by this callout.
  7356. attribute arearefs { xsd:IDREFS }
  7357. db.callout.attlist =
  7358. db.callout.role.attribute?
  7359. & db.common.attributes
  7360. & db.callout.arearefs.attribute
  7361. db.callout =
  7362. ## A called out
  7363. ## description of a marked area
  7364. element callout { db.callout.attlist, db.all.blocks+ }
  7365. }
  7366. div {
  7367. db.programlistingco.role.attribute = attribute role { text }
  7368. db.programlistingco.attlist =
  7369. db.programlistingco.role.attribute?
  7370. & db.common.attributes
  7371. & db.common.linking.attributes
  7372. db.programlistingco.info = db._info.title.forbidden
  7373. db.programlistingco =
  7374. ## A program listing with associated areas used in callouts
  7375. [
  7376. s:pattern [
  7377. name = "Root must have version"
  7378. "\x{a}" ~
  7379. " "
  7380. s:rule [
  7381. context = "/db:programlistingco"
  7382. "\x{a}" ~
  7383. " "
  7384. s:assert [
  7385. test = "@version"
  7386. "If this element is the root element, it must have a version attribute."
  7387. ]
  7388. "\x{a}" ~
  7389. " "
  7390. ]
  7391. "\x{a}" ~
  7392. " "
  7393. ]
  7394. ]
  7395. element programlistingco {
  7396. db.programlistingco.attlist,
  7397. db.programlistingco.info,
  7398. db.areaspec,
  7399. db.programlisting,
  7400. db.calloutlist*
  7401. }
  7402. }
  7403. div {
  7404. db.areaspec.role.attribute = attribute role { text }
  7405. db.areaspec.attlist =
  7406. db.areaspec.role.attribute?
  7407. & db.common.attributes
  7408. & db.common.linking.attributes
  7409. & db.area.units.attribute
  7410. db.areaspec =
  7411. ## A collection of regions in a graphic or code example
  7412. element areaspec { db.areaspec.attlist, (db.area | db.areaset)+ }
  7413. }
  7414. div {
  7415. db.area.role.attribute = attribute role { text }
  7416. db.area.linkends.attribute =
  7417. ## Point to the callout
  7418. ## s which refer to this area. (This provides bidirectional linking which may be useful in online presentation.)
  7419. attribute linkends { xsd:IDREFS }
  7420. db.area.label.attribute =
  7421. ## Specifies an identifying number or string that may be used in presentation. The area label might be drawn on top of the figure, for example, at the position indicated by the coords attribute.
  7422. attribute label { text }
  7423. db.area.coords.attribute =
  7424. ## Provides the coordinates of the area. The coordinates must be interpreted using the units
  7425. ## specified.
  7426. attribute coords { text }
  7427. db.area.attlist =
  7428. db.area.role.attribute?
  7429. & db.common.idreq.attributes
  7430. & db.area.units.attribute
  7431. & (db.area.linkends.attribute | db.xlink.simple.link.attributes)?
  7432. & db.area.label.attribute?
  7433. & db.area.coords.attribute
  7434. db.area =
  7435. ## A region defined for a callout in a graphic or code example
  7436. element area { db.area.attlist, db.alt? }
  7437. }
  7438. div {
  7439. # The only difference is that xml:id is optional
  7440. db.area.inareaset.attlist =
  7441. db.area.role.attribute?
  7442. & db.common.attributes
  7443. & db.area.units.attribute
  7444. & (db.area.linkends.attribute | db.xlink.simple.link.attributes)?
  7445. & db.area.label.attribute?
  7446. & db.area.coords.attribute
  7447. db.area.inareaset =
  7448. ## A region defined for a callout in a graphic or code example
  7449. element area { db.area.inareaset.attlist, db.alt? }
  7450. }
  7451. div {
  7452. db.areaset.role.attribute = attribute role { text }
  7453. db.areaset.linkends.attribute = db.linkends.attribute
  7454. db.areaset.label.attribute = db.label.attribute
  7455. db.areaset.attlist =
  7456. db.areaset.role.attribute?
  7457. & db.common.idreq.attributes
  7458. & db.area.units.attribute
  7459. & (db.areaset.linkends.attribute | db.xlink.simple.link.attributes)?
  7460. & db.areaset.label.attribute?
  7461. db.areaset =
  7462. ## A set of related areas in a graphic or code example
  7463. element areaset { db.areaset.attlist, db.area.inareaset+ }
  7464. }
  7465. div {
  7466. db.screenco.role.attribute = attribute role { text }
  7467. db.screenco.attlist =
  7468. db.screenco.role.attribute?
  7469. & db.common.attributes
  7470. & db.common.linking.attributes
  7471. db.screenco.info = db._info.title.forbidden
  7472. db.screenco =
  7473. ## A screen with associated areas used in callouts
  7474. [
  7475. s:pattern [
  7476. name = "Root must have version"
  7477. "\x{a}" ~
  7478. " "
  7479. s:rule [
  7480. context = "/db:screenco"
  7481. "\x{a}" ~
  7482. " "
  7483. s:assert [
  7484. test = "@version"
  7485. "If this element is the root element, it must have a version attribute."
  7486. ]
  7487. "\x{a}" ~
  7488. " "
  7489. ]
  7490. "\x{a}" ~
  7491. " "
  7492. ]
  7493. ]
  7494. element screenco {
  7495. db.screenco.attlist,
  7496. db.screenco.info,
  7497. db.areaspec,
  7498. db.screen,
  7499. db.calloutlist*
  7500. }
  7501. }
  7502. div {
  7503. db.imageobjectco.role.attribute = attribute role { text }
  7504. db.imageobjectco.attlist =
  7505. db.imageobjectco.role.attribute?
  7506. & db.common.attributes
  7507. & db.common.linking.attributes
  7508. db.imageobjectco.info = db._info.title.forbidden
  7509. db.imageobjectco =
  7510. ## A wrapper for an image object with callouts
  7511. [
  7512. s:pattern [
  7513. name = "Root must have version"
  7514. "\x{a}" ~
  7515. " "
  7516. s:rule [
  7517. context = "/db:imageobjectco"
  7518. "\x{a}" ~
  7519. " "
  7520. s:assert [
  7521. test = "@version"
  7522. "If this element is the root element, it must have a version attribute."
  7523. ]
  7524. "\x{a}" ~
  7525. " "
  7526. ]
  7527. "\x{a}" ~
  7528. " "
  7529. ]
  7530. ]
  7531. element imageobjectco {
  7532. db.imageobjectco.attlist,
  7533. db.imageobjectco.info,
  7534. db.areaspec,
  7535. db.imageobject+,
  7536. db.calloutlist*
  7537. }
  7538. }
  7539. div {
  7540. db.co.role.attribute = attribute role { text }
  7541. db.co.linkends.attribute = db.linkends.attribute
  7542. db.co.label.attribute = db.label.attribute
  7543. db.co.attlist =
  7544. db.co.role.attribute?
  7545. & db.common.idreq.attributes
  7546. & db.co.linkends.attribute?
  7547. & db.co.label.attribute?
  7548. db.co =
  7549. ## The location of a callout embedded in text
  7550. element co { db.co.attlist, empty }
  7551. }
  7552. div {
  7553. db.coref.role.attribute = attribute role { text }
  7554. db.coref.label.attribute = db.label.attribute
  7555. db.coref.attlist =
  7556. db.coref.role.attribute?
  7557. & db.common.attributes
  7558. & db.linkend.attribute
  7559. & db.coref.label.attribute?
  7560. db.coref =
  7561. ## A cross reference to a co
  7562. element coref { db.coref.attlist, empty }
  7563. }
  7564. div {
  7565. db.productionset.role.attribute = attribute role { text }
  7566. db.productionset.attlist =
  7567. db.productionset.role.attribute?
  7568. & db.common.attributes
  7569. & db.common.linking.attributes
  7570. db.productionset.info = db._info.title.only
  7571. db.productionset =
  7572. ## A set of EBNF productions
  7573. [
  7574. s:pattern [
  7575. name = "Root must have version"
  7576. "\x{a}" ~
  7577. " "
  7578. s:rule [
  7579. context = "/db:productionset"
  7580. "\x{a}" ~
  7581. " "
  7582. s:assert [
  7583. test = "@version"
  7584. "If this element is the root element, it must have a version attribute."
  7585. ]
  7586. "\x{a}" ~
  7587. " "
  7588. ]
  7589. "\x{a}" ~
  7590. " "
  7591. ]
  7592. ]
  7593. element productionset {
  7594. db.productionset.attlist,
  7595. db.productionset.info,
  7596. (db.production | db.productionrecap)+
  7597. }
  7598. }
  7599. div {
  7600. db.production.role.attribute = attribute role { text }
  7601. db.production.attlist =
  7602. db.production.role.attribute?
  7603. & db.common.idreq.attributes
  7604. & db.common.linking.attributes
  7605. db.production =
  7606. ## A production in a set of EBNF productions
  7607. element production {
  7608. db.production.attlist, db.lhs, db.rhs+, db.constraint*
  7609. }
  7610. }
  7611. div {
  7612. db.lhs.role.attribute = attribute role { text }
  7613. db.lhs.attlist =
  7614. db.lhs.role.attribute?
  7615. & db.common.attributes
  7616. & db.common.linking.attributes
  7617. db.lhs =
  7618. ## The left-hand side of an EBNF production
  7619. element lhs { db.lhs.attlist, text }
  7620. }
  7621. div {
  7622. db.rhs.role.attribute = attribute role { text }
  7623. db.rhs.attlist =
  7624. db.rhs.role.attribute?
  7625. & db.common.attributes
  7626. & db.common.linking.attributes
  7627. db.rhs =
  7628. ## The right-hand side of an EBNF production
  7629. element rhs {
  7630. db.rhs.attlist,
  7631. (text | db.nonterminal | db.lineannotation | db.sbr)*
  7632. }
  7633. }
  7634. div {
  7635. db.nonterminal.role.attribute = attribute role { text }
  7636. db.nonterminal.def.attribute =
  7637. ## Specifies a URI that points to a production
  7638. ## where the nonterminal
  7639. ## is defined
  7640. attribute def { xsd:anyURI }
  7641. db.nonterminal.attlist =
  7642. db.nonterminal.role.attribute?
  7643. & db.common.attributes
  7644. & db.common.linking.attributes
  7645. & db.nonterminal.def.attribute
  7646. db.nonterminal =
  7647. ## A non-terminal in an EBNF production
  7648. element nonterminal { db.nonterminal.attlist, text }
  7649. }
  7650. div {
  7651. db.constraint.role.attribute = attribute role { text }
  7652. db.constraint.attlist =
  7653. db.constraint.role.attribute?
  7654. & db.common.attributes
  7655. & db.common.req.linking.attributes
  7656. db.constraint =
  7657. ## A constraint in an EBNF production
  7658. element constraint { db.constraint.attlist, empty }
  7659. }
  7660. div {
  7661. db.productionrecap.role.attribute = attribute role { text }
  7662. db.productionrecap.attlist =
  7663. db.productionrecap.role.attribute?
  7664. & db.common.attributes
  7665. & db.common.req.linking.attributes
  7666. db.productionrecap =
  7667. ## A cross-reference to an EBNF production
  7668. element productionrecap { db.productionrecap.attlist, empty }
  7669. }
  7670. div {
  7671. db.constraintdef.role.attribute = attribute role { text }
  7672. db.constraintdef.attlist =
  7673. db.constraintdef.role.attribute?
  7674. & db.common.attributes
  7675. & db.common.linking.attributes
  7676. db.constraintdef.info = db._info.title.only
  7677. db.constraintdef =
  7678. ## The definition of a constraint in an EBNF production
  7679. [
  7680. s:pattern [
  7681. name = "Root must have version"
  7682. "\x{a}" ~
  7683. " "
  7684. s:rule [
  7685. context = "/db:constraintdef"
  7686. "\x{a}" ~
  7687. " "
  7688. s:assert [
  7689. test = "@version"
  7690. "If this element is the root element, it must have a version attribute."
  7691. ]
  7692. "\x{a}" ~
  7693. " "
  7694. ]
  7695. "\x{a}" ~
  7696. " "
  7697. ]
  7698. ]
  7699. element constraintdef {
  7700. db.constraintdef.attlist, db.constraintdef.info, db.all.blocks+
  7701. }
  7702. }
  7703. db.char.attribute =
  7704. ## Specifies the alignment character when align
  7705. ## is set to char
  7706. ## .
  7707. attribute char { text }
  7708. db.charoff.attribute =
  7709. ## Specifies the percentage of the column's total width that should appear to the left of the first occurance of the character identified in char
  7710. ## when align
  7711. ## is set to char
  7712. ## .
  7713. attribute charoff {
  7714. xsd:decimal { minExclusive = "0" maxExclusive = "100" }
  7715. }
  7716. db.frame.attribute =
  7717. ## Specifies how the table is to be framed. Note that there is no way to obtain a border on only the starting edge (left, in left-to-right writing systems) of the table.
  7718. attribute frame {
  7719. ## Frame all four sides of the table. In some environments with limited control over table border formatting, such as HTML, this may imply additional borders.
  7720. "all"
  7721. |
  7722. ## Frame only the bottom of the table.
  7723. "bottom"
  7724. |
  7725. ## Place no border on the table. In some environments with limited control over table border formatting, such as HTML, this may disable other borders as well.
  7726. "none"
  7727. |
  7728. ## Frame the left and right sides of the table.
  7729. "sides"
  7730. |
  7731. ## Frame the top of the table.
  7732. "top"
  7733. |
  7734. ## Frame the top and bottom of the table.
  7735. "topbot"
  7736. }
  7737. db.colsep.attribute =
  7738. ## Specifies the presence or absence of the column separator
  7739. attribute colsep {
  7740. ## No column separator rule.
  7741. "0"
  7742. |
  7743. ## Provide a column separator rule on the right
  7744. "1"
  7745. }
  7746. db.rowsep.attribute =
  7747. ## Specifies the presence or absence of the row separator
  7748. attribute rowsep {
  7749. ## No row separator rule.
  7750. "0"
  7751. |
  7752. ## Provide a row separator rule below
  7753. "1"
  7754. }
  7755. db.orient.attribute =
  7756. ## Specifies the orientation of the table
  7757. attribute orient {
  7758. ## 90 degrees counter-clockwise from the rest of the text flow.
  7759. "land"
  7760. |
  7761. ## The same orientation as the rest of the text flow.
  7762. "port"
  7763. }
  7764. db.tabstyle.attribute =
  7765. ## Specifies the table style
  7766. attribute tabstyle { text }
  7767. db.rowheader.attribute =
  7768. ## Indicates whether or not the entries in the first column should be considered row headers
  7769. attribute rowheader {
  7770. ## Indicates that entries in the first column of the table are functionally row headers (analogous to the way that a thead provides column headers).
  7771. "firstcol"
  7772. |
  7773. ## Indicates that entries in the first column have no special significance with respect to column headers.
  7774. "norowheader"
  7775. }
  7776. db.align.attribute =
  7777. ## Specifies the horizontal alignment of text in an entry.
  7778. attribute align {
  7779. ## Centered.
  7780. "center"
  7781. |
  7782. ## Aligned on a particular character.
  7783. "char"
  7784. |
  7785. ## Left and right justified.
  7786. "justify"
  7787. |
  7788. ## Left justified.
  7789. "left"
  7790. |
  7791. ## Right justified.
  7792. "right"
  7793. }
  7794. db.valign.attribute =
  7795. ## Specifies the vertical alignment of text in an entry.
  7796. attribute valign {
  7797. ## Aligned on the bottom of the entry.
  7798. "bottom"
  7799. |
  7800. ## Aligned in the middle.
  7801. "middle"
  7802. |
  7803. ## Aligned at the top of the entry.
  7804. "top"
  7805. }
  7806. db.specify-col-by-colname.attributes =
  7807. ## Specifies a column specification by name.
  7808. attribute colname { text }
  7809. db.specify-col-by-namest.attributes =
  7810. ## Specifies a starting column by name.
  7811. attribute namest { text }
  7812. db.specify-span-by-spanspec.attributes =
  7813. ## Specifies a span by name.
  7814. attribute spanname { text }
  7815. db.specify-span-directly.attributes =
  7816. ## Specifies a starting column by name.
  7817. attribute namest { text }
  7818. &
  7819. ## Specifies an ending column by name.
  7820. attribute nameend { text }
  7821. db.column-spec.attributes =
  7822. db.specify-col-by-colname.attributes
  7823. | db.specify-col-by-namest.attributes
  7824. | db.specify-span-by-spanspec.attributes
  7825. | db.specify-span-directly.attributes
  7826. db.colname.attribute =
  7827. ## Provides a name for a column specification.
  7828. attribute colname { text }
  7829. db.spanname.attribute =
  7830. ## Provides a name for a span specification.
  7831. attribute spanname { text }
  7832. div {
  7833. db.tgroup.role.attribute = attribute role { text }
  7834. db.tgroup.tgroupstyle.attribute =
  7835. ## Additional style information for downstream processing; typically the name of a style.
  7836. attribute tgroupstyle { text }
  7837. db.tgroup.cols.attribute =
  7838. ## The number of columns in the table. Must be an integer greater than zero.
  7839. attribute cols { xsd:positiveInteger }
  7840. db.tgroup.attlist =
  7841. db.tgroup.role.attribute?
  7842. & db.common.attributes
  7843. & db.common.linking.attributes
  7844. & db.char.attribute?
  7845. & db.charoff.attribute?
  7846. & db.tgroup.tgroupstyle.attribute?
  7847. & db.tgroup.cols.attribute
  7848. & db.colsep.attribute?
  7849. & db.rowsep.attribute?
  7850. & db.align.attribute?
  7851. db.tgroup =
  7852. ## A wrapper for the main content of a table, or part of a table
  7853. element tgroup {
  7854. db.tgroup.attlist,
  7855. db.colspec*,
  7856. db.spanspec*,
  7857. db.cals.thead?,
  7858. db.cals.tfoot?,
  7859. db.cals.tbody
  7860. }
  7861. }
  7862. div {
  7863. db.colspec.role.attribute = attribute role { text }
  7864. db.colspec.colnum.attribute =
  7865. ## The number of the column to which this specification applies. Must be greater than any preceding column number. Defaults to one more than the number of the preceding column, if there is one, or one.
  7866. attribute colnum { xsd:positiveInteger }
  7867. db.colspec.colwidth.attribute =
  7868. ## Specifies the width of the column.
  7869. attribute colwidth { text }
  7870. db.colspec.attlist =
  7871. db.colspec.role.attribute?
  7872. & db.common.attributes
  7873. & db.common.linking.attributes
  7874. & db.colspec.colnum.attribute?
  7875. & db.char.attribute?
  7876. & db.colsep.attribute?
  7877. & db.colspec.colwidth.attribute?
  7878. & db.charoff.attribute?
  7879. & db.colname.attribute?
  7880. & db.rowsep.attribute?
  7881. & db.align.attribute?
  7882. db.colspec =
  7883. ## Specifications for a column in a table
  7884. element colspec { db.colspec.attlist, empty }
  7885. }
  7886. div {
  7887. db.spanspec.role.attribute = attribute role { text }
  7888. db.spanspec.namest.attribute =
  7889. ## Specifies a starting column by name.
  7890. attribute namest { text }
  7891. db.spanspec.nameend.attribute =
  7892. ## Specifies an ending column by name.
  7893. attribute nameend { text }
  7894. db.spanspec.attlist =
  7895. db.spanspec.role.attribute?
  7896. & db.common.attributes
  7897. & db.common.linking.attributes
  7898. & db.spanname.attribute
  7899. & db.spanspec.namest.attribute
  7900. & db.spanspec.nameend.attribute
  7901. & db.char.attribute?
  7902. & db.colsep.attribute?
  7903. & db.charoff.attribute?
  7904. & db.rowsep.attribute?
  7905. & db.align.attribute?
  7906. db.spanspec =
  7907. ## Formatting information for a spanned column in a table
  7908. element spanspec { db.spanspec.attlist, empty }
  7909. }
  7910. div {
  7911. db.cals.thead.role.attribute = attribute role { text }
  7912. db.cals.thead.attlist =
  7913. db.cals.thead.role.attribute?
  7914. & db.common.attributes
  7915. & db.common.linking.attributes
  7916. & db.valign.attribute?
  7917. db.cals.thead =
  7918. ## A table header consisting of one or more rows
  7919. element thead { db.cals.thead.attlist, db.colspec*, db.row+ }
  7920. }
  7921. div {
  7922. db.cals.tfoot.role.attribute = attribute role { text }
  7923. db.cals.tfoot.attlist =
  7924. db.cals.tfoot.role.attribute?
  7925. & db.common.attributes
  7926. & db.common.linking.attributes
  7927. & db.valign.attribute?
  7928. db.cals.tfoot =
  7929. ## A table footer consisting of one or more rows
  7930. element tfoot { db.cals.tfoot.attlist, db.colspec*, db.row+ }
  7931. }
  7932. div {
  7933. db.cals.tbody.role.attribute = attribute role { text }
  7934. db.cals.tbody.attlist =
  7935. db.cals.tbody.role.attribute?
  7936. & db.common.attributes
  7937. & db.common.linking.attributes
  7938. & db.valign.attribute?
  7939. db.cals.tbody =
  7940. ## A wrapper for the rows of a table or informal table
  7941. element tbody { db.cals.tbody.attlist, db.row+ }
  7942. }
  7943. div {
  7944. db.row.role.attribute = attribute role { text }
  7945. db.row.attlist =
  7946. db.row.role.attribute?
  7947. & db.common.attributes
  7948. & db.common.linking.attributes
  7949. & db.rowsep.attribute?
  7950. & db.valign.attribute?
  7951. db.row =
  7952. ## A row in a table
  7953. element row { db.row.attlist, (db.entry | db.entrytbl)+ }
  7954. }
  7955. div {
  7956. db.entry.role.attribute = attribute role { text }
  7957. db.entry.morerows.attribute =
  7958. ## Specifies the number of additional rows which this entry occupies. Defaults to zero.
  7959. attribute morerows { xsd:integer }
  7960. db.entry.rotate.attribute =
  7961. ## Specifies the rotation of this entry. A value of 1 (true) rotates the cell 90 degrees counter-clockwise. A value of 0 (false) leaves the cell unrotated.
  7962. attribute rotate {
  7963. ## Do not rotate the cell.
  7964. "0"
  7965. |
  7966. ## Rotate the cell 90 degrees counter-clockwise.
  7967. "1"
  7968. }
  7969. db.entry.attlist =
  7970. db.entry.role.attribute?
  7971. & db.common.attributes
  7972. & db.common.linking.attributes
  7973. & db.valign.attribute?
  7974. & db.char.attribute?
  7975. & db.colsep.attribute?
  7976. & db.charoff.attribute?
  7977. & db.entry.morerows.attribute?
  7978. & db.column-spec.attributes?
  7979. & db.rowsep.attribute?
  7980. & db.entry.rotate.attribute?
  7981. & db.align.attribute?
  7982. db.entry =
  7983. ## A cell in a table
  7984. [
  7985. s:pattern [
  7986. name = "Element exclusion"
  7987. "\x{a}" ~
  7988. " "
  7989. s:rule [
  7990. context = "db:entry"
  7991. "\x{a}" ~
  7992. " "
  7993. s:assert [
  7994. test = "not(.//db:table)"
  7995. "table must not occur among the children or descendants of entry"
  7996. ]
  7997. "\x{a}" ~
  7998. " "
  7999. ]
  8000. "\x{a}" ~
  8001. " "
  8002. ]
  8003. s:pattern [
  8004. name = "Element exclusion"
  8005. "\x{a}" ~
  8006. " "
  8007. s:rule [
  8008. context = "db:entry"
  8009. "\x{a}" ~
  8010. " "
  8011. s:assert [
  8012. test = "not(.//db:informaltable)"
  8013. "informaltable must not occur among the children or descendants of entry"
  8014. ]
  8015. "\x{a}" ~
  8016. " "
  8017. ]
  8018. "\x{a}" ~
  8019. " "
  8020. ]
  8021. ]
  8022. element entry {
  8023. db.entry.attlist, (db.all.inlines* | db.all.blocks*)
  8024. }
  8025. }
  8026. div {
  8027. db.entrytbl.role.attribute = attribute role { text }
  8028. db.entrytbl.tgroupstyle.attribute =
  8029. ## Additional style information for downstream processing; typically the name of a style.
  8030. attribute tgroupstyle { text }
  8031. db.entrytbl.cols.attribute =
  8032. ## The number of columns in the entry table. Must be an integer greater than zero.
  8033. attribute cols { xsd:positiveInteger }
  8034. db.entrytbl.attlist =
  8035. db.entrytbl.role.attribute?
  8036. & db.common.attributes
  8037. & db.common.linking.attributes
  8038. & db.char.attribute?
  8039. & db.charoff.attribute?
  8040. & db.column-spec.attributes?
  8041. & db.entrytbl.tgroupstyle.attribute?
  8042. & db.entrytbl.cols.attribute?
  8043. & db.colsep.attribute?
  8044. & db.rowsep.attribute?
  8045. & db.align.attribute?
  8046. db.entrytbl =
  8047. ## A subtable appearing in place of an entry in a table
  8048. element entrytbl {
  8049. db.entrytbl.attlist,
  8050. db.colspec*,
  8051. db.spanspec*,
  8052. db.cals.entrytbl.thead?,
  8053. db.cals.entrytbl.tbody
  8054. }
  8055. }
  8056. div {
  8057. db.cals.entrytbl.thead.role.attribute = attribute role { text }
  8058. db.cals.entrytbl.thead.attlist =
  8059. db.cals.entrytbl.thead.role.attribute?
  8060. & db.common.attributes
  8061. & db.common.linking.attributes
  8062. & db.valign.attribute?
  8063. db.cals.entrytbl.thead =
  8064. ## A table header consisting of one or more rows
  8065. element thead {
  8066. db.cals.entrytbl.thead.attlist, db.colspec*, db.entrytbl.row+
  8067. }
  8068. }
  8069. div {
  8070. db.cals.entrytbl.tbody.role.attribute = attribute role { text }
  8071. db.cals.entrytbl.tbody.attlist =
  8072. db.cals.entrytbl.tbody.role.attribute?
  8073. & db.common.attributes
  8074. & db.common.linking.attributes
  8075. & db.valign.attribute?
  8076. db.cals.entrytbl.tbody =
  8077. ## A wrapper for the rows of a table or informal table
  8078. element tbody { db.cals.entrytbl.tbody.attlist, db.entrytbl.row+ }
  8079. }
  8080. div {
  8081. db.entrytbl.row.role.attribute = attribute role { text }
  8082. db.entrytbl.row.attlist =
  8083. db.entrytbl.row.role.attribute?
  8084. & db.common.attributes
  8085. & db.common.linking.attributes
  8086. & db.rowsep.attribute?
  8087. & db.valign.attribute?
  8088. db.entrytbl.row =
  8089. ## A row in a table
  8090. element row { db.entrytbl.row.attlist, db.entry+ }
  8091. }
  8092. div {
  8093. db.cals.table.role.attribute = attribute role { text }
  8094. db.cals.table.label.attribute = db.label.attribute
  8095. db.cals.table.attlist =
  8096. db.cals.table.role.attribute?
  8097. & db.cals.table.label.attribute?
  8098. & db.common.attributes
  8099. & db.common.linking.attributes
  8100. & db.tabstyle.attribute?
  8101. & db.floatstyle.attribute?
  8102. & db.orient.attribute?
  8103. & db.colsep.attribute?
  8104. & db.rowsep.attribute?
  8105. & db.frame.attribute?
  8106. & db.pgwide.attribute?
  8107. &
  8108. ## Indicates if the short or long title should be used in a List of Tables
  8109. attribute shortentry {
  8110. ## Indicates that the full title should be used.
  8111. "0"
  8112. |
  8113. ## Indicates that the short short title (titleabbrev) should be used.
  8114. "1"
  8115. }?
  8116. &
  8117. ## Indicates if the table should appear in a List of Tables
  8118. attribute tocentry {
  8119. ## Indicates that the table should not occur in the List of Tables.
  8120. "0"
  8121. |
  8122. ## Indicates that the table should appear in the List of Tables.
  8123. "1"
  8124. }?
  8125. & db.rowheader.attribute?
  8126. db.cals.table.info = db._info.title.onlyreq
  8127. db.cals.table =
  8128. ## A formal table in a document
  8129. [
  8130. s:pattern [
  8131. name = "Element exclusion"
  8132. "\x{a}" ~
  8133. " "
  8134. s:rule [
  8135. context = "db:table"
  8136. "\x{a}" ~
  8137. " "
  8138. s:assert [
  8139. test = "not(.//db:example)"
  8140. "example must not occur among the children or descendants of table"
  8141. ]
  8142. "\x{a}" ~
  8143. " "
  8144. ]
  8145. "\x{a}" ~
  8146. " "
  8147. ]
  8148. s:pattern [
  8149. name = "Element exclusion"
  8150. "\x{a}" ~
  8151. " "
  8152. s:rule [
  8153. context = "db:table"
  8154. "\x{a}" ~
  8155. " "
  8156. s:assert [
  8157. test = "not(.//db:figure)"
  8158. "figure must not occur among the children or descendants of table"
  8159. ]
  8160. "\x{a}" ~
  8161. " "
  8162. ]
  8163. "\x{a}" ~
  8164. " "
  8165. ]
  8166. s:pattern [
  8167. name = "Element exclusion"
  8168. "\x{a}" ~
  8169. " "
  8170. s:rule [
  8171. context = "db:table"
  8172. "\x{a}" ~
  8173. " "
  8174. s:assert [
  8175. test = "not(.//db:equation)"
  8176. "equation must not occur among the children or descendants of table"
  8177. ]
  8178. "\x{a}" ~
  8179. " "
  8180. ]
  8181. "\x{a}" ~
  8182. " "
  8183. ]
  8184. s:pattern [
  8185. name = "Element exclusion"
  8186. "\x{a}" ~
  8187. " "
  8188. s:rule [
  8189. context = "db:table"
  8190. "\x{a}" ~
  8191. " "
  8192. s:assert [
  8193. test = "not(.//db:caution)"
  8194. "caution must not occur among the children or descendants of table"
  8195. ]
  8196. "\x{a}" ~
  8197. " "
  8198. ]
  8199. "\x{a}" ~
  8200. " "
  8201. ]
  8202. s:pattern [
  8203. name = "Element exclusion"
  8204. "\x{a}" ~
  8205. " "
  8206. s:rule [
  8207. context = "db:table"
  8208. "\x{a}" ~
  8209. " "
  8210. s:assert [
  8211. test = "not(.//db:important)"
  8212. "important must not occur among the children or descendants of table"
  8213. ]
  8214. "\x{a}" ~
  8215. " "
  8216. ]
  8217. "\x{a}" ~
  8218. " "
  8219. ]
  8220. s:pattern [
  8221. name = "Element exclusion"
  8222. "\x{a}" ~
  8223. " "
  8224. s:rule [
  8225. context = "db:table"
  8226. "\x{a}" ~
  8227. " "
  8228. s:assert [
  8229. test = "not(.//db:note)"
  8230. "note must not occur among the children or descendants of table"
  8231. ]
  8232. "\x{a}" ~
  8233. " "
  8234. ]
  8235. "\x{a}" ~
  8236. " "
  8237. ]
  8238. s:pattern [
  8239. name = "Element exclusion"
  8240. "\x{a}" ~
  8241. " "
  8242. s:rule [
  8243. context = "db:table"
  8244. "\x{a}" ~
  8245. " "
  8246. s:assert [
  8247. test = "not(.//db:tip)"
  8248. "tip must not occur among the children or descendants of table"
  8249. ]
  8250. "\x{a}" ~
  8251. " "
  8252. ]
  8253. "\x{a}" ~
  8254. " "
  8255. ]
  8256. s:pattern [
  8257. name = "Element exclusion"
  8258. "\x{a}" ~
  8259. " "
  8260. s:rule [
  8261. context = "db:table"
  8262. "\x{a}" ~
  8263. " "
  8264. s:assert [
  8265. test = "not(.//db:warning)"
  8266. "warning must not occur among the children or descendants of table"
  8267. ]
  8268. "\x{a}" ~
  8269. " "
  8270. ]
  8271. "\x{a}" ~
  8272. " "
  8273. ]
  8274. s:pattern [
  8275. name = "Root must have version"
  8276. "\x{a}" ~
  8277. " "
  8278. s:rule [
  8279. context = "/db:table"
  8280. "\x{a}" ~
  8281. " "
  8282. s:assert [
  8283. test = "@version"
  8284. "If this element is the root element, it must have a version attribute."
  8285. ]
  8286. "\x{a}" ~
  8287. " "
  8288. ]
  8289. "\x{a}" ~
  8290. " "
  8291. ]
  8292. ]
  8293. element table {
  8294. db.cals.table.attlist,
  8295. db.cals.table.info,
  8296. (db.alt? & db.indexing.inlines* & db.textobject*),
  8297. (db.mediaobject+ | db.tgroup+),
  8298. db.caption?
  8299. }
  8300. }
  8301. div {
  8302. db.cals.informaltable.role.attribute = attribute role { text }
  8303. db.cals.informaltable.attlist =
  8304. db.cals.informaltable.role.attribute?
  8305. & db.common.attributes
  8306. & db.common.linking.attributes
  8307. & db.tabstyle.attribute?
  8308. & db.floatstyle.attribute?
  8309. & db.orient.attribute?
  8310. & db.colsep.attribute?
  8311. & db.rowsep.attribute?
  8312. & db.frame.attribute?
  8313. & db.pgwide.attribute?
  8314. & db.rowheader.attribute?
  8315. db.cals.informaltable.info = db._info.title.forbidden
  8316. db.cals.informaltable =
  8317. ## A table without a title
  8318. [
  8319. s:pattern [
  8320. name = "Root must have version"
  8321. "\x{a}" ~
  8322. " "
  8323. s:rule [
  8324. context = "/db:informaltable"
  8325. "\x{a}" ~
  8326. " "
  8327. s:assert [
  8328. test = "@version"
  8329. "If this element is the root element, it must have a version attribute."
  8330. ]
  8331. "\x{a}" ~
  8332. " "
  8333. ]
  8334. "\x{a}" ~
  8335. " "
  8336. ]
  8337. ]
  8338. element informaltable {
  8339. db.cals.informaltable.attlist,
  8340. db.cals.informaltable.info,
  8341. (db.alt? & db.indexing.inlines* & db.textobject*),
  8342. (db.mediaobject+ | db.tgroup+),
  8343. db.caption?
  8344. }
  8345. }
  8346. db.html.coreattrs =
  8347. ## This attribute assigns a class name or set of class names to an element. Any number of elements may be assigned the same class name or names. Multiple class names must be separated by white space characters.
  8348. attribute class { text }?
  8349. &
  8350. ## This attribute specifies style information for the current element.
  8351. attribute style { text }?
  8352. &
  8353. ## This attribute offers advisory information about the element for which it is set.
  8354. attribute title { text }?
  8355. db.html.i18n =
  8356. ## This attribute specifies the base language of an element's attribute values and text content. The default value of this attribute is unknown.
  8357. attribute lang { text }?
  8358. db.html.events =
  8359. ## Occurs when the pointing device button is clicked over an element.
  8360. attribute onclick { text }?
  8361. &
  8362. ## Occurs when the pointing device button is double clicked over an element.
  8363. attribute ondblclick { text }?
  8364. &
  8365. ## Occurs when the pointing device button is pressed over an element.
  8366. attribute onmousedown { text }?
  8367. &
  8368. ## Occurs when the pointing device button is released over an element.
  8369. attribute onmouseup { text }?
  8370. &
  8371. ## Occurs when the pointing device is moved onto an element.
  8372. attribute onmouseover { text }?
  8373. &
  8374. ## Occurs when the pointing device is moved while it is over an element.
  8375. attribute onmousemove { text }?
  8376. &
  8377. ## Occurs when the pointing device is moved away from an element.
  8378. attribute onmouseout { text }?
  8379. &
  8380. ## Occurs when a key is pressed and released over an element.
  8381. attribute onkeypress { text }?
  8382. &
  8383. ## Occurs when a key is pressed down over an element.
  8384. attribute onkeydown { text }?
  8385. &
  8386. ## Occurs when a key is released over an element.
  8387. attribute onkeyup { text }?
  8388. db.html.attrs =
  8389. db.common.attributes
  8390. & db.html.coreattrs
  8391. & db.html.i18n
  8392. & db.html.events
  8393. db.html.cellhalign =
  8394. ## Specifies the alignment of data and the justification of text in a cell.
  8395. attribute align {
  8396. ## Left-flush data/Left-justify text. This is the default value for table data.
  8397. "left"
  8398. |
  8399. ## Center data/Center-justify text. This is the default value for table headers.
  8400. "center"
  8401. |
  8402. ## Right-flush data/Right-justify text.
  8403. "right"
  8404. |
  8405. ## Double-justify text.
  8406. "justify"
  8407. |
  8408. ## Align text around a specific character. If a user agent doesn't support character alignment, behavior in the presence of this value is unspecified.
  8409. "char"
  8410. }?
  8411. &
  8412. ## This attribute specifies a single character within a text fragment to act as an axis for alignment. The default value for this attribute is the decimal point character for the current language as set by the lang attribute (e.g., the period in English and the comma in French). User agents are not required to support this attribute.
  8413. attribute char { text }?
  8414. &
  8415. ## When present, this attribute specifies the offset to the first occurrence of the alignment character on each line. If a line doesn't include the alignment character, it should be horizontally shifted to end at the alignment position. When charoff is used to set the offset of an alignment character, the direction of offset is determined by the current text direction (set by the dir attribute). In left-to-right texts (the default), offset is from the left margin. In right-to-left texts, offset is from the right margin. User agents are not required to support this attribute.
  8416. attribute charoff {
  8417. xsd:integer >> a:documentation [ "An explicit offset." ]
  8418. | xsd:string { pattern = "[0-9]+%" }
  8419. >> a:documentation [ "A percentage offset." ]
  8420. }?
  8421. db.html.cellvalign =
  8422. ## Specifies the vertical position of data within a cell.
  8423. attribute valign {
  8424. ## Cell data is flush with the top of the cell.
  8425. "top"
  8426. |
  8427. ## Cell data is centered vertically within the cell. This is the default value.
  8428. "middle"
  8429. |
  8430. ## Cell data is flush with the bottom of the cell.
  8431. "bottom"
  8432. |
  8433. ## All cells in the same row as a cell whose valign attribute has this value should have their textual data positioned so that the first text line occurs on a baseline common to all cells in the row. This constraint does not apply to subsequent text lines in these cells.
  8434. "baseline"
  8435. }?
  8436. db.html.table.attributes =
  8437. ## Provides a summary of the table's purpose and structure for user agents rendering to non-visual media such as speech and Braille.
  8438. attribute summary { text }?
  8439. &
  8440. ## Specifies the desired width of the entire table and is intended for visual user agents. When the value is a percentage value, the value is relative to the user agent's available horizontal space. In the absence of any width specification, table width is determined by the user agent.
  8441. attribute width {
  8442. xsd:integer >> a:documentation [ "An explicit width." ]
  8443. | xsd:string { pattern = "[0-9]+%" }
  8444. >> a:documentation [ "A percentage width." ]
  8445. }?
  8446. &
  8447. ## Specifies the width (in pixels only) of the frame around a table.
  8448. attribute border { xsd:nonNegativeInteger }?
  8449. &
  8450. ## Specifies which sides of the frame surrounding a table will be visible.
  8451. attribute frame {
  8452. ## No sides. This is the default value.
  8453. "void"
  8454. |
  8455. ## The top side only.
  8456. "above"
  8457. |
  8458. ## The bottom side only.
  8459. "below"
  8460. |
  8461. ## The top and bottom sides only.
  8462. "hsides"
  8463. |
  8464. ## The left-hand side only.
  8465. "lhs"
  8466. |
  8467. ## The right-hand side only.
  8468. "rhs"
  8469. |
  8470. ## The right and left sides only.
  8471. "vsides"
  8472. |
  8473. ## All four sides.
  8474. "box"
  8475. |
  8476. ## All four sides.
  8477. "border"
  8478. }?
  8479. &
  8480. ## Specifies which rules will appear between cells within a table. The rendering of rules is user agent dependent.
  8481. attribute rules {
  8482. ## No rules. This is the default value.
  8483. "none"
  8484. |
  8485. ## Rules will appear between row groups (see thead, tfoot, and tbody) and column groups (see colgroup and col) only.
  8486. "groups"
  8487. |
  8488. ## Rules will appear between rows only.
  8489. "rows"
  8490. |
  8491. ## Rules will appear between columns only.
  8492. "cols"
  8493. |
  8494. ## Rules will appear between all rows and columns.
  8495. "all"
  8496. }?
  8497. &
  8498. ## Specifies how much space the user agent should leave between the left side of the table and the left-hand side of the leftmost column, the top of the table and the top side of the topmost row, and so on for the right and bottom of the table. The attribute also specifies the amount of space to leave between cells.
  8499. attribute cellspacing {
  8500. xsd:integer >> a:documentation [ "An explicit spacing." ]
  8501. | xsd:string { pattern = "[0-9]+%" }
  8502. >> a:documentation [ "A percentage spacing." ]
  8503. }?
  8504. &
  8505. ## Specifies the amount of space between the border of the cell and its contents. If the value of this attribute is a pixel length, all four margins should be this distance from the contents. If the value of the attribute is a percentage length, the top and bottom margins should be equally separated from the content based on a percentage of the available vertical space, and the left and right margins should be equally separated from the content based on a percentage of the available horizontal space.
  8506. attribute cellpadding {
  8507. xsd:integer >> a:documentation [ "An explicit padding." ]
  8508. | xsd:string { pattern = "[0-9]+%" }
  8509. >> a:documentation [ "A percentage padding." ]
  8510. }?
  8511. db.html.tablecell.attributes =
  8512. ## Provides an abbreviated form of the cell's content and may be rendered by user agents when appropriate in place of the cell's content. Abbreviated names should be short since user agents may render them repeatedly. For instance, speech synthesizers may render the abbreviated headers relating to a particular cell before rendering that cell's content.
  8513. attribute abbr { text }?
  8514. &
  8515. ## This attribute may be used to place a cell into conceptual categories that can be considered to form axes in an n-dimensional space. User agents may give users access to these categories (e.g., the user may query the user agent for all cells that belong to certain categories, the user agent may present a table in the form of a table of contents, etc.). Please consult an HTML reference for more details.
  8516. attribute axis { text }?
  8517. &
  8518. ## Specifies the list of header cells that provide header information for the current data cell. The value of this attribute is a space-separated list of cell names; those cells must be named by setting their id attribute. Authors generally use the headers attribute to help non-visual user agents render header information about data cells (e.g., header information is spoken prior to the cell data), but the attribute may also be used in conjunction with style sheets.
  8519. attribute headers { text }?
  8520. &
  8521. ## Specifies the set of data cells for which the current header cell provides header information. This attribute may be used in place of the headers attribute, particularly for simple tables.
  8522. attribute scope {
  8523. ## The current cell provides header information for the rest of the row that contains it
  8524. "row"
  8525. |
  8526. ## The current cell provides header information for the rest of the column that contains it.
  8527. "col"
  8528. |
  8529. ## The header cell provides header information for the rest of the row group that contains it.
  8530. "rowgroup"
  8531. |
  8532. ## The header cell provides header information for the rest of the column group that contains it.
  8533. "colgroup"
  8534. }?
  8535. &
  8536. ## Specifies the number of rows spanned by the current cell. The default value of this attribute is one (1
  8537. ## ). The value zero (0
  8538. ## ) means that the cell spans all rows from the current row to the last row of the table section (thead
  8539. ## , tbody
  8540. ## , or tfoot
  8541. ## ) in which the cell is defined.
  8542. attribute rowspan { xsd:nonNegativeInteger }?
  8543. &
  8544. ## Specifies the number of columns spanned by the current cell. The default value of this attribute is one (1
  8545. ## ). The value zero (0
  8546. ## ) means that the cell spans all columns from the current column to the last column of the column group (colgroup
  8547. ## ) in which the cell is defined.
  8548. attribute colspan { xsd:nonNegativeInteger }?
  8549. db.html.table.info = db._info.title.forbidden
  8550. db.html.table.model =
  8551. db.html.table.info?,
  8552. db.html.caption,
  8553. (db.html.col* | db.html.colgroup*),
  8554. db.html.thead?,
  8555. db.html.tfoot?,
  8556. (db.html.tbody+ | db.html.tr+)
  8557. db.html.informaltable.info = db._info.title.forbidden
  8558. db.html.informaltable.model =
  8559. db.html.informaltable.info?,
  8560. (db.html.col* | db.html.colgroup*),
  8561. db.html.thead?,
  8562. db.html.tfoot?,
  8563. (db.html.tbody+ | db.html.tr+)
  8564. div {
  8565. db.html.table.role.attribute = attribute role { text }
  8566. db.html.table.label.attribute = db.label.attribute
  8567. db.html.table.attlist =
  8568. db.html.attrs
  8569. & db.html.table.attributes
  8570. & db.html.table.role.attribute?
  8571. & db.html.table.label.attribute?
  8572. & db.orient.attribute?
  8573. & db.pgwide.attribute?
  8574. & db.tabstyle.attribute?
  8575. & db.floatstyle.attribute?
  8576. db.html.table =
  8577. ## A formal (captioned) HTML table in a document
  8578. [
  8579. s:pattern [
  8580. name = "Element exclusion"
  8581. "\x{a}" ~
  8582. " "
  8583. s:rule [
  8584. context = "db:table"
  8585. "\x{a}" ~
  8586. " "
  8587. s:assert [
  8588. test = "not(.//db:example)"
  8589. "example must not occur among the children or descendants of table"
  8590. ]
  8591. "\x{a}" ~
  8592. " "
  8593. ]
  8594. "\x{a}" ~
  8595. " "
  8596. ]
  8597. s:pattern [
  8598. name = "Element exclusion"
  8599. "\x{a}" ~
  8600. " "
  8601. s:rule [
  8602. context = "db:table"
  8603. "\x{a}" ~
  8604. " "
  8605. s:assert [
  8606. test = "not(.//db:figure)"
  8607. "figure must not occur among the children or descendants of table"
  8608. ]
  8609. "\x{a}" ~
  8610. " "
  8611. ]
  8612. "\x{a}" ~
  8613. " "
  8614. ]
  8615. s:pattern [
  8616. name = "Element exclusion"
  8617. "\x{a}" ~
  8618. " "
  8619. s:rule [
  8620. context = "db:table"
  8621. "\x{a}" ~
  8622. " "
  8623. s:assert [
  8624. test = "not(.//db:equation)"
  8625. "equation must not occur among the children or descendants of table"
  8626. ]
  8627. "\x{a}" ~
  8628. " "
  8629. ]
  8630. "\x{a}" ~
  8631. " "
  8632. ]
  8633. s:pattern [
  8634. name = "Element exclusion"
  8635. "\x{a}" ~
  8636. " "
  8637. s:rule [
  8638. context = "db:table"
  8639. "\x{a}" ~
  8640. " "
  8641. s:assert [
  8642. test = "not(.//db:caution)"
  8643. "caution must not occur among the children or descendants of table"
  8644. ]
  8645. "\x{a}" ~
  8646. " "
  8647. ]
  8648. "\x{a}" ~
  8649. " "
  8650. ]
  8651. s:pattern [
  8652. name = "Element exclusion"
  8653. "\x{a}" ~
  8654. " "
  8655. s:rule [
  8656. context = "db:table"
  8657. "\x{a}" ~
  8658. " "
  8659. s:assert [
  8660. test = "not(.//db:important)"
  8661. "important must not occur among the children or descendants of table"
  8662. ]
  8663. "\x{a}" ~
  8664. " "
  8665. ]
  8666. "\x{a}" ~
  8667. " "
  8668. ]
  8669. s:pattern [
  8670. name = "Element exclusion"
  8671. "\x{a}" ~
  8672. " "
  8673. s:rule [
  8674. context = "db:table"
  8675. "\x{a}" ~
  8676. " "
  8677. s:assert [
  8678. test = "not(.//db:note)"
  8679. "note must not occur among the children or descendants of table"
  8680. ]
  8681. "\x{a}" ~
  8682. " "
  8683. ]
  8684. "\x{a}" ~
  8685. " "
  8686. ]
  8687. s:pattern [
  8688. name = "Element exclusion"
  8689. "\x{a}" ~
  8690. " "
  8691. s:rule [
  8692. context = "db:table"
  8693. "\x{a}" ~
  8694. " "
  8695. s:assert [
  8696. test = "not(.//db:tip)"
  8697. "tip must not occur among the children or descendants of table"
  8698. ]
  8699. "\x{a}" ~
  8700. " "
  8701. ]
  8702. "\x{a}" ~
  8703. " "
  8704. ]
  8705. s:pattern [
  8706. name = "Element exclusion"
  8707. "\x{a}" ~
  8708. " "
  8709. s:rule [
  8710. context = "db:table"
  8711. "\x{a}" ~
  8712. " "
  8713. s:assert [
  8714. test = "not(.//db:warning)"
  8715. "warning must not occur among the children or descendants of table"
  8716. ]
  8717. "\x{a}" ~
  8718. " "
  8719. ]
  8720. "\x{a}" ~
  8721. " "
  8722. ]
  8723. s:pattern [
  8724. name = "Root must have version"
  8725. "\x{a}" ~
  8726. " "
  8727. s:rule [
  8728. context = "/db:table"
  8729. "\x{a}" ~
  8730. " "
  8731. s:assert [
  8732. test = "@version"
  8733. "If this element is the root element, it must have a version attribute."
  8734. ]
  8735. "\x{a}" ~
  8736. " "
  8737. ]
  8738. "\x{a}" ~
  8739. " "
  8740. ]
  8741. ]
  8742. element table { db.html.table.attlist, db.html.table.model }
  8743. }
  8744. div {
  8745. db.html.informaltable.role.attribute = attribute role { text }
  8746. db.html.informaltable.label.attribute = db.label.attribute
  8747. db.html.informaltable.attlist =
  8748. db.html.attrs
  8749. & db.html.table.attributes
  8750. & db.html.informaltable.role.attribute?
  8751. & db.html.informaltable.label.attribute?
  8752. & db.orient.attribute?
  8753. & db.pgwide.attribute?
  8754. & db.tabstyle.attribute?
  8755. & db.floatstyle.attribute?
  8756. db.html.informaltable =
  8757. ## An HTML table without a title
  8758. [
  8759. s:pattern [
  8760. name = "Root must have version"
  8761. "\x{a}" ~
  8762. " "
  8763. s:rule [
  8764. context = "/db:informaltable"
  8765. "\x{a}" ~
  8766. " "
  8767. s:assert [
  8768. test = "@version"
  8769. "If this element is the root element, it must have a version attribute."
  8770. ]
  8771. "\x{a}" ~
  8772. " "
  8773. ]
  8774. "\x{a}" ~
  8775. " "
  8776. ]
  8777. ]
  8778. element informaltable {
  8779. db.html.informaltable.attlist, db.html.informaltable.model
  8780. }
  8781. }
  8782. div {
  8783. db.html.caption.attlist = db.html.attrs
  8784. db.html.caption =
  8785. ## An HTML table caption
  8786. [
  8787. s:pattern [
  8788. name = "Element exclusion"
  8789. "\x{a}" ~
  8790. " "
  8791. s:rule [
  8792. context = "db:caption"
  8793. "\x{a}" ~
  8794. " "
  8795. s:assert [
  8796. test = "not(.//db:example)"
  8797. "example must not occur among the children or descendants of caption"
  8798. ]
  8799. "\x{a}" ~
  8800. " "
  8801. ]
  8802. "\x{a}" ~
  8803. " "
  8804. ]
  8805. s:pattern [
  8806. name = "Element exclusion"
  8807. "\x{a}" ~
  8808. " "
  8809. s:rule [
  8810. context = "db:caption"
  8811. "\x{a}" ~
  8812. " "
  8813. s:assert [
  8814. test = "not(.//db:figure)"
  8815. "figure must not occur among the children or descendants of caption"
  8816. ]
  8817. "\x{a}" ~
  8818. " "
  8819. ]
  8820. "\x{a}" ~
  8821. " "
  8822. ]
  8823. s:pattern [
  8824. name = "Element exclusion"
  8825. "\x{a}" ~
  8826. " "
  8827. s:rule [
  8828. context = "db:caption"
  8829. "\x{a}" ~
  8830. " "
  8831. s:assert [
  8832. test = "not(.//db:table)"
  8833. "table must not occur among the children or descendants of caption"
  8834. ]
  8835. "\x{a}" ~
  8836. " "
  8837. ]
  8838. "\x{a}" ~
  8839. " "
  8840. ]
  8841. s:pattern [
  8842. name = "Element exclusion"
  8843. "\x{a}" ~
  8844. " "
  8845. s:rule [
  8846. context = "db:caption"
  8847. "\x{a}" ~
  8848. " "
  8849. s:assert [
  8850. test = "not(.//db:equation)"
  8851. "equation must not occur among the children or descendants of caption"
  8852. ]
  8853. "\x{a}" ~
  8854. " "
  8855. ]
  8856. "\x{a}" ~
  8857. " "
  8858. ]
  8859. s:pattern [
  8860. name = "Element exclusion"
  8861. "\x{a}" ~
  8862. " "
  8863. s:rule [
  8864. context = "db:caption"
  8865. "\x{a}" ~
  8866. " "
  8867. s:assert [
  8868. test = "not(.//db:sidebar)"
  8869. "sidebar must not occur among the children or descendants of caption"
  8870. ]
  8871. "\x{a}" ~
  8872. " "
  8873. ]
  8874. "\x{a}" ~
  8875. " "
  8876. ]
  8877. s:pattern [
  8878. name = "Element exclusion"
  8879. "\x{a}" ~
  8880. " "
  8881. s:rule [
  8882. context = "db:caption"
  8883. "\x{a}" ~
  8884. " "
  8885. s:assert [
  8886. test = "not(.//db:task)"
  8887. "task must not occur among the children or descendants of caption"
  8888. ]
  8889. "\x{a}" ~
  8890. " "
  8891. ]
  8892. "\x{a}" ~
  8893. " "
  8894. ]
  8895. s:pattern [
  8896. name = "Element exclusion"
  8897. "\x{a}" ~
  8898. " "
  8899. s:rule [
  8900. context = "db:caption"
  8901. "\x{a}" ~
  8902. " "
  8903. s:assert [
  8904. test = "not(.//db:caution)"
  8905. "caution must not occur among the children or descendants of caption"
  8906. ]
  8907. "\x{a}" ~
  8908. " "
  8909. ]
  8910. "\x{a}" ~
  8911. " "
  8912. ]
  8913. s:pattern [
  8914. name = "Element exclusion"
  8915. "\x{a}" ~
  8916. " "
  8917. s:rule [
  8918. context = "db:caption"
  8919. "\x{a}" ~
  8920. " "
  8921. s:assert [
  8922. test = "not(.//db:important)"
  8923. "important must not occur among the children or descendants of caption"
  8924. ]
  8925. "\x{a}" ~
  8926. " "
  8927. ]
  8928. "\x{a}" ~
  8929. " "
  8930. ]
  8931. s:pattern [
  8932. name = "Element exclusion"
  8933. "\x{a}" ~
  8934. " "
  8935. s:rule [
  8936. context = "db:caption"
  8937. "\x{a}" ~
  8938. " "
  8939. s:assert [
  8940. test = "not(.//db:note)"
  8941. "note must not occur among the children or descendants of caption"
  8942. ]
  8943. "\x{a}" ~
  8944. " "
  8945. ]
  8946. "\x{a}" ~
  8947. " "
  8948. ]
  8949. s:pattern [
  8950. name = "Element exclusion"
  8951. "\x{a}" ~
  8952. " "
  8953. s:rule [
  8954. context = "db:caption"
  8955. "\x{a}" ~
  8956. " "
  8957. s:assert [
  8958. test = "not(.//db:tip)"
  8959. "tip must not occur among the children or descendants of caption"
  8960. ]
  8961. "\x{a}" ~
  8962. " "
  8963. ]
  8964. "\x{a}" ~
  8965. " "
  8966. ]
  8967. s:pattern [
  8968. name = "Element exclusion"
  8969. "\x{a}" ~
  8970. " "
  8971. s:rule [
  8972. context = "db:caption"
  8973. "\x{a}" ~
  8974. " "
  8975. s:assert [
  8976. test = "not(.//db:warning)"
  8977. "warning must not occur among the children or descendants of caption"
  8978. ]
  8979. "\x{a}" ~
  8980. " "
  8981. ]
  8982. "\x{a}" ~
  8983. " "
  8984. ]
  8985. s:pattern [
  8986. name = "Root must have version"
  8987. "\x{a}" ~
  8988. " "
  8989. s:rule [
  8990. context = "/db:caption"
  8991. "\x{a}" ~
  8992. " "
  8993. s:assert [
  8994. test = "@version"
  8995. "If this element is the root element, it must have a version attribute."
  8996. ]
  8997. "\x{a}" ~
  8998. " "
  8999. ]
  9000. "\x{a}" ~
  9001. " "
  9002. ]
  9003. ]
  9004. element caption { db.html.caption.attlist, db.all.inlines* }
  9005. }
  9006. div {
  9007. db.html.col.attlist =
  9008. db.html.attrs
  9009. &
  9010. ## This attribute, whose value must be an integer > 0, specifies the number of columns spanned
  9011. ## by the col
  9012. ## element; the col
  9013. ## element shares its attributes with all the columns it spans. The default value for this attribute is 1 (i.e., a single column). If the span attribute is set to N > 1, the current col
  9014. ## element shares its attributes with the next N-1 columns.
  9015. attribute span { xsd:nonNegativeInteger }?
  9016. &
  9017. ## Specifies a default width for each column spanned by the current col
  9018. ## element. It has the same meaning as the width
  9019. ## attribute for the colgroup
  9020. ## element and overrides it.
  9021. attribute width { text }?
  9022. & db.html.cellhalign
  9023. & db.html.cellvalign
  9024. db.html.col =
  9025. ## Specifications for a column in an HTML table
  9026. element col { db.html.col.attlist, empty }
  9027. }
  9028. div {
  9029. db.html.colgroup.attlist =
  9030. db.html.attrs
  9031. &
  9032. ## This attribute, which must be an integer > 0, specifies the number of columns in a column group. In the absence of a span attribute, each colgroup
  9033. ## defines a column group containing one column. If the span attribute is set to N > 0, the current colgroup
  9034. ## element defines a column group containing N columns. User agents must ignore this attribute if the colgroup
  9035. ## element contains one or more col
  9036. ## elements.
  9037. attribute span { xsd:nonNegativeInteger }?
  9038. &
  9039. ## This attribute specifies a default width for each column in the current column group. In addition to the standard pixel, percentage, and relative values, this attribute allows the special form 0*
  9040. ## (zero asterisk) which means that the width of the each column in the group should be the minimum width necessary to hold the column's contents. This implies that a column's entire contents must be known before its width may be correctly computed. Authors should be aware that specifying 0*
  9041. ## will prevent visual user agents from rendering a table incrementally. This attribute is overridden for any column in the column group whose width is specified via a col
  9042. ## element.
  9043. attribute width { text }?
  9044. & db.html.cellhalign
  9045. & db.html.cellvalign
  9046. db.html.colgroup =
  9047. ## A group of columns in an HTML table
  9048. element colgroup { db.html.colgroup.attlist, db.html.col* }
  9049. }
  9050. div {
  9051. db.html.thead.attlist =
  9052. db.html.attrs & db.html.cellhalign & db.html.cellvalign
  9053. db.html.thead =
  9054. ## A table header consisting of one or more rows in an HTML table
  9055. element thead { db.html.thead.attlist, db.html.tr+ }
  9056. }
  9057. div {
  9058. db.html.tfoot.attlist =
  9059. db.html.attrs & db.html.cellhalign & db.html.cellvalign
  9060. db.html.tfoot =
  9061. ## A table footer consisting of one or more rows in an HTML table
  9062. element tfoot { db.html.tfoot.attlist, db.html.tr+ }
  9063. }
  9064. div {
  9065. db.html.tbody.attlist =
  9066. db.html.attrs & db.html.cellhalign & db.html.cellvalign
  9067. db.html.tbody =
  9068. ## A wrapper for the rows of an HTML table or informal HTML table
  9069. element tbody { db.html.tbody.attlist, db.html.tr+ }
  9070. }
  9071. div {
  9072. db.html.tr.attlist =
  9073. db.html.attrs & db.html.cellhalign & db.html.cellvalign
  9074. db.html.tr =
  9075. ## A row in an HTML table
  9076. element tr { db.html.tr.attlist, (db.html.th | db.html.td)+ }
  9077. }
  9078. div {
  9079. db.html.th.attlist =
  9080. db.html.attrs
  9081. & db.html.tablecell.attributes
  9082. & db.html.cellhalign
  9083. & db.html.cellvalign
  9084. db.html.th =
  9085. ## A table header entry in an HTML table
  9086. element th {
  9087. db.html.th.attlist, (db.all.inlines* | db.all.blocks*)
  9088. }
  9089. }
  9090. div {
  9091. db.html.td.attlist =
  9092. db.html.attrs
  9093. & db.html.tablecell.attributes
  9094. & db.html.cellhalign
  9095. & db.html.cellvalign
  9096. db.html.td =
  9097. ## A table entry in an HTML table
  9098. element td {
  9099. db.html.td.attlist, (db.all.inlines* | db.all.blocks*)
  9100. }
  9101. }
  9102. div {
  9103. db.msgset.role.attribute = attribute role { text }
  9104. db.msgset.attlist =
  9105. db.msgset.role.attribute?
  9106. & db.common.attributes
  9107. & db.common.linking.attributes
  9108. db.msgset.info = db._info.title.only
  9109. db.msgset =
  9110. ## A detailed set of messages, usually error messages
  9111. [
  9112. s:pattern [
  9113. name = "Root must have version"
  9114. "\x{a}" ~
  9115. " "
  9116. s:rule [
  9117. context = "/db:msgset"
  9118. "\x{a}" ~
  9119. " "
  9120. s:assert [
  9121. test = "@version"
  9122. "If this element is the root element, it must have a version attribute."
  9123. ]
  9124. "\x{a}" ~
  9125. " "
  9126. ]
  9127. "\x{a}" ~
  9128. " "
  9129. ]
  9130. ]
  9131. element msgset {
  9132. db.msgset.attlist,
  9133. db.msgset.info,
  9134. (db.msgentry+ | db.simplemsgentry+)
  9135. }
  9136. }
  9137. div {
  9138. db.msgentry.role.attribute = attribute role { text }
  9139. db.msgentry.attlist =
  9140. db.msgentry.role.attribute?
  9141. & db.common.attributes
  9142. & db.common.linking.attributes
  9143. db.msgentry =
  9144. ## A wrapper for an entry in a message set
  9145. element msgentry {
  9146. db.msgentry.attlist, db.msg+, db.msginfo?, db.msgexplan*
  9147. }
  9148. }
  9149. div {
  9150. db.simplemsgentry.role.attribute = attribute role { text }
  9151. db.simplemsgentry.msgaud.attribute =
  9152. ## The audience to which the message relevant
  9153. attribute msgaud { text }
  9154. db.simplemsgentry.msgorig.attribute =
  9155. ## The origin of the message
  9156. attribute msgorig { text }
  9157. db.simplemsgentry.msglevel.attribute =
  9158. ## The level of importance or severity of a message
  9159. attribute msglevel { text }
  9160. db.simplemsgentry.attlist =
  9161. db.simplemsgentry.role.attribute?
  9162. & db.common.attributes
  9163. & db.common.linking.attributes
  9164. & db.simplemsgentry.msgaud.attribute?
  9165. & db.simplemsgentry.msgorig.attribute?
  9166. & db.simplemsgentry.msglevel.attribute?
  9167. db.simplemsgentry =
  9168. ## A wrapper for a simpler entry in a message set
  9169. element simplemsgentry {
  9170. db.simplemsgentry.attlist, db.msgtext, db.msgexplan+
  9171. }
  9172. }
  9173. div {
  9174. db.msg.role.attribute = attribute role { text }
  9175. db.msg.attlist =
  9176. db.msg.role.attribute?
  9177. & db.common.attributes
  9178. & db.common.linking.attributes
  9179. db.msg.info = db._info.title.only
  9180. db.msg =
  9181. ## A message in a message set
  9182. [
  9183. s:pattern [
  9184. name = "Root must have version"
  9185. "\x{a}" ~
  9186. " "
  9187. s:rule [
  9188. context = "/db:msg"
  9189. "\x{a}" ~
  9190. " "
  9191. s:assert [
  9192. test = "@version"
  9193. "If this element is the root element, it must have a version attribute."
  9194. ]
  9195. "\x{a}" ~
  9196. " "
  9197. ]
  9198. "\x{a}" ~
  9199. " "
  9200. ]
  9201. ]
  9202. element msg {
  9203. db.msg.attlist, db.msg.info, db.msgmain, (db.msgsub | db.msgrel)*
  9204. }
  9205. }
  9206. div {
  9207. db.msgmain.role.attribute = attribute role { text }
  9208. db.msgmain.attlist =
  9209. db.msgmain.role.attribute?
  9210. & db.common.attributes
  9211. & db.common.linking.attributes
  9212. db.msgmain.info = db._info.title.only
  9213. db.msgmain =
  9214. ## The primary component of a message in a message set
  9215. [
  9216. s:pattern [
  9217. name = "Root must have version"
  9218. "\x{a}" ~
  9219. " "
  9220. s:rule [
  9221. context = "/db:msgmain"
  9222. "\x{a}" ~
  9223. " "
  9224. s:assert [
  9225. test = "@version"
  9226. "If this element is the root element, it must have a version attribute."
  9227. ]
  9228. "\x{a}" ~
  9229. " "
  9230. ]
  9231. "\x{a}" ~
  9232. " "
  9233. ]
  9234. ]
  9235. element msgmain { db.msgmain.attlist, db.msgmain.info, db.msgtext }
  9236. }
  9237. div {
  9238. db.msgsub.role.attribute = attribute role { text }
  9239. db.msgsub.attlist =
  9240. db.msgsub.role.attribute?
  9241. & db.common.attributes
  9242. & db.common.linking.attributes
  9243. db.msgsub.info = db._info.title.only
  9244. db.msgsub =
  9245. ## A subcomponent of a message in a message set
  9246. [
  9247. s:pattern [
  9248. name = "Root must have version"
  9249. "\x{a}" ~
  9250. " "
  9251. s:rule [
  9252. context = "/db:msgsub"
  9253. "\x{a}" ~
  9254. " "
  9255. s:assert [
  9256. test = "@version"
  9257. "If this element is the root element, it must have a version attribute."
  9258. ]
  9259. "\x{a}" ~
  9260. " "
  9261. ]
  9262. "\x{a}" ~
  9263. " "
  9264. ]
  9265. ]
  9266. element msgsub { db.msgsub.attlist, db.msgsub.info, db.msgtext }
  9267. }
  9268. div {
  9269. db.msgrel.role.attribute = attribute role { text }
  9270. db.msgrel.attlist =
  9271. db.msgrel.role.attribute?
  9272. & db.common.attributes
  9273. & db.common.linking.attributes
  9274. db.msgrel.info = db._info.title.only
  9275. db.msgrel =
  9276. ## A related component of a message in a message set
  9277. [
  9278. s:pattern [
  9279. name = "Root must have version"
  9280. "\x{a}" ~
  9281. " "
  9282. s:rule [
  9283. context = "/db:msgrel"
  9284. "\x{a}" ~
  9285. " "
  9286. s:assert [
  9287. test = "@version"
  9288. "If this element is the root element, it must have a version attribute."
  9289. ]
  9290. "\x{a}" ~
  9291. " "
  9292. ]
  9293. "\x{a}" ~
  9294. " "
  9295. ]
  9296. ]
  9297. element msgrel { db.msgrel.attlist, db.msgrel.info, db.msgtext }
  9298. }
  9299. div {
  9300. db.msgtext.role.attribute = attribute role { text }
  9301. db.msgtext.attlist =
  9302. db.msgtext.role.attribute?
  9303. & db.common.attributes
  9304. & db.common.linking.attributes
  9305. db.msgtext =
  9306. ## The actual text of a message component in a message set
  9307. element msgtext { db.msgtext.attlist, db.all.blocks+ }
  9308. }
  9309. div {
  9310. db.msginfo.role.attribute = attribute role { text }
  9311. db.msginfo.attlist =
  9312. db.msginfo.role.attribute?
  9313. & db.common.attributes
  9314. & db.common.linking.attributes
  9315. db.msginfo =
  9316. ## Information about a message in a message set
  9317. element msginfo {
  9318. db.msginfo.attlist, (db.msglevel | db.msgorig | db.msgaud)*
  9319. }
  9320. }
  9321. div {
  9322. db.msglevel.role.attribute = attribute role { text }
  9323. db.msglevel.attlist =
  9324. db.msglevel.role.attribute?
  9325. & db.common.attributes
  9326. & db.common.linking.attributes
  9327. db.msglevel =
  9328. ## The level of importance or severity of a message in a message set
  9329. element msglevel { db.msglevel.attlist, db._text }
  9330. }
  9331. div {
  9332. db.msgorig.role.attribute = attribute role { text }
  9333. db.msgorig.attlist =
  9334. db.msgorig.role.attribute?
  9335. & db.common.attributes
  9336. & db.common.linking.attributes
  9337. db.msgorig =
  9338. ## The origin of a message in a message set
  9339. element msgorig { db.msgorig.attlist, db._text }
  9340. }
  9341. div {
  9342. db.msgaud.role.attribute = attribute role { text }
  9343. db.msgaud.attlist =
  9344. db.msgaud.role.attribute?
  9345. & db.common.attributes
  9346. & db.common.linking.attributes
  9347. db.msgaud =
  9348. ## The audience to which a message in a message set is relevant
  9349. element msgaud { db.msgaud.attlist, db._text }
  9350. }
  9351. div {
  9352. db.msgexplan.role.attribute = attribute role { text }
  9353. db.msgexplan.attlist =
  9354. db.msgexplan.role.attribute?
  9355. & db.common.attributes
  9356. & db.common.linking.attributes
  9357. db.msgexplan.info = db._info.title.only
  9358. db.msgexplan =
  9359. ## Explanatory material relating to a message in a message set
  9360. [
  9361. s:pattern [
  9362. name = "Root must have version"
  9363. "\x{a}" ~
  9364. " "
  9365. s:rule [
  9366. context = "/db:msgexplan"
  9367. "\x{a}" ~
  9368. " "
  9369. s:assert [
  9370. test = "@version"
  9371. "If this element is the root element, it must have a version attribute."
  9372. ]
  9373. "\x{a}" ~
  9374. " "
  9375. ]
  9376. "\x{a}" ~
  9377. " "
  9378. ]
  9379. ]
  9380. element msgexplan {
  9381. db.msgexplan.attlist, db.msgexplan.info, db.all.blocks+
  9382. }
  9383. }
  9384. div {
  9385. db.qandaset.role.attribute = attribute role { text }
  9386. db.qandaset.defaultlabel.enumeration =
  9387. ## No labels
  9388. "none"
  9389. |
  9390. ## Numeric labels
  9391. "number"
  9392. |
  9393. ## "Q:" and "A:" labels
  9394. "qanda"
  9395. db.qandaset.defaultlabel.attribute =
  9396. ## Specifies the default labelling
  9397. attribute defaultlabel { db.qandaset.defaultlabel.enumeration }
  9398. db.qandaset.attlist =
  9399. db.qandaset.role.attribute?
  9400. & db.common.attributes
  9401. & db.common.linking.attributes
  9402. & db.qandaset.defaultlabel.attribute?
  9403. db.qandaset.info = db._info.title.only
  9404. db.qandaset =
  9405. ## A question-and-answer set
  9406. [
  9407. s:pattern [
  9408. name = "Root must have version"
  9409. "\x{a}" ~
  9410. " "
  9411. s:rule [
  9412. context = "/db:qandaset"
  9413. "\x{a}" ~
  9414. " "
  9415. s:assert [
  9416. test = "@version"
  9417. "If this element is the root element, it must have a version attribute."
  9418. ]
  9419. "\x{a}" ~
  9420. " "
  9421. ]
  9422. "\x{a}" ~
  9423. " "
  9424. ]
  9425. ]
  9426. element qandaset {
  9427. db.qandaset.attlist,
  9428. db.qandaset.info,
  9429. db.all.blocks*,
  9430. (db.qandadiv+ | db.qandaentry+)
  9431. }
  9432. }
  9433. div {
  9434. db.qandadiv.role.attribute = attribute role { text }
  9435. db.qandadiv.attlist =
  9436. db.qandadiv.role.attribute?
  9437. & db.common.attributes
  9438. & db.common.linking.attributes
  9439. db.qandadiv.info = db._info.title.only
  9440. db.qandadiv =
  9441. ## A titled division in a qandaset
  9442. [
  9443. s:pattern [
  9444. name = "Root must have version"
  9445. "\x{a}" ~
  9446. " "
  9447. s:rule [
  9448. context = "/db:qandadiv"
  9449. "\x{a}" ~
  9450. " "
  9451. s:assert [
  9452. test = "@version"
  9453. "If this element is the root element, it must have a version attribute."
  9454. ]
  9455. "\x{a}" ~
  9456. " "
  9457. ]
  9458. "\x{a}" ~
  9459. " "
  9460. ]
  9461. ]
  9462. element qandadiv {
  9463. db.qandadiv.attlist,
  9464. db.qandadiv.info,
  9465. db.all.blocks*,
  9466. (db.qandadiv+ | db.qandaentry+)
  9467. }
  9468. }
  9469. div {
  9470. db.qandaentry.role.attribute = attribute role { text }
  9471. db.qandaentry.attlist =
  9472. db.qandaentry.role.attribute?
  9473. & db.common.attributes
  9474. & db.common.linking.attributes
  9475. db.qandaentry.info = db._info.title.only
  9476. db.qandaentry =
  9477. ## A question/answer set within a qandaset
  9478. [
  9479. s:pattern [
  9480. name = "Root must have version"
  9481. "\x{a}" ~
  9482. " "
  9483. s:rule [
  9484. context = "/db:qandaentry"
  9485. "\x{a}" ~
  9486. " "
  9487. s:assert [
  9488. test = "@version"
  9489. "If this element is the root element, it must have a version attribute."
  9490. ]
  9491. "\x{a}" ~
  9492. " "
  9493. ]
  9494. "\x{a}" ~
  9495. " "
  9496. ]
  9497. ]
  9498. element qandaentry {
  9499. db.qandaentry.attlist, db.qandaentry.info, db.question, db.answer*
  9500. }
  9501. }
  9502. div {
  9503. db.question.role.attribute = attribute role { text }
  9504. db.question.attlist =
  9505. db.question.role.attribute?
  9506. & db.common.attributes
  9507. & db.common.linking.attributes
  9508. db.question =
  9509. ## A question in a qandaset
  9510. element question { db.question.attlist, db.label?, db.all.blocks+ }
  9511. }
  9512. div {
  9513. db.answer.role.attribute = attribute role { text }
  9514. db.answer.attlist =
  9515. db.answer.role.attribute?
  9516. & db.common.attributes
  9517. & db.common.linking.attributes
  9518. db.answer =
  9519. ## An answer to a question posed in a qandaset
  9520. element answer { db.answer.attlist, db.label?, db.all.blocks+ }
  9521. }
  9522. div {
  9523. db.label.role.attribute = attribute role { text }
  9524. db.label.attlist =
  9525. db.label.role.attribute?
  9526. & db.common.attributes
  9527. & db.common.linking.attributes
  9528. db.label =
  9529. ## A label on a question or answer
  9530. element label { db.label.attlist, db._text }
  9531. }
  9532. db.math.inlines = db.inlineequation
  9533. db.equation.content = (db.mediaobject+ | db.mathphrase+) | db._any.mml+
  9534. db.inlineequation.content =
  9535. (db.inlinemediaobject+ | db.mathphrase+) | db._any.mml+
  9536. div {
  9537. db.equation.role.attribute = attribute role { text }
  9538. db.equation.label.attribute = db.label.attribute
  9539. db.equation.attlist =
  9540. db.equation.role.attribute?
  9541. & db.common.attributes
  9542. & db.common.linking.attributes
  9543. & db.equation.label.attribute?
  9544. & db.pgwide.attribute?
  9545. & db.floatstyle.attribute?
  9546. db.equation.info = db._info.title.only
  9547. db.equation =
  9548. ## A displayed mathematical equation
  9549. [
  9550. s:pattern [
  9551. name = "Element exclusion"
  9552. "\x{a}" ~
  9553. " "
  9554. s:rule [
  9555. context = "db:equation"
  9556. "\x{a}" ~
  9557. " "
  9558. s:assert [
  9559. test = "not(.//db:example)"
  9560. "example must not occur among the children or descendants of equation"
  9561. ]
  9562. "\x{a}" ~
  9563. " "
  9564. ]
  9565. "\x{a}" ~
  9566. " "
  9567. ]
  9568. s:pattern [
  9569. name = "Element exclusion"
  9570. "\x{a}" ~
  9571. " "
  9572. s:rule [
  9573. context = "db:equation"
  9574. "\x{a}" ~
  9575. " "
  9576. s:assert [
  9577. test = "not(.//db:figure)"
  9578. "figure must not occur among the children or descendants of equation"
  9579. ]
  9580. "\x{a}" ~
  9581. " "
  9582. ]
  9583. "\x{a}" ~
  9584. " "
  9585. ]
  9586. s:pattern [
  9587. name = "Element exclusion"
  9588. "\x{a}" ~
  9589. " "
  9590. s:rule [
  9591. context = "db:equation"
  9592. "\x{a}" ~
  9593. " "
  9594. s:assert [
  9595. test = "not(.//db:table)"
  9596. "table must not occur among the children or descendants of equation"
  9597. ]
  9598. "\x{a}" ~
  9599. " "
  9600. ]
  9601. "\x{a}" ~
  9602. " "
  9603. ]
  9604. s:pattern [
  9605. name = "Element exclusion"
  9606. "\x{a}" ~
  9607. " "
  9608. s:rule [
  9609. context = "db:equation"
  9610. "\x{a}" ~
  9611. " "
  9612. s:assert [
  9613. test = "not(.//db:equation)"
  9614. "equation must not occur among the children or descendants of equation"
  9615. ]
  9616. "\x{a}" ~
  9617. " "
  9618. ]
  9619. "\x{a}" ~
  9620. " "
  9621. ]
  9622. s:pattern [
  9623. name = "Element exclusion"
  9624. "\x{a}" ~
  9625. " "
  9626. s:rule [
  9627. context = "db:equation"
  9628. "\x{a}" ~
  9629. " "
  9630. s:assert [
  9631. test = "not(.//db:caution)"
  9632. "caution must not occur among the children or descendants of equation"
  9633. ]
  9634. "\x{a}" ~
  9635. " "
  9636. ]
  9637. "\x{a}" ~
  9638. " "
  9639. ]
  9640. s:pattern [
  9641. name = "Element exclusion"
  9642. "\x{a}" ~
  9643. " "
  9644. s:rule [
  9645. context = "db:equation"
  9646. "\x{a}" ~
  9647. " "
  9648. s:assert [
  9649. test = "not(.//db:important)"
  9650. "important must not occur among the children or descendants of equation"
  9651. ]
  9652. "\x{a}" ~
  9653. " "
  9654. ]
  9655. "\x{a}" ~
  9656. " "
  9657. ]
  9658. s:pattern [
  9659. name = "Element exclusion"
  9660. "\x{a}" ~
  9661. " "
  9662. s:rule [
  9663. context = "db:equation"
  9664. "\x{a}" ~
  9665. " "
  9666. s:assert [
  9667. test = "not(.//db:note)"
  9668. "note must not occur among the children or descendants of equation"
  9669. ]
  9670. "\x{a}" ~
  9671. " "
  9672. ]
  9673. "\x{a}" ~
  9674. " "
  9675. ]
  9676. s:pattern [
  9677. name = "Element exclusion"
  9678. "\x{a}" ~
  9679. " "
  9680. s:rule [
  9681. context = "db:equation"
  9682. "\x{a}" ~
  9683. " "
  9684. s:assert [
  9685. test = "not(.//db:tip)"
  9686. "tip must not occur among the children or descendants of equation"
  9687. ]
  9688. "\x{a}" ~
  9689. " "
  9690. ]
  9691. "\x{a}" ~
  9692. " "
  9693. ]
  9694. s:pattern [
  9695. name = "Element exclusion"
  9696. "\x{a}" ~
  9697. " "
  9698. s:rule [
  9699. context = "db:equation"
  9700. "\x{a}" ~
  9701. " "
  9702. s:assert [
  9703. test = "not(.//db:warning)"
  9704. "warning must not occur among the children or descendants of equation"
  9705. ]
  9706. "\x{a}" ~
  9707. " "
  9708. ]
  9709. "\x{a}" ~
  9710. " "
  9711. ]
  9712. s:pattern [
  9713. name = "Root must have version"
  9714. "\x{a}" ~
  9715. " "
  9716. s:rule [
  9717. context = "/db:equation"
  9718. "\x{a}" ~
  9719. " "
  9720. s:assert [
  9721. test = "@version"
  9722. "If this element is the root element, it must have a version attribute."
  9723. ]
  9724. "\x{a}" ~
  9725. " "
  9726. ]
  9727. "\x{a}" ~
  9728. " "
  9729. ]
  9730. ]
  9731. element equation {
  9732. db.equation.attlist,
  9733. db.equation.info,
  9734. db.alt?,
  9735. db.equation.content,
  9736. db.caption?
  9737. }
  9738. }
  9739. div {
  9740. db.informalequation.role.attribute = attribute role { text }
  9741. db.informalequation.attlist =
  9742. db.informalequation.role.attribute?
  9743. & db.common.attributes
  9744. & db.common.linking.attributes
  9745. & db.pgwide.attribute?
  9746. & db.floatstyle.attribute?
  9747. db.informalequation.info = db._info.title.forbidden
  9748. db.informalequation =
  9749. ## A displayed mathematical equation without a title
  9750. [
  9751. s:pattern [
  9752. name = "Root must have version"
  9753. "\x{a}" ~
  9754. " "
  9755. s:rule [
  9756. context = "/db:informalequation"
  9757. "\x{a}" ~
  9758. " "
  9759. s:assert [
  9760. test = "@version"
  9761. "If this element is the root element, it must have a version attribute."
  9762. ]
  9763. "\x{a}" ~
  9764. " "
  9765. ]
  9766. "\x{a}" ~
  9767. " "
  9768. ]
  9769. ]
  9770. element informalequation {
  9771. db.informalequation.attlist,
  9772. db.informalequation.info,
  9773. db.alt?,
  9774. db.equation.content,
  9775. db.caption?
  9776. }
  9777. }
  9778. div {
  9779. db.inlineequation.role.attribute = attribute role { text }
  9780. db.inlineequation.attlist =
  9781. db.inlineequation.role.attribute?
  9782. & db.common.attributes
  9783. & db.common.linking.attributes
  9784. db.inlineequation =
  9785. ## A mathematical equation or expression occurring inline
  9786. element inlineequation {
  9787. db.inlineequation.attlist, db.alt?, db.inlineequation.content
  9788. }
  9789. }
  9790. div {
  9791. db.mathphrase.role.attribute = attribute role { text }
  9792. db.mathphrase.attlist =
  9793. db.mathphrase.role.attribute?
  9794. & db.common.attributes
  9795. & db.common.linking.attributes
  9796. db.mathphrase =
  9797. ## A mathematical phrase that can be represented with ordinary text and a small amount of markup
  9798. element mathphrase {
  9799. db.mathphrase.attlist,
  9800. (db._text | db.ubiq.inlines | db._emphasis)*
  9801. }
  9802. }
  9803. db.imagedata.mathml.content = db._any.mml
  9804. div {
  9805. db.imagedata.mathml.role.attribute = attribute role { text }
  9806. db.imagedata.mathml.attlist =
  9807. db.imagedata.mathml.role.attribute?
  9808. & db.common.attributes
  9809. &
  9810. ## Specifies that the format of the data is MathML
  9811. attribute format {
  9812. ## Specifies MathML.
  9813. "mathml"
  9814. }?
  9815. & db.imagedata.align.attribute?
  9816. & db.imagedata.valign.attribute?
  9817. & db.imagedata.width.attribute?
  9818. & db.imagedata.contentwidth.attribute?
  9819. & db.imagedata.scalefit.attribute?
  9820. & db.imagedata.scale.attribute?
  9821. & db.imagedata.depth.attribute?
  9822. & db.imagedata.contentdepth.attribute?
  9823. db.imagedata.mathml.info = db._info.title.forbidden
  9824. db.imagedata.mathml =
  9825. ## A MathML expression in a media object
  9826. [
  9827. s:pattern [
  9828. name = "Root must have version"
  9829. "\x{a}" ~
  9830. " "
  9831. s:rule [
  9832. context = "/db:imagedata"
  9833. "\x{a}" ~
  9834. " "
  9835. s:assert [
  9836. test = "@version"
  9837. "If this element is the root element, it must have a version attribute."
  9838. ]
  9839. "\x{a}" ~
  9840. " "
  9841. ]
  9842. "\x{a}" ~
  9843. " "
  9844. ]
  9845. ]
  9846. element imagedata {
  9847. db.imagedata.mathml.attlist,
  9848. db.imagedata.mathml.info,
  9849. db.imagedata.mathml.content+
  9850. }
  9851. }
  9852. div {
  9853. db._any.mml =
  9854. ## Any element from the MathML namespace
  9855. element mml:* { (db._any.attribute | text | db._any)* }
  9856. }
  9857. db.imagedata.svg.content = db._any.svg
  9858. div {
  9859. db.imagedata.svg.role.attribute = attribute role { text }
  9860. db.imagedata.svg.attlist =
  9861. db.imagedata.svg.role.attribute?
  9862. & db.common.attributes
  9863. &
  9864. ## Specifies that the format of the data is SVG
  9865. attribute format {
  9866. ## Specifies SVG.
  9867. "svg"
  9868. }?
  9869. & db.imagedata.align.attribute?
  9870. & db.imagedata.valign.attribute?
  9871. & db.imagedata.width.attribute?
  9872. & db.imagedata.contentwidth.attribute?
  9873. & db.imagedata.scalefit.attribute?
  9874. & db.imagedata.scale.attribute?
  9875. & db.imagedata.depth.attribute?
  9876. & db.imagedata.contentdepth.attribute?
  9877. db.imagedata.svg.info = db._info.title.forbidden
  9878. db.imagedata.svg =
  9879. ## An SVG drawing in a media object
  9880. [
  9881. s:pattern [
  9882. name = "Root must have version"
  9883. "\x{a}" ~
  9884. " "
  9885. s:rule [
  9886. context = "/db:imagedata"
  9887. "\x{a}" ~
  9888. " "
  9889. s:assert [
  9890. test = "@version"
  9891. "If this element is the root element, it must have a version attribute."
  9892. ]
  9893. "\x{a}" ~
  9894. " "
  9895. ]
  9896. "\x{a}" ~
  9897. " "
  9898. ]
  9899. ]
  9900. element imagedata {
  9901. db.imagedata.svg.attlist,
  9902. db.imagedata.svg.info,
  9903. db.imagedata.svg.content+
  9904. }
  9905. }
  9906. div {
  9907. db._any.svg =
  9908. ## Any element from the SVG namespace
  9909. element svg:* { (db._any.attribute | text | db._any)* }
  9910. }
  9911. db.markup.inlines =
  9912. db.tag
  9913. | db.markup
  9914. | db.token
  9915. | db.symbol
  9916. | db.literal
  9917. | db.code
  9918. | db.constant
  9919. | db.email
  9920. | db.uri
  9921. div {
  9922. db.markup.role.attribute = attribute role { text }
  9923. db.markup.attlist =
  9924. db.markup.role.attribute?
  9925. & db.common.attributes
  9926. & db.common.linking.attributes
  9927. db.markup =
  9928. ## A string of formatting markup in text that is to be represented literally
  9929. element markup { db.markup.attlist, db._text }
  9930. }
  9931. div {
  9932. db.tag.role.attribute = attribute role { text }
  9933. db.tag.class.enumeration =
  9934. ## An attribute
  9935. "attribute"
  9936. |
  9937. ## An attribute value
  9938. "attvalue"
  9939. |
  9940. ## An element
  9941. "element"
  9942. |
  9943. ## An empty element tag
  9944. "emptytag"
  9945. |
  9946. ## An end tag
  9947. "endtag"
  9948. |
  9949. ## A general entity
  9950. "genentity"
  9951. |
  9952. ## The local name part of a qualified name
  9953. "localname"
  9954. |
  9955. ## A namespace
  9956. "namespace"
  9957. |
  9958. ## A numeric character reference
  9959. "numcharref"
  9960. |
  9961. ## A parameter entity
  9962. "paramentity"
  9963. |
  9964. ## A processing instruction
  9965. "pi"
  9966. |
  9967. ## The prefix part of a qualified name
  9968. "prefix"
  9969. |
  9970. ## An SGML comment
  9971. "comment"
  9972. |
  9973. ## A start tag
  9974. "starttag"
  9975. |
  9976. ## An XML processing instruction
  9977. "xmlpi"
  9978. db.tag.class.attribute =
  9979. ## Identifies the nature of the tag content
  9980. attribute class { db.tag.class.enumeration }
  9981. db.tag.namespace.attribute =
  9982. ## Identifies the namespace of the tag content
  9983. attribute namespace { xsd:anyURI }
  9984. db.tag.attlist =
  9985. db.tag.role.attribute?
  9986. & db.common.attributes
  9987. & db.common.linking.attributes
  9988. & db.tag.class.attribute?
  9989. & db.tag.namespace.attribute?
  9990. db.tag =
  9991. ## A component of XML (or SGML) markup
  9992. element tag { db.tag.attlist, (db._text | db.tag)* }
  9993. }
  9994. div {
  9995. db.symbol.class.attribute =
  9996. ## Identifies the class of symbol
  9997. attribute class {
  9998. ## The value is a limit of some kind
  9999. "limit"
  10000. }
  10001. db.symbol.role.attribute = attribute role { text }
  10002. db.symbol.attlist =
  10003. db.symbol.role.attribute?
  10004. & db.common.attributes
  10005. & db.common.linking.attributes
  10006. & db.symbol.class.attribute?
  10007. db.symbol =
  10008. ## A name that is replaced by a value before processing
  10009. element symbol { db.symbol.attlist, db._text }
  10010. }
  10011. div {
  10012. db.token.role.attribute = attribute role { text }
  10013. db.token.attlist =
  10014. db.token.role.attribute?
  10015. & db.common.attributes
  10016. & db.common.linking.attributes
  10017. db.token =
  10018. ## A unit of information
  10019. element token { db.token.attlist, db._text }
  10020. }
  10021. div {
  10022. db.literal.role.attribute = attribute role { text }
  10023. db.literal.attlist =
  10024. db.literal.role.attribute?
  10025. & db.common.attributes
  10026. & db.common.linking.attributes
  10027. db.literal =
  10028. ## Inline text that is some literal value
  10029. element literal { db.literal.attlist, db._text }
  10030. }
  10031. div {
  10032. code.language.attribute =
  10033. ## Identifies the (computer) language of the code fragment
  10034. attribute language { text }
  10035. db.code.role.attribute = attribute role { text }
  10036. db.code.attlist =
  10037. db.code.role.attribute?
  10038. & db.common.attributes
  10039. & db.common.linking.attributes
  10040. & code.language.attribute?
  10041. db.code =
  10042. ## An inline code fragment
  10043. element code {
  10044. db.code.attlist, (db.programming.inlines | db._text)*
  10045. }
  10046. }
  10047. div {
  10048. db.constant.class.attribute =
  10049. ## Identifies the class of constant
  10050. attribute class {
  10051. ## The value is a limit of some kind
  10052. "limit"
  10053. }
  10054. db.constant.role.attribute = attribute role { text }
  10055. db.constant.attlist =
  10056. db.constant.role.attribute?
  10057. & db.common.attributes
  10058. & db.common.linking.attributes
  10059. & db.constant.class.attribute?
  10060. db.constant =
  10061. ## A programming or system constant
  10062. element constant { db.constant.attlist, db._text }
  10063. }
  10064. div {
  10065. db.productname.role.attribute = attribute role { text }
  10066. db.productname.class.enumeration =
  10067. ## A name with a copyright
  10068. "copyright"
  10069. |
  10070. ## A name with a registered copyright
  10071. "registered"
  10072. |
  10073. ## A name of a service
  10074. "service"
  10075. |
  10076. ## A name which is trademarked
  10077. "trade"
  10078. db.productname.class.attribute =
  10079. ## Specifies the class of product name
  10080. attribute class { db.productname.class.enumeration }
  10081. db.productname.attlist =
  10082. db.productname.role.attribute?
  10083. & db.common.attributes
  10084. & db.common.linking.attributes
  10085. & db.productname.class.attribute?
  10086. db.productname =
  10087. ## The formal name of a product
  10088. element productname { db.productname.attlist, db._text }
  10089. }
  10090. div {
  10091. db.productnumber.role.attribute = attribute role { text }
  10092. db.productnumber.attlist =
  10093. db.productnumber.role.attribute?
  10094. & db.common.attributes
  10095. & db.common.linking.attributes
  10096. db.productnumber =
  10097. ## A number assigned to a product
  10098. element productnumber { db.productnumber.attlist, db._text }
  10099. }
  10100. div {
  10101. db.database.class.enumeration =
  10102. ## An alternate or secondary key
  10103. "altkey"
  10104. |
  10105. ## A constraint
  10106. "constraint"
  10107. |
  10108. ## A data type
  10109. "datatype"
  10110. |
  10111. ## A field
  10112. "field"
  10113. |
  10114. ## A foreign key
  10115. "foreignkey"
  10116. |
  10117. ## A group
  10118. "group"
  10119. |
  10120. ## An index
  10121. "index"
  10122. |
  10123. ## The first or primary key
  10124. "key1"
  10125. |
  10126. ## An alternate or secondary key
  10127. "key2"
  10128. |
  10129. ## A name
  10130. "name"
  10131. |
  10132. ## The primary key
  10133. "primarykey"
  10134. |
  10135. ## A (stored) procedure
  10136. "procedure"
  10137. |
  10138. ## A record
  10139. "record"
  10140. |
  10141. ## A rule
  10142. "rule"
  10143. |
  10144. ## The secondary key
  10145. "secondarykey"
  10146. |
  10147. ## A table
  10148. "table"
  10149. |
  10150. ## A user
  10151. "user"
  10152. |
  10153. ## A view
  10154. "view"
  10155. db.database.class.attribute =
  10156. ## Identifies the class of database artifact
  10157. attribute class { db.database.class.enumeration }
  10158. db.database.role.attribute = attribute role { text }
  10159. db.database.attlist =
  10160. db.database.role.attribute?
  10161. & db.common.attributes
  10162. & db.common.linking.attributes
  10163. & db.database.class.attribute?
  10164. db.database =
  10165. ## The name of a database, or part of a database
  10166. element database { db.database.attlist, db._text }
  10167. }
  10168. div {
  10169. db.application.class.enumeration =
  10170. ## A hardware application
  10171. "hardware"
  10172. |
  10173. ## A software application
  10174. "software"
  10175. db.application.class.attribute =
  10176. ## Identifies the class of application
  10177. attribute class { db.application.class.enumeration }
  10178. db.application.role.attribute = attribute role { text }
  10179. db.application.attlist =
  10180. db.application.role.attribute?
  10181. & db.common.attributes
  10182. & db.common.linking.attributes
  10183. & db.application.class.attribute?
  10184. db.application =
  10185. ## The name of a software program
  10186. element application { db.application.attlist, db._text }
  10187. }
  10188. div {
  10189. db.hardware.role.attribute = attribute role { text }
  10190. db.hardware.attlist =
  10191. db.hardware.role.attribute?
  10192. & db.common.attributes
  10193. & db.common.linking.attributes
  10194. db.hardware =
  10195. ## A physical part of a computer system
  10196. element hardware { db.hardware.attlist, db._text }
  10197. }
  10198. db.gui.inlines =
  10199. db.guiicon
  10200. | db.guibutton
  10201. | db.guimenuitem
  10202. | db.guimenu
  10203. | db.guisubmenu
  10204. | db.guilabel
  10205. | db.menuchoice
  10206. | db.mousebutton
  10207. div {
  10208. db.guibutton.role.attribute = attribute role { text }
  10209. db.guibutton.attlist =
  10210. db.guibutton.role.attribute?
  10211. & db.common.attributes
  10212. & db.common.linking.attributes
  10213. db.guibutton =
  10214. ## The text on a button in a GUI
  10215. element guibutton {
  10216. db.guibutton.attlist,
  10217. (db._text | db.accel | db.superscript | db.subscript)*
  10218. }
  10219. }
  10220. div {
  10221. db.guiicon.role.attribute = attribute role { text }
  10222. db.guiicon.attlist =
  10223. db.guiicon.role.attribute?
  10224. & db.common.attributes
  10225. & db.common.linking.attributes
  10226. db.guiicon =
  10227. ## Graphic and/or text appearing as a icon in a GUI
  10228. element guiicon {
  10229. db.guiicon.attlist,
  10230. (db._text | db.accel | db.superscript | db.subscript)*
  10231. }
  10232. }
  10233. div {
  10234. db.guilabel.role.attribute = attribute role { text }
  10235. db.guilabel.attlist =
  10236. db.guilabel.role.attribute?
  10237. & db.common.attributes
  10238. & db.common.linking.attributes
  10239. db.guilabel =
  10240. ## The text of a label in a GUI
  10241. element guilabel {
  10242. db.guilabel.attlist,
  10243. (db._text | db.accel | db.superscript | db.subscript)*
  10244. }
  10245. }
  10246. div {
  10247. db.guimenu.role.attribute = attribute role { text }
  10248. db.guimenu.attlist =
  10249. db.guimenu.role.attribute?
  10250. & db.common.attributes
  10251. & db.common.linking.attributes
  10252. db.guimenu =
  10253. ## The name of a menu in a GUI
  10254. element guimenu {
  10255. db.guimenu.attlist,
  10256. (db._text | db.accel | db.superscript | db.subscript)*
  10257. }
  10258. }
  10259. div {
  10260. db.guimenuitem.role.attribute = attribute role { text }
  10261. db.guimenuitem.attlist =
  10262. db.guimenuitem.role.attribute?
  10263. & db.common.attributes
  10264. & db.common.linking.attributes
  10265. db.guimenuitem =
  10266. ## The name of a terminal menu item in a GUI
  10267. element guimenuitem {
  10268. db.guimenuitem.attlist,
  10269. (db._text | db.accel | db.superscript | db.subscript)*
  10270. }
  10271. }
  10272. div {
  10273. db.guisubmenu.role.attribute = attribute role { text }
  10274. db.guisubmenu.attlist =
  10275. db.guisubmenu.role.attribute?
  10276. & db.common.attributes
  10277. & db.common.linking.attributes
  10278. db.guisubmenu =
  10279. ## The name of a submenu in a GUI
  10280. element guisubmenu {
  10281. db.guisubmenu.attlist,
  10282. (db._text | db.accel | db.superscript | db.subscript)*
  10283. }
  10284. }
  10285. div {
  10286. db.menuchoice.role.attribute = attribute role { text }
  10287. db.menuchoice.attlist =
  10288. db.menuchoice.role.attribute?
  10289. & db.common.attributes
  10290. & db.common.linking.attributes
  10291. db.menuchoice =
  10292. ## A selection or series of selections from a menu
  10293. element menuchoice {
  10294. db.menuchoice.attlist,
  10295. db.shortcut?,
  10296. (db.guibutton
  10297. | db.guiicon
  10298. | db.guilabel
  10299. | db.guimenu
  10300. | db.guimenuitem
  10301. | db.guisubmenu)+
  10302. }
  10303. }
  10304. div {
  10305. db.mousebutton.role.attribute = attribute role { text }
  10306. db.mousebutton.attlist =
  10307. db.mousebutton.role.attribute?
  10308. & db.common.attributes
  10309. & db.common.linking.attributes
  10310. db.mousebutton =
  10311. ## The conventional name of a mouse button
  10312. element mousebutton { db.mousebutton.attlist, db._text }
  10313. }
  10314. db.keyboard.inlines =
  10315. db.keycombo
  10316. | db.keycap
  10317. | db.keycode
  10318. | db.keysym
  10319. | db.shortcut
  10320. | db.accel
  10321. div {
  10322. db.keycap.function.enumeration =
  10323. ## The "Alt" key
  10324. "alt"
  10325. |
  10326. ## The "Backspace" key
  10327. "backspace"
  10328. |
  10329. ## The "Command" key
  10330. "command"
  10331. |
  10332. ## The "Control" key
  10333. "control"
  10334. |
  10335. ## The "Delete" key
  10336. "delete"
  10337. |
  10338. ## The down arrow
  10339. "down"
  10340. |
  10341. ## The "End" key
  10342. "end"
  10343. |
  10344. ## The "Enter" or "Return" key
  10345. "enter"
  10346. |
  10347. ## The "Escape" key
  10348. "escape"
  10349. |
  10350. ## The "Home" key
  10351. "home"
  10352. |
  10353. ## The "Insert" key
  10354. "insert"
  10355. |
  10356. ## The left arrow
  10357. "left"
  10358. |
  10359. ## The "Meta" key
  10360. "meta"
  10361. |
  10362. ## The "Option" key
  10363. "option"
  10364. |
  10365. ## The page down key
  10366. "pagedown"
  10367. |
  10368. ## The page up key
  10369. "pageup"
  10370. |
  10371. ## The right arrow
  10372. "right"
  10373. |
  10374. ## The "Shift" key
  10375. "shift"
  10376. |
  10377. ## The spacebar
  10378. "space"
  10379. |
  10380. ## The "Tab" key
  10381. "tab"
  10382. |
  10383. ## The up arrow
  10384. "up"
  10385. db.keycap.function-enum.attribute =
  10386. ## Identifies the function key
  10387. attribute function { db.keycap.function.enumeration }?
  10388. db.keycap.function-other.attributes =
  10389. ## Identifies the function key
  10390. attribute function {
  10391. ## Indicates a non-standard function key
  10392. "other"
  10393. }?,
  10394. ## Specifies a keyword that identifies the non-standard key
  10395. attribute otherfunction { text }
  10396. db.keycap.function.attrib =
  10397. db.keycap.function-enum.attribute
  10398. | db.keycap.function-other.attributes
  10399. db.keycap.role.attribute = attribute role { text }
  10400. db.keycap.attlist =
  10401. db.keycap.role.attribute?
  10402. & db.common.attributes
  10403. & db.common.linking.attributes
  10404. & db.keycap.function.attrib
  10405. db.keycap =
  10406. ## The text printed on a key on a keyboard
  10407. element keycap { db.keycap.attlist, db._text }
  10408. }
  10409. div {
  10410. db.keycode.role.attribute = attribute role { text }
  10411. db.keycode.attlist =
  10412. db.keycode.role.attribute?
  10413. & db.common.attributes
  10414. & db.common.linking.attributes
  10415. db.keycode =
  10416. ## The internal, frequently numeric, identifier for a key on a keyboard
  10417. element keycode { db.keycode.attlist, db._text }
  10418. }
  10419. db.keycombination.contentmodel =
  10420. (db.keycap | db.keycombo | db.keysym) | db.mousebutton
  10421. div {
  10422. db.keycombo.action.enumeration =
  10423. ## A (single) mouse click.
  10424. "click"
  10425. |
  10426. ## A double mouse click.
  10427. "double-click"
  10428. |
  10429. ## A mouse or key press.
  10430. "press"
  10431. |
  10432. ## Sequential clicks or presses.
  10433. "seq"
  10434. |
  10435. ## Simultaneous clicks or presses.
  10436. "simul"
  10437. db.keycombo.action-enum.attribute =
  10438. ## Identifies the nature of the action taken. If keycombo
  10439. ## contains more than one element, simul
  10440. ## is the default, otherwise there is no default.
  10441. attribute action { db.keycombo.action.enumeration }?
  10442. db.keycombo.action-other.attributes =
  10443. ## Identifies the nature of the action taken
  10444. attribute action {
  10445. ## Indicates a non-standard action
  10446. "other"
  10447. }?,
  10448. ## Identifies the non-standard action in some unspecified way.
  10449. attribute otheraction { text }
  10450. db.keycombo.action.attrib =
  10451. db.keycombo.action-enum.attribute
  10452. | db.keycombo.action-other.attributes
  10453. db.keycombo.role.attribute = attribute role { text }
  10454. db.keycombo.attlist =
  10455. db.keycombo.role.attribute?
  10456. & db.common.attributes
  10457. & db.common.linking.attributes
  10458. & db.keycombo.action.attrib
  10459. db.keycombo =
  10460. ## A combination of input actions
  10461. element keycombo {
  10462. db.keycombo.attlist, db.keycombination.contentmodel+
  10463. }
  10464. }
  10465. div {
  10466. db.keysym.role.attribute = attribute role { text }
  10467. db.keysym.attlist =
  10468. db.keysym.role.attribute?
  10469. & db.common.attributes
  10470. & db.common.linking.attributes
  10471. db.keysym =
  10472. ## The symbolic name of a key on a keyboard
  10473. element keysym { db.keysym.attlist, db._text }
  10474. }
  10475. div {
  10476. db.accel.role.attribute = attribute role { text }
  10477. db.accel.attlist =
  10478. db.accel.role.attribute?
  10479. & db.common.attributes
  10480. & db.common.linking.attributes
  10481. db.accel =
  10482. ## A graphical user interface (GUI) keyboard shortcut
  10483. element accel { db.accel.attlist, db._text }
  10484. }
  10485. div {
  10486. db.shortcut.action.attrib = db.keycombo.action.attrib
  10487. db.shortcut.role.attribute = attribute role { text }
  10488. db.shortcut.attlist =
  10489. db.shortcut.role.attribute?
  10490. & db.common.attributes
  10491. & db.common.linking.attributes
  10492. & db.shortcut.action.attrib
  10493. db.shortcut =
  10494. ## A key combination for an action that is also accessible through a menu
  10495. element shortcut {
  10496. db.shortcut.attlist, db.keycombination.contentmodel+
  10497. }
  10498. }
  10499. db.os.inlines =
  10500. db.prompt
  10501. | db.envar
  10502. | db.filename
  10503. | db.command
  10504. | db.computeroutput
  10505. | db.userinput
  10506. db.computeroutput.inlines =
  10507. (text | db.ubiq.inlines | db.os.inlines | db.technical.inlines)
  10508. | db.co
  10509. | db.markup.inlines
  10510. db.userinput.inlines =
  10511. (text | db.ubiq.inlines | db.os.inlines | db.technical.inlines)
  10512. | db.co
  10513. | db.markup.inlines
  10514. | db.gui.inlines
  10515. | db.keyboard.inlines
  10516. db.prompt.inlines = db._text | db.co
  10517. div {
  10518. db.prompt.role.attribute = attribute role { text }
  10519. db.prompt.attlist =
  10520. db.prompt.role.attribute?
  10521. & db.common.attributes
  10522. & db.common.linking.attributes
  10523. db.prompt =
  10524. ## A character or string indicating the start of an input field in a computer display
  10525. element prompt { db.prompt.attlist, db.prompt.inlines* }
  10526. }
  10527. div {
  10528. db.envar.role.attribute = attribute role { text }
  10529. db.envar.attlist =
  10530. db.envar.role.attribute?
  10531. & db.common.attributes
  10532. & db.common.linking.attributes
  10533. db.envar =
  10534. ## A software environment variable
  10535. element envar { db.envar.attlist, db._text }
  10536. }
  10537. div {
  10538. db.filename.class.enumeration =
  10539. ## A device
  10540. "devicefile"
  10541. |
  10542. ## A directory
  10543. "directory"
  10544. |
  10545. ## A filename extension
  10546. "extension"
  10547. |
  10548. ## A header file (as for a programming language)
  10549. "headerfile"
  10550. |
  10551. ## A library file
  10552. "libraryfile"
  10553. |
  10554. ## A partition (as of a hard disk)
  10555. "partition"
  10556. |
  10557. ## A symbolic link
  10558. "symlink"
  10559. db.filename.class.attribute =
  10560. ## Identifies the class of filename
  10561. attribute class { db.filename.class.enumeration }
  10562. db.filename.path.attribute =
  10563. ## Specifies the path of the filename
  10564. attribute path { text }
  10565. db.filename.role.attribute = attribute role { text }
  10566. db.filename.attlist =
  10567. db.filename.role.attribute?
  10568. & db.common.attributes
  10569. & db.common.linking.attributes
  10570. & db.filename.path.attribute?
  10571. & db.filename.class.attribute?
  10572. db.filename =
  10573. ## The name of a file
  10574. element filename { db.filename.attlist, db._text }
  10575. }
  10576. div {
  10577. db.command.role.attribute = attribute role { text }
  10578. db.command.attlist =
  10579. db.command.role.attribute?
  10580. & db.common.attributes
  10581. & db.common.linking.attributes
  10582. db.command =
  10583. ## The name of an executable program or other software command
  10584. element command { db.command.attlist, db._text }
  10585. }
  10586. div {
  10587. db.computeroutput.role.attribute = attribute role { text }
  10588. db.computeroutput.attlist =
  10589. db.computeroutput.role.attribute?
  10590. & db.common.attributes
  10591. & db.common.linking.attributes
  10592. db.computeroutput =
  10593. ## Data, generally text, displayed or presented by a computer
  10594. element computeroutput {
  10595. db.computeroutput.attlist, db.computeroutput.inlines*
  10596. }
  10597. }
  10598. div {
  10599. db.userinput.role.attribute = attribute role { text }
  10600. db.userinput.attlist =
  10601. db.userinput.role.attribute?
  10602. & db.common.attributes
  10603. & db.common.linking.attributes
  10604. db.userinput =
  10605. ## Data entered by the user
  10606. element userinput { db.userinput.attlist, db.userinput.inlines* }
  10607. }
  10608. div {
  10609. db.cmdsynopsis.role.attribute = attribute role { text }
  10610. db.cmdsynopsis.sepchar.attribute =
  10611. ## Specifies the character that should separate the command and its top-level arguments
  10612. attribute sepchar { text }
  10613. db.cmdsynopsis.cmdlength.attribute =
  10614. ## Indicates the displayed length of the command; this information may be used to intelligently indent command synopses which extend beyond one line
  10615. attribute cmdlength { text }
  10616. db.cmdsynopsis.label.attribute = db.label.attribute
  10617. db.cmdsynopsis.attlist =
  10618. db.cmdsynopsis.role.attribute?
  10619. & db.common.attributes
  10620. & db.common.linking.attributes
  10621. & db.cmdsynopsis.sepchar.attribute?
  10622. & db.cmdsynopsis.cmdlength.attribute?
  10623. & db.cmdsynopsis.label.attribute?
  10624. db.cmdsynopsis.info = db._info.title.forbidden
  10625. db.cmdsynopsis =
  10626. ## A syntax summary for a software command
  10627. [
  10628. s:pattern [
  10629. name = "Root must have version"
  10630. "\x{a}" ~
  10631. " "
  10632. s:rule [
  10633. context = "/db:cmdsynopsis"
  10634. "\x{a}" ~
  10635. " "
  10636. s:assert [
  10637. test = "@version"
  10638. "If this element is the root element, it must have a version attribute."
  10639. ]
  10640. "\x{a}" ~
  10641. " "
  10642. ]
  10643. "\x{a}" ~
  10644. " "
  10645. ]
  10646. ]
  10647. element cmdsynopsis {
  10648. db.cmdsynopsis.attlist,
  10649. db.cmdsynopsis.info,
  10650. (db.command | db.arg | db.group | db.sbr)+,
  10651. db.synopfragment*
  10652. }
  10653. }
  10654. db.rep.enumeration =
  10655. ## Can not be repeated.
  10656. "norepeat"
  10657. |
  10658. ## Can be repeated.
  10659. "repeat"
  10660. db.rep.attribute =
  10661. ## Indicates whether or not repetition is possible.
  10662. [ a:defaultValue = "norepeat" ] attribute rep { db.rep.enumeration }
  10663. db.choice.enumeration =
  10664. ## Formatted to indicate that it is optional.
  10665. "opt"
  10666. |
  10667. ## Formatted without indication.
  10668. "plain"
  10669. |
  10670. ## Formatted to indicate that it is required.
  10671. "req"
  10672. db.choice.opt.attribute =
  10673. ## Indicates optionality.
  10674. [ a:defaultValue = "opt" ] attribute choice { db.choice.enumeration }
  10675. db.choice.req.attribute =
  10676. ## Indicates optionality.
  10677. [ a:defaultValue = "req" ] attribute choice { db.choice.enumeration }
  10678. div {
  10679. db.arg.role.attribute = attribute role { text }
  10680. db.arg.rep.attribute = db.rep.attribute
  10681. db.arg.choice.attribute = db.choice.opt.attribute
  10682. db.arg.attlist =
  10683. db.arg.role.attribute?
  10684. & db.common.attributes
  10685. & db.common.linking.attributes
  10686. & db.arg.rep.attribute?
  10687. & db.arg.choice.attribute?
  10688. db.arg =
  10689. ## An argument in a cmdsynopsis
  10690. element arg {
  10691. db.arg.attlist,
  10692. (db._text
  10693. | db.arg
  10694. | db.group
  10695. | db.option
  10696. | db.synopfragmentref
  10697. | db.sbr)*
  10698. }
  10699. }
  10700. div {
  10701. db.group.role.attribute = attribute role { text }
  10702. db.group.rep.attribute = db.rep.attribute
  10703. db.group.choice.attribute = db.choice.opt.attribute
  10704. db.group.attlist =
  10705. db.group.role.attribute?
  10706. & db.common.attributes
  10707. & db.common.linking.attributes
  10708. & db.group.rep.attribute?
  10709. & db.group.choice.attribute?
  10710. db.group =
  10711. ## A group of elements in a cmdsynopsis
  10712. element group {
  10713. db.group.attlist,
  10714. (db.arg
  10715. | db.group
  10716. | db.option
  10717. | db.synopfragmentref
  10718. | db.replaceable
  10719. | db.sbr)+
  10720. }
  10721. }
  10722. div {
  10723. db.sbr.role.attribute = attribute role { text }
  10724. db.sbr.attlist = db.sbr.role.attribute? & db.common.attributes
  10725. db.sbr =
  10726. ## An explicit line break in a command synopsis
  10727. element sbr { db.sbr.attlist, empty }
  10728. }
  10729. div {
  10730. db.synopfragment.role.attribute = attribute role { text }
  10731. db.synopfragment.attlist =
  10732. db.synopfragment.role.attribute?
  10733. & db.common.attributes
  10734. & db.common.linking.attributes
  10735. db.synopfragment =
  10736. ## A portion of a cmdsynopsis broken out from the main body of the synopsis
  10737. element synopfragment {
  10738. db.synopfragment.attlist, (db.arg | db.group)+
  10739. }
  10740. }
  10741. div {
  10742. db.synopfragmentref.role.attribute = attribute role { text }
  10743. db.synopfragmentref.attlist =
  10744. db.synopfragmentref.role.attribute?
  10745. & db.common.attributes
  10746. & db.linkend.attribute
  10747. db.synopfragmentref =
  10748. ## A reference to a fragment of a command synopsis
  10749. [
  10750. s:pattern [
  10751. name = "Synopsis fragment type constraint"
  10752. "\x{a}" ~
  10753. " "
  10754. s:rule [
  10755. context = "db:synopfragmentref"
  10756. "\x{a}" ~
  10757. " "
  10758. s:assert [
  10759. test =
  10760. "local-name(//*[@xml:id=current()/@linkend]) = 'synopfragment' and namespace-uri(//*[@xml:id=current()/@linkend]) = 'http://docbook.org/ns/docbook'"
  10761. "@linkend on synopfragmentref must point to a synopfragment."
  10762. ]
  10763. "\x{a}" ~
  10764. " "
  10765. ]
  10766. "\x{a}" ~
  10767. " "
  10768. ]
  10769. ]
  10770. element synopfragmentref { db.synopfragmentref.attlist, text }
  10771. }
  10772. db.programming.inlines =
  10773. db.function
  10774. | db.parameter
  10775. | db.varname
  10776. | db.returnvalue
  10777. | db.type
  10778. | db.classname
  10779. | db.exceptionname
  10780. | db.interfacename
  10781. | db.methodname
  10782. | db.modifier
  10783. | db.initializer
  10784. | db.oo.inlines
  10785. db.oo.inlines = db.ooclass | db.ooexception | db.oointerface
  10786. db.synopsis.blocks =
  10787. (db.funcsynopsis
  10788. | db.classsynopsis
  10789. | db.methodsynopsis
  10790. | db.constructorsynopsis
  10791. | db.destructorsynopsis
  10792. | db.fieldsynopsis)
  10793. | db.cmdsynopsis
  10794. div {
  10795. db.synopsis.role.attribute = attribute role { text }
  10796. db.synopsis.label.attribute = db.label.attribute
  10797. db.synopsis.attlist =
  10798. db.synopsis.role.attribute?
  10799. & db.common.attributes
  10800. & db.common.linking.attributes
  10801. & db.verbatim.attributes
  10802. & db.synopsis.label.attribute?
  10803. db.synopsis =
  10804. ## A general-purpose element for representing the syntax of commands or functions
  10805. [
  10806. s:pattern [
  10807. name = "Root must have version"
  10808. "\x{a}" ~
  10809. " "
  10810. s:rule [
  10811. context = "/db:synopsis"
  10812. "\x{a}" ~
  10813. " "
  10814. s:assert [
  10815. test = "@version"
  10816. "If this element is the root element, it must have a version attribute."
  10817. ]
  10818. "\x{a}" ~
  10819. " "
  10820. ]
  10821. "\x{a}" ~
  10822. " "
  10823. ]
  10824. ]
  10825. element synopsis { db.synopsis.attlist, db.verbatim.contentmodel }
  10826. }
  10827. div {
  10828. db.funcsynopsis.role.attribute = attribute role { text }
  10829. db.funcsynopsis.attlist =
  10830. db.funcsynopsis.role.attribute?
  10831. & db.common.attributes
  10832. & db.common.linking.attributes
  10833. & db.language.attribute?
  10834. db.funcsynopsis.info = db._info.title.forbidden
  10835. db.funcsynopsis =
  10836. ## The syntax summary for a function definition
  10837. [
  10838. s:pattern [
  10839. name = "Root must have version"
  10840. "\x{a}" ~
  10841. " "
  10842. s:rule [
  10843. context = "/db:funcsynopsis"
  10844. "\x{a}" ~
  10845. " "
  10846. s:assert [
  10847. test = "@version"
  10848. "If this element is the root element, it must have a version attribute."
  10849. ]
  10850. "\x{a}" ~
  10851. " "
  10852. ]
  10853. "\x{a}" ~
  10854. " "
  10855. ]
  10856. ]
  10857. element funcsynopsis {
  10858. db.funcsynopsis.attlist,
  10859. db.funcsynopsis.info,
  10860. (db.funcsynopsisinfo | db.funcprototype)+
  10861. }
  10862. }
  10863. div {
  10864. db.funcsynopsisinfo.role.attribute = attribute role { text }
  10865. db.funcsynopsisinfo.attlist =
  10866. db.funcsynopsisinfo.role.attribute?
  10867. & db.common.attributes
  10868. & db.common.linking.attributes
  10869. & db.verbatim.attributes
  10870. db.funcsynopsisinfo =
  10871. ## Information supplementing the funcdefs of a funcsynopsis
  10872. [
  10873. s:pattern [
  10874. name = "Root must have version"
  10875. "\x{a}" ~
  10876. " "
  10877. s:rule [
  10878. context = "/db:funcsynopsisinfo"
  10879. "\x{a}" ~
  10880. " "
  10881. s:assert [
  10882. test = "@version"
  10883. "If this element is the root element, it must have a version attribute."
  10884. ]
  10885. "\x{a}" ~
  10886. " "
  10887. ]
  10888. "\x{a}" ~
  10889. " "
  10890. ]
  10891. ]
  10892. element funcsynopsisinfo {
  10893. db.funcsynopsisinfo.attlist, db.verbatim.contentmodel
  10894. }
  10895. }
  10896. div {
  10897. db.funcprototype.role.attribute = attribute role { text }
  10898. db.funcprototype.attlist =
  10899. db.funcprototype.role.attribute?
  10900. & db.common.attributes
  10901. & db.common.linking.attributes
  10902. db.funcprototype =
  10903. ## The prototype of a function
  10904. element funcprototype {
  10905. db.funcprototype.attlist,
  10906. db.modifier*,
  10907. db.funcdef,
  10908. (db.void
  10909. | db.varargs
  10910. | ((db.paramdef | db.group.paramdef)+, db.varargs?)),
  10911. db.modifier*
  10912. }
  10913. }
  10914. div {
  10915. db.funcdef.role.attribute = attribute role { text }
  10916. db.funcdef.attlist =
  10917. db.funcdef.role.attribute?
  10918. & db.common.attributes
  10919. & db.common.linking.attributes
  10920. db.funcdef =
  10921. ## A function (subroutine) name and its return type
  10922. element funcdef {
  10923. db.funcdef.attlist, (db._text | db.type | db.function)*
  10924. }
  10925. }
  10926. div {
  10927. db.function.role.attribute = attribute role { text }
  10928. db.function.attlist =
  10929. db.function.role.attribute?
  10930. & db.common.attributes
  10931. & db.common.linking.attributes
  10932. db.function =
  10933. ## The name of a function or subroutine, as in a programming language
  10934. element function { db.function.attlist, db._text }
  10935. }
  10936. div {
  10937. db.void.role.attribute = attribute role { text }
  10938. db.void.attlist =
  10939. db.void.role.attribute?
  10940. & db.common.attributes
  10941. & db.common.linking.attributes
  10942. db.void =
  10943. ## An empty element in a function synopsis indicating that the function in question takes no arguments
  10944. element void { db.void.attlist, empty }
  10945. }
  10946. div {
  10947. db.varargs.role.attribute = attribute role { text }
  10948. db.varargs.attlist =
  10949. db.varargs.role.attribute?
  10950. & db.common.attributes
  10951. & db.common.linking.attributes
  10952. db.varargs =
  10953. ## An empty element in a function synopsis indicating a variable number of arguments
  10954. element varargs { db.varargs.attlist, empty }
  10955. }
  10956. div {
  10957. db.group.paramdef.role.attribute = attribute role { text }
  10958. db.group.paramdef.choice.attribute = db.choice.opt.attribute
  10959. db.group.paramdef.attlist =
  10960. db.group.paramdef.role.attribute?
  10961. & db.common.attributes
  10962. & db.common.linking.attributes
  10963. & db.group.paramdef.choice.attribute?
  10964. db.group.paramdef =
  10965. ## A group of parameters
  10966. element group {
  10967. db.group.paramdef.attlist, (db.paramdef | db.group.paramdef)+
  10968. }
  10969. }
  10970. div {
  10971. db.paramdef.role.attribute = attribute role { text }
  10972. db.paramdef.choice.enumeration =
  10973. ## Formatted to indicate that it is optional.
  10974. "opt"
  10975. |
  10976. ## Formatted to indicate that it is required.
  10977. "req"
  10978. db.paramdef.choice.attribute =
  10979. ## Indicates optionality.
  10980. [ a:defaultValue = "opt" ]
  10981. attribute choice { db.paramdef.choice.enumeration }
  10982. db.paramdef.attlist =
  10983. db.paramdef.role.attribute?
  10984. & db.common.attributes
  10985. & db.common.linking.attributes
  10986. & db.paramdef.choice.attribute?
  10987. db.paramdef =
  10988. ## Information about a function parameter in a programming language
  10989. element paramdef {
  10990. db.paramdef.attlist,
  10991. (db._text
  10992. | db.initializer
  10993. | db.type
  10994. | db.parameter
  10995. | db.funcparams)*
  10996. }
  10997. }
  10998. div {
  10999. db.funcparams.role.attribute = attribute role { text }
  11000. db.funcparams.attlist =
  11001. db.funcparams.role.attribute?
  11002. & db.common.attributes
  11003. & db.common.linking.attributes
  11004. db.funcparams =
  11005. ## Parameters for a function referenced through a function pointer in a synopsis
  11006. element funcparams { db.funcparams.attlist, db._text }
  11007. }
  11008. div {
  11009. db.classsynopsis.role.attribute = attribute role { text }
  11010. db.classsynopsis.class.enumeration =
  11011. ## This is the synopsis of a class
  11012. "class"
  11013. |
  11014. ## This is the synopsis of an interface
  11015. "interface"
  11016. db.classsynopsis.class.attribute =
  11017. ## Specifies the nature of the synopsis
  11018. attribute class { db.classsynopsis.class.enumeration }
  11019. db.classsynopsis.attlist =
  11020. db.classsynopsis.role.attribute?
  11021. & db.common.attributes
  11022. & db.common.linking.attributes
  11023. & db.language.attribute?
  11024. & db.classsynopsis.class.attribute?
  11025. db.classsynopsis =
  11026. ## The syntax summary for a class definition
  11027. [
  11028. s:pattern [
  11029. name = "Root must have version"
  11030. "\x{a}" ~
  11031. " "
  11032. s:rule [
  11033. context = "/db:classsynopsis"
  11034. "\x{a}" ~
  11035. " "
  11036. s:assert [
  11037. test = "@version"
  11038. "If this element is the root element, it must have a version attribute."
  11039. ]
  11040. "\x{a}" ~
  11041. " "
  11042. ]
  11043. "\x{a}" ~
  11044. " "
  11045. ]
  11046. ]
  11047. element classsynopsis {
  11048. db.classsynopsis.attlist,
  11049. db.oo.inlines+,
  11050. (db.classsynopsisinfo
  11051. | db.methodsynopsis
  11052. | db.constructorsynopsis
  11053. | db.destructorsynopsis
  11054. | db.fieldsynopsis)*
  11055. }
  11056. }
  11057. div {
  11058. db.classsynopsisinfo.role.attribute = attribute role { text }
  11059. db.classsynopsisinfo.attlist =
  11060. db.classsynopsisinfo.role.attribute?
  11061. & db.common.attributes
  11062. & db.common.linking.attributes
  11063. & db.verbatim.attributes
  11064. db.classsynopsisinfo =
  11065. ## Information supplementing the contents of a classsynopsis
  11066. [
  11067. s:pattern [
  11068. name = "Root must have version"
  11069. "\x{a}" ~
  11070. " "
  11071. s:rule [
  11072. context = "/db:classsynopsisinfo"
  11073. "\x{a}" ~
  11074. " "
  11075. s:assert [
  11076. test = "@version"
  11077. "If this element is the root element, it must have a version attribute."
  11078. ]
  11079. "\x{a}" ~
  11080. " "
  11081. ]
  11082. "\x{a}" ~
  11083. " "
  11084. ]
  11085. ]
  11086. element classsynopsisinfo {
  11087. db.classsynopsisinfo.attlist, db.verbatim.contentmodel
  11088. }
  11089. }
  11090. div {
  11091. db.ooclass.role.attribute = attribute role { text }
  11092. db.ooclass.attlist =
  11093. db.ooclass.role.attribute?
  11094. & db.common.attributes
  11095. & db.common.linking.attributes
  11096. db.ooclass =
  11097. ## A class in an object-oriented programming language
  11098. element ooclass {
  11099. db.ooclass.attlist, (db.package | db.modifier)*, db.classname
  11100. }
  11101. }
  11102. div {
  11103. db.oointerface.role.attribute = attribute role { text }
  11104. db.oointerface.attlist =
  11105. db.oointerface.role.attribute?
  11106. & db.common.attributes
  11107. & db.common.linking.attributes
  11108. db.oointerface =
  11109. ## An interface in an object-oriented programming language
  11110. element oointerface {
  11111. db.oointerface.attlist,
  11112. (db.package | db.modifier)*,
  11113. db.interfacename
  11114. }
  11115. }
  11116. div {
  11117. db.ooexception.role.attribute = attribute role { text }
  11118. db.ooexception.attlist =
  11119. db.ooexception.role.attribute?
  11120. & db.common.attributes
  11121. & db.common.linking.attributes
  11122. db.ooexception =
  11123. ## An exception in an object-oriented programming language
  11124. element ooexception {
  11125. db.ooexception.attlist,
  11126. (db.package | db.modifier)*,
  11127. db.exceptionname
  11128. }
  11129. }
  11130. db.modifier.xml.space.attribute =
  11131. ## Can be used to indicate that whitespace in the modifier should be preserved (for multi-line annotations, for example).
  11132. attribute xml:space {
  11133. ## Extra whitespace and line breaks must be preserved.
  11134. [
  11135. # Ideally the definition of xml:space used on modifier would be
  11136. # different from the definition used on the verbatim elements. The
  11137. # verbatim elements forbid the use of xml:space="default" which
  11138. # wouldn't be a problem on modifier. But doing that causes the
  11139. # generated XSD schemas to be broken so I'm just reusing the existing
  11140. # definition for now. It won't be backwards incompatible to fix this
  11141. # problem in the future.
  11142. # | ## Extra whitespace and line breaks are not preserved.
  11143. # "default"
  11144. ]
  11145. "preserve"
  11146. }
  11147. div {
  11148. db.modifier.role.attribute = attribute role { text }
  11149. db.modifier.attlist =
  11150. db.modifier.xml.space.attribute?
  11151. & db.modifier.role.attribute?
  11152. & db.common.attributes
  11153. & db.common.linking.attributes
  11154. db.modifier =
  11155. ## Modifiers in a synopsis
  11156. element modifier { db.modifier.attlist, db._text }
  11157. }
  11158. div {
  11159. db.interfacename.role.attribute = attribute role { text }
  11160. db.interfacename.attlist =
  11161. db.interfacename.role.attribute?
  11162. & db.common.attributes
  11163. & db.common.linking.attributes
  11164. db.interfacename =
  11165. ## The name of an interface
  11166. element interfacename { db.interfacename.attlist, db._text }
  11167. }
  11168. div {
  11169. db.exceptionname.role.attribute = attribute role { text }
  11170. db.exceptionname.attlist =
  11171. db.exceptionname.role.attribute?
  11172. & db.common.attributes
  11173. & db.common.linking.attributes
  11174. db.exceptionname =
  11175. ## The name of an exception
  11176. element exceptionname { db.exceptionname.attlist, db._text }
  11177. }
  11178. div {
  11179. db.fieldsynopsis.role.attribute = attribute role { text }
  11180. db.fieldsynopsis.attlist =
  11181. db.fieldsynopsis.role.attribute?
  11182. & db.common.attributes
  11183. & db.common.linking.attributes
  11184. & db.language.attribute?
  11185. db.fieldsynopsis =
  11186. ## The name of a field in a class definition
  11187. [
  11188. s:pattern [
  11189. name = "Root must have version"
  11190. "\x{a}" ~
  11191. " "
  11192. s:rule [
  11193. context = "/db:fieldsynopsis"
  11194. "\x{a}" ~
  11195. " "
  11196. s:assert [
  11197. test = "@version"
  11198. "If this element is the root element, it must have a version attribute."
  11199. ]
  11200. "\x{a}" ~
  11201. " "
  11202. ]
  11203. "\x{a}" ~
  11204. " "
  11205. ]
  11206. ]
  11207. element fieldsynopsis {
  11208. db.fieldsynopsis.attlist,
  11209. db.modifier*,
  11210. db.type?,
  11211. db.varname,
  11212. db.initializer?
  11213. }
  11214. }
  11215. div {
  11216. db.initializer.role.attribute = attribute role { text }
  11217. db.initializer.attlist =
  11218. db.initializer.role.attribute?
  11219. & db.common.attributes
  11220. & db.common.linking.attributes
  11221. db.initializer.inlines = db._text | db.mathphrase | db.markup.inlines
  11222. db.initializer =
  11223. ## The initializer for a fieldsynopsis
  11224. element initializer {
  11225. db.initializer.attlist, db.initializer.inlines*
  11226. }
  11227. }
  11228. div {
  11229. db.constructorsynopsis.role.attribute = attribute role { text }
  11230. db.constructorsynopsis.attlist =
  11231. db.constructorsynopsis.role.attribute?
  11232. & db.common.attributes
  11233. & db.common.linking.attributes
  11234. & db.language.attribute?
  11235. db.constructorsynopsis =
  11236. ## A syntax summary for a constructor
  11237. [
  11238. s:pattern [
  11239. name = "Root must have version"
  11240. "\x{a}" ~
  11241. " "
  11242. s:rule [
  11243. context = "/db:constructorsynopsis"
  11244. "\x{a}" ~
  11245. " "
  11246. s:assert [
  11247. test = "@version"
  11248. "If this element is the root element, it must have a version attribute."
  11249. ]
  11250. "\x{a}" ~
  11251. " "
  11252. ]
  11253. "\x{a}" ~
  11254. " "
  11255. ]
  11256. ]
  11257. element constructorsynopsis {
  11258. db.constructorsynopsis.attlist,
  11259. db.modifier*,
  11260. db.methodname?,
  11261. ((db.methodparam | db.group.methodparam)+ | db.void?),
  11262. db.exceptionname*
  11263. }
  11264. }
  11265. div {
  11266. db.destructorsynopsis.role.attribute = attribute role { text }
  11267. db.destructorsynopsis.attlist =
  11268. db.destructorsynopsis.role.attribute?
  11269. & db.common.attributes
  11270. & db.common.linking.attributes
  11271. & db.language.attribute?
  11272. db.destructorsynopsis =
  11273. ## A syntax summary for a destructor
  11274. [
  11275. s:pattern [
  11276. name = "Root must have version"
  11277. "\x{a}" ~
  11278. " "
  11279. s:rule [
  11280. context = "/db:destructorsynopsis"
  11281. "\x{a}" ~
  11282. " "
  11283. s:assert [
  11284. test = "@version"
  11285. "If this element is the root element, it must have a version attribute."
  11286. ]
  11287. "\x{a}" ~
  11288. " "
  11289. ]
  11290. "\x{a}" ~
  11291. " "
  11292. ]
  11293. ]
  11294. element destructorsynopsis {
  11295. db.destructorsynopsis.attlist,
  11296. db.modifier*,
  11297. db.methodname?,
  11298. ((db.methodparam | db.group.methodparam)+ | db.void?),
  11299. db.exceptionname*
  11300. }
  11301. }
  11302. div {
  11303. db.methodsynopsis.role.attribute = attribute role { text }
  11304. db.methodsynopsis.attlist =
  11305. db.methodsynopsis.role.attribute?
  11306. & db.common.attributes
  11307. & db.common.linking.attributes
  11308. & db.language.attribute?
  11309. db.methodsynopsis =
  11310. ## A syntax summary for a method
  11311. [
  11312. s:pattern [
  11313. name = "Root must have version"
  11314. "\x{a}" ~
  11315. " "
  11316. s:rule [
  11317. context = "/db:methodsynopsis"
  11318. "\x{a}" ~
  11319. " "
  11320. s:assert [
  11321. test = "@version"
  11322. "If this element is the root element, it must have a version attribute."
  11323. ]
  11324. "\x{a}" ~
  11325. " "
  11326. ]
  11327. "\x{a}" ~
  11328. " "
  11329. ]
  11330. ]
  11331. element methodsynopsis {
  11332. db.methodsynopsis.attlist,
  11333. db.modifier*,
  11334. (db.type | db.void)?,
  11335. db.methodname,
  11336. ((db.methodparam | db.group.methodparam)+ | db.void),
  11337. db.exceptionname*,
  11338. db.modifier*
  11339. }
  11340. }
  11341. div {
  11342. db.methodname.role.attribute = attribute role { text }
  11343. db.methodname.attlist =
  11344. db.methodname.role.attribute?
  11345. & db.common.attributes
  11346. & db.common.linking.attributes
  11347. db.methodname =
  11348. ## The name of a method
  11349. element methodname { db.methodname.attlist, db._text }
  11350. }
  11351. div {
  11352. db.methodparam.role.attribute = attribute role { text }
  11353. db.methodparam.rep.attribute = db.rep.attribute
  11354. db.methodparam.choice.attribute = db.choice.req.attribute
  11355. db.methodparam.attlist =
  11356. db.methodparam.role.attribute?
  11357. & db.common.attributes
  11358. & db.common.linking.attributes
  11359. & db.methodparam.rep.attribute?
  11360. & db.methodparam.choice.attribute?
  11361. db.methodparam =
  11362. ## Parameters to a method
  11363. element methodparam {
  11364. db.methodparam.attlist,
  11365. db.modifier*,
  11366. db.type?,
  11367. ((db.modifier*, db.parameter, db.initializer?) | db.funcparams),
  11368. db.modifier*
  11369. }
  11370. }
  11371. div {
  11372. db.group.methodparam.role.attribute = attribute role { text }
  11373. db.group.methodparam.choice.attribute = db.choice.opt.attribute
  11374. db.group.methodparam.attlist =
  11375. db.group.methodparam.role.attribute?
  11376. & db.common.attributes
  11377. & db.common.linking.attributes
  11378. & db.group.methodparam.choice.attribute?
  11379. db.group.methodparam =
  11380. ## A group of method parameters
  11381. element group {
  11382. db.group.methodparam.attlist,
  11383. (db.methodparam | db.group.methodparam)+
  11384. }
  11385. }
  11386. div {
  11387. db.varname.role.attribute = attribute role { text }
  11388. db.varname.attlist =
  11389. db.varname.role.attribute?
  11390. & db.common.attributes
  11391. & db.common.linking.attributes
  11392. db.varname =
  11393. ## The name of a variable
  11394. element varname { db.varname.attlist, db._text }
  11395. }
  11396. div {
  11397. db.returnvalue.role.attribute = attribute role { text }
  11398. db.returnvalue.attlist =
  11399. db.returnvalue.role.attribute?
  11400. & db.common.attributes
  11401. & db.common.linking.attributes
  11402. db.returnvalue =
  11403. ## The value returned by a function
  11404. element returnvalue { db.returnvalue.attlist, db._text }
  11405. }
  11406. div {
  11407. db.type.role.attribute = attribute role { text }
  11408. db.type.attlist =
  11409. db.type.role.attribute?
  11410. & db.common.attributes
  11411. & db.common.linking.attributes
  11412. db.type =
  11413. ## The classification of a value
  11414. element type { db.type.attlist, db._text }
  11415. }
  11416. div {
  11417. db.classname.role.attribute = attribute role { text }
  11418. db.classname.attlist =
  11419. db.classname.role.attribute?
  11420. & db.common.attributes
  11421. & db.common.linking.attributes
  11422. db.classname =
  11423. ## The name of a class, in the object-oriented programming sense
  11424. element classname { db.classname.attlist, db._text }
  11425. }
  11426. div {
  11427. db.programlisting.role.attribute = attribute role { text }
  11428. db.programlisting.width.attribute = db.width.characters.attribute
  11429. db.programlisting.attlist =
  11430. db.programlisting.role.attribute?
  11431. & db.common.attributes
  11432. & db.common.linking.attributes
  11433. & db.verbatim.attributes
  11434. & db.programlisting.width.attribute?
  11435. db.programlisting =
  11436. ## A literal listing of all or part of a program
  11437. [
  11438. s:pattern [
  11439. name = "Root must have version"
  11440. "\x{a}" ~
  11441. " "
  11442. s:rule [
  11443. context = "/db:programlisting"
  11444. "\x{a}" ~
  11445. " "
  11446. s:assert [
  11447. test = "@version"
  11448. "If this element is the root element, it must have a version attribute."
  11449. ]
  11450. "\x{a}" ~
  11451. " "
  11452. ]
  11453. "\x{a}" ~
  11454. " "
  11455. ]
  11456. ]
  11457. element programlisting {
  11458. db.programlisting.attlist, db.verbatim.contentmodel
  11459. }
  11460. }
  11461. db.admonition.blocks =
  11462. db.caution | db.important | db.note | db.tip | db.warning
  11463. db.admonition.contentmodel = db._info.title.only, db.all.blocks+
  11464. div {
  11465. db.caution.role.attribute = attribute role { text }
  11466. db.caution.attlist =
  11467. db.caution.role.attribute?
  11468. & db.common.attributes
  11469. & db.common.linking.attributes
  11470. db.caution =
  11471. ## A note of caution
  11472. [
  11473. s:pattern [
  11474. name = "Element exclusion"
  11475. "\x{a}" ~
  11476. " "
  11477. s:rule [
  11478. context = "db:caution"
  11479. "\x{a}" ~
  11480. " "
  11481. s:assert [
  11482. test = "not(.//db:caution)"
  11483. "caution must not occur among the children or descendants of caution"
  11484. ]
  11485. "\x{a}" ~
  11486. " "
  11487. ]
  11488. "\x{a}" ~
  11489. " "
  11490. ]
  11491. s:pattern [
  11492. name = "Element exclusion"
  11493. "\x{a}" ~
  11494. " "
  11495. s:rule [
  11496. context = "db:caution"
  11497. "\x{a}" ~
  11498. " "
  11499. s:assert [
  11500. test = "not(.//db:important)"
  11501. "important must not occur among the children or descendants of caution"
  11502. ]
  11503. "\x{a}" ~
  11504. " "
  11505. ]
  11506. "\x{a}" ~
  11507. " "
  11508. ]
  11509. s:pattern [
  11510. name = "Element exclusion"
  11511. "\x{a}" ~
  11512. " "
  11513. s:rule [
  11514. context = "db:caution"
  11515. "\x{a}" ~
  11516. " "
  11517. s:assert [
  11518. test = "not(.//db:note)"
  11519. "note must not occur among the children or descendants of caution"
  11520. ]
  11521. "\x{a}" ~
  11522. " "
  11523. ]
  11524. "\x{a}" ~
  11525. " "
  11526. ]
  11527. s:pattern [
  11528. name = "Element exclusion"
  11529. "\x{a}" ~
  11530. " "
  11531. s:rule [
  11532. context = "db:caution"
  11533. "\x{a}" ~
  11534. " "
  11535. s:assert [
  11536. test = "not(.//db:tip)"
  11537. "tip must not occur among the children or descendants of caution"
  11538. ]
  11539. "\x{a}" ~
  11540. " "
  11541. ]
  11542. "\x{a}" ~
  11543. " "
  11544. ]
  11545. s:pattern [
  11546. name = "Element exclusion"
  11547. "\x{a}" ~
  11548. " "
  11549. s:rule [
  11550. context = "db:caution"
  11551. "\x{a}" ~
  11552. " "
  11553. s:assert [
  11554. test = "not(.//db:warning)"
  11555. "warning must not occur among the children or descendants of caution"
  11556. ]
  11557. "\x{a}" ~
  11558. " "
  11559. ]
  11560. "\x{a}" ~
  11561. " "
  11562. ]
  11563. s:pattern [
  11564. name = "Root must have version"
  11565. "\x{a}" ~
  11566. " "
  11567. s:rule [
  11568. context = "/db:caution"
  11569. "\x{a}" ~
  11570. " "
  11571. s:assert [
  11572. test = "@version"
  11573. "If this element is the root element, it must have a version attribute."
  11574. ]
  11575. "\x{a}" ~
  11576. " "
  11577. ]
  11578. "\x{a}" ~
  11579. " "
  11580. ]
  11581. ]
  11582. element caution { db.caution.attlist, db.admonition.contentmodel }
  11583. }
  11584. div {
  11585. db.important.role.attribute = attribute role { text }
  11586. db.important.attlist =
  11587. db.important.role.attribute?
  11588. & db.common.attributes
  11589. & db.common.linking.attributes
  11590. db.important =
  11591. ## An admonition set off from the text
  11592. [
  11593. s:pattern [
  11594. name = "Element exclusion"
  11595. "\x{a}" ~
  11596. " "
  11597. s:rule [
  11598. context = "db:important"
  11599. "\x{a}" ~
  11600. " "
  11601. s:assert [
  11602. test = "not(.//db:caution)"
  11603. "caution must not occur among the children or descendants of important"
  11604. ]
  11605. "\x{a}" ~
  11606. " "
  11607. ]
  11608. "\x{a}" ~
  11609. " "
  11610. ]
  11611. s:pattern [
  11612. name = "Element exclusion"
  11613. "\x{a}" ~
  11614. " "
  11615. s:rule [
  11616. context = "db:important"
  11617. "\x{a}" ~
  11618. " "
  11619. s:assert [
  11620. test = "not(.//db:important)"
  11621. "important must not occur among the children or descendants of important"
  11622. ]
  11623. "\x{a}" ~
  11624. " "
  11625. ]
  11626. "\x{a}" ~
  11627. " "
  11628. ]
  11629. s:pattern [
  11630. name = "Element exclusion"
  11631. "\x{a}" ~
  11632. " "
  11633. s:rule [
  11634. context = "db:important"
  11635. "\x{a}" ~
  11636. " "
  11637. s:assert [
  11638. test = "not(.//db:note)"
  11639. "note must not occur among the children or descendants of important"
  11640. ]
  11641. "\x{a}" ~
  11642. " "
  11643. ]
  11644. "\x{a}" ~
  11645. " "
  11646. ]
  11647. s:pattern [
  11648. name = "Element exclusion"
  11649. "\x{a}" ~
  11650. " "
  11651. s:rule [
  11652. context = "db:important"
  11653. "\x{a}" ~
  11654. " "
  11655. s:assert [
  11656. test = "not(.//db:tip)"
  11657. "tip must not occur among the children or descendants of important"
  11658. ]
  11659. "\x{a}" ~
  11660. " "
  11661. ]
  11662. "\x{a}" ~
  11663. " "
  11664. ]
  11665. s:pattern [
  11666. name = "Element exclusion"
  11667. "\x{a}" ~
  11668. " "
  11669. s:rule [
  11670. context = "db:important"
  11671. "\x{a}" ~
  11672. " "
  11673. s:assert [
  11674. test = "not(.//db:warning)"
  11675. "warning must not occur among the children or descendants of important"
  11676. ]
  11677. "\x{a}" ~
  11678. " "
  11679. ]
  11680. "\x{a}" ~
  11681. " "
  11682. ]
  11683. s:pattern [
  11684. name = "Root must have version"
  11685. "\x{a}" ~
  11686. " "
  11687. s:rule [
  11688. context = "/db:important"
  11689. "\x{a}" ~
  11690. " "
  11691. s:assert [
  11692. test = "@version"
  11693. "If this element is the root element, it must have a version attribute."
  11694. ]
  11695. "\x{a}" ~
  11696. " "
  11697. ]
  11698. "\x{a}" ~
  11699. " "
  11700. ]
  11701. ]
  11702. element important {
  11703. db.important.attlist, db.admonition.contentmodel
  11704. }
  11705. }
  11706. div {
  11707. db.note.role.attribute = attribute role { text }
  11708. db.note.attlist =
  11709. db.note.role.attribute?
  11710. & db.common.attributes
  11711. & db.common.linking.attributes
  11712. db.note =
  11713. ## A message set off from the text
  11714. [
  11715. s:pattern [
  11716. name = "Element exclusion"
  11717. "\x{a}" ~
  11718. " "
  11719. s:rule [
  11720. context = "db:note"
  11721. "\x{a}" ~
  11722. " "
  11723. s:assert [
  11724. test = "not(.//db:caution)"
  11725. "caution must not occur among the children or descendants of note"
  11726. ]
  11727. "\x{a}" ~
  11728. " "
  11729. ]
  11730. "\x{a}" ~
  11731. " "
  11732. ]
  11733. s:pattern [
  11734. name = "Element exclusion"
  11735. "\x{a}" ~
  11736. " "
  11737. s:rule [
  11738. context = "db:note"
  11739. "\x{a}" ~
  11740. " "
  11741. s:assert [
  11742. test = "not(.//db:important)"
  11743. "important must not occur among the children or descendants of note"
  11744. ]
  11745. "\x{a}" ~
  11746. " "
  11747. ]
  11748. "\x{a}" ~
  11749. " "
  11750. ]
  11751. s:pattern [
  11752. name = "Element exclusion"
  11753. "\x{a}" ~
  11754. " "
  11755. s:rule [
  11756. context = "db:note"
  11757. "\x{a}" ~
  11758. " "
  11759. s:assert [
  11760. test = "not(.//db:note)"
  11761. "note must not occur among the children or descendants of note"
  11762. ]
  11763. "\x{a}" ~
  11764. " "
  11765. ]
  11766. "\x{a}" ~
  11767. " "
  11768. ]
  11769. s:pattern [
  11770. name = "Element exclusion"
  11771. "\x{a}" ~
  11772. " "
  11773. s:rule [
  11774. context = "db:note"
  11775. "\x{a}" ~
  11776. " "
  11777. s:assert [
  11778. test = "not(.//db:tip)"
  11779. "tip must not occur among the children or descendants of note"
  11780. ]
  11781. "\x{a}" ~
  11782. " "
  11783. ]
  11784. "\x{a}" ~
  11785. " "
  11786. ]
  11787. s:pattern [
  11788. name = "Element exclusion"
  11789. "\x{a}" ~
  11790. " "
  11791. s:rule [
  11792. context = "db:note"
  11793. "\x{a}" ~
  11794. " "
  11795. s:assert [
  11796. test = "not(.//db:warning)"
  11797. "warning must not occur among the children or descendants of note"
  11798. ]
  11799. "\x{a}" ~
  11800. " "
  11801. ]
  11802. "\x{a}" ~
  11803. " "
  11804. ]
  11805. s:pattern [
  11806. name = "Root must have version"
  11807. "\x{a}" ~
  11808. " "
  11809. s:rule [
  11810. context = "/db:note"
  11811. "\x{a}" ~
  11812. " "
  11813. s:assert [
  11814. test = "@version"
  11815. "If this element is the root element, it must have a version attribute."
  11816. ]
  11817. "\x{a}" ~
  11818. " "
  11819. ]
  11820. "\x{a}" ~
  11821. " "
  11822. ]
  11823. ]
  11824. element note { db.note.attlist, db.admonition.contentmodel }
  11825. }
  11826. div {
  11827. db.tip.role.attribute = attribute role { text }
  11828. db.tip.attlist =
  11829. db.tip.role.attribute?
  11830. & db.common.attributes
  11831. & db.common.linking.attributes
  11832. db.tip =
  11833. ## A suggestion to the user, set off from the text
  11834. [
  11835. s:pattern [
  11836. name = "Element exclusion"
  11837. "\x{a}" ~
  11838. " "
  11839. s:rule [
  11840. context = "db:tip"
  11841. "\x{a}" ~
  11842. " "
  11843. s:assert [
  11844. test = "not(.//db:caution)"
  11845. "caution must not occur among the children or descendants of tip"
  11846. ]
  11847. "\x{a}" ~
  11848. " "
  11849. ]
  11850. "\x{a}" ~
  11851. " "
  11852. ]
  11853. s:pattern [
  11854. name = "Element exclusion"
  11855. "\x{a}" ~
  11856. " "
  11857. s:rule [
  11858. context = "db:tip"
  11859. "\x{a}" ~
  11860. " "
  11861. s:assert [
  11862. test = "not(.//db:important)"
  11863. "important must not occur among the children or descendants of tip"
  11864. ]
  11865. "\x{a}" ~
  11866. " "
  11867. ]
  11868. "\x{a}" ~
  11869. " "
  11870. ]
  11871. s:pattern [
  11872. name = "Element exclusion"
  11873. "\x{a}" ~
  11874. " "
  11875. s:rule [
  11876. context = "db:tip"
  11877. "\x{a}" ~
  11878. " "
  11879. s:assert [
  11880. test = "not(.//db:note)"
  11881. "note must not occur among the children or descendants of tip"
  11882. ]
  11883. "\x{a}" ~
  11884. " "
  11885. ]
  11886. "\x{a}" ~
  11887. " "
  11888. ]
  11889. s:pattern [
  11890. name = "Element exclusion"
  11891. "\x{a}" ~
  11892. " "
  11893. s:rule [
  11894. context = "db:tip"
  11895. "\x{a}" ~
  11896. " "
  11897. s:assert [
  11898. test = "not(.//db:tip)"
  11899. "tip must not occur among the children or descendants of tip"
  11900. ]
  11901. "\x{a}" ~
  11902. " "
  11903. ]
  11904. "\x{a}" ~
  11905. " "
  11906. ]
  11907. s:pattern [
  11908. name = "Element exclusion"
  11909. "\x{a}" ~
  11910. " "
  11911. s:rule [
  11912. context = "db:tip"
  11913. "\x{a}" ~
  11914. " "
  11915. s:assert [
  11916. test = "not(.//db:warning)"
  11917. "warning must not occur among the children or descendants of tip"
  11918. ]
  11919. "\x{a}" ~
  11920. " "
  11921. ]
  11922. "\x{a}" ~
  11923. " "
  11924. ]
  11925. s:pattern [
  11926. name = "Root must have version"
  11927. "\x{a}" ~
  11928. " "
  11929. s:rule [
  11930. context = "/db:tip"
  11931. "\x{a}" ~
  11932. " "
  11933. s:assert [
  11934. test = "@version"
  11935. "If this element is the root element, it must have a version attribute."
  11936. ]
  11937. "\x{a}" ~
  11938. " "
  11939. ]
  11940. "\x{a}" ~
  11941. " "
  11942. ]
  11943. ]
  11944. element tip { db.tip.attlist, db.admonition.contentmodel }
  11945. }
  11946. div {
  11947. db.warning.role.attribute = attribute role { text }
  11948. db.warning.attlist =
  11949. db.warning.role.attribute?
  11950. & db.common.attributes
  11951. & db.common.linking.attributes
  11952. db.warning =
  11953. ## An admonition set off from the text
  11954. [
  11955. s:pattern [
  11956. name = "Element exclusion"
  11957. "\x{a}" ~
  11958. " "
  11959. s:rule [
  11960. context = "db:warning"
  11961. "\x{a}" ~
  11962. " "
  11963. s:assert [
  11964. test = "not(.//db:caution)"
  11965. "caution must not occur among the children or descendants of warning"
  11966. ]
  11967. "\x{a}" ~
  11968. " "
  11969. ]
  11970. "\x{a}" ~
  11971. " "
  11972. ]
  11973. s:pattern [
  11974. name = "Element exclusion"
  11975. "\x{a}" ~
  11976. " "
  11977. s:rule [
  11978. context = "db:warning"
  11979. "\x{a}" ~
  11980. " "
  11981. s:assert [
  11982. test = "not(.//db:important)"
  11983. "important must not occur among the children or descendants of warning"
  11984. ]
  11985. "\x{a}" ~
  11986. " "
  11987. ]
  11988. "\x{a}" ~
  11989. " "
  11990. ]
  11991. s:pattern [
  11992. name = "Element exclusion"
  11993. "\x{a}" ~
  11994. " "
  11995. s:rule [
  11996. context = "db:warning"
  11997. "\x{a}" ~
  11998. " "
  11999. s:assert [
  12000. test = "not(.//db:note)"
  12001. "note must not occur among the children or descendants of warning"
  12002. ]
  12003. "\x{a}" ~
  12004. " "
  12005. ]
  12006. "\x{a}" ~
  12007. " "
  12008. ]
  12009. s:pattern [
  12010. name = "Element exclusion"
  12011. "\x{a}" ~
  12012. " "
  12013. s:rule [
  12014. context = "db:warning"
  12015. "\x{a}" ~
  12016. " "
  12017. s:assert [
  12018. test = "not(.//db:tip)"
  12019. "tip must not occur among the children or descendants of warning"
  12020. ]
  12021. "\x{a}" ~
  12022. " "
  12023. ]
  12024. "\x{a}" ~
  12025. " "
  12026. ]
  12027. s:pattern [
  12028. name = "Element exclusion"
  12029. "\x{a}" ~
  12030. " "
  12031. s:rule [
  12032. context = "db:warning"
  12033. "\x{a}" ~
  12034. " "
  12035. s:assert [
  12036. test = "not(.//db:warning)"
  12037. "warning must not occur among the children or descendants of warning"
  12038. ]
  12039. "\x{a}" ~
  12040. " "
  12041. ]
  12042. "\x{a}" ~
  12043. " "
  12044. ]
  12045. s:pattern [
  12046. name = "Root must have version"
  12047. "\x{a}" ~
  12048. " "
  12049. s:rule [
  12050. context = "/db:warning"
  12051. "\x{a}" ~
  12052. " "
  12053. s:assert [
  12054. test = "@version"
  12055. "If this element is the root element, it must have a version attribute."
  12056. ]
  12057. "\x{a}" ~
  12058. " "
  12059. ]
  12060. "\x{a}" ~
  12061. " "
  12062. ]
  12063. ]
  12064. element warning { db.warning.attlist, db.admonition.contentmodel }
  12065. }
  12066. db.error.inlines =
  12067. db.errorcode | db.errortext | db.errorname | db.errortype
  12068. div {
  12069. db.errorcode.role.attribute = attribute role { text }
  12070. db.errorcode.attlist =
  12071. db.errorcode.role.attribute?
  12072. & db.common.attributes
  12073. & db.common.linking.attributes
  12074. db.errorcode =
  12075. ## An error code
  12076. element errorcode { db.errorcode.attlist, db._text }
  12077. }
  12078. div {
  12079. db.errorname.role.attribute = attribute role { text }
  12080. db.errorname.attlist =
  12081. db.errorname.role.attribute?
  12082. & db.common.attributes
  12083. & db.common.linking.attributes
  12084. db.errorname =
  12085. ## An error name
  12086. element errorname { db.errorname.attlist, db._text }
  12087. }
  12088. div {
  12089. db.errortext.role.attribute = attribute role { text }
  12090. db.errortext.attlist =
  12091. db.errortext.role.attribute?
  12092. & db.common.attributes
  12093. & db.common.linking.attributes
  12094. db.errortext =
  12095. ## An error message.
  12096. element errortext { db.errortext.attlist, db._text }
  12097. }
  12098. div {
  12099. db.errortype.role.attribute = attribute role { text }
  12100. db.errortype.attlist =
  12101. db.errortype.role.attribute?
  12102. & db.common.attributes
  12103. & db.common.linking.attributes
  12104. db.errortype =
  12105. ## The classification of an error message
  12106. element errortype { db.errortype.attlist, db._text }
  12107. }
  12108. db.systemitem.inlines = db._text | db.co
  12109. div {
  12110. db.systemitem.class.enumeration =
  12111. ## A daemon or other system process (syslogd)
  12112. "daemon"
  12113. |
  12114. ## A domain name (example.com)
  12115. "domainname"
  12116. |
  12117. ## An ethernet address (00:05:4E:49:FD:8E)
  12118. "etheraddress"
  12119. |
  12120. ## An event of some sort (SIGHUP)
  12121. "event"
  12122. |
  12123. ## An event handler of some sort (hangup)
  12124. "eventhandler"
  12125. |
  12126. ## A filesystem (ext3)
  12127. "filesystem"
  12128. |
  12129. ## A fully qualified domain name (my.example.com)
  12130. "fqdomainname"
  12131. |
  12132. ## A group name (wheel)
  12133. "groupname"
  12134. |
  12135. ## An IP address (127.0.0.1)
  12136. "ipaddress"
  12137. |
  12138. ## A library (libncurses)
  12139. "library"
  12140. |
  12141. ## A macro
  12142. "macro"
  12143. |
  12144. ## A netmask (255.255.255.192)
  12145. "netmask"
  12146. |
  12147. ## A newsgroup (comp.text.xml)
  12148. "newsgroup"
  12149. |
  12150. ## An operating system name (Hurd)
  12151. "osname"
  12152. |
  12153. ## A process (gnome-cups-icon)
  12154. "process"
  12155. |
  12156. ## A protocol (ftp)
  12157. "protocol"
  12158. |
  12159. ## A resource
  12160. "resource"
  12161. |
  12162. ## A security context (a role, permission, or security token, for example)
  12163. "securitycontext"
  12164. |
  12165. ## A server (mail.example.com)
  12166. "server"
  12167. |
  12168. ## A service (ppp)
  12169. "service"
  12170. |
  12171. ## A system name (hephaistos)
  12172. "systemname"
  12173. |
  12174. ## A user name (ndw)
  12175. "username"
  12176. db.systemitem.class-enum.attribute =
  12177. ## Identifies the nature of the system item
  12178. attribute class { db.systemitem.class.enumeration }?
  12179. db.systemitem.class-other.attribute =
  12180. ## Identifies the nature of the non-standard system item
  12181. attribute otherclass { xsd:NMTOKEN }
  12182. db.systemitem.class-other.attributes =
  12183. ## Identifies the kind of systemitemgraphic identifier
  12184. attribute class {
  12185. ## Indicates that the system item is some 'other' kind.
  12186. "other"
  12187. }
  12188. & db.systemitem.class-other.attribute
  12189. db.systemitem.class.attribute =
  12190. db.systemitem.class-enum.attribute
  12191. | db.systemitem.class-other.attributes
  12192. db.systemitem.role.attribute = attribute role { text }
  12193. db.systemitem.attlist =
  12194. db.systemitem.role.attribute?
  12195. & db.common.attributes
  12196. & db.common.linking.attributes
  12197. & db.systemitem.class.attribute?
  12198. db.systemitem =
  12199. ## A system-related item or term
  12200. element systemitem { db.systemitem.attlist, db.systemitem.inlines* }
  12201. }
  12202. div {
  12203. db.option.role.attribute = attribute role { text }
  12204. db.option.attlist =
  12205. db.option.role.attribute?
  12206. & db.common.attributes
  12207. & db.common.linking.attributes
  12208. db.option =
  12209. ## An option for a software command
  12210. element option { db.option.attlist, db._text }
  12211. }
  12212. div {
  12213. db.optional.role.attribute = attribute role { text }
  12214. db.optional.attlist =
  12215. db.optional.role.attribute?
  12216. & db.common.attributes
  12217. & db.common.linking.attributes
  12218. db.optional =
  12219. ## Optional information
  12220. element optional { db.optional.attlist, db._text }
  12221. }
  12222. div {
  12223. db.property.role.attribute = attribute role { text }
  12224. db.property.attlist =
  12225. db.property.role.attribute?
  12226. & db.common.attributes
  12227. & db.common.linking.attributes
  12228. db.property =
  12229. ## A unit of data associated with some part of a computer system
  12230. element property { db.property.attlist, db._text }
  12231. }
  12232. div {
  12233. db.topic.status.attribute = db.status.attribute
  12234. db.topic.role.attribute = attribute role { text }
  12235. db.topic.type.attribute =
  12236. ## Identifies the topic type
  12237. attribute type { text }
  12238. db.topic.attlist =
  12239. db.topic.role.attribute?
  12240. & db.topic.type.attribute?
  12241. & db.common.attributes
  12242. & db.common.linking.attributes
  12243. & db.label.attribute?
  12244. & db.topic.status.attribute?
  12245. db.topic.info = db._info.title.req
  12246. db.topic =
  12247. ## A modular unit of documentation not part of any particular narrative flow
  12248. [
  12249. s:pattern [
  12250. name = "Root must have version"
  12251. "\x{a}" ~
  12252. " "
  12253. s:rule [
  12254. context = "/db:topic"
  12255. "\x{a}" ~
  12256. " "
  12257. s:assert [
  12258. test = "@version"
  12259. "If this element is the root element, it must have a version attribute."
  12260. ]
  12261. "\x{a}" ~
  12262. " "
  12263. ]
  12264. "\x{a}" ~
  12265. " "
  12266. ]
  12267. ]
  12268. element topic {
  12269. db.topic.attlist,
  12270. db.topic.info,
  12271. db.navigation.components*,
  12272. db.toplevel.blocks.or.sections,
  12273. db.navigation.components*
  12274. }
  12275. }