NPM 中的任何 XML 库是否支持针对 XSD 模式验证 XML?
我会看自己,但是:
$ npm search xml 2>/dev/null | wc -l
212
注意:xsd
包裹不是它看起来的样子,而且node-xerces
是坏的/空的。
NPM 中的任何 XML 库是否支持针对 XSD 模式验证 XML?
我会看自己,但是:
$ npm search xml 2>/dev/null | wc -l
212
注意:xsd
包裹不是它看起来的样子,而且node-xerces
是坏的/空的。
Hij1nx (Paolo Fragomeni) 指出我在https://github.com/polotek/libxmljs
经过半小时试图弄清楚API,我有一个解决方案:
#!/usr/local/bin/node
var x = require('libxmljs');
var xsd = '<?xml version="1.0" encoding="utf-8" ?><xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://example.com/XMLSchema/1.0" targetNamespace="http://example.com/XMLSchema/1.0" elementFormDefault="qualified" attributeFormDefault="unqualified"><xs:element name="foo"></xs:element></xs:schema>'
var xsdDoc = x.parseXmlString(xsd);
var xml0 = '<?xml version="1.0" encoding="UTF-8"?><foo xmlns="http://example.com/XMLSchema/1.0"></foo>';
var xmlDoc0 = x.parseXmlString(xml0);
var xml1 = '<?xml version="1.0" encoding="UTF-8"?><bar xmlns="http://example.com/XMLSchema/1.0"></bar>';
var xmlDoc1 = x.parseXmlString(xml1);
var result0 = xmlDoc0.validate(xsdDoc);
console.log("result0:", result0);
var result1 = xmlDoc1.validate(xsdDoc);
console.log("result1:", result1);
这将产生输出:
result0: true
result1: false
我不知道这是否/如何与通过 URI 引用其他模式的模式一起使用。