<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE spec PUBLIC "-//W3C//DTD Specification V2.2+Addr//EN" "xmlspec.dtd">
<!--
/*
 * Copyright © 2007 World Wide Web Consortium,
 *
 * (Massachusetts Institute of Technology, European Research Consortium for
 * Informatics and Mathematics, Keio University). All Rights Reserved. This
 * work is distributed under the W3C® Document License [1] in the hope that
 * it will be useful, but WITHOUT ANY WARRANTY; without even the implied
 * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 *
 * [1] http://www.w3.org/Consortium/Legal/2002/copyright-documents-20021231
 */
    -->
<!-- $Id: ws-policy-framework.xml,v 1.3 2007/08/29 00:56:07 fsasaki Exp $ -->
<?xml-stylesheet type='text/xsl' href='xmlspec-policy.xsl'?><spec w3c-doctype="rec" role="public"><header><title>Web Services Policy 1.5 - Framework</title><w3c-designation>http://www.w3.org/TR/2007/REC-ws-policy-20070904</w3c-designation><w3c-doctype>W3C Recommendation</w3c-doctype><pubdate><day>04</day><month>September</month><year>2007</year></pubdate><publoc>
            <loc xmlns:xlink="http://www.w3.org/1999/xlink" href="http://www.w3.org/TR/2007/REC-ws-policy-20070904" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">http://www.w3.org/TR/2007/REC-ws-policy-20070904</loc>
        </publoc><altlocs><loc xmlns:xlink="http://www.w3.org/1999/xlink" role="pdf" href="ws-policy-framework.pdf" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">PDF</loc><loc xmlns:xlink="http://www.w3.org/1999/xlink" role="postscript" href="ws-policy-framework.ps" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">PostScript</loc><loc xmlns:xlink="http://www.w3.org/1999/xlink" role="xml" href="ws-policy-framework.xml" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">XML</loc><loc xmlns:xlink="http://www.w3.org/1999/xlink" role="plain" href="ws-policy-framework.txt" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">plain text</loc></altlocs><prevlocs>
            <loc xmlns:xlink="http://www.w3.org/1999/xlink" href="http://www.w3.org/TR/2007/PR-ws-policy-20070706/" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">http://www.w3.org/TR/2007/PR-ws-policy-20070706/</loc>
        </prevlocs><latestloc><loc xmlns:xlink="http://www.w3.org/1999/xlink" href="http://www.w3.org/TR/ws-policy" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">http://www.w3.org/TR/ws-policy</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>Frederick Hirsch</name><affiliation>Nokia</affiliation></author><author role="editor"><name>Maryann Hondo</name><affiliation>IBM Corporation</affiliation></author><author role="editor"><name>Prasad Yendluri</name><affiliation>webMethods (A subsidiary of Software AG)</affiliation></author><author role="editor"><name>Toufic Boubez</name><affiliation>Layer 7 Technologies</affiliation></author><author role="editor"><name>Ümit Yalçinalp</name><affiliation>SAP AG.</affiliation></author></authlist><errataloc xmlns:xlink="http://www.w3.org/1999/xlink" href="http://www.w3.org/2002/ws/policy/7/framework-errata.html" xlink:type="simple"/><translationloc xmlns:xlink="http://www.w3.org/1999/xlink" href="http://www.w3.org/2003/03/Translations/byTechnology?technology=ws-policy-framework" xlink:type="simple"/><abstract><p>The Web Services Policy 1.5 - Framework provides a general purpose model and corresponding syntax
                to describe the policies of entities in a Web services-based system.</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 id="Status"><p><emph>This section describes the status of this document at the
  time of its publication. Other documents may supersede this
  document. A list of current W3C publications and the latest revision
  of this technical report can be found in the <loc xmlns:xlink="http://www.w3.org/1999/xlink" href="http://www.w3.org/TR/" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">W3C technical reports index</loc> at
  http://www.w3.org/TR/.</emph></p><p>This is the <loc xmlns:xlink="http://www.w3.org/1999/xlink" href="http://www.w3.org/2005/10/Process-20051014/tr.html#RecsW3C" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">W3C Recommendation</loc> of the Web Services Policy 1.5 - Framework specification. It has been produced by the <loc xmlns:xlink="http://www.w3.org/1999/xlink" href="http://www.w3.org/2002/ws/policy/" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">Web Services Policy Working Group</loc>, which is part of the <loc xmlns:xlink="http://www.w3.org/1999/xlink" href="http://www.w3.org/2002/ws/Activity" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">W3C Web Services Activity</loc>.</p><p>This document has been reviewed by W3C Members, by software developers, and by other W3C groups and interested parties, and is endorsed by the Director as a W3C Recommendation. It is a stable document and may be used as reference material or cited from another document. W3C's role in making the Recommendation is to draw attention to the specification and to promote its widespread deployment. This enhances the functionality and interoperability of the Web.</p><p>The Working Group released a test suite along with an <loc xmlns:xlink="http://www.w3.org/1999/xlink" href="http://dev.w3.org/2006/ws/policy/interop/results/dashboard-summary.html" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">implementation report</loc>. A <loc xmlns:xlink="http://www.w3.org/1999/xlink" href="ws-policy-framework-diff20070706.html" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">diff-marked version
  against the previous version of this document</loc> is
  available.</p><p>The Working Group is tracking all comments via <loc xmlns:xlink="http://www.w3.org/1999/xlink" href="http://www.w3.org/Bugs/Public/buglist.cgi?query_format=advanced&amp;short_desc_type=allwordssubstr&amp;short_desc=&amp;product=WS-Policy&amp;component=Framework&amp;component=Framework%2BAttachment&amp;component=Framework%2BAttachment%2BGuidelines&amp;component=Framework%2BAttachment%2BPrimer" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">Bugzilla</loc>
  and highly prefers to receive comments via this system. If access to
  Bugzilla is not feasible, you may send your comments to the mailing
  list <loc xmlns:xlink="http://www.w3.org/1999/xlink" href="mailto:public-ws-policy-comments@w3.org" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">public-ws-policy-comments@w3.org</loc>
  mailing list (<loc xmlns:xlink="http://www.w3.org/1999/xlink" href="http://lists.w3.org/Archives/Public/public-ws-policy-comments/" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">public
  archive</loc>). Each Bugzilla entry and email message should contain
  only one comment. All comments on this specification should be made
  following the <loc xmlns:xlink="http://www.w3.org/1999/xlink" href="http://www.w3.org/2002/ws/policy/#issues" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">Description for
  Issues</loc> of the Working Group.</p><p>This document was produced by a group operating under the <loc xmlns:xlink="http://www.w3.org/1999/xlink" href="http://www.w3.org/Consortium/Patent-Policy-20040205/" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">5
  February 2004 W3C Patent Policy</loc>. W3C maintains a <loc xmlns:xlink="http://www.w3.org/1999/xlink" href="http://www.w3.org/2004/01/pp-impl/39293/status" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">public list of
  any patent disclosures</loc> made in connection with the
  deliverables of the group; that page also includes instructions for
  disclosing a patent. An individual who has actual knowledge of a
  patent which the individual believes contains <loc xmlns:xlink="http://www.w3.org/1999/xlink" href="http://www.w3.org/Consortium/Patent-Policy-20040205/#def-essential" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">
  Essential Claim(s)</loc> must disclose the information in accordance
  with <loc xmlns:xlink="http://www.w3.org/1999/xlink" href="http://www.w3.org/Consortium/Patent-Policy-20040205/#sec-Disclosure" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">
  section 6 of the W3C Patent Policy</loc>.</p></status><langusage><language id="en-US">English</language></langusage><revisiondesc><p>Last Modified: $Date: 2007/08/29 00:56:07 $</p></revisiondesc></header><body><div1 id="tocRange"><head>Introduction</head><p>Web Services Policy 1.5 - Framework defines a framework and a model for expressing policies that
                refer to domain-specific capabilities, requirements, and general characteristics of
                entities in a Web services-based system. </p><p>A <termref def="policy">policy</termref> is a collection of policy alternatives. A
                    <termref def="policy_alternative">policy alternative </termref> 
                    is a collection of policy assertions. A <termref def="policy_assertion">policy assertion</termref>
                represents a requirement, capability, or other property of a behavior. A <termref def="policy_expression">policy expression</termref> is an XML Infoset
                representation of its policy, either in a normal form or in its equivalent compact
                form. Some policy assertions specify traditional requirements and capabilities that
                will manifest themselves in the messages exchanged(e.g., authentication scheme,
                transport protocol selection). Other policy assertions have no wire manifestation in
                the messages exchanged, yet are relevant to service selection and usage (e.g.,
                privacy policy, QoS characteristics). Web Services Policy 1.5 - Framework provides a single policy
                language to allow both kinds of assertions to be expressed and evaluated in a
                consistent manner.</p><p>Web Services Policy 1.5 - Framework does not cover discovery of policy, policy scopes and subjects,
                or their respective attachment mechanisms. A <termref def="policy_expression">policy
                    attachment</termref> is a mechanism for associating policy with one or more
                policy scopes. A <termref def="policy_scope">policy scope</termref> is a collection
                of policy subjects to which a policy applies. A <termref def="policy_subject">policy
                    subject</termref> is an entity (e.g., an endpoint, message, resource,
                interaction) with which a policy can be associated. Web Services Policy 1.5 - Attachment [<bibref ref="WS-PolicyAttachment"/>] defines such policy attachment 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"/>]. Other specifications are free to define either extensions to
                the mechanisms defined in Web Services Policy 1.5 - Attachment [<bibref ref="WS-PolicyAttachment"/>], or additional mechanisms not covered by Web Services Policy 1.5 - Attachment [<bibref ref="WS-PolicyAttachment"/>], for purposes of associating policy with policy
                scopes and subjects.</p><div2 id="Example"><head>Example</head><p><specref ref="ex-wsp-use-security-assertations"/> illustrates a security <termref def="policy_expression">policy expression</termref> using assertions defined
                    in WS-SecurityPolicy [<bibref ref="WS-SecurityPolicy"/>]:</p><example id="ex-wsp-use-security-assertations"><head>Use of Web Services Policy with security policy assertions.</head><eg xml:space="preserve">
                
(01) &lt;wsp:Policy
        xmlns:sp="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702"
        xmlns:wsp="http://www.w3.org/ns/ws-policy" &gt;
