1

使用eclipse XSD API,我可以加载一个模式文件,然后解析相关的 xsd 组件。

现在我的问题是,我可以在XSDElementDeclaration不绑定任何架构文件的情况下创建一个空白组件并设置它们的属性吗?

例如,我想创建一个名为“query”的简单类型元素:

<element name = "query" type = "xsd:string"/>

我的代码是这样的:

XSDSimpleTypeDefinition queryStr =XSDFactory.eINSTANCE.createXSDSimpleTypeDefinition();
queryStr.setName("string");
queryStr.setTargetNamespace("http://www.w3.org/2001/XMLSchema");

XSDElementDeclaration queryEle  = XSDFactory.eINSTANCE.createXSDElementDeclaration();
queryEle.setName("query");
queryEle.setTypeDefinition(queryStr);

我认为创建的queryEle应该符合我的要求。但是当我将它返回给其他人使用时,似乎创建的元素不正确。

如何XSDElementDeclaration使用 API 直接创建?

4

1 回答 1

1

仍然需要创建 XSDParticle 并将此元素设置为粒子:

XSDSchema schemaForSchema =  XSDUtil.getSchemaForSchema(XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001);
XSDSimpleTypeDefinition queryType = schemaForSchema.resolveSimpleTypeDefinition(simpleTypeName);

XSDElementDeclaration queryEle  = XSDFactory.eINSTANCE.createXSDElementDeclaration();
queryEle.setName("query");
queryEle.setTypeDefinition(queryType);

XSDParticle elementParticle = XSDFactory.eINSTANCE.createXSDParticle();
elementParticle.setMinOccurs(minOccurs);
elementParticle.setMaxOccurs(maxOccurs);
elementParticle.setContent(element);
....

//add the element to XSDModelGroup
modelGroup.getContents().add(elementParticle);

...

于 2014-04-04T06:00:07.087 回答