0

我有以下一段架构代码:

<xsd:choice minOccurs="0" maxOccurs="unbounded">
  <xsd:element ref="ref1"/>
  <xsd:element ref="ref2"/>
  <xsd:element ref="ref3"/>
  <xsd:element ref="ref4"/>
  <xsd:element ref="ref5"/>
</xsd:choice>

我正在使用用于 Java 的 XSOM 库,我想检索有关 xsd:choice 元素中描述的 minOccurs 和 maxOccurs 的信息。我在 Internet 上环顾四周,但只能找到从实际元素中检索此信息的解决方案,而不是 xs:choice 元素。

我还确定了可以“捕捉” xs:choice 元素的位置:

public void startElement(XSModelGroup arg0) {
  if (arg0.getCompositor() == XSModelGroup.CHOICE) {

  }
}

我在这里想要实现的是区分多项选择“选择”和单选。如果有人可以提供帮助,我将不胜感激。

4

1 回答 1

2

如果您从 XSComplexType 开始,则可以从 XSContentType 获取,从 XSContentType 可以执行 asParticle() 以将内容作为粒子获取;并且从一个粒子中,您可以执行 getTerm() 以在组件结构层次结构中获取其子级;对于一个模式组的术语(可能包括一个 xs:choice),您可以执行 asModelGroup() 以获得下一个级别。XSParticle 是 minOccurs() 和 maxOccurs() 属性可用的地方。这是一个非常奇怪的模型。

于 2012-04-18T15:57:04.513 回答