Knockout - Bootstrap SelectPicker
Shows how to bind Bootstrap Select from https://github.com/silviomoreto/bootstrap-select and Knockout for Bootstrap 3 and knockout 3
HTML
<script src="http://knockoutjs.com/downloads/knockout-3.0.0.js"></script>
<script src="https://code.jquery.com/jquery-2.2.1.min.js"></script>
<link rel="stylesheet" href="//getbootstrap.com/dist/css/bootstrap.min.css">
<script src="//getbootstrap.com/dist/js/bootstrap.js"></script>
<link rel="stylesheet" href="//github.com/davidstutz/bootstrap-multiselect/blob/master/dist/css/bootstrap-multiselect.css">
<script src="//rawgit.com/davidstutz/bootstrap-multiselect/master/dist/js/bootstrap-multiselect.js"></script>
<script src="https://orionhub.org/file/BeniaminoBaggins-OrionContent/xml2json/xml2json.min.js"></script>
<button data-bind="click: deselect" >deselect option (singleselect)</button>
JavaScript
function xml2json_translator(){var e={err:function(e){alert("Error: "+e)},toObj:function(n,t){if(9==n.nodeType)return e.toObj(n.documentElement,t);var r={};if(!t||t instanceof Array)return 1==n.nodeType?r[n.nodeName]=e.toObj(n,r):e.err("unhandled node type: "+n.nodeType),r;if(1==n.nodeType){if(n.attributes.length)for(var o=0;o<n.attributes.length;o++)t[n.nodeName+"@"+n.attributes[o].nodeName]=n.attributes[o].nodeValue;if(n.firstChild){for(var i=0,a=0,l=!1,d=!1,f={},s=n.firstChild;s;s=s.nextSibling)1==s.nodeType?(l=!0,f[s.nodeName]=f[s.nodeName]?f[s.nodeName]+1:1,f[s.nodeName]>1&&(d=!0)):3==s.nodeType&&s.nodeValue.match(/[^ \f\n\r\t\v]/)?i++:4==s.nodeType&&a++;if(l&&i&&(d=!0),l&&a&&(d=!0),i&&a&&(d=!0),a>1&&(d=!0),l&&!d){e.removeWhite(n);for(var s=n.firstChild;s;s=s.nextSibling)3==s.nodeType?r["#text"]=e.escape(s.nodeValue):4==s.nodeType?r["#cdata"]=e.escape(s.nodeValue):r[s.nodeName]?r[s.nodeName]instanceof Array?r[s.nodeName][r[s.nodeName].length]=e.toObj(s,r):r[s.nodeName]=[r[s.nodeName],e.toObj(s,r)]:r[s.nodeName]=e.toObj(s,r)}else if(d){r=[],e.removeWhite(n);for(var s=n.firstChild;s;s=s.nextSibling)3==s.nodeType?r[r.length]=e.escape(s.nodeValue):4==s.nodeType?r[r.length]={"#cdata":e.escape(s.nodeValue)}:r[r.length]=e.toObj(s,r)}else i?r=e.escape(e.innerXml(n)):a&&(e.removeWhite(n),r["#cdata"]=e.escape(n.firstChild.nodeValue))}n.firstChild||(r=null)}else e.err("unhandled node type: "+n.nodeType);return r},toJson:function(n,t){var r="";if(n instanceof Array){for(var o=0,i=n.length;i>o;o++){var a="";"string"==typeof n[o]&&(a=t+" "),n[o]=a+e.toJson(n[o],t+" ")}r+="["+(n.length>1?"\n"+n.join(",\n")+"\n"+t:n.join(""))+"]"}else if(null==n)r+="null";else if("string"==typeof n)r+='"'+n.toString()+'"';else if("object"==typeof n){r+=t+"{";var o=0;for(var l in n)o++;for(var l in n)r+="\n"+t+' "'+l+'":'+e.toJson(n[l],t+" "),r+=o>1?",":"\n"+t,o--;r+="}"}else r+=n.toString();return r},innerXml:function(e){var n="";if("innerHTML"in e)n=e.innerHTML;else for(var...