<?xml version="1.0" encoding="utf-8"?>
<!-- $Id: ws-policy-framework.xml,v 1.1 2006/08/01 13:29:54 matthieu Exp $ -->
<!DOCTYPE spec PUBLIC "-//W3C//DTD Specification V2.10//EN" "xmlspec.dtd" [
<!ENTITY prefix "ws-policy-framework">
<!ENTITY % entities SYSTEM "entities.dtd" >
%entities;
<!ENTITY status SYSTEM "status.xml">
<!ENTITY document.status "Editors' copy $Date: 2006/08/01 13:29:54 $">
<!ENTITY framework-title "&framework.title;">
<!ENTITY prevloc "">
<!ENTITY hellip "&#8230;">
]>
<?xml-stylesheet type='text/xsl' href='xmlspec-policy.xsl'?>
<spec w3c-doctype="wd" role="&document.role;">
    <header>
        <title>&framework.title;</title>
        <w3c-designation>&w3c-designation-framework;</w3c-designation>
        <w3c-doctype>&document.status;</w3c-doctype>
        <pubdate>
            <day>&draft.day;</day>
            <month>&draft.month;</month>
            <year>&draft.year;</year>
        </pubdate>
        <publoc>
            <loc href="&w3c-designation-framework;">&w3c-designation-framework;</loc>
        </publoc>
	&altlocs;
<!--
	<prevlocs>
            <loc href="&prevloc;">&prevloc;</loc>
        </prevlocs>
-->
        <latestloc>
            <loc href="&framework.latest;">&framework.latest;</loc>
        </latestloc>
        <authlist>
            <author role="editor">
                <name>Asir S Vedamuthu</name>
                <affiliation>Microsoft Corporation</affiliation>
            </author>
            <author role="editor">
                <name>David Orchard</name>
                <affiliation>BEA Systems, Inc.</affiliation>
            </author>
            <author role="editor">
                <name>Maryann Hondo</name>
                <affiliation>IBM Corporation</affiliation>
            </author>
            <author role="editor">
                <name>Toufic Boubez</name>
                <affiliation>Layer 7 Technologies</affiliation>
            </author>
            <author role="editor">
                <name>Prasad Yendluri</name>
                <affiliation>webMethods, Inc.</affiliation>
            </author>            
        </authlist>
	<abstract>
	  <p>The &framework.title; provides a general
	  purpose model and corresponding syntax to describe the
	  policies of a Web Service.</p>
	  <p>Web Services Policy Framework defines a base set of
	  constructs that can be used and extended by other Web
	  services specifications to describe a broad range of service
	  requirements and capabilities.</p>
	</abstract>
	&status;
	<langusage>
            <language id="en-US">English</language>
        </langusage>
        <revisiondesc>
            <p>Last Modified: $Date: 2006/08/01 13:29:54 $</p>
        </revisiondesc>
    </header>
    <body>
        <div1 id="tocRange">
            <head>Introduction</head>

            <p>&framework.title; provides a flexible and extensible
	    language for expressing the capabilities, requirements, and
	    general characteristics of entities in an XML Web
	    services-based system. &framework.title; defines a framework and a
	    model for the expression of these properties as
	    policies.</p>

	    <p>&framework.title; defines a policy to be a collection of policy
	    alternatives, where each policy alternative is a
	    collection of policy assertions. Some policy assertions
	    specify traditional requirements and capabilities that
	    will ultimately manifest on the wire (e.g., authentication
	    scheme, transport protocol selection). Other policy
	    assertions have no wire manifestation yet are critical to
	    proper service selection and usage (e.g., privacy policy,
	    QoS characteristics). &framework.title; provides a single policy
	    language to allow both kinds of assertions to be reasoned
	    about in a consistent manner.</p>

	    <p>&framework.title; does not specify how policies are discovered
	    or attached to a Web service. Other specifications are
	    free to define technology-specific mechanisms for
	    associating policy with various entities and
	    resources. &attachment.title; [<bibref ref="WS-PolicyAttachment"/>]
	    defines such mechanisms, especially for associating policy
	    with arbitrary XML elements [<bibref ref='XML10'/>], WSDL artifacts [<bibref ref="WSDL11" />, <bibref
	      ref="WSDL20" />], and UDDI
	    elements [<bibref
	      ref="UDDIAPI20" />, <bibref ref="UDDIDataStructure20"
	      />, <bibref ref="UDDI30" />].</p>

	    <p>The following example illustrates a security policy using
	    assertions defined in WS-SecurityPolicy [<bibref
	    ref="WS-SecurityPolicy"/>]:</p>

            <example>
                <head>Use of Web Services Policy with security policy assertions.</head>
                <eg xml:space="preserve">
(01) &lt;wsp:Policy
        xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy"
        xmlns:wsp="&nsuri;" &gt;
(02)   &lt;wsp:ExactlyOne&gt;
(03)     &lt;sp:Basic256Rsa15 /&gt;
(04)     &lt;sp:TripleDesRsa15 /&gt;
(05)   &lt;/wsp:ExactlyOne&gt;
(06) &lt;/wsp:Policy&gt;
		</eg>
	    </example>

	    <p>Lines (01-06) represent a
	    policy for the algorithm suite required for performing
	    cryptographic operations with symmetric or asymmetric
	    key-based security tokens.</p>

	    <p>Lines (02-05) illustrate the <el>ExactlyOne</el> policy
	    operator. Policy operators group policy assertions into
	    policy alternatives. A valid interpretation of the policy
	    above would be that an invocation of a Web service uses
	    one of the algorithm suite assertions (Lines 03-04)
	    specified.</p>

	    <div2 id="Goals">
	      <head>Goals</head>

	      <p>The goal of &framework.title; is to provide the mechanisms
	      needed to enable Web services applications to specify
	      policy information. Specifically, this specification
	      defines the following:</p>

	      <ulist>
		<item>
		<p>An XML Infoset called a <emph>policy
		expression</emph> that contains domain-specific, Web
		Service policy information.</p></item>
		<item><p>A core set of constructs to indicate how
		choices and/or combinations of domain-specific policy
		assertions apply in a Web services
		environment.</p></item>
	      </ulist>

	      <p>&framework.title; is designed to work with the
	      general Web services framework, including WSDL service
	      descriptions [<bibref ref="WSDL11" />, <bibref
	      ref="WSDL20" />] and UDDI service registrations [<bibref
	      ref="UDDIAPI20" />, <bibref ref="UDDIDataStructure20"
	      />, <bibref ref="UDDI30" />].</p>
	    </div2>
	</div1>
	<div1 id='Notation_Terminilogy'>
	  <head>Notations and Terminology</head>
	  <p>This section specifies the notations, namespaces, and terminology used in this specification.</p>
	    <div2 id="Notational_Conventions">
	      <head>Notational Conventions</head>

	    <p>This specification uses the following syntax within normative outlines: </p>
	    <ulist>
	      <item>
		<p>The syntax appears as an XML instance, but values
		in <emph>italics</emph> indicate data types instead of
		literal values.</p>
	      </item>
	      <item>
		<p>Characters are appended to elements and attributes
		to indicate cardinality:</p>
		<ulist>
		  <item><p>"?" (0 or 1)</p></item>
		  <item><p>"*" (0 or more)</p></item>
		  <item><p>"+" (1 or more)</p></item>
		</ulist>
	      </item>
	    <item>
	      <p>The character "|" is used to indicate a choice
	      between alternatives.</p>
	    </item>
	    <item>
	      <p>The characters "(" and ")" are used to indicate that
	      contained items are to be treated as a group with
	      respect to cardinality or choice.</p>
	    </item>
	    <item>
	      <p>This document relies on the XML Information Set [<bibref
	      ref="XMLInfoset"/>]. Information items properties are
	      indicated by the style <emph
	      role="infoset-property">infoset property</emph>.</p>
	    </item>
	    <item>
	      <p>XML namespace prefixes (see <specref ref='nsprefix' />)
	      are used to indicate the namespace of the element or
	      attribute being defined.</p>
	    </item>
	    <item>
	     	<p>The ellipses characters "&hellip;" are used to
	    indicate a point of extensibility that allows other
	    Element or Attribute Information Items. Information Items
	    <rfc2119>MAY</rfc2119> be added at the indicated extension
	    points but <rfc2119>MUST NOT</rfc2119> contradict the
	    semantics of the element information item indicated by the
	    <emph role='infoset-property'>parent</emph> or <emph
	    role='infoset-property'>owner</emph> property of the
	    extension. If a processor does not recognize an Attribute
	    Information Item, the processor <rfc2119>SHOULD</rfc2119>
	    ignore it; if a processor does not recognize an Element
	    Information Item, the processor <rfc2119>SHOULD</rfc2119>
	    treat it as an assertion.</p>
	    </item>
	  </ulist>

	  <p>
	    Normative text within this specification takes precedence
	    over normative outlines, which in turn take precedence
	    over the XML Schema [<bibref ref="XMLSchemaPart1"/>]
	    descriptions.
	  </p>
	  </div2>

	  <div2 id="XML_Namespaces">
	    <head>XML Namespaces</head>
	    
                <p> This specification uses a number of namespace prefixes throughout; they are
                    listed in <specref ref="nsprefix"/>. Note that the choice of any namespace
                    prefix is arbitrary and not semantically significant (see [<bibref ref="XML-NS"
                    />]).</p>

                <table summary="Namespace prefixes usage in this specification" id="nsprefix"
                    border="1" cellspacing="0" cellpadding="5">
                    <caption>Prefixes and Namespaces used in this specification</caption>
