15 | This schema document describes the XML namespace, in a form 16 | suitable for import by other schema documents. 17 |
18 |19 | See 20 | http://www.w3.org/XML/1998/namespace.html and 21 | 22 | http://www.w3.org/TR/REC-xml for information 23 | about this namespace. 24 |
25 |26 | Note that local names in this namespace are intended to be 27 | defined only by the World Wide Web Consortium or its subgroups. 28 | The names currently defined in this namespace are listed below. 29 | They should not be used with conflicting semantics by any Working 30 | Group, specification, or document instance. 31 |
32 |33 | See further below in this document for more information about how to refer to this schema document from your own 35 | XSD schema documents and about the 36 | namespace-versioning policy governing this schema document. 37 |
38 |50 | denotes an attribute whose value 51 | is a language code for the natural language of the content of 52 | any element; its value is inherited. This name is reserved 53 | by virtue of its definition in the XML specification.
54 | 55 |59 | Attempting to install the relevant ISO 2- and 3-letter 60 | codes as the enumerated possible values is probably never 61 | going to be a realistic possibility. 62 |
63 |64 | See BCP 47 at 65 | http://www.rfc-editor.org/rfc/bcp/bcp47.txt 66 | and the IANA language subtag registry at 67 | 68 | http://www.iana.org/assignments/language-subtag-registry 69 | for further information. 70 |
71 |72 | The union allows for the 'un-declaration' of xml:lang with 73 | the empty string. 74 |
75 |96 | denotes an attribute whose 97 | value is a keyword indicating what whitespace processing 98 | discipline is intended for the content of the element; its 99 | value is inherited. This name is reserved by virtue of its 100 | definition in the XML specification.
101 | 102 |119 | denotes an attribute whose value 120 | provides a URI to be used as the base for interpreting any 121 | relative URIs in the scope of the element on which it 122 | appears; its value is inherited. This name is reserved 123 | by virtue of its definition in the XML Base specification.
124 | 125 |126 | See http://www.w3.org/TR/xmlbase/ 128 | for information about this attribute. 129 |
130 |142 | denotes an attribute whose value 143 | should be interpreted as if declared to be of type ID. 144 | This name is reserved by virtue of its definition in the 145 | xml:id specification.
146 | 147 |148 | See http://www.w3.org/TR/xml-id/ 150 | for information about this attribute. 151 |
152 |172 | denotes Jon Bosak, the chair of 173 | the original XML Working Group. This name is reserved by 174 | the following decision of the W3C XML Plenary and 175 | XML Coordination groups: 176 |
177 |178 |185 |179 | In appreciation for his vision, leadership and 180 | dedication the W3C XML Plenary on this 10th day of 181 | February, 2000, reserves for Jon Bosak in perpetuity 182 | the XML name "xml:Father". 183 |
184 |
197 | This schema defines attributes and an attribute group suitable
198 | for use by schemas wishing to allow xml:base
,
199 | xml:lang
, xml:space
or
200 | xml:id
attributes on elements they define.
201 |
203 | To enable this, such a schema must import this schema for 204 | the XML namespace, e.g. as follows: 205 |
206 |207 | <schema . . .> 208 | . . . 209 | <import namespace="http://www.w3.org/XML/1998/namespace" 210 | schemaLocation="http://www.w3.org/2001/xml.xsd"/> 211 |212 |
213 | or 214 |
215 |216 | <import namespace="http://www.w3.org/XML/1998/namespace" 217 | schemaLocation="http://www.w3.org/2009/01/xml.xsd"/> 218 |219 |
220 | Subsequently, qualified reference to any of the attributes or the 221 | group defined below will have the desired effect, e.g. 222 |
223 |224 | <type . . .> 225 | . . . 226 | <attributeGroup ref="xml:specialAttrs"/> 227 |228 |
229 | will define a type which will schema-validate an instance element 230 | with any of those attributes. 231 |
232 |243 | In keeping with the XML Schema WG's standard versioning 244 | policy, this schema document will persist at 245 | 246 | http://www.w3.org/2009/01/xml.xsd. 247 |
248 |249 | At the date of issue it can also be found at 250 | 251 | http://www.w3.org/2001/xml.xsd. 252 |
253 |254 | The schema document at that URI may however change in the future, 255 | in order to remain compatible with the latest version of XML 256 | Schema itself, or with the XML namespace itself. In other words, 257 | if the XML Schema or XML namespaces change, the version of this 258 | document at 259 | http://www.w3.org/2001/xml.xsd 260 | 261 | will change accordingly; the version at 262 | 263 | http://www.w3.org/2009/01/xml.xsd 264 | 265 | will not change. 266 |
267 |268 | Previous dated (and unchanging) versions of this schema 269 | document are at: 270 |
271 | 281 |foo
' } 24 | 25 | subject { Element.import document } 26 | 27 | it { is_expected.to be_instance_of P } 28 | its(:content) { should == 'foo' } 29 | end 30 | 31 | describe "comparing objects" do 32 | it "should be equal if the content and language are the same" do 33 | expect(P.new(doc, :language => 'jp', :content => "Hello there")).to eq(P.new(doc, :language => 'jp', :content => "Hello there")) 34 | end 35 | 36 | describe "when the content is different" do 37 | it "should not be equal" do 38 | expect(P.new(doc, :content => "Hello")).not_to eq(P.new(doc, :content => "Hello there")) 39 | end 40 | end 41 | 42 | describe "when the language is different" do 43 | it "should not be equal" do 44 | expect(P.new(doc, :language => 'jp')).not_to eq(P.new(doc, :language => 'en')) 45 | end 46 | end 47 | end 48 | 49 | describe "<<" do 50 | it "should accept String" do 51 | expect { subject << 'anything' }.not_to raise_error 52 | end 53 | 54 | it "should accept Audio" do 55 | expect { subject << Audio.new(doc) }.not_to raise_error 56 | end 57 | 58 | it "should accept Break" do 59 | expect { subject << Break.new(doc) }.not_to raise_error 60 | end 61 | 62 | it "should accept Emphasis" do 63 | expect { subject << Emphasis.new(doc) }.not_to raise_error 64 | end 65 | 66 | it "should accept Mark" do 67 | expect { subject << Mark.new(doc) }.not_to raise_error 68 | end 69 | 70 | it "should accept Phoneme" do 71 | expect { subject << Phoneme.new(doc) }.not_to raise_error 72 | end 73 | 74 | it "should accept Prosody" do 75 | expect { subject << Prosody.new(doc) }.not_to raise_error 76 | end 77 | 78 | it "should accept SayAs" do 79 | expect { subject << SayAs.new(doc, :interpret_as => :foo) }.not_to raise_error 80 | end 81 | 82 | it "should accept Sub" do 83 | expect { subject << Sub.new(doc) }.not_to raise_error 84 | end 85 | 86 | it "should accept S" do 87 | expect { subject << S.new(doc) }.not_to raise_error 88 | end 89 | 90 | it "should accept Voice" do 91 | expect { subject << Voice.new(doc) }.not_to raise_error 92 | end 93 | 94 | it "should raise InvalidChildError with non-acceptable objects" do 95 | expect { subject << 1 }.to raise_error(InvalidChildError, "A P can only accept String, Audio, Break, Emphasis, Mark, Phoneme, Prosody, SayAs, Sub, S, Voice as children") 96 | end 97 | end 98 | end # P 99 | end # SSML 100 | end # RubySpeech 101 | -------------------------------------------------------------------------------- /spec/ruby_speech/ssml/phoneme_spec.rb: -------------------------------------------------------------------------------- 1 | require 'spec_helper' 2 | 3 | module RubySpeech 4 | module SSML 5 | describe Phoneme do 6 | let(:doc) { Nokogiri::XML::Document.new } 7 | 8 | subject { described_class.new doc } 9 | 10 | its(:name) { should == 'phoneme' } 11 | 12 | describe "setting options in initializers" do 13 | subject { Phoneme.new doc, :alphabet => 'foo', :ph => 'bar' } 14 | 15 | its(:alphabet) { should == 'foo' } 16 | its(:ph) { should == 'bar' } 17 | end 18 | 19 | it 'registers itself' do 20 | expect(Element.class_from_registration(:phoneme)).to eq(Phoneme) 21 | end 22 | 23 | describe "from a document" do 24 | let(:document) { '
21 | You have 4 new messages.
22 | The first is from Stephanie Williams and arrived at
24 |
25 | The subject is
27 |
28 |