XSD для описания XSD - PullRequest
       6

XSD для описания XSD

3 голосов
/ 09 декабря 2008

У меня есть приложение, в которое пользователи могут загружать XSD для описания определенных видов пользовательских данных. Приложению необходимо проанализировать этот XSD, чтобы правильно инициализировать различные биты метаданных базы данных (например, преобразовать перечисления xs: в списки разрешенных значений, которые будут заполнять раскрывающиеся списки). Тот же XSD, введенный пользователем, также используется для проверки документов XML, отправляемых в приложение другими системами.

Можно ли написать мастер XSD, по которому я могу проверить такой XSD, предоставленный пользователем, чтобы я мог ограничить то, как пользователи могут описывать свои данные, и, следовательно, облегчить работу по анализу XSD? Например, скажем, я хотел иметь возможность разрешить пользователям загружать любой XSD вообще, если он не содержит тегов xs: union. Как я мог написать XSD, который я мог бы использовать для проверки XSD, загруженного пользователем для обеспечения соблюдения этого правила?

Ответы [ 2 ]

4 голосов
/ 09 декабря 2008

Вы найдете его здесь: http://www.w3.org/2001/XMLSchema.xsd

Просто подсказка, схема начинается с тега xsd: schema. И если правильно, содержит атрибут:

xmlns:xsd="http://www.w3.org/2001/XMLSchema"

Следуйте за URL, и вы найдете и информационную страницу со ссылкой на dtd и xsd.

1 голос
/ 09 декабря 2008

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

Я бы начал с рассмотрения схемы XMLSchema . Используя это, вы можете написать собственную схему, которая добавляет дополнительные требования к вашим исходным документам, например, принудительное объединение всех документов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...