Wiem, że to starszy post, ale natknąłem się na niego i niestety odpowiedź Ankit nie była dla mnie bardzo pomocna. W najlepszym przypadku skupiono się na tym, czy dane wejściowe są poprawną składnią XML, a nie czy są zgodne ze schematem, który był częścią OP.
Znalazłem libxmljs jako najlepsze rozwiązanie dla tego, czego szukasz. Można parsować, sprawdzać poprawność podstawowego łańcucha, a także szczegółową strukturę.
Przykładem sprawdzanie składni XML byłoby coś jak:
program.isValidSyntaxStructure = function (text) {
try {
libxmljs.parseXml(text);
} catch (e) {
return false;
}
return true;
};
Przykładem sprawdzenie konkretnej struktury/schematu byłoby coś jak:
var xsd = '<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"><xs:element name="comment" type="xs:string"/></xs:schema>';
var xml_valid = '<?xml version="1.0"?><comment>A comment</comment>';
var xml_invalid = '<?xml version="1.0"?><commentt>A comment</commentt>';
var xsdDoc = libxml.parseXml(xsd);
var xmlDocValid = libxml.parseXml(xml_valid);
var xmlDocInvalid = libxml.parseXml(xml_invalid);
assert.equal(xmlDocValid.validate(xsdDoc), true);
assert.equal(xmlDocInvalid.validate(xsdDoc), false);
pierwsze ogniwo do modułów analizatora składni XML jest teraz uszkodzony. – spoulson
@spoulson dzięki za zwrócenie mi tej uwagi. Rozwiązany, aby wskazywać bezpośrednio na stronę npm. –