在我大学的家庭作业项目中,我需要写一个XSD(XML )来描述一个学校历史应该包含哪些元素。在其中一个例子中,我有一个元素"Disciplina",它有一个属性“分类”(示例如下):
<Disciplina categoria = "atividade academica">
(...other elements here...)
<situacao>AC</situacao>
</Disciplina>此外,“情景”元素对一些特定的字符串值有一个范围:"AP、RM、RF、ED、AB、AE、AI、TR、TD、RI、IN“和”范畴“是相同的逻辑:"obrigatoria、optativa、livre escolha、atividade academica”。
但是,当“范畴”是"atividade academica“时,我只想将”情景“元素的可能值限制为"AC”或"NC",否则,限制值将是"AP“、"RM”、"RF“、"ED”、"AB“、"AE”、"AI“、"TR”、"TD“、"RI”、"IN“。下面的xml表达了我试图表达的高层次的想法:
<element>
<name>situacao</name>
<type>String</type>
<range>AP,RM,RF,RF,ED,AB,AE,AI,TR,TD,RI,IN</range>
<range categoria = "atividade academica">AC,NC</range>
</element>我的问题是:如何根据XML中的“分类”值来表示这种“情景”值限制的变化?
发布于 2019-04-09 08:11:11
这在XSD1.0(这是许多XSD处理器支持的版本,例如来自Microsoft的处理器)中是无法做到的。在XSD1.1(由Xerces、Saxon和Altova支持)中,可以通过以下几种方式来实现:
(a)一般目的主张,例如
<xs:assert test="(@categoria = 'atividade academia' and situacio = ('AC', 'NC'))
or (@categoria = 'xxxx' and situacio = ('ED', 'AB'))...."/>(b)条件类型赋值,使用xs:alternative:这里的思想是将元素的类型定义为其属性值的函数;同样,这是使用XPath表达式完成的。
https://stackoverflow.com/questions/55585239
复制相似问题