Подскажите, пожалуйста, может, есть в природе свободная библиотека, с помощью которой можно реализовать что-то вроде интеллисенса для XML файлов?
Вроде того: передаешь ей xsd схему и контекст (текущий узел) в XML файле, а она выдаёт список элементов, которые в эту точку могут быть вставлены (причем с учетом ограничений sequence и maxOccurs).
Здравствуйте, dmitry_npi, Вы писали:
_>Вроде того: передаешь ей xsd схему и контекст (текущий узел) в XML файле, а она выдаёт список элементов, которые в эту точку могут быть вставлены (причем с учетом ограничений sequence и maxOccurs).
Здравствуйте, Sinix, Вы писали:
S>Здравствуйте, dmitry_npi, Вы писали:
_>>Вроде того: передаешь ей xsd схему и контекст (текущий узел) в XML файле, а она выдаёт список элементов, которые в эту точку могут быть вставлены (причем с учетом ограничений sequence и maxOccurs).
S>Можно начать вот с этих: S>http://stackoverflow.com/questions/1692992/open-source-xml-editor
Смотрел уже. Автодополнения там нет (из тех, что на C#).
S>Возможно, что-то есть в sharpdevelop, но эт надо у них на форуме спрашивать.
Тоже ковырял. Автодополнение есть, контекст оно, я так понял, не учитывает. То есть если дочерний элемент уже вставлен, и по схеме он единственный, шарпдевелоп все равно его предложит.
Здравствуйте, dmitry_npi, Вы писали:
_>Тоже ковырял. Автодополнение есть, контекст оно, я так понял, не учитывает. То есть если дочерний элемент уже вставлен, и по схеме он единственный, шарпдевелоп все равно его предложит.
Но. Я не могу понять, этот валидатор, что, в сам проверяемый XML документ вообще не смотрит?
Есть какое-то объяснение тому, что в метод ValidateElement передаётся не XmlElement, у которого есть родитель и потомки, а абстрактное имя элемента. Где же контекст?
Здравствуйте, dmitry_npi, Вы писали:
_>Но. Я не могу понять, этот валидатор, что, в сам проверяемый XML документ вообще не смотрит? _>Есть какое-то объяснение тому, что в метод ValidateElement передаётся не XmlElement, у которого есть родитель и потомки, а абстрактное имя элемента. Где же контекст?
Я XmlSchemaValidator почти не использовал, по памяти и msdn — контекст зависит от предыдущих вызовов + от XmlSchemaValidator.Initialize(). Одна из перегрузок .Initialize() позволяет задать узел схемы, который сейчас проверяем.
Здравствуйте, Sinix, Вы писали:
S>Здравствуйте, dmitry_npi, Вы писали:
_>>Но. Я не могу понять, этот валидатор, что, в сам проверяемый XML документ вообще не смотрит? _>>Есть какое-то объяснение тому, что в метод ValidateElement передаётся не XmlElement, у которого есть родитель и потомки, а абстрактное имя элемента. Где же контекст? S>Я XmlSchemaValidator почти не использовал, по памяти и msdn — контекст зависит от предыдущих вызовов + от XmlSchemaValidator.Initialize(). Одна из перегрузок .Initialize() позволяет задать узел схемы, который сейчас проверяем.
Вот именно, узел схемы, но не узел документа, который подлежит проверке. Таким образом, как сказать этому валидатору, что в проверяемом узле уже фактически есть некоторые узлы, и при вытягивании списка возможных детей для проверяемого узла, следует учесть что часть детей уже присутствует, и их из списка надо исключить в соответствии с ограничениями maxOccurs?
Здравствуйте, dmitry_npi, Вы писали:
_>Вот именно, узел схемы, но не узел документа, который подлежит проверке. Таким образом, как сказать этому валидатору, что в проверяемом узле уже фактически есть некоторые узлы, и при вытягивании списка возможных детей для проверяемого узла, следует учесть что часть детей уже присутствует, и их из списка надо исключить в соответствии с ограничениями maxOccurs?
Если ничего не путаю — только вызовом ValidateElement для существующих элементов.