1default namespace bib = "http://biblatex-biber.sourceforge.net/biblatexml" 2namespace a = "http://relaxng.org/ns/compatibility/annotations/1.0" 3datatypes xsd = "http://www.w3.org/2001/XMLSchema-datatypes" 4namespace user = "http://localhost/biblatexml/user" 5## TODO? change namespace of bib:emphasis, bib:superscript, bib:subscript 6## to db = "http://docbook.org/ns/docbook" 7## XDATA, IDS are not in here 8 9start = element entries { 10 (article | 11 bibnote | 12 book | 13 bookmisc | 14 booklet | 15 books | 16 collmisc | 17 collections | 18 inmisc | 19 inproceedings | 20 manual | 21 misc | 22 online | 23 patent | 24 periodical | 25 proceedings | 26 report | 27 set | 28 thesis | 29 unpublished | 30 misctypes)+ 31} 32 33BibLaTeXML.common.fields = 34 abstract? & 35 annotation? & 36 crossref? & 37 entryset? & 38 entrysubtype? & 39 execute? & 40 file? & 41 hyphenation? & 42 indextitle* & 43 indexsorttitle* & 44 isan? & 45 ismn? & 46 iswc? & 47 keywords? & 48 label? & 49 library? & 50 nameaddon* & 51 options? & 52 origlocation* & 53 origpublisher* & 54 origtitle* & 55 presort? & 56 related? & 57 shortauthor* & 58 shorteditor* & 59 shorthand* & 60 shorthandintro* & 61 shortjournal* & 62 shortseries* & 63 shorttitle* & 64 sortkey? & 65 sortname* & 66 sorttitle* & 67 sortyear? & 68 xref? 69 70######################################################### 71## We now define the biblatexml elements 72 73formattext = (emphasis?, superscript?, subscript?, quote?, math?, text?)* 74emphasis = element emphasis { text } 75superscript = element superscript { text } 76subscript = element subscript { text } 77quote = element quote { text } 78## The textual content of bib:math should be in (La)TeX notation 79## MathML mathml:* insertions would also be possible with http://xsltml.sourceforge.net/ 80## the optional attribute "text" gives a Unicode representation of the mathematical expression (if feasible), e.g., x³+y³=z³ 81math = element math { attribute text { text }?, text } 82 83att.form = attribute form { "original" | "romanised" | "translated" | "uniform" } 84att.lang = attribute xml:lang {xsd:language} 85 86abstract = element abstract { att.form?, att.lang?, formattext } 87addendum = element addendum { att.form?, att.lang?, formattext } 88annotation = element annotation { att.form?, att.lang?, formattext } 89booksubtitle = element booksubtitle { att.form?, att.lang?, formattext } 90booktitle = element booktitle { att.form?, att.lang?, formattext } 91booktitleaddon = element booktitleaddon { att.form?, att.lang?, formattext } 92chapter = element chapter { text } 93crossref = element crossref { text } 94doi = element doi { text } 95edition = element edition { xsd:integer | ( attribute string { text } ) } 96eid = element eid { text } 97entryset = element entryset { item+ | text } 98entrysubtype = element entrysubtype { text } 99eprint = element eprint { attribute type {text}, attribute class {text}?, text } 100eventtitle = element eventtitle { att.form?, att.lang?, formattext } 101execute = element execute { text } 102file = element file { text } 103hyphenation = element hyphenation { text } 104pdf = element pdf { text } 105id = element id { text } 106indexsorttitle = element indexsorttitle { text } 107indextitle = element indextitle { text } 108isan = element isan { text } #TODO validate with pattern 109isbn = element isbn { text } #TODO validate with pattern 110oclc = element oclc { text } #TODO validate with pattern 111lccn = element lccn { text } #TODO validate with pattern 112ismn = element ismn { text } #TODO validate with pattern 113isrn = element isrn { text } #TODO validate with pattern 114issn = element issn { text } #TODO validate with pattern 115issue = element issue { att.form?, att.lang?, formattext } 116issuetitle = element issuetitle { att.form?, att.lang?, formattext } 117issuesubtitle = element issuesubtitle { att.form?, att.lang?, formattext } 118iswc = element iswc { text } 119journaltitle = element journaltitle { att.form?, att.lang?, formattext } 120journalsubtitle = element journalsubtitle { att.form?, att.lang?, formattext } 121label = element label { text } 122user.field = element user:* { text } 123library = element library { libraryitem+ } 124libraryitem = element item { attribute location {text}?, 125 attribute ref {text}?, 126 attribute url {xsd:anyURI}?, 127 attribute note {text}? } 128mainsubtitle = element mainsubtitle { att.form?, att.lang?, formattext } 129maintitle = element maintitle { att.form?, att.lang?, formattext } 130maintitleaddon = element maintitleaddon { att.form?, att.lang?, formattext } 131nameaddon = element nameaddon { text } 132note = element note { att.form?, att.lang?, formattext } 133number = element number { text } 134options = element options { 135 element option { 136 attribute key { text}, 137 attribute value { text }?, 138 empty 139 } 140} 141origtitle = element origtitle { att.form?, att.lang?, formattext } 142pagetotal = element pagetotal { text } 143part = element part { text } 144presort = element presort { text } 145series = element series { att.form?, att.lang?, formattext } 146shorthand = element shorthand { att.form?, att.lang?, text } 147shorthandintro = element shorthandintro { att.form?, att.lang?, text } 148shorttitle = element shorttitle { att.form?, att.lang?, formattext } 149shortjournal = element shortjournal { att.form?, att.lang?, formattext } 150shortseries = element shortseries { att.form?, att.lang?, formattext } 151sortkey = element sortkey { text } 152sortyear = element sortyear { text } 153sorttitle = element sorttitle { text } 154subtitle = element subtitle { att.form?, att.lang?, formattext } 155title = element title { att.form?, att.lang?, formattext } 156titleaddon = element titleaddon { att.form?, att.lang?, formattext } 157url = element url { xsd:anyURI } 158useprefix = element useprefix { text } 159venue = element venue { att.form?, att.lang?, formattext } 160version = element version { text } 161volume = element volume { ( text | volume.range )} 162volume.range = ( volume.list | range ) 163volume.list = element list { element item { ( text | volume.range ) }+ } 164volumes = element volumes { text } 165xref = element xref { text } 166 167# dates 168attlist.year = attribute appeared { date.type }?, attribute type { "approximate" | "assumed" }?, attribute note { text }? 169attlist.dates = attribute datetype { "orig" | "event" | "url" } 170date = element date { attlist.dates?, attlist.year?, (date.type | date.range) } 171pubstate = element pubstate { text } 172date.type = (xsd:date | xsd:gYearMonth | xsd:gYear) 173date.range = (date.range.list | (date.range.start, date.range.end?) ) 174date.range.start = element start { xsd:date | xsd:gYear } 175date.range.end = element end { xsd:date | xsd:gYear | "" } 176date.range.list = element list { element item { (date.type|date.range) }+ } 177 178# pages 179pages = element pages { attlist.pages?, (text | range | pagelist ) } 180pagelist = element list { ( text | element item {( text | range )}+ ) } 181attlist.pages = 182 attribute pagination { "page" | "column" | "line" | "verse" | "paragraph" | "none" }?, 183 attribute bookpagination { "page" | "column" | "line" | "verse" | "paragraph" | "none" }?, 184 attribute part { text }? ## e.g. when a book has parts in different scripts, with respective paginations 185range = range.start, range.end 186range.start = element start { text } 187range.end = element end { text } 188 189# literal lists 190att.lists = att.form?, attribute morelist { "1" | "true" }? 191institution = element institution { att.lists?, ( text | item+ ) } 192organisation = (element organisation { att.lists?, ( text | item+ ) } | 193 element organization { att.lists?, ( text | item+ ) } ) 194location = element location { att.lang?, att.lists?, ( text | item+ ) } 195origlocation = element origlocation { att.lists?, ( text | item+ ) } 196publisher = element publisher { att.lang?, att.lists?, ( text | pubitem+ ) } 197origpublisher = element origpublisher { att.lists?, ( text | pubitem+ ) } 198item = element item { formattext } 199pubitem = element item { (text | (publishername, location)) } 200publishername = element name { attribute id {text}?, formattext } 201publocation = element location { attribute id {text}?, text } 202 203# key lists 204language = element language { xsd:language | itemlang+ } 205origlanguage = element origlanguage { xsd:language | itemlang+ } 206itemlang = element item { xsd:language } 207script.list = "Arab" | "Armi" | "Armn" | "Avst" | "Bali" | "Batk" | "Beng" | "Blis" | "Bopo" | "Brah" | "Brai" | "Bugi" | "Buhd" | "Cakm" | "Cans" | "Cari" | "Cham" | "Cher" | "Cirt" | "Copt" | "Cprt" | "Cyrl" | "Cyrs" | "Deva" | "Dsrt" | "Egyd" | "Egyh" | "Egyp" | "Ethi" | "Geok" | "Geor" | "Glag" | "Goth" | "Grek" | "Gujr" | "Guru" | "Hang" | "Hani" | "Hano" | "Hans" | "Hant" | "Hebr" | "Hira" | "Hmng" | "Hrkt" | "Hung" | "Inds" | "Ital" | "Java" | "Jpan" | "Kali" | "Kana" | "Khar" | "Khmr" | "Knda" | "Kore" | "Kthi" | "Lana" | "Laoo" | "Latf" | "Latg" | "Latn" | "Lepc" | "Limb" | "Lina" | "Linb" | "Lisu" | "Lyci" | "Lydi" | "Mand" | "Mani" | "Maya" | "Mero" | "Mlym" | "Mong" | "Moon" | "Mtei" | "Mymr" | "Nkgb" | "Nkoo" | "Ogam" | "Olck" | "Orkh" | "Orya" | "Osma" | "Perm" | "Phag" | "Phli" | "Phlp" | "Phlv" | "Phnx" | "Plrd" | "Prti" | "Qaaa" | "Qabx" | "Rjng" | "Roro" | "Runr" | "Samr" | "Sara" | "Saur" | "Sgnw" | "Shaw" | "Sinh" | "Sund" | "Sylo" | "Syrc" | "Syre" | "Syrj" | "Syrn" | "Tagb" | "Tale" | "Talu" | "Taml" | "Tavt" | "Telu" | "Teng" | "Tfng" | "Tglg" | "Thaa" | "Thai" | "Tibt" | "Ugar" | "Vaii" | "Visp" | "Xpeo" | "Xsux" | "Yiii" | "Zinh" | "Zmth" | "Zsym" | "Zxxx" | "Zyyy" | "Zzzz" 208script = element script { script.list | itemscript+ } 209origscript = element origscript { script.list | itemscript+ } 210itemscript = element item { script.list } 211# NAME LISTS 212attlist.name = att.form?, attribute class { "sub" | "vol" | "main" }?, att.gender?, attribute morenames {"1" | "true"}? 213att.gender = attribute gender { "sf" | "sm" | "sn" | "pf" | "pm" | "pn" | "pp" } 214author = element author { attlist.name?, ( text | person+ ) } 215editor = element editor { attlist.name?, (text | person+) } 216afterword = element afterword { attlist.name?, (text | person+) } 217annotator = element annotator { attlist.name?, (text | person+) } 218bookauthor = element bookauthor { attlist.name?, (text | person+) } 219commentator = element commentator { attlist.name?, (text | person+) } 220foreword = element foreword { attlist.name?, (text | person+) } 221holder = element holder { attlist.name?, (text | person+) } 222introduction = element introduction { attlist.name?, (text | person+) } 223translator = element translator { attlist.name?, (text | person+) } 224shortauthor = element shortauthor { attlist.name?, (text | person+) } 225shorteditor = element shorteditor { attlist.name?, (text | person+) } 226sortname = element sortname { attlist.name?, (text | person+) } 227person = element person { 228 attlist.person, 229 ( text | (first? & 230 prefix? & 231 middle? & 232 last & 233 suffix? ) ) 234 } 235attlist.person |= 236 attribute id { text }?, 237 att.gender?, 238 attribute useprefix { "yes" | "no" }? 239att.init = attribute initial { text } 240first = element first { att.init?, (text | namepart+) } 241last = element last { att.init?, (text | namepart+) } 242middle = element middle { att.init?, (text | namepart+) } 243prefix = element prefix { att.init?, (text | namepart+) } 244suffix = element suffix { att.init?, (text | namepart+) } 245namepart = element namepart { att.init?, text } 246keywords = element keywords { list {xsd:string+} | item+ } 247related = element related { 248 element item { 249 attribute type { text }, 250 attribute string { text }?, 251 attribute ids { text } }+ # can be comma-sep IDs 252 } 253 254######################################################### 255 256article = element entry { 257 attribute id {text} & 258 attribute entrytype { "article" } & 259 id* & 260 author+ & 261 title+ & 262 journaltitle+ & 263 date+ & 264 addendum? & 265 annotator* & 266 commentator* & 267 doi? & 268 editor? & 269 eid? & 270 eprint? & 271 issn? & 272 issue* & 273 issuetitle* & 274 issuesubtitle* & 275 journalsubtitle* & 276 language? & 277 note? & 278 number? & 279 origlanguage? & 280 pages? & 281 pubstate? & 282 series* & 283 subtitle* & 284 titleaddon* & 285 translator* & 286 url? & 287 version? & 288 volume? & 289 BibLaTeXML.common.fields 290} 291 292######################################################### 293 294bibnote = element entry { 295 attribute id {text} & 296 attribute entrytype { "bibnote" } & 297 id* & 298 element note { text } 299} 300 301######################################################### 302book = element entry { 303 attribute id {text} & 304 attribute entrytype {"book"} & 305 id* & 306 author+ & 307 title+ & 308 date+ & 309 addendum? & 310 afterword* & 311 annotator* & 312 chapter? & 313 commentator* & 314 doi? & 315 edition? & 316 editor? & 317 eprint? & 318 foreword* & 319 introduction* & 320 isbn? & 321 language? & 322 location* & 323 maintitle* & 324 maintitleaddon* & 325 mainsubtitle* & 326 note? & 327 number? & 328 origlanguage? & 329 pages? & 330 pagetotal? & 331 part? & 332 publisher* & 333 pubstate? & 334 series* & 335 subtitle* & 336 titleaddon* & 337 translator* & 338 url? & 339 volume? & 340 volumes? & 341 BibLaTeXML.common.fields 342} 343 344######################################################### 345 346booklet = element entry { 347 attribute id {text} & 348 attribute entrytype {"booklet"} & 349 attribute howpublished { text }? & 350 attribute type { text }? & 351 id* & 352 (author | editor)& 353 title+ & 354 date+ & 355 addendum? & 356 chapter? & 357 doi? & 358 eprint? & 359 language? & 360 location* & 361 note? & 362 pages? & 363 pagetotal? & 364 pubstate? & 365 subtitle* & 366 titleaddon* & 367 url? & 368 BibLaTeXML.common.fields 369} 370 371 372######################################################### 373 374books = element entry { 375 attribute id {text} & 376 attribute entrytype {"books"} & 377 id* & 378 author+ & 379 title+ & 380 date+ & 381 addendum? & 382 afterword* & 383 annotator* & 384 commentator* & 385 doi? & 386 edition? & 387 editor? & 388 eprint? & 389 foreword* & 390 introduction* & 391 isbn? & 392 language? & 393 location* & 394 note? & 395 number? & 396 origlanguage? & 397 publisher* & 398 pubstate? & 399 subtitle* & 400 titleaddon* & 401 translator* & 402 url? & 403 volume? & 404 volumes? & 405 BibLaTeXML.common.fields 406} 407 408######################################################### 409 410bookmisc = element entry { 411 attribute id {text} & 412 attribute entrytype { "inbook" | "bookinbook" | "suppbook" } & 413 id* & 414 author+ & 415 title+ & 416 booktitle+ & 417 date+ & 418 addendum? & 419 afterword* & 420 annotator* & 421 bookauthor* & 422 booksubtitle* & 423 booktitleaddon* & 424 chapter? & 425 commentator* & 426 doi? & 427 edition? & 428 editor? & 429 eprint? & 430 foreword* & 431 introduction* & 432 isbn? & 433 language? & 434 location* & 435 mainsubtitle* & 436 maintitle* & 437 maintitleaddon* & 438 note? & 439 number? & 440 origlanguage? & 441 part? & 442 publisher* & 443 pages? & 444 pubstate? & 445 series* & 446 subtitle* & 447 titleaddon* & 448 translator* & 449 url? & 450 volume? & 451 volumes? & 452 BibLaTeXML.common.fields 453} 454 455######################################################### 456 457collmisc = element entry { 458 attribute id {text} & 459 attribute entrytype { "collection" | "reference" } & 460 id* & 461 editor+ & 462 title+ & 463 date+ & 464 addendum? & 465 afterword* & 466 annotator* & 467 chapter? & 468 commentator* & 469 doi? & 470 edition? & 471 eprint? & 472 foreword* & 473 introduction* & 474 isbn? & 475 language? & 476 location* & 477 mainsubtitle* & 478 maintitle* & 479 maintitleaddon* & 480 note? & 481 number? & 482 origlanguage? & 483 pages? & 484 pagetotal? & 485 part? & 486 publisher* & 487 pubstate? & 488 series* & 489 subtitle* & 490 titleaddon* & 491 translator* & 492 url? & 493 volume? & 494 volumes? & 495 BibLaTeXML.common.fields 496} 497 498######################################################### 499 500collections = element entry { 501 attribute id {text} & 502 attribute entrytype { "collections" } & 503 id* & 504 author+ & 505 title+ & 506 date+ & 507 addendum? & 508 afterword* & 509 annotator* & 510 commentator* & 511 doi? & 512 edition? & 513 editor? & 514 eprint? & 515 foreword* & 516 introduction* & 517 isbn? & 518 language? & 519 location* & 520 note? & 521 number? & 522 origlanguage? & 523 publisher* & 524 pubstate? & 525 subtitle* & 526 titleaddon* & 527 translator* & 528 url? & 529 volume? & 530 volumes? & 531 BibLaTeXML.common.fields 532} 533 534######################################################### 535 536inmisc = element entry { 537 attribute id {text} & 538 attribute entrytype { "incollection" | "suppcollection" | "inreference" } & 539 id* & 540 author+ & 541 editor+ & 542 title+ & 543 booktitle+ & 544 date+ & 545 addendum? & 546 afterword* & 547 annotator* & 548 booksubtitle* & 549 booktitleaddon* & 550 chapter? & 551 commentator* & 552 doi? & 553 edition? & 554 eprint? & 555 foreword* & 556 introduction* & 557 isbn? & 558 language? & 559 location* & 560 mainsubtitle* & 561 maintitle* & 562 maintitleaddon* & 563 note? & 564 number? & 565 origlanguage? & 566 pages? & 567 part? & 568 publisher* & 569 pubstate? & 570 series* & 571 subtitle* & 572 titleaddon* & 573 translator* & 574 url? & 575 volume? & 576 volumes? & 577 BibLaTeXML.common.fields 578} 579 580######################################################### 581 582inproceedings = element entry { 583 attribute id {text} & 584 attribute entrytype { "inproceedings" } & 585 id* & 586 author+ & 587 editor+ & 588 title+ & 589 booktitle+ & 590 date+ & 591 addendum? & 592 booksubtitle* & 593 booktitleaddon* & 594 chapter? & 595 doi? & 596 eprint? & 597 eventtitle* & 598 isbn? & 599 language? & 600 location* & 601 mainsubtitle* & 602 maintitle* & 603 maintitleaddon* & 604 note? & 605 number? & 606 organisation* & 607 pages? & 608 part? & 609 publisher* & 610 pubstate? & 611 series* & 612 subtitle* & 613 titleaddon* & 614 url? & 615 venue* & 616 volume? & 617 volumes? & 618 BibLaTeXML.common.fields 619} 620 621######################################################### 622 623manual = element entry { 624 attribute id {text} & 625 attribute entrytype { "manual" } & 626 attribute type { text } & 627 id* & 628 (author | editor) & 629 title+ & 630 date+ & 631 addendum? & 632 chapter? & 633 doi? & 634 edition? & 635 eprint? & 636 isbn? & 637 language? & 638 location* & 639 note? & 640 number? & 641 organisation* & 642 pages? & 643 pagetotal? & 644 publisher* & 645 pubstate? & 646 series* & 647 subtitle* & 648 titleaddon* & 649 url? & 650 version? & 651 BibLaTeXML.common.fields 652} 653 654######################################################### 655 656misc = element entry { 657 attribute id {text} & 658 attribute entrytype { "misc" } & 659 attribute howpublished { text }? & 660 attribute type { text }? & 661 id* & 662 (author | editor)+ & 663 title+ & 664 date+ & 665 addendum? & 666 doi? & 667 eprint? & 668 language? & 669 location* & 670 note? & 671 organisation* & 672 pubstate? & 673 subtitle* & 674 titleaddon* & 675 url? & 676 version? & 677 BibLaTeXML.common.fields 678} 679 680######################################################### 681 682online = element entry { 683 attribute id {text} & 684 attribute entrytype { "online" } & 685 id* & 686 (author | editor) & 687 title+ & 688 date+ & 689 url & 690 addendum? & 691 language? & 692 note? & 693 organisation* & 694 pubstate? & 695 subtitle* & 696 titleaddon* & 697 version? & 698 BibLaTeXML.common.fields 699} 700 701 702######################################################### 703 704patent = element entry { 705 attribute id {text} & 706 attribute entrytype { "patent" } & 707 attribute type { text } & 708 id* & 709 author+ & 710 title+ & 711 number & 712 date+ & 713 addendum? & 714 doi? & 715 eprint? & 716 holder* & 717 location* & 718 note? & 719 pubstate? & 720 subtitle* & 721 titleaddon* & 722 url? & 723 version? & 724 BibLaTeXML.common.fields 725} 726 727######################################################### 728 729periodical = element entry { 730 attribute id {text} & 731 attribute entrytype { "periodical" } & 732 id* & 733 editor+ & 734 title+ & 735 date+ & 736 addendum? & 737 doi? & 738 eprint? & 739 issn? & 740 issue* & 741 issuesubtitle* & 742 issuetitle* & 743 language? & 744 note? & 745 number? & 746 pubstate? & 747 series* & 748 subtitle* & 749 url? & 750 volume? & 751 BibLaTeXML.common.fields 752} 753 754######################################################### 755 756proceedings = element entry { 757 attribute id {text} & 758 attribute entrytype { "proceedings" } & 759 id* & 760 editor+ & 761 title+ & 762 date+ & 763 addendum? & 764 chapter? & 765 doi? & 766 eprint? & 767 eventtitle* & 768 isbn? & 769 language? & 770 location* & 771 mainsubtitle* & 772 maintitle* & 773 maintitleaddon* & 774 note? & 775 number? & 776 organisation* & 777 pages? & 778 pagetotal? & 779 part? & 780 publisher* & 781 pubstate? & 782 series* & 783 subtitle* & 784 titleaddon* & 785 url? & 786 venue* & 787 volume? & 788 volumes? & 789 BibLaTeXML.common.fields 790} 791 792######################################################### 793 794report = element entry { 795 attribute id {text} & 796 attribute entrytype { "report" } & 797 attribute type { text } & 798 id* & 799 author+ & 800 title+ & 801 institution+ & 802 date+ & 803 addendum? & 804 chapter? & 805 doi? & 806 eprint? & 807 isrn? & 808 language? & 809 location* & 810 note? & 811 number? & 812 pages? & 813 pagetotal? & 814 pubstate? & 815 subtitle* & 816 titleaddon* & 817 url? & 818 version? & 819 BibLaTeXML.common.fields 820} 821 822######################################################### 823 824thesis = element entry { 825 attribute id {text} & 826 attribute entrytype { "thesis" } & 827 attribute type { text } & 828 id* & 829 author+ & 830 title+ & 831 institution+ & 832 date+ & 833 addendum? & 834 chapter? & 835 doi? & 836 eprint? & 837 language? & 838 location* & 839 note? & 840 pages? & 841 pagetotal? & 842 pubstate? & 843 subtitle* & 844 titleaddon* & 845 url? & 846 BibLaTeXML.common.fields 847} 848 849######################################################### 850 851unpublished = element entry { 852 attribute id {text} & 853 attribute entrytype { "unpublished" } & 854 attribute howpublished { text } & 855 id* & 856 author+ & 857 title+ & 858 date+ & 859 addendum? & 860 language? & 861 location* & 862 note? & 863 pubstate? & 864 subtitle* & 865 titleaddon* & 866 url? & 867 BibLaTeXML.common.fields 868} 869 870######################################################### 871 872set = element entry { 873 attribute id {text} & 874 attribute entrytype { "set" } & 875 attribute howpublished { text }? & 876 id* & 877 entryset 878} 879 880######################################################### 881 882misctypes = element entry { 883 attribute id {text} & 884 attribute entrytype { 885 "artwork" | "audio" | "commentary" | "image" | "jurisdiction" | 886 "legal" | "legislation" | "letter" | "movie" | "music" | 887 "performance" | "review" | "software" | "standard" | "video" } & 888 attribute howpublished { text } & 889 id* & 890 author* & 891 title* & 892 date* & 893 addendum? & 894 language? & 895 location* & 896 note? & 897 pubstate? & 898 subtitle* & 899 titleaddon* & 900 url? & 901 BibLaTeXML.common.fields 902} 903# Copyright 2009-2015 François Charette and Philip Kime, all rights reserved. 904 905# This code is free software. You can redistribute it and/or 906# modify it under the terms of the Artistic License 2.0. 907 908# This program is distributed in the hope that it will be useful, 909# but without any warranty; without even the implied warranty of 910# merchantability or fitness for a particular purpose. 911 912