2013-11-27 60 views
1

我使用下面的代碼驗證XML與XML ::的libxml

my $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 = [email protected]) { 
print "error" 
}  
else { 
    print "Schema validated ok"; 
} 

即使是我的架構進行驗證與確認, 我在這一行得到這樣的警告/錯誤試圖對XSD以下XML

HTTP錯誤:沒有這樣的文件或目錄

值得一提的XSD是我本地的辦公桌 並在此行中的出錯發出

my $schema = XML::LibXML::Schema->new(location => $xsd); 

和$ XSD有我的XML文件的位置是C:\用戶\體內\驗證\ 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

你的代碼是哪行發出錯誤? – ThisSuitIsBlackNot

+0

這一行:my $ schema = XML :: LibXML :: Schema-> new(location => $ xsd); – smith

+0

'$ xsd'的值是多少? (請將這些信息編輯到問題中,而不是將它們發佈在評論中) – ThisSuitIsBlackNot

回答

0

嘗試把:

die "$xsd is not a file" unless -f $xsd; 

my $schema前行,再運行它,看看它說。根據上面的評論,它會告訴你它在哪裏看。它看起來像是文件名是完全錯誤的,或者$xsd不是絕對路徑,從腳本的角度來看,當前工作目錄不是您認爲的那個。

如果是這種情況,請首先看看http://perldoc.perl.org/Cwd.html,看看你能做些什麼來解決它。