проверка файла .nuspec с nuspec.xsd завершается неудачно в «пакете» - PullRequest
2 голосов
/ 25 февраля 2011

Я пытаюсь проверить следующий 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

Я выполнил проверку, используя System.Xml .Net и Nokogiri Руби.Обе из них показывают ошибку при выполнении проверки:XML или схема, которая может привести к ошибкам проверки?

Ответы [ 3 ]

2 голосов
/ 25 февраля 2011

Элемент пакета должен находиться в пространстве имен http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd, если вы хотите, чтобы xsd проверял.

Обратите внимание, что в большинстве примеров нет пространства имен xml, поэтому используйтеэто для вашего собственного использования.

1 голос
/ 25 февраля 2011

Я думаю, вам нужно это:

Обратите внимание на обязательные поля от 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 голосов
/ 19 сентября 2011

Обратите внимание: если вы возьмете xsd из папки управления исходным кодом в Codeplex, вам придется заменить любое вхождение строки "{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">
...