Структура нарушена в файле, системная ошибка xds

Обновлено: 21.11.2024

В основе решения ATX для распространения аудио лежит программная система управления контентом, которая повышает производительность и производительность за счет автоматизации и устранения дублирующих функций и функций. Централизованный веб-управление позволяет сетевым операторам точно и автоматически распределять и планировать живой или сохраненный контент получателям, расположенным на станциях или в филиалах. Централизованная модель также оптимизирует организацию продаж, позволяя менеджерам по работе с клиентами продавать рекламные ролики на нескольких рынках или даже в регионах, но при этом предлагая своим клиентам возможность настраивать свою рекламу, идентификаторы станций, межстраничные объявления и программы для конкретных рынков.

Преимущества

Повышает надежность
Централизация процессов распространения и монетизации приводит к повышению надежности за счет замены многих подверженных ошибкам ручных процедур программными процедурами, которые в высокой степени автоматизированы и легко проверяемы.

Снижает сложность
Возможность управлять и контролировать все процессы вещания с помощью программного обеспечения и из любого места значительно снижает эксплуатационные расходы за счет устранения дублирования операций за счет централизации.

Облегчает переход со спутника на Интернет.
За счет одновременной и прозрачной поддержки как спутниковых, так и интернет-технологий передачи централизованная система управления контентом позволяет сетевым операторам поддерживать обе среды, а также плавный переход со спутниковой к IP-сервисам.

Поддерживает модель централизованной студии
Централизованное управление контентом позволяет операторам эффективно управлять сетевым и локальным контентом из одного места, позволяя им консолидировать операции в одном месте, не нарушая возможности владельца сети по доставке локализованного контента, в том числе длинного/ короткие программы, реклама, идентификаторы станций, чтение в прямом эфире, оповещения и новости для каждого рынка.

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

Расширенное планирование
Система управления содержимым XDS значительно упрощает планирование сетевых или локальных программ для определенного сайта, легко управляет событиями со сдвигом во времени и автоматизирует процесс планирования живых или записанных программных объектов по сравнению с живыми и записанными программами. .

Я использую Java 5 javax.xml.validation.Validator для проверки XML-файла. Я сделал это для одной схемы, которая использует только импорт, и все работает нормально. Теперь я пытаюсь проверить с помощью другой схемы, которая использует импорт и одно включение. У меня проблема в том, что элементы в основной схеме игнорируются, проверка говорит, что не может найти их объявление.

Вот как я строю схему:

А теперь выдержка из объявления в main.xsd

Если я скопирую код включенного XSD в файл main.xsd, он будет работать нормально. Если я этого не сделаю, проверка не найдет объявление "Элемент".

9 ответов 9

Для этого вам нужно использовать LSResourceResolver. взгляните на пример кода ниже.

метод проверки:

реализация преобразователя ресурсов:

Реализация ввода, возвращенная преобразователем ресурсов:

Большое спасибо за исчерпывающий ответ! Я реализую это сегодня днем ​​и дам вам знать, как это сработало. Мне нужно создать объект схемы, так как я понятия не имею, как будет создаваться файл, который будет проверен. Я не хочу полагаться на их заявление.

нет проблем, пример кода взят из модульного теста, поэтому вам, вероятно, придется изменить некоторые биты в соответствии с вашими потребностями

Я почти у цели. Теперь мой валидатор включает в себя включенный файл и содержимое основного файла. Но у меня есть исключение при загрузке файла импорта, содержимое которого не разрешено в прологе. Это с файлом, который импортируется. Если я загружаю этот файл напрямую (собираю схему из него вместо основного), я не получаю эту ошибку. Любая идея, что может вызвать такое исключение в этом состоянии?

@ulab просто использование URL-адреса не всегда является решением. Я использую URL-адрес в своем проекте, но мне все еще нужен LSResourceResolver. Я думаю, что ваши файлы используют пути импорта относительно вашего рабочего каталога, а мои файлы используют пути импорта относительно корня моего пути к классам, которые не разрешаются автоматически.

"примечание: в этом примере ожидается, что XSD будут находиться в корне пути к классам" - не могли бы вы описать, как это обеспечить?

Принятый ответ вполне приемлем, но не работает с Java 8 без некоторых модификаций. Также было бы неплохо иметь возможность указывать базовый путь, из которого считываются импортированные схемы.

Я использовал в своей Java 8 следующий код, который позволяет указать путь встроенной схемы, отличный от корневого пути:

Эта реализация также дает пользователю значимое сообщение в случае, если схема не может быть прочитана.

Как указывает пользователь "ulab" в комментарии к другому ответу, решение, описанное в этом ответе (на отдельный вопрос о стеке), будет работать для многих. Вот примерный план этого подхода:

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