<thead>
<tr>
<th>Prefix</th>
<th>Namespace</th>
<th>Specification</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>sp</code></td>
<td>http://schemas.xmlsoap.org/ws/2005/07/securitypolicy</td>
<td>[<bibref ref="WS-SecurityPolicy"/>]</td>
</tr>
<tr>
<td><code>wsp</code></td>
<td><code>&nsuri;</code></td>
<td>This specification</td>
</tr>
<tr>
<td><code>wsu</code></td>
<td><code>http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd</code></td>
<td>[<bibref ref="WS-Security"/>]</td>
</tr>
<tr>
<td><code>xs</code></td>
<td><code>http://www.w3.org/2001/XMLSchema</code></td>
<td>[<bibref ref="XMLSchemaPart1" />]</td>
</tr>
</tbody>
</table>
                <p>All information items defined by this specification
                are identified by the XML namespace URI [<bibref
                ref="XML-NS"/>] <code>&nsuri;</code>. A <xspecref href="&nsuri;"
                >normative XML Schema</xspecref> [<bibref
                ref="XMLSchemaPart1"/>, <bibref
                ref="XMLSchemaPart2"/>] document can be obtained by
                dereferencing the XML namespace URI.</p>
                
	      <p>It is the intent of the W3C Web Services Policy Working Group that 
	      the &framework.title; and &attachment.title; XML namespace URI will not change 
	      arbitrarily with each subsequent revision of the corresponding 
	      XML Schema documents but rather change only when a subsequent revision, 
	      published as a WD, CR or PR draft results in non-backwardly compatible 
	      changes from a previously published WD, CR or PR draft of the specification.</p> 
	      <p>Under this policy, the following are examples of backwards compatible 
	      changes that would not result in assignment of a new XML namespace URI:</p>

	      <ulist>
	          <item>
	              <p>Addition of new global element, attribute, complexType 
	              and simpleType definitions.</p></item>
	          <item>
	              <p>Addition of new elements or attributes in locations 
	              covered by a previously specified wildcard.</p></item>
	          <item>
	              <p>Modifications to the pattern facet of a type definition for which the 
	              value-space of the previous definition remains valid or for 
	              which the value-space of the preponderance of 
	              instance would remain valid.</p></item>
	          <item>
	              <p>Modifications to the cardinality of elements for which the 
	              value-space of possible instance documents conformant to 
	              the previous revision of the schema would still be valid 
	              with regards to the revised cardinality rule.</p></item>
	      </ulist>	      

	    </div2>
	    <div2 id="Terminology">
	      <head>Terminology</head>

	    <p>
	      The keywords "<rfc2119>MUST</rfc2119>", "<rfc2119>MUST
	      NOT</rfc2119>", "<rfc2119>REQUIRED</rfc2119>",
	      "<rfc2119>SHALL</rfc2119>", "<rfc2119>SHALL
	      NOT</rfc2119>", "<rfc2119>SHOULD</rfc2119>",
	      "<rfc2119>SHOULD NOT</rfc2119>",
	      "<rfc2119>RECOMMENDED</rfc2119>",
	      "<rfc2119>MAY</rfc2119>", and
	      "<rfc2119>OPTIONAL</rfc2119>" in this document are to be
	      interpreted as described in RFC 2119 [<bibref
	      ref="RFC2119"/>].
	    </p>
	    
<p>We introduce the following terms that are used throughout this document:</p>
<p><termdef id='policy' term='policy'>A <term>policy</term> is a collection of <termref def='policy_alternative'>policy alternatives</termref>.</termdef></p>
<p><termdef id='policy_alternative' term='policy alternative'>A <term>policy alternative</term> is a collection of <termref def='policy_assertion'>policy assertions</termref>.</termdef></p>
<p><termdef id='policy_assertion' term='policy assertion'>A <term>policy assertion</term> represents an individual requirement, capability, or other property of a behavior.</termdef></p>
<p><termdef id='policy_assertion_type' term='policy assertion type'>A <term>policy assertion type</term> represents a class of <termref def='policy_assertion'>policy assertions</termref> and implies a schema for the assertion and assertion-specific semantics.</termdef></p>
<p><termdef id='policy_assertion_parameter' term='policy assertion parameter'>A <term>policy assertion parameter</term> qualifies the behavior indicated by a <termref def='policy_assertion'>policy assertion</termref>.</termdef></p>
<p><termdef id='policy_vocabulary' term='policy vocabulary'>A <term>policy vocabulary</term> of a policy is the set of all <termref def='policy_assertion_type'>policy assertion types</termref> used in a policy.</termdef></p>
<p><termdef id='policy_expression' term='policy expression'>A <term>policy expression</term> is an XML Infoset representation of a <termref def='policy'>policy</termref>, either in a normal form or in an equivalent compact form. </termdef></p>
<p><termdef id='policy_subject' term='policy subject'>A <term>policy subject</term> is an entity (e.g., an endpoint, message, resource, interaction) with which a <termref def='policy'>policy</termref> can be associated. </termdef></p>
<p><termdef id='policy_scope' term='policy scope'>A <term>policy scope</term> is a collection of <termref def='policy_subject'>policy subjects</termref> to which a policy may apply.</termdef></p>
<p><termdef id='policy_attachment' term='policy attachment'>A <term>policy attachment</term> is a mechanism for associating <termref def='policy'>policy</termref> with one or more <termref def='policy_scope'>policy scopes</termref>.</termdef></p>
	    </div2>
	</div1>
	<div1 id="Policy_Model">
	  <head>Policy Model</head>

	  <p>This section defines an abstract model for policies and for operations upon policies.</p>
	  <p>This abstract model is independent of how it is represented as an XML Infoset. </p>
	  <div2 id="rPolicy_Assertion">
	    <head>Policy Assertion</head>

	    <p>A <termref def='policy_assertion'>policy
	    assertion</termref> identifies a behavior that is a
	    requirement (or capability) of a <termref def='policy_subject'>policy
	    subject</termref>. Assertions indicate domain-specific (e.g.,
	    security, transactions) semantics and are expected to be
	    defined in separate, domain-specific specifications.</p>

	    <p>Assertions are strongly typed by the domain authors
	    that define them. The <termref
	    def='policy_assertion_type'>policy assertion
	    type</termref> is identified only by the XML Infoset <emph
	    role="infoset-property">namespace name</emph> and <emph
	    role="infoset-property">local name</emph> properties (that
	    is, the qualified name or QName) of the root Element
	    Information Item representing the assertion. Assertions of
	    a given type <rfc2119>MUST</rfc2119> be consistently
	    interpreted independent of their <termref
	    def='policy_subject'>policy subjects</termref>.</p>

	    <p>Domain authors <rfc2119>MAY</rfc2119> define that an assertion contains a
	    <termref def='policy_expression'>policy
	    expression</termref> as one of its <emph
	    role="infoset-property">children</emph>. Policy
	    expression nesting is used by domain authors to further
	    qualify one or more specific aspects of the original
	    assertion. For example, security policy domain authors may
	    define an assertion describing a set of security
	    algorithms to qualify the specific behavior of a security
	    binding assertion. </p>

	    <p>The XML Infoset of an assertion <rfc2119>MAY</rfc2119> contain a non-empty
	    [attributes] property and/or a non-empty <emph
	    role="infoset-property">children</emph>
	    property. Such content <rfc2119>MAY</rfc2119> be used to parameterize the
	    behavior indicated by the assertion. For example, an
	    assertion identifying support for a specific reliable
	    messaging mechanism might include an attribute information
	    item to indicate how long an endpoint will wait before
	    sending an acknowledgement. </p>

	    <p>Domain authors should be cognizant of the processing
	    requirements when defining complex assertions containing
	    additional assertion content or nested policy
	    expressions. Specifically, domain authors are encouraged
	    to consider when the identity of the root Element
	    Information Item alone is enough to convey the requirement
	    (capability).</p>

	  </div2>
	  <div2 id="rPolicy_Alternative">
	    <head>Policy Alternative</head>

	    <p>A <termref def='policy_alternative'>policy
	    alternative</termref> is a logical construct which
	    represents a potentially empty collection of <termref
	    def='policy_assertion'>policy assertions</termref>. An
	    alternative with zero assertions indicates no
	    behaviors. An alternative with one or more assertions
	    indicates behaviors implied by those, and only those
	    assertions. </p>

	    <p>The vocabulary of a policy alternative is the set of
	    all <termref def='policy_assertion_type'>policy assertion
	    types</termref> within the alternative. The <termref def='policy_vocabulary'>vocabulary of
	    a policy</termref> is the set of all assertion types used in all the
	    policy alternatives in the policy. An assertion whose type
	    is part of the policy's vocabulary but is not included in
	    an alternative is explicitly prohibited by the
	    alternative.</p>

	    <p>Assertions within an alternative are not ordered, and
	    thus aspects such as the order in which behaviors
	    (indicated by assertions) are applied to a <termref def='policy_subject'>subject</termref> are
	    beyond the scope of this specification. </p>

	    <p>A policy alternative <rfc2119>MAY</rfc2119> contain multiple assertions of
	    the same type. Mechanisms for determining the aggregate
	    behavior indicated by the assertions (and their
	    Post-Schema-Validation Infoset (PSVI) content, if any) are
	    specific to the assertion type and are outside the scope
	    of this document.</p>

	  </div2>
	  <div2 id="rPolicy">
	    <head>Policy</head>

	    <p>At the abstract level a <termref
	    def='policy'>policy</termref> is a potentially empty
	    collection of <termref def='policy_alternative'>policy
	    alternatives</termref>. A policy with zero alternatives
	    contains no choices; a policy with one or more
	    alternatives indicates choice in requirements (or
	    capabilities) within the policy. </p>

	    <p>Alternatives are not ordered, and thus aspects such as
	    preferences between alternatives in a given context are
	    beyond the scope of this specification. </p>

	    <p>Alternatives within a policy may differ significantly
	    in terms of the behaviors they indicate. Conversely,
	    alternatives within a policy may be very similar. In
	    either case, the value or suitability of an alternative is
	    generally a function of the semantics of assertions within
	    the alternative and is therefore beyond the scope of this
	    specification.</p>
	  </div2>
	  <div2 id="Web_services">
	    <head>Web services</head>

	    <p>Applied in the Web services model, <termref
	    def='policy'>policy</termref> is used to convey conditions
	    on an interaction between two Web service
	    endpoints. Satisfying assertions in the policy usually
	    results in behavior that reflects these
	    conditions. Typically, the provider of a Web service
	    exposes a policy to convey conditions under which it
	    provides the service. A requester might use this policy to
	    decide whether or not to use the service. A requester may
	    choose any alternative since each is a valid configuration
	    for interaction with the service, but a requester
	    <rfc2119>MUST</rfc2119> choose only a single alternative
	    for an interaction with a service since each represents an
	    alternative configuration.</p>

	    <p>A <termref def='policy_assertion'>policy
	    assertion</termref> is <emph>supported</emph> by a
	    requester if and only if the requester satisfies the
	    requirement (or accommodates the capability) corresponding
	    to the assertion. A <termref
	    def='policy_alternative'>policy alternative</termref> is
	    <emph>supported</emph> by a requester if and only if the
	    requester supports all the assertions in the
	    alternative. And, a <termref def='policy'>policy</termref>
	    is <emph>supported</emph> by a requester if and only if
	    the requester supports at least one of the alternatives in
	    the policy. Note that although policy alternatives are
	    meant to be mutually exclusive, it cannot be decided in
	    general whether or not more than one alternative can be
	    supported at the same time.</p>

	    <p>Note that a requester may be able to support a policy
	    even if the requester does not understand the <termref
	    def='policy_assertion_type'>type</termref> of each assertion in
	    the <termref def='policy_vocabulary'>vocabulary of the
	    policy</termref>; the requester only has to understand the
	    type of each assertion in the vocabulary of a <termref
	    def='policy_alternative'>policy
	    alternative</termref>. This characteristic is crucial to
	    versioning and incremental deployment of new assertions
	    because this allows a provider's policy to include new
	    assertions in new alternatives while allowing requesters
	    to continue to use old alternatives in a
	    backward-compatible manner.</p>
	  </div2>
	</div1>
	<div1 id="rPolicy_Expression">
	  <head>Policy Expression</head>
	  
	  <p>To convey policy in an interoperable form, a <termref def='policy_expression'>policy
	  expression</termref> is an XML Infoset representation of a policy. The
	  normal form policy expression is the most straightforward
	  Infoset; equivalent, alternative Infosets allow compactly
	  expressing a policy through a number of constructs.</p>

	  <div2 id="Normal_Form_Policy_Expression">
	    <head>Normal Form Policy Expression</head>

	    <p>To facilitate interoperability, this specification
	    defines a normal form for <termref
	    def='policy_expression'>policy expressions</termref> that
	    is a straightforward XML Infoset representation of a
	    policy, enumerating each of its alternatives that in turn
	    enumerate each of their assertions. The schema outline for
	    the normal form of a policy expression is as follows:</p>

	    <eg xml:space="preserve">&lt;wsp:Policy &hellip; &gt;
  &lt;wsp:ExactlyOne&gt;
    ( &lt;wsp:All&gt; ( &lt;<emph>Assertion</emph> &hellip;&gt; &hellip; &lt;/<emph>Assertion</emph>&gt; )* &lt;/wsp:All&gt; )*
  &lt;/wsp:ExactlyOne&gt;
