使用 nuspec.xsd 验证 .nuspec 文件在“package”上失败;
我正在尝试验证 .nuspec 文件内的以下 xml:
<?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':没有可用于验证根的匹配全局声明。
来自 System.XML:Data at the根级别无效。第 1 行,位置 1。
此 xml 或架构有什么问题会导致验证错误?
I'm trying to validate the following xml, which is inside of a .nuspec file:
<?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>
For the validation, I'm using the nuspec.xsd file found here: http://nuget.codeplex.com/SourceControl/changeset/view/0881f2d55e70#src%2fCore%2fAuthoring%2fnuspec.xsd
I've run the validation using .Net's System.Xml, and using Ruby's Nokogiri. Both of these show a failure doing the validation, saying the following:
From Nokogiri: Element 'package': No matching global declaration available for the validation root.
From System.XML: Data at the root level is invalid. Line 1, position 1.
What's wrong with this xml, or the schema, that would cause the validation errors?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
package 元素应该位于 http://schemas.microsoft.com/packaging /2010/07/nuspec.xsd 命名空间(如果您希望该 xsd 进行验证)。
请注意,大多数示例都没有 xml 命名空间,因此仅将其用于您自己的用途。
The package element ought to be in the http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd namespace if you want that xsd to validate.
Note that the majority of examples out there do not have the xml namespace, so only use it for your own use.
我认为你需要这个:
请注意 NuGet.codeplex.com 中的 必填字段
下面是一个包的示例我有工作:
I think you need this: <package xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
Notice the requied fields from NuGet.codeplex.com
Below is an example of a package I have working:
请注意,如果您从 Codeplex 中的源代码管理文件夹中获取 xsd,则必须将出现的任何字符串“{0}”替换为“http://schemas.microsoft.com/packaging/2010/07/nuspec” .xsd”,以便 xsd 在应用于 nuspec 文件时正常工作。
不要忘记将 nuspec 文件的根元素放入 http://schemas 中。 microsoft.com/packaging/2010/07/nuspec.xsd 命名空间:
Notice that if you take the xsd from the source control folder in Codeplex, you'll have to replace any occurrence of the string "{0}" with "http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd" in order for the xsd to work correctly when applied to your nuspec file.
Don't forget to put your nuspec file's root element inside the http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd namespace: