18

NPMのXMLライブラリのいずれかがXSDスキーマに対するXMLの検証をサポートしていますか?

私は自分自身に見えますが、:

$ npm search xml 2>/dev/null | wc -l
212

注:xsdパッケージは見た目とnode-xercesは異なり、壊れている/空です。

4

1 に答える 1

29

Hij1nx(Paolo Fragomeni)がhttps://github.com/polotek/libxmljsで私を指さしました

APIを理解しようとして30分後、解決策があります。

#!/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を介して他のスキーマを参照するスキーマで機能するかどうか/どのように機能するかはわかりません。

于 2013-02-14T09:30:22.343 に答える