我正在使用以下代码
对xsd尝试以下xmlmy $schema = XML::LibXML::Schema->new(location => $xsd);
my $parser = XML::LibXML->new;
my $doc = $parser->parse_file($xml);
eval { $schema->validate( $doc ) };
if ( my $ex = $@ ) {
print "error"
}
else {
print "Schema validated ok";
}
即使我的架构已通过ok验证, 我在这行警告/错误
http错误:没有此类文件或目录
值得一提的是xsd在我当地的办公桌上 并且错误在此行发出
my $schema = XML::LibXML::Schema->new(location => $xsd);
并且$ xsd具有我的xml文件的位置c:\ users \ vivo \ validate \ xml.xsd
下面的是我的架构的第一个概要
?xml version="1.0"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns="http://ce.omb.edu/schema/34"
xmlns:vivo="http://ce.omb.edu/schema/vivo/0.4"
targetNamespace="http://ce.omb.edu/schema/subversion/vivi/2.0"
elementFormDefault="qualified" attributeFormDefault="unqualified"
version="2.0">
<xsd:import namespace="http://ce.omb.edu/schema/vivo/0.4" schemaLocation="c:/users/vivo/desktop/validate/vivo.xsd"/>
有人可以帮助我收到此警告/错误消息吗?
答案 0 :(得分:0)
尝试推杆:
die "$xsd is not a file" unless -f $xsd;
在my $schema
行之前,再次运行并查看其内容。根据上面的评论,它会告诉你它在哪里。看起来文件名完全错误或$xsd
不是绝对路径,从脚本的角度看当前的工作目录不是你认为的那个。
如果是这种情况,请先查看http://perldoc.perl.org/Cwd.html,看看您可以采取哪些措施来解决问题。