001 package com.thaiopensource.relaxng.impl; 002 003 import org.relaxng.datatype.Datatype; 004 import org.relaxng.datatype.DatatypeBuilder; 005 import org.relaxng.datatype.DatatypeException; 006 import org.relaxng.datatype.DatatypeLibrary; 007 import org.relaxng.datatype.DatatypeLibraryFactory; 008 import com.thaiopensource.xml.util.WellKnownNamespaces; 009 010 class CompatibilityDatatypeLibrary implements DatatypeLibrary { 011 private final DatatypeLibraryFactory factory; 012 private DatatypeLibrary xsdDatatypeLibrary = null; 013 014 CompatibilityDatatypeLibrary(DatatypeLibraryFactory factory) { 015 this.factory = factory; 016 } 017 018 public DatatypeBuilder createDatatypeBuilder(String type) 019 throws DatatypeException { 020 if (type.equals("ID") || type.equals("IDREF") || type.equals("IDREFS")) { 021 if (xsdDatatypeLibrary == null) { 022 xsdDatatypeLibrary = factory.createDatatypeLibrary(WellKnownNamespaces.XML_SCHEMA_DATATYPES); 023 if (xsdDatatypeLibrary == null) 024 throw new DatatypeException(); 025 } 026 return xsdDatatypeLibrary.createDatatypeBuilder(type); 027 } 028 throw new DatatypeException(); 029 } 030 031 public Datatype createDatatype(String type) throws DatatypeException { 032 return createDatatypeBuilder(type).createDatatype(); 033 } 034 }