XmlNode.Sync
Overview¶
XmlNode[] XmlNode.Sync ( xpath, input, [ hashCallback ], [ removedNodes ] )
Arguments¶
String xpath
XPath of node to be append
XmlNode[] input
Array of nodes to be synchronize
Function hashCallback
Hash function to compare nodes. Can be omitted.
XmlNode[] removedNodes
Instance of array to add removed nodes. Can be omitted.
Remarks¶
Synchornization is based on input nodes and performs following actions on specified xpath;
- Node comparison done with specified hash function which returns unique identifier of node. If not specified uses the node instance.
- Non-existing nodes on input auto created in current node.
- Existing nodes in both values are copied.
- Non-existing nodes on input are removed from current node. Optionally list of removed added on "removedNodes" parameter.
Examples¶
Synchronize "Source" and "Target" node contents
var questions = $Xml.SelectAll('Source/Questions/Question');
$Xml.Sync('Target/Questions/Question', questions, function() {
return this.Evaluate('Id');
});
Performs xquery and merges results with current nodes
$Xml.SelectAll('Standards/Standard', function() {
var questions = $XmlRepository.QueryXml('for $q in InternalAudit//Question\
where $q/Standards/Standard/Standard=$standard and $q/Departments/Department=$department\
return\
<Question>\
{ $q/Id }\
{ $q/Criteria }\
{ $q/Expectation }\
</Question>', {
standard : this.Evaluate('Standard'),
department : $Xml.Evaluate('Department')
});
this.Sync('Questions/Question', questions, function() {
return this.Evaluate('Id');
});
});