使用 nuspec.xsd 验证 .nuspec 文件在“package”上失败;

发布于 2024-10-19 09:02:27 字数 854 浏览 3 评论 0原文

我正在尝试验证 .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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

童话里做英雄 2024-10-26 09:02:27

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.

屌丝范 2024-10-26 09:02:27

我认为你需要这个:

请注意 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>

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:

<?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>
夜唯美灬不弃 2024-10-26 09:02:27

请注意,如果您从 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">

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:

<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文