&lt;/wsp:Policy&gt; </eg>
<p>The following describes the Element Information Items defined in the schema outline above:</p>
<glist><gitem>
<label><el>/wsp:Policy</el></label>
<def><p>A policy expression.</p></def>
</gitem>
<gitem>
<label><el>/wsp:Policy/wsp:ExactlyOne</el></label>
<def>
<p>
  A collection of policy alternatives. If there are no Element
  Information Items in the <emph
  role="infoset-property">children</emph> property, there are no
  admissible policy alternatives, i.e., no behavior is
  admissible.</p></def>
</gitem>
<gitem>
<label><el>/wsp:Policy/wsp:ExactlyOne/wsp:All</el></label>
<def>
  <p>
    A policy alternative; a collection of policy assertions. If there
    are no Element Information Items in the <emph
    role="infoset-property">children</emph> property, this is an
    admissible policy alternative that is empty, i.e., no behavior is
    specified.</p></def>
</gitem>
<gitem>
<label><code>/wsp:Policy/wsp:ExactlyOne/wsp:All/*</code></label>
<def><p>XML Infoset representation of a policy assertion.</p></def>
</gitem>
</glist>

<p>If an <termref def='policy_assertion'>assertion</termref> in the
normal form of a policy expression contains a nested policy
expression, the nested policy expression <rfc2119>MUST</rfc2119>
contain at most one policy alternative.</p>

<p>To simplify processing and improve interoperability, the normal
form of a policy expression should be used where practical.</p>

<p>For example, the following is the normal form of the policy expression example introduced earlier.</p>
<eg xml:space="preserve">(01) &lt;wsp:Policy
        xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy"
        xmlns:wsp="&nsuri;" &gt;
(02)   &lt;wsp:ExactlyOne&gt;
(03)     &lt;wsp:All&gt;
(04)       &lt;sp:Basic256Rsa15 /&gt;
(05)     &lt;/wsp:All&gt;
(06)     &lt;wsp:All&gt;
(07)       &lt;sp:TripleDesRsa15 /&gt;
(08)     &lt;/wsp:All&gt;
(09)   &lt;/wsp:ExactlyOne&gt;
(10) &lt;/wsp:Policy&gt;</eg>

<p>Lines (02-05) and Lines (06-08) express the two alternatives in the
policy. If the first alternative is selected, only the Basic 256 RSA
15 algorithm suite [<bibref ref="WS-SecurityPolicy"/>] is supported;
conversely, if the second alternative is selected, only the 3DES RSA
15 algorithm suite is supported. </p>
	  </div2>
<div2 id="Policy_Identification">
<head>Policy Identification</head>

<p>A <termref def='policy_expression'>policy expression</termref>
<rfc2119>MAY</rfc2119> be associated with a URI [<bibref ref='RFC3986'/>]. The schema outline
for attributes to associate a URI is as follows:</p>

<eg xml:space="preserve">&lt;wsp:Policy ( Name="<emph>xs:anyURI</emph>" )?
            ( wsu:Id="<emph>xs:ID</emph>" )?
            &hellip; &gt;
  &hellip;
&lt;/wsp:Policy&gt;</eg>
<p>The following describes the Attribute Information Items listed and defined in the schema outline above:</p>
<glist><gitem>
<label><att>/wsp:Policy/@Name</att></label>
<def><p>The identity of the policy expression as an absolute URI [<bibref ref='RFC3986'/>]. If
omitted, there is no implied value. This URI <rfc2119>MAY</rfc2119> be
used to refer to a policy from other XML documents using a <termref
def='policy_attachment'>policy attachment</termref> mechanism such as
those defined in WS-PolicyAttachment [<bibref
ref="WS-PolicyAttachment"/>]. </p></def>
</gitem>
<gitem>
<label><att>/wsp:Policy/@wsu:Id</att></label>
<def><p>The identity of the policy expression as an <code>ID</code> within the
enclosing XML document. If omitted, there is no implied value. To
refer to this policy expression, a URI-reference
 <rfc2119>MAY</rfc2119> be formed using this value per Section 4.2 of
WS-Security [<bibref ref="WS-Security" />].</p></def>
</gitem>
</glist>

<p>The following example illustrates how to associate a policy
expression with the absolute URI
<code>"http://www.example.com/policies/P1"</code>:</p>

<eg xml:space="preserve">(01) &lt;wsp:Policy
        Name="http://www.example.com/policies/P1"
        xmlns:wsp="&nsuri;" &gt;
(02)   &lt;!-- Details omitted for readability --&gt;
(03) &lt;/wsp:Policy&gt;</eg>
<p>The following example illustrates how to associate a policy expression with the URI-reference <code>"#P1"</code>:</p>
<eg xml:space="preserve">(01) &lt;wsp:Policy
        wsu:Id="P1"
        xmlns:wsp="&nsuri;"
        xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" &gt;
(02)   &lt;!-- Details omitted for readability --&gt;
(03) &lt;/wsp:Policy&gt;</eg>
</div2>
<div2 id="Compact_Policy_Expression">
<head>Compact Policy Expression</head>

<p>To express a policy in a more compact form while still using the
XML Infoset, this specification defines three constructs: an attribute
to decorate an <termref def='policy_assertion'>assertion</termref>,
semantics for recursively nested policy operators, and a policy
reference/inclusion mechanism. Each is described in the subsections
below.</p>

<p>To interpret a compact policy expression in an interoperable form,
a compact expression may be converted to the corresponding normal form
expression by the following procedure:</p>

<olist>
<item><p>Start with the <emph role="infoset-property">document
element</emph> property D of the Document Information Item of the
policy expression. The <emph role="infoset-property">namespace
name</emph> of D is always <code>"&nsuri;"</code>. In the base case,
the <emph role="infoset-property">local name</emph> property of D is
<code>"Policy"</code>; in the recursive case, the <emph
role="infoset-property">local name</emph> property of D is
<code>"Policy"</code>, <code>"ExactlyOne"</code>, or
<code>"All"</code>.</p></item>
<item><p>Expand Element Information Items in the <emph
role="infoset-property">children</emph> property of D that are policy
references per Section <specref ref='Policy_Inclusion'/>.</p></item>
<item><p>Convert each Element Information Item C in the <emph
role="infoset-property">children</emph> property of D into normal
form.</p>
<olist>
<item><p>If the <emph role="infoset-property">namespace name</emph>
property of C is <code>"&nsuri;"</code> and the <emph role="infoset-property">local
name</emph> property of C is <code>"Policy"</code>,
<code>"ExactlyOne"</code>, or <code>"All"</code>, C is an expression
of a policy operator; normalize C by recursively applying this
procedure.</p></item>
<item><p>Otherwise the Element Information Item C is an assertion;
normalize C per Sections <specref ref='Optional_Policy_Assertions'/>
and <specref ref='Policy_Assertion_Nesting'/>.</p></item>
</olist>
</item>
<item><p>Apply the policy operator indicated by D to the normalized
Element Information Items in its <emph
role="infoset-property">children</emph> property and construct a
normal form per Section <specref ref='Policy_Operators'/>.</p></item>
</olist>
<p>Note that an implementation may use a more efficient procedure and
is not required to explicitly convert a compact expression into the
normal form as long as the processing results are indistinguishable
from doing so.</p>
<div3 id="Optional_Policy_Assertions">
<head>Optional Policy Assertions</head>
<p>To indicate that a <termref def='policy_assertion'>policy
assertion</termref> is optional, this specification defines an
attribute that is a syntactic shortcut for expressing policy
alternatives with and without the assertion. The schema outline for
this attribute is as follows:</p>
<eg xml:space="preserve">&lt;<emph>Assertion</emph> ( wsp:Optional="<emph>xs:boolean</emph>" )? &hellip;&gt; &hellip; &lt;/<emph>Assertion</emph>&gt;</eg>
<p>The following describes the Attribute Information Item defined in
the schema outline above:</p>
<glist><gitem>
<label><att>/Assertion/@wsp:Optional</att></label>
<def><p>If true, the expression of the assertion is semantically equivalent to the following:</p>
<eg xml:space="preserve">&lt;wsp:ExactlyOne&gt;
  &lt;wsp:All&gt; &lt;<emph>Assertion</emph> &hellip;&gt; &hellip; &lt;/<emph>Assertion</emph>&gt; &lt;/wsp:All&gt;
  &lt;wsp:All /&gt;
&lt;/wsp:ExactlyOne&gt;</eg>
<p>If false, the expression of the assertion is semantically equivalent to the following:</p>
<eg xml:space="preserve">&lt;wsp:ExactlyOne&gt;
  &lt;wsp:All&gt; &lt;<emph>Assertion</emph> &hellip;&gt; &hellip; &lt;/<emph>Assertion</emph>&gt; &lt;/wsp:All&gt;
&lt;/wsp:ExactlyOne&gt;</eg>

<p>Omitting this attribute is semantically equivalent to including it
with a value of false. Policy expressions should not include this
attribute with a value of false, but policy parsers must accept this
attribute with a value of false.</p></def>

</gitem>
</glist>
<p>For example, the following compact policy expression:</p>
<eg xml:space="preserve">(01) &lt;wsp:Policy
        xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy"
        xmlns:wsp="&nsuri;" &gt;
(02)   &lt;sp:IncludeTimestamp wsp:Optional="true" /&gt;
(03) &lt;/wsp:Policy&gt;</eg>
<p>is equivalent to the following normal form policy expression:</p>
<eg xml:space="preserve">(01) &lt;wsp:Policy
        xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy"
        xmlns:wsp="&nsuri;" &gt;
(02)   &lt;wsp:ExactlyOne&gt;
(03)     &lt;wsp:All&gt;
(04)       &lt;sp:IncludeTimestamp /&gt;
(05)     &lt;/wsp:All&gt;
(06)     &lt;wsp:All /&gt;
(07)   &lt;/wsp:ExactlyOne&gt;
(08) &lt;/wsp:Policy&gt;</eg>

<p>The <att>@wsp:Optional</att> attribute in Line (02) of the first
policy expression indicates that the assertion in Line (02) is to be
included in a policy alternative whilst excluded from another; it is
included in Lines (03-05) and excluded in Line (06). Note that
<att>@wsp:Optional</att> does not appear in the normal form of a
policy expression.</p>
</div3>
<div3 id="Policy_Assertion_Nesting">
<head>Policy Assertion Nesting</head>

<p>Any <termref def='policy_assertion'>policy assertion</termref>
<rfc2119>MAY</rfc2119> contain a nested <termref
def='policy_expression'>policy expression</termref>. The schema
outline for a nested policy expression is:</p>

<eg xml:space="preserve">&lt;<emph>Assertion</emph> &hellip;&gt;
  &hellip;
  ( &lt;wsp:Policy &hellip;&gt; &hellip; &lt;/wsp:Policy&gt; )?
  &hellip;
&lt;/<emph>Assertion</emph>&gt;</eg>
<p>The following describes additional processing constraints on the outline listed above:</p>
<glist><gitem>
<label><el>/Assertion/wsp:Policy</el></label>
<def><p>This indicates that the assertion contains a nested policy
expression. If there is no <el>wsp:Policy</el> Element Information
Item in the <emph role="infoset-property">children</emph> property,
the assertion has no nested policy expression.
</p>
<p>Note: if the schema outline for an assertion type requires a nested
policy expression but the assertion does not further qualify one or
more aspects of the behavior indicated by the assertion type (i.e., no
assertions are needed in the nested policy expression), the assertion
<rfc2119>MUST</rfc2119> include an empty
<code>&lt;wsp:Policy/&gt;</code> Element Information Item in its <emph
role="infoset-property">children</emph> property; as explained in
Section <specref ref='Policy_Operators'/>, this is equivalent to a
nested policy expression with a single alternative that has zero
assertions.  If this is not done then two assertions of the same type
will not be compatible and intersection may fail (see Section <specref
ref="Policy_Intersection"/>).</p></def>
</gitem>
<gitem>
<label>/Assertion/*/wsp:Policy</label>

