<?xml version="1.0" encoding="utf-8"?>
<!-- Time-stamp: "abstract-pattern.sch  19 jan 2010 21:15:55" -->
<!-- Schematron avec un bloc abstrait -->
<schema xmlns="http://purl.oclc.org/dsdl/schematron"  
	queryBinding="xslt"
	schemaVersion="ISO19757-3">                  
  <title>Utilisation de blocs abstraits</title>

  <!-- Déclaration du bloc abstrait -->
  <pattern abstract="true" id="uniq">
    <!-- Les règles utilisent les paramètres elem et desc -->
    <rule context="$elem" >                                  
      <assert test="$desc">
        L'élément <name/> doit avoir un descendant $desc.
      </assert>  
      <report test="count($desc) &gt; 1">
        L'élément <name/> doit avoir un seul descendant $desc.
      </report>  
    </rule>
  </pattern>
  <!-- Utilisation du bloc abstrait -->
  <pattern is-a="uniq" id="uniq-id">
    <param name="elem" value="book"/>
    <param name="desc" value="@id|@key"/>
  </pattern>
  <pattern is-a="uniq" id="uniq-title">
    <param name="elem" value="book"/>
    <param name="desc" value="title"/>
  </pattern>
</schema>

