成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

您的位置:首頁技術文章
文章詳情頁

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

瀏覽:298日期:2022-06-07 11:04:33

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
相關文章:
成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久
极品尤物av久久免费看| 欧美午夜片在线观看| 日本伦理一区二区| 亚洲午夜久久久久久久久电影院| 91亚洲精品乱码久久久久久蜜桃| 91精品国产91综合久久蜜臀| 极品少妇xxxx精品少妇| 亚洲专区一区二区三区| 亚洲视频你懂的| 尹人成人综合网| 日本一区免费视频| 97精品久久久午夜一区二区三区| 日韩一区二区在线观看视频| 国产一区二区调教| 欧美少妇bbb| 免费不卡在线观看| 欧美自拍偷拍午夜视频| 日本不卡视频在线观看| 老司机久久99久久精品播放免费 | 亚洲高清视频在线| 9久re热视频在线精品| 亚洲视频一二三区| 亚洲美女一区| 亚洲一区二区视频| 噜噜噜在线观看免费视频日韩| 亚洲mv在线观看| 色8久久精品久久久久久蜜| 久久精品国产**网站演员| 欧美日韩国产中文| 国产经典欧美精品| 精品国产99国产精品| 91在线播放网址| 亚洲欧洲精品天堂一级| 国产视频一区欧美| 亚洲v日本v欧美v久久精品| 久久亚洲视频| 麻豆国产精品官网| 日韩精品一区二区三区四区 | 蜜桃91丨九色丨蝌蚪91桃色| 欧美影视一区二区三区| 国产一区二区三区免费在线观看 | 午夜精品福利视频网站| 日本电影欧美片| 韩国精品一区二区| 精品久久久久99| 欧美色123| 亚洲电影一级黄| 欧美视频一区二| 99久久精品99国产精品| 亚洲图片激情小说| 久久亚洲美女| 国产激情一区二区三区桃花岛亚洲| 精品粉嫩aⅴ一区二区三区四区| 午夜精品电影| 一区二区三区在线影院| 91福利在线导航| 成人a区在线观看| 国产精品国产三级国产a| 亚洲在线网站| 久久疯狂做爰流白浆xx| 精品国产1区2区3区| 亚洲狠狠婷婷| 免费观看一级欧美片| 精品国产乱码久久久久久影片| 亚洲大片av| 日韩av一区二区在线影视| 制服丝袜中文字幕亚洲| 91免费看视频| 亚洲在线视频一区| 欧美日韩中文精品| 91日韩在线专区| 亚洲国产精品视频| 欧美久久久影院| 欧美另类亚洲| 同产精品九九九| 日韩免费高清视频| 一区二区av| 国产精品羞羞答答xxdd| 亚洲欧洲精品成人久久奇米网| 欧美体内she精高潮| 欧美在线亚洲| 天涯成人国产亚洲精品一区av| 日韩免费高清视频| 国产模特精品视频久久久久| 三级影片在线观看欧美日韩一区二区| 日韩视频国产视频| 亚洲少妇诱惑| 成人小视频在线| 亚洲成人资源网| 日韩精品最新网址| 亚洲欧美不卡| 成人福利视频在线看| 一个色综合av| 欧美xxx久久| 国产精品一区二区三区观看| 成人在线综合网| 亚洲一区二区中文在线| 日韩欧美黄色影院| 久久婷婷麻豆| 国内精品久久国产| 国产精品99久久久久久久vr| 一区二区三区高清不卡| 精品国产一区二区三区四区四| 免费精品视频| 91免费国产在线观看| 蜜桃久久精品一区二区| 综合久久国产九一剧情麻豆| 欧美一激情一区二区三区| 亚洲自拍高清| 97国产一区二区| 青草av.久久免费一区| 日韩理论在线观看| 日韩美女在线视频| 快she精品国产999| 在线观看一区视频| 粉嫩av亚洲一区二区图片| 日韩有码一区二区三区| 中文字幕欧美三区| 欧美一区二区三区喷汁尤物| 亚洲一区免费看| 欧美日韩国产高清视频| 国产一区二区三区视频在线播放| 亚洲国产精品久久人人爱蜜臀| 久久久精品国产99久久精品芒果| 在线观看免费亚洲| 中文欧美日韩| 国产精品xnxxcom| 成人午夜电影小说| 理论电影国产精品| 亚洲高清不卡在线观看| 国产精品国产三级国产| 精品欧美乱码久久久久久 | 麻豆久久久久久久| 欧美精品自拍偷拍动漫精品| 亚洲综合国产激情另类一区| 精品1区2区3区4区| 91一区二区三区在线播放| 国产精品99久久久久久宅男| 日韩**一区毛片| 一区二区三区**美女毛片| 中文字幕第一区二区| 久久综合九色综合久久久精品综合| 在线免费观看成人短视频| 久久本道综合色狠狠五月| 在线成人h网| 欧美成人dvd在线视频| 国产美女精品一区二区三区| 蜜臀久久99精品久久久久久9| 亚洲国产精品麻豆| 亚洲精品第1页| 中文字幕一区二区不卡| 久久九九久精品国产免费直播| 日韩欧美一区二区不卡| 4438亚洲最大| 欧美日韩国产影片| 在线观看亚洲a| 玖玖精品视频| 久久五月激情| 久久国产欧美精品| 男人的天堂亚洲在线| 国产精品亚洲综合久久| 伊人久久大香线蕉综合热线| 欧美精品97| 欧美+日本+国产+在线a∨观看| 99久久综合狠狠综合久久| 丁香婷婷深情五月亚洲| 国产精品一区久久久久| 狠狠狠色丁香婷婷综合激情| 精品一区二区三区视频在线观看| 久久爱www久久做| 蜜桃视频免费观看一区| 九九**精品视频免费播放| 精品一区二区三区在线观看国产 | 亚洲高清一区二区三区| 亚洲精品国产一区二区三区四区在线 | 一区二区自拍| 亚洲激情专区| 国产日韩一区欧美| 国产精品有限公司| 六月丁香综合| 91电影在线观看| 91黄色免费版| 欧美日韩亚洲综合一区二区三区| 欧美日韩精品系列| 久久亚洲综合网| 色域天天综合网| 久久综合九色99| 色婷婷香蕉在线一区二区| 欧美午夜片在线看| 日韩一二三四区| 久久综合久久99| 国产精品福利影院| 亚洲在线视频网站| 日韩福利电影在线| 精品在线播放免费| 成人免费看黄yyy456| 欧美日韩视频一区二区三区| 日韩午夜av在线| 久久美女性网| 91精品免费观看|