草庐IT

Validation

全部标签

xml - 使用什么算法根据 XSD 验证 XML?

我正在编写自己的验证XML解析器。(是的,我知道这是一项非常复杂的任务,使用libxml2或Xerces等现有产品将是更明智的选择。但这不是一个选择,所以请多多包涵。)将XML和XSD文件解析为树结构应该不是很困难。但是,我似乎无法弄清楚要使用什么算法来根据XSD验证XML树。我做了一些研究,但我发现的所有内容要么过于笼统(如何编写编译器等),要么过于具体(例如增量验证)。我有一些自己的想法,但它们都相当复杂,所以我真的很想在开始编码之前更加确定我的想法的有效性(无双关语)。在此先致谢,如果您认为可以提供帮助,请随时询问更多详情! 最佳答案

java - 模式验证中的正则表达式

我需要一个xml架构,它验证一个空节点和一个具有8位数字的节点是否为真。所以我定义了一个具有以下简单类型的XML模式:我已经使用java.util.regex和来自Xerces的内部RegularExpression类尝试了这个正则表达式。两者都返回true。但是当我在我的WS中使用这个simpleType时(使用CXF实现),当我提交一个空字符串(例如)时,我得到一个验证错误。为什么?有没有人知道如何更改我的架构以使其接受一个空标签和一个包含8位数字的标签?感谢帮助,安德烈亚斯 最佳答案 这会起作用:|\d{8}表示不匹配或匹配八

xml - 多语言站点地图给出验证错误 "No matching global element declaration available"

我一直在努力关注Google'srecommendationformulti-lingualsitemaps.但是,当我在我的网站上尝试此操作时,出现错误:Error1845:Element'{http://www.w3.org/1999/xhtml}link':Nomatchingglobalelementdeclarationavailable,butdemandedbythestrictwildcard.即使我将Google的示例粘贴到站点地图验证器中,我也会遇到同样的错误。我在这里缺少什么吗?这是我粘贴到验证器中的Google示例:http://www.example.com/

xml模式检查限制枚举值只出现一次

我正在创建一个xsd模式来验证一些xml我想限制xml,这样就不可能输入相同的项目两次:BankBank但必须可以使用2个不同的项目:BankInsurance所以我有以下代码:tag-->使用maxOccurs="1"不会将其限制为只有一个值,因为'branche'标记可以出现两次。我希望值(value)是唯一的。谢谢! 最佳答案 查看身份约束示例here.像这样的东西:不太确定语法,但您明白了。 关于xml模式检查限制枚举值只出现一次,我们在StackOverflow上找到一个类似的

java - 使用 DocumentBuilder 验证模式

我正在尝试根据XSD架构验证某些XML输入。解析器可以工作,但是当我Hook模式时,出现以下异常。我已经使用外部validator验证了测试输入,所以我已经消除了它。有谁知道如何设置一个构建器来验证这种方式?这是构建器设置代码。finalDocumentBuilderFactoryfactory=DocumentBuilderFactory.newInstance();factory.setIgnoringElementContentWhitespace(true);factory.setNamespaceAware(true);finalSchemaFactorysf=SchemaF

xml - 如何使用 apache camel 验证 xsd?

我正在使用apacheservicemix并尝试使用apachecamel验证xml文档。我有一条名为students_route.xml的路线:org.apache.camel.ValidationException我创建了3个目录:valid、invalid和finally。在我运行karaf“startstudents_route.xml”后,什么也没有发生。当我查看日志时,我没有收到任何错误,只是收到了一些这样的消息:“路由:route2开始并使用来自:端点[file://project/students.xml]”。我想应该在有效/无效下创建一个文件xml文件是否有效的目录。

python - lxml xsi :schemaLocation namespace URI validation issue

我正在尝试使用lxml.etree重现CDAQuickStartGuidefoundhere中的CDA示例.特别是,我在尝试重新创建此元素时遇到了命名空间问题。我使用的代码如下root=etree.Element('ClinicalDocument',nsmap={None:'urn:hl7-org:v3','mif':'urn:hl7-org:v3/mif','xsi':'http://www.w3.org/2001/XMLSchema-instance','{http://www.w3.org/2001/XMLSchema-instance}schemaLocation':'urn

XML 模式/验证 : different separator for datatype double

我将我的xsd文件中某些参数的数据类型从字符串更改为它们的真实类型,在本例中为double。现在我面临的问题是逗号在这里用作分隔符,而不是w3(http://www.w3.org/TR/xmlschema-2/#double)定义的点,导致反序列化期间出现错误(C#、VS2008)。我的问题:我可以使用w3模式进行验证但使用不同的分隔符来表示double值吗?谢谢你的帮助 最佳答案 如果您想继续使用XML架构简单类型,则不能这样做。decimal和从它派生的类型被锁定为使用句点。正如你所说:thespechere.如果要使用逗号作为

java - 如何使用 JaXB 获取验证事件?

我尝试使用Jaxb获取变量中的验证消息。从这里尝试示例http://docs.oracle.com/cd/E17802_01/webservices/webservices/docs/1.6/api/javax/xml/bind/Unmarshaller.html我的代码:JAXBContextjaxbContext=JAXBContext.newInstance("com.piyush");SchemaFactoryfactory=SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);Schemaschema=fa

java - 针对多个任意模式验证 XML

考虑一个XML文档,它像下面这样以多个模式开始(这不是特定于Spring的问题;这只是一个方便的XML文档示例):我想验证文档,但我事先不知道文档作者将使用哪些命名空间。我信任文档作者,所以我愿意下载任意架构URL。如何实现我的validator?我知道我可以在调用setAttribute("http://java.sun.com/xml/jaxp/properties/schemaSource",newString[]{...})时使用DocumentBuilderFactory实例指定我的模式但在文档被解析之前我不知道架构URL。当然,我可以在解析文档后自行提取XSDURL,然后通