日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

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

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

瀏覽:334日期: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
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
国产理论在线| 尹人成人综合网| 欧美日中文字幕| 国产精品久久久久久久久久10秀| 日韩国产在线一| 中文字幕乱码亚洲无线精品一区| 亚洲国产综合在线看不卡| 国产传媒在线观看| 国产网站在线| xxxxx性欧美特大| 中文字幕色婷婷在线视频| 红杏一区二区三区| 伊人久久在线| 欧美手机在线| 国产成人1区| 在线一区视频观看| 欧美aa国产视频| 一区在线观看| 午夜久久av| 久久久精品国产**网站| 久久久久久久欧美精品| 亚洲精选成人| 欧美精品不卡| 欧美国产一级| 激情五月色综合国产精品| 99在线精品视频在线观看| 老司机精品久久| 日本中文字幕视频一区| 国产精品一区二区精品| 国产成人免费精品| 精品中文一区| 国产毛片精品久久| 久久久久午夜电影| 香蕉久久久久久| se01亚洲视频| 欧洲亚洲一区二区三区| 在线日韩一区| 69精品国产久热在线观看| 国产精品99一区二区三区| 欧美成人久久| 国产调教一区二区三区| 91精品精品| 亚洲啊v在线免费视频| 欧美交a欧美精品喷水| 欧美亚洲激情| 美女精品久久| 中文字幕免费精品| 国产精品不卡| 天堂va欧美ⅴa亚洲va一国产| 久久久久久夜| 免费在线欧美黄色| 97久久中文字幕| 蜜臀av亚洲一区中文字幕| 91精品啪在线观看国产18| 久久香蕉精品香蕉| 日韩国产在线一| 亚洲综合激情在线| 嫩呦国产一区二区三区av| 红桃视频国产精品| 欧美91在线|欧美| 综合一区av| 久久精品99久久久| 久久精品卡一| 国产欧美一区二区三区米奇| 日韩不卡视频在线观看| 亚洲丝袜美腿一区| 久久精品国产www456c0m| 精品国产一区二区三区噜噜噜| 免费看黄色91| 日韩中文首页| 丰满少妇一区| 国产精品入口久久| 日韩欧美久久| 欧美三级精品| 国产精品对白久久久久粗| 视频一区欧美精品| 不卡视频在线| 亚洲va中文在线播放免费| 亚洲精品第一| 亚洲日产av中文字幕| 亚洲tv在线| 在线免费观看亚洲| 亚洲作爱视频| 99在线精品免费视频九九视| 在线日韩电影| 国产精品7m凸凹视频分类| 久久精品动漫| 国产一区成人| 亚洲香蕉网站| 欧美 日韩 国产一区二区在线视频 | 日韩av网站在线免费观看| 亚洲综合欧美| 亚洲自拍另类| 日韩国产在线观看一区| 久久国产精品免费精品3p| 日韩精品成人在线观看| 视频一区二区三区入口| 亚洲欧美视频| 日韩精品免费视频一区二区三区| 99在线|亚洲一区二区| 日本欧美在线看| 日本在线不卡视频一二三区| 韩国精品主播一区二区在线观看 | 亚洲乱码视频| 亚洲tv在线| 久久精品福利| 久久美女精品| 日韩高清电影免费| 久久99久久人婷婷精品综合| 日韩精品2区| 鲁大师成人一区二区三区| 欧美好骚综合网| 在线一区免费| 欧美91在线| 午夜久久影院| 国产精品一级| 欧美午夜精品一区二区三区电影| 日欧美一区二区| 亚洲精品视频一二三区| 日韩成人a**站| 一二三区精品| 蜜臀久久精品| 国产日韩欧美| 欧美日韩国产高清| 国产一区二区三区四区五区| 五月天久久网站| 蜜臀久久久99精品久久久久久| 国产欧美另类| 亚洲视频电影在线| 天堂日韩电影| 成人在线视频区| 欧美精品国产一区| 国产精品美女| 精品日韩毛片| 91精品国产自产观看在线| 亚洲欧洲一区| 久久精品电影| www.九色在线| 日韩av有码| 国内在线观看一区二区三区| 国产精品永久| 99综合视频| 欧美中文一区二区| 久久亚洲成人| 国产精品白丝久久av网站| 日韩手机在线| 欧美日韩亚洲一区| 欧美日韩亚洲三区| 日本成人在线不卡视频| 日本aⅴ亚洲精品中文乱码 | 欧美一级一区| 午夜精品影视国产一区在线麻豆| 亚洲大全视频| 精品一区免费| 亚洲精品一二三区区别| 国产不卡人人| 久久蜜桃资源一区二区老牛| 久久精品亚洲一区二区| 中文字幕在线视频网站| 免费视频一区二区三区在线观看| 国产视频亚洲| 成人福利av| 久久国产欧美| 蜜臀久久99精品久久久久久9| 国产亚洲欧洲| 亚洲欧洲一区| 日韩中文欧美在线| 欧美亚洲三区| 国产在线看片免费视频在线观看| 色在线视频观看| 日韩在线欧美| 另类av一区二区| 日韩美女精品| 亚洲涩涩在线| 蜜臀av一区二区三区| 久久av免费看| 亚洲欧美日韩高清在线| 亚洲aa在线| av资源新版天堂在线| 免播放器亚洲| 成人午夜在线| 国产精品宾馆| 国产日韩中文在线中文字幕 | 久久中文精品| 91成人福利| 蜜臀a∨国产成人精品| 日本成人中文字幕| 少妇精品导航| 丝袜脚交一区二区| 国产成人黄色| 日韩动漫一区| 激情综合网站| 在线精品小视频| 国产精品主播在线观看| 午夜日韩福利| 中文字幕在线看片| 日韩精品第二页| 精精国产xxxx视频在线播放| 国语精品一区| 四虎国产精品免费久久|