我正在尝试加载SAML协议(protocol)架构(具体来说:https://www.oasis-open.org/committees/download.php/3407/oasis-sstc-saml-schema-protocol-1.1.xsd),但在执行此操作之后:schema=Nokogiri::XML::Schema(File.read('saml11_schema.xsd'))我得到这个输出:Nokogiri::XML::SyntaxErrorException:Element'{http://www.w3.org/2001/XMLSchema}element',att
我正在尝试使用Nokogiri根据十几个模式验证XML文档。目前我有一个导入所有其他模式的根模式文档,我对此进行了验证。我能否从XML文件本身指向每个模式文件,并让Nokogiri在XML文件中查找模式以进行验证? 最佳答案 引用多个模式以验证XML文件的正确方法是使用schemaLocation属性:对于文档中的每个namespace,您列出了一对以空格分隔的值:namespaceURI后跟关于在哪里可以找到该namespace的架构的“提示”。如果您为每个提示提供完整的URI,那么您可以像这样使用Nokogiri进行处理:req
我找到了几个关于如何根据模式验证xml文档的来源,但我有一个ruby应用程序,我需要在其中验证用户提供的模式本身是否是有效的模式。有没有办法让我检查这个?是否有用于验证XSD架构的XSD架构?或者是否有图书馆或gem可以为我做到这一点? 最佳答案 您可以使用Nokogiri为此:beginschema=Nokogiri::XML::Schema(File.read('invalid_schema.xsd'))rescueNokogiri::XML::SyntaxError=>eputs"InvalidXMLSchema!"end
有没有一种方法可以从XSD生成Ruby类(甚至可能是ActiveResource类),以便它们包含一种将类序列化为对初始XSD有效的xml的方法?我知道soap4r有xsd2ruby,但生成的ruby类似乎不能轻易序列化为xml。 最佳答案 无耻的self推销(希望这在stackoverflow上没问题)但我正在开发一个开源项目来做that它仍在进行中(请随时发送补丁),但最终目标是将XSD与Ruby类相互转换(现在正在这样做),并将符合该XSD的XML与这些类的实例相互转换。 关于
我们需要使用一个web服务,它有一个使用xsd:import进行数据类型定义的WSDL。savongem不支持,因为它使用芥末。我们正在使用Ruby1.9.2你能给我推荐一些gem吗?问候苏伦丹 最佳答案 不幸的是,似乎没有任何Gem可以满足您的需求。我对这种情况的建议:使用SoapUI检查Web服务使用Savon编写您的客户端http://savonrb.com我已经这样做过好几次了,这里有很多人可以帮助您采用这种方法。 关于用于使用xsd:import使用Web服务wsdl的Ruby
如何在Go中读取XML文档并根据XML模式验证它? 最佳答案 首先应该使用项目metaleap/go-xsd,它可以为指定的XSD架构URI生成Go“XML包装器”包源。Eachgeneratedwrapperpackagecontainsthetypestructuresrequiredtoeasilyxml.Unmarshal()anXMLdocumentbasedonthatXSD.这意味着如果您不能使用那些生成的类(基于特定的XML模式)解码xml文档,则该xml文档不是有效的(对于该XML模式)).
我通过使用XmlDocument.Validate(ValidationEventHandler)、XDocument.Validate(schemas,ValidationEventHandler)和XmlReader探索了各种类型的xsdxml验证传递给它的架构将结果发送到ValidationEventHandler回调。然而,回调实际上只提供严重性和错误字符串。我收到这样的消息:The'name'attributeisinvalid-Thevalue''isinvalidaccordingtoitsdatatype'TNonEmptyStringNoWhitespacesAtBe
我正在尝试读取一个XML文件,但他一直抛出这个错误:cvc-complex-type.2.4.a:Invalidcontentwasfoundstartingwithelement'contact'.Oneof'{contact}'isexpected.lineNumber:2;columnNumber:68;cvc-elt.1:Cannotfindthedeclarationofelement'contacts'.]我已在网上搜索以寻找答案。如果我删除我的targetNamespace,那么它不会提示找不到元素,但它会开始提示找不到我在tns命名空间中声明的自定义类型。我在这里验证它
我在一个大型企业平台上进行集成,供应商喜欢经常更新他们的XML格式,尽管他们promise所做的更改将继续向后兼容。我有一个可以工作的XSD……现在……但我想用我们的应用程序代码部署该架构,而不必为每个Web服务更新重新部署。作为额外的插入力,(基于JVM的)configurationlanguage具有非常不错的XSD类型导入。作为备用,我可以使用XPath查询提取特定元素,但这不太令人愉快。我如何才能继续根据过时但不是过时的模式文件解析不断发展的XML?我正在寻找类似“松散解析”选项或“忽略未知标签”的选项,它们将使我能够访问我们的应用程序当前知道和关心的文档部分。可以丢弃任何新标
我想用一些受限文本和属性定义一个元素somerestrictedtext如何创建这样的元素?我试过:但是收到错误消息:类型“#AnonType_childparent”的复杂类型定义表示错误。使用时,基type必须是一个复杂类型,其内容类型是简单的,或者,只有在指定限制时,才是具有混合内容和可空粒子,或者,仅当指定了扩展名时,才为简单类型。“字符串”不满足这些条件。然后尝试这样的事情这次错误是(这次我没有添加任何限制;这只是为了测试目的):类型的复杂类型定义表示错误'#AnonType_childparent'。使用时,基类型必须是复杂类型。“字符串”是简单类型。我没有弄清楚这些错误意