Здесь следует иметь в виду, что атрибут "schemaLocation" в элементах include и/или import будет рассматриваться как относящийся к пути к классам XSD-файла, URL-адрес которого вы передали валидатору при использовании простого пути к файлам в формате «my-common.xsd» или «common/some-concept.xsd».

Примечания. В приведенном выше примере я поместил файл схемы в файл jar в папку "xsd". - Начальная косая черта в аргументе "getResource" указывает Java начинать с корня загрузчика классов, а не с имени пакета "этого" объекта.

Продукты InterSystems могут запрашивать реестр документов XDS, запрашивая список документов для пациента через IHE “XDS.b Registry Stored Query” сделка. Затем он может получить один или несколько сохраненных документов из репозитория XDS с помощью IHE “XDS.b Retrieve Document Set” транзакция.

IHE поддерживает идею Affinity Domain систем здравоохранения, использующих общую инфраструктуру IHE. Affinity Domain может быть RHIO, IDN или какой-либо другой организацией. Каждый Affinity Domain имеет один реестр документов и может иметь несколько репозиториев документов. Используйте профиль XDS.b для запроса и извлечения документов только в пределах вашего родственного домена. Чтобы запросить и получить документы за пределами родственного домена, используйте вместо этого профиль XCA.

Скопировать ссылку на этот раздел Трассировка сообщения запроса XDS

На следующей диаграмме показана аннотированная трассировка сообщения запроса XDS.

Тестовая служба, показанная на схеме, представляет собой простой маршрутизатор сообщений. Операции трассировки — это утилита, которая делает промежуточные этапы обработки видимыми в трассировке. Цифры на диаграмме соответствуют шагам описанной ниже процедуры.

Скопировать ссылку на этот раздел Процедура запроса XDS

Вы предоставляете сообщение запроса запроса XDS.b, которое содержит идентификатор MPI и назначает полномочия для потребителя документов InterSystems. Вы можете получить идентификатор MPI с помощью запроса PIX или PDQ (описанного выше). Запрос запроса также указывает тип и статус документа (например, “approved”), а также может включать список фильтров.

InterSystems Document Consumer преобразует сообщение в IHE “XDSb_QueryRequest” сообщение с использованием внутреннего преобразования.

Затем InterSystems Document Consumer перенаправляет запрос в конечную точку реестра документов XDS в другой системе, имя которой указано в параметре XDSbRegistryServiceName.

Реестр документов XDS в другой системе возвращает список доступных документов вместе с их метаданными и расположением.

InterSystems Document Consumer извлекает метаданные документа из ответа, используя преобразование, указанное в настройке TransformToMetadata. Затем он создает сообщение XDS.b Query Response.

InterSystems Document Consumer возвращает сообщение XDS.b Query Response, которое содержит как исходный ответ реестра документов XDS, так и извлеченные метаданные.

Скопировать ссылку на этот раздел Компоненты и настройки запроса XDS

< td >XSL-преобразования < /tr>
Компонент Настройка
Бизнес-хосты Потребитель документа: HS.HC.IHE.XDSb.Consumer.Operations
Настройки производства XDSbRegistryServiceName в потребителе документа
Производственные настройки TransformToMetadata в Потребителе документов
Производственные сообщения HS.Message .IHE.XDSb.QueryRequest
Производственные сообщения HS.Message.IHE.XDSb.QueryResponse
QueryRequestToXDSbQuery.xsl
XSL-преобразования MessageToMetadata.xsl
Записи реестра службы XDSb.Registry
Внешняя конечная точка субъекта IHE Реестр документов XDS

Скопировать ссылку на этот раздел XDS Retrieve Message Trace

Следующая диаграмма представляет собой аннотированную трассировку сообщения извлечения XDS.

Тестовая служба, показанная на схеме, представляет собой простой маршрутизатор сообщений. Операции трассировки — это утилита, которая делает промежуточные этапы обработки видимыми в трассировке. Цифры на диаграмме соответствуют шагам описанной ниже процедуры.

Скопировать ссылку на этот раздел Процедура извлечения набора документов XDS

Возьмите ответ на запрос (см. выше) и создайте сообщение HS.Message.IHE.XDSb.RetrieveRequest, содержащее уникальный идентификатор документа и уникальный идентификатор репозитория (OID) для одного или нескольких документов, перечисленных в запросе. Каждый запрос на получение может направляться только в один репозиторий, поэтому, если ответ на запрос относится к нескольким репозиториям, вы должны разделить их на отдельные запросы на получение, по одному для каждого репозитория.

Отправить запрос на получение XDS.b получателю документов InterSystems.