<def><p>This specification does not define processing for arbitrary
<el>wsp:Policy</el> Element Information Items in the descendants
of an assertion, e.g., in the <emph
role="infoset-property">children</emph> property of one of the <emph
role="infoset-property">children</emph> as in
<code>&lt;Lorem&gt;&lt;Ipsum&gt;&lt;wsp:Policy&gt; &hellip;
&lt;/wsp:Policy&gt;&lt;/Ipsum&gt;&lt;/Lorem&gt;</code>.</p></def>
</gitem>
</glist>
<p>Policy assertions containing a nested policy expression are
normalized recursively. The nesting of a policy expression (and a
<el>wsp:Policy</el> child) is retained in the normal form, but in
the normal form, each nested policy expression contains at most one
policy alternative. If an assertion A contains a nested policy
expression E, and if E contains more than one policy alternative, A is
duplicated such that there are as many instances of A as choices in E,
and the nested policy expression of a duplicate A contains a single
choice. This process is applied recursively to the assertions within
those choices and to their nested policy expression, if
any. Intuitively, if a compact policy is thought of as a tree whose
branches have branches etc, in the normal form, a policy is a stump
with straight vines.</p>

<p>For example, consider the following compact nested policy expression:</p>
<eg xml:space="preserve">(01) &lt;wsp:Policy
        xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy"
        xmlns:wsp="&nsuri;" &gt;
(02)   &lt;sp:TransportBinding&gt;
(03)     &lt;wsp:Policy&gt;
(04)       &lt;sp:AlgorithmSuite&gt;
(05)         &lt;wsp:Policy&gt;
(06)           &lt;wsp:ExactlyOne&gt;
(07)             &lt;sp:Basic256Rsa15 /&gt;
(08)             &lt;sp:TripleDesRsa15 /&gt;
(09)           &lt;/wsp:ExactlyOne&gt;
(10)         &lt;/wsp:Policy&gt;
(11)       &lt;/sp:AlgorithmSuite&gt;
(12)       &lt;sp:TransportToken&gt;
(13)         &lt;wsp:Policy&gt;
(14)           &lt;sp:HttpsToken RequireClientCertificate="false" /&gt;
(15)         &lt;/wsp:Policy&gt;
(16)       &lt;/sp:TransportToken&gt;
           &lt;!-- Details omitted for readability --&gt;
(17)      &lt;/wsp:Policy&gt;
(18)    &lt;/sp:TransportBinding&gt;
(19) &lt;/wsp:Policy&gt;</eg>
<p>Lines (02-18) in this policy expression contain a single transport
binding security policy assertion; within its nested policy expression
(Lines 03-17), is an algorithm suite assertion (Lines 04-11) whose
nested policy expression (Lines 05-10) contains two policy
alternatives (Lines 07-08). Generally, a nested policy expression
implies recursive processing; in the example above, the behavior
indicated by the transport binding assertion requires the behavior
indicated by one of the assertions within the algorithm suite
assertion.</p>
<p>The normalized form of this policy is equivalent to the following:</p>
<eg xml:space="preserve">(01) &lt;wsp:Policy
        xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy"
        xmlns:wsp="&nsuri;" &gt;
(02)   &lt;wsp:ExactlyOne&gt;
(03)     &lt;wsp:All&gt;
(04)       &lt;sp:TransportBinding&gt;
(05)         &lt;wsp:Policy&gt;
(06)           &lt;sp:AlgorithmSuite&gt;
(07)             &lt;wsp:Policy&gt;
(08)               &lt;sp:Basic256Rsa15 /&gt;
(09)             &lt;/wsp:Policy&gt;
(10)           &lt;/sp:AlgorithmSuite&gt;
(11)           &lt;sp:TransportToken&gt;
(12)             &lt;wsp:Policy&gt;
(13)               &lt;sp:HttpsToken RequireClientCertificate="false" /&gt;
(14)             &lt;/wsp:Policy&gt;
(15)           &lt;/sp:TransportToken&gt;
               &lt;!-- Details omitted for readability --&gt;
(16)         &lt;/wsp:Policy&gt;
(17)       &lt;/sp:TransportBinding&gt;
(18)     &lt;/wsp:All&gt;
(19)     &lt;wsp:All&gt;
(20)       &lt;sp:TransportBinding&gt;
(21)         &lt;wsp:Policy&gt;
(22)           &lt;sp:AlgorithmSuite&gt;
(23)             &lt;wsp:Policy&gt;
(24)               &lt;sp:TripleDesRsa15 /&gt;
(25)             &lt;/wsp:Policy&gt;
(26)           &lt;/sp:AlgorithmSuite&gt;
(27)           &lt;sp:TransportToken&gt;
(28)             &lt;wsp:Policy&gt;
(29)               &lt;sp:HttpsToken RequireClientCertificate="false" /&gt;
(30)             &lt;/wsp:Policy&gt;
(31)           &lt;/sp:TransportToken&gt;
               &lt;!-- Details omitted for readability --&gt;
