<?xml version="1.0" encoding="UTF-8"?>
<sch:schema xmlns:sch="http://purl.oclc.org/dsdl/schematron" queryBinding="xslt2">
  <sch:ns prefix="f" uri="http://hl7.org/fhir"/>
  <sch:ns prefix="h" uri="http://www.w3.org/1999/xhtml"/>
  <!-- 
    This file contains just the constraints for the profile CapabilityStatement
    It includes the base constraints for the resource as well.
    Because of the way that schematrons and containment work, 
    you may need to use this schematron fragment to build a, 
    single schematron that validates contained resources (if you have any) 
  -->
  <sch:pattern>
    <sch:title>CapabilityStatement</sch:title>
    <sch:rule context="f:CapabilityStatement">
      <sch:assert test="not(exists(f:name/@value)) or matches(f:name/@value, '[A-Z]([A-Za-z0-9_]){0,254}')">Name should be usable as an identifier for the module by machine processing applications such as code generation (inherited)</sch:assert>
      <sch:assert test="exists(f:rest) or exists(f:messaging) or exists(f:document)">A Capability Statement SHALL have at least one of REST, messaging or document element. (inherited)</sch:assert>
      <sch:assert test="count(f:software | f:implementation | f:description) &gt; 0">A Capability Statement SHALL have at least one of description, software, or implementation element. (inherited)</sch:assert>
      <sch:assert test="not(exists(f:messaging/f:endpoint)) or f:kind/@value = 'instance'">Messaging end-point is required (and is only permitted) when a statement is for an implementation. (inherited)</sch:assert>
      <sch:assert test="count(f:document[f:mode/@value='producer'])=count(distinct-values(f:document[f:mode/@value='producer']/f:profile/f:reference/@value)) and count(f:document[f:mode/@value='consumer'])=count(distinct-values(f:document[f:mode/@value='consumer']/f:profile/f:reference/@value))">The set of documents must be unique by the combination of profile and mode. (inherited)</sch:assert>
      <sch:assert test="not(f:kind/@value='instance') or exists(f:implementation)">If kind = instance, implementation must be present and software may be present (inherited)</sch:assert>
      <sch:assert test=" not(f:kind/@value='instance') or (not(exists(f:implementation)) and exists(f:software))">If kind = capability, implementation must be absent, software must be present (inherited)</sch:assert>
      <sch:assert test="not(f:kind/@value='instance') or (not(exists(f:implementation)) and not(exists(f:software)))">If kind = requirements, implementation and software must be absent (inherited)</sch:assert>
      <sch:assert test="not(parent::f:contained and f:contained)">If the resource is contained in another resource, it SHALL NOT contain nested Resources (inherited)</sch:assert>
      <sch:assert test="not(exists(for $id in f:contained/*/f:id/@value return $contained[not(parent::*/descendant::f:reference/@value=concat('#', $contained/*/id/@value) or descendant::f:reference[@value='#'])]))">If the resource is contained in another resource, it SHALL be referred to from elsewhere in the resource or SHALL refer to the containing resource (inherited)</sch:assert>
      <sch:assert test="not(exists(f:contained/*/f:meta/f:versionId)) and not(exists(f:contained/*/f:meta/f:lastUpdated))">If a resource is contained in another resource, it SHALL NOT have a meta.versionId or a meta.lastUpdated (inherited)</sch:assert>
      <sch:assert test="not(exists(f:contained/*/f:meta/f:security))">If a resource is contained in another resource, it SHALL NOT have a security label (inherited)</sch:assert>
      <sch:assert test="exists(f:text/h:div)">A resource should have narrative for robust management (inherited)</sch:assert>
    </sch:rule>
  </sch:pattern>
  <sch:pattern>
    <sch:title>CapabilityStatement.meta</sch:title>
    <sch:rule context="f:CapabilityStatement/f:meta">
      <sch:assert test="@value|f:*|h:div">All FHIR elements must have a @value or children (inherited)</sch:assert>
    </sch:rule>
  </sch:pattern>
  <sch:pattern>
    <sch:title>CapabilityStatement.implicitRules</sch:title>
    <sch:rule context="f:CapabilityStatement/f:implicitRules">
      <sch:assert test="@value|f:*|h:div">All FHIR elements must have a @value or children (inherited)</sch:assert>
    </sch:rule>
  </sch:pattern>
  <sch:pattern>
    <sch:title>CapabilityStatement.language</sch:title>
    <sch:rule context="f:CapabilityStatement/f:language">
      <sch:assert test="@value|f:*|h:div">All FHIR elements must have a @value or children (inherited)</sch:assert>
    </sch:rule>
  </sch:pattern>
  <sch:pattern>
    <sch:title>CapabilityStatement.text</sch:title>
    <sch:rule context="f:CapabilityStatement/f:text">
      <sch:assert test="@value|f:*|h:div">All FHIR elements must have a @value or children (inherited)</sch:assert>
    </sch:rule>
  </sch:pattern>
  <sch:pattern>
    <sch:title>CapabilityStatement.extension</sch:title>
    <sch:rule context="f:CapabilityStatement/f:extension">
      <sch:assert test="@value|f:*|h:div">All FHIR elements must have a @value or children</sch:assert>
      <sch:assert test="exists(f:extension)!=exists(f:*[starts-with(local-name(.), &quot;value&quot;)])">Must have either extensions or value[x], not both</sch:assert>
      <sch:assert test="@value|f:*|h:div">All FHIR elements must have a @value or children (inherited)</sch:assert>
      <sch:assert test="exists(f:extension)!=exists(f:*[starts-with(local-name(.), 'value')])">Must have either extensions or value[x], not both (inherited)</sch:assert>
    </sch:rule>
  </sch:pattern>
  <sch:pattern>
    <sch:title>CapabilityStatement.modifierExtension</sch:title>
    <sch:rule context="f:CapabilityStatement/f:modifierExtension">
      <sch:assert test="@value|f:*|h:div">All FHIR elements must have a @value or children (inherited)</sch:assert>
      <sch:assert test="exists(f:extension)!=exists(f:*[starts-with(local-name(.), &quot;value&quot;)])">Must have either extensions or value[x], not both (inherited)</sch:assert>
    </sch:rule>
  </sch:pattern>
  <sch:pattern>
    <sch:title>CapabilityStatement.url</sch:title>
    <sch:rule context="f:CapabilityStatement/f:url">
      <sch:assert test="@value|f:*|h:div">All FHIR elements must have a @value or children (inherited)</sch:assert>
    </sch:rule>
  </sch:pattern>
  <sch:pattern>
    <sch:title>CapabilityStatement.version</sch:title>
    <sch:rule context="f:CapabilityStatement/f:version">
      <sch:assert test="@value|f:*|h:div">All FHIR elements must have a @value or children (inherited)</sch:assert>
    </sch:rule>
  </sch:pattern>
  <sch:pattern>
    <sch:title>CapabilityStatement.name</sch:title>
    <sch:rule context="f:CapabilityStatement/f:name">
      <sch:assert test="@value|f:*|h:div">All FHIR elements must have a @value or children (inherited)</sch:assert>
    </sch:rule>
  </sch:pattern>
  <sch:pattern>
    <sch:title>CapabilityStatement.title</sch:title>
    <sch:rule context="f:CapabilityStatement/f:title">
      <sch:assert test="@value|f:*|h:div">All FHIR elements must have a @value or children (inherited)</sch:assert>
    </sch:rule>
  </sch:pattern>
  <sch:pattern>
    <sch:title>CapabilityStatement.status</sch:title>
    <sch:rule context="f:CapabilityStatement/f:status">
      <sch:assert test="@value|f:*|h:div">All FHIR elements must have a @value or children (inherited)</sch:assert>
    </sch:rule>
  </sch:pattern>
  <sch:pattern>
    <sch:title>CapabilityStatement.experimental</sch:title>
    <sch:rule context="f:CapabilityStatement/f:experimental">
      <sch:assert test="@value|f:*|h:div">All FHIR elements must have a @value or children (inherited)</sch:assert>
    </sch:rule>
  </sch:pattern>
  <sch:pattern>
    <sch:title>CapabilityStatement.date</sch:title>
    <sch:rule context="f:CapabilityStatement/f:date">
      <sch:assert test="@value|f:*|h:div">All FHIR elements must have a @value or children (inherited)</sch:assert>
    </sch:rule>
  </sch:pattern>
  <sch:pattern>
    <sch:title>CapabilityStatement.publisher</sch:title>
    <sch:rule context="f:CapabilityStatement/f:publisher">
      <sch:assert test="@value|f:*|h:div">All FHIR elements must have a @value or children (inherited)</sch:assert>
    </sch:rule>
  </sch:pattern>
  <sch:pattern>
    <sch:title>CapabilityStatement.contact</sch:title>
    <sch:rule context="f:CapabilityStatement/f:contact">
      <sch:assert test="@value|f:*|h:div">All FHIR elements must have a @value or children (inherited)</sch:assert>
    </sch:rule>
  </sch:pattern>
  <sch:pattern>
    <sch:title>CapabilityStatement.description</sch:title>
    <sch:rule context="f:CapabilityStatement/f:description">
      <sch:assert test="@value|f:*|h:div">All FHIR elements must have a @value or children (inherited)</sch:assert>
    </sch:rule>
  </sch:pattern>
  <sch:pattern>
    <sch:title>CapabilityStatement.useContext</sch:title>
    <sch:rule context="f:CapabilityStatement/f:useContext">
      <sch:assert test="@value|f:*|h:div">All FHIR elements must have a @value or children (inherited)</sch:assert>
    </sch:rule>
  </sch:pattern>
  <sch:pattern>
    <sch:title>CapabilityStatement.jurisdiction</sch:title>
    <sch:rule context="f:CapabilityStatement/f:jurisdiction">
      <sch:assert test="@value|f:*|h:div">All FHIR elements must have a @value or children (inherited)</sch:assert>
    </sch:rule>
  </sch:pattern>
  <sch:pattern>
    <sch:title>CapabilityStatement.purpose</sch:title>
    <sch:rule context="f:CapabilityStatement/f:purpose">
      <sch:assert test="@value|f:*|h:div">All FHIR elements must have a @value or children (inherited)</sch:assert>
    </sch:rule>
  </sch:pattern>
  <sch:pattern>
    <sch:title>CapabilityStatement.copyright</sch:title>
    <sch:rule context="f:CapabilityStatement/f:copyright">
      <sch:assert test="@value|f:*|h:div">All FHIR elements must have a @value or children (inherited)</sch:assert>
    </sch:rule>
  </sch:pattern>
  <sch:pattern>
    <sch:title>CapabilityStatement.kind</sch:title>
    <sch:rule context="f:CapabilityStatement/f:kind">
      <sch:assert test="@value|f:*|h:div">All FHIR elements must have a @value or children (inherited)</sch:assert>
    </sch:rule>
  </sch:pattern>
  <sch:pattern>
    <sch:title>CapabilityStatement.instantiates</sch:title>
    <sch:rule context="f:CapabilityStatement/f:instantiates">
      <sch:assert test="@value|f:*|h:div">All FHIR elements must have a @value or children (inherited)</sch:assert>
    </sch:rule>
  </sch:pattern>
  <sch:pattern>
    <sch:title>CapabilityStatement.imports</sch:title>
    <sch:rule context="f:CapabilityStatement/f:imports">
      <sch:assert test="@value|f:*|h:div">All FHIR elements must have a @value or children (inherited)</sch:assert>
    </sch:rule>
  </sch:pattern>
  <sch:pattern>
    <sch:title>CapabilityStatement.software</sch:title>
    <sch:rule context="f:CapabilityStatement/f:software">
      <sch:assert test="@value|f:*|h:div">All FHIR elements must have a @value or children (inherited)</sch:assert>
    </sch:rule>
  </sch:pattern>
  <sch:pattern>
    <sch:title>CapabilityStatement.software.extension</sch:title>
    <sch:rule context="f:CapabilityStatement/f:software/f:extension">
      <sch:assert test="@value|f:*|h:div">All FHIR elements must have a @value or children (inherited)</sch:assert>
      <sch:assert test="exists(f:extension)!=exists(f:*[starts-with(local-name(.), &quot;value&quot;)])">Must have either extensions or value[x], not both (inherited)</sch:assert>
    </sch:rule>
  </sch:pattern>
  <sch:pattern>
    <sch:title>CapabilityStatement.software.modifierExtension</sch:title>
    <sch:rule context="f:CapabilityStatement/f:software/f:modifierExtension">
      <sch:assert test="@value|f:*|h:div">All FHIR elements must have a @value or children (inherited)</sch:assert>
      <sch:assert test="exists(f:extension)!=exists(f:*[starts-with(local-name(.), &quot;value&quot;)])">Must have either extensions or value[x], not both (inherited)</sch:assert>
    </sch:rule>
  </sch:pattern>
  <sch:pattern>
    <sch:title>CapabilityStatement.software.name</sch:title>
    <sch:rule context="f:CapabilityStatement/f:software/f:name">
      <sch:assert test="@value|f:*|h:div">All FHIR elements must have a @value or children (inherited)</sch:assert>
    </sch:rule>
  </sch:pattern>
  <sch:pattern>
    <sch:title>CapabilityStatement.software.version</sch:title>
    <sch:rule context="f:CapabilityStatement/f:software/f:version">
      <sch:assert test="@value|f:*|h:div">All FHIR elements must have a @value or children (inherited)</sch:assert>
    </sch:rule>
  </sch:pattern>
  <sch:pattern>
    <sch:title>CapabilityStatement.software.releaseDate</sch:title>
    <sch:rule context="f:CapabilityStatement/f:software/f:releaseDate">
      <sch:assert test="@value|f:*|h:div">All FHIR elements must have a @value or children (inherited)</sch:assert>
    </sch:rule>
  </sch:pattern>
  <sch:pattern>
    <sch:title>CapabilityStatement.implementation</sch:title>
    <sch:rule context="f:CapabilityStatement/f:implementation">
      <sch:assert test="@value|f:*|h:div">All FHIR elements must have a @value or children (inherited)</sch:assert>
    </sch:rule>
  </sch:pattern>
  <sch:pattern>
    <sch:title>CapabilityStatement.implementation.extension</sch:title>
    <sch:rule context="f:CapabilityStatement/f:implementation/f:extension">
      <sch:assert test="@value|f:*|h:div">All FHIR elements must have a @value or children (inherited)</sch:assert>
      <sch:assert test="exists(f:extension)!=exists(f:*[starts-with(local-name(.), &quot;value&quot;)])">Must have either extensions or value[x], not both (inherited)</sch:assert>
    </sch:rule>
  </sch:pattern>
  <sch:pattern>
    <sch:title>CapabilityStatement.implementation.modifierExtension</sch:title>
    <sch:rule context="f:CapabilityStatement/f:implementation/f:modifierExtension">
      <sch:assert test="@value|f:*|h:div">All FHIR elements must have a @value or children (inherited)</sch:assert>
      <sch:assert test="exists(f:extension)!=exists(f:*[starts-with(local-name(.), &quot;value&quot;)])">Must have either extensions or value[x], not both (inherited)</sch:assert>
    </sch:rule>
  </sch:pattern>
  <sch:pattern>
    <sch:title>CapabilityStatement.implementation.description</sch:title>
    <sch:rule context="f:CapabilityStatement/f:implementation/f:description">
      <sch:assert test="@value|f:*|h:div">All FHIR elements must have a @value or children (inherited)</sch:assert>
    </sch:rule>
  </sch:pattern>
  <sch:pattern>
    <sch:title>CapabilityStatement.implementation.url</sch:title>
    <sch:rule context="f:CapabilityStatement/f:implementation/f:url">
      <sch:assert test="@value|f:*|h:div">All FHIR elements must have a @value or children (inherited)</sch:assert>
    </sch:rule>
  </sch:pattern>
  <sch:pattern>
    <sch:title>CapabilityStatement.implementation.custodian</sch:title>
    <sch:rule context="f:CapabilityStatement/f:implementation/f:custodian">
      <sch:assert test="@value|f:*|h:div">All FHIR elements must have a @value or children (inherited)</sch:assert>
    </sch:rule>
  </sch:pattern>
  <sch:pattern>
    <sch:title>CapabilityStatement.fhirVersion</sch:title>
    <sch:rule context="f:CapabilityStatement/f:fhirVersion">
      <sch:assert test="@value|f:*|h:div">All FHIR elements must have a @value or children (inherited)</sch:assert>
    </sch:rule>
  </sch:pattern>
  <sch:pattern>
    <sch:title>CapabilityStatement.format</sch:title>
    <sch:rule context="f:CapabilityStatement/f:format">
      <sch:assert test="@value|f:*|h:div">All FHIR elements must have a @value or children (inherited)</sch:assert>
    </sch:rule>
  </sch:pattern>
  <sch:pattern>
    <sch:title>CapabilityStatement.patchFormat</sch:title>
    <sch:rule context="f:CapabilityStatement/f:patchFormat">
      <sch:assert test="@value|f:*|h:div">All FHIR elements must have a @value or children (inherited)</sch:assert>
    </sch:rule>
  </sch:pattern>
  <sch:pattern>
    <sch:title>CapabilityStatement.implementationGuide</sch:title>
    <sch:rule context="f:CapabilityStatement/f:implementationGuide">
      <sch:assert test="@value|f:*|h:div">All FHIR elements must have a @value or children (inherited)</sch:assert>
    </sch:rule>
  </sch:pattern>
  <sch:pattern>
    <sch:title>CapabilityStatement.rest</sch:title>
    <sch:rule context="f:CapabilityStatement/f:rest">
      <sch:assert test="count(f:resource)=count(distinct-values(f:resource/f:type/@value))">A given resource can only be described once per RESTful mode. (inherited)</sch:assert>
      <sch:assert test="@value|f:*|h:div">All FHIR elements must have a @value or children (inherited)</sch:assert>
    </sch:rule>
  </sch:pattern>
  <sch:pattern>
    <sch:title>CapabilityStatement.rest.extension</sch:title>
    <sch:rule context="f:CapabilityStatement/f:rest/f:extension">
      <sch:assert test="@value|f:*|h:div">All FHIR elements must have a @value or children (inherited)</sch:assert>
      <sch:assert test="exists(f:extension)!=exists(f:*[starts-with(local-name(.), &quot;value&quot;)])">Must have either extensions or value[x], not both (inherited)</sch:assert>
    </sch:rule>
  </sch:pattern>
  <sch:pattern>
    <sch:title>CapabilityStatement.rest.modifierExtension</sch:title>
    <sch:rule context="f:CapabilityStatement/f:rest/f:modifierExtension">
      <sch:assert test="@value|f:*|h:div">All FHIR elements must have a @value or children (inherited)</sch:assert>
      <sch:assert test="exists(f:extension)!=exists(f:*[starts-with(local-name(.), &quot;value&quot;)])">Must have either extensions or value[x], not both (inherited)</sch:assert>
    </sch:rule>
  </sch:pattern>
  <sch:pattern>
    <sch:title>CapabilityStatement.rest.mode</sch:title>
    <sch:rule context="f:CapabilityStatement/f:rest/f:mode">
      <sch:assert test="@value|f:*|h:div">All FHIR elements must have a @value or children (inherited)</sch:assert>
    </sch:rule>
  </sch:pattern>
  <sch:pattern>
    <sch:title>CapabilityStatement.rest.documentation</sch:title>
    <sch:rule context="f:CapabilityStatement/f:rest/f:documentation">
      <sch:assert test="@value|f:*|h:div">All FHIR elements must have a @value or children (inherited)</sch:assert>
    </sch:rule>
  </sch:pattern>
  <sch:pattern>
    <sch:title>CapabilityStatement.rest.security</sch:title>
    <sch:rule context="f:CapabilityStatement/f:rest/f:security">
      <sch:assert test="@value|f:*|h:div">All FHIR elements must have a @value or children (inherited)</sch:assert>
    </sch:rule>
  </sch:pattern>
  <sch:pattern>
    <sch:title>CapabilityStatement.rest.security.extension</sch:title>
    <sch:rule context="f:CapabilityStatement/f:rest/f:security/f:extension">
      <sch:assert test="@value|f:*|h:div">All FHIR elements must have a @value or children (inherited)</sch:assert>
      <sch:assert test="exists(f:extension)!=exists(f:*[starts-with(local-name(.), &quot;value&quot;)])">Must have either extensions or value[x], not both (inherited)</sch:assert>
    </sch:rule>
  </sch:pattern>
  <sch:pattern>
    <sch:title>CapabilityStatement.rest.security.modifierExtension</sch:title>
    <sch:rule context="f:CapabilityStatement/f:rest/f:security/f:modifierExtension">
      <sch:assert test="@value|f:*|h:div">All FHIR elements must have a @value or children (inherited)</sch:assert>
      <sch:assert test="exists(f:extension)!=exists(f:*[starts-with(local-name(.), &quot;value&quot;)])">Must have either extensions or value[x], not both (inherited)</sch:assert>
    </sch:rule>
  </sch:pattern>
  <sch:pattern>
    <sch:title>CapabilityStatement.rest.security.cors</sch:title>
    <sch:rule context="f:CapabilityStatement/f:rest/f:security/f:cors">
      <sch:assert test="@value|f:*|h:div">All FHIR elements must have a @value or children (inherited)</sch:assert>
    </sch:rule>
  </sch:pattern>
  <sch:pattern>
    <sch:title>CapabilityStatement.rest.security.service</sch:title>
    <sch:rule context="f:CapabilityStatement/f:rest/f:security/f:service">
      <sch:assert test="@value|f:*|h:div">All FHIR elements must have a @value or children (inherited)</sch:assert>
    </sch:rule>
  </sch:pattern>
  <sch:pattern>
    <sch:title>CapabilityStatement.rest.security.description</sch:title>
    <sch:rule context="f:CapabilityStatement/f:rest/f:security/f:description">
      <sch:assert test="@value|f:*|h:div">All FHIR elements must have a @value or children (inherited)</sch:assert>
    </sch:rule>
  </sch:pattern>
  <sch:pattern>
    <sch:title>CapabilityStatement.rest.resource</sch:title>
    <sch:rule context="f:CapabilityStatement/f:rest/f:resource">
      <sch:assert test="count(f:searchParam)=count(distinct-values(f:searchParam/f:name/@value))">Search parameter names must be unique in the context of a resource. (inherited)</sch:assert>
      <sch:assert test="@value|f:*|h:div">All FHIR elements must have a @value or children (inherited)</sch:assert>
    </sch:rule>
  </sch:pattern>
  <sch:pattern>
    <sch:title>CapabilityStatement.rest.resource.extension</sch:title>
    <sch:rule context="f:CapabilityStatement/f:rest/f:resource/f:extension">
      <sch:assert test="@value|f:*|h:div">All FHIR elements must have a @value or children (inherited)</sch:assert>
      <sch:assert test="exists(f:extension)!=exists(f:*[starts-with(local-name(.), &quot;value&quot;)])">Must have either extensions or value[x], not both (inherited)</sch:assert>
    </sch:rule>
  </sch:pattern>
  <sch:pattern>
    <sch:title>CapabilityStatement.rest.resource.modifierExtension</sch:title>
    <sch:rule context="f:CapabilityStatement/f:rest/f:resource/f:modifierExtension">
      <sch:assert test="@value|f:*|h:div">All FHIR elements must have a @value or children (inherited)</sch:assert>
      <sch:assert test="exists(f:extension)!=exists(f:*[starts-with(local-name(.), &quot;value&quot;)])">Must have either extensions or value[x], not both (inherited)</sch:assert>
    </sch:rule>
  </sch:pattern>
  <sch:pattern>
    <sch:title>CapabilityStatement.rest.resource.type</sch:title>
    <sch:rule context="f:CapabilityStatement/f:rest/f:resource/f:type">
      <sch:assert test="@value|f:*|h:div">All FHIR elements must have a @value or children (inherited)</sch:assert>
    </sch:rule>
  </sch:pattern>
  <sch:pattern>
    <sch:title>CapabilityStatement.rest.resource.profile</sch:title>
    <sch:rule context="f:CapabilityStatement/f:rest/f:resource/f:profile">
      <sch:assert test="@value|f:*|h:div">All FHIR elements must have a @value or children (inherited)</sch:assert>
    </sch:rule>
  </sch:pattern>
  <sch:pattern>
    <sch:title>CapabilityStatement.rest.resource.supportedProfile</sch:title>
    <sch:rule context="f:CapabilityStatement/f:rest/f:resource/f:supportedProfile">
      <sch:assert test="@value|f:*|h:div">All FHIR elements must have a @value or children (inherited)</sch:assert>
    </sch:rule>
  </sch:pattern>
  <sch:pattern>
    <sch:title>CapabilityStatement.rest.resource.documentation</sch:title>
    <sch:rule context="f:CapabilityStatement/f:rest/f:resource/f:documentation">
      <sch:assert test="@value|f:*|h:div">All FHIR elements must have a @value or children (inherited)</sch:assert>
    </sch:rule>
  </sch:pattern>
  <sch:pattern>
    <sch:title>CapabilityStatement.rest.resource.interaction</sch:title>
    <sch:rule context="f:CapabilityStatement/f:rest/f:resource/f:interaction">
      <sch:assert test="@value|f:*|h:div">All FHIR elements must have a @value or children (inherited)</sch:assert>
    </sch:rule>
  </sch:pattern>
  <sch:pattern>
    <sch:title>CapabilityStatement.rest.resource.interaction.extension</sch:title>
    <sch:rule context="f:CapabilityStatement/f:rest/f:resource/f:interaction/f:extension">
      <sch:assert test="@value|f:*|h:div">All FHIR elements must have a @value or children (inherited)</sch:assert>
      <sch:assert test="exists(f:extension)!=exists(f:*[starts-with(local-name(.), &quot;value&quot;)])">Must have either extensions or value[x], not both (inherited)</sch:assert>
    </sch:rule>
  </sch:pattern>
  <sch:pattern>
    <sch:title>CapabilityStatement.rest.resource.interaction.modifierExtension</sch:title>
    <sch:rule context="f:CapabilityStatement/f:rest/f:resource/f:interaction/f:modifierExtension">
      <sch:assert test="@value|f:*|h:div">All FHIR elements must have a @value or children (inherited)</sch:assert>
      <sch:assert test="exists(f:extension)!=exists(f:*[starts-with(local-name(.), &quot;value&quot;)])">Must have either extensions or value[x], not both (inherited)</sch:assert>
    </sch:rule>
  </sch:pattern>
  <sch:pattern>
    <sch:title>CapabilityStatement.rest.resource.interaction.code</sch:title>
    <sch:rule context="f:CapabilityStatement/f:rest/f:resource/f:interaction/f:code">
      <sch:assert test="@value|f:*|h:div">All FHIR elements must have a @value or children (inherited)</sch:assert>
    </sch:rule>
  </sch:pattern>
  <sch:pattern>
    <sch:title>CapabilityStatement.rest.resource.interaction.documentation</sch:title>
    <sch:rule context="f:CapabilityStatement/f:rest/f:resource/f:interaction/f:documentation">
      <sch:assert test="@value|f:*|h:div">All FHIR elements must have a @value or children (inherited)</sch:assert>
    </sch:rule>
  </sch:pattern>
  <sch:pattern>
    <sch:title>CapabilityStatement.rest.resource.versioning</sch:title>
    <sch:rule context="f:CapabilityStatement/f:rest/f:resource/f:versioning">
      <sch:assert test="@value|f:*|h:div">All FHIR elements must have a @value or children (inherited)</sch:assert>
    </sch:rule>
  </sch:pattern>
  <sch:pattern>
    <sch:title>CapabilityStatement.rest.resource.readHistory</sch:title>
    <sch:rule context="f:CapabilityStatement/f:rest/f:resource/f:readHistory">
      <sch:assert test="@value|f:*|h:div">All FHIR elements must have a @value or children (inherited)</sch:assert>
    </sch:rule>
  </sch:pattern>
  <sch:pattern>
    <sch:title>CapabilityStatement.rest.resource.updateCreate</sch:title>
    <sch:rule context="f:CapabilityStatement/f:rest/f:resource/f:updateCreate">
      <sch:assert test="@value|f:*|h:div">All FHIR elements must have a @value or children (inherited)</sch:assert>
    </sch:rule>
  </sch:pattern>
  <sch:pattern>
    <sch:title>CapabilityStatement.rest.resource.conditionalCreate</sch:title>
    <sch:rule context="f:CapabilityStatement/f:rest/f:resource/f:conditionalCreate">
      <sch:assert test="@value|f:*|h:div">All FHIR elements must have a @value or children (inherited)</sch:assert>
    </sch:rule>
  </sch:pattern>
  <sch:pattern>
    <sch:title>CapabilityStatement.rest.resource.conditionalRead</sch:title>
    <sch:rule context="f:CapabilityStatement/f:rest/f:resource/f:conditionalRead">
      <sch:assert test="@value|f:*|h:div">All FHIR elements must have a @value or children (inherited)</sch:assert>
    </sch:rule>
  </sch:pattern>
  <sch:pattern>
    <sch:title>CapabilityStatement.rest.resource.conditionalUpdate</sch:title>
    <sch:rule context="f:CapabilityStatement/f:rest/f:resource/f:conditionalUpdate">
      <sch:assert test="@value|f:*|h:div">All FHIR elements must have a @value or children (inherited)</sch:assert>
    </sch:rule>
  </sch:pattern>
  <sch:pattern>
    <sch:title>CapabilityStatement.rest.resource.conditionalDelete</sch:title>
    <sch:rule context="f:CapabilityStatement/f:rest/f:resource/f:conditionalDelete">
      <sch:assert test="@value|f:*|h:div">All FHIR elements must have a @value or children (inherited)</sch:assert>
    </sch:rule>
  </sch:pattern>
  <sch:pattern>
    <sch:title>CapabilityStatement.rest.resource.referencePolicy</sch:title>
    <sch:rule context="f:CapabilityStatement/f:rest/f:resource/f:referencePolicy">
      <sch:assert test="@value|f:*|h:div">All FHIR elements must have a @value or children (inherited)</sch:assert>
    </sch:rule>
  </sch:pattern>
  <sch:pattern>
    <sch:title>CapabilityStatement.rest.resource.searchInclude</sch:title>
    <sch:rule context="f:CapabilityStatement/f:rest/f:resource/f:searchInclude">
      <sch:assert test="@value|f:*|h:div">All FHIR elements must have a @value or children (inherited)</sch:assert>
    </sch:rule>
  </sch:pattern>
  <sch:pattern>
    <sch:title>CapabilityStatement.rest.resource.searchRevInclude</sch:title>
    <sch:rule context="f:CapabilityStatement/f:rest/f:resource/f:searchRevInclude">
      <sch:assert test="@value|f:*|h:div">All FHIR elements must have a @value or children (inherited)</sch:assert>
    </sch:rule>
  </sch:pattern>
  <sch:pattern>
    <sch:title>CapabilityStatement.rest.resource.searchParam</sch:title>
    <sch:rule context="f:CapabilityStatement/f:rest/f:resource/f:searchParam">
      <sch:assert test="@value|f:*|h:div">All FHIR elements must have a @value or children (inherited)</sch:assert>
    </sch:rule>
  </sch:pattern>
  <sch:pattern>
    <sch:title>CapabilityStatement.rest.resource.searchParam.extension</sch:title>
    <sch:rule context="f:CapabilityStatement/f:rest/f:resource/f:searchParam/f:extension">
      <sch:assert test="@value|f:*|h:div">All FHIR elements must have a @value or children (inherited)</sch:assert>
      <sch:assert test="exists(f:extension)!=exists(f:*[starts-with(local-name(.), &quot;value&quot;)])">Must have either extensions or value[x], not both (inherited)</sch:assert>
    </sch:rule>
  </sch:pattern>
  <sch:pattern>
    <sch:title>CapabilityStatement.rest.resource.searchParam.modifierExtension</sch:title>
    <sch:rule context="f:CapabilityStatement/f:rest/f:resource/f:searchParam/f:modifierExtension">
      <sch:assert test="@value|f:*|h:div">All FHIR elements must have a @value or children (inherited)</sch:assert>
      <sch:assert test="exists(f:extension)!=exists(f:*[starts-with(local-name(.), &quot;value&quot;)])">Must have either extensions or value[x], not both (inherited)</sch:assert>
    </sch:rule>
  </sch:pattern>
  <sch:pattern>
    <sch:title>CapabilityStatement.rest.resource.searchParam.name</sch:title>
    <sch:rule context="f:CapabilityStatement/f:rest/f:resource/f:searchParam/f:name">
      <sch:assert test="@value|f:*|h:div">All FHIR elements must have a @value or children (inherited)</sch:assert>
    </sch:rule>
  </sch:pattern>
  <sch:pattern>
    <sch:title>CapabilityStatement.rest.resource.searchParam.definition</sch:title>
    <sch:rule context="f:CapabilityStatement/f:rest/f:resource/f:searchParam/f:definition">
      <sch:assert test="@value|f:*|h:div">All FHIR elements must have a @value or children (inherited)</sch:assert>
    </sch:rule>
  </sch:pattern>
  <sch:pattern>
    <sch:title>CapabilityStatement.rest.resource.searchParam.type</sch:title>
    <sch:rule context="f:CapabilityStatement/f:rest/f:resource/f:searchParam/f:type">
      <sch:assert test="@value|f:*|h:div">All FHIR elements must have a @value or children (inherited)</sch:assert>
    </sch:rule>
  </sch:pattern>
  <sch:pattern>
    <sch:title>CapabilityStatement.rest.resource.searchParam.documentation</sch:title>
    <sch:rule context="f:CapabilityStatement/f:rest/f:resource/f:searchParam/f:documentation">
      <sch:assert test="@value|f:*|h:div">All FHIR elements must have a @value or children (inherited)</sch:assert>
    </sch:rule>
  </sch:pattern>
  <sch:pattern>
    <sch:title>CapabilityStatement.rest.resource.operation</sch:title>
    <sch:rule context="f:CapabilityStatement/f:rest/f:resource/f:operation">
      <sch:assert test="@value|f:*|h:div">All FHIR elements must have a @value or children (inherited)</sch:assert>
    </sch:rule>
  </sch:pattern>
  <sch:pattern>
    <sch:title>CapabilityStatement.rest.resource.operation.extension</sch:title>
    <sch:rule context="f:CapabilityStatement/f:rest/f:resource/f:operation/f:extension">
      <sch:assert test="@value|f:*|h:div">All FHIR elements must have a @value or children (inherited)</sch:assert>
      <sch:assert test="exists(f:extension)!=exists(f:*[starts-with(local-name(.), &quot;value&quot;)])">Must have either extensions or value[x], not both (inherited)</sch:assert>
    </sch:rule>
  </sch:pattern>
  <sch:pattern>
    <sch:title>CapabilityStatement.rest.resource.operation.modifierExtension</sch:title>
    <sch:rule context="f:CapabilityStatement/f:rest/f:resource/f:operation/f:modifierExtension">
      <sch:assert test="@value|f:*|h:div">All FHIR elements must have a @value or children (inherited)</sch:assert>
      <sch:assert test="exists(f:extension)!=exists(f:*[starts-with(local-name(.), &quot;value&quot;)])">Must have either extensions or value[x], not both (inherited)</sch:assert>
    </sch:rule>
  </sch:pattern>
  <sch:pattern>
    <sch:title>CapabilityStatement.rest.resource.operation.name</sch:title>
    <sch:rule context="f:CapabilityStatement/f:rest/f:resource/f:operation/f:name">
      <sch:assert test="@value|f:*|h:div">All FHIR elements must have a @value or children (inherited)</sch:assert>
    </sch:rule>
  </sch:pattern>
  <sch:pattern>
    <sch:title>CapabilityStatement.rest.resource.operation.definition</sch:title>
    <sch:rule context="f:CapabilityStatement/f:rest/f:resource/f:operation/f:definition">
      <sch:assert test="@value|f:*|h:div">All FHIR elements must have a @value or children (inherited)</sch:assert>
    </sch:rule>
  </sch:pattern>
  <sch:pattern>
    <sch:title>CapabilityStatement.rest.resource.operation.documentation</sch:title>
    <sch:rule context="f:CapabilityStatement/f:rest/f:resource/f:operation/f:documentation">
      <sch:assert test="@value|f:*|h:div">All FHIR elements must have a @value or children (inherited)</sch:assert>
    </sch:rule>
  </sch:pattern>
  <sch:pattern>
    <sch:title>CapabilityStatement.rest.interaction</sch:title>
    <sch:rule context="f:CapabilityStatement/f:rest/f:interaction">
      <sch:assert test="@value|f:*|h:div">All FHIR elements must have a @value or children (inherited)</sch:assert>
    </sch:rule>
  </sch:pattern>
  <sch:pattern>
    <sch:title>CapabilityStatement.rest.interaction.extension</sch:title>
    <sch:rule context="f:CapabilityStatement/f:rest/f:interaction/f:extension">
      <sch:assert test="@value|f:*|h:div">All FHIR elements must have a @value or children (inherited)</sch:assert>
      <sch:assert test="exists(f:extension)!=exists(f:*[starts-with(local-name(.), &quot;value&quot;)])">Must have either extensions or value[x], not both (inherited)</sch:assert>
    </sch:rule>
  </sch:pattern>
  <sch:pattern>
    <sch:title>CapabilityStatement.rest.interaction.modifierExtension</sch:title>
    <sch:rule context="f:CapabilityStatement/f:rest/f:interaction/f:modifierExtension">
      <sch:assert test="@value|f:*|h:div">All FHIR elements must have a @value or children (inherited)</sch:assert>
      <sch:assert test="exists(f:extension)!=exists(f:*[starts-with(local-name(.), &quot;value&quot;)])">Must have either extensions or value[x], not both (inherited)</sch:assert>
    </sch:rule>
  </sch:pattern>
  <sch:pattern>
    <sch:title>CapabilityStatement.rest.interaction.code</sch:title>
    <sch:rule context="f:CapabilityStatement/f:rest/f:interaction/f:code">
      <sch:assert test="@value|f:*|h:div">All FHIR elements must have a @value or children (inherited)</sch:assert>
    </sch:rule>
  </sch:pattern>
  <sch:pattern>
    <sch:title>CapabilityStatement.rest.interaction.documentation</sch:title>
    <sch:rule context="f:CapabilityStatement/f:rest/f:interaction/f:documentation">
      <sch:assert test="@value|f:*|h:div">All FHIR elements must have a @value or children (inherited)</sch:assert>
    </sch:rule>
  </sch:pattern>
  <sch:pattern>
    <sch:title>CapabilityStatement.rest.searchParam</sch:title>
    <sch:rule context="f:CapabilityStatement/f:rest/f:searchParam">
      <sch:assert test="@value|f:*|h:div">All FHIR elements must have a @value or children (inherited)</sch:assert>
    </sch:rule>
  </sch:pattern>
  <sch:pattern>
    <sch:title>CapabilityStatement.rest.operation</sch:title>
    <sch:rule context="f:CapabilityStatement/f:rest/f:operation">
      <sch:assert test="@value|f:*|h:div">All FHIR elements must have a @value or children (inherited)</sch:assert>
    </sch:rule>
  </sch:pattern>
  <sch:pattern>
    <sch:title>CapabilityStatement.rest.compartment</sch:title>
    <sch:rule context="f:CapabilityStatement/f:rest/f:compartment">
      <sch:assert test="@value|f:*|h:div">All FHIR elements must have a @value or children (inherited)</sch:assert>
    </sch:rule>
  </sch:pattern>
  <sch:pattern>
    <sch:title>CapabilityStatement.messaging</sch:title>
    <sch:rule context="f:CapabilityStatement/f:messaging">
      <sch:assert test="@value|f:*|h:div">All FHIR elements must have a @value or children (inherited)</sch:assert>
    </sch:rule>
  </sch:pattern>
  <sch:pattern>
    <sch:title>CapabilityStatement.messaging.extension</sch:title>
    <sch:rule context="f:CapabilityStatement/f:messaging/f:extension">
      <sch:assert test="@value|f:*|h:div">All FHIR elements must have a @value or children (inherited)</sch:assert>
      <sch:assert test="exists(f:extension)!=exists(f:*[starts-with(local-name(.), &quot;value&quot;)])">Must have either extensions or value[x], not both (inherited)</sch:assert>
    </sch:rule>
  </sch:pattern>
  <sch:pattern>
    <sch:title>CapabilityStatement.messaging.modifierExtension</sch:title>
    <sch:rule context="f:CapabilityStatement/f:messaging/f:modifierExtension">
      <sch:assert test="@value|f:*|h:div">All FHIR elements must have a @value or children (inherited)</sch:assert>
      <sch:assert test="exists(f:extension)!=exists(f:*[starts-with(local-name(.), &quot;value&quot;)])">Must have either extensions or value[x], not both (inherited)</sch:assert>
    </sch:rule>
  </sch:pattern>
  <sch:pattern>
    <sch:title>CapabilityStatement.messaging.endpoint</sch:title>
    <sch:rule context="f:CapabilityStatement/f:messaging/f:endpoint">
      <sch:assert test="@value|f:*|h:div">All FHIR elements must have a @value or children (inherited)</sch:assert>
    </sch:rule>
  </sch:pattern>
  <sch:pattern>
    <sch:title>CapabilityStatement.messaging.endpoint.extension</sch:title>
    <sch:rule context="f:CapabilityStatement/f:messaging/f:endpoint/f:extension">
      <sch:assert test="@value|f:*|h:div">All FHIR elements must have a @value or children (inherited)</sch:assert>
      <sch:assert test="exists(f:extension)!=exists(f:*[starts-with(local-name(.), &quot;value&quot;)])">Must have either extensions or value[x], not both (inherited)</sch:assert>
    </sch:rule>
  </sch:pattern>
  <sch:pattern>
    <sch:title>CapabilityStatement.messaging.endpoint.modifierExtension</sch:title>
    <sch:rule context="f:CapabilityStatement/f:messaging/f:endpoint/f:modifierExtension">
      <sch:assert test="@value|f:*|h:div">All FHIR elements must have a @value or children (inherited)</sch:assert>
      <sch:assert test="exists(f:extension)!=exists(f:*[starts-with(local-name(.), &quot;value&quot;)])">Must have either extensions or value[x], not both (inherited)</sch:assert>
    </sch:rule>
  </sch:pattern>
  <sch:pattern>
    <sch:title>CapabilityStatement.messaging.endpoint.protocol</sch:title>
    <sch:rule context="f:CapabilityStatement/f:messaging/f:endpoint/f:protocol">
      <sch:assert test="@value|f:*|h:div">All FHIR elements must have a @value or children (inherited)</sch:assert>
    </sch:rule>
  </sch:pattern>
  <sch:pattern>
    <sch:title>CapabilityStatement.messaging.endpoint.address</sch:title>
    <sch:rule context="f:CapabilityStatement/f:messaging/f:endpoint/f:address">
      <sch:assert test="@value|f:*|h:div">All FHIR elements must have a @value or children (inherited)</sch:assert>
    </sch:rule>
  </sch:pattern>
  <sch:pattern>
    <sch:title>CapabilityStatement.messaging.reliableCache</sch:title>
    <sch:rule context="f:CapabilityStatement/f:messaging/f:reliableCache">
      <sch:assert test="@value|f:*|h:div">All FHIR elements must have a @value or children (inherited)</sch:assert>
    </sch:rule>
  </sch:pattern>
  <sch:pattern>
    <sch:title>CapabilityStatement.messaging.documentation</sch:title>
    <sch:rule context="f:CapabilityStatement/f:messaging/f:documentation">
      <sch:assert test="@value|f:*|h:div">All FHIR elements must have a @value or children (inherited)</sch:assert>
    </sch:rule>
  </sch:pattern>
  <sch:pattern>
    <sch:title>CapabilityStatement.messaging.supportedMessage</sch:title>
    <sch:rule context="f:CapabilityStatement/f:messaging/f:supportedMessage">
      <sch:assert test="@value|f:*|h:div">All FHIR elements must have a @value or children (inherited)</sch:assert>
    </sch:rule>
  </sch:pattern>
  <sch:pattern>
    <sch:title>CapabilityStatement.messaging.supportedMessage.extension</sch:title>
    <sch:rule context="f:CapabilityStatement/f:messaging/f:supportedMessage/f:extension">
      <sch:assert test="@value|f:*|h:div">All FHIR elements must have a @value or children (inherited)</sch:assert>
      <sch:assert test="exists(f:extension)!=exists(f:*[starts-with(local-name(.), &quot;value&quot;)])">Must have either extensions or value[x], not both (inherited)</sch:assert>
    </sch:rule>
  </sch:pattern>
  <sch:pattern>
    <sch:title>CapabilityStatement.messaging.supportedMessage.modifierExtension</sch:title>
    <sch:rule context="f:CapabilityStatement/f:messaging/f:supportedMessage/f:modifierExtension">
      <sch:assert test="@value|f:*|h:div">All FHIR elements must have a @value or children (inherited)</sch:assert>
      <sch:assert test="exists(f:extension)!=exists(f:*[starts-with(local-name(.), &quot;value&quot;)])">Must have either extensions or value[x], not both (inherited)</sch:assert>
    </sch:rule>
  </sch:pattern>
  <sch:pattern>
    <sch:title>CapabilityStatement.messaging.supportedMessage.mode</sch:title>
    <sch:rule context="f:CapabilityStatement/f:messaging/f:supportedMessage/f:mode">
      <sch:assert test="@value|f:*|h:div">All FHIR elements must have a @value or children (inherited)</sch:assert>
    </sch:rule>
  </sch:pattern>
  <sch:pattern>
    <sch:title>CapabilityStatement.messaging.supportedMessage.definition</sch:title>
    <sch:rule context="f:CapabilityStatement/f:messaging/f:supportedMessage/f:definition">
      <sch:assert test="@value|f:*|h:div">All FHIR elements must have a @value or children (inherited)</sch:assert>
    </sch:rule>
  </sch:pattern>
  <sch:pattern>
    <sch:title>CapabilityStatement.document</sch:title>
    <sch:rule context="f:CapabilityStatement/f:document">
      <sch:assert test="@value|f:*|h:div">All FHIR elements must have a @value or children (inherited)</sch:assert>
    </sch:rule>
  </sch:pattern>
  <sch:pattern>
    <sch:title>CapabilityStatement.document.extension</sch:title>
    <sch:rule context="f:CapabilityStatement/f:document/f:extension">
      <sch:assert test="@value|f:*|h:div">All FHIR elements must have a @value or children (inherited)</sch:assert>
      <sch:assert test="exists(f:extension)!=exists(f:*[starts-with(local-name(.), &quot;value&quot;)])">Must have either extensions or value[x], not both (inherited)</sch:assert>
    </sch:rule>
  </sch:pattern>
  <sch:pattern>
    <sch:title>CapabilityStatement.document.modifierExtension</sch:title>
    <sch:rule context="f:CapabilityStatement/f:document/f:modifierExtension">
      <sch:assert test="@value|f:*|h:div">All FHIR elements must have a @value or children (inherited)</sch:assert>
      <sch:assert test="exists(f:extension)!=exists(f:*[starts-with(local-name(.), &quot;value&quot;)])">Must have either extensions or value[x], not both (inherited)</sch:assert>
    </sch:rule>
  </sch:pattern>
  <sch:pattern>
    <sch:title>CapabilityStatement.document.mode</sch:title>
    <sch:rule context="f:CapabilityStatement/f:document/f:mode">
      <sch:assert test="@value|f:*|h:div">All FHIR elements must have a @value or children (inherited)</sch:assert>
    </sch:rule>
  </sch:pattern>
  <sch:pattern>
    <sch:title>CapabilityStatement.document.documentation</sch:title>
    <sch:rule context="f:CapabilityStatement/f:document/f:documentation">
      <sch:assert test="@value|f:*|h:div">All FHIR elements must have a @value or children (inherited)</sch:assert>
    </sch:rule>
  </sch:pattern>
  <sch:pattern>
    <sch:title>CapabilityStatement.document.profile</sch:title>
    <sch:rule context="f:CapabilityStatement/f:document/f:profile">
      <sch:assert test="@value|f:*|h:div">All FHIR elements must have a @value or children (inherited)</sch:assert>
    </sch:rule>
  </sch:pattern>
</sch:schema>
