<?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.
-->

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<Policy xmlns="urn:oasis:names:tc:xacml:3.0:core:schema:wd-17"
		xmlns:md="http://www.medico.com/schemas/record" 
		xmlns:xacml-context="urn:oasis:names:tc:xacml:3.0:context:schema:os" 
		xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
		PolicyId="urn:oasis:names:tc:xacml:2.0:conformance-test:IIIG006:policy" 
		RuleCombiningAlgId="urn:oasis:names:tc:xacml:3.0:rule-combining-algorithm:deny-overrides" 
		Version="1.0" 
		xsi:schemaLocation="urn:oasis:names:tc:xacml:3.0:policy:schema:os access_control-xacml-2.0-policy-schema-os.xsd">
    <Description>
        Policy for Conformance Test IIIG006.
        Purpose - Non-mandatory Functions: Case: Relative XPath expressions in XPath-based functions
    </Description>
    <PolicyDefaults>
        <XPathVersion>http://www.w3.org/TR/1999/Rec-xpath-19991116</XPathVersion>
    </PolicyDefaults>
    <Target/>
    
    <Rule Effect="Permit" RuleId="urn:oasis:names:tc:xacml:2.0:conformance-test:IIIG006:rule">
        <Condition>
		  <Apply FunctionId="urn:oasis:names:tc:xacml:1.0:function:and">
            <Apply FunctionId="urn:oasis:names:tc:xacml:1.0:function:integer-equal">
                <Apply FunctionId="urn:oasis:names:tc:xacml:3.0:function:xpath-node-count">

                	<AttributeValue DataType="urn:oasis:names:tc:xacml:3.0:data-type:xpathExpression" 
                	 	XPathCategory="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" >
                	 		//md:name
                	 </AttributeValue>

                </Apply>
                <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#integer">2</AttributeValue>
            </Apply>
            <!-- Testing for equality of one out of a list is a better test than checking that one thing is same as the same thing selected a different way -->
            <Apply FunctionId="urn:oasis:names:tc:xacml:3.0:function:xpath-node-equal">
                <AttributeValue DataType="urn:oasis:names:tc:xacml:3.0:data-type:xpathExpression" 
                	 	XPathCategory="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" >
                	 		//md:name
                </AttributeValue>
				<AttributeValue DataType="urn:oasis:names:tc:xacml:3.0:data-type:xpathExpression" 
                	 	XPathCategory="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" >
                	 		//md:name[text()='Bart Simpson']
                </AttributeValue>
            </Apply>
            
            <!-- Test that looks for child node within the first node is more interesting than matching a node with itself  -->
            <Apply FunctionId="urn:oasis:names:tc:xacml:3.0:function:xpath-node-match">
				<AttributeValue DataType="urn:oasis:names:tc:xacml:3.0:data-type:xpathExpression" 
                	 	XPathCategory="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" >
                	 		.
                </AttributeValue>
				<AttributeValue DataType="urn:oasis:names:tc:xacml:3.0:data-type:xpathExpression" 
                	 	XPathCategory="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" >
                	 		//md:name[text()='Bart Simpson']
                </AttributeValue>
            </Apply>
		  </Apply>
        </Condition>
    </Rule>
</Policy>