InterSystems Document Consumer преобразует сообщение в IHE “XDSb_RetrieveRequest” сообщение с использованием внутреннего преобразования.

Затем потребитель документов InterSystems перенаправляет запрос в конечную точку репозитория документов XDS в другой системе, на которую указывает значение в сообщении. Это значение является OID. Чтобы преобразовать OID в URL, требуется следующая настройка:

Запись реестра OID типа “Repository” для OID.

Запись реестра служб, содержащая URL-адрес репозитория:

Запись реестра служб должна включать регистрационный код OID в поле «Репозиторий». Это связывает записи OID и Service Registry вместе.

Если в параметре XDSbRepositoryServiceName в InterSystems Document Consumer есть значение, то сообщение будет отправлено в указанный там репозиторий, а не в репозиторий, указанный в сообщении. Это полезно для целей тестирования, но в рабочем приложении этот параметр должен быть пустым.

Репозиторий документов XDS в другой системе отвечает, предоставляя запрошенные документы в виде вложений MTOM в кодировке MIME.

InterSystems Document Consumer выделяет вложения и переводит их.

Обработчик документов InterSystems возвращает вложения MTOM в сообщении XML типа “RetrieveDocumentSetResponse” разнообразие.

Envoy разработан таким образом, что возможны различные подходы к управлению конфигурацией. Подход, используемый при развертывании, будет зависеть от потребностей разработчика. Простые развертывания возможны с полностью статической конфигурацией. Более сложные развертывания могут постепенно добавлять более сложную динамическую конфигурацию, недостатком которой является то, что разработчик должен предоставить один или несколько внешних API-интерфейсов поставщика конфигурации на основе gRPC/REST. Эти API известны под общим названием «xDS» (* служба обнаружения). В этом документе представлен обзор доступных в настоящее время параметров.

Справочник по конфигурации верхнего уровня.

Полностью статично¶

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

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

API Endpoint Discovery Service (EDS) предоставляет более продвинутый механизм, с помощью которого Envoy может обнаруживать элементы вышестоящего кластера. Наложенный поверх статической конфигурации, EDS позволяет развертыванию Envoy обойти ограничения DNS (максимальное количество записей в ответе и т. д.), а также потреблять больше информации, используемой для балансировки нагрузки и маршрутизации (например, канареечный статус, зона и т. д.). .).

Хотя можно использовать CDS без EDS, указав полностью статические кластеры, мы рекомендуем по-прежнему использовать EDS API для кластеров, указанных через CDS. Внутри, когда определение кластера обновляется, операция выполняется корректно. Однако все существующие пулы подключений будут слиты и подключены повторно. EDS не страдает от этого ограничения. Когда хосты добавляются и удаляются через EDS, существующие хосты в кластере не затрагиваются.

Служба обнаружения виртуальных хостов позволяет запрашивать виртуальные хосты, принадлежащие к конфигурации маршрута, по мере необходимости отдельно от самой конфигурации маршрута. Этот API обычно используется в развертываниях, в которых имеется большое количество виртуальных хостов в конфигурации маршрута.

API Secret Discovery Service (SDS) накладывает на механизм, с помощью которого Envoy может обнаруживать криптографические секреты (сертификат плюс закрытый ключ, ключи билета сеанса TLS) для своих слушателей, а также настраивать логику проверки одноранговых сертификатов (доверенные корневые сертификаты). , отзыв и т. д.).

API RunTime Discovery Service (RTDS) позволяет извлекать слои среды выполнения через xDS API. Это может быть удобно для уровней файловой системы или дополнено ими.

Агрегированные xDS («ADS»)¶

EDS, CDS и т. д. — это отдельные службы с разными именами служб REST/gRPC, например. StreamListeners, StreamSecrets. Для пользователей, которые хотят обеспечить соблюдение порядка, в котором ресурсы разных типов достигают Envoy, существует агрегированная xDS, единая служба gRPC, которая передает все типы ресурсов в одном потоке gRPC. (ADS поддерживается только gRPC). Подробнее о объявлениях .

Дельта gRPC xDS¶

Стандартный xDS — это «современное состояние»: каждое обновление должно содержать все ресурсы, при этом отсутствие ресурса в обновлении означает, что ресурс исчез. Envoy поддерживает «дельта» вариант xDS (включая ADS), где обновления содержат только добавленные/измененные/удаленные ресурсы. Delta xDS — это новый протокол с API-интерфейсами запроса/ответа, отличными от SotW. Подробнее о разнице .

xDS TTL¶

В некоторых обновлениях xDS может потребоваться установка TTL для защиты от недоступности уровня управления. Подробнее читайте здесь .

Читайте также: