395 & media.type.attribute? |
399 & media.type.attribute? |
396 media.type.attribute = attribute type { xsd:NCName } |
400 media.type.attribute = attribute type { xsd:NCName } |
397 |
401 |
398 media.content = |
402 media.content = |
399 block.head?, |
403 block.head?, |
400 (image | audio | video)+, |
404 (media.image | audio | video)+, |
401 media.caption?, |
405 media.caption?, |
402 link? |
406 link? |
403 |
407 |
404 # ~~~~~~ image |
408 # ~~~~~~ image |
405 image = element image { image.attributes, image.content } |
409 image = element image { image.attributes } |
406 hotspot.image = element image { image.attributes } |
410 media.image = element image { image.attributes, media.image.content } |
407 |
411 |
408 image.attributes = |
412 image.attributes = |
409 media.id.attribute |
413 media.id.attribute |
410 & image.type? |
414 & image.type? |
411 media.id.attribute = attribute id { xsd:NMTOKEN } |
415 media.id.attribute = attribute id { xsd:NMTOKEN } |
412 image.type = attribute type { "cover" | "thumbnail" | "icon" | "animation" } |
416 image.type = attribute type { "cover" | "thumbnail" | "icon" | "animation" } |
413 |
417 |
414 image.content = |
418 media.image.content = |
415 copyright?, |
419 copyright?, |
416 hotspot* |
420 hotspot* |
417 |
421 |
418 # ~~~~~~ audio |
422 # ~~~~~~ audio |
419 audio = element audio { audio.attributes } |
423 audio = element audio { audio.attributes } |
446 h.attribute = attribute h { xsd:token {pattern = "\d{1,2}(\.\d{1,2})?%"} } |
450 h.attribute = attribute h { xsd:token {pattern = "\d{1,2}(\.\d{1,2})?%"} } |
447 hotspot.display.attribute = attribute display { "normal" | "visible" | "pulse" } |
451 hotspot.display.attribute = attribute display { "normal" | "visible" | "pulse" } |
448 hotspot.type.attribute = attribute type { xsd:NCName } |
452 hotspot.type.attribute = attribute type { xsd:NCName } |
449 |
453 |
450 hotspot.content = |
454 hotspot.content = |
451 ((link | p+ | hotspot.image | audio | video), (spot, scenario?)?) |
455 ((link | p+ | image | audio | video), (spot, scenario?)?) |
452 | (spot, scenario?) |
456 | (spot, scenario?) |
453 | empty |
457 | empty |
454 |
458 |
455 # ~~~~~~ spot |
459 # ~~~~~~ spot |
456 spot = element spot { spot.attributes, spot.content } |
460 spot = element spot { spot.attributes, spot.content } |
563 |
567 |
564 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ copyright ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
568 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ copyright ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
565 |
569 |
566 copyright = element copyright { copyright.content } |
570 copyright = element copyright { copyright.content } |
567 |
571 |
568 copyright.content = inlines |
572 copyright.content = simple.inlines |
569 |
573 |
570 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ collection ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
574 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ collection ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
571 |
575 |
572 collection = element collection { collection.content } |
576 collection = element collection { collection.content } |
573 |
577 |
574 collection.content = inlines |
578 collection.content = simple.inlines |
575 |
579 |
576 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ contributors ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
580 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ contributors ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
577 |
581 |
578 # ~~~~~~ contributors |
582 # ~~~~~~ contributors |
579 contributors = element contributors { contributors.content } |
583 contributors = element contributors { contributors.content } |
595 firstname = element firstname { firstname.content } |
599 firstname = element firstname { firstname.content } |
596 secondname = element secondname { secondname.content } |
600 secondname = element secondname { secondname.content } |
597 lastname = element lastname { lastname.content } |
601 lastname = element lastname { lastname.content } |
598 label = element label { label.content } |
602 label = element label { label.content } |
599 |
603 |
600 firstname.content = inlines |
604 firstname.content = simple.inlines |
601 secondname.content = inlines |
605 secondname.content = simple.inlines |
602 lastname.content = inlines |
606 lastname.content = simple.inlines |
603 label.content = inlines |
607 label.content = simple.inlines |
604 |
608 |
605 # ~~~~~~ address |
609 # ~~~~~~ address |
606 address = element address { address.content } |
610 address = element address { address.content } |
607 |
611 |
608 address.content = inlines |
612 address.content = simple.inlines |
609 |
613 |
610 # ~~~~~~ role |
614 # ~~~~~~ role |
611 role = element role { role.content } |
615 role = element role { role.content } |
612 |
616 |
613 role.content = "author" | "illustrator" | "publisher" | "packager" |
617 role.content = "author" | "illustrator" | "publisher" | "packager" |
614 |
618 |
615 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ place ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
619 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ place ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
616 |
620 |
617 place = element place { place.content } |
621 place = element place { place.content } |
618 |
622 |
619 place.content = inlines |
623 place.content = simple.inlines |
620 |
624 |
621 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ source ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
625 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ source ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
622 |
626 |
623 source = element source { |
627 source = element source { |
624 ( (attribute type { "book" }, bibliography.entry.content) |
628 ( (attribute type { "book" }, bibliography.entry.content) |
639 keywordset.content = keyword+ |
643 keywordset.content = keyword+ |
640 |
644 |
641 # ~~~~~~ keyword |
645 # ~~~~~~ keyword |
642 keyword = element keyword { keyword.content } |
646 keyword = element keyword { keyword.content } |
643 |
647 |
644 keyword.content = mixed { sup*, sub* } |
648 keyword.content = simple.inlines |
645 |
649 |
646 # ~~~~~~ subjectset |
650 # ~~~~~~ subjectset |
647 subjectset = element subjectset { subjectset.content } |
651 subjectset = element subjectset { subjectset.content } |
648 |
652 |
649 subjectset.content = subject+ |
653 subjectset.content = subject+ |
650 |
654 |
651 # ~~~~~~ subject |
655 # ~~~~~~ subject |
652 subject = element subject { subject.content } |
656 subject = element subject { subject.content } |
653 |
657 |
654 subject.content = mixed { sup*, sub* } |
658 subject.content = simple.inlines |
|
659 |
|
660 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ index ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
|
661 |
|
662 # ~~~~~~ index |
|
663 index = element index { index.content } |
|
664 head.index = element index { head.index.content } |
|
665 |
|
666 index.content = |
|
667 (index.w, index.entry?) |
|
668 | (index.entry, (index.w | index.entry)?) |
|
669 head.index.content = |
|
670 index.entry, index.entry? |
|
671 |
|
672 # ~~~~~~ index.w |
|
673 index.w = element w { simple.inlines } |
|
674 |
|
675 # ~~~~~~ index.entry |
|
676 index.entry = element entry { simple.inlines } |
655 |
677 |
656 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ abstract ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
678 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ abstract ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
657 |
679 |
658 abstract = element abstract { abstract.content } |
680 abstract = element abstract { abstract.content } |
659 |
681 |
781 "person" | "company" | "book" | "newspaper" | "party" | "movie" |
806 "person" | "company" | "book" | "newspaper" | "party" | "movie" |
782 | "painting" } |
807 | "painting" } |
783 |
808 |
784 name.content = mixed { sup* & number* & acronym* & warning* } |
809 name.content = mixed { sup* & number* & acronym* & warning* } |
785 |
810 |
|
811 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ acronym ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
|
812 |
|
813 acronym = element acronym { acronym.content } |
|
814 |
|
815 acronym.content = mixed { sup* & warning* } |
|
816 |
|
817 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ term ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
|
818 |
|
819 term = element term { term.content } |
|
820 |
|
821 term.content = mixed { sup* & warning* } |
|
822 |
|
823 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ literal ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
|
824 |
|
825 literal = element literal { literal.content } |
|
826 |
|
827 literal.content = inlines |
|
828 |
786 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ foreign ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
829 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ foreign ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
787 |
830 |
788 foreign = element foreign { foreign.attributes, foreign.content } |
831 foreign = element foreign { foreign.attributes, foreign.content } |
789 |
832 |
790 foreign.attributes = |
833 foreign.attributes = |
791 lang.attribute? |
834 lang.attribute? |
792 |
835 |
793 foreign.content = inlines |
836 foreign.content = inlines |
794 |
837 |
795 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ acronym ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
838 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ highlight ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
796 |
839 |
797 acronym = element acronym { acronym.content } |
840 highlight = element highlight { highlight.content } |
798 |
841 |
799 acronym.content = mixed { sup* & warning* } |
842 highlight.content = inlines |
800 |
843 |
801 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ term ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
844 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ emphasis ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
802 |
845 |
803 term = element term { term.content } |
846 emphasis = element emphasis { emphasis.content } |
804 |
847 |
805 term.content = mixed { sup* & warning* } |
848 emphasis.content = inlines |
806 |
849 |
807 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ literal ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
850 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ mentioned ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
808 |
851 |
809 literal = element literal { literal.content } |
852 mentioned = element mentioned { mentioned.content } |
810 |
853 |
811 literal.content = inlines |
854 mentioned.content = inlines |
812 |
855 |
813 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ stage ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
856 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ stage ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
814 |
857 |
815 stage = element stage { stage.content } |
858 stage = element stage { stage.content } |
816 |
859 |
817 stage.content = inlines |
860 stage.content = inlines |
818 |
861 |
819 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ highlight ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
|
820 |
|
821 highlight = element highlight { highlight.content } |
|
822 |
|
823 highlight.content = inlines |
|
824 |
|
825 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ emphasis ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
|
826 |
|
827 emphasis = element emphasis { emphasis.content } |
|
828 |
|
829 emphasis.content = inlines |
|
830 |
|
831 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ mentioned ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
|
832 |
|
833 mentioned = element mentioned { mentioned.content } |
|
834 |
|
835 mentioned.content = inlines |
|
836 |
|
837 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ initial ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
862 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ initial ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
838 |
863 |
839 initial = element initial { initial.content } |
864 initial = element initial { initial.content } |
840 |
865 |
841 initial.content = |
866 initial.content = |
842 c, |
867 initial.c, |
843 w? |
868 initial.w? |
844 |
869 |
845 c = element c { text } |
870 initial.c = element c { text } |
846 w = element w { inlines } |
871 initial.w = element w { inlines } |
847 |
|
848 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ note ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
|
849 |
|
850 note = element note { note.attributes, note.content } |
|
851 |
|
852 note.attributes = |
|
853 note.label.attribute? |
|
854 note.label.attribute = attribute label { text } |
|
855 |
|
856 note.content = |
|
857 (w?, block+) | inlines |
|
858 |
872 |
859 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ quote ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
873 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ quote ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
860 |
874 |
861 quote = element quote { quote.content } |
875 quote = element quote { quote.content } |
862 |
876 |
864 (phrase, attribution) | inlines |
878 (phrase, attribution) | inlines |
865 |
879 |
866 phrase = element phrase { phrase.content } |
880 phrase = element phrase { phrase.content } |
867 |
881 |
868 phrase.content = inlines |
882 phrase.content = inlines |
869 |
|
870 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ link ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
|
871 |
|
872 link = element link { link.attributes, link.content } |
|
873 |
|
874 link.attributes = |
|
875 (uri.attribute | idref.attribute) |
|
876 uri.attribute = attribute uri { xsd:anyURI } |
|
877 idref.attribute = attribute idref { xsd:IDREF } |
|
878 |
|
879 link.content = mixed { |
|
880 sup* & sub* & var* & number* & math* & date* & name* & foreign* & acronym* |
|
881 & term* & literal* & stage* & highlight* & emphasis* & mentioned* & warning* } |
|
882 |
|
883 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ anchor ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
|
884 |
|
885 anchor = element anchor { anchor.attributes, anchor.content } |
|
886 |
|
887 anchor.attributes = |
|
888 anchor.id.attribute |
|
889 anchor.id.attribute = attribute xml:id { xsd:ID } |
|
890 |
|
891 anchor.content = inlines |
|
892 |
883 |
893 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ smil ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
884 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ smil ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
894 |
885 |
895 smil = element smil { smil.attributes, smil.content } |
886 smil = element smil { smil.attributes, smil.content } |
896 |
887 |
902 begin.attribute = attribute begin { xsd:decimal } |
893 begin.attribute = attribute begin { xsd:decimal } |
903 end.attribute = attribute end { xsd:decimal } |
894 end.attribute = attribute end { xsd:decimal } |
904 |
895 |
905 smil.content = inlines |
896 smil.content = inlines |
906 |
897 |
|
898 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ note ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
|
899 |
|
900 note = element note { note.attributes, note.content } |
|
901 |
|
902 note.attributes = |
|
903 note.label.attribute? |
|
904 note.label.attribute = attribute label { text } |
|
905 |
|
906 note.content = |
|
907 (note.w?, block+) |
|
908 | inlines |
|
909 |
|
910 note.w = element w { inlines } |
|
911 |
|
912 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ link ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
|
913 |
|
914 link = element link { link.attributes, link.content } |
|
915 |
|
916 link.attributes = |
|
917 (uri.attribute | idref.attribute) |
|
918 uri.attribute = attribute uri { xsd:anyURI } |
|
919 idref.attribute = attribute idref { xsd:IDREF } |
|
920 |
|
921 link.content = simple.inlines |
|
922 |
|
923 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ anchor ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
|
924 |
|
925 anchor = element anchor { anchor.attributes, anchor.content } |
|
926 |
|
927 anchor.attributes = |
|
928 anchor.id.attribute |
|
929 anchor.id.attribute = attribute xml:id { xsd:ID } |
|
930 |
|
931 anchor.content = simple.inlines |
|
932 |
907 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ warning ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
933 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ warning ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
908 |
934 |
909 warning = element warning { warning.attributes, warning.content } |
935 warning = element warning { warning.attributes, warning.content } |
910 |
936 |
911 warning.attributes = |
937 warning.attributes = |