summaryrefslogtreecommitdiff
path: root/lib/xsd/ns.rb
diff options
context:
space:
mode:
authornahi <nahi@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2004-12-20 14:41:10 +0000
committernahi <nahi@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2004-12-20 14:41:10 +0000
commite8ed175fe02aecab21ce50e85e27fe79137d8c31 (patch)
tree8a6d14560604b592f177ffaaa0c146c756edb2e9 /lib/xsd/ns.rb
parent330a8e51c56f5386753f55ba8e656a62471a36ba (diff)
* added files:
* lib/soap/mapping/wsdl*.rb * lib/wsdl/soap/element.rb * lib/wsdl/xmlSchema/simpleContent.rb * modified files: * lib/soap/* * lib/wsdl/* * lib/xsd/* * test/soap/* * test/wsdl/* * test/xsd/* * sample/soap/* * sample/sdl/* * summary * imported from the soap4r repository. Version: 1.5.3-ruby1.8.2 * added several XSD basetype support: nonPositiveInteger, negativeInteger, nonNegativeInteger, unsignedLong, unsignedInt, unsignedShort, unsignedByte, positiveInteger * HTTP client connection/send/receive timeout support. * HTTP client/server gzipped content encoding support. * improved WSDL schema definition support; still is far from complete, but is making step by step improovement. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@7617 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'lib/xsd/ns.rb')
-rw-r--r--lib/xsd/ns.rb22
1 files changed, 16 insertions, 6 deletions
diff --git a/lib/xsd/ns.rb b/lib/xsd/ns.rb
index 224db6c058..66bd9caf43 100644
--- a/lib/xsd/ns.rb
+++ b/lib/xsd/ns.rb
@@ -93,9 +93,20 @@ public
# $1 and $2 are necessary.
ParseRegexp = Regexp.new('^([^:]+)(?::(.+))?$')
- def parse(elem)
- ns = nil
- name = nil
+ 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
+
+ # For local attribute key parsing
+ # <foo xmlns="urn:" xmlns:n1="urn:" bar="1" n1:baz="2" />
+ # =>
+ # {}bar, {urn:}baz
+ def parse_local(elem)
ParseRegexp =~ elem
if $2
ns = @tag2ns[$1]
@@ -104,10 +115,9 @@ public
raise FormatError.new('Unknown namespace qualifier: ' << $1)
end
elsif $1
- ns = @default_namespace
+ ns = nil
name = $1
- end
- if !name
+ else
raise FormatError.new("Illegal element format: #{ elem }")
end
XSD::QName.new(ns, name)