首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何根据元素的属性值限制元素的值

如何根据元素的属性值限制元素的值
EN

Stack Overflow用户
提问于 2019-04-09 04:43:11
回答 1查看 33关注 0票数 0

在我大学的家庭作业项目中,我需要写一个XSD(XML )来描述一个学校历史应该包含哪些元素。在其中一个例子中,我有一个元素"Disciplina",它有一个属性“分类”(示例如下):

代码语言:javascript
复制
<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表达了我试图表达的高层次的想法:

代码语言:javascript
复制
<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中的“分类”值来表示这种“情景”值限制的变化?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-04-09 08:11:11

这在XSD1.0(这是许多XSD处理器支持的版本,例如来自Microsoft的处理器)中是无法做到的。在XSD1.1(由Xerces、Saxon和Altova支持)中,可以通过以下几种方式来实现:

(a)一般目的主张,例如

代码语言:javascript
复制
<xs:assert test="(@categoria = 'atividade academia' and situacio = ('AC', 'NC')) 
  or (@categoria = 'xxxx' and situacio = ('ED', 'AB'))...."/>

(b)条件类型赋值,使用xs:alternative:这里的思想是将元素的类型定义为其属性值的函数;同样,这是使用XPath表达式完成的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55585239

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档