(32)         &lt;/wsp:Policy&gt;
(33)       &lt;/sp:TransportBinding&gt;
(34)     &lt;/wsp:All&gt;
(35)   &lt;/wsp:ExactlyOne&gt;
(36) &lt;/wsp:Policy&gt;</eg>
<p>In the listing above, the transport binding and its nested policy
expression have been duplicated once for each of the nested
alternatives in Lines (07-08) of the compact policy. The first
alternative (Lines 03-18) contains a single nested algorithm suite
alternative (Line 08) as does the second alternative (Lines 19-34 and
24). </p>
</div3>
<div3 id="Policy_Operators">
<head>Policy Operators</head>
<p>To compactly express complex policies, policy operators
<rfc2119>MAY</rfc2119> be recursively nested; that is, one or more
instances of <el>wsp:Policy</el>, <el>wsp:All</el>, and/or
<el>wsp:ExactlyOne</el> <rfc2119>MAY</rfc2119> be nested within
<el>wsp:Policy</el>, <el>wsp:All</el>, and/or
<el>wsp:ExactlyOne</el>.</p>
<p>The following rules are used to transform a compact policy expression into a normal form policy expression:</p>
<glist><gitem>
<label>Equivalence</label>
<def><p><el>wsp:Policy</el> is equivalent to <el>wsp:All</el>.</p></def>
</gitem>
<gitem>
<label>Empty</label>
<def>
<ulist>
<item><p><code>&lt;wsp:All /&gt;</code> expresses a policy with zero policy assertions. Note that since <el>wsp:Policy</el> is equivalent to <el>wsp:All</el>, <code>&lt;wsp:Policy /&gt;</code> is therefore equivalent to <code>&lt;wsp:All /&gt;</code>, i.e., a policy alternative with zero assertions.</p></item>
<item><p><code>&lt;wsp:ExactlyOne /&gt;</code> expresses a policy with zero policy alternatives.</p></item>
</ulist>
</def>
</gitem>
<gitem>
<label>Commutative</label>
<def>
<p>In line with the previous statements that policy assertions within
a policy alternative and policy alternatives within a policy are not
ordered (see <specref ref="rPolicy_Alternative"/> and <specref ref="rPolicy"/>, respectively), <el>wsp:All</el> and
<el>wsp:ExactlyOne</el> are commutative. For example,</p>

<eg xml:space="preserve">&lt;wsp:All&gt; <emph>&lt;!-- assertion 1 --&gt; &lt;!-- assertion 2 --&gt; </emph>&lt;/wsp:All&gt;</eg>
<p>is equivalent to:</p>
<eg xml:space="preserve">&lt;wsp:All&gt; <emph>&lt;!-- assertion 2 --&gt; &lt;!-- assertion 1 --&gt; </emph>&lt;/wsp:All&gt;</eg>
<p>and:</p>
<eg xml:space="preserve">&lt;wsp:ExactlyOne&gt;
  <emph>&lt;!-- assertion 1 --&gt; &lt;!-- assertion 2 --&gt;</emph>
&lt;/wsp:ExactlyOne&gt;</eg>
<p>is equivalent to:</p>
<eg xml:space="preserve">&lt;wsp:ExactlyOne&gt;
  <emph>&lt;!-- assertion 2 --&gt; &lt;!-- assertion 1 --&gt;</emph>
&lt;/wsp:ExactlyOne&gt;</eg></def>
</gitem>
<gitem>
<label>Associative</label>
<def><p><el>wsp:All</el> and <el>wsp:ExactlyOne</el> are associative. For example,</p>
<eg xml:space="preserve">&lt;wsp:All&gt;
  <emph>&lt;!-- assertion 1 --&gt;</emph>
<emph>  </emph>&lt;wsp:All&gt; <emph>&lt;!-- assertion 2 --&gt; </emph>&lt;/wsp:All&gt;
&lt;/wsp:All&gt;</eg>
<p>is equivalent to:</p>
<eg xml:space="preserve">&lt;wsp:All&gt; <emph>&lt;!-- assertion 1 --&gt; &lt;!-- assertion 2 --&gt; </emph>&lt;/wsp:All&gt;</eg>
<p>and:</p>
<eg xml:space="preserve">&lt;wsp:ExactlyOne&gt;
  <emph>&lt;!-- assertion 1 --&gt;</emph>
<emph>  </emph>&lt;wsp:ExactlyOne&gt; <emph>&lt;!-- assertion 2 --&gt; </emph>&lt;/wsp:ExactlyOne&gt;
&lt;/wsp:ExactlyOne&gt;</eg>
<p>is equivalent to:</p>
<eg xml:space="preserve">&lt;wsp:ExactlyOne&gt;
  <emph>&lt;!-- assertion 1 --&gt; &lt;!-- assertion 2 --&gt;</emph>
&lt;/wsp:ExactlyOne&gt;</eg></def>
</gitem>
<gitem>
<label>Idempotent</label>
<def><p><el>wsp:All</el> and <el>wsp:ExactlyOne</el> are idempotent. For example,</p>
<eg xml:space="preserve">&lt;wsp:All&gt;
  &lt;wsp:All&gt; <emph>&lt;!-- assertion 1 --&gt; &lt;!-- assertion 2 --&gt; </emph>&lt;/wsp:All&gt;
&lt;/wsp:All&gt;</eg>
<p>is equivalent to:</p>
<eg xml:space="preserve">&lt;wsp:All&gt; <emph>&lt;!-- assertion 1 --&gt; &lt;!-- assertion 2 --&gt; </emph>&lt;/wsp:All&gt;</eg>
<p>and:</p>
<eg xml:space="preserve">&lt;wsp:ExactlyOne&gt;
  &lt;wsp:ExactlyOne&gt;
    <emph>&lt;!-- assertion 1 --&gt; &lt;!-- assertion 2 --&gt;</emph>
<emph>  </emph>&lt;/wsp:ExactlyOne&gt;
&lt;/wsp:ExactlyOne&gt;</eg>
<p>is equivalent to:</p>
<eg xml:space="preserve">&lt;wsp:ExactlyOne&gt;
  <emph>&lt;!-- assertion 1 --&gt; &lt;!-- assertion 2 --&gt;</emph>
&lt;/wsp:ExactlyOne&gt;</eg></def>
</gitem>
<gitem>
<label>Distributive</label>
<def><p><el>wsp:All</el> distributes over <el>wsp:ExactlyOne</el>. For example,</p>
<eg xml:space="preserve">&lt;wsp:All&gt;
  &lt;wsp:ExactlyOne&gt;
<emph>    &lt;!-- assertion 1 --&gt;</emph>
<emph>    &lt;!-- assertion 2 --&gt;</emph>
  &lt;/wsp:ExactlyOne&gt;
&lt;/wsp:All&gt;</eg>
<p>is equivalent to:</p>
<eg xml:space="preserve">&lt;wsp:ExactlyOne&gt;
  &lt;wsp:All&gt;
<emph>    &lt;!-- assertion 1 --&gt;</emph>
  &lt;/wsp:All&gt;
  &lt;wsp:All&gt;
<emph>    &lt;!-- assertion 2 --&gt;</emph>
  &lt;/wsp:All&gt;
&lt;/wsp:ExactlyOne&gt;</eg>
<p>Similarly,</p>
<eg xml:space="preserve">&lt;wsp:All&gt;
  &lt;wsp:ExactlyOne&gt;
<emph>    &lt;!-- assertion 1 --&gt;</emph>
<emph>    &lt;!-- assertion 2 --&gt;</emph>
  &lt;/wsp:ExactlyOne&gt;
  &lt;wsp:ExactlyOne&gt;
<emph>    &lt;!-- assertion 3 --&gt;</emph>
<emph>    &lt;!-- assertion 4 --&gt;</emph>
  &lt;/wsp:ExactlyOne&gt;
&lt;/wsp:All&gt;</eg>
<p>is equivalent to:</p>
<eg xml:space="preserve">&lt;wsp:ExactlyOne&gt;
  &lt;wsp:All&gt;<emph>&lt;!-- assertion 1 --&gt;&lt;!-- assertion 3 --&gt;</emph>&lt;/wsp:All&gt;
  &lt;wsp:All&gt;<emph>&lt;!-- assertion 1 --&gt;&lt;!-- assertion 4 --&gt;</emph>&lt;/wsp:All&gt;
  &lt;wsp:All&gt;<emph>&lt;!-- assertion 2 --&gt;&lt;!-- assertion 3 --&gt;</emph>&lt;/wsp:All&gt;
  &lt;wsp:All&gt;<emph>&lt;!-- assertion 2 --&gt;&lt;!-- assertion 4 --&gt;</emph>&lt;/wsp:All&gt;
&lt;/wsp:ExactlyOne&gt;</eg>
<p>Distributing <el>wsp:All</el> over an empty <el>wsp:ExactlyOne</el> is equivalent to no alternatives. For example,</p>
<eg xml:space="preserve">&lt;wsp:All&gt;
  &lt;wsp:ExactlyOne&gt;
<emph>    &lt;!-- assertion 1 --&gt;</emph>
<emph>    &lt;!-- assertion 2 --&gt;</emph>
  &lt;/wsp:ExactlyOne&gt;
  &lt;wsp:ExactlyOne /&gt;
&lt;/wsp:All&gt;</eg>
<p>is equivalent to:</p>
<eg xml:space="preserve">&lt;wsp:ExactlyOne /&gt;</eg>
<p>For example, given the following compact policy expression:</p>
<eg xml:space="preserve">(01) &lt;wsp:Policy
        xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy"
        xmlns:wsp="&nsuri;" &gt;
(02)   &lt;sp:RequireDerivedKeys wsp:Optional="true" /&gt;
(03)   &lt;wsp:ExactlyOne&gt;
(04)     &lt;sp:WssUsernameToken10 /&gt;
(05)     &lt;sp:WssUsernameToken11 /&gt;
(06)   &lt;/wsp:ExactlyOne&gt;
(07) &lt;/wsp:Policy&gt;</eg>
</def>
</gitem>
</glist>

