- From: Doug Davis via cvs-syncmail <cvsmail@w3.org>
- Date: Wed, 03 Mar 2010 02:25:17 +0000
- To: public-ws-resource-access-notifications@w3.org
Update of /w3ccvs/WWW/2002/ws/ra/edcopies In directory hutz:/tmp/cvs-serv31528 Modified Files: wsfrag.html wsfrag.xml Log Message: 8185 8193 Index: wsfrag.html =================================================================== RCS file: /w3ccvs/WWW/2002/ws/ra/edcopies/wsfrag.html,v retrieving revision 1.54 retrieving revision 1.55 diff -u -d -r1.54 -r1.55 --- wsfrag.html 24 Feb 2010 15:04:00 -0000 1.54 +++ wsfrag.html 3 Mar 2010 02:25:15 -0000 1.55 @@ -49,12 +49,14 @@ 2.4 <a href="#extensions">Considerations on the Use of Extensibility Points</a><br/> 2.5 <a href="#compliance">Compliance</a><br/> 3 <a href="#fragments">Fragment WS-Transfer Dialect</a><br/> - 3.1 <a href="#Get">Get</a><br/> - 3.2 <a href="#Put">Put</a><br/> - 3.3 <a href="#Delete">Delete</a><br/> - 3.4 <a href="#Create">Create</a><br/> -4 <a href="#iddiv1_1_779">Examples</a><br/> - 4.1 <a href="#iddiv2_1_782">Examples</a><br/> + 3.1 <a href="#IdResSubset">Identification of a Resource Subset</a><br/> + 3.2 <a href="#FragSer">Fragment Serialization</a><br/> + 3.3 <a href="#Get">Get</a><br/> + 3.4 <a href="#Put">Put</a><br/> + 3.5 <a href="#Delete">Delete</a><br/> + 3.6 <a href="#Create">Create</a><br/> +4 <a href="#iddiv1_1_1404">Examples</a><br/> + 4.1 <a href="#iddiv2_1_1407">Examples</a><br/> 5 <a href="#QName">QName Expression Language</a><br/> 6 <a href="#XPathL1">XPath Level 1 Expression Language</a><br/> 7 <a href="#XPath10">XPath 1.0 Expression Language</a><br/> @@ -63,10 +65,10 @@ 8.2 <a href="#InvalidExpression">InvalidExpression</a><br/> 8.3 <a href="#UnsupportedMode">UnsupportedMode</a><br/> 9 <a href="#metadata">WS-Fragment Metadata</a><br/> - 9.1 <a href="#iddiv2_1_1401">Fragment Assertion</a><br/> + 9.1 <a href="#iddiv2_1_1939">Fragment Assertion</a><br/> 10 <a href="#acks">Acknowledgements</a><br/> 11 <a href="#refs">References</a><br/> - 11.1 <a href="#iddiv2_1_1454">Normative References</a><br/> + 11.1 <a href="#iddiv2_1_1992">Normative References</a><br/> </p> <h3><a name="appendices" id="appendices"/>Appendices</h3><p class="toc">A <a href="#Appendix_I__E2_80_93_XSD">XML Schema</a><br/> B <a href="#changelog">Change Log</a><br/> @@ -260,7 +262,114 @@ perform such operations. This specification only extends but does not modify the base WS-Transfer behavior. </p><div class="div2"> -<h3><a name="Get" id="Get"/>3.1 Get</h3><p> +<h3><a name="IdResSubset" id="IdResSubset"/>3.1 Identification of a Resource Subset</h3><p> + The WS-Fragment Dialect is used to identify a portion of a resource + representation to update. The WS-Transfer Get and Put operations have + an Expression that allows a requester to specify which subset of the + resource is being modified. Except in the cases listed below, the + Expression MUST evaluate to a single node within the representation. + This avoids any issues that might occur due to updating multiple + portions of a resource within one invocation - in other words, + "batching" is prohibited. There are however a few special cases + that need to be taken into account: + </p><ul><li><p> + An Expression that evaluates to the root of the resource + representation might not result in any nodes being returned from the + Expression processor. For example, an XPath expression of "/" on an + empty resource would return an empty node-set. However, to allow + for requesters to specify the root (implying the entire document), + Expression Languages (and supporting services) that wish to + support this concept might need to make special allowances for this + situation. Each Expression Language would need to call out this + special expression. + </p></li><li><p> + While WS-Fragment doesn't support batching, there are times when + a requester might need to act upon an entire sequence of elements + (i.e. a list of elements of the same QName that are all siblings). + For example, a requester wanting to delete all children of an + element. Rather than requiring the requester to send a series of + WS-Transfer Put requests to delete each individual child element, + WS-Fragment allows for Expression Languages (and services) to + identify and act upon the sequence as one entity. + </p></li></ul><p> + If an Expression does evaluate to more than one node then, except for + the cases listed above, the implementation MUST process only the + first selected node. + </p><p> + For the purposes of this specification, attributes are treated as + single strings - multi-value attributes are not supported. + </p></div><div class="div2"> +<h3><a name="FragSer" id="FragSer"/>3.2 Fragment Serialization</h3><p> + When using the WS-Fragment Dialect, subsets of resource representations + are serialized into the Get response and Put request messages. To + ensure that the receiver of those messages can unambiguously parse the + data into the proper XML entities, this specification defines the + following rules for serializing XML fragments. + </p><p> + Expressions MUST evaluate to one of four possible types: a node-set, + a Boolean, a Number or a String. The latter three types are the + results of evaluating a computed expression. When they appear in a + message they are serialized by performing the following conversion and + then wrapping the result in the wsf:Value element: + </p><ul><li><p>Boolean - converted to an xs:boolean</p></li><li><p>Number - converted to an xs:double</p></li><li><p>String - converted to an xs:string</p></li></ul><p> + A node-set is zero or more elements, attributes or text values of + elements. A node-set is serialized into XML by concatenating each + node and enclosing it in the wsf:Value wrapper XML element for which + schema validation is suppressed. Element nodes in a node-set are + serialized directly into their XML representation. For attributes + and text nodes in the node-set, a wrapper element is used to + enclose these values to distinguish them from other such nodes in + the serialized result. + </p><p> + Attribute nodes in XPath are represented in the following form: + </p><div class="exampleOuter"><div class="exampleInner"><pre>name="value"</pre></div></div><p> + Serialization of an attribute node separates the name from + the value using the following element: + </p><div class="exampleOuter"><div class="exampleInner"><pre>(01) <wsf:AttributeNode name="<em>xs:QName</em>"> +(02) <em>attribute value</em> +(03) </wsf:AttributeNode></pre></div></div><p> + The following describes additional constraints on the outline + listed above: + </p><dl><dt class="label"> wsf:AttributeNode </dt><dd><p> + This element is used to serialize an attribute node in a + node-set and MUST contain the value portion of the attribute node. + </p></dd><dt class="label"> wsf:AttributeNode/@name </dt><dd><p> + This attribute MUST be the qualified name of the attribute node. + </p></dd></dl><p> + Text nodes are serialized in the following form: + </p><div class="exampleOuter"><div class="exampleInner"><pre>(01) <wsf:TextNode> +(02) <em>text value</em> +(03) </wsf:TextNode></pre></div></div><p> + The following describes additional constraints on the + outline listed above: + </p><dl><dt class="label"> wsf:TextNode </dt><dd><p> + This element is used to serialize a text node in a node-set + and MUST contain the text value. + </p></dd></dl><p>Given the following XML as an example document.</p><div class="exampleOuter"><div class="exampleInner"><pre>(01) <a xmlns="example"> +(02) <b>1</b> +(03) <c x="y">2</c> +(04) </a></pre></div></div><p> + The result of the XPath "/a/b | /a/b/text() | /a/c/@x" would + be serialized as the following: + </p><div class="exampleOuter"><div class="exampleInner"><pre>(01) <wsf:Value> +(02) <b>1</b> +(03) <wsf:TextNode>1</wsf:TextNode> +(04) <wsf:AttributeNode name="x">y</wsf:AttributeNode> +(05) </wsf:Value></pre></div></div><p>The nodes in the node-set MAY be serialized in any order.</p><p> + The namespace bindings are evaluated against any namespace + declarations that are in scope where the expression appears within + the SOAP message. + Note that the evaluation of expressions that rely on such context + dependent bindings is fragile in the face of transformations that alter + namespace prefixes. Such transformations might occur during the + transmission, processing, storage, or retrieval of a request. Clients + that wish to isolate expressions from the effects of any changes to the + namespace prefixes in the containing SOAP message are advised to + construct expressions in a manner that avoids the use of namespace + prefixes. For example, use an expression such as + "/a[namespace-uri()='http://www.example.com']" not "/ns1:a". + </p></div><div class="div2"> +<h3><a name="Get" id="Get"/>3.3 Get</h3><p> To retrieve a subset of a resource a client MUST specify the WS-Fragment Dialect IRI in the wst:Get request. </p><p> @@ -314,7 +423,7 @@ Other components of the outline above are not further constrained by this specification. </p></div><div class="div2"> -<h3><a name="Put" id="Put"/>3.2 Put</h3><p> +<h3><a name="Put" id="Put"/>3.4 Put</h3><p> To update a subset of a resource a client MUST specify the WS-Fragment IRI in the wst:Put request. </p><p> @@ -359,49 +468,90 @@ A resource MUST generate a wsf:UnsupportedMode fault if the specified Mode is not supported. </p></dd><dt class="label"><b>[Body]</b>/wst:Put/wsf:Fragment/wsf:Expression@Mode="http://www.w3.org/2002/ws/ra/edcopies/ws-fra/Modes/Replace" </dt><dd><p> - When the Mode attribute is set to a value of - "http://www.w3.org/2002/ws/ra/edcopies/ws-fra/Modes/Replace" the resource - representation specified within the Value element MUST replace the - entire resource representation referenced by the children of the - Expression element, if it exists. - </p></dd><dt class="label"><b>[Body]</b>/wst:Put/wsf:Fragment/wsf:Expression@Mode="http://www.w3.org/2002/ws/ra/edcopies/ws-fra/Modes/Insert" </dt><dd><p> - When the Mode attribute is set to a value of - "http://www.w3.org/2002/ws/ra/edcopies/ws-fra/Modes/Insert" the resource - representation specified within the Value element MUST be added to - the resource representation. If the expression targets a repeated - element (maxOccurs > 1), the fragment MUST be added at the end. If - the expression targets a non-repeated element (maxOccurrs = 1) that - already exists, the resource MUST generate a - wst:InvalidRepresentation fault. If the expression targets an - existing item of a repeated element, the fragment MUST be added - before the existing item. + This Mode value indicates that the children of the Value element + MUST be added to the resource representation in place of the + fragment referenced by the children of the Expression element. + </p><p> + This Mode value has the net effect of doing a "delete" on the + referenced fragment, followed by an "insert" on the fragment's + parent. If the referenced fragment is already absent then + the "insert" operation is still performed. + </p><p> + If the Value element is not present then this Mode MUST simply remove + the referenced fragment. If the fragment is already absent, or if + the Expression evaluates to an empty fragment, then this operation + MUST have no effect. If the implementation is schema aware + and it detects that the Expression is not valid per the schema then a + wsf:InvalidExpression fault MUST be generated. + </p><p> + When this Mode value is used the Value element MUST be present. + </p></dd><dt class="label"><b>[Body]</b>/wst:Put/wsf:Fragment/wsf:Expression@Mode="http://www.w3.org/2002/ws/ra/edcopies/ws-fra/Modes/Add" </dt><dd><p> + This Mode value indicates that the children of the Value element + MUST be added to the resource representation relative to the + fragment referenced by the children of the Expression element. + </p><p> + If the Value element contains an attribute node then the attribute + MUST be added to the referenced element. If an attribute with + that name already exists then a wst:InvalidRepresentation fault + MUST be generated. + </p><p> + If the Value element contains a fragment that is not an + attribute node, the children of the Value element are added as + children to the referenced fragment. + </p><p> + When adding a child element and a child element of that QName + already exists, the new element MUST be added to the end of that + sequence of child elements. If the requester wants to ensure + that only a single instance of that child element is present + it can use the "Replace" instead. + </p><p> + While schema validation is not required of resource managers, + since resources are only allowed to have a single root element, + attempts to "Add" a second root element MUST generate a + wst:InvalidRepresentation fault. + </p><p> + When this Mode value is used the Value element MUST be present. + </p></dd><dt class="label"><b>[Body]</b>/wst:Put/wsf:Fragment/wsf:Expression@Mode="http://www.w3.org/2002/ws/ra/edcopies/ws-fra/Modes/InsertBefore" </dt><dd><p> + This Mode value indicates that the children of the Value element + MUST be inserted immediately before (as a sibling to) the fragment + referenced by the children of the Expression element. Note, this + Mode MUST NOT be used for attributes. + </p><p> + If the implementation is schema aware and it detects that the + Expression does not reference a sequence then it MUST generate + a wst:InvalidRepresentation fault. + </p><p> + When this Mode value is used the Value element MUST be present. + </p></dd><dt class="label"><b>[Body]</b>/wst:Put/wsf:Fragment/wsf:Expression@Mode="http://www.w3.org/2002/ws/ra/edcopies/ws-fra/Modes/InsertAfter" </dt><dd><p> + This Mode value indicates that the children of the Value element + MUST be inserted immediately after (as a sibling to) the fragment + referenced by the children of the Expression element. Note, this + Mode MUST NOT be used for attributes. + </p><p> + If the implementation is schema aware and it detects that the + Expression does not reference a sequence then it MUST generate + a wst:InvalidRepresentation fault. + </p><p> + When this Mode value is used the Value element MUST be present. </p></dd><dt class="label"><b>[Body]</b>/wst:Put/wsf:Fragment/wsf:Expression@Mode="http://www.w3.org/2002/ws/ra/edcopies/ws-fra/Modes/Remove" </dt><dd><p> When the Mode attribute is set to a value of "http://www.w3.org/2002/ws/ra/edcopies/ws-fra/Modes/Remove" the resource representation referenced by the children of the Expression element MUST be deleted from the resource representation. </p><p> - Note: the Value element MUST NOT be present if this attribute - has a value of "http://www.w3.org/2002/ws/ra/edcopies/ws-fra/Modes/Remove". + When this Mode value is used the Value element MUST NOT be present. </p></dd><dt class="label"><b>[Body]</b>/wst:Put/wsf:Fragment/wsf:Value </dt><dd><p> This OPTIONAL element contains the fragment resource representation - corresponding to the subset of the resource identified by the - wsf:Expression element. + to be added to the resource representation. If the contents of this element are invalid, a wst:InvalidRepresentation fault MUST be generated. </p><p> - When Mode is "http://www.w3.org/2002/ws/ra/edcopies/ws-fra/Modes/Insert" - or "http://www.w3.org/2002/ws/ra/edcopies/ws-fra/Modes/Replace", any - optional values (element or attributes) within this subset that are + Any optional values (element or attributes) within this subset that are not specified in the Value element MUST be set to a resource-specific default value. </p><p> - This element MUST NOT be present if the Mode attribute has a value - of "http://www.w3.org/2002/ws/ra/edcopies/ws-fra/Modes/Remove". This element - MUST be present if the Mode attribute has a value of either - "http://www.w3.org/2002/ws/ra/edcopies/ws-fra/Modes/Replace" or - "http://www.w3.org/2002/ws/ra/edcopies/ws-fra/Modes/Insert". When present, - this element MAY be empty. + The children of this element MUST be serialized according to the + rules defined in <a href="#FragSer"><b>3.2 Fragment Serialization</b></a>. </p></dd></dl><p> If the resource accepts a Put request, it MUST reply with a response of the following form: @@ -416,17 +566,27 @@ <em>xs:any</em> * </wst:PutResponse></pre></div></div><p> There are no additional constraints beyond what WS-Transfer defines. - </p></div><div class="div2"> -<h3><a name="Delete" id="Delete"/>3.3 Delete</h3><p> + </p><p> + The following table elaborates on the expected behavior of a + WS-Fragment Put request using the XPath Level 1 language. + </p><p> + Given a resource whose schema is defined as: + </p><div class="exampleOuter"><div class="exampleInner"><pre><a foo="xs:integer"? bar="xs:integer"? > + ( <b> <c/> </b> * | <c/> ) +</a></pre></div></div><p> + Note: for the sake of clarity, some element names have a ' or " to + indicate that it is a different instance of that type of element. + </p><table border="1"><tbody><tr><td>Initial Representation</td><td>@Mode</td><td>Expression</td><td>Value</td><td>Final Represenation</td></tr><tr><td/><td>Add</td><td>/</td><td><a/></td><td><a/></td></tr><tr><td/><td>Replace</td><td>/</td><td><a/></td><td><a/></td></tr><tr><td><a/></td><td>Add</td><td>/</td><td><a'/></td><td>fault</td></tr><tr><td><a/></td><td>Replace</td><td>/a</td><td><a'/></td><td><a'/></td></tr><tr><td><a/></td><td>Add</td><td>/a</td><td><wsf:AttributeNode name="foo">1</wsf:AttributeNode></td><td><a foo="1"/></td></tr><tr><td><a foo="1"/></td><td>Add</td><td>/a</td><td><wsf:AttributeNode name="foo">2</wsf:AttributeNode></td><td>fault</td></tr><tr><td><a foo="1"/></td><td>Replace</td><td>/a@foo</td><td><wsf:AttributeNode name="foo">2</wsf:AttributeNode></td><td><a foo="2"/></td></tr><tr><td><a foo="1"/></td><td>Replace</td><td>/a@foo</td><td><wsf:AttribueNode name="bar">2</wsf:AttributeNode></td><td><a bar="2"/></td></tr><tr><td><a/></td><td>Replace</td><td>/a@foo</td><td><wsf:AttributeNode name="bar">2</wsf:AttributeNode></td><td><a bar="2"/></td></tr><tr><td><a foo="1"/></td><td>Remove</td><td>/a@foo</td><td/><td><a/></td></tr><tr><td><a/></td><td>Add</td><td>/a</td><td><b/></td><td><a> <b/> </a></td></tr><tr><td><a> <b/> </a></td><td>Add</td><td>/a</td><td><b'/></td><td><a> <b/> <b'/> </a></td></tr><tr><td><a> <b/> </a></td><td>Replace</td><td>/a/b</td><td><b'/></td><td><a> <b'/> </a></td></tr><tr><td><a/></td><td>Replace</td><td>/a/b</td><td><b/></td><td><a> <b/> </a></td></tr><tr><td><a> <b/> <b'> </a></td><td>InsertAfter</td><td>/a/b or /a/b[last()]</td><td><b"/></td><td><a> <b/> <b'> <b"/> </a></td></tr><tr><td><a> <b/> <b'> </a></td><td>InsertBefore</td><td>/a/b or /a/b[1]</td><td><b"/></td><td><a> <b"/> <b> <b'/> </a></td></tr><tr><td><a> <b/> <b'> </a></td><td>Replace</td><td>/a/b</td><td><b"/></td><td><a> <b"/> </a></td></tr><tr><td><a> <b/> <b'> </a></td><td>Replace</td><td>/a/b[1]</td><td><b"/></td><td><a> <b"/> <b'> </a></td></tr><tr><td><a> <b/> </a></td><td>Remove</td><td>/a/b</td><td/><td><a/></td></tr><tr><td><a> <b/> <b'> </a></td><td>Remove</td><td>/a/b</td><td/><td><a/></td></tr><tr><td><a> <b/> <b'> </a></td><td>Remove</td><td>/a/b[1]</td><td/><td><a> <b'> </a></td></tr><tr><td><a> <b/> <b'> </a></td><td>Replace</td><td>/a/b</td><td><c/></td><td><a> <c> </a></td></tr></tbody></tabl></div><div class="div2"> +<h3><a name="Delete" id="Delete"/>3.5 Delete</h3><p> This specification does not extend the Delete operation defined in WS-Transfer. </p></div><div class="div2"> -<h3><a name="Create" id="Create"/>3.4 Create</h3><p> +<h3><a name="Create" id="Create"/>3.6 Create</h3><p> This specification does not extend the Create operation defined in WS-Transfer. </p></div></div><div class="div1"> -<h2><a name="iddiv1_1_779" id="iddiv1_1_779"/>4 Examples</h2><div class="div2"> -<h3><a name="iddiv2_1_782" id="iddiv2_1_782"/>4.1 Examples</h3><p> +<h2><a name="iddiv1_1_1404" id="iddiv1_1_1404"/>4 Examples</h2><div class="div2"> +<h3><a name="iddiv2_1_1407" id="iddiv2_1_1407"/>4.1 Examples</h3><p> In the following examples, and Expression Language definitions, the following representation of a resource is used for informational purposes: @@ -655,31 +815,10 @@ returns a node-set containing a single element node which serializes directly: </p><div class="exampleOuter"><div class="exampleInner"><pre>(01) <b> <c d="30"> 20 </c> </b></pre></div></div><p> - In the case of a Put operation, if the XPath expression selects more - than one node, the implementation MUST process only the first selected - node. This allows simple implementations to avoid the overhead of - checking the remainder of the resource document for a possible match. - </p><p> Conformant implementations MAY supply additional functions and capabilities, but MUST adhere to the minimum behavior described above. </p><p> The XPath Level 1 language does not support computed values. - Text and attribute nodes MUST be serialized in the GetResponse - message using the same serialization as for the XPath 1.0 language. - This serialization mechanism MUST NOT be used in the PutRequest message. - </p><p> - The namespace bindings are evaluated against any namespace - declarations that are in scope where the expression appears within the SOAP - message. - Note that the evaluation of expressions that rely on such context - dependent bindings is fragile in the face of transformations that alter - namespace prefixes. Such transformations might occur during the - transmission, processing, storage, or retrieval of a request. Clients - that wish to isolate expressions from the effects of any changes to the - namespace prefixes in the containing SOAP message are advised to - construct expressions in a manner that avoids the use of namespace - prefixes. For example, use an expression such as - "/a[namespace-uri()='http://www.example.com']" not "/ns1:a". </p></div><div class="div1"> <h2><a name="XPath10" id="XPath10"/>7 XPath 1.0 Expression Language</h2><p> The XPath 1.0 expression language uses an XPath to reference specific @@ -708,82 +847,8 @@ Implementations that support the full XPath 1.0 language MUST support the XPath Level 1 language. </p><p> - In the case of a Put operation if the XPath expression selects more - than one node, the implementation MUST process only the first selected - node. This allows simple implementations to avoid the overhead of - checking the remainder of the resource document for a possible match. - </p><p> - The remainder of this section defines an XML serialization mechanism - that MUST be used when constructing a GetResponse message. Since the - PutRequest message MUST NOT be used to modify more than one target, - these serialization rules MUST NOT be used in a PutRequest message. - </p><p> - Expressions MUST evaluate to one of four - possible types: a node-set, a Boolean, a number or a string. The - latter three types are the results of evaluating a computed expression. - When they appear in a GetResponse message they are serialized - by performing the following conversion and then wrapping the result in - the wsf:Value element: - </p><ul><li><p>Boolean - converted to an xs:boolean</p></li><li><p>string - convert to an xs:string</p></li><li><p>number - convert to an xs:double</p></li></ul><p> - A node-set is zero or more elements, attributes or text - values of elements. A node-set is serialized into XML by - concatenating each - node and enclosing it in the wsf:Value wrapper XML element for which - schema - validation is suppressed. Element nodes in a node-set are serialized - directly - into their XML representation. For attributes and text nodes in the - node-set, - a wrapper element is used to enclose these values to distinguish them from - other such nodes in the serialized result. - </p><p> - Attribute nodes in XPath are represented in the following form: - </p><div class="exampleOuter"><div class="exampleInner"><pre>name="value"</pre></div></div><p> - Serialization of an attribute node separates the name from - the value using the following element: - </p><div class="exampleOuter"><div class="exampleInner"><pre>(01) <wsf:AttributeNode name="<em>xs:QName</em>"> -(02) <em>attribute value</em> -(03) </wsf:AttributeNode></pre></div></div><p> - The following describes additional constraints on the outline - listed above: - </p><dl><dt class="label"> wsf:AttributeNode </dt><dd><p> - This element is used to serialize an attribute node in a - node-set and MUST contain the value portion of the attribute node. - </p></dd><dt class="label"> wsf:AttributeNode/@name </dt><dd><p> - This attribute MUST be the qualified name of the attribute node. - </p></dd></dl><p> - Text nodes are serialized in the following form: - </p><div class="exampleOuter"><div class="exampleInner"><pre>(01) <wsf:TextNode> -(02) <em>text value</em> -(03) </wsf:TextNode></pre></div></div><p> - The following describes additional constraints on the - outline listed above: - </p><dl><dt class="label"> wsf:TextNode </dt><dd><p> - This element is used to serialize a text node in a node-set - and MUST contain the text value. - </p></dd></dl><p>Given the following XML as an example document.</p><div class="exampleOuter"><div class="exampleInner"><pre>(01) <a xmlns="example"> -(02) <b>1</b> -(03) <c x="y">2</c> -(04) </a></pre></div></div><p> - The result of the XPath "/a/b | /a/b/text() | /a/c/@x" would - be serialized as the following: - </p><div class="exampleOuter"><div class="exampleInner"><pre>(01) <wsf:Value> -(02) <b>1</b> -(03) <wsf:TextNode>1</wsf:TextNode> -(04) <wsf:AttributeNode name="x">y</wsf:AttributeNode> -(05) </wsf:Value></pre></div></div><p>The nodes in the node-set MAY be serialized in any order.</p><p> - The namespace bindings are evaluated against any namespace - declarations that are in scope where the expression appears within the SOAP - message. - Note that the evaluation of expressions that rely on such context - dependent bindings is fragile in the face of transformations that alter - namespace prefixes. Such transformations might occur during the - transmission, processing, storage, or retrieval of a request. Clients - that wish to isolate expressions from the effects of any changes to the - namespace prefixes in the containing SOAP message are advised to - construct expressions in a manner that avoids the use of namespace - prefixes. For example, use an expression such as - "/a[namespace-uri()='http://www.example.com']" not "/ns1:a". + The serialization and context rules defined by the XPath Level 1 + language apply to the XPath 1.0 language as well. </p></div><div class="div1"> <h2><a name="Faults" id="Faults"/>8 Faults</h2><p> All fault messages defined in this specification MUST be sent @@ -860,7 +925,7 @@ doing so the endpoint is indicating that the corresponding WS-Fragment features are supported by that endpoint. </p><div class="div2"> -<h3><a name="iddiv2_1_1401" id="iddiv2_1_1401"/>9.1 Fragment Assertion</h3><p> +<h3><a name="iddiv2_1_1939" id="iddiv2_1_1939"/>9.1 Fragment Assertion</h3><p> The mechanism for indicating that a binding or endpoint conforms to the WS-Fragment specification is through the use of the Web Services Policy - Framework <a href="#wspolicy">[WS-Policy]</a> and Web Services Policy - @@ -935,7 +1000,7 @@ Yves Lafon (W3C/ERCIM). </p></div><div class="div1"> <h2><a name="refs" id="refs"/>11 References</h2><div class="div2"> -<h3><a name="iddiv2_1_1454" id="iddiv2_1_1454"/>11.1 Normative References</h3><dl><dt class="label"><a name="RFC2119" id="RFC2119"/>RFC 2119</dt><dd><a href="http://www.ietf.org/rfc/rfc2119.txt"><cite> +<h3><a name="iddiv2_1_1992" id="iddiv2_1_1992"/>11.1 Normative References</h3><dl><dt class="label"><a name="RFC2119" id="RFC2119"/>RFC 2119</dt><dd><a href="http://www.ietf.org/rfc/rfc2119.txt"><cite> Key words for use in RFCs to Indicate Requirement Levels </cite></a> , S. Bradner, Author. @@ -1104,4 +1169,6 @@ <a href="http://www.w3.org/Bugs/Public/show_bug.cgi?id=8191">8191</a></td></tr><tr><td> 2010/01/28 </td><td> DD </td><td> Added resolution of issue <a href="http://www.w3.org/Bugs/Public/show_bug.cgi?id=8196">8196</a></td></tr><tr><td> 2010/02/10 </td><td> DD </td><td> Added resolution of issue <a href="http://www.w3.org/Bugs/Public/show_bug.cgi?id=8160">8160</a></td></tr><tr><td> 2010/02/10 </td><td> DD </td><td> Added resolution of issue - <a href="http://www.w3.org/Bugs/Public/show_bug.cgi?id=9032">9032</a></td></tr></tbody></table></div></div></body></html> \ No newline at end of file + <a href="http://www.w3.org/Bugs/Public/show_bug.cgi?id=9032">9032</a></td></tr><tr><td> 2010/03/02 </td><td> DD </td><td> Added resolution of issue + <a href="http://www.w3.org/Bugs/Public/show_bug.cgi?id=8185">8185</a>, + <a href="http://www.w3.org/Bugs/Public/show_bug.cgi?id=8193">8193</a></td></tr></tbody></table></div></div></body></html> \ No newline at end of file Index: wsfrag.xml =================================================================== RCS file: /w3ccvs/WWW/2002/ws/ra/edcopies/wsfrag.xml,v retrieving revision 1.54 retrieving revision 1.55 diff -u -d -r1.54 -r1.55 --- wsfrag.xml 24 Feb 2010 15:04:00 -0000 1.54 +++ wsfrag.xml 3 Mar 2010 02:25:15 -0000 1.55 @@ -507,6 +507,219 @@ not modify the base WS-Transfer behavior. </p> + <div2 id="IdResSubset"> + <head>Identification of a Resource Subset</head> + + <p> + The WS-Fragment Dialect is used to identify a portion of a resource + representation to update. The WS-Transfer Get and Put operations have + an Expression that allows a requester to specify which subset of the + resource is being modified. Except in the cases listed below, the + Expression MUST evaluate to a single node within the representation. + This avoids any issues that might occur due to updating multiple + portions of a resource within one invocation - in other words, + "batching" is prohibited. There are however a few special cases + that need to be taken into account: + </p> + + <ulist> + <item> + <p> + An Expression that evaluates to the root of the resource + representation might not result in any nodes being returned from the + Expression processor. For example, an XPath expression of "/" on an + empty resource would return an empty node-set. However, to allow + for requesters to specify the root (implying the entire document), + Expression Languages (and supporting services) that wish to + support this concept might need to make special allowances for this + situation. Each Expression Language would need to call out this + special expression. + </p> + </item> + + <item> + <p> + While WS-Fragment doesn't support batching, there are times when + a requester might need to act upon an entire sequence of elements + (i.e. a list of elements of the same QName that are all siblings). + For example, a requester wanting to delete all children of an + element. Rather than requiring the requester to send a series of + WS-Transfer Put requests to delete each individual child element, + WS-Fragment allows for Expression Languages (and services) to + identify and act upon the sequence as one entity. + </p> + </item> + </ulist> + + <p> + If an Expression does evaluate to more than one node then, except for + the cases listed above, the implementation MUST process only the + first selected node. + </p> + + <p> + For the purposes of this specification, attributes are treated as + single strings - multi-value attributes are not supported. + </p> + </div2> + + <div2 id="FragSer"> + <head>Fragment Serialization</head> + + <p> + When using the WS-Fragment Dialect, subsets of resource representations + are serialized into the Get response and Put request messages. To + ensure that the receiver of those messages can unambiguously parse the + data into the proper XML entities, this specification defines the + following rules for serializing XML fragments. + </p> + + <p> + Expressions MUST evaluate to one of four possible types: a node-set, + a Boolean, a Number or a String. The latter three types are the + results of evaluating a computed expression. When they appear in a + message they are serialized by performing the following conversion and + then wrapping the result in the wsf:Value element: + </p> + + <ulist> + <item> + <p>Boolean - converted to an xs:boolean</p> + </item> + + <item> + <p>Number - converted to an xs:double</p> + </item> + + <item> + <p>String - converted to an xs:string</p> + </item> + </ulist> + + <p> + A node-set is zero or more elements, attributes or text values of + elements. A node-set is serialized into XML by concatenating each + node and enclosing it in the wsf:Value wrapper XML element for which + schema validation is suppressed. Element nodes in a node-set are + serialized directly into their XML representation. For attributes + and text nodes in the node-set, a wrapper element is used to + enclose these values to distinguish them from other such nodes in + the serialized result. + </p> + + <p> + Attribute nodes in XPath are represented in the following form: + </p> + + <example> + <eg>name="value"</eg> + </example> + + <p> + Serialization of an attribute node separates the name from + the value using the following element: + </p> + + <example> + <eg>(01) <wsf:AttributeNode name="<emph>xs:QName</emph>"> +(02) <emph>attribute value</emph> +(03) </wsf:AttributeNode></eg> + </example> + + <p> + The following describes additional constraints on the outline + listed above: + </p> + + <glist> + <gitem> + <label> wsf:AttributeNode </label> + <def> + <p> + This element is used to serialize an attribute node in a + node-set and MUST contain the value portion of the attribute node. + </p> + </def> + </gitem> + + <gitem> + <label> wsf:AttributeNode/@name </label> + <def> + <p> + This attribute MUST be the qualified name of the attribute node. + </p> + </def> + </gitem> + </glist> + + <p> + Text nodes are serialized in the following form: + </p> + + <example> + <eg>(01) <wsf:TextNode> +(02) <emph>text value</emph> +(03) </wsf:TextNode></eg> + </example> + + <p> + The following describes additional constraints on the + outline listed above: + </p> + + <glist> + <gitem> + <label> wsf:TextNode </label> + <def> + <p> + This element is used to serialize a text node in a node-set + and MUST contain the text value. + </p> + </def> + </gitem> + </glist> + + <p>Given the following XML as an example document.</p> + + <example> + <eg>(01) <a xmlns="example"> +(02) <b>1</b> +(03) <c x="y">2</c> +(04) </a></eg> + </example> + + <p> + The result of the XPath "/a/b | /a/b/text() | /a/c/@x" would + be serialized as the following: + </p> + + <example> + <eg>(01) <wsf:Value> +(02) <b>1</b> +(03) <wsf:TextNode>1</wsf:TextNode> +(04) <wsf:AttributeNode name="x">y</wsf:AttributeNode> +(05) </wsf:Value></eg> + </example> + + <p>The nodes in the node-set MAY be serialized in any order.</p> + + <p> + The namespace bindings are evaluated against any namespace + declarations that are in scope where the expression appears within + the SOAP message. + Note that the evaluation of expressions that rely on such context + dependent bindings is fragile in the face of transformations that alter + namespace prefixes. Such transformations might occur during the + transmission, processing, storage, or retrieval of a request. Clients + that wish to isolate expressions from the effects of any changes to the + namespace prefixes in the containing SOAP message are advised to + construct expressions in a manner that avoids the use of namespace + prefixes. For example, use an expression such as + "/a[namespace-uri()='http://www.example.com']" not "/ns1:a". + </p> + + </div2> + <div2 id="Get"> <head>Get</head> <p> @@ -704,29 +917,104 @@ <label> <kw>[Body]</kw>/wst:Put/wsf:Fragment/wsf:Expression@Mode="http://www.w3.org/&wsfra.nsprefix;/ws-fra/Modes/Replace" </label> <def> <p> - When the Mode attribute is set to a value of - "http://www.w3.org/&wsfra.nsprefix;/ws-fra/Modes/Replace" the resource - representation specified within the Value element MUST replace the - entire resource representation referenced by the children of the - Expression element, if it exists. + This Mode value indicates that the children of the Value element + MUST be added to the resource representation in place of the + fragment referenced by the children of the Expression element. + </p> + <p> + This Mode value has the net effect of doing a "delete" on the + referenced fragment, followed by an "insert" on the fragment's + parent. If the referenced fragment is already absent then + the "insert" operation is still performed. + </p> + <p> + If the Value element is not present then this Mode MUST simply remove + the referenced fragment. If the fragment is already absent, or if + the Expression evaluates to an empty fragment, then this operation + MUST have no effect. If the implementation is schema aware + and it detects that the Expression is not valid per the schema then a + wsf:InvalidExpression fault MUST be generated. + </p> + <p> + When this Mode value is used the Value element MUST be present. </p> </def> </gitem> <gitem> - <label> <kw>[Body]</kw>/wst:Put/wsf:Fragment/wsf:Expression@Mode="http://www.w3.org/&wsfra.nsprefix;/ws-fra/Modes/Insert" </label> + <label> <kw>[Body]</kw>/wst:Put/wsf:Fragment/wsf:Expression@Mode="http://www.w3.org/&wsfra.nsprefix;/ws-fra/Modes/Add" </label> <def> <p> - When the Mode attribute is set to a value of - "http://www.w3.org/&wsfra.nsprefix;/ws-fra/Modes/Insert" the resource - representation specified within the Value element MUST be added to - the resource representation. If the expression targets a repeated - element (maxOccurs > 1), the fragment MUST be added at the end. If - the expression targets a non-repeated element (maxOccurrs = 1) that - already exists, the resource MUST generate a - wst:InvalidRepresentation fault. If the expression targets an - existing item of a repeated element, the fragment MUST be added - before the existing item. + This Mode value indicates that the children of the Value element + MUST be added to the resource representation relative to the + fragment referenced by the children of the Expression element. + </p> + <p> + If the Value element contains an attribute node then the attribute + MUST be added to the referenced element. If an attribute with + that name already exists then a wst:InvalidRepresentation fault + MUST be generated. + </p> + <p> + If the Value element contains a fragment that is not an + attribute node, the children of the Value element are added as + children to the referenced fragment. + </p> + <p> + When adding a child element and a child element of that QName + already exists, the new element MUST be added to the end of that + sequence of child elements. If the requester wants to ensure + that only a single instance of that child element is present + it can use the "Replace" instead. + </p> + <p> + While schema validation is not required of resource managers, + since resources are only allowed to have a single root element, + attempts to "Add" a second root element MUST generate a + wst:InvalidRepresentation fault. + </p> + <p> + When this Mode value is used the Value element MUST be present. + </p> + </def> + </gitem> + + <gitem> + <label> <kw>[Body]</kw>/wst:Put/wsf:Fragment/wsf:Expression@Mode="http://www.w3.org/&wsfra.nsprefix;/ws-fra/Modes/InsertBefore" </label> + <def> + <p> + This Mode value indicates that the children of the Value element + MUST be inserted immediately before (as a sibling to) the fragment + referenced by the children of the Expression element. Note, this + Mode MUST NOT be used for attributes. + </p> + <p> + If the implementation is schema aware and it detects that the + Expression does not reference a sequence then it MUST generate + a wst:InvalidRepresentation fault. + </p> + <p> + When this Mode value is used the Value element MUST be present. + </p> + </def> + </gitem> + + <gitem> + <label> <kw>[Body]</kw>/wst:Put/wsf:Fragment/wsf:Expression@Mode="http://www.w3.org/&wsfra.nsprefix;/ws-fra/Modes/InsertAfter" </label> + <def> + <p> + This Mode value indicates that the children of the Value element + MUST be inserted immediately after (as a sibling to) the fragment + referenced by the children of the Expression element. Note, this + Mode MUST NOT be used for attributes. + </p> + <p> + If the implementation is schema aware and it detects that the + Expression does not reference a sequence then it MUST generate + a wst:InvalidRepresentation fault. + </p> + <p> + When this Mode value is used the Value element MUST be present. </p> </def> </gitem> @@ -741,8 +1029,7 @@ MUST be deleted from the resource representation. </p> <p> - Note: the Value element MUST NOT be present if this attribute - has a value of "http://www.w3.org/&wsfra.nsprefix;/ws-fra/Modes/Remove". + When this Mode value is used the Value element MUST NOT be present. </p> </def> </gitem> @@ -752,25 +1039,18 @@ <def> <p> This OPTIONAL element contains the fragment resource representation - corresponding to the subset of the resource identified by the - wsf:Expression element. + to be added to the resource representation. If the contents of this element are invalid, a wst:InvalidRepresentation fault MUST be generated. </p> <p> - When Mode is "http://www.w3.org/&wsfra.nsprefix;/ws-fra/Modes/Insert" - or "http://www.w3.org/&wsfra.nsprefix;/ws-fra/Modes/Replace", any - optional values (element or attributes) within this subset that are + Any optional values (element or attributes) within this subset that are not specified in the Value element MUST be set to a resource-specific default value. </p> <p> - This element MUST NOT be present if the Mode attribute has a value - of "http://www.w3.org/&wsfra.nsprefix;/ws-fra/Modes/Remove". This element - MUST be present if the Mode attribute has a value of either - "http://www.w3.org/&wsfra.nsprefix;/ws-fra/Modes/Replace" or - "http://www.w3.org/&wsfra.nsprefix;/ws-fra/Modes/Insert". When present, - this element MAY be empty. + The children of this element MUST be serialized according to the + rules defined in <specref ref="FragSer"/>. </p> </def> </gitem> @@ -796,6 +1076,216 @@ <p> There are no additional constraints beyond what WS-Transfer defines. </p> + + <p> + The following table elaborates on the expected behavior of a + WS-Fragment Put request using the XPath Level 1 language. + </p> + + <p> + Given a resource whose schema is defined as: + </p> + + <example> + <eg><a foo="xs:integer"? bar="xs:integer"? > + ( <b> <c/> </b> * | <c/> ) +</a></eg> + </example> + + <p> + Note: for the sake of clarity, some element names have a ' or " to + indicate that it is a different instance of that type of element. + </p> + + <table border="1"> + <tbody> + <tr> + <td>Initial Representation</td> + <td>@Mode</td> + <td>Expression</td> + <td>Value</td> + <td>Final Represenation</td> + </tr> + + <tr> + <td></td> + <td>Add</td> + <td>/</td> + <td><a/></td> + <td><a/></td> + </tr> + + <tr> + <td></td> + <td>Replace</td> + <td>/</td> + <td><a/></td> + <td><a/></td> + </tr> + + <tr> + <td><a/></td> + <td>Add</td> + <td>/</td> + <td><a'/></td> + <td>fault</td> + </tr> + + <tr> + <td><a/></td> + <td>Replace</td> + <td>/a</td> + <td><a'/></td> + <td><a'/></td> + </tr> + + <tr> + <td><a/></td> + <td>Add</td> + <td>/a</td> + <td><wsf:AttributeNode name="foo">1</wsf:AttributeNode></td> + <td><a foo="1"/></td> + </tr> + + <tr> + <td><a foo="1"/></td> + <td>Add</td> + <td>/a</td> + <td><wsf:AttributeNode name="foo">2</wsf:AttributeNode></td> + <td>fault</td> + </tr> + + <tr> + <td><a foo="1"/></td> + <td>Replace</td> + <td>/a@foo</td> + <td><wsf:AttributeNode name="foo">2</wsf:AttributeNode></td> + <td><a foo="2"/></td> + </tr> + + <tr> + <td><a foo="1"/></td> + <td>Replace</td> + <td>/a@foo</td> + <td><wsf:AttributeNode name="bar">2</wsf:AttributeNode></td> + <td><a bar="2"/></td> + </tr> + + <tr> + <td><a/></td> + <td>Replace</td> + <td>/a@foo</td> + <td><wsf:AttributeNode name="bar">2</wsf:AttributeNode></td> + <td><a bar="2"/></td> + </tr> + + <tr> + <td><a foo="1"/></td> + <td>Remove</td> + <td>/a@foo</td> + <td></td> + <td><a/></td> + </tr> + + <tr> + <td><a/></td> + <td>Add</td> + <td>/a</td> + <td><b/></td> + <td><a> <b/> </a></td> + </tr> + + <tr> + <td><a> <b/> </a></td> + <td>Add</td> + <td>/a</td> + <td><b'/></td> + <td><a> <b/> <b'/> </a></td> + </tr> + + <tr> + <td><a> <b/> </a></td> + <td>Replace</td> + <td>/a/b</td> + <td><b'/></td> + <td><a> <b'/> </a></td> + </tr> + + <tr> + <td><a/></td> + <td>Replace</td> + <td>/a/b</td> + <td><b/></td> + <td><a> <b/> </a></td> + </tr> + + <tr> + <td><a> <b/> <b'> </a></td> + <td>InsertAfter</td> + <td>/a/b or /a/b[last()]</td> + <td><b"/></td> + <td><a> <b/> <b'> <b"/> </a></td> + </tr> + + <tr> + <td><a> <b/> <b'> </a></td> + <td>InsertBefore</td> + <td>/a/b or /a/b[1]</td> + <td><b"/></td> + <td><a> <b"/> <b> <b'/> </a></td> + </tr> + + <tr> + <td><a> <b/> <b'> </a></td> + <td>Replace</td> + <td>/a/b</td> + <td><b"/></td> + <td><a> <b"/> </a></td> + </tr> + + <tr> + <td><a> <b/> <b'> </a></td> + <td>Replace</td> + <td>/a/b[1]</td> + <td><b"/></td> + <td><a> <b"/> <b'> </a></td> + </tr> + + <tr> + <td><a> <b/> </a></td> + <td>Remove</td> + <td>/a/b</td> + <td></td> + <td><a/></td> + </tr> + + <tr> + <td><a> <b/> <b'> </a></td> + <td>Remove</td> + <td>/a/b</td> + <td></td> + <td><a/></td> + </tr> + + <tr> + <td><a> <b/> <b'> </a></td> + <td>Remove</td> + <td>/a/b[1]</td> + <td></td> + <td><a> <b'> </a></td> + </tr> + + <tr> + <td><a> <b/> <b'> </a></td> + <td>Replace</td> + <td>/a/b</td> + <td><c/></td> + <td><a> <c> </a></td> + </tr> + + </tbody> + </table> + </div2> <div2 id="Delete"> @@ -1193,37 +1683,12 @@ </example> <p> - In the case of a Put operation, if the XPath expression selects more - than one node, the implementation MUST process only the first selected - node. This allows simple implementations to avoid the overhead of - checking the remainder of the resource document for a possible match. - </p> - - <p> Conformant implementations MAY supply additional functions and capabilities, but MUST adhere to the minimum behavior described above. </p> <p> The XPath Level 1 language does not support computed values. - Text and attribute nodes MUST be serialized in the GetResponse - message using the same serialization as for the XPath 1.0 language. - This serialization mechanism MUST NOT be used in the PutRequest message. - </p> - - <p> - The namespace bindings are evaluated against any namespace - declarations that are in scope where the expression appears within the SOAP - message. - Note that the evaluation of expressions that rely on such context - dependent bindings is fragile in the face of transformations that alter - namespace prefixes. Such transformations might occur during the - transmission, processing, storage, or retrieval of a request. Clients - that wish to isolate expressions from the effects of any changes to the - namespace prefixes in the containing SOAP message are advised to - construct expressions in a manner that avoids the use of namespace - prefixes. For example, use an expression such as - "/a[namespace-uri()='http://www.example.com']" not "/ns1:a". </p> </div1> @@ -1283,158 +1748,10 @@ </p> <p> - In the case of a Put operation if the XPath expression selects more - than one node, the implementation MUST process only the first selected - node. This allows simple implementations to avoid the overhead of - checking the remainder of the resource document for a possible match. - </p> - - <p> - The remainder of this section defines an XML serialization mechanism - that MUST be used when constructing a GetResponse message. Since the - PutRequest message MUST NOT be used to modify more than one target, - these serialization rules MUST NOT be used in a PutRequest message. - </p> - - <p> - Expressions MUST evaluate to one of four - possible types: a node-set, a Boolean, a number or a string. The - latter three types are the results of evaluating a computed expression. - When they appear in a GetResponse message they are serialized - by performing the following conversion and then wrapping the result in - the wsf:Value element: - </p> - <ulist> - <item> <p>Boolean - converted to an xs:boolean</p> </item> - <item> <p>string - convert to an xs:string</p> </item> - <item> <p>number - convert to an xs:double</p> </item> - </ulist> - - <p> - A node-set is zero or more elements, attributes or text - values of elements. A node-set is serialized into XML by - concatenating each - node and enclosing it in the wsf:Value wrapper XML element for which - schema - validation is suppressed. Element nodes in a node-set are serialized - directly - into their XML representation. For attributes and text nodes in the - node-set, - a wrapper element is used to enclose these values to distinguish them from - other such nodes in the serialized result. - </p> - - <p> - Attribute nodes in XPath are represented in the following form: - </p> - - <example> - <eg>name="value"</eg> - </example> - - <p> - Serialization of an attribute node separates the name from - the value using the following element: - </p> - - <example> - <eg>(01) <wsf:AttributeNode name="<emph>xs:QName</emph>"> -(02) <emph>attribute value</emph> -(03) </wsf:AttributeNode></eg> - </example> - - <p> - The following describes additional constraints on the outline - listed above: - </p> - - <glist> - <gitem> - <label> wsf:AttributeNode </label> - <def> - <p> - This element is used to serialize an attribute node in a - node-set and MUST contain the value portion of the attribute node. - </p> - </def> - </gitem> - - <gitem> - <label> wsf:AttributeNode/@name </label> - <def> - <p> - This attribute MUST be the qualified name of the attribute node. - </p> - </def> - </gitem> - </glist> - - <p> - Text nodes are serialized in the following form: - </p> - - <example> - <eg>(01) <wsf:TextNode> -(02) <emph>text value</emph> -(03) </wsf:TextNode></eg> - </example> - - <p> - The following describes additional constraints on the - outline listed above: - </p> - - <glist> - <gitem> - <label> wsf:TextNode </label> - <def> - <p> - This element is used to serialize a text node in a node-set - and MUST contain the text value. - </p> - </def> - </gitem> - </glist> - - <p>Given the following XML as an example document.</p> - - <example> - <eg>(01) <a xmlns="example"> -(02) <b>1</b> -(03) <c x="y">2</c> -(04) </a></eg> - </example> - - <p> - The result of the XPath "/a/b | /a/b/text() | /a/c/@x" would - be serialized as the following: + The serialization and context rules defined by the XPath Level 1 + language apply to the XPath 1.0 language as well. </p> - - <example> - <eg>(01) <wsf:Value> -(02) <b>1</b> -(03) <wsf:TextNode>1</wsf:TextNode> -(04) <wsf:AttributeNode name="x">y</wsf:AttributeNode> -(05) </wsf:Value></eg> - </example> - - <p>The nodes in the node-set MAY be serialized in any order.</p> - <p> - The namespace bindings are evaluated against any namespace - declarations that are in scope where the expression appears within the SOAP - message. - Note that the evaluation of expressions that rely on such context - dependent bindings is fragile in the face of transformations that alter - namespace prefixes. Such transformations might occur during the - transmission, processing, storage, or retrieval of a request. Clients - that wish to isolate expressions from the effects of any changes to the - namespace prefixes in the containing SOAP message are advised to - construct expressions in a manner that avoids the use of namespace - prefixes. For example, use an expression such as - "/a[namespace-uri()='http://www.example.com']" not "/ns1:a". - </p> - </div1> <div1 id="Faults"> @@ -2180,6 +2497,14 @@ <loc href="http://www.w3.org/Bugs/Public/show_bug.cgi?id=9032">9032</loc> </td> </tr> + <tr> + <td> 2010/03/02 </td> + <td> DD </td> + <td> Added resolution of issue + <loc href="http://www.w3.org/Bugs/Public/show_bug.cgi?id=8185">8185</loc>, + <loc href="http://www.w3.org/Bugs/Public/show_bug.cgi?id=8193">8193</loc> + </td> + </tr> </tbody> </table> </div1>
Received on Wednesday, 3 March 2010 02:25:20 UTC