In Files
- rexml/attribute.rb
Parent
Methods
Included Modules
Class/Module Index
![show/hide quicksearch [+]](../images/find.png)
- Array
- Fixnum
- Float
- Object
- REXML
- REXML::AttlistDecl
- REXML::Attribute
- REXML::Attributes
- REXML::CData
- REXML::Child
- REXML::Comment
- REXML::DTD
- REXML::DTD::AttlistDecl
- REXML::DTD::ElementDecl
- REXML::DTD::EntityDecl
- REXML::DTD::NotationDecl
- REXML::DTD::Parser
- REXML::Declaration
- REXML::DocType
- REXML::Document
- REXML::Element
- REXML::ElementDecl
- REXML::Elements
- REXML::Encoding
- REXML::Entity
- REXML::EntityConst
- REXML::ExternalEntity
- REXML::Formatters
- REXML::Formatters::Default
- REXML::Formatters::Pretty
- REXML::Formatters::Transitive
- REXML::Functions
- REXML::IOSource
- REXML::Instruction
- REXML::Light
- REXML::Light::Node
- REXML::Namespace
- REXML::Node
- REXML::NotationDecl
- REXML::Output
- REXML::Parent
- REXML::ParseException
- REXML::Parsers
- REXML::Parsers::BaseParser
- REXML::Parsers::LightParser
- REXML::Parsers::PullEvent
- REXML::Parsers::PullParser
- REXML::Parsers::SAX2Parser
- REXML::Parsers::StreamParser
- REXML::Parsers::TreeParser
- REXML::Parsers::UltraLightParser
- REXML::Parsers::XPathParser
- REXML::QuickPath
- REXML::SAX2Listener
- REXML::Security
- REXML::Source
- REXML::SourceFactory
- REXML::StreamListener
- REXML::SyncEnumerator
- REXML::Text
- REXML::UndefinedNamespaceException
- REXML::Validation
- REXML::Validation::Choice
- REXML::Validation::Event
- REXML::Validation::Interleave
- REXML::Validation::OneOrMore
- REXML::Validation::Optional
- REXML::Validation::Ref
- REXML::Validation::RelaxNG
- REXML::Validation::Sequence
- REXML::Validation::State
- REXML::Validation::ValidationException
- REXML::Validation::Validator
- REXML::Validation::ZeroOrMore
- REXML::XMLDecl
- REXML::XMLTokens
- REXML::XPath
- REXML::XPathParser
- Symbol
REXML::Attribute
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
Attributes
Public Class Methods
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
firstis an Attribute, then this may be an Element, or nil. If nil, then the Element parent of this attribute is the parent of thefirstAttribute. 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
firstis 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 )
# File rexml/attribute.rb, line 45
def initialize( first, second=nil, parent=nil )
@normalized = @unnormalized = @element = nil
if first.kind_of? Attribute
self.name = first.expanded_name
@unnormalized = first.value
if second.kind_of? Element
@element = second
else
@element = first.element
end
elsif first.kind_of? String
@element = parent
self.name = first
@normalized = second.to_s
else
raise "illegal argument #{first.class.name} to Attribute constructor"
end
end
Public Instance Methods
Returns true if other is an Attribute and has the same name and value, false otherwise.
# File rexml/attribute.rb, line 96
def ==( other )
other.kind_of?(Attribute) and other.name==name and other.value==value
end
Returns a copy of this attribute
# File rexml/attribute.rb, line 145
def clone
Attribute.new self
end
# File rexml/attribute.rb, line 119
def doctype
if @element
doc = @element.document
doc.doctype if doc
end
end
Sets the element of which this object is an attribute. Normally, this is not directly called.
Returns this attribute
# File rexml/attribute.rb, line 153
def element=( element )
@element = element
if @normalized
Text.check( @normalized, NEEDS_A_SECOND_CHECK, doctype )
end
self
end
Creates (and returns) a hash from both the name and value
# File rexml/attribute.rb, line 101
def hash
name.hash + value.hash
end
Returns the namespace URL, if defined, or nil otherwise
e = Element.new("el") e.add_namespace("ns", "http://url") e.add_attribute("ns:a", "b") e.add_attribute("nsx:a", "c") e.attribute("ns:a").namespace # => "http://url" e.attribute("nsx:a").namespace # => nil
# File rexml/attribute.rb, line 89
def namespace arg=nil
arg = prefix if arg.nil?
@element.namespace arg
end
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 # -> ""
# File rexml/attribute.rb, line 73
def prefix
pf = super
if pf == ""
pf = @element.prefix if @element
end
pf
end
Removes this Attribute from the tree, and returns true if successful
This method is usually not called directly.
# File rexml/attribute.rb, line 166
def remove
@element.attributes.delete self.name unless @element.nil?
end
Returns the attribute value, with entities replaced
# File rexml/attribute.rb, line 127
def to_s
return @normalized if @normalized
@normalized = Text::normalize( @unnormalized, doctype )
@unnormalized = nil
@normalized
end
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'"
# File rexml/attribute.rb, line 111
def to_string
if @element and @element.context and @element.context[:attribute_quote] == :quote
%Q^#@expanded_name="#{to_s().gsub(/"/, '"')}"^
else
"#@expanded_name='#{to_s().gsub(/'/, ''')}'"
end
end
Returns the UNNORMALIZED value of this attribute. That is, entities have been expanded to their values
# File rexml/attribute.rb, line 137
def value
return @unnormalized if @unnormalized
@unnormalized = Text::unnormalize( @normalized, doctype )
@normalized = nil
@unnormalized
end