<?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.
-->

<Request xmlns="urn:oasis:names:tc:xacml:3.0:core:schema:wd-17"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="urn:oasis:names:tc:xacml:3.0:core:schema:wd-17 http://docs.oasis-open.org/xacml/3.0/xacml-core-v3-schema-wd-17.xsd"
   ReturnPolicyIdList="false">
  <Attributes
    Category="urn:oasis:names:tc:xacml:1.0:subject-category:access-subject">
    <Attribute IncludeInResult="false"
        AttributeId="urn:oasis:names:tc:xacml:1.0:subject:subject-id"
      Issuer="med.example.com">
      <AttributeValue
        DataType="http://www.w3.org/2001/XMLSchema#string">CN=Julius Hibbert</AttributeValue>
    </Attribute>
    <Attribute IncludeInResult="false"
      AttributeId="urn:oasis:names:tc:xacml:3.0:example:attribute:role"
      Issuer="med.example.com">
      <AttributeValue
        DataType="http://www.w3.org/2001/XMLSchema#string"
        >physician</AttributeValue>
      </Attribute>
    <Attribute IncludeInResult="false"
      AttributeId="urn:oasis:names:tc:xacml:3.0:example:attribute:physician-id"
      Issuer="med.example.com">
      <AttributeValue
      DataType="http://www.w3.org/2001/XMLSchema#string">jh1234</AttributeValue>
    </Attribute>
  </Attributes>
  <Attributes
    Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource">
    <Content>
      <md:record xmlns:md="urn:example:med:schemas:record"
        xsi:schemaLocation="urn:example:med:schemas:record
        http://www.med.example.com/schemas/record.xsd">
        <md:patient>
          <md:patientDoB>1992-03-21</md:patientDoB>
          <md:patient-number>555555</md:patient-number>
          <md:patientContact>
            <md:email>b.simpson@example.com</md:email>
          </md:patientContact>
        </md:patient>
      </md:record>
    </Content>
    <Attribute IncludeInResult="false"
        AttributeId="urn:oasis:names:tc:xacml:3.0:content-selector" >
      <AttributeValue
        XPathCategory="urn:oasis:names:tc:xacml:3.0:attribute-category:resource"
        DataType=" urn:oasis:names:tc:xacml:3.0:data-type:xpathExpression"
        >md:record/md:patient/md:patientDoB</AttributeValue>
    </Attribute>
    <Attribute IncludeInResult="false"
        AttributeId="urn:oasis:names:tc:xacml:2.0:resource:target-namespace" >
      <AttributeValue
        DataType="http://www.w3.org/2001/XMLSchema#anyURI"
        >urn:example:med:schemas:record</AttributeValue>
    </Attribute>
  </Attributes>
  <Attributes
    Category="urn:oasis:names:tc:xacml:3.0:attribute-category:action">
    <Attribute IncludeInResult="false"
         AttributeId="urn:oasis:names:tc:xacml:1.0:action:action-id" >
      <AttributeValue
        DataType="http://www.w3.org/2001/XMLSchema#string">read</AttributeValue>
    </Attribute>
  </Attributes>
  <Attributes
    Category="urn:oasis:names:tc:xacml:3.0:attribute-category:environment">
    <Attribute IncludeInResult="false"
         AttributeId="urn:oasis:names:tc:xacml:1.0:environment:current-date" >
      <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#date"
          >2010-01-11</AttributeValue>
    </Attribute>
  </Attributes>
</Request>