(02)   &lt;wsp:ExactlyOne&gt;
(03)     &lt;wsp:All&gt;
(04)        &lt;sp:SignedParts&gt;
(05)           &lt;sp:Body/&gt;
(06)        &lt;/sp:SignedParts&gt;
(07)     &lt;/wsp:All&gt;
(08)     &lt;wsp:All&gt;
(09)        &lt;sp:EncryptedParts&gt;
(10)           &lt;sp:Body/&gt;
(11)        &lt;/sp:EncryptedParts&gt;
(12)     &lt;/wsp:All&gt;
(13)   &lt;/wsp:ExactlyOne&gt;
(14) &lt;/wsp:Policy&gt;</eg></example><p>Lines (03-07) represent one policy alternative for signing a message body.</p><p>Lines (08-12) represent a second policy alternative for encrypting a message
                    body. </p><p>Lines (02-13) 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
                    will either sign or encrypt the message body.</p></div2></div1><div1 id="Notation_Terminlogy"><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 an exclusive 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 item 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 "…" are used to indicate a point of
                            extensibility that allows other Element or Attribute Information
                        Items.</p></item></ulist><p>Elements and Attributes defined by this specification are referred to in the text
                    of this document using XPath 1.0 [XPATH 1.0] expressions. Extensibility points
                    are referred to using an extended version of this syntax:</p><ulist><item><p>An element extensibility point is referred to using {any} in place of the
                            element name. This indicates that any element name can be used, from any
                            namespace, unless specified otherwise such as in Section <specref ref="Policy_Operators"/>. </p></item><item><p>An attribute extensibility point is referred to using @{any} in place of
                            the attribute name. This indicates that any attribute name can be used,
                            from any namespace. </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="Extensibility"><head>Extensibility</head><p>Within normative outlines, in this specification, ellipses (i.e., "…")
                    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. In this context, if an Attribute
                    Information Item is not recognized, it <rfc2119>SHOULD</rfc2119> be ignored. If
                    an Element Information Item is not recognized, it <rfc2119>MUST</rfc2119> be
                    treated as a policy assertion, unless specified otherwise such as in Section
                        <specref ref="Policy_References"/>.</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 rowspan="1" colspan="1">Prefix</th><th rowspan="1" colspan="1">Namespace</th><th rowspan="1" colspan="1">Specification</th></tr></thead><tbody><tr><td rowspan="1" colspan="1">
                                <code>sp</code>
                            </td><td rowspan="1" colspan="1">
                                <code>http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702</code>
                            </td><td rowspan="1" colspan="1">[<bibref ref="WS-SecurityPolicy"/>]</td></tr><tr><td rowspan="1" colspan="1">
                                <code>wsam</code>
                            </td><td rowspan="1" colspan="1">
                                <code>http://www.w3.org/2007/05/addressing/metadata</code>
                            </td><td rowspan="1" colspan="1">[<bibref ref="WS-AddressingMetadata"/>]</td></tr><tr><td rowspan="1" colspan="1">
                                <code>wsp</code>
                            </td><td rowspan="1" colspan="1">
                                <code>http://www.w3.org/ns/ws-policy</code>
                            </td><td rowspan="1" colspan="1">This specification</td></tr><tr><td rowspan="1" colspan="1">
                                <code>wsu</code>
                            </td><td rowspan="1" colspan="1">
                                <code>http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd</code>
                            </td><td rowspan="1" colspan="1">[<bibref ref="WS-Security"/>]</td></tr><tr><td rowspan="1" colspan="1">
                                <code>xs</code>
                            </td><td rowspan="1" colspan="1">
                                <code>http://www.w3.org/2001/XMLSchema</code>
                            </td><td rowspan="1" colspan="1">[<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>http://www.w3.org/ns/ws-policy</code>. A <xspecref xmlns:xlink="http://www.w3.org/1999/xlink" href="http://www.w3.org/2007/02/ws-policy.xsd" xlink:type="simple" xlink:show="new" xlink:actuate="onRequest">normative XML Schema</xspecref> [<bibref ref="XMLSchemaPart1"/>, <bibref ref="XMLSchemaPart2"/>] document can be
                    obtained indirectly by dereferencing the namespace document at the WS-Policy 1.5
                    namespace URI.</p><p>It is the intent of the W3C Web Services Policy Working Group that the
                    Web Services Policy 1.5 - Framework and Web Services Policy 1.5 - Attachment XML namespace URI will not
                    change arbitrarily with each subsequent revision of the corresponding XML Schema
                    documents as the specifications transition through Candidate Recommendation,
                    Proposed Recommendation and Recommendation status. However, should the
                    specifications revert to Working Draft status, and 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, the
                    namespace URI will be changed accordingly.</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 vast majority of instances would remain valid.</p></item><item><p>Modifications to the cardinality of elements (i.e. modifications to
                            minOccurs or maxOccurs attribute value of an element declaration) 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><glist><gitem><label>
         <loc xmlns:xlink="http://www.w3.org/1999/xlink" href="#collection" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">collection</loc>
      </label><def><p> The items in a
                            <term>collection</term> in this specification are unordered and may contain duplicates. 
                   </p></def></gitem><gitem><label>
         <loc xmlns:xlink="http://www.w3.org/1999/xlink" href="#ignorable_policy_assertion" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">ignorable policy assertion</loc>
      </label><def><p>An
                            <term>ignorable policy assertion</term> is an assertion that may be
                            ignored for purposes of determining the compatibility of alternatives 
                            in policy intersection in a lax mode
                           (as defined in <xspecref xmlns:xlink="http://www.w3.org/1999/xlink" href="http://www.w3.org/TR/ws-policy#Policy_Intersection" xlink:type="simple" xlink:show="new" xlink:actuate="onRequest">4.5 Policy
                            Intersection</xspecref>).</p></def></gitem><gitem><label>
         <loc xmlns:xlink="http://www.w3.org/1999/xlink" href="#nested_policy_expression" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">nested policy expression</loc>
      </label><def><p>A <term>nested policy expression</term>
                            is a <termref def="policy_expression">policy expression</termref> that
                            is an Element Information Item in the <emph role="infoset-property">children</emph> property of a <termref def="policy_assertion">policy assertion</termref>.</p></def></gitem><gitem><label>
         <loc xmlns:xlink="http://www.w3.org/1999/xlink" href="#policy" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">policy</loc>
      </label><def><p>A <term>policy</term> is a potentially empty
                        collection of <termref def="policy_alternative">policy
                        alternatives</termref>. </p></def></gitem><gitem><label>
         <loc xmlns:xlink="http://www.w3.org/1999/xlink" href="#policy_alternative" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">policy alternative</loc>
      </label><def><p>A <term>policy
                            alternative</term> is a potentially empty 
                            <termref def="collection"> collection </termref> of <termref def="policy_assertion">policy assertions</termref>.</p></def></gitem><gitem><label>
         <loc xmlns:xlink="http://www.w3.org/1999/xlink" href="#policy_assertion" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">policy assertion</loc>
      </label><def><p>A <term>policy
                        assertion</term> represents a requirement, a capability, or other property
                        of a behavior.</p></def></gitem><gitem><label>
         <loc xmlns:xlink="http://www.w3.org/1999/xlink" href="#policy_assertion_parameter" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">policy assertion parameter</loc>
      </label><def><p>A <term>policy assertion parameter</term>
                        qualifies the behavior indicated by a <termref def="policy_assertion">policy
                            assertion</termref>.</p></def></gitem><gitem><label>
         <loc xmlns:xlink="http://www.w3.org/1999/xlink" href="#policy_assertion_type" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">policy assertion type</loc>
      </label><def><p>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.</p></def></gitem><gitem><label>
         <loc xmlns:xlink="http://www.w3.org/1999/xlink" href="#policy_attachment" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">policy attachment</loc>
      </label><def><p>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>.</p></def></gitem><gitem><label>
         <loc xmlns:xlink="http://www.w3.org/1999/xlink" href="#policy_expression" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">policy expression</loc>
      </label><def><p>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.</p></def></gitem><gitem><label>
         <loc xmlns:xlink="http://www.w3.org/1999/xlink" href="#policy_scope" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">policy scope</loc>
      </label><def><p>A <term>policy
                                    scope</term> is a collection of <termref def="policy_subject">policy subjects</termref> to which a policy may
                                apply.</p></def></gitem><gitem><label>
         <loc xmlns:xlink="http://www.w3.org/1999/xlink" href="#policy_subject" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">policy subject</loc>
      </label><def><p>A <term>policy subject</term> is
                        an entity (e.g., an endpoint, message, resource, operation) with which a
                            <termref def="policy">policy</termref> can be associated. </p></def></gitem></glist></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>The descriptions below use XML Infoset terminology for convenience of description.
                However, this abstract model itself is independent of how it is represented as an
                XML Infoset. </p><div2 id="rPolicy_Assertion"><head>Policy Assertion</head><p><termdef id="policy_assertion" term="policy assertion">A <term>policy
                        assertion</term> represents a requirement, a capability, or other property
                        of a behavior.</termdef> 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>. <termdef id="policy_subject" term="policy subject">A <term>policy subject</term> is
                        an entity (e.g., an endpoint, message, resource, operation) with which a
                            <termref def="policy">policy</termref> can be associated. </termdef>
                    Assertions indicate domain-specific (e.g., security, transactions) semantics and
                    are expected to be defined in separate, domain-specific specifications.</p><p>An assertion MAY indicate that it is an ignorable policy assertion (see <specref ref="ignorable-policy-assertions"/>). <termdef id="ignorable_policy_assertion" term="ignorable policy assertion">An
                            <term>ignorable policy assertion</term> is an assertion that may be
                            ignored for purposes of determining the compatibility of alternatives 
                            in policy intersection in a lax mode
                           (as defined in <xspecref xmlns:xlink="http://www.w3.org/1999/xlink" href="http://www.w3.org/TR/ws-policy#Policy_Intersection" xlink:type="simple" xlink:show="new" xlink:actuate="onRequest">4.5 Policy
                            Intersection</xspecref>).</termdef> By default, an assertion is not
                    ignorable for policy intersection. </p><p>Assertions are typed by the authors that define them. <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> 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>Authors <rfc2119>MAY</rfc2119> define that an assertion contains a <termref def="policy_expression">policy expression</termref> (as defined in <specref ref="rPolicy_Expression"/>) as one of its <emph role="infoset-property">children</emph>. <termref def="nested_policy_expression">Nested policy
                        expression(s)</termref> are used by authors to further qualify one or more
                    specific aspects of the parent policy assertion. The qualification may indicate 
                    a relationship or context between the parent policy assertion and 
                    a nested policy expression. For example within a security domain, security policy 
                    authors
                    may define an assertion describing a set of security algorithms to qualify the
                    specific behavior of a security binding assertion. A parent policy assertion 
                    of one domain may also serve as a container for the nested policy expression 
                    from another domain.</p><p>The XML Infoset of a <termref def="policy_assertion">policy assertion</termref>
                    <rfc2119>MAY</rfc2119> contain a non-empty <emph role="infoset-property">attributes</emph> property and/or a non-empty <emph role="infoset-property">children</emph> property. Such properties, excluding the Attribute and
                    Element Information Items from the WS-Policy language XML namespace name are
                        <termref def="policy_assertion_parameter">policy assertion
                    parameters</termref> and <rfc2119>MAY</rfc2119> be used to parameterize the
                    behavior indicated by the assertion. <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> 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>Authors should be cognizant of the processing requirements when defining complex
                    assertions containing <termref def="policy_assertion_parameter">policy assertion
                        parameters</termref> or <termref def="nested_policy_expression">nested
                        policy expressions</termref>. Specifically, authors are encouraged to
                    consider when the identity of the root Element Information Item alone is enough
                    to convey the requirement or capability.</p></div2><div2 id="rPolicy_Alternative"><head>Policy Alternative</head><p><termdef id="policy_alternative" term="policy alternative">A <term>policy
                            alternative</term> is a potentially empty 
                            <termref def="collection"> collection </termref> of <termref def="policy_assertion">policy assertions</termref>.</termdef> 
                   <termdef id="collection" term="collection"> The items in a
                            <term>collection</term> in this specification are unordered and may contain duplicates. 
                   </termdef>
                            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>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. However, authors can write assertions that control the order in
                    which behaviors are applied.</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) (See XML Schema Part
                    1 [<bibref ref="XMLSchemaPart1"/>]) content, if any) are specific to the
                    assertion type and are outside the scope of this document. If policy assertion 
                    authors did not specify the semantics of repetition of <termref def="policy_assertion">policy 
                        assertions</termref> of a 
                        <termref def="policy_assertion_type">type</termref> that allows neither 
                        <termref def="policy_assertion_parameter">parameters</termref> nor 
                    <termref def="nested_policy_expression">nested 
                        policy expressions</termref> within a 
                        <termref def="policy_alternative">policy alternative</termref>, then repetition is 
                    simply redundancy, and multiple <termref def="policy_assertion">assertions</termref>
                    of the <termref def="policy_assertion_type">assertion type</termref> 
                    within a <termref def="policy_alternative">policy alternative</termref> have the same meaning as a single 
                    <termref def="policy_assertion">assertion</termref> 
                    of the <termref def="policy_assertion_type">type</termref> within the 
                    <termref def="policy_alternative">policy alternative</termref>.</p><p>Note: Depending on the semantics of the domain specific policy assertions 
                    regardless if they are qualified by nested policy expressions, a
                    combination of the policy assertions can be required to specify a particular
                    behavior. For example, a combination of two or three assertions from the 
                    WS-SecurityPolicy [<bibref ref="WS-SecurityPolicy"/>] specification is used to indicate message-level 
                    security for protecting messages - that is, the <code>sp:AsymmetricBinding</code> 
                    assertion is used to indicate message-level security, the <code>sp:SignedParts</code> 
                    assertion is used to indicate the parts of a message to be protected 
                    and the <code>sp:EncryptedParts</code> assertion is used to indicate the parts of 
                    a message that require confidentiality.</p></div2><div2 id="rPolicy"><head>Policy</head><p><termdef id="policy" term="policy">A <term>policy</term> is a potentially empty
                        collection of <termref def="policy_alternative">policy
                        alternatives</termref>. </termdef> 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>Policies of Entities in a Web Services Based System</head><p>Applied to a Web services based system, <termref def="policy">policy</termref> is
                    used to convey conditions on an interaction between entities (requester
                    application, provider service, Web infrastructure component, etc). An
                    interaction involves one or more message exchanges between two entities. It is
                    the responsibility of <termref def="policy_assertion">assertion</termref>
                    authors to define the interaction scope of an assertion including any
                    constraints on the <termref def="policy_subject">policy subjects</termref> to
                    which the assertion may be attached and a clear specification of the message (s)
                    within that interaction scope to which the assertion applies. </p><p>Any entity in a Web services based system may expose a policy to convey
                    conditions under which it functions. Satisfying assertions in the policy usually
                    results in behavior that reflects these conditions. For example, if two entities
                    - requester and provider - expose their policies, a requester might use the
                    policy of the provider to decide whether or not to use the service. A requester
                        <rfc2119>MAY</rfc2119> 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 supported by an
                    entity in the web services based system if and only if the entity satisfies the
                    requirement (or accommodates the capability) corresponding to the assertion. A
                        <termref def="policy_alternative">policy alternative</termref> is supported
                    by an entity if and only if the entity supports all the assertions in the
                    alternative. And, a <termref def="policy">policy</termref> is supported by an
                    entity if and only if the entity 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 an entity may be able to support a policy even if the entity does not
                    understand the type of each assertion in the policy; the entity only has to understand the type of each assertion
                    in a policy alternative that the entity supports. 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
                    entities to continue to use old alternatives in a backward-compatible
                manner.</p></div2></div1><div1 id="rPolicy_Expression"><head>Policy Expression</head><p>This section describes how to convey <termref def="policy">policy</termref> in an
                interoperable form, using the XML Infoset representation of a policy. <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>The normal form (see Section <specref ref="Normal_Form_Policy_Expression"/>) of a
                policy expression is the most straightforward XML Infoset representation of the
                policy data model. Equivalent, alternative representations allow policy authors to
                compactly express a policy (see Section <specref ref="Compact_Policy_Expression"/>).
                Policy authors might be more interested in the compact form (see Section <specref ref="Compact_Policy_Expression"/>), where the outlines and definitions describe
                what is valid with regards to the policy language XML Schema.</p><p>While the policy language XML Schema is a representation of the compact form, the
                normal form is more restrictive as outlined in Section <specref ref="Normal_Form_Policy_Expression"/>.</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
                        <termref def="policy_alternative">alternatives</termref> that in turn
                    enumerate each of their <termref def="policy_assertion">assertions</termref>.
                    The schema outline for the normal form of a policy expression is as follows:</p><eg xml:space="preserve" role="numberAddedAutomatically">(01) &lt;wsp:Policy … &gt;
