<sch:rule context="@source">
                              
                              <sch:assert role="warning" test="not(normalize-space(.) eq '')">@source attribute
                                 should have content.</sch:assert>
                              
                              <sch:assert role="warning" test="every $i in tokenize(., '\s+') satisfies substring($i,2)=//mei:*[local-name() eq
                                       'source' or local-name() eq 'manifestation']/@xml:id">Each value in @source should correspond to the @xml:id attribute of a source or
                                 manifestation element.</sch:assert>
                              </sch:rule>
                     <classSpec ident="att.source" module="MEI.shared" type="atts">
                        
                        <desc>Attributes common to elements that may refer to a source.</desc>
                        
                        <attList org="group">
                           
                           <attDef ident="source" usage="opt">
                              
                              <desc>Contains a list of one or more pointers indicating the sources which attest to a given
                                 reading. Each value should correspond to the ID of a 
                                 <gi scheme="MEI">source</gi> or 
                                 <gi scheme="MEI">manifestation</gi>element located in the document header.</desc>
                              
                              
                              
                              <constraintSpec ident="check_sourceTarget" scheme="schematron">
                                 
                                 <constraint>
                                    
                                    <sch:rule context="@source">
                                       
                                       <sch:assert role="warning" test="not(normalize-space(.) eq '')">@source attribute
                                          should have content.</sch:assert>
                                       
                                       <sch:assert role="warning" test="every $i in tokenize(., '\s+') satisfies substring($i,2)=//mei:*[local-name() eq
                                                'source' or local-name() eq 'manifestation']/@xml:id">Each value in @source should correspond to the @xml:id attribute of a source or
                                          manifestation element.</sch:assert>
                                       </sch:rule>
                                    </constraint>
                                 </constraintSpec>
                              </attDef>
                           </attList>
                        </classSpec>