Как найти схемы xsd

is there any easy and generic way to locate a schema based on namespace?. for example, in the XML below, how do i find the schema for http://schemas.microsoft.com/developer/msbuild/2003 ?

<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">

kjhughes's user avatar

kjhughes

105k26 gold badges176 silver badges235 bronze badges

asked Sep 15, 2014 at 23:18

yigal's user avatar

Where to look for an XSD given an XML namespace:

  1. Check the location given by any available xsi:schemaLocation hint:
    xsi:schemaLocation="namespace location".

    In this case, we do not have a schema location hint.

  2. Check the namespace value if in URI form by typing it into a browser.

    In this case, the http://schemas.microsoft.com/developer/msbuild/2003 namespace is in the form of a URI, but there is no XSD at the endpoint:

    The resource you are looking for has been removed, had its name
    changed, or is temporarily unavailable.

  3. Check the URI Resolution entries of any XML Catalogs that are in play.

    In this case, no XML catalogs were mentioned.

  4. Check the XML Standards Library.

    In this case, there’s no entry for the sought namespace.

  5. Check Wikipedia’s List of XML markup languages and List of XML schemas.

    In this case, there’s no entry for the sought namespace.

  6. Check the schema association mechanism of your XML tool. Here are a few:

    • XML Spy: Check the DTD/Schema > Assign Schema... menu command or their XML catalog mechanism.

    • Oxygen XML Editor: Check the Document > Schema > Associate schema... menu command or their XML catalog mechanism

    • Visual Studio 2013: Check the XML editor’s local schema cache in
      the %InstallDir%XmlSchemas directory. The XML editor lets XSDs be associated with
      XML document instances via the XML Schemas Dialog Box.

    In this case, no tool was mentioned, but it is a Microsoft namespace, so if Visual Studio is installed, check the associations listed in the XML Schemas Dialog Box and the local schema cache.

    According to this source, the XSD for the given namespace is msbuild.xsd and can be located in the Visual Studio schema cache. It is the schema for MSBuild make files.

Bottom line: In general, the above procedure should allow you to resolve a namespace to a physical location for an XSD, but beware that the difficulty can vary from simple to impossible.

answered Sep 16, 2014 at 3:50

kjhughes's user avatar

kjhugheskjhughes

105k26 gold badges176 silver badges235 bronze badges

2

There’s no mapping between XML namespaces and resource URLs where you can expect to find the schema resources. Namespaces are just that — spaces in which names can be defined so as not to conflict with others.

answered Sep 15, 2014 at 23:22

BadZen's user avatar

BadZenBadZen

3,9942 gold badges25 silver badges48 bronze badges

2

You made two errors: one in the schema file and another in the syntax of the value of the xsi:schemaLocation attribute of the XML file.

The main error is that your employee.xsd file is only a fragment of the XML Schema. You should complete the contain of the employee.xsd. For example,

<?xml version="1.0" encoding="utf-8"?>
<xs:schema targetNamespace="http://www.w3schools.com/RedsDevils"
    elementFormDefault="qualified"
    xmlns="http://www.w3schools.com/RedsDevils employee.xsd"
    xmlns:xs="http://www.w3.org/2001/XMLSchema">

    <xs:element name="employee">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="firstname" type="xs:string" fixed="red" />
                <xs:element name="lastname" type="xs:string"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
</xs:schema>

and employee.xml:

<?xml version="1.0" encoding="utf-8"?>
<employee xmlns="http://www.w3schools.com/RedsDevils"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://www.w3schools.com/RedsDevils employee.xsd">

    <firstname>John</firstname>
    <lastname>Smith</lastname>
</employee>

Because you define default namespace in the XML file, the schema location attribule xsi:schemaLocation must consist from the the namespace and the path to the schema devided with the blank. I changed the namespace name so that it will be a little more unique: "http://www.w3schools.com/RedsDevils" instead of "http://www.w3schools.com".

At the end I can add that the XML file employee.xml not corresponds to the schema employee.xsd because the element <firstname>John</firstname> has the value other as red, but probably exactly this you wanted to test.


Схемы .xsd (и их хронологию) можно найти всё в той же программе Налогоплательщик ЮЛ — подкаталог INPUTDOCXML, файл xml0.dbf.

На примере декларации по налогу на имущество:

1) Если не знаем КНД, запускаем Налогоплательщик ЮЛ и в «Настройки — Отчётные формы» ищем нужную декларацию (авансовый расчёт):


XML04.PNG


КНД 1152026. Впрочем, это можно было увидеть и в печатной форме декларации на титульном листе.


2) Открываем <КаталогНЮЛ>INPUTDOCXMLxml0.dbf и ищем в колонке NAME записи со ссылкой на КНД (можно наложить фильтр по наличию цифр КНД в NAME):


XML05.PNG


А среди них выбираем запись с максимальной датой загрузки LOADDATE.
Наименование искомой схемы (актуальной на текущий момент, с последними исправлениями согласно законодательству) — в колонке XSDFILE (чёрная рамка).


3) Ищем этот файл (NO_IMUD_1_084_00_05_04_02.XSD) там же: в <КаталогНЮЛ>INPUTDOCXML.
Часть xsd-схем лежит в <КаталогНЮЛ>INPUTDOCTEMPLATES — начала их имён совпадают с началами имён готовых xml-файлов (например, NO_NDS.9_….xsd, NO_NDS.91_….xsd), а среди схем с одинаковым началом названия ищите самую позднюю по дате.


4) В ФАБИУС в спр-ке Импорта/экспорта (R260) по Ctrl-F6 можно создать новую запись с выбором нужной xsd-схемы, содержимое которой (R261) будет добавлено из выбранной схемы .xsd.