(02)   &lt;wsp:ExactlyOne&gt;
(03)     ( &lt;wsp:All&gt; ( &lt;<emph>Assertion</emph> …&gt; … &lt;/<emph>Assertion</emph>&gt; )* &lt;/wsp:All&gt; )*
(04)   &lt;/wsp:ExactlyOne&gt;
(05) &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><gitem><label>
                            <att>/wsp:Policy/@{any}</att>
                        </label><def><p>Additional attributes <rfc2119>MAY</rfc2119> be specified but
                                    <rfc2119>MUST NOT</rfc2119> contradict the semantics of the
                                    <emph role="infoset-property">owner element</emph>; if an
                                attribute is not recognized, it <rfc2119>SHOULD</rfc2119> be
                                ignored.</p></def></gitem></glist><p>If an <termref def="policy_assertion">assertion</termref> in the normal form of a
                    policy expression contains a <termref def="nested_policy_expression">nested
                        policy expression</termref>, the nested policy expression
                    <rfc2119>MUST</rfc2119> contain at most one policy alternative (see <specref ref="Policy_Assertion_Nesting"/>).</p><p>To simplify processing and improve interoperability, the normal form of a policy
                    expression <rfc2119>SHOULD</rfc2119> be used where practical.</p><p>For example, the following is the normal form of a policy expression.</p><eg xml:space="preserve">(01) &lt;wsp:Policy
        xmlns:sp="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702"
        xmlns:wsp="http://www.w3.org/ns/ws-policy" &gt;
(02)   &lt;wsp:ExactlyOne&gt;
(03)     &lt;wsp:All&gt;
(04)        &lt;sp:SignedParts&gt;
(05)           &lt;sp:Body/&gt;
(06)        &lt;/sp:SignedParts&gt;
(07)     &lt;/wsp:All&gt;
(08)     &lt;wsp:All&gt;
(09)        &lt;sp:EncryptedParts&gt;
(10)           &lt;sp:Body/&gt;
(11)        &lt;/sp:EncryptedParts&gt;
(12)     &lt;/wsp:All&gt;
(13)   &lt;/wsp:ExactlyOne&gt;
(14) &lt;/wsp:Policy&gt;</eg><p>Lines (03-07) and Lines (08-12) express the two alternatives in the policy. If
                    the first alternative is selected, the message body needs to be signed [<bibref ref="WS-SecurityPolicy"/>] is supported; conversely, if the second
                    alternative is selected, the message body needs to be encrypted. </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 an IRI [<bibref ref="RFC3987"/>]. The
                    schema outline for attributes to associate an IRI is as follows:</p><eg xml:space="preserve" role="numberAddedAutomatically">(01) &lt;wsp:Policy ( Name="<emph>xs:anyURI</emph>" )?
