我正在尝试验证以下xml,它位于一个.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运行了验证。这两个代码都显示验证失败,并显示以下内容:
来自诺科吉里: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或模式有什么问题,会导致验证错误?
发布于 2011-02-26 02:55:54
如果希望验证该xsd,那么package元素应该在http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd名称空间中。
请注意,大多数示例都没有xml名称空间,因此仅供您自己使用。
发布于 2011-02-26 01:16:36
我认为你需要这个:
请注意来自NuGet.codeplex.com的requied fields
下面是一个我正在运行的包的示例:
<?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>发布于 2011-09-19 17:39:18
请注意,如果您从Codeplex源控制文件夹中获取xsd,则必须将出现的任何字符串"{0}“替换为"http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd”,以便xsd在应用于您的nuspec文件时能够正常工作。
不要忘记将nuspec文件的根元素放在http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd名称空间中:
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">https://stackoverflow.com/questions/5119326
复制相似问题