国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > JSP > 正文

詳解Eclipse XSD 生成枚舉類(lèi)型的Schema的實(shí)例

2024-09-05 00:18:31
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

由于互聯(lián)網(wǎng)上沒(méi)有關(guān)于Eclipse XSD的中文信息,也沒(méi)有關(guān)于Eclipse XSD的示例代碼,但有時(shí)我們需要生成一個(gè)簡(jiǎn)單的帶有枚舉限制的XSD模式類(lèi)型,下文是錯(cuò)新技術(shù)頻道小編為你帶來(lái)的介紹。

Eclipse XSD 生成枚舉類(lèi)型的Schema的實(shí)例詳解

<?xml version="1.0" encoding="UTF-8"?><schema xmlns="http://www.w3.org/2001/XMLSchema"  targetNamespace="http://www.w3.org/2001/XMLSchema">    <complexType name="StudentType">     <sequence>      <element maxOccurs="1" minOccurs="1" name="username" type="string"/>      <element maxOccurs="1" minOccurs="1" name="password" type="string"/>      <element maxOccurs="1" minOccurs="1" name="alignment" type="AlignmentType"/>     </sequence>    </complexType>    <simpleType name="AlignmentType">     <restriction base="string">      <enumeration value="RIGHT"/>      <enumeration value="MIDDLE"/>      <enumeration value="LEFT"/>     </restriction>    </simpleType>    <element name="Student" type="StudentType"/>   </schema> 

其中, <SimpleType name="AlignmentType"> 代表的就是一個(gè)帶枚舉限定的簡(jiǎn)單類(lèi)型。那么應(yīng)該如何生成呢?請(qǐng)見(jiàn)參考下面的代碼。

