01: package org.kohsuke.rngom.dt.builtin;
02:
03: import org.relaxng.datatype.Datatype;
04: import org.relaxng.datatype.DatatypeBuilder;
05: import org.relaxng.datatype.DatatypeException;
06: import org.relaxng.datatype.DatatypeLibrary;
07: import org.relaxng.datatype.DatatypeLibraryFactory;
08: import org.kohsuke.rngom.xml.util.WellKnownNamespaces;
09:
10: class CompatibilityDatatypeLibrary implements DatatypeLibrary {
11: private final DatatypeLibraryFactory factory;
12: private DatatypeLibrary xsdDatatypeLibrary = null;
13:
14: CompatibilityDatatypeLibrary(DatatypeLibraryFactory factory) {
15: this .factory = factory;
16: }
17:
18: public DatatypeBuilder createDatatypeBuilder(String type)
19: throws DatatypeException {
20: if (type.equals("ID") || type.equals("IDREF")
21: || type.equals("IDREFS")) {
22: if (xsdDatatypeLibrary == null) {
23: xsdDatatypeLibrary = factory
24: .createDatatypeLibrary(WellKnownNamespaces.XML_SCHEMA_DATATYPES);
25: if (xsdDatatypeLibrary == null)
26: throw new DatatypeException();
27: }
28: return xsdDatatypeLibrary.createDatatypeBuilder(type);
29: }
30: throw new DatatypeException();
31: }
32:
33: public Datatype createDatatype(String type)
34: throws DatatypeException {
35: return createDatatypeBuilder(type).createDatatype();
36: }
37: }
|