2011-02-25 34 views
2

我試圖驗證下面的XML,這是一個.nuspec文件裏失敗:確認與nuspec.xsd .nuspec文件上的「一攬子」

<?xml version='1.0'?> 
<package> 
    <metadata> 
    <id>nuspec_test</id> 
    <version>1.2.3</version> 
    <authors>Author Name</authors> 
    <description>test_xml_document</description> 
    </metadata> 
</package> 

爲了驗證,我使用在這裏找到nuspec.xsd文件:http://nuget.codeplex.com/SourceControl/changeset/view/0881f2d55e70#src%2fCore%2fAuthoring%2fnuspec.xsd

我已經使用.Net的System.Xml運行驗證,並使用Ruby的Nokogiri。這兩種顯示故障做了確認,他說以下內容:

從引入nokogiri:Element 'package': No matching global declaration available for the validation root.

從了System.XML:Data at the root level is invalid. Line 1, position 1.

有什麼不對的XML或架構,這將導致驗證錯誤?

+0

好,原來我有一些不好的代碼在我的驗證。固定的代碼,它通過。 – 2011-02-25 17:53:15

回答

2

的包裝元素應該是在http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd命名空間,如果你想要這個xsd來驗證。

注意,大多數的例子在那裏不具備的XML命名空間,所以用它爲自己使用。

+0

FWIW我們已經修復了大部分的我們的工具總是生成XML屬性。我們在1.0之前做了一些錯誤,最終支持舊的xml版本。 – davidfowl 2011-03-03 15:40:27

1

我認爲你需要這個:< package xmlns:xsi =「http://www.w3.org/2001/XMLSchema-instance」xmlns:xsd =「http://www.w3.org/2001/ XMLSchema的」 >

通知的requied fields從NuGet.codeplex.com

下面是一包我有工作的一個例子:

<?xml version="1.0"?> 
<package xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
    <metadata> 
    <id>SidePOP</id> 
    <version>0.0.1.44</version> 
    <authors>Rob Reynolds, Tim Hibbard</authors> 
    <owners>Rob Reynolds</owners> 
    <summary>SidePOP gives your app the ability to receive email</summary> 
    <description>SidePOP allows your application the ability to receive email</description> 
    <projectUrl>http://sidepop.googlecode.com</projectUrl> 
    <licenseUrl>http://www.apache.org/licenses/LICENSE-2.0</licenseUrl> 
    <requireLicenseAcceptance>false</requireLicenseAcceptance> 
    <tags>email</tags> 
    <!--<iconUrl>32x32.png</iconUrl>--> 
    <dependencies> 
     <dependency id="log4net" version="1.2.10" /> 
    </dependencies> 
    </metadata> 
</package> 
+0

沒有解決它。我加入這兩個的xmlns:XSD和xmlns:XSI,我還增加了xmlns設置爲元數據元素和我仍然得到同樣的錯誤 – 2011-02-25 17:23:43

+0

注意,有在野外沒有一致性任何何時命名空間應該是有或不。 – SerialSeb 2011-02-25 18:55:00

+0

我們在下一版本修正了這個和我們在解決我們的文檔顯示申報模式的正確方法。 – davidfowl 2011-03-20 18:13:20

0

請注意,如果您從Codeplex中的源代碼控制文件夾中獲取xsd,則必須將任何出現的字符串「{0}」替換爲「http://schemas.microsoft.com/packaging/2010 /07/nuspec.xsd」爲了當適用於您nuspec文件XSD才能正常工作。

不要忘記把你的nuspec文件的根元素http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd命名空間中:

<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">