<?xml version="1.0" encoding="UTF-8"?>
<!--
  Licensed to the Apache Software Foundation (ASF) under one or more
  contributor license agreements.  See the NOTICE file distributed with
  this work for additional information regarding copyright ownership.
  The ASF licenses this file to You under the Apache License, Version 2.0
  (the "License"); you may not use this file except in compliance with
  the License.  You may obtain a copy of the License at

  http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.
-->

<PolicySet
  xmlns="urn:oasis:names:tc:xacml:3.0:core:schema:wd-17"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  PolicySetId="urn:oasis:names:tc:xacml:3.0:example:policysetid:1"
  Version="1.0"
  PolicyCombiningAlgId=
  "urn:oasis:names:tc:xacml:1.0:policy-combining-algorithm:deny-overrides">
  <Description>
    Example policy set.
  </Description>
  <Target>
    <AnyOf>
      <AllOf>
        <Match
          MatchId="urn:oasis:names:tc:xacml:1.0:function:string-equal">
          <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string"
            >urn:example:med:schema:records</AttributeValue>
          <AttributeDesignator
            MustBePresent="false"
            Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource"
            AttributeId="urn:oasis:names:tc:xacml:2.0:resource:target-namespace"
            DataType="http://www.w3.org/2001/XMLSchema#string"/>
        </Match>
      </AllOf>
    </AnyOf>
  </Target>
  <PolicyIdReference>
    urn:oasis:names:tc:xacml:3.0:example:policyid:3
  </PolicyIdReference>
  <Policy
    PolicyId="urn:oasis:names:tc:xacml:3.0:example:policyid:2"
    RuleCombiningAlgId=
      "urn:oasis:names:tc:xacml:1.0:rule-combining-algorithm:deny-overrides"
    Version="1.0">
    <Target/>
    <Rule RuleId="urn:oasis:names:tc:xacml:3.0:example:ruleid:1"
      Effect="Permit">
    </Rule>
    <Rule RuleId="urn:oasis:names:tc:xacml:3.0:example:ruleid:2"
      Effect="Permit">
    </Rule>
    <Rule RuleId="urn:oasis:names:tc:xacml:3.0:example:ruleid:4"
      Effect="Deny">
    </Rule>
  </Policy>
</PolicySet>