RelaxNG/publidoc.rnc
changeset 350 58bbf6bb79e2
parent 313 e4f154ea2837
child 351 715ab7002268
equal deleted inserted replaced
349:79795b5c4684 350:58bbf6bb79e2
    70 # ~~~~~~ contributor
    70 # ~~~~~~ contributor
    71 contributor = element contributor { contributor.content }
    71 contributor = element contributor { contributor.content }
    72 
    72 
    73 contributor.content =
    73 contributor.content =
    74    identifier.uri?,
    74    identifier.uri?,
    75    (((firstname, secondname?)?, lastname) | label),
    75    ((firstname?, lastname) | label),
    76    address?,
    76    address?,
    77    link?,
    77    link?,
    78    role+
    78    role+
    79 
    79 
    80 # ~~~~~~ firstname, secondname, lastname, label
    80 # ~~~~~~ firstname, secondname, lastname, label
    81 firstname = element firstname { firstname.content }
    81 firstname = element firstname { firstname.content }
    82 secondname = element secondname { secondname.content }
       
    83 lastname = element lastname { lastname.content }
    82 lastname = element lastname { lastname.content }
    84 label = element label { label.content }
    83 label = element label { label.content }
    85 
    84 
    86 firstname.content = simple.inlines
    85 firstname.content = simple.inlines
    87 secondname.content = simple.inlines
       
    88 lastname.content = simple.inlines
    86 lastname.content = simple.inlines
    89 label.content = simple.inlines
    87 label.content = simple.inlines
    90 
    88 
    91 # ~~~~~~ address
    89 # ~~~~~~ address
    92 address = element address { address.content }
    90 address = element address { address.content }
   720 simple.inlines = mixed {
   718 simple.inlines = mixed {
   721    sup*
   719    sup*
   722  & sub*
   720  & sub*
   723  & var*
   721  & var*
   724  & number*
   722  & number*
   725  & math*
       
   726  & date*
       
   727  & name*
       
   728  & acronym*
   723  & acronym*
   729  & term*
       
   730  & warning*
   724  & warning*
   731 }
   725 }
   732 
   726 
   733 inlines = mixed {
   727 inlines = mixed {
   734    sup*
   728    sup*
   735  & sub*
   729  & sub*
   736  & var*
   730  & var*
   737  & number*
   731  & number*
   738  & math*
       
   739  & date*
       
   740  & name*
       
   741  & acronym*
   732  & acronym*
   742  & term*
       
   743  & warning*
   733  & warning*
   744 
   734 
   745  & literal*
       
   746  & foreign*
       
   747  & highlight*
   735  & highlight*
   748  & emphasis*
   736  & emphasis*
   749  & mentioned*
   737  & mentioned*
       
   738  & literal*
       
   739  & term*
   750  & stage*
   740  & stage*
       
   741  & name*
       
   742  & foreign*
       
   743  & date*
       
   744  & math*
   751  & initial*
   745  & initial*
   752  & quote*
   746  & quote*
   753  & image*
   747  & image*
   754  & audio*
   748  & audio*
   755  & smil*
   749  & smil*
   779 number.value.attribute = attribute value { xsd:integer | xsd:decimal }
   773 number.value.attribute = attribute value { xsd:integer | xsd:decimal }
   780 
   774 
   781 number.content = mixed { sup* & warning* }
   775 number.content = mixed { sup* & warning* }
   782 number.roman.content = xsd:token {pattern = "[MCLXVI]+"}
   776 number.roman.content = xsd:token {pattern = "[MCLXVI]+"}
   783 
   777 
       
   778 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ acronym ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
       
   779 
       
   780 acronym = element acronym { acronym.content }
       
   781 
       
   782 acronym.content = mixed { sup* & warning* }
       
   783 
       
   784 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ highlight ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
       
   785 
       
   786 highlight = element highlight { highlight.content }
       
   787 
       
   788 highlight.content = inlines
       
   789 
       
   790 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ emphasis ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
       
   791 
       
   792 emphasis = element emphasis { emphasis.content }
       
   793 
       
   794 emphasis.content = inlines
       
   795 
       
   796 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ mentioned ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
       
   797 
       
   798 mentioned = element mentioned { mentioned.content }
       
   799 
       
   800 mentioned.content = inlines
       
   801 
       
   802 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ literal ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
       
   803 
       
   804 literal = element literal { literal.content }
       
   805 
       
   806 literal.content = inlines
       
   807 
       
   808 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ term ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
       
   809 
       
   810 term = element term { term.content }
       
   811 
       
   812 term.content = mixed { sup* & warning* }
       
   813 
       
   814 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ stage ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
       
   815 
       
   816 stage = element stage { stage.content }
       
   817 
       
   818 stage.content = inlines
       
   819 
       
   820 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ name ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
       
   821 
       
   822 name = element name { name.attributes, name.content }
       
   823 
       
   824 name.attributes =
       
   825    name.of.attribute?
       
   826 name.of.attribute = attribute of {
       
   827    "person" | "company" | "book" | "newspaper" | "party" | "movie"
       
   828  | "painting" }
       
   829 
       
   830 name.content = mixed { sup* & number* & acronym* & warning* }
       
   831 
       
   832 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ foreign ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
       
   833 
       
   834 foreign = element foreign { foreign.attributes, foreign.content }
       
   835 
       
   836 foreign.attributes =
       
   837    lang.attribute?
       
   838 
       
   839 foreign.content = inlines
       
   840 
       
   841 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ date ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
       
   842 
       
   843 date = element date { date.attributes, date.content }
       
   844 
       
   845 date.attributes =
       
   846    date.value.attribute
       
   847  & date.of.attribute?
       
   848 date.value.attribute = attribute value { xsd:date | xsd:gYearMonth | xsd:gYear }
       
   849 date.of.attribute = attribute of { "birth" | "death" }
       
   850 
       
   851 date.content = mixed { sup* & number* & warning* }
       
   852 
   784 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ math ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   853 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ math ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   785 
   854 
   786 # ~~~~~~ math
   855 # ~~~~~~ math
   787 math = element math { math.attributes, math.content }
   856 math = element math { math.attributes, math.content }
   788 
   857 
   802 latex.attributes =
   871 latex.attributes =
   803    plain.attritute?
   872    plain.attritute?
   804 plain.attritute = attribute plain { xsd:boolean }
   873 plain.attritute = attribute plain { xsd:boolean }
   805 
   874 
   806 latex.content = text
   875 latex.content = text
   807 
       
   808 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ date ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
       
   809 
       
   810 date = element date { date.attributes, date.content }
       
   811 
       
   812 date.attributes =
       
   813    date.value.attribute
       
   814  & date.of.attribute?
       
   815 date.value.attribute = attribute value { xsd:date | xsd:gYearMonth | xsd:gYear }
       
   816 date.of.attribute = attribute of { "birth" | "death" }
       
   817 
       
   818 date.content = mixed { sup* & number* & warning* }
       
   819 
       
   820 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ name ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
       
   821 
       
   822 name = element name { name.attributes, name.content }
       
   823 
       
   824 name.attributes =
       
   825    name.of.attribute?
       
   826 name.of.attribute = attribute of {
       
   827    "person" | "company" | "book" | "newspaper" | "party" | "movie"
       
   828  | "painting" }
       
   829 
       
   830 name.content = mixed { sup* & number* & acronym* & warning* }
       
   831 
       
   832 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ acronym ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
       
   833 
       
   834 acronym = element acronym { acronym.content }
       
   835 
       
   836 acronym.content = mixed { sup* & warning* }
       
   837 
       
   838 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ term ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
       
   839 
       
   840 term = element term { term.content }
       
   841 
       
   842 term.content = mixed { sup* & warning* }
       
   843 
       
   844 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ literal ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
       
   845 
       
   846 literal = element literal { literal.content }
       
   847 
       
   848 literal.content = inlines
       
   849 
       
   850 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ foreign ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
       
   851 
       
   852 foreign = element foreign { foreign.attributes, foreign.content }
       
   853 
       
   854 foreign.attributes =
       
   855    lang.attribute?
       
   856 
       
   857 foreign.content = inlines
       
   858 
       
   859 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ highlight ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
       
   860 
       
   861 highlight = element highlight { highlight.content }
       
   862 
       
   863 highlight.content = inlines
       
   864 
       
   865 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ emphasis ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
       
   866 
       
   867 emphasis = element emphasis { emphasis.content }
       
   868 
       
   869 emphasis.content = inlines
       
   870 
       
   871 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ mentioned ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
       
   872 
       
   873 mentioned = element mentioned { mentioned.content }
       
   874 
       
   875 mentioned.content = inlines
       
   876 
       
   877 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ stage ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
       
   878 
       
   879 stage = element stage { stage.content }
       
   880 
       
   881 stage.content = inlines
       
   882 
   876 
   883 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ initial ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   877 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ initial ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   884 
   878 
   885 initial = element initial { initial.content }
   879 initial = element initial { initial.content }
   886 
   880