View Javadoc

1   /**********************************************
2    * Copyright (C) 2010 Lukas Laag
3    * This file is part of lib-gwt-svg.
4    * 
5    * libgwtsvg is free software: you can redistribute it and/or modify
6    * it under the terms of the GNU Lesser General Public License as published by
7    * the Free Software Foundation, either version 3 of the License, or
8    * (at your option) any later version.
9    * 
10   * libgwtsvg is distributed in the hope that it will be useful,
11   * but WITHOUT ANY WARRANTY; without even the implied warranty of
12   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13   * GNU Lesser General Public License for more details.
14   * 
15   * You should have received a copy of the GNU Lesser General Public License
16   * along with libgwtsvg.  If not, see http://www.gnu.org/licenses/
17   **********************************************/
18  /*
19   * Copyright (c) 2004 World Wide Web Consortium,
20   *
21   * (Massachusetts Institute of Technology, European Research Consortium for
22   * Informatics and Mathematics, Keio University). All Rights Reserved. This
23   * work is distributed under the W3C(r) Software License [1] in the hope that
24   * it will be useful, but WITHOUT ANY WARRANTY; without even the implied
25   * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
26   *
27   * [1] http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231
28   */
29  package org.vectomatic.dom.svg;
30  
31  import org.vectomatic.dom.svg.impl.Attr;
32  import org.w3c.dom.DOMException;
33  
34  /**
35   * Wrapper class for DOM Attr
36   * @author laaglu
37   */
38  public class OMAttr extends OMNode {
39  	/**
40  	 * Constructor
41  	 * @param ot the {@link org.vectomatic.dom.svg.impl.Attr} to wrap.
42  	 */
43  	protected OMAttr(Attr ot) {
44  		super(ot);
45  	}
46  	/**
47  	 * Returns the wrapped {@link org.vectomatic.dom.svg.impl.Attr}
48  	 * @return the wrapped {@link org.vectomatic.dom.svg.impl.Attr}
49  	 */
50  	public Attr getAttr() {
51  		return ot.cast();
52  	}
53  
54      /**
55       * Returns the name of this attribute. If <code>OMNode.localName</code> is 
56       * different from <code>null</code>, this attribute is a qualified name.
57       * @return the attribute name
58       */
59  	public final String getName() {
60  	   return ((Attr)ot).getName();
61  	 }
62  
63      /**
64       * On retrieval, the value of the attribute is returned as a string. 
65       * Character and general entity references are replaced with their 
66       * values. See also the method <code>getAttribute</code> on the 
67       * <code>OMElement</code> interface.
68       * <br>On setting, this creates a <code>OMText</code> node with the unparsed 
69       * contents of the string, i.e. any characters that an XML processor 
70       * would recognize as markup are instead treated as literal text. See 
71       * also the method <code>OMElement.setAttribute()</code>.
72       * <br> Some specialized implementations, such as some [<a href='http://www.w3.org/TR/2003/REC-SVG11-20030114/'>SVG 1.1</a>] 
73       * implementations, may do normalization automatically, even after 
74       * mutation; in such case, the value on retrieval may differ from the 
75       * value on setting.
76       * @return the attribute value
77       */
78  	public final String getValue() {
79  	   return ((Attr)ot).getValue();
80  	 }
81  
82      /**
83       * On retrieval, the value of the attribute is returned as a string. 
84       * Character and general entity references are replaced with their 
85       * values. See also the method <code>getAttribute</code> on the 
86       * <code>OMElement</code> interface.
87       * <br>On setting, this creates a <code>OMText</code> node with the unparsed 
88       * contents of the string, i.e. any characters that an XML processor 
89       * would recognize as markup are instead treated as literal text. See 
90       * also the method <code>OMElement.setAttribute()</code>.
91       * <br> Some specialized implementations, such as some [<a href='http://www.w3.org/TR/2003/REC-SVG11-20030114/'>SVG 1.1</a>] 
92       * implementations, may do normalization automatically, even after 
93       * mutation; in such case, the value on retrieval may differ from the 
94       * value on setting.
95       * @param value the attribute value
96       * @exception DOMException
97       *   NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly.
98       */
99  	public final void setValue(String value) {
100 	   ((Attr)ot).setValue(value);
101 	 }
102 
103     /**
104      *  Returns whether this attribute is known to be of type ID (i.e. to 
105      * contain an identifier for its owner element) or not. When it is and 
106      * its value is unique, the <code>ownerElement</code> of this attribute 
107      * can be retrieved using the method <code>OMDocument.getElementById</code>
108      * . The implementation could use several ways to determine if an 
109      * attribute node is known to contain an identifier: 
110      * <ul>
111      * <li> If validation 
112      * occurred using an XML Schema [<a href='http://www.w3.org/TR/2001/REC-xmlschema-1-20010502/'>XML Schema Part 1</a>]
113      *  while loading the document or while invoking 
114      * <code>OMDocument.normalizeDocument()</code>, the post-schema-validation 
115      * infoset contributions (PSVI contributions) values are used to 
116      * determine if this attribute is a schema-determined ID attribute using 
117      * the <a href='http://www.w3.org/TR/2003/REC-xptr-framework-20030325/#term-sdi'>
118      * schema-determined ID</a> definition in [<a href='http://www.w3.org/TR/2003/REC-xptr-framework-20030325/'>XPointer</a>]
119      * . 
120      * </li>
121      * <li> If validation occurred using a DTD while loading the document or 
122      * while invoking <code>OMDocument.normalizeDocument()</code>, the infoset <b>[type definition]</b> value is used to determine if this attribute is a DTD-determined ID 
123      * attribute using the <a href='http://www.w3.org/TR/2003/REC-xptr-framework-20030325/#term-ddi'>
124      * DTD-determined ID</a> definition in [<a href='http://www.w3.org/TR/2003/REC-xptr-framework-20030325/'>XPointer</a>]
125      * . 
126      * </li>
127      * <li> from the use of the methods <code>OMElement.setIdAttribute()</code>, 
128      * <code>OMElement.setIdAttributeNS()</code>, or 
129      * <code>OMElement.setIdAttributeNode()</code>, i.e. it is an 
130      * user-determined ID attribute; 
131      * <p ><b>Note:</b>  XPointer framework (see section 3.2 in [<a href='http://www.w3.org/TR/2003/REC-xptr-framework-20030325/'>XPointer</a>]
132      * ) consider the DOM user-determined ID attribute as being part of the 
133      * XPointer externally-determined ID definition. 
134      * </li>
135      * <li> using mechanisms that 
136      * are outside the scope of this specification, it is then an 
137      * externally-determined ID attribute. This includes using schema 
138      * languages different from XML schema and DTD. 
139      * </li>
140      * </ul>
141      * <br> If validation occurred while invoking 
142      * <code>OMDocument.normalizeDocument()</code>, all user-determined ID 
143      * attributes are reset and all attribute nodes ID information are then 
144      * reevaluated in accordance to the schema used. As a consequence, if 
145      * the <code>OMAttr.schemaTypeInfo</code> attribute contains an ID type, 
146      * <code>isId</code> will always return true. 
147      * @since DOM Level 3
148      */
149 	public final boolean isId() {
150 	 return ((Attr)ot).isId();
151 	}
152 }