亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JSP > 正文

Eclipse XSD 生成枚舉類型的Schema的實例詳解

2024-09-05 00:23:26
字體:
來源:轉載
供稿:網友

Eclipse XSD 生成枚舉類型的Schema的實例詳解

前言:

因為網上關于Eclipse XSD的中文資料比較少,而且關于Eclipse XSD的范例代碼也鳳毛麟角,但是有的時候我們需要生成一個帶枚舉限定的簡單類型的XSD Schema,比如下面的格式,

<?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"> 代表的就是一個帶枚舉限定的簡單類型。那么應該如何生成呢?請見參考下面的代碼。

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

如有疑問請留言或者到本站社區交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!


注:相關教程知識閱讀請移步到JSP教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
黄色成人av网| 午夜精品久久久久久久99热浪潮| 91精品国产一区| 国产精品青青在线观看爽香蕉| 国产成人+综合亚洲+天堂| 国产日韩欧美在线观看| 精品在线小视频| 成人免费视频网| 91精品久久久久久久久青青| 久久久国产影院| 欧美另类老女人| 一本一本久久a久久精品牛牛影视| 久久国产精品久久久| 日本欧美黄网站| 精品视频在线导航| 亚洲影影院av| 日韩精品高清在线| 亚洲国产古装精品网站| 91久久精品国产91性色| 亚洲国产成人av在线| 91久久久久久久| 亚洲精品国产精品乱码不99按摩| xvideos亚洲人网站| 国产精品高潮在线| 亚洲精品久久久久中文字幕欢迎你| 性色av一区二区三区| 98精品国产高清在线xxxx天堂| 精品女厕一区二区三区| 欧美放荡办公室videos4k| 91热福利电影| 国产精品专区h在线观看| 欧美国产日韩一区二区| 亚洲欧美在线免费观看| 欧美日韩在线观看视频| 久久久久国产精品一区| 久久99久久99精品中文字幕| 亚洲午夜国产成人av电影男同| 国产精品视频一区国模私拍| 麻豆国产精品va在线观看不卡| 亚洲天堂免费视频| 日韩在线免费av| 98精品在线视频| 欧美一区深夜视频| 久久久久久久久久久久久久久久久久av| 粗暴蹂躏中文一区二区三区| 欧美激情视频网站| 红桃视频成人在线观看| 91精品视频在线免费观看| 欧美激情一区二区三级高清视频| 日韩av在线天堂网| 91经典在线视频| 最近2019年中文视频免费在线观看| 日韩精品视频在线免费观看| 亚洲欧洲xxxx| 奇米4444一区二区三区| 另类视频在线观看| 国产亚洲人成网站在线观看| 国产亚洲视频在线| 精品呦交小u女在线| 国产精品成人观看视频国产奇米| 亚洲xxxx视频| 日韩视频免费在线观看| 日韩欧美精品中文字幕| 国外成人在线直播| 亚洲图片在线综合| 欧美极品在线视频| 欧美另类精品xxxx孕妇| 国产精品美女久久久久av超清| 搡老女人一区二区三区视频tv| 成人午夜两性视频| 亚洲精品一区在线观看香蕉| 国产在线视频欧美| 亚洲成人av资源网| 成人精品一区二区三区电影免费| 国产成人涩涩涩视频在线观看| 性欧美长视频免费观看不卡| 国产精品亚洲片夜色在线| 亚洲欧洲日产国产网站| 久久国产精品免费视频| 国产午夜精品久久久| 欧美又大粗又爽又黄大片视频| 亚洲国产欧美一区二区丝袜黑人| 91理论片午午论夜理片久久| 久久影院中文字幕| 久久97精品久久久久久久不卡| 亚洲黄色av女优在线观看| 成人在线一区二区| 成人做爽爽免费视频| 亚洲国产欧美日韩精品| 51ⅴ精品国产91久久久久久| 成人xvideos免费视频| 日韩美女视频免费在线观看| 国产精品成人免费电影| 成人免费视频a| 欧美一级高清免费| 成人性生交大片免费观看嘿嘿视频| 亚洲国语精品自产拍在线观看| 精品国产区一区二区三区在线观看| 亚洲人成五月天| 成人福利网站在线观看| 黄网站色欧美视频| 91久久久久久久久久久| 亚洲一区中文字幕在线观看| 97色在线视频| 欧美成人手机在线| 色yeye香蕉凹凸一区二区av| 欧美在线亚洲一区| 欧美野外wwwxxx| 久久97久久97精品免视看| 日韩精品一二三四区| 国产有码一区二区| 国产日韩欧美在线视频观看| 亚洲成人中文字幕| 成人国产在线激情| 91精品久久久久久久久久久| 国产精品美女主播在线观看纯欲| 亚洲第一区在线| 日韩精品在线免费| 精品高清一区二区三区| 亚洲第一男人天堂| 色yeye香蕉凹凸一区二区av| 91精品国产91久久久久久吃药| 日韩电影中文字幕一区| 日韩成人中文字幕| 国产日韩精品综合网站| 欧美电影免费观看| 国产精品xxx视频| 狠狠色狠狠色综合日日五| 国产精品久久久久99| 色老头一区二区三区在线观看| 97精品一区二区视频在线观看| 91av视频导航| **欧美日韩vr在线| 91性高湖久久久久久久久_久久99| 2020久久国产精品| 精品国产91久久久久久老师| 性欧美xxxx视频在线观看| 国产91精品视频在线观看| 国产精品久久久久久婷婷天堂| 一个人看的www久久| 中文字幕日韩专区| 97碰碰碰免费色视频| 国产91久久婷婷一区二区| 狠狠做深爱婷婷久久综合一区| 九九热精品视频| 亚洲va男人天堂| 91亚洲国产成人久久精品网站| 亚洲男人av在线| 欧美黑人xxxⅹ高潮交| 在线观看中文字幕亚洲| 亚洲bt欧美bt日本bt| 国产精品三级在线| 日韩欧美精品中文字幕| 97精品视频在线| 亚洲综合视频1区| 91av国产在线| 欧美又大粗又爽又黄大片视频| 亚洲国语精品自产拍在线观看| 91在线精品视频| 欧美日韩国产精品一区二区三区四区| 亚洲一区二区久久久久久| 韩国精品美女www爽爽爽视频| 国产不卡在线观看| 91精品国产高清自在线看超|