晋太元中,武陵人捕鱼为业。缘溪行,忘路之远近。忽逢桃花林,夹岸数百步,中无杂树,芳草鲜美,落英缤纷。渔人甚异之,复前行,欲穷其林。 林尽水源,便得一山,山有小口,仿佛若有光。便舍船,从口入。初极狭,才通人。复行数十步,豁然开朗。土地平旷,屋舍俨然,有良田、美池、桑竹之属。阡陌交通,鸡犬相闻。其中往来种作,男女衣着,悉如外人。黄发垂髫,并怡然自乐。 见渔人,乃大惊,问所从来。具答之。便要还家,设酒杀鸡作食。村中闻有此人,咸来问讯。自云先世避秦时乱,率妻子邑人来此绝境,不复出焉,遂与外人间隔。问今是何世,乃不知有汉,无论魏晋。此人一一为具言所闻,皆叹惋。余人各复延至其家,皆出酒食。停数日,辞去。此中人语云:“不足为外人道也。”(间隔 一作:隔绝) 既出,得其船,便扶向路,处处志之。及郡下,诣太守,说如此。太守即遣人随其往,寻向所志,遂迷,不复得路。 南阳刘子骥,高尚士也,闻之,欣然规往。未果,寻病终。后遂无问津者。
| DIR:/opt/alt/ruby18/lib64/ruby/1.8/wsdl/xmlSchema/ |
| Current File : //opt/alt/ruby18/lib64/ruby/1.8/wsdl/xmlSchema/element.rb |
# WSDL4R - XMLSchema element definition for WSDL.
# Copyright (C) 2002, 2003, 2005 NAKAMURA, Hiroshi <nahi@ruby-lang.org>.
# This program is copyrighted free software by NAKAMURA, Hiroshi. You can
# redistribute it and/or modify it under the same terms of Ruby's license;
# either the dual license version in 2003, or any later version.
require 'wsdl/info'
module WSDL
module XMLSchema
class Element < Info
class << self
if RUBY_VERSION > "1.7.0"
def attr_reader_ref(symbol)
name = symbol.to_s
define_method(name) {
instance_variable_get("@#{name}") ||
(refelement ? refelement.__send__(name) : nil)
}
end
else
def attr_reader_ref(symbol)
name = symbol.to_s
module_eval <<-EOS
def #{name}
@#{name} || (refelement ? refelement.#{name} : nil)
end
EOS
end
end
end
attr_writer :name # required
attr_writer :form
attr_writer :type
attr_writer :local_simpletype
attr_writer :local_complextype
attr_writer :constraint
attr_writer :maxoccurs
attr_writer :minoccurs
attr_writer :nillable
attr_reader_ref :name
attr_reader_ref :form
attr_reader_ref :type
attr_reader_ref :local_simpletype
attr_reader_ref :local_complextype
attr_reader_ref :constraint
attr_reader_ref :maxoccurs
attr_reader_ref :minoccurs
attr_reader_ref :nillable
attr_accessor :ref
def initialize(name = nil, type = nil)
super()
@name = name
@form = nil
@type = type
@local_simpletype = @local_complextype = nil
@constraint = nil
@maxoccurs = '1'
@minoccurs = '1'
@nillable = nil
@ref = nil
@refelement = nil
end
def refelement
@refelement ||= (@ref ? root.collect_elements[@ref] : nil)
end
def targetnamespace
parent.targetnamespace
end
def elementformdefault
parent.elementformdefault
end
def elementform
self.form.nil? ? parent.elementformdefault : self.form
end
def parse_element(element)
case element
when SimpleTypeName
@local_simpletype = SimpleType.new
@local_simpletype
when ComplexTypeName
@type = nil
@local_complextype = ComplexType.new
@local_complextype
when UniqueName
@constraint = Unique.new
@constraint
else
nil
end
end
def parse_attr(attr, value)
case attr
when NameAttrName
# namespace may be nil
if directelement? or elementform == 'qualified'
@name = XSD::QName.new(targetnamespace, value.source)
else
@name = XSD::QName.new(nil, value.source)
end
when FormAttrName
@form = value.source
when TypeAttrName
@type = value
when RefAttrName
@ref = value
when MaxOccursAttrName
if parent.is_a?(All)
if value.source != '1'
raise Parser::AttrConstraintError.new(
"cannot parse #{value} for #{attr}")
end
end
@maxoccurs = value.source
when MinOccursAttrName
if parent.is_a?(All)
unless ['0', '1'].include?(value.source)
raise Parser::AttrConstraintError.new(
"cannot parse #{value} for #{attr}")
end
end
@minoccurs = value.source
when NillableAttrName
@nillable = (value.source == 'true')
else
nil
end
end
private
def directelement?
parent.is_a?(Schema)
end
end
end
end
|