Avrei la necessità di redigere degli xml partendo da un dtd abbastanza complesso. In particolare non capisco la sintassi che è differente rispetto a quella di alcune guide online che ho visto, compreso quella su questo sito. Il dtd mi riporta sovente dei simboli % che non capisco cosa significhino. Qualcuno può consigliarmi un qualche riferimento o darmi un aiuto diretto? Grazie.

Riporto il dtd per chiarezza:
Codice PHP:
<!ENTITY dtd-version   
            
"dtd-version        
                        CDATA                          #FIXED '3.0'" 
>




<!--                    
Attributes for the top-level element
                        
<article>                                  -->
<!
ENTITY article-atts
            
"article-type   
                        CDATA                              #IMPLIED
             %dtd-version;                              
             xml:lang   NMTOKEN                            'en'     
             %XLINK.xmlns.attrib;
             %MATHML.xmlns.attrib;
             %Schema.xmlns.attrib;"                                  
>




<!
ENTITY sub-article-atts
            
"article-type   
                        CDATA                              #IMPLIED
             id         ID                                 #IMPLIED  
             xml:lang   NMTOKEN                            'en'"     
>




<!
ENTITY response-atts
            
"response-type   
                        CDATA                              #IMPLIED
             id         ID                                 #IMPLIED  
             xml:lang   NMTOKEN                            'en'"     
>
                                                               







<!--                    
Article-like model used for, for example,
                        
a short sub-article such as a news brief that
                        is contained in side a journal article
.
                                                                   -->
<!
ENTITY article-short-model    
                        
"((front | front-stub), body?, back?,
                          floats-group?)"                            
>



<!--                    
Typical journal article modelwhich may
                        contain extended components
such as
                        
sub-articles or responsesbut which usually
                        contains neither
.  
                                                                   -->
<!
ENTITY article-full-model
                        
"(front, body?, back?, floats-group?,
                         (sub-article* | response*) )"               
>



<!--                    
The complete content of a journal article.
                        
Details at
                        [
url]http://dtd.nlm.nih.gov/publishing/tag-library/3.0/index.html?elem=article[/url]
                                                                   
-->
<!
ELEMENT  article      %article-full-model;                         >
<!
ATTLIST  article
             
%article-atts;                                          >








<!--                    
Model for the <frontmatter (the header
                        metadata
of a journal article)            -->
<!
ENTITY front-model  "(journal-meta, article-meta, 
                          (%front-back.class;)? )"                   
>



<!--                    
The metadata concerning an articlesuch as
                        
the name and issue of the journal in which it
                        appears 
and the name and author(sof the 
                        article
.
                        
Details at
                        [
url]http://dtd.nlm.nih.gov/publishing/tag-library/3.0/index.html?elem=front[/url]
                                                                   
-->
<!
ELEMENT  front        %front-model;                                > 








<!--                    
Content model for the Body (main textual
                        content
of a journal article.             -->
<!
ENTITY body-model   "((%para-level;)*, (%sec-level;)*,
                          sig-block?)"                               




<!--                    
The main textual portion of the article that
                        conveys the content

                        
Details at
                        [
url]http://dtd.nlm.nih.gov/publishing/tag-library/3.0/index.html?elem=body[/url]
                                                                   
-->
<!
ELEMENT  body         %body-model;                                 >








<!--                    
Content model for the Back Matter (ancillary
                        material such 
as appendicesof a journal
                        article
.                                   -->
<!
ENTITY back-model   "(label?, title*, (%doc-back-matter-mix;)* )">



<!--                    
Ancillary or supporting material not included
                        
as part of the main textual content of a 
                        journal article
, for example appendices and
                        
acknowledgments
                        
Details at
                        [
url]http://dtd.nlm.nih.gov/publishing/tag-library/3.0/index.html?elem=back[/url]
                                                                   
-->
<!
ELEMENT  back         %back-model;                                 >








<!--                    
Content model for the <sub-articleelement
                                                                   
-->
<!
ENTITY sub-article-model   
                        
"((front | front-stub), body?, back?,
                          floats-group?, 
                          (sub-article* | response*) )"              
>



<!--                    
An article that is completely contained 
                        inside another article
Both the article and
                        
the sub-article have their own metadata.
                        
Details at
                        [
url]http://dtd.nlm.nih.gov/publishing/tag-library/3.0/index.html?elem=sub-article[/url]
                                                                   
-->
<!
ELEMENT  sub-article  %sub-article-model;                          >
<!
ATTLIST  sub-article 
             
%sub-article-atts;                                      >

  

<!--                    
Content model for the <front-stubelement,
                        
a reduced metadata set for use in 
                        sub
-articles and responses                 -->
<!
ENTITY front-stub-model  
                        
"(article-id*, article-categories?, 
                         title-group?, (contrib-group | aff)*, 
                         author-notes?, pub-date*, 
                         volume?, volume-id*, volume-series?, 
                         issue?, issue-id*, issue-title*,
                         issue-sponsor*, issue-part?, isbn*, 
                         supplement?, 
                         ((fpage, lpage?, page-range?) | 
                           elocation-id)?, 
                         (%address-link.class; | product | 
                         supplementary-material)*, history?, 
                         permissions?, self-uri*, related-article*, 
                         abstract*, trans-abstract*, kwd-group*, 
                         funding-group*, conference*, counts?,
                         custom-meta-group?)"                        
>



<!--                    
A reduced metadata set for use in 
                        sub
-articles and responseswhich will 
                        inherit metadata not defined in the stub
                        from the enclosing article 
                        Details at

                        [
url]http://dtd.nlm.nih.gov/publishing/tag-library/3.0/index.html?elem=front-stub[/url]
                                                                   
-->
<!
ELEMENT  front-stub   %front-stub-model;                           >








<!--                    
Replyresponse, or commentary concerning the
                        journal article
In the typical case, the
                        response is included in the same XML package 
                        
as the original article, and thus attached 
                        at the end of the article proper
.
                        
Details at
                        [
url]http://dtd.nlm.nih.gov/publishing/tag-library/3.0/index.html?elem=response[/url]
                                                                   
-->
<!
ELEMENT  response     %article-short-model;                        >
<!
ATTLIST  response
             
%response-atts;                                         >