<p>Applying Section <specref ref="Optional_Policy_Assertions"/> to <att>@wsp:Optional</att> in Line
(02), and distributing <el>wsp:All</el> over
<el>wsp:ExactlyOne</el> per Section <specref
ref='Policy_Operators'/> for the assertions
in Lines (04-05) yields:</p>

<eg xml:space="preserve">(01) &lt;wsp:Policy
        xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy"
        xmlns:wsp="&nsuri;" &gt;
(02)   &lt;wsp:ExactlyOne&gt;
(03)     &lt;wsp:All&gt; &lt;!-- @wsp:Optional alternative with assertion --&gt;
(04)       &lt;sp:RequireDerivedKeys /&gt;
(05)     &lt;/wsp:All&gt;
(06)     &lt;wsp:All /&gt; &lt;!-- @wsp:Optional alternative without --&gt;
(07)   &lt;/wsp:ExactlyOne&gt;
(08)   &lt;wsp:ExactlyOne&gt;
(09)     &lt;wsp:All&gt;
(10)       &lt;sp:WssUsernameToken10 /&gt;
(11)     &lt;/wsp:All&gt;
(12)     &lt;wsp:All&gt;
(13)       &lt;sp:WssUsernameToken11 /&gt;
(14)     &lt;/wsp:All&gt;
(15)   &lt;/wsp:ExactlyOne&gt;
(16) &lt;/wsp:Policy&gt;</eg>
<p>Note that the assertion listed in Line (02) in the first listing expands into the two alternatives in Lines (03-06) in the second listing.</p>
<p>Finally, noting that <el>wsp:Policy</el> is equivalent to <el>wsp:All</el>, and distributing <el>wsp:All</el> over <el>wsp:ExactlyOne</el> yields the following normal form policy expression:</p>
<eg xml:space="preserve">(01) &lt;wsp:Policy
        xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy"
        xmlns:wsp="&nsuri;" &gt;
(02)   &lt;wsp:ExactlyOne&gt;
(03)     &lt;wsp:All&gt;
(04)       &lt;sp:RequireDerivedKeys /&gt;
(05)       &lt;sp:WssUsernameToken10 /&gt;
(06)     &lt;/wsp:All&gt;
(07)     &lt;wsp:All&gt;
(08)       &lt;sp:RequireDerivedKeys /&gt;
(09)       &lt;sp:WssUsernameToken11 /&gt;
(10)     &lt;/wsp:All&gt;
(11)     &lt;wsp:All&gt;
(12)       &lt;sp:WssUsernameToken10 /&gt;
(13)     &lt;/wsp:All&gt;
(14)     &lt;wsp:All&gt;
(15)       &lt;sp:WssUsernameToken11 /&gt;
(16)     &lt;/wsp:All&gt;
(17)   &lt;/wsp:ExactlyOne&gt;
(18) &lt;/wsp:Policy&gt;</eg>
<p>Note that the two alternatives listed in Lines (03-06) in the second listing are combined with the two alternatives listed in Lines (09-14) in the second listing to create four alternatives in the normalized policy, Lines (03-06), (07-10), (11-13), and (14-16).</p>
</div3>
<div3 id="Policy_Inclusion">
<head>Policy Inclusion</head>
<p>In order to share <termref def='policy_assertion'>assertions</termref> across <termref def='policy_expression'>policy expressions</termref>, the <el>wsp:PolicyReference</el> element <rfc2119>MAY</rfc2119> be present anywhere a policy assertion is allowed inside a policy expression. This element is used to include the content of one policy expression in another policy expression.</p>
<p>When a <el>wsp:PolicyReference</el> element references a <el>wsp:Policy</el> element, then the semantics of inclusion are simply to replace the <el>wsp:PolicyReference</el> element with a <el>wsp:All</el> element whose <emph
	    role="infoset-property">children</emph> property is the same as the <emph
	    role="infoset-property">children</emph> property of the referenced <el>wsp:Policy</el> element. That is, the contents of the referenced policy <emph>conceptually replace</emph> the <el>wsp:PolicyReference</el> element and are wrapped in a <el>wsp:All</el> operator. Using the <el>wsp:PolicyReference</el> element, a policy expression <rfc2119>MUST NOT</rfc2119> reference itself either directly or indirectly. (Note: References that have a <att>@Digest</att> attribute <rfc2119>SHOULD</rfc2119> be validated before being included.)</p>
<p>The schema outline for the <el>wsp:PolicyReference</el> element is as follows:</p>
<eg xml:space="preserve">&lt;wsp:Policy&gt;
  &hellip;
  &lt;wsp:PolicyReference
      URI="<emph>xs:anyURI</emph>"
    ( Digest="<emph>xs:base64Binary</emph>" ( DigestAlgorithm="<emph>xs:anyURI</emph>" )? )?
      &hellip; /&gt;
  &hellip;
&lt;/wsp:Policy&gt; </eg>
<p>The following describes the Attribute and Element Information Items defined in the schema outline above:</p>
<glist><gitem>
<label><el>/wsp:Policy/&hellip;/wsp:PolicyReference</el></label>
<def><p>This element references a policy expression that is being included.</p></def>
</gitem>
<gitem>
<label><att>/wsp:Policy/&hellip;/wsp:PolicyReference/@URI</att></label>
<def><p>This attribute references a policy expression by URI. For a policy expression within the same XML Document, the reference <rfc2119>SHOULD</rfc2119> be a URI-reference to a policy expression identified by an <code>ID</code>. For an external policy expression, there is no requirement that the URI be resolvable; retrieval mechanisms are beyond the scope of this specification. After retrieval, there is no requirement to check that the retrieved policy expression is associated (Section <specref ref="Policy_Identification"/>) with this URI.  The URI included in the retrieved policy expression, if any, <rfc2119>MAY</rfc2119> be different than the URI used to retrieve the policy expression. </p></def>
</gitem>
<gitem>
<label><att>/wsp:Policy/&hellip;/wsp:PolicyReference/@Digest</att></label>
<def><p>This optional attribute specifies the digest of the referenced policy expression. This is used to ensure the included policy is the expected policy.  If omitted, there is no implied value.</p></def>
</gitem>
<gitem>
<label><att>/wsp:Policy/&hellip;/wsp:PolicyReference/@DigestAlgorithm</att></label>
<def><p>This optional URI attribute specifies the digest algorithms being used. This specification predefines the default algorithm below, although additional algorithms can be expressed. </p></def>
</gitem>
</glist>
<table cellspacing="0" cellpadding="5" border='1'>
<thead>
<tr>
<th>URI</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>&nsuri;/Sha1Exc</code> (implied)</td>
<td>The digest is a SHA1 hash over the octet stream resulting from using the Exclusive XML canonicalization defined for XML Signature [<bibref ref="XML-Signature"/>].</td>
</tr>
</tbody>
</table>
<p>In the example below two policies include and extend a common policy. In the first example there is a single policy document containing two policy assertions. The expression is given an identifier but not a fully qualified location. The second and third expressions reference the first expression by URI indicating the referenced expression is within the document. </p>
<eg xml:space="preserve">(01) &lt;wsp:Policy
        xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy"
        xmlns:wsp="&nsuri;"
        xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"
        wsu:Id="Protection" &gt;
(02)   &lt;sp:EncryptSignature wsp:Optional="true" /&gt;
(03)   &lt;sp:ProtectTokens wsp:Optional="true" /&gt;
(04) &lt;/wsp:Policy&gt;
</eg>
<eg xml:space="preserve">(01) &lt;wsp:Policy
        xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy"
        xmlns:wsp="&nsuri;" &gt;
(02)   &lt;wsp:PolicyReference URI="#Protection" /&gt;
(03)   &lt;sp:OnlySignEntireHeadersAndBody /&gt;
(04) &lt;/wsp:Policy&gt;
</eg>
<eg xml:space="preserve">(01) &lt;wsp:Policy
        xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy"
        xmlns:wsp="&nsuri;" &gt;
(02)   &lt;sp:IncludeTimestamp /&gt;
(03)   &lt;wsp:PolicyReference URI="#Protection" /&gt;
(04)   &lt;sp:OnlySignEntireHeadersAndBody /&gt;
(05) &lt;/wsp:Policy&gt;</eg>
<p>There are times when it is desirable to "re-use" a portion of a policy expression. Generally, this can be accomplished by placing the common assertions in a separate policy expression and referencing it. </p>
</div3>
</div2>
<div2 id="Policy_Intersection">
<head>Policy Intersection</head>
<p>Policy intersection is useful when two or more parties express <termref def='policy'>policy</termref> and want to limit the <termref def='policy_alternative'>policy alternatives</termref> to those that are mutually compatible. For example, when a requester and a provider express requirements on a message exchange, intersection identifies compatible policy alternatives (if any) included in both requester and provider policies. Intersection is a commutative, associative function that takes two policies and returns a policy.</p>
<p>Because the set of behaviors indicated by a <termref def='policy_alternative'>policy alternative</termref> depends on the domain-specific semantics of the collected assertions, determining whether two policy alternatives are compatible generally involves domain-specific processing. As a first approximation, an algorithm is defined herein that approximates compatibility in a domain-independent manner; specifically, for two policy alternatives to be compatible, they must at least have the same vocabulary (see Section <specref ref="rPolicy_Alternative"/>).</p>
<ulist>
<item><p>Two <termref def='policy_assertion'>policy assertions</termref> are compatible if they have the same <termref def='policy_assertion_type'>type</termref> and</p></item>
<item><p>If either assertion contains a nested <termref def='policy_expression'>policy expression</termref>, the two assertions are compatible if they both have a nested policy expression and the alternative in the nested policy expression of one is compatible with the alternative in the nested policy expression of the other.</p></item>
</ulist>
<p><termref def='policy_assertion_parameter'>Assertion parameters</termref> are not part of the compatibility determination defined herein but may be part of other, domain-specific compatibility processing. </p>
<ulist>
<item><p>Two <termref def='policy_alternative'>policy alternatives</termref> are compatible if each assertion in one is compatible with an assertion in the other, and vice-versa. If two alternatives are compatible, their intersection is an alternative containing all of the assertions in both alternatives.</p></item>
<item><p>Two <termref def='policy'>policies</termref> are compatible if an alternative in one is compatible with an alternative in the other. If two policies are compatible, their intersection is the set of the intersections between all pairs of compatible alternatives, choosing one alternative from each policy. If two policies are not compatible, their intersection has no policy alternatives.</p></item>
</ulist>
<p>As an example of intersection, consider two input policies in normal form:</p>
<eg xml:space="preserve">(01) &lt;wsp:Policy
        xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy"
        xmlns:wsp="&nsuri;" &gt;
       &lt;!-- Policy P1 --&gt;
