- From: Asir Vedamuthu via cvs-syncmail <cvsmail@w3.org>
- Date: Wed, 24 Jan 2007 02:41:26 +0000
- To: public-ws-policy-eds@w3.org
Update of /sources/public/2006/ws/policy In directory hutz:/tmp/cvs-serv22649 Modified Files: ws-policy-framework.xml ws-policy-framework.html Log Message: Implemented the resolution for issues 4196 and 4238. Editors' action 142. Index: ws-policy-framework.xml =================================================================== RCS file: /sources/public/2006/ws/policy/ws-policy-framework.xml,v retrieving revision 1.110 retrieving revision 1.111 diff -u -d -r1.110 -r1.111 --- ws-policy-framework.xml 23 Jan 2007 02:17:30 -0000 1.110 +++ ws-policy-framework.xml 24 Jan 2007 02:41:23 -0000 1.111 @@ -210,7 +210,8 @@ <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. </p> + 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 @@ -531,11 +532,21 @@ 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 of a policy expression is the most straightforward - Infoset representation; equivalent, alternative Infosets allow compactly - expressing a policy through a number of constructs.</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> @@ -690,51 +701,18 @@ XML Infoset, this specification defines three constructs: an attribute to decorate an <termref def='policy_assertion'>assertion</termref>, semantics for recursively nested policy operators, and a policy -reference/inclusion mechanism. Each is described in the subsections -below.</p> + 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> + + -<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>"&nsuri;"</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>"&nsuri;"</code> and the <emph role="infoset-property">local -name</emph> property of C is <code>"Policy"</code>, -<code>"ExactlyOne"</code>, or <code>"All"</code>, C is an expression -of a policy operator; normalize C by recursively applying this -procedure.</p></item> -<item><p>Otherwise the Element Information Item C is an assertion; -normalize C per Sections <specref ref='Optional_Policy_Assertions'/> -and <specref ref='Policy_Assertion_Nesting'/>.</p></item> -</olist> -</item> -<item><p>Apply the policy operator indicated by 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 id="Optional_Policy_Assertions"> <head>Optional Policy Assertions</head> <p>To indicate that a <termref def='policy_assertion'>policy @@ -938,7 +916,7 @@ <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>) + 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 @@ -947,6 +925,107 @@ <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="needs-numbering"><wsp:Policy … > + ( <wsp:Policy …>…</wsp:Policy> | + <wsp:ExactlyOne>…</wsp:ExactlyOne> | + <wsp:All>…</wsp:All> | + <wsp:PolicyReference … >…</wsp:PolicyReference> | + … + )* +</wsp:Policy></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="needs-numbering"><wsp:ExactlyOne> + ( <wsp:Policy … >…</wsp:Policy> | + <wsp:ExactlyOne>…</wsp:ExactlyOne> | + <wsp:All>…</wsp:All> | + <wsp:PolicyReference … >…</wsp:PolicyReference> | + … + )* +</wsp:ExactlyOne></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="needs-numbering"><wsp:All> + ( <wsp:Policy … >…</wsp:Policy> | + <wsp:ExactlyOne>…</wsp:ExactlyOne> | + <wsp:All>…</wsp:All> | + <wsp:PolicyReference … >…</wsp:PolicyReference> | + … + )* +</wsp:All></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:Policy element</el> allows attribute extensibility to + accommodate the use of attributes specified in Section <specref ref="Policy_Identification"/>. + Otherwise, policy operators (<el>wsp:Policy</el> , <el>wsp:All</el> and + <el>wsp:ExactlyOne</el> elements) do not allow attribute extensibility + because such attributes are not 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> @@ -1258,6 +1337,51 @@ (05) </wsp:Policy></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>"&nsuri;"</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>"&nsuri;"</code> and the <emph role="infoset-property">local + name</emph> property of C is <code>"Policy"</code>, + <code>"ExactlyOne"</code>, or <code>"All"</code>, C is an expression + of a policy operator; normalize C by recursively applying this + procedure.</p></item> + <item><p>Otherwise the Element Information Item C is an assertion; + normalize C per Sections <specref ref='Optional_Policy_Assertions'/> + and <specref ref='Policy_Assertion_Nesting'/>.</p></item> + </olist> + </item> + <item><p>Apply the policy operator indicated by 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> @@ -2492,7 +2616,17 @@ for issue <loc href="http://www.w3.org/Bugs/Public/show_bug.cgi?id=4235">4235</loc>. Editors' action <loc href="http://www.w3.org/2005/06/tracker/wspolicyeds/actions/147">147</loc>. </td> - </tr> + </tr> + <tr> + <td>20070123</td> + <td>ASV</td> + <td>Implemented the + <loc href="http://lists.w3.org/Archives/Public/public-ws-policy/2007Jan/0186.html">resolution</loc> + for issues <loc href="http://www.w3.org/Bugs/Public/show_bug.cgi?id=4196">4196</loc> + and <loc href="http://www.w3.org/Bugs/Public/show_bug.cgi?id=4238">4238</loc>. + Editors' action <loc href="http://www.w3.org/2005/06/tracker/wspolicyeds/actions/142">142</loc>. + </td> + </tr> </tbody> </table> </inform-div1> Index: ws-policy-framework.html =================================================================== RCS file: /sources/public/2006/ws/policy/ws-policy-framework.html,v retrieving revision 1.90 retrieving revision 1.91 diff -u -d -r1.90 -r1.91 --- ws-policy-framework.html 23 Jan 2007 02:17:30 -0000 1.90 +++ ws-policy-framework.html 24 Jan 2007 02:41:23 -0000 1.91 @@ -62,7 +62,7 @@ requirements and capabilities.</p></div><div> <h2><a name="status">Status of this Document</a></h2><p><strong>This document is an editors' copy that has no official standing.</strong></p><p></p></div><hr><div class="toc"> -<h2><a name="contents">Table of Contents</a></h2><p class="toc">1. <a href="#tocRange">Introduction</a><br> 1.1 <a href="#Example">Example</a><br>2. <a href="#Notation_Terminlogy">Notations and Terminology</a><br> 2.1 <a href="#Notational_Conventions">Notational Conventions</a><br> 2.2 <a href="#Extensibility">Extensibility</a><br> 2.3 <a href="#XML_Namespaces">XML Namespaces</a><br> 2.4 <a href="#Terminology">Terminology</a><br>3. <a href="#Policy_Model">Policy Model</a><br> 3.1 <a href="#rPolicy_Assertion">Policy Assertion</a><br> 3.2 <a href="#rPolicy_Alternative">Policy Alternative</a><br> 3.3 <a href="#rPolicy">Policy</a><br> 3.4 <a href="#Web_services">Policies of Entities in a Web Services Based System</a><br>4. <a href="#rPolicy_Expression">Policy Expression</a><br> 4.1 <ahref="#Normal_Form_Policy_Expression">Normal Form Policy Expression</a><br> 4.2 <a href="#Policy_Identification">Policy Identification</a><br> 4.3 <a href="#Compact_Policy_Expression">Compact Policy Expression</a><br> 4.3.1 <a href="#Optional_Policy_Assertions">Optional Policy Assertions</a><br> 4.3.2 <a href="#Policy_Assertion_Nesting">Policy Assertion Nesting</a><br> 4.3.3 <a href="#Policy_Operators">Policy Operators</a><br> 4.3.4 <a href="#Policy_References">Policy References</a><br> 4.3.5 <a href="#Policy_Inclusion">Policy Inclusion</a><br> 4.4 <a href="#ignorable-policy-assertions">Ignorable Policy Assertions</a><br> 4.5 <a href="#Policy_Intersection">Policy Intersection</a><br>&nbp; 4.6 <a href="#IRI_Policy_Expressions">Use of IRIs in Policy Expressions</a><br>5. <a href="#Security_Considerations">Security Considerations</a><br> 5.1 <a href="#information-disclosure-threats">Information Disclosure Threats</a><br> 5.2 <a href="#spoofing-and-tampering-threats">Spoofing and Tampering Threats</a><br> 5.3 <a href="#downgrade-threats">Downgrade Threats</a><br> 5.4 <a href="#repudiation-threats">Repudiation Threats</a><br> 5.5 <a href="#denial-of-service-threats">Denial of Service Threats</a><br> 5.6 <a href="#general-xml-considerations">General XML Considerations</a><br>6. <a href="#Conformance">Conformance</a><br></p> +<h2><a name="contents">Table of Contents</a></h2><p class="toc">1. <a href="#tocRange">Introduction</a><br> 1.1 <a href="#Example">Example</a><br>2. <a href="#Notation_Terminlogy">Notations and Terminology</a><br> 2.1 <a href="#Notational_Conventions">Notational Conventions</a><br> 2.2 <a href="#Extensibility">Extensibility</a><br> 2.3 <a href="#XML_Namespaces">XML Namespaces</a><br> 2.4 <a href="#Terminology">Terminology</a><br>3. <a href="#Policy_Model">Policy Model</a><br> 3.1 <a href="#rPolicy_Assertion">Policy Assertion</a><br> 3.2 <a href="#rPolicy_Alternative">Policy Alternative</a><br> 3.3 <a href="#rPolicy">Policy</a><br> 3.4 <a href="#Web_services">Policies of Entities in a Web Services Based System</a><br>4. <a href="#rPolicy_Expression">Policy Expression</a><br> 4.1 <ahref="#Normal_Form_Policy_Expression">Normal Form Policy Expression</a><br> 4.2 <a href="#Policy_Identification">Policy Identification</a><br> 4.3 <a href="#Compact_Policy_Expression">Compact Policy Expression</a><br> 4.3.1 <a href="#Optional_Policy_Assertions">Optional Policy Assertions</a><br> 4.3.2 <a href="#Policy_Assertion_Nesting">Policy Assertion Nesting</a><br> 4.3.3 <a href="#Policy_Operators">Policy Operators</a><br> 4.3.4 <a href="#Policy_References">Policy References</a><br> 4.3.5 <a href="#Policy_Inclusion">Policy Inclusion</a><br> 4.3.6 <a href="#normalization">Normalization</a><br> 4.4 <a href="#ignorable-policy-assertions">Ignorable Policy Assertins</a><br> 4.5 <a href="#Policy_Intersection">Policy Intersection</a><br> 4.6 <a href="#IRI_Policy_Expressions">Use of IRIs in Policy Expressions</a><br>5. <a href="#Security_Considerations">Security Considerations</a><br> 5.1 <a href="#information-disclosure-threats">Information Disclosure Threats</a><br> 5.2 <a href="#spoofing-and-tampering-threats">Spoofing and Tampering Threats</a><br> 5.3 <a href="#downgrade-threats">Downgrade Threats</a><br> 5.4 <a href="#repudiation-threats">Repudiation Threats</a><br> 5.5 <a href="#denial-of-service-threats">Denial of Service Threats</a><br> 5.6 <a href="#general-xml-considerations">General XML Considerations</a><br>6. <a href="#Conformance">Conformance</a><br></p> <h3><a name="appendix" id="appendix">Appendices</a></h3><p class="toc">A. <a href="#media-type">The application/wspolicy+xml Media Type</a><br> A.1 <a href="#ietf-reg">Registration</a><br>B. <a href="#References">References</a><br> B.1 <a href="#Normative-References">Normative References</a><br> B.2 <a href="#Informative-References">Other References</a><br>C. <a href="#acknowledgments">Acknowledgements</a> (Non-Normative)<br>D. <a href="#change-description">Changes in this Version of the Document</a> (Non-Normative)<br>E. <a href="#change-log">Web Services Policy 1.5 - Framework Change Log</a> (Non-Normative)<br></p></div><hr><div class="body"><div class="div1"> <h2><a name="tocRange"></a>1. Introduction</h2><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 @@ -133,7 +133,8 @@ Element or Attribute Information Items.</p></li></ul><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><ul><li><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. </p></li><li><p>An attribute extensibility point is referred to using @{any} in place of the attribute name. This + indicates that any element name can be used, from any namespace, + unless specified otherwise such as in Section <a href="#Policy_Operators"><b>4.3.3 Policy Operators</b></a>. </p></li><li><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></li></ul><p> Normative text within this specification takes precedence over normative outlines, which in turn take precedence @@ -358,9 +359,17 @@ using the XML Infoset representation of a policy. [<a name="policy_expression" title="policy expression">Definition</a>: A <b>policy expression</b> is an XML Infoset representation of a <a title="policy" href="#policy">policy</a>, either in a normal form or in an equivalent compact form.] - </p><p> The normal form of a policy expression is the most straightforward - Infoset representation; equivalent, alternative Infosets allow compactly - expressing a policy through a number of constructs.</p><div class="div2"> + </p><p>The normal form (see Section <a href="#Normal_Form_Policy_Expression"><b>4.1 Normal Form Policy Expression</b></a>) 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 <a href="#Compact_Policy_Expression"><b>4.3 Compact Policy Expression</b></a>). + Policy authors might be more + interested in the compact form (see Section + <a href="#Compact_Policy_Expression"><b>4.3 Compact Policy Expression</b></a>), 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 + <a href="#Normal_Form_Policy_Expression"><b>4.1 Normal Form Policy Expression</b></a>.</p><div class="div2"> <h3><a name="Normal_Form_Policy_Expression"></a>4.1 Normal Form Policy Expression</h3><p>To facilitate interoperability, this specification defines a normal form for <a title="policy expression" href="#policy_expression">policy expressions</a> that is a straightforward XML Infoset representation of a @@ -443,30 +452,13 @@ XML Infoset, this specification defines three constructs: an attribute to decorate an <a title="policy assertion" href="#policy_assertion">assertion</a>, semantics for recursively nested policy operators, and a policy -reference/inclusion mechanism. Each is described in the subsections -below.</p><p>To interpret a compact <a title="policy expression" href="#policy_expression">expression</a> in an interoperable form, -a compact expression may be converted to the corresponding normal form -expression by the following procedure:</p><ol><li><p>Start with the Element Information Item E (as defined in the XML Information Set [<cite><a href="#XMLInfoset">XML Information Set</a></cite>]) of the -policy expression. The <strong>[namespace -name]</strong> of E is always <code>"http://www.w3.org/ns/ws-policy"</code>. In the base case, -the <strong>[local name]</strong> property of E is -<code>"Policy"</code>; in the recursive case, the <strong>[local name]</strong> property of E is -<code>"Policy"</code>, <code>"ExactlyOne"</code>, or -<code>"All"</code>.</p></li><li><p>Expand Element Information Items (as defined in the XML Information Set [<cite><a href="#XMLInfoset">XML Information Set</a></cite>]) in the <strong>[children]</strong> property of E that are policy -references per Section <a href="#Policy_Inclusion"><b>4.3.5 Policy Inclusion</b></a>.</p></li><li><p>Convert each Element Information Item C in the <strong>[children]</strong> property of E into normal -form.</p><ol><li><p>If the <strong>[namespace name]</strong> -property of C is <code>"http://www.w3.org/ns/ws-policy"</code> and the <strong>[local -name]</strong> 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></li><li><p>Otherwise the Element Information Item C is an assertion; -normalize C per Sections <a href="#Optional_Policy_Assertions"><b>4.3.1 Optional Policy Assertions</b></a> -and <a href="#Policy_Assertion_Nesting"><b>4.3.2 Policy Assertion Nesting</b></a>.</p></li></ol></li><li><p>Apply the policy operator indicated by E to the normalized -Element Information Items in its <strong>[children]</strong> property and construct a -normal form per Section <a href="#Policy_Operators"><b>4.3.3 Policy Operators</b></a> and <a href="#Normal_Form_Policy_Expression"><b>4.1 Normal Form Policy Expression</b></a>.</p></li></ol><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><div class="div3"> + 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 <a href="#normalization"><b>4.3.6 Normalization</b></a>) to the normal form (see Section <a href="#Normal_Form_Policy_Expression"><b>4.1 Normal Form Policy Expression</b></a>).</p><p>A <a title="policy expression" href="#policy_expression">policy expression</a> + consists of a <code class="elt">wsp:Policy</code> wrapper element and + zero or more child and descendent elements.</p><div class="div3"> <h4><a name="Optional_Policy_Assertions"></a>4.3.1 Optional Policy Assertions</h4><p>To indicate that a <a title="policy assertion" href="#policy_assertion">policy assertion</a> is optional, this specification defines an attribute that is a compact authoring style for expressing a pair of <a title="policy alternative" href="#policy_alternative">alternatives</a>, @@ -618,7 +610,7 @@ 24). </p></div><div class="div3"> <h4><a name="Policy_Operators"></a>4.3.3 Policy Operators</h4><p><a title="policy" href="#policy">Policies</a> are used to convey a set of capabilities, requirements, and general characteristics of entities (see <a href="#tocRange"><b>1. Introduction</b></a>). These are generally expressible as a set of <a title="policy alternative" href="#policy_alternative">policy alternatives</a>. - Policy operators (<code class="elt">wsp:Policy</code> , <code class="elt">wsp:All</code> and <code class="elt">wsp:ExactlyOne</code> ) + Policy operators (<code class="elt">wsp:Policy</code> , <code class="elt">wsp:All</code> and <code class="elt">wsp:ExactlyOne</code> elements) are used to group <a title="policy assertion" href="#policy_assertion">policy assertions</a> into <a title="policy alternative" href="#policy_alternative">policy alternatives</a>. To compactly express complex policies, policy operators @@ -626,7 +618,47 @@ instances of <code class="elt">wsp:Policy</code> , <code class="elt">wsp:All</code> , and/or <code class="elt">wsp:ExactlyOne</code> <span class="rfc2119">MAY</span> be nested within <code class="elt">wsp:Policy</code> , <code class="elt">wsp:All</code> , and/or -<code class="elt">wsp:ExactlyOne</code> .</p><p>The following rules are used to transform a compact policy expression into a normal form policy expression:</p><dl><dt class="label">Equivalence</dt><dd><p>Use of <code class="elt">wsp:Policy</code> as an operator within a policy expression is +<code class="elt">wsp:ExactlyOne</code> .</p><p>The schema outline for the <code class="elt">wsp:Policy</code> element in the compact form is as follows:</p><div class="exampleInner"><pre>(01) <wsp:Policy … > +(02) ( <wsp:Policy …>…</wsp:Policy> | +(03) <wsp:ExactlyOne>…</wsp:ExactlyOne> | +(04) <wsp:All>…</wsp:All> | +(05) <wsp:PolicyReference … >…</wsp:PolicyReference> | +(06) … +(07) )* +(08) </wsp:Policy></pre></div><p>The following describes the Attribute and Element Information Items defined in the schema outline above:</p><dl><dt class="label"><code class="elt">/wsp:Policy</code> </dt><dd><p>This element is the <code class="elt">wsp:Policy</code> operator.</p></dd><dt class="label"><code class="elt">/wsp:Policy/wsp:Policy</code> </dt><dd><p>This element is a nested <code class="elt">wsp:Policy</code> operator.</p></dd><dt class="label"><code class="elt">/wsp:Policy/wsp:ExactlyOne</code> </dt><dd><p>This element is a nested <code class="elt">wsp:ExactlyOne</code> operator.</p></dd><dt class="label"><code class="elt">/wsp:Policy/wsp:All</code> </dt><dd><p>This element is a nested <code class="elt">wsp:All</code> operator.</p></dd><dt class="label"><code class="elt">/wsp:Policy/wsp:PolicyReference</code> </dt><dd><p>This element references a policy expression to be included per Section + <a href="#Policy_Inclusion"><b>4.3.5 Policy Inclusion</b></a>.</p></dd><dt class="label"><code class="elt">/wsp:Policy/@{any}</code> </dt><dd><p>Additional attributes <span class="rfc2119">MAY</span> be specified but + <span class="rfc2119">MUST NOT</span> contradict the semantics of the + <strong>[owner element]</strong>; + if an attribute is not recognized, it <span class="rfc2119">SHOULD</span> be ignored.</p></dd><dt class="label"><code class="elt">/wsp:Policy/{any}</code> </dt><dd><p>Additional elements <span class="rfc2119">MAY</span> be specified. Such elements + <span class="rfc2119">MUST NOT</span> use the Web Services Policy language + XML namespace name and <span class="rfc2119">MUST NOT</span> contradict the semantics + of the <strong>[parent element]</strong>.</p></dd></dl><p>The schema outline for the <code class="elt">wsp:ExactlyOne</code> element in the compact form is as follows:</p><div class="exampleInner"><pre>(01) <wsp:ExactlyOne> +(02) ( <wsp:Policy … >…</wsp:Policy> | +(03) <wsp:ExactlyOne>…</wsp:ExactlyOne> | +(04) <wsp:All>…</wsp:All> | +(05) <wsp:PolicyReference … >…</wsp:PolicyReference> | +(06) … +(07) )* +(08) </wsp:ExactlyOne></pre></div><p>The following describes the Attribute and Element Information Items defined in the schema outline above:</p><dl><dt class="label"><code class="elt">/wsp:ExactlyOne</code> </dt><dd><p>This element is the <code class="elt">wsp:ExactlyOne</code> operator.</p></dd><dt class="label"><code class="elt">/wsp:ExactlyOne/wsp:Policy</code> </dt><dd><p>This element is a nested <code class="elt">wsp:Policy</code> operator.</p></dd><dt class="label"><code class="elt">/wsp:ExactlyOne/wsp:ExactlyOne</code> </dt><dd><p>This element is a nested <code class="elt">wsp:ExactlyOne</code> operator.</p></dd><dt class="label"><code class="elt">/wsp:ExactlyOne/wsp:All</code> </dt><dd><p>This element is a nested <code class="elt">wsp:All operator</code> .</p></dd><dt class="label"><code class="elt">/wsp:ExactlyOne/wsp:PolicyReference</code> </dt><dd><p>This element references a policy expression to be included per Section + <a href="#Policy_Inclusion"><b>4.3.5 Policy Inclusion</b></a>.</p></dd><dt class="label"><code class="elt">/wsp:ExactlyOne/{any}</code> </dt><dd><p>Additional elements <span class="rfc2119">MAY</span> be specified. Such elements + <span class="rfc2119">MUST NOT</span> use the Web Services Policy language + XML namespace name and <span class="rfc2119">MUST NOT</span> contradict the semantics + of the <strong>[parent element]</strong>.</p></dd></dl><p>The schema outline for the <code class="elt">wsp:All</code> element in the compact form is as follows:</p><div class="exampleInner"><pre>(01) <wsp:All> +(02) ( <wsp:Policy … >…</wsp:Policy> | +(03) <wsp:ExactlyOne>…</wsp:ExactlyOne> | +(04) <wsp:All>…</wsp:All> | +(05) <wsp:PolicyReference … >…</wsp:PolicyReference> | +(06) … +(07) )* +(08) </wsp:All></pre></div><p>The following describes the Attribute and Element Information Items defined in the schema outline above:</p><dl><dt class="label"><code class="elt">/wsp:All</code> </dt><dd><p>This element is the <code class="elt">wsp:All</code> operator.</p></dd><dt class="label"><code class="elt">/wsp:All/wsp:Policy</code> </dt><dd><p>This element is a nested <code class="elt">wsp:Policy</code> operator.</p></dd><dt class="label"><code class="elt">/wsp:All/wsp:ExactlyOne</code> </dt><dd><p>This element is a nested <code class="elt">wsp:ExactlyOne</code> operator.</p></dd><dt class="label"><code class="elt">/wsp:All/wsp:All</code> </dt><dd><p>This element is a nested <code class="elt">wsp:All</code> operator.</p></dd><dt class="label"><code class="elt">/wsp:All/wsp:PolicyReference</code> </dt><dd><p>This element references a policy expression to be included per Section + <a href="#Policy_Inclusion"><b>4.3.5 Policy Inclusion</b></a>.</p></dd><dt class="label"><code class="elt">/wsp:All/{any}</code> </dt><dd><p>Additional elements <span class="rfc2119">MAY</span> be specified. Such elements + <span class="rfc2119">MUST NOT</span> use the Web Services Policy language + XML namespace name and <span class="rfc2119">MUST NOT</span> contradict the semantics + of the <strong>[parent element]</strong>.</p></dd></dl><div class="note"><p class="prefix"><b>Note:</b></p><p>The <code class="elt">wsp:Policy element</code> allows attribute extensibility to + accommodate the use of attributes specified in Section <a href="#Policy_Identification"><b>4.2 Policy Identification</b></a>. + Otherwise, policy operators (<code class="elt">wsp:Policy</code> , <code class="elt">wsp:All</code> and + <code class="elt">wsp:ExactlyOne</code> elements) do not allow attribute extensibility + because such attributes are not preserved through normalization.</p></div><p>The following rules are used to transform a compact policy expression into a normal form policy expression:</p><dl><dt class="label">Equivalence</dt><dd><p>Use of <code class="elt">wsp:Policy</code> as an operator within a policy expression is equivalent to <code class="elt">wsp:All</code> .</p></dd><dd><p> A collection of assertions in an <code class="elt">wsp:All</code> operator is equivalent to a <a title="policy alternative" href="#policy_alternative">policy alternative</a>. For instance, @@ -786,7 +818,30 @@ (02) <sp:IncludeTimestamp /> (03) <wsp:PolicyReference URI="#Protection" /> (04) <sp:OnlySignEntireHeadersAndBody /> -(05) </wsp:Policy></pre></div><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></div></div><div class="div2"> +(05) </wsp:Policy></pre></div><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></div><div class="div3"> +<h4><a name="normalization"></a>4.3.6 Normalization</h4><p>To interpret a compact <a title="policy expression" href="#policy_expression">expression</a> in an interoperable form, + a compact expression may be converted to the corresponding normal form + expression by the following procedure:</p><ol><li><p>Start with the Element Information Item E (as defined in the XML Information Set [<cite><a href="#XMLInfoset">XML Information Set</a></cite>]) of the + policy expression. The <strong>[namespace + name]</strong> of E is always <code>"http://www.w3.org/ns/ws-policy"</code>. In the base case, + the <strong>[local name]</strong> property of E is + <code>"Policy"</code>; in the recursive case, the <strong>[local name]</strong> property of E is + <code>"Policy"</code>, <code>"ExactlyOne"</code>, or + <code>"All"</code>.</p></li><li><p>Expand Element Information Items (as defined in the XML Information Set [<cite><a href="#XMLInfoset">XML Information Set</a></cite>]) in the <strong>[children]</strong> property of E that are policy + references per Section <a href="#Policy_Inclusion"><b>4.3.5 Policy Inclusion</b></a>.</p></li><li><p>Convert each Element Information Item C in the <strong>[children]</strong> property of E into normal + form.</p><ol><li><p>If the <strong>[namespace name]</strong> + property of C is <code>"http://www.w3.org/ns/ws-policy"</code> and the <strong>[local + name]</strong> 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></li><li><p>Otherwise the Element Information Item C is an assertion; + normalize C per Sections <a href="#Optional_Policy_Assertions"><b>4.3.1 Optional Policy Assertions</b></a> + and <a href="#Policy_Assertion_Nesting"><b>4.3.2 Policy Assertion Nesting</b></a>.</p></li></ol></li><li><p>Apply the policy operator indicated by E to the normalized + Element Information Items in its <strong>[children]</strong> property and construct a + normal form per Section <a href="#Policy_Operators"><b>4.3.3 Policy Operators</b></a> and <a href="#Normal_Form_Policy_Expression"><b>4.1 Normal Form Policy Expression</b></a>.</p></li></ol><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></div></div><div class="div2"> <h3><a name="ignorable-policy-assertions"></a>4.4 Ignorable Policy Assertions</h3><p>The <code class="attr">wsp:Ignorable</code> attribute indicates if a policy assertion is an <a title="ignorable policy assertion" href="#ignorable_policy_assertion">ignorable policy assertion</a>. The schema outline for this attribute is as follows:</p><div class="exampleInner"><pre>(01) <Assertion ( wsp:Ignorable="xs:boolean" )? … > … </Assertion></pre></div><p>The following describes the Attribute Information Item defined in the schema outline above:</p><dl><dt class="label"><code class="attr">/Assertion/@wsp:Ignorable</code> </dt><dd><p>This attribute is of type <code>xs:boolean</code>. If the actual @@ -1420,4 +1475,9 @@ <a href="http://lists.w3.org/Archives/Public/public-ws-policy/2007Jan/0159.html">resolution</a> for issue <a href="http://www.w3.org/Bugs/Public/show_bug.cgi?id=4235">4235</a>. Editors' action <a href="http://www.w3.org/2005/06/tracker/wspolicyeds/actions/147">147</a>. + </td></tr><tr><td rowspan="1" colspan="1">20070123</td><td rowspan="1" colspan="1">ASV</td><td rowspan="1" colspan="1">Implemented the + <a href="http://lists.w3.org/Archives/Public/public-ws-policy/2007Jan/0186.html">resolution</a> + for issues <a href="http://www.w3.org/Bugs/Public/show_bug.cgi?id=4196">4196</a> + and <a href="http://www.w3.org/Bugs/Public/show_bug.cgi?id=4238">4238</a>. + Editors' action <a href="http://www.w3.org/2005/06/tracker/wspolicyeds/actions/142">142</a>. </td></tr></tbody></table><br></div></div></body></html> \ No newline at end of file
Received on Wednesday, 24 January 2007 02:41:33 UTC