code: function(properties) {
          var body = '  <d:set>\n' +
              '   <d:prop>\n';
  
          for(var ii in properties) {
              if (!properties.hasOwnProperty(ii)) {
                  continue;
              }
  
              var property = this.parseClarkNotation(ii);
              var propName;
              var propValue = properties[ii];
              if (this.xmlNamespaces[property.namespace]) {
                  propName = this.xmlNamespaces[property.namespace] + ':' + property.name;
              } else {
                  propName = 'x:' + property.name + ' xmlns:x="' + property.namespace + '"';
              }
  
              // FIXME: hard-coded for now until we allow properties to
              // specify whether to be escaped or not
              if (propName !== 'd:resourcetype') {
                  propValue = dav._escapeXml(propValue);
              }
              body += '      <' + propName + '>' + propValue + '</' + propName + '>\n';
          }
          body +='    </d:prop>\n';
          body +='  </d:set>\n';
          return body;
      }
docs: Renders a "d:set" block for the given properties.
  
  @param {Object.<String,String>} properties
  @return {String} XML "<d:set>" block