<?xml version="1.0" encoding="UTF-8"?>
<!--
  any-containing-encryption11-gh.rnc
  
  This schema is derived from any-containing-encryption.rnc
  so that elements and attributes of XML Encryption 1.1 and 
  Generic Hybrid Ciphers are also validated.
-->
<grammar xmlns="http://relaxng.org/ns/structure/1.0">
  <start>
    <ref name="anyForeignElementOrEncrypted"/>
  </start>
  <define name="anyForeignElementOrEncrypted">
    <choice>
      <element>
        <anyName>
          <except>
            <nsName ns="http://www.w3.org/2001/04/xmlenc#"/>
          </except>
        </anyName>
        <mixed>
          <zeroOrMore>
            <ref name="anyAttribute"/>
          </zeroOrMore>
          <zeroOrMore>
            <ref name="anyForeignElementOrEncrypted"/>
          </zeroOrMore>
        </mixed>
      </element>
      <ref name="xenc_EncryptedData"/>
      <ref name="xenc_EncryptedKey"/>
    </choice>
  </define>
  <define name="ds_anyForeignElement">
    <element>
      <anyName>
        <except>
          <nsName ns="http://www.w3.org/2000/09/xmldsig#"/>
          <nsName ns="http://www.w3.org/2001/04/xmlenc#"/>
        </except>
      </anyName>
      <mixed>
        <zeroOrMore>
          <ref name="anyAttribute"/>
        </zeroOrMore>
        <zeroOrMore>
          <ref name="anyElement"/>
        </zeroOrMore>
      </mixed>
    </element>
  </define>
  <define name="dsig11_anyForeignElement">
    <element>
      <anyName>
        <except>
          <nsName ns="http://www.w3.org/2009/xmldsig11#"/>
        </except>
      </anyName>
      <mixed>
        <zeroOrMore>
          <ref name="anyAttribute"/>
        </zeroOrMore>
        <zeroOrMore>
          <ref name="anyElement"/>
        </zeroOrMore>
      </mixed>
    </element>
  </define>
  <define name="xenc_anyForeignElement">
    <element>
      <anyName>
        <except>
          <nsName ns="http://www.w3.org/2001/04/xmlenc#"/>
        </except>
      </anyName>
      <mixed>
        <zeroOrMore>
          <ref name="anyAttribute"/>
        </zeroOrMore>
        <zeroOrMore>
          <ref name="anyElement"/>
        </zeroOrMore>
      </mixed>
    </element>
  </define>
  <define name="xenc11_anyForeignElement">
    <element>
      <anyName>
        <except>
          <nsName ns="http://www.w3.org/2009/xmlenc11#"/>
        </except>
      </anyName>
      <mixed>
        <zeroOrMore>
          <ref name="anyAttribute"/>
        </zeroOrMore>
        <zeroOrMore>
          <ref name="anyElement"/>
        </zeroOrMore>
      </mixed>
    </element>
  </define>
  <define name="gh_anyForeignElement">
    <element>
      <anyName>
        <except>
          <nsName ns="http://www.w3.org/2009/xmlsec-gh#"/>
        </except>
      </anyName>
      <mixed>
        <zeroOrMore>
          <ref name="anyAttribute"/>
        </zeroOrMore>
        <zeroOrMore>
          <ref name="anyElement"/>
        </zeroOrMore>
      </mixed>
    </element>
  </define>
  <include href="any.rng"/>
  <include href="xmldsig-core-schema.rng"/>
  <include href="xmldsig11-schema.rng"/>
  <include href="xmldsig-allowAnyForeign.rng"/>
  <include href="xmldsig11-allowAnyForeign.rng"/>
  <include href="xenc-schema.rng"/>
  <include href="xenc-allowAnyForeign.rng"/>
  <include href="xenc-schema-11.rng"/>
  <include href="xenc11-allowAnyForeign.rng"/>
  <include href="xmlsec-gh-schema.rng"/>
  <include href="xmlsec-gh-allowAnyForeign.rng"/>
</grammar>
