2014-10-07 3 views
2

У меня есть этот действительный тег:Может ли текст в последовательности элементов управляться в XSD?

<Element> 
    <SubElement/> 
    Some text directly here. 
</Element> 

Или это также должно быть действительным:

<Element> 
    Some text directly here. 
</Element> 

Но это не должно быть действительным:

<Element> 
    Some text directly here. 
    <SubElement/> 
    Some text directly here. 
</Element> 

Кроме того, это не должно быть:

<Element> 
    <SubElement/> 
</Element> 

Есть ли способ добавить текстовые узлы в последовательность в XSD?

ответ

2

Это разумный запрос, но, к сожалению, вы не можете ограничить позицию текста таким образом, используя XSD.

Вы можете использовать xs:complexType/@mixed, чтобы элементы были смешаны с текстом, но вы не можете представить ограничения, которые вы запрашиваете; <SubElement/> должно быть разрешено появляться в любом месте текста.

+0

Спасибо. Есть ли способ ограничить элемент 'Element' содержать текстовый узел * OR * узел' SubElement'? – WonderCsabo

+0

Нет, вы могли бы подумать, что для этого может быть использовано 'xs: choice', но, к сожалению, XSD не имеет ортогонального представления текста и элементов, которые необходимы для этого. Если вы можете использовать XSD 1.1, вы могли бы, возможно, создать смешанный контент 'xs: assert' для достижения вашего текстового узла * OR *' SubElement'. – kjhughes

+0

Спасибо за ваш ответ еще раз! – WonderCsabo

Смежные вопросы