如何在 xml 文件中定义 schematron 进行验证?

Posted

技术标签:

【中文标题】如何在 xml 文件中定义 schematron 进行验证?【英文标题】:How to define schematron in xml file to validate? 【发布时间】:2015-07-23 01:14:29 【问题描述】:

我是 XML 方面的新手。答案很简单,但我挣扎了几天。 Ofcourse 完全在 *** 中获得解决方案,但我不知道我是否有足够的 XML 知识来获得或理解它。所以,终于来这里从专家那里得到解决方案了。

嗯,我有一个 xml 文件、DTD 和 sch 文件。我正在使用 eclipse 针对 DTD 验证 xml。但我不知道如何针对 sch 文件验证 xml。

示例 xml 文件

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE SAGE-hubxml
  PUBLIC "-//SAGE//DTD SAGE Hub XML DTD v1.0 20111101/EN" "SAGE-hubxml.dtd">
<SAGE-hubxml xmlns="http://www.w3.org/1999/xhtml" xmlns:xi="http://www.w3.org/2001/XInclude"
    xmlns:svg="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<body>
</body>
</SAGE-hubxml>

在此,我定义了要验证的 DTD 文件。我不知道如何定义 sch 文件进行验证。最简单的方法是什么? 我会使用 php 针对 DTD 验证 xml。

php

$dom = new DOMDocument;
$dom->Load('sample.xml');
if ($dom->validate()) 
    echo "This document is valid!\n";

else
echo "This document is not  valid!";

所以,如果我们可以使用 php 针对 sch 验证 xml,将会非常有帮助

更新

在一些文档中,他们提到了氧气 xml 编辑器,以验证 sch 文件。我需要其他类似的东西,因为氧气是一种商业工具。

【问题讨论】:

【参考方案1】:

我认为您不能像 XML 模式(或 DTD)那样定义 schematron 文件并以相同的方式对其进行验证。

您必须使用 php schematron 库才能处理 sch 文件,或者将 sch 文件转换为 XSLT 文件,然后使用 XLST 处理器来验证 XML 文件。

【讨论】:

感谢您的回答!我已经更新了我的帖子。请看一下。你说的建议是我要求的唯一解决方案吗? 如果你想用php做,那我帮不了你更多:(使用java你有probatron.org。你也可以查看官方网站:schematron.com/resources.html 使用命令行java -jar probatron.jar document-to-validate schematron-schema我们可以验证它。但是他们提到了document-to-validate schematron-schema所以这里的输入文件是sch还是xml? document-to-validate:要验证的 xml 文件 schematron-schema:包含规则的 schematron 文件 所以,输入是要验证的xml文件。以及在哪里定义sch文件..在xml文件或命令行中?

以上是关于如何在 xml 文件中定义 schematron 进行验证?的主要内容,如果未能解决你的问题,请参考以下文章

schematron:我可以对命名空间进行分组吗

JSON:对于 JSON 和 JSON Schema,是不是有等效的 Schematron? (即一种表示协约束的JSON技术)

验证 XML 文档会导致“1 字节 UTF-8 序列的字节 1 无效”。

如何在 pom.xml 中定义 2 组配置文件?

如何定义XSD并在XML中使用XSD

如何在 .xml 文件而不是 .java 文件中设置自定义字体?