如何使用RapidXML解析XSD文件

如何使用RapidXML解析XSD文件,xsd,rapidxml,Xsd,Rapidxml,RapidXML是否能够验证/解析XML文件及其相关模式,即XSD文件?我的假设是,XML解析器能够同时完成这两项工作。如果没有,为什么认为没有必要验证/分析关联的模式?我检查了RapidXML的文档,发现没有提到模式或xsd 我目前正在解析XML文件,如下所示: rapidxml::file<> xmlFile("BeerLog.xml"); rapidxml::xml_document<> doc; doc.parse<0>(xmlFile.d

RapidXML是否能够验证/解析XML文件及其相关模式,即XSD文件?我的假设是,XML解析器能够同时完成这两项工作。如果没有,为什么认为没有必要验证/分析关联的模式?我检查了RapidXML的文档,发现没有提到模式或xsd

我目前正在解析XML文件,如下所示:

  rapidxml::file<> xmlFile("BeerLog.xml");
  rapidxml::xml_document<> doc;
  doc.parse<0>(xmlFile.data());
rapidxml::file xmlFile(“BeerLog.xml”);
rapidxml::xml_文档文档;
parse(xmlFile.data());
下面的sudo代码可能会让您更好地了解我在寻找什么:

  rapidxml::file<> xmlFile("BeerLog.xml", "BeerLog.xsd");  
rapidxml::文件xmlFile(“BeerLog.xml”、“BeerLog.xsd”);
甚至:

  rapidxml::file<> xmlFile("BeerLog.xml");    
  rapidxml::file<> xsdFile("BeerLog.xsd");
  rapidxml::xml_document<> doc;
  doc.parse_with_schema<0>(xsdFile.data(), xmlFile.data());
rapidxml::file xmlFile(“BeerLog.xml”);
rapidxml::文件xsdFile(“BeerLog.xsd”);
rapidxml::xml_文档文档;
使用_模式解析_(xsdFile.data(),xmlFile.data());

您的印象是错误的,访问XML内容和根据方案进行验证是截然不同的主题,即使前者对后者有用。特别是light wight和fast解析器不支持验证,快速浏览文档可以发现:

W3C合规性。RapidXml不是W3C兼容的解析器,主要是因为它忽略DOCTYPE声明

此外,考虑到存在完全不同的方案语言(XSD、RNG、DTD等),即使支持一种方案语言也不意味着它就是您想要的方案语言


您还必须考虑到,有许多XML文件格式良好,不符合任何方案,但可能有人想要处理它们。

您的印象是错误的,访问XML内容和根据方案进行验证是两个截然不同的主题,即使前者对后者有用。特别是light wight和fast解析器不支持验证,快速浏览文档可以发现:

W3C合规性。RapidXml不是W3C兼容的解析器,主要是因为它忽略DOCTYPE声明

此外,考虑到存在完全不同的方案语言(XSD、RNG、DTD等),即使支持一种方案语言也不意味着它就是您想要的方案语言


您还必须考虑到,存在许多XML文件,这些文件的格式很好,不符合任何方案,但可能有人希望处理它们。

RapidXml是否可以独立验证/解析XSD?例如,rapidxml::file xmlFile(“BeerLog.xsd”)。我现在明白了,只有更多的重量级解析器,比如Xerces,可以独立地根据模式验证XML。RapidXml可以独立地验证/解析XSD吗?例如,rapidxml::file xmlFile(“BeerLog.xsd”)。我现在明白了,只有更多的重量级解析器,比如Xerces,才能根据模式独立地验证XML。