(02)                 ( wsu:Id="<emph>xs:ID</emph>" | xml:id="<emph>xs:ID</emph>" )?
(03)             … &gt;
(04)   …
(05) &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 IRI [<bibref ref="RFC3987"/>]. If omitted, there is no implied value. This
                                IRI <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"/>]. <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>
                                <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></def></gitem><gitem><label>
                            <att>/wsp:Policy/(@wsu:Id | @xml: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.
                                The constraints of the XML 1.0 [<bibref ref="XML10"/>] ID type MUST
                                be met. To refer to this policy expression, an IRI-reference
                                    <rfc2119>MAY</rfc2119> be formed using this value per Section
                                4.2 of WS-Security [<bibref ref="WS-Security"/>] when @wsu:Id is
                                used.</p><note><p>The use of <code>xml:id</code> attribute in conjunction with
                                Canonical XML 1.0 is inappropriate as described in Appendix C of
                                xml:id Version 1.0 [<bibref ref="XMLID"/>] and thus this combination
                                must be avoided (see [<bibref ref="C14NNOTE"/>]). For example, a
                                policy expression identified using <code>xml:id</code> attribute
                                should not be signed using XML Digital Signature when Canonical XML
                                1.0 is being used as the canonicalization method.</p></note><note><p>Canonical XML 1.1 [<bibref ref="C14N11"/>] is intended to
                                address the issues that occur with Canonical XML 1.0 with regards to
                                <code>xml:id</code>. The W3C XML Security Specifications Maintenance WG has
                                been chartered to address how to integrate Canonical XML 1.1 with XML
                                Security, including XML Signature [<bibref ref="SecSpecMaintWG"/>] 
                                (See http://www.w3.org/2007/xmlsec/.)
                            </p></note></def></gitem></glist><p>The following example illustrates how to associate a policy expression with the
                    absolute IRI <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="http://www.w3.org/ns/ws-policy" &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
                    IRI-reference <code>"#P1"</code>:</p><eg xml:space="preserve">(01) &lt;wsp:Policy
        wsu:Id="P1"
        xmlns:wsp="http://www.w3.org/ns/ws-policy"
        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 <termref def="policy">policy</termref> 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 sub section below describes a construct and
                    its equivalent normal form. To interpret a compact expression in an
                    interoperable form, a policy expression in the compact form can be converted
                    (see Section <specref ref="normalization"/>) to the normal form (see Section
                        <specref ref="Normal_Form_Policy_Expression"/>).</p><p>A <termref def="policy_expression">policy expression</termref> consists of a
                        <el>wsp:Policy</el> wrapper element and zero or more child and descendent
                    elements.</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 compact
                        authoring style for expressing a pair of <termref def="policy_alternative">alternatives</termref>, one with and one without that assertion. The
                        schema outline for this attribute is as follows:</p><eg xml:space="preserve" role="numberAddedAutomatically">(01) &lt;<emph>Assertion</emph> ( wsp:Optional="<emph>xs:boolean</emph>" )? …&gt; … &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 the actual value (See XML Schema Part 1 [<bibref ref="XMLSchemaPart1"/>]) is true, the expression of the
                                    assertion is semantically equivalent to the following:</p><eg xml:space="preserve" role="numberAddedAutomatically">(01) &lt;wsp:ExactlyOne&gt;
(02)   &lt;wsp:All&gt; &lt;<emph>Assertion</emph> …&gt; … &lt;/<emph>Assertion</emph>&gt; &lt;/wsp:All&gt;
(03)   &lt;wsp:All /&gt;
(04) &lt;/wsp:ExactlyOne&gt;</eg><p>If the actual value (See XML Schema Part 1 [<bibref ref="XMLSchemaPart1"/>]) is false, the expression of the
                                    assertion is semantically equivalent to the following:</p><eg xml:space="preserve" role="numberAddedAutomatically">(01) &lt;wsp:ExactlyOne&gt;
(02)   &lt;wsp:All&gt; &lt;<emph>Assertion</emph> …&gt; … &lt;/<emph>Assertion</emph>&gt; &lt;/wsp:All&gt;
(03) &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://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702"
        xmlns:wsp="http://www.w3.org/ns/ws-policy" &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://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702"
        xmlns:wsp="http://www.w3.org/ns/ws-policy" &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 <termref def="policy_expression">policy
                            expression</termref>. <termdef id="nested_policy_expression" term="nested policy expression">A <term>nested policy expression</term>
                            is a <termref def="policy_expression">policy expression</termref> that
                            is an Element Information Item in the <emph role="infoset-property">children</emph> property of a <termref def="policy_assertion">policy assertion</termref>.</termdef> The schema outline for a
                            <termref def="nested_policy_expression">nested policy
                        expression</termref> is:</p><eg xml:space="preserve" role="numberAddedAutomatically">(01) &lt;<emph>Assertion</emph> …&gt;
(02)   …
(03)   ( &lt;wsp:Policy …&gt; … &lt;/wsp:Policy&gt; )?
(04)   …
(05) &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>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.</p><p>Note: This specification does not define processing for arbitrary
                                        <el>wsp:Policy</el> Element Information Items in the
                                    descendants of an assertion parameter, e.g., in the <emph role="infoset-property">children</emph> property of one of
                                    the <emph role="infoset-property">children</emph> as in:</p><eg xml:space="preserve">
(01)&lt;wsp:Policy&gt;
(02)   &lt;Lorem&gt;
(03)       &lt;Ipsum&gt;
(04)           &lt;wsp:Policy&gt; 
(05)           …
(06)           &lt;/wsp:Policy&gt;
(07)       &lt;/Ipsum&gt;
(08)   &lt;/Lorem&gt;
(09)&lt;/wsp:Policy&gt;</eg></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 policy expression with nested policy
                        expressions in a compact form:</p><eg xml:space="preserve">(01) &lt;wsp:Policy
        xmlns:sp="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702"
        xmlns:wsp="http://www.w3.org/ns/ws-policy" &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;
               &lt;sp:HttpsToken&gt;
                 &lt;wsp:Policy/&gt;
               &lt;/sp:HttpsToken&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 example above is equivalent to the following:</p><eg xml:space="preserve">(01) &lt;wsp:Policy
        xmlns:sp="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702"
        xmlns:wsp="http://www.w3.org/ns/ws-policy" &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;
                   &lt;sp:HttpsToken&gt;
                     &lt;wsp:Policy/&gt;
                   &lt;/sp:HttpsToken&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;
                   &lt;sp:HttpsToken&gt;
                     &lt;wsp:Policy/&gt;
                   &lt;/sp:HttpsToken&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><termref def="policy">Policies</termref> are used to convey a set of
                        capabilities, requirements, and general characteristics of entities (see
                            <specref ref="tocRange"/>). These are generally expressible as a set of
                            <termref def="policy_alternative">policy alternatives</termref>. Policy
                        operators (<el>wsp:Policy</el>, <el>wsp:All</el> and <el>wsp:ExactlyOne</el>
                        elements) are used to group <termref def="policy_assertion">policy
                            assertions</termref> into <termref def="policy_alternative">policy
                            alternatives</termref>. 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 schema outline for the <el>wsp:Policy</el> element in the compact form is
                        as follows:</p><eg xml:space="preserve" role="numberAddedAutomatically">(01) &lt;wsp:Policy … &gt;
(02)   ( &lt;wsp:Policy …&gt;…&lt;/wsp:Policy&gt; |
(03)     &lt;wsp:ExactlyOne&gt;…&lt;/wsp:ExactlyOne&gt; |         
(04)     &lt;wsp:All&gt;…&lt;/wsp:All&gt; |
(05)     &lt;wsp:PolicyReference … &gt;…&lt;/wsp:PolicyReference&gt; |
(06)     …
(07)   )* 
(08) &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</el>
                            </label><def><p>This element is the <el>wsp:Policy</el> operator.</p></def></gitem><gitem><label>
                                <el>/wsp:Policy/wsp:Policy</el>
                            </label><def><p>This element is a nested <el>wsp:Policy</el> operator.</p></def></gitem><gitem><label>
                                <el>/wsp:Policy/wsp:ExactlyOne</el>
                            </label><def><p>This element is a nested <el>wsp:ExactlyOne</el> operator.</p></def></gitem><gitem><label>
                                <el>/wsp:Policy/wsp:All</el>
                            </label><def><p>This element is a nested <el>wsp:All</el> operator.</p></def></gitem><gitem><label>
                                <el>/wsp:Policy/wsp:PolicyReference</el>
                            </label><def><p>This element references a policy expression to be included per
                                    Section <specref ref="Policy_Inclusion"/>.</p></def></gitem><gitem><label>
                                <el>/wsp:Policy/@{any}</el>
                            </label><def><p>Additional attributes <rfc2119>MAY</rfc2119> be specified but
                                        <rfc2119>MUST NOT</rfc2119> contradict the semantics of the
                                        <emph role="infoset-property">owner element</emph>; if an
                                    attribute is not recognized, it <rfc2119>SHOULD</rfc2119> be
                                    ignored.</p></def></gitem><gitem><label>
                                <el>/wsp:Policy/{any}</el>
                            </label><def><p>Additional elements <rfc2119>MAY</rfc2119> be specified. Such
                                    elements <rfc2119>MUST NOT</rfc2119> use the Web Services Policy
                                    language XML namespace name and <rfc2119>MUST NOT</rfc2119>
                                    contradict the semantics of the <emph role="infoset-property">parent element</emph>.</p></def></gitem></glist><p>The schema outline for the <el>wsp:ExactlyOne</el> element in the compact
                        form is as follows:</p><eg xml:space="preserve" role="numberAddedAutomatically">(01) &lt;wsp:ExactlyOne&gt;
(02)   ( &lt;wsp:Policy … &gt;…&lt;/wsp:Policy&gt; |
(03)     &lt;wsp:ExactlyOne&gt;…&lt;/wsp:ExactlyOne&gt; |
(04)     &lt;wsp:All&gt;…&lt;/wsp:All&gt; |
(05)     &lt;wsp:PolicyReference … &gt;…&lt;/wsp:PolicyReference&gt; |
(06)     …
(07)   )* 
(08) &lt;/wsp:ExactlyOne&gt;</eg><p>The following describes the Attribute and Element Information Items defined
                        in the schema outline above:</p><glist><gitem><label>
                                <el>/wsp:ExactlyOne</el>
                            </label><def><p>This element is the <el>wsp:ExactlyOne</el> operator.</p></def></gitem><gitem><label>
                                <el>/wsp:ExactlyOne/wsp:Policy</el>
                            </label><def><p>This element is a nested <el>wsp:Policy</el> operator.</p></def></gitem><gitem><label>
                                <el>/wsp:ExactlyOne/wsp:ExactlyOne</el>
                            </label><def><p>This element is a nested <el>wsp:ExactlyOne</el> operator.</p></def></gitem><gitem><label>
                                <el>/wsp:ExactlyOne/wsp:All</el>
                            </label><def><p>This element is a nested <el>wsp:All operator</el>.</p></def></gitem><gitem><label>
                                <el>/wsp:ExactlyOne/wsp:PolicyReference</el>
                            </label><def><p>This element references a policy expression to be included per
                                    Section <specref ref="Policy_Inclusion"/>.</p></def></gitem><gitem><label>
                                <el>/wsp:ExactlyOne/{any}</el>
                            </label><def><p>Additional elements <rfc2119>MAY</rfc2119> be specified. Such
                                    elements <rfc2119>MUST NOT</rfc2119> use the Web Services Policy
                                    language XML namespace name and <rfc2119>MUST NOT</rfc2119>
                                    contradict the semantics of the <emph role="infoset-property">parent element</emph>.</p></def></gitem></glist><p>The schema outline for the <el>wsp:All</el> element in the compact form is as
                        follows:</p><eg xml:space="preserve" role="numberAddedAutomatically">(01) &lt;wsp:All&gt;
(02)   ( &lt;wsp:Policy … &gt;…&lt;/wsp:Policy&gt; |
(03)     &lt;wsp:ExactlyOne&gt;…&lt;/wsp:ExactlyOne&gt; |
(04)     &lt;wsp:All&gt;…&lt;/wsp:All&gt; |
(05)     &lt;wsp:PolicyReference … &gt;…&lt;/wsp:PolicyReference&gt; |
(06)     …
(07)   )* 
(08) &lt;/wsp:All&gt;</eg><p>The following describes the Attribute and Element Information Items defined
                        in the schema outline above:</p><glist><gitem><label>
                                <el>/wsp:All</el>
                            </label><def><p>This element is the <el>wsp:All</el> operator.</p></def></gitem><gitem><label>
                                <el>/wsp:All/wsp:Policy</el>
                            </label><def><p>This element is a nested <el>wsp:Policy</el> operator.</p></def></gitem><gitem><label>
                                <el>/wsp:All/wsp:ExactlyOne</el>
                            </label><def><p>This element is a nested <el>wsp:ExactlyOne</el> operator.</p></def></gitem><gitem><label>
                                <el>/wsp:All/wsp:All</el>
                            </label><def><p>This element is a nested <el>wsp:All</el> operator.</p></def></gitem><gitem><label>
                                <el>/wsp:All/wsp:PolicyReference</el>
                            </label><def><p>This element references a policy expression to be included per
                                    Section <specref ref="Policy_Inclusion"/>.</p></def></gitem><gitem><label>
                                <el>/wsp:All/{any}</el>
                            </label><def><p>Additional elements <rfc2119>MAY</rfc2119> be specified. Such
                                    elements <rfc2119>MUST NOT</rfc2119> use the Web Services Policy
                                    language XML namespace name and <rfc2119>MUST NOT</rfc2119>
                                    contradict the semantics of the <emph role="infoset-property">parent element</emph>.</p></def></gitem></glist><note><p>The <el>wsp:All</el> and <el>wsp:ExactlyOne</el> elements do not allow
                            attribute extensibility because such attributes cannot be preserved
                            through normalization.</p></note><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>Use of <el>wsp:Policy</el> as an operator within a policy
                                    expression is equivalent to <el>wsp:All</el>.</p><p> A collection of assertions in an <el>wsp:All</el> operator is
                                    equivalent to a <termref def="policy_alternative">policy
                                        alternative</termref>. For instance, </p><eg xml:space="preserve" role="numberAddedAutomatically">(01) &lt;wsp:All&gt;
(02)   &lt;!-- assertion 1 --&gt;
(03)   &lt;!-- assertion 2 --&gt;
(04) &lt;/wsp:All&gt;</eg><p>is equivalent to:</p><eg xml:space="preserve" role="numberAddedAutomatically">(01) &lt;wsp:ExactlyOne&gt;
(02)   &lt;wsp:All&gt;
(03)     &lt;!-- assertion 1 --&gt;
(04)     &lt;!-- assertion 2 --&gt;
(05)   &lt;/wsp:All&gt;
(06) &lt;/wsp:ExactlyOne&gt;</eg></def></gitem><gitem><label>Empty</label><def><ulist><item><p><code>&lt;wsp:All /&gt;</code> expresses a policy alternative
                                            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" role="numberAddedAutomatically">(01) &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" role="numberAddedAutomatically">(01) &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" role="numberAddedAutomatically">(01) &lt;wsp:ExactlyOne&gt;
(02)   <emph>&lt;!-- assertion 1 --&gt; &lt;!-- assertion 2 --&gt;</emph>
(03) &lt;/wsp:ExactlyOne&gt;</eg><p>is equivalent to:</p><eg xml:space="preserve" role="numberAddedAutomatically">(01) &lt;wsp:ExactlyOne&gt;
(02)   <emph>&lt;!-- assertion 2 --&gt; &lt;!-- assertion 1 --&gt;</emph>
(03) &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" role="numberAddedAutomatically">(01) &lt;wsp:All&gt;
(02)   <emph>&lt;!-- assertion 1 --&gt;</emph>
(03) <emph>  </emph>&lt;wsp:All&gt; <emph>&lt;!-- assertion 2 --&gt; </emph>&lt;/wsp:All&gt;
(04) &lt;/wsp:All&gt;</eg><p>is equivalent to:</p><eg xml:space="preserve" role="numberAddedAutomatically">(01) &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" role="numberAddedAutomatically">(01) &lt;wsp:ExactlyOne&gt;
(02)   <emph>&lt;!-- assertion 1 --&gt;</emph>
(03) <emph>  </emph>&lt;wsp:ExactlyOne&gt; <emph>&lt;!-- assertion 2 --&gt; </emph>&lt;/wsp:ExactlyOne&gt;
(04) &lt;/wsp:ExactlyOne&gt;</eg><p>is equivalent to:</p><eg xml:space="preserve" role="numberAddedAutomatically">(01) &lt;wsp:ExactlyOne&gt;
(02)   <emph>&lt;!-- assertion 1 --&gt; &lt;!-- assertion 2 --&gt;</emph>
(03) &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" role="numberAddedAutomatically">(01) &lt;wsp:All&gt;
(02)   &lt;wsp:All&gt; <emph>&lt;!-- assertion 1 --&gt; &lt;!-- assertion 2 --&gt; </emph>&lt;/wsp:All&gt;
(03) &lt;/wsp:All&gt;</eg><p>is equivalent to:</p><eg xml:space="preserve" role="numberAddedAutomatically">(01) &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" role="numberAddedAutomatically">(01) &lt;wsp:ExactlyOne&gt;
(02)   &lt;wsp:ExactlyOne&gt;
(03)     <emph>&lt;!-- assertion 1 --&gt; &lt;!-- assertion 2 --&gt;</emph>
(04) <emph>  </emph>&lt;/wsp:ExactlyOne&gt;
(05) &lt;/wsp:ExactlyOne&gt;</eg><p>is equivalent to:</p><eg xml:space="preserve" role="numberAddedAutomatically">(01) &lt;wsp:ExactlyOne&gt;
(02)   <emph>&lt;!-- assertion 1 --&gt; &lt;!-- assertion 2 --&gt;</emph>
(03) &lt;/wsp:ExactlyOne&gt;</eg></def></gitem><gitem><label>Distributive</label><def><p><el>wsp:All</el> is distributive over <el>wsp:ExactlyOne</el>.  That is, a <el>wsp:All</el> element containing only <el>wsp:ExactlyOne</el> child elements is equivalent to a <el>wsp:ExactlyOne</el> element containing, for each possible combination of one child element from each of the <el>wsp:ExactlyOne</el> element over which being distributed, a <el>wsp:All</el> element containing that combination.  For
                                    example,</p><eg xml:space="preserve" role="numberAddedAutomatically">(01) &lt;wsp:All&gt;
(02)   &lt;wsp:ExactlyOne&gt;
(03) <emph>    &lt;!-- assertion 1 --&gt;</emph>
(04) <emph>    &lt;!-- assertion 2 --&gt;</emph>
(05)   &lt;/wsp:ExactlyOne&gt;
(06) &lt;/wsp:All&gt;</eg><p>is equivalent to:</p><eg xml:space="preserve" role="numberAddedAutomatically">(01) &lt;wsp:ExactlyOne&gt;
(02)   &lt;wsp:All&gt;
(03) <emph>    &lt;!-- assertion 1 --&gt;</emph>
(04)   &lt;/wsp:All&gt;
(05)   &lt;wsp:All&gt;
(06) <emph>    &lt;!-- assertion 2 --&gt;</emph>
(07)   &lt;/wsp:All&gt;
(08) &lt;/wsp:ExactlyOne&gt;</eg><p>Similarly by repeatedly distributing wsp:All over wsp:ExactlyOne,</p><eg xml:space="preserve" role="numberAddedAutomatically">(01) &lt;wsp:All&gt;
(02)   &lt;wsp:ExactlyOne&gt;
(03) <emph>    &lt;!-- assertion 1 --&gt;</emph>
(04) <emph>    &lt;!-- assertion 2 --&gt;</emph>
(05)   &lt;/wsp:ExactlyOne&gt;
(06)   &lt;wsp:ExactlyOne&gt;
(07) <emph>    &lt;!-- assertion 3 --&gt;</emph>
(08) <emph>    &lt;!-- assertion 4 --&gt;</emph>
(09)   &lt;/wsp:ExactlyOne&gt;
(10) &lt;/wsp:All&gt;</eg><p>is equivalent to:</p><eg xml:space="preserve" role="numberAddedAutomatically">(01) &lt;wsp:ExactlyOne&gt;
(02)   &lt;wsp:All&gt;<emph>&lt;!-- assertion 1 --&gt;&lt;!-- assertion 3 --&gt;</emph>&lt;/wsp:All&gt;
(03)   &lt;wsp:All&gt;<emph>&lt;!-- assertion 1 --&gt;&lt;!-- assertion 4 --&gt;</emph>&lt;/wsp:All&gt;
(04)   &lt;wsp:All&gt;<emph>&lt;!-- assertion 2 --&gt;&lt;!-- assertion 3 --&gt;</emph>&lt;/wsp:All&gt;
(05)   &lt;wsp:All&gt;<emph>&lt;!-- assertion 2 --&gt;&lt;!-- assertion 4 --&gt;</emph>&lt;/wsp:All&gt;
(06) &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" role="numberAddedAutomatically">(01) &lt;wsp:All&gt;
(02)   &lt;wsp:ExactlyOne /&gt;
(03) &lt;/wsp:All&gt;</eg><p>is equivalent to:</p><eg xml:space="preserve" role="numberAddedAutomatically">(01) &lt;wsp:ExactlyOne /&gt;</eg><p>and:</p><eg xml:space="preserve" role="numberAddedAutomatically">(01) &lt;wsp:All&gt;
(02)   &lt;wsp:ExactlyOne&gt;
(03) <emph>    &lt;!-- assertion 1 --&gt;</emph>
(04) <emph>    &lt;!-- assertion 2 --&gt;</emph>
(05)   &lt;/wsp:ExactlyOne&gt;
(06)   &lt;wsp:ExactlyOne /&gt;
(07) &lt;/wsp:All&gt;</eg><p>is equivalent to:</p><eg xml:space="preserve" role="numberAddedAutomatically">(01) &lt;wsp:ExactlyOne /&gt;</eg></def></gitem></glist><p>For example, given the following compact policy expression:</p><eg xml:space="preserve">(01) &lt;wsp:Policy
        xmlns:sp="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702"
        xmlns:wsp="http://www.w3.org/ns/ws-policy" &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><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://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702"
        xmlns:wsp="http://www.w3.org/ns/ws-policy" &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://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702"
        xmlns:wsp="http://www.w3.org/ns/ws-policy" &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><p>  Consider another example, given the following compact policy expression:</p><eg xml:space="preserve">(01) &lt;wsp:Policy
        xmlns:sp="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702"
        xmlns:wsp="http://www.w3.org/ns/ws-policy" &gt;
(02)   &lt;sp:RequireDerivedKeys /&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><p>Applying Section <specref ref="Optional_Policy_Assertions"/> to <att>@wsp:Optional="false"</att> in Line (02), and distributing wsp:All over wsp:ExactlyOne 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://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702"
        xmlns:wsp="http://www.w3.org/ns/ws-policy" &gt;
(02)   &lt;wsp:ExactlyOne&gt;
(03)     &lt;wsp:All&gt;
(04)       &lt;sp:RequireDerivedKeys /&gt;
(05)     &lt;/wsp:All&gt;
(06)   &lt;/wsp:ExactlyOne&gt;
(07)   &lt;wsp:ExactlyOne&gt;
(08)     &lt;wsp:All&gt;
(09)       &lt;sp:WssUsernameToken10 /&gt;
(10)     &lt;/wsp:All&gt;
(11)     &lt;wsp:All&gt;
(12)       &lt;sp:WssUsernameToken11 /&gt;
(13)     &lt;/wsp:All&gt;
(14)   &lt;/wsp:ExactlyOne&gt;
(15) &lt;/wsp:Policy&gt;</eg><p>Note that the assertion listed in Line (02) in the first listing expands into an alternative in Lines (03-05) 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://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702"
        xmlns:wsp="http://www.w3.org/ns/ws-policy" &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:ExactlyOne&gt;
(12) &lt;/wsp:Policy&gt;</eg><p>Note that the first alternative listed in Lines (03-05) in the second listing is combined with the two alternatives listed in Lines (08-13) in the second listing to create two alternatives in the normalized policy, Lines (03-06) and (07-10).</p></div3><div3 id="Policy_References"><head>Policy References</head><p>The <el>wsp:PolicyReference</el> element is used to reference <termref def="policy_expression">policy expressions</termref>. The semantics of
                        the <el>wsp:PolicyReference</el> element are determined by the context in
                        which it is used (for an example, see <specref ref="Policy_Inclusion"/>).</p><p>The schema outline for the <el>wsp:PolicyReference</el> element is as
                        follows:</p><eg xml:space="preserve" role="numberAddedAutomatically">(01) &lt;wsp:PolicyReference
(02)     URI="<emph>xs:anyURI</emph>"
(03)   ( Digest="<emph>xs:base64Binary</emph>" ( DigestAlgorithm="<emph>xs:anyURI</emph>" )? )?
(04)     … &gt;
(05)    …
(06) &lt;/wsp:PolicyReference&gt;</eg><p>The following describes the Attribute and Element Information Items defined
                        in the schema outline above:</p><glist><gitem><label>
                                <el>/wsp:PolicyReference</el>
                            </label><def><p>This element references a policy expression that is being
                                    referenced.</p></def></gitem><gitem><label>
                                <att>/wsp:PolicyReference/@URI</att>
                            </label><def><p>This attribute references a policy expression by an IRI. For a
                                    policy expression within the same XML Document, the reference
                                        <rfc2119>SHOULD</rfc2119> be an IRI-reference to a policy
                                    expression identified by an <code>ID</code>. For an external
                                    policy expression, there is no requirement that the IRI 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 IRI.   The
                                    IRI included in the retrieved policy expression, if any,
                                        <rfc2119>MAY</rfc2119> be different than the IRI used to
                                    retrieve the policy expression. </p></def></gitem><gitem><label>
                                <att>/wsp:PolicyReference/@Digest</att>
                            </label><def><p>This attribute is of type <att>xs:base64Binary</att> and
                                    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: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 rowspan="1" colspan="1">URI</th><th rowspan="1" colspan="1">Description</th></tr></thead><tbody><tr><td rowspan="1" colspan="1"><code>http://www.w3.org/ns/ws-policy/Sha1Exc</code> (implied)</td><td rowspan="1" colspan="1">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><glist><gitem><label>
                                <att>/wsp:PolicyReference/@{any}</att>
                            </label><def><p>Additional attributes <rfc2119>MAY</rfc2119> be specified but
                                        <rfc2119>MUST NOT</rfc2119> contradict the semantics of the
                                        <emph role="infoset-property">owner element</emph>; if an
                                    attribute is not recognized, it <rfc2119>SHOULD</rfc2119> be
                                    ignored.</p></def></gitem><gitem><label>
                                <el>/wsp:PolicyReference/{any}</el>
                            </label><def><p>Additional elements <rfc2119>MAY</rfc2119> be specified but
                                        <rfc2119>MUST NOT</rfc2119> contradict the semantics of the
                                        <emph role="infoset-property">parent element</emph>; if an
                                    element is not recognized, it <rfc2119>SHOULD</rfc2119> be
                                    ignored.</p></def></gitem></glist></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 conceptually replace 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>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://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702"
        xmlns:wsp="http://www.w3.org/ns/ws-policy"
        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://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702"
        xmlns:wsp="http://www.w3.org/ns/ws-policy" &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://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702"
        xmlns:wsp="http://www.w3.org/ns/ws-policy" &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><div3 id="normalization"><head>Normalization</head><p>To interpret a compact <termref def="policy_expression">expression</termref>
                        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 Element Information Item E (as defined in the XML
                                Information Set [<bibref ref="XMLInfoset"/>]) of the policy
                                expression. The <emph role="infoset-property">namespace name</emph>
                                of E is always <code>"http://www.w3.org/ns/ws-policy"</code>. In the base case, the
                                    <emph role="infoset-property">local name</emph> property of E is
                                    <code>"Policy"</code>; in the recursive case, the <emph role="infoset-property">local name</emph> property of E is
                                    <code>"Policy"</code>, <code>"ExactlyOne"</code>, or
                                <code>"All"</code>.</p></item><item><p>Expand Element Information Items (as defined in the XML Information
                                Set [<bibref ref="XMLInfoset"/>]) in the <emph role="infoset-property">children</emph> property of E 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 E into
                                normal form.</p><olist><item><p>If the <emph role="infoset-property">namespace name</emph>
                                        property of C is <code>"http://www.w3.org/ns/ws-policy"</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 E 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"/> and <specref ref="Normal_Form_Policy_Expression"/>.</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></div2><div2 id="ignorable-policy-assertions"><head>Ignorable Policy Assertions</head><p>The <att>wsp:Ignorable</att> attribute indicates if a policy assertion is an
                   <termref def="ignorable_policy_assertion">ignorable policy
                   assertion</termref>. The behavior implied by an ignorable assertion 
                   is expected to be a behavior that need not be engaged for successful 
                   interoperation with the entity that includes such ignorable assertions 
                   in its policy.
                 </p><p>   
                 The schema outline for the <att>wsp:Ignorable</att> attribute is as follows:
                 </p><eg xml:space="preserve" role="numberAddedAutomatically">(01) &lt;Assertion ( wsp:Ignorable="xs:boolean" )? … &gt; … &lt;/Assertion&gt;</eg><p>The following describes the Attribute Information Item defined in the schema
                    outline above:</p><glist><gitem><label>
                            <att>/Assertion/@wsp:Ignorable</att>
                        </label><def><p>This attribute is of type <code>xs:boolean</code>. If the actual
                                value (See XML Schema Part 1 [<bibref ref="XMLSchemaPart1"/>]) is
                                true, the assertion is an <termref def="ignorable_policy_assertion">ignorable policy assertion</termref>. If the actual value is
                                false, the assertion is not an <termref def="ignorable_policy_assertion">ignorable policy
                                assertion</termref>. Omitting this attribute is semantically
                                equivalent to including it with a value of false.</p></def></gitem></glist></div2><div2 id="Policy_Intersection"><head>Policy Intersection</head><p>Policy intersection is OPTIONAL but, a useful tool 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.
                    Policy Intersection is a commutative operation performed on two policies that 
                    yields a policy that contains a collection of the compatible policy alternatives. 
                    (Note: while policy intersection at times is analogous with set intersection, 
                    it does not imply formal set intersection semantics). There are two modes for 
                    intersection: strict and lax. How the mode is selected or indicated for the policy 
                    intersection is outside the scope of this specification. 
                </p><p>
                    As a first approximation, an intersection algorithm is defined below 
                    that approximates compatibility of <termref def="policy_assertion">policy assertions</termref> 
                    in a domain-independent manner. Mechanisms for determining 
                    <termref def="policy_assertion_parameter">assertion parameter</termref> 
                    compatibility are not part of this domain-independent 
                    policy intersection. Determining whether two 
                    <termref def="policy_assertion">policy assertions</termref> of the same 
                    type are compatible may involve domain-specific processing for purposes of 
                    determining <termref def="policy_assertion_parameter">assertion parameter</termref> 
                    compatibility. Domain-independent policy 
                    intersection may be extended to include domain-specific processing. 
                    If a domain-specific intersection processing algorithm is required this 
                    will be known from the QName of the specific <termref def="policy_assertion_type">assertion type</termref> 
                    involved in the <termref def="policy_alternative">policy alternative</termref>. 
                    However, regardless of whether an assertion's 
                    QName indicates domain-specific processing, an implementation of the 
                    domain-independent intersection need not apply the domain-specific processing.
                </p><p>The domain-independent policy intersection algorithm is:</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 domain-independent compatibility 
                determination defined herein but this domain-independent policy intersection 
                may be extended to include domain-specific processing for purposes of 
                determining <termref def="policy_assertion_parameter">Assertion parameter</termref> compatibility.   
                </p><ulist><item><p>If the mode is strict, two <termref def="policy_alternative">policy
                                alternatives</termref> A and B are compatible: </p><ulist><item><p>if each assertion in A is compatible with an assertion in B,
                                        and</p></item><item><p>if each assertion in B is compatible with an assertion in
                                    A.</p></item></ulist><p>If the mode is lax, two <termref def="policy_alternative">policy
                                alternatives</termref> A and B are compatible: </p><ulist><item><p>if each assertion in A that is not an <termref def="ignorable_policy_assertion">ignorable policy
                                            assertion</termref> is compatible with an assertion in
                                        B, and</p></item><item><p>if each assertion in B that is not an <termref def="ignorable_policy_assertion">ignorable policy
                                            assertion</termref> is compatible with an assertion in
                                        A.</p></item></ulist><p>If two alternatives are compatible, their intersection is an alternative
                            containing all of the occurrences of all of the assertions from both
                            alternatives (i.e., the bag union of the two), regardless of whether 
                            or not they are marked with the <att>wsp:Ignorable='true'</att> attribute.</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><item><p>The result of policy intersection can be zero or more 
                        <termref def="policy_alternative">alternatives</termref>.  
                        Each <termref def="policy_alternative">alternative</termref> may contain more 
                        than one <termref def="policy_assertion">assertion</termref> of the same <termref def="policy_assertion_type">type</termref> 
                        which may come from different input 
                        <termref def="policy">policies</termref>.  See Section 
                        <specref ref="rPolicy_Alternative"/> for mechanisms for determining
                        the aggregate behavior indicated by multiple 
                        <termref def="policy_assertion">assertions</termref> of the same <termref def="policy_assertion_type">policy assertion type</termref>.  
                        If policy assertion authors did not specify the semantics of multiple
                        <termref def="policy_assertion">assertions</termref> of the same <termref def="policy_assertion_type">assertion type</termref> within a 
                            <termref def="policy_alternative">policy 
                        alternative</termref> and 
                        the <termref def="policy_assertion_type">type</termref> and its descendant <termref def="policy_assertion_type">assertion types</termref> (within a 
                        <termref def="nested_policy_expression">nested policy 
                            expression</termref> outline, if any) do not allow any 
                            <termref def="policy_assertion_parameter">parameters</termref>, then multiple 
                        <termref def="policy_assertion">assertions</termref> of the <termref def="policy_assertion_type">type</termref> within a 
                            <termref def="policy_alternative">policy 
                            alternative</termref> in 
                            the intersection 
                        result have the same meaning as a single 
                        <termref def="policy_assertion">assertion</termref> of the <termref def="policy_assertion_type">type</termref> within 
                        the <termref def="policy_alternative">policy alternative</termref>.</p></item></ulist><p>An entity applies all the behaviors implied by a policy alternative when that policy alternative is chosen from the intersection result (see <specref ref="Web_services"/>).  If an entity includes a policy assertion type A in its policy, and this policy assertion type A does not occur in an intersected result, then that entity SHOULD not apply the behavior implied by assertion type A.  If a policy assertion type Z is not included in the input policies being intersected then the intersection result is silent about the behavior implied by the assertion type Z.
</p><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://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702"
        xmlns:wsp="http://www.w3.org/ns/ws-policy" &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://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702"
        xmlns:wsp="http://www.w3.org/ns/ws-policy" &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 assertion
                    type 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://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702"
        xmlns:wsp="http://www.w3.org/ns/ws-policy" &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 two <termref def="policy_assertion">assertions</termref> 
                of the type <el>sp:SignedParts</el> and two 
                <termref def="policy_assertion">assertions</termref> of the 
                <termref def="policy_assertion_type">type</termref> <el>sp:EncryptedParts</el>, one 
                from each of the input <termref def="policy">Policies</termref>. In general, 
                whether two <termref def="policy_assertion">assertions</termref> of the 
                same <termref def="policy_assertion_type">type</termref> are 
                compatible or repetition is redundancy depends on the domain-specific 
                semantics of the <termref def="policy_assertion_type">assertion type</termref>. 
                As mentioned above, if the <termref def="policy_assertion">assertions</termref> 
                    have no <termref def="policy_assertion_parameter">parameters</termref> and the 
                    <termref def="policy_assertion">assertions</termref> 
                    in <termref def="nested_policy_expression">nested policiy expressions</termref>
                    have no <termref def="policy_assertion_parameter">parameters</termref>, then multiple
                 <termref def="policy_assertion">assertions</termref> of 
                 the <termref def="policy_assertion_type">type</termref> 
                 within a <termref def="policy_alternative">policy alternative</termref> 
                 in the intersection result have the same meaning 
                 as a single <termref def="policy_assertion">assertion</termref> 
                 of the <termref def="policy_assertion_type">type</termref> within
                  the <termref def="policy_alternative">policy alternative</termref>.</p><p>Based on the semantics of multiple 
                <termref def="policy_assertion">assertions</termref> of the 
                EncryptedParts <termref def="policy_assertion_type">assertion 
                type</termref>, as specified in the WS-SecurityPolicy 
                [<bibref ref="WS-SecurityPolicy"/>] specification, one of the 
                <el>sp:EncryptedParts</el> <termref def="policy_assertion">assertion</termref> 
                in the above example is redundant.</p><p>Whether the two <el>sp:SignedParts</el> 
                <termref def="policy_assertion">assertions</termref> are compatible 
                or one of them is redundant depends on the semantics defined for 
                this <termref def="policy_assertion_type">assertion type</termref>.</p><p>As another example of intersection of WS-Addressing assertions that utilize the framework intersection algorithm, consider two input policies:</p><eg xml:space="preserve" role="numberAddedAutomatically">(01) &lt;wsp:Policy
      xmlns:wsp="http://www.w3.org/ns/ws-policy"
      xmlns:wsam="http://www.w3.org/2007/05/addressing/metadata" &gt;
(02)   &lt;wsp:ExactlyOne&gt;
(03)     &lt;wsp:All&gt;        &lt;!-- Alternative A5 --&gt;
(04)       &lt;wsam:Addressing&gt;
(05)         &lt;wsp:Policy/&gt;
(06)       &lt;/wsam:Addressing&gt;
(07)     &lt;/wsp:All&gt;
(08)   &lt;/wsp:ExactlyOne&gt;
(09) &lt;/wsp:Policy&gt;</eg><p>Lines (04)-(06) in the above policy expression contain an addressing 
                    policy assertion with the empty <code>&lt;wsp:Policy/&gt;</code> in line (05). 
                    The empty <code>&lt;wsp:Policy/&gt;</code> is a nested policy expression with an 
                alternative that has zero assertions. In the example above, the addressing 
                assertion indicates the use of addressing without any restriction.</p><eg xml:space="preserve" role="numberAddedAutomatically">(01) &lt;wsp:Policy
      xmlns:wsp="http://www.w3.org/ns/ws-policy"
      xmlns:wsam="http://www.w3.org/2007/05/addressing/metadata" &gt;
(02)   &lt;wsp:ExactlyOne&gt;
(03)     &lt;wsp:All&gt;       &lt;!-- Alternative A6 --&gt;
(04)       &lt;wsam:Addressing&gt;
(05)         &lt;wsp:Policy&gt;
(06)           &lt;wsam:AnonymousResponses/&gt;
(07)         &lt;/wsp:Policy&gt;
(08)       &lt;/wsam:Addressing&gt;
(09)     &lt;/wsp:All&gt;
(10)   &lt;/wsp:ExactlyOne&gt;
(11) &lt;/wsp:Policy&gt;</eg><p>Lines (04)-(08) in the above policy expression contain an addressing 
                policy assertion with a nested policy expression in lines (05)-(06). 
                The nested policy expression indicates that the provider requires request 
                messages to use response endpoint EPRs that contain the anonymous URI. 
                The nested policy expression contains an alternative that has one 
                    assertion, <code>wsam:AnonymousResponses</code>.</p><p>The two assertions in alternatives A5 and A6 have the same assertion type 
                and have nested policy expressions. The nested policy expression within
                 the addressing assertion in the alternative A5 contains an alternative 
                 that has zero assertions. The nested policy expression within the
                  addressing assertion in the alternative A6 contains an alternative 
                  that has one assertion. The nested policy expressions within these 
                  two assertions are incompatible because the alternative in one is
                   incompatible with the alternative in the other.</p><p>Therefore, the two assertions are incompatible and hence the two alternatives are incompatible.</p></div2><div2 id="IRI_Policy_Expressions"><head>Use of IRIs in Policy Expressions</head><p>Policy expressions use IRIs for some identifiers. This document does not define a
                    base URI but relies on the mechanisms defined in XML Base [<bibref ref="XMLBASE"/>] and RFCs 3023 [<bibref ref="RFC3023"/>], 3986 [<bibref ref="RFC3986"/>] and
                    3987 [<bibref ref="RFC3987"/>] for establishing a base URI against which
                    relative IRIs can be made absolute.</p></div2></div1><div1 id="Security_Considerations"><head>Security Considerations</head><p>It is <rfc2119>RECOMMENDED</rfc2119> that <termref def="policy">policies</termref>
                and <termref def="policy_assertion">assertions</termref> be integrity protected to
                permit the detection of tampering. This can be done using a technology such as XML
                DSig [<bibref ref="XML-Signature"/>], SSL/TLS [<bibref ref="RFC2246"/>], or
                WS-Security 2004 [<bibref ref="WS-Security"/>].</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
                    <termref def="policy_scope">scope</termref> 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><p>This section describes the security considerations that service providers,
                requestors, policy authors, policy assertion authors, and policy implementers need
                to consider when exposing, consuming and designing <termref def="policy_expression">policy expressions</termref>, authoring policy assertions or implementing
                policy.</p><div2 id="information-disclosure-threats"><head>Information Disclosure Threats</head><p>A policy is used to represent the capabilities and requirements of a Web Service.
                    Policies may include sensitive information. Malicious consumers may acquire
                    sensitive information, fingerprint the service and infer service
                    vulnerabilities. These threats can be mitigated by requiring authentication for
                    sensitive information, by omitting sensitive information from the policy or by
                    securing access to the policy. For securing access to policy metadata, policy
                    providers can use mechanisms from other Web Services specifications such as
                    WS-Security [<bibref ref="WS-Security"/>] and WS-MetadataExchange [<bibref ref="WS-MetadataExchange"/>] .</p></div2><div2 id="spoofing-and-tampering-threats"><head>Spoofing and Tampering Threats</head><p>If a policy expression is unsigned it could be easily tampered with or replaced.
                    To prevent tampering or spoofing of policy, requestors should discard a policy
                    unless it is signed by the provider and presented with sufficient credentials.
                    Requestors should also check that the signer is actually authorized to express
                    policies for the given policy subject.</p></div2><div2 id="downgrade-threats"><head>Downgrade Threats</head><p>A policy may offer several alternatives that vary from weak to strong set of
                    requirements. An adversary may interfere and remove all the alternatives except
                    the weakest one (say no security requirements). Or, an adversary may interfere
                    and discard this policy and insert a weaker policy previously issued by the same
                    provider. Policy authors or providers can mitigate these threats by sun-setting
                    older or weaker policy alternatives. Requestors can mitigate these threats by
                    discarding policies unless they are signed by the provider.</p></div2><div2 id="repudiation-threats"><head>Repudiation Threats</head><p>Malicious providers may include policy assertions in its policy whose behavior
                    cannot be verified by examining the wire message from the provider to requestor.
                    In general, requestors have no guarantee that a provider will behave as
                    described in the provider’s policy expression. The provider may not and perform
                    a malicious activity. For example, say the policy assertion is privacy notice
                    information and the provider violates the semantics by disclosing private
                    information. Requestors can mitigate this threat by discarding policy
                    alternatives which include assertions whose behavior cannot be verified by
                    examining the wire message from the provider to requestor. Assertion authors can
                    mitigate this threat by not designing assertions whose behavior cannot be
                    verified using wire messages.</p></div2><div2 id="denial-of-service-threats"><head>Denial of Service Threats</head><p>Malicious providers may provide a policy expression with a large number of
                    alternatives, a large number of assertions in alternatives, deeply nested policy
                    expressions or chains of PolicyReference elements that expand exponentially (see
                    the chained sample below; this is similar to the well-known DTD entity expansion
                    attack). Policy implementers need to anticipate these rogue providers and use a
                    configurable bound with defaults on number of policy alternatives, number of
                    assertions in an alternative, depth of nested policy expressions, etc.</p><example id="ex-chained-policy-reference-elements"><head>Chained Policy Reference Elements</head><eg xml:space="preserve" role="numberAddedAutomatically">(01) &lt;wsp:Policy wsu:Id="p1"&gt;
(02)   &lt;wsp:PolicyReference URI="#p2"/ &gt;
(03)   &lt;wsp:PolicyReference URI="#p2"/&gt;
(04) &lt;/wsp:Policy&gt;
(05)                 
(06) &lt;wsp:Policy wsu:Id="p2" &gt;
(07)   &lt;wsp:PolicyReference URI="#p3"/&gt;
(08)   &lt;wsp:PolicyReference URI="#p3"/&gt;
(09) &lt;/wsp:Policy&gt;
(10)                 
(11) &lt;wsp:Policy wsu:Id="p3" &gt;
(12)   &lt;wsp:PolicyReference URI="#p4"/&gt;
(13)   &lt;wsp:PolicyReference URI="#p4"/&gt;
(14) &lt;/wsp:Policy&gt;
(15)                 
(16) &lt;!-- Policy/@wsu:Id p4 through p99 --&gt;
(17)                 
(18) &lt;wsp:Policy wsu:Id="p100" &gt;
(19)   &lt;wsp:PolicyReference URI="#p101"/&gt;
(20)   &lt;wsp:PolicyReference URI="#p101"/&gt;
(21) &lt;/wsp:Policy&gt;
(22)                 
(23) &lt;wsp:Policy wsu:Id="p101" &gt;
(24)   &lt;mtom:OptimizedMimeSerialization /&gt;
(25) &lt;/wsp:Policy&gt;</eg></example><p>Malicious providers may provide a policy expression that includes multiple
                    PolicyReference elements that use a large number of different internet
                    addresses. These may require the consumers to establish a large number of TCP
                    connections. Policy implementers need to anticipate such rogue providers and use
                    a configurable bound with defaults on number of PolicyReference elements per
                    policy expression.</p></div2><div2 id="general-xml-considerations"><head>General XML Considerations</head><p>Implementers of Web Services policy language should be careful to protect their
                    software against general XML threats like deeply nested XML or XML that contains
                    malicious content.</p></div2></div1><div1 id="Conformance"><head>Conformance</head><p>An element information item whose namespace name is "http://www.w3.org/ns/ws-policy" and whose local
                part is Policy or PolicyReference conforms to this specification if it is valid
                according to the XML Schema [<bibref ref="XMLSchemaPart1"/>] for that element as
                defined by this specification (<loc xmlns:xlink="http://www.w3.org/1999/xlink" href="http://www.w3.org/2007/02/ws-policy.xsd" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">http://www.w3.org/2007/02/ws-policy.xsd</loc>) and
                additionally adheres to all the constraints contained in this specification. Such a
                conformant element information item constitutes a <termref def="policy_expression">policy expression</termref>. </p></div1></body><back><div1 id="media-type"><head>The application/wspolicy+xml Media Type</head><p>This appendix defines the <attval>application/wspolicy+xml</attval> media type which
                can be used to describe Web Services Policy documents serialized as XML. Either
                    <att>wsp:Policy</att> or <att>wsp:PolicyAttachment</att> could be the root
                element of such a document.</p><div2 id="ietf-reg"><head>Registration</head><glist><gitem><label>MIME media type name:</label><def><p>application</p></def></gitem><gitem><label>MIME subtype name:</label><def><p>wspolicy+xml</p></def></gitem><gitem><label>Required parameters:</label><def><p>none</p></def></gitem><gitem><label>Optional parameters:</label><def><glist><gitem><label>charset</label><def><p>This parameter has identical semantics to the charset
                                            parameter of the <attval>application/xml</attval> media
                                            type as specified in <bibref ref="RFC3023"/>.</p></def></gitem></glist></def></gitem><gitem><label>Encoding considerations:</label><def><p>Identical to those of <attval>application/xml</attval> as described
                                in <bibref ref="RFC3023"/>, section 3.2, as applied to the Web
                                Services Policy document Infoset.</p></def></gitem><gitem><label>Security considerations:</label><def><p>See section <specref ref="Security_Considerations"/> in this
                                document, and the Security Consideration section in <bibref ref="WS-PolicyAttachment"/>.</p></def></gitem><gitem><label>Interoperability considerations:</label><def><p>There are no known interoperability issues.</p></def></gitem><gitem><label>Published specifications:</label><def><p>This document and <bibref ref="WS-PolicyAttachment"/>.</p></def></gitem><gitem><label>Applications which use this media type:</label><def><p>This new media type is being registered to allow for deployment of
                                Web Services Policy and references to Web Services Policy on the
                                World Wide Web.</p></def></gitem><gitem><label>Additional information:</label><def><glist><gitem><label>File extension:</label><def><p>wspolicy</p></def></gitem><gitem><label>Fragment identifiers:</label><def><p>A syntax identical to that of
                                            <attval>application/xml</attval> as described in <bibref ref="RFC3023"/>.</p></def></gitem><gitem><label>Base URI:</label><def><p>As specified in <bibref ref="RFC3023"/>, section 6. Also
                                            see section <specref ref="IRI_Policy_Expressions"/> in
                                            this document and <xspecref xmlns:xlink="http://www.w3.org/1999/xlink" href="http://www.w3.org/TR/2007/REC-ws-policy-attach-20070904#IRI_Policy_Attachment" xlink:type="simple" xlink:show="new" xlink:actuate="onRequest">section 3.5 Use of IRIs in Policy
                                            Attachment</xspecref> in <bibref ref="WS-PolicyAttachment"/>.</p></def></gitem><gitem><label>Macintosh File Type code:</label><def><p>TEXT</p></def></gitem><gitem><label>Person and email address to contact for further
                                        information:</label><def><p>World Wide Web Consortium
                                            &lt;web-human@w3.org&gt;</p></def></gitem><gitem><label>Intended usage:</label><def><p>COMMON</p></def></gitem><gitem><label>Author/Change controller:</label><def><p>The Web Services Policy 1.5 specification set is a work
                                            product of the World Wide Web Consortium's <loc xmlns:xlink="http://www.w3.org/1999/xlink" href="http://www.w3.org/2002/ws/desc/" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">Web Service
                                                Policy Working Group</loc>. The W3C has change
                                            control over these specifications.</p></def></gitem></glist></def></gitem></glist></div2></div1><div1 id="References"><head>References</head><div2 id="Normative-References"><head>Normative References</head><blist><bibl xmlns:xlink="http://www.w3.org/1999/xlink" id="WS-PolicyAttachment" key="Web Services Policy Attachment" href="http://www.w3.org/TR/2007/REC-ws-policy-attach-20070904" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">
                        <titleref xlink:type="simple" xlink:show="new" xlink:actuate="onRequest">Web Services Policy 1.5 - Attachment</titleref>, A. S. Vedamuthu, D. Orchard, F.
                        Hirsch, M. Hondo, P. Yendluri, T. Boubez and Ü. Yalçinalp, Editors. World
                        Wide Web Consortium, 04, September 2007.
                        This version of the specification of the Web Services Policy 1.5 - Attachment
                        specification is http://www.w3.org/TR/2007/REC-ws-policy-attach-20070904. The <loc href="http://www.w3.org/TR/ws-policy-attach" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">latest version of
                            Web Services Policy 1.5 - Attachment</loc> is available at
                        http://www.w3.org/TR/ws-policy-attach. </bibl><bibl xmlns:xlink="http://www.w3.org/1999/xlink" key="IETF RFC 2119" href="http://www.ietf.org/rfc/rfc2119.txt" id="RFC2119" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">
                        <titleref xlink:type="simple" xlink:show="new" xlink:actuate="onRequest">Key words for use in RFCs to Indicate Requirement
                            Levels</titleref>, S. Bradner, Author. Internet Engineering Task Force, March 1997.
                         Available at http://www.ietf.org/rfc/rfc2119.txt. </bibl><bibl xmlns:xlink="http://www.w3.org/1999/xlink" key="IETF RFC 3986" href="http://www.ietf.org/rfc/rfc3986.txt" id="RFC3986" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">
                        <titleref xlink:type="simple" xlink:show="new" xlink:actuate="onRequest">Uniform Resource Identifier (URI): Generic Syntax </titleref>, T.
                        Berners-Lee, R. Fielding and L. Masinter, Authors. Network Working Group,
                        January 2005. Available at http://www.ietf.org/rfc/rfc3986.txt. </bibl><bibl xmlns:xlink="http://www.w3.org/1999/xlink" key="IETF RFC 3987" href="http://www.ietf.org/rfc/rfc3987.txt" id="RFC3987" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">
                        <titleref xlink:type="simple" xlink:show="new" xlink:actuate="onRequest">Internationalized Resource Identifiers (IRIs) </titleref>, M.
                        Duerst and M. Suignard, Authors. Internet Engineering Task Force, January
                        2005. Available at http://www.ietf.org/rfc/rfc3987.txt. </bibl><bibl xmlns:xlink="http://www.w3.org/1999/xlink" 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" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">
                        <titleref xlink:type="simple" xlink:show="new" xlink:actuate="onRequest">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 xmlns:xlink="http://www.w3.org/1999/xlink" id="XMLBASE" key="XML BASE" href="http://www.w3.org/TR/2001/REC-xmlbase-20010627/" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">
                        <titleref xlink:type="simple" xlink:show="new" xlink:actuate="onRequest">XML Base</titleref>, Jonathan Marsh, Editor. World Wide Web
                        Consortium, 27 June 2001. This version of the XML Base Recommendation is
                        http://www.w3.org/TR/2001/REC-xmlbase-20010627/. The <loc href="http://www.w3.org/TR/xmlbase/" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">latest version of XML Base</loc> is
                        available at http://www.w3.org/TR/xmlbase/. </bibl><bibl xmlns:xlink="http://www.w3.org/1999/xlink" id="XML10" key="XML 1.0" href="http://www.w3.org/TR/2006/REC-xml-20060816" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">
                        <titleref xlink:type="simple" xlink:show="new" xlink:actuate="onRequest">Extensible Markup Language (XML) 1.0 (Fourth Edition)</titleref>,
                        T. Bray, J. Paoli, C. M. Sperberg-McQueen, and E. Maler, Editors. World Wide
                        Web Consortium, 10 February 1998, revised 16 August 2006. This version of
                        the XML 1.0 Recommendation is http://www.w3.org/TR/2006/REC-xml-20060816.
                        The <loc href="http://www.w3.org/TR/REC-xml/" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">latest version of XML
                        1.0</loc> is available at http://www.w3.org/TR/REC-xml. </bibl><bibl xmlns:xlink="http://www.w3.org/1999/xlink" id="XMLID" key="XML ID" href="http://www.w3.org/TR/2005/REC-xml-id-20050909/" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">
                        <titleref xlink:type="simple" xlink:show="new" xlink:actuate="onRequest">xml:id Version 1.0</titleref>, J. Marsh, D. Veillard and N. Walsh,
                        Editors. World Wide Web Consortium, 9 September 2005. This version of the
                        xml:id Version 1.0 Recommendation is
                        http://www.w3.org/TR/2005/REC-xml-id-20050909/. The <loc href="http://www.w3.org/TR/xml-id/" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">latest version of xml:id Version
                        1.0</loc> is available at http://www.w3.org/TR/xml-id/. </bibl><bibl xmlns:xlink="http://www.w3.org/1999/xlink" id="XMLInfoset" key="XML Information Set" href="http://www.w3.org/TR/2004/REC-xml-infoset-20040204/" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">
                        <titleref xlink:type="simple" xlink:show="new" xlink:actuate="onRequest">XML Information Set (Second Edition)</titleref>, J. Cowan and R.
                        Tobin, Editors. World Wide Web Consortium, 24 October 2001, revised 4
                        February 2004. 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/" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">latest version of XML
                            Information Set</loc> is available at http://www.w3.org/TR/xml-infoset. </bibl><bibl xmlns:xlink="http://www.w3.org/1999/xlink" id="XML-NS" key="XML Namespaces" href="http://www.w3.org/TR/2006/REC-xml-names-20060816/" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">
                        <titleref xlink:type="simple" xlink:show="new" xlink:actuate="onRequest">Namespaces in XML 1.0</titleref>, T. Bray, D. Hollander, A.
                        Layman, and R. Tobin, Editors. World Wide Web Consortium, 14 January 1999,
                        revised 16 August 2006. This version of the Namespaces in XML
                        Recommendation is http://www.w3.org/TR/2006/REC-xml-names-20060816/. The
                            <loc href="http://www.w3.org/TR/REC-xml-names/" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">latest version of
                            Namespaces in XML</loc> is available at
                        http://www.w3.org/TR/REC-xml-names. </bibl><bibl xmlns:xlink="http://www.w3.org/1999/xlink" id="XMLSchemaPart1" key="XML Schema Structures" href="http://www.w3.org/TR/2004/REC-xmlschema-1-20041028/" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">
                        <titleref xlink:type="simple" xlink:show="new" xlink:actuate="onRequest">XML Schema Part 1: Structures Second Edition</titleref>, H.
                        Thompson, D. Beech, M. Maloney, and N. Mendelsohn, Editors. World Wide Web
                        Consortium, 2 May 2001, revised 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/" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">latest version of XML Schema
                            Part 1</loc> is available at http://www.w3.org/TR/xmlschema-1. </bibl><bibl xmlns:xlink="http://www.w3.org/1999/xlink" key="XML Schema Datatypes" id="XMLSchemaPart2" href="http://www.w3.org/TR/2004/REC-xmlschema-2-20041028/" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">
                        <titleref xlink:type="simple" xlink:show="new" xlink:actuate="onRequest">XML Schema Part 2: Datatypes Second Edition</titleref>, P. Byron
                        and A. Malhotra, Editors. World Wide Web Consortium, 2 May 2001, revised 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/" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">latest version of XML Schema
                            Part 2</loc> is available at http://www.w3.org/TR/xmlschema-2. </bibl><bibl xmlns:xlink="http://www.w3.org/1999/xlink" key="IETF RFC 3023" href="http://www.ietf.org/rfc/rfc3023.txt" id="RFC3023" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">IETF "RFC 3023: XML Media Types", M. Murata, S. St. Laurent, D.
                        Kohn, July 1998.</bibl></blist></div2><div2 id="Informative-References"><head>Other References</head><blist><bibl xmlns:xlink="http://www.w3.org/1999/xlink" id="C14NNOTE" key="C14N 1.0 Note" href="http://www.w3.org/TR/2006/NOTE-C14N-issues-20061220/" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">
                        <titleref xlink:type="simple" xlink:show="new" xlink:actuate="onRequest">Known Issues with Canonical XML 1.0 (C14N/1.0)</titleref>, J.
                        Kahan and K. Lanz, Editors. World Wide Web Consortium, 20 December 2006.
                        Available at http://www.w3.org/TR/2006/NOTE-C14N-issues-20061220/. </bibl><bibl xmlns:xlink="http://www.w3.org/1999/xlink" key="IETF RFC 2246" href="http://www.ietf.org/rfc/rfc2246.txt" id="RFC2246" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">IETF "RFC 2246: The TLS Protocol", T. Dierks, C. Allen, January
                        1999.</bibl><bibl xmlns:xlink="http://www.w3.org/1999/xlink" id="SOAP11" key="SOAP 1.1" href="http://www.w3.org/TR/2000/NOTE-SOAP-20000508/" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">
                        <titleref xlink:type="simple" xlink:show="new" xlink:actuate="onRequest">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 xmlns:xlink="http://www.w3.org/1999/xlink" id="SOAP12" key="SOAP 1.2 Messaging Framework" href="http://www.w3.org/TR/2007/REC-soap12-part1-20070427/" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">
                        <titleref xlink:type="simple" xlink:show="new" xlink:actuate="onRequest">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, revised 27 April 2007. This version of the SOAP Version
                        1.2 Part 1: Messaging Framework Recommendation is
                        http://www.w3.org/TR/2007/REC-soap12-part1-20070427/. The <loc href="http://www.w3.org/TR/soap12-part1/" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">latest version of SOAP Version
                            1.2 Part 1: Messaging Framework</loc> is available at
                        http://www.w3.org/TR/soap12-part1/. </bibl><bibl xmlns:xlink="http://www.w3.org/1999/xlink" key="SecSpecMaintWG" href="http://www.w3.org/2007/xmlsec" id="SecSpecMaintWG" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">
                        <titleref xlink:type="simple" xlink:show="new" xlink:actuate="onRequest">XML Security Specifications Maintenance Working Group </titleref>,
                        See http://www.w3.org/2007/xmlsec.</bibl><bibl xmlns:xlink="http://www.w3.org/1999/xlink" id="UDDIAPI20" key="UDDI API 2.0" href="http://uddi.org/pubs/ProgrammersAPI-V2.04-Published-20020719.htm" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">
                        <titleref xlink:type="simple" xlink:show="new" xlink:actuate="onRequest">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" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">latest version of the
                            UDDI 2.0 API</loc> is available at
                        http://uddi.org/pubs/ProgrammersAPI_v2.htm. </bibl><bibl xmlns:xlink="http://www.w3.org/1999/xlink" id="UDDIDataStructure20" key="UDDI Data Structure 2.0" href="http://uddi.org/pubs/DataStructure-V2.03-Published-20020719.htm" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">
                        <titleref xlink:type="simple" xlink:show="new" xlink:actuate="onRequest">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" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">latest version of the
                            UDDI 2.0 Data Structures</loc> is available at
                        http://uddi.org/pubs/DataStructure_v2.htm. </bibl><bibl xmlns:xlink="http://www.w3.org/1999/xlink" id="UDDI30" key="UDDI 3.0" href="http://www.oasis-open.org/committees/uddi-spec/doc/spec/v3/uddi-v3.0.2-20041019.htm" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">
                        <titleref xlink:type="simple" xlink:show="new" xlink:actuate="onRequest">UDDI Version 3.0.2</titleref>, L. Clément, et al,
                        Editors. Organization for the Advancement of Structured Information
                        Standards, 19 October 2004. This version of the UDDI Version 3.0 is
                        http://www.oasis-open.org/committees/uddi-spec/doc/spec/v3/uddi-v3.0.2-20041019.htm. The <loc href="http://uddi.org/pubs/uddi_v3.htm" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">latest version of the UDDI
                        3.0</loc> specification is available at http://uddi.org/pubs/uddi_v3.htm. </bibl><bibl xmlns:xlink="http://www.w3.org/1999/xlink" key="WS-Addressing Metadata" id="WS-AddressingMetadata" href="http://www.w3.org/TR/2007/REC-ws-addr-metadata-20070904/" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">
                        <titleref xlink:type="simple" xlink:show="new" xlink:actuate="onRequest">Web Services Addressing 1.0 - Metadata</titleref>, M. Gudgin, M. Hadley, T.
                        Rogers and Ü. Yalçinalp, Editors. World Wide Web Consortium, 4 September 2007. This version of
                        the Web Services Addressing 1.0 - Metadata is
                        http://www.w3.org/TR/2007/REC-ws-addr-metadata-20070904/. The <loc href="http://www.w3.org/TR/ws-addr-metadata" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">latest version of Web Services Addressing 1.0 -
                            Metadata</loc> is available at http://www.w3.org/TR/ws-addr-metadata. </bibl><bibl xmlns:xlink="http://www.w3.org/1999/xlink" id="WS-SecurityPolicy" key="WS-SecurityPolicy" href="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702/ws-securitypolicy-1.2-spec-os.pdf" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">
                        <titleref xlink:type="simple" xlink:show="new" xlink:actuate="onRequest">WS-SecurityPolicy v1.2</titleref>, A. Nadalin, M. Goodner, M. Gudgin, A.
                        Barbir, and H. Granqvist, Editors. Organization for the Advancement of
                        Structured Information Standards, 1 July 2007. Available at
                        http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702/ws-securitypolicy-1.2-spec-os.pdf. 
                        Namespace document available at 
                        http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702. </bibl><bibl xmlns:xlink="http://www.w3.org/1999/xlink" id="WSDL11" key="WSDL 1.1" href="http://www.w3.org/TR/2001/NOTE-wsdl-20010315" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">
                        <titleref xlink:type="simple" xlink:show="new" xlink:actuate="onRequest">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 xmlns:xlink="http://www.w3.org/1999/xlink" key="WSDL 2.0 Core Language" id="WSDL20" href="http://www.w3.org/TR/2007/REC-wsdl20-20070626/" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">
                        <titleref xlink:type="simple" xlink:show="new" xlink:actuate="onRequest">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, 26 June 2007. This version
                        of the WSDL 2.0 specification is
                        http://www.w3.org/TR/2007/REC-wsdl20-20070626/. The <loc href="http://www.w3.org/TR/wsdl20/" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">latest version of WSDL 2.0</loc> is
                        available at http://www.w3.org/TR/wsdl20/. </bibl><bibl xmlns:xlink="http://www.w3.org/1999/xlink" id="WS-MetadataExchange" key="WS-MetadataExchange" href="http://schemas.xmlsoap.org/ws/2004/09/mex/" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">
                        <titleref xlink:type="simple" xlink:show="new" xlink:actuate="onRequest">Web Services Metadata Exchange (WS-MetadataExchange)</titleref>,
                        K. Ballinger, et al, Authors. BEA Systems Inc., Computer Associates
                        International, Inc., International Business Machines Corporation, Microsoft
                        Corporation, Inc., SAP AG, Sun Microsystems, and webMethods, August 2006.
                        Available at http://schemas.xmlsoap.org/ws/2004/09/mex/. </bibl><bibl xmlns:xlink="http://www.w3.org/1999/xlink" id="XML-Signature" key="XML-Signature" href="http://www.w3.org/TR/2002/REC-xmldsig-core-20020212/" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">
                        <titleref xlink:type="simple" xlink:show="new" xlink:actuate="onRequest">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/" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">latest version of
                            XML-Signature Syntax and Processing</loc> is available at
                        http://www.w3.org/TR/xmldsig-core/. </bibl><bibl xmlns:xlink="http://www.w3.org/1999/xlink" id="C14N11" key="C14N11" href="http://www.w3.org/TR/xml-c14n11/" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">
                        <titleref xlink:type="simple" xlink:show="new" xlink:actuate="onRequest">Canonical XML 1.1</titleref>,
                        J. Boyer and G. Marcy Authors. 
                        W3C Candidate Recommendation, 21 June 2007. This is a work in progress.
                        This version is available at
                        http://www.w3.org/TR/2007/CR-xml-c14n11-20070621. 
                        The <loc href="http://www.w3.org/TR/xml-c14n11/" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">latest version of
                            Canonical XML 1.1</loc> is available at
                        http://www.w3.org/TR//xml-c14n11/.
                        </bibl></blist></div2></div1><inform-div1 id="acknowledgments"><head>Acknowledgements</head><p>This document is the work of the <loc xmlns:xlink="http://www.w3.org/1999/xlink" href="http://www.w3.org/2002/ws/policy/" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">W3C Web Services Policy
  Working Group</loc>.</p><p>
    Members of the Working Group are (at the time of writing, and by
    alphabetical order):
      Dimitar Angelov (SAP AG), Abbie Barbir (Nortel Networks), Charlton Barreto (Adobe Systems Inc.), Sergey Beryozkin (IONA Technologies, Inc.), Vladislav Bezrukov (SAP AG), Toufic Boubez (Layer 7 Technologies), Symon Chang (BEA Systems, Inc.), Paul Cotton (Microsoft Corporation), Glen Daniels (Progress Software), Doug Davis (IBM Corporation), Jacques Durand (Fujitsu Limited), Ruchith Fernando (WSO2), Christopher Ferris (IBM Corporation), William Henry (IONA Technologies, Inc.), Frederick Hirsch (Nokia), Maryann Hondo (IBM Corporation), Ondrej Hrebicek (Microsoft Corporation), Steve Jones (Layer 7 Technologies), Tom Jordahl (Adobe Systems Inc.), Paul Knight (Nortel Networks), Philippe Le Hégaret (W3C/MIT), Mark Little (JBoss Inc.), Mohammad Makarechian (Microsoft Corporation), Ashok Malhotra (Oracle Corporation), Jonathan Marsh (WSO2), Monica Martin (Sun Microsystems, Inc.), Arnaud Meyniel (Axway Software), Jeff Mischkinsky (Oracle Corporation), Dale Moberg (Axway Software), Anthony Nadalin (IBM Corporation), David Orchard (BEA Systems, Inc.), Sanjay Patil (SAP AG), Manjula Peiris (WSO2), Fabian Ritzmann (Sun Microsystems, Inc.), Daniel Roth (Microsoft Corporation), Tom Rutt (Fujitsu Limited), Sanka Samaranayake (WSO2), Felix Sasaki (W3C/Keio), Yakov Sverdlov (CA), Asir Vedamuthu (Microsoft Corporation), Sanjiva Weerawarana (WSO2), Ümit Yalçinalp (SAP AG), Prasad Yendluri (webMethods (A subsidiary of Software AG)).
  </p><p>
    Previous members of the Working Group were:
      Jeffrey Crump, Jong Lee, Bob Natale, Eugene Osovetsky, Bijan Parsia, Skip Snow, Seumas Soltysik, Mark Temple-Raston.
  </p><p>
    The people who have contributed to <loc xmlns:xlink="http://www.w3.org/1999/xlink" href="http://lists.w3.org/Archives/Public/public-ws-policy/" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">discussions
    on public-ws-policy@w3.org</loc> are also gratefully
    acknowledged.
  </p></inform-div1></back></spec>
