当前位置: 首页 > 知识库问答 >
问题:

PHP中的XSD模式1.1验证

徐鑫鹏
2023-03-14

我已经想出了如何使用PHP中的XSD模式验证XML文件,但是似乎处理是使用XSD版本1.0完成的。

$dom = new DOMDocument();
$dom->loadXML($xmlString);

$isValid = $dom->schemaValidate($xsdFile);

对于我的情况,我需要将XSD文件视为版本1.1。这样做的主要原因是我想用:

<xs:all>
   <xs:element type="xs:string" name="br" minOccurs="0" maxOccurs="unbounded"/>
   <xs:element type="linkType" name="link" minOccurs="0" maxOccurs="unbounded"/>
</xs:all>

注意maxOccurs="无界",它只能在中使用。

PHP失败,出现一般错误:

Warning: DOMDocument::schemaValidate(): Invalid Schema

共有1个答案

邢小云
2023-03-14

schemaValidate使用Libxml。Libxml不支持xsd1.1。

 类似资料:
  • 如何将XSD 1.1模式自动转换为XSD 1.0模式,方法是去掉所有1.1功能,只保留与XSD 1.0兼容的子集? 我意识到这将限制您可以利用多少XSD 1.1功能,但是我想象的用例是一个模式,您可以发布XSD 1.1版本和更兼容的XSD 1.0版本,两者都描述相同的数据结构但是1.1版本有一些额外的

  • 我有一个模式版本为1.1的XSD,我想通过编程验证XML。NET和Java。 在里面NET我使用类根据XSD验证XML,但它引发以下异常: `系统。Xml。模式。XmlSchemaException:http://www.w3.org/2001/XMLSchema:assert'元素在此上下文中不受支持。 所以我猜。NET仍然支持XSD 1.0并且不支持XSD 1.1?

  • 问题内容: 我有一个XML文件,并且有一个XML模式。我想针对该架构验证文件,并检查其是否符合该架构。我正在使用python,但是如果python中没有这样有用的库,则可以使用任何语言。 我在这里最好的选择是什么?我会担心如何快速启动和运行它。 问题答案: 绝对可以。 使用预定义的架构定义,加载文件并捕获任何XML架构错误: 关于编码的注意事项 如果模式文件包含带有编码(例如)的xml标记,则上面

  • 我试图在Java验证XSD1.1中的XML。正如所讨论的,如何在Java根据XSD1.1验证XML? 我有个例外说: java.lang.IllegalArgumentException:无法加载实现http://www.w3.org/xml/xmlschema/v1.1指定的架构语言的SchemaFactory 然后我尝试,错误是: 无法从类型SchemaFactory对非静态方法setProp

  • 我有一个XML文件,其结构如下: XSD模式: 和可视化的XSL文件(学生tylesheet.xsl): 我目前正在学习一门关于XML的短期课程,任务是在XML文件中构建给定的XSD模式和一些示例记录,然后最终使用XSLT将内容可视化为超文本标记语言。其中一项任务指出,我需要使用“urn:学生”作为结构的默认命名空间。然而,当我这样做的时候,我不会在最终的可视化中收到数据。当我从XML文件中删除“

  • 上下文:我试图找到一种方法来验证XSD和XML与XSD的对比,该方法可以自动集成到软件构建过程中。输入是文件,对于输出,退出代码或可靠的可调节控制台输出就足够了。我在Windows环境中操作。 作为XML和XSD输入,我以Wikipedia(文章“XML模式(W3C)”)中的一个例子为例。 作为工具,我选择尝试XMLLint和Xerces。 问题是,XMLLint和Xerces给出了不同的结果。