Class | REXML::Attribute
In: | temp/attribute.rb
Parent: | Object

Defines an Element Attribute; IE, a attribute=value pair, as in: <element attribute="value"/>. Attributes can be in their own namespaces. General users of REXML will not interact with the Attribute class much.

### Methods

== clone doctype element= hash inspect namespace new node_type prefix remove to_s to_string value write xpath

### Included Modules

Node Namespace

### Constants

PATTERN | = | /\s*(#{NAME_STR})\s*=\s*(["'])(.*?)\2/um
NEEDS_A_SECOND_CHECK | = | /(<|&((#{Entity::NAME});|(#0*((?:\d+)|(?:x[a-fA-F0-9]+)));)?)/um

### Attributes

element | [R] | The element to which this attribute belongs
normalized | [W] | The normalized value of this attribute. That is, the attribute with entities intact.

### Public Class methods

new( first, second=nil, parent=nil )

Constructor. FIXME: The parser doesn‘t catch illegal characters in attributes

first: | Either: an Attribute, which this new attribute will become a clone of; or a String, which is the name of this attribute
second: | If `first` is an Attribute, then this may be an Element, or nil. If nil, then the Element parent of this attribute is the parent of the `first` Attribute. If the first argument is a String, then this must also be a String, and is the content of the attribute. If this is the content, it must be fully normalized (contain no illegal characters).
parent: | Ignored unless `first` is a String; otherwise, may be the Element parent of this attribute, or nil.

     Attribute.new( attribute_to_clone )
     Attribute.new( attribute_to_clone, parent_element )
     Attribute.new( "attr", "attr_value" )
     Attribute.new( "attr", "attr_value", parent_element )

### Public Instance methods

==( other )

Returns true if other is an Attribute and has the same name and value, false otherwise.

clone()

Returns a copy of this attribute

doctype()
element=( element )

Sets the element of which this object is an attribute. Normally, this is not directly called.

Returns this attribute

hash()

Creates (and returns) a hash from both the name and value

inspect()
namespace(arg=nil)

Returns the namespace URL, if defined, or nil otherwise

     e = Element.new("el")
     e.add_attributes({"xmlns:ns", "http://url"})
     e.namespace( "ns" )              # -> "http://url"

node_type()
prefix()

Returns the namespace of the attribute.

     e = Element.new( "elns:myelement" )
     e.add_attribute( "nsa:a", "aval" )
     e.add_attribute( "b", "bval" )
     e.attributes.get_attribute( "a" ).prefix   # -> "nsa"
     e.attributes.get_attribute( "b" ).prefix   # -> "elns"
     a = Attribute.new( "x", "y" )
     a.prefix                                   # -> ""

remove()

Removes this Attribute from the tree, and returns true if successfull

This method is usually not called directly.

to_s()

Returns the attribute value, with entities replaced

to_string()

Returns this attribute out as XML source, expanding the name

     a = Attribute.new( "x", "y" )
     a.to_string     # -> "x='y'"
     b = Attribute.new( "ns:x", "y" )
     b.to_string     # -> "ns:x='y'"

value()

Returns the UNNORMALIZED value of this attribute. That is, entities have been expanded to their values

write( output, indent=-1 )

Writes this attribute (EG, puts ‘key="value"’ to the output)

xpath()

[Validate]