import org.eclipse.xsd.XSDComplexTypeDefinition; import org.eclipse.xsd.XSDCompositor; import org.eclipse.xsd.XSDElementDeclaration; import org.eclipse.xsd.XSDEnumerationFacet; import org.eclipse.xsd.XSDFactory; import org.eclipse.xsd.XSDImport; import org.eclipse.xsd.XSDInclude; import org.eclipse.xsd.XSDModelGroup; import org.eclipse.xsd.XSDParticle; import org.eclipse.xsd.XSDRedefine; import org.eclipse.xsd.XSDSchema; import org.eclipse.xsd.XSDSchemaDirective; import org.eclipse.xsd.XSDSimpleTypeDefinition; import org.eclipse.xsd.util.XSDResourceImpl; import org.eclipse.xsd.util.XSDUtil; import org.junit.Test; import org.w3c.dom.Element;  public class EnumFacetTest {   protected static XSDFactory xsdFactory = XSDFactory.eINSTANCE;   private void createAligementElement(XSDSimpleTypeDefinition aligmentType){   String[] cellAligements={"RIGHT","MIDDLE","LEFT"};    for(int i=0;i<cellAligements.length;i++){      XSDEnumerationFacet alEnum=XSDFactory.eINSTANCE.createXSDEnumerationFacet();      alEnum.setLexicalValue(cellAligements[i]);      //aligmentType.getFacets().add(alEnum);      aligmentType.getFacetContents().add(alEnum);    }    }   /**   <?xml version="1.0" encoding="UTF-8"?><schema xmlns="http://www.w3.org/2001/XMLSchema"  targetNamespace="http://www.w3.org/2001/XMLSchema">    <complexType name="StudentType">     <sequence>      <element maxOccurs="1" minOccurs="1" name="username" type="string"/>      <element maxOccurs="1" minOccurs="1" name="password" type="string"/>      <element maxOccurs="1" minOccurs="1" name="alignment" type="AlignmentType"/>     </sequence>    </complexType>    <simpleType name="AlignmentType">     <restriction base="string">      <enumeration value="RIGHT"/>      <enumeration value="MIDDLE"/>      <enumeration value="LEFT"/>     </restriction>    </simpleType>    <element name="Student" type="StudentType"/>   </schema>   */   @Test    public void EnumFacetTest() {     String targeNameSpace="http://www.w3.org/2001/XMLSchema";     XSDSchema xsdSchema=xsdFactory.createXSDSchema();     xsdSchema.setTargetNamespace(targeNameSpace);     xsdSchema.getQNamePrefixToNamespaceMap().put(null, "http://www.w3.org/2001/XMLSchema");      //1.1 Create Complex type:student     XSDComplexTypeDefinition complexTypeDef = xsdFactory.createXSDComplexTypeDefinition();     complexTypeDef.setTargetNamespace(xsdSchema.getTargetNamespace());     complexTypeDef.setName("StudentType");          XSDParticle xsdParticle=xsdFactory.createXSDParticle();     XSDModelGroup xsdModuleGroup=xsdFactory.createXSDModelGroup();     xsdModuleGroup.setCompositor(XSDCompositor.SEQUENCE_LITERAL);        xsdParticle.setContent(xsdModuleGroup);          complexTypeDef.setContent(xsdParticle);     complexTypeDef.setContentType(xsdParticle);     xsdSchema.getContents().add(complexTypeDef);          //1.2 Add element for complex type     //1.2.1 username element     XSDParticle localXSDParticle = xsdFactory.createXSDParticle();     localXSDParticle.setMinOccurs(1);     localXSDParticle.setMaxOccurs(1);     XSDElementDeclaration localXSDElementDeclaration = xsdFactory.createXSDElementDeclaration();     localXSDElementDeclaration.setTargetNamespace(targeNameSpace);     localXSDElementDeclaration.setName("username");     XSDSchema localXSDSchema = XSDUtil.getSchemaForSchema("http://www.w3.org/2001/XMLSchema");     XSDSimpleTypeDefinition localSimpleType=localXSDSchema.resolveSimpleTypeDefinition("string");     localXSDElementDeclaration.setTypeDefinition(localSimpleType);     localXSDParticle.setContent(localXSDElementDeclaration);     xsdModuleGroup.getContents().add(localXSDParticle);          //1.2.2 password element     localXSDParticle = xsdFactory.createXSDParticle();     localXSDParticle.setMinOccurs(1);     localXSDParticle.setMaxOccurs(1);     localXSDElementDeclaration = xsdFactory.createXSDElementDeclaration();     localXSDElementDeclaration.setTargetNamespace(targeNameSpace);     localXSDElementDeclaration.setName("password");     localXSDSchema = XSDUtil.getSchemaForSchema("http://www.w3.org/2001/XMLSchema");     localSimpleType=localXSDSchema.resolveSimpleTypeDefinition("string");     localXSDElementDeclaration.setTypeDefinition(localSimpleType);     localXSDParticle.setContent(localXSDElementDeclaration);     xsdModuleGroup.getContents().add(localXSDParticle);          //1.2.3.1 Create Simple Type with XSDEnumerationFacet---------------      XSDSimpleTypeDefinition xsdSimpleTypeDefinition = XSDFactory.eINSTANCE.createXSDSimpleTypeDefinition();      XSDSimpleTypeDefinition baseTypeDefinition = xsdSchema.resolveSimpleTypeDefinitionURI("string");      xsdSimpleTypeDefinition.setBaseTypeDefinition(baseTypeDefinition);      xsdSimpleTypeDefinition.setName("AlignmentType");      createAligementElement(xsdSimpleTypeDefinition);      xsdSchema.getContents().add(xsdSimpleTypeDefinition);     //1.2.3.2 Create element with Simple Type --------------      localXSDParticle = xsdFactory.createXSDParticle();      localXSDParticle.setMinOccurs(1);      localXSDParticle.setMaxOccurs(1);      localXSDElementDeclaration = xsdFactory.createXSDElementDeclaration();      localXSDElementDeclaration.setTargetNamespace(targeNameSpace);      localXSDElementDeclaration.setName("alignment");      localXSDSchema = XSDUtil.getSchemaForSchema("http://www.w3.org/2001/XMLSchema");      localXSDElementDeclaration.setTypeDefinition(xsdSimpleTypeDefinition);      localXSDParticle.setContent(localXSDElementDeclaration);      xsdModuleGroup.getContents().add(localXSDParticle);        //2.Create XSDElementDeclaration and attached complex type to XSD element     XSDElementDeclaration xsdEelement=xsdFactory.createXSDElementDeclaration();     xsdEelement.setName("Student");     xsdEelement.setTypeDefinition(complexTypeDef);     xsdSchema.getContents().add(xsdEelement);          //3.Print Schema     SchemaPrintService.printSchema(xsdSchema);           } }  class SchemaPrintService {   /**    * print schema to console    *    * @param xsdSchema    */   public static void printSchema(XSDSchema xsdSchema) {     System.out.println("<!-- ===== Schema Composition =====");     printDirectives(" ", xsdSchema);     System.out.println("-->");      System.out         .println("<!-- [ " + xsdSchema.getSchemaLocation() + " ] -->");     xsdSchema.updateElement();     Element element = xsdSchema.getElement();     if (element != null) {       // Print the serialization of the model.       XSDResourceImpl.serialize(System.out, element);     }   }    private static void printSchemaStart(XSDSchema xsdSchema) {     System.out.print("<schema targetNamespace=/"");     if (xsdSchema.getTargetNamespace() != null) {       System.out.print(xsdSchema.getTargetNamespace());     }     System.out.print("/" schemaLocation=/"");     if (xsdSchema.getSchemaLocation() != null) {       System.out.print(xsdSchema.getSchemaLocation());     }     System.out.print("/">");   }    private static void printDirectives(String indent, XSDSchema xsdSchema) {     System.out.print(indent);     printSchemaStart(xsdSchema);     System.out.println();      if (!xsdSchema.getReferencingDirectives().isEmpty()) {       System.out.println(indent + " <referencingDirectives>");       for (XSDSchemaDirective xsdSchemaDirective : xsdSchema           .getReferencingDirectives()) {         XSDSchema referencingSchema = xsdSchemaDirective.getSchema();         System.out.print(indent + "  ");         printSchemaStart(referencingSchema);         System.out.println();         System.out.print(indent + "   ");         if (xsdSchemaDirective instanceof XSDImport) {           XSDImport xsdImport = (XSDImport) xsdSchemaDirective;           System.out.print("<import namespace=/"");           if (xsdImport.getNamespace() != null) {             System.out.print(xsdImport.getNamespace());           }           System.out.print("/" schemaLocation=/"");         } else if (xsdSchemaDirective instanceof XSDRedefine) {           System.out.print("<redefine schemaLocation=/"");         } else if (xsdSchemaDirective instanceof XSDInclude) {           System.out.print("<include schemaLocation=/"");         }         if (xsdSchemaDirective.getSchemaLocation() != null) {           System.out.print(xsdSchemaDirective.getSchemaLocation());         }         System.out.println("/"/>");         System.out.println(indent + "  </schema>");       }       System.out.println(indent + " </referencingDirectives>");     }      if (!xsdSchema.getIncorporatedVersions().isEmpty()) {       System.out.println(indent + " <incorporatedVersions>");       for (XSDSchema incorporatedVersion : xsdSchema           .getIncorporatedVersions()) {         printDirectives(indent + "  ", incorporatedVersion);       }       System.out.println(indent + " </incorporatedVersions>");     }      System.out.println(indent + "</schema>");   }  } 

以上就是錯(cuò)新技術(shù)頻道小編給大家述說(shuō)的關(guān)于詳解Eclipse XSD 生成枚舉類(lèi)型的Schema的實(shí)例,如果有筒靴們對(duì)這行業(yè)有興趣的話,可以在這方面進(jìn)行學(xué)習(xí)。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 芦溪县| 张北县| 合川市| 麻江县| 永川市| 巴楚县| 云阳县| 金沙县| 阜南县| 龙川县| 镇坪县| 灵山县| 吉安市| 万年县| 西贡区| 宜昌市| 高台县| 黔西县| 阳新县| 徐汇区| 伽师县| 岢岚县| 芦山县| 丰原市| 河北省| 鞍山市| 凌云县| 马龙县| 榆树市| 涞源县| 稷山县| 高清| 田东县| 竹溪县| 会昌县| 巧家县| 原平市| 庆安县| 全椒县| 建瓯市| 永吉县|