Я пишу XSD для довольно сложного формата файлов XML. Во многих случаях XML может содержать либо фактическое литеральное значение, либо сценарий, выдающий это значение. (Подумайте, Excel: 42
против =21+21
)
Например, чтобы указать размер, допустимо написать одно из следующих:
<size>42</size>
<size><script>2*21</script></size>
Моей первой мыслью было использование <choice>
, чтобы разрешить либо int, либо скрипт в элементе size
. Однако тогда мне нужно будет дать строковому элементу имя, что приведет к неуклюжему синтаксису, например <size><value>42</value></size>
. Так как литералы будут использоваться гораздо чаще, чем сценарии, я не хочу раздувать их синтаксис.
Есть идеи, как выразить начальный синтаксис в XSD?