使用eclipseXSD 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
应该满足我的要求。但当我将创建的元素返回给他人使用时,它似乎是不正确的。
如何使用API直接创建XSDElementDeclaration
?
仍然需要创建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);