2017-01-23 12 views
0

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

E.g. для данного XML

<Root> 
    <Element1 Name="test1>Text1</Element1> 
    <Element2 Name="test2> 
    </Element2> 
</Root> 

Я хотел бы выразить XSD так, что любой элемент может содержать узел текста.

например.

<Root> 
    <Template>element within Root</Template> 
    <Element1 Name="test1>Text1<Template>element inline</Template></Element1> 
    <Element2 Name="test2> 
     <Template>element within Element2</Template> 
    </Element2> 
</Root> 

Я по-настоящему признателен за любую помощь!

BR

+0

Когда вы говорите «содержать текст узла», вы имеете в виду «содержать символьные данные, а также дочерние элементы»? Или «содержать элемент шаблона»? или что? Вопрос не кажется ясным. –

+0

Простите, да, это не было выражено достаточно ясно. Идея заключалась в том, чтобы добавить узел в любом месте – oachkatzlschwoaf

ответ

0

В XSD 1.0 его трудно сделать это, вам нужно разместить < хз: любые > элементы, где вы хотите, чтобы «любые» элементы появляются.

Однако его не так просто, поставив < xs: any > в неположенном месте создает неоднозначность (и не допускается), и это будет охватывать почти всюду, куда вы хотите их поместить!

В XSD 1.1 вы можете использовать openContent (brief tutorial), но опять же есть проблемы, XSD 1.1 не поддерживается изначально в .Net, но если вы работаете в java, то Xerces поддерживает XSD 1.1 (по крайней мере, бета-версия была доступный в последний раз, когда я смотрел).