Вопрос:

есть ли простой и общий способ найти схему на основе пространства имен?. например, в XML ниже, как мне найти схему для http://schemas.microsoft.com/developer/msbuild/2003?

<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">

Лучший ответ:

Где искать XSD с учетом пространства имен XML:

  1. Проверьте местоположение, заданное любым доступным xsi: schemaLocation hint: xsi:schemaLocation="namespace location".

    В этом случае у нас нет намека на расположение схемы.

  2. Проверьте значение пространства имен, если в форме URI, введя его в браузер.

    В этом случае пространство имен http://schemas.microsoft.com/developer/msbuild/2003 находится в форме URI, но XSD отсутствует в конечной точке:

    Ресурс, который вы ищете, был удален, изменилось его имя или временно недоступно.

  3. Проверьте записи разрешений URI любых каталогов XML, которые находятся в игре.

    В этом случае каталогов XML не упоминалось.

  4. Проверьте библиотеку стандартов XML.

    В этом случае нет записи для искомого пространства имен.

  5. Проверка Википедии Список языков разметки XML и Список схем XML.

    В этом случае нет записи для искомого пространства имен.

  6. Проверьте механизм ассоциации схемы вашего инструмента XML. Вот несколько:

    • XML Spy: проверьте команду меню DTD/Schema > Assign Schema... или их механизм каталога XML.

    • Редактор XML-кислорода: проверьте команду Document > Schema > Associate schema... или механизм их каталога XML

    • Visual Studio 2013: проверьте локальный кеш XML-редактора XML в %InstallDir%XmlSchemas. Редактор XML позволяет связать XSD с экземплярами XML-документов через диалоговое окно XML Schemas.

    В этом случае ни один инструмент не упоминался, но это пространство имен Microsoft, поэтому, если Visual Studio установлен, проверьте ассоциации, перечисленные в диалоговом окне “Схемы XML” и кэш локальной схемы.

    Согласно этому источнику, XSD для данного пространства имен является msbuild.xsd и может находиться в кеше схемы Visual Studio. Это схема для файлов MSBuild.

Итог: в общем, описанная выше процедура должна позволить вам разрешить пространство имен в физическом местоположении для XSD, но будьте осторожны, что сложность может варьироваться от простого до невозможного.

Ответ №1

Не существует сопоставления между пространствами имен XML и URL-адресами ресурсов, где вы можете найти ресурсы схемы. Пространства имен – это просто – пространства, в которых имена могут быть определены так, чтобы не противоречить другим.

В данном разделе описаны способы проверки XML-файла по XSD-схеме. Сделать это можно разными способами, существует много программ для этих целей. По XSD-схеме, например, проверяет программа Tester, но она только показывает ошибки и не дает их исправить. Для большего удобства лучше использовать специализированные редакторы такие, как XMLPad или MS Visual Studio.

MS Visual Studio является спецаилизированным инструментом для программистов, обладающим огромным функционалом. Работа с XML и автоматическая проверка по XSD – лишь одна из множества функций среды разработки. MS Visual Studio 15 можно скачать бесплатно с официального сайта: https://www.visualstudio.com/ru-ru/products/visual-studio-community-vs.

XMLPad — многофункциональный специализированный XML редактор. XMLPad обладает богатым функционалом, поддерживает XPath, возможность удалять целые блоки тегов, смену кодировок, проверку валидности и т.д. XMLPad доступен для бесплатного использования на сайте: http://xmlpad-mobile.com.

Совет

XMLPad уступает по удобству и возможностям MS Visual Studio, но если вы не являетесь программистом и у вас не установлена MS Visual Studio, лучше воспользоваться XMLPad.

Примечание

Перед проверкой файлов необходимо предварительно скачать файлы XSD-схем. Скачать XSD-схемы можно с официальных сайтов контролирующих органов. В качестве примера взята декларация по НДС, скачать XSD-схему для нее можно с сайта Справочник налоговой и бухгалтерской отчетности.

Проверка по XSD-схеме в XMLPad¶

  1. Откройте XML-файл, который требуется проверить в XMLPad File > Open.

  1. Чтобы проверить файл по заданной XSD-схеме, его надо с ней ассоциировать. Перейдите в меню XML > Assign Schema/DTD.

  1. Выберите W3C Schema и нажмите Browse, затем выберите XSD-схему для проверки.

  1. После того, как XSD-схема ассоциирована, нажмите F7 или XML > Validate, чтобы проверить файл. В нижней части окна будут выведены ошибки, нажав на которые можно подсветить строку, в которой они находятся.

Совет

Для удобства отображения можно включить переносы строк Edit > Word Wrap.

Проверка по XSD-схеме в MS Visual Studio¶

  1. Откройте XML-файл, который требуется проверить в MS Visual Studio Файл > Открыть > Файл.

  1. Чтобы проверить файл по заданной XSD-схеме, его надо с ней ассоциировать. Перейдите в меню XML-код > Схемы….

  1. Нажмите Добавить и выберите файл XSD-схемы.

Проверка на соответсвие XSD-схеме будет осуществляться автоматически на лету. Внизу в окне Списка ошибок будет отображаться список ошибок. При нажатии на ошибку, она будет подсвечена в редакторе.

Совет

Добавить окно Списка ошибок можно через Вид > Списка ошибок.

Понравилась статья? Поделить с друзьями:
  • Пересолила гречку как исправить ситуацию
  • Как найти вход в вагину
  • Террария как найти авто
  • Как найти площадь бокового сечения пирамиды
  • Как найти лампу в рафте