在Xmlstarlet中验证xml对XSD

时间:2014-02-05 06:58:42

标签: xml perl xslt xsd xmlstarlet

我正在针对给定的XSD验证许多XML文件。它在命令行中打印一些错误。我需要将这些错误转化为一个变量。

我正在使用Perl。我在下面尝试过,但无法满足我的要求。

$values = system("xmlstarlet val --err --xsd Test.xsd Test1.xml");

返回0或1

$values = `xmlstarlet val --err --xsd Test.xsd Test1.xml`

错误看起来像这样

  

test.xml:5340.23:元素'SP':不期望此元素。

打印只有效或无效,我也需要上面提到的错误。

我使用了以下命令

**xmlstarlet val --err --xsd Test.xsd Test1.xml** 

让我知道一些想法来解决错误。

1 个答案:

答案 0 :(得分:1)

试试这段代码;

my $error; 
my $values = `xmlstarlet val --err --xsd Test.xsd Test1.xml 2>&1`;

if ($?) {
    $error = $values;
}