(02)   &lt;wsp:ExactlyOne&gt;
(03)     &lt;wsp:All&gt; &lt;!-- Alternative A1 --&gt;
(04)       &lt;sp:SignedElements&gt;
(05)         &lt;sp:XPath&gt;/S:Envelope/S:Body&lt;/sp:XPath&gt;
(06)       &lt;/sp:SignedElements&gt;
(07)       &lt;sp:EncryptedElements&gt;
(08)         &lt;sp:XPath&gt;/S:Envelope/S:Body&lt;/sp:XPath&gt;
(09)       &lt;/sp:EncryptedElements&gt;
(10)     &lt;/wsp:All&gt;
(11)     &lt;wsp:All&gt; &lt;!-- Alternative A2 --&gt;
(12)       &lt;sp:SignedParts&gt;
(13)         &lt;sp:Body /&gt;
(14)         &lt;sp:Header
                Namespace="http://www.w3.org/2005/08/addressing" /&gt;
(15)       &lt;/sp:SignedParts&gt;
(16)       &lt;sp:EncryptedParts&gt;
(17)         &lt;sp:Body /&gt;
(18)       &lt;/sp:EncryptedParts&gt;
(19)     &lt;/wsp:All&gt;
(20)   &lt;/wsp:ExactlyOne&gt;
(21) &lt;/wsp:Policy&gt;</eg>
<p>The listing above contains two policy alternatives. The first alternative, (Lines 03-10) contains two policy assertions. One indicates which elements should be signed (Lines 04-06); its type is <el>sp:SignedElements</el> (Line 04), and its parameters include an XPath expression for the content to be signed (Line 05). The other assertion (Lines 07-09) has a similar structure: type (Line 07) and parameters (Line 08).</p>
<p>The second alternative (Lines 11-19) also contains two assertions, each with type (Line 12 and Line 16) and parameters (Lines 13-14 and Line 17).</p>
<p>As this example illustrates, compatibility between two policy assertions is based on assertion type and delegates parameter processing to domain-specific processing.</p>
<eg xml:space="preserve">(01) &lt;wsp:Policy
        xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy"
        xmlns:wsp="&nsuri;" &gt;
       &lt;!-- Policy P2 --&gt;
(02)   &lt;wsp:ExactlyOne&gt;
(03)     &lt;wsp:All&gt; &lt;!-- Alternative A3 --&gt;
(04)       &lt;sp:SignedParts /&gt;
(05)       &lt;sp:EncryptedParts&gt;
(06)         &lt;sp:Body /&gt;
(07)       &lt;/sp:EncryptedParts&gt;
(08)     &lt;/wsp:All&gt;
(09)     &lt;wsp:All&gt; &lt;!-- Alternative A4 --&gt;
(10)       &lt;sp:SignedElements&gt;
(11)         &lt;sp:XPath&gt;/S:Envelope/S:Body&lt;/sp:XPath&gt;
(12)       &lt;/sp:SignedElements&gt;
(13)     &lt;/wsp:All&gt;
(14)   &lt;/wsp:ExactlyOne&gt;
(15) &lt;/wsp:Policy&gt;</eg>
<p>Because there is only one alternative (A2) in policy P1 with the same vocabulary &mdash; the assertions have the same type &mdash; as another alternative (A3) in policy P2, the intersection is a policy with a single alternative that contains all of the assertions in A2 and in A3.</p>
<eg xml:space="preserve">(01) &lt;wsp:Policy
        xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy"
        xmlns:wsp="&nsuri;" &gt;
       &lt;!-- Intersection of P1 and P2 --&gt;
(02)   &lt;wsp:ExactlyOne&gt;
(03)     &lt;wsp:All&gt;
(04)       &lt;sp:SignedParts &gt;
(05)         &lt;sp:Body /&gt;
(06)         &lt;sp:Header
                Namespace="http://www.w3.org/2005/08/addressing" /&gt;
(07)       &lt;/sp:SignedParts&gt;
(08)       &lt;sp:EncryptedParts&gt;
(09)         &lt;sp:Body /&gt;
(10)       &lt;/sp:EncryptedParts&gt;
(11)       &lt;sp:SignedParts /&gt;
(12)       &lt;sp:EncryptedParts&gt;
(13)         &lt;sp:Body /&gt;
(14)       &lt;/sp:EncryptedParts&gt;
(15)     &lt;/wsp:All&gt;
(16)   &lt;/wsp:ExactlyOne&gt;
(17) &lt;/wsp:Policy&gt;</eg>

<p>Note that there are &gt; 1 assertions of the type
<el>sp:SignedParts</el>; when the behavior associated with
<el>sp:SignedParts</el> is invoked, the contents of both
assertions are used to indicate the correct behavior. Whether these
two assertions are compatible depends on the domain-specific semantics
of the <el>sp:SignedParts</el> assertion. To leverage
intersection, assertion authors are encouraged to factor assertions
such that two assertions of the same assertion type are always (or at
least typically) compatible.</p>
</div2>
</div1>
<div1 id="Security_Considerations">
<head>Security Considerations</head>

<p>It is <rfc2119>RECOMMENDED</rfc2119> that policies and
assertions be signed to prevent tampering.</p>

<p>Policies <rfc2119>SHOULD NOT</rfc2119> be accepted unless they are signed and have an
associated security token to specify the signer has the right to
"speak for" the scope containing the policy. That is, a relying party
shouldn't rely on a policy unless the policy is signed and presented
with sufficient credentials to pass the relying parties' acceptance
criteria.</p>

<p>It should be noted that the mechanisms described in this document
could be secured as part of a SOAP message [<bibref ref="SOAP11"/>, <bibref ref="SOAP12"/>] using WS-Security [<bibref
ref="WS-Security"/>] or embedded within other
objects using object-specific security mechanisms.</p>
</div1>
    </body>
    <back>
