/* * GeoTools - The Open Source Java GIS Toolkit * http://geotools.org * * (C) 2004-2008, Open Source Geospatial Foundation (OSGeo) * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. */ package org.geotools.xml.xLink; import java.net.URI; import java.net.URISyntaxException; import java.util.Collections; import java.util.LinkedList; import java.util.List; import java.util.Map; import org.geotools.xml.PrintHandler; import org.geotools.xml.schema.Attribute; import org.geotools.xml.schema.AttributeGroup; import org.geotools.xml.schema.AttributeValue; import org.geotools.xml.schema.ComplexType; import org.geotools.xml.schema.Element; import org.geotools.xml.schema.ElementValue; import org.geotools.xml.schema.Facet; import org.geotools.xml.schema.Group; import org.geotools.xml.schema.Schema; import org.geotools.xml.schema.SimpleType; import org.geotools.xml.schema.impl.AttributeValueGT; import org.geotools.xml.schema.impl.FacetGT; import org.geotools.xml.xsi.XSISimpleTypes; import org.xml.sax.Attributes; import org.xml.sax.SAXException; /** * <p> * This class is a hard-coded version of the XLink Schema. The results of * parsing the schema in through the parser and calling the resulting Schema * objects methods should be the same as calling these methods, except that * these methods should be faster. * </p> * * <p> * This class consists of a series of internal private classes and an * implementation of the Schema interface which is public. * </p> * * @author dzwiers www.refractions.net * * @see Schema * @source $URL$ */ public class XLinkSchema implements Schema { private static Schema instance = new XLinkSchema(); // local list of attribute declarations private static final Attribute[] attributes = loadAttributes(); // local list of attributeGroup declarations private static final AttributeGroup[] attributeGroups = loadAttributeGroups(); /** The full xLink namespace */ public static final URI NAMESPACE = makeURI("http://www.w3.org/1999/xlink"); /** * @see org.geotools.xml.schema.Schema#getInstance() */ public static Schema getInstance() { return instance; } /* * loads the list of attribute declarations for the XLink Schema */ private static Attribute[] loadAttributes() { Attribute[] r = new Attribute[9]; r[0] = Href.getInstance(); r[1] = Role.getInstance(); r[2] = Arcrole.getInstance(); r[3] = Title.getInstance(); r[4] = Show.getInstance(); r[5] = Actuate.getInstance(); r[6] = Label.getInstance(); r[7] = From.getInstance(); r[8] = To.getInstance(); return r; } /* * loads the list of attributeGroup declarations for the XLink Schema */ private static AttributeGroup[] loadAttributeGroups() { AttributeGroup[] r = new AttributeGroup[7]; r[0] = SimpleLink.getInstance(); r[1] = ExtendedLink.getInstance(); r[2] = LocatorLink.getInstance(); r[3] = ArcLink.getInstance(); r[4] = ResourceLink.getInstance(); r[5] = TitleLink.getInstance(); r[6] = EmptyLink.getInstance(); return r; } /** * @see schema.Schema#getAttributeGroups() */ public AttributeGroup[] getAttributeGroups() { return attributeGroups; } /** * @see schema.Schema#getAttributeDescriptors() */ public Attribute[] getAttributes() { return attributes; } /* * (non-Javadoc) * * @see schema.Schema#getBlockDefault() */ public int getBlockDefault() { return NONE; } /** * @see schema.Schema#getComplexTypes() */ public ComplexType[] getComplexTypes() { return new ComplexType[0]; } /** * @see schema.Schema#getElements() */ public Element[] getElements() { return new Element[0]; } /** * @see schema.Schema#getFinalDefault() */ public int getFinalDefault() { return NONE; } /** * @see schema.Schema#getGroups() */ public Group[] getGroups() { return new Group[0]; } /** * @see schema.Schema#getId() */ public String getId() { return null; } /** * @see schema.Schema#getImports() */ public Schema[] getImports() { return new Schema[0]; } /** * @see schema.Schema#getSimpleTypes() */ public SimpleType[] getSimpleTypes() { return new SimpleType[0]; } /** * @see schema.Schema#getTargetNamespace() */ public URI getTargetNamespace() { return NAMESPACE; } public URI getURI() { return NAMESPACE; } /** * @see schema.Schema#getVersion() */ public String getVersion() { return "2.1.2"; } /** * @see schema.Schema#includesURI(java.net.URI) */ public boolean includesURI(URI uri) { // if (uri.toString().toLowerCase().endsWith("xlinks.xsd")) { // return true; // } // // return false; // this is a spec ... we never want the def modified. // TODO see if this affects printing return true; } // convinience method to deal with the URISyntaxException private static URI makeURI(String s) { try { return new URI(s); } catch (URISyntaxException e) { // do nothing return null; } } /** * DOCUMENT ME! * */ public String getPrefix() { return "xLink"; } /** * @see schema.Schema#isAttributeFormDefault() */ public boolean isAttributeFormDefault() { return false; } /** * @see schema.Schema#isElementFormDefault() */ public boolean isElementFormDefault() { return false; } /** * ActuateSimpleType purpose. * * <p> * A static representation of an Actuate type as defined in the XLink * Schema * </p> * * <p></p> * * @author dzwiers, Refractions Research, Inc. http://www.refractions.net * @author $Author:$ (last modification) * @version $Id$ */ private static class ActuateSimpleType implements SimpleType { // list of allowable enumeration values private static List lookUpTable = loadTable(); /** * @see org.geotools.xml.schema.Type#findChildElement(java.lang.String) */ public Element findChildElement(String name) { return null; // will never happen } /** * @see org.geotools.xml.schema.Type#canEncode(org.geotools.xml.schema.Element, * java.lang.Object, java.util.Map) */ public boolean canEncode(Element element, Object value, Map hints) { // return (lookUpTable.contains(value)); return false; // it's an attribute } /** * @see org.geotools.xml.schema.Type#encode(org.geotools.xml.schema.Element, * java.lang.Object, org.geotools.xml.PrintHandler, * java.util.Map) */ public void encode(Element element, Object value, PrintHandler output, Map hints){ // it's an attribute ... do nothing } public Class getInstanceType() { return String.class; } public org.geotools.xml.schema.Type getParent() { return null; } /** * @see schema.SimpleType#getNamespace() */ public URI getNamespace() { return XLinkSchema.NAMESPACE; } /** * @see schema.SimpleType#getFinal() */ public int getFinal() { return NONE; } /** * @see schema.SimpleType#getId() */ public String getId() { return null; } /** * @see schema.SimpleType#getLocalName() */ public String getName() { return null; } private static List loadTable() { lookUpTable = new LinkedList(); lookUpTable.add("onLoad"); lookUpTable.add("onRequest"); lookUpTable.add("other"); lookUpTable.add("none"); return lookUpTable; } /** * @see schema.Type#getValue(java.lang.Object, org.xml.sax.Attributes) */ public Object getValue(Element element, ElementValue[] value, Attributes attrs, Map hints) throws SAXException { if ((value == null) || (value.length != 1) || (value[0] == null)) { return null; } if (value[0].getValue() instanceof String) { if (lookUpTable.contains(value[0].getValue())) { return value[0].getValue(); } throw new SAXException( "The value speficified was not one of the expected values."); } return null; } /** * @see org.geotools.xml.schema.SimpleType#toAttributes(org.geotools.xml.schema.Attribute, * java.lang.Object, java.util.Map) */ public AttributeValue toAttribute(Attribute attribute, Object value, Map hints) { if (canCreateAttributes(attribute, value, hints)) { return new AttributeValueGT(attribute, (String) value); } return null; } /** * @see org.geotools.xml.schema.SimpleType#canCreateAttributes(org.geotools.xml.schema.Attribute, * java.lang.Object, java.util.Map) */ public boolean canCreateAttributes(Attribute attribute, Object value, Map hints) { return (attribute.getName() != null) && attribute.getName().equals(Actuate.getInstance().getName()) && lookUpTable.contains(value); } /** * @see org.geotools.xml.schema.SimpleType#getChildType() */ public int getChildType() { return RESTRICTION; } /** * @see org.geotools.xml.schema.SimpleType#getParents() */ public SimpleType[] getParents() { return new SimpleType[] { XSISimpleTypes.String.getInstance() }; } /** * @see org.geotools.xml.schema.SimpleType#getFacets() */ public Facet[] getFacets() { return new Facet[] { new FacetGT(Facet.ENUMERATION, "onLoad"), new FacetGT(Facet.ENUMERATION, "onRequest"), new FacetGT(Facet.ENUMERATION, "other"), new FacetGT(Facet.ENUMERATION, "none"), }; } } /** * ShowSimpleType purpose. * * <p> * Represents the Show type in the XLink Schema * </p> * * <p></p> * * @author dzwiers, Refractions Research, Inc. http://www.refractions.net * @author $Author:$ (last modification) * @version $Id$ */ private static class ShowSimpleType implements SimpleType { // static enumeration list private static List lookUpTable = loadTable(); /** * @see org.geotools.xml.schema.SimpleType#toAttributes(org.geotools.xml.schema.Attribute, * java.lang.Object, java.util.Map) */ public AttributeValue toAttribute(Attribute attribute, Object value, Map hints) { if (canCreateAttributes(attribute, value, hints)) { return new AttributeValueGT(attribute, (String) value); } return null; } /** * @see org.geotools.xml.schema.Type#findChildElement(java.lang.String) */ public Element findChildElement(String name) { return null; // will never happen } /** * @see org.geotools.xml.schema.SimpleType#canCreateAttributes(org.geotools.xml.schema.Attribute, * java.lang.Object, java.util.Map) */ public boolean canCreateAttributes(Attribute attribute, Object value, Map hints) { return (attribute.getName() != null) && attribute.getName().equals(Actuate.getInstance().getName()) && lookUpTable.contains(value); } public Class getInstanceType() { return String.class; } public org.geotools.xml.schema.Type getParent() { return null; } /** * @see schema.SimpleType#getNamespace() */ public URI getNamespace() { return XLinkSchema.NAMESPACE; } /** * @see schema.SimpleType#getFinal() */ public int getFinal() { return NONE; } /** * @see schema.SimpleType#getId() */ public String getId() { return null; } /** * @see schema.SimpleType#getLocalName() */ public String getName() { return null; } private static List loadTable() { lookUpTable = new LinkedList(); lookUpTable.add("new"); lookUpTable.add("replace"); lookUpTable.add("embed"); lookUpTable.add("other"); lookUpTable.add("none"); return lookUpTable; } /** * @see schema.Type#getValue(java.lang.Object, org.xml.sax.Attributes) */ public Object getValue(Element element, ElementValue[] value, Attributes attrs, Map hints) throws SAXException { if ((value == null) || (value.length != 1) || (value[0] == null)) { return null; } if (value[0].getValue() instanceof String) { if (lookUpTable.contains(value[0].getValue())) { return value[0].getValue(); } throw new SAXException( "The value speficified was not one of the expected values."); } return null; } /** * @see org.geotools.xml.schema.Type#canEncode(org.geotools.xml.schema.Element, * java.lang.Object, java.util.Map) */ public boolean canEncode(Element element, Object value, Map hints) { // return (lookUpTable.contains(value)); return false; // it's an attribute } /** * @see org.geotools.xml.schema.Type#encode(org.geotools.xml.schema.Element, * java.lang.Object, org.geotools.xml.PrintHandler, * java.util.Map) */ public void encode(Element element, Object value, PrintHandler output, Map hints){ // it's an attribute ... do nothing } /** * @see org.geotools.xml.schema.SimpleType#getChildType() */ public int getChildType() { return RESTRICTION; } /** * @see org.geotools.xml.schema.SimpleType#getParents() */ public SimpleType[] getParents() { return new SimpleType[] { XSISimpleTypes.String.getInstance() }; } /** * @see org.geotools.xml.schema.SimpleType#getFacets() */ public Facet[] getFacets() { return new Facet[] { new FacetGT(Facet.ENUMERATION, "new"), new FacetGT(Facet.ENUMERATION, "replace"), new FacetGT(Facet.ENUMERATION, "embed"), new FacetGT(Facet.ENUMERATION, "other"), new FacetGT(Facet.ENUMERATION, "none"), }; } } /** * XLinkAttribute purpose. * * <p> * Used to define some constant values for XLink attributes, such as * Namespace * </p> * * @author dzwiers, Refractions Research, Inc. http://www.refractions.net * @author $Author:$ (last modification) * @version $Id$ */ protected abstract static class XLinkAttribute implements Attribute { /** * @see schema.Attribute#getNameSpace() */ public URI getNamespace() { return XLinkSchema.NAMESPACE; } /** * @see schema.Attribute#getDefault() */ public String getDefault() { return null; } /** * @see schema.Attribute#isForm() */ public boolean isForm() { return false; } /** * @see schema.Attribute#getId() */ public String getId() { return null; } } /** * Href purpose. * * <p> * Represents an Href Attribute in the XLink Schema * </p> * * @author dzwiers, Refractions Research, Inc. http://www.refractions.net * @author $Author:$ (last modification) * @version $Id$ */ public static class Href extends XLinkAttribute { // singleton instance static Attribute instance1; // internal storage for the attribute's use (required,optional ...) private int use = Attribute.OPTIONAL; /** * Href constructor. * * <p> * Creates an instance of the Href Attribute of the XLink Schema * </p> * * @param use * * @see Attribute#getUse() */ public Href(int use) { this.use = use; } /** * Href constructor * * <p> * Creates an instance of the Href Attribute of the XLink Schema. Sets * the usage to Optional. * </p> */ public Href() { use = Attribute.OPTIONAL; } /** * Returns a copy of the default instance. * * @return A default instance */ public static Attribute getInstance() { if (instance1 == null) { instance1 = new Href(); } return instance1; } /* * (non-Javadoc) * * @see schema.Attribute#getFixed() */ public String getFixed() { return null; } /** * @see schema.Attribute#getLocalName() */ public String getName() { return "href"; } /** * @see schema.Attribute#getUse() */ public int getUse() { return use; } /** * @see schema.Attribute#getSimpleType() */ public SimpleType getSimpleType() { return XSISimpleTypes.AnyURI.getInstance(); } } public static class Role extends XLinkAttribute { static Attribute instance1 = new Role(); public static Attribute getInstance() { return instance1; } /** * @see schema.Attribute#getFixed() */ public String getFixed() { return null; } /** * @see schema.Attribute#getLocalName() */ public String getName() { return "role"; } /** * @see schema.Attribute#getUse() */ public int getUse() { return Attribute.OPTIONAL; } /** * @see schema.Attribute#getSimpleType() */ public SimpleType getSimpleType() { return XSISimpleTypes.AnyURI.getInstance(); } } /** * Arcrole represents an Arcrole attribute in the XLink Schema * * @author dzwiers */ public static class Arcrole extends XLinkAttribute { // the instance singleton static Attribute instance1; // returns the default instance public static Attribute getInstance() { if (instance1 == null) { instance1 = new Arcrole(); } return instance1; } /** * @see schema.Attribute#getFixed() */ public String getFixed() { return null; } /** * @see schema.Attribute#getLocalName() */ public String getName() { return "arcrole"; } /** * @see schema.Attribute#getUse() */ public int getUse() { return Attribute.OPTIONAL; } /** * @see schema.Attribute#getSimpleType() */ public SimpleType getSimpleType() { return XSISimpleTypes.AnyURI.getInstance(); } } /** * Title represents a Title attribute in the XLink Schema * * @author dzwiers */ public static class Title extends XLinkAttribute { // the default singleton instance static Attribute instance1; /** * Returns the default singleton instance * */ public static Attribute getInstance() { if (instance1 == null) { instance1 = new Title(); } return instance1; } /** * @see schema.Attribute#getFixed() */ public String getFixed() { return null; } /** * @see schema.Attribute#getLocalName() */ public String getName() { return "title"; } /** * @see schema.Attribute#getUse() */ public int getUse() { return Attribute.OPTIONAL; } /** * @see schema.Attribute#getSimpleType() */ public SimpleType getSimpleType() { return XSISimpleTypes.String.getInstance(); } } /** * Show represents a Show attribute in the XLink Schema * * @author dzwiers */ public static class Show extends XLinkAttribute { // the singleton instance static Attribute instance1; // the asociated simpletype private static SimpleType simpleType = new ShowSimpleType(); /** * Returns the singleton instance * */ public static Attribute getInstance() { return instance1; } /** * @see schema.Attribute#getFixed() */ public String getFixed() { return null; } /** * @see schema.Attribute#getLocalName() */ public String getName() { return "show"; } /** * @see schema.Attribute#getUse() */ public int getUse() { return Attribute.OPTIONAL; } /** * @see schema.Attribute#getSimpleType() */ public SimpleType getSimpleType() { return simpleType; } } /** * Actuate represents an Actuate attribute in the XLink Schema * * @author dzwiers */ public static class Actuate extends XLinkAttribute { // the singleton instance static Attribute instance1; // the simpletype for the attribute private static SimpleType simpleType = new ActuateSimpleType(); /** * Return a singleton of an Actuate * */ public static Attribute getInstance() { if (instance1 == null) { instance1 = new Actuate(); } return instance1; } /** * @see schema.Attribute#getFixed() */ public String getFixed() { return null; } /** * @see schema.Attribute#getLocalName() */ public String getName() { return "actuate"; } /** * @see schema.Attribute#getUse() */ public int getUse() { return Attribute.OPTIONAL; } /** * @see schema.Attribute#getSimpleType() */ public SimpleType getSimpleType() { return simpleType; } } /** * Label represents a Label attribute in the XLink Schema * * @author dzwiers */ public static class Label extends XLinkAttribute { // the singleton instance static Attribute instance1; /** * Returns a singleton of Label * */ public static Attribute getInstance() { return instance1; } /** * @see schema.Attribute#getFixed() */ public String getFixed() { return null; } /** * @see schema.Attribute#getLocalName() */ public String getName() { return "label"; } /** * @see schema.Attribute#getUse() */ public int getUse() { return Attribute.OPTIONAL; } /** * @see schema.Attribute#getSimpleType() */ public SimpleType getSimpleType() { return XSISimpleTypes.String.getInstance(); } } /** * From represents a From attribute in the XLink Schema * * @author dzwiers */ public static class From extends XLinkAttribute { // the singleton instance static Attribute instance1; /** * Returns the singleton From instance * */ public static Attribute getInstance() { if (instance1 == null) { instance1 = new From(); } return instance1; } /** * @see schema.Attribute#getFixed() */ public String getFixed() { return null; } /** * @see schema.Attribute#getLocalName() */ public String getName() { return "from"; } /** * @see schema.Attribute#getUse() */ public int getUse() { return Attribute.OPTIONAL; } /** * @see schema.Attribute#getSimpleType() */ public SimpleType getSimpleType() { return XSISimpleTypes.String.getInstance(); } } /** * To represents a To attribute in the XLink Schema * * @author dzwiers */ public static class To extends XLinkAttribute { // the static instance static Attribute instance1; /** * Returns the singleton To instance * */ public static Attribute getInstance() { if (instance1 == null) { instance1 = new To(); } return instance1; } /** * @see schema.Attribute#getFixed() */ public String getFixed() { return null; } /** * @see schema.Attribute#getLocalName() */ public String getName() { return "to"; } /** * @see schema.Attribute#getUse() */ public int getUse() { return Attribute.OPTIONAL; } /** * @see schema.Attribute#getSimpleType() */ public SimpleType getSimpleType() { return XSISimpleTypes.String.getInstance(); } } /** * Type represents a Type attribute in the XLink Schema * * @author dzwiers */ private static class Type extends XLinkAttribute { // the fixed value of this type private final String fixed; /** * Creates a Type attribute with the specified fixed value. * * @param fixed The fixed value. */ public Type(String fixed) { this.fixed = fixed; } /** * @see schema.Attribute#getFixed() */ public String getFixed() { return fixed; } /** * @see schema.Attribute#getLocalName() */ public String getName() { return "type"; } /** * @see schema.Attribute#getUse() */ public int getUse() { return Attribute.REQUIRED; } /** * @see schema.Attribute#getSimpleType() */ public SimpleType getSimpleType() { return XSISimpleTypes.String.getInstance(); } } /** * XLinkAttributeGroup purpose. * * <p> * Used to define some constant values for XLink attributeGroups, such as * Namespace * </p> * * @author dzwiers, Refractions Research, Inc. http://www.refractions.net * @author $Author:$ (last modification) * @version $Id$ */ protected abstract static class XLinkAttributeGroup implements AttributeGroup { /** * @see schema.AttributeGroup#getNameSpace() */ public URI getNamespace() { return XLinkSchema.NAMESPACE; } /** * @see schema.AttributeGroup#getAnyAttributeNameSpace() */ public String getAnyAttributeNameSpace() { return null; } /** * @see schema.AttributeGroup#getId() */ public String getId() { return null; } } /** * SimpleLink represents a SimpleLink AttributeGroup in the XLink Schema * * @author dzwiers */ public static class SimpleLink extends XLinkAttributeGroup { // the singleton instance private static AttributeGroup instance1; // the static attribute list private static final Attribute[] attributes1 = { Href.instance1, Role.instance1, Arcrole.instance1, Title.instance1, Show.instance1, Actuate.instance1, }; /** * @see schema.AttributeGroup#getAttributeDescriptors() */ public Attribute[] getAttributes() { return attributes1; } /** * @see schema.AttributeGroup#getLocalName() */ public String getName() { return "simpleLink"; } /** * Returns the singleton SimpleLink instance * */ public static AttributeGroup getInstance() { if (instance1 == null) { instance1 = new SimpleLink(); } return instance1; } } /** * ExtendedLink represents a ExtendedLink AttributeGroup in the XLink * Schema * * @author dzwiers */ public static class ExtendedLink extends XLinkAttributeGroup { // the singleton instance private static AttributeGroup instance1; // the list of static attributes private static final Attribute[] attributes1 = { Role.instance1, Title.instance1, }; /** * @see schema.AttributeGroup#getAttributeDescriptors() */ public Attribute[] getAttributes() { return attributes1; } /** * @see schema.AttributeGroup#getLocalName() */ public String getName() { return "extendedLink"; } /** * Returns the singleton ExtendedLink instance * */ public static AttributeGroup getInstance() { if (instance1 == null) { instance1 = new ExtendedLink(); } return instance1; } } /** * LocatorLink represents a LocatorLink AttributeGroup in the XLink Schema * * @author dzwiers */ public static class LocatorLink extends XLinkAttributeGroup { // the singleton instance private static AttributeGroup instance1; // the static attribute list private static final Attribute[] attributes1 = { new Type("extended"), new Href(Attribute.REQUIRED), Role.instance1, Title.instance1, Label.instance1 }; /** * @see schema.AttributeGroup#getAttributeDescriptors() */ public Attribute[] getAttributes() { return attributes1; } /** * @see schema.AttributeGroup#getLocalName() */ public String getName() { return "locatorLink"; } /** * Returns the singleton LocatorLink instance * */ public static AttributeGroup getInstance() { if (instance1 == null) { instance1 = new LocatorLink(); } return instance1; } } /** * ArcLink represents a ArcLink AttributeGroup in the XLink Schema * * @author dzwiers */ public static class ArcLink extends XLinkAttributeGroup { // the singleton instance private static AttributeGroup instance1; // the static attribute list private static final Attribute[] attributes1 = { new Type("arc"), Arcrole.instance1, Title.instance1, Show.instance1, Actuate.instance1, From.instance1, To.instance1, }; /** * @see schema.AttributeGroup#getAttributeDescriptors() */ public Attribute[] getAttributes() { return attributes1; } /** * @see schema.AttributeGroup#getLocalName() */ public String getName() { return "arcLink"; } /** * Returns the singleton ArcLink instance * */ public static AttributeGroup getInstance() { if (instance1 == null) { instance1 = new ArcLink(); } return instance1; } } /** * ResourceLink represents a ResourceLink AttributeGroup in the XLink * Schema * * @author dzwiers */ public static class ResourceLink extends XLinkAttributeGroup { // the singleton instance private static AttributeGroup instance1; // the static attribute list private static final Attribute[] attributes1 = { new Type("resource"), Role.instance1, Title.instance1, Label.instance1, }; /** * @see schema.AttributeGroup#getAttributeDescriptors() */ public Attribute[] getAttributes() { return attributes1; } /** * @see schema.AttributeGroup#getLocalName() */ public String getName() { return "resourceLink"; } /** * Returns the singleton ResourceLink instance * */ public static AttributeGroup getInstance() { if (instance1 == null) { instance1 = new ResourceLink(); } return instance1; } } /** * TitleLink represents a TitleLink AttributeGroup in the XLink Schema * * @author dzwiers */ public static class TitleLink extends XLinkAttributeGroup { // the singleton instance private static AttributeGroup instance1; // the static attribute list static final Attribute[] attributes1 = { new Type("title"), }; /** * @see schema.AttributeGroup#getAttributeDescriptors() */ public Attribute[] getAttributes() { return attributes1; } /** * @see schema.AttributeGroup#getLocalName() */ public String getName() { return "titleLink"; } /** * Returns the singleton TitleLink instance * */ public static AttributeGroup getInstance() { if (instance1 == null) { instance1 = new TitleLink(); } return instance1; } } /** * EmptyLink represents a EmptyLink AttributeGroup in the XLink Schema * * @author dzwiers */ public static class EmptyLink extends XLinkAttributeGroup { // the singleton instance private static AttributeGroup instance1; // the static attribute list static final Attribute[] attributes1 = { new Type("empty"), }; /** * @see schema.AttributeGroup#getAttributeDescriptors() */ public Attribute[] getAttributes() { return attributes1; } /** * @see schema.AttributeGroup#getLocalName() */ public String getName() { return "emptyLink"; } /** * Returns the singleton EmptyLink instance * */ public static AttributeGroup getInstance() { if (instance1 == null) { instance1 = new EmptyLink(); } return instance1; } } /** * Returns the implementation hints. The default implementation returns en empty map. */ public Map getImplementationHints() { return Collections.EMPTY_MAP; } }