问题标签 [xml-validation]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
3243 浏览

java - Xerces XMLSchemaFactory:找不到元素的声明

我希望针对 XSD 文件验证 XML 文件(在 XML 文件中没有命名空间,也没有模式声明)。

XML 文件如下所示:

XSD 文件是:

代码类似于以下内容:

我花了 3 个小时,因为它在我的 PC 上本地工作,它曾经在服务器上工作(我认为),但现在它不能在服务器上工作。我试图找出我的 PC 和服务器之间的差异,但它们都使用相同的 JAR,等等。

无论如何,我已经确定了以下差异。我没有将类名传递给SchemaFactory.newInstance方法(几乎可以肯定是一个错误),当我打印出类名时xsdFac,我发现本地和服务器上的类名不同。我不认为我想了解为什么会这样(我不知道),我认为最好找到一个有效的,并明确指定它。

  • 在我的电脑(作品)上它是com.sun.org.apache.xerces.internal.jaxp.validation.XMLSchemaFactory。如果我在通话中明确指定newInstance,那么它可以在 PC 和服务器上运行。
  • 在服务器上(没有工作),它是org.apache.xerces.jaxp.validation.XMLSchemaFactory。如果我在newInstance通话中明确设置,那么我在 PC 和服务器上都会收到相同的错误。

请注意com.sun有效的方法的开头。

所以至少我有一个解决方案,这很好。但是,我认为我不应该com.sun在我的代码中明确使用类?

其他信息:

  • 我得到的错误是:org.xml.sax.SAXParseException: cvc-elt.1: Cannot find the declaration of element 'report'
  • 这与我在工作版本上将元素名称更改为其他名称(架构中不存在的名称)时遇到的错误相同。所以我认为这只是意味着,“我了解您的模式,我了解 XML,并且您使用了一个未在模式中任何地方声明的元素。”
  • xercesImpl-2.9.1.jar在我的项目中(在服务器和 PC 上)。
  • 这个 JAR 包含一个XMLSchemaFactory.class在非工作版本上指定的包下(即会让我相信它在那里,可以找到,并且应该可以工作,毕竟我没有得到任何与未找到的类有关的异常)
  • doc在这两种情况下,我正在解析的对象都是org.apache.xerces.dom.DeferredDocumentImpl

所以,我的问题是:我想使用模式工厂的显式 Xerces 实现(我认为),因为我包括 JAR 并且我有一个来自 Xerces 的 Document 对象,基本上我无论如何都在使用 Xerces 验证器(在的工作案例com.sun)。

有没有人有类似的经历?

0 投票
1 回答
603 浏览

.net - 使用 XSD 进行复杂的 XML 验证

假设我有以下 XML,我应该如何更新我的 XSD 架构(如下所述)以防止它被验证?

基本上,对于问题 #3,它看起来像是一个单选问题,因为标签中只有一个答案。但是标签内必须至少有一个标签,否则除了正确的问题外,没有其他问题可供选择。

这是 XSD:

0 投票
2 回答
1322 浏览

coldfusion - 在 Coldfusion 中将字符串转换为 xml 有效文本

我需要一种在 Coldfusion 中将字符串转换为 xml 有效文本的方法。有任何想法吗?

谢谢!

0 投票
2 回答
348 浏览

xsd - XSD 和元素存在要求,或其他选项

在 XSD 级别,我可以根据文档中另一个元素的存在来定义元素要求吗?

例如,我想<firstname />在元素也存在时要求提供该<id />元素,否则名字是可选的。

如果这不能在 XSD 级别强制执行,那么我是否应该将这两个元素都设为可选并通过不同级别的检查来强制执行要求?

欢迎选择。

0 投票
2 回答
1597 浏览

java - 需要 XSD 基本帮助——模式中的命名空间?

我有类似以下 XML 文件的内容。

第一个要求是这个 XML 无论如何都不能改变。请不要在下面建议这样做。

我需要编写一个验证这一点的模式。以及进行验证的 Java 代码。

我完全被卡住了,我真的不知道发生了什么。

像这样的架构是什么样的?我已经得到了一个,但它太糟糕了,我不会打扰发布。:PI 不想将命名空间附加到 XML 元素。他们是一成不变的。^_^

我该如何做到这一点,以便解析器“找到”所有这些元素?我可以告诉它忽略所有这些命名空间的废话。通过这种针对模式进行验证的应用,命名空间冲突是不可能的。

我试过把

对于我的命名空间信息和

更新:我已经更新了我正在做的事情以反映迄今为止给出的答案!:)

XSD

XML v0003

加载和验证是的代码。在您询问之前,可以加载文件。我已经检查了大约 20 次。:P

0 投票
2 回答
2400 浏览

xml - 当节点有多个子节点时,针对 XSD 的 XML 验证失败

我需要为我们将在系统之间使用的 XML 文件生成 XSD,以便我们可以验证我们获得的数据是否有效。

XML 看起来像这样(但有更多字段):

我的 XSD 如下:

当我只有一个Item节点时,此模式有效,但一旦我有多个节点,我就会收到以下错误:

元素“Extra_Info”具有无效的子元素“Item”。

如果将其指定为序列,为什么它不起作用?

谢谢!

PS:我使用This Online Validator进行快速验证,但使用 XMLReader 时也遇到同样的错误

0 投票
1 回答
143 浏览

java - 使用 trax 进行模式验证

如果我想在使用 Transformer 接口应用 XSLT 时对 XML 读取应用模式验证,我是否需要首先使用启用验证的 DOMSource 构建一个 DOM,或者有什么方法可以说服它使用 StreamSource 执行此操作?

0 投票
1 回答
1543 浏览

xml - 是否可以编写 DTD 以允许任何名称的一个或多个属性?

我正在为允许灵活属性名称的 XML 结构编写 DTD,如下所示:

所以这里有一个简单的 DTD:

问题是,对 XML 的要求是“iCouldBeAnything”必须是任何东西。 是否可以使用 DTD 来描述这一点,或者我是否需要依赖其他类型的 XML 验证?

0 投票
1 回答
2488 浏览

xml - XSD - 验证时忽略属性限制

我在尝试针对以下 xml 文件测试以下 xsd 时遇到问题。是我的工具不好,还是我的 xsd 无法以可预测的方式运行?

软件测试:

  • xmllint(使用 libxml 版本 20707)
  • XML 复制编辑器 1.2.0.6

预期成绩:

  • test.xml 验证
  • 由于域标记中的帐户属性格式错误,test-bad.xml 验证失败

观察到的结果: - test.xml 验证 - test-bad.xml 验证

测试.xml

测试-bad.xml

配置.xsd

配置文件.dtd

0 投票
1 回答
616 浏览

struts - Struts 1 验证 - 以 \xNN 格式定义的 XML 常量导致 bea weblogic 11g 上的错误错误

我使用如下符号在“Struts 1”验证中定义验证常量:

这似乎在 Oracle IAS 10g 上工作了很长时间,但现在在迁移到 Bea Weblogic 11g 后,针对此 MASK 的验证返回错误错误。

调试验证框架我发现,上面的常量值似乎是字面意思。

文件以 ANSI 编码为 ISO-8859-1 标准和 Unix 格式。

有谁知道这里可能出了什么问题?