使用XSOM获取xs:choice maxOccurs和minOccurs属性

时间:2012-04-18 14:30:53

标签: java xml xsd schema xsom

我有一段架构代码:

<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的信息。我在互联网上环顾四周,但只能找到从实际元素中检索这些信息的解决方案,而不是xs:choice元素。

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

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

  }
}

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

1 个答案:

答案 0 :(得分:2)

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