| ||||
| ||||
собственно в веб браузере на javascript можно использовать парсер XML5, если да - то как ) | ||||
Ответы: | ||||
| ||||
Да, можно. Найдите в MSDN или в Интернете файл msxml.js и посмотрите на его структуру. Мне удалось найти версию этого файла для MSXML2.0 на VBScript: http://gama.fsv.cvut.cz/~soucek/dp/convert/dtd/ Но принцип, я думаю, Вы поймёте. Успехов! | ||||
| ||||
идея неплохая ... вопрос весь в только в том, что JS - это просто синтаксис ... а есть JS + IE и WSH не получается ... | ||||
| ||||
я не говорю о том что WSH низя использовать в JS, var wsh = new ActiveXObject(’WScript.Shell’) wsh.Exec(’calc.exe’); это работает как с помощью WSH на JS создать XMLDocument - вот чего не пойму но наверняка можно ;-) | ||||
| ||||
Вобщем-то в JS можно сделать все что угодно, даже через тот же ActiveX. Как описано в примерах создаватьобъекы DOMDocument нужной версии и делать все то же что можно делать на C++ через интерфейс IXMLDOMDocument/IXMLDOMDocument2. все это более чем подробно и с примерами описано в MSDN. Конечно имеется специфика, так что хотел бы уточнить какая именно задача стоит. Что именно нужно сделать в броузере пользователя? | ||||
| ||||
задач - пописать XML документ на JS в !браузере! это в тему http://www.cryptopro.ru/CryptoPro/forum/myforum.asp?q=1194 вот мой пример который аксес денайдид <html> <head> <title>Test</title> </head> <body> <input type=text id=a value=" GO " size=50> <input type=button name=btn onclick="f()" value=" GO "> </body> </html> <script language=javascript> // global variables var xmldoc; var xmldsig; var cert; // define the constants var CAPICOM_LOCAL_MACHINE_STORE = 1; var CAPICOM_CURRENT_USER_STORE = 2; var CAPICOM_STORE_OPEN_READ_ONLY = 0; var CAPICOM_STORE_OPEN_READ_WRITE = 1; var CAPICOM_CERTIFICATE_FIND_SHA1_HASH = 0; var DSIGNS = "xmlns:ds=’http://www.w3.org/2000/09/xmldsig#’"; function f() { cert = getCertificate(); flag = getXML("doc.xml"); signXML(); alert(2); } ///////// Set the signature for signing. //////// function getXML(fileName) { try { xmldoc = WScript.CreateObject("Msxml2.DOMDOcument.5.0"); } catch (e) { alert("Msxml2.DOMDOcument.5.0.\nInstallation of mxsml5 is required to run this app.\n"); return false; } try { xmldsig = WScript.CreateObject("Msxml2.MXDigitalSignature.5.0"); } catch (e) { alert("Msxml2.MXDigitalSignature.5.0.\nInstallation of mxsml5 is required to run this app.\n"); } xmldoc.async = false; xmldoc.preserveWhiteSpace = true; xmldoc.validateOnParse = false; xmldoc.resolveExternals = false; if (!xmldoc.load(fileName)) { alert("Can’t load "+ fileName + "\n"); return false; } xmldoc.setProperty("SelectionNamespaces", DSIGNS); xmldsig.signature = xmldoc.selectSingleNode(".//ds:Signature"); alert(xmldoc.selectSingleNode(".//ds:Signature")) return true; } function getCertificate() { try { var store = new ActiveXObject("CAPICOM.Store"); var cert = new ActiveXObject("CAPICOM.Certificate"); } catch (e) { alert("CAPICOM.Store.\nInstallation of CAPICOM.Store is required to run this app.\n"); } store.Open(CAPICOM_CURRENT_USER_STORE, "My", CAPICOM_STORE_OPEN_READ_WRITE); var Certificates = store.Certificates.Select("a", "b", false); var cert = null; if( Certificates.Count > 0 ) { cert = Certificates.Item(1); } return cert; } function signXML() { if (!xmldsig.signature) { alert("Invalid signature template\n"); return false; } var _key = cert.PrivateKey.ContainerName; document.all.a.value = _key; var oKey = xmldsig.createKeyFromCSP(1, "", _key, 0); try { var a = xmldsig.sign(oKey, 1); } catch (e) { alert(e.description); } } </script> | ||||
| ||||
Примеры о которых шла речь. xsltTest.js var oArgs = WScript.Arguments; if (oArgs.length == 0) { WScript.Echo ("Usage : cscript xslt.js xml xsl"); WScript.Quit(); } xmlFile = oArgs(0) + ".xml"; xslFile = oArgs(1) + ".xsl"; var xsl = new ActiveXObject("MSXML2.DOMDOCUMENT.4.0"); var xml = new ActiveXObject("MSXML2.DOMDocument.4.0"); xml.validateOnParse = false; xml.async = false; xml.load(xmlFile); if (xml.parseError.errorCode != 0) WScript.Echo ("XML Parse Error : " + xml.parseError.reason); xsl.async = false; xsl.load(xslFile); if (xsl.parseError.errorCode != 0) WScript.Echo ("XSL Parse Error : " + xsl.parseError.reason); //WScript.Echo (xml.transformNode(xsl.documentElement)); try { WScript.Echo (xml.transformNode(xsl.documentElement)); } catch(err) { WScript.Echo ("Transformation Error : " + err.number + "*" + err.description); } ____________________________________ XSLT.js main(); function main() { var doc = LoadDOM("test.xml"); var xsl = LoadDOM("test.xsl"); var str = doc.transformNode(xsl); alert("\ndoc.transformNode:\n"+str); var out = MakeDOM(null); doc.transformNodeToObject(xsl, out); alert("\ndoc.transformNodeToObject:\n"+out.xml); } function LoadDOM(file) { var dom; try { dom = MakeDOM(null); dom.load(file); } catch (e) { alert(e.description); } return dom; } function MakeDOM(progID) { if (progID == null) { progID = "msxml2.DOMDocument.4.0"; } var dom; try { dom = new ActiveXObject(progID); dom.async = false; dom.validateOnParse = false; dom.resolveExternals = false; } catch (e) { alert(e.description); } return dom; } function alert(str) { WScript.Echo(str); } __________________________________ test.js var xmlstr = "<object><name>apple</name><color>Red</color></object>"; var xsltstr = ’<?xml version="1.0"?>’ + ’<xsl:stylesheet ’ + ’ version="1.0" ’ + ’ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> ’+ ’ <xsl:output method="text"/> ’+ ’ <xsl:template match="/object"> ’+ ’ <xsl:value-of select="color"/> ’+ ’ <xsl:text> </xsl:text> ’+ ’ <xsl:value-of select="name"/> ’+ ’ </xsl:template> ’+ ’</xsl:stylesheet>’; var xmldom, xsltdom; try { xmldom = new ActiveXObject("MSXML2.DOMDocument.4.0"); xmldom.validateOnParse = true; xmldom.async = false; xmldom.resolveExternals = false; xmldom.loadXML(xmlstr); xsltdom = new ActiveXObject("MSXML2.DOMDocument.4.0"); xsltdom.validateOnParse = true; xsltdom.async = false; xsltdom.resolveExternals = false; xsltdom.loadXML(xsltstr); output = xmldom.transformNode(xsltdom); WScript.echo(output); } catch(err) { WScript.echo(err.description); } ________________________________ LoadXMLFile.js // Instantiate a DOM object. var doc = new ActiveXObject("msxml2.DOMDocument.4.0"); doc.async = false; doc.resolveExternals = false; doc.validateOnParse = false; // Load an XML file into the DOM instance. doc.load("test.xml"); // Display the content of the object. alert("doc: "+doc.xml); // Helper function: function alert(str) { WScript.Echo(str); } Все это было найдено в MSDN при беглом просмотре по ключевым словам "msxml.exe" и mxsxml.js | ||||
| ||||
атличные примеры ;-) только иногда и МСДН не работает ;-) см. выше | ||||
| ||||
MSDN значит не работает? ;) а так пробовали? http://msdn.microsoft.com кстати вот в нагрузку оттуда пример в котором на JS подписывается XML документ. http://msdn.microsoft.com/library/default.asp?url=/library/en-us/xmlsdk/html/dsigexamples_setrefjs.asp Сейчас к сожалению выш код посмотреть не могу, поскольку немного занят. Возможно позднее. | ||||