class XSD::NS
Constants
- KNOWN_TAG
- Namespace
- ParseRegexp
$1 and $2 are necessary.
Attributes
default_namespace[R]
Public Class Methods
new(tag2ns = nil)
click to toggle source
# File lib/xsd/ns.rb, line 47 def initialize(tag2ns = nil) @tag2ns = tag2ns || ns_default @ns2tag = @tag2ns.invert @assigner = nil @default_namespace = nil end
Public Instance Methods
assign(ns, tag = nil)
click to toggle source
# File lib/xsd/ns.rb, line 59 def assign(ns, tag = nil) if tag == '' if ns.empty? @default_namespace = nil else @default_namespace = ns end tag else @assigner ||= Assigner.new(default_known_tag) tag ||= @assigner.assign(ns) @ns2tag[ns] = tag @tag2ns[tag] = ns tag end end
assigned?(ns)
click to toggle source
# File lib/xsd/ns.rb, line 76 def assigned?(ns) @default_namespace == ns or @ns2tag.key?(ns) end
assigned_as_tagged?(ns)
click to toggle source
# File lib/xsd/ns.rb, line 80 def assigned_as_tagged?(ns) @ns2tag.key?(ns) end
assigned_tag?(tag)
click to toggle source
# File lib/xsd/ns.rb, line 84 def assigned_tag?(tag) @tag2ns.key?(tag) end
clone_ns()
click to toggle source
# File lib/xsd/ns.rb, line 88 def clone_ns cloned = self.class.new(@tag2ns.dup) cloned.assigner = @assigner cloned.assign(@default_namespace, '') if @default_namespace cloned end
compare(ns, name, rhs)
click to toggle source
# File lib/xsd/ns.rb, line 114 def compare(ns, name, rhs) if (ns == @default_namespace) return true if (name == rhs) end @tag2ns.each do |assigned_tag, assigned_ns| if assigned_ns == ns && "#{assigned_tag}:#{name}" == rhs return true end end false end
each_ns() { |ns, tag| ... }
click to toggle source
# File lib/xsd/ns.rb, line 159 def each_ns @ns2tag.each do |ns, tag| yield(ns, tag) end end
known_tag()
click to toggle source
# File lib/xsd/ns.rb, line 54 def known_tag @assigner ||= Assigner.new(default_known_tag) @assigner.known_tag end
name(qname)
click to toggle source
# File lib/xsd/ns.rb, line 95 def name(qname) if qname.namespace == @default_namespace qname.name elsif tag = @ns2tag[qname.namespace] "#{tag}:#{qname.name}" else raise FormatError.new("namespace: #{qname.namespace} not defined yet") end end
name_attr(qname)
click to toggle source
no default namespace
# File lib/xsd/ns.rb, line 106 def name_attr(qname) if tag = @ns2tag[qname.namespace] "#{tag}:#{qname.name}" else raise FormatError.new("namespace: #{qname.namespace} not defined yet") end end
parse(str, local = false)
click to toggle source
# File lib/xsd/ns.rb, line 129 def parse(str, local = false) if ParseRegexp =~ str if (name = $2) and (ns = @tag2ns[$1]) return XSD::QName.new(ns, name) end end XSD::QName.new(local ? nil : @default_namespace, str) end
parse_local(elem)
click to toggle source
For local attribute key parsing
<foo xmlns="urn:a" xmlns:n1="urn:a" bar="1" n1:baz="2" /> => {}bar, {urn:a}baz
# File lib/xsd/ns.rb, line 142 def parse_local(elem) ParseRegexp =~ elem if $2 ns = @tag2ns[$1] name = $2 if !ns raise FormatError.new("unknown namespace qualifier: #{$1}") end elsif $1 ns = nil name = $1 else raise FormatError.new("illegal element format: #{elem}") end XSD::QName.new(ns, name) end
Protected Instance Methods
assigner=(assigner)
click to toggle source
# File lib/xsd/ns.rb, line 167 def assigner=(assigner) @assigner = assigner end
Private Instance Methods
default_known_tag()
click to toggle source
# File lib/xsd/ns.rb, line 177 def default_known_tag KNOWN_TAG end
ns_default()
click to toggle source
# File lib/xsd/ns.rb, line 173 def ns_default {'xml' => Namespace} end