<div1 id="References">
<head>References</head>

    <div2 id='Normative-References'>
        <head>Normative References</head>

	<blist>
	  <bibl key="IETF RFC 2119" href="http://www.ietf.org/rfc/rfc2119.txt" id="RFC2119">
	    <titleref>Key words for use in RFCs to Indicate
	    Requirement Levels</titleref>, S. Bradner, Author. Internet
	    Engineering Task Force, June 1999. Available at
	    http://www.ietf.org/rfc/rfc2119.txt.
	  </bibl>
	  <bibl key="IETF RFC 3986" href="http://www.ietf.org/rfc/rfc3986.txt" id="RFC3986">
	    <titleref>Uniform Resource Identifier (URI): Generic
	    Syntax</titleref>, T. Berners-Lee, R. Fielding, and
	    L. Masinter, Authors. Internet Engineering Task Force,
	    January 2005. Available at
	    http://www.ietf.org/rfc/rfc3986.txt.
	  </bibl>
	  <bibl id="WS-Security" key="WS-Security 2004" href="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0.pdf">
	    <titleref>Web Services Security: SOAP Message Security 1.0
	    (WS-Security 2004)</titleref>, A. Nadalin, C. Kaler,
	    P. Hallam-Baker, and R. Monzillo, Editors.
	    Organization for the Advancement of Structured Information Standards, March 2004. Available at
	    http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0.pdf.
	  </bibl>
	  <bibl id="XML10" key="XML 1.0" href="http://www.w3.org/TR/2004/REC-xml-20040204/">
	    <titleref>Extensible Markup Language (XML) 1.0 (Third
	    Edition)</titleref>, T.  Bray, J. Paoli,
	    C. M. Sperberg-McQueen, and E. Maler, Editors. World Wide
	    Web Consortium, 4 February 2004. This version of the XML
	    1.0 Recommendation is
	    http://www.w3.org/TR/2004/REC-xml-20040204. The <loc
	    href="http://www.w3.org/TR/REC-xml/">latest version of XML
	    1.0</loc> is available at http://www.w3.org/TR/REC-xml.
	  </bibl>
	  <bibl id='XMLInfoset' key='XML Information Set' href='http://www.w3.org/TR/2004/REC-xml-infoset-20040204/'>
	    <titleref>XML Information Set (Second Edition)</titleref>,
	    J. Cowan and R. Tobin, Editors. World Wide Web Consortium,
	    4 February 2004, revised 24 October 2001.  This version of
	    the XML Information Set Recommendation is
	    http://www.w3.org/TR/2004/REC-xml-infoset-20040204. The
	    <loc href='http://www.w3.org/TR/xml-infoset/'>latest
	    version of XML Information Set</loc> is available at
	    http://www.w3.org/TR/xml-infoset.
	  </bibl>
	  <bibl id="XML-NS" key="XML Namespaces"
		href="http://www.w3.org/TR/1999/REC-xml-names-19990114/">
	    <titleref>Namespaces in XML</titleref>, T. Bray,
	    D. Hollander, and A. Layman, Editors. World Wide Web
	    Consortium, 14 January 1999. This version of the XML
	    Information Set Recommendation is
	    http://www.w3.org/TR/1999/REC-xml-names-19990114. The <loc
	    href="http://www.w3.org/TR/REC-xml-names/">latest version
	    of Namespaces in XML</loc> is available at
	    http://www.w3.org/TR/REC-xml-names.
	  </bibl>
	  <bibl id="XMLSchemaPart1" key="XML Schema Structures"
		href="http://www.w3.org/TR/2004/REC-xmlschema-1-20041028/">
	    <titleref>XML Schema Part 1: Structures Second
	    Edition</titleref>, H. Thompson, D. Beech, M. Maloney, and
	    N. Mendelsohn, Editors. World Wide Web Consortium, 28
	    October 2004. This version of the XML Schema Part 1
	    Recommendation is
	    http://www.w3.org/TR/2004/REC-xmlschema-1-20041028. The
	    <loc href="http://www.w3.org/TR/xmlschema-1/">latest
	    version of XML Schema Part 1</loc> is available at
	    http://www.w3.org/TR/xmlschema-1.
	  </bibl>
	  <bibl key="XML Schema Datatypes" id="XMLSchemaPart2"
		href="http://www.w3.org/TR/2004/REC-xmlschema-2-20041028/">
	    <titleref>XML Schema Part 2: Datatypes Second
	    Edition</titleref>, P. Byron and A. Malhotra,
	    Editors. World Wide Web Consortium, 28 October 2004. This
	    version of the XML Schema Part 2 Recommendation is
	    http://www.w3.org/TR/2004/REC-xmlschema-2-20041028. The
	    <loc href="http://www.w3.org/TR/xmlschema-2/">latest
	    version of XML Schema Part 2</loc> is available at
	    http://www.w3.org/TR/xmlschema-2.
	  </bibl>
	</blist>
    </div2>
    <div2 id='Informative-References'>
      <head>Other References</head>
      <blist>
	<bibl id="SOAP11" key="SOAP 1.1"
	      href="http://www.w3.org/TR/2000/NOTE-SOAP-20000508/">
	  <titleref>Simple Object Access Protocol (SOAP)
	  1.1</titleref>, D. Box, et al, Editors. World Wide Web
	  Consortium, 8 May 2000.
	  Available at http://www.w3.org/TR/2000/NOTE-SOAP-20000508/.
	</bibl>
	<bibl id="SOAP12" key="SOAP 1.2 Messaging Framework"
	      href="http://www.w3.org/TR/2003/REC-soap12-part1-20030624/">
	  <titleref>SOAP Version 1.2 Part 1: Messaging
	  Framework</titleref>, M. Gudgin, M.  Hadley, N. Mendelsohn,
	  J-J. Moreau, H. Frystyk Nielsen, Editors. World Wide Web
	  Consortium, 24 June 2003. This version of the SOAP Version
	  1.2 Part 1: Messaging Framework Recommendation is
	  http://www.w3.org/TR/2003/REC-soap12-part1-20030624/. The
	  <loc href="http://www.w3.org/TR/soap12-part1/">latest
	  version of SOAP Version 1.2 Part 1: Messaging
	  Framework</loc> is available at
	  http://www.w3.org/TR/soap12-part1/.
	</bibl>
      <bibl id="UDDIAPI20" key="UDDI API 2.0" href="http://uddi.org/pubs/ProgrammersAPI-V2.04-Published-20020719.htm">
	<titleref>UDDI Version 2.04 API</titleref>, T. Bellwood,
	Editor.  Organization for the Advancement of Structured
	Information Standards, 19 July 2002. This version of UDDI
	Version 2.0 API is
	http://uddi.org/pubs/ProgrammersAPI-V2.04-Published-20020719.htm. The
	<loc href='http://uddi.org/pubs/ProgrammersAPI_v2.htm'>latest
	version of the UDDI 2.0 API</loc> is available at
	http://uddi.org/pubs/ProgrammersAPI_v2.htm.
      </bibl>
      <bibl id="UDDIDataStructure20" key="UDDI Data Structure 2.0" href="http://uddi.org/pubs/DataStructure-V2.03-Published-20020719.htm">
	<titleref>UDDI Version 2.03 Data Structure
	Reference</titleref>, C. von Riegen, Editor. Organization for
	the Advancement of Structured Information Standards, 19 July
	2002. This version of UDDI Version 2.0 Data Structures is
	http://uddi.org/pubs/DataStructure-V2.03-Published-20020719.htm. The
	<loc href='http://uddi.org/pubs/DataStructure_v2.htm'>latest
	version of the UDDI 2.0 Data Structures</loc> is available at
	http://uddi.org/pubs/DataStructure_v2.htm.
      </bibl>
	<bibl id="UDDI30" key="UDDI 3.0" href="http://uddi.org/pubs/uddi-v3.0.1-20031014.htm">
	  <titleref>UDDI Version 3.0.1</titleref>, L. Cl&#233;ment, et
	  al, Editors. Organization for the Advancement of Structured Information Standards, 14 October 2003. This version of the
	  UDDI Version 3.0 is
	  http://uddi.org/pubs/uddi-v3.0.1-20031014.htm. The <loc
	  href='http://uddi.org/pubs/uddi_v3.htm'>latest version of
	  the UDDI 3.0</loc> specification is available at
	  http://uddi.org/pubs/uddi_v3.htm.
	</bibl>
	<bibl id="WS-PolicyAttachment" key="Web Services Policy Attachment"
	      href="&w3c-designation-attachment;">
	  <titleref>&attachment.title;</titleref>, A. S. Vedamuthu, D. Orchard, M. Hondo, T. Boubez and P. Yendluri,
	  Editors. World Wide Web Consortium, &draft.day;,
	  &draft.month; &draft.year;.  This version of the
	  specification of the &attachment.title; specification is
	  &w3c-designation-attachment;. The <loc
	  href="http://www.w3.org/TR/&attachment.prefix;">latest
	  version of &attachment.title;</loc> is available at
	  http://www.w3.org/TR/&attachment.prefix;.
	</bibl>
	<bibl id="WS-SecurityPolicy" key="WS-SecurityPolicy" href="http://www.oasis-open.org/committees/download.php/15979/oasis-wssx-ws-securitypolicy-1.0.pdf">
	  <titleref>WS-SecurityPolicy v1.0</titleref>, A. Nadalin,
	  M. Gudgin, A. Barbir, and H. Granqvist, Editors. Organization for the Advancement of Structured Information Standards, 8
	  December 2005. Available at
	  http://www.oasis-open.org/committees/download.php/15979/oasis-wssx-ws-securitypolicy-1.0.pdf.
	</bibl>
	<bibl id="WSDL11" key="WSDL 1.1" href="http://www.w3.org/TR/2001/NOTE-wsdl-20010315">
	  <titleref>Web Services Description Language (WSDL)
	  1.1</titleref>, E. Christensen, et al, Authors. World Wide
	  Web Consortium, March 2001. Available at
	  http://www.w3.org/TR/2001/NOTE-wsdl-20010315.
	</bibl>
	<bibl key="WSDL 2.0 Core Language" id="WSDL20" href="http://www.w3.org/TR/2006/CR-wsdl20-20060327/">
	  <titleref>Web Services Description Language (WSDL) Version
	  2.0 Part 1: Core Language</titleref>, R. Chinnici,
	  J. J. Moreau, A. Ryman, S. Weerawarana, Editors. World Wide
	  Web Consortium, 27 March 2006. This version of the WSDL 2.0
	  specification is
	  http://www.w3.org/TR/2006/CR-wsdl20-20060327. The <loc
	  href="http://www.w3.org/TR/wsdl20/">latest version of WSDL
	  2.0</loc> is available at
	  http://www.w3.org/TR/wsdl20.
	</bibl>
	<bibl id="XML-Signature" key="XML-Signature" href="http://www.w3.org/TR/2002/REC-xmldsig-core-20020212/">
	  <titleref>XML-Signature Syntax and Processing</titleref>,
	  D. Eastlake, J. Reagle, and D. Solo, Editors. The Internet
	  Society &amp; World Wide Web Consortium, 12 February
	  2002. This version of the XML-Signature Syntax and
	  Processing Recommendation is
	  http://www.w3.org/TR/2002/REC-xmldsig-core-20020212/. The
	  <loc href="http://www.w3.org/TR/xmldsig-core/">latest
	  version of XML-Signature Syntax and Processing</loc> is
	  available at http://www.w3.org/TR/xmldsig-core/.
	</bibl>
      </blist>
    </div2>

</div1>
      &acknowledgements;
        <inform-div1 id="changelog">
            <head>&framework.title; Change Log</head>
            <table id="ws-policy-framework-changelog-table" border="1">
                <tbody>
                    <tr>
                        <th rowspan="1" colspan="1">Date</th>
                        <th rowspan="1" colspan="1">Author</th>
                        <th rowspan="1" colspan="1">Description</th>
                    </tr>
                    <!-- template do not use, script has been developed
                        <tr>
                        <td>200505</td>
                        <td></td>
                        <td></td>
                        </tr>
                    -->
                    <tr> 
                        <td>20060712</td>
                        <td>ASV</td>
                        <td>Updated the list of editors. Completed action items
                            <loc href="http://www.w3.org/2006/07/12-ws-policy-minutes.html#action12">12</loc>,
                            <loc href="http://www.w3.org/2006/07/12-ws-policy-minutes.html#action16">16</loc> and 
                            <loc href="http://www.w3.org/2006/07/12-ws-policy-minutes.html#action20">20</loc> 
                            from the Austin F2F.</td>
                    </tr>
                    <tr>
                       	<td>20060718</td>
                       	<td>DBO</td>
                       	<td>Completed action items: RFC2606 for domain names <loc href="http://www.w3.org/2006/07/12-ws-policy-minutes.html#action09">09</loc> 
                       	(note: PLH had already done but it didn't show up in the change log)
                       	</td>
                    </tr>
                    <tr>
                        <td>20060726</td>
                        <td>ASV</td>
                        <td>Incorporated the 
                            <loc href="http://lists.w3.org/Archives/Public/public-ws-policy/2006Jul/0107.html">XML 
                        namespace URI versioning policy</loc> adopted by the WG. 
                        </td>
                    </tr>
                </tbody>
            </table>
        </inform-div1>
    </back>
</spec>