2012-07-17 33 views
1

使用eclipse XSD API,我可以加載模式文件,然後解析相關的xsd組件。我可以通過eclipse xsd API創建XSD組件而不綁定任何模式文件嗎?

現在我的問題是,我可以創建一個空白的XSDElementDeclaration組件並設置它們的屬性而不綁定任何模式文件?

例如,我想創建一個名爲簡單類型元素 「查詢」:

<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

+0

誰能幫助嗎? – zgcharley 2012-07-20 02:15:39

回答

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); 

...

相關問題