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 }