/[volute]/trunk/projects/dm/vo-dml/xslt/vo-dml.sch.xsl
ViewVC logotype

Diff of /trunk/projects/dm/vo-dml/xslt/vo-dml.sch.xsl

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 2524 by gerard.lemson, Mon Apr 7 16:34:35 2014 UTC revision 2525 by gerard.lemson, Fri Apr 11 04:40:01 2014 UTC
# Line 212  Line 212 
212          <xsl:apply-templates/>          <xsl:apply-templates/>
213        </svrl:active-pattern>        </svrl:active-pattern>
214        <xsl:apply-templates select="/" mode="M4"/>        <xsl:apply-templates select="/" mode="M4"/>
215          <svrl:active-pattern>
216            <xsl:attribute name="document">
217              <xsl:value-of select="document-uri(/)"/>
218            </xsl:attribute>
219            <xsl:apply-templates/>
220          </svrl:active-pattern>
221          <xsl:apply-templates select="/" mode="M5"/>
222          <svrl:active-pattern>
223            <xsl:attribute name="document">
224              <xsl:value-of select="document-uri(/)"/>
225            </xsl:attribute>
226            <xsl:apply-templates/>
227          </svrl:active-pattern>
228          <xsl:apply-templates select="/" mode="M6"/>
229      </svrl:schematron-output>      </svrl:schematron-output>
230    </xsl:template>    </xsl:template>
231    
# Line 222  Line 236 
236    
237    
238          <!--RULE -->          <!--RULE -->
239    <xsl:template match="vodml-id[not(../name() = 'vo-dml:model')]" priority="1000" mode="M3">
240        <svrl:fired-rule xmlns:svrl="http://purl.oclc.org/dsdl/svrl"
241                         context="vodml-id[not(../name() = 'vo-dml:model')]"/>
242        <xsl:variable name="count" select="count(./following::vodml-id[. = current()])"/>
243    
244                      <!--ASSERT -->
245    <xsl:choose>
246          <xsl:when test="$count = 0"/>
247          <xsl:otherwise>
248            <svrl:failed-assert xmlns:svrl="http://purl.oclc.org/dsdl/svrl" test="$count = 0">
249              <xsl:attribute name="flag">error</xsl:attribute>
250              <xsl:attribute name="location">
251                <xsl:apply-templates select="." mode="schematron-select-full-path"/>
252              </xsl:attribute>
253              <svrl:text>
254    vodml-id '<xsl:text/>
255                <xsl:value-of select="."/>
256                <xsl:text/>' is not unique, there are <xsl:text/>
257                <xsl:value-of select="$count"/>
258                <xsl:text/> other elements with same vodml-id in this model.
259        </svrl:text>
260            </svrl:failed-assert>
261          </xsl:otherwise>
262        </xsl:choose>
263        <xsl:apply-templates select="*" mode="M3"/>
264      </xsl:template>
265      <xsl:template match="text()" priority="-1" mode="M3"/>
266      <xsl:template match="@*|node()" priority="-2" mode="M3">
267        <xsl:apply-templates select="*" mode="M3"/>
268      </xsl:template>
269    
270      <!--PATTERN -->
271    
272    
273            <!--RULE -->
274    <xsl:template match="collection/datatype/utype" priority="1000" mode="M4">
275        <svrl:fired-rule xmlns:svrl="http://purl.oclc.org/dsdl/svrl" context="collection/datatype/utype"/>
276        <xsl:variable name="count" select="count(//collection/datatype/utype[. = current()])"/>
277    
278                      <!--ASSERT -->
279    <xsl:choose>
280          <xsl:when test="$count = 1"/>
281          <xsl:otherwise>
282            <svrl:failed-assert xmlns:svrl="http://purl.oclc.org/dsdl/svrl" test="$count = 1">
283              <xsl:attribute name="flag">error</xsl:attribute>
284              <xsl:attribute name="location">
285                <xsl:apply-templates select="." mode="schematron-select-full-path"/>
286              </xsl:attribute>
287              <svrl:text>
288                <xsl:text/>
289                <xsl:value-of select="."/>
290                <xsl:text/> is used more than once, namely <xsl:text/>
291                <xsl:value-of select="$count"/>
292                <xsl:text/> times as target of composition relation.
293     (this message will repeat itself <xsl:text/>
294                <xsl:value-of select="$count"/>
295                <xsl:text/> times!)
296        </svrl:text>
297            </svrl:failed-assert>
298          </xsl:otherwise>
299        </xsl:choose>
300        <xsl:apply-templates select="*" mode="M4"/>
301      </xsl:template>
302      <xsl:template match="text()" priority="-1" mode="M4"/>
303      <xsl:template match="@*|node()" priority="-2" mode="M4">
304        <xsl:apply-templates select="*" mode="M4"/>
305      </xsl:template>
306    
307      <!--PATTERN -->
308    
309    
310            <!--RULE -->
311  <xsl:template match="utype[substring-before(text(),':') != '' and substring-before(text(),':') != /vo-dml:model/vodml-id]"  <xsl:template match="utype[substring-before(text(),':') != '' and substring-before(text(),':') != /vo-dml:model/vodml-id]"
312                  priority="1000"                  priority="1000"
313                  mode="M3">                  mode="M5">
314      <svrl:fired-rule xmlns:svrl="http://purl.oclc.org/dsdl/svrl"      <svrl:fired-rule xmlns:svrl="http://purl.oclc.org/dsdl/svrl"
315                       context="utype[substring-before(text(),':') != '' and substring-before(text(),':') != /vo-dml:model/vodml-id]"/>                       context="utype[substring-before(text(),':') != '' and substring-before(text(),':') != /vo-dml:model/vodml-id]"/>
316      <xsl:variable name="prefix" select="substring-before(text(),':')"/>      <xsl:variable name="prefix" select="substring-before(text(),':')"/>
# Line 235  Line 321 
321        <xsl:otherwise>        <xsl:otherwise>
322          <svrl:failed-assert xmlns:svrl="http://purl.oclc.org/dsdl/svrl"          <svrl:failed-assert xmlns:svrl="http://purl.oclc.org/dsdl/svrl"
323                              test="/vo-dml:model/import/vodml-id = $prefix">                              test="/vo-dml:model/import/vodml-id = $prefix">
324              <xsl:attribute name="flag">error</xsl:attribute>
325            <xsl:attribute name="location">            <xsl:attribute name="location">
326              <xsl:apply-templates select="." mode="schematron-select-full-path"/>              <xsl:apply-templates select="." mode="schematron-select-full-path"/>
327            </xsl:attribute>            </xsl:attribute>
328            <svrl:text>            <svrl:text>
329  ERROR:  There is no imported model corresponding to model prefix '<xsl:text/>  There is no imported model corresponding to model prefix '<xsl:text/>
330              <xsl:value-of select="$prefix"/>              <xsl:value-of select="$prefix"/>
331              <xsl:text/>' in this model.              <xsl:text/>' in this model.
332      </svrl:text>      </svrl:text>
333          </svrl:failed-assert>          </svrl:failed-assert>
334        </xsl:otherwise>        </xsl:otherwise>
335      </xsl:choose>      </xsl:choose>
336      <xsl:apply-templates select="*" mode="M3"/>      <xsl:apply-templates select="*" mode="M5"/>
337    </xsl:template>    </xsl:template>
338    <xsl:template match="text()" priority="-1" mode="M3"/>    <xsl:template match="text()" priority="-1" mode="M5"/>
339    <xsl:template match="@*|node()" priority="-2" mode="M3">    <xsl:template match="@*|node()" priority="-2" mode="M5">
340      <xsl:apply-templates select="*" mode="M3"/>      <xsl:apply-templates select="*" mode="M5"/>
341    </xsl:template>    </xsl:template>
342    
343    <!--PATTERN -->    <!--PATTERN -->
344    
345    
346          <!--RULE -->          <!--RULE -->
347  <xsl:template match="attribute" priority="1004" mode="M4">  <xsl:template match="attribute" priority="1004" mode="M6">
348      <svrl:fired-rule xmlns:svrl="http://purl.oclc.org/dsdl/svrl" context="attribute"/>      <svrl:fired-rule xmlns:svrl="http://purl.oclc.org/dsdl/svrl" context="attribute"/>
349      <xsl:variable name="owner" select="./vodml-id"/>      <xsl:variable name="owner" select="./vodml-id"/>
350      <xsl:variable name="target" select="fct:vo-dml_element(datatype/utype,/vo-dml:model)"/>      <xsl:variable name="target" select="fct:vo-dml_element(datatype/utype,/vo-dml:model)"/>
# Line 268  Line 355 
355        <xsl:otherwise>        <xsl:otherwise>
356          <svrl:failed-assert xmlns:svrl="http://purl.oclc.org/dsdl/svrl"          <svrl:failed-assert xmlns:svrl="http://purl.oclc.org/dsdl/svrl"
357                              test="$target = 'primitiveType' or $target = 'dataType' or $target='enumeration'">                              test="$target = 'primitiveType' or $target = 'dataType' or $target='enumeration'">
358              <xsl:attribute name="flag">error</xsl:attribute>
359            <xsl:attribute name="location">            <xsl:attribute name="location">
360              <xsl:apply-templates select="." mode="schematron-select-full-path"/>              <xsl:apply-templates select="." mode="schematron-select-full-path"/>
361            </xsl:attribute>            </xsl:attribute>
362            <svrl:text>            <svrl:text>
363  ERROR: datatype of <xsl:text/>  datatype <xsl:text/>
364                <xsl:value-of select="datatype/utype"/>
365                <xsl:text/> of <xsl:text/>
366              <xsl:value-of select="$owner"/>              <xsl:value-of select="$owner"/>
367              <xsl:text/> is not a value type but a '<xsl:text/>              <xsl:text/> is not a value type but a '<xsl:text/>
368              <xsl:value-of select="$target"/>              <xsl:value-of select="$target"/>
# Line 281  Line 371 
371          </svrl:failed-assert>          </svrl:failed-assert>
372        </xsl:otherwise>        </xsl:otherwise>
373      </xsl:choose>      </xsl:choose>
374      <xsl:apply-templates select="*" mode="M4"/>      <xsl:apply-templates select="*" mode="M6"/>
375    </xsl:template>    </xsl:template>
376    
377          <!--RULE -->          <!--RULE -->
378  <xsl:template match="reference" priority="1003" mode="M4">  <xsl:template match="reference" priority="1003" mode="M6">
379      <svrl:fired-rule xmlns:svrl="http://purl.oclc.org/dsdl/svrl" context="reference"/>      <svrl:fired-rule xmlns:svrl="http://purl.oclc.org/dsdl/svrl" context="reference"/>
380      <xsl:variable name="owner" select="./vodml-id"/>      <xsl:variable name="owner" select="./vodml-id"/>
381      <xsl:variable name="target" select="fct:vo-dml_element(datatype/utype,/vo-dml:model)"/>      <xsl:variable name="target" select="fct:vo-dml_element(datatype/utype,/vo-dml:model)"/>
# Line 295  Line 385 
385        <xsl:when test="$target = 'objectType'"/>        <xsl:when test="$target = 'objectType'"/>
386        <xsl:otherwise>        <xsl:otherwise>
387          <svrl:failed-assert xmlns:svrl="http://purl.oclc.org/dsdl/svrl" test="$target = 'objectType'">          <svrl:failed-assert xmlns:svrl="http://purl.oclc.org/dsdl/svrl" test="$target = 'objectType'">
388              <xsl:attribute name="flag">error</xsl:attribute>
389            <xsl:attribute name="location">            <xsl:attribute name="location">
390              <xsl:apply-templates select="." mode="schematron-select-full-path"/>              <xsl:apply-templates select="." mode="schematron-select-full-path"/>
391            </xsl:attribute>            </xsl:attribute>
392            <svrl:text>            <svrl:text>
393  ERROR: datatype of reference <xsl:text/>  datatype <xsl:text/>
394                <xsl:value-of select="datatype/utype"/>
395                <xsl:text/> of reference <xsl:text/>
396              <xsl:value-of select="$owner"/>              <xsl:value-of select="$owner"/>
397              <xsl:text/> is not an object type but a '<xsl:text/>              <xsl:text/> is not an object type but a '<xsl:text/>
398              <xsl:value-of select="$target"/>              <xsl:value-of select="$target"/>
# Line 308  Line 401 
401          </svrl:failed-assert>          </svrl:failed-assert>
402        </xsl:otherwise>        </xsl:otherwise>
403      </xsl:choose>      </xsl:choose>
404      <xsl:apply-templates select="*" mode="M4"/>      <xsl:apply-templates select="*" mode="M6"/>
405    </xsl:template>    </xsl:template>
406    
407          <!--RULE -->          <!--RULE -->
408  <xsl:template match="objectType/collection" priority="1002" mode="M4">  <xsl:template match="objectType/collection" priority="1002" mode="M6">
409      <svrl:fired-rule xmlns:svrl="http://purl.oclc.org/dsdl/svrl" context="objectType/collection"/>      <svrl:fired-rule xmlns:svrl="http://purl.oclc.org/dsdl/svrl" context="objectType/collection"/>
410      <xsl:variable name="owner" select="./vodml-id"/>      <xsl:variable name="owner" select="./vodml-id"/>
411      <xsl:variable name="target" select="fct:vo-dml_element(datatype/utype,/vo-dml:model)"/>      <xsl:variable name="target" select="fct:vo-dml_element(datatype/utype,/vo-dml:model)"/>
# Line 322  Line 415 
415        <xsl:when test="$target = 'objectType'"/>        <xsl:when test="$target = 'objectType'"/>
416        <xsl:otherwise>        <xsl:otherwise>
417          <svrl:failed-assert xmlns:svrl="http://purl.oclc.org/dsdl/svrl" test="$target = 'objectType'">          <svrl:failed-assert xmlns:svrl="http://purl.oclc.org/dsdl/svrl" test="$target = 'objectType'">
418              <xsl:attribute name="flag">error</xsl:attribute>
419            <xsl:attribute name="location">            <xsl:attribute name="location">
420              <xsl:apply-templates select="." mode="schematron-select-full-path"/>              <xsl:apply-templates select="." mode="schematron-select-full-path"/>
421            </xsl:attribute>            </xsl:attribute>
422            <svrl:text>            <svrl:text>
423  ERROR: datatype of collection <xsl:text/>  datatype <xsl:text/>
424                <xsl:value-of select="datatype/utype"/>
425                <xsl:text/> of collection <xsl:text/>
426              <xsl:value-of select="$owner"/>              <xsl:value-of select="$owner"/>
427              <xsl:text/> is not an object type but a '<xsl:text/>              <xsl:text/> is not an object type but a '<xsl:text/>
428              <xsl:value-of select="$target"/>              <xsl:value-of select="$target"/>
# Line 335  Line 431 
431          </svrl:failed-assert>          </svrl:failed-assert>
432        </xsl:otherwise>        </xsl:otherwise>
433      </xsl:choose>      </xsl:choose>
434      <xsl:apply-templates select="*" mode="M4"/>      <xsl:apply-templates select="*" mode="M6"/>
435    </xsl:template>    </xsl:template>
436    
437          <!--RULE -->          <!--RULE -->
438  <xsl:template match="objectType[extends]" priority="1001" mode="M4">  <xsl:template match="objectType[extends]" priority="1001" mode="M6">
439      <svrl:fired-rule xmlns:svrl="http://purl.oclc.org/dsdl/svrl" context="objectType[extends]"/>      <svrl:fired-rule xmlns:svrl="http://purl.oclc.org/dsdl/svrl" context="objectType[extends]"/>
440      <xsl:variable name="owner" select="./vodml-id"/>      <xsl:variable name="owner" select="./vodml-id"/>
441      <xsl:variable name="target" select="fct:vo-dml_element(extends/utype,/vo-dml:model)"/>      <xsl:variable name="target" select="fct:vo-dml_element(extends/utype,/vo-dml:model)"/>
# Line 349  Line 445 
445        <xsl:when test="$target = 'objectType'"/>        <xsl:when test="$target = 'objectType'"/>
446        <xsl:otherwise>        <xsl:otherwise>
447          <svrl:failed-assert xmlns:svrl="http://purl.oclc.org/dsdl/svrl" test="$target = 'objectType'">          <svrl:failed-assert xmlns:svrl="http://purl.oclc.org/dsdl/svrl" test="$target = 'objectType'">
448              <xsl:attribute name="flag">error</xsl:attribute>
449            <xsl:attribute name="location">            <xsl:attribute name="location">
450              <xsl:apply-templates select="." mode="schematron-select-full-path"/>              <xsl:apply-templates select="." mode="schematron-select-full-path"/>
451            </xsl:attribute>            </xsl:attribute>
452            <svrl:text>            <svrl:text>
453  ERROR: base type of objectType <xsl:text/>  Super type <xsl:text/>
454                <xsl:value-of select="extends/utype"/>
455                <xsl:text/> of objectType <xsl:text/>
456              <xsl:value-of select="$owner"/>              <xsl:value-of select="$owner"/>
457              <xsl:text/> is not an object type but a '<xsl:text/>              <xsl:text/> is not an object type but a '<xsl:text/>
458              <xsl:value-of select="$target"/>              <xsl:value-of select="$target"/>
# Line 362  Line 461 
461          </svrl:failed-assert>          </svrl:failed-assert>
462        </xsl:otherwise>        </xsl:otherwise>
463      </xsl:choose>      </xsl:choose>
464      <xsl:apply-templates select="*" mode="M4"/>      <xsl:apply-templates select="*" mode="M6"/>
465    </xsl:template>    </xsl:template>
466    
467          <!--RULE -->          <!--RULE -->
468  <xsl:template match="subsets" priority="1000" mode="M4">  <xsl:template match="subsets" priority="1000" mode="M6">
469      <svrl:fired-rule xmlns:svrl="http://purl.oclc.org/dsdl/svrl" context="subsets"/>      <svrl:fired-rule xmlns:svrl="http://purl.oclc.org/dsdl/svrl" context="subsets"/>
470      <xsl:variable name="owner" select="../name()"/>      <xsl:variable name="owner" select="../name()"/>
471      <xsl:variable name="target" select="fct:vo-dml_element(./utype,/vo-dml:model)"/>      <xsl:variable name="target" select="fct:vo-dml_element(./utype,/vo-dml:model)"/>
# Line 376  Line 475 
475        <xsl:when test="$target"/>        <xsl:when test="$target"/>
476        <xsl:otherwise>        <xsl:otherwise>
477          <svrl:failed-assert xmlns:svrl="http://purl.oclc.org/dsdl/svrl" test="$target">          <svrl:failed-assert xmlns:svrl="http://purl.oclc.org/dsdl/svrl" test="$target">
478              <xsl:attribute name="flag">error</xsl:attribute>
479            <xsl:attribute name="location">            <xsl:attribute name="location">
480              <xsl:apply-templates select="." mode="schematron-select-full-path"/>              <xsl:apply-templates select="." mode="schematron-select-full-path"/>
481            </xsl:attribute>            </xsl:attribute>
482            <svrl:text>            <svrl:text>
483  ERROR: target of subsets relation with utype <xsl:text/>  Target of subsets relation with utype <xsl:text/>
484              <xsl:value-of select="./utype"/>              <xsl:value-of select="./utype"/>
485              <xsl:text/> can not be found              <xsl:text/> can not be found
486      </svrl:text>      </svrl:text>
# Line 393  Line 493 
493        <xsl:when test="$target = $owner"/>        <xsl:when test="$target = $owner"/>
494        <xsl:otherwise>        <xsl:otherwise>
495          <svrl:failed-assert xmlns:svrl="http://purl.oclc.org/dsdl/svrl" test="$target = $owner">          <svrl:failed-assert xmlns:svrl="http://purl.oclc.org/dsdl/svrl" test="$target = $owner">
496              <xsl:attribute name="flag">error</xsl:attribute>
497            <xsl:attribute name="location">            <xsl:attribute name="location">
498              <xsl:apply-templates select="." mode="schematron-select-full-path"/>              <xsl:apply-templates select="." mode="schematron-select-full-path"/>
499            </xsl:attribute>            </xsl:attribute>
500            <svrl:text>            <svrl:text>
501  ERROR: role with subsets relation of type '<xsl:text/>  Role with subsets relation of type '<xsl:text/>
502              <xsl:value-of select="$owner"/>              <xsl:value-of select="$owner"/>
503              <xsl:text/>' MUST have same type as subsetted role (<xsl:text/>              <xsl:text/>' MUST have same type as subsetted role (<xsl:text/>
504              <xsl:value-of select="$target"/>              <xsl:value-of select="$target"/>
# Line 406  Line 507 
507          </svrl:failed-assert>          </svrl:failed-assert>
508        </xsl:otherwise>        </xsl:otherwise>
509      </xsl:choose>      </xsl:choose>
510      <xsl:apply-templates select="*" mode="M4"/>      <xsl:apply-templates select="*" mode="M6"/>
511    </xsl:template>    </xsl:template>
512    <xsl:template match="text()" priority="-1" mode="M4"/>    <xsl:template match="text()" priority="-1" mode="M6"/>
513    <xsl:template match="@*|node()" priority="-2" mode="M4">    <xsl:template match="@*|node()" priority="-2" mode="M6">
514      <xsl:apply-templates select="*" mode="M4"/>      <xsl:apply-templates select="*" mode="M6"/>
515    </xsl:template>    </xsl:template>
516  </xsl:stylesheet>  </xsl:stylesheet>

Legend:
Removed from v.2524  
changed lines
  Added in v.2525

msdemlei@ari.uni-heidelberg.de
ViewVC Help
Powered by ViewVC 1.1.26