簡體   English   中英

如何根據元素的值限制元素的值

[英]How to restrict the values of an element according to the value of its attribute

在大學的家庭作業項目中,我需要編寫一個XSD(XML Schema)來描述學校歷史中的哪些元素。 在其中一個案例中,我有“Disciplina”元素,它具有屬性“categoria”(如下所示):

<Disciplina categoria = "atividade academica">
  (...other elements here...)
  <situacao>AC</situacao>
</Disciplina>

除此之外,元素“situacao”在一些特定的字符串值上有一個范圍:“AP,RM,RF,ED,AB,AE,AI,TR,TD,RI,IN”和“categoria”是相同的邏輯:“ obrigatoria,optativa,livre escolha,atividade academica。“

但是,當“categoria”是“atividade academica”時,我想將元素“situacao”的可能值僅限制為“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 Schema中的“categoria”值來表示“situacao”值的限制變化?

這不能在XSD 1.0中完成(這是許多XSD處理器支持的版本,例如來自Microsoft的版本)。 在XSD 1.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表達式完成此操作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM