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

时间:2015-05-12 09:00:11

标签: php xml eclipse validation schema

我是XML的新手。答案很简单,但几天都在苦苦挣扎。 Ofcourse完全在stackoverflow中获得解决方案,但我不知道我是否有足够的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验证xml对抗sch,那将非常有帮助

更新

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

1 个答案:

答案 0 :(得分:0)

我认为您无法定义类似XML架构(或DTD)的schematron文件,并以相同的方式验证它。

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