--- /dev/null
+<!--
+"context" specifies the subset of the requestor context that this match needs to see. It is specified as an xpath expression.
+For this simple match, we just need to look at sfa-input.
+
+"rule" specifies a set of arguments that the match accepts.
+-->
+
+<match name="slice">
+ <!-- Empty context. We _always_ get the hrn of the current user -->
+ <rule element='*'>
+ <context select="//sfa/current/slice@hrn"/>
+ <argument>
+ <name>hrn</name>
+ <help>HRN of the slice requesting resources</help>
+ <operand>HRN</operand>
+ </argument>
+ <processor filename="slice-hrn.xsl"/>
+ </rule>
+</match>
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<xsl:stylesheet version="1.0"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+ <xsl:variable name="context-hrn" select="//request-context/sfa/slice/hrn"/>
+
+ <!-- Magic sauce -->
+
+ <xsl:template match="@* | node()">
+ <xsl:apply-templates select="@* | node()"/>
+ </xsl:template>
+
+ <xsl:template match="//match-context/argument[name='hrn']">
+ <xsl:value-of select="hrn"/>
+ <xsl:choose>
+ <xsl:when test="starts-with($context-hrn, value)">
+ <result verdict="True"/> <!--Match -->
+ </xsl:when>
+ <xsl:otherwise>
+ <result verdict="False"/> <!-- No match -->
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+</xsl:stylesheet>