1
私はorg.eclipse.xsd.XSDSchemaを使用してXMLスキーマファイル(* .xsd)を解析しており、リテラルXSDソースとしていくつかのXSDTypeDefinitionsを表示したいと考えています。ここでorg.eclipse.xsd.XSDSchemaオブジェクトからXSDソースを取得しますか?
は、例スキーマです:
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="shiporder">
<xs:complexType>
<xs:sequence>
<xs:element name="orderperson" type="xs:string"/>
<xs:element name="shipto">
<xs:complexType>
<xs:sequence>
<xs:element name="name" type="xs:string"/>
<xs:element name="address" type="xs:string"/>
<xs:element name="city" type="xs:string"/>
<xs:element name="country" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:complexType>
</xs:element>
</xs:schema>
そしてここでは、問題を説明するためのいくつかのコードです:
XSDSchema schema = loadSchemaFromFile(); // not shown
for(XSDElementDeclaration element : schema.getElementDeclarations()){
assert element.getName().equals("shiporder");
String xsdSource = // NOW WHAT DO I NEED TO DO HERE?
String expectedXsdSource = "<xs:element name=\"shiporder\">" +
" <xs:complexType>" +
" <xs:sequence>" +
" <xs:element name=\"orderperson\" type=\"xs:string\"/>" +
" <xs:element name=\"shipto\">" +
" <xs:complexType>" +
" <xs:sequence>" +
" <xs:element name=\"address\" type=\"xs:string\"/>" +
" </xs:sequence>" +
" </xs:complexType>" +
" </xs:element>" +
" </xs:complexType>" +
"</xs:element>";
assert xsdSource.equals(expectedXsdSource);
}
私は、Eclipse 3.7のインストールから次のjarファイルを使用しています:
- org.eclipse.xsd_2.7.0.v20110606-0949.jar
- org.eclipse.emf.ecore_2.7.0.v20110605-0747.jar
- org.eclipse.emf.common_2.7.0.v20110605-0747.jar