RelaxNG/publidoc.rnc
changeset 288 e89c967167bb
parent 285 aace9a2da668
child 289 3cc4f942de2c
equal deleted inserted replaced
287:dba493c150dd 288:e89c967167bb
    35  & place?
    35  & place?
    36  & (source, source?)?
    36  & (source, source?)?
    37  & keywordset?
    37  & keywordset?
    38  & subjectset?
    38  & subjectset?
    39  & abstract?
    39  & abstract?
       
    40  & head.index*
    40  & cover?
    41  & cover?
    41  & annotation*
    42  & annotation*
    42 
    43 
    43 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ document ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    44 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ document ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    44 
    45 
   121  & contributors?
   122  & contributors?
   122  & date?
   123  & date?
   123  & place?
   124  & place?
   124  & keywordset?
   125  & keywordset?
   125  & subjectset?
   126  & subjectset?
       
   127  & head.index*
   126  & abstract?
   128  & abstract?
   127  & annotation*
   129  & annotation*
   128 
   130 
   129 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ topic ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   131 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ topic ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   130 
   132 
   176 
   178 
   177 section.head.content =
   179 section.head.content =
   178    (title, shorttitle?, subtitle*)?
   180    (title, shorttitle?, subtitle*)?
   179  & keywordset?
   181  & keywordset?
   180  & subjectset?
   182  & subjectset?
       
   183  & head.index*
   181  & abstract?
   184  & abstract?
   182  & audio*
   185  & audio*
   183  & annotation*
   186  & annotation*
   184 
   187 
   185 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ bibliography ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   188 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ bibliography ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   210 # ~~~~~~ block.head
   213 # ~~~~~~ block.head
   211 block.head = element head { block.head.content }
   214 block.head = element head { block.head.content }
   212 
   215 
   213 block.head.content =
   216 block.head.content =
   214    (title, shorttitle?, subtitle*)?
   217    (title, shorttitle?, subtitle*)?
       
   218  & head.index*
   215 
   219 
   216 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ p ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   220 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ p ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   217 
   221 
   218 p = element p { p.content }
   222 p = element p { p.content }
   219 
   223 
   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 
   668    cover.image
   690    cover.image
   669 
   691 
   670 cover.image = element image { cover.image.attributes }
   692 cover.image = element image { cover.image.attributes }
   671 
   693 
   672 cover.image.attributes =
   694 cover.image.attributes =
   673    cover.image.id.attribute
   695    media.id.attribute
   674 cover.image.id.attribute = attribute id { xsd:NMTOKEN }
       
   675    
   696    
   676 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ annotation ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   697 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ annotation ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   677 
   698 
   678 annotation = element annotation { annotation.content }
   699 annotation = element annotation { annotation.content }
   679 
   700 
   684 #                                 INLINE LEVEL
   705 #                                 INLINE LEVEL
   685 # =============================================================================
   706 # =============================================================================
   686 
   707 
   687 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ inlines ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   708 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ inlines ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   688 
   709 
   689 inlines = mixed {
   710 simple.inlines = mixed {
   690    sup*
   711    sup*
   691  & sub*
   712  & sub*
   692  & var*
   713  & var*
   693  & number*
   714  & number*
   694  & math*
   715  & math*
   695  & date*
   716  & date*
   696  & name*
   717  & name*
   697  & foreign*
       
   698  & acronym*
   718  & acronym*
   699  & term*
   719  & term*
       
   720  & warning*
       
   721 }
       
   722 
       
   723 inlines =
       
   724    simple.inlines
   700  & literal*
   725  & literal*
   701  & stage*
   726  & foreign*
   702  & highlight*
   727  & highlight*
   703  & emphasis*
   728  & emphasis*
   704  & mentioned*
   729  & mentioned*
       
   730  & stage*
   705  & initial*
   731  & initial*
   706  & note*
       
   707  & quote*
   732  & quote*
   708  & link*
       
   709  & anchor*
       
   710  & image*
   733  & image*
   711  & audio*
   734  & audio*
   712  & smil*
   735  & smil*
   713  & warning*
   736  & note*
   714 }
   737  & link*
       
   738  & anchor*
       
   739  & index*
   715 
   740 
   716 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ sub, sup, var ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   741 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ sub, sup, var ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   717 
   742 
   718 sup = element sup { mixed { var* & warning* } }
   743 sup = element sup { mixed { var* & warning* } }
   719 
   744 
   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 =