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ものは私の要件を満たす必要があると思います。しかし、他の人の使用に戻したとき、作成された要素は正しくないようです。

XSDElementDeclarationAPIを使用して直接作成するにはどうすればよいですか?

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 に答える