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:
09: import org.kohsuke.rngom.xml.util.WellKnownNamespaces;
10:
11: public class BuiltinDatatypeLibrary implements DatatypeLibrary {
12: private final DatatypeLibraryFactory factory;
13: private DatatypeLibrary xsdDatatypeLibrary = null;
14:
15: BuiltinDatatypeLibrary(DatatypeLibraryFactory factory) {
16: this .factory = factory;
17: }
18:
19: public DatatypeBuilder createDatatypeBuilder(String type)
20: throws DatatypeException {
21: xsdDatatypeLibrary = factory
22: .createDatatypeLibrary(WellKnownNamespaces.XML_SCHEMA_DATATYPES);
23: if (xsdDatatypeLibrary == null)
24: throw new DatatypeException();
25:
26: if (type.equals("string") || type.equals("token")) {
27: return new BuiltinDatatypeBuilder(xsdDatatypeLibrary
28: .createDatatype(type));
29: }
30: throw new DatatypeException();
31: }
32:
33: public Datatype createDatatype(String type)
34: throws DatatypeException {
35: return createDatatypeBuilder(type).createDatatype();
36: }
37: }
|