Class

REXML::Attribute

Inheritance
< Object
Included Modules
Node, Namespace

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.

Constants

Name   Description
PATTERN = /\s*(#{NAME_STR})\s*=\s*(["'])(.*?)\2/um

Attributes

Name Visibility R/W Description
element public R The element to which this attribute belongs
normalized public W The normalized value of this attribute. That is, the attribute with entities intact.

Methods

Class

Visibility Signature
public new ( first, second=nil, parent=nil )

Instance

Visibility Signature
public == ( other )
public clone ()
public element= ( element )
public hash ()
public inspect ()
public namespace (arg=nil)
public node_type ()
public prefix ()
public remove ()
public to_s ()
public to_string ()
public value ()
public write ( output, indent=-1 )
public xpath ()

Class Method Detail

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 )

Instance Method Detail

==( other )

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

clone()

Returns a copy of this attribute

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()