Как добавить внешние данные в XML?

У меня есть схема XML и экземпляр XML, который подходит для этой схемы.

Этот экземпляр XML содержит некоторые данные.

Я хотел бы расширить экземпляр XML дополнительными данными (мои собственные метаданные для каждого элемента XML в экземпляре XML), сохранив их действительность для предоставленной схемы.

Реальный вариант использования состоит в том, что у меня есть собственный элемент управления, который получает данные через XML, и я хотел бы сгенерировать новый XML, который каким-то образом хранит дополнительные метаданные, связанные с сериализацией элемента управления.

Пара моих решений заключалась в том, чтобы сохранить другой документ со списком «XPath, Mode, Color» который я загружаю на втором проходе после загрузки XML.

Другим решением было добавить идентификаторы к узлам XML и таким образом ссылаться на узлы из другого документа (вместо использования XPath).

И еще одна идея заключалась в том, чтобы каким-то образом добавить атрибуты (которые находятся в моем пространстве имен для каждого элемента) в экземпляр XML данных, но проблема в том, что у меня, вероятно, возникнут проблемы с проверкой XML с новыми атрибутами позже, когда я попытаюсь загрузить его снова. (потому что атрибуты, которые я добавляю в XML, не определены в его схеме)

У вас есть лучшее решение этой проблемы? За какое из решений вы бы проголосовали? (Пожалуйста, объясни.)

Спасибо!

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
0
243
1

Ответы 1

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

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

По вашим предлагаемым решениям:

  1. Ссылка на XPATH: хорошо, если исходный XML не изменяется и вы можете создавать окончательные XPATH.
  2. Ссылка по идентификатору узла: хорошо, но вам нужно будет добавить идентификаторы в исходный XML, если у вас еще нет, и вам нужно будет обновить идентификаторы, если исходные изменения (поэтому вам может потребоваться счетчик идентификаторов для назначения идентификатора или иным образом использовать сгенерированный GUID в качестве идентификаторов).
  3. Если вы хотите добавить метаданные в исходный XML, вы можете либо обновить схему, либо создать новую для «обновленных документов» (и изменить ссылку на схему в XML-документе).

С уважением, Inbar

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

Ran 13.01.2009 16:46

Другие вопросы по теме