У меня есть схема XML и экземпляр XML, который подходит для этой схемы.
Этот экземпляр XML содержит некоторые данные.
Я хотел бы расширить экземпляр XML дополнительными данными (мои собственные метаданные для каждого элемента XML в экземпляре XML), сохранив их действительность для предоставленной схемы.
Реальный вариант использования состоит в том, что у меня есть собственный элемент управления, который получает данные через XML, и я хотел бы сгенерировать новый XML, который каким-то образом хранит дополнительные метаданные, связанные с сериализацией элемента управления.
Пара моих решений заключалась в том, чтобы сохранить другой документ со списком «XPath, Mode, Color» который я загружаю на втором проходе после загрузки XML.
Другим решением было добавить идентификаторы к узлам XML и таким образом ссылаться на узлы из другого документа (вместо использования XPath).
И еще одна идея заключалась в том, чтобы каким-то образом добавить атрибуты (которые находятся в моем пространстве имен для каждого элемента) в экземпляр XML данных, но проблема в том, что у меня, вероятно, возникнут проблемы с проверкой XML с новыми атрибутами позже, когда я попытаюсь загрузить его снова. (потому что атрибуты, которые я добавляю в XML, не определены в его схеме)
У вас есть лучшее решение этой проблемы? За какое из решений вы бы проголосовали? (Пожалуйста, объясни.)
Спасибо!





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