/[suikacvs]/messaging/manakai/lib/Message/DOM/XMLParser.dis
Suika

Contents of /messaging/manakai/lib/Message/DOM/XMLParser.dis

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.49 - (show annotations) (download)
Wed Jun 13 12:04:50 2007 UTC (17 years, 5 months ago) by wakaba
Branch: MAIN
CVS Tags: manakai-release-0-4-0, HEAD
Changes since 1.48: +3 -2 lines
Error occurred while calculating annotation data.
++ manakai/t/ChangeLog	13 Jun 2007 12:04:43 -0000
2007-06-13  Wakaba  <wakaba@suika.fam.cx>

	* DOM-DOMImplementation.t: New test.

2007-05-26  Wakaba  <wakaba@suika.fam.cx>

	* IMT-InternetMediaType.t: Tests for |add_parameter| are added.

++ manakai/lib/Message/IMT/ChangeLog	13 Jun 2007 12:03:40 -0000
	* InternetMediaType.pm (add_paremter): New method.

2007-05-26  Wakaba  <wakaba@suika.fam.cx>

++ manakai/lib/Message/DOM/ChangeLog	13 Jun 2007 12:02:59 -0000
2007-06-13  Wakaba  <wakaba@suika.fam.cx>

	* DOMImplementation.pm, Node.pm, DOMDocument.pm,
	DOMElement.pm, Attr.pm, DocumentType.pm,
	DOMCharacterData.pm, Text.pm, Comment.pm: Copied
	from <http://suika.fam.cx/gate/cvs/*checkout*/markup/html/whatpm/Whatpm/NanoDOM.pm?rev=1.9>.

2007-06-10  Wakaba  <wakaba@suika.fam.cx>

	* XMLParser.dis: Default to "1.0" if <?xml version=""?>
	specifies unknown value and trys to recover from the error.

++ manakai/lib/Message/URI/ChangeLog	13 Jun 2007 12:04:07 -0000
2007-06-13  Wakaba  <wakaba@suika.fam.cx>

	* URIReference.pm (Message::IF::URIReference):
	Renamed from |Message::DOM::IF::URIReference|.

1 Module:
2 @QName: MDOM|XMLParser
3 @Namespace:
4 http://suika.fam.cx/~wakaba/archive/2004/dom/xml-parser#
5
6 @FullName:
7 @@lang:en
8 @@@: XML Parser
9
10 @DISCore:author: DISCore|Wakaba
11 @License: license|Perl+MPL
12 @Date:
13 $Date: 2006/12/31 09:11:56 $
14
15 @Require:
16 @@Module:
17 @@@QName: MDOM|DOMLS
18 @@Module:
19 @@@QName: MDOM|XML
20 @@Module:
21 @@@QName: MDOM|XDoctype
22 @@Module:
23 @@@QName: MCharset|Encode
24
25 Namespace:
26 @c:
27 http://suika.fam.cx/~wakaba/archive/2004/8/18/dom-core#
28 @cfg:
29 http://suika.fam.cx/www/2006/dom-config/
30 @cs:
31 http://suika.fam.cx/~wakaba/archive/2004/dis/Charset/
32 @d:
33 http://suika.fam.cx/~wakaba/archive/2004/dom/xdt#
34 @dis:
35 http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--
36 @dtest:
37 http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#Test/
38 @dx:
39 http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/Error/DOMException#
40 @ecore:
41 http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/Error/Core/
42 @f:
43 http://suika.fam.cx/~wakaba/archive/2004/dom/feature#
44 @fe:
45 http://suika.fam.cx/www/2006/feature/
46 @gls:
47 http://suika.fam.cx/~wakaba/archive/2004/dom/gls#
48 @idl:
49 http://suika.fam.cx/~wakaba/archive/2004/dis/IDL#
50 @infoset:
51 http://www.w3.org/2001/04/infoset#
52 @lang:
53 http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#
54 @license:
55 http://suika.fam.cx/~wakaba/archive/2004/8/18/license#
56 @LSEV:
57 http://www.w3.org/2002/DOMLS
58 @ManakaiDOM:
59 http://suika.fam.cx/~wakaba/archive/2004/8/18/manakai-dom#
60 @ManakaiDOMLS:
61 http://suika.fam.cx/~wakaba/archive/2004/mdom-ls#
62 @MCharset:
63 http://suika.fam.cx/~wakaba/archive/2005/manakai/Charset/
64 @mce:
65 http://suika.fam.cx/~wakaba/archive/2005/manakai/Charset/Encode/
66 @MDOM:
67 http://suika.fam.cx/~wakaba/archive/2004/8/18/manakai-dom#ManakaiDOM.
68 @MDOMX:
69 http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#
70 @rdf:
71 http://www.w3.org/1999/02/22-rdf-syntax-ns#
72 @rdfs:
73 http://www.w3.org/2000/01/rdf-schema#
74 @t:
75 http://suika.fam.cx/~wakaba/archive/2004/dom/tree#
76 @tc:
77 http://suika.fam.cx/~wakaba/archive/2005/manakai/DOM/TreeCore/
78 @td:
79 http://suika.fam.cx/~wakaba/archive/2005/manakai/DOM/Document/
80 @te:
81 http://suika.fam.cx/~wakaba/archive/2005/manakai/DOM/Element/
82 @test:
83 http://suika.fam.cx/~wakaba/archive/2004/dis/Test#
84 @tx:
85 http://suika.fam.cx/~wakaba/archive/2005/manakai/DOM/XML/
86 @urigen:
87 http://suika.fam.cx/~wakaba/archive/2005/manakai/URI/Generic/
88 @x:
89 http://suika.fam.cx/~wakaba/archive/2004/dom/xml#
90 @xml:
91 http://www.w3.org/XML/1998/namespace
92 @xml-auto-charset:
93 http://suika.fam.cx/www/2006/03/xml-entity/
94 @xml-dtd:
95 http://www.w3.org/TR/REC-xml
96 @xmlns:
97 http://www.w3.org/2000/xmlns/
98 @xp:
99 http://suika.fam.cx/~wakaba/archive/2004/dom/xml-parser#
100
101 ## -- Features
102
103 ElementTypeBinding:
104 @Name: FeatureDef
105 @ElementType:
106 dis:ResourceDef
107 @ShadowContent:
108 @@rdf:type: f|Feature
109
110 ElementTypeBinding:
111 @Name: FeatureVerDef
112 @ElementType:
113 dis:ResourceDef
114 @ShadowContent:
115 @@rdf:type: f|Feature
116
117 ElementTypeBinding:
118 @Name: featureQName
119 @ElementType:
120 f:name
121 @ShadowContent:
122 @@ContentType: DISCore|QName
123
124 ResourceDef:
125 @QName: DOMString
126 @AliasFor: DOMMain|DOMString
127
128 ResourceDef:
129 @QName: Node
130 @AliasFor: tc|Node
131
132 ResourceDef:
133 @QName: Element
134 @AliasFor: te|Element
135
136 ResourceDef:
137 @QName: Attr
138 @AliasFor: te|Attr
139
140 ResourceDef:
141 @QName: Document
142 @AliasFor: td|Document
143
144 ResourceDef:
145 @QName: DocumentXDoctype
146 @AliasFor: d|DocumentXDoctype
147
148 ResourceDef:
149 @QName: DTDef
150 @AliasFor: d|DocumentTypeDefinition
151
152 ResourceDef:
153 @QName: ETDef
154 @AliasFor: d|ElementTypeDefinition
155
156 ResourceDef:
157 @QName: ATDef
158 @AliasFor: d|AttributeDefinition
159
160 ResourceDef:
161 @QName: GE
162 @AliasFor: tx|Entity
163
164 ResourceDef:
165 @QName: GERef
166 @AliasFor: tx|EntityReference
167
168 ElementTypeBinding:
169 @Name: ClsDef
170 @ElementType:
171 dis:ResourceDef
172 @ShadowContent:
173 @@rdf:type:
174 @@@@: dis|MultipleResource
175 @@@ForCheck: !ManakaiDOM|ForIF !ManakaiDOM|ForClass
176 @@resourceFor:
177 @@@@: ManakaiDOM|ForClass
178
179 @@rdf:type:
180 @@@@: DISLang|Class
181 @@@ForCheck: ManakaiDOM|ForClass
182
183 ElementTypeBinding:
184 @Name: ClsQName
185 @ElementType:
186 dis:QName
187 @ShadowContent:
188 @@ForCheck: ManakaiDOM|ForClass
189
190 ElementTypeBinding:
191 @Name: ClsISA
192 @ElementType:
193 dis:ISA
194 @ShadowContent:
195 @@ForCheck: ManakaiDOM|ForClass
196
197 ElementTypeBinding:
198 @Name: nullCase
199 @ElementType:
200 dis:ResourceDef
201 @ShadowContent:
202 @@rdf:type: ManakaiDOM|InCase
203 @@Value:
204 @@@is-null:1
205
206 ElementTypeBinding:
207 @Name: TrueCase
208 @ElementType:
209 dis:ResourceDef
210 @ShadowContent:
211 @@rdf:type:
212 ManakaiDOM:InCase
213 @@Value:
214 @@@@: 1
215 @@@ContentType: DISCore|Boolean
216 @@Type: idl|boolean
217
218 ElementTypeBinding:
219 @Name: FalseCase
220 @ElementType:
221 dis:ResourceDef
222 @ShadowContent:
223 @@rdf:type:
224 ManakaiDOM:InCase
225 @@Value:
226 @@@@: 0
227 @@@ContentType: DISCore|Boolean
228 @@Type: idl|boolean
229
230 ResourceDef:
231 @QName: LSParser
232 @AliasFor: DOMLS|LSParser
233
234 ClsDef:
235 @ClsQName: ManakaiXMLParser
236
237 @Implement: DOMLS|LSParser
238
239 @f:implements: DOMLS|LSFeature30
240 @f:implements: DOMLS|ParseString10
241 @enImplNote:
242 @@ddid: dtdfeature
243 @@@:
244 {TODO::
245 Once DTD validation is implemented, add <Q::f:implements>
246 for XML-DTD-feature.
247 }
248
249 @DISLang:role: gls|ParserRole
250
251 @enDesc:
252 Note that the <Class::ManakaiXMLParser> reports any XML errors
253 (syntax errors and / or well-formedness constraint errors)
254 via the <IF::DOMCore:error-handler> registered to
255 the <A::DOMLS:LSParser.domConfig> object. Each error has
256 its <A::DOMCore:DOMError.severity>, either <C::DOMCore:SEVERITY_ERROR>
257 or <C::DOMCore:SEVERITY_FATAL_ERROR>. However, their semantics
258 are slight different from the ones of <QUOTE::error> and
259 <QUOTE::fatal error> in XML; in this implemenetation,
260 <C::DOMCore:SEVERITY_ERROR> implies that the parsing process
261 can effectively be continued to detect more errors while
262 <C::DOMCore:SEVERITY_FATAL_ERROR> implies that the error
263 is serious so that the result document tree and any errors
264 might be far from the ones obtained when the error would not
265 be found.
266
267 @Test:
268 @@QName: GLSImpl.createGLSParser.LS.test
269 @@enDesc:
270 Since there is at least one implementation of the feature (i.e.
271 this class), the <M::gls|GLSImplementation.createGLSParser>
272 must not throw an exception.
273 @@PerlDef:
274 my $impl;
275 __CODE{DOMLS|createImplForTest:: $impl => $impl}__;
276
277 my $p = $impl-><M::gls|GLSImplementation.createGLSParser>
278 ({LS => '3.0'});
279
280 $test->assert_isa ($p, <IFName::LSParser>);
281 @Test:
282 @@QName: GLSImpl.createGLSParser.ParseXMLString.test
283 @@enDesc:
284 Since there is at least one implementation of the feature (i.e.
285 this class), the <M::gls|GLSImplementation.createGLSParser>
286 must not throw an exception.
287 @@PerlDef:
288 my $impl;
289 __CODE{DOMLS|createImplForTest:: $impl => $impl}__;
290
291 my $p = $impl-><M::gls|GLSImplementation.createGLSParser>
292 ({<Q::fe|ParseXMLString> => '1.0'});
293
294 $test->assert_not_null ($p);
295 @Test:
296 @@QName: GLSImpl.createGLSParser.LS.ParseXMLString.test
297 @@enDesc:
298 Since there is at least one implementation of the feature (i.e.
299 this class), the <M::gls|GLSImplementation.createGLSParser>
300 must not throw an exception.
301 @@PerlDef:
302 my $impl;
303 __CODE{DOMLS|createImplForTest:: $impl => $impl}__;
304
305 my $p = $impl-><M::gls|GLSImplementation.createGLSParser>
306 ({LS => '3.0', <Q::fe|ParseXMLString> => '1.0'});
307
308 $test->assert_isa ($p, <IFName::LSParser>);
309
310 @Test:
311 @@QName: DOMImplLS.createLSParser.1.test
312 @@enDesc:
313 Since there is at least one implementation of the feature (i.e.
314 this class), the <M::gls|GLSImplementation.createGLSParser>
315 must not throw an exception.
316 @@PerlDef:
317 my $impl;
318 __CODE{DOMLS|createImplForTest:: $impl => $impl}__;
319
320 my $p = $impl-><M::DOMLS|DOMImplementationLS.createLSParser>
321 (<C::DOMLS|DOMImplementationLS.MODE_SYNCHRONOUS>);
322 $test->assert_isa ($p, <IFName::LSParser>);
323 @enImplNote:
324 @@ddid: lsparsertext
325 @@@:
326 Future version should add test:
327 @@QName: DOMImplLS.createLSParser.2.test
328 @@enDesc:
329 Since there is at least one implementation of the feature (i.e.
330 this class), the <M::gls|GLSImplementation.createGLSParser>
331 must not throw an exception.
332 @@PerlDef:
333 my $impl;
334 __CODE{DOMLS|createImplForTest:: $impl => $impl}__;
335
336 my $p = $impl-><M::DOMLS|DOMImplementationLS.createLSParser>
337 (<C::DOMLS|DOMImplementationLS.MODE_SYNCHRONOUS>,
338 <Q::xml-dtd:>);
339 $test->assert_isa ($p, <IFName::LSParser>);
340
341 @Test:
342 @@QName: Perl.open.utf8.strref.1.test
343 @@enDesc:
344 Does PerlIO works as intended?
345 @@PerlDef:
346 my $s = qq<\x{3001}\x0A\x{10001}>;
347 #open my $a, '<'.':utf8', \$s;
348 require IO::String;
349 my $a = IO::String->new ($s);
350 $test->assert_num_equals
351 (actual_value => ord getc $a,
352 expected_value => 0x3001);
353 $test->assert_num_equals
354 (actual_value => ord getc $a,
355 expected_value => 0x000A);
356 $test->assert_num_equals
357 (actual_value => ord getc $a,
358 expected_value => 0x10001);
359 $a->ungetc (0x10001);
360 $test->assert_num_equals
361 (actual_value => ord getc $a,
362 expected_value => 0x10001);
363 $test->assert_null (getc $a);
364 close $a;
365 @Test:
366 @@QName: Perl.open.8859.strref.2.test
367 @@enDesc:
368 Does PerlIO works as intended?
369 @@PerlDef:
370 my $s = qq<\x{0080}\x0A\x{00A9}>;
371 #open my $a, '<', \$s;
372 require IO::String;
373 my $a = IO::String->new ($s);
374 $test->assert_num_equals
375 (actual_value => ord getc $a,
376 expected_value => 0x0080);
377 $test->assert_num_equals
378 (actual_value => ord getc $a,
379 expected_value => 0x000A);
380 $test->assert_num_equals
381 (actual_value => ord getc $a,
382 expected_value => 0x00A9);
383 $a->ungetc (0x00A9);
384 $test->assert_num_equals
385 (actual_value => ord getc $a,
386 expected_value => 0x00A9);
387 $test->assert_null (getc $a);
388 close $a;
389
390 @Attr:
391 @@Name: domConfig
392 @@enDesc:
393 The configuration of the parser.
394
395 @@Get:
396 @@@Type: DOMCore|DOMConfiguration
397 @@@enDesc: The DOM configuration object.
398 @@@PerlDef:
399 __CODE{DOMCore|getConfigObject::
400 $target => $self,
401 $targetHash => $self,
402 $targetType => {<ClassName::xp|ManakaiXMLParser>},
403 $result => $r,
404 }__;
405
406 @Attr:
407 @@ForCheck: ManakaiDOM|ForClass
408 @@Name: async
409 @@enDesc:
410 Whether the parser is asynchronous or not.
411 @@Type: idl|boolean
412 @@Get:
413 @@@FalseCase:
414 @@@@enDesc:
415 The parser does not in asynchronous mode.
416 @@@PerlDef: \
417 @@Test:
418 @@@QName: XMLParser.async.test
419 @@@PerlDef:
420 my $xp;
421 __CODE{createParserForTest:: $xp => $xp}__;
422
423 $test->assert_false ($xp-><AG::DOMLS|LSParser.async>);
424
425 @Attr:
426 @@ForCheck: ManakaiDOM|ForClass
427 @@Name: busy
428 @@enDesc:
429 Whether the parser is currently busy loading a document or not.
430 @@Type: idl|boolean
431 @@Get:
432 @@@TrueCase:
433 @@@@enDesc:
434 The parser is currently busy.
435 @@@FalseCase:
436 @@@@enDesc:
437 The parser is not busy.
438 @@@PerlDef:
439 $r = $self->{<H::DOMLS|busy>};
440
441 @enImplNote:
442 @@ddid: abort
443 @@@:
444 {ISSUE::
445 LSParser.abort:
446
447 Is it required to support even in synchronous mode?
448 }
449
450 {TODO::
451 LSParser.filter
452 }
453
454 @ResourceDef:
455 @@QName: createParserForTest
456 @@ForCheck: ManakaiDOM|ForClass
457 @@rdf:type: DISPerl|BlockCode
458 @@PerlDef:
459 require Message::DOM::GenericLS;
460 $xp = <Class::ManakaiXMLParser>
461 ->new (<Class::c|ManakaiDOMImplementation>->_new, '');
462
463 @Method:
464 @@ManakaiDOM:isForInternal:1
465 @@ForCheck: ManakaiDOM|ForClass
466 @@Operator: DISPerl|NewMethod
467 @@enDesc:
468 Creates a new instance of the object.
469 @@Param:
470 @@@Name: impl
471 @@@Type: gls|GLSImplementation
472 @@@enDesc:
473 The implementation from which the parser is created.
474 @@Param:
475 @@@Name: features
476 @@@Type: DOMString
477 @@@dis:actualType: f|FeaturesString
478 @@@enDesc:
479 The set of features requested for the parser.
480 @@Return:
481 @@@Type: DOMMain|DOMObject
482 @@@dis:actualType: LSParser
483 @@@enDesc:
484 The newly created parser.
485 @@@PerlDef:
486 $r = bless {
487 <H::f|implementation> => $impl,
488 }, $self;
489
490 @Method:
491 @@Name: parseURI
492 @@enDesc:
493 Parses an XML document identified by a DOM URI.
494
495 It is equivalent to <M::.parse> method with its <P::input>
496 parameter set to a <IF::LSInput> object whose
497 <A::LSInput.systemId> set to <P::uri>.
498 @@Param:
499 @@@Name: uri
500 @@@Type: DOMString
501 @@@enDesc:
502 The DOM URI of the XML document to be read.
503 @@Return:
504 @@@Type: Document
505 @@@enDesc:
506 The newly created and populated <IF::Document> node.
507 @@@dx:raises:
508 @@@@@: ManakaiDOMLS|MDOMLS_BUSY
509 @@@@enDesc:
510 If <A::LSParser.busy> is <DOM::true>.
511 @@@dx:raises:
512 @@@@@: DOMLS|PARSE_ERR
513 @@@@enDesc:
514 If the <IF::LSParser> was unable to load the document.
515 @@@PerlDef:
516 __DEEP{
517 $r = $self-><M::LSParser.parse> ({system_id => $uri});
518 }__;
519
520 @Method:
521 @@Name: parse
522 @@enDesc:
523 Parses an XML document from a resource identified
524 by a <IF::LSInput>.
525 @@Param:
526 @@@Name: input
527 @@@Type: LSInput
528 @@@enDesc:
529 The <IF::LSInput> from which the source of the document
530 is to be read.
531 @@Return:
532 @@@Type: Document
533 @@@enDesc:
534 The newly created and populated <IF::Document> node.
535 @@@dx:raises:
536 @@@@@: ManakaiDOMLS|MDOMLS_BUSY
537 @@@@enDesc:
538 If the <A::LSParser.busy> is <DOM::true>.
539 @@@dx:raises:
540 @@@@@: DOMLS|PARSE_ERR
541 @@@@enDesc:
542 If the <IF::LSParser> was unable to load the document.
543 @@@PerlDef:
544 if ($self->{<H::DOMLS|busy>}) {
545 __EXCEPTION{ManakaiDOMLS|MDOMLS_BUSY}__;
546 }
547 local $self->{<H::DOMLS|busy>} = true;
548
549 my $in;
550 __DEEP{
551 $self->{parser_cfg} = $self-><AG::LSParser.domConfig>;
552 ## Parser's |domConfig| object.
553 $self->{in_in} = $self->{parser_cfg}
554 -><M::c|DOMConfiguration.getParameter>
555 (<Q::xp|ls-input-to-input-file>);
556 $in = $self->{in_in}-><M::ManakaiDOMLSInputToInputFile.resolveLSInput>
557 ($self->{<H::f|implementation>}, $input,
558 $self,
559 $self->{parser_cfg}
560 -><M::c|DOMConfiguration.getParameter>
561 ('error-handler'));
562 }__;
563 unless (defined $in) {
564 __c|ERROR{DOMLS|no-input-specified::
565 MDOMX:param-name => 'input',
566 }__;
567 __CODE{ParseError}__;
568 }
569
570 require IO::Handle;
571
572 $self->{char} = [];
573 $self->{token} = [];
574 $self->{entity} = [{
575 fh => $in-><AG::ManakaiDOMInputFile.filehandle>, ## ISSUE: Might be undef
576 base_uri => $in-><AG::ManakaiDOMInputFile.baseURI>,
577 doc_uri => $in-><AG::ManakaiDOMInputFile.documentURI>,
578 in_enc => $in-><AG::ManakaiDOMInputFile.inputEncoding>,
579 line => 1,
580 column => 1,
581 pos => 0,
582 close_file => sub { $in-><M::ManakaiDOMInputFile.close> },
583 reptxt => \'',
584 is_external_entity => true,
585 }];
586 ## Entity stack.
587 $self->{location} = $self->{entity}->[-1];
588 ## Parsing location object as required by DPG.
589 ## It must always be equal to |{entity}->[-1]|.
590 $self->{entity_char} = [];
591 ## Stack for |{char}| stacks analog to |{entity}| stack.
592 $self->{entity_token} = [];
593 ## Stack for |{token}| stacks analog to |{entity}| stack.
594 $self->{xml_version} = '1.0';
595 ## Document XML version: either |1.0| or |1.1|.
596 $self->{standalone} = false;
597 ## True iff |standalone=yes| is explicitly specified.
598 $self->{has_xref} = false;
599 ## There is an unread external entity.
600 $self->{dont_process} = false;
601 ## So, don't process |ENTITY| and |ATTLIST| declarations.
602 $self->{general_entity} = {
603 lt => {is_predefined => true},
604 gt => {is_predefined => true},
605 amp => {is_predefined => true},
606 quot => {is_predefined => true},
607 apos => {is_predefined => true},
608 };
609 ## Declared general entities.
610 $self->{param_entity} = {};
611 ## Declared parameter entities.
612 $self->{attr} = {};
613 # $self->{attr}->{$element_type_name}->{$attr_name} = $attr_def
614 ## Declared attributes.
615
616 __DEEP{
617 $r = $self->{<H::f|implementation>}-><M::DOMImpl.createDocument>;
618 $self->{doc} = $r;
619 ## |Document| object.
620 CORE::delete $self->{docx};
621 ## |DocumentXDoctype| object (if necessary).
622 $self->{doc_cfg} = $r-><AG::Document.domConfig>;
623 ## |Document|'s configuration.
624 CORE::delete $self->{dtdef};
625 ## |DocumentTypeDefinition| object (if created).
626 CORE::delete $self->{dtdecl};
627 ## |DocumentTypeDeclaration| object (if created).
628
629 $r-><AS::Document.strictErrorChecking> (false);
630 ## NOTE: Any checks such as |Name| validity done by
631 ## methods on DOM nodes are disabled. It might result
632 ## in creating an ill-formed DOM tree when parser
633 ## errors are traped by |error-handler|.
634 $self->{doc_cfg}-><M::c|DOMConfiguration.setParameter>
635 (<Q::cfg|clone-entity-reference-subtree> => true);
636 ## NOTE: Turn this configuration parameter on makes
637 ## entity reference subtrees in attribute default values
638 ## cloned as is into default attribute node subtrees.
639 $self->{doc_cfg}-><M::c|DOMConfiguration.setParameter>
640 (<Q::cfg|dtd-default-attribute> => false);
641 ## NOTE: Don't create DTD default attributes by
642 ## |createElementNS| method.
643 $self->{doc_cfg}-><M::c|DOMConfiguration.setParameter>
644 (<Q::cfg|xml-id> => $self->{parser_cfg}
645 -><M::c|DOMConfiguration.getParameter>
646 (<Q::cfg|xml-id>));
647 $self->{doc_cfg}-><M::c|DOMConfiguration.setParameter>
648 ('error-handler' => sub {
649 my (undef, $err) = @_;
650 return ($err-><AG::c|DOMError.severity> !=
651 <C::c|DOMError.SEVERITY_FATAL_ERROR>);
652 })
653 unless $Message::DOM::XMLParser::DEBUG;
654 ## NOTE: The default error handler in manakai |warn|s error
655 ## description.
656
657 ## Document entity's URI and base URI
658 $r-><AS::Document.documentURI> ($self->{entity}->[0]->{doc_uri});
659 $r-><AS::Document.manakaiEntityBaseURI>
660 ($self->{entity}->[0]->{base_uri});
661
662 ## Encoding name
663 $r-><AS::Document.inputEncoding> ($self->{entity}->[0]->{in_enc});
664
665 ## Document entity -> |Document| node
666 $self->_parse_DocumentEntity;
667
668 for (@{$self->{entity}}) {
669 $_->{close_file}->();
670 ## NOTE: There should be only the document entity.
671 }
672
673 ## Replacement tree for general |Entity| nodes
674 if ($self->{parser_cfg}-><M::c|DOMConfiguration.getParameter>
675 (<Q::cfg|entity-replacement-tree>)) {
676 my @ent = values %{$self->{general_entity}};
677 for my $ent (@ent) {
678 if (exists $ent->{has_replacement_text}) {
679 my $ent_name = $ent->{name};
680 $self->{entity} = [<Code::getCopyOfEntityState::
681 $entity_type = 'general_entity',
682 $entity_name = $ent_name>];
683 $self->{location} = $self->{entity}->[-1];
684 $self->{token} = [];
685 $self->{char} = [];
686 local $ent->{is_opened} = true;
687 ## TODO: External entity support
688 $ent->{node}-><M::Node.manakaiSetReadOnly> (false, true);
689 $self->_parse_InternalGeneralParsedEntity ($ent->{node});
690 $ent->{node}-><AS::GE.hasReplacementTree> (true);
691 $ent->{node}-><M::Node.manakaiSetReadOnly> (true, true);
692 $self->{entity}->[-1]->{close_file}->();
693 ## ISSUE: Should errors detected by this phase result
694 ## in |DOMLS:PARSE_ERR| exception thrown?
695 }
696 }
697 } # cfg|entity-replacement-tree
698
699 ## Turns flags to their default value
700 $self->{doc_cfg}-><M::c|DOMConfiguration.setParameter>
701 (<Q::cfg|clone-entity-reference-subtree> => null);
702 $self->{doc_cfg}-><M::c|DOMConfiguration.setParameter>
703 (<Q::cfg|dtd-default-attribute> => null);
704 $self->{doc_cfg}-><M::c|DOMConfiguration.setParameter>
705 (<Q::cfg|xml-id> => null);
706 $self->{doc_cfg}-><M::c|DOMConfiguration.setParameter>
707 ('error-handler' => null);
708 $r-><AS::Document.strictErrorChecking> (true);
709 }__;
710
711 @Method:
712 @@Name: shiftChar
713 @@ManakaiDOM:isForInternal:1
714 @@ForCheck: ManakaiDOM|ForClass
715 @@enDesc:
716 Returns the next character.
717 @@Return:
718 @@@Type: idl|long
719 @@@enDesc:
720 The code position number of the next character, if any,
721 or <CODE::-1>.
722 @@@PerlDef:
723 if (@{$self->{char}}) {
724 $r = shift @{$self->{char}};
725 } else {
726 GETCHAR: {
727 no warnings 'closed'; # getc() on closed filehandle warning
728 my $ent = $self->{entity}->[-1];
729 my $char = $ent->{fh}->getc;
730
731 if (defined $char and length $char) {
732 $ent->{pos}++;
733 $r = ord $char;
734 if ($r == 0x000A) {
735 $ent->{line}++;
736 $ent->{column} = 1;
737 } elsif ($r == 0x000D) {
738 my $next_char = $ent->{fh}->getc;
739 if ($next_char eq "\x0A") {
740 if ($ent->{is_external_entity}) {
741 $ent->{pos}++;
742 $ent->{line}++;
743 $ent->{column} = 1;
744 $r = 0x000A; # ^ U+000D U+000A -> U+000A ^
745 } else { # Internal entity
746 $ent->{column}++;
747 ## Line number will be increased by next |shiftChar|.
748 $ent->{fh}->ungetc (0x000A);
749 #$r = 0x000D; # ^ U+000D U+000A -> U+000D ^ U+000A
750 # no change
751 }
752 } elsif ($next_char eq "\x85") {
753 if ($self->{xml_version} eq '1.1') {
754 if ($ent->{is_external_entity}) {
755 if ($ent->{no_xml11_eol}) {
756 my $location = {
757 utf32_offset => $ent->{pos} - 1,
758 line_number => $ent->{line},
759 column_number => $ent->{column},
760 };
761 my $continue = __c|ERROR{
762 xp|fatal-xml11-end-of-line-in-xml-declaration::
763 c|location => {$location},
764 xp|character-number => {$r},
765 }__;
766 unless ($continue) {
767 __CODE{ParseError}__;
768 }
769 } # no_xml11_eol
770 $ent->{pos}++;
771 $ent->{line}++;
772 $ent->{column} = 1;
773 $r = 0x000A; # ^ U+000D U+0085 -> U+000A ^
774 } else { # internal entity
775 $ent->{column}++;
776 ## Line number will be increased by next |shiftChar|.
777 $ent->{fh}->ungetc (0x0085);
778 #$r = 0x000D; # ^ U+000D U+0085 -> U+000D ^ U+0085
779 # no change
780 }
781 } else { # XML 1.0
782 ## |no_xml11_eol| will be tested later.
783 $ent->{column}++;
784 ## Line number will be increased by next |shiftChar|.
785 $ent->{fh}->ungetc (0x0085);
786 $r = 0x000A if $ent->{is_external_entity};
787 # external: ^ U+000D U+0085 -> U+000A ^ U+0085
788 # internal: ^ U+000D U+0085 -> U+000D ^ U+0085 (as is)
789 }
790 } else { # neither U+000A nor U+0085
791 $ent->{line}++;
792 $ent->{column} = 1;
793 $ent->{fh}->ungetc (ord $next_char);
794 $r = 0x000A if $ent->{is_external_entity};
795 # external: ^ U+000D _ -> U+000A ^ _
796 # internal: ^ U+000D _ -> U+000D ^ _ (as is)
797 }
798 } elsif ($r == 0x0085 or $r == 0x2028) {
799 if ($ent->{no_xml11_eol}) {
800 my $location = {
801 utf32_offset => $ent->{pos} - 1,
802 line_number => $ent->{line},
803 column_number => $ent->{column},
804 };
805 my $continue = __c|ERROR{
806 xp|fatal-xml11-end-of-line-in-xml-declaration::
807 c|location => {$location},
808 xp|character-number => {$r},
809 }__;
810 unless ($continue) {
811 __CODE{ParseError}__;
812 }
813 } # no_xml11_eol
814 $r = 0x000A if $self->{xml_version} eq '1.1' and
815 $ent->{is_external_entity};
816 ## Even in XML 1.0 it increases the line number.
817 $ent->{line}++;
818 $ent->{column} = 1;
819 } elsif (
820 not ((0x0020 <= $r and $r <= 0x007E) or
821 (0x00A0 <= $r and $r <= 0xD7FF) or
822 (0xE000 <= $r and $r <= 0xFFFD) or
823 (0x10000 <= $r and $r <= 0x10FFFF)) and
824 $r != 0x0009 and
825 not (($self->{xml_version} eq '1.0' or
826 not $ent->{is_external_entity}) and
827 (0x007F <= $r and $r <= 0x009F)) and
828 not ($self->{xml_version} eq '1.1' and
829 not $ent->{is_external_entity} and
830 0x0001 <= $r and $r <= 0x001F)
831 ) {
832 my $location = {
833 utf32_offset => $ent->{pos} - 1,
834 line_number => $ent->{line},
835 column_number => $ent->{column},
836 };
837 my $continue = __c|ERROR{xp|wf-legal-literal-character::
838 c|location => {$location},
839 xp|character-number => {$r},
840 }__;
841 unless ($continue) {
842 __CODE{ParseError}__;
843 }
844 $ent->{column}++;
845 } else { # XML |Char|
846 $ent->{column}++;
847 }
848 } else {
849 $r = -1;
850 }
851 } # GETCHAR
852 }
853
854 @Method:
855 @@ManakaiDOM:isForInternal: 1
856 @@Operator: ManakaiDOM|MUErrorHandler
857 @@enDesc:
858 When a <IF::ecore|ErrorInterface> is <Perl::report>ed,
859 then this method is invoked.
860
861 The method calls the <cfg::DOMCore|error-handler> if the error is of
862 <IF::DOMCore|DOMError>. Otherwise, the error is re-thrown so that
863 corresponding <Perl::catch> clause, if any, can catch the error.
864 @@Param:
865 @@@Name: err
866 @@@Type: ecore|ErrorInterface
867 @@@enDesc:
868 The reported error object.
869 @@Return:
870 @@@Type: DISPerl|Any
871 @@@enDesc:
872 If the <P::err> is a <IF::DOMCore|DOMError>, then the return value
873 of the error handler.
874
875 {NOTE:: If the error is thrown, the method never returns.
876 }
877 @@@nullCase:
878 @@@@enDesc:
879 No error handler.
880 @@@PerlDef:
881 if ($err->isa (<IFName::DOMCore|DOMError>)) {
882 __DEEP{
883 A: {
884 my $cfg = $self-><AG::LSParser.domConfig>;
885 my $h = $cfg-><M::DOMCore|DOMConfiguration.getParameter>
886 ('error-handler');
887 $r = $h-><M::DOMCore|DOMErrorHandler.handleError> ($err);
888 } # A
889 }__;
890 } else {
891 $err-><M::ecore|ErrorInterface.throw>;
892 }
893
894 @DISPerl:dpgDef:
895
896 /*
897 XML Document Entity
898
899 document := prolog element *Misc
900 - *Char RestrictedChar *Char ;; [1]
901 */
902 rule DocumentEntity : standalone {
903 /*
904 prolog := XMLDecl? *Misc [doctypedecl *Misc] ;; [22]
905 */
906 ?lexmode DocumentStart;
907
908 my $doc;
909 lang:Perl {
910 $doc = $self->{doc};
911 }
912
913 ~? (XDO) {
914 ?lexmode XMLDeclarationOrPI;
915 lang:Perl {
916 $self->{entity}->[-1]->{no_xml11_eol} = true;
917 }
918 ~ (S) { // XML declaration
919 &_XMLDeclaration_ ($doc => $doc);
920 ~ (PIC2) {
921 ?lexmode DocumentProlog;
922 } else {
923 ?lexmode DocumentProlog;
924 }
925 } (NameChar) { // Processing instruction whose target begins with |xml|
926 my $target_token;
927 lang:Perl ($v => $token.value) {
928 $target_token = $token;
929 $target_token->{value} = 'xml'.$target_token->{value};
930 $self->{entity}->[-1]->{no_xml11_eol} = false;
931 }
932 ?lexmode PINmtoken;
933 ~? (Nmtoken) {
934 lang:Perl ($v => $token.value) {
935 $target_token->{value} .= $v;
936 }
937 ?lexmode PIName;
938 }
939 lang:Perl {
940 $target_token->{type} = 'Name';
941 $target_token->{location_d} += 3; # 'xml'
942 unshift @{$self->{token}}, $token;
943 $token = $target_token;
944 }
945 &_ProcessingInstruction_ ($doc => $doc, $parent => $doc);
946 ~ (PIC) {
947 ?lexmode DocumentProlog;
948 } else {
949 ?lexmode DocumentProlog;
950 }
951 } else {
952 lang:Perl {
953 $self->{entity}->[-1]->{no_xml11_eol} = false;
954 }
955 }
956 } else {
957 ?lexmode 'DocumentProlog';
958 }
959
960 // *Misc
961 ~* (CDO) {
962 &_CommentDeclaration_ ($doc => $doc, $parent => $doc);
963
964 ~ (MDC) {
965 ?lexmode DocumentProlog;
966 } else {
967 ?lexmode DocumentProlog;
968 }
969 } (PIO) {
970 &_ProcessingInstruction_ ($doc => $doc, $parent => $doc);
971
972 ~ (PIC) {
973 ?lexmode 'DocumentProlog';
974 } else {
975 ?lexmode DocumentProlog;
976 }
977 } (S) {
978 //
979 }
980
981 // doctypedecl
982 ~? (MDO) {
983 &_DocumentTypeDeclaration_ ($doc => $doc);
984
985 ~ (MDC) {
986 ?lexmode DocumentMisc;
987 } else {
988 ?lexmode DocumentMisc;
989 }
990 } else {
991 ?lexmode DocumentMisc;
992 }
993
994 lang:Perl {
995 $self->{doc}-><AS::Document.allDeclarationsProcessed> (true)
996 unless $self->{dont_process};
997 }
998
999 // *Misc
1000 ~* (CDO) {
1001 &_CommentDeclaration_ ($doc => $doc, $parent => $doc);
1002
1003 ~ (MDC) {
1004 ?lexmode DocumentMisc;
1005 } else {
1006 ?lexmode DocumentMisc;
1007 }
1008 } (PIO) {
1009 &_ProcessingInstruction_ ($doc => $doc, $parent => $doc);
1010
1011 ~ (PIC) {
1012 ?lexmode 'DocumentMisc';
1013 } else {
1014 ?lexmode DocumentMisc;
1015 }
1016 } (S) {
1017 //
1018 }
1019
1020 // Document element
1021 ~ (STAGO) {
1022 &Element_ ($doc => $doc, $parent => $doc)
1023 : unshift-current-token;
1024 ~ (TAGC) {
1025 ?lexmode DocumentEnd;
1026 } else {
1027 ?lexmode DocumentEnd;
1028 }
1029 } else {
1030 ?lexmode 'DocumentEnd';
1031 }
1032
1033 // *Misc
1034 ~* (CDO) {
1035 &_CommentDeclaration_ ($doc => $doc, $parent => $doc);
1036
1037 ~ (MDC) {
1038 ?lexmode DocumentEnd;
1039 } else {
1040 ?lexmode DocumentEnd;
1041 }
1042 } (PIO) {
1043 &_ProcessingInstruction_ ($doc => $doc, $parent => $doc);
1044 ~ (PIC) {
1045 ?lexmode 'DocumentEnd';
1046 } else {
1047 ?lexmode DocumentEnd;
1048 }
1049 } (S) {
1050 //
1051 }
1052
1053 ~ (#EOF) { }
1054 } // DocumentEntity
1055
1056 /*
1057 Internal General Parsed Entity
1058
1059 An internal general parsed entity is well-formed if its
1060 replacement text matches the production labeled |content|.
1061 */
1062 rule InternalGeneralParsedEntity ($ent) : standalone {
1063 ?lexmode ElementContent;
1064
1065 my $ns;
1066 lang:Perl {
1067 $ns = {
1068 xml => <Q::xml:>,
1069 xmlns => <Q::xmlns:>,
1070 };
1071 }
1072
1073 &content ($parent => $ent, $ns => $ns);
1074
1075 ~ (#EOF) { }
1076 } // InternalGeneralParsedEntity
1077
1078 /*
1079 XML Declaration
1080
1081 XMLDecl := '<?xml' VersionInfo
1082 [EncodingDecl]
1083 [SDDecl]
1084 [S] '?>' ;; [23]
1085
1086 NOTE: XML declaration is optional in XML 1.0
1087 while it is required in XML 1.1.
1088 */
1089 rule _XMLDeclaration_ {
1090 // ~ (XDO) { }
1091 ?lexmode XMLDeclaration;
1092 //lang:Perl {
1093 // $self->{entity}->[-1]->{no_xml11_eol} = true;
1094 //}
1095 //~ (S) { }
1096
1097 ~ (Name == 'version') {
1098 ~? (S) { }
1099 ~ (VI) { }
1100 ~? (S) { }
1101
1102 my $ver;
1103 my $bad_token;
1104
1105 ~ (LIT) {
1106 ?lexmode AttributeValueLiteral;
1107
1108 ~ (STRING) {
1109 lang:Perl ($version => $token.value) {
1110 $ver = $version;
1111 $bad_token = $token;
1112 }
1113 }
1114
1115 ~ (LIT) {
1116 ?lexmode XMLDeclaration;
1117 }
1118 } (LITA) {
1119 ?lexmode AttributeValueLiteralA;
1120
1121 ~ (STRING) {
1122 lang:Perl ($version => $token.value) {
1123 $ver = $version;
1124 $bad_token = $token;
1125 }
1126 }
1127
1128 ~ (LITA) {
1129 ?lexmode XMLDeclaration;
1130 }
1131 }
1132
1133 lang:Perl : has-error {
1134 unless ($ver eq '1.0' or $ver eq '1.1') {
1135 my $location;
1136 __CODE{xp|get-location-from-token::
1137 $token => {$bad_token},
1138 $result => {$location},
1139 }__;
1140 my $continue = __DOMCore:ERROR{xp|wf-unsupported-xml-version::
1141 DOMCore|location => {$location},
1142 xp|parent => {$self->{doc}},
1143 infoset|version => {$ver},
1144 xp|error-token => {$bad_token},
1145 }__;
1146 unless ($continue) {
1147 __CODE{ParseError}__;
1148 }
1149 $ver = '1.0';
1150 }
1151 $self->{doc}-><AS::Document.xmlVersion> ($ver);
1152 $self->{xml_version} = $ver;
1153 }
1154
1155 ~? (S) { }
1156 }
1157
1158 ~? (Name == 'encoding') {
1159 ~? (S) { }
1160 ~ (VI) { }
1161 ~? (S) { }
1162
1163 my $ver;
1164 my $bad_token;
1165
1166 ~ (LIT) {
1167 ?lexmode AttributeValueLiteral;
1168
1169 ~ (STRING) {
1170 lang:Perl ($version => $token.value) {
1171 $ver = $version;
1172 $bad_token = $token;
1173 }
1174 }
1175
1176 ~ (LIT) {
1177 ?lexmode XMLDeclaration;
1178 }
1179 } (LITA) {
1180 ?lexmode AttributeValueLiteralA;
1181
1182 ~ (STRING) {
1183 lang:Perl ($version => $token.value) {
1184 $ver = $version;
1185 $bad_token = $token;
1186 }
1187 }
1188
1189 ~ (LITA) {
1190 ?lexmode XMLDeclaration;
1191 }
1192 }
1193
1194 lang:Perl : has-error {
1195 unless ($ver =~ /\A[A-Za-z][A-Za-z0-9._-]*\z/) {
1196 my $location;
1197 __CODE{xp|get-location-from-token::
1198 $token => {$bad_token},
1199 $result => {$location},
1200 }__;
1201 my $continue = __DOMCore:ERROR{xp|wf-malformed-enc-name::
1202 DOMCore|location => {$location},
1203 xp|parent => {$self->{doc}},
1204 xp|name => {$ver},
1205 xp|error-token => {$bad_token},
1206 }__;
1207 unless ($continue) {
1208 __CODE{ParseError}__;
1209 }
1210 }
1211 $self->{doc}-><AS::Document.xmlEncoding> ($ver);
1212 }
1213
1214 ~? (S) { }
1215 }
1216
1217 ~? (Name == 'standalone') {
1218 ~? (S) { }
1219 ~ (VI) { }
1220 ~? (S) { }
1221
1222 my $ver;
1223 my $bad_token;
1224
1225 ~ (LIT) {
1226 ?lexmode AttributeValueLiteral;
1227
1228 ~ (STRING) {
1229 lang:Perl ($version => $token.value) {
1230 $ver = $version;
1231 $bad_token = $token;
1232 }
1233 }
1234
1235 ~ (LIT) {
1236 ?lexmode XMLDeclaration;
1237 }
1238 } (LITA) {
1239 ?lexmode AttributeValueLiteralA;
1240
1241 ~ (STRING) {
1242 lang:Perl ($version => $token.value) {
1243 $ver = $version;
1244 $bad_token = $token;
1245 }
1246 }
1247
1248 ~ (LITA) {
1249 ?lexmode XMLDeclaration;
1250 }
1251 }
1252
1253 lang:Perl : has-error {
1254 unless ($ver eq 'yes' or $ver eq 'no') {
1255 my $location;
1256 __CODE{xp|get-location-from-token::
1257 $token => {$bad_token},
1258 $result => {$location},
1259 }__;
1260 my $continue = __DOMCore:ERROR{xp|wf-malformed-xml-standalone::
1261 DOMCore|location => {$location},
1262 xp|parent => {$self->{doc}},
1263 xp|name => {$ver},
1264 xp|error-token => {$bad_token},
1265 }__;
1266 unless ($continue) {
1267 __CODE{ParseError}__;
1268 }
1269 }
1270 if ($ver eq 'yes') {
1271 $self->{doc}-><AS::Document.xmlStandalone> (true);
1272 $self->{standalone} = true;
1273 }
1274 }
1275
1276 ~? (S) { }
1277 }
1278
1279 ~ (PIC1) {
1280 lang:Perl {
1281 $self->{entity}->[-1]->{no_xml11_eol} = false;
1282 }
1283 } else {
1284 lang:Perl {
1285 $self->{entity}->[-1]->{no_xml11_eol} = false;
1286 }
1287 }
1288
1289 // ~ (PIC2) { }
1290 } // _XMLDeclaration_
1291
1292 /*
1293 Comment Declaration
1294
1295 Comment := '<!--' *(Char - '-' / '-' (Char - '-'))
1296 '-->' ;; [15]
1297 */
1298 rule _CommentDeclaration_ ($doc, $parent) {
1299 ?lexmode 'CommentDeclaration';
1300
1301 ~? (STRING) {
1302 lang:Perl ($data => $token.value) {
1303 my $com = $doc-><M::Document.createComment> ($data);
1304 $parent-><M::Node.appendChild> ($com);
1305 }
1306 } else {
1307 lang:Perl {
1308 my $com = $doc-><M::Document.createComment> ('');
1309 $parent-><M::Node.appendChild> ($com);
1310 }
1311 }
1312
1313 ~ (COM) {
1314 ?lexmode MarkupDeclaration;
1315 } else {
1316 ?lexmode MarkupDeclaration;
1317 }
1318
1319 // ~ (MDC) { }
1320 } // _CommentDeclaration
1321
1322 rule _CommentDeclarationDTD {
1323 ?lexmode CommentDeclaration;
1324
1325 ~? (STRING) {
1326 //
1327 }
1328
1329 ~ (COM) {
1330 ?lexmode MarkupDeclaration;
1331 } else {
1332 ?lexmode MarkupDeclaration;
1333 }
1334
1335 ~ (MDC) {
1336 ?lexmode DTD;
1337 } else {
1338 ?lexmode DTD;
1339 }
1340 } // _CommentDeclarationDTD
1341
1342 /*
1343 Processing Instruction
1344
1345 PI := '<?' PITarget [S *Char - *Char '?>' *Char]
1346 '?>' ;; [16]
1347 */
1348 rule _ProcessingInstruction_ ($doc, $parent) {
1349 ?lexmode 'PIName';
1350
1351 my $pi;
1352
1353 ~ (Name) {
1354 lang:Perl ($name => $token.value) : has-error {
1355 if (lc $name eq 'xml') {
1356 my $location;
1357 __CODE{xp|get-location-from-token::
1358 $token => {$token},
1359 $result => {$location},
1360 }__;
1361 my $continue = __DOMCore:ERROR{xp|wf-pi-target-is-xml::
1362 xp|name => {$name},
1363 DOMCore|location => {$location},
1364 xp|parent => {$parent},
1365 }__;
1366 unless ($continue) {
1367 __CODE{ParseError}__;
1368 }
1369 }
1370 __CODE{checkNCName:: $name => $name}__;
1371
1372 $pi = $doc-><M::Document.createProcessingInstruction>
1373 ($name);
1374 }
1375 } else {
1376 lang:Perl {
1377 $pi = $doc-><M::Document.createProcessingInstruction> ('#INVALID');
1378 }
1379 }
1380
1381 ~? (S) {
1382 ?lexmode 'PIData';
1383
1384 my $tdata;
1385
1386 ~? (DATA) {
1387 lang:Perl ($data => $token.value) {
1388 $tdata = $data;
1389 }
1390 } else {
1391 lang:Perl {
1392 $tdata = '';
1393 }
1394 }
1395
1396 lang:Perl {
1397 $pi-><AS::Node.nodeValue> ($tdata);
1398 }
1399 }
1400
1401 lang:Perl {
1402 $parent-><M::Node.appendChild> ($pi);
1403 }
1404
1405 // ~ (PIC) { }
1406 } // _ProcessingInstruction_
1407
1408 /*
1409 Processing instruction in DTD
1410 */
1411 rule _ProcessingInstructionDTD ($doc, $doctype) {
1412 ?lexmode 'PIName';
1413
1414 my $pi;
1415
1416 ~ (Name) {
1417 lang:Perl ($name => $token.value) : has-error {
1418 if (lc $name eq 'xml') {
1419 my $location;
1420 __CODE{xp|get-location-from-token::
1421 $token => {$token},
1422 $result => {$location},
1423 }__;
1424 my $continue = __DOMCore:ERROR{xp|wf-pi-target-is-xml::
1425 xp|name => {$name},
1426 DOMCore|location => {$location},
1427 xp|parent => {$doctype},
1428 }__;
1429 unless ($continue) {
1430 __CODE{ParseError}__;
1431 }
1432 }
1433 __CODE{checkNCName:: $name => $name}__;
1434
1435 $pi = $doc-><M::Document.createProcessingInstruction>
1436 ($name);
1437 $pi-><AS::tx|ProcessingInstruction.manakaiBaseURI>
1438 ($self->{location}->{base_uri});
1439 }
1440 } else {
1441 lang:Perl {
1442 $pi = $doc-><M::Document.createProcessingInstruction> ('#INVALID');
1443 }
1444 }
1445
1446 ~? (S) {
1447 ?lexmode 'PIData';
1448
1449 my $tdata;
1450
1451 ~? (DATA) {
1452 lang:Perl ($data => $token.value) {
1453 $tdata = $data;
1454 }
1455 } else {
1456 lang:Perl {
1457 $tdata = '';
1458 }
1459 }
1460
1461 lang:Perl {
1462 $pi-><AS::Node.nodeValue> ($tdata);
1463 }
1464 }
1465
1466 lang:Perl {
1467 $doctype-><M::Node.appendChild> ($pi);
1468 }
1469
1470 ~ (PIC) {
1471 ?lexmode DTD;
1472 } else {
1473 ?lexmode DTD;
1474 }
1475 } // _ProcessingInstructionDTD
1476
1477 /*
1478 Element content parsing mode
1479
1480 element := EmptyElemTag /
1481 STag content ETag ;; [39]
1482 content := (CharData / element / Reference / CDSect /
1483 PI / Comment) ;; [43]
1484 */
1485 rule Element_ ($doc, $parent, $ns) : standalone {
1486 ?lexmode 'ElementContent';
1487
1488 my $node; // Current "parent" node
1489 my $nodes; // Node stack (w/o $current_node)
1490 my $type; // Current "parent" element type QName
1491 my $types; // Element type stack (w/o $current_type)
1492 //my $ns; // Current in-scope namespace bindings
1493 my $nses; // Namespace binding stack (w/o $current_ns)
1494
1495 lang:Perl {
1496 $node = $parent;
1497 $nodes = [];
1498 $type = '';
1499 $types = [];
1500 $ns ||= {
1501 xml => <Q::xml:>,
1502 xmlns => <Q::xmlns:>,
1503 };
1504 $nses = [];
1505 }
1506
1507 ~* : name => CONTENT
1508 (CharData) {
1509 // Character data
1510 lang:Perl ($data => $token.value) {
1511 $node-><M::Node.manakaiAppendText> (\($data));
1512 }
1513 } (STAGO) {
1514 // Start tag or empty element tag
1515
1516 ?lexmode 'StartTag';
1517
1518 ~ (Name) {
1519 my $attrs;
1520 lang:Perl ($name => $token.value) : has-error {
1521 __CODE{checkQName:: $name => $name}__;
1522 push @{$types}, $type;
1523 $type = $name;
1524 $attrs = {};
1525 }
1526
1527 ~? (S) {
1528 &AttributeSpecificationList
1529 ($doc => $doc, $attrs => $attrs);
1530 }
1531
1532 my $el;
1533
1534 /*
1535 Note that this implementation does not perform
1536 attribute value tokenization (but does white space
1537 normalization common to attribute types) and
1538 construct the tree as is. DOM Level 3 Core spec
1539 is unclear on this point. With tokenization,
1540 entity references cannot be preserved.
1541
1542 The manakai Node.nodeValue and Attr.value attributes
1543 do tokenization according to attribute types.
1544 */
1545
1546 /*
1547 ISSUE: Should |xml:id| attribute be typed?
1548 */
1549
1550 lang:Perl {
1551 push @{$nses}, $ns;
1552 $ns = {%$ns};
1553
1554 ## Default attributes
1555 DA: for my $atqname (%{$self->{attr}->{$type}}) {
1556 next DA unless $self->{attr}->{$type}->{$atqname};
1557 next DA if exists $attrs->{$atqname}; # specified
1558 my $dtype = $self->{attr}->{$type}->{$atqname}
1559 -><AG::ATDef.defaultType>;
1560 next DA unless $dtype == <C::ATDef.EXPLICIT_DEFAULT> or
1561 $dtype == <C::ATDef.FIXED_DEFAULT>;
1562 $attrs->{$atqname} = {is_default => true, nodes => []};
1563 for (@{$self->{attr}->{$type}->{$atqname}
1564 -><AG::Node.childNodes>}) {
1565 push @{$attrs->{$atqname}->{nodes}},
1566 $_-><M::Node.cloneNode> (true);
1567 }
1568 }
1569
1570 my %gattr;
1571 my %lattr;
1572 for my $atqname (keys %$attrs) {
1573 my ($pfx, $lname) = split /:/, $atqname;
1574 $attrs->{$atqname}->{def} = $self->{attr}->{$type}->{$atqname};
1575 if (defined $lname) { ## Global attribute
1576 if ($pfx eq 'xmlns') {
1577 my $nsuri = $attrs->{$atqname}->{is_default}
1578 ? $attrs->{$atqname}->{def}-><AG::Node.nodeValue>
1579 : $attrs->{$atqname}->{value};
1580 if (not $attrs->{$atqname}->{is_default} and
1581 $attrs->{$atqname}->{def}) {
1582 my $dt = $attrs->{$atqname}->{def}-><AG::ATDef.declaredType>;
1583 if ({
1584 <C::ATDef.ID_ATTR> => true,
1585 <C::ATDef.IDREF_ATTR> => true,
1586 <C::ATDef.IDREFS_ATTR> => true,
1587 <C::ATDef.ENTITY_ATTR> => true,
1588 <C::ATDef.ENTITIES_ATTR> => true,
1589 <C::ATDef.NMTOKEN_ATTR> => true,
1590 <C::ATDef.NMTOKENS_ATTR> => true,
1591 <C::ATDef.NOTATION_ATTR> => true,
1592 <C::ATDef.ENUMERATION_ATTR> => true,
1593 }->{$dt}) {
1594 ## Tokenization (XML 1 3.3.3)
1595 for ($nsuri) {
1596 s/^\x20+//;
1597 s/\x20+\z//;
1598 s/\x20+/ /g;
1599 }
1600 }
1601 }
1602 if ($lname eq 'xml' and
1603 $nsuri ne <Q::xml:>) {
1604 my $location;
1605 __CODE{xp|get-location-from-token::
1606 $token => $token,
1607 $result => $location,
1608 }__;
1609 my $continue = __c|ERROR{xp|nsc-reserved-prefix-xml::
1610 c|location => {$location},
1611 xp|token => {$token},
1612 infoset|prefix => {$lname},
1613 infoset|namespaceName => {$nsuri},
1614 }__;
1615 unless ($continue) {
1616 __CODE{ParseError}__;
1617 }
1618 } elsif ($lname eq 'xmlns') {
1619 my $location;
1620 __CODE{xp|get-location-from-token::
1621 $token => $token,
1622 $result => $location,
1623 }__;
1624 my $continue = __c|ERROR{xp|nsc-reserved-prefix-xmlns::
1625 c|location => {$location},
1626 xp|token => {$token},
1627 infoset|prefix => {$lname},
1628 infoset|namespaceName => {$nsuri},
1629 }__;
1630 unless ($continue) {
1631 __CODE{ParseError}__;
1632 }
1633 }
1634 if ($nsuri eq '') {
1635 if ($self->{xml_version} eq '1.0') {
1636 my $location;
1637 __CODE{xp|get-location-from-token::
1638 $token => $token,
1639 $result => $location,
1640 }__;
1641 my $continue = __c|ERROR{xp|nswf-empty-namespace-name::
1642 c|location => {$location},
1643 xp|token => {$token},
1644 infoset|namespaceName => {$nsuri},
1645 infoset|prefix => {$lname},
1646 }__;
1647 unless ($continue) {
1648 __CODE{ParseError}__;
1649 }
1650 }
1651 } elsif ($nsuri eq <Q::xml:> and
1652 $lname ne 'xml') {
1653 my $location;
1654 __CODE{xp|get-location-from-token::
1655 $token => $token,
1656 $result => $location,
1657 }__;
1658 my $continue = __c|ERROR{
1659 xp|nsc-reserved-namespace-name-xml::
1660 c|location => {$location},
1661 xp|token => {$token},
1662 infoset|prefix => {$lname},
1663 infoset|namespaceName => {$nsuri},
1664 }__;
1665 unless ($continue) {
1666 __CODE{ParseError}__;
1667 }
1668 } elsif ($nsuri eq <Q::xmlns:>) {
1669 my $location;
1670 __CODE{xp|get-location-from-token::
1671 $token => $token,
1672 $result => $location,
1673 }__;
1674 my $continue = __c|ERROR{
1675 xp|nsc-reserved-namespace-name-xmlns::
1676 c|location => {$location},
1677 xp|token => {$token},
1678 infoset|prefix => {$lname},
1679 infoset|namespaceName => {$nsuri},
1680 }__;
1681 unless ($continue) {
1682 __CODE{ParseError}__;
1683 }
1684 }
1685 $ns->{$lname} = $nsuri;
1686 delete $ns->{$lname} unless length $ns->{$lname};
1687 }
1688 $gattr{$pfx}->{$lname} = $attrs->{$atqname};
1689 } else { ## Local attribute
1690 if ($pfx eq 'xmlns') {
1691 $ns->{''} = $attrs->{xmlns}->{is_default}
1692 ? $attrs->{xmlns}->{def}-><AG::Node.nodeValue>
1693 : $attrs->{xmlns}->{value};
1694 if (not $attrs->{$atqname}->{is_default} and
1695 $attrs->{$atqname}->{def}) {
1696 my $dt = $attrs->{$atqname}->{def}-><AG::ATDef.declaredType>;
1697 if ({
1698 <C::ATDef.ID_ATTR> => true,
1699 <C::ATDef.IDREF_ATTR> => true,
1700 <C::ATDef.IDREFS_ATTR> => true,
1701 <C::ATDef.ENTITY_ATTR> => true,
1702 <C::ATDef.ENTITIES_ATTR> => true,
1703 <C::ATDef.NMTOKEN_ATTR> => true,
1704 <C::ATDef.NMTOKENS_ATTR> => true,
1705 <C::ATDef.NOTATION_ATTR> => true,
1706 <C::ATDef.ENUMERATION_ATTR> => true,
1707 }->{$dt}) {
1708 ## Tokenization (XML 1 3.3.3)
1709 for ($ns->{''}) {
1710 s/^\x20+//;
1711 s/\x20+\z//;
1712 s/\x20+/ /g;
1713 }
1714 }
1715 }
1716 unless ($ns->{''}) {
1717 delete $ns->{''};
1718 } elsif ($ns->{''} eq <Q::xml:>) {
1719 my $location;
1720 __CODE{xp|get-location-from-token::
1721 $token => $token,
1722 $result => $location,
1723 }__;
1724 my $continue = __c|ERROR{
1725 xp|nsc-reserved-namespace-name-xml::
1726 c|location => {$location},
1727 xp|token => {$token},
1728 infoset|prefix => {null},
1729 infoset|namespaceName => {<Q::xml:>},
1730 }__;
1731 unless ($continue) {
1732 __CODE{ParseError}__;
1733 }
1734 } elsif ($ns->{''} eq <Q::xmlns:>) {
1735 my $location;
1736 __CODE{xp|get-location-from-token::
1737 $token => $token,
1738 $result => $location,
1739 }__;
1740 my $continue = __c|ERROR{
1741 xp|nsc-reserved-namespace-name-xmlns::
1742 c|location => {$location},
1743 xp|token => {$token},
1744 infoset|prefix => {null},
1745 infoset|namespaceName => {<Q::xmlns:>},
1746 }__;
1747 unless ($continue) {
1748 __CODE{ParseError}__;
1749 }
1750 }
1751 } else {
1752 $lattr{$pfx} = $attrs->{$atqname};
1753 }
1754 }
1755 }
1756
1757 my ($pfx, $lname) = split /:/, $type;
1758 my $nsuri;
1759 if (defined $lname) { ## Prefixed namespace
1760 if (defined $ns->{$pfx}) {
1761 $nsuri = $ns->{$pfx};
1762 } else {
1763 my $location;
1764 __CODE{xp|get-location-from-token::
1765 $token => $token,
1766 $result => $location,
1767 }__;
1768 my $continue = __c|ERROR{xp|nsc-prefix-declared::
1769 c|location => {$location},
1770 xp|token => {$token},
1771 infoset|prefix => {$pfx},
1772 xp|name => {$type},
1773 }__;
1774 unless ($continue) {
1775 __CODE{ParseError}__;
1776 }
1777 }
1778 } else { ## Default namespace
1779 $nsuri = $ns->{''};
1780 }
1781
1782 $el = $doc-><M::Document.createElementNS>
1783 ($nsuri, $type);
1784
1785 if ($attrs->{xmlns}) {
1786 my $attr = $doc-><M::Document.createAttributeNS>
1787 (<Q::xmlns:>, 'xmlns');
1788 for (@{$attrs->{xmlns}->{nodes}}) {
1789 if ($_-><AG::Node.nodeType> == <C::Node.TEXT_NODE>) {
1790 $attr-><M::Node.manakaiAppendText>
1791 (\($_-><AG::Node.textContent>));
1792 } else {
1793 $attr-><M::Node.appendChild> ($_);
1794 }
1795 }
1796 if ($attrs->{xmlns}->{def}) {
1797 $attr-><AS::Attr.manakaiAttributeType>
1798 ($attrs->{xmlns}->{def}-><AG::ATDef.declaredType>);
1799 }
1800 $el-><M::Element.setAttributeNodeNS> ($attr);
1801 $attr-><AS::Attr.specified> (false)
1802 if $attrs->{xmlns}->{is_default};
1803 }
1804
1805 for my $lname (keys %lattr) {
1806 my $attr = $doc-><M::Document.createAttributeNS>
1807 (null, $lname);
1808 for (@{$lattr{$lname}->{nodes}}) {
1809 if ($_-><AG::Node.nodeType> == <C::Node.TEXT_NODE>) {
1810 $attr-><M::Node.manakaiAppendText>
1811 (\($_-><AG::Node.textContent>));
1812 } else {
1813 $attr-><M::Node.appendChild> ($_);
1814 }
1815 }
1816 if ($attrs->{$lname}->{def}) {
1817 $attr-><AS::Attr.manakaiAttributeType>
1818 ($attrs->{$lname}->{def}-><AG::ATDef.declaredType>);
1819 }
1820 $el-><M::Element.setAttributeNodeNS> ($attr);
1821 $attr-><AS::Attr.specified> (false)
1822 if $attrs->{$lname}->{is_default};
1823 }
1824
1825 for my $pfx (keys %gattr) {
1826 LN: for my $lname (keys %{$gattr{$pfx}}) {
1827 my $name = $pfx.':'.$lname;
1828 unless (defined $ns->{$pfx}) {
1829 my $location;
1830 __CODE{xp|get-location-from-token::
1831 $token => $token,
1832 $result => $location,
1833 }__;
1834 my $continue = __c|ERROR{xp|nsc-prefix-declared::
1835 c|location => {$location},
1836 xp|token => {$token},
1837 xp|name => {$name},
1838 infoset|prefix => {$pfx},
1839 }__;
1840 unless ($continue) {
1841 __CODE{ParseError}__;
1842 }
1843 }
1844 my $attr = $el-><M::Element.getAttributeNodeNS>
1845 ($ns->{$pfx}, $lname);
1846 if ($attr) {
1847 my $another_name = $attr-><AG::Node.nodeName>;
1848 if ($name ne $another_name) {
1849 my $location;
1850 __CODE{xp|get-location-from-token::
1851 $token => $token,
1852 $result => $location,
1853 }__;
1854 my $continue = __c|ERROR{
1855 xp|nswf-unique-att-spec-expanded-name::
1856 c|location => {$location},
1857 xp|token => {$token},
1858 xp|another-attribute-name => {$another_name},
1859 xp|name => {$name},
1860 infoset|namespaceName => {$ns->{$pfx}},
1861 infoset|localName => {$lname},
1862 }__;
1863 unless ($continue) {
1864 __CODE{ParseError}__;
1865 }
1866 unless ($attr-><AG::Attr.specified>) {
1867 ## It is a default attribute
1868 $attr = $doc-><M::Document.createAttributeNS>
1869 ($ns->{$pfx}, $name);
1870 } else {
1871 ## It is a specified attribute
1872 next LN;
1873 }
1874 } else { ## There is default attribute
1875 $attr = $doc-><M::Document.createAttributeNS>
1876 ($ns->{$pfx}, $name);
1877 }
1878 } else {
1879 $attr = $doc-><M::Document.createAttributeNS>
1880 ($ns->{$pfx}, $name);
1881 }
1882 for (@{$gattr{$pfx}->{$lname}->{nodes}}) {
1883 if ($_-><AG::Node.nodeType> == <C::Node.TEXT_NODE>) {
1884 $attr-><M::Node.manakaiAppendText>
1885 (\($_-><AG::Node.textContent>));
1886 } else {
1887 $attr-><M::Node.appendChild> ($_);
1888 }
1889 }
1890 if ($gattr{$pfx}->{$lname}->{def}) {
1891 $attr-><AS::Attr.manakaiAttributeType>
1892 ($gattr{$pfx}->{$lname}->{def}
1893 -><AG::ATDef.declaredType>);
1894 }
1895 $el-><M::Element.setAttributeNodeNS> ($attr);
1896 $attr-><AS::Attr.specified> (false)
1897 if $gattr{$pfx}->{$lname}->{is_default};
1898 } # PFX
1899 }
1900
1901 $node-><M::Node.appendChild> ($el);
1902 }
1903
1904 ~ (TAGC) {
1905 lang:Perl {
1906 push @{$nodes}, $node;
1907 $node = $el;
1908 }
1909 ?lexmode ElementContent;
1910 } (NESTC) {
1911 my $is_docel;
1912 lang:Perl {
1913 $ns = pop @{$nses};
1914 $type = pop @{$types};
1915 $is_docel = (@{$types} == 0);
1916 }
1917
1918 if-true ($is_docel) {
1919 return;
1920 }
1921
1922 ~ (TAGC) {
1923 ?lexmode ElementContent;
1924 } else {
1925 ?lexmode ElementContent;
1926 }
1927 } else {
1928 ?lexmode ElementContent;
1929 }
1930 } else {
1931 ?lexmode ElementContent;
1932 }
1933
1934 } (ETAGO) {
1935 // End tag
1936
1937 ?lexmode 'EndTag';
1938
1939 my $is_docel;
1940
1941 ~ (Name) {
1942 // No NCName & QName check (it must match to start-tag)
1943 lang:Perl ($name => $token.value) : has-error {
1944 if ($name eq $type) {
1945 $type = pop @{$types};
1946 if ($type eq '') {
1947 $is_docel = true;
1948 }
1949 $node = pop @{$nodes};
1950 $ns = pop @{$nses};
1951 } else {
1952 my $location;
1953 __CODE{xp|get-location-from-token::
1954 $token => $token,
1955 $result => $location,
1956 }__;
1957 my $continue = __DOMCore:ERROR{xp|wf-element-type-match::
1958 DOMCore:location => {$location},
1959 xp|token => {$token},
1960 xp|expected-element-type => {$type},
1961 xp|actual-element-type => {$name},
1962 xp|node => {$node},
1963 }__;
1964 unless ($continue) {
1965 __CODE{ParseError}__;
1966 }
1967 }
1968 }
1969 }
1970
1971 ~? (S) { }
1972
1973 if-true ($is_docel) {
1974 lang:Perl : has-error {
1975 if (@{$types}) {
1976 my $location;
1977 __CODE{xp|get-location-from-token::
1978 $token => $token,
1979 $result => $location,
1980 }__;
1981 for my $type (reverse @{$types}) {
1982 my $continue = __DOMCore:ERROR{xp|wf-no-end-tag::
1983 DOMCore:location => {$location},
1984 xp|token => {$token},
1985 xp|expected-element-type => {$type},
1986 xp|node => {$node},
1987 }__;
1988 unless ($continue) {
1989 __CODE{ParseError}__;
1990 }
1991 $node = shift @{$nodes};
1992 }
1993 }
1994 }
1995 return;
1996 }
1997
1998 ~ (TAGC) {
1999 ?lexmode ElementContent;
2000 } else {
2001 ?lexmode 'ElementContent';
2002 }
2003
2004 } (HCRO) {
2005 &_HexadecimalCharacterReference_
2006 ($doc => $doc, $parent => $node);
2007
2008 ~ (REFC) {
2009 ?lexmode 'ElementContent';
2010 } else {
2011 ?lexmode ElementContent;
2012 }
2013 } (CRO) {
2014 &_NumericCharacterReference_
2015 ($doc => $doc, $parent => $node);
2016
2017 ~ (REFC) {
2018 ?lexmode 'ElementContent';
2019 } else {
2020 ?lexmode ElementContent;
2021 }
2022 } (ERO) {
2023 &_GeneralEntityReferenceEC
2024 ($doc => $doc, $parent => $node, $ns => $ns);
2025 } (CDO) {
2026 &_CommentDeclaration_ ($doc => $doc, $parent => $node);
2027
2028 ~ (MDC) {
2029 ?lexmode ElementContent;
2030 } else {
2031 ?lexmode ElementContent;
2032 }
2033 } (CDSO) {
2034 &_CDATASection_ ($doc => $doc, $parent => $node);
2035
2036 ~ (MSE) {
2037 ?lexmode 'ElementContent';
2038 } else {
2039 ?lexmode ElementContent;
2040 }
2041 } (PIO) {
2042 &_ProcessingInstruction_ ($doc => $doc, $parent => $node);
2043
2044 ~ (PIC) {
2045 ?lexmode 'ElementContent';
2046 } else {
2047 ?lexmode ElementContent;
2048 }
2049 }
2050
2051 ~ (#NONE) { }
2052 } // Element_
2053
2054 /*
2055 content := [CharData]
2056 *((element / Reference / CDSect / PI / Comment) [CharData])
2057 */
2058 rule content ($parent, $ns) {
2059 // ?lexmode ElementContent;
2060
2061 my $doc;
2062 lang:Perl {
2063 $doc = $self->{doc};
2064 }
2065
2066 ~* (CharData) {
2067 lang:Perl ($data => $token.value) {
2068 $parent-><M::Node.manakaiAppendText> (\($data));
2069 }
2070 } (STAGO) {
2071 &Element_ ($doc => $doc, $parent => $parent, $ns => $ns)
2072 : unshift-current-token;
2073 ~ (TAGC) {
2074 ?lexmode ElementContent;
2075 } else {
2076 ?lexmode ElementContent;
2077 }
2078 } (HCRO) {
2079 &_HexadecimalCharacterReference_ ($parent => $parent);
2080
2081 ~ (REFC) {
2082 ?lexmode 'ElementContent';
2083 } else {
2084 ?lexmode ElementContent;
2085 }
2086 } (CRO) {
2087 &_NumericCharacterReference_ ($parent => $parent);
2088
2089 ~ (REFC) {
2090 ?lexmode 'ElementContent';
2091 } else {
2092 ?lexmode ElementContent;
2093 }
2094 } (ERO) {
2095 &_GeneralEntityReferenceEC
2096 ($doc => $doc, $parent => $parent, $ns => $ns);
2097 } (CDO) {
2098 &_CommentDeclaration_ ($doc => $doc, $parent => $parent);
2099
2100 ~ (MDC) {
2101 ?lexmode ElementContent;
2102 } else {
2103 ?lexmode ElementContent;
2104 }
2105 } (CDSO) {
2106 &_CDATASection_ ($doc => $doc, $parent => $parent);
2107
2108 ~ (MSE) {
2109 ?lexmode 'ElementContent';
2110 } else {
2111 ?lexmode ElementContent;
2112 }
2113 } (PIO) {
2114 &_ProcessingInstruction_ ($doc => $doc, $parent => $parent);
2115
2116 ~ (PIC) {
2117 ?lexmode 'ElementContent';
2118 } else {
2119 ?lexmode ElementContent;
2120 }
2121 }
2122 } // content
2123
2124 rule AttributeSpecificationList ($doc, $attrs)
2125 : standalone
2126 {
2127 ?lexmode 'StartTag';
2128
2129 my $i;
2130 lang:Perl {
2131 $i = 0;
2132 }
2133
2134 ~* (Name) {
2135 my $atqname;
2136 lang:Perl ($name => $token.value) : has-error {
2137 __CODE{checkQName:: $name => $name}__;
2138 $atqname = $name;
2139 }
2140
2141 my $vals;
2142 lang:Perl : has-error {
2143 if ($attrs->{$atqname}) {
2144 my $location;
2145 __CODE{xp|get-location-from-token::
2146 $token => $token,
2147 $result => $location,
2148 }__;
2149 my $continue = __DOMCore:ERROR{xp|wf-unique-att-spec::
2150 DOMCore:location => {$location},
2151 xp|token => {$token},
2152 xp|name => {$atqname},
2153 }__;
2154 unless ($continue) {
2155 __CODE{ParseError}__;
2156 }
2157 }
2158
2159 $vals = $attrs->{$atqname} = {
2160 nodes => [],
2161 value => '',
2162 index => $i++,
2163 };
2164 }
2165
2166 ~? (S) { }
2167 ~ (VI) { }
2168 ~? (S) { }
2169
2170 ~ (LIT) {
2171 &_AttributeValueSpecification_
2172 ($doc => $doc, $vals => $vals);
2173
2174 ~ (LIT) {
2175 ?lexmode StartTag;
2176 } else {
2177 ?lexmode StartTag;
2178 }
2179 } (LITA) {
2180 &_AttributeValueSpecificationA_
2181 ($doc => $doc, $vals => $vals);
2182
2183 ~ (LITA) {
2184 ?lexmode StartTag;
2185 } else {
2186 ?lexmode StartTag;
2187 }
2188 }
2189 } (S) : separator : terminator? { }
2190 } // AttributeSpecificationList
2191
2192 rule _AttributeValueSpecification_ ($doc, $vals) {
2193 // ~ (LIT) { }
2194 ?lexmode 'AttributeValueLiteral';
2195
2196 ~* (STRING) {
2197 lang:Perl ($value => $token.value) {
2198 $value =~ s/[\x09\x0A\x0D]/ /g;
2199 my $text = $doc-><M::Document.createTextNode> ($value);
2200 push @{$vals->{nodes}}, $text;
2201 $vals->{value} .= $value;
2202 }
2203 } (HCRO) {
2204 &_HexadecimalCharacterReferenceV_
2205 ($doc => $doc, $vals => $vals);
2206
2207 ~ (REFC) {
2208 ?lexmode AttributeValueLiteral;
2209 } else {
2210 ?lexmode AttributeValueLiteral;
2211 }
2212 } (CRO) {
2213 &_NumericCharacterReferenceV_
2214 ($doc => $doc, $vals => $vals);
2215
2216 ~ (REFC) {
2217 ?lexmode AttributeValueLiteral;
2218 } else {
2219 ?lexmode AttributeValueLiteral;
2220 }
2221 } (ERO) {
2222 // TODO: Attribute value normalization
2223 &_GeneralEntityReferenceV_
2224 ($doc => $doc, $vals => $vals);
2225
2226 ~ (REFC) {
2227 ?lexmode AttributeValueLiteral;
2228 } else {
2229 ?lexmode AttributeValueLiteral;
2230 }
2231 }
2232
2233 // ~ (LIT) { } (LITA) { }
2234 } // _AttributeValueSpecification_
2235
2236 rule _AttributeValueSpecificationA_ ($doc, $vals) {
2237 // ~ (LITA) { }
2238 ?lexmode 'AttributeValueLiteralA';
2239
2240 ~* (STRING) {
2241 lang:Perl ($value => $token.value) {
2242 $value =~ s/[\x09\x0A\x0D]/ /g;
2243 my $text = $doc-><M::Document.createTextNode> ($value);
2244 push @{$vals->{nodes}}, $text;
2245 $vals->{value} .= $value;
2246 }
2247 } (HCRO) {
2248 &_HexadecimalCharacterReferenceV_
2249 ($doc => $doc, $vals => $vals);
2250
2251 ~ (REFC) {
2252 ?lexmode AttributeValueLiteralA;
2253 } else {
2254 ?lexmode AttributeValueLiteralA;
2255 }
2256 } (CRO) {
2257 &_NumericCharacterReferenceV_
2258 ($doc => $doc, $vals => $vals);
2259
2260 ~ (REFC) {
2261 ?lexmode AttributeValueLiteralA;
2262 } else {
2263 ?lexmode AttributeValueLiteralA;
2264 }
2265 } (ERO) {
2266 // TODO: Attribute value normalization
2267 &_GeneralEntityReferenceV_
2268 ($doc => $doc, $vals => $vals);
2269
2270 ~ (REFC) {
2271 ?lexmode AttributeValueLiteralA;
2272 } else {
2273 ?lexmode AttributeValueLiteralA;
2274 }
2275 }
2276
2277 // ~ (LITA) { }
2278 } // _AttributeValueSpecificationA_
2279
2280 /*
2281 Parsing replacement text of an entity referenced in
2282 an attribute value specification.
2283 */
2284 rule AttributeValueLiteralE_ ($parent, $vals)
2285 : recursive
2286 {
2287 // ?lexmode AttributeValueLiteralE;
2288
2289 ~* (STRING) {
2290 lang:Perl ($value => $token.value) {
2291 $value =~ s/[\x09\x0A\x0D]/ /g;
2292 $parent-><M::Node.manakaiAppendText> (\($value));
2293 $vals->{value} .= $value;
2294 }
2295 } (HCRO) {
2296 &_HexadecimalCharacterReferenceAE_
2297 ($parent => $parent, $vals => $vals);
2298
2299 ~ (REFC) {
2300 ?lexmode AttributeValueLiteralE;
2301 } else {
2302 ?lexmode AttributeValueLiteralE;
2303 }
2304 } (CRO) {
2305 &_NumericCharacterReferenceAE_
2306 ($parent => $parent, $vals => $vals);
2307
2308 ~ (REFC) {
2309 ?lexmode AttributeValueLiteralE;
2310 } else {
2311 ?lexmode AttributeValueLiteralE;
2312 }
2313 } (ERO) {
2314 &_GeneralEntityReferenceAE_ ($parent => $parent, $vals => $vals);
2315
2316 ~ (REFC) {
2317 ?lexmode AttributeValueLiteralE;
2318 } else {
2319 ?lexmode AttributeValueLiteralE;
2320 }
2321 } (#INVALID == '<') {
2322 lang:Perl : has-error {
2323 my $location;
2324 __CODE{xp|get-location-from-token::
2325 $token => $token,
2326 $result => $location,
2327 }__;
2328 my $continue = __DOMCore:ERROR{xp|wf-no-lt-in-attribute-values::
2329 c|location => {$location},
2330 xp|token => {$token},
2331 }__;
2332 unless ($continue) {
2333 __CODE{ParseError}__;
2334 }
2335
2336 $parent-><M::Node.manakaiAppendText> ('<');
2337 $vals->{value} .= '<';
2338 }
2339 }
2340
2341 // ~ (#EOF) { }
2342 } // AttributeValueLiteralE_
2343
2344 /*
2345 CDATA Section Content Parsing Mode
2346 */
2347 rule _CDATASection_ ($doc, $parent) {
2348 ?lexmode 'CDATASectionContent';
2349
2350 my $cdata;
2351
2352 ~? (CData) {
2353 lang:Perl ($data => $token.value) {
2354 $cdata = $data;
2355 }
2356 } else {
2357 lang:Perl {
2358 $cdata = '';
2359 }
2360 }
2361
2362 lang:Perl {
2363 my $cdsect = $doc-><M::Document.createCDATASection>
2364 ($cdata);
2365 $parent-><M::Node.appendChild> ($cdsect);
2366 }
2367
2368 // ~ (MSE) { }
2369 } // _CDATASection_
2370
2371 rule _NumericCharacterReference_ ($parent) {
2372 ?lexmode 'NumericCharacterReference';
2373
2374 ~ (NUMBER) {
2375 lang:Perl ($num => $token.value) : has-error {
2376 $num += 0;
2377 unless (
2378 ($self->{xml_version} eq '1.0' and
2379 ((0x0020 <= $num and $num <= 0xD7FF) or
2380 (0xE000 <= $num and $num <= 0xFFFD) or
2381 (0x10000 <= $num and $num <= 0x10FFFF) or
2382 $num == 0x9 or $num == 0xA or $num == 0xD)) or
2383 ($self->{xml_version} eq '1.1' and
2384 ((0x0001 <= $num and $num <= 0xD7FF) or
2385 (0xE000 <= $num and $num <= 0xFFFD) or
2386 (0x10000 <= $num and $num <= 0x10FFFF)))
2387 ) {
2388 my $location;
2389 __CODE{xp|get-location-from-token::
2390 $token => $token,
2391 $result => $location,
2392 }__;
2393 my $continue = __DOMCore:ERROR{xp|wf-legal-character::
2394 DOMCore:location => {$location},
2395 xp|token => {$token},
2396 xp|character-number => {$num},
2397 xp|parent => {$parent},
2398 }__;
2399 unless ($continue) {
2400 __CODE{ParseError}__;
2401 }
2402 }
2403 $parent-><M::Node.manakaiAppendText> (chr $num);
2404 }
2405 }
2406
2407 // ~ (REFC) { }
2408 } // _NumericCharacterReference_
2409
2410 rule _NumericCharacterReferenceV_ ($doc, $vals) {
2411 ?lexmode 'NumericCharacterReference';
2412
2413 ~ (NUMBER) {
2414 lang:Perl ($num => $token.value) : has-error {
2415 $num += 0;
2416 unless (
2417 ($self->{xml_version} eq '1.0' and
2418 ((0x0020 <= $num and $num <= 0xD7FF) or
2419 (0xE000 <= $num and $num <= 0xFFFD) or
2420 (0x10000 <= $num and $num <= 0x10FFFF) or
2421 $num == 0x9 or $num == 0xA or $num == 0xD)) or
2422 ($self->{xml_version} eq '1.1' and
2423 ((0x0001 <= $num and $num <= 0xD7FF) or
2424 (0xE000 <= $num and $num <= 0xFFFD) or
2425 (0x10000 <= $num and $num <= 0x10FFFF)))
2426 ) {
2427 my $location;
2428 __CODE{xp|get-location-from-token::
2429 $token => $token,
2430 $result => $location,
2431 }__;
2432 my $continue = __DOMCore:ERROR{xp|wf-legal-character::
2433 DOMCore:location => {$location},
2434 xp|token => {$token},
2435 xp|character-number => {$num},
2436 }__;
2437 unless ($continue) {
2438 __CODE{ParseError}__;
2439 }
2440 }
2441 my $ncr = $doc-><M::Document.createTextNode>
2442 (my $char = chr $num);
2443 push @{$vals->{nodes}}, $ncr;
2444 $vals->{value} .= $char;
2445 }
2446 }
2447
2448 // ~ (REFC) { }
2449 } // _NumericCharacterReferenceV_
2450
2451 /*
2452 Numeric character reference in the replacement text
2453 of the entity referenced in an attribute value specification
2454 */
2455 rule _NumericCharacterReferenceAE_ ($parent, $vals)
2456 {
2457 ?lexmode NumericCharacterReference;
2458
2459 ~ (NUMBER) {
2460 lang:Perl ($num => $token.value) : has-error {
2461 $num += 0;
2462 unless (
2463 ($self->{xml_version} eq '1.0' and
2464 ((0x0020 <= $num and $num <= 0xD7FF) or
2465 (0xE000 <= $num and $num <= 0xFFFD) or
2466 (0x10000 <= $num and $num <= 0x10FFFF) or
2467 $num == 0x9 or $num == 0xA or $num == 0xD)) or
2468 ($self->{xml_version} eq '1.1' and
2469 ((0x0001 <= $num and $num <= 0xD7FF) or
2470 (0xE000 <= $num and $num <= 0xFFFD) or
2471 (0x10000 <= $num and $num <= 0x10FFFF)))
2472 ) {
2473 my $location;
2474 __CODE{xp|get-location-from-token::
2475 $token => $token,
2476 $result => $location,
2477 }__;
2478 my $continue = __DOMCore:ERROR{xp|wf-legal-character::
2479 DOMCore:location => {$location},
2480 xp|token => {$token},
2481 xp|character-number => {$num},
2482 }__;
2483 unless ($continue) {
2484 __CODE{ParseError}__;
2485 }
2486 }
2487 my $char = chr $num;
2488 $parent-><M::Node.manakaiAppendText> (\$char);
2489 $vals->{value} .= $char;
2490 }
2491 }
2492
2493 // ~ (REFC) { }
2494 } // _NumericCharacterReferenceAE_
2495
2496 rule _NumericCharacterReferenceEV_ ($vals)
2497 {
2498 ?lexmode 'NumericCharacterReference';
2499
2500 ~ (NUMBER) {
2501 lang:Perl ($num => $token.value) : has-error {
2502 $num += 0;
2503 unless (
2504 ($self->{xml_version} eq '1.0' and
2505 ((0x0020 <= $num and $num <= 0xD7FF) or
2506 (0xE000 <= $num and $num <= 0xFFFD) or
2507 (0x10000 <= $num and $num <= 0x10FFFF) or
2508 $num == 0x9 or $num == 0xA or $num == 0xD)) or
2509 ($self->{xml_version} eq '1.1' and
2510 ((0x0001 <= $num and $num <= 0xD7FF) or
2511 (0xE000 <= $num and $num <= 0xFFFD) or
2512 (0x10000 <= $num and $num <= 0x10FFFF)))
2513 ) {
2514 my $location;
2515 __CODE{xp|get-location-from-token::
2516 $token => $token,
2517 $result => $location,
2518 }__;
2519 my $continue = __DOMCore:ERROR{xp|wf-legal-character::
2520 DOMCore:location => {$location},
2521 xp|token => {$token},
2522 xp|character-number => {$num},
2523 }__;
2524 unless ($continue) {
2525 __CODE{ParseError}__;
2526 }
2527 }
2528 push @{$vals}, chr $num;
2529 }
2530 }
2531
2532 // ~ (REFC) { }
2533 } // _NumericCharacterReferenceEV_
2534
2535 rule _HexadecimalCharacterReference_ ($parent) {
2536 ?lexmode 'HexadecimalCharacterReference';
2537
2538 ~ (Hex) {
2539 lang:Perl ($v => $token.value) : has-error {
2540 my $num = hex $v;
2541 unless (
2542 ($self->{xml_version} eq '1.0' and
2543 ((0x0020 <= $num and $num <= 0xD7FF) or
2544 (0xE000 <= $num and $num <= 0xFFFD) or
2545 (0x10000 <= $num and $num <= 0x10FFFF) or
2546 $num == 0x9 or $num == 0xA or $num == 0xD)) or
2547 ($self->{xml_version} eq '1.1' and
2548 ((0x0001 <= $num and $num <= 0xD7FF) or
2549 (0xE000 <= $num and $num <= 0xFFFD) or
2550 (0x10000 <= $num and $num <= 0x10FFFF)))
2551 ) {
2552 my $location;
2553 __CODE{xp|get-location-from-token::
2554 $token => $token,
2555 $result => $location,
2556 }__;
2557 my $continue = __DOMCore:ERROR{xp|wf-legal-character::
2558 DOMCore:location => {$location},
2559 xp|token => {$token},
2560 xp|character-number => {$num},
2561 xp|parent => {$parent},
2562 }__;
2563 unless ($continue) {
2564 __CODE{ParseError}__;
2565 }
2566 }
2567 $parent-><M::Node.manakaiAppendText> (chr $num);
2568 }
2569 }
2570
2571 // ~ (REFC) { }
2572 } // _HexadecimalCharacterReference_
2573
2574 rule _HexadecimalCharacterReferenceV_ ($doc, $vals) {
2575 ?lexmode 'HexadecimalCharacterReference';
2576
2577 ~ (Hex) {
2578 lang:Perl ($v => $token.value) : has-error {
2579 my $num = hex $v;
2580 unless (
2581 ($self->{xml_version} eq '1.0' and
2582 ((0x0020 <= $num and $num <= 0xD7FF) or
2583 (0xE000 <= $num and $num <= 0xFFFD) or
2584 (0x10000 <= $num and $num <= 0x10FFFF) or
2585 $num == 0x9 or $num == 0xA or $num == 0xD)) or
2586 ($self->{xml_version} eq '1.1' and
2587 ((0x0001 <= $num and $num <= 0xD7FF) or
2588 (0xE000 <= $num and $num <= 0xFFFD) or
2589 (0x10000 <= $num and $num <= 0x10FFFF)))
2590 ) {
2591 my $location;
2592 __CODE{xp|get-location-from-token::
2593 $token => $token,
2594 $result => $location,
2595 }__;
2596 my $continue = __DOMCore:ERROR{xp|wf-legal-character::
2597 DOMCore:location => {$location},
2598 xp|token => {$token},
2599 xp|character-number => {$num},
2600 }__;
2601 unless ($continue) {
2602 __CODE{ParseError}__;
2603 }
2604 }
2605 my $ncr = $doc-><M::Document.createTextNode>
2606 (my $char = chr $num);
2607 push @{$vals->{nodes}}, $ncr;
2608 $vals->{value} .= $char;
2609 }
2610 }
2611
2612 // ~ (REFC) { }
2613 } // _HexadecimalCharacterReferenceV_
2614
2615 /*
2616 Hexadecimal character reference in the replacement text
2617 of the entity referenced in an attribute value literal
2618 */
2619 rule _HexadecimalCharacterReferenceAE_ ($parent, $vals)
2620 {
2621 ?lexmode HexadecimalCharacterReference;
2622
2623 ~ (Hex) {
2624 lang:Perl ($v => $token.value) : has-error {
2625 my $num = hex $v;
2626 unless (
2627 ($self->{xml_version} eq '1.0' and
2628 ((0x0020 <= $num and $num <= 0xD7FF) or
2629 (0xE000 <= $num and $num <= 0xFFFD) or
2630 (0x10000 <= $num and $num <= 0x10FFFF) or
2631 $num == 0x9 or $num == 0xA or $num == 0xD)) or
2632 ($self->{xml_version} eq '1.1' and
2633 ((0x0001 <= $num and $num <= 0xD7FF) or
2634 (0xE000 <= $num and $num <= 0xFFFD) or
2635 (0x10000 <= $num and $num <= 0x10FFFF)))
2636 ) {
2637 my $location;
2638 __CODE{xp|get-location-from-token::
2639 $token => $token,
2640 $result => $location,
2641 }__;
2642 my $continue = __DOMCore:ERROR{xp|wf-legal-character::
2643 DOMCore:location => {$location},
2644 xp|token => {$token},
2645 xp|character-number => {$num},
2646 }__;
2647 unless ($continue) {
2648 __CODE{ParseError}__;
2649 }
2650 }
2651 my $char = chr $num;
2652 $parent-><M::Node.manakaiAppendText> (\$char);
2653 $vals->{value} .= $char;
2654 }
2655 }
2656
2657 // ~ (REFC) { }
2658 } // _HexadecimalCharacterReferenceAE_
2659
2660 rule _HexadecimalCharacterReferenceEV_ ($vals) {
2661 ?lexmode HexadecimalCharacterReference;
2662
2663 ~ (Hex) {
2664 lang:Perl ($v => $token.value) : has-error {
2665 my $num = hex $v;
2666 unless (
2667 ($self->{xml_version} eq '1.0' and
2668 ((0x0020 <= $num and $num <= 0xD7FF) or
2669 (0xE000 <= $num and $num <= 0xFFFD) or
2670 (0x10000 <= $num and $num <= 0x10FFFF) or
2671 $num == 0x9 or $num == 0xA or $num == 0xD)) or
2672 ($self->{xml_version} eq '1.1' and
2673 ((0x0001 <= $num and $num <= 0xD7FF) or
2674 (0xE000 <= $num and $num <= 0xFFFD) or
2675 (0x10000 <= $num and $num <= 0x10FFFF)))
2676 ) {
2677 my $location;
2678 __CODE{xp|get-location-from-token::
2679 $token => $token,
2680 $result => $location,
2681 }__;
2682 my $continue = __DOMCore:ERROR{xp|wf-legal-character::
2683 DOMCore:location => {$location},
2684 xp|token => {$token},
2685 xp|character-number => {$num},
2686 }__;
2687 unless ($continue) {
2688 __CODE{ParseError}__;
2689 }
2690 }
2691 push @{$vals}, chr $num;
2692 }
2693 }
2694
2695 // ~ (REFC) { }
2696 } // _HexadecimalCharacterReferenceEV_
2697
2698 /*
2699 General entity reference in element's content
2700 */
2701 rule _GeneralEntityReferenceEC ($doc, $parent, $ns)
2702 : recursive
2703 {
2704 ?lexmode 'EntityReference';
2705
2706 ~ (Name == 'lt') {
2707 lang:Perl {
2708 $parent-><M::Node.manakaiAppendText> ('<');
2709 }
2710 } (Name == 'gt') {
2711 lang:Perl {
2712 $parent-><M::Node.manakaiAppendText> ('>');
2713 }
2714 } (Name == 'amp') {
2715 lang:Perl {
2716 $parent-><M::Node.manakaiAppendText> ('&');
2717 }
2718 } (Name == 'quot') {
2719 lang:Perl {
2720 $parent-><M::Node.manakaiAppendText> ('"');
2721 }
2722 } (Name == 'apos') {
2723 lang:Perl {
2724 $parent-><M::Node.manakaiAppendText> ("'");
2725 }
2726 } (Name) {
2727 my $er;
2728 lang:Perl ($name => $token.value) : has-error {
2729 __CODE{checkNCName:: $name => $name}__;
2730
2731 $er = $doc-><M::Document.createEntityReference>
2732 ($name);
2733 $er-><M::Node.manakaiSetReadOnly> (false, true);
2734 $er-><AS::Node.textContent> ('');
2735 ## NOTE: When document entity (and entities referenced directly
2736 ## or indirectly from it) is parsed, no general entity
2737 ## node have its replacement tree. During general
2738 ## entity node collection construction, however,
2739 ## some entity node has replacement tree.
2740 $parent-><M::Node.appendChild> ($er);
2741
2742 my $ent = $self->{general_entity}->{$name};
2743 if (not $ent) { # no entity declaration
2744 if ($self->{standalone} or not $self->{has_xref}) { # WFC error
2745 my $location;
2746 __CODE{xp|get-location-from-token::
2747 $token => {$token},
2748 $result => {$location},
2749 }__;
2750 my $continue = __DOMCore:ERROR{xp|wf-entity-declared::
2751 xp|error-token => {$token},
2752 c|location => {$location},
2753 xp|name => {$name},
2754 }__;
2755 unless ($continue) {
2756 __CODE{ParseError}__;
2757 }
2758 } # Otherwise VC error
2759 push @{$self->{entity}}, <Code::getEmptyEntityState::
2760 $name = $name>;
2761 $er-><AS::GERef.manakaiExpanded> (false);
2762
2763 } else { # there IS entity declaration
2764 if (($self->{standalone} or not $self->{has_xref}) and
2765 $ent->{is_externally_declared} and
2766 not $self->{entity}->[-1]->{is_externally_declared}) {
2767 my $location;
2768 __CODE{xp|get-location-from-token::
2769 $token => {$token},
2770 $result => {$location},
2771 }__;
2772 my $continue = __DOMCore:ERROR{xp|wf-entity-declared::
2773 xp|error-token => {$token},
2774 c|location => {$location},
2775 xp|name => {$name},
2776 }__;
2777 unless ($continue) {
2778 __CODE{ParseError}__;
2779 }
2780 }
2781 $er-><AS::GERef.manakaiExpanded>
2782 ($ent->{has_replacement_text});
2783 push @{$self->{entity}}, <Code::getCopyOfEntityState::
2784 $entity_type = 'general_entity',
2785 $entity_name = $name>;
2786
2787 if (defined $ent->{notation}) {
2788 my $location;
2789 __CODE{xp|get-location-from-token::
2790 $token => {$token},
2791 $result => {$location},
2792 }__;
2793 my $continue = __c|ERROR{xp|wf-parsed-entity::
2794 xp|error-token => {$token},
2795 c|location => {$location},
2796 xp|name => {$name},
2797 }__;
2798 unless ($continue) {
2799 __CODE{ParseError}__;
2800 }
2801 } # if unparsed entity
2802
2803 if ($ent->{is_opened}) {
2804 my $location;
2805 __CODE{xp|get-location-from-token::
2806 $token => {$token},
2807 $result => {$location},
2808 }__;
2809 my $continue = __c|ERROR{xp|wf-no-recursion::
2810 xp|error-token => {$token},
2811 c|location => {$location},
2812 xp|name => {$name},
2813 }__;
2814 unless ($continue) {
2815 __CODE{ParseError}__;
2816 }
2817 open my $empty, '<', \'';
2818 $self->{entity}->[-1]->{fh} = $empty;
2819 $er-><AS::GERef.manakaiExpanded> (false);
2820 } # recursive
2821 $ent->{is_opened} = true;
2822 } # entity declared
2823 $self->{location} = $self->{entity}->[-1];
2824 push @{$self->{entity_token}}, $self->{token};
2825 $self->{token} = [];
2826 push @{$self->{entity_char}}, $self->{char};
2827 $self->{char} = [];
2828 }
2829
2830 ?lexmode ElementContent;
2831 &content ($doc => $doc, $parent => $er, $ns => $ns);
2832 ~ (#EOF) { }
2833 lang:Perl {
2834 $self->{general_entity}->{$self->{entity}->[-1]->{name}}
2835 ->{is_opened} = false
2836 if $self->{general_entity}->{$self->{entity}->[-1]->{name}};
2837 $self->{token} = pop @{$self->{entity_token}};
2838 $self->{char} = pop @{$self->{entity_char}};
2839 pop (@{$self->{entity}})->{close_file}->();
2840 $self->{location} = $self->{entity}->[-1];
2841
2842 $er-><M::Node.manakaiSetReadOnly> (true, true);
2843 }
2844
2845 ?lexmode EntityReference;
2846 ?requires-next-token;
2847 }
2848
2849 ~ (REFC) {
2850 ?lexmode ElementContent;
2851 } else {
2852 ?lexmode ElementContent;
2853 }
2854 } // _GeneralEntityReferenceEC
2855
2856 /*
2857 General entity reference in an attribute value literal
2858 */
2859 rule _GeneralEntityReferenceV_ ($vals) {
2860 ?lexmode EntityReference;
2861
2862 ~ (Name == 'lt') {
2863 lang:Perl {
2864 push @{$vals->{nodes}}, $self->{doc}-><M::Document.createTextNode>
2865 ('<');
2866 $vals->{value} .= '<';
2867 }
2868 } (Name == 'gt') {
2869 lang:Perl {
2870 push @{$vals->{nodes}}, $self->{doc}-><M::Document.createTextNode>
2871 ('>');
2872 $vals->{value} .= '>';
2873 }
2874 } (Name == 'amp') {
2875 lang:Perl {
2876 push @{$vals->{nodes}}, $self->{doc}-><M::Document.createTextNode>
2877 ('&');
2878 $vals->{value} .= '&';
2879 }
2880 } (Name == 'quot') {
2881 lang:Perl {
2882 push @{$vals->{nodes}}, $self->{doc}-><M::Document.createTextNode>
2883 ('"');
2884 $vals->{value} .= '"';
2885 }
2886 } (Name == 'apos') {
2887 lang:Perl {
2888 push @{$vals->{nodes}}, $self->{doc}-><M::Document.createTextNode>
2889 ("'");
2890 $vals->{value} .= "'";
2891 }
2892 } (Name) {
2893 my $er;
2894 lang:Perl ($name => $token.value) : has-error {
2895 __CODE{checkNCName:: $name => $name}__;
2896
2897 $er = $self->{doc}-><M::Document.createEntityReference> ($name);
2898 $er-><M::Node.manakaiSetReadOnly> (false, true);
2899 $er-><AS::Node.textContent> ('');
2900 ## NOTE: When document entity (and entities referenced directly
2901 ## or indirectly from it) is parsed, no general entity
2902 ## node have its replacement tree. During general
2903 ## entity node collection construction, however,
2904 ## some entity node has replacement tree.
2905 my $ent = $self->{general_entity}->{$name};
2906 if (not $ent) { # no entity declaration
2907 if ($self->{standalone} or not $self->{has_xref}) { # WFC error
2908 my $location;
2909 __CODE{xp|get-location-from-token::
2910 $token => {$token},
2911 $result => {$location},
2912 }__;
2913 my $continue = __DOMCore:ERROR{xp|wf-entity-declared::
2914 xp|error-token => {$token},
2915 c|location => {$location},
2916 xp|name => {$name},
2917 }__;
2918 unless ($continue) {
2919 __CODE{ParseError}__;
2920 }
2921 } # Otherwise VC error
2922 push @{$self->{entity}}, <Code::getEmptyEntityState::
2923 $name = $name>;
2924 $er-><AS::GERef.manakaiExpanded> (false);
2925
2926 } else { # there IS entity declaration
2927 if (($self->{standalone} or not $self->{has_xref}) and
2928 $ent->{is_externally_declared} and
2929 not $self->{entity}->[-1]->{is_externally_declared}) {
2930 my $location;
2931 __CODE{xp|get-location-from-token::
2932 $token => {$token},
2933 $result => {$location},
2934 }__;
2935 my $continue = __DOMCore:ERROR{xp|wf-entity-declared::
2936 xp|error-token => {$token},
2937 c|location => {$location},
2938 xp|name => {$name},
2939 }__;
2940 unless ($continue) {
2941 __CODE{ParseError}__;
2942 }
2943 }
2944
2945 if ($ent->{is_external_entity}) {
2946 my $location;
2947 __CODE{xp|get-location-from-token::
2948 $token => {$token},
2949 $result => {$location},
2950 }__;
2951 my $continue = __c|ERROR{xp|wf-no-external-entity-references::
2952 xp|error-token => {$token},
2953 c|location => {$location},
2954 xp|name => {$name},
2955 }__;
2956 unless ($continue) {
2957 __CODE{ParseError}__;
2958 }
2959 ## NOTE: |xp:wf-parsed-entity| is not checked
2960 } # if external entity
2961
2962 $er-><AS::GERef.manakaiExpanded>
2963 ($ent->{has_replacement_text});
2964 push @{$self->{entity}}, <Code::getCopyOfEntityState::
2965 $entity_type = 'general_entity',
2966 $entity_name = $name>;
2967
2968 if ($ent->{is_opened}) {
2969 my $location;
2970 __CODE{xp|get-location-from-token::
2971 $token => {$token},
2972 $result => {$location},
2973 }__;
2974 my $continue = __c|ERROR{xp|wf-no-recursion::
2975 xp|error-token => {$token},
2976 c|location => {$location},
2977 xp|name => {$name},
2978 }__;
2979 unless ($continue) {
2980 __CODE{ParseError}__;
2981 }
2982 open my $empty, '<', \'';
2983 $self->{entity}->[-1]->{fh} = $empty;
2984 $er-><AS::GERef.manakaiExpanded> (false);
2985 } # recursive
2986 $ent->{is_opened} = true;
2987 }
2988 push @{$vals->{nodes}}, $er;
2989 $self->{location} = $self->{entity}->[-1];
2990 push @{$self->{entity_token}}, $self->{token};
2991 $self->{token} = [];
2992 push @{$self->{entity_char}}, $self->{char};
2993 $self->{char} = [];
2994 }
2995
2996 ?lexmode AttributeValueLiteralE;
2997 &AttributeValueLiteralE_ ($parent => $er, $vals => $vals);
2998 ~ (#EOF) { }
2999 lang:Perl {
3000 $self->{general_entity}->{$self->{entity}->[-1]->{name}}
3001 ->{is_opened} = false
3002 if $self->{general_entity}->{$self->{entity}->[-1]->{name}};
3003 $self->{token} = pop @{$self->{entity_token}};
3004 $self->{char} = pop @{$self->{entity_char}};
3005 pop (@{$self->{entity}})->{close_file}->();
3006 $self->{location} = $self->{entity}->[-1];
3007
3008 $er-><M::Node.manakaiSetReadOnly> (true, true);
3009 }
3010
3011 ?lexmode EntityReference;
3012 ?requires-next-token;
3013 }
3014
3015 // ~ (REFC) { }
3016 } // _GeneralEntityReferenceV_
3017
3018 /*
3019 General entity reference in the replacement text
3020 of the entity referenced in an attribute value literal
3021 */
3022 rule _GeneralEntityReferenceAE_ ($parent, $vals)
3023 {
3024 ?lexmode EntityReference;
3025
3026 ~ (Name == 'lt') {
3027 lang:Perl {
3028 $parent-><M::Node.manakaiAppendText> ('<');
3029 $vals->{value} .= '<';
3030 }
3031 } (Name == 'gt') {
3032 lang:Perl {
3033 $parent-><M::Node.manakaiAppendText> ('>');
3034 $vals->{value} .= '>';
3035 }
3036 } (Name == 'amp') {
3037 lang:Perl {
3038 $parent-><M::Node.manakaiAppendText> ('&');
3039 $vals->{value} .= '&';
3040 }
3041 } (Name == 'quot') {
3042 lang:Perl {
3043 $parent-><M::Node.manakaiAppendText> ('"');
3044 $vals->{value} .= '"';
3045 }
3046 } (Name == 'apos') {
3047 lang:Perl {
3048 $parent-><M::Node.manakaiAppendText> ("'");
3049 $vals->{value} .= "'";
3050 }
3051 } (Name) {
3052 my $er;
3053 lang:Perl ($name => $token.value) : has-error {
3054 __CODE{checkNCName:: $name => $name}__;
3055
3056 $er = $self->{doc}-><M::Document.createEntityReference> ($name);
3057 $er-><M::Node.manakaiSetReadOnly> (false, true);
3058 $er-><AS::Node.textContent> ('');
3059 ## NOTE: When document entity (and entities referenced directly
3060 ## or indirectly from it) is parsed, no general entity
3061 ## node have its replacement tree. During general
3062 ## entity node collection construction, however,
3063 ## some entity node has replacement tree.
3064 my $ent = $self->{general_entity}->{$name};
3065 if (not $ent) { # no entity declaration
3066 if ($self->{standalone} or not $self->{has_xref}) { # WFC error
3067 my $location;
3068 __CODE{xp|get-location-from-token::
3069 $token => {$token},
3070 $result => {$location},
3071 }__;
3072 my $continue = __DOMCore:ERROR{xp|wf-entity-declared::
3073 xp|error-token => {$token},
3074 c|location => {$location},
3075 xp|name => {$name},
3076 }__;
3077 unless ($continue) {
3078 __CODE{ParseError}__;
3079 }
3080 } # Otherwise VC error
3081 push @{$self->{entity}}, <Code::getEmptyEntityState::
3082 $name = $name>;
3083 $er-><AS::GERef.manakaiExpanded> (false);
3084
3085 } else { # there IS entity declaration
3086 if (($self->{standalone} or not $self->{has_xref}) and
3087 $ent->{is_externally_declared} and
3088 not $self->{entity}->[-1]->{is_externally_declared}) {
3089 my $location;
3090 __CODE{xp|get-location-from-token::
3091 $token => {$token},
3092 $result => {$location},
3093 }__;
3094 my $continue = __DOMCore:ERROR{xp|wf-entity-declared::
3095 xp|error-token => {$token},
3096 c|location => {$location},
3097 xp|name => {$name},
3098 }__;
3099 unless ($continue) {
3100 __CODE{ParseError}__;
3101 }
3102 }
3103
3104 if ($ent->{is_external_entity}) {
3105 my $location;
3106 __CODE{xp|get-location-from-token::
3107 $token => {$token},
3108 $result => {$location},
3109 }__;
3110 my $continue = __c|ERROR{xp|wf-no-external-entity-references::
3111 xp|error-token => {$token},
3112 c|location => {$location},
3113 xp|name => {$name},
3114 }__;
3115 unless ($continue) {
3116 __CODE{ParseError}__;
3117 }
3118 ## NOTE: |xp:wf-parsed-entity| is not checked
3119 } # if external entity
3120
3121 $er-><AS::GERef.manakaiExpanded>
3122 ($ent->{has_replacement_text});
3123 push @{$self->{entity}}, <Code::getCopyOfEntityState::
3124 $entity_type = 'general_entity',
3125 $entity_name = $name>;
3126
3127 if ($ent->{is_opened}) {
3128 my $location;
3129 __CODE{xp|get-location-from-token::
3130 $token => {$token},
3131 $result => {$location},
3132 }__;
3133 my $continue = __c|ERROR{xp|wf-no-recursion::
3134 xp|error-token => {$token},
3135 c|location => {$location},
3136 xp|name => {$name},
3137 }__;
3138 unless ($continue) {
3139 __CODE{ParseError}__;
3140 }
3141 open my $empty, '<', \'';
3142 $self->{entity}->[-1]->{fh} = $empty;
3143 $er-><AS::GERef.manakaiExpanded> (false);
3144 } # recursive
3145 $ent->{is_opened} = true;
3146 }
3147 $parent-><M::Node.appendChild> ($er);
3148 $self->{location} = $self->{entity}->[-1];
3149 push @{$self->{entity_token}}, $self->{token};
3150 $self->{token} = [];
3151 push @{$self->{entity_char}}, $self->{char};
3152 $self->{char} = [];
3153 }
3154
3155 ?lexmode AttributeValueLiteralE;
3156 &AttributeValueLiteralE_ ($parent => $er, $vals => $vals);
3157 ~ (#EOF) { }
3158 lang:Perl {
3159 $self->{general_entity}->{$self->{entity}->[-1]->{name}}
3160 ->{is_opened} = false
3161 if $self->{general_entity}->{$self->{entity}->[-1]->{name}};
3162 $self->{token} = pop @{$self->{entity_token}};
3163 $self->{char} = pop @{$self->{entity_char}};
3164 pop (@{$self->{entity}})->{close_file}->();
3165 $self->{location} = $self->{entity}->[-1];
3166
3167 $er-><M::Node.manakaiSetReadOnly> (true, true);
3168 }
3169
3170 ?lexmode EntityReference;
3171 ?requires-next-token;
3172 }
3173
3174 // ~ (REFC) { }
3175 } // _GeneralEntityReferenceAE_
3176
3177 /*
3178 General Entity Reference in Literal Entity Value in Entity Declaration
3179 */
3180 rule _GeneralEntityReferenceEV_ ($vals) {
3181 ?lexmode 'EntityReference';
3182
3183 ~ (Name) {
3184 lang:Perl ($name => $token.value) {
3185 __CODE{checkNCName:: $name => $name}__;
3186 push @$vals, $name;
3187 }
3188 /*
3189 WFCs such as Entity Declared are not checked
3190 <http://www.w3.org/TR/xml11/#bypass>
3191
3192 Note that violation to the Parsed Entity WFC is an error
3193 rather than fatal error here.
3194 */
3195 }
3196
3197 // No expansion
3198
3199 // ~ (REFC) { }
3200 } // _GeneralEntityReferenceEV_
3201
3202 /*
3203 Document Type Declaration
3204 */
3205 rule _DocumentTypeDeclaration_ ($doc) {
3206 ?lexmode MarkupDeclaration;
3207
3208 ~ (Name == 'DOCTYPE') { }
3209
3210 ~ (S) { }
3211
3212 // Document type name
3213 my $name;
3214 ~ (Name) {
3215 lang:Perl ($v => $token.value) {
3216 __CODE{checkQName:: $name => $v}__;
3217 $name = $v;
3218 }
3219 }
3220
3221 my $node;
3222 my $decl;
3223 lang:Perl {
3224 $self->{docx} = $self->{doc}
3225 -><M::Node.getFeature> (<Q::fe:XDoctype>, '3.0');
3226 $node = $self->{docx}-><M::DocumentXDoctype.createDocumentTypeDefinition>
3227 ($name);
3228 $decl = $self->{dtdecl} = $node-><M::Node.getFeature>
3229 (<Q::fe:XDoctypeDeclaration>, '3.0');
3230 }
3231
3232 my $has_extid;
3233 ~? (S) {
3234 ~? (Name == 'PUBLIC') {
3235 ~ (S) { }
3236
3237 &PubidLiteral ($decl => $decl);
3238
3239 ~ (S) { }
3240
3241 &SystemLiteral ($decl => $decl);
3242
3243 ~? (S) { }
3244
3245 lang:Perl {
3246 $self->{has_xref} = true;
3247 $has_extid = true;
3248 }
3249 } (Name == 'SYSTEM') {
3250 ~ (S) { }
3251
3252 &SystemLiteral ($decl => $decl);
3253
3254 ~? (S) { }
3255
3256 lang:Perl {
3257 $self->{has_xref} = true;
3258 $has_extid = true;
3259 }
3260 }
3261 }
3262
3263 lang:Perl {
3264 $self->{dtdef} = $node;
3265 $self->{doc}-><M::Node.appendChild> ($node);
3266 $self->{doc_cfg}-><M::c|DOMConfiguration.setParameter>
3267 ('schema-type' => <Q::xml-dtd:>);
3268 ## ISSUE: Should default schema language information be
3269 ## preserved by some other flag?
3270 }
3271
3272 ~? (DSO) {
3273 &InternalSubset ($doc => $doc, $doctype => $node);
3274
3275 ~ (DSC) {
3276 ?lexmode MarkupDeclaration;
3277 } else {
3278 ?lexmode MarkupDeclaration;
3279 }
3280
3281 ~? (S) { }
3282 }
3283
3284 // TODO: Read and process external subset if any.
3285 lang:Perl {
3286 $self->{dont_process} = true if $has_extid;
3287 $node-><M::Node.manakaiSetReadOnly> (true, true);
3288 }
3289
3290 // ~ (MDC) { }
3291 } // _DocumentTypeDeclaration_
3292
3293 /*
3294 Public Identifier Literal
3295 */
3296 rule PubidLiteral ($decl) {
3297 my $pubid;
3298 my $pubid_token;
3299 ~ (LIT) {
3300 ?lexmode SystemLiteral;
3301
3302 ~? (STRING) {
3303 lang:Perl ($v => $token.value) {
3304 $pubid = $v;
3305 $pubid_token = $token;
3306 }
3307 }
3308
3309 ~ (LIT) {
3310 ?lexmode MarkupDeclaration;
3311 } else {
3312 ?lexmode MarkupDeclaration;
3313 }
3314 } (LITA) {
3315 ?lexmode SystemLiteralA;
3316
3317 ~? (STRING) {
3318 lang:Perl ($v => $token.value) {
3319 $pubid = $v;
3320 $pubid_token = $token;
3321 }
3322 }
3323
3324 ~ (LITA) {
3325 ?lexmode MarkupDeclaration;
3326 } else {
3327 ?lexmode MarkupDeclaration;
3328 }
3329 }
3330
3331 if-true ($pubid_token) {
3332 lang:Perl : has-error {
3333 if ($pubid =~ m{[^\x20\x0D\x0Aa-zA-Z0-9'()+,./:=?;!*#\@\$_%-]}s) {
3334 my $location;
3335 __CODE{xp|get-location-from-token::
3336 $token => {$pubid_token},
3337 $result => {$location},
3338 }__;
3339 ## Should this be other (new) error type?
3340 my $continue = __DOMCore:ERROR{xp|wf-syntax-error::
3341 xp|error-token => {$token},
3342 c|location => {$location},
3343 }__;
3344 unless ($continue) {
3345 __CODE{ParseError}__;
3346 }
3347 }
3348
3349 ## NOTE: U+0009 is syntactically illegal.
3350 $pubid =~ s/[\x09\x0A\x0D\x20]+/\x20/gs;
3351 $pubid =~ s/\A\x20//s;
3352 $pubid =~ s/\x20\z//s;
3353 ## NOTE: Bare attribute name is written.
3354 $decl->public_id ($pubid);
3355 }
3356 }
3357 } // PubidLiteral
3358
3359 /*
3360 System Identifier Literal
3361 */
3362 rule SystemLiteral ($decl) {
3363 ~ (LIT) {
3364 ?lexmode SystemLiteral;
3365 &_SystemLiteral ($decl => $decl);
3366 } (LITA) {
3367 ?lexmode SystemLiteralA;
3368 &_SystemLiteral ($decl => $decl);
3369 }
3370 } // SystemLiteral
3371
3372 /*
3373 System Identifier Literal Content
3374
3375 Used in document type declaration, entity declaration,
3376 and notation declaration.
3377 */
3378 rule _SystemLiteral ($decl) {
3379 // LIT or LITA
3380
3381 ~? (STRING) {
3382 lang:Perl ($v => $token.value) {
3383 $decl-><AS::GE.systemId> ($v);
3384 $decl-><AS::GE.manakaiDeclarationBaseURI>
3385 ($self->{location}->{base_uri});
3386 }
3387 }
3388
3389 ~ (LIT) {
3390 ?lexmode MarkupDeclaration;
3391 } (LITA) {
3392 ?lexmode MarkupDeclaration;
3393 } else {
3394 ?lexmode MarkupDeclaration;
3395 }
3396 } // _SystemLiteral
3397
3398 /*
3399 DTD Internal Subset
3400
3401 intSubset := *(markupdecl / DeclSep) ;; [28b]
3402 */
3403 rule InternalSubset ($doc, $doctype) {
3404 ?lexmode DTD;
3405
3406 ~* (MDO) {
3407 ?lexmode MarkupDeclaration;
3408
3409 ~ (Name == 'ELEMENT') {
3410 &_ElementDeclaration ($doc => $doc);
3411 } (Name == 'ATTLIST') {
3412 &_AttlistDeclaration ($doc => $doc, $doctype => $doctype);
3413 } (Name == 'ENTITY') {
3414 &_EntityDeclaration ($doc => $doc);
3415 } (Name == 'NOTATION') {
3416 &_NotationDeclaration ($doc => $doc);
3417 }
3418 } (S) {
3419 //
3420 } (CDO) {
3421 &_CommentDeclarationDTD ($doc => $doc);
3422 } (PIO) {
3423 &_ProcessingInstructionDTD ($doc => $doc, $doctype => $doctype);
3424 } (PERO) {
3425 ?lexmode EntityReference;
3426
3427 lang:Perl {
3428 $self->{has_xref} = true;
3429 $self->{dont_process} = true;
3430 }
3431
3432 ~ (Name) {
3433 // TODO: __CODE{checkNCName:: $name => $name}__;
3434
3435 }
3436
3437 ~ (REFC) {
3438 ?lexmode DTD;
3439 } else {
3440 ?lexmode DTD;
3441 }
3442 }
3443 } // InternalSubset
3444
3445 rule _ElementDeclaration ($doc) {
3446 // ~ (MDO) { }
3447 // ?lexmode MarkupDeclaration
3448 // ~ (Name == 'Element') { }
3449
3450 ~ (S) { }
3451
3452 ~ (Name) {
3453 // TODO: __CODE{checkQName:: $name => $name}__;
3454
3455 }
3456
3457 ?lexmode ElementDeclaration;
3458
3459 ~ (S) { }
3460
3461 // contentspec
3462 ~ (MGO) {
3463 &_ContentModel ($doc => $doc);
3464 } (Name == 'EMPTY') {
3465
3466 } (Name == 'ANY') {
3467
3468 }
3469
3470 ~? (S) { }
3471
3472 ~ (MDC) {
3473 ?lexmode DTD;
3474 } else {
3475 ?lexmode DTD;
3476 }
3477 } // _ElementDeclaration
3478
3479 rule _ContentModel ($doc) {
3480 // ~ (MGO) { }
3481
3482 ~? (S) { }
3483
3484 ~ (Name) {
3485 // Element content model
3486 &_ModelGroup ($doc => $doc)
3487 : unshift-current-token;
3488
3489 ~? (OPT) {
3490
3491 } (REP) {
3492
3493 } (PLUS) {
3494
3495 }
3496
3497 } (MDO) {
3498 &_ModelGroup ($doc => $doc)
3499 : unshift-current-token;
3500
3501 ~? (OPT) {
3502
3503 } (REP) {
3504
3505 } (PLUS) {
3506
3507 }
3508
3509 } (PCDATA) {
3510 // Mixed content declaration
3511 ~? (S) { }
3512
3513 ~* (OR) {
3514 ~? (S) { }
3515
3516 ~ (Name) {
3517 // TODO: Name & QName check
3518
3519 }
3520
3521 ~? (S) { }
3522 }
3523
3524 ~ (MGC) { }
3525
3526 ~? (REP) {
3527
3528 } else {
3529 // TODO: error if |Name|
3530 }
3531
3532
3533 }
3534 } // _ContentModel
3535
3536 rule _ModelGroup ($doc)
3537 : standalone
3538 : recursive
3539 {
3540 // ~ (MGO) { }
3541 // ~? (S) { }
3542
3543 &ContentParticle ($doc => $doc);
3544
3545 ~? (S) { }
3546
3547 ~? (OR) {
3548 ~? (S) { }
3549
3550 &ContentParticle ($doc => $doc);
3551
3552 ~? (S) { }
3553
3554 ~* (OR) {
3555 ~? (S) { }
3556
3557 &ContentParticle ($doc => $doc);
3558
3559 ~? (S) { }
3560 }
3561
3562 } (SEQ) {
3563 ~? (S) { }
3564
3565 &ContentParticle ($doc => $doc);
3566
3567 ~? (S) { }
3568
3569 ~* (SEQ) {
3570 ~? (S) { }
3571
3572 &ContentParticle ($doc => $doc);
3573
3574 ~? (S) { }
3575 }
3576
3577 }
3578
3579 ~ (MGC) { }
3580 } // _ModelGroup
3581
3582 rule ContentParticle ($doc) {
3583 ~ (Name) {
3584 // TODO: Name & QName check
3585
3586 } (MGO) {
3587 ~? (S) { }
3588
3589 &_ModelGroup ($doc => $doc);
3590 }
3591
3592 ~? (OPT) {
3593
3594 } (REP) {
3595
3596 } (PLUS) {
3597
3598 }
3599 } // ContentParticle
3600
3601 /*
3602 Attribute list declaration
3603 */
3604 rule _AttlistDeclaration ($doc, $doctype) {
3605 // ~ (MDO) { }
3606 // ~ (Name == 'ATTLIST') { }
3607
3608 ?lexmode AttlistDeclaration;
3609
3610 ~ (S) { }
3611
3612 my $name;
3613 ~ (Name) {
3614 lang:Perl ($v => $token.value) {
3615 __CODE{checkQName:: $name => $v}__;
3616 $name = $v;
3617 }
3618 } else {
3619 lang:Perl { $name = '#ILLEGAL' }
3620 }
3621
3622 my $docxd;
3623 my $et;
3624 lang:Perl {
3625 $et = $doctype-><M::DTDef.getElementTypeDefinitionNode> ($name);
3626 unless ($et) {
3627 $docxd = $doc-><M::Node.getFeature> (<Q::fe:XDoctype>, '3.0');
3628 $et = $docxd-><M::DocumentXDoctype.createElementTypeDefinition>
3629 ($name);
3630 $doctype-><M::DTDef.setElementTypeDefinitionNode> ($et)
3631 unless $name eq '#ILLEGAL';
3632 }
3633 }
3634
3635 ~? (S) { }
3636
3637 ~* (Name) {
3638 my $at;
3639 lang:Perl ($v => $token.value) : has-error {
3640 __CODE{checkQName:: $name => $v}__;
3641 $docxd ||= $doc-><M::Node.getFeature>
3642 (<Q::fe:XDoctype>, '3.0');
3643 $at = $docxd-><M::DocumentXDoctype.createAttributeDefinition> ($v);
3644 if (exists $et-><AG::ETDef.attributeDefinitions>->{$v}) {
3645 my $location;
3646 __CODE{xp|get-location-from-token::
3647 $token => {$token},
3648 $result => {$location},
3649 }__;
3650 my $continue = __c|ERROR{xp|warning-attribute-definition-ignored::
3651 xp|error-token => {$token},
3652 c|location => {$location},
3653 xp|name => {$v},
3654 }__;
3655 unless ($continue) {
3656 __CODE{ParseError}__;
3657 }
3658 } elsif ($self->{dont_process} and not $self->{standalone}) {
3659 my $location;
3660 __CODE{xp|get-location-from-token::
3661 $token => {$token},
3662 $result => {$location},
3663 }__;
3664 my $continue = __c|ERROR{
3665 xp|warning-attribute-definition-not-processed::
3666 xp|error-token => {$token},
3667 c|location => {$location},
3668 xp|name => {$v},
3669 }__;
3670 unless ($continue) {
3671 __CODE{ParseError}__;
3672 }
3673 } else {
3674 $et-><M::ETDef.setAttributeDefinitionNode> ($at);
3675 $self->{attr}->{$name}->{$v} = $at;
3676 }
3677 }
3678
3679 ~ (S) { }
3680
3681 // AttType
3682 ~ (Name == 'NOTATION') {
3683 ~ (S) { }
3684
3685 my $kwd;
3686 lang:Perl {
3687 $at-><AS::ATDef.declaredType> (<C::ATDef.NOTATION_ATTR>);
3688 $kwd = $at-><AG::ATDef.allowedTokens>;
3689 }
3690
3691 ~ (EGO) {
3692 ~? (S) { }
3693
3694 ~+ (Name) {
3695 lang:Perl ($v => $token.value) : has-error {
3696 __CODE{checkNCName:: $name => $v}__;
3697 push @$kwd, $v;
3698 }
3699
3700 ~? (S) { }
3701 } (OR) : separator {
3702 ~? (S) { }
3703 }
3704
3705 ~ (EGC) { }
3706 }
3707
3708 } (Name) {
3709 my $type;
3710 lang:Perl ($v => $token.value) : has-error {
3711 my $map = {
3712 CDATA => <C::ATDef.CDATA_ATTR>,
3713 ID => <C::ATDef.ID_ATTR>,
3714 IDREF => <C::ATDef.IDREF_ATTR>,
3715 IDREFS => <C::ATDef.IDREFS_ATTR>,
3716 ENTITY => <C::ATDef.ENTITY_ATTR>,
3717 ENTITIES => <C::ATDef.ENTITIES_ATTR>,
3718 NMTOKEN => <C::ATDef.NMTOKEN_ATTR>,
3719 NMTOKENS => <C::ATDef.NMTOKENS_ATTR>,
3720 };
3721 if ($map->{$v}) {
3722 $at-><AS::ATDef.declaredType> ($map->{$v});
3723 } else {
3724 ## TODO: Exception
3725 }
3726 }
3727
3728 } (EGO) {
3729 ?lexmode Enumeration;
3730
3731 ~? (S) { }
3732
3733 my $kwd;
3734 lang:Perl {
3735 $at-><AS::ATDef.declaredType> (<C::ATDef.ENUMERATION_ATTR>);
3736 $kwd = $at-><AG::ATDef.allowedTokens>;
3737 }
3738
3739 ~+ (Nmtoken) {
3740 lang:Perl ($v => $token.value) {
3741 push @$kwd, $v;
3742 }
3743
3744 ~? (S) { }
3745 } (OR) : separator {
3746 ~? (S) { }
3747 }
3748
3749 ~ (EGC) {
3750 ?lexmode AttlistDeclaration;
3751 } else {
3752 ?lexmode AttlistDeclaration;
3753 }
3754
3755 }
3756
3757 ~ (S) { }
3758
3759 // DefaultDecl
3760 ~ (RNI) {
3761 ~ (Name == 'REQUIRED') {
3762 lang:Perl {
3763 $at-><AS::ATDef.defaultType> (<C::ATDef.REQUIRED_DEFAULT>);
3764 }
3765 } (Name == 'IMPLIED') {
3766 lang:Perl {
3767 $at-><AS::ATDef.defaultType> (<C::ATDef.IMPLIED_DEFAULT>);
3768 }
3769 } (Name == 'FIXED') {
3770 ~ (S) { }
3771
3772 lang:Perl {
3773 $at-><AS::ATDef.defaultType> (<C::ATDef.FIXED_DEFAULT>);
3774 }
3775
3776 ~ (LIT) {
3777 my $vals;
3778 lang:Perl {
3779 $vals = {nodes => [], value => ''};
3780 }
3781
3782 &_AttributeValueSpecification_ ($doc => $doc, $vals => $vals);
3783
3784 lang:Perl {
3785 for (@{$vals->{nodes}}) {
3786 $at-><M::Node.appendChild> ($_);
3787 }
3788 }
3789
3790 ~ (LIT) {
3791 ?lexmode AttlistDeclaration;
3792 } else {
3793 ?lexmode AttlistDeclaration;
3794 }
3795 } (LITA) {
3796 my $vals;
3797 lang:Perl {
3798 $vals = {nodes => [], value => ''};
3799 }
3800
3801 &_AttributeValueSpecificationA_ ($doc => $doc, $vals => $vals);
3802
3803 lang:Perl {
3804 for (@{$vals->{nodes}}) {
3805 $at-><M::Node.appendChild> ($_);
3806 }
3807 }
3808
3809 ~ (LITA) {
3810 ?lexmode AttlistDeclaration;
3811 } else {
3812 ?lexmode AttlistDeclaration;
3813 }
3814 }
3815 }
3816
3817 } (LIT) {
3818 my $vals;
3819 lang:Perl {
3820 $at-><AS::ATDef.defaultType> (<C::ATDef.EXPLICIT_DEFAULT>);
3821 $vals = {nodes => [], value => ''};
3822 }
3823
3824 &_AttributeValueSpecification_ ($doc => $doc, $vals => $vals);
3825
3826 lang:Perl {
3827 for (@{$vals->{nodes}}) {
3828 $at-><M::Node.appendChild> ($_);
3829 }
3830 }
3831
3832 ~ (LIT) {
3833 ?lexmode AttlistDeclaration;
3834 } else {
3835 ?lexmode AttlistDeclaration;
3836 }
3837 } (LITA) {
3838 my $vals;
3839 lang:Perl {
3840 $at-><AS::ATDef.defaultType> (<C::ATDef.EXPLICIT_DEFAULT>);
3841 $vals = {nodes => [], value => ''};
3842 }
3843
3844 &_AttributeValueSpecificationA_ ($doc => $doc, $vals => $vals);
3845
3846 lang:Perl {
3847 for (@{$vals->{nodes}}) {
3848 $at-><M::Node.appendChild> ($_);
3849 }
3850 }
3851
3852 ~ (LITA) {
3853 ?lexmode AttlistDeclaration;
3854 } else {
3855 ?lexmode AttlistDeclaration;
3856 }
3857 }
3858
3859 } (S) : separator : terminator? {
3860 //
3861 }
3862
3863 ~ (MDC) {
3864 ?lexmode DTD;
3865 } else {
3866 ?lexmode DTD;
3867 }
3868 } // _AttlistDeclaration
3869
3870 /*
3871 Entity Declaration
3872 */
3873 rule _EntityDeclaration ($doc) {
3874 // ~ (MDO) { }
3875 // ~ (Name == ENTITY) { }
3876
3877 ~ (S) { }
3878
3879 my $is_param_entity;
3880 my $decl;
3881 lang:Perl {
3882 $decl = {
3883 name => '#ILLEGAL',
3884 reptxt => \'',
3885 is_external_entity => false,
3886 document_uri => $self->{location}->{document_uri},
3887 base_uri => $self->{location}->{base_uri},
3888 };
3889 }
3890
3891 ~? (PERO) {
3892 ~ (S) { }
3893 lang:Perl {
3894 $is_param_entity = $decl->{is_param_entity} = true;
3895 }
3896 }
3897
3898 /*
3899 TODO: Set |$decl->{is_externally_declared}| flag
3900 and |Entity.isExternallyDeclared| attribute
3901 for entity declarations in external subset or
3902 in parameter entity.
3903 */
3904
3905 ~ (Name) {
3906 lang:Perl ($v => $token.value) {
3907 __CODE{checkNCName:: $name => $v}__;
3908 $decl->{name} = $v;
3909 }
3910 }
3911
3912 my $node;
3913 lang:Perl {
3914 $node =
3915 $decl->{node} = $self->{docx}-><M::DocumentXDoctype.createGeneralEntity>
3916 ($decl->{name});
3917 ## TODO: Parameter entity...
3918 }
3919
3920 ~ (S) { }
3921
3922 ~ (LIT) {
3923 &_EntityValue ($doc => $doc, $decl => $decl);
3924 } (LITA) {
3925 &_EntityValueA ($doc => $doc, $decl => $decl);
3926 } (Name == 'PUBLIC') {
3927 ~ (S) { }
3928
3929 &PubidLiteral ($decl => $node);
3930
3931 ~ (S) { }
3932
3933 &SystemLiteral ($decl => $node);
3934
3935 lang:Perl {
3936 $decl->{is_external_entity} = true;
3937 }
3938 } (Name == 'SYSTEM') {
3939 ~ (S) { }
3940
3941 &SystemLiteral ($decl => $node);
3942
3943 lang:Perl {
3944 $decl->{is_external_entity} = true;
3945 }
3946 }
3947
3948 ~? (S) {
3949 ~? (Name == 'NDATA') {
3950 if-true ($is_param_entity) {
3951 lang:Perl : has-error {
3952 my $location;
3953 __CODE{xp|get-location-from-token::
3954 $token => {$token},
3955 $result => {$location},
3956 }__;
3957 my $continue = __DOMCore:ERROR{xp|wf-syntax-error::
3958 xp|error-token => {$token},
3959 c|location => {$location},
3960 }__;
3961 unless ($continue) {
3962 __CODE{ParseError}__;
3963 }
3964 }
3965 }
3966
3967 ~ (S) { }
3968
3969 ~ (Name) {
3970 lang:Perl ($v => $token.value) : has-error {
3971 __CODE{checkNCName:: $name => $v}__;
3972 $decl->{notation} = $v;
3973 $decl->{node}-><AG::GE.notationName> ($v);
3974 }
3975 }
3976
3977 ~? (S) { }
3978 }
3979 }
3980
3981 lang:Perl : has-error {
3982 if ($self->{$decl->{is_param_entity} ? 'param_entity' : 'general_entity'}
3983 ->{$decl->{name}}) {
3984 ## Predefined entity
3985 if (not $decl->{is_param_entity} and
3986 {lt => true, gt => true, amp => true,
3987 quot => true, apos => true}->{$decl->{name}}) {
3988 if ($decl->{is_external_entity}) {
3989 my $location;
3990 __CODE{xp|get-location-from-token::
3991 $token => {$token},
3992 $result => {$location},
3993 }__;
3994 my $continue = __c|ERROR{xp|error-internal-predefined-entity::
3995 xp|error-token => {$token},
3996 c|location => {$location},
3997 xp|name => {$decl->{name}},
3998 }__;
3999 unless ($continue) {
4000 __CODE{ParseError}__;
4001 }
4002 } elsif (
4003 not ({gt => true, apos => true, quot => true}->{$decl->{name}} and
4004 ${$decl->{reptxt}} eq {
4005 gt => '>', apos => "'", quot => '"',
4006 }->{$decl->{name}}) and
4007 not (${$decl->{reptxt}} =~ /\A&#0*@{[{
4008 lt => '60', gt => '62', amp => '38',
4009 apos => '39', quot => '34',
4010 }->{$decl->{name}}]};\z/) and
4011 not (${$decl->{reptxt}} =~ /\A&#x0*(?:(?i)@{[{
4012 lt => '3C', gt => '3E', amp => '26',
4013 apos => '27', quot => '22',
4014 }->{$decl->{name}}]});\z/)
4015 ) {
4016 ## NOTE: See "SuikaWiki - Predefined Entities"
4017 ## "http://suika.fam.cx/gate/2005/sw/%E5%AE%9A%E7%BE%A9%E6%B8%88%E5%AE%9F%E4%BD%93".
4018 my $location;
4019 __CODE{xp|get-location-from-token::
4020 $token => {$token},
4021 $result => {$location},
4022 }__;
4023 my $continue = __c|ERROR{xp|error-malformed-predefined-entity::
4024 xp|error-token => {$token},
4025 c|location => {$location},
4026 xp|name => {$decl->{name}},
4027 xp|replacement-text => {${$decl->{reptxt}}},
4028 }__;
4029 unless ($continue) {
4030 __CODE{ParseError}__;
4031 }
4032 }
4033 ${$self->{dtdecl}}->{{
4034 lt => <H::d|hasLtDeclaration>,
4035 gt => <H::d|hasGtDeclaration>,
4036 amp => <H::d|hasAmpDeclaration>,
4037 apos => <H::d|hasAposDeclaration>,
4038 quot => <H::d|hasQuotDeclaration>,
4039 }->{$decl->{name}}} = true;
4040 } else { ## Dupulicating declaration
4041 my $location;
4042 __CODE{xp|get-location-from-token::
4043 $token => {$token},
4044 $result => {$location},
4045 }__;
4046 my $continue = __c|ERROR{xp|warning-entity-declaration-ignored::
4047 xp|error-token => {$token},
4048 c|location => {$location},
4049 xp|name => {$decl->{name}},
4050 }__;
4051 unless ($continue) {
4052 __CODE{ParseError}__;
4053 }
4054 }
4055 } elsif ($self->{dont_process} and not $self->{standalone}) {
4056 ## TODO: |standalone| and parameter entities??
4057 my $location;
4058 __CODE{xp|get-location-from-token::
4059 $token => {$token},
4060 $result => {$location},
4061 }__;
4062 my $continue = __c|ERROR{xp|warning-entity-declaration-not-processed::
4063 xp|error-token => {$token},
4064 c|location => {$location},
4065 xp|name => {$decl->{name}},
4066 }__;
4067 unless ($continue) {
4068 __CODE{ParseError}__;
4069 }
4070 } else {
4071 $self->{$decl->{is_param_entity} ? 'param_entity' : 'general_entity'}
4072 ->{$decl->{name}} = $decl;
4073 $self->{dtdef}-><M::DTDef.setGeneralEntityNode> ($decl->{node})
4074 unless $decl->{is_param_entity};
4075 }
4076 }
4077
4078 ~ (MDC) {
4079 ?lexmode DTD;
4080 } else {
4081 ?lexmode DTD;
4082 }
4083 } // _EntityDeclaration
4084
4085 /*
4086 Notation Declaration
4087 */
4088 rule _NotationDeclaration {
4089 // ~ (MDO) { }
4090 // ~ (Name == NOTATION) { }
4091
4092 ~ (S) { }
4093
4094 my $name;
4095 ~ (Name) {
4096 lang:Perl ($v => $token.value) : has-error {
4097 __CODE{checkNCName:: $name => $v}__;
4098 $name = $v;
4099 }
4100 } else {
4101 lang:Perl {
4102 $name = '#INVALID';
4103 }
4104 }
4105
4106 ~ (S) { }
4107
4108 lang:Perl {
4109 $decl = $self->{docx}-><M::DocumentXDoctype.createNotation> ($name);
4110 }
4111
4112 ~ (Name == 'PUBLIC') {
4113 ~ (S) { }
4114
4115 &PubidLiteral ($decl => $decl);
4116
4117 ~? (S) {
4118 ~? (LIT) {
4119 ?lexmode SystemLiteral;
4120 &_SystemLiteral ($decl => $decl);
4121
4122 ~? (S) { }
4123 } (LITA) {
4124 ?lexmode SystemLiteralA;
4125 &_SystemLiteral ($decl => $decl);
4126
4127 ~? (S) { }
4128 }
4129 }
4130 } (Name == 'SYSTEM') {
4131 ~ (S) { }
4132
4133 &SystemLiteral ($decl => $decl);
4134
4135 ~? (S) { }
4136 }
4137
4138 lang:Perl : has-error {
4139 if ($self->{dtdef}-><M::DTDef.getNotationNode> ($name)) {
4140 ## Dupulication
4141 my $location;
4142 __CODE{xp|get-location-from-token::
4143 $token => {$token},
4144 $result => {$location},
4145 }__;
4146 my $continue = __c|ERROR{xp|vc-unique-notation-name::
4147 xp|error-token => {$token},
4148 c|location => {$location},
4149 xp|name => {$name},
4150 }__;
4151 unless ($continue) {
4152 __CODE{ParseError}__;
4153 }
4154 } else {
4155 $self->{dtdef}-><M::DTDef.setNotationNode> ($decl);
4156 }
4157 }
4158
4159 ~ (MDC) {
4160 ?lexmode DTD;
4161 } else {
4162 ?lexmode DTD;
4163 }
4164 } // _NotationDeclaration
4165
4166 rule _EntityValue ($decl) {
4167 ?lexmode EntityValue;
4168
4169 my $vals;
4170 my $reptxt;
4171 lang:Perl {
4172 $vals = [];
4173 $reptxt = '';
4174 }
4175
4176 ~* (STRING) {
4177 lang:Perl ($v => $token.value) {
4178 $reptxt .= $v;
4179 }
4180 } (PERO) {
4181 ?lexmode EntityReference;
4182
4183 lang:Perl {
4184 $self->{has_xref} = true;
4185 $self->{dont_process} = true;
4186 }
4187
4188 // TODO: Expand or wferror if internal subset
4189
4190 ~ (Name) {
4191
4192 // Note that external subset and parameter entities are not supported
4193 lang:Perl ($name => $token.value) : has-error {
4194 __CODE{checkNCName:: $name => $name}__;
4195 my $location;
4196 __CODE{xp|get-location-from-token::
4197 $token => {$token},
4198 $result => {$location},
4199 }__;
4200 my $continue = __c|ERROR{xp|wf-pes-in-internal-subset::
4201 xp|error-token => {$token},
4202 c|location => {$location},
4203 xp|name => {$name},
4204 }__;
4205 unless ($continue) {
4206 __CODE{ParseError}__;
4207 }
4208 }
4209 }
4210
4211 ~ (REFC) {
4212 ?lexmode EntityValue;
4213 } else {
4214 ?lexmode EntityValue;
4215 }
4216 } (HCRO) {
4217 &_HexadecimalCharacterReferenceEV_ ($vals => $vals);
4218
4219 lang:Perl {
4220 $reptxt .= $vals->[-1];
4221 }
4222
4223 ~ (REFC) {
4224 ?lexmode EntityValue;
4225 } else {
4226 ?lexmode EntityValue;
4227 }
4228 } (CRO) {
4229 &_NumericCharacterReferenceEV_ ($vals => $vals);
4230
4231 lang:Perl {
4232 $reptxt .= $vals->[-1];
4233 }
4234
4235 ~ (REFC) {
4236 ?lexmode EntityValue;
4237 } else {
4238 ?lexmode EntityValue;
4239 }
4240 } (ERO) {
4241 &_GeneralEntityReferenceEV_ ($vals => $vals);
4242
4243 lang:Perl {
4244 $reptxt .= '&' . $vals->[-1] . ';';
4245 }
4246
4247 ~ (REFC) {
4248 ?lexmode EntityValue;
4249 } else {
4250 ?lexmode EntityValue;
4251 }
4252 }
4253
4254 ~ (LIT) {
4255 ?lexmode MarkupDeclaration;
4256 } (LITA) {
4257 ?lexmode MarkupDeclaration;
4258 } else {
4259 ?lexmode MarkupDeclaration;
4260 }
4261
4262 lang:Perl {
4263 $decl->{reptxt} = \$reptxt;
4264 $decl->{has_replacement_text} = true;
4265 }
4266 } // _EntityValue
4267
4268 rule _EntityValueA ($decl) {
4269 ?lexmode EntityValueA;
4270
4271 my $vals;
4272 my $reptxt;
4273 lang:Perl {
4274 $vals = [];
4275 $reptxt = '';
4276 }
4277
4278 ~* (STRING) {
4279 lang:Perl ($v => $token.value) {
4280 $reptxt .= $v;
4281 }
4282 } (PERO) {
4283 ?lexmode EntityReference;
4284
4285 lang:Perl {
4286 $self->{has_xref} = true;
4287 $self->{dont_process} = true;
4288 }
4289
4290 // TODO: implement this
4291 ~ (Name) {
4292
4293 // Note that external subset and parameter entities are not supported
4294 lang:Perl ($name => $token.value) : has-error {
4295 __CODE{checkNCName:: $name => $name}__;
4296 my $location;
4297 __CODE{xp|get-location-from-token::
4298 $token => {$token},
4299 $result => {$location},
4300 }__;
4301 my $continue = __c|ERROR{xp|wf-pes-in-internal-subset::
4302 xp|error-token => {$token},
4303 c|location => {$location},
4304 xp|name => {$name},
4305 }__;
4306 unless ($continue) {
4307 __CODE{ParseError}__;
4308 }
4309 }
4310 }
4311
4312 ~ (REFC) {
4313 ?lexmode EntityValueA;
4314 } else {
4315 ?lexmode EntityValueA;
4316 }
4317 } (HCRO) {
4318 &_HexadecimalCharacterReferenceEV_ ($vals => $vals);
4319
4320 lang:Perl {
4321 $reptxt .= $vals->[-1];
4322 }
4323
4324
4325 ~ (REFC) {
4326 ?lexmode EntityValueA;
4327 } else {
4328 ?lexmode EntityValueA;
4329 }
4330 } (CRO) {
4331 &_NumericCharacterReferenceEV_ ($vals => $vals);
4332
4333 lang:Perl {
4334 $reptxt .= $vals->[-1];
4335 }
4336
4337 ~ (REFC) {
4338 ?lexmode EntityValueA;
4339 } else {
4340 ?lexmode EntityValueA;
4341 }
4342 } (ERO) {
4343 &_GeneralEntityReferenceEV_ ($vals => $vals);
4344
4345 lang:Perl {
4346 $reptxt .= '&' . $vals->[-1] . ';';
4347 }
4348
4349 ~ (REFC) {
4350 ?lexmode EntityValueA;
4351 } else {
4352 ?lexmode EntityValueA;
4353 }
4354 }
4355
4356 ~ (LITA) {
4357 ?lexmode MarkupDeclaration;
4358 } else {
4359 ?lexmode MarkupDeclaration;
4360 }
4361
4362 lang:Perl {
4363 $decl->{reptxt} = \$reptxt;
4364 $decl->{has_replacement_text} = true;
4365 }
4366 } // _EntityValueA
4367
4368
4369 /*
4370 XML Name
4371 */
4372 lexmode NameChar {
4373 $NameStartChar10 := [
4374 '_' ':'
4375 // Letter
4376 // BaseChar
4377 U+0041..U+005A U+0061..U+007A U+00C0..U+00D6
4378 U+00D8..U+00F6 U+00F8..U+00FF U+0100..U+0131
4379 U+0134..U+013E U+0141..U+0148 U+014A..U+017E
4380 U+0180..U+01C3 U+01CD..U+01F0 U+01F4..U+01F5
4381 U+01FA..U+0217 U+0250..U+02A8 U+02BB..U+02C1
4382 U+0386 U+0388..U+038A U+038C U+038E..U+03A1
4383 U+03A3..U+03CE U+03D0..U+03D6 U+03DA U+03DC
4384 U+03DE U+03E0 U+03E2..U+03F3 U+0401..U+040C
4385 U+040E..U+044F U+0451..U+045C U+045E..U+0481
4386 U+0490..U+04C4 U+04C7..U+04C8 U+04CB..U+04CC
4387 U+04D0..U+04EB U+04EE..U+04F5 U+04F8..U+04F9
4388 U+0531..U+0556 U+0559 U+0561..U+0586
4389 U+05D0..U+05EA U+05F0..U+05F2 U+0621..U+063A
4390 U+0641..U+064A U+0671..U+06B7 U+06BA..U+06BE
4391 U+06C0..U+06CE U+06D0..U+06D3 U+06D5
4392 U+06E5..U+06E6 U+0905..U+0939 U+093D
4393 U+0958..U+0961 U+0985..U+098C U+098F..U+0990
4394 U+0993..U+09A8 U+09AA..U+09B0 U+09B2
4395 U+09B6..U+09B9 U+09DC..U+09DD U+09DF..U+09E1
4396 U+09F0..U+09F1 U+0A05..U+0A0A U+0A0F..U+0A10
4397 U+0A13..U+0A28 U+0A2A..U+0A30 U+0A32..U+0A33
4398 U+0A35..U+0A36 U+0A38..U+0A39 U+0A59..U+0A5C
4399 U+0A5E U+0A72..U+0A74 U+0A85..U+0A8B U+0A8D
4400 U+0A8F..U+0A91 U+0A93..U+0AA8 U+0AAA..U+0AB0
4401 U+0AB2..U+0AB3 U+0AB5..U+0AB9 U+0ABD U+0AE0
4402 U+0B05..U+0B0C U+0B0F..U+0B10 U+0B13..U+0B28
4403 U+0B2A..U+0B30 U+0B32..U+0B33 U+0B36..U+0B39
4404 U+0B3D U+0B5C..U+0B5D U+0B5F..U+0B61
4405 U+0B85..U+0B8A U+0B8E..U+0B90 U+0B92..U+0B95
4406 U+0B99..U+0B9A U+0B9C U+0B9E..U+0B9F
4407 U+0BA3..U+0BA4 U+0BA8..U+0BAA U+0BAE..U+0BB5
4408 U+0BB7..U+0BB9 U+0C05..U+0C0C U+0C0E..U+0C10
4409 U+0C12..U+0C28 U+0C2A..U+0C33 U+0C35..U+0C39
4410 U+0C60..U+0C61 U+0C85..U+0C8C U+0C8E..U+0C90
4411 U+0C92..U+0CA8 U+0CAA..U+0CB3 U+0CB5..U+0CB9
4412 U+0CDE U+0CE0..U+0CE1 U+0D05..U+0D0C
4413 U+0D0E..U+0D10 U+0D12..U+0D28 U+0D2A..U+0D39
4414 U+0D60..U+0D61 U+0E01..U+0E2E U+0E30
4415 U+0E32..U+0E33 U+0E40..U+0E45 U+0E81..U+0E82
4416 U+0E84 U+0E87..U+0E88 U+0E8A U+0E8D
4417 U+0E94..U+0E97 U+0E99..U+0E9F U+0EA1..U+0EA3
4418 U+0EA5 U+0EA7 U+0EAA..U+0EAB U+0EAD..U+0EAE
4419 U+0EB0 U+0EB2..U+0EB3 U+0EBD U+0EC0..U+0EC4
4420 U+0F40..U+0F47 U+0F49..U+0F69 U+10A0..U+10C5
4421 U+10D0..U+10F6 U+1100 U+1102..U+1103
4422 U+1105..U+1107 U+1109 U+110B..U+110C
4423 U+110E..U+1112 U+113C U+113E U+1140 U+114C
4424 U+114E U+1150 U+1154..U+1155 U+1159
4425 U+115F..U+1161 U+1163 U+1165 U+1167 U+1169
4426 U+116D..U+116E U+1172..U+1173 U+1175 U+119E
4427 U+11A8 U+11AB U+11AE..U+11AF U+11B7..U+11B8
4428 U+11BA U+11BC..U+11C2 U+11EB U+11F0 U+11F9
4429 U+1E00..U+1E9B U+1EA0..U+1EF9 U+1F00..U+1F15
4430 U+1F18..U+1F1D U+1F20..U+1F45 U+1F48..U+1F4D
4431 U+1F50..U+1F57 U+1F59 U+1F5B U+1F5D
4432 U+1F5F..U+1F7D U+1F80..U+1FB4 U+1FB6..U+1FBC
4433 U+1FBE U+1FC2..U+1FC4 U+1FC6..U+1FCC
4434 U+1FD0..U+1FD3 U+1FD6..U+1FDB U+1FE0..U+1FEC
4435 U+1FF2..U+1FF4 U+1FF6..U+1FFC U+2126
4436 U+212A..U+212B U+212E U+2180..U+2182
4437 U+3041..U+3094 U+30A1..U+30FA U+3105..U+312C
4438 U+AC00..U+D7A3
4439 // Ideographic
4440 U+4E00..U+9FA5 U+3007 U+3021..U+3029
4441 ];
4442 $NameChar10 := [
4443 '.' '-' '_' ':'
4444 // Letter
4445 // BaseChar
4446 U+0041..U+005A U+0061..U+007A U+00C0..U+00D6
4447 U+00D8..U+00F6 U+00F8..U+00FF U+0100..U+0131
4448 U+0134..U+013E U+0141..U+0148 U+014A..U+017E
4449 U+0180..U+01C3 U+01CD..U+01F0 U+01F4..U+01F5
4450 U+01FA..U+0217 U+0250..U+02A8 U+02BB..U+02C1
4451 U+0386 U+0388..U+038A U+038C U+038E..U+03A1
4452 U+03A3..U+03CE U+03D0..U+03D6 U+03DA U+03DC
4453 U+03DE U+03E0 U+03E2..U+03F3 U+0401..U+040C
4454 U+040E..U+044F U+0451..U+045C U+045E..U+0481
4455 U+0490..U+04C4 U+04C7..U+04C8 U+04CB..U+04CC
4456 U+04D0..U+04EB U+04EE..U+04F5 U+04F8..U+04F9
4457 U+0531..U+0556 U+0559 U+0561..U+0586
4458 U+05D0..U+05EA U+05F0..U+05F2 U+0621..U+063A
4459 U+0641..U+064A U+0671..U+06B7 U+06BA..U+06BE
4460 U+06C0..U+06CE U+06D0..U+06D3 U+06D5
4461 U+06E5..U+06E6 U+0905..U+0939 U+093D
4462 U+0958..U+0961 U+0985..U+098C U+098F..U+0990
4463 U+0993..U+09A8 U+09AA..U+09B0 U+09B2
4464 U+09B6..U+09B9 U+09DC..U+09DD U+09DF..U+09E1
4465 U+09F0..U+09F1 U+0A05..U+0A0A U+0A0F..U+0A10
4466 U+0A13..U+0A28 U+0A2A..U+0A30 U+0A32..U+0A33
4467 U+0A35..U+0A36 U+0A38..U+0A39 U+0A59..U+0A5C
4468 U+0A5E U+0A72..U+0A74 U+0A85..U+0A8B U+0A8D
4469 U+0A8F..U+0A91 U+0A93..U+0AA8 U+0AAA..U+0AB0
4470 U+0AB2..U+0AB3 U+0AB5..U+0AB9 U+0ABD U+0AE0
4471 U+0B05..U+0B0C U+0B0F..U+0B10 U+0B13..U+0B28
4472 U+0B2A..U+0B30 U+0B32..U+0B33 U+0B36..U+0B39
4473 U+0B3D U+0B5C..U+0B5D U+0B5F..U+0B61
4474 U+0B85..U+0B8A U+0B8E..U+0B90 U+0B92..U+0B95
4475 U+0B99..U+0B9A U+0B9C U+0B9E..U+0B9F
4476 U+0BA3..U+0BA4 U+0BA8..U+0BAA U+0BAE..U+0BB5
4477 U+0BB7..U+0BB9 U+0C05..U+0C0C U+0C0E..U+0C10
4478 U+0C12..U+0C28 U+0C2A..U+0C33 U+0C35..U+0C39
4479 U+0C60..U+0C61 U+0C85..U+0C8C U+0C8E..U+0C90
4480 U+0C92..U+0CA8 U+0CAA..U+0CB3 U+0CB5..U+0CB9
4481 U+0CDE U+0CE0..U+0CE1 U+0D05..U+0D0C
4482 U+0D0E..U+0D10 U+0D12..U+0D28 U+0D2A..U+0D39
4483 U+0D60..U+0D61 U+0E01..U+0E2E U+0E30
4484 U+0E32..U+0E33 U+0E40..U+0E45 U+0E81..U+0E82
4485 U+0E84 U+0E87..U+0E88 U+0E8A U+0E8D
4486 U+0E94..U+0E97 U+0E99..U+0E9F U+0EA1..U+0EA3
4487 U+0EA5 U+0EA7 U+0EAA..U+0EAB U+0EAD..U+0EAE
4488 U+0EB0 U+0EB2..U+0EB3 U+0EBD U+0EC0..U+0EC4
4489 U+0F40..U+0F47 U+0F49..U+0F69 U+10A0..U+10C5
4490 U+10D0..U+10F6 U+1100 U+1102..U+1103
4491 U+1105..U+1107 U+1109 U+110B..U+110C
4492 U+110E..U+1112 U+113C U+113E U+1140 U+114C
4493 U+114E U+1150 U+1154..U+1155 U+1159
4494 U+115F..U+1161 U+1163 U+1165 U+1167 U+1169
4495 U+116D..U+116E U+1172..U+1173 U+1175 U+119E
4496 U+11A8 U+11AB U+11AE..U+11AF U+11B7..U+11B8
4497 U+11BA U+11BC..U+11C2 U+11EB U+11F0 U+11F9
4498 U+1E00..U+1E9B U+1EA0..U+1EF9 U+1F00..U+1F15
4499 U+1F18..U+1F1D U+1F20..U+1F45 U+1F48..U+1F4D
4500 U+1F50..U+1F57 U+1F59 U+1F5B U+1F5D
4501 U+1F5F..U+1F7D U+1F80..U+1FB4 U+1FB6..U+1FBC
4502 U+1FBE U+1FC2..U+1FC4 U+1FC6..U+1FCC
4503 U+1FD0..U+1FD3 U+1FD6..U+1FDB U+1FE0..U+1FEC
4504 U+1FF2..U+1FF4 U+1FF6..U+1FFC U+2126
4505 U+212A..U+212B U+212E U+2180..U+2182
4506 U+3041..U+3094 U+30A1..U+30FA U+3105..U+312C
4507 U+AC00..U+D7A3
4508 // Ideographic
4509 U+4E00..U+9FA5 U+3007 U+3021..U+3029
4510 // Digit
4511 U+0030..U+0039 U+0660..U+0669 U+06F0..U+06F9
4512 U+0966..U+096F U+09E6..U+09EF U+0A66..U+0A6F
4513 U+0AE6..U+0AEF U+0B66..U+0B6F U+0BE7..U+0BEF
4514 U+0C66..U+0C6F U+0CE6..U+0CEF U+0D66..U+0D6F
4515 U+0E50..U+0E59 U+0ED0..U+0ED9 U+0F20..U+0F29
4516 // CombiningChar
4517 U+0300..U+0345 U+0360..U+0361 U+0483..U+0486
4518 U+0591..U+05A1 U+05A3..U+05B9 U+05BB..U+05BD
4519 U+05BF U+05C1..U+05C2 U+05C4 U+064B..U+0652
4520 U+0670 U+06D6..U+06DC U+06DD..U+06DF
4521 U+06E0..U+06E4 U+06E7..U+06E8 U+06EA..U+06ED
4522 U+0901..U+0903 U+093C U+093E..U+094C U+094D
4523 U+0951..U+0954 U+0962..U+0963 U+0981..U+0983
4524 U+09BC U+09BE U+09BF U+09C0..U+09C4
4525 U+09C7..U+09C8 U+09CB..U+09CD U+09D7
4526 U+09E2..U+09E3 U+0A02 U+0A3C U+0A3E U+0A3F
4527 U+0A40..U+0A42 U+0A47..U+0A48 U+0A4B..U+0A4D
4528 U+0A70..U+0A71 U+0A81..U+0A83 U+0ABC
4529 U+0ABE..U+0AC5 U+0AC7..U+0AC9 U+0ACB..U+0ACD
4530 U+0B01..U+0B03 U+0B3C U+0B3E..U+0B43
4531 U+0B47..U+0B48 U+0B4B..U+0B4D U+0B56..U+0B57
4532 U+0B82..U+0B83 U+0BBE..U+0BC2 U+0BC6..U+0BC8
4533 U+0BCA..U+0BCD U+0BD7 U+0C01..U+0C03
4534 U+0C3E..U+0C44 U+0C46..U+0C48 U+0C4A..U+0C4D
4535 U+0C55..U+0C56 U+0C82..U+0C83 U+0CBE..U+0CC4
4536 U+0CC6..U+0CC8 U+0CCA..U+0CCD U+0CD5..U+0CD6
4537 U+0D02..U+0D03 U+0D3E..U+0D43 U+0D46..U+0D48
4538 U+0D4A..U+0D4D U+0D57 U+0E31 U+0E34..U+0E3A
4539 U+0E47..U+0E4E U+0EB1 U+0EB4..U+0EB9
4540 U+0EBB..U+0EBC U+0EC8..U+0ECD U+0F18..U+0F19
4541 U+0F35 U+0F37 U+0F39 U+0F3E U+0F3F
4542 U+0F71..U+0F84 U+0F86..U+0F8B U+0F90..U+0F95
4543 U+0F97 U+0F99..U+0FAD U+0FB1..U+0FB7 U+0FB9
4544 U+20D0..U+20DC U+20E1 U+302A..U+302F U+3099
4545 U+309A
4546 // Extender
4547 U+00B7 U+02D0 U+02D1 U+0387 U+0640 U+0E46
4548 U+0EC6 U+3005 U+3031..U+3035 U+309D..U+309E
4549 U+30FC..U+30FE
4550 ];
4551
4552 $NameStartChar11 := [
4553 ':' '_'
4554 'A' 'B' 'C' 'D' 'E' 'F' 'G' 'H' 'I' 'J' 'K' 'L' 'M'
4555 'N' 'O' 'P' 'Q' 'R' 'S' 'T' 'U' 'V' 'W' 'X' 'Y' 'Z'
4556 'a' 'b' 'c' 'd' 'e' 'f' 'g' 'h' 'i' 'j' 'k' 'l' 'm'
4557 'n' 'o' 'p' 'q' 'r' 's' 't' 'u' 'v' 'w' 'x' 'y' 'z'
4558 U+00C0..U+00D6 U+00D8..U+00F6 U+00F8..U+02FF
4559 U+0370..U+037D U+037F..U+1FFF U+200C..U+200D
4560 U+2070..U+218F U+2C00..U+2FEF U+3001..U+D7FF
4561 U+F900..U+FDCF U+FDF0..U+FFFD U+10000..U+EFFFF
4562 ];
4563 $NameChar11 := [
4564 '-' '.' '0' '1' '2' '3' '4' '5' '6' '7' '8' '9'
4565 U+00B7 U+0300..U+036F U+203F..U+2040
4566 // NameStartChar
4567 ':' '_'
4568 'A' 'B' 'C' 'D' 'E' 'F' 'G' 'H' 'I' 'J' 'K' 'L' 'M'
4569 'N' 'O' 'P' 'Q' 'R' 'S' 'T' 'U' 'V' 'W' 'X' 'Y' 'Z'
4570 'a' 'b' 'c' 'd' 'e' 'f' 'g' 'h' 'i' 'j' 'k' 'l' 'm'
4571 'n' 'o' 'p' 'q' 'r' 's' 't' 'u' 'v' 'w' 'x' 'y' 'z'
4572 U+00C0..U+00D6 U+00D8..U+00F6 U+00F8..U+02FF
4573 U+0370..U+037D U+037F..U+1FFF U+200C..U+200D
4574 U+2070..U+218F U+2C00..U+2FEF U+3001..U+D7FF
4575 U+F900..U+FDCF U+FDF0..U+FFFD U+10000..U+EFFFF
4576 ];
4577 } // NameChar
4578
4579 lexmode Name
4580 : extends => 'NameChar'
4581 {
4582 Name : value := $NameStartChar11 $NameChar11*;
4583 } // Name
4584
4585 lexmode Nmtoken
4586 : extends => 'NameChar'
4587 {
4588 Nmtoken : value := $NameChar11*;
4589 } // Nmtoken
4590
4591 /*
4592 S
4593 */
4594 lexmode S {
4595 $s := [U+0009 U+000A U+000D U+0020];
4596 S := $s+;
4597 } // S
4598
4599 /*
4600 Document end scanning mode
4601 */
4602 lexmode DocumentEnd
4603 : standalone
4604 : extends => 'S'
4605 {
4606 /*
4607 Processing instruction
4608 */
4609 PIO := ['<'] ['?'];
4610
4611 /*
4612 Comment declaration
4613 */
4614 CDO := ['<'] ['!'] ['-'] ['-'];
4615 } // DocumentEnd
4616
4617 /*
4618 Document misc scanning mode
4619
4620 This mode scans |Misc| constructions as well
4621 as document element's start tag.
4622 */
4623 lexmode DocumentMisc
4624 : standalone
4625 : extends => 'DocumentEnd'
4626 {
4627 /*
4628 Document element start tag
4629 */
4630 STAGO := ['<'];
4631 } // DocumentMisc
4632
4633 /*
4634 Document prolog scanning mode
4635 */
4636 lexmode DocumentProlog
4637 : standalone
4638 : extends => 'DocumentMisc'
4639 {
4640 /*
4641 |DOCTYPE| declaration
4642 */
4643 MDO := ['<'] ['!'];
4644 } // DocumentProlog
4645
4646 /*
4647 Document Start Scanning Mode
4648 */
4649 lexmode DocumentStart
4650 : standalone
4651 : extends => 'DocumentProlog'
4652 {
4653 /*
4654 XML declaration
4655 */
4656 XDO := ['<'] ['?'] ['x'] ['m'] ['l'];
4657 } // DocumentStart
4658
4659 /*
4660 Comment declaration scanning mode
4661 */
4662 lexmode CommentDeclaration
4663 : standalone
4664 {
4665 /*
4666 Comment close
4667 */
4668 COM := ['-'] ['-'];
4669
4670 /*
4671 Comment data
4672 */
4673 ?default-token STRING : value;
4674 } // CommentDeclaration
4675
4676 /*
4677 Processing instruction name and |S| scanning mode
4678 */
4679 lexmode PIName
4680 : standalone
4681 : extends => 'Name'
4682 : extends => 'S'
4683 {
4684 /*
4685 Processing instruction close
4686 */
4687 PIC := ['?'] ['>'];
4688 } // PIName
4689
4690 /*
4691 Processing instruction name and |S| scanning mode
4692 */
4693 lexmode PINmtoken
4694 : standalone
4695 : extends => 'Nmtoken'
4696 : extends => 'S'
4697 {
4698 /*
4699 Processing instruction close
4700 */
4701 PIC := ['?'] ['>'];
4702 } // PINmtoken
4703
4704 /*
4705 Processing instruction data scanning mode
4706 */
4707 lexmode PIData
4708 : standalone
4709 {
4710 /*
4711 Processing instruction close
4712 */
4713 PIC := ['?'] ['>'];
4714
4715 /*
4716 Processing instruction target data
4717 */
4718 ?default-token DATA : value;
4719 } // PIData
4720
4721 /*
4722 Content of element scanning mode
4723 */
4724 lexmode ElementContent
4725 : standalone
4726 {
4727 /*
4728 Start tag open
4729 */
4730 STAGO := ['<'];
4731
4732 /*
4733 End tag open
4734 */
4735 ETAGO := ['<'] ['/'];
4736
4737 /*
4738 Hexadecimal character reference open
4739 */
4740 HCRO := ['&'] ['#'] ['x'];
4741
4742 /*
4743 Numeric character reference open
4744 */
4745 CRO := ['&'] ['#'];
4746
4747 /*
4748 General entity reference open
4749 */
4750 ERO := ['&'];
4751
4752 /*
4753 Comment declaration open
4754 */
4755 CDO := ['<'] ['!'] ['-'] ['-'];
4756
4757 /*
4758 CDATA section open
4759 */
4760 CDSO := ['<'] ['!'] ['[']
4761 ['C'] ['D'] ['A'] ['T'] ['A'] ['['];
4762
4763 /*
4764 Processing instruction open
4765 */
4766 PIO := ['<'] ['?'];
4767
4768 /*
4769 Markup section end
4770 */
4771 MSE := [']'] [']'] ['>'];
4772
4773 /*
4774 Character data
4775 */
4776 /*
4777 Character data and/or |MSE|
4778 */
4779 ?default-token CharData : value;
4780 } // ElementContent
4781
4782 /*
4783 CDATA section content scanning mode
4784 */
4785 lexmode CDATASectionContent
4786 : standalone
4787 {
4788 /*
4789 Markup section end
4790 */
4791 MSE := [']'] [']'] ['>'];
4792
4793 /*
4794 Character data
4795 */
4796 ?default-token CData : value;
4797 } // CDATASectionContent
4798
4799 lexmode EntityReference
4800 : standalone
4801 : extends => 'Name'
4802 {
4803 /*
4804 Reference close
4805 */
4806 REFC := [';'];
4807 } // EntityReference
4808
4809 lexmode NumericCharacterReference
4810 : standalone
4811 {
4812 /*
4813 Decimal number
4814 */
4815 $digit := ['0' '1' '2' '3' '4' '5' '6' '7' '8' '9'];
4816 NUMBER : value := $digit+;
4817
4818 /*
4819 Reference close
4820 */
4821 REFC := [';'];
4822 } // NumericCharacterReference
4823
4824 lexmode HexadecimalCharacterReference
4825 : standalone
4826 {
4827 /*
4828 Hexadecimal number
4829 */
4830 $hexdigit := ['0' '1' '2' '3' '4' '5' '6' '7' '8' '9'
4831 'A' 'B' 'C' 'D' 'E' 'F'
4832 'a' 'b' 'c' 'd' 'e' 'f'];
4833 Hex : value := $hexdigit+;
4834
4835 /*
4836 Reference close
4837 */
4838 REFC := [';'];
4839 } // HexadecimalCharacterReference
4840
4841 /*
4842 The XML Declaration and Text Declaration Scanning Mode
4843 */
4844 lexmode XMLDeclaration
4845 : standalone
4846 : extends => 'Name'
4847 : extends => 'S'
4848 {
4849
4850 /*
4851 Value indicator
4852 */
4853 VI := ['='];
4854
4855 /*
4856 Literal open
4857 */
4858 LIT := ['"'];
4859 LITA := [U+0027];
4860
4861 /*
4862 Processing instruction close
4863
4864 The |PIC|, i.e. |?>|, is split into two tokens |PIC1| and |PIC2|
4865 in this scanning mode to set |no_xml11_eol| flag in the
4866 |_XMLDeclaration_| |rule|.
4867 */
4868 PIC1 := ['?'];
4869 PIC2 := ['>'];
4870 } // XMLDeclaration
4871
4872 /*
4873 The XML Declaration or Processing Instruction Scanning Mode
4874
4875 '<?xml' S ...
4876 (DocumentStart) (XMLDeclarationOrPI) (XMLDeclaration)
4877 '<?xml' '1' S ...
4878 (DocumentStart) (XMLDeclarationOrPI) (PINmtoken)(PIName) (PITarget)
4879 '<?xml' '-' 'stylesheet' S ...
4880 (DocumentStart) (XMLDeclarationOrPI) (PINmtoken) (PIName) (PITarget)
4881 */
4882 lexmode XMLDeclarationOrPI
4883 : standalone
4884 : extends => 'NameChar'
4885 : extends => 'S'
4886 {
4887 NameChar : value := $NameChar11;
4888 } // XMLDeclarationOrPI
4889
4890 lexmode StartTag
4891 : standalone
4892 : extends => 'Name'
4893 : extends => 'S'
4894 {
4895
4896 /*
4897 Value indicator
4898 */
4899 VI := ['='];
4900
4901 /*
4902 Literal open
4903 */
4904 LIT := ['"'];
4905 LITA := [U+0027];
4906
4907 /*
4908 Tag close
4909 */
4910 TAGC := ['>'];
4911
4912 /*
4913 Null end-tag enabled start-tag close
4914 */
4915 NESTC := ['/'];
4916 } // StartTag
4917
4918 lexmode EndTag
4919 : standalone
4920 : extends => 'Name'
4921 : extends => 'S'
4922 {
4923 /*
4924 Tag close
4925 */
4926 TAGC := ['>'];
4927 } // EndTag
4928
4929 lexmode AttributeValueLiteral_ {
4930 ERO := ['&'];
4931 CRO := ['&'] ['#'];
4932 HCRO := ['&'] ['#'] ['x'];
4933 } // AttributeValueLiteral_
4934
4935 lexmode AttributeValueLiteral
4936 : standalone
4937 : extends => 'AttributeValueLiteral_'
4938 {
4939 LIT := ['"'];
4940 STRING : value := [^'"' '&' '<']+;
4941 } // AttributeValueLiteral
4942
4943 lexmode AttributeValueLiteralA
4944 : standalone
4945 : extends => 'AttributeValueLiteral_'
4946 {
4947 LITA := [U+0027];
4948 STRING : value := [^U+0027 '&' '<']+;
4949 } // AttributeValueLiteralA
4950
4951 lexmode AttributeValueLiteralE
4952 : standalone
4953 : extends => 'AttributeValueLiteral_'
4954 {
4955 STRING : value := [^'&' '<']+;
4956 } // AttributeValueLiteralE
4957
4958 lexmode EntityValue_ {
4959 PERO := ['%'];
4960 ERO := ['&'];
4961 CRO := ['&'] ['#'];
4962 HCRO := ['&'] ['#'] ['x'];
4963 } // EntityValue_
4964
4965 lexmode EntityValue
4966 : standalone
4967 : extends => 'EntityValue_'
4968 {
4969 LIT := ['"'];
4970 STRING : value := [^'"' '&' '%']+;
4971 } // EntityValue
4972
4973 lexmode EntityValueA
4974 : standalone
4975 : extends => 'EntityValue_'
4976 {
4977 LITA := [U+0027];
4978 STRING : value := [^U+0027 '&' '%']+;
4979 } // EntityValueA
4980
4981 lexmode SystemLiteral
4982 : standalone
4983 {
4984 LIT := ['"'];
4985 ?default-token STRING : value;
4986 } // SystemLiteral
4987
4988 lexmode SystemLiteralA
4989 : standalone
4990 {
4991 LITA := [U+0027];
4992 ?default-token STRING : value;
4993 } // SystemLiteralA
4994
4995 lexmode DTD
4996 : standalone
4997 : extends => 'S'
4998 {
4999 /*
5000 Markup declaration open
5001 */
5002 MDO := ['<'] ['!'];
5003
5004 /*
5005 Comment declaration open
5006 */
5007 CDO := ['<'] ['!'] ['-'] ['-'];
5008
5009 /*
5010 Processing instruction open
5011 */
5012 PIO := ['<'] ['?'];
5013
5014 /*
5015 Parameter entity reference open
5016 */
5017 PERO := ['%'];
5018
5019 /*
5020 Declaration subset close
5021 */
5022 DSC := [']'];
5023
5024 /*
5025 Contition section open
5026 */
5027 CSO := ['<'] ['!'] ['['];
5028 } // DTD
5029
5030 /*
5031 Markup declaration scanning mode
5032
5033 This mode is used to recognize |MDC| that terminates
5034 a comment declaration as well as the base |lexmode|
5035 for e.g. document type declaration scanning mode.
5036 */
5037 lexmode MarkupDeclaration
5038 : standalone
5039 : extends => 'Name'
5040 : extends => 'S'
5041 {
5042 /*
5043 Markup declaration close
5044 */
5045 MDC := ['>'];
5046
5047 /*
5048 Literal open
5049 */
5050 LIT := ['"'];
5051
5052 /*
5053 Alternative literal open
5054 */
5055 LITA := [U+0027];
5056
5057 /*
5058 Parameter entity reference open
5059 */
5060 PERO := ['%'];
5061
5062 /*
5063 Declaration subset open
5064 */
5065 DSO := ['['];
5066 } // MarkupDeclaration
5067
5068 lexmode ElementDeclaration
5069 : standalone
5070 : extends => 'MarkupDeclaration'
5071 {
5072 /*
5073 Model group open
5074 */
5075 MGO := ['('];
5076
5077 /*
5078 Model group close
5079 */
5080 MGC := [')'];
5081
5082 /*
5083 Reserved name indicator
5084 */
5085 RNI := ['#'];
5086
5087 /*
5088 Occurence indicators
5089 */
5090 OPT := ['?'];
5091 REP := ['*'];
5092 PLUS := ['+'];
5093
5094 /*
5095 Connectors
5096 */
5097 OR := ['|'];
5098 SEQ := [','];
5099 } // ElementDeclaration
5100
5101 lexmode AttlistDeclaration
5102 : standalone
5103 : extends => 'MarkupDeclaration'
5104 {
5105 /*
5106 Enumeration group open
5107 */
5108 EGO := ['('];
5109
5110 /*
5111 Enumeration group close
5112 */
5113 EGC := [')'];
5114
5115 /*
5116 Enumeration choice delimiter
5117 */
5118 OR := ['|'];
5119
5120 /*
5121 Reserved name indicator
5122 */
5123 RNI := ['#'];
5124 } // AttlistDeclaration
5125
5126 lexmode Enumeration
5127 : standalone
5128 : extends => 'Nmtoken'
5129 : extends => 'S'
5130 {
5131 /*
5132 Enumeration group close
5133 */
5134 EGC := [')'];
5135
5136 /*
5137 Enumeration choice delimiter
5138 */
5139 OR := ['|'];
5140 } // Enumeration
5141
5142
5143 token-error default : default {
5144 lang:Perl {
5145 my $location;
5146 __CODE{xp|get-location-from-token::
5147 $token => {$token},
5148 $result => {$location},
5149 }__;
5150 my $continue = __DOMCore:ERROR{xp|wf-syntax-error::
5151 xp|error-token => {$token},
5152 DOMCore|location => {$location},
5153 }__;
5154 unless ($continue) {
5155 __CODE{ParseError}__;
5156 }
5157 }
5158 } // default
5159
5160 @ResourceDef:
5161 @@ForCheck: ManakaiDOM|ForClass
5162 @@QName: ParseError
5163 @@rdf:type: DISPerl|BlockCode
5164 @@PerlDef:
5165 __DEEP{
5166 for (@{$self->{entity}}) {
5167 $_->{close_file}->();
5168 }
5169 }__;
5170 __EXCEPTION{DOMLS|PARSE_ERR}__;
5171
5172 @ResourceDef:
5173 @@ForCheck: ManakaiDOM|ForClass
5174 @@QName: checkNCName
5175 @@rdf:type: DISPerl|BlockCode
5176 @@PerlDef:
5177 if (($self->{xml_version} eq '1.0' and
5178 not <Code::DOMMain|testXML10Name:: $INPUT = $name>) or
5179 ($self->{xml_version} eq '1.1' and
5180 not <Code::DOMMain|testXML11Name:: $INPUT = $name>)) {
5181 my $__location;
5182 __CODE{xp|get-location-from-token::
5183 $token => {$token},
5184 $result => {$__location},
5185 }__;
5186 my $__continue = __c|ERROR{xp|wf-invalid-character-in-node-name::
5187 xp|error-token => {$token},
5188 c|location => {$__location},
5189 xp|name => {$name},
5190 infoset|version => {$self->{xml_version}},
5191 }__;
5192 unless ($__continue) {
5193 __CODE{ParseError}__;
5194 }
5195 } elsif (index ($name, ':') > -1) {
5196 my $__location;
5197 __CODE{xp|get-location-from-token::
5198 $token => {$token},
5199 $result => {$__location},
5200 }__;
5201 my $__continue = __c|ERROR{xp|nswf-legal-ncname::
5202 xp|error-token => {$token},
5203 c|location => {$__location},
5204 xp|name => {$name},
5205 infoset|version => {$self->{xml_version}},
5206 }__;
5207 unless ($__continue) {
5208 __CODE{ParseError}__;
5209 }
5210 }
5211
5212 @ResourceDef:
5213 @@ForCheck: ManakaiDOM|ForClass
5214 @@QName: checkQName
5215 @@rdf:type: DISPerl|BlockCode
5216 @@PerlDef:
5217 if (($self->{xml_version} eq '1.0' and
5218 not <Code::DOMMain|testXML10Name:: $INPUT = $name>) or
5219 ($self->{xml_version} eq '1.1' and
5220 not <Code::DOMMain|testXML11Name:: $INPUT = $name>)) {
5221 my $__location;
5222 __CODE{xp|get-location-from-token::
5223 $token => {$token},
5224 $result => {$__location},
5225 }__;
5226 my $__continue = __c|ERROR{xp|wf-invalid-character-in-node-name::
5227 xp|error-token => {$token},
5228 c|location => {$__location},
5229 xp|name => {$name},
5230 infoset|version => {$self->{xml_version}},
5231 }__;
5232 unless ($__continue) {
5233 __CODE{ParseError}__;
5234 }
5235 } elsif (($self->{xml_version} eq '1.0' and
5236 not <Code::DOMMain|testXML10QName:: $INPUT = $name>) or
5237 ($self->{xml_version} eq '1.1' and
5238 not <Code::DOMMain|testXML11QName:: $INPUT = $name>)) {
5239 my $__location;
5240 __CODE{xp|get-location-from-token::
5241 $token => {$token},
5242 $result => {$__location},
5243 }__;
5244 my $__continue = __c|ERROR{xp|nswf-legal-qname::
5245 xp|error-token => {$token},
5246 c|location => {$__location},
5247 xp|name => {$name},
5248 infoset|version => {$self->{xml_version}},
5249 }__;
5250 unless ($__continue) {
5251 __CODE{ParseError}__;
5252 }
5253 }
5254
5255
5256 @XMLTests:
5257 @@XMLTest:
5258 @@@QName: xp.char.xml10.test
5259 @@@DEnt:
5260 @@@@test:value:
5261 <?xml version="1.0"?>
5262 <p>$u0009$u000A$u000D$u0020$uD7FF$uE000$uFFFD$U00010000$U0010FFFF</p>
5263 @@@test:domTree:
5264 document {
5265 xml-version: '1.0';
5266 element {
5267 text-content: U+0009 U+000A U+000A U+0020 U+D7FF
5268 U+E000 U+FFFD U+10000 U+10FFFF;
5269 }
5270 }
5271 @@XMLTest:
5272 @@@QName: xp.char.xml11.test
5273 @@@DEnt:
5274 @@@@test:value:
5275 <?xml version="1.1"?>
5276 <p>$u0009$u000A$u000D$u0020$uD7FF$uE000$uFFFD$U00010000$U0010FFFF</p>
5277 @@@test:domTree:
5278 document {
5279 xml-version: '1.1';
5280 element {
5281 text-content: U+0009 U+000A U+000A U+0020 U+D7FF
5282 U+E000 U+FFFD U+10000 U+10FFFF;
5283 }
5284 }
5285 @@XMLTest:
5286 @@@QName: xp.char.xml10.c0.test
5287 @@@DEnt:
5288 @@@@test:value:
5289 <?xml version="1.0"?>
5290 <p>$u0000$u0001$u0002$u0003$u0004$u0005$u0006$u0007$u0008$u000B$
5291 $u000C$u000E$u000F$u0010$u0011$u0012$u0013$u0014$u0015$u0016$
5292 $u0017$u0018$u0019$u001A$u001B$u001C$u001D$u001E$u001F</p>
5293 @@@c:erred: <[xp|wf-legal-literal-character]> { (2, 4); } /* U+0000 */
5294 @@@c:erred: <[xp|wf-legal-literal-character]> { (2, 5); } /* U+0001 */
5295 @@@c:erred: <[xp|wf-legal-literal-character]> { (2, 6); } /* U+0002 */
5296 @@@c:erred: <[xp|wf-legal-literal-character]> { (2, 7); } /* U+0003 */
5297 @@@c:erred: <[xp|wf-legal-literal-character]> { (2, 8); } /* U+0004 */
5298 @@@c:erred: <[xp|wf-legal-literal-character]> { (2, 9); } /* U+0005 */
5299 @@@c:erred: <[xp|wf-legal-literal-character]> { (2, 10); } /* U+0006 */
5300 @@@c:erred: <[xp|wf-legal-literal-character]> { (2, 11); } /* U+0007 */
5301 @@@c:erred: <[xp|wf-legal-literal-character]> { (2, 12); } /* U+0008 */
5302 @@@c:erred: <[xp|wf-legal-literal-character]> { (2, 13); } /* U+000B */
5303 @@@c:erred: <[xp|wf-legal-literal-character]> { (2, 14); } /* U+000C */
5304 @@@c:erred: <[xp|wf-legal-literal-character]> { (2, 15); } /* U+000E */
5305 @@@c:erred: <[xp|wf-legal-literal-character]> { (2, 16); } /* U+000F */
5306 @@@c:erred: <[xp|wf-legal-literal-character]> { (2, 17); } /* U+0010 */
5307 @@@c:erred: <[xp|wf-legal-literal-character]> { (2, 18); } /* U+0011 */
5308 @@@c:erred: <[xp|wf-legal-literal-character]> { (2, 19); } /* U+0012 */
5309 @@@c:erred: <[xp|wf-legal-literal-character]> { (2, 20); } /* U+0013 */
5310 @@@c:erred: <[xp|wf-legal-literal-character]> { (2, 21); } /* U+0014 */
5311 @@@c:erred: <[xp|wf-legal-literal-character]> { (2, 22); } /* U+0015 */
5312 @@@c:erred: <[xp|wf-legal-literal-character]> { (2, 23); } /* U+0016 */
5313 @@@c:erred: <[xp|wf-legal-literal-character]> { (2, 24); } /* U+0017 */
5314 @@@c:erred: <[xp|wf-legal-literal-character]> { (2, 25); } /* U+0018 */
5315 @@@c:erred: <[xp|wf-legal-literal-character]> { (2, 26); } /* U+0019 */
5316 @@@c:erred: <[xp|wf-legal-literal-character]> { (2, 27); } /* U+001A */
5317 @@@c:erred: <[xp|wf-legal-literal-character]> { (2, 28); } /* U+001B */
5318 @@@c:erred: <[xp|wf-legal-literal-character]> { (2, 29); } /* U+001C */
5319 @@@c:erred: <[xp|wf-legal-literal-character]> { (2, 30); } /* U+001D */
5320 @@@c:erred: <[xp|wf-legal-literal-character]> { (2, 31); } /* U+001E */
5321 @@@c:erred: <[xp|wf-legal-literal-character]> { (2, 32); } /* U+001F */
5322 @@XMLTest:
5323 @@@QName: xp.char.xml11.c0.test
5324 @@@DEnt:
5325 @@@@test:value:
5326 <?xml version="1.1"?>
5327 <p>$u0000$u0001$u0002$u0003$u0004$u0005$u0006$u0007$u0008$u000B$
5328 $u000C$u000E$u000F$u0010$u0011$u0012$u0013$u0014$u0015$u0016$
5329 $u0017$u0018$u0019$u001A$u001B$u001C$u001D$u001E$u001F</p>
5330 @@@c:erred: <[xp|wf-legal-literal-character]> { (2, 4); } /* U+0000 */
5331 @@@c:erred: <[xp|wf-legal-literal-character]> { (2, 5); } /* U+0001 */
5332 @@@c:erred: <[xp|wf-legal-literal-character]> { (2, 6); } /* U+0002 */
5333 @@@c:erred: <[xp|wf-legal-literal-character]> { (2, 7); } /* U+0003 */
5334 @@@c:erred: <[xp|wf-legal-literal-character]> { (2, 8); } /* U+0004 */
5335 @@@c:erred: <[xp|wf-legal-literal-character]> { (2, 9); } /* U+0005 */
5336 @@@c:erred: <[xp|wf-legal-literal-character]> { (2, 10); } /* U+0006 */
5337 @@@c:erred: <[xp|wf-legal-literal-character]> { (2, 11); } /* U+0007 */
5338 @@@c:erred: <[xp|wf-legal-literal-character]> { (2, 12); } /* U+0008 */
5339 @@@c:erred: <[xp|wf-legal-literal-character]> { (2, 13); } /* U+000B */
5340 @@@c:erred: <[xp|wf-legal-literal-character]> { (2, 14); } /* U+000C */
5341 @@@c:erred: <[xp|wf-legal-literal-character]> { (2, 15); } /* U+000E */
5342 @@@c:erred: <[xp|wf-legal-literal-character]> { (2, 16); } /* U+000F */
5343 @@@c:erred: <[xp|wf-legal-literal-character]> { (2, 17); } /* U+0010 */
5344 @@@c:erred: <[xp|wf-legal-literal-character]> { (2, 18); } /* U+0011 */
5345 @@@c:erred: <[xp|wf-legal-literal-character]> { (2, 19); } /* U+0012 */
5346 @@@c:erred: <[xp|wf-legal-literal-character]> { (2, 20); } /* U+0013 */
5347 @@@c:erred: <[xp|wf-legal-literal-character]> { (2, 21); } /* U+0014 */
5348 @@@c:erred: <[xp|wf-legal-literal-character]> { (2, 22); } /* U+0015 */
5349 @@@c:erred: <[xp|wf-legal-literal-character]> { (2, 23); } /* U+0016 */
5350 @@@c:erred: <[xp|wf-legal-literal-character]> { (2, 24); } /* U+0017 */
5351 @@@c:erred: <[xp|wf-legal-literal-character]> { (2, 25); } /* U+0018 */
5352 @@@c:erred: <[xp|wf-legal-literal-character]> { (2, 26); } /* U+0019 */
5353 @@@c:erred: <[xp|wf-legal-literal-character]> { (2, 27); } /* U+001A */
5354 @@@c:erred: <[xp|wf-legal-literal-character]> { (2, 28); } /* U+001B */
5355 @@@c:erred: <[xp|wf-legal-literal-character]> { (2, 29); } /* U+001C */
5356 @@@c:erred: <[xp|wf-legal-literal-character]> { (2, 30); } /* U+001D */
5357 @@@c:erred: <[xp|wf-legal-literal-character]> { (2, 31); } /* U+001E */
5358 @@@c:erred: <[xp|wf-legal-literal-character]> { (2, 32); } /* U+001F */
5359 @@XMLTest:
5360 @@@QName: xp.char.xml10.c1.test
5361 @@@DEnt:
5362 @@@@test:value:
5363 <?xml version="1.0"?>
5364 <p>$u007F$u0080$u0081$u0082$u0083$u0084$u0086$u0087$u0088$
5365 $u0089$u008A$u008B$u008C$
5366 $u008D$u008E$u008F$u0090$u0091$u0092$u0093$u0094$u0095$u0096$
5367 $u0097$u0098$u0099$u009A$u009B$u009C$u009D$u009E$u009F$u0085</p>
5368 @@@test:domTree:
5369 document {
5370 xml-version: '1.0';
5371 element {
5372 text-content: U+007F U+0080 U+0081 U+0082 U+0083 U+0084 U+0086
5373 U+0087 U+0088 U+0089 U+008A U+008B U+008C U+008D
5374 U+008E U+008F U+0090 U+0091 U+0092 U+0093 U+0094
5375 U+0095 U+0096 U+0097 U+0098 U+0099 U+009A U+009B
5376 U+009C U+009D U+009E U+009F U+0085;
5377 }
5378 }
5379 @@XMLTest:
5380 @@@QName: xp.char.xml11.c1.test
5381 @@@DEnt:
5382 @@@@test:value:
5383 <?xml version="1.1"?>
5384 <p>$u007F$u0080$u0081$u0082$u0083$u0084$u0086$u0087$u0088$
5385 $u0089$u008A$u008B$u008C$
5386 $u008D$u008E$u008F$u0090$u0091$u0092$u0093$u0094$u0095$u0096$
5387 $u0097$u0098$u0099$u009A$u009B$u009C$u009D$u009E$u009F$u0085</p>
5388 @@@c:erred: <[xp|wf-legal-literal-character]> { (2, 4); } /* U+007F */
5389 @@@c:erred: <[xp|wf-legal-literal-character]> { (2, 5); } /* U+0080 */
5390 @@@c:erred: <[xp|wf-legal-literal-character]> { (2, 6); } /* U+0081 */
5391 @@@c:erred: <[xp|wf-legal-literal-character]> { (2, 7); } /* U+0082 */
5392 @@@c:erred: <[xp|wf-legal-literal-character]> { (2, 8); } /* U+0083 */
5393 @@@c:erred: <[xp|wf-legal-literal-character]> { (2, 9); } /* U+0084 */
5394 @@@c:erred: <[xp|wf-legal-literal-character]> { (2, 10); } /* U+0086 */
5395 @@@c:erred: <[xp|wf-legal-literal-character]> { (2, 11); } /* U+0087 */
5396 @@@c:erred: <[xp|wf-legal-literal-character]> { (2, 12); } /* U+0088 */
5397 @@@c:erred: <[xp|wf-legal-literal-character]> { (2, 13); } /* U+0089 */
5398 @@@c:erred: <[xp|wf-legal-literal-character]> { (2, 14); } /* U+008A */
5399 @@@c:erred: <[xp|wf-legal-literal-character]> { (2, 15); } /* U+008B */
5400 @@@c:erred: <[xp|wf-legal-literal-character]> { (2, 16); } /* U+008C */
5401 @@@c:erred: <[xp|wf-legal-literal-character]> { (2, 17); } /* U+008D */
5402 @@@c:erred: <[xp|wf-legal-literal-character]> { (2, 18); } /* U+008E */
5403 @@@c:erred: <[xp|wf-legal-literal-character]> { (2, 19); } /* U+008F */
5404 @@@c:erred: <[xp|wf-legal-literal-character]> { (2, 20); } /* U+0090 */
5405 @@@c:erred: <[xp|wf-legal-literal-character]> { (2, 21); } /* U+0091 */
5406 @@@c:erred: <[xp|wf-legal-literal-character]> { (2, 22); } /* U+0092 */
5407 @@@c:erred: <[xp|wf-legal-literal-character]> { (2, 23); } /* U+0093 */
5408 @@@c:erred: <[xp|wf-legal-literal-character]> { (2, 24); } /* U+0094 */
5409 @@@c:erred: <[xp|wf-legal-literal-character]> { (2, 25); } /* U+0095 */
5410 @@@c:erred: <[xp|wf-legal-literal-character]> { (2, 26); } /* U+0096 */
5411 @@@c:erred: <[xp|wf-legal-literal-character]> { (2, 27); } /* U+0097 */
5412 @@@c:erred: <[xp|wf-legal-literal-character]> { (2, 28); } /* U+0098 */
5413 @@@c:erred: <[xp|wf-legal-literal-character]> { (2, 29); } /* U+0099 */
5414 @@@c:erred: <[xp|wf-legal-literal-character]> { (2, 30); } /* U+009A */
5415 @@@c:erred: <[xp|wf-legal-literal-character]> { (2, 31); } /* U+009B */
5416 @@@c:erred: <[xp|wf-legal-literal-character]> { (2, 32); } /* U+009C */
5417 @@@c:erred: <[xp|wf-legal-literal-character]> { (2, 33); } /* U+009D */
5418 @@@c:erred: <[xp|wf-legal-literal-character]> { (2, 34); } /* U+009E */
5419 @@@c:erred: <[xp|wf-legal-literal-character]> { (2, 35); } /* U+009F */
5420
5421 @@XMLTest:
5422 @@@QName: xp.c0.internal.entity.xml11.1.test
5423 @@@DEnt:
5424 @@@@test:value:
5425 <?xml version="1.1"?>
5426 <!DOCTYPE a [
5427 <!ENTITY e "&#x01;&#x02;&#x03;&#x04;&#x05;&#x06;&#x07;$
5428 &#x08;&#x09;&#x0A;&#x0B;&#x0C;&#x0D;&#x0E;&#x0F;$
5429 &#x10;&#x11;&#x12;&#x13;&#x14;&#x15;&#x16;&#x17;$
5430 &#x18;&#x19;&#x1A;&#x1B;&#x1C;&#x1D;&#x1E;&#x1F;">
5431 ]><a/>
5432 @@@cfg:entity-replacement-tree: 1
5433 @@@test:domTree:
5434 document {
5435 document-type {
5436 general-entity {
5437 node-name: 'e';
5438 text-content: U+0001 U+0002 U+0003 U+0004 U+0005
5439 U+0006 U+0007 U+0008 U+0009 U+000A U+000B
5440 U+000C U+000D U+000E U+000F
5441 U+0010 U+0011 U+0012 U+0013 U+0014 U+0015
5442 U+0016 U+0017 U+0018 U+0019 U+001A U+001B
5443 U+001C U+001D U+001E U+001F;
5444 }
5445 }
5446 element { }
5447 }
5448 @@XMLTest:
5449 @@@QName: xp.c1.internal.entity.xml11.1.test
5450 @@@DEnt:
5451 @@@@test:value:
5452 <?xml version="1.1"?>
5453 <!DOCTYPE a [
5454 <!ENTITY e "&#x80;&#x81;&#x82;&#x83;&#x84;&#x85;&#x86;&#x87;$
5455 &#x88;&#x89;&#x8A;&#x8B;&#x8C;&#x8D;&#x8E;&#x8F;$
5456 &#x90;&#x91;&#x92;&#x93;&#x94;&#x95;&#x96;&#x97;$
5457 &#x98;&#x99;&#x9A;&#x9B;&#x9C;&#x9D;&#x9E;&#x9F;&#x7F;">
5458 ]><a/>
5459 @@@cfg:entity-replacement-tree: 1
5460 @@@test:domTree:
5461 document {
5462 document-type {
5463 general-entity {
5464 node-name: 'e';
5465 text-content: U+0080 U+0081 U+0082 U+0083 U+0084 U+0085
5466 U+0086 U+0087 U+0088 U+0089 U+008A U+008B
5467 U+008C U+008D U+008E U+008F
5468 U+0090 U+0091 U+0092 U+0093 U+0094 U+0095
5469 U+0096 U+0097 U+0098 U+0099 U+009A U+009B
5470 U+009C U+009D U+009E U+009F U+007F;
5471 }
5472 }
5473 element { }
5474 }
5475
5476 @@XMLTest:
5477 @@@QName: xp.syntax.empty.test
5478 @@@DEnt:
5479 @@@@test:value: \
5480 @@@c:erred:
5481 <[xp:wf-syntax-error]> { (1, 1); }
5482 @@XMLTest:
5483 @@@QName: xp.syntax.space.test
5484 @@@DEnt:
5485 @@@@test:value: \
5486 @@@c:erred:
5487 <[xp:wf-syntax-error]> { (1, 4); }
5488 @@XMLTest:
5489 @@@QName: xp.syntax.newlines.test
5490 @@@DEnt:
5491 @@@@test:value:
5492 \
5493 \
5494 \
5495 @@@c:erred:
5496 <[xp:wf-syntax-error]> { (3, 1); }
5497
5498 @@XMLTest:
5499 @@@QName: xp.only.docel.test
5500 @@@DEnt:
5501 @@@@test:value:
5502 <p></p>
5503 @@@test:domTree:
5504 document {
5505 xml-version: '1.0';
5506 xml-encoding: null;
5507 xml-standalone: false;
5508 element {
5509 namespace-uri: null;
5510 prefix: null;
5511 local-name: 'p';
5512 text-content: '';
5513 }
5514 }
5515 @@XMLTest:
5516 @@@QName: xp.only.docel.emptyelemtag.test
5517 @@@DEnt:
5518 @@@@test:value:
5519 <p/>
5520 @@@test:domTree:
5521 document {
5522 xml-version: '1.0';
5523 xml-encoding: null;
5524 xml-standalone: false;
5525 element {
5526 namespace-uri: null;
5527 prefix: null;
5528 local-name: 'p';
5529 text-content: '';
5530 }
5531 }
5532 @@XMLTest:
5533 @@@QName: xp.root.s.1.test
5534 @@@DEnt:
5535 @@@@test:value:
5536 <?xml version="1.0"?>$u0020$u000D$u000A$u0009
5537 <p></p>
5538 @@@test:domTree:
5539 document {
5540 element { }
5541 }
5542
5543 @@XMLTest:
5544 @@@QName: xp.Name.1.test
5545 @@@DEnt:
5546 @@@@test:value: <name/>
5547 @@@test:domTree:
5548 document {
5549 element {
5550 node-name: 'name';
5551 }
5552 }
5553 @@XMLTest:
5554 @@@QName: xp.Name.2.test
5555 @@@DEnt:
5556 @@@@test:value: <name0/>
5557 @@@test:domTree:
5558 document {
5559 element {
5560 node-name: 'name0';
5561 }
5562 }
5563 @@enImplNote:
5564 @@@ddid: xml11name
5565 @@@@:
5566 {TODO:: XML 1.1 Name tests required
5567 }
5568
5569 @@XMLTest:
5570 @@@QName: xp.content.mse.1.test
5571 @@@DEnt:
5572 @@@@test:value:
5573 <p>]]></p>
5574 @@@c:erred:
5575 <[xp|wf-syntax-error]> { (1, 4)..(1, 6); }
5576 @@XMLTest:
5577 @@@QName: xp.content.mse.2.test
5578 @@@DEnt:
5579 @@@@test:value:
5580 <p>aaa]]>bbb</p>
5581 @@@c:erred:
5582 <[xp|wf-syntax-error]> { (1, 7)..(1, 9); }
5583
5584 @@XMLTest:
5585 @@@QName: xp.root.comment.1.test
5586 @@@DEnt:
5587 @@@@test:value:
5588 <!--comment data-->
5589 <p/>
5590 @@@test:domTree:
5591 document {
5592 comment {
5593 data: 'comment data';
5594 }
5595 element { }
5596 }
5597 @@XMLTest:
5598 @@@QName: xp.root.comment.2.test
5599 @@@DEnt:
5600 @@@@test:value:
5601 <!---->
5602 <p/>
5603 @@@test:domTree:
5604 document {
5605 comment {
5606 data: '';
5607 }
5608 element { }
5609 }
5610 @@XMLTest:
5611 @@@QName: xp.root.after.pi.comment.1.test
5612 @@@DEnt:
5613 @@@@test:value:
5614 <?pi?>
5615 <!--comment data-->
5616 <p/>
5617 @@@test:domTree:
5618 document {
5619 pi { }
5620 comment {
5621 data: 'comment data';
5622 }
5623 element { }
5624 }
5625 @@XMLTest:
5626 @@@QName: xp.root.after.pi.comment.2.test
5627 @@@DEnt:
5628 @@@@test:value:
5629 <?pi?>
5630 <!---->
5631 <p/>
5632 @@@test:domTree:
5633 document {
5634 pi { }
5635 comment {
5636 data: '';
5637 }
5638 element { }
5639 }
5640 @@XMLTest:
5641 @@@QName: xp.root.after.element.comment.1.test
5642 @@@DEnt:
5643 @@@@test:value:
5644 <p/>
5645 <!--comment data-->
5646 @@@test:domTree:
5647 document {
5648 element { }
5649 comment {
5650 data: 'comment data';
5651 }
5652 }
5653 @@XMLTest:
5654 @@@QName: xp.root.after.element.comment.2.test
5655 @@@DEnt:
5656 @@@@test:value:
5657 <p/>
5658 <!---->
5659 @@@test:domTree:
5660 document {
5661 element { }
5662 comment {
5663 data: '';
5664 }
5665 }
5666 @@XMLTest:
5667 @@@QName: xp.doctype.intsubset.comment.1.test
5668 @@@DEnt:
5669 @@@@test:value:
5670 <!DOCTYPE a [
5671 <!--comment data-->
5672 ]>
5673 <p/>
5674 @@@test:domTree:
5675 document {
5676 document-type { }
5677 element { }
5678 }
5679 @@XMLTest:
5680 @@@QName: xp.doctype.intsubset.comment.2.test
5681 @@@DEnt:
5682 @@@@test:value:
5683 <!DOCTYPE a [
5684 <!---->
5685 ]>
5686 <p/>
5687 @@@test:domTree:
5688 document {
5689 document-type { }
5690 element { }
5691 }
5692 @@XMLTest:
5693 @@@QName: xp.doctype.intsubset.comment.3.test
5694 @@@DEnt:
5695 @@@@test:value:
5696 <!DOCTYPE a [
5697 <?pi?>
5698 <!---->
5699 ]>
5700 <p/>
5701 @@@test:domTree:
5702 document {
5703 document-type {
5704 pi { }
5705 }
5706 element { }
5707 }
5708 @@XMLTest:
5709 @@@QName: xp.content.comment.1.test
5710 @@@DEnt:
5711 @@@@test:value:
5712 <p><!--comment data--></p>
5713 @@@test:domTree:
5714 document {
5715 element {
5716 comment {
5717 data: 'comment data';
5718 }
5719 }
5720 }
5721 @@XMLTest:
5722 @@@QName: xp.content.comment.2.test
5723 @@@DEnt:
5724 @@@@test:value:
5725 <p><!----></p>
5726 @@@test:domTree:
5727 document {
5728 element {
5729 comment {
5730 data: '';
5731 }
5732 }
5733 }
5734 @@XMLTest:
5735 @@@QName: xp.content.comment.3.test
5736 @@@DEnt:
5737 @@@@test:value:
5738 <p>aaaaa<!---->bbbbb</p>
5739 @@@test:domTree:
5740 document {
5741 element {
5742 text {
5743 data: 'aaaaa';
5744 }
5745 comment {
5746 data: '';
5747 }
5748 text {
5749 data: 'bbbbb';
5750 }
5751 }
5752 }
5753 @@XMLTest:
5754 @@@QName: xp.content.comment.--.1.test
5755 @@@DEnt:
5756 @@@@test:value:
5757 <p><!--data--data--></p>
5758 @@@c:erred: <[xp|wf-syntax-error]> { (1, 12)..(1, 17); }
5759 @@XMLTest:
5760 @@@QName: xp.content.comment.---gt.test
5761 @@@DEnt:
5762 @@@@test:value:
5763 <p><!--data---></p>
5764 @@@c:erred: <[xp|wf-syntax-error]> { (1, 12)..(1, 15); }
5765
5766 @@XMLTest:
5767 @@@QName: xp.xmldecl.version.1.0.test
5768 @@@DEnt:
5769 @@@@test:value:
5770 <?xml version="1.0"?>
5771 <p></p>
5772 @@@test:domTree:
5773 document {
5774 xml-version: '1.0';
5775 xml-encoding: null;
5776 xml-standalone: false;
5777 element { }
5778 }
5779 @@XMLTest:
5780 @@@QName: xp.xmldecl.version.1.0.lita.test
5781 @@@DEnt:
5782 @@@@test:value:
5783 <?xml version='1.0'?>
5784 <p></p>
5785 @@@test:domTree:
5786 document {
5787 xml-version: '1.0';
5788 xml-encoding: null;
5789 xml-standalone: false;
5790 element { }
5791 }
5792 @@XMLTest:
5793 @@@QName: xp.xmldecl.version.1.0.s.test
5794 @@@DEnt:
5795 @@@@test:value:
5796 <?xml version = "1.0" ?>
5797 <p></p>
5798 @@@test:domTree:
5799 document {
5800 xml-version: '1.0';
5801 xml-encoding: null;
5802 xml-standalone: false;
5803 element { }
5804 }
5805 @@XMLTest:
5806 @@@QName: xp.xmldecl.version.1.1.test
5807 @@@DEnt:
5808 @@@@test:value:
5809 <?xml version="1.1"?>
5810 <p></p>
5811 @@@test:domTree:
5812 document {
5813 xml-version: '1.1';
5814 xml-encoding: null;
5815 xml-standalone: false;
5816 element { }
5817 }
5818
5819 @@XMLTest:
5820 @@@QName: xp.xmldecl.version.1.0.encoding.usascii.test
5821 @@@DEnt:
5822 @@@@test:value:
5823 <?xml version="1.0" encoding="US-ascii"?>
5824 <p></p>
5825 @@@test:domTree:
5826 document {
5827 xml-version: '1.0';
5828 xml-encoding: 'US-ascii';
5829 xml-standalone: false;
5830 element { }
5831 }
5832 @@XMLTest:
5833 @@@QName: xp.xmldecl.version.1.0.encoding.usascii.lita.test
5834 @@@DEnt:
5835 @@@@test:value:
5836 <?xml version="1.0" encoding='US-ascii'?>
5837 <p></p>
5838 @@@test:domTree:
5839 document {
5840 xml-version: '1.0';
5841 xml-encoding: 'US-ascii';
5842 xml-standalone: false;
5843 element { }
5844 }
5845 @@XMLTest:
5846 @@@QName: xp.xmldecl.version.1.0.encoding.usascii.s.test
5847 @@@DEnt:
5848 @@@@test:value:
5849 <?xml version="1.0" encoding = "US-ascii" ?>
5850 <p></p>
5851 @@@test:domTree:
5852 document {
5853 xml-version: '1.0';
5854 xml-encoding: 'US-ascii';
5855 xml-standalone: false;
5856 element { }
5857 }
5858
5859 @@XMLTest:
5860 @@@QName: xp.xmldecl.version.1.0.encoding.usascii.standalone.yes.test
5861 @@@DEnt:
5862 @@@@test:value:
5863 <?xml version="1.0" encoding="us-ascii" standalone="yes"?>
5864 <p></p>
5865 @@@test:domTree:
5866 document {
5867 xml-version: '1.0';
5868 xml-encoding: 'us-ascii';
5869 xml-standalone: true;
5870 element { }
5871 }
5872 @@XMLTest:
5873 @@@QName: xp.xmldecl.version.1.0.encoding.usascii.standalone.no.test
5874 @@@DEnt:
5875 @@@@test:value:
5876 <?xml version="1.0" encoding="us-ascii" standalone="no"?>
5877 <p></p>
5878 @@@test:domTree:
5879 document {
5880 xml-version: '1.0';
5881 xml-encoding: 'us-ascii';
5882 xml-standalone: false;
5883 element { }
5884 }
5885 @@XMLTest:
5886 @@@QName: xp.xmldecl.version.1.0.encoding.usascii.standalone.yes.lita.test
5887 @@@DEnt:
5888 @@@@test:value:
5889 <?xml version="1.0" encoding="us-ascii" standalone='yes'?>
5890 <p></p>
5891 @@@test:domTree:
5892 document {
5893 xml-version: '1.0';
5894 xml-encoding: 'us-ascii';
5895 xml-standalone: true;
5896 element { }
5897 }
5898 @@XMLTest:
5899 @@@QName: xp.xmldecl.version.1.0.encoding.usascii.standalone.yes.s.test
5900 @@@DEnt:
5901 @@@@test:value:
5902 <?xml version="1.0" encoding="us-ascii" standalone = "yes" ?>
5903 <p></p>
5904 @@@test:domTree:
5905 document {
5906 xml-version: '1.0';
5907 xml-encoding: 'us-ascii';
5908 xml-standalone: true;
5909 element { }
5910 }
5911 @@XMLTest:
5912 @@@QName: xp.xmldecl.no.encoding.but.standalone.attr.test
5913 @@@DEnt:
5914 @@@@test:value:
5915 <?xml version="1.0" standalone="yes"?>
5916 <p></p>
5917 @@@test:domTree:
5918 document {
5919 xml-version: '1.0';
5920 xml-encoding: null;
5921 xml-standalone: true;
5922 element { }
5923 }
5924 @@XMLTest:
5925 @@@QName: xp.xmldecl.encoding.encname.test
5926 @@@DEnt:
5927 @@@@test:value:
5928 <?xml version="1.0" encoding="a-._01-"?>
5929 <p></p>
5930 @@@test:domTree:
5931 document {
5932 xml-version: '1.0';
5933 xml-encoding: 'a-._01-';
5934 xml-standalone: false;
5935 element { }
5936 }
5937
5938 @@XMLTest:
5939 @@@QName: xp.xmldecl.no.s.no.attr.test
5940 @@@DEnt:
5941 @@@@test:value:
5942 <?xml?>
5943 <p></p>
5944 @@@c:erred:
5945 <[xp:wf-syntax-error]> { (1, 1)..(1, 7); }
5946 @@XMLTest:
5947 @@@QName: xp.xmldecl.s.no.attr.test
5948 @@@DEnt:
5949 @@@@test:value:
5950 <?xml ?>
5951 <p></p>
5952 @@@c:erred:
5953 <[xp:wf-syntax-error]> { (1, 8)..(1, 9); }
5954 @@XMLTest:
5955 @@@QName: xp.xmldecl.unknown.attr.test
5956 @@@DEnt:
5957 @@@@test:value:
5958 <?xml unknown="value"?>
5959 <p></p>
5960 @@@c:erred:
5961 <[xp:wf-syntax-error]> { (1, 8)..(1, 22); }
5962 @@XMLTest:
5963 @@@QName: xp.xmldecl.version.unknown.attr.test
5964 @@@DEnt:
5965 @@@@test:value:
5966 <?xml version="1.0" unknown="value"?>
5967 <p></p>
5968 @@@c:erred:
5969 <[xp:wf-syntax-error]> { (1, 21)..(1, 35); }
5970 @@XMLTest:
5971 @@@QName: xp.xmldecl.version.encoding.unknown.attr.test
5972 @@@DEnt:
5973 @@@@test:value:
5974 <?xml version="1.0" encoding="us-ascii" unknown="value"?>
5975 <p></p>
5976 @@@c:erred:
5977 <[xp:wf-syntax-error]> { (1, 41)..(1, 55); }
5978 @@XMLTest:
5979 @@@QName: xp.xmldecl.version.encoding.standalone.unknown.attr.test
5980 @@@DEnt:
5981 @@@@test:value:
5982 <?xml version="1.0" encoding="us-ascii" standalone="yes"
5983 unknown="value"?>
5984 <p></p>
5985 @@@c:erred:
5986 <[xp:wf-syntax-error]> { (2, 1)..(2, 15); }
5987 @@XMLTest:
5988 @@@QName: xp.xmldecl.no.version.but.encoding.attr.test
5989 @@@DEnt:
5990 @@@@test:value:
5991 <?xml encoding="us-ascii"?>
5992 <p></p>
5993 @@@c:erred:
5994 <[xp:wf-syntax-error]> { (1, 7)..(1, 25); }
5995 @@XMLTest:
5996 @@@QName: xp.xmldecl.no.version.but.standalone.attr.test
5997 @@@DEnt:
5998 @@@@test:value:
5999 <?xml standalone="yes"?>
6000 <p></p>
6001 @@@c:erred:
6002 <[xp:wf-syntax-error]> { (1, 7)..(1, 24); }
6003 @@XMLTest:
6004 @@@QName: xp.xmldecl.version.unsupported.test
6005 @@@DEnt:
6006 @@@@test:value:
6007 <?xml version="1.2"?>
6008 <p></p>
6009 @@@c:erred:
6010 <[xp:wf-unsupported-xml-version]> { (1, 7)..(1, 19); }
6011 @@XMLTest:
6012 @@@QName: xp.xmldecl.version.unsupported.2.test
6013 @@@DEnt:
6014 @@@@test:value:
6015 <?xml version=" 1.0 "?>
6016 <p></p>
6017 @@@c:erred:
6018 <[xp:wf-unsupported-xml-version]> { (1, 7)..(1, 21); }
6019 @@XMLTest:
6020 @@@QName: xp.xmldecl.version.unsupported.3.test
6021 @@@DEnt:
6022 @@@@test:value:
6023 <?xml version="01.00"?>
6024 <p></p>
6025 @@@c:erred:
6026 <[xp:wf-unsupported-xml-version]> { (1, 7)..(1, 21); }
6027 @@XMLTest:
6028 @@@QName: xp.xmldecl.encoding.malformed.1.test
6029 @@@DEnt:
6030 @@@@test:value:
6031 <?xml version="1.0" encoding="0088"?>
6032 <p></p>
6033 @@@c:erred:
6034 <[xp:wf-malformed-enc-name]> { (1, 21)..(1, 35); }
6035 @@XMLTest:
6036 @@@QName: xp.xmldecl.encoding.malformed.2.test
6037 @@@DEnt:
6038 @@@@test:value:
6039 <?xml version="1.0" encoding="D.V.D!"?>
6040 <p></p>
6041 @@@c:erred:
6042 <[xp:wf-malformed-enc-name]> { (1, 21)..(1, 38); }
6043 @@XMLTest:
6044 @@@QName: xp.xmldecl.standalone.malformed.1.test
6045 @@@DEnt:
6046 @@@@test:value:
6047 <?xml version="1.0" standalone="true"?>
6048 <p></p>
6049 @@@c:erred:
6050 <[xp:wf-malformed-xml-standalone]> { (1, 21)..(1, 38); }
6051 @@XMLTest:
6052 @@@QName: xp.xmldecl.standalone.malformed.2.test
6053 @@@DEnt:
6054 @@@@test:value:
6055 <?xml version="1.0" standalone="YES"?>
6056 <p></p>
6057 @@@c:erred:
6058 <[xp:wf-malformed-xml-standalone]> { (1, 21)..(1, 37); }
6059 @@XMLTest:
6060 @@@QName: xp.xmldecl.standalone.malformed.3.test
6061 @@@DEnt:
6062 @@@@test:value:
6063 <?xml version="1.0" standalone="no "?>
6064 <p></p>
6065 @@@c:erred:
6066 <[xp:wf-malformed-xml-standalone]> { (1, 21)..(1, 38); }
6067
6068 @@XMLTest:
6069 @@@QName: xp.no-xmldecl.xml...-pi.test
6070 @@@DEnt:
6071 @@@@test:value:
6072 <?xmldeclaration?>
6073 <a></a>
6074 @@@test:domTree:
6075 document {
6076 pi {
6077 node-name: 'xmldeclaration';
6078 node-value: '';
6079 }
6080 element { }
6081 }
6082 @@XMLTest:
6083 @@@QName: xp.no-xmldecl.xml...-pi.after.document.element.test
6084 @@@DEnt:
6085 @@@@test:value:
6086 <a></a>
6087 <?xmldeclaration?>
6088 @@@test:domTree:
6089 document {
6090 element { }
6091 pi {
6092 node-name: 'xmldeclaration';
6093 node-value: '';
6094 }
6095 }
6096 @@XMLTest:
6097 @@@QName: xp.no-xmldecl.xml...-pi.in.document.element.test
6098 @@@DEnt:
6099 @@@@test:value:
6100 <a>
6101 <?xmldeclaration?>
6102 </a>
6103 @@@test:domTree:
6104 document {
6105 element {
6106 text { }
6107 pi {
6108 node-name: 'xmldeclaration';
6109 node-value: '';
6110 }
6111 text { }
6112 }
6113 }
6114 @@XMLTest:
6115 @@@QName: xp.no-xmldecl.xml...-pi.in.doctype.test
6116 @@@DEnt:
6117 @@@@test:value:
6118 <!DOCTYPE a [
6119 <?xmldeclaration?>
6120 ]>
6121 <a></a>
6122 @@@test:domTree:
6123 document {
6124 document-type {
6125 pi {
6126 node-name: 'xmldeclaration';
6127 node-value: '';
6128 }
6129 }
6130 element { }
6131 }
6132
6133 @@XMLTest:
6134 @@@QName: xp.XMLdecl.test
6135 @@@DEnt:
6136 @@@@test:value:
6137 <?XML version="1.0"?>
6138 <p></p>
6139 @@@c:erred:
6140 <[xp:wf-pi-target-is-xml]> { (1, 1)..(1, 5); }
6141 @@XMLTest:
6142 @@@QName: xp.Xmldecl.test
6143 @@@DEnt:
6144 @@@@test:value:
6145 <?Xml version="1.0"?>
6146 <p></p>
6147 @@@c:erred:
6148 <[xp:wf-pi-target-is-xml]> { (1, 1)..(1, 5); }
6149 @@XMLTest:
6150 @@@QName: xp.xmldecl.after.document.element.empty.test
6151 @@@DEnt:
6152 @@@@test:value:
6153 <p></p>
6154 <?xml?>
6155 @@@c:erred:
6156 <[xp:wf-pi-target-is-xml]> { (2, 1)..(2, 5); }
6157 @@XMLTest:
6158 @@@QName: xp.xmldecl.after.document.element.test
6159 @@@DEnt:
6160 @@@@test:value:
6161 <p></p>
6162 <?xml version="1.0"?>
6163 @@@c:erred:
6164 <[xp:wf-pi-target-is-xml]> { (2, 1)..(2, 5); }
6165 @@XMLTest:
6166 @@@QName: xp.xmldecl.in.element.empty.test
6167 @@@DEnt:
6168 @@@@test:value:
6169 <p>
6170 <?xml?>
6171 </p>
6172 @@@c:erred:
6173 <[xp:wf-pi-target-is-xml]> { (2, 1)..(2, 5); }
6174 @@XMLTest:
6175 @@@QName: xp.xmldecl.in.element.test
6176 @@@DEnt:
6177 @@@@test:value:
6178 <p>
6179 <?xml version="1.0"?>
6180 </p>
6181 @@@c:erred:
6182 <[xp:wf-pi-target-is-xml]> { (2, 1)..(2, 5); }
6183 @@XMLTest:
6184 @@@QName: xp.xmldecl.after.comment.test
6185 @@@DEnt:
6186 @@@@test:value:
6187 <!---->
6188 <?xml version="1.0"?>
6189 <p></p>
6190 @@@c:erred:
6191 <[xp:wf-pi-target-is-xml]> { (2, 1)..(2, 5); }
6192 @@XMLTest:
6193 @@@QName: xp.xmldecl.after.comment.empty.test
6194 @@@DEnt:
6195 @@@@test:value:
6196 <!---->
6197 <?xml?>
6198 <p></p>
6199 @@@c:erred:
6200 <[xp:wf-pi-target-is-xml]> { (2, 1)..(2, 5); }
6201 @@XMLTest:
6202 @@@QName: xp.xmldecl.after.pi.test
6203 @@@DEnt:
6204 @@@@test:value:
6205 <?xml-declaration?>
6206 <?xml version="1.0"?>
6207 <p></p>
6208 @@@c:erred:
6209 <[xp:wf-pi-target-is-xml]> { (2, 1)..(2, 5); }
6210 @@XMLTest:
6211 @@@QName: xp.xmldecl.after.pi.empty.test
6212 @@@DEnt:
6213 @@@@test:value:
6214 <?xml-declaration?>
6215 <?xml?>
6216 <p></p>
6217 @@@c:erred:
6218 <[xp:wf-pi-target-is-xml]> { (2, 1)..(2, 5); }
6219 @@XMLTest:
6220 @@@QName: xp.xmldecl.after.pi.2.test
6221 @@@DEnt:
6222 @@@@test:value:
6223 <?declaration?>
6224 <?xml version="1.0"?>
6225 <p></p>
6226 @@@c:erred:
6227 <[xp:wf-pi-target-is-xml]> { (2, 1)..(2, 5); }
6228 @@XMLTest:
6229 @@@QName: xp.xmldecl.after.pi.empty.2.test
6230 @@@DEnt:
6231 @@@@test:value:
6232 <?declaration?>
6233 <?xml?>
6234 <p></p>
6235 @@@c:erred:
6236 <[xp:wf-pi-target-is-xml]> { (2, 1)..(2, 5); }
6237 @@XMLTest:
6238 @@@QName: xp.xmldecl.after.doctype.test
6239 @@@DEnt:
6240 @@@@test:value:
6241 <!DOCTYPE a>
6242 <?xml version="1.0"?>
6243 <p></p>
6244 @@@c:erred:
6245 <[xp:wf-pi-target-is-xml]> { (2, 1)..(2, 5); }
6246 @@XMLTest:
6247 @@@QName: xp.xmldecl.after.doctype.empty.test
6248 @@@DEnt:
6249 @@@@test:value:
6250 <!DOCTYPE a>
6251 <?xml?>
6252 <p></p>
6253 @@@c:erred:
6254 <[xp:wf-pi-target-is-xml]> { (2, 1)..(2, 5); }
6255 @@XMLTest:
6256 @@@QName: xp.xmldecl.in.doctype.test
6257 @@@DEnt:
6258 @@@@test:value:
6259 <!DOCTYPE a [
6260 <?xml version="1.0"?>
6261 ]>
6262 <p></p>
6263 @@@c:erred:
6264 <[xp:wf-pi-target-is-xml]> { (2, 1)..(2, 5); }
6265 @@XMLTest:
6266 @@@QName: xp.xmldecl.in.doctype.empty.test
6267 @@@DEnt:
6268 @@@@test:value:
6269 <!DOCTYPE a [
6270 <?xml?>
6271 ]>
6272 <p></p>
6273 @@@c:erred:
6274 <[xp:wf-pi-target-is-xml]> { (2, 1)..(2, 5); }
6275
6276 @@XMLTest:
6277 @@@QName: xp.pi.before.element.empty.test
6278 @@@DEnt:
6279 @@@@test:value:
6280 <?target?>
6281 <a></a>
6282 @@@test:domTree:
6283 document {
6284 pi {
6285 node-name: 'target';
6286 node-value: '';
6287 }
6288 element { }
6289 }
6290 @@XMLTest:
6291 @@@QName: xp.pi.before.element.s.test
6292 @@@DEnt:
6293 @@@@test:value:
6294 <?target ?>
6295 <a></a>
6296 @@@test:domTree:
6297 document {
6298 pi {
6299 node-name: 'target';
6300 node-value: '';
6301 }
6302 element { }
6303 }
6304 @@XMLTest:
6305 @@@QName: xp.pi.before.element.string.test
6306 @@@DEnt:
6307 @@@@test:value:
6308 <?target string?>
6309 <a></a>
6310 @@@test:domTree:
6311 document {
6312 pi {
6313 node-name: 'target';
6314 node-value: 'string';
6315 }
6316 element { }
6317 }
6318 @@XMLTest:
6319 @@@QName: xp.pi.before.element.string.s.test
6320 @@@DEnt:
6321 @@@@test:value:
6322 <?target string ?>
6323 <a></a>
6324 @@@test:domTree:
6325 document {
6326 pi {
6327 node-name: 'target';
6328 node-value: 'string ';
6329 }
6330 element { }
6331 }
6332 @@XMLTest:
6333 @@@QName: xp.pi.before.element.gt.test
6334 @@@DEnt:
6335 @@@@test:value:
6336 <?target string>string?>
6337 <a></a>
6338 @@@test:domTree:
6339 document {
6340 pi {
6341 node-name: 'target';
6342 node-value: 'string>string';
6343 }
6344 element { }
6345 }
6346 @@XMLTest:
6347 @@@QName: xp.pi.doctype.empty.test
6348 @@@DEnt:
6349 @@@@test:value:
6350 <!DOCTYPE a [
6351 <?target?>
6352 ]>
6353 <a></a>
6354 @@@test:domTree:
6355 document {
6356 document-type {
6357 pi {
6358 node-name: 'target';
6359 node-value: '';
6360 }
6361 }
6362 element { }
6363 }
6364
6365 @@XMLTest:
6366 @@@QName: xp.pi.no.target.test
6367 @@@DEnt:
6368 @@@@test:value:
6369 <??>
6370 <p></p>
6371 @@@c:erred:
6372 <[xp:wf-syntax-error]> { (1, 3)..(1, 4); }
6373 @@XMLTest:
6374 @@@QName: xp.pi.no.target.2.test
6375 @@@DEnt:
6376 @@@@test:value:
6377 <? ?>
6378 <p></p>
6379 @@@c:erred:
6380 <[xp:wf-syntax-error]> { (1, 3)..(1, 4); }
6381 @@XMLTest:
6382 @@@QName: xp.pi.bad.target.1.test
6383 @@@DEnt:
6384 @@@@test:value:
6385 <?target! ?>
6386 <p></p>
6387 @@@c:erred:
6388 <[xp:wf-syntax-error]> { (1, 9)..(1, 9); }
6389 @@XMLTest:
6390 @@@QName: xp.pi.bad.target.2.test
6391 @@@DEnt:
6392 @@@@test:value:
6393 <?0target ?>
6394 <p></p>
6395 @@@c:erred:
6396 <[xp:wf-syntax-error]> { (1, 3)..(1, 3); }
6397
6398 @@XMLTest:
6399 @@@QName: xp.cdatasection.empty.1.test
6400 @@@DEnt:
6401 @@@@test:value:
6402 <p><![CDATA[]]></p>
6403 @@@test:domTree:
6404 document {
6405 element {
6406 cdata-section {
6407 data: '';
6408 }
6409 }
6410 }
6411 @@XMLTest:
6412 @@@QName: xp.cdatasection.empty.2.test
6413 @@@DEnt:
6414 @@@@test:value:
6415 <p>aa<![CDATA[]]>bb</p>
6416 @@@test:domTree:
6417 document {
6418 element {
6419 text { data: 'aa'; }
6420 cdata-section {
6421 data: '';
6422 }
6423 text { data: 'bb'; }
6424 }
6425 }
6426 @@XMLTest:
6427 @@@QName: xp.cdatasection.1.test
6428 @@@DEnt:
6429 @@@@test:value:
6430 <p><![CDATA[abcdefg]]></p>
6431 @@@test:domTree:
6432 document {
6433 element {
6434 cdata-section {
6435 data: 'abcdefg';
6436 }
6437 }
6438 }
6439 @@XMLTest:
6440 @@@QName: xp.cdatasection.2.test
6441 @@@DEnt:
6442 @@@@test:value:
6443 <p>aa<![CDATA[abcdefg]]>bb</p>
6444 @@@test:domTree:
6445 document {
6446 element {
6447 text { data: 'aa'; }
6448 cdata-section {
6449 data: 'abcdefg';
6450 }
6451 text { data: 'bb'; }
6452 }
6453 }
6454 @@XMLTest:
6455 @@@QName: xp.cdatasection.ref.1.test
6456 @@@DEnt:
6457 @@@@test:value:
6458 <p><![CDATA[a&amp;&#x32;&#32;%abc;&def;]]&gt;b]]></p>
6459 @@@test:domTree:
6460 document {
6461 element {
6462 cdata-section {
6463 data: 'a&amp;&#x32;&#32;%abc;&def;]]&gt;b';
6464 }
6465 }
6466 }
6467 @@XMLTest:
6468 @@@QName: xp.cdatasection.in.general.entity.test
6469 @@@DEnt:
6470 @@@@test:value:
6471 <!DOCTYPE p [
6472 <!ENTITY cdata "<![CDATA[text]]>">
6473 ]>
6474 <p>&cdata;</p>
6475 @@@cfg:entity-replacement-tree: 1
6476 @@@test:domTree:
6477 document {
6478 document-type {
6479 general-entity {
6480 node-name: 'cdata';
6481 cdata-section {
6482 data: 'text';
6483 }
6484 }
6485 }
6486 element {
6487 general-entity-reference {
6488 node-name: 'cdata';
6489 manakai-expanded: true;
6490 cdata-section {
6491 data: 'text';
6492 }
6493 }
6494 }
6495 }
6496 @@XMLTest:
6497 @@@QName: xp.cdatasection.no.mse.test
6498 @@@DEnt:
6499 @@@@test:value:
6500 <p><![CDATA[text</p>
6501 @@@c:erred: <[xp|wf-syntax-error]> { (1, 21); }
6502 @@XMLTest:
6503 @@@QName: xp.cdatasection.nest.test
6504 @@@DEnt:
6505 @@@@test:value:
6506 <p><![CDATA[text01<![CDATA[txt2]]>text3]]></p>
6507 @@@c:erred: <[xp|wf-syntax-error]> { (1, 40)..(1, 42); }
6508
6509 @@XMLTest:
6510 @@@QName: xp.doctype.empty.test
6511 @@@DEnt:
6512 @@@@test:value:
6513 <!DOCTYPE a>
6514 <a></a>
6515 @@@test:domTree:
6516 document {
6517 xml-version: '1.0';
6518 xml-encoding: null;
6519 xml-standalone: false;
6520 document-type {
6521 node-name: 'a';
6522 public-id: null;
6523 system-id: null;
6524 }
6525 element {
6526 namespace-uri: null;
6527 prefix: null;
6528 local-name: 'a';
6529 text-content: '';
6530 }
6531 }
6532 @@XMLTest:
6533 @@@QName: xp.doctype.empty.after.document.element.test
6534 @@@DEnt:
6535 @@@@test:value:
6536 <a></a>
6537 <!DOCTYPE a>
6538 @@@c:erred: <[xp|wf-syntax-error]> { (2, 1)..(2, 12); }
6539 @@XMLTest:
6540 @@@QName: xp.doctype.empty.in.element.test
6541 @@@DEnt:
6542 @@@@test:value:
6543 <a>
6544 <!DOCTYPE a>
6545 </a>
6546 @@@c:erred: <[xp|wf-syntax-error]> { (2, 1)..(2, 12); }
6547 @@XMLTest:
6548 @@@QName: xp.doctype.empty.dup.test
6549 @@@DEnt:
6550 @@@@test:value:
6551 <!DOCTYPE a>
6552 <!DOCTYPE a>
6553 <a></a>
6554 @@@c:erred: <[xp|wf-syntax-error]> { (2, 1)..(2, 12); }
6555 @@XMLTest:
6556 @@@QName: xp.doctype.empty.in.intsubset.test
6557 @@@DEnt:
6558 @@@@test:value:
6559 <!DOCTYPE a [
6560 <!DOCTYPE a>
6561 ]>
6562 <a></a>
6563 @@@c:erred: <[xp|wf-syntax-error]> { (2, 1)..(2, 12); }
6564 @@XMLTest:
6565 @@@QName: xp.doctype.no.s.no.name.test
6566 @@@DEnt:
6567 @@@@test:value:
6568 <!DOCTYPE>
6569 <a></a>
6570 @@@c:erred: <[xp|wf-syntax-error]> { (1, 10); }
6571 @@XMLTest:
6572 @@@QName: xp.doctype.no.name.test
6573 @@@DEnt:
6574 @@@@test:value:
6575 <!DOCTYPE >
6576 <a></a>
6577 @@@c:erred: <[xp|wf-syntax-error]> { (1, 11); }
6578 @@XMLTest:
6579 @@@QName: xp.doctype.name.s.test
6580 @@@DEnt:
6581 @@@@test:value:
6582 <!DOCTYPE aa >
6583 <aa></aa>
6584 @@@test:domTree:
6585 document {
6586 document-type {
6587 node-name: 'aa';
6588 public-id: null;
6589 system-id: null;
6590 }
6591 element { }
6592 }
6593 @@XMLTest:
6594 @@@QName: xp.doctype.no.mdc.test
6595 @@@DEnt:
6596 @@@@test:value:
6597 <!DOCTYPE aa
6598 <aa></aa>
6599 @@@c:erred: <[xp|wf-syntax-error]> { (2, 1); }
6600
6601 @@XMLTest:
6602 @@@QName: xp.doctype.intsubset.empty.1.test
6603 @@@DEnt:
6604 @@@@test:value:
6605 <!DOCTYPE a []>
6606 <a></a>
6607 @@@test:domTree:
6608 document {
6609 xml-version: '1.0';
6610 xml-encoding: null;
6611 xml-standalone: false;
6612 document-type {
6613 node-name: 'a';
6614 public-id: null;
6615 system-id: null;
6616 }
6617 element {
6618 namespace-uri: null;
6619 prefix: null;
6620 local-name: 'a';
6621 text-content: '';
6622 }
6623 }
6624 @@XMLTest:
6625 @@@QName: xp.doctype.intsubset.empty.2.test
6626 @@@DEnt:
6627 @@@@test:value:
6628 <!DOCTYPE a [
6629
6630 ]>
6631 <a></a>
6632 @@@test:domTree:
6633 document {
6634 xml-version: '1.0';
6635 xml-encoding: null;
6636 xml-standalone: false;
6637 document-type {
6638 node-name: 'a';
6639 public-id: null;
6640 system-id: null;
6641 }
6642 element {
6643 namespace-uri: null;
6644 prefix: null;
6645 local-name: 'a';
6646 text-content: '';
6647 }
6648 }
6649 @@XMLTest:
6650 @@@QName: xp.doctype.intsubset.empty.3.test
6651 @@@DEnt:
6652 @@@@test:value:
6653 <!DOCTYPE a[]>
6654 <a></a>
6655 @@@test:domTree:
6656 document {
6657 document-type {
6658 node-name: 'a';
6659 public-id: null;
6660 system-id: null;
6661 }
6662 element { }
6663 }
6664 @@XMLTest:
6665 @@@QName: xp.doctype.intsubset.empty.4.test
6666 @@@DEnt:
6667 @@@@test:value:
6668 <!DOCTYPE a[] >
6669 <a></a>
6670 @@@test:domTree:
6671 document {
6672 document-type {
6673 node-name: 'a';
6674 public-id: null;
6675 system-id: null;
6676 }
6677 element { }
6678 }
6679 @@XMLTest:
6680 @@@QName: xp.doctype.intsubset.no.dsc.1.test
6681 @@@DEnt:
6682 @@@@test:value:
6683 <!DOCTYPE a [>
6684 <a></a>
6685 @@@c:erred: <[xp|wf-syntax-error]> { (1, 14); }
6686 @@XMLTest:
6687 @@@QName: xp.doctype.intsubset.no.dsc.2.test
6688 @@@DEnt:
6689 @@@@test:value:
6690 <!DOCTYPE a [
6691 <a></a>
6692 @@@c:erred: <[xp|wf-syntax-error]> { (2, 1); }
6693 @@XMLTest:
6694 @@@QName: xp.doctype.intsubset.no.dsc.3.test
6695 @@@DEnt:
6696 @@@@test:value:
6697 <!DOCTYPE a [
6698 @@@c:erred: <[xp|wf-syntax-error]> { (1, 14); }
6699 @@XMLTest:
6700 @@@QName: xp.doctype.intsubset.no.mdc.1.test
6701 @@@DEnt:
6702 @@@@test:value:
6703 <!DOCTYPE a []
6704 <a/>
6705 @@@c:erred: <[xp|wf-syntax-error]> { (2, 1); }
6706 @@XMLTest:
6707 @@@QName: xp.doctype.intsubset.no.mdc.2.test
6708 @@@DEnt:
6709 @@@@test:value:
6710 <!DOCTYPE a []]>
6711 <a/>
6712 @@@c:erred: <[xp|wf-syntax-error]> { (1, 15); }
6713 @@XMLTest:
6714 @@@QName: xp.doctype.pubid.sysid.1.test
6715 @@@DEnt:
6716 @@@@test:value:
6717 <!DOCTYPE a PUBLIC "pubid" "sysid">
6718 <a/>
6719 @@@test:domTree:
6720 document {
6721 document-type {
6722 node-name: 'a';
6723 public-id: 'pubid';
6724 system-id: 'sysid';
6725 }
6726 element { }
6727 }
6728 @@XMLTest:
6729 @@@QName: xp.doctype.pubid.sysid.2.test
6730 @@@DEnt:
6731 @@@@test:value:
6732 <!DOCTYPE a PUBLIC 'pubid' "sysid">
6733 <a/>
6734 @@@test:domTree:
6735 document {
6736 document-type {
6737 node-name: 'a';
6738 public-id: 'pubid';
6739 system-id: 'sysid';
6740 }
6741 element { }
6742 }
6743 @@XMLTest:
6744 @@@QName: xp.doctype.pubid.sysid.3.test
6745 @@@DEnt:
6746 @@@@test:value:
6747 <!DOCTYPE a PUBLIC "pubid" 'sysid'>
6748 <a/>
6749 @@@test:domTree:
6750 document {
6751 document-type {
6752 node-name: 'a';
6753 public-id: 'pubid';
6754 system-id: 'sysid';
6755 }
6756 element { }
6757 }
6758 @@XMLTest:
6759 @@@QName: xp.doctype.pubid.sysid.4.test
6760 @@@DEnt:
6761 @@@@test:value:
6762 <!DOCTYPE a PUBLIC 'pubid' 'sysid'>
6763 <a/>
6764 @@@test:domTree:
6765 document {
6766 document-type {
6767 node-name: 'a';
6768 public-id: 'pubid';
6769 system-id: 'sysid';
6770 }
6771 element { }
6772 }
6773 @@XMLTest:
6774 @@@QName: xp.doctype.pubid.sysid.5.test
6775 @@@DEnt:
6776 @@@@test:value:
6777 <!DOCTYPE a PUBLIC "pubid" "sysid" >
6778 <a/>
6779 @@@test:domTree:
6780 document {
6781 document-type {
6782 node-name: 'a';
6783 public-id: 'pubid';
6784 system-id: 'sysid';
6785 }
6786 element { }
6787 }
6788 @@XMLTest:
6789 @@@QName: xp.doctype.pubid.sysid.6.test
6790 @@@DEnt:
6791 @@@@test:value:
6792 <!DOCTYPE a PUBLIC 'pubid' 'sysid' >
6793 <a/>
6794 @@@test:domTree:
6795 document {
6796 document-type {
6797 node-name: 'a';
6798 public-id: 'pubid';
6799 system-id: 'sysid';
6800 }
6801 element { }
6802 }
6803 @@XMLTest:
6804 @@@QName: xp.doctype.pubid.sysid.intsubset.1.test
6805 @@@DEnt:
6806 @@@@test:value:
6807 <!DOCTYPE a PUBLIC "pubid" "sysid"[]>
6808 <a/>
6809 @@@test:domTree:
6810 document {
6811 document-type {
6812 node-name: 'a';
6813 public-id: 'pubid';
6814 system-id: 'sysid';
6815 }
6816 element { }
6817 }
6818 @@XMLTest:
6819 @@@QName: xp.doctype.pubid.sysid.intsubset.2.test
6820 @@@DEnt:
6821 @@@@test:value:
6822 <!DOCTYPE a PUBLIC "pubid" "sysid" []>
6823 <a/>
6824 @@@test:domTree:
6825 document {
6826 document-type {
6827 node-name: 'a';
6828 public-id: 'pubid';
6829 system-id: 'sysid';
6830 }
6831 element { }
6832 }
6833 @@XMLTest:
6834 @@@QName: xp.doctype.pubid.sysid.intsubset.3.test
6835 @@@DEnt:
6836 @@@@test:value:
6837 <!DOCTYPE a PUBLIC 'pubid' 'sysid'[]>
6838 <a/>
6839 @@@test:domTree:
6840 document {
6841 document-type {
6842 node-name: 'a';
6843 public-id: 'pubid';
6844 system-id: 'sysid';
6845 }
6846 element { }
6847 }
6848 @@XMLTest:
6849 @@@QName: xp.doctype.pubid.sysid.intsubset.4.test
6850 @@@DEnt:
6851 @@@@test:value:
6852 <!DOCTYPE a PUBLIC 'pubid' 'sysid' []>
6853 <a/>
6854 @@@test:domTree:
6855 document {
6856 document-type {
6857 node-name: 'a';
6858 public-id: 'pubid';
6859 system-id: 'sysid';
6860 }
6861 element { }
6862 }
6863 @@XMLTest:
6864 @@@QName: xp.doctype.sysid.1.test
6865 @@@DEnt:
6866 @@@@test:value:
6867 <!DOCTYPE a SYSTEM "sysid">
6868 <a/>
6869 @@@test:domTree:
6870 document {
6871 document-type {
6872 node-name: 'a';
6873 public-id: null;
6874 system-id: 'sysid';
6875 }
6876 element { }
6877 }
6878 @@XMLTest:
6879 @@@QName: xp.doctype.sysid.2.test
6880 @@@DEnt:
6881 @@@@test:value:
6882 <!DOCTYPE a SYSTEM 'sysid'>
6883 <a/>
6884 @@@test:domTree:
6885 document {
6886 document-type {
6887 node-name: 'a';
6888 public-id: null;
6889 system-id: 'sysid';
6890 }
6891 element { }
6892 }
6893 @@XMLTest:
6894 @@@QName: xp.doctype.sysid.3.test
6895 @@@DEnt:
6896 @@@@test:value:
6897 <!DOCTYPE a SYSTEM "sysid" >
6898 <a/>
6899 @@@test:domTree:
6900 document {
6901 document-type {
6902 node-name: 'a';
6903 public-id: null;
6904 system-id: 'sysid';
6905 }
6906 element { }
6907 }
6908 @@XMLTest:
6909 @@@QName: xp.doctype.sysid.4.test
6910 @@@DEnt:
6911 @@@@test:value:
6912 <!DOCTYPE a SYSTEM 'sysid' >
6913 <a/>
6914 @@@test:domTree:
6915 document {
6916 document-type {
6917 node-name: 'a';
6918 public-id: null;
6919 system-id: 'sysid';
6920 }
6921 element { }
6922 }
6923 @@XMLTest:
6924 @@@QName: xp.doctype.sysid.intsubset.1.test
6925 @@@DEnt:
6926 @@@@test:value:
6927 <!DOCTYPE a SYSTEM "sysid"[]>
6928 <a/>
6929 @@@test:domTree:
6930 document {
6931 document-type {
6932 node-name: 'a';
6933 public-id: null;
6934 system-id: 'sysid';
6935 }
6936 element { }
6937 }
6938 @@XMLTest:
6939 @@@QName: xp.doctype.sysid.intsubset.2.test
6940 @@@DEnt:
6941 @@@@test:value:
6942 <!DOCTYPE a SYSTEM "sysid" []>
6943 <a/>
6944 @@@test:domTree:
6945 document {
6946 document-type {
6947 node-name: 'a';
6948 public-id: null;
6949 system-id: 'sysid';
6950 }
6951 element { }
6952 }
6953 @@XMLTest:
6954 @@@QName: xp.doctype.sysid.intsubset.3.test
6955 @@@DEnt:
6956 @@@@test:value:
6957 <!DOCTYPE a SYSTEM 'sysid'[]>
6958 <a/>
6959 @@@test:domTree:
6960 document {
6961 document-type {
6962 node-name: 'a';
6963 public-id: null;
6964 system-id: 'sysid';
6965 }
6966 element { }
6967 }
6968 @@XMLTest:
6969 @@@QName: xp.doctype.sysid.intsubset.4.test
6970 @@@DEnt:
6971 @@@@test:value:
6972 <!DOCTYPE a SYSTEM 'sysid' []>
6973 <a/>
6974 @@@test:domTree:
6975 document {
6976 document-type {
6977 node-name: 'a';
6978 public-id: null;
6979 system-id: 'sysid';
6980 }
6981 element { }
6982 }
6983 @@XMLTest:
6984 @@@QName: xp.doctype.public.stago.test
6985 @@@DEnt:
6986 @@@@test:value:
6987 <!DOCTYPE a PUBLIC<a/>
6988 @@@c:erred: <[xp|wf-syntax-error]> { (1, 19); }
6989 @@XMLTest:
6990 @@@QName: xp.doctype.public.mdc.test
6991 @@@DEnt:
6992 @@@@test:value:
6993 <!DOCTYPE a PUBLIC>
6994 <a/>
6995 @@@c:erred: <[xp|wf-syntax-error]> { (1, 19); }
6996 @@XMLTest:
6997 @@@QName: xp.doctype.public.s.stago.test
6998 @@@DEnt:
6999 @@@@test:value:
7000 <!DOCTYPE a PUBLIC <a/>
7001 @@@c:erred: <[xp|wf-syntax-error]> { (1, 20); }
7002 @@XMLTest:
7003 @@@QName: xp.doctype.public.s.mdc.test
7004 @@@DEnt:
7005 @@@@test:value:
7006 <!DOCTYPE a PUBLIC >
7007 <a/>
7008 @@@c:erred: <[xp|wf-syntax-error]> { (1, 20); }
7009 @@XMLTest:
7010 @@@QName: xp.doctype.public.lit.test
7011 @@@DEnt:
7012 @@@@test:value:
7013 <!DOCTYPE a PUBLIC"p" "s">
7014 <a/>
7015 @@@c:erred: <[xp|wf-syntax-error]> { (1, 19); }
7016 @@XMLTest:
7017 @@@QName: xp.doctype.public.lita.test
7018 @@@DEnt:
7019 @@@@test:value:
7020 <!DOCTYPE a PUBLIC'p' "s">
7021 <a/>
7022 @@@c:erred: <[xp|wf-syntax-error]> { (1, 19); }
7023 @@XMLTest:
7024 @@@QName: xp.doctype.pubid.lit.lita.unmatched.1.test
7025 @@@DEnt:
7026 @@@@test:value:
7027 <!DOCTYPE a PUBLIC "p' "s">
7028 <a/>
7029 @@@c:erred: <[xp|wf-syntax-error]> { (1, 25); }
7030 @@XMLTest:
7031 @@@QName: xp.doctype.pubid.lit.lita.unmatched.2.test
7032 @@@DEnt:
7033 @@@@test:value:
7034 <!DOCTYPE a PUBLIC "p' 's'><a/>
7035 @@@c:erred: <[xp|wf-syntax-error]> { (1, 32); }
7036 @@XMLTest:
7037 @@@QName: xp.doctype.pubid.lita.lit.unmatched.1.test
7038 @@@DEnt:
7039 @@@@test:value:
7040 <!DOCTYPE a PUBLIC 'p" "s"><a/>
7041 @@@c:erred: <[xp|wf-syntax-error]> { (1, 32); }
7042 @@XMLTest:
7043 @@@QName: xp.doctype.pubid.lita.lit.unmatched.2.test
7044 @@@DEnt:
7045 @@@@test:value:
7046 <!DOCTYPE a PUBLIC 'p" 's'>
7047 <a/>
7048 @@@c:erred: <[xp|wf-syntax-error]> { (1, 21)..(1, 25); }
7049 @@XMLTest:
7050 @@@QName: xp.doctype.public.s.lit.mdc.test
7051 @@@DEnt:
7052 @@@@test:value:
7053 <!DOCTYPE a PUBLIC "><a/>
7054 @@@c:erred: <[xp|wf-syntax-error]> { (1, 26); }
7055 @@XMLTest:
7056 @@@QName: xp.doctype.public.s.lita.mdc.test
7057 @@@DEnt:
7058 @@@@test:value:
7059 <!DOCTYPE a PUBLIC '><a/>
7060 @@@c:erred: <[xp|wf-syntax-error]> { (1, 26); }
7061 @@XMLTest:
7062 @@@QName: xp.doctype.public.lit.pubid.lit.mdc.test
7063 @@@DEnt:
7064 @@@@test:value:
7065 <!DOCTYPE a PUBLIC "p">
7066 <a/>
7067 @@@c:erred: <[xp|wf-syntax-error]> { (1, 23); }
7068 @@XMLTest:
7069 @@@QName: xp.doctype.public.lita.pubid.lita.mdc.test
7070 @@@DEnt:
7071 @@@@test:value:
7072 <!DOCTYPE a PUBLIC 'p'>
7073 <a/>
7074 @@@c:erred: <[xp|wf-syntax-error]> { (1, 23); }
7075 @@XMLTest:
7076 @@@QName: xp.doctype.public.lit.pubid.lit.s.mdc.test
7077 @@@DEnt:
7078 @@@@test:value:
7079 <!DOCTYPE a PUBLIC "p" >
7080 <a/>
7081 @@@c:erred: <[xp|wf-syntax-error]> { (1, 24); }
7082 @@XMLTest:
7083 @@@QName: xp.doctype.public.lita.pubid.lita.s.mdc.test
7084 @@@DEnt:
7085 @@@@test:value:
7086 <!DOCTYPE a PUBLIC 'p' >
7087 <a/>
7088 @@@c:erred: <[xp|wf-syntax-error]> { (1, 24); }
7089 @@XMLTest:
7090 @@@QName: xp.doctype.public.lit.pubid.lit.s.lit.mdc.test
7091 @@@DEnt:
7092 @@@@test:value:
7093 <!DOCTYPE a PUBLIC "p" "><a/>
7094 @@@c:erred: <[xp|wf-syntax-error]> { (1, 30); }
7095 @@XMLTest:
7096 @@@QName: xp.doctype.public.lit.pubid.lit.s.lita.mdc.test
7097 @@@DEnt:
7098 @@@@test:value:
7099 <!DOCTYPE a PUBLIC "p" '><a/>
7100 @@@c:erred: <[xp|wf-syntax-error]> { (1, 30); }
7101 @@XMLTest:
7102 @@@QName: xp.doctype.public.lita.pubid.lita.s.lit.mdc.test
7103 @@@DEnt:
7104 @@@@test:value:
7105 <!DOCTYPE a PUBLIC 'p' "><a/>
7106 @@@c:erred: <[xp|wf-syntax-error]> { (1, 30); }
7107 @@XMLTest:
7108 @@@QName: xp.doctype.public.lita.pubid.lita.s.lita.mdc.test
7109 @@@DEnt:
7110 @@@@test:value:
7111 <!DOCTYPE a PUBLIC 'p' '><a/>
7112 @@@c:erred: <[xp|wf-syntax-error]> { (1, 30); }
7113 @@XMLTest:
7114 @@@QName: xp.doctype.public.lit.pubid.lit.lit.lita.unmatched.mdc.test
7115 @@@DEnt:
7116 @@@@test:value:
7117 <!DOCTYPE a PUBLIC "p" "s'><a/>
7118 @@@c:erred: <[xp|wf-syntax-error]> { (1, 32); }
7119 @@XMLTest:
7120 @@@QName: xp.doctype.public.lita.pubid.lita.lita.lit.unmatched.mdc.test
7121 @@@DEnt:
7122 @@@@test:value:
7123 <!DOCTYPE a PUBLIC 'p' 's"><a/>
7124 @@@c:erred: <[xp|wf-syntax-error]> { (1, 32); }
7125 @@XMLTest:
7126 @@@QName: xp.doctype.pubid.sysid.stago.1.test
7127 @@@DEnt:
7128 @@@@test:value:
7129 <!DOCTYPE a PUBLIC "p" "s"<a/>
7130 @@@c:erred: <[xp|wf-syntax-error]> { (1, 27); }
7131 @@XMLTest:
7132 @@@QName: xp.doctype.pubid.sysid.stago.2.test
7133 @@@DEnt:
7134 @@@@test:value:
7135 <!DOCTYPE a PUBLIC "p" 's'<a/>
7136 @@@c:erred: <[xp|wf-syntax-error]> { (1, 27); }
7137 @@XMLTest:
7138 @@@QName: xp.doctype.pubid.sysid.stago.s.1.test
7139 @@@DEnt:
7140 @@@@test:value:
7141 <!DOCTYPE a PUBLIC "p" "s" <a/>
7142 @@@c:erred: <[xp|wf-syntax-error]> { (1, 28); }
7143 @@XMLTest:
7144 @@@QName: xp.doctype.pubid.sysid.stago.s.2.test
7145 @@@DEnt:
7146 @@@@test:value:
7147 <!DOCTYPE a PUBLIC "p" 's' <a/>
7148 @@@c:erred: <[xp|wf-syntax-error]> { (1, 28); }
7149
7150 @@XMLTest:
7151 @@@QName: xp.endofline.1.0.crlf.test
7152 @@@DEnt:
7153 @@@@test:value:
7154 <?xml version="1.0"?>
7155 <p>aaa$u000D$u000Abbb</p>
7156 @@@test:domTree:
7157 document {
7158 xml-version: '1.0';
7159 element {
7160 text-content: 'aaa' U+000A 'bbb';
7161 }
7162 }
7163 @@XMLTest:
7164 @@@QName: xp.endofline.1.1.crlf.test
7165 @@@DEnt:
7166 @@@@test:value:
7167 <?xml version="1.1"?>
7168 <p>aaa$u000D$u000Abbb</p>
7169 @@@test:domTree:
7170 document {
7171 xml-version: '1.1';
7172 element {
7173 text-content: 'aaa' U+000A 'bbb';
7174 }
7175 }
7176 @@XMLTest:
7177 @@@QName: xp.endofline.1.0.crnl.test
7178 @@@DEnt:
7179 @@@@test:value:
7180 <?xml version="1.0"?>
7181 <p>aaa$u000D$u0085bbb</p>
7182 @@@test:domTree:
7183 document {
7184 xml-version: '1.0';
7185 element {
7186 text-content: 'aaa' U+000A U+0085 'bbb';
7187 }
7188 }
7189 @@XMLTest:
7190 @@@QName: xp.endofline.1.1.crnl.test
7191 @@@DEnt:
7192 @@@@test:value:
7193 <?xml version="1.1"?>
7194 <p>aaa$u000D$u0085bbb</p>
7195 @@@test:domTree:
7196 document {
7197 xml-version: '1.1';
7198 element {
7199 text-content: 'aaa' U+000A 'bbb';
7200 }
7201 }
7202 @@XMLTest:
7203 @@@QName: xp.endofline.1.0.nl.test
7204 @@@DEnt:
7205 @@@@test:value:
7206 <?xml version="1.0"?>
7207 <p>aaa$u0085bbb</p>
7208 @@@test:domTree:
7209 document {
7210 xml-version: '1.0';
7211 element {
7212 text-content: 'aaa' U+0085 'bbb';
7213 }
7214 }
7215 @@XMLTest:
7216 @@@QName: xp.endofline.1.1.nl.test
7217 @@@DEnt:
7218 @@@@test:value:
7219 <?xml version="1.1"?>
7220 <p>aaa$u0085bbb</p>
7221 @@@test:domTree:
7222 document {
7223 xml-version: '1.1';
7224 element {
7225 text-content: 'aaa' U+000A 'bbb';
7226 }
7227 }
7228 @@XMLTest:
7229 @@@QName: xp.endofline.1.0.ls.test
7230 @@@DEnt:
7231 @@@@test:value:
7232 <?xml version="1.0"?>
7233 <p>aaa$u2028bbb</p>
7234 @@@test:domTree:
7235 document {
7236 xml-version: '1.0';
7237 element {
7238 text-content: 'aaa' U+2028 'bbb';
7239 }
7240 }
7241 @@XMLTest:
7242 @@@QName: xp.endofline.1.1.ls.test
7243 @@@DEnt:
7244 @@@@test:value:
7245 <?xml version="1.1"?>
7246 <p>aaa$u2028bbb</p>
7247 @@@test:domTree:
7248 document {
7249 xml-version: '1.1';
7250 element {
7251 text-content: 'aaa' U+000A 'bbb';
7252 }
7253 }
7254 @@XMLTest:
7255 @@@QName: xp.endofline.1.0.cr.test
7256 @@@DEnt:
7257 @@@@test:value:
7258 <?xml version="1.0"?>
7259 <p>aaa$u000Dbbb</p>
7260 @@@test:domTree:
7261 document {
7262 xml-version: '1.0';
7263 element {
7264 text-content: 'aaa' U+000A 'bbb';
7265 }
7266 }
7267 @@XMLTest:
7268 @@@QName: xp.endofline.1.1.cr.test
7269 @@@DEnt:
7270 @@@@test:value:
7271 <?xml version="1.1"?>
7272 <p>aaa$u000Dbbb</p>
7273 @@@test:domTree:
7274 document {
7275 xml-version: '1.1';
7276 element {
7277 text-content: 'aaa' U+000A 'bbb';
7278 }
7279 }
7280 @@XMLTest:
7281 @@@QName: xp.endofline.1.0.lf.test
7282 @@@DEnt:
7283 @@@@test:value:
7284 <?xml version="1.0"?>
7285 <p>aaa$u000Abbb</p>
7286 @@@test:domTree:
7287 document {
7288 xml-version: '1.0';
7289 element {
7290 text-content: 'aaa' U+000A 'bbb';
7291 }
7292 }
7293 @@XMLTest:
7294 @@@QName: xp.endofline.1.1.lf.test
7295 @@@DEnt:
7296 @@@@test:value:
7297 <?xml version="1.1"?>
7298 <p>aaa$u000Abbb</p>
7299 @@@test:domTree:
7300 document {
7301 xml-version: '1.1';
7302 element {
7303 text-content: 'aaa' U+000A 'bbb';
7304 }
7305 }
7306 @@XMLTest:
7307 @@@QName: xp.xml10.endofline.nl.in.xmldecl.1.test
7308 @@@DEnt:
7309 @@@@test:value:
7310 <?xml$u0085version="1.0"?>
7311 <p/>
7312 @@@c:erred:
7313 <[xp|fatal-xml11-end-of-line-in-xml-declaration]> { (1, 6)..(2, 0); }
7314 @@@c:erred: <[xp|wf-syntax-error]> { }
7315 @@XMLTest:
7316 @@@QName: xp.xml11.endofline.nl.in.xmldecl.1.test
7317 @@@DEnt:
7318 @@@@test:value:
7319 <?xml$u0085version="1.1"?>
7320 (err)<p/>
7321 @@@c:erred:
7322 <[xp|fatal-xml11-end-of-line-in-xml-declaration]> { (1, 6)..(2, 0); }
7323 @@@c:erred: <[xp|wf-syntax-error]> { }
7324 @@XMLTest:
7325 @@@QName: xp.xml10.endofline.crnl.in.xmldecl.1.test
7326 @@@DEnt:
7327 @@@@test:value:
7328 <?xml$u000D$u0085version="1.0"?>
7329 <p/>
7330 @@@c:erred:
7331 <[xp|fatal-xml11-end-of-line-in-xml-declaration]> { (1, 6)..(2, 0); }
7332 @@@c:erred: <[xp|wf-syntax-error]> { }
7333 @@XMLTest:
7334 @@@QName: xp.xml11.endofline.crnl.in.xmldecl.1.test
7335 @@@DEnt:
7336 @@@@test:value:
7337 <?xml$u000D$u0085version="1.1"?>
7338 (err)<p/>
7339 @@@c:erred:
7340 <[xp|fatal-xml11-end-of-line-in-xml-declaration]> { (1, 6)..(2, 0); }
7341 @@@c:erred: <[xp|wf-syntax-error]> { }
7342 @@XMLTest:
7343 @@@QName: xp.xml10.endofline.ls.in.xmldecl.1.test
7344 @@@DEnt:
7345 @@@@test:value:
7346 <?xml$u2028version="1.0"?>
7347 <p/>
7348 @@@c:erred:
7349 <[xp|fatal-xml11-end-of-line-in-xml-declaration]> { (1, 6)..(2, 0); }
7350 @@@c:erred: <[xp|wf-syntax-error]> { }
7351 @@XMLTest:
7352 @@@QName: xp.xml11.endofline.ls.in.xmldecl.1.test
7353 @@@DEnt:
7354 @@@@test:value:
7355 <?xml$u2028version="1.1"?>
7356 (err)<p/>
7357 @@@c:erred:
7358 <[xp|fatal-xml11-end-of-line-in-xml-declaration]> { (1, 6)..(2, 0); }
7359 @@@c:erred: <[xp|wf-syntax-error]> { }
7360 @@XMLTest:
7361 @@@QName: xp.xml10.endofline.nl.in.xmldecl.2.test
7362 @@@DEnt:
7363 @@@@test:value:
7364 <?xml version="1.0"$u0085?>
7365 <p/>
7366 @@@c:erred:
7367 <[xp|fatal-xml11-end-of-line-in-xml-declaration]> { (1, 20)..(2, 0); }
7368 @@@c:erred: <[xp|wf-syntax-error]> { }
7369 @@XMLTest:
7370 @@@QName: xp.xml11.endofline.nl.in.xmldecl.2.test
7371 @@@DEnt:
7372 @@@@test:value:
7373 <?xml version="1.1"$u0085?>
7374 (err)<p/>
7375 @@@c:erred:
7376 <[xp|fatal-xml11-end-of-line-in-xml-declaration]> { (1, 20)..(2, 0); }
7377 @@@c:erred: <[xp|wf-syntax-error]> { }
7378 @@XMLTest:
7379 @@@QName: xp.xml10.endofline.crnl.in.xmldecl.2.test
7380 @@@DEnt:
7381 @@@@test:value:
7382 <?xml version="1.0"$u000D$u0085?>
7383 <p/>
7384 @@@c:erred:
7385 <[xp|fatal-xml11-end-of-line-in-xml-declaration]> { (1, 20)..(2, 0); }
7386 @@@c:erred: <[xp|wf-syntax-error]> { }
7387 @@XMLTest:
7388 @@@QName: xp.xml11.endofline.crnl.in.xmldecl.2.test
7389 @@@DEnt:
7390 @@@@test:value:
7391 <?xml version="1.1"$u000D$u0085?>
7392 (err)<p/>
7393 @@@c:erred:
7394 <[xp|fatal-xml11-end-of-line-in-xml-declaration]> { (1, 20)..(2, 0); }
7395 @@@c:erred: <[xp|wf-syntax-error]> { }
7396 @@XMLTest:
7397 @@@QName: xp.xml10.endofline.ls.in.xmldecl.2.test
7398 @@@DEnt:
7399 @@@@test:value:
7400 <?xml version="1.0"$u2028?>
7401 <p/>
7402 @@@c:erred:
7403 <[xp|fatal-xml11-end-of-line-in-xml-declaration]> { (1, 20)..(2, 0); }
7404 @@@c:erred: <[xp|wf-syntax-error]> { }
7405 @@XMLTest:
7406 @@@QName: xp.xml11.endofline.ls.in.xmldecl.2.test
7407 @@@DEnt:
7408 @@@@test:value:
7409 <?xml version="1.1"$u2028?>
7410 (err)<p/>
7411 @@@c:erred:
7412 <[xp|fatal-xml11-end-of-line-in-xml-declaration]> { (1, 20)..(2, 0); }
7413 @@@c:erred: <[xp|wf-syntax-error]> { }
7414 @@XMLTest:
7415 @@@QName: xp.xml10.endofline.nl.in.xmldecl.3.test
7416 @@@DEnt:
7417 @@@@test:value:
7418 <?xml $u0085version="1.0"?>
7419 <p/>
7420 @@@c:erred:
7421 <[xp|fatal-xml11-end-of-line-in-xml-declaration]> { (1, 7)..(2, 0); }
7422 @@@c:erred: <[xp|wf-syntax-error]> { }
7423 @@XMLTest:
7424 @@@QName: xp.xml11.endofline.nl.in.xmldecl.3.test
7425 @@@DEnt:
7426 @@@@test:value:
7427 <?xml $u0085version="1.1"?>
7428 (err)<p/>
7429 @@@c:erred:
7430 <[xp|fatal-xml11-end-of-line-in-xml-declaration]> { (1, 7)..(2, 0); }
7431 @@@c:erred: <[xp|wf-syntax-error]> { }
7432 @@XMLTest:
7433 @@@QName: xp.xml10.endofline.crnl.in.xmldecl.3.test
7434 @@@DEnt:
7435 @@@@test:value:
7436 <?xml $u000D$u0085version="1.0"?>
7437 <p/>
7438 @@@c:erred:
7439 <[xp|fatal-xml11-end-of-line-in-xml-declaration]> { (1, 7)..(2, 0); }
7440 @@@c:erred: <[xp|wf-syntax-error]> { }
7441 @@XMLTest:
7442 @@@QName: xp.xml11.endofline.crnl.in.xmldecl.3.test
7443 @@@DEnt:
7444 @@@@test:value:
7445 <?xml $u000D$u0085version="1.1"?>
7446 (err)<p/>
7447 @@@c:erred:
7448 <[xp|fatal-xml11-end-of-line-in-xml-declaration]> { (1, 7)..(2, 0); }
7449 @@@c:erred: <[xp|wf-syntax-error]> { }
7450 @@XMLTest:
7451 @@@QName: xp.xml10.endofline.ls.in.xmldecl.3.test
7452 @@@DEnt:
7453 @@@@test:value:
7454 <?xml $u2028version="1.0"?>
7455 <p/>
7456 @@@c:erred:
7457 <[xp|fatal-xml11-end-of-line-in-xml-declaration]> { (1, 7)..(2, 0); }
7458 @@@c:erred: <[xp|wf-syntax-error]> { }
7459 @@XMLTest:
7460 @@@QName: xp.xml11.endofline.ls.in.xmldecl.3.test
7461 @@@DEnt:
7462 @@@@test:value:
7463 <?xml $u2028version="1.1"?>
7464 (err)<p/>
7465 @@@c:erred:
7466 <[xp|fatal-xml11-end-of-line-in-xml-declaration]> { (1, 7)..(2, 0); }
7467 @@@c:erred: <[xp|wf-syntax-error]> { }
7468 @@XMLTest:
7469 @@@QName: xp.xml10implied.endofline.nl.in.pi.1.test
7470 @@@DEnt:
7471 @@@@test:value:
7472 <?xml-$u0085?>
7473 <p/>
7474 @@@c:erred: <[xp|wf-syntax-error]> { (1, 7)..(2, 0); }
7475 @@XMLTest:
7476 @@@QName: xp.xml10.endofline.nl.in.pi.1.test
7477 @@@DEnt:
7478 @@@@test:value:
7479 <?xml version="1.0"?>
7480 <?xml-$u0085?>
7481 <p/>
7482 @@@c:erred: <[xp|wf-syntax-error]> { (2, 7)..(3, 0); }
7483 @@XMLTest:
7484 @@@QName: xp.xml11.endofline.nl.in.pi.1.test
7485 @@@DEnt:
7486 @@@@test:value:
7487 <?xml version="1.1"?>
7488 <?xml-$u0085?>
7489 <p/>
7490 @@@test:domTree:
7491 document {
7492 xml-version: '1.1';
7493 pi {
7494 node-name: 'xml-';
7495 node-value: '';
7496 }
7497 element { }
7498 }
7499 @@XMLTest:
7500 @@@QName: xp.xml10implied.endofline.crnl.in.pi.1.test
7501 @@@DEnt:
7502 @@@@test:value:
7503 <?xml-$u000D$u0085?>
7504 <p/>
7505 @@@test:domTree:
7506 document {
7507 xml-version: '1.0';
7508 pi {
7509 node-name: 'xml-';
7510 node-value: U+0085;
7511 }
7512 element { }
7513 }
7514 @@XMLTest:
7515 @@@QName: xp.xml10.endofline.crnl.in.pi.1.test
7516 @@@DEnt:
7517 @@@@test:value:
7518 <?xml version="1.0"?>
7519 <?xml-$u000D$u0085?>
7520 <p/>
7521 @@@test:domTree:
7522 document {
7523 xml-version: '1.0';
7524 pi {
7525 node-name: 'xml-';
7526 node-value: U+0085;
7527 }
7528 element { }
7529 }
7530 @@XMLTest:
7531 @@@QName: xp.xml11.endofline.crnl.in.pi.1.test
7532 @@@DEnt:
7533 @@@@test:value:
7534 <?xml version="1.1"?>
7535 <?xml-$u000D$u0085?>
7536 <p/>
7537 @@@test:domTree:
7538 document {
7539 xml-version: '1.1';
7540 pi {
7541 node-name: 'xml-';
7542 node-value: '';
7543 }
7544 element { }
7545 }
7546 @@XMLTest:
7547 @@@QName: xp.xml10implied.endofline.ls.in.pi.1.test
7548 @@@DEnt:
7549 @@@@test:value:
7550 <?xml-$u2028?>
7551 <p/>
7552 @@@c:erred: <[xp|wf-syntax-error]> { (1, 7)..(2, 0); }
7553 @@XMLTest:
7554 @@@QName: xp.xml10.endofline.ls.in.pi.1.test
7555 @@@DEnt:
7556 @@@@test:value:
7557 <?xml version="1.0"?>
7558 <?xml-$u2028?>
7559 <p/>
7560 @@@c:erred: <[xp|wf-syntax-error]> { (2, 7)..(3, 0); }
7561 @@XMLTest:
7562 @@@QName: xp.xml11.endofline.ls.in.pi.1.test
7563 @@@DEnt:
7564 @@@@test:value:
7565 <?xml version="1.1"?>
7566 <?xml-$u2028?>
7567 <p/>
7568 @@@test:domTree:
7569 document {
7570 xml-version: '1.1';
7571 pi {
7572 node-name: 'xml-';
7573 node-value: '';
7574 }
7575 element { }
7576 }
7577
7578 @@XMLTest:
7579 @@@QName: xp.xml10.endofline.internal.1.test
7580 @@@DEnt:
7581 @@@@test:value:
7582 <?xml version="1.0"?>
7583 <!DOCTYPE a [
7584 <!ENTITY e "&#x000D; &#x000A; &#x0085; &#x000D;&#x000A; $
7585 &#x000D;&#x0085; &#x2028;">
7586 ]><a>&e;</a>
7587 @@@cfg:entity-replacement-tree: 1
7588 @@@test:domTree:
7589 document {
7590 xml-version: '1.0';
7591 document-type {
7592 general-entity {
7593 node-name: 'e';
7594 text-content: U+000D ' ' U+000A ' ' U+0085 ' '
7595 U+000D U+000A ' ' U+000D U+0085 ' ' U+2028;
7596 }
7597 }
7598 element {
7599 text-content: U+000D ' ' U+000A ' ' U+0085 ' '
7600 U+000D U+000A ' ' U+000D U+0085 ' ' U+2028;
7601 }
7602 }
7603 @@XMLTest:
7604 @@@QName: xp.xml11.endofline.internal.1.test
7605 @@@DEnt:
7606 @@@@test:value:
7607 <?xml version="1.1"?>
7608 <!DOCTYPE a [
7609 <!ENTITY e "&#x000D; &#x000A; &#x0085; &#x000D;&#x000A; $
7610 &#x000D;&#x0085; &#x2028;">
7611 ]><a>&e;</a>
7612 @@@cfg:entity-replacement-tree: 1
7613 @@@test:domTree:
7614 document {
7615 xml-version: '1.1';
7616 document-type {
7617 general-entity {
7618 node-name: 'e';
7619 text-content: U+000D ' ' U+000A ' ' U+0085 ' '
7620 U+000D U+000A ' ' U+000D U+0085 ' ' U+2028;
7621 }
7622 }
7623 element {
7624 text-content: U+000D ' ' U+000A ' ' U+0085 ' '
7625 U+000D U+000A ' ' U+000D U+0085 ' ' U+2028;
7626 }
7627 }
7628
7629 @@XMLTest:
7630 @@@QName: xp.noxmldecl.pi.pi.test
7631 @@@DEnt:
7632 @@@@test:value:
7633 <?noxml 1?><?noxml 2?><p/>
7634 @@@test:domTree:
7635 document {
7636 xml-version: '1.0';
7637 pi {
7638 node-name: 'noxml';
7639 node-value: '1';
7640 }
7641 pi {
7642 node-name: 'noxml';
7643 node-value: '2';
7644 }
7645 element { }
7646 }
7647 @@XMLTest:
7648 @@@QName: xp.noxmldecl.pi.pi.2.test
7649 @@@DEnt:
7650 @@@@test:value:
7651 <?xmlno 1?><?xmlno 2?><p/>
7652 @@@test:domTree:
7653 document {
7654 xml-version: '1.0';
7655 pi {
7656 node-name: 'xmlno';
7657 node-value: '1';
7658 }
7659 pi {
7660 node-name: 'xmlno';
7661 node-value: '2';
7662 }
7663 element { }
7664 }
7665 @@XMLTest:
7666 @@@QName: xp.noxmldecl.pi.pi.3.test
7667 @@@DEnt:
7668 @@@@test:value:
7669 <?xmln 1?><?xmln 2?><p/>
7670 @@@test:domTree:
7671 document {
7672 xml-version: '1.0';
7673 pi {
7674 node-name: 'xmln';
7675 node-value: '1';
7676 }
7677 pi {
7678 node-name: 'xmln';
7679 node-value: '2';
7680 }
7681 element { }
7682 }
7683 @@XMLTest:
7684 @@@QName: xp.noxml.s.nl.test
7685 @@@DEnt:
7686 @@@@test:value:
7687 $u0085<p/>
7688 @@@c:erred: <[xp|wf-syntax-error]> { (1, 1)..(2, 0); }
7689 @@XMLTest:
7690 @@@QName: xp.noxml.s.crnl.test
7691 @@@DEnt:
7692 @@@@test:value:
7693 $u000D$u0085<p/>
7694 @@@c:erred: <[xp|wf-syntax-error]> { (1, 1)..(2, 0); }
7695 @@XMLTest:
7696 @@@QName: xp.noxml.s.ls.test
7697 @@@DEnt:
7698 @@@@test:value:
7699 $u2028<p/>
7700 @@@c:erred: <[xp|wf-syntax-error]> { (1, 1)..(2, 0); }
7701 @@XMLTest:
7702 @@@QName: xp.xml10.decl.s.nl.test
7703 @@@DEnt:
7704 @@@@test:value:
7705 <?xml version="1.0"?>$u0085<p/>
7706 @@@c:erred: <[xp|wf-syntax-error]> { (1, 22)..(2, 0); }
7707 @@XMLTest:
7708 @@@QName: xp.xml10.decl.s.crnl.test
7709 @@@DEnt:
7710 @@@@test:value:
7711 <?xml version="1.0"?>$u000D$u0085<p/>
7712 @@@c:erred: <[xp|wf-syntax-error]> { (2, 0)..(3, 0); }
7713 @@XMLTest:
7714 @@@QName: xp.xml10.decl.s.ls.test
7715 @@@DEnt:
7716 @@@@test:value:
7717 <?xml version="1.0"?>$u2028<p/>
7718 @@@c:erred: <[xp|wf-syntax-error]> { (1, 22)..(2, 0); }
7719 @@XMLTest:
7720 @@@QName: xp.xml11.decl.s.nl.test
7721 @@@DEnt:
7722 @@@@test:value:
7723 <?xml version="1.1"?>$u0085<p/>
7724 @@@test:domTree:
7725 document {
7726 xml-version: '1.1';
7727 element { }
7728 }
7729 @@XMLTest:
7730 @@@QName: xp.xml11.decl.s.crnl.test
7731 @@@DEnt:
7732 @@@@test:value:
7733 <?xml version="1.1"?>$u000D$u0085<p/>
7734 @@@test:domTree:
7735 document {
7736 xml-version: '1.1';
7737 element { }
7738 }
7739 @@XMLTest:
7740 @@@QName: xp.xml11.decl.s.ls.test
7741 @@@DEnt:
7742 @@@@test:value:
7743 <?xml version="1.1"?>$u2028<p/>
7744 @@@test:domTree:
7745 document {
7746 xml-version: '1.1';
7747 element { }
7748 }
7749
7750 @@XMLTest:
7751 @@@QName: xp.element.type.match.1.test
7752 @@@DEnt:
7753 @@@@test:value:
7754 <p></pa>(err)
7755 @@@c:erred: <[xp|wf-element-type-match]> { (1, 4)..(1, 8); }
7756 @@@c:erred: <[xp|wf-syntax-error]> { }
7757 @@XMLTest:
7758 @@@QName: xp.element.type.match.2.test
7759 @@@DEnt:
7760 @@@@test:value:
7761 <p><pa></pa></pa>(err)
7762 @@@c:erred: <[xp|wf-element-type-match]> { (1, 13)..(1, 17); }
7763 @@@c:erred: <[xp|wf-syntax-error]> { }
7764 @@XMLTest:
7765 @@@QName: xp.element.type.match.3.test
7766 @@@DEnt:
7767 @@@@test:value:
7768 <p><pa></p></p>(err)
7769 @@@c:erred: <[xp|wf-element-type-match]> { (1, 8)..(1, 11); }
7770 @@@c:erred: <[xp|wf-syntax-error]> { }
7771 @@XMLTest:
7772 @@@QName: xp.element.type.match.4.test
7773 @@@DEnt:
7774 @@@@test:value:
7775 <a:p xmlns:a="about:1"></p>(err)
7776 @@@c:erred: <[xp|wf-element-type-match]> { (1, 24)..(1, 27); }
7777 @@@c:erred: <[xp|wf-syntax-error]> { }
7778 @@XMLTest:
7779 @@@QName: xp.element.type.match.5.test
7780 @@@DEnt:
7781 @@@@test:value:
7782 <a:p xmlns:a="about:1" xmlns:b="about:1"></b:p>(err)
7783 @@@c:erred: <[xp|wf-element-type-match]> { (1, 42)..(1, 47); }
7784 @@@c:erred: <[xp|wf-syntax-error]> { }
7785
7786 @@XMLTest:
7787 @@@QName: xp.stag.stago.name.etago.test
7788 @@@DEnt:
7789 @@@@test:value:
7790 <a</a>
7791 @@@c:erred: <[xp|wf-syntax-error]> { (1, 3); }
7792 @@XMLTest:
7793 @@@QName: xp.stag.stago.name.s.etago.test
7794 @@@DEnt:
7795 @@@@test:value:
7796 <a </a>
7797 @@@c:erred: <[xp|wf-syntax-error]> { (1, 4); }
7798 @@XMLTest:
7799 @@@QName: xp.stag.stago.name.s.attr.etago.test
7800 @@@DEnt:
7801 @@@@test:value:
7802 <a a="b"</a>
7803 @@@c:erred: <[xp|wf-syntax-error]> { (1, 9); }
7804 @@XMLTest:
7805 @@@QName: xp.stag.stago.name.s.attr.s.attr.etago.test
7806 @@@DEnt:
7807 @@@@test:value:
7808 <a a="b" c="d"</a>
7809 @@@c:erred: <[xp|wf-syntax-error]> { (1, 15); }
7810 @@XMLTest:
7811 @@@QName: xp.stag.stago.name.s.attr.s.etago.test
7812 @@@DEnt:
7813 @@@@test:value:
7814 <a a="b" </a>
7815 @@@c:erred: <[xp|wf-syntax-error]> { (1, 10); }
7816 @@XMLTest:
7817 @@@QName: xp.stag.etag.1.test
7818 @@@DEnt:
7819 @@@@test:value:
7820 <root><a></a></root>
7821 @@@test:domTree:
7822 document {
7823 element {
7824 element {
7825 node-name: 'a';
7826 }
7827 }
7828 }
7829 @@XMLTest:
7830 @@@QName: xp.stag.etag.2.test
7831 @@@DEnt:
7832 @@@@test:value:
7833 <root><ab></ab></root>
7834 @@@test:domTree:
7835 document {
7836 element {
7837 element {
7838 node-name: 'ab';
7839 }
7840 }
7841 }
7842 @@XMLTest:
7843 @@@QName: xp.stag.etag.s.1.test
7844 @@@DEnt:
7845 @@@@test:value:
7846 <root><a ></a ></root>
7847 @@@test:domTree:
7848 document {
7849 element {
7850 element {
7851 node-name: 'a';
7852 }
7853 }
7854 }
7855 @@XMLTest:
7856 @@@QName: xp.etag.1.test
7857 @@@DEnt:
7858 @@@@test:value:
7859 <root><a/></root>
7860 @@@test:domTree:
7861 document {
7862 element {
7863 element {
7864 node-name: 'a';
7865 }
7866 }
7867 }
7868 @@XMLTest:
7869 @@@QName: xp.etag.2.test
7870 @@@DEnt:
7871 @@@@test:value:
7872 <root><a /></root>
7873 @@@test:domTree:
7874 document {
7875 element {
7876 element {
7877 node-name: 'a';
7878 }
7879 }
7880 }
7881 @@XMLTest:
7882 @@@QName: xp.stag.etag.attr.1.test
7883 @@@DEnt:
7884 @@@@test:value:
7885 <root><a at="v"></a></root>
7886 @@@test:domTree:
7887 document {
7888 element {
7889 element {
7890 node-name: 'a';
7891 attribute {
7892 node-name: 'at';
7893 value: 'v';
7894 }
7895 }
7896 }
7897 }
7898 @@XMLTest:
7899 @@@QName: xp.stag.etag.attr.2.test
7900 @@@DEnt:
7901 @@@@test:value:
7902 <root><a at="v" ></a></root>
7903 @@@test:domTree:
7904 document {
7905 element {
7906 element {
7907 node-name: 'a';
7908 attribute {
7909 node-name: 'at';
7910 value: 'v';
7911 }
7912 }
7913 }
7914 }
7915 @@XMLTest:
7916 @@@QName: xp.stag.etag.attr.3.test
7917 @@@DEnt:
7918 @@@@test:value:
7919 <root><a at ="v"></a></root>
7920 @@@test:domTree:
7921 document {
7922 element {
7923 element {
7924 node-name: 'a';
7925 attribute {
7926 node-name: 'at';
7927 value: 'v';
7928 }
7929 }
7930 }
7931 }
7932 @@XMLTest:
7933 @@@QName: xp.stag.etag.attr.4.test
7934 @@@DEnt:
7935 @@@@test:value:
7936 <root><a at= "v"></a></root>
7937 @@@test:domTree:
7938 document {
7939 element {
7940 element {
7941 node-name: 'a';
7942 attribute {
7943 node-name: 'at';
7944 value: 'v';
7945 }
7946 }
7947 }
7948 }
7949 @@XMLTest:
7950 @@@QName: xp.stag.etag.attr.5.test
7951 @@@DEnt:
7952 @@@@test:value:
7953 <root><a at='v'></a></root>
7954 @@@test:domTree:
7955 document {
7956 element {
7957 element {
7958 node-name: 'a';
7959 attribute {
7960 node-name: 'at';
7961 value: 'v';
7962 }
7963 }
7964 }
7965 }
7966 @@XMLTest:
7967 @@@QName: xp.stag.etag.attr.6.test
7968 @@@DEnt:
7969 @@@@test:value:
7970 <root><a at= 'v' ></a></root>
7971 @@@test:domTree:
7972 document {
7973 element {
7974 element {
7975 node-name: 'a';
7976 attribute {
7977 node-name: 'at';
7978 value: 'v';
7979 }
7980 }
7981 }
7982 }
7983 @@XMLTest:
7984 @@@QName: xp.stag.etag.attr.attr.1.test
7985 @@@DEnt:
7986 @@@@test:value:
7987 <root><a at="v" tr="w"></a></root>
7988 @@@test:domTree:
7989 document {
7990 element {
7991 element {
7992 node-name: 'a';
7993 attribute {
7994 node-name: 'at';
7995 value: 'v';
7996 }
7997 attribute {
7998 node-name: 'tr';
7999 value: 'w';
8000 }
8001 }
8002 }
8003 }
8004 @@XMLTest:
8005 @@@QName: xp.stag.etag.attr.attr.2.test
8006 @@@DEnt:
8007 @@@@test:value:
8008 <root><a tr="w" at="v"></a></root>
8009 @@@test:domTree:
8010 document {
8011 element {
8012 element {
8013 node-name: 'a';
8014 attribute {
8015 node-name: 'at';
8016 value: 'v';
8017 }
8018 attribute {
8019 node-name: 'tr';
8020 value: 'w';
8021 }
8022 }
8023 }
8024 }
8025 @@XMLTest:
8026 @@@QName: xp.stag.etag.attr.no.s.attr.test
8027 @@@DEnt:
8028 @@@@test:value:
8029 <root><a at="v"tr="w"></a></root>
8030 @@@c:erred: <[xp|wf-syntax-error]> { (1, 16)..(1, 17); }
8031 @@XMLTest:
8032 @@@QName: xp.etag.attr.1.test
8033 @@@DEnt:
8034 @@@@test:value:
8035 <root><a at="v" tr="w"></a b="c"></root>
8036 @@@c:erred: <[xp|wf-syntax-error]> { (1, 28); }
8037 @@XMLTest:
8038 @@@QName: xp.etag.no.etagc.1.test
8039 @@@DEnt:
8040 @@@@test:value:
8041 <root><a at="v" tr="w"></a</root>
8042 @@@c:erred: <[xp|wf-syntax-error]> { (1, 27)..(1, 28); }
8043 @@XMLTest:
8044 @@@QName: xp.etag.no.etagc.2.test
8045 @@@DEnt:
8046 @@@@test:value:
8047 <root><a at="v" tr="w"></a </root>
8048 @@@c:erred: <[xp|wf-syntax-error]> { (1, 29)..(1, 30); }
8049 @@XMLTest:
8050 @@@QName: xp.mtag.attr.1.test
8051 @@@DEnt:
8052 @@@@test:value:
8053 <root><a b="c"/></root>
8054 @@@test:domTree:
8055 document {
8056 element {
8057 element {
8058 node-name: 'a';
8059 attribute {
8060 node-name: 'b';
8061 value: 'c';
8062 }
8063 }
8064 }
8065 }
8066 @@XMLTest:
8067 @@@QName: xp.mtag.attr.2.test
8068 @@@DEnt:
8069 @@@@test:value:
8070 <root><a b="c" /></root>
8071 @@@test:domTree:
8072 document {
8073 element {
8074 element {
8075 node-name: 'a';
8076 attribute {
8077 node-name: 'b';
8078 value: 'c';
8079 }
8080 }
8081 }
8082 }
8083 @@XMLTest:
8084 @@@QName: xp.mtag.attr.3.test
8085 @@@DEnt:
8086 @@@@test:value:
8087 <root><a b='c'/></root>
8088 @@@test:domTree:
8089 document {
8090 element {
8091 element {
8092 node-name: 'a';
8093 attribute {
8094 node-name: 'b';
8095 value: 'c';
8096 }
8097 }
8098 }
8099 }
8100 @@XMLTest:
8101 @@@QName: xp.mtag.attr.4.test
8102 @@@DEnt:
8103 @@@@test:value:
8104 <root><a b="c" d="e"/></root>
8105 @@@test:domTree:
8106 document {
8107 element {
8108 element {
8109 node-name: 'a';
8110 attribute {
8111 node-name: 'b';
8112 value: 'c';
8113 }
8114 attribute {
8115 node-name: 'd';
8116 value: 'e';
8117 }
8118 }
8119 }
8120 }
8121
8122 @@XMLTest:
8123 @@@QName: xp.attvalue.lt.1.test
8124 @@@DEnt:
8125 @@@@test:value:
8126 <a b="aa<dd"/>
8127 @@@c:erred: <[xp|wf-syntax-error]> { (1, 9); }
8128 @@XMLTest:
8129 @@@QName: xp.attvalue.lt.2.test
8130 @@@DEnt:
8131 @@@@test:value:
8132 <a b='aa<dd'/>
8133 @@@c:erred: <[xp|wf-syntax-error]> { (1, 9); }
8134 @@XMLTest:
8135 @@@QName: xp.attvalue.amp.1.test
8136 @@@DEnt:
8137 @@@@test:value:
8138 <a b="aa& dd"/>
8139 @@@c:erred: <[xp|wf-syntax-error]> { (1, 9)..(1, 12); }
8140 @@XMLTest:
8141 @@@QName: xp.attvalue.amp.2.test
8142 @@@DEnt:
8143 @@@@test:value:
8144 <a b='aa& dd'/>
8145 @@@c:erred: <[xp|wf-syntax-error]> { (1, 9)..(1, 12); }
8146 @@XMLTest:
8147 @@@QName: xp.attvalue.amp.3.test
8148 @@@DEnt:
8149 @@@@test:value:
8150 <a b="aa&# dd"/>
8151 @@@c:erred: <[xp|wf-syntax-error]> { (1, 9)..(1, 13); }
8152 @@XMLTest:
8153 @@@QName: xp.attvalue.amp.4.test
8154 @@@DEnt:
8155 @@@@test:value:
8156 <a b="aa&#x dd"/>
8157 @@@c:erred: <[xp|wf-syntax-error]> { (1, 9)..(1, 14); }
8158
8159 @@XMLTest:
8160 @@@QName: xp.unique.att.spec.1.test
8161 @@@DEnt:
8162 @@@@test:value:
8163 <a b="c" b="d"/>
8164 @@@c:erred: <[xp|wf-unique-att-spec]> { (1, 4)..(1, 14); }
8165 @@XMLTest:
8166 @@@QName: xp.unique.att.spec.2.test
8167 @@@DEnt:
8168 @@@@test:value:
8169 <a d:b="c" d:b="d" xmlns:d="about:2"/>
8170 @@@c:erred: <[xp|wf-unique-att-spec]> { (1, 4)..(1, 18); }
8171
8172 @@XMLTest:
8173 @@@QName: xp.no.external.entity.references.1.test
8174 @@@DEnt:
8175 @@@@test:value:
8176 <!DOCTYPE a [
8177 <!ENTITY ent SYSTEM "something">
8178 ]>
8179 <a b="c&ent;"/>
8180 @@@c:erred: <[xp|wf-no-external-entity-references]> { (4, 8)..(4, 12); }
8181 @@XMLTest:
8182 @@@QName: xp.no.external.entity.references.2.test
8183 @@@DEnt:
8184 @@@@test:value:
8185 <!DOCTYPE a [
8186 <!NOTATION n SYSTEM "notation">
8187 <!ENTITY ent SYSTEM "something" NDATA n>
8188 ]>
8189 <a b="c&ent;"/>
8190 @@@c:erred: <[xp|wf-no-external-entity-references]> { (5, 8)..(5, 12); }
8191 @@XMLTest:
8192 @@@QName: xp.no.external.entity.references.3.test
8193 @@@DEnt:
8194 @@@@test:value:
8195 <!DOCTYPE a [
8196 <!ENTITY ent SYSTEM "something">
8197 <!ENTITY ent2 "ddd&ent;">
8198 ]>
8199 <a b="c&ent2;"/>
8200 @@@c:erred: <[xp|wf-no-external-entity-references]> { (1, 4)..(1, 8); }
8201 @@XMLTest:
8202 @@@QName: xp.no.external.entity.references.4.test
8203 @@@DEnt:
8204 @@@@test:value:
8205 <!DOCTYPE a [
8206 <!NOTATION n SYSTEM "notation">
8207 <!ENTITY ent SYSTEM "something" NDATA n>
8208 <!ENTITY ent2 "ddd&ent;">
8209 ]>
8210 <a b="c&ent2;"/>
8211 @@@cfg:entity-replacement-tree: 1
8212 @@@c:erred: <[xp|wf-no-external-entity-references]> { (1, 4)..(1, 8); }
8213 @@@c:erred: <[xp|wf-parsed-entity]> { }
8214 @@XMLTest:
8215 @@@QName: xp.no.lt.in.attr.value.1.test
8216 @@@DEnt:
8217 @@@@test:value:
8218 <!DOCTYPE a [
8219 <!ENTITY ent "aa<bb">
8220 ]>
8221 <a b="c&ent;"/>
8222 @@@cfg:entity-replacement-tree: 1
8223 @@@c:erred: <[xp|wf-no-lt-in-attribute-values]> { (1, 3); }
8224 @@@c:erred:
8225 @@@@@: <[xp|wf-syntax-error]> { (1, 3)..(1, 6); }
8226 @@@@enImplNote: When entity node is created.
8227 @@XMLTest:
8228 @@@QName: xp.no.lt.in.attr.value.1.2.test
8229 @@@DEnt:
8230 @@@@test:value:
8231 <!DOCTYPE a [
8232 <!ENTITY ent "aa<bb">
8233 ]>
8234 <a b="c&ent;"/>
8235 @@@cfg:entity-replacement-tree: 0
8236 @@@c:erred: <[xp|wf-no-lt-in-attribute-values]> { (1, 3); }
8237 @@XMLTest:
8238 @@@QName: xp.no.lt.in.attr.value.2.test
8239 @@@DEnt:
8240 @@@@test:value:
8241 <!DOCTYPE a [
8242 <!ENTITY ent "aa<bb">
8243 <!ENTITY ent2 "ccc&ent;">
8244 ]>
8245 <a b="c&ent2;"/>
8246 @@@cfg:entity-replacement-tree: 1
8247 @@@c:erred: <[xp|wf-no-lt-in-attribute-values]> { (1, 3); }
8248 @@@c:erred:
8249 @@@@@: <[xp|wf-syntax-error]> { (1, 3)..(1, 6); }
8250 @@@@enImplNote: When entity node is created.
8251 @@XMLTest:
8252 @@@QName: xp.no.lt.in.attr.value.3.test
8253 @@@DEnt:
8254 @@@@test:value:
8255 <!DOCTYPE a [
8256 <!ENTITY ent "aa&#x3C;bb">
8257 ]>
8258 <a b="c&ent;"/>
8259 @@@cfg:entity-replacement-tree: 1
8260 @@@c:erred: <[xp|wf-no-lt-in-attribute-values]> { (1, 3); }
8261 @@@c:erred:
8262 @@@@@: <[xp|wf-syntax-error]> { (1, 3)..(1, 6); }
8263 @@@@enImplNote: When entity node is created.
8264 @@XMLTest:
8265 @@@QName: xp.no.lt.in.attr.value.4.test
8266 @@@DEnt:
8267 @@@@test:value:
8268 <!DOCTYPE a [
8269 <!ENTITY ent "aa&#x3C;bb">
8270 <!ENTITY ent2 "ccc&ent;">
8271 ]>
8272 <a b="c&ent2;"/>
8273 @@@cfg:entity-replacement-tree: 1
8274 @@@c:erred: <[xp|wf-no-lt-in-attribute-values]> { (1, 3); }
8275 @@@c:erred:
8276 @@@@@: <[xp|wf-syntax-error]> { (1, 3)..(1, 6); }
8277 @@@@enImplNote: When entity node is created.
8278 @@XMLTest:
8279 @@@QName: xp.ger.lt.in.attr.value.1.test
8280 @@@DEnt:
8281 @@@@test:value:
8282 <!DOCTYPE a [
8283 <!ENTITY ent "aa&lt;bb">
8284 ]>
8285 <a b="c&ent;"/>
8286 @@@cfg:entity-replacement-tree: 1
8287 @@@test:domTree:
8288 document {
8289 document-type {
8290 general-entity {
8291 node-name: 'ent';
8292 text-content: 'aa<bb';
8293 }
8294 }
8295 element {
8296 attribute {
8297 node-name: 'b';
8298 text { data: 'c'; }
8299 general-entity-reference {
8300 manakai-expanded: true;
8301 node-name: 'ent';
8302 text-content: 'aa<bb';
8303 }
8304 }
8305 }
8306 }
8307 @@XMLTest:
8308 @@@QName: xp.ger.lt.in.attr.value.2.test
8309 @@@DEnt:
8310 @@@@test:value:
8311 <!DOCTYPE a [
8312 <!ENTITY ent "aa&lt;bb">
8313 <!ENTITY ent2 "ccc&ent;">
8314 ]>
8315 <a b="c&ent2;"/>
8316 @@@cfg:entity-replacement-tree: 1
8317 @@@test:domTree:
8318 document {
8319 document-type {
8320 general-entity {
8321 node-name: 'ent';
8322 text-content: 'aa<bb';
8323 }
8324 general-entity {
8325 node-name: 'ent2';
8326 text { data: 'ccc'; }
8327 general-entity-reference {
8328 node-name: 'ent';
8329 text-content: 'aa<bb';
8330 manakai-expanded: true;
8331 }
8332 }
8333 }
8334 element {
8335 attribute {
8336 node-name: 'b';
8337 text { data: 'c'; }
8338 general-entity-reference {
8339 node-name: 'ent2';
8340 text { data: 'ccc'; }
8341 general-entity-reference {
8342 node-name: 'ent';
8343 text-content: 'aa<bb';
8344 manakai-expanded: true;
8345 }
8346 manakai-expanded: true;
8347 }
8348 }
8349 }
8350 }
8351
8352 @@XMLTest:
8353 @@@QName: xp.doctype.intsubset.pi.test
8354 @@@DEnt:
8355 @@@@test:value:
8356 <!DOCTYPE a [
8357 <?pi data ?>
8358 ]>
8359 <a></a>
8360 @@@test:domTree:
8361 document {
8362 xml-version: '1.0';
8363 xml-encoding: null;
8364 xml-standalone: false;
8365 document-type {
8366 node-name: 'a';
8367 pi {
8368 target: 'pi';
8369 data: 'data ';
8370 }
8371 }
8372 element {
8373 namespace-uri: null;
8374 prefix: null;
8375 local-name: 'a';
8376 text-content: '';
8377 }
8378 }
8379 @@@enImplNote:
8380 A DOM PI node in doctype node is a manakai extension.
8381
8382
8383 @@XMLTest:
8384 @@@QName: xp.doctype.intsubset.entity.general.internal.test
8385 @@@DEnt:
8386 @@@@test:value:
8387 <!DOCTYPE a [
8388 <!ENTITY entity "entity value">
8389 ]>
8390 <a></a>
8391 @@@cfg:entity-replacement-tree: 1
8392 @@@test:domTree:
8393 document {
8394 xml-version: '1.0';
8395 xml-encoding: null;
8396 xml-standalone: false;
8397 document-type {
8398 node-name: 'a';
8399 general-entity {
8400 node-name: 'entity';
8401 text-content: 'entity value';
8402 has-replacement-tree: true;
8403 }
8404 }
8405 element {
8406 namespace-uri: null;
8407 prefix: null;
8408 local-name: 'a';
8409 text-content: '';
8410 }
8411 }
8412 @@XMLTest:
8413 @@@QName: xp.doctype.intsubset.entity.parameter.internal.test
8414 @@@DEnt:
8415 @@@@test:value:
8416 <!DOCTYPE a [
8417 <!ENTITY % entity "entity value">
8418 ]>
8419 <a></a>
8420 @@@test:domTree:
8421 document {
8422 xml-version: '1.0';
8423 xml-encoding: null;
8424 xml-standalone: false;
8425 document-type {
8426 node-name: 'a';
8427 }
8428 element {
8429 namespace-uri: null;
8430 prefix: null;
8431 local-name: 'a';
8432 text-content: '';
8433 }
8434 }
8435
8436 @@XMLTest:
8437 @@@QName: xp.doctype.internal.entity.root.element.text.only.test
8438 @@@DEnt:
8439 @@@@test:value:
8440 <!DOCTYPE a [
8441 <!ENTITY entity "entity value">
8442 ]>
8443 <a>&entity;</a>
8444 @@@cfg:entity-replacement-tree: 1
8445 @@@test:domTree:
8446 document {
8447 xml-version: '1.0';
8448 xml-encoding: null;
8449 xml-standalone: false;
8450 document-type {
8451 node-name: 'a';
8452 general-entity {
8453 node-name: 'entity';
8454 text-content: 'entity value';
8455 has-replacement-tree: true;
8456 }
8457 }
8458 element {
8459 namespace-uri: null;
8460 prefix: null;
8461 local-name: 'a';
8462 general-entity-reference {
8463 node-name: 'entity';
8464 text {
8465 data: 'entity value';
8466 }
8467 manakai-expanded: true;
8468 }
8469 }
8470 }
8471 @@XMLTest:
8472 @@@QName: xp.doctype.internal.entity.root.element.text.mult.test
8473 @@@DEnt:
8474 @@@@test:value:
8475 <!DOCTYPE a [
8476 <!ENTITY entity "entity value">
8477 ]>
8478 <a>&entity; and &entity;</a>
8479 @@@cfg:entity-replacement-tree: 1
8480 @@@test:domTree:
8481 document {
8482 xml-version: '1.0';
8483 xml-encoding: null;
8484 xml-standalone: false;
8485 document-type {
8486 node-name: 'a';
8487 general-entity {
8488 node-name: 'entity';
8489 text-content: 'entity value';
8490 has-replacement-tree: true;
8491 }
8492 }
8493 element {
8494 namespace-uri: null;
8495 prefix: null;
8496 local-name: 'a';
8497 general-entity-reference {
8498 node-name: 'entity';
8499 text {
8500 data: 'entity value';
8501 }
8502 manakai-expanded: true;
8503 }
8504 text { data: ' and '; }
8505 general-entity-reference {
8506 node-name: 'entity';
8507 text {
8508 data: 'entity value';
8509 }
8510 manakai-expanded: true;
8511 }
8512 }
8513 }
8514 @@XMLTest:
8515 @@@QName: xp.doctype.internal.entity.root.element.text.element.test
8516 @@@DEnt:
8517 @@@@test:value:
8518 <!DOCTYPE a [
8519 <!ENTITY entity "entity <p>value</p> with <e>element</e> ">
8520 ]>
8521 <a>&entity;</a>
8522 @@@cfg:entity-replacement-tree: 1
8523 @@@test:domTree:
8524 document {
8525 xml-version: '1.0';
8526 xml-encoding: null;
8527 xml-standalone: false;
8528 document-type {
8529 node-name: 'a';
8530 general-entity {
8531 node-name: 'entity';
8532 has-replacement-tree: true;
8533 text { data: 'entity '; }
8534 element {
8535 node-name: 'p';
8536 text-content: 'value';
8537 }
8538 text { data: ' with '; }
8539 element {
8540 node-name: 'e';
8541 text-content: 'element';
8542 }
8543 text { data: ' '; }
8544 }
8545 }
8546 element {
8547 namespace-uri: null;
8548 prefix: null;
8549 local-name: 'a';
8550 general-entity-reference {
8551 node-name: 'entity';
8552 manakai-expanded: true;
8553 text {
8554 data: 'entity ';
8555 }
8556 element {
8557 namespace-uri: null;
8558 prefix: null;
8559 local-name: 'p';
8560 text {
8561 data: 'value';
8562 }
8563 }
8564 text {
8565 data: ' with ';
8566 }
8567 element {
8568 namespace-uri: null;
8569 prefix: null;
8570 local-name: 'e';
8571 text {
8572 data: 'element';
8573 }
8574 }
8575 text {
8576 data: ' ';
8577 }
8578 }
8579 }
8580 }
8581 @@XMLTest:
8582 @@@QName: xp.doctype.internal.entity.root.element.text.in.ent.test
8583 @@@DEnt:
8584 @@@@test:value:
8585 <!DOCTYPE a [
8586 <!ENTITY entity1 "entity value">
8587 <!ENTITY entity2 "e&entity1;n">
8588 ]>
8589 <a>&entity2;</a>
8590 @@@cfg:entity-replacement-tree: 1
8591 @@@test:domTree:
8592 document {
8593 xml-version: '1.0';
8594 xml-encoding: null;
8595 xml-standalone: false;
8596 document-type {
8597 node-name: 'a';
8598 general-entity {
8599 node-name: 'entity1';
8600 text-content: 'entity value';
8601 }
8602 general-entity {
8603 node-name: 'entity2';
8604 text { data: 'e'; }
8605 general-entity-reference {
8606 node-name: 'entity1';
8607 text-content: 'entity value';
8608 manakai-expanded: true;
8609 }
8610 text { data: 'n'; }
8611 }
8612 }
8613 element {
8614 namespace-uri: null;
8615 prefix: null;
8616 local-name: 'a';
8617 general-entity-reference {
8618 node-name: 'entity2';
8619 text { data: 'e'; }
8620 manakai-expanded: true;
8621 general-entity-reference {
8622 node-name: 'entity1';
8623 text {
8624 data: 'entity value';
8625 }
8626 manakai-expanded: true;
8627 }
8628 text { data: 'n'; }
8629 }
8630 }
8631 }
8632
8633 @@XMLTest:
8634 @@@QName: xp.doctype.entity.value.charref.test
8635 @@@DEnt:
8636 @@@@test:value:
8637 <!DOCTYPE a [
8638 <!ENTITY entity1 "entity &#x21;value&#35;">
8639 <!ENTITY entity2 '&#x21;value&#35;'>
8640 ]>
8641 <a></a>
8642 @@@cfg:entity-replacement-tree: 1
8643 @@@test:domTree:
8644 document {
8645 document-type {
8646 general-entity {
8647 node-name: 'entity1';
8648 text-content: 'entity !value#';
8649 has-replacement-tree: true;
8650 }
8651 general-entity {
8652 node-name: 'entity2';
8653 text-content: '!value#';
8654 has-replacement-tree: true;
8655 }
8656 }
8657 element { }
8658 }
8659
8660 @@XMLTest:
8661 @@@QName: xp.predefined.in.content.test
8662 @@@DEnt:
8663 @@@@test:value:
8664 <a>_&lt;_&gt;_&quot;_&apos;_&amp;_</a>
8665 @@@test:domTree:
8666 document {
8667 element {
8668 text-content: '_<_>_"_' U+0027 '_&_';
8669 }
8670 }
8671 @@XMLTest:
8672 @@@QName: xp.predefined.in.attr.test
8673 @@@DEnt:
8674 @@@@test:value:
8675 <a at="_&lt;_&gt;_&quot;_&apos;_&amp;_"></a>
8676 @@@test:domTree:
8677 document {
8678 element {
8679 attribute {
8680 node-name: 'at';
8681 text-content: '_<_>_"_' U+0027 '_&_';
8682 }
8683 }
8684 }
8685 @@XMLTest:
8686 @@@QName: xp.predefined.in.content.in.entity.test
8687 @@@DEnt:
8688 @@@@test:value:
8689 <!DOCTYPE a [
8690 <!ENTITY ent "_&lt;_&gt;_&quot;_&apos;_&amp;_">
8691 ]>
8692 <a>&ent;</a>
8693 @@@cfg:entity-replacement-tree: 1
8694 @@@test:domTree:
8695 document {
8696 document-type {
8697 general-entity {
8698 node-name: 'ent';
8699 text-content: '_<_>_"_' U+0027 '_&_';
8700 }
8701 }
8702 element {
8703 text-content: '_<_>_"_' U+0027 '_&_';
8704 }
8705 }
8706 @@XMLTest:
8707 @@@QName: xp.predefined.decl.ignore.test
8708 @@@DEnt:
8709 @@@@test:value:
8710 <!DOCTYPE a [
8711 <!ENTITY lt "&#x26;#x3C;">
8712 <!ENTITY gt "&#x3E;">
8713 <!ENTITY amp "&#x26;#x26;">
8714 <!ENTITY quot "&#x22;">
8715 <!ENTITY apos "&#x27;">
8716 <!ENTITY other "other">
8717 ]>
8718 <a>_&lt;_&gt;_&quot;_&apos;_&amp;_&other;_</a>
8719 @@@cfg:entity-replacement-tree: 1
8720 @@@test:domTree:
8721 document {
8722 document-type {
8723 general-entity {
8724 node-name: 'other';
8725 text-content: 'other';
8726 }
8727 }
8728 element {
8729 text-content: '_<_>_"_' U+0027 '_&_other_';
8730 }
8731 }
8732
8733 @@XMLTest:
8734 @@@QName: xp.doctype.internal.attr.empty.test
8735 @@@DEnt:
8736 @@@@test:value:
8737 <!DOCTYPE a [
8738 <!ATTLIST a>
8739 ]>
8740 <a></a>
8741 @@@test:domTree:
8742 document {
8743 xml-version: '1.0';
8744 xml-encoding: null;
8745 xml-standalone: false;
8746 document-type {
8747 node-name: 'a';
8748 element-type-definition {
8749 node-name: 'a';
8750 }
8751 }
8752 element {
8753 namespace-uri: null;
8754 local-name: 'a';
8755 }
8756 }
8757 @@XMLTest:
8758 @@@QName: xp.doctype.internal.attr.cdata.implied.test
8759 @@@DEnt:
8760 @@@@test:value:
8761 <!DOCTYPE a [
8762 <!ATTLIST a
8763 at CDATA #IMPLIED
8764 >
8765 ]>
8766 <a></a>
8767 @@@test:domTree:
8768 document {
8769 xml-version: '1.0';
8770 xml-encoding: null;
8771 xml-standalone: false;
8772 document-type {
8773 node-name: 'a';
8774 element-type-definition {
8775 node-name: 'a';
8776 attribute-definition {
8777 node-name: 'at';
8778 declared-type: const (CDATA_ATTR);
8779 allowed-tokens: DOMStringList ();
8780 default-type: const (IMPLIED_DEFAULT);
8781 text-content: '';
8782 }
8783 }
8784 }
8785 element {
8786 namespace-uri: null;
8787 local-name: 'a';
8788 }
8789 }
8790 @@XMLTest:
8791 @@@QName: xp.doctype.internal.attr.types.implied.test
8792 @@@DEnt:
8793 @@@@test:value:
8794 <!DOCTYPE a [
8795 <!ATTLIST a
8796 at1 ID #IMPLIED
8797 at2 IDREF #IMPLIED
8798 at3 IDREFS #IMPLIED
8799 at4 ENTITY #IMPLIED
8800 at5 ENTITIES #IMPLIED
8801 at6 NMTOKEN #IMPLIED
8802 at7 NMTOKENS #IMPLIED
8803 at8 NOTATION (n1 | n2|n3) #IMPLIED
8804 at9 (e1| e2| e3 ) #IMPLIED
8805 >
8806 ]>
8807 <a></a>
8808 @@@test:domTree:
8809 document {
8810 xml-version: '1.0';
8811 xml-encoding: null;
8812 xml-standalone: false;
8813 document-type {
8814 node-name: 'a';
8815 element-type-definition {
8816 node-name: 'a';
8817 attribute-definition {
8818 node-name: 'at1';
8819 declared-type: const (ID_ATTR);
8820 allowed-tokens: DOMStringList ();
8821 default-type: const (IMPLIED_DEFAULT);
8822 text-content: '';
8823 }
8824 attribute-definition {
8825 node-name: 'at2';
8826 declared-type: const (IDREF_ATTR);
8827 allowed-tokens: DOMStringList ();
8828 default-type: const (IMPLIED_DEFAULT);
8829 text-content: '';
8830 }
8831 attribute-definition {
8832 node-name: 'at3';
8833 declared-type: const (IDREFS_ATTR);
8834 allowed-tokens: DOMStringList ();
8835 default-type: const (IMPLIED_DEFAULT);
8836 text-content: '';
8837 }
8838 attribute-definition {
8839 node-name: 'at4';
8840 declared-type: const (ENTITY_ATTR);
8841 allowed-tokens: DOMStringList ();
8842 default-type: const (IMPLIED_DEFAULT);
8843 text-content: '';
8844 }
8845 attribute-definition {
8846 node-name: 'at5';
8847 declared-type: const (ENTITIES_ATTR);
8848 allowed-tokens: DOMStringList ();
8849 default-type: const (IMPLIED_DEFAULT);
8850 text-content: '';
8851 }
8852 attribute-definition {
8853 node-name: 'at6';
8854 declared-type: const (NMTOKEN_ATTR);
8855 allowed-tokens: DOMStringList ();
8856 default-type: const (IMPLIED_DEFAULT);
8857 text-content: '';
8858 }
8859 attribute-definition {
8860 node-name: 'at7';
8861 declared-type: const (NMTOKENS_ATTR);
8862 allowed-tokens: DOMStringList ();
8863 default-type: const (IMPLIED_DEFAULT);
8864 text-content: '';
8865 }
8866 attribute-definition {
8867 node-name: 'at8';
8868 declared-type: const (NOTATION_ATTR);
8869 allowed-tokens: DOMStringList ('n1', 'n2', 'n3');
8870 default-type: const (IMPLIED_DEFAULT);
8871 text-content: '';
8872 }
8873 attribute-definition {
8874 node-name: 'at9';
8875 declared-type: const (ENUMERATION_ATTR);
8876 allowed-tokens: DOMStringList ('e1', 'e2', 'e3');
8877 default-type: const (IMPLIED_DEFAULT);
8878 text-content: '';
8879 }
8880 }
8881 }
8882 element {
8883 namespace-uri: null;
8884 local-name: 'a';
8885 }
8886 }
8887 @@XMLTest:
8888 @@@QName: xp.doctype.internal.attr.cdata.defaults.test
8889 @@@DEnt:
8890 @@@@test:value:
8891 <!DOCTYPE a [
8892 <!ATTLIST a
8893 at1 CDATA #IMPLIED
8894 at2 CDATA #REQUIRED
8895 at3 CDATA #FIXED "value3"
8896 at4 CDATA "value4"
8897 at5 CDATA #FIXED 'value5'
8898 at6 CDATA 'value6'
8899 >
8900 ]>
8901 <a></a>
8902 @@@test:domTree:
8903 document {
8904 xml-version: '1.0';
8905 xml-encoding: null;
8906 xml-standalone: false;
8907 document-type {
8908 node-name: 'a';
8909 element-type-definition {
8910 node-name: 'a';
8911 attribute-definition {
8912 node-name: 'at1';
8913 declared-type: const (CDATA_ATTR);
8914 allowed-tokens: DOMStringList ();
8915 default-type: const (IMPLIED_DEFAULT);
8916 text-content: '';
8917 }
8918 attribute-definition {
8919 node-name: 'at2';
8920 declared-type: const (CDATA_ATTR);
8921 allowed-tokens: DOMStringList ();
8922 default-type: const (REQUIRED_DEFAULT);
8923 text-content: '';
8924 }
8925 attribute-definition {
8926 node-name: 'at3';
8927 declared-type: const (CDATA_ATTR);
8928 allowed-tokens: DOMStringList ();
8929 default-type: const (FIXED_DEFAULT);
8930 text-content: 'value3';
8931 }
8932 attribute-definition {
8933 node-name: 'at4';
8934 declared-type: const (CDATA_ATTR);
8935 allowed-tokens: DOMStringList ();
8936 default-type: const (EXPLICIT_DEFAULT);
8937 text-content: 'value4';
8938 }
8939 attribute-definition {
8940 node-name: 'at5';
8941 declared-type: const (CDATA_ATTR);
8942 allowed-tokens: DOMStringList ();
8943 default-type: const (FIXED_DEFAULT);
8944 text-content: 'value5';
8945 }
8946 attribute-definition {
8947 node-name: 'at6';
8948 declared-type: const (CDATA_ATTR);
8949 allowed-tokens: DOMStringList ();
8950 default-type: const (EXPLICIT_DEFAULT);
8951 text-content: 'value6';
8952 }
8953 }
8954 }
8955 element {
8956 namespace-uri: null;
8957 local-name: 'a';
8958 attribute {
8959 node-name: 'at3';
8960 text-content: 'value3';
8961 specified: false;
8962 }
8963 attribute {
8964 node-name: 'at4';
8965 text-content: 'value4';
8966 specified: false;
8967 }
8968 attribute {
8969 node-name: 'at5';
8970 text-content: 'value5';
8971 specified: false;
8972 }
8973 attribute {
8974 node-name: 'at6';
8975 text-content: 'value6';
8976 specified: false;
8977 }
8978 }
8979 }
8980
8981 @@XMLTest:
8982 @@@QName: xp.doctype.internal.attr.cdata.default.normalize.test
8983 @@@DEnt:
8984 @@@@test:value:
8985 <!DOCTYPE a [
8986 <!ATTLIST a
8987 at CDATA " default &#x0A;value "
8988 >
8989 ]>
8990 <a></a>
8991 @@@test:domTree:
8992 document {
8993 xml-version: '1.0';
8994 xml-encoding: null;
8995 xml-standalone: false;
8996 document-type {
8997 node-name: 'a';
8998 element-type-definition {
8999 node-name: 'a';
9000 attribute-definition {
9001 node-name: 'at';
9002 declared-type: const (CDATA_ATTR);
9003 allowed-tokens: DOMStringList ();
9004 default-type: const (EXPLICIT_DEFAULT);
9005 text-content: ' default ' U+000A 'value ';
9006 }
9007 }
9008 }
9009 element {
9010 namespace-uri: null;
9011 local-name: 'a';
9012 attribute {
9013 node-name: 'at';
9014 text-content: ' default ' U+000A 'value ';
9015 specified: false;
9016 }
9017 }
9018 }
9019 @@XMLTest:
9020 @@@QName: xp.doctype.internal.attr.nmtoken.default.normalize.test
9021 @@@DEnt:
9022 @@@@test:value:
9023 <!DOCTYPE a [
9024 <!ATTLIST a
9025 at NMTOKEN " default &#x0A;value "
9026 >
9027 ]>
9028 <a></a>
9029 @@@test:domTree:
9030 document {
9031 xml-version: '1.0';
9032 xml-encoding: null;
9033 xml-standalone: false;
9034 document-type {
9035 node-name: 'a';
9036 element-type-definition {
9037 node-name: 'a';
9038 attribute-definition {
9039 node-name: 'at';
9040 declared-type: const (NMTOKEN_ATTR);
9041 allowed-tokens: DOMStringList ();
9042 default-type: const (EXPLICIT_DEFAULT);
9043 text-content: ' default ' U+000A 'value ';
9044 }
9045 }
9046 }
9047 element {
9048 namespace-uri: null;
9049 local-name: 'a';
9050 attribute {
9051 node-name: 'at';
9052 text-content: ' default ' U+000A 'value ';
9053 specified: false;
9054 }
9055 }
9056 }
9057
9058 @@XMLTest:
9059 @@@QName: xp.doctype.attrtype.no-value.test
9060 @@@DEnt:
9061 @@@@test:value:
9062 <!DOCTYPE a>
9063 <a at=" at value "></a>
9064 @@@test:domTree:
9065 document {
9066 xml-version: '1.0';
9067 xml-encoding: null;
9068 xml-standalone: false;
9069 document-type { }
9070 element {
9071 namespace-uri: null;
9072 local-name: 'a';
9073 attribute {
9074 namespace-uri: null;
9075 local-name: 'at';
9076 value: ' at value ';
9077 text {
9078 data: ' at value ';
9079 }
9080 schema-type-info: TypeInfo (null, null);
9081 specified: true;
9082 }
9083 }
9084 }
9085 @@XMLTest:
9086 @@@QName: xp.doctype.attrtype.cdata.test
9087 @@@DEnt:
9088 @@@@test:value:
9089 <!DOCTYPE a [
9090 <!ATTLIST a
9091 at CDATA #IMPLIED
9092 >
9093 ]>
9094 <a at=" at value "></a>
9095 @@@test:domTree:
9096 document {
9097 xml-version: '1.0';
9098 xml-encoding: null;
9099 xml-standalone: false;
9100 document-type { }
9101 element {
9102 namespace-uri: null;
9103 local-name: 'a';
9104 attribute {
9105 namespace-uri: null;
9106 local-name: 'at';
9107 value: ' at value ';
9108 text {
9109 data: ' at value ';
9110 }
9111 schema-type-info:
9112 TypeInfo ('http://www.w3.org/TR/REC-xml', 'CDATA');
9113 specified: true;
9114 }
9115 }
9116 }
9117 @@XMLTest:
9118 @@@QName: xp.doctype.attrtype.nmtoken.test
9119 @@@DEnt:
9120 @@@@test:value:
9121 <!DOCTYPE a [
9122 <!ATTLIST a
9123 at NMTOKEN #IMPLIED
9124 >
9125 ]>
9126 <a at=" at value "></a>
9127 @@@test:domTree:
9128 document {
9129 xml-version: '1.0';
9130 xml-encoding: null;
9131 xml-standalone: false;
9132 document-type { }
9133 element {
9134 namespace-uri: null;
9135 local-name: 'a';
9136 attribute {
9137 namespace-uri: null;
9138 local-name: 'at';
9139 value: 'at value';
9140 text {
9141 data: ' at value ';
9142 }
9143 schema-type-info:
9144 TypeInfo ('http://www.w3.org/TR/REC-xml', 'NMTOKEN');
9145 specified: true;
9146 }
9147 }
9148 }
9149
9150 @@XMLTest:
9151 @@@QName: xp.doctype.attr.normalization.1.test
9152 @@@DEnt:
9153 @@@@test:value:
9154 <a at=" at &#xA;value "></a>
9155 @@@test:domTree:
9156 document {
9157 element {
9158 attribute {
9159 node-name: 'at';
9160 value: ' at ' U+000A 'value ';
9161 schema-type-info: TypeInfo (null, null);
9162 specified: true;
9163 }
9164 }
9165 }
9166 @@XMLTest:
9167 @@@QName: xp.doctype.attr.normalization.2.test
9168 @@@DEnt:
9169 @@@@test:value:
9170 <a at=" at &#xD;value "></a>
9171 @@@test:domTree:
9172 document {
9173 element {
9174 attribute {
9175 value: ' at ' U+000D 'value ';
9176 schema-type-info: TypeInfo (null, null);
9177 specified: true;
9178 }
9179 }
9180 }
9181 @@XMLTest:
9182 @@@QName: xp.doctype.attr.normalization.3.test
9183 @@@DEnt:
9184 @@@@test:value:
9185 <a at=" at &#x9;value "></a>
9186 @@@test:domTree:
9187 document {
9188 element {
9189 attribute {
9190 node-name: 'at';
9191 value: ' at ' U+0009 'value ';
9192 schema-type-info: TypeInfo (null, null);
9193 specified: true;
9194 }
9195 }
9196 }
9197
9198 @@XMLTest:
9199 @@@QName: xp.doctype.attr.specified.1.test
9200 @@@DEnt:
9201 @@@@test:value:
9202 <!DOCTYPE a [
9203 <!ATTLIST a
9204 at CDATA "default"
9205 >
9206 ]>
9207 <a></a>
9208 @@@test:domTree:
9209 document {
9210 document-type { }
9211 element {
9212 attribute {
9213 node-name: 'at';
9214 value: 'default';
9215 specified: false;
9216 }
9217 }
9218 }
9219 @@XMLTest:
9220 @@@QName: xp.doctype.attr.specified.2.test
9221 @@@DEnt:
9222 @@@@test:value:
9223 <!DOCTYPE a [
9224 <!ATTLIST a
9225 at CDATA "default"
9226 >
9227 ]>
9228 <a at2="specified"></a>
9229 @@@test:domTree:
9230 document {
9231 document-type { }
9232 element {
9233 attribute {
9234 node-name: 'at';
9235 value: 'default';
9236 specified: false;
9237 }
9238 attribute {
9239 node-name: 'at2';
9240 value: 'specified';
9241 specified: true;
9242 }
9243 }
9244 }
9245 @@XMLTest:
9246 @@@QName: xp.doctype.attr.specified.3.test
9247 @@@DEnt:
9248 @@@@test:value:
9249 <!DOCTYPE a [
9250 <!ATTLIST a
9251 at CDATA "default"
9252 >
9253 ]>
9254 <a at="specified"></a>
9255 @@@test:domTree:
9256 document {
9257 document-type { }
9258 element {
9259 attribute {
9260 node-name: 'at';
9261 value: 'specified';
9262 specified: true;
9263 }
9264 }
9265 }
9266
9267 @@XMLTest:
9268 @@@QName: xp.attr.literal.charref.test
9269 @@@DEnt:
9270 @@@@test:value:
9271 <a at1 = "value&#33;_&#x25;value"
9272 at2 = 'value&#x25;_&#33;value'></a>
9273 @@@test:domTree:
9274 document {
9275 element {
9276 attribute {
9277 node-name: 'at1';
9278 text-content: 'value!_%value';
9279 }
9280 attribute {
9281 node-name: 'at2';
9282 text-content: 'value%_!value';
9283 }
9284 }
9285 }
9286 @@XMLTest:
9287 @@@QName: xp.attr.literal.entref.test
9288 @@@DEnt:
9289 @@@@test:value:
9290 <!DOCTYPE a [
9291 <!ENTITY ent "entity&#x26;#33;_&#x26;#x29;value">
9292 ]>
9293 <a at1 = "value&ent;value"
9294 at2 = 'value&ent;value'></a>
9295 @@@cfg:entity-replacement-tree: 1
9296 @@@test:domTree:
9297 document {
9298 document-type {
9299 general-entity {
9300 node-name: 'ent';
9301 text-content: 'entity!_)value';
9302 }
9303 }
9304 element {
9305 attribute {
9306 node-name: 'at1';
9307 text-content: 'valueentity!_)valuevalue';
9308 }
9309 attribute {
9310 node-name: 'at2';
9311 text-content: 'valueentity!_)valuevalue';
9312 }
9313 }
9314 }
9315 @@XMLTest:
9316 @@@QName: xp.attr.literal.entref.nest.test
9317 @@@DEnt:
9318 @@@@test:value:
9319 <!DOCTYPE a [
9320 <!ENTITY ent1 "entity&#x26;#33;_&#x26;#x29;value">
9321 <!ENTITY ent2 "@&ent1;@">
9322 ]>
9323 <a at1 = "value&ent2;value"
9324 at2 = 'value&ent2;value'></a>
9325 @@@cfg:entity-replacement-tree: 1
9326 @@@test:domTree:
9327 document {
9328 document-type {
9329 general-entity {
9330 node-name: 'ent1';
9331 text-content: 'entity!_)value';
9332 }
9333 general-entity {
9334 node-name: 'ent2';
9335 text-content: '@entity!_)value@';
9336 }
9337 }
9338 element {
9339 attribute {
9340 node-name: 'at1';
9341 text-content: 'value@entity!_)value@value';
9342 }
9343 attribute {
9344 node-name: 'at2';
9345 text-content: 'value@entity!_)value@value';
9346 }
9347 }
9348 }
9349
9350 @@XMLTest:
9351 @@@QName: xp.element.content.ncr.1.test
9352 @@@DEnt:
9353 @@@@test:value:
9354 <e>&#33;</e>
9355 @@@test:domTree:
9356 document {
9357 element {
9358 text-content: '!';
9359 }
9360 }
9361 @@XMLTest:
9362 @@@QName: xp.element.content.ncr.2.test
9363 @@@DEnt:
9364 @@@@test:value:
9365 <e>aaaa&#33;bbbb</e>
9366 @@@test:domTree:
9367 document {
9368 element {
9369 text-content: 'aaaa!bbbb';
9370 text {
9371 text-content: 'aaaa!bbbb';
9372 }
9373 }
9374 }
9375 @@XMLTest:
9376 @@@QName: xp.attrval.ncr.1.test
9377 @@@DEnt:
9378 @@@@test:value:
9379 <e a="&#33;"/>
9380 @@@test:domTree:
9381 document {
9382 element {
9383 attribute {
9384 node-name: 'a';
9385 text-content: '!';
9386 }
9387 }
9388 }
9389 @@XMLTest:
9390 @@@QName: xp.attrval.ncr.2.test
9391 @@@DEnt:
9392 @@@@test:value:
9393 <e a="aaaaa&#33;bbbbb"/>
9394 @@@test:domTree:
9395 document {
9396 element {
9397 attribute {
9398 node-name: 'a';
9399 text-content: 'aaaaa!bbbbb';
9400 text {
9401 text-content: 'aaaaa!bbbbb';
9402 }
9403 }
9404 }
9405 }
9406 @@XMLTest:
9407 @@@QName: xp.attrval.ncr.3.test
9408 @@@DEnt:
9409 @@@@test:value:
9410 <e a='&#33;'/>
9411 @@@test:domTree:
9412 document {
9413 element {
9414 attribute {
9415 node-name: 'a';
9416 text-content: '!';
9417 }
9418 }
9419 }
9420 @@XMLTest:
9421 @@@QName: xp.attrval.ncr.4.test
9422 @@@DEnt:
9423 @@@@test:value:
9424 <e a='aaaaa&#33;bbbbb'/>
9425 @@@test:domTree:
9426 document {
9427 element {
9428 attribute {
9429 node-name: 'a';
9430 text-content: 'aaaaa!bbbbb';
9431 }
9432 }
9433 }
9434 @@XMLTest:
9435 @@@QName: xp.entval.ncr.1.test
9436 @@@DEnt:
9437 @@@@test:value:
9438 <!DOCTYPE e [
9439 <!ENTITY ent "&#33;">
9440 ]>
9441 <e/>
9442 @@@cfg:entity-replacement-tree: 1
9443 @@@test:domTree:
9444 document {
9445 document-type {
9446 general-entity {
9447 node-name: 'ent';
9448 text-content: '!';
9449 }
9450 }
9451 element { }
9452 }
9453 @@XMLTest:
9454 @@@QName: xp.entval.ncr.2.test
9455 @@@DEnt:
9456 @@@@test:value:
9457 <!DOCTYPE e [
9458 <!ENTITY ent "aaaaa&#33;bbbbb">
9459 ]>
9460 <e/>
9461 @@@cfg:entity-replacement-tree: 1
9462 @@@test:domTree:
9463 document {
9464 document-type {
9465 general-entity {
9466 node-name: 'ent';
9467 text-content: 'aaaaa!bbbbb';
9468 }
9469 }
9470 element { }
9471 }
9472 @@XMLTest:
9473 @@@QName: xp.element.content.reptxt.ncr.1.test
9474 @@@DEnt:
9475 @@@@test:value:
9476 <!DOCTYPE e [
9477 <!ENTITY ent "&#38;#33;">
9478 ]>
9479 <e>&ent;</e>
9480 @@@test:domTree:
9481 document {
9482 document-type { }
9483 element {
9484 general-entity-reference {
9485 node-name: 'ent';
9486 text-content: '!';
9487 manakai-expanded: true;
9488 }
9489 }
9490 }
9491 @@XMLTest:
9492 @@@QName: xp.element.content.reptxt.ncr.2.test
9493 @@@DEnt:
9494 @@@@test:value:
9495 <!DOCTYPE e [
9496 <!ENTITY ent "aaaaa&#38;#33;bbbbb">
9497 ]>
9498 <e>&ent;</e>
9499 @@@test:domTree:
9500 document {
9501 document-type { }
9502 element {
9503 general-entity-reference {
9504 node-name: 'ent';
9505 text-content: 'aaaaa!bbbbb';
9506 manakai-expanded: true;
9507 }
9508 }
9509 }
9510 @@XMLTest:
9511 @@@QName: xp.element.content.reptxt.reptxt.ncr.1.test
9512 @@@DEnt:
9513 @@@@test:value:
9514 <!DOCTYPE e [
9515 <!ENTITY ent "&#38;#33;">
9516 <!ENTITY ent2 "&ent;">
9517 ]>
9518 <e>&ent2;</e>
9519 @@@test:domTree:
9520 document {
9521 document-type { }
9522 element {
9523 general-entity-reference {
9524 node-name: 'ent2';
9525 general-entity-reference {
9526 node-name: 'ent';
9527 text-content: '!';
9528 manakai-expanded: true;
9529 }
9530 manakai-expanded: true;
9531 }
9532 }
9533 }
9534 @@XMLTest:
9535 @@@QName: xp.element.content.reptxt.reptxt.ncr.2.test
9536 @@@DEnt:
9537 @@@@test:value:
9538 <!DOCTYPE e [
9539 <!ENTITY ent "aa&#38;#33;bb">
9540 <!ENTITY ent2 "&ent;">
9541 ]>
9542 <e>&ent2;</e>
9543 @@@test:domTree:
9544 document {
9545 document-type { }
9546 element {
9547 general-entity-reference {
9548 node-name: 'ent2';
9549 general-entity-reference {
9550 node-name: 'ent';
9551 text-content: 'aa!bb';
9552 manakai-expanded: true;
9553 text {
9554 text-content: 'aa!bb';
9555 }
9556 }
9557 manakai-expanded: true;
9558 }
9559 }
9560 }
9561 @@XMLTest:
9562 @@@QName: xp.attval.reptxt.ncr.1.test
9563 @@@DEnt:
9564 @@@@test:value:
9565 <!DOCTYPE e [
9566 <!ENTITY ent "&#38;#33;">
9567 ]>
9568 <e a="&ent;"/>
9569 @@@test:domTree:
9570 document {
9571 document-type { }
9572 element {
9573 attribute {
9574 node-name: 'a';
9575 general-entity-reference {
9576 node-name: 'ent';
9577 text-content: '!';
9578 manakai-expanded: true;
9579 }
9580 }
9581 }
9582 }
9583 @@XMLTest:
9584 @@@QName: xp.attval.reptxt.ncr.2.test
9585 @@@DEnt:
9586 @@@@test:value:
9587 <!DOCTYPE e [
9588 <!ENTITY ent "aaaaa&#38;#33;bbbbb">
9589 ]>
9590 <e a="&ent;"/>
9591 @@@test:domTree:
9592 document {
9593 document-type { }
9594 element {
9595 attribute {
9596 node-name: 'a';
9597 general-entity-reference {
9598 node-name: 'ent';
9599 text-content: 'aaaaa!bbbbb';
9600 manakai-expanded: true;
9601 text {
9602 text-content: 'aaaaa!bbbbb';
9603 }
9604 }
9605 }
9606 }
9607 }
9608 @@XMLTest:
9609 @@@QName: xp.attval.reptxt.reptxt.ncr.1.test
9610 @@@DEnt:
9611 @@@@test:value:
9612 <!DOCTYPE e [
9613 <!ENTITY ent "&#38;#33;">
9614 <!ENTITY ent2 "&ent;">
9615 ]>
9616 <e a="&ent2;"/>
9617 @@@test:domTree:
9618 document {
9619 document-type { }
9620 element {
9621 attribute {
9622 node-name: 'a';
9623 general-entity-reference {
9624 node-name: 'ent2';
9625 manakai-expanded: true;
9626 general-entity-reference {
9627 node-name: 'ent';
9628 text-content: '!';
9629 manakai-expanded: true;
9630 }
9631 }
9632 }
9633 }
9634 }
9635 @@XMLTest:
9636 @@@QName: xp.attval.reptxt.reptxt.ncr.2.test
9637 @@@DEnt:
9638 @@@@test:value:
9639 <!DOCTYPE e [
9640 <!ENTITY ent "aa&#38;#33;bb">
9641 <!ENTITY ent2 "&ent;">
9642 ]>
9643 <e a="&ent2;"/>
9644 @@@test:domTree:
9645 document {
9646 document-type { }
9647 element {
9648 attribute {
9649 node-name: 'a';
9650 general-entity-reference {
9651 node-name: 'ent2';
9652 manakai-expanded: true;
9653 general-entity-reference {
9654 node-name: 'ent';
9655 text-content: 'aa!bb';
9656 manakai-expanded: true;
9657 }
9658 }
9659 }
9660 }
9661 }
9662
9663 @@XMLTest:
9664 @@@QName: xp.element.content.hcr.1.test
9665 @@@DEnt:
9666 @@@@test:value:
9667 <e>&#x21;</e>
9668 @@@test:domTree:
9669 document {
9670 element {
9671 text-content: '!';
9672 }
9673 }
9674 @@XMLTest:
9675 @@@QName: xp.element.content.hcr.2.test
9676 @@@DEnt:
9677 @@@@test:value:
9678 <e>aaaa&#x21;bbbb</e>
9679 @@@test:domTree:
9680 document {
9681 element {
9682 text-content: 'aaaa!bbbb';
9683 text {
9684 text-content: 'aaaa!bbbb';
9685 }
9686 }
9687 }
9688 @@XMLTest:
9689 @@@QName: xp.attrval.hcr.1.test
9690 @@@DEnt:
9691 @@@@test:value:
9692 <e a="&#x21;"/>
9693 @@@test:domTree:
9694 document {
9695 element {
9696 attribute {
9697 node-name: 'a';
9698 text-content: '!';
9699 }
9700 }
9701 }
9702 @@XMLTest:
9703 @@@QName: xp.attrval.hcr.2.test
9704 @@@DEnt:
9705 @@@@test:value:
9706 <e a="aaaaa&#x21;bbbbb"/>
9707 @@@test:domTree:
9708 document {
9709 element {
9710 attribute {
9711 node-name: 'a';
9712 text-content: 'aaaaa!bbbbb';
9713 text {
9714 text-content: 'aaaaa!bbbbb';
9715 }
9716 }
9717 }
9718 }
9719 @@XMLTest:
9720 @@@QName: xp.attrval.hcr.3.test
9721 @@@DEnt:
9722 @@@@test:value:
9723 <e a='&#x21;'/>
9724 @@@test:domTree:
9725 document {
9726 element {
9727 attribute {
9728 node-name: 'a';
9729 text-content: '!';
9730 }
9731 }
9732 }
9733 @@XMLTest:
9734 @@@QName: xp.attrval.hcr.4.test
9735 @@@DEnt:
9736 @@@@test:value:
9737 <e a='aaaaa&#x21;bbbbb'/>
9738 @@@test:domTree:
9739 document {
9740 element {
9741 attribute {
9742 node-name: 'a';
9743 text-content: 'aaaaa!bbbbb';
9744 }
9745 }
9746 }
9747 @@XMLTest:
9748 @@@QName: xp.entval.hcr.1.test
9749 @@@DEnt:
9750 @@@@test:value:
9751 <!DOCTYPE e [
9752 <!ENTITY ent "&#x21;">
9753 ]>
9754 <e/>
9755 @@@cfg:entity-replacement-tree: 1
9756 @@@test:domTree:
9757 document {
9758 document-type {
9759 general-entity {
9760 node-name: 'ent';
9761 text-content: '!';
9762 }
9763 }
9764 element { }
9765 }
9766 @@XMLTest:
9767 @@@QName: xp.entval.hcr.2.test
9768 @@@DEnt:
9769 @@@@test:value:
9770 <!DOCTYPE e [
9771 <!ENTITY ent "aaaaa&#x21;bbbbb">
9772 ]>
9773 <e/>
9774 @@@cfg:entity-replacement-tree: 1
9775 @@@test:domTree:
9776 document {
9777 document-type {
9778 general-entity {
9779 node-name: 'ent';
9780 text-content: 'aaaaa!bbbbb';
9781 text {
9782 text-content: 'aaaaa!bbbbb';
9783 }
9784 }
9785 }
9786 element { }
9787 }
9788 @@XMLTest:
9789 @@@QName: xp.element.content.reptxt.hcr.1.test
9790 @@@DEnt:
9791 @@@@test:value:
9792 <!DOCTYPE e [
9793 <!ENTITY ent "&#38;#x21;">
9794 ]>
9795 <e>&ent;</e>
9796 @@@test:domTree:
9797 document {
9798 document-type { }
9799 element {
9800 general-entity-reference {
9801 node-name: 'ent';
9802 text-content: '!';
9803 manakai-expanded: true;
9804 }
9805 }
9806 }
9807 @@XMLTest:
9808 @@@QName: xp.element.content.reptxt.hcr.2.test
9809 @@@DEnt:
9810 @@@@test:value:
9811 <!DOCTYPE e [
9812 <!ENTITY ent "aaaaa&#38;#x21;bbbbb">
9813 ]>
9814 <e>&ent;</e>
9815 @@@test:domTree:
9816 document {
9817 document-type { }
9818 element {
9819 general-entity-reference {
9820 node-name: 'ent';
9821 text-content: 'aaaaa!bbbbb';
9822 manakai-expanded: true;
9823 }
9824 }
9825 }
9826 @@XMLTest:
9827 @@@QName: xp.element.content.reptxt.reptxt.hcr.1.test
9828 @@@DEnt:
9829 @@@@test:value:
9830 <!DOCTYPE e [
9831 <!ENTITY ent "&#38;#x21;">
9832 <!ENTITY ent2 "&ent;">
9833 ]>
9834 <e>&ent2;</e>
9835 @@@test:domTree:
9836 document {
9837 document-type { }
9838 element {
9839 general-entity-reference {
9840 node-name: 'ent2';
9841 manakai-expanded: true;
9842 general-entity-reference {
9843 node-name: 'ent';
9844 text-content: '!';
9845 manakai-expanded: true;
9846 }
9847 }
9848 }
9849 }
9850 @@XMLTest:
9851 @@@QName: xp.element.content.reptxt.reptxt.hcr.2.test
9852 @@@DEnt:
9853 @@@@test:value:
9854 <!DOCTYPE e [
9855 <!ENTITY ent "aa&#38;#x21;bb">
9856 <!ENTITY ent2 "&ent;">
9857 ]>
9858 <e>&ent2;</e>
9859 @@@test:domTree:
9860 document {
9861 document-type { }
9862 element {
9863 general-entity-reference {
9864 node-name: 'ent2';
9865 manakai-expanded: true;
9866 general-entity-reference {
9867 node-name: 'ent';
9868 manakai-expanded: true;
9869 text-content: 'aa!bb';
9870 }
9871 }
9872 }
9873 }
9874 @@XMLTest:
9875 @@@QName: xp.attval.reptxt.hcr.1.test
9876 @@@DEnt:
9877 @@@@test:value:
9878 <!DOCTYPE e [
9879 <!ENTITY ent "&#38;#x21;">
9880 ]>
9881 <e a="&ent;"/>
9882 @@@test:domTree:
9883 document {
9884 document-type { }
9885 element {
9886 attribute {
9887 node-name: 'a';
9888 general-entity-reference {
9889 node-name: 'ent';
9890 manakai-expanded: true;
9891 text-content: '!';
9892 }
9893 }
9894 }
9895 }
9896 @@XMLTest:
9897 @@@QName: xp.attval.reptxt.hcr.2.test
9898 @@@DEnt:
9899 @@@@test:value:
9900 <!DOCTYPE e [
9901 <!ENTITY ent "aaaaa&#38;#x21;bbbbb">
9902 ]>
9903 <e a="&ent;"/>
9904 @@@test:domTree:
9905 document {
9906 document-type { }
9907 element {
9908 attribute {
9909 node-name: 'a';
9910 general-entity-reference {
9911 node-name: 'ent';
9912 manakai-expanded: true;
9913 text-content: 'aaaaa!bbbbb';
9914 text {
9915 text-content: 'aaaaa!bbbbb';
9916 }
9917 }
9918 }
9919 }
9920 }
9921 @@XMLTest:
9922 @@@QName: xp.attval.reptxt.reptxt.hcr.1.test
9923 @@@DEnt:
9924 @@@@test:value:
9925 <!DOCTYPE e [
9926 <!ENTITY ent "&#38;#x21;">
9927 <!ENTITY ent2 "&ent;">
9928 ]>
9929 <e a="&ent2;"/>
9930 @@@test:domTree:
9931 document {
9932 document-type { }
9933 element {
9934 attribute {
9935 node-name: 'a';
9936 general-entity-reference {
9937 node-name: 'ent2';
9938 manakai-expanded: true;
9939 general-entity-reference {
9940 node-name: 'ent';
9941 manakai-expanded: true;
9942 text-content: '!';
9943 }
9944 }
9945 }
9946 }
9947 }
9948 @@XMLTest:
9949 @@@QName: xp.attval.reptxt.reptxt.hcr.2.test
9950 @@@DEnt:
9951 @@@@test:value:
9952 <!DOCTYPE e [
9953 <!ENTITY ent "aa&#38;#x21;bb">
9954 <!ENTITY ent2 "&ent;">
9955 ]>
9956 <e a="&ent2;"/>
9957 @@@test:domTree:
9958 document {
9959 document-type { }
9960 element {
9961 attribute {
9962 node-name: 'a';
9963 general-entity-reference {
9964 node-name: 'ent2';
9965 manakai-expanded: true;
9966 general-entity-reference {
9967 node-name: 'ent';
9968 manakai-expanded: true;
9969 text-content: 'aa!bb';
9970 }
9971 }
9972 }
9973 }
9974 }
9975
9976 @@XMLTest:
9977 @@@QName: xp.element.content.ncr.legal.char.1.0.1.test
9978 @@@DEnt:
9979 @@@@test:value:
9980 <?xml version="1.0"?>
9981 <e>&#0;</e>
9982 @@@c:erred: <[xp|wf-legal-character]> { (2, 4)..(2, 7); }
9983 @@XMLTest:
9984 @@@QName: xp.element.content.ncr.legal.char.1.1.1.test
9985 @@@DEnt:
9986 @@@@test:value:
9987 <?xml version="1.1"?>
9988 <e>&#0;</e>
9989 @@@c:erred: <[xp|wf-legal-character]> { (2, 4)..(2, 7); }
9990 @@XMLTest:
9991 @@@QName: xp.element.content.ncr.legal.char.1.0.2.test
9992 @@@DEnt:
9993 @@@@test:value:
9994 <?xml version="1.0"?>
9995 <e>&#1;</e>
9996 @@@c:erred: <[xp|wf-legal-character]> { (2, 4)..(2, 7); }
9997 @@XMLTest:
9998 @@@QName: xp.element.content.ncr.legal.char.1.1.2.test
9999 @@@DEnt:
10000 @@@@test:value:
10001 <?xml version="1.1"?>
10002 <e>&#1;</e>
10003 @@@test:domTree:
10004 document {
10005 xml-version: '1.1';
10006 element {
10007 text-content: U+0001;
10008 }
10009 }
10010 @@XMLTest:
10011 @@@QName: xp.element.content.hcr.legal.char.1.0.1.test
10012 @@@DEnt:
10013 @@@@test:value:
10014 <?xml version="1.0"?>
10015 <e>&#x0;</e>
10016 @@@c:erred: <[xp|wf-legal-character]> { (2, 4)..(2, 8); }
10017 @@XMLTest:
10018 @@@QName: xp.element.content.hcr.legal.char.1.1.1.test
10019 @@@DEnt:
10020 @@@@test:value:
10021 <?xml version="1.1"?>
10022 <e>&#x0;</e>
10023 @@@c:erred: <[xp|wf-legal-character]> { (2, 4)..(2, 8); }
10024 @@XMLTest:
10025 @@@QName: xp.element.content.hcr.legal.char.1.0.2.test
10026 @@@DEnt:
10027 @@@@test:value:
10028 <?xml version="1.0"?>
10029 <e>&#x1;</e>
10030 @@@c:erred: <[xp|wf-legal-character]> { (2, 4)..(2, 8); }
10031 @@XMLTest:
10032 @@@QName: xp.element.content.hcr.legal.char.1.1.2.test
10033 @@@DEnt:
10034 @@@@test:value:
10035 <?xml version="1.1"?>
10036 <e>&#x1;</e>
10037 @@@test:domTree:
10038 document {
10039 xml-version: '1.1';
10040 element {
10041 text-content: U+0001;
10042 }
10043 }
10044
10045 @@XMLTest:
10046 @@@QName: xp.element.content.ger.entity.declared.nodtd.1.test
10047 @@@DEnt:
10048 @@@@test:value:
10049 <p>&entity;</p>
10050 @@@c:erred: <[xp|wf-entity-declared]> { (1, 4)..(1, 11); }
10051 @@XMLTest:
10052 @@@QName: xp.element.content.ger.entity.declared.nodtd.2.test
10053 @@@DEnt:
10054 @@@@test:value:
10055 <?xml version="1.0" standalone="yes"?>
10056 <p>&entity;</p>
10057 @@@c:erred: <[xp|wf-entity-declared]> { (2, 4)..(2, 11); }
10058 @@XMLTest:
10059 @@@QName: xp.element.content.ger.entity.declared.nodtd.3.test
10060 @@@DEnt:
10061 @@@@test:value:
10062 <?xml version="1.0" standalone="no"?>
10063 <p>&entity;</p>
10064 @@@c:erred: <[xp|wf-entity-declared]> { (2, 4)..(2, 11); }
10065 @@XMLTest:
10066 @@@QName: xp.element.content.ger.entity.declared.nodtd.-1.test
10067 @@@DEnt:
10068 @@@@test:value:
10069 <p>&lt;&gt;&amp;&quot;&apos;</p>
10070 @@@test:domTree:
10071 document {
10072 element {
10073 text-content: '<>&"' U+0027;
10074 }
10075 }
10076 @@XMLTest:
10077 @@@QName: xp.element.content.ger.entity.declared.nopref.1.test
10078 @@@DEnt:
10079 @@@@test:value:
10080 <!DOCTYPE p []>
10081 <p>&entity;</p>
10082 @@@c:erred: <[xp|wf-entity-declared]> { (2, 4)..(2, 11); }
10083 @@XMLTest:
10084 @@@QName: xp.element.content.ger.entity.declared.nopref.2.test
10085 @@@DEnt:
10086 @@@@test:value:
10087 <!DOCTYPE p [
10088 <!ENTITY other "aa">
10089 <!ENTITY % another "aa">
10090 ]>
10091 <p>&entity;</p>
10092 @@@c:erred: <[xp|wf-entity-declared]> { (5, 4)..(5, 11); }
10093 @@XMLTest:
10094 @@@QName: xp.element.content.ger.entity.declared.nopref.3.test
10095 @@@DEnt:
10096 @@@@test:value:
10097 <?xml version="1.0" standalone="yes"?>
10098 <!DOCTYPE p []>
10099 <p>&entity;</p>
10100 @@@c:erred: <[xp|wf-entity-declared]> { (3, 4)..(3, 11); }
10101 @@XMLTest:
10102 @@@QName: xp.element.content.ger.entity.declared.nopref.4.test
10103 @@@DEnt:
10104 @@@@test:value:
10105 <?xml version="1.0" standalone="no"?>
10106 <!DOCTYPE p []>
10107 <p>&entity;</p>
10108 @@@c:erred: <[xp|wf-entity-declared]> { (3, 4)..(3, 11); }
10109 @@XMLTest:
10110 @@@QName: xp.element.content.ger.entity.declared.nopref.5.test
10111 @@@DEnt:
10112 @@@@test:value:
10113 <?xml version="1.0" standalone="yes"?>
10114 <!DOCTYPE p [
10115 <!ENTITY other "aa">
10116 <!ENTITY % another "aa">
10117 ]>
10118 <p>&entity;</p>
10119 @@@c:erred: <[xp|wf-entity-declared]> { (6, 4)..(6, 11); }
10120 @@XMLTest:
10121 @@@QName: xp.element.content.ger.entity.declared.nopref.6.test
10122 @@@DEnt:
10123 @@@@test:value:
10124 <?xml version="1.0" standalone="no"?>
10125 <!DOCTYPE p [
10126 <!ENTITY other "aa">
10127 <!ENTITY % another "aa">
10128 ]>
10129 <p>&entity;</p>
10130 @@@c:erred: <[xp|wf-entity-declared]> { (6, 4)..(6, 11); }
10131 @@XMLTest:
10132 @@@QName: xp.element.content.ger.entity.declared.nopref.-1.test
10133 @@@DEnt:
10134 @@@@test:value:
10135 <!DOCTYPE p [
10136 <!ENTITY entity "value">
10137 ]>
10138 <p>&entity;</p>
10139 @@@cfg:entity-replacement-tree: 1
10140 @@@test:domTree:
10141 document {
10142 document-type {
10143 general-entity {
10144 node-name: 'entity';
10145 text-content: 'value';
10146 }
10147 }
10148 element {
10149 general-entity-reference {
10150 node-name: 'entity';
10151 manakai-expanded: true;
10152 text-content: 'value';
10153 }
10154 }
10155 }
10156 @@XMLTest:
10157 @@@QName: xp.element.content.ger.entity.declared.nopref.-2.test
10158 @@@DEnt:
10159 @@@@test:value:
10160 <!DOCTYPE p [
10161 <!ENTITY entity "value">
10162 <!ENTITY another SYSTEM "another">
10163 ]>
10164 <p>&entity;</p>
10165 @@@cfg:entity-replacement-tree: 1
10166 @@@test:domTree:
10167 document {
10168 document-type {
10169 general-entity {
10170 node-name: 'entity';
10171 text-content: 'value';
10172 }
10173 general-entity {
10174 node-name: 'another';
10175 public-id: null;
10176 system-id: 'another';
10177 }
10178 }
10179 element {
10180 general-entity-reference {
10181 node-name: 'entity';
10182 manakai-expanded: true;
10183 text-content: 'value';
10184 }
10185 }
10186 }
10187 @@XMLTest:
10188 @@@QName: xp.element.content.ger.entity.declared.standalone.1.test
10189 @@@DEnt:
10190 @@@@test:value:
10191 <?xml version="1.0" standalone="yes"?>
10192 <p>&entity;</p>
10193 @@@c:erred: <[xp|wf-entity-declared]> { (2, 4)..(2, 11); }
10194 @@XMLTest:
10195 @@@QName: xp.element.content.ger.entity.declared.standalone.2.test
10196 @@@DEnt:
10197 @@@@test:value:
10198 <?xml version="1.0" standalone="yes"?>
10199 <!DOCTYPE p []>
10200 <p>&entity;</p>
10201 @@@c:erred: <[xp|wf-entity-declared]> { (3, 4)..(3, 11); }
10202 @@XMLTest:
10203 @@@QName: xp.element.content.ger.entity.declared.standalone.3.test
10204 @@@DEnt:
10205 @@@@test:value:
10206 <?xml version="1.0" standalone="yes"?>
10207 <!DOCTYPE p [
10208 <!ENTITY % para "<!-- -->">
10209 %para;
10210 ]>
10211 <p>&entity;</p>
10212 @@@c:erred: <[xp|wf-entity-declared]> { (6, 4)..(6, 11); }
10213 @@XMLTest:
10214 @@@QName: xp.element.content.ger.entity.declared.standalone.-1.test
10215 @@@DEnt:
10216 @@@@test:value:
10217 <?xml version="1.0" standalone="no"?>
10218 <!DOCTYPE p [
10219 <!ENTITY % para "<!-- -->">
10220 %para;
10221 ]>
10222 <p>&entity;</p>
10223 @@@test:domTree:
10224 document {
10225 document-type { }
10226 element {
10227 general-entity-reference {
10228 manakai-expanded: false;
10229 }
10230 }
10231 }
10232 @@XMLTest:
10233 @@@QName: xp.element.content.ger.entity.declared.standalone.-2.test
10234 @@@DEnt:
10235 @@@@test:value:
10236 <!DOCTYPE p [
10237 <!ENTITY % para "<!-- -->">
10238 %para;
10239 ]>
10240 <p>&entity;</p>
10241 @@@test:domTree:
10242 document {
10243 document-type { }
10244 element {
10245 general-entity-reference {
10246 manakai-expanded: false;
10247 }
10248 }
10249 }
10250 @@XMLTest:
10251 @@@QName: xp.element.content.ger.entity.declared.standalone.4.test
10252 @@@DEnt:
10253 @@@@test:value:
10254 <?xml version="1.0" standalone="yes"?>
10255 <!DOCTYPE p [
10256 <!ENTITY % para SYSTEM "para">
10257 %para;
10258 ]>
10259 <p>&entity;</p>
10260 @@@c:erred: <[xp|wf-entity-declared]> { (6, 4)..(6, 11); }
10261 @@XMLTest:
10262 @@@QName: xp.element.content.ger.entity.declared.standalone.-3.test
10263 @@@DEnt:
10264 @@@@test:value:
10265 <?xml version="1.0" standalone="no"?>
10266 <!DOCTYPE p [
10267 <!ENTITY % para SYSTEM "para">
10268 %para;
10269 ]>
10270 <p>&entity;</p>
10271 @@@test:domTree:
10272 document {
10273 document-type { }
10274 element {
10275 general-entity-reference {
10276 manakai-expanded: false;
10277 }
10278 }
10279 }
10280 @@XMLTest:
10281 @@@QName: xp.element.content.ger.entity.declared.standalone.-4.test
10282 @@@DEnt:
10283 @@@@test:value:
10284 <!DOCTYPE p [
10285 <!ENTITY % para SYSTEM "para">
10286 %para;
10287 ]>
10288 <p>&entity;</p>
10289 @@@test:domTree:
10290 document {
10291 document-type { }
10292 element {
10293 general-entity-reference {
10294 manakai-expanded: false;
10295 }
10296 }
10297 }
10298 @@XMLTest:
10299 @@@QName: xp.element.content.ger.entity.declared.standalone.5.test
10300 @@@DEnt:
10301 @@@@test:value:
10302 <?xml version="1.0" standalone="yes"?>
10303 <!DOCTYPE p SYSTEM "dtd">
10304 <p>&entity;</p>
10305 @@@c:erred: <[xp|wf-entity-declared]> { (3, 4)..(3, 11); }
10306 @@XMLTest:
10307 @@@QName: xp.element.content.ger.entity.declared.standalone.-5.test
10308 @@@DEnt:
10309 @@@@test:value:
10310 <?xml version="1.0" standalone="no"?>
10311 <!DOCTYPE p SYSTEM "dtd">
10312 <p>&entity;</p>
10313 @@@test:domTree:
10314 document {
10315 document-type { }
10316 element {
10317 general-entity-reference {
10318 manakai-expanded: false;
10319 }
10320 }
10321 }
10322 @@XMLTest:
10323 @@@QName: xp.element.content.ger.entity.declared.standalone.-6.test
10324 @@@DEnt:
10325 @@@@test:value:
10326 <!DOCTYPE p SYSTEM "dtd">
10327 <p>&entity;</p>
10328 @@@test:domTree:
10329 document {
10330 document-type { }
10331 element {
10332 general-entity-reference {
10333 manakai-expanded: false;
10334 }
10335 }
10336 }
10337
10338 @@XMLTest:
10339 @@@QName: xp.reptxt.element.content.ger.entity.declared.nopref.1.test
10340 @@@DEnt:
10341 @@@@test:value:
10342 <!DOCTYPE p [
10343 <!ENTITY c "&entity;">
10344 ]>
10345 <p>&c;</p>
10346 @@@c:erred: <[xp|wf-entity-declared]> { (1, 1)..(1, 8); }
10347 @@XMLTest:
10348 @@@QName: xp.reptxt.element.content.ger.entity.declared.nopref.2.test
10349 @@@DEnt:
10350 @@@@test:value:
10351 <!DOCTYPE p [
10352 <!ENTITY other "aa">
10353 <!ENTITY % another "aa">
10354 <!ENTITY c "&entity;">
10355 ]>
10356 <p>&c;</p>
10357 @@@c:erred: <[xp|wf-entity-declared]> { (1, 1)..(1, 8); }
10358 @@XMLTest:
10359 @@@QName: xp.reptxt.element.content.ger.entity.declared.nopref.3.test
10360 @@@DEnt:
10361 @@@@test:value:
10362 <?xml version="1.0" standalone="yes"?>
10363 <!DOCTYPE p [
10364 <!ENTITY c "&entity;">
10365 ]>
10366 <p>&c;</p>
10367 @@@c:erred: <[xp|wf-entity-declared]> { (1, 1)..(1, 8); }
10368 @@XMLTest:
10369 @@@QName: xp.reptxt.element.content.ger.entity.declared.nopref.4.test
10370 @@@DEnt:
10371 @@@@test:value:
10372 <?xml version="1.0" standalone="no"?>
10373 <!DOCTYPE p [
10374 <!ENTITY c "&entity;">
10375 ]>
10376 <p>&c;</p>
10377 @@@c:erred: <[xp|wf-entity-declared]> { (1, 1)..(1, 8); }
10378 @@XMLTest:
10379 @@@QName: xp.reptxt.element.content.ger.entity.declared.nopref.5.test
10380 @@@DEnt:
10381 @@@@test:value:
10382 <?xml version="1.0" standalone="yes"?>
10383 <!DOCTYPE p [
10384 <!ENTITY other "aa">
10385 <!ENTITY % another "aa">
10386 <!ENTITY c "&entity;">
10387 ]>
10388 <p>&c;</p>
10389 @@@c:erred: <[xp|wf-entity-declared]> { (1, 1)..(1, 8); }
10390 @@XMLTest:
10391 @@@QName: xp.reptxt.element.content.ger.entity.declared.nopref.6.test
10392 @@@DEnt:
10393 @@@@test:value:
10394 <?xml version="1.0" standalone="no"?>
10395 <!DOCTYPE p [
10396 <!ENTITY other "aa">
10397 <!ENTITY % another "aa">
10398 <!ENTITY c "&entity;">
10399 ]>
10400 <p>&c;</p>
10401 @@@c:erred: <[xp|wf-entity-declared]> { (1, 1)..(1, 8); }
10402 @@XMLTest:
10403 @@@QName: xp.reptxt.element.content.ger.entity.declared.nopref.-1.test
10404 @@@DEnt:
10405 @@@@test:value:
10406 <!DOCTYPE p [
10407 <!ENTITY entity "value">
10408 <!ENTITY c "&entity;">
10409 ]>
10410 <p>&c;</p>
10411 @@@cfg:entity-replacement-tree: 1
10412 @@@test:domTree:
10413 document {
10414 document-type {
10415 general-entity {
10416 node-name: 'entity';
10417 text-content: 'value';
10418 }
10419 general-entity {
10420 node-name: 'c';
10421 general-entity-reference {
10422 node-name: 'entity';
10423 text-content: 'value';
10424 }
10425 }
10426 }
10427 element {
10428 general-entity-reference {
10429 node-name: 'c';
10430 general-entity-reference {
10431 node-name: 'entity';
10432 text-content: 'value';
10433 }
10434 }
10435 }
10436 }
10437 @@XMLTest:
10438 @@@QName: xp.reptxt.element.content.ger.entity.declared.nopref.-2.test
10439 @@@DEnt:
10440 @@@@test:value:
10441 <!DOCTYPE p [
10442 <!ENTITY entity "value">
10443 <!ENTITY another SYSTEM "another">
10444 <!ENTITY c "&entity;">
10445 ]>
10446 <p>&c;</p>
10447 @@@cfg:entity-replacement-tree: 1
10448 @@@test:domTree:
10449 document {
10450 document-type {
10451 general-entity {
10452 node-name: 'entity';
10453 text-content: 'value';
10454 }
10455 general-entity {
10456 node-name: 'c';
10457 general-entity-reference {
10458 node-name: 'entity';
10459 manakai-expanded: true;
10460 text-content: 'value';
10461 }
10462 }
10463 general-entity {
10464 node-name: 'another';
10465 public-id: null;
10466 system-id: 'another';
10467 has-replacement-tree: false;
10468 }
10469 }
10470 element {
10471 general-entity-reference {
10472 node-name: 'c';
10473 manakai-expanded: true;
10474 general-entity-reference {
10475 node-name: 'entity';
10476 manakai-expanded: true;
10477 text-content: 'value';
10478 }
10479 }
10480 }
10481 }
10482 @@XMLTest:
10483 @@@QName: xp.reptxt.element.content.ger.entity.declared.standalone.2.test
10484 @@@DEnt:
10485 @@@@test:value:
10486 <?xml version="1.0" standalone="yes"?>
10487 <!DOCTYPE p [
10488 <!ENTITY c "&entity;">
10489 ]>
10490 <p>&c;</p>
10491 @@@c:erred: <[xp|wf-entity-declared]> { (1, 1)..(1, 8); }
10492 @@XMLTest:
10493 @@@QName: xp.reptxt.element.content.ger.entity.declared.standalone.3.test
10494 @@@DEnt:
10495 @@@@test:value:
10496 <?xml version="1.0" standalone="yes"?>
10497 <!DOCTYPE p [
10498 <!ENTITY % para "<!-- -->">
10499 %para;
10500 <!ENTITY c "&entity;">
10501 ]>
10502 <p>&c;</p>
10503 @@@c:erred: <[xp|wf-entity-declared]> { (1, 1)..(1, 8); }
10504 @@XMLTest:
10505 @@@QName: xp.reptxt.element.content.ger.entity.declared.standalone.-1.test
10506 @@@DEnt:
10507 @@@@test:value:
10508 <?xml version="1.0" standalone="no"?>
10509 <!DOCTYPE p [
10510 <!ENTITY c "&entity;">
10511 <!ENTITY % para "<!-- -->">
10512 %para;
10513 ]>
10514 <p>&c;</p>
10515 @@@cfg:entity-replacement-tree: 1
10516 @@@test:domTree:
10517 document {
10518 document-type {
10519 general-entity {
10520 node-name: 'c';
10521 general-entity-reference {
10522 node-name: 'entity';
10523 manakai-expanded: false;
10524 }
10525 }
10526 }
10527 element {
10528 general-entity-reference {
10529 node-name: 'c';
10530 general-entity-reference {
10531 node-name: 'entity';
10532 manakai-expanded: false;
10533 }
10534 }
10535 }
10536 }
10537 @@XMLTest:
10538 @@@QName:
10539 xp.reptxt.element.content.ger.entity.declared.standalone.-1.2.test
10540 @@@DEnt:
10541 @@@@test:value:
10542 <?xml version="1.0" standalone="no"?>
10543 <!DOCTYPE p [
10544 <!ENTITY % para "<!-- -->">
10545 %para;
10546 <!ENTITY c "&entity;">
10547 ]>
10548 <p>&c;</p>
10549 @@@test:domTree:
10550 document {
10551 document-type { }
10552 element {
10553 general-entity-reference {
10554 node-name: 'c';
10555 manakai-expanded: false;
10556 }
10557 }
10558 }
10559 @@XMLTest:
10560 @@@QName: xp.reptxt.element.content.ger.entity.declared.standalone.-2.test
10561 @@@DEnt:
10562 @@@@test:value:
10563 <!DOCTYPE p [
10564 <!ENTITY c "&entity;">
10565 <!ENTITY % para "<!-- -->">
10566 %para;
10567 ]>
10568 <p>&c;</p>
10569 @@@test:domTree:
10570 document {
10571 document-type { }
10572 element {
10573 general-entity-reference {
10574 node-name: 'c';
10575 manakai-expanded: true;
10576 general-entity-reference {
10577 node-name: 'entity';
10578 manakai-expanded: false;
10579 }
10580 }
10581 }
10582 }
10583 @@XMLTest:
10584 @@@QName:
10585 xp.reptxt.element.content.ger.entity.declared.standalone.-2.2.test
10586 @@@DEnt:
10587 @@@@test:value:
10588 <!DOCTYPE p [
10589 <!ENTITY % para "<!-- -->">
10590 %para;
10591 <!ENTITY c "&entity;">
10592 ]>
10593 <p>&c;</p>
10594 @@@test:domTree:
10595 document {
10596 document-type { }
10597 element {
10598 general-entity-reference {
10599 node-name: 'c';
10600 manakai-expanded: false;
10601 }
10602 }
10603 }
10604 @@XMLTest:
10605 @@@QName: xp.reptxt.element.content.ger.entity.declared.standalone.4.test
10606 @@@DEnt:
10607 @@@@test:value:
10608 <?xml version="1.0" standalone="yes"?>
10609 <!DOCTYPE p [
10610 <!ENTITY % para SYSTEM "para">
10611 %para;
10612 <!ENTITY c "&entity;">
10613 ]>
10614 <p>&c;</p>
10615 @@@c:erred: <[xp|wf-entity-declared]> { (1, 1)..(1, 8); }
10616 @@XMLTest:
10617 @@@QName: xp.reptxt.element.content.ger.entity.declared.standalone.-3.test
10618 @@@DEnt:
10619 @@@@test:value:
10620 <?xml version="1.0" standalone="no"?>
10621 <!DOCTYPE p [
10622 <!ENTITY c "&entity;">
10623 <!ENTITY % para SYSTEM "para">
10624 %para;
10625 ]>
10626 <p>&c;</p>
10627 @@@test:domTree:
10628 document {
10629 document-type { }
10630 element {
10631 general-entity-reference {
10632 node-name: 'c';
10633 manakai-expanded: true;
10634 general-entity-reference {
10635 node-name: 'entity';
10636 manakai-expanded: false;
10637 }
10638 }
10639 }
10640 }
10641 @@XMLTest:
10642 @@@QName:
10643 xp.reptxt.element.content.ger.entity.declared.standalone.-3.2.test
10644 @@@DEnt:
10645 @@@@test:value:
10646 <?xml version="1.0" standalone="no"?>
10647 <!DOCTYPE p [
10648 <!ENTITY % para SYSTEM "para">
10649 %para;
10650 <!ENTITY c "&entity;">
10651 ]>
10652 <p>&c;</p>
10653 @@@test:domTree:
10654 document {
10655 document-type { }
10656 element {
10657 general-entity-reference {
10658 node-name: 'c';
10659 manakai-expanded: false;
10660 }
10661 }
10662 }
10663 @@XMLTest:
10664 @@@QName: xp.reptxt.element.content.ger.entity.declared.standalone.-4.test
10665 @@@DEnt:
10666 @@@@test:value:
10667 <!DOCTYPE p [
10668 <!ENTITY c "&entity;">
10669 <!ENTITY % para SYSTEM "para">
10670 %para;
10671 ]>
10672 <p>&c;</p>
10673 @@@test:domTree:
10674 document {
10675 document-type { }
10676 element {
10677 general-entity-reference {
10678 node-name: 'c';
10679 manakai-expanded: true;
10680 general-entity-reference {
10681 node-name: 'entity';
10682 manakai-expanded: false;
10683 }
10684 }
10685 }
10686 }
10687 @@XMLTest:
10688 @@@QName:
10689 xp.reptxt.element.content.ger.entity.declared.standalone.-4.2.test
10690 @@@DEnt:
10691 @@@@test:value:
10692 <!DOCTYPE p [
10693 <!ENTITY % para SYSTEM "para">
10694 %para;
10695 <!ENTITY c "&entity;">
10696 ]>
10697 <p>&c;</p>
10698 @@@test:domTree:
10699 document {
10700 document-type { }
10701 element {
10702 general-entity-reference {
10703 node-name: 'c';
10704 manakai-expanded: false;
10705 }
10706 }
10707 }
10708 @@XMLTest:
10709 @@@QName: xp.reptxt.element.content.ger.entity.declared.standalone.5.test
10710 @@@DEnt:
10711 @@@@test:value:
10712 <?xml version="1.0" standalone="yes"?>
10713 <!DOCTYPE p SYSTEM "dtd" [
10714 <!ENTITY c "&entity;">
10715 ]>
10716 <p>&c;</p>
10717 @@@c:erred: <[xp|wf-entity-declared]> { (1, 1)..(1, 8); }
10718 @@XMLTest:
10719 @@@QName: xp.reptxt.element.content.ger.entity.declared.standalone.-5.test
10720 @@@DEnt:
10721 @@@@test:value:
10722 <?xml version="1.0" standalone="no"?>
10723 <!DOCTYPE p SYSTEM "dtd" [
10724 <!ENTITY c "&entity;">
10725 ]>
10726 <p>&c;</p>
10727 @@@test:domTree:
10728 document {
10729 document-type { }
10730 element {
10731 general-entity-reference {
10732 node-name: 'c';
10733 manakai-expanded: true;
10734 general-entity-reference {
10735 node-name: 'entity';
10736 manakai-expanded: false;
10737 }
10738 }
10739 }
10740 }
10741 @@XMLTest:
10742 @@@QName: xp.reptxt.element.content.ger.entity.declared.standalone.-6.test
10743 @@@DEnt:
10744 @@@@test:value:
10745 <!DOCTYPE p SYSTEM "dtd" [<!ENTITY c "&entity;">]>
10746 <p>&c;</p>
10747 @@@test:domTree:
10748 document {
10749 document-type { }
10750 element {
10751 general-entity-reference {
10752 node-name: 'c';
10753 manakai-expanded: true;
10754 general-entity-reference {
10755 node-name: 'entity';
10756 manakai-expanded: false;
10757 }
10758 }
10759 }
10760 }
10761
10762 @@XMLTest:
10763 @@@QName: xp.attval.ger.entity.declared.nodtd.1.test
10764 @@@DEnt:
10765 @@@@test:value:
10766 <p a="&entity;"/>
10767 @@@c:erred: <[xp|wf-entity-declared]> { (1, 7)..(1, 14); }
10768 @@XMLTest:
10769 @@@QName: xp.attval.ger.entity.declared.nodtd.2.test
10770 @@@DEnt:
10771 @@@@test:value:
10772 <?xml version="1.0" standalone="yes"?>
10773 <p a="&entity;"/>
10774 @@@c:erred: <[xp|wf-entity-declared]> { (2, 7)..(2, 14); }
10775 @@XMLTest:
10776 @@@QName: xp.attval.ger.entity.declared.nodtd.3.test
10777 @@@DEnt:
10778 @@@@test:value:
10779 <?xml version="1.0" standalone="no"?>
10780 <p a="&entity;"/>
10781 @@@c:erred: <[xp|wf-entity-declared]> { (2, 7)..(2, 14); }
10782 @@XMLTest:
10783 @@@QName: xp.attval.ger.entity.declared.nodtd.-1.test
10784 @@@DEnt:
10785 @@@@test:value:
10786 <p a="&lt;&gt;&amp;&quot;&apos;"/>
10787 @@@test:domTree:
10788 document {
10789 element {
10790 attribute {
10791 node-name: 'a';
10792 text-content: '<>&"' U+0027;
10793 }
10794 }
10795 }
10796 @@XMLTest:
10797 @@@QName: xp.attval.ger.entity.declared.nopref.1.test
10798 @@@DEnt:
10799 @@@@test:value:
10800 <!DOCTYPE p []>
10801 <p a="&entity;"/>
10802 @@@c:erred: <[xp|wf-entity-declared]> { (2, 7)..(2, 14); }
10803 @@XMLTest:
10804 @@@QName: xp.attval.ger.entity.declared.nopref.2.test
10805 @@@DEnt:
10806 @@@@test:value:
10807 <!DOCTYPE p [
10808 <!ENTITY other "aa">
10809 <!ENTITY % another "aa">
10810 ]>
10811 <p a="&entity;"/>
10812 @@@c:erred: <[xp|wf-entity-declared]> { (5, 7)..(5, 14); }
10813 @@XMLTest:
10814 @@@QName: xp.attval.ger.entity.declared.nopref.3.test
10815 @@@DEnt:
10816 @@@@test:value:
10817 <?xml version="1.0" standalone="yes"?>
10818 <!DOCTYPE p []>
10819 <p a="&entity;"/>
10820 @@@c:erred: <[xp|wf-entity-declared]> { (3, 7)..(3, 14); }
10821 @@XMLTest:
10822 @@@QName: xp.attval.ger.entity.declared.nopref.4.test
10823 @@@DEnt:
10824 @@@@test:value:
10825 <?xml version="1.0" standalone="no"?>
10826 <!DOCTYPE p []>
10827 <p a="&entity;"/>
10828 @@@c:erred: <[xp|wf-entity-declared]> { (3, 7)..(3, 14); }
10829 @@XMLTest:
10830 @@@QName: xp.attval.ger.entity.declared.nopref.5.test
10831 @@@DEnt:
10832 @@@@test:value:
10833 <?xml version="1.0" standalone="yes"?>
10834 <!DOCTYPE p [
10835 <!ENTITY other "aa">
10836 <!ENTITY % another "aa">
10837 ]>
10838 <p a="&entity;"/>
10839 @@@c:erred: <[xp|wf-entity-declared]> { (6, 7)..(6, 14); }
10840 @@XMLTest:
10841 @@@QName: xp.attval.ger.entity.declared.nopref.6.test
10842 @@@DEnt:
10843 @@@@test:value:
10844 <?xml version="1.0" standalone="no"?>
10845 <!DOCTYPE p [
10846 <!ENTITY other "aa">
10847 <!ENTITY % another "aa">
10848 ]>
10849 <p a="&entity;"/>
10850 @@@c:erred: <[xp|wf-entity-declared]> { (6, 7)..(6, 14); }
10851 @@XMLTest:
10852 @@@QName: xp.attval.ger.entity.declared.nopref.-1.test
10853 @@@DEnt:
10854 @@@@test:value:
10855 <!DOCTYPE p [
10856 <!ENTITY entity "value">
10857 ]>
10858 <p a="&entity;"/>
10859 @@@cfg:entity-replacement-tree: 1
10860 @@@test:domTree:
10861 document {
10862 document-type {
10863 general-entity {
10864 node-name: 'entity';
10865 text-content: 'value';
10866 }
10867 }
10868 element {
10869 attribute {
10870 node-name: 'a';
10871 general-entity-reference {
10872 node-name: 'entity';
10873 manakai-expanded: true;
10874 text-content: 'value';
10875 }
10876 }
10877 }
10878 }
10879 @@XMLTest:
10880 @@@QName: xp.attval.ger.entity.declared.nopref.-2.test
10881 @@@DEnt:
10882 @@@@test:value:
10883 <!DOCTYPE p [
10884 <!ENTITY entity "value">
10885 <!ENTITY another SYSTEM "another">
10886 ]>
10887 <p a="&entity;"/>
10888 @@@cfg:entity-replacement-tree: 1
10889 @@@test:domTree:
10890 document {
10891 document-type {
10892 general-entity {
10893 node-name: 'entity';
10894 text-content: 'value';
10895 has-replacement-tree: true;
10896 }
10897 general-entity {
10898 node-name: 'another';
10899 public-id: null;
10900 system-id: 'another';
10901 has-replacement-tree: false;
10902 }
10903 }
10904 element {
10905 attribute {
10906 node-name: 'a';
10907 general-entity-reference {
10908 node-name: 'entity';
10909 manakai-expanded: true;
10910 text-content: 'value';
10911 }
10912 }
10913 }
10914 }
10915 @@XMLTest:
10916 @@@QName: xp.attval.ger.entity.declared.standalone.1.test
10917 @@@DEnt:
10918 @@@@test:value:
10919 <?xml version="1.0" standalone="yes"?>
10920 <p a="&entity;"/>
10921 @@@c:erred: <[xp|wf-entity-declared]> { (2, 7)..(2, 14); }
10922 @@XMLTest:
10923 @@@QName: xp.attval.ger.entity.declared.standalone.2.test
10924 @@@DEnt:
10925 @@@@test:value:
10926 <?xml version="1.0" standalone="yes"?>
10927 <!DOCTYPE p []>
10928 <p a="&entity;"/>
10929 @@@c:erred: <[xp|wf-entity-declared]> { (3, 7)..(3, 14); }
10930 @@XMLTest:
10931 @@@QName: xp.attval.ger.entity.declared.standalone.3.test
10932 @@@DEnt:
10933 @@@@test:value:
10934 <?xml version="1.0" standalone="yes"?>
10935 <!DOCTYPE p [
10936 <!ENTITY % para "<!-- -->">
10937 %para;
10938 ]>
10939 <p a="&entity;"/>
10940 @@@c:erred: <[xp|wf-entity-declared]> { (6, 7)..(6, 14); }
10941 @@XMLTest:
10942 @@@QName: xp.attval.ger.entity.declared.standalone.-1.test
10943 @@@DEnt:
10944 @@@@test:value:
10945 <?xml version="1.0" standalone="no"?>
10946 <!DOCTYPE p [
10947 <!ENTITY % para "<!-- -->">
10948 %para;
10949 ]>
10950 <p a="&entity;"/>
10951 @@@test:domTree:
10952 document {
10953 document-type { }
10954 element {
10955 attribute {
10956 node-name: 'a';
10957 general-entity-reference {
10958 manakai-expanded: false;
10959 }
10960 }
10961 }
10962 }
10963 @@XMLTest:
10964 @@@QName: xp.attval.ger.entity.declared.standalone.-2.test
10965 @@@DEnt:
10966 @@@@test:value:
10967 <!DOCTYPE p [
10968 <!ENTITY % para "<!-- -->">
10969 %para;
10970 ]>
10971 <p a="&entity;"/>
10972 @@@test:domTree:
10973 document {
10974 document-type { }
10975 element {
10976 attribute {
10977 node-name: 'a';
10978 general-entity-reference {
10979 manakai-expanded: false;
10980 }
10981 }
10982 }
10983 }
10984 @@XMLTest:
10985 @@@QName: xp.attval.ger.entity.declared.standalone.4.test
10986 @@@DEnt:
10987 @@@@test:value:
10988 <?xml version="1.0" standalone="yes"?>
10989 <!DOCTYPE p [
10990 <!ENTITY % para SYSTEM "para">
10991 %para;
10992 ]>
10993 <p a="&entity;"/>
10994 @@@c:erred: <[xp|wf-entity-declared]> { (6, 7)..(6, 14); }
10995 @@XMLTest:
10996 @@@QName: xp.attval.ger.entity.declared.standalone.-3.test
10997 @@@DEnt:
10998 @@@@test:value:
10999 <?xml version="1.0" standalone="no"?>
11000 <!DOCTYPE p [
11001 <!ENTITY % para SYSTEM "para">
11002 %para;
11003 ]>
11004 <p a="&entity;"/>
11005 @@@test:domTree:
11006 document {
11007 document-type { }
11008 element {
11009 attribute {
11010 node-name: 'a';
11011 general-entity-reference {
11012 manakai-expanded: false;
11013 }
11014 }
11015 }
11016 }
11017 @@XMLTest:
11018 @@@QName: xp.attval.ger.entity.declared.standalone.-4.test
11019 @@@DEnt:
11020 @@@@test:value:
11021 <!DOCTYPE p [
11022 <!ENTITY % para SYSTEM "para">
11023 %para;
11024 ]>
11025 <p a="&entity;"/>
11026 @@@test:domTree:
11027 document {
11028 document-type { }
11029 element {
11030 attribute {
11031 node-name: 'a';
11032 general-entity-reference {
11033 manakai-expanded: false;
11034 }
11035 }
11036 }
11037 }
11038 @@XMLTest:
11039 @@@QName: xp.attval.ger.entity.declared.standalone.5.test
11040 @@@DEnt:
11041 @@@@test:value:
11042 <?xml version="1.0" standalone="yes"?>
11043 <!DOCTYPE p SYSTEM "dtd">
11044 <p a="&entity;"/>
11045 @@@c:erred: <[xp|wf-entity-declared]> { (3, 7)..(3, 14); }
11046 @@XMLTest:
11047 @@@QName: xp.attval.ger.entity.declared.standalone.-5.test
11048 @@@DEnt:
11049 @@@@test:value:
11050 <?xml version="1.0" standalone="no"?>
11051 <!DOCTYPE p SYSTEM "dtd">
11052 <p a="&entity;"/>
11053 @@@test:domTree:
11054 document {
11055 document-type { }
11056 element {
11057 attribute {
11058 node-name: 'a';
11059 general-entity-reference {
11060 manakai-expanded: false;
11061 }
11062 }
11063 }
11064 }
11065 @@XMLTest:
11066 @@@QName: xp.attval.ger.entity.declared.standalone.-6.test
11067 @@@DEnt:
11068 @@@@test:value:
11069 <!DOCTYPE p SYSTEM "dtd">
11070 <p a="&entity;"/>
11071 @@@test:domTree:
11072 document {
11073 document-type { }
11074 element {
11075 attribute {
11076 node-name: 'a';
11077 general-entity-reference {
11078 manakai-expanded: false;
11079 }
11080 }
11081 }
11082 }
11083
11084 @@XMLTest:
11085 @@@QName: xp.reptxt.attval.ger.entity.declared.nopref.1.test
11086 @@@DEnt:
11087 @@@@test:value:
11088 <!DOCTYPE p [
11089 <!ENTITY c "&entity;">
11090 ]>
11091 <p a="&c;"/>
11092 @@@c:erred: <[xp|wf-entity-declared]> { (1, 1)..(1, 8); }
11093 @@XMLTest:
11094 @@@QName: xp.reptxt.attval.ger.entity.declared.nopref.2.test
11095 @@@DEnt:
11096 @@@@test:value:
11097 <!DOCTYPE p [
11098 <!ENTITY other "aa">
11099 <!ENTITY % another "aa">
11100 <!ENTITY c "&entity;">
11101 ]>
11102 <p a="&c;"/>
11103 @@@c:erred: <[xp|wf-entity-declared]> { (1, 1)..(1, 8); }
11104 @@XMLTest:
11105 @@@QName: xp.reptxt.attval.ger.entity.declared.nopref.3.test
11106 @@@DEnt:
11107 @@@@test:value:
11108 <?xml version="1.0" standalone="yes"?>
11109 <!DOCTYPE p [
11110 <!ENTITY c "&entity;">
11111 ]>
11112 <p a="&c;"/>
11113 @@@c:erred: <[xp|wf-entity-declared]> { (1, 1)..(1, 8); }
11114 @@XMLTest:
11115 @@@QName: xp.reptxt.attval.ger.entity.declared.nopref.4.test
11116 @@@DEnt:
11117 @@@@test:value:
11118 <?xml version="1.0" standalone="no"?>
11119 <!DOCTYPE p [
11120 <!ENTITY c "&entity;">
11121 ]>
11122 <p a="&c;"/>
11123 @@@c:erred: <[xp|wf-entity-declared]> { (1, 1)..(1, 8); }
11124 @@XMLTest:
11125 @@@QName: xp.reptxt.attval.ger.entity.declared.nopref.5.test
11126 @@@DEnt:
11127 @@@@test:value:
11128 <?xml version="1.0" standalone="yes"?>
11129 <!DOCTYPE p [
11130 <!ENTITY other "aa">
11131 <!ENTITY % another "aa">
11132 <!ENTITY c "&entity;">
11133 ]>
11134 <p a="&c;"/>
11135 @@@c:erred: <[xp|wf-entity-declared]> { (1, 1)..(1, 8); }
11136 @@XMLTest:
11137 @@@QName: xp.reptxt.attval.ger.entity.declared.nopref.6.test
11138 @@@DEnt:
11139 @@@@test:value:
11140 <?xml version="1.0" standalone="no"?>
11141 <!DOCTYPE p [
11142 <!ENTITY other "aa">
11143 <!ENTITY % another "aa">
11144 <!ENTITY c "&entity;">
11145 ]>
11146 <p a="&c;"/>
11147 @@@c:erred: <[xp|wf-entity-declared]> { (1, 1)..(1, 8); }
11148 @@XMLTest:
11149 @@@QName: xp.reptxt.attval.ger.entity.declared.nopref.-1.test
11150 @@@DEnt:
11151 @@@@test:value:
11152 <!DOCTYPE p [
11153 <!ENTITY entity "value">
11154 <!ENTITY c "&entity;">
11155 ]>
11156 <p a="&c;"/>
11157 @@@cfg:entity-replacement-tree: 1
11158 @@@test:domTree:
11159 document {
11160 document-type {
11161 general-entity {
11162 node-name: 'entity';
11163 text-content: 'value';
11164 }
11165 general-entity {
11166 node-name: 'c';
11167 general-entity-reference {
11168 node-name: 'entity';
11169 text-content: 'value';
11170 }
11171 }
11172 }
11173 element {
11174 attribute {
11175 node-name: 'a';
11176 general-entity-reference {
11177 node-name: 'c';
11178 general-entity-reference {
11179 node-name: 'entity';
11180 text-content: 'value';
11181 }
11182 }
11183 }
11184 }
11185 }
11186 @@XMLTest:
11187 @@@QName: xp.reptxt.attval.ger.entity.declared.nopref.-2.test
11188 @@@DEnt:
11189 @@@@test:value:
11190 <!DOCTYPE p [
11191 <!ENTITY entity "value">
11192 <!ENTITY another SYSTEM "another">
11193 <!ENTITY c "&entity;">
11194 ]>
11195 <p a="&c;"/>
11196 @@@cfg:entity-replacement-tree: 1
11197 @@@test:domTree:
11198 document {
11199 document-type {
11200 general-entity {
11201 node-name: 'entity';
11202 text-content: 'value';
11203 }
11204 general-entity {
11205 node-name: 'c';
11206 general-entity-reference {
11207 node-name: 'entity';
11208 text-content: 'value';
11209 }
11210 }
11211 general-entity {
11212 node-name: 'another';
11213 public-id: null;
11214 system-id: 'another';
11215 has-replacement-tree: false;
11216 }
11217 }
11218 element {
11219 attribute {
11220 node-name: 'a';
11221 general-entity-reference {
11222 node-name: 'c';
11223 general-entity-reference {
11224 node-name: 'entity';
11225 text-content: 'value';
11226 }
11227 }
11228 }
11229 }
11230 }
11231 @@XMLTest:
11232 @@@QName: xp.reptxt.attval.ger.entity.declared.standalone.2.test
11233 @@@DEnt:
11234 @@@@test:value:
11235 <?xml version="1.0" standalone="yes"?>
11236 <!DOCTYPE p [
11237 <!ENTITY c "&entity;">
11238 ]>
11239 <p a="&c;"/>
11240 @@@c:erred: <[xp|wf-entity-declared]> { (1, 1)..(1, 8); }
11241 @@XMLTest:
11242 @@@QName: xp.reptxt.attval.ger.entity.declared.standalone.3.test
11243 @@@DEnt:
11244 @@@@test:value:
11245 <?xml version="1.0" standalone="yes"?>
11246 <!DOCTYPE p [
11247 <!ENTITY % para "<!-- -->">
11248 %para;
11249 <!ENTITY c "&entity;">
11250 ]>
11251 <p a="&c;"/>
11252 @@@c:erred: <[xp|wf-entity-declared]> { (1, 1)..(1, 8); }
11253 @@XMLTest:
11254 @@@QName: xp.reptxt.attval.ger.entity.declared.standalone.-1.test
11255 @@@DEnt:
11256 @@@@test:value:
11257 <?xml version="1.0" standalone="no"?>
11258 <!DOCTYPE p [
11259 <!ENTITY c "&entity;">
11260 <!ENTITY % para "<!-- -->">
11261 %para;
11262 ]>
11263 <p a="&c;"/>
11264 @@@cfg:entity-replacement-tree: 1
11265 @@@test:domTree:
11266 document {
11267 document-type {
11268 general-entity {
11269 node-name: 'c';
11270 general-entity-reference {
11271 node-name: 'entity';
11272 manakai-expanded: false;
11273 }
11274 }
11275 }
11276 element {
11277 attribute {
11278 node-name: 'a';
11279 general-entity-reference {
11280 node-name: 'c';
11281 general-entity-reference {
11282 node-name: 'entity';
11283 manakai-expanded: false;
11284 }
11285 }
11286 }
11287 }
11288 }
11289 @@XMLTest:
11290 @@@QName:
11291 xp.reptxt.attval.ger.entity.declared.standalone.-1.2.test
11292 @@@DEnt:
11293 @@@@test:value:
11294 <?xml version="1.0" standalone="no"?>
11295 <!DOCTYPE p [
11296 <!ENTITY % para "<!-- -->">
11297 %para;
11298 <!ENTITY c "&entity;">
11299 ]>
11300 <p a="&c;"/>
11301 @@@test:domTree:
11302 document {
11303 document-type { }
11304 element {
11305 attribute {
11306 node-name: 'a';
11307 general-entity-reference {
11308 node-name: 'c';
11309 manakai-expanded: false;
11310 }
11311 }
11312 }
11313 }
11314 @@XMLTest:
11315 @@@QName: xp.reptxt.attval.ger.entity.declared.standalone.-2.test
11316 @@@DEnt:
11317 @@@@test:value:
11318 <!DOCTYPE p [
11319 <!ENTITY c "&entity;">
11320 <!ENTITY % para "<!-- -->">
11321 %para;
11322 ]>
11323 <p a="&c;"/>
11324 @@@test:domTree:
11325 document {
11326 document-type { }
11327 element {
11328 attribute {
11329 node-name: 'a';
11330 general-entity-reference {
11331 node-name: 'c';
11332 manakai-expanded: true;
11333 general-entity-reference {
11334 node-name: 'entity';
11335 manakai-expanded: false;
11336 }
11337 }
11338 }
11339 }
11340 }
11341 @@XMLTest:
11342 @@@QName:
11343 xp.reptxt.attval.ger.entity.declared.standalone.-2.2.test
11344 @@@DEnt:
11345 @@@@test:value:
11346 <!DOCTYPE p [
11347 <!ENTITY % para "<!-- -->">
11348 %para;
11349 <!ENTITY c "&entity;">
11350 ]>
11351 <p a="&c;"/>
11352 @@@test:domTree:
11353 document {
11354 document-type { }
11355 element {
11356 attribute {
11357 node-name: 'a';
11358 general-entity-reference {
11359 node-name: 'c';
11360 manakai-expanded: false;
11361 }
11362 }
11363 }
11364 }
11365 @@XMLTest:
11366 @@@QName: xp.reptxt.attval.ger.entity.declared.standalone.4.test
11367 @@@DEnt:
11368 @@@@test:value:
11369 <?xml version="1.0" standalone="yes"?>
11370 <!DOCTYPE p [
11371 <!ENTITY % para SYSTEM "para">
11372 %para;
11373 <!ENTITY c "&entity;">
11374 ]>
11375 <p a="&c;"/>
11376 @@@c:erred: <[xp|wf-entity-declared]> { (1, 1)..(1, 8); }
11377 @@XMLTest:
11378 @@@QName: xp.reptxt.attval.ger.entity.declared.standalone.-3.test
11379 @@@DEnt:
11380 @@@@test:value:
11381 <?xml version="1.0" standalone="no"?>
11382 <!DOCTYPE p [
11383 <!ENTITY c "&entity;">
11384 <!ENTITY % para SYSTEM "para">
11385 %para;
11386 ]>
11387 <p a="&c;"/>
11388 @@@test:domTree:
11389 document {
11390 document-type { }
11391 element {
11392 attribute {
11393 node-name: 'a';
11394 general-entity-reference {
11395 node-name: 'c';
11396 manakai-expanded: true;
11397 general-entity-reference {
11398 node-name: 'entity';
11399 manakai-expanded: false;
11400 }
11401 }
11402 }
11403 }
11404 }
11405 @@XMLTest:
11406 @@@QName:
11407 xp.reptxt.attval.ger.entity.declared.standalone.-3.2.test
11408 @@@DEnt:
11409 @@@@test:value:
11410 <?xml version="1.0" standalone="no"?>
11411 <!DOCTYPE p [
11412 <!ENTITY % para SYSTEM "para">
11413 %para;
11414 <!ENTITY c "&entity;">
11415 ]>
11416 <p a="&c;"/>
11417 @@@test:domTree:
11418 document {
11419 document-type { }
11420 element {
11421 attribute {
11422 node-name: 'a';
11423 general-entity-reference {
11424 node-name: 'c';
11425 manakai-expanded: false;
11426 }
11427 }
11428 }
11429 }
11430 @@XMLTest:
11431 @@@QName: xp.reptxt.attval.ger.entity.declared.standalone.-4.test
11432 @@@DEnt:
11433 @@@@test:value:
11434 <!DOCTYPE p [
11435 <!ENTITY c "&entity;">
11436 <!ENTITY % para SYSTEM "para">
11437 %para;
11438 ]>
11439 <p a="&c;"/>
11440 @@@test:domTree:
11441 document {
11442 document-type { }
11443 element {
11444 attribute {
11445 node-name: 'a';
11446 general-entity-reference {
11447 node-name: 'c';
11448 manakai-expanded: true;
11449 general-entity-reference {
11450 node-name: 'entity';
11451 manakai-expanded: false;
11452 }
11453 }
11454 }
11455 }
11456 }
11457 @@XMLTest:
11458 @@@QName:
11459 xp.reptxt.attval.ger.entity.declared.standalone.-4.2.test
11460 @@@DEnt:
11461 @@@@test:value:
11462 <!DOCTYPE p [
11463 <!ENTITY % para SYSTEM "para">
11464 %para;
11465 <!ENTITY c "&entity;">
11466 ]>
11467 <p a="&c;"/>
11468 @@@test:domTree:
11469 document {
11470 document-type { }
11471 element {
11472 attribute {
11473 node-name: 'a';
11474 general-entity-reference {
11475 node-name: 'c';
11476 manakai-expanded: false;
11477 }
11478 }
11479 }
11480 }
11481 @@XMLTest:
11482 @@@QName: xp.reptxt.attval.ger.entity.declared.standalone.5.test
11483 @@@DEnt:
11484 @@@@test:value:
11485 <?xml version="1.0" standalone="yes"?>
11486 <!DOCTYPE p SYSTEM "dtd" [
11487 <!ENTITY c "&entity;">
11488 ]>
11489 <p a="&c;"/>
11490 @@@c:erred: <[xp|wf-entity-declared]> { (1, 1)..(1, 8); }
11491 @@XMLTest:
11492 @@@QName: xp.reptxt.attval.ger.entity.declared.standalone.-5.test
11493 @@@DEnt:
11494 @@@@test:value:
11495 <?xml version="1.0" standalone="no"?>
11496 <!DOCTYPE p SYSTEM "dtd" [
11497 <!ENTITY c "&entity;">
11498 ]>
11499 <p a="&c;"/>
11500 @@@test:domTree:
11501 document {
11502 document-type { }
11503 element {
11504 attribute {
11505 node-name: 'a';
11506 general-entity-reference {
11507 node-name: 'c';
11508 manakai-expanded: true;
11509 general-entity-reference {
11510 node-name: 'entity';
11511 manakai-expanded: false;
11512 }
11513 }
11514 }
11515 }
11516 }
11517 @@XMLTest:
11518 @@@QName: xp.reptxt.attval.ger.entity.declared.standalone.-6.test
11519 @@@DEnt:
11520 @@@@test:value:
11521 <!DOCTYPE p SYSTEM "dtd" [<!ENTITY c "&entity;">]>
11522 <p a="&c;"/>
11523 @@@test:domTree:
11524 document {
11525 document-type { }
11526 element {
11527 attribute {
11528 node-name: 'a';
11529 general-entity-reference {
11530 node-name: 'c';
11531 manakai-expanded: true;
11532 general-entity-reference {
11533 node-name: 'entity';
11534 manakai-expanded: false;
11535 }
11536 }
11537 }
11538 }
11539 }
11540
11541 @@XMLTest:
11542 @@@QName: xp.attlist.dup.entity.declared.1.test
11543 @@@DEnt:
11544 @@@@test:value:
11545 <!DOCTYPE p [
11546 <!ATTLIST p a CDATA "no-entity">
11547 <!ATTLIST p a CDATA "&entity;">
11548 ]>
11549 <p/>
11550 @@@c:erred: <[xp|wf-entity-declared]> { (3, 21)..(3, 29); }
11551 @@XMLTest:
11552 @@@QName: xp.attlist.dup.entity.declared.2.test
11553 @@@DEnt:
11554 @@@@test:value:
11555 <!DOCTYPE p [
11556 <!ATTLIST p a CDATA "no-entity"
11557 a CDATA "&entity;">
11558 ]>
11559 <p/>
11560 @@@c:erred: <[xp|wf-entity-declared]> { (3, 21)..(3, 29); }
11561 @@XMLTest:
11562 @@@QName: xp.attlist.unused.entity.declared.1.test
11563 @@@DEnt:
11564 @@@@test:value:
11565 <!DOCTYPE p [
11566 <!ATTLIST q a CDATA "&entity;">
11567 ]>
11568 <p/>
11569 @@@c:erred: <[xp|wf-entity-declared]> { (2, 21)..(2, 29); }
11570 @@XMLTest:
11571 @@@QName: xp.attlist.unused.entity.declared.2.test
11572 @@@DEnt:
11573 @@@@test:value:
11574 <!DOCTYPE p [
11575 <!ATTLIST p a CDATA "&entity;">
11576 ]>
11577 <p a="bb"/>
11578 @@@c:erred: <[xp|wf-entity-declared]> { (2, 21)..(2, 29); }
11579
11580 @@XMLTest:
11581 @@@QName: xp.reptxt.attlist.attval.ger.entity.declared.nopref.1.test
11582 @@@DEnt:
11583 @@@@test:value:
11584 <!DOCTYPE p [
11585 <!ENTITY c "&entity;">
11586 <!ATTLIST p a CDATA "&c;">
11587 ]>
11588 <p/>
11589 @@@c:erred: <[xp|wf-entity-declared]> { (1, 1)..(1, 8); }
11590 @@XMLTest:
11591 @@@QName: xp.reptxt.attlist.attval.ger.entity.declared.nopref.2.test
11592 @@@DEnt:
11593 @@@@test:value:
11594 <!DOCTYPE p [
11595 <!ENTITY other "aa">
11596 <!ENTITY % another "aa">
11597 <!ENTITY c "&entity;">
11598 <!ATTLIST p a CDATA "&c;">
11599 ]>
11600 <p/>
11601 @@@c:erred: <[xp|wf-entity-declared]> { (1, 1)..(1, 8); }
11602 @@XMLTest:
11603 @@@QName: xp.reptxt.attlist.attval.ger.entity.declared.nopref.3.test
11604 @@@DEnt:
11605 @@@@test:value:
11606 <?xml version="1.0" standalone="yes"?>
11607 <!DOCTYPE p [
11608 <!ENTITY c "&entity;">
11609 <!ATTLIST p a CDATA "&c;">
11610 ]>
11611 <p/>
11612 @@@c:erred: <[xp|wf-entity-declared]> { (1, 1)..(1, 8); }
11613 @@XMLTest:
11614 @@@QName: xp.reptxt.attlist.attval.ger.entity.declared.nopref.4.test
11615 @@@DEnt:
11616 @@@@test:value:
11617 <?xml version="1.0" standalone="no"?>
11618 <!DOCTYPE p [
11619 <!ENTITY c "&entity;">
11620 <!ATTLIST p a CDATA "&c;">
11621 ]>
11622 <p/>
11623 @@@c:erred: <[xp|wf-entity-declared]> { (1, 1)..(1, 8); }
11624 @@XMLTest:
11625 @@@QName: xp.reptxt.attlist.attval.ger.entity.declared.nopref.5.test
11626 @@@DEnt:
11627 @@@@test:value:
11628 <?xml version="1.0" standalone="yes"?>
11629 <!DOCTYPE p [
11630 <!ENTITY other "aa">
11631 <!ENTITY % another "aa">
11632 <!ENTITY c "&entity;">
11633 <!ATTLIST p a CDATA "&c;">
11634 ]>
11635 <p/>
11636 @@@c:erred: <[xp|wf-entity-declared]> { (1, 1)..(1, 8); }
11637 @@XMLTest:
11638 @@@QName: xp.reptxt.attlist.attval.ger.entity.declared.nopref.6.test
11639 @@@DEnt:
11640 @@@@test:value:
11641 <?xml version="1.0" standalone="no"?>
11642 <!DOCTYPE p [
11643 <!ENTITY other "aa">
11644 <!ENTITY % another "aa">
11645 <!ENTITY c "&entity;">
11646 <!ATTLIST p a CDATA "&c;">
11647 ]>
11648 <p/>
11649 @@@c:erred: <[xp|wf-entity-declared]> { (1, 1)..(1, 8); }
11650 @@XMLTest:
11651 @@@QName: xp.reptxt.attlist.attval.ger.entity.declared.nopref.-1.test
11652 @@@DEnt:
11653 @@@@test:value:
11654 <!DOCTYPE p [
11655 <!ENTITY entity "value">
11656 <!ENTITY c "&entity;">
11657 <!ATTLIST p a CDATA "&c;">
11658 ]>
11659 <p/>
11660 @@@cfg:entity-replacement-tree: 1
11661 @@@test:domTree:
11662 document {
11663 document-type {
11664 general-entity {
11665 node-name: 'entity';
11666 text-content: 'value';
11667 }
11668 general-entity {
11669 node-name: 'c';
11670 general-entity-reference {
11671 node-name: 'entity';
11672 manakai-expanded: true;
11673 text-content: 'value';
11674 }
11675 }
11676 element-type-definition {
11677 node-name: 'p';
11678 attribute-definition {
11679 node-name: 'a';
11680 general-entity-reference {
11681 node-name: 'c';
11682 manakai-expanded: true;
11683 general-entity-reference {
11684 node-name: 'entity';
11685 manakai-expanded: true;
11686 text-content: 'value';
11687 }
11688 }
11689 }
11690 }
11691 }
11692 element {
11693 attribute {
11694 node-name: 'a';
11695 specified: false;
11696 general-entity-reference {
11697 node-name: 'c';
11698 general-entity-reference {
11699 node-name: 'entity';
11700 text-content: 'value';
11701 }
11702 }
11703 }
11704 }
11705 }
11706 @@XMLTest:
11707 @@@QName: xp.reptxt.attlist.attval.ger.entity.declared.nopref.-2.test
11708 @@@DEnt:
11709 @@@@test:value:
11710 <!DOCTYPE p [
11711 <!ENTITY entity "value">
11712 <!ENTITY another SYSTEM "another">
11713 <!ENTITY c "&entity;">
11714 <!ATTLIST p a CDATA "&c;">
11715 ]>
11716 <p/>
11717 @@@cfg:entity-replacement-tree: 1
11718 @@@test:domTree:
11719 document {
11720 document-type {
11721 general-entity {
11722 node-name: 'entity';
11723 text-content: 'value';
11724 }
11725 general-entity {
11726 node-name: 'c';
11727 general-entity-reference {
11728 node-name: 'entity';
11729 text-content: 'value';
11730 }
11731 }
11732 general-entity {
11733 node-name: 'another';
11734 public-id: null;
11735 system-id: 'another';
11736 has-replacement-tree: false;
11737 }
11738 element-type-definition {
11739 node-name: 'p';
11740 attribute-definition {
11741 node-name: 'a';
11742 general-entity-reference {
11743 node-name: 'c';
11744 manakai-expanded: true;
11745 general-entity-reference {
11746 node-name: 'entity';
11747 manakai-expanded: true;
11748 text-content: 'value';
11749 }
11750 }
11751 }
11752 }
11753 }
11754 element {
11755 attribute {
11756 node-name: 'a';
11757 specified: false;
11758 general-entity-reference {
11759 node-name: 'c';
11760 general-entity-reference {
11761 node-name: 'entity';
11762 text-content: 'value';
11763 }
11764 }
11765 }
11766 }
11767 }
11768 @@XMLTest:
11769 @@@QName: xp.reptxt.attlist.attval.ger.entity.declared.standalone.2.test
11770 @@@DEnt:
11771 @@@@test:value:
11772 <?xml version="1.0" standalone="yes"?>
11773 <!DOCTYPE p [
11774 <!ENTITY c "&entity;">
11775 <!ATTLIST p a CDATA "&c;">
11776 ]>
11777 <p/>
11778 @@@c:erred: <[xp|wf-entity-declared]> { (1, 1)..(1, 8); }
11779 @@XMLTest:
11780 @@@QName: xp.reptxt.attlist.attval.ger.entity.declared.standalone.3.test
11781 @@@DEnt:
11782 @@@@test:value:
11783 <?xml version="1.0" standalone="yes"?>
11784 <!DOCTYPE p [
11785 <!ENTITY % para "<!-- -->">
11786 %para;
11787 <!ENTITY c "&entity;">
11788 <!ATTLIST p a CDATA "&c;">
11789 ]>
11790 <p/>
11791 @@@c:erred: <[xp|wf-entity-declared]> { (1, 1)..(1, 8); }
11792 @@XMLTest:
11793 @@@QName: xp.reptxt.attlist.attval.ger.entity.declared.standalone.-1.test
11794 @@@DEnt:
11795 @@@@test:value:
11796 <?xml version="1.0" standalone="no"?>
11797 <!DOCTYPE p [
11798 <!ENTITY c "&entity;">
11799 <!ATTLIST p a CDATA "&c;">
11800 <!ENTITY % para "<!-- -->">
11801 %para;
11802 ]>
11803 <p/>
11804 @@@c:erred: <[xp|wf-entity-declared]> { (1, 1)..(1, 8); }
11805 @@XMLTest:
11806 @@@QName:
11807 xp.reptxt.attlist.attval.ger.entity.declared.standalone.-1.2.test
11808 @@@DEnt:
11809 @@@@test:value:
11810 <?xml version="1.0" standalone="no"?>
11811 <!DOCTYPE p [
11812 <!ENTITY % para "<!-- -->">
11813 %para;
11814 <!ENTITY c "&entity;">
11815 <!ATTLIST p a CDATA "&c;">
11816 ]>
11817 <p g="h"/>
11818 @@@test:domTree:
11819 document {
11820 document-type { }
11821 element {
11822 attribute {
11823 node-name: 'g';
11824 text-content: 'h';
11825 }
11826 }
11827 }
11828 @@XMLTest:
11829 @@@QName: xp.reptxt.attlist.attval.ger.entity.declared.standalone.-2.test
11830 @@@DEnt:
11831 @@@@test:value:
11832 <!DOCTYPE p [
11833 <!ENTITY c "&entity;">
11834 <!ATTLIST p a CDATA "&c;">
11835 <!ENTITY % para "<!-- -->">
11836 %para;
11837 ]>
11838 <p/>
11839 @@@c:erred: <[xp|wf-entity-declared]> { (1, 1)..(1, 8); }
11840 @@XMLTest:
11841 @@@QName:
11842 xp.reptxt.attlist.attval.ger.entity.declared.standalone.-2.2.test
11843 @@@DEnt:
11844 @@@@test:value:
11845 <!DOCTYPE p [
11846 <!ENTITY % para "<!-- -->">
11847 %para;
11848 <!ENTITY c "&entity;">
11849 <!ATTLIST p a CDATA "&c;">
11850 ]>
11851 <p g="h"/>
11852 @@@test:domTree:
11853 document {
11854 document-type { }
11855 element {
11856 attribute {
11857 node-name: 'g';
11858 text-content: 'h';
11859 }
11860 }
11861 }
11862 @@XMLTest:
11863 @@@QName: xp.reptxt.attlist.attval.ger.entity.declared.standalone.4.test
11864 @@@DEnt:
11865 @@@@test:value:
11866 <?xml version="1.0" standalone="yes"?>
11867 <!DOCTYPE p [
11868 <!ENTITY % para SYSTEM "para">
11869 %para;
11870 <!ENTITY c "&entity;">
11871 <!ATTLIST p a CDATA "&c;">
11872 ]>
11873 <p/>
11874 @@@c:erred: <[xp|wf-entity-declared]> { (1, 1)..(1, 8); }
11875 @@XMLTest:
11876 @@@QName: xp.reptxt.attlist.attval.ger.entity.declared.standalone.-3.test
11877 @@@DEnt:
11878 @@@@test:value:
11879 <?xml version="1.0" standalone="no"?>
11880 <!DOCTYPE p [
11881 <!ENTITY c "&entity;">
11882 <!ATTLIST p a CDATA "&c;">
11883 <!ENTITY % para SYSTEM "para">
11884 %para;
11885 ]>
11886 <p/>
11887 @@@c:erred: <[xp|wf-entity-declared]> { (1, 1)..(1, 8); }
11888 @@XMLTest:
11889 @@@QName:
11890 xp.reptxt.attlist.attval.ger.entity.declared.standalone.-3.2.test
11891 @@@DEnt:
11892 @@@@test:value:
11893 <?xml version="1.0" standalone="no"?>
11894 <!DOCTYPE p [
11895 <!ENTITY % para SYSTEM "para">
11896 %para;
11897 <!ENTITY c "&entity;">
11898 <!ATTLIST p a CDATA "&c;">
11899 ]>
11900 <p g="h"/>
11901 @@@test:domTree:
11902 document {
11903 document-type { }
11904 element {
11905 attribute {
11906 node-name: 'g';
11907 text-content: 'h';
11908 }
11909 }
11910 }
11911 @@XMLTest:
11912 @@@QName: xp.reptxt.attlist.attval.ger.entity.declared.standalone.-4.test
11913 @@@DEnt:
11914 @@@@test:value:
11915 <!DOCTYPE p [
11916 <!ENTITY c "&entity;">
11917 <!ATTLIST p a CDATA "&c;">
11918 <!ENTITY % para SYSTEM "para">
11919 %para;
11920 ]>
11921 <p/>
11922 @@@c:erred: <[xp|wf-entity-declared]> { (1, 1)..(1, 8); }
11923 @@XMLTest:
11924 @@@QName:
11925 xp.reptxt.attlist.attval.ger.entity.declared.standalone.-4.2.test
11926 @@@DEnt:
11927 @@@@test:value:
11928 <!DOCTYPE p [
11929 <!ENTITY % para SYSTEM "para">
11930 %para;
11931 <!ENTITY c "&entity;">
11932 <!ATTLIST p a CDATA "&c;">
11933 ]>
11934 <p g="h"/>
11935 @@@test:domTree:
11936 document {
11937 document-type { }
11938 element {
11939 attribute {
11940 node-name: 'g';
11941 text-content: 'h';
11942 }
11943 }
11944 }
11945 @@XMLTest:
11946 @@@QName: xp.reptxt.attlist.attval.ger.entity.declared.standalone.5.test
11947 @@@DEnt:
11948 @@@@test:value:
11949 <?xml version="1.0" standalone="yes"?>
11950 <!DOCTYPE p SYSTEM "dtd" [
11951 <!ENTITY c "&entity;">
11952 <!ATTLIST p a CDATA "&c;">
11953 ]>
11954 <p/>
11955 @@@c:erred: <[xp|wf-entity-declared]> { (1, 1)..(1, 8); }
11956 @@XMLTest:
11957 @@@QName: xp.reptxt.attlist.attval.ger.entity.declared.standalone.-5.test
11958 @@@DEnt:
11959 @@@@test:value:
11960 <?xml version="1.0" standalone="no"?>
11961 <!DOCTYPE p SYSTEM "dtd" [
11962 <!ENTITY c "&entity;">
11963 <!ATTLIST p a CDATA "&c;">
11964 ]>
11965 <p/>
11966 @@@test:domTree:
11967 document {
11968 document-type { }
11969 element {
11970 attribute {
11971 node-name: 'a';
11972 specified: false;
11973 general-entity-reference {
11974 node-name: 'c';
11975 manakai-expanded: true;
11976 general-entity-reference {
11977 node-name: 'entity';
11978 manakai-expanded: false;
11979 }
11980 }
11981 }
11982 }
11983 }
11984 @@XMLTest:
11985 @@@QName: xp.reptxt.attlist.attval.ger.entity.declared.standalone.-6.test
11986 @@@DEnt:
11987 @@@@test:value:
11988 <!DOCTYPE p SYSTEM "dtd" [<!ENTITY c "&entity;">
11989 <!ATTLIST p a CDATA "&c;">
11990 ]>
11991 <p/>
11992 @@@test:domTree:
11993 document {
11994 document-type { }
11995 element {
11996 attribute {
11997 node-name: 'a';
11998 specified: false;
11999 general-entity-reference {
12000 node-name: 'c';
12001 manakai-expanded: true;
12002 general-entity-reference {
12003 node-name: 'entity';
12004 manakai-expanded: false;
12005 }
12006 }
12007 }
12008 }
12009 }
12010
12011 @@XMLTest:
12012 @@@QName: xp.attlist.attval.ger.entity.declared.nopref.1.test
12013 @@@DEnt:
12014 @@@@test:value:
12015 <!DOCTYPE p [
12016 <!ATTLIST p a CDATA "&entity;">
12017 ]>
12018 <p/>
12019 @@@c:erred: <[xp|wf-entity-declared]> { (2, 22)..(2, 29); }
12020 @@XMLTest:
12021 @@@QName: xp.attlist.attval.ger.entity.declared.nopref.2.test
12022 @@@DEnt:
12023 @@@@test:value:
12024 <!DOCTYPE p [
12025 <!ENTITY other "aa">
12026 <!ENTITY % another "aa">
12027 <!ATTLIST p a CDATA "&entity;">
12028 ]>
12029 <p/>
12030 @@@c:erred: <[xp|wf-entity-declared]> { (4, 22)..(4, 29); }
12031 @@XMLTest:
12032 @@@QName: xp.attlist.attval.ger.entity.declared.nopref.3.test
12033 @@@DEnt:
12034 @@@@test:value:
12035 <?xml version="1.0" standalone="yes"?>
12036 <!DOCTYPE p [
12037 <!ATTLIST p a CDATA "&entity;">
12038 ]>
12039 <p/>
12040 @@@c:erred: <[xp|wf-entity-declared]> { (3, 22)..(3, 29); }
12041 @@XMLTest:
12042 @@@QName: xp.attlist.attval.ger.entity.declared.nopref.4.test
12043 @@@DEnt:
12044 @@@@test:value:
12045 <?xml version="1.0" standalone="no"?>
12046 <!DOCTYPE p [
12047 <!ATTLIST p a CDATA "&entity;">
12048 ]>
12049 <p/>
12050 @@@c:erred: <[xp|wf-entity-declared]> { (3, 22)..(3, 29); }
12051 @@XMLTest:
12052 @@@QName: xp.attlist.attval.ger.entity.declared.nopref.5.test
12053 @@@DEnt:
12054 @@@@test:value:
12055 <?xml version="1.0" standalone="yes"?>
12056 <!DOCTYPE p [
12057 <!ENTITY other "aa">
12058 <!ENTITY % another "aa">
12059 <!ATTLIST p a CDATA "&entity;">
12060 ]>
12061 <p/>
12062 @@@c:erred: <[xp|wf-entity-declared]> { (5, 22)..(5, 29); }
12063 @@XMLTest:
12064 @@@QName: xp.attlist.attval.ger.entity.declared.nopref.6.test
12065 @@@DEnt:
12066 @@@@test:value:
12067 <?xml version="1.0" standalone="no"?>
12068 <!DOCTYPE p [
12069 <!ENTITY other "aa">
12070 <!ENTITY % another "aa">
12071 <!ATTLIST p a CDATA "&entity;">
12072 ]>
12073 <p/>
12074 @@@c:erred: <[xp|wf-entity-declared]> { (5, 22)..(5, 29); }
12075 @@XMLTest:
12076 @@@QName: xp.attlist.attval.ger.entity.declared.nopref.-1.test
12077 @@@DEnt:
12078 @@@@test:value:
12079 <!DOCTYPE p [
12080 <!ENTITY entity "value">
12081 <!ATTLIST p a CDATA "&entity;">
12082 ]>
12083 <p/>
12084 @@@cfg:entity-replacement-tree: 1
12085 @@@test:domTree:
12086 document {
12087 document-type {
12088 general-entity {
12089 node-name: 'entity';
12090 text-content: 'value';
12091 }
12092 element-type-definition {
12093 node-name: 'p';
12094 attribute-definition {
12095 node-name: 'a';
12096 general-entity-reference {
12097 node-name: 'entity';
12098 manakai-expanded: true;
12099 text-content: 'value';
12100 }
12101 }
12102 }
12103 }
12104 element {
12105 attribute {
12106 node-name: 'a';
12107 specified: false;
12108 general-entity-reference {
12109 node-name: 'entity';
12110 manakai-expanded: true;
12111 text-content: 'value';
12112 }
12113 }
12114 }
12115 }
12116 @@XMLTest:
12117 @@@QName: xp.attlist.attval.ger.entity.declared.nopref.-1.2.test
12118 @@@DEnt:
12119 @@@@test:value:
12120 <!DOCTYPE p [
12121 <!ATTLIST p a CDATA "&entity;">
12122 <!ENTITY entity "value">
12123 ]>
12124 <p/>
12125 @@@c:erred: <[xp|wf-entity-declared]> { (2, 22)..(2, 29); }
12126 @@XMLTest:
12127 @@@QName: xp.attlist.attval.ger.entity.declared.nopref.-2.test
12128 @@@DEnt:
12129 @@@@test:value:
12130 <!DOCTYPE p [
12131 <!ENTITY entity "value">
12132 <!ENTITY another SYSTEM "another">
12133 <!ATTLIST p a CDATA "&entity;">
12134 ]>
12135 <p/>
12136 @@@cfg:entity-replacement-tree: 1
12137 @@@test:domTree:
12138 document {
12139 document-type {
12140 element-type-definition {
12141 node-name: 'p';
12142 attribute-definition {
12143 node-name: 'a';
12144 general-entity-reference {
12145 node-name: 'entity';
12146 manakai-expanded: true;
12147 text-content: 'value';
12148 }
12149 }
12150 }
12151 general-entity {
12152 node-name: 'entity';
12153 text-content: 'value';
12154 has-replacement-tree: true;
12155 }
12156 general-entity {
12157 node-name: 'another';
12158 public-id: null;
12159 system-id: 'another';
12160 has-replacement-tree: false;
12161 }
12162 }
12163 element {
12164 attribute {
12165 node-name: 'a';
12166 specified: false;
12167 general-entity-reference {
12168 node-name: 'entity';
12169 manakai-expanded: true;
12170 text-content: 'value';
12171 }
12172 }
12173 }
12174 }
12175 @@XMLTest:
12176 @@@QName: xp.attlist.attval.ger.entity.declared.nopref.-2.2.test
12177 @@@DEnt:
12178 @@@@test:value:
12179 <!DOCTYPE p [
12180 <!ATTLIST p a CDATA "&entity;">
12181 <!ENTITY entity "value">
12182 <!ENTITY another SYSTEM "another">
12183 ]>
12184 <p/>
12185 @@@c:erred: <[xp|wf-entity-declared]> { (2, 22)..(2, 29); }
12186 @@XMLTest:
12187 @@@QName: xp.attlist.attval.ger.entity.declared.standalone.2.test
12188 @@@DEnt:
12189 @@@@test:value:
12190 <?xml version="1.0" standalone="yes"?>
12191 <!DOCTYPE p [
12192 <!ATTLIST p a CDATA "&entity;">
12193 ]>
12194 <p/>
12195 @@@c:erred: <[xp|wf-entity-declared]> { (3, 22)..(3, 29); }
12196 @@XMLTest:
12197 @@@QName: xp.attlist.attval.ger.entity.declared.standalone.3.test
12198 @@@DEnt:
12199 @@@@test:value:
12200 <?xml version="1.0" standalone="yes"?>
12201 <!DOCTYPE p [
12202 <!ATTLIST p a CDATA "&entity;">
12203 <!ENTITY % para "<!-- -->">
12204 %para;
12205 ]>
12206 <p/>
12207 @@@c:erred: <[xp|wf-entity-declared]> { (3, 22)..(3, 29); }
12208 @@XMLTest:
12209 @@@QName: xp.attlist.attval.ger.entity.declared.standalone.3.2.test
12210 @@@DEnt:
12211 @@@@test:value:
12212 <?xml version="1.0" standalone="yes"?>
12213 <!DOCTYPE p [
12214 <!ENTITY % para "<!-- -->">
12215 %para;
12216 <!ATTLIST p a CDATA "&entity;">
12217 ]>
12218 <p/>
12219 @@@c:erred: <[xp|wf-entity-declared]> { (5, 22)..(5, 29); }
12220 @@@enImplNote:
12221 The <XML::ATTLIST> declaration is processed since
12222 it is a <XA::standalone> document.
12223 @@XMLTest:
12224 @@@QName: xp.attlist.attval.ger.entity.declared.standalone.-1.test
12225 @@@DEnt:
12226 @@@@test:value:
12227 <?xml version="1.0" standalone="no"?>
12228 <!DOCTYPE p [
12229 <!ATTLIST p a CDATA "&entity;">
12230 <!ENTITY % para "<!-- -->">
12231 %para;
12232 ]>
12233 <p/>
12234 @@@c:erred: <[xp|wf-entity-declared]> { (3, 22)..(3, 29); }
12235 @@XMLTest:
12236 @@@QName: xp.attlist.attval.ger.entity.declared.standalone.-1.2.test
12237 @@@DEnt:
12238 @@@@test:value:
12239 <?xml version="1.0" standalone="no"?>
12240 <!DOCTYPE p [
12241 <!ATTLIST p b CDATA #IMPLIED>
12242 <!ENTITY % para "<!-- -->">
12243 %para;
12244 <!ATTLIST p a CDATA "&entity;">
12245 ]>
12246 <p c="d"/>
12247 @@@c:erred:
12248 <[xp|warning-attribute-definition-not-processed]> { (6, 13)..(6, 30); }
12249 @@@test:domTree:
12250 document {
12251 document-type {
12252 element-type-definition {
12253 node-name: 'p';
12254 attribute-definition {
12255 node-name: 'b';
12256 }
12257 }
12258 }
12259 element {
12260 attribute {
12261 node-name: 'c';
12262 text-content: 'd';
12263 }
12264 }
12265 }
12266 @@@enImplNote:
12267 The second <XML::ATTLIST> declaration is read but not processed
12268 and its <XML::&entity;> general entity reference violates
12269 entity declared validty constraint rather than well-formedness
12270 constraint.
12271 @@XMLTest:
12272 @@@QName: xp.attlist.attval.ger.entity.declared.standalone.-2.test
12273 @@@DEnt:
12274 @@@@test:value:
12275 <!DOCTYPE p [
12276 <!ATTLIST p a CDATA "&entity;">
12277 <!ENTITY % para "<!-- -->">
12278 %para;
12279 ]>
12280 <p/>
12281 @@@c:erred: <[xp|wf-entity-declared]> { (2, 22)..(2, 29); }
12282 @@XMLTest:
12283 @@@QName: xp.attlist.attval.ger.entity.declared.standalone.-2.2.test
12284 @@@DEnt:
12285 @@@@test:value:
12286 <!DOCTYPE p [
12287 <!ATTLIST p b CDATA #IMPLIED>
12288 <!ENTITY % para "<!-- -->">
12289 %para;
12290 <!ATTLIST p a CDATA "&entity;">
12291 ]>
12292 <p c="d"/>
12293 @@@c:erred:
12294 <[xp|warning-attribute-definition-not-processed]> { (5, 13)..(5, 30); }
12295 @@@test:domTree:
12296 document {
12297 document-type {
12298 element-type-definition {
12299 node-name: 'p';
12300 attribute-definition {
12301 node-name: 'b';
12302 }
12303 }
12304 }
12305 element {
12306 attribute {
12307 node-name: 'c';
12308 text-content: 'd';
12309 }
12310 }
12311 }
12312 @@XMLTest:
12313 @@@QName: xp.attlist.attval.ger.entity.declared.standalone.4.test
12314 @@@DEnt:
12315 @@@@test:value:
12316 <?xml version="1.0" standalone="yes"?>
12317 <!DOCTYPE p [
12318 <!ATTLIST p a CDATA "&entity;">
12319 <!ENTITY % para SYSTEM "p">
12320 %para;
12321 ]>
12322 <p/>
12323 @@@c:erred: <[xp|wf-entity-declared]> { (3, 22)..(3, 29); }
12324 @@XMLTest:
12325 @@@QName: xp.attlist.attval.ger.entity.declared.standalone.4.2.test
12326 @@@DEnt:
12327 @@@@test:value:
12328 <?xml version="1.0" standalone="yes"?>
12329 <!DOCTYPE p [
12330 <!ENTITY % para SYSTEM "p">
12331 %para;
12332 <!ATTLIST p a CDATA "&entity;">
12333 ]>
12334 <p/>
12335 @@@c:erred: <[xp|wf-entity-declared]> { (5, 22)..(5, 29); }
12336 @@@enImplNote:
12337 The <XML::ATTLIST> declaration is processed since
12338 it is a <XA::standalone> document.
12339 @@XMLTest:
12340 @@@QName: xp.attlist.attval.ger.entity.declared.standalone.-3.test
12341 @@@DEnt:
12342 @@@@test:value:
12343 <?xml version="1.0" standalone="no"?>
12344 <!DOCTYPE p [
12345 <!ATTLIST p a CDATA "&entity;">
12346 <!ENTITY % para SYSTEM "p">
12347 %para;
12348 ]>
12349 <p/>
12350 @@@c:erred: <[xp|wf-entity-declared]> { (3, 22)..(3, 29); }
12351 @@@enImplNote:
12352 Is this well-formed? It has a parameter entity reference,
12353 therefore, it does not violates Entity Declared WFC, isn't it?
12354
12355 Note that Firefox 1.5 and Opera 9 TP1 reports that this document has a
12356 fatal error (also note that they does not support unexpanded).
12357
12358 See also:
12359 <URI::http://suika.fam.cx/gate/2005/sw/%E5%B1%9E%E6%80%A7%E5%80%A4%E8%A1%A8%E8%A8%98#anchor-8>
12360 @@XMLTest:
12361 @@@QName: xp.attlist.attval.ger.entity.declared.standalone.-3.2.test
12362 @@@DEnt:
12363 @@@@test:value:
12364 <?xml version="1.0" standalone="no"?>
12365 <!DOCTYPE p [
12366 <!ATTLIST p b CDATA #IMPLIED>
12367 <!ENTITY % para SYSTEM "p">
12368 %para;
12369 <!ATTLIST p a CDATA "&entity;">
12370 ]>
12371 <p c="d"/>
12372 @@@c:erred:
12373 <[xp|warning-attribute-definition-not-processed]> { (6, 13)..(6, 30); }
12374 @@@test:domTree:
12375 document {
12376 document-type {
12377 element-type-definition {
12378 node-name: 'p';
12379 attribute-definition {
12380 node-name: 'b';
12381 }
12382 }
12383 }
12384 element {
12385 attribute {
12386 node-name: 'c';
12387 text-content: 'd';
12388 }
12389 }
12390 }
12391 @@@enImplNote:
12392 The second <XML::ATTLIST> declaration is read but not processed
12393 and its <XML::&entity;> general entity reference violates
12394 entity declared validty constraint rather than well-formedness
12395 constraint.
12396 @@XMLTest:
12397 @@@QName: xp.attlist.attval.ger.entity.declared.standalone.-4.test
12398 @@@DEnt:
12399 @@@@test:value:
12400 <!DOCTYPE p [
12401 <!ATTLIST p a CDATA "&entity;">
12402 <!ENTITY % para SYSTEM "p">
12403 %para;
12404 ]>
12405 <p/>
12406 @@@c:erred: <[xp|wf-entity-declared]> { (2, 22)..(2, 29); }
12407 @@XMLTest:
12408 @@@QName: xp.attlist.attval.ger.entity.declared.standalone.-4.2.test
12409 @@@DEnt:
12410 @@@@test:value:
12411 <!DOCTYPE p [
12412 <!ATTLIST p b CDATA #IMPLIED>
12413 <!ENTITY % para SYSTEM "p">
12414 %para;
12415 <!ATTLIST p a CDATA "&entity;">
12416 ]>
12417 <p c="d"/>
12418 @@@c:erred:
12419 <[xp|warning-attribute-definition-not-processed]> { (5, 13)..(5, 30); }
12420 @@@test:domTree:
12421 document {
12422 document-type {
12423 element-type-definition {
12424 node-name: 'p';
12425 attribute-definition {
12426 node-name: 'b';
12427 }
12428 }
12429 }
12430 element {
12431 attribute {
12432 node-name: 'c';
12433 text-content: 'd';
12434 }
12435 }
12436 }
12437 @@XMLTest:
12438 @@@QName: xp.attlist.attval.ger.entity.declared.standalone.5.test
12439 @@@DEnt:
12440 @@@@test:value:
12441 <?xml version="1.0" standalone="yes"?>
12442 <!DOCTYPE p SYSTEM "dtd" [
12443 <!ATTLIST p a CDATA "&entity;">
12444 ]>
12445 <p/>
12446 @@@c:erred: <[xp|wf-entity-declared]> { (3, 22)..(3, 29); }
12447 @@@enImplNote:
12448 This document has an error - result is implementation dependent.
12449 @@XMLTest:
12450 @@@QName: xp.attlist.attval.ger.entity.declared.standalone.-5.test
12451 @@@DEnt:
12452 @@@@test:value:
12453 <?xml version="1.0" standalone="no"?>
12454 <!DOCTYPE p SYSTEM "dtd" [
12455 <!ATTLIST p a CDATA "&entity;">
12456 ]>
12457 <p/>
12458 @@@test:domTree:
12459 document {
12460 document-type {
12461 element-type-definition {
12462 node-name: 'p';
12463 attribute-definition {
12464 node-name: 'a';
12465 general-entity-reference {
12466 node-name: 'entity';
12467 manakai-expanded: false;
12468 }
12469 }
12470 }
12471 }
12472 element {
12473 attribute {
12474 node-name: 'a';
12475 specified: false;
12476 general-entity-reference {
12477 node-name: 'entity';
12478 manakai-expanded: false;
12479 }
12480 }
12481 }
12482 }
12483 @@@enImplNote:
12484 This document has an error - result is implementation dependent.
12485 @@XMLTest:
12486 @@@QName: xp.attlist.attval.ger.entity.declared.standalone.-6.test
12487 @@@DEnt:
12488 @@@@test:value:
12489 <!DOCTYPE p SYSTEM "dtd" [
12490 <!ATTLIST p a CDATA "&entity;">
12491 ]>
12492 <p/>
12493 @@@test:domTree:
12494 document {
12495 document-type {
12496 element-type-definition {
12497 node-name: 'p';
12498 attribute-definition {
12499 node-name: 'a';
12500 general-entity-reference {
12501 node-name: 'entity';
12502 manakai-expanded: false;
12503 }
12504 }
12505 }
12506 }
12507 element {
12508 attribute {
12509 node-name: 'a';
12510 specified: false;
12511 general-entity-reference {
12512 node-name: 'entity';
12513 manakai-expanded: false;
12514 }
12515 }
12516 }
12517 }
12518 @@@enImplNote:
12519 This document has an error - result is implementation dependent.
12520
12521 @@enImplNote:
12522 {TODO:: Entity declared WFC for
12523
12524 - General entity references in entity value??
12525
12526 }
12527
12528 @@XMLTest:
12529 @@@QName: xp.element.content.parsed.entity.reference.test
12530 @@@DEnt:
12531 @@@@test:value:
12532 <!DOCTYPE p [
12533 <!NOTATION n SYSTEM "notation">
12534 <!ENTITY ext SYSTEM "system" NDATA n>
12535 ]>
12536 <p>&ext;</p>
12537 @@@c:erred: <[xp|wf-parsed-entity]> { (5, 4)..(5, 8); }
12538 @@XMLTest:
12539 @@@QName: xp.attval.parsed.entity.reference.test
12540 @@@DEnt:
12541 @@@@test:value:
12542 <!DOCTYPE p [
12543 <!NOTATION n SYSTEM "notation">
12544 <!ENTITY ext SYSTEM "system" NDATA n>
12545 ]>
12546 <p a="&ext;"/>
12547 # @@@c:erred: <[xp|wf-parsed-entity]> { (5, 7)..(5, 11); }
12548 @@@c:erred: <[xp|wf-no-external-entity-references]> { (5, 7)..(5, 11); }
12549 @@XMLTest:
12550 @@@QName: xp.element.content.reptxt.parsed.entity.reference.test
12551 @@@DEnt:
12552 @@@@test:value:
12553 <!DOCTYPE p [
12554 <!NOTATION n SYSTEM "notation">
12555 <!ENTITY ext SYSTEM "system" NDATA n>
12556 <!ENTITY c "&#x26;ext;">
12557 ]>
12558 <p>&c;</p>
12559 @@@c:erred: <[xp|wf-parsed-entity]> { (1, 1)..(1, 5); }
12560 @@XMLTest:
12561 @@@QName: xp.attval.reptxt.parsed.entity.reference.test
12562 @@@DEnt:
12563 @@@@test:value:
12564 <!DOCTYPE p [
12565 <!NOTATION n SYSTEM "notation">
12566 <!ENTITY ext SYSTEM "system" NDATA n>
12567 <!ENTITY c "&#x26;ext;">
12568 ]>
12569 <p a="&c;"/>
12570 @@@cfg:entity-replacement-tree: 0
12571 @@@c:erred: <[xp|wf-no-external-entity-references]> { (1, 1)..(1, 5); }
12572 @@XMLTest:
12573 @@@QName: xp.attval.reptxt.parsed.entity.reference.2.test
12574 @@@DEnt:
12575 @@@@test:value:
12576 <!DOCTYPE p [
12577 <!NOTATION n SYSTEM "notation">
12578 <!ENTITY ext SYSTEM "system" NDATA n>
12579 <!ENTITY c "&#x26;ext;">
12580 ]>
12581 <p a="&c;"/>
12582 @@@cfg:entity-replacement-tree: 1
12583 @@@c:erred: <[xp|wf-no-external-entity-references]> { (1, 1)..(1, 5); }
12584 @@@c:erred:
12585 @@@@@: <[xp|wf-parsed-entity]> { }
12586 @@@@enImplNote: During entity node construction.
12587 @@XMLTest:
12588 @@@QName: xp.element.content.entval.parsed.entity.reference.test
12589 @@@DEnt:
12590 @@@@test:value:
12591 <!DOCTYPE p [
12592 <!NOTATION n SYSTEM "notation">
12593 <!ENTITY ext SYSTEM "system" NDATA n>
12594 <!ENTITY c "&ext;">
12595 ]>
12596 <p>&c;</p>
12597 @@@c:erred: <[xp|wf-parsed-entity]> { }
12598 @@XMLTest:
12599 @@@QName: xp.attval.entval.parsed.entity.reference.test
12600 @@@DEnt:
12601 @@@@test:value:
12602 <!DOCTYPE p [
12603 <!NOTATION n SYSTEM "notation">
12604 <!ENTITY ext SYSTEM "system" NDATA n>
12605 <!ENTITY c "&ext;">
12606 ]>
12607 <p a="&c;"/>
12608 @@@cfg:entity-replacement-tree: 0
12609 @@@c:erred: <[xp|wf-no-external-entity-references]> { }
12610 @@XMLTest:
12611 @@@QName: xp.attval.entval.parsed.entity.reference.2.test
12612 @@@DEnt:
12613 @@@@test:value:
12614 <!DOCTYPE p [
12615 <!NOTATION n SYSTEM "notation">
12616 <!ENTITY ext SYSTEM "system" NDATA n>
12617 <!ENTITY c "&ext;">
12618 ]>
12619 <p a="&c;"/>
12620 @@@cfg:entity-replacement-tree: 1
12621 @@@c:erred: <[xp|wf-no-external-entity-references]> { }
12622 @@@c:erred: <[xp|wf-parsed-entity]> { }
12623
12624 @@XMLTest:
12625 @@@QName: xp.element.content.no.recursion.direct.test
12626 @@@DEnt:
12627 @@@@test:value:
12628 <!DOCTYPE p [
12629 <!ENTITY c "&c;">
12630 ]>
12631 <p>&c;</p>
12632 @@@c:erred: <[xp|wf-no-recursion]> { (1, 1)..(1, 3); }
12633 @@XMLTest:
12634 @@@QName: xp.element.content.no.recursion.indirect.test
12635 @@@DEnt:
12636 @@@@test:value:
12637 <!DOCTYPE p [
12638 <!ENTITY d "&c;">
12639 <!ENTITY c "&d;">
12640 ]>
12641 <p>&c;</p>
12642 @@@c:erred: <[xp|wf-no-recursion]> { /* |d| */ (1, 1)..(1, 3); }
12643 @@XMLTest:
12644 @@@QName: xp.attval.no.recursion.direct.test
12645 @@@DEnt:
12646 @@@@test:value:
12647 <!DOCTYPE p [
12648 <!ENTITY c "&c;">
12649 ]>
12650 <p a="&c;"/>
12651 @@@c:erred: <[xp|wf-no-recursion]> { (1, 1)..(1, 3); }
12652 @@XMLTest:
12653 @@@QName: xp.attval.no.recursion.indirect.test
12654 @@@DEnt:
12655 @@@@test:value:
12656 <!DOCTYPE p [
12657 <!ENTITY d "&c;">
12658 <!ENTITY c "&d;">
12659 ]>
12660 <p a="&c;"/>
12661 @@@c:erred: <[xp|wf-no-recursion]> { /* |d| */ (1, 1)..(1, 3); }
12662 @@XMLTest:
12663 @@@QName: xp.reptxt.element.content.no.recursion.direct.test
12664 @@@DEnt:
12665 @@@@test:value:
12666 <!DOCTYPE p [
12667 <!ENTITY c "&c;">
12668 <!ENTITY e "&#x26;c;">
12669 ]>
12670 <p>&e;</p>
12671 @@@c:erred: <[xp|wf-no-recursion]> { /* |e| */ (1, 1)..(1, 3); }
12672 @@XMLTest:
12673 @@@QName: xp.reptxt.element.content.no.recursion.indirect.test
12674 @@@DEnt:
12675 @@@@test:value:
12676 <!DOCTYPE p [
12677 <!ENTITY d "&c;">
12678 <!ENTITY c "&d;">
12679 <!ENTITY e "&#x26;c;">
12680 ]>
12681 <p>&e;</p>
12682 @@@c:erred: <[xp|wf-no-recursion]> { /* |d| */ (1, 1)..(1, 3); }
12683 @@XMLTest:
12684 @@@QName: xp.reptxt.attval.no.recursion.direct.test
12685 @@@DEnt:
12686 @@@@test:value:
12687 <!DOCTYPE p [
12688 <!ENTITY c "&c;">
12689 <!ENTITY e "&#x26;c;">
12690 ]>
12691 <p a="&e;"/>
12692 @@@c:erred: <[xp|wf-no-recursion]> { /* |e| */ (1, 1)..(1, 3); }
12693 @@XMLTest:
12694 @@@QName: xp.reptxt.attval.no.recursion.indirect.test
12695 @@@DEnt:
12696 @@@@test:value:
12697 <!DOCTYPE p [
12698 <!ENTITY d "&c;">
12699 <!ENTITY c "&d;">
12700 <!ENTITY e "&#x26;c;">
12701 ]>
12702 <p a="&e;"/>
12703 @@@c:erred: <[xp|wf-no-recursion]> { /* |d| */ (1, 1)..(1, 3); }
12704
12705 @@XMLTest:
12706 @@@QName: xp.ENTITY.system.ndata.name.test
12707 @@@DEnt:
12708 @@@@test:value:
12709 <!DOCTYPE a [
12710 <!NOTATION n SYSTEM "n">
12711 <!ENTITY % e SYSTEM "sys" NDATA n>
12712 ]><a/>
12713 @@@c:erred: <[xp|wf-syntax-error]> { (3, 26)..(3, 30); }
12714 @@XMLTest:
12715 @@@QName: xp.ENTITY.public.ndata.name.test
12716 @@@DEnt:
12717 @@@@test:value:
12718 <!DOCTYPE a [
12719 <!NOTATION n SYSTEM "n">
12720 <!ENTITY % e PUBLIC "pub" "sys" NDATA n>
12721 ]><a/>
12722 @@@c:erred: <[xp|wf-syntax-error]> { (3, 33)..(3, 37); }
12723 @@XMLTest:
12724 @@@QName: xp.ENTITY.public.ndata.name.-1.test
12725 @@@DEnt:
12726 @@@@test:value:
12727 <!DOCTYPE a [
12728 <!NOTATION n SYSTEM "n">
12729 <!ENTITY % e PUBLIC "pub" "sys" >
12730 ]><a/>
12731 @@@test:domTree:
12732 document { }
12733
12734 @@XMLTest:
12735 @@@QName: xp.ENTITY.pubid.1.test
12736 @@@DEnt:
12737 @@@@test:value:
12738 <!DOCTYPE a [
12739 <!ENTITY e PUBLIC "p" "s">
12740 ]><a/>
12741 @@@test:domTree:
12742 document {
12743 document-type {
12744 general-entity {
12745 node-name: 'e';
12746 public-id: 'p';
12747 system-id: 's';
12748 }
12749 }
12750 element { }
12751 }
12752 @@XMLTest:
12753 @@@QName: xp.ENTITY.pubid.2.test
12754 @@@DEnt:
12755 @@@@test:value:
12756 <!DOCTYPE a [
12757 <!ENTITY e PUBLIC " p " "s">
12758 ]><a/>
12759 @@@test:domTree:
12760 document {
12761 document-type {
12762 general-entity {
12763 node-name: 'e';
12764 public-id: 'p';
12765 system-id: 's';
12766 }
12767 }
12768 element { }
12769 }
12770 @@XMLTest:
12771 @@@QName: xp.ENTITY.pubid.3.test
12772 @@@DEnt:
12773 @@@@test:value:
12774 <!DOCTYPE a [
12775 <!ENTITY e PUBLIC " p $u000Aq$u000A " "s">
12776 ]><a/>
12777 @@@test:domTree:
12778 document {
12779 document-type {
12780 general-entity {
12781 node-name: 'e';
12782 public-id: 'p q';
12783 system-id: 's';
12784 }
12785 }
12786 element { }
12787 }
12788 @@XMLTest:
12789 @@@QName: xp.ENTITY.pubid.4.test
12790 @@@DEnt:
12791 @@@@test:value:
12792 <!DOCTYPE a [
12793 <!ENTITY e PUBLIC " p $u000D$u000Aq" "s">
12794 ]><a/>
12795 @@@test:domTree:
12796 document {
12797 document-type {
12798 general-entity {
12799 node-name: 'e';
12800 public-id: 'p q';
12801 system-id: 's';
12802 }
12803 }
12804 element { }
12805 }
12806 @@XMLTest:
12807 @@@QName: xp.ENTITY.pubid.5.test
12808 @@@DEnt:
12809 @@@@test:value:
12810 <?xml version="1.1"?>
12811 <!DOCTYPE a [
12812 <!ENTITY e PUBLIC " p $u000D$u0085q" "s">
12813 ]><a/>
12814 @@@test:domTree:
12815 document {
12816 document-type {
12817 general-entity {
12818 node-name: 'e';
12819 public-id: 'p q';
12820 system-id: 's';
12821 }
12822 }
12823 element { }
12824 }
12825
12826 @@XMLTest:
12827 @@@QName: xp.ENTITY.ignored.test
12828 @@@DEnt:
12829 @@@@test:value:
12830 <!DOCTYPE a [
12831 <!ENTITY e "a">
12832 <!ENTITY e "b">
12833 ]><a/>
12834 @@@cfg:entity-replacement-tree: 1
12835 @@@test:domTree:
12836 document {
12837 document-type {
12838 general-entity {
12839 node-name: 'e';
12840 text-content: 'a';
12841 }
12842 }
12843 element { }
12844 }
12845 @@@c:erred:
12846 <[xp|warning-entity-declaration-ignored]> { (3, 1)..(3, 15); }
12847 @@XMLTest:
12848 @@@QName: xp.ENTITY.ignored.2.test
12849 @@@DEnt:
12850 @@@@test:value:
12851 <!DOCTYPE a [
12852 <!ENTITY % e "a">
12853 <!ENTITY % e "b">
12854 ]><a/>
12855 @@@test:domTree:
12856 document { }
12857 @@@c:erred:
12858 <[xp|warning-entity-declaration-ignored]> { (3, 1)..(3, 17); }
12859
12860 @@XMLTest:
12861 @@@QName: xp.ENTITY.predefined.1.test
12862 @@@DEnt:
12863 @@@@test:value:
12864 <!DOCTYPE a [
12865 <!ENTITY lt "&#38;#60;">
12866 <!ENTITY gt "&#62;">
12867 <!ENTITY amp "&#38;#38;">
12868 <!ENTITY apos "&#39;">
12869 <!ENTITY quot "&#34;">
12870 <!ENTITY e "f">
12871 ]><a>&lt;&gt;&amp;&apos;&quot;</a>
12872 @@@cfg:entity-replacement-tree: 1
12873 @@@test:domTree:
12874 document {
12875 document-type {
12876 general-entity {
12877 node-name: 'e';
12878 text-content: 'f';
12879 }
12880 }
12881 element {
12882 text-content: '<>&' U+0027 '"';
12883 }
12884 }
12885 @@XMLTest:
12886 @@@QName: xp.ENTITY.predefined.2.test
12887 @@@DEnt:
12888 @@@@test:value:
12889 <!DOCTYPE a [
12890 <!ENTITY lt "&#38;#60;">
12891 <!ENTITY gt "&#x26;#62;">
12892 <!ENTITY amp "&#38;#38;">
12893 <!ENTITY apos "&#x26;#39;">
12894 <!ENTITY quot "&#x26;#34;">
12895 <!ENTITY e "f">
12896 ]><a>&lt;&gt;&amp;&apos;&quot;</a>
12897 @@@cfg:entity-replacement-tree: 1
12898 @@@test:domTree:
12899 document {
12900 document-type {
12901 general-entity {
12902 node-name: 'e';
12903 text-content: 'f';
12904 }
12905 }
12906 element {
12907 text-content: '<>&' U+0027 '"';
12908 }
12909 }
12910 @@XMLTest:
12911 @@@QName: xp.ENTITY.predefined.3.test
12912 @@@DEnt:
12913 @@@@test:value:
12914 <!DOCTYPE a [
12915 <!ENTITY lt "&#60;">
12916 <!ENTITY gt "&#62;">
12917 <!ENTITY amp "&#38;">
12918 <!ENTITY apos "&#39;">
12919 <!ENTITY quot "&#34;">
12920 <!ENTITY e "f">
12921 ]><a>&lt;&gt;&amp;&apos;&quot;</a>
12922 @@@cfg:entity-replacement-tree: 1
12923 @@@c:erred: <[xp|error-malformed-predefined-entity]> { (2, 1)..(2, 24); }
12924 @@@c:erred: <[xp|error-malformed-predefined-entity]> { (4, 1)..(4, 24); }
12925 @@@test:domTree:
12926 document {
12927 document-type {
12928 general-entity {
12929 node-name: 'e';
12930 text-content: 'f';
12931 }
12932 }
12933 element {
12934 text-content: '<>&' U+0027 '"';
12935 }
12936 }
12937 @@XMLTest:
12938 @@@QName: xp.ENTITY.predefined.4.test
12939 @@@DEnt:
12940 @@@@test:value:
12941 <!DOCTYPE a [
12942 <!ENTITY lt "1">
12943 <!ENTITY gt "2">
12944 <!ENTITY amp "3">
12945 <!ENTITY apos "4">
12946 <!ENTITY quot "5">
12947 <!ENTITY e "f">
12948 ]><a>&lt;&gt;&amp;&apos;&quot;</a>
12949 @@@cfg:entity-replacement-tree: 1
12950 @@@c:erred: <[xp|error-malformed-predefined-entity]> { (2, 1)..(2, 24); }
12951 @@@c:erred: <[xp|error-malformed-predefined-entity]> { (3, 1)..(3, 24); }
12952 @@@c:erred: <[xp|error-malformed-predefined-entity]> { (4, 1)..(4, 24); }
12953 @@@c:erred: <[xp|error-malformed-predefined-entity]> { (5, 1)..(5, 24); }
12954 @@@c:erred: <[xp|error-malformed-predefined-entity]> { (6, 1)..(6, 24); }
12955 @@@test:domTree:
12956 document {
12957 document-type {
12958 general-entity {
12959 node-name: 'e';
12960 text-content: 'f';
12961 }
12962 }
12963 element {
12964 text-content: '<>&' U+0027 '"';
12965 }
12966 }
12967 @@XMLTest:
12968 @@@QName: xp.ENTITY.predefined.5.test
12969 @@@DEnt:
12970 @@@@test:value:
12971 <!DOCTYPE a [
12972 <!ENTITY lt SYSTEM "1">
12973 <!ENTITY gt SYSTEM "2">
12974 <!ENTITY amp SYSTEM "3">
12975 <!ENTITY apos SYSTEM "4">
12976 <!ENTITY quot SYSTEM "5">
12977 <!ENTITY e "f">
12978 ]><a>&lt;&gt;&amp;&apos;&quot;</a>
12979 @@@cfg:entity-replacement-tree: 1
12980 @@@c:erred: <[xp|error-internal-predefined-entity]> { (2, 1)..(2, 27); }
12981 @@@c:erred: <[xp|error-internal-predefined-entity]> { (3, 1)..(3, 27); }
12982 @@@c:erred: <[xp|error-internal-predefined-entity]> { (4, 1)..(4, 27); }
12983 @@@c:erred: <[xp|error-internal-predefined-entity]> { (5, 1)..(5, 27); }
12984 @@@c:erred: <[xp|error-internal-predefined-entity]> { (6, 1)..(6, 27); }
12985 @@@test:domTree:
12986 document {
12987 document-type {
12988 general-entity {
12989 node-name: 'e';
12990 text-content: 'f';
12991 }
12992 }
12993 element {
12994 text-content: '<>&' U+0027 '"';
12995 }
12996 }
12997 @@XMLTest:
12998 @@@QName: xp.ENTITY.predefined.6.test
12999 @@@DEnt:
13000 @@@@test:value:
13001 <!DOCTYPE a [
13002 <!ENTITY % lt SYSTEM "1">
13003 <!ENTITY % gt SYSTEM "2">
13004 <!ENTITY % amp SYSTEM "3">
13005 <!ENTITY % apos SYSTEM "4">
13006 <!ENTITY % quot SYSTEM "5">
13007 <!ENTITY e "f">
13008 ]><a>&lt;&gt;&amp;&apos;&quot;</a>
13009 @@@cfg:entity-replacement-tree: 1
13010 @@@test:domTree:
13011 document {
13012 document-type {
13013 general-entity {
13014 node-name: 'e';
13015 text-content: 'f';
13016 }
13017 }
13018 element {
13019 text-content: '<>&' U+0027 '"';
13020 }
13021 }
13022 @@XMLTest:
13023 @@@QName: xp.ENTITY.predefined.7.test
13024 @@@DEnt:
13025 @@@@test:value:
13026 <!DOCTYPE a [
13027 <!ENTITY lt "&#38;#x3C;">
13028 <!ENTITY gt "&#x3E;">
13029 <!ENTITY amp "&#38;#x26;">
13030 <!ENTITY apos "&#x27;">
13031 <!ENTITY quot "&#x22;">
13032 <!ENTITY e "f">
13033 ]><a>&lt;&gt;&amp;&apos;&quot;</a>
13034 @@@cfg:entity-replacement-tree: 1
13035 @@@test:domTree:
13036 document {
13037 document-type {
13038 general-entity {
13039 node-name: 'e';
13040 text-content: 'f';
13041 }
13042 }
13043 element {
13044 text-content: '<>&' U+0027 '"';
13045 }
13046 }
13047 @@XMLTest:
13048 @@@QName: xp.ENTITY.predefined.8.test
13049 @@@DEnt:
13050 @@@@test:value:
13051 <!DOCTYPE a [
13052 <!ENTITY lt "&#38;#x3c;">
13053 <!ENTITY gt "&#x3e;">
13054 <!ENTITY amp "&#38;#x26;">
13055 <!ENTITY apos "&#x27;">
13056 <!ENTITY quot "&#x22;">
13057 <!ENTITY e "f">
13058 ]><a>&lt;&gt;&amp;&apos;&quot;</a>
13059 @@@cfg:entity-replacement-tree: 1
13060 @@@test:domTree:
13061 document {
13062 document-type {
13063 general-entity {
13064 node-name: 'e';
13065 text-content: 'f';
13066 }
13067 }
13068 element {
13069 text-content: '<>&' U+0027 '"';
13070 }
13071 }
13072 @@XMLTest:
13073 @@@QName: xp.ENTITY.predefined.9.test
13074 @@@DEnt:
13075 @@@@test:value:
13076 <!DOCTYPE a [
13077 <!ENTITY lt "&#38;#x00003C;">
13078 <!ENTITY gt "&#x0003E;">
13079 <!ENTITY amp "&#38;#x026;">
13080 <!ENTITY apos "&#x000027;">
13081 <!ENTITY quot "&#x0022;">
13082 <!ENTITY e "f">
13083 ]><a>&lt;&gt;&amp;&apos;&quot;</a>
13084 @@@cfg:entity-replacement-tree: 1
13085 @@@test:domTree:
13086 document {
13087 document-type {
13088 general-entity {
13089 node-name: 'e';
13090 text-content: 'f';
13091 }
13092 }
13093 element {
13094 text-content: '<>&' U+0027 '"';
13095 }
13096 }
13097 @@XMLTest:
13098 @@@QName: xp.ENTITY.predefined.10.test
13099 @@@DEnt:
13100 @@@@test:value:
13101 <!DOCTYPE a [
13102 <!ENTITY lt "&#38;#00060;">
13103 <!ENTITY gt "&#062;">
13104 <!ENTITY amp "&#38;#000038;">
13105 <!ENTITY apos "&#0000039;">
13106 <!ENTITY quot "&#0034;">
13107 <!ENTITY e "f">
13108 ]><a>&lt;&gt;&amp;&apos;&quot;</a>
13109 @@@cfg:entity-replacement-tree: 1
13110 @@@test:domTree:
13111 document {
13112 document-type {
13113 general-entity {
13114 node-name: 'e';
13115 text-content: 'f';
13116 }
13117 }
13118 element {
13119 text-content: '<>&' U+0027 '"';
13120 }
13121 }
13122
13123 @@XMLTest:
13124 @@@QName: xp.processed.1.test
13125 @@@DEnt:
13126 @@@@test:value:
13127 <a/>
13128 @@@test:domTree:
13129 document {
13130 all-declarations-processed: true;
13131 element { }
13132 }
13133 @@XMLTest:
13134 @@@QName: xp.processed.2.test
13135 @@@DEnt:
13136 @@@@test:value:
13137 <!DOCTYPE a [
13138 <!ENTITY e "f">
13139 <!ATTLIST a b NMTOKEN " c ">
13140 ]><a>&e;</a>
13141 @@@test:domTree:
13142 document {
13143 document-type {
13144 general-entity {
13145 node-name: 'e';
13146 }
13147 element-type-definition {
13148 node-name: 'a';
13149 attribute-definition {
13150 node-name: 'b';
13151 }
13152 }
13153 }
13154 all-declarations-processed: true;
13155 element {
13156 attribute {
13157 node-name: 'b';
13158 node-value: 'c';
13159 }
13160 text-content: 'f';
13161 }
13162 }
13163 @@XMLTest:
13164 @@@QName: xp.processed.3.test
13165 @@@DEnt:
13166 @@@@test:value:
13167 <!DOCTYPE a [
13168 <!ENTITY % p SYSTEM "p">
13169 %p;
13170 <!ENTITY e "f">
13171 <!ATTLIST a b NMTOKEN " c ">
13172 ]><a d="e">&e;</a>
13173 @@@test:domTree:
13174 document {
13175 document-type { }
13176 all-declarations-processed: false;
13177 element {
13178 attribute {
13179 node-name: 'd';
13180 node-value: 'e';
13181 }
13182 general-entity-reference {
13183 node-name: 'e';
13184 manakai-expanded: false;
13185 }
13186 }
13187 }
13188 @@@c:erred:
13189 <[xp|warning-entity-declaration-not-processed]> { (4, 1)..(4, 20); }
13190 @@@c:erred:
13191 <[xp|warning-attribute-definition-not-processed]> { (5, 13)..(5, 31); }
13192 @@XMLTest:
13193 @@@QName: xp.processed.4.test
13194 @@@DEnt:
13195 @@@@test:value:
13196 <?xml version="1.1" standalone="yes"?>
13197 <!DOCTYPE a [
13198 <!ENTITY % p SYSTEM "p">
13199 %p;
13200 <!ENTITY e "f">
13201 <!ATTLIST a b NMTOKEN " c ">
13202 ]><a>&e;</a>
13203 @@@test:domTree:
13204 document {
13205 document-type {
13206 general-entity {
13207 node-name: 'e';
13208 }
13209 element-type-definition {
13210 node-name: 'a';
13211 attribute-definition {
13212 node-name: 'b';
13213 }
13214 }
13215 }
13216 all-declarations-processed: false;
13217 element {
13218 attribute {
13219 node-name: 'b';
13220 node-value: 'c';
13221 }
13222 text-content: 'f';
13223 }
13224 }
13225 @@XMLTest:
13226 @@@QName: xp.processed.5.test
13227 @@@DEnt:
13228 @@@@test:value:
13229 <!DOCTYPE a SYSTEM "p" [
13230 <!ENTITY e "f">
13231 <!ATTLIST a b NMTOKEN " c ">
13232 ]><a>&e;</a>
13233 @@@test:domTree:
13234 document {
13235 document-type {
13236 general-entity {
13237 node-name: 'e';
13238 }
13239 element-type-definition {
13240 node-name: 'a';
13241 attribute-definition {
13242 node-name: 'b';
13243 }
13244 }
13245 }
13246 all-declarations-processed: false;
13247 element {
13248 attribute {
13249 node-name: 'b';
13250 node-value: 'c';
13251 }
13252 text-content: 'f';
13253 }
13254 }
13255
13256 @@XMLTest:
13257 @@@QName: xp.PEs.in.internal.subset.1.test
13258 @@@DEnt:
13259 @@@@test:value:
13260 <!DOCTYPE a [
13261 <!ENTITY % p " ">
13262 <!ENTITY % q "%p;">
13263 ]><a/>
13264 @@@c:erred: <[xp|wf-pes-in-internal-subset]> { (3, 15)..(3, 17); }
13265 @@XMLTest:
13266 @@@QName: xp.PEs.in.internal.subset.2.test
13267 @@@DEnt:
13268 @@@@test:value:
13269 <!DOCTYPE a [
13270 <!ENTITY % p " ">
13271 <!ENTITY % q '%p;'>
13272 ]><a/>
13273 @@@c:erred: <[xp|wf-pes-in-internal-subset]> { (3, 15)..(3, 17); }
13274
13275 @@XMLTest:
13276 @@@QName: xp.name.pitarget.content.1.0.2.test
13277 @@@DEnt:
13278 @@@@test:value:
13279 <?xml version="1.0"?>
13280 <p>
13281 <?$u3001$u3002?>
13282 </p>
13283 @@@c:erred: <[xp|wf-invalid-character-in-node-name]> { (3, 3)..(3, 4); }
13284 @@XMLTest:
13285 @@@QName: xp.name.pitarget.content.1.1.2.test
13286 @@@DEnt:
13287 @@@@test:value:
13288 <?xml version="1.1"?>
13289 <p>$
13290 <?$u3001$u3002?>$
13291 </p>
13292 @@@test:domTree:
13293 document {
13294 xml-version: '1.1';
13295 element {
13296 pi {
13297 node-name: U+3001 U+3002;
13298 }
13299 }
13300 }
13301 @@XMLTest:
13302 @@@QName: xp.name.pitarget.content.1.0.3.test
13303 @@@DEnt:
13304 @@@@test:value:
13305 <?xml version="1.0"?>
13306 <p>
13307 <?$u3005b?>
13308 </p>
13309 @@@c:erred: <[xp|wf-invalid-character-in-node-name]> { (3, 3)..(3, 4); }
13310 @@XMLTest:
13311 @@@QName: xp.name.pitarget.content.1.1.3.test
13312 @@@DEnt:
13313 @@@@test:value:
13314 <?xml version="1.1"?>
13315 <p>$
13316 <?$u3005b?>$
13317 </p>
13318 @@@test:domTree:
13319 document {
13320 xml-version: '1.1';
13321 element {
13322 pi {
13323 node-name: U+3005 'b';
13324 }
13325 }
13326 }
13327 @@XMLTest:
13328 @@@QName: xp.name.pitarget.content.names.1.0.1.test
13329 @@@DEnt:
13330 @@@@test:value:
13331 <?xml version="1.0"?>
13332 <p>
13333 <?a:b?>
13334 </p>
13335 @@@c:erred: <[xp|nswf-legal-ncname]> { (3, 3)..(3, 5); }
13336 @@XMLTest:
13337 @@@QName: xp.name.pitarget.content.names.1.1.1.test
13338 @@@DEnt:
13339 @@@@test:value:
13340 <?xml version="1.1"?>
13341 <p>
13342 <?a:b?>
13343 </p>
13344 @@@c:erred: <[xp|nswf-legal-ncname]> { (3, 3)..(3, 5); }
13345 @@XMLTest:
13346 @@@QName: xp.name.pitarget.intsubset.1.0.2.test
13347 @@@DEnt:
13348 @@@@test:value:
13349 <?xml version="1.0"?>
13350 <!DOCTYPE p [
13351 <?$u3001$u3002?>
13352 ]><p/>
13353 @@@c:erred: <[xp|wf-invalid-character-in-node-name]> { (3, 3)..(3, 4); }
13354 @@XMLTest:
13355 @@@QName: xp.name.pitarget.intsubset.1.1.2.test
13356 @@@DEnt:
13357 @@@@test:value:
13358 <?xml version="1.1"?>
13359 <!DOCTYPE p [
13360 <?$u3001$u3002?>
13361 ]><p/>
13362 @@@test:domTree:
13363 document {
13364 xml-version: '1.1';
13365 document-type {
13366 pi {
13367 node-name: U+3001 U+3002;
13368 }
13369 }
13370 element { }
13371 }
13372 @@XMLTest:
13373 @@@QName: xp.name.pitarget.intsubset.1.0.3.test
13374 @@@DEnt:
13375 @@@@test:value:
13376 <?xml version="1.0"?>
13377 <!DOCTYPE p [
13378 <?$u3005b?>
13379 ]><p/>
13380 @@@c:erred: <[xp|wf-invalid-character-in-node-name]> { (3, 3)..(3, 4); }
13381 @@XMLTest:
13382 @@@QName: xp.name.pitarget.intsubset.1.1.3.test
13383 @@@DEnt:
13384 @@@@test:value:
13385 <?xml version="1.1"?>
13386 <!DOCTYPE p [
13387 <?$u3005b?>
13388 ]><p/>
13389 @@@test:domTree:
13390 document {
13391 xml-version: '1.1';
13392 document-type {
13393 pi {
13394 node-name: U+3005 'b';
13395 }
13396 }
13397 element { }
13398 }
13399 @@XMLTest:
13400 @@@QName: xp.name.pitarget.intsubset.names.1.0.1.test
13401 @@@DEnt:
13402 @@@@test:value:
13403 <?xml version="1.0"?>
13404 <!DOCTYPE p [
13405 <?a:b?>
13406 ]><p/>
13407 @@@c:erred: <[xp|nswf-legal-ncname]> { (3, 3)..(3, 5); }
13408 @@XMLTest:
13409 @@@QName: xp.name.pitarget.intsubset.names.1.1.1.test
13410 @@@DEnt:
13411 @@@@test:value:
13412 <?xml version="1.1"?>
13413 <!DOCTYPE p [
13414 <?a:b?>
13415 ]><p/>
13416 @@@c:erred: <[xp|nswf-legal-ncname]> { (3, 3)..(3, 5); }
13417 @@XMLTest:
13418 @@@QName: xp.name.doctypedecl.stag.etag.1.0.2.test
13419 @@@DEnt:
13420 @@@@test:value:
13421 <?xml version="1.0"?>
13422 <!DOCTYPE $u3001$u3002>
13423 <$u3001$u3002>
13424 </$u3001$u3002>
13425 @@@c:erred: <[xp|wf-invalid-character-in-node-name]> { (2, 11)..(2, 12); }
13426 @@@c:erred: <[xp|wf-invalid-character-in-node-name]> { (3, 2)..(3, 3); }
13427 # @@@c:erred: <[xp|wf-invalid-character-in-node-name]> { (4, 3)..(4, 4); }
13428 @@XMLTest:
13429 @@@QName: xp.name.doctypedecl.stag.etag.1.1.2.test
13430 @@@DEnt:
13431 @@@@test:value:
13432 <?xml version="1.1"?>
13433 <!DOCTYPE $u3001$u3002>
13434 <$u3001$u3002>
13435 </$u3001$u3002>
13436 @@@test:domTree:
13437 document {
13438 xml-version: '1.1';
13439 document-type {
13440 node-name: U+3001 U+3002;
13441 }
13442 element {
13443 node-name: U+3001 U+3002;
13444 }
13445 }
13446 @@XMLTest:
13447 @@@QName: xp.name.doctypedecl.stag.etag.1.0.3.test
13448 @@@DEnt:
13449 @@@@test:value:
13450 <?xml version="1.0"?>
13451 <!DOCTYPE $u3005b>
13452 <$u3005b>
13453 </$u3005b>
13454 @@@c:erred: <[xp|wf-invalid-character-in-node-name]> { (2, 11)..(2, 12); }
13455 @@@c:erred: <[xp|wf-invalid-character-in-node-name]> { (3, 2)..(3, 3); }
13456 # @@@c:erred: <[xp|wf-invalid-character-in-node-name]> { (4, 3)..(4, 4); }
13457 @@XMLTest:
13458 @@@QName: xp.name.doctype.decl.stag.etag.1.1.3.test
13459 @@@DEnt:
13460 @@@@test:value:
13461 <?xml version="1.1"?>
13462 <!DOCTYPE $u3005b>
13463 <$u3005b>
13464 </$u3005b>
13465 @@@test:domTree:
13466 document {
13467 xml-version: '1.1';
13468 document-type {
13469 node-name: U+3005 'b';
13470 }
13471 element {
13472 node-name: U+3005 'b';
13473 }
13474 }
13475 @@XMLTest:
13476 @@@QName: xp.name.doctypedecl.stag.etag.names.1.0.1.test
13477 @@@DEnt:
13478 @@@@test:value:
13479 <?xml version="1.0"?>
13480 <!DOCTYPE a:b>
13481 <a:b xmlns:a="http://a.example/">
13482 </a:b>
13483 @@@test:domTree:
13484 document {
13485 xml-version: '1.0';
13486 document-type {
13487 node-name: 'a:b';
13488 }
13489 element {
13490 prefix: 'a';
13491 local-name: 'b';
13492 namespace-uri: 'http://a.example/';
13493 attribute {
13494 namespace-uri: 'http://www.w3.org/2000/xmlns/';
13495 prefix: 'xmlns';
13496 local-name: 'a';
13497 value: 'http://a.example/';
13498 specified: true;
13499 }
13500 }
13501 }
13502 @@XMLTest:
13503 @@@QName: xp.name.doctypedecl.stag.etag.names.1.1.1.test
13504 @@@DEnt:
13505 @@@@test:value:
13506 <?xml version="1.1"?>
13507 <!DOCTYPE a:b>
13508 <a:b xmlns:a="http://a.example/">
13509 </a:b>
13510 @@@test:domTree:
13511 document {
13512 xml-version: '1.1';
13513 document-type {
13514 node-name: 'a:b';
13515 }
13516 element {
13517 prefix: 'a';
13518 local-name: 'b';
13519 namespace-uri: 'http://a.example/';
13520 attribute {
13521 namespace-uri: 'http://www.w3.org/2000/xmlns/';
13522 prefix: 'xmlns';
13523 local-name: 'a';
13524 specified: true;
13525 }
13526 }
13527 }
13528 @@XMLTest:
13529 @@@QName: xp.name.doctypedecl.stag.etag.names.1.0.2.test
13530 @@@DEnt:
13531 @@@@test:value:
13532 <?xml version="1.0"?>
13533 <!DOCTYPE :ab>
13534 <:ab>
13535 </:ab>
13536 @@@c:erred: <[xp|nswf-legal-qname]> { (2, 11)..(2, 13); }
13537 @@@c:erred: <[xp|nswf-legal-qname]> { (3, 2)..(3, 4); }
13538 @@@c:erred: <[xp|nsc-prefix-declared]> { /* prefix || */ }
13539 @@XMLTest:
13540 @@@QName: xp.name.doctypedecl.stag.etag.names.1.1.2.test
13541 @@@DEnt:
13542 @@@@test:value:
13543 <?xml version="1.1"?>
13544 <!DOCTYPE :ab>
13545 <:ab>
13546 </:ab>
13547 @@@c:erred: <[xp|nswf-legal-qname]> { (2, 11)..(2, 13); }
13548 @@@c:erred: <[xp|nswf-legal-qname]> { (3, 2)..(3, 4); }
13549 @@@c:erred: <[xp|nsc-prefix-declared]> { /* prefix || */ }
13550 @@XMLTest:
13551 @@@QName: xp.name.doctypedecl.stag.etag.names.1.0.3.test
13552 @@@DEnt:
13553 @@@@test:value:
13554 <?xml version="1.0"?>
13555 <!DOCTYPE a:$u3005>
13556 <a:$u3005 xmlns:a="http://a.example/">
13557 </a:$u3005>
13558 @@@c:erred: <[xp|nswf-legal-qname]> { (2, 11)..(2, 13); }
13559 @@@c:erred: <[xp|nswf-legal-qname]> { (3, 2)..(3, 4); }
13560 @@XMLTest:
13561 @@@QName: xp.name.doctypedecl.stag.etag.names.1.1.3.test
13562 @@@DEnt:
13563 @@@@test:value:
13564 <?xml version="1.1"?>
13565 <!DOCTYPE a:$u3005>
13566 <a:$u3005 xmlns:a="http://a.example/">
13567 </a:$u3005>
13568 @@@test:domTree:
13569 document {
13570 xml-version: '1.1';
13571 document-type {
13572 node-name: 'a:' U+3005;
13573 }
13574 element {
13575 prefix: 'a';
13576 local-name: U+3005;
13577 namespace-uri: 'http://a.example/';
13578 attribute {
13579 namespace-uri: 'http://www.w3.org/2000/xmlns/';
13580 prefix: 'xmlns';
13581 local-name: 'a';
13582 value: 'http://a.example/';
13583 specified: true;
13584 }
13585 }
13586 }
13587 @@XMLTest:
13588 @@@QName: xp.name.doctypedecl.stag.etag.names.1.0.4.test
13589 @@@DEnt:
13590 @@@@test:value:
13591 <?xml version="1.0"?>
13592 <!DOCTYPE a:b>
13593 <a:b>
13594 </a:b>
13595 @@@c:erred: <[xp|nsc-prefix-declared]> { (3, 1)..(3, 5); }
13596 @@XMLTest:
13597 @@@QName: xp.name.doctypedecl.stag.etag.names.1.1.4.test
13598 @@@DEnt:
13599 @@@@test:value:
13600 <?xml version="1.1"?>
13601 <!DOCTYPE a:b>
13602 <a:b>
13603 </a:b>
13604 @@@c:erred: <[xp|nsc-prefix-declared]> { (3, 1)..(3, 5); }
13605 @@XMLTest:
13606 @@@QName: xp.name.emptyelemtag.1.0.2.test
13607 @@@DEnt:
13608 @@@@test:value:
13609 <?xml version="1.0"?>
13610 <$u3001$u3002/>
13611 @@@c:erred: <[xp|wf-invalid-character-in-node-name]> { (2, 2)..(2, 3); }
13612 @@XMLTest:
13613 @@@QName: xp.name.emptyelemtag.1.1.2.test
13614 @@@DEnt:
13615 @@@@test:value:
13616 <?xml version="1.1"?>
13617 <$u3001$u3002/>
13618 @@@test:domTree:
13619 document {
13620 xml-version: '1.1';
13621 element {
13622 node-name: U+3001 U+3002;
13623 }
13624 }
13625 @@XMLTest:
13626 @@@QName: xp.name.emptyelemtag.1.0.3.test
13627 @@@DEnt:
13628 @@@@test:value:
13629 <?xml version="1.0"?>
13630 <$u3005b/>
13631 @@@c:erred: <[xp|wf-invalid-character-in-node-name]> { (2, 2)..(2, 3); }
13632 @@XMLTest:
13633 @@@QName: xp.name.emptyelemtag.1.1.3.test
13634 @@@DEnt:
13635 @@@@test:value:
13636 <?xml version="1.1"?>
13637 <$u3005b/>
13638 @@@test:domTree:
13639 document {
13640 xml-version: '1.1';
13641 element {
13642 node-name: U+3005 'b';
13643 }
13644 }
13645 @@XMLTest:
13646 @@@QName: xp.name.emptyelemtag.names.1.0.1.test
13647 @@@DEnt:
13648 @@@@test:value:
13649 <?xml version="1.0"?>
13650 <a:b/>
13651 @@@c:erred: <[xp|nsc-prefix-declared]> { (2, 1)..(2, 6); }
13652 @@XMLTest:
13653 @@@QName: xp.name.emptyelemtag.names.1.1.1.test
13654 @@@DEnt:
13655 @@@@test:value:
13656 <?xml version="1.1"?>
13657 <a:b/>
13658 @@@c:erred: <[xp|nsc-prefix-declared]> { (2, 1)..(2, 6); }
13659 @@XMLTest:
13660 @@@QName: xp.name.attr.1.0.2.test
13661 @@@DEnt:
13662 @@@@test:value:
13663 <?xml version="1.0"?>
13664 <a $u3001$u3002=""/>
13665 @@@c:erred: <[xp|wf-invalid-character-in-node-name]> { (2, 4)..(2, 5); }
13666 @@XMLTest:
13667 @@@QName: xp.name.attr.1.1.2.test
13668 @@@DEnt:
13669 @@@@test:value:
13670 <?xml version="1.1"?>
13671 <a $u3001$u3002=""/>
13672 @@@test:domTree:
13673 document {
13674 xml-version: '1.1';
13675 element {
13676 attribute {
13677 node-name: U+3001 U+3002;
13678 }
13679 }
13680 }
13681 @@XMLTest:
13682 @@@QName: xp.name.attr.1.0.3.test
13683 @@@DEnt:
13684 @@@@test:value:
13685 <?xml version="1.0"?>
13686 <a $u3005b=""/>
13687 @@@c:erred: <[xp|wf-invalid-character-in-node-name]> { (2, 4)..(2, 5); }
13688 @@XMLTest:
13689 @@@QName: xp.name.attr.1.1.3.test
13690 @@@DEnt:
13691 @@@@test:value:
13692 <?xml version="1.1"?>
13693 <a $u3005b=""/>
13694 @@@test:domTree:
13695 document {
13696 xml-version: '1.1';
13697 element {
13698 attribute {
13699 node-name: U+3005 'b';
13700 }
13701 }
13702 }
13703 @@XMLTest:
13704 @@@QName: xp.name.attr.names.1.0.1.test
13705 @@@DEnt:
13706 @@@@test:value:
13707 <?xml version="1.0"?>
13708 <a a:b=""/>
13709 @@@c:erred: <[xp|nsc-prefix-declared]> { (2, 1)..(2, 11); }
13710 @@XMLTest:
13711 @@@QName: xp.name.attr.names.1.1.1.test
13712 @@@DEnt:
13713 @@@@test:value:
13714 <?xml version="1.1"?>
13715 <a a:b=""/>
13716 @@@c:erred: <[xp|nsc-prefix-declared]> { (2, 1)..(2, 11); }
13717 @@XMLTest:
13718 @@@QName: xp.name.attr.names.1.0.2.test
13719 @@@DEnt:
13720 @@@@test:value:
13721 <?xml version="1.0"?>
13722 <a :ab=""/>
13723 @@@c:erred: <[xp|nswf-legal-qname]> { (2, 4)..(2, 6); }
13724 @@@c:erred: <[xp|nsc-prefix-declared]> { }
13725 @@XMLTest:
13726 @@@QName: xp.name.attr.names.1.1.2.test
13727 @@@DEnt:
13728 @@@@test:value:
13729 <?xml version="1.1"?>
13730 <a :ab=""/>
13731 @@@c:erred: <[xp|nswf-legal-qname]> { (2, 4)..(2, 6); }
13732 @@@c:erred: <[xp|nsc-prefix-declared]> { }
13733 @@XMLTest:
13734 @@@QName: xp.name.attlist.1.0.2.test
13735 @@@DEnt:
13736 @@@@test:value:
13737 <?xml version="1.0"?>
13738 <!DOCTYPE p [
13739 <!NOTATION $u3001$u3002 SYSTEM "n">
13740 <!ATTLIST $u3001$u3002
13741 $u3001$u3002
13742 NOTATION
13743 ($u3001$u3002)
13744 #IMPLIED>
13745 ]><p/>
13746 @@@c:erred: <[xp|wf-invalid-character-in-node-name]> { (3, 12)..(3, 13); }
13747 @@@c:erred: <[xp|wf-invalid-character-in-node-name]> { (4, 11)..(4, 12); }
13748 @@@c:erred: <[xp|wf-invalid-character-in-node-name]> { (5, 1)..(5, 2); }
13749 @@@c:erred: <[xp|wf-invalid-character-in-node-name]> { (7, 2)..(7, 3); }
13750 @@XMLTest:
13751 @@@QName: xp.name.attlist.1.1.2.test
13752 @@@DEnt:
13753 @@@@test:value:
13754 <?xml version="1.1"?>
13755 <!DOCTYPE p [
13756 <!NOTATION $u3001$u3002 SYSTEM "n">
13757 <!ATTLIST $u3001$u3002
13758 $u3001$u3002
13759 NOTATION
13760 ($u3001$u3002)
13761 #IMPLIED>
13762 ]><p/>
13763 @@@test:domTree:
13764 document {
13765 xml-version: '1.1';
13766 document-type {
13767 notation {
13768 node-name: U+3001 U+3002;
13769 }
13770 element-type-definition {
13771 node-name: U+3001 U+3002;
13772 attribute-definition {
13773 node-name: U+3001 U+3002;
13774 allowed-tokens: DOMStringList (U+3001 U+3002);
13775 }
13776 }
13777 }
13778 element { }
13779 }
13780 @@XMLTest:
13781 @@@QName: xp.name.attlist.1.0.3.test
13782 @@@DEnt:
13783 @@@@test:value:
13784 <?xml version="1.0"?>
13785 <!DOCTYPE p [
13786 <!NOTATION $u3005b SYSTEM "n">
13787 <!ATTLIST $u3005b
13788 $u3005b
13789 NOTATION
13790 ($u3005b)
13791 #IMPLIED>
13792 ]><p/>
13793 @@@c:erred: <[xp|wf-invalid-character-in-node-name]> { (3, 12)..(3, 13); }
13794 @@@c:erred: <[xp|wf-invalid-character-in-node-name]> { (4, 11)..(4, 12); }
13795 @@@c:erred: <[xp|wf-invalid-character-in-node-name]> { (5, 1)..(5, 2); }
13796 @@@c:erred: <[xp|wf-invalid-character-in-node-name]> { (7, 2)..(7, 3); }
13797 @@XMLTest:
13798 @@@QName: xp.name.attlist.1.1.3.test
13799 @@@DEnt:
13800 @@@@test:value:
13801 <?xml version="1.1"?>
13802 <!DOCTYPE p [
13803 <!NOTATION $u3005b SYSTEM "n">
13804 <!ATTLIST $u3005b
13805 $u3005b
13806 NOTATION
13807 ($u3005b)
13808 #IMPLIED>
13809 ]><p/>
13810 @@@test:domTree:
13811 document {
13812 xml-version: '1.1';
13813 document-type {
13814 notation {
13815 node-name: U+3005 'b';
13816 }
13817 element-type-definition {
13818 node-name: U+3005 'b';
13819 attribute-definition {
13820 node-name: U+3005 'b';
13821 allowed-tokens: DOMStringList (U+3005 'b');
13822 }
13823 }
13824 }
13825 element { }
13826 }
13827 @@XMLTest:
13828 @@@QName: xp.name.attlist.names.1.0.1.test
13829 @@@DEnt:
13830 @@@@test:value:
13831 <?xml version="1.0"?>
13832 <!DOCTYPE p [
13833 <!NOTATION a:b SYSTEM "n">
13834 <!ATTLIST a:b
13835 a:b
13836 NOTATION
13837 (a:b)
13838 #IMPLIED>
13839 ]><p/>
13840 @@@c:erred: <[xp|nswf-legal-ncname]> { (3, 12)..(3, 14); }
13841 @@@c:erred: <[xp|nswf-legal-ncname]> { (7, 2)..(7, 4); }
13842 @@XMLTest:
13843 @@@QName: xp.name.attlist.names.1.1.1.test
13844 @@@DEnt:
13845 @@@@test:value:
13846 <?xml version="1.1"?>
13847 <!DOCTYPE p [
13848 <!NOTATION a:b SYSTEM "n">
13849 <!ATTLIST a:b
13850 a:b
13851 NOTATION
13852 (a:b)
13853 #IMPLIED>
13854 ]><p/>
13855 @@@c:erred: <[xp|nswf-legal-ncname]> { (3, 12)..(3, 14); }
13856 @@@c:erred: <[xp|nswf-legal-ncname]> { (7, 2)..(7, 4); }
13857 @@XMLTest:
13858 @@@QName: xp.name.attlist.names.1.0.2.test
13859 @@@DEnt:
13860 @@@@test:value:
13861 <?xml version="1.0"?>
13862 <!DOCTYPE p [
13863 <!NOTATION :ab SYSTEM "n">
13864 <!ATTLIST :ab
13865 :ab
13866 NOTATION
13867 (:ab)
13868 #IMPLIED>
13869 ]><p/>
13870 @@@c:erred: <[xp|nswf-legal-ncname]> { (3, 12)..(3, 14); }
13871 @@@c:erred: <[xp|nswf-legal-qname]> { (4, 11)..(4, 13); }
13872 @@@c:erred: <[xp|nswf-legal-qname]> { (5, 1)..(5, 3); }
13873 @@@c:erred: <[xp|nswf-legal-ncname]> { (7, 2)..(7, 4); }
13874 @@XMLTest:
13875 @@@QName: xp.name.attlist.names.1.1.2.test
13876 @@@DEnt:
13877 @@@@test:value:
13878 <?xml version="1.1"?>
13879 <!DOCTYPE p [
13880 <!NOTATION :ab SYSTEM "n">
13881 <!ATTLIST :ab
13882 :ab
13883 NOTATION
13884 (:ab)
13885 #IMPLIED>
13886 ]><p/>
13887 @@@c:erred: <[xp|nswf-legal-ncname]> { (3, 12)..(3, 14); }
13888 @@@c:erred: <[xp|nswf-legal-qname]> { (4, 11)..(4, 13); }
13889 @@@c:erred: <[xp|nswf-legal-qname]> { (5, 1)..(5, 3); }
13890 @@@c:erred: <[xp|nswf-legal-ncname]> { (7, 2)..(7, 4); }
13891 @@XMLTest:
13892 @@@QName: xp.name.gent.1.0.2.test
13893 @@@DEnt:
13894 @@@@test:value:
13895 <?xml version="1.0"?>
13896 <!DOCTYPE p [
13897 <!ENTITY $u3001$u3002 "n">
13898 ]>
13899 <p a="&$u3001$u3002;">
13900 &$u3001$u3002;
13901 </p>
13902 @@@c:erred: <[xp|wf-invalid-character-in-node-name]> { (3, 10)..(3, 11); }
13903 @@@c:erred: <[xp|wf-invalid-character-in-node-name]> { (5, 8)..(5, 9); }
13904 @@@c:erred: <[xp|wf-invalid-character-in-node-name]> { (6, 2)..(6, 3); }
13905 @@XMLTest:
13906 @@@QName: xp.name.ger.1.1.2.test
13907 @@@DEnt:
13908 @@@@test:value:
13909 <?xml version="1.1"?>
13910 <!DOCTYPE p [
13911 <!ENTITY $u3001$u3002 "n">
13912 ]>
13913 <p a="&$u3001$u3002;">$
13914 &$u3001$u3002;$
13915 </p>
13916 @@@test:domTree:
13917 document {
13918 xml-version: '1.1';
13919 document-type {
13920 general-entity {
13921 node-name: U+3001 U+3002;
13922 }
13923 }
13924 element {
13925 attribute {
13926 node-name: 'a';
13927 general-entity-reference {
13928 node-name: U+3001 U+3002;
13929 }
13930 }
13931 general-entity-reference {
13932 node-name: U+3001 U+3002;
13933 }
13934 }
13935 }
13936 @@XMLTest:
13937 @@@QName: xp.name.ger.1.0.3.test
13938 @@@DEnt:
13939 @@@@test:value:
13940 <?xml version="1.0"?>
13941 <!DOCTYPE p [
13942 <!ENTITY $u3005b "n">
13943 ]>
13944 <p a="&$u3005b;">
13945 &$u3005b;
13946 </p>
13947 @@@c:erred: <[xp|wf-invalid-character-in-node-name]> { (3, 10)..(3, 11); }
13948 @@@c:erred: <[xp|wf-invalid-character-in-node-name]> { (5, 8)..(5, 9); }
13949 @@@c:erred: <[xp|wf-invalid-character-in-node-name]> { (6, 2)..(6, 3); }
13950 @@XMLTest:
13951 @@@QName: xp.name.ger.1.1.3.test
13952 @@@DEnt:
13953 @@@@test:value:
13954 <?xml version="1.1"?>
13955 <!DOCTYPE p [
13956 <!ENTITY $u3005b "n">
13957 ]>
13958 <p a="&$u3005b;">$
13959 &$u3005b;$
13960 </p>
13961 @@@test:domTree:
13962 document {
13963 xml-version: '1.1';
13964 document-type {
13965 general-entity {
13966 node-name: U+3005 'b';
13967 }
13968 }
13969 element {
13970 attribute {
13971 node-name: 'a';
13972 general-entity-reference {
13973 node-name: U+3005 'b';
13974 }
13975 }
13976 general-entity-reference {
13977 node-name: U+3005 'b';
13978 }
13979 }
13980 }
13981 @@XMLTest:
13982 @@@QName: xp.name.ger.names.1.0.1.test
13983 @@@DEnt:
13984 @@@@test:value:
13985 <?xml version="1.0"?>
13986 <!DOCTYPE p [
13987 <!ENTITY a:b "n">
13988 ]>
13989 <p a="&a:b;">
13990 &a:b;
13991 </p>
13992 @@@c:erred: <[xp|nswf-legal-ncname]> { (3, 10)..(3, 12); }
13993 @@@c:erred: <[xp|nswf-legal-ncname]> { (5, 8)..(5, 10); }
13994 @@@c:erred: <[xp|nswf-legal-ncname]> { (6, 2)..(6, 4); }
13995 @@XMLTest:
13996 @@@QName: xp.name.ger.names.1.1.1.test
13997 @@@DEnt:
13998 @@@@test:value:
13999 <?xml version="1.1"?>
14000 <!DOCTYPE p [
14001 <!ENTITY a:b "n">
14002 ]>
14003 <p a="&a:b;">
14004 &a:b;
14005 </p>
14006 @@@c:erred: <[xp|nswf-legal-ncname]> { (3, 10)..(3, 12); }
14007 @@@c:erred: <[xp|nswf-legal-ncname]> { (5, 8)..(5, 10); }
14008 @@@c:erred: <[xp|nswf-legal-ncname]> { (6, 2)..(6, 4); }
14009 @@XMLTest:
14010 @@@QName: xp.name.ndata.1.0.2.test
14011 @@@DEnt:
14012 @@@@test:value:
14013 <?xml version="1.0"?>
14014 <!DOCTYPE p [
14015 <!NOTATION $u3001$u3002 SYSTEM "n">
14016 <!ENTITY e SYSTEM "s" NDATA $u3001$u3002>
14017 ]><p/>
14018 @@@c:erred: <[xp|wf-invalid-character-in-node-name]> { (3, 12)..(3, 13); }
14019 @@@c:erred: <[xp|wf-invalid-character-in-node-name]> { (4, 29)..(4, 30); }
14020 @@XMLTest:
14021 @@@QName: xp.name.ndata.1.1.2.test
14022 @@@DEnt:
14023 @@@@test:value:
14024 <?xml version="1.1"?>
14025 <!DOCTYPE p [
14026 <!NOTATION $u3001$u3002 SYSTEM "n">
14027 <!ENTITY e SYSTEM "s" NDATA $u3001$u3002>
14028 ]><p/>
14029 @@@test:domTree:
14030 document {
14031 xml-version: '1.1';
14032 document-type {
14033 notation {
14034 node-name: U+3001 U+3002;
14035 }
14036 general-entity {
14037 node-name: 'e';
14038 notation-name: U+3001 U+3002;
14039 }
14040 }
14041 element { }
14042 }
14043 @@XMLTest:
14044 @@@QName: xp.name.ndata.1.0.3.test
14045 @@@DEnt:
14046 @@@@test:value:
14047 <?xml version="1.0"?>
14048 <!DOCTYPE p [
14049 <!NOTATION $u3005b SYSTEM "n">
14050 <!ENTITY e SYSTEM "s" NDATA $u3005b>
14051 ]><p/>
14052 @@@c:erred: <[xp|wf-invalid-character-in-node-name]> { (3, 12)..(3, 13); }
14053 @@@c:erred: <[xp|wf-invalid-character-in-node-name]> { (4, 29)..(4, 30); }
14054 @@XMLTest:
14055 @@@QName: xp.name.ndata.1.1.3.test
14056 @@@DEnt:
14057 @@@@test:value:
14058 <?xml version="1.1"?>
14059 <!DOCTYPE p [
14060 <!NOTATION $u3005b SYSTEM "n">
14061 <!ENTITY e SYSTEM "s" NDATA $u3005b>
14062 ]><p/>
14063 @@@test:domTree:
14064 document {
14065 xml-version: '1.1';
14066 document-type {
14067 notation {
14068 node-name: U+3005 'b';
14069 }
14070 general-entity {
14071 node-name: 'e';
14072 notation-name: U+3005 'b';
14073 }
14074 }
14075 element { }
14076 }
14077 @@XMLTest:
14078 @@@QName: xp.name.ndata.names.1.0.1.test
14079 @@@DEnt:
14080 @@@@test:value:
14081 <?xml version="1.0"?>
14082 <!DOCTYPE p [
14083 <!NOTATION a:b SYSTEM "n">
14084 <!ENTITY e SYSTEM "s" NDATA a:b>
14085 ]><p/>
14086 @@@c:erred: <[xp|nswf-legal-ncname]> { (3, 12)..(3, 14); }
14087 @@@c:erred: <[xp|nswf-legal-ncname]> { (4, 29)..(4, 31); }
14088 @@XMLTest:
14089 @@@QName: xp.name.ndata.names.1.1.1.test
14090 @@@DEnt:
14091 @@@@test:value:
14092 <?xml version="1.1"?>
14093 <!DOCTYPE p [
14094 <!NOTATION a:b SYSTEM "n">
14095 <!ENTITY e SYSTEM "s" NDATA a:b>
14096 ]><p/>
14097 @@@c:erred: <[xp|nswf-legal-ncname]> { (3, 12)..(3, 14); }
14098 @@@c:erred: <[xp|nswf-legal-ncname]> { (4, 29)..(4, 31); }
14099
14100 @@enImplNote:
14101 @@@ddid: wf-invalid-character-in-node-name
14102 @@@@:
14103 {ISSUE::
14104 {P:: Tests required for:
14105
14106 - <CODE::Name> in element type declaration
14107
14108 - <CODE::Name> in model group
14109
14110 - <CODE::Name> in parameter entity declaration
14111
14112 - <CODE::Name> in parameter entity reference
14113
14114 }
14115 }
14116
14117 @@XMLTest:
14118 @@@QName: xp.NOTATION.1.test
14119 @@@DEnt:
14120 @@@@test:value:
14121 <!DOCTYPE p [
14122 <!NOTATION n SYSTEM "m">
14123 ]><p/>
14124 @@@test:domTree:
14125 document {
14126 document-type {
14127 notation {
14128 node-name: 'n';
14129 public-id: null;
14130 system-id: 'm';
14131 }
14132 }
14133 element { }
14134 }
14135 @@XMLTest:
14136 @@@QName: xp.NOTATION.2.test
14137 @@@DEnt:
14138 @@@@test:value:
14139 <!DOCTYPE p [
14140 <!NOTATION n PUBLIC "m">
14141 ]><p/>
14142 @@@test:domTree:
14143 document {
14144 document-type {
14145 notation {
14146 node-name: 'n';
14147 system-id: null;
14148 public-id: 'm';
14149 }
14150 }
14151 element { }
14152 }
14153 @@XMLTest:
14154 @@@QName: xp.NOTATION.3.test
14155 @@@DEnt:
14156 @@@@test:value:
14157 <!DOCTYPE p [
14158 <!NOTATION n PUBLIC "m" "l">
14159 ]><p/>
14160 @@@test:domTree:
14161 document {
14162 document-type {
14163 notation {
14164 node-name: 'n';
14165 public-id: 'm';
14166 system-id: 'l';
14167 }
14168 }
14169 element { }
14170 }
14171 @@XMLTest:
14172 @@@QName: xp.NOTATION.4.test
14173 @@@DEnt:
14174 @@@@test:value:
14175 <!DOCTYPE p [
14176 <!NOTATION n SYSTEM "m">
14177 <!NOTATION n SYSTEM "l">
14178 ]><p/>
14179 @@@c:erred: <[xp|vc-unique-notation-name]> { (3, 1)..(3, 24); }
14180 @@@test:domTree:
14181 document {
14182 document-type {
14183 notation {
14184 node-name: 'n';
14185 system-id: 'm';
14186 }
14187 }
14188 element { }
14189 }
14190
14191 @@XMLTest:
14192 @@@QName: xp.names.1.test
14193 @@@DEnt:
14194 @@@@test:value:
14195 <p xmlns="http://1.example/" a="b"/>
14196 @@@test:domTree:
14197 document {
14198 element {
14199 prefix: null;
14200 local-name: 'p';
14201 namespace-uri: 'http://1.example/';
14202 attribute {
14203 prefix: null;
14204 local-name: 'xmlns';
14205 namespace-uri: 'http://www.w3.org/2000/xmlns/';
14206 specified: true;
14207 }
14208 attribute {
14209 prefix: null;
14210 local-name: 'a';
14211 specified: true;
14212 }
14213 }
14214 }
14215 @@XMLTest:
14216 @@@QName: xp.names.2.test
14217 @@@DEnt:
14218 @@@@test:value:
14219 <p xmlns:a="http://1.example/" a="b" a:a="c"/>
14220 @@@test:domTree:
14221 document {
14222 element {
14223 prefix: null;
14224 local-name: 'p';
14225 namespace-uri: null;
14226 attribute {
14227 prefix: 'xmlns';
14228 local-name: 'a';
14229 namespace-uri: 'http://www.w3.org/2000/xmlns/';
14230 specified: true;
14231 }
14232 attribute {
14233 prefix: null;
14234 local-name: 'a';
14235 specified: true;
14236 }
14237 attribute {
14238 prefix: 'a';
14239 local-name: 'a';
14240 namespace-uri: 'http://1.example/';
14241 specified: true;
14242 }
14243 }
14244 }
14245 @@XMLTest:
14246 @@@QName: xp.names.3.test
14247 @@@DEnt:
14248 @@@@test:value:
14249 <a:p xmlns:a="http://1.example/" a="b" a:a="c"/>
14250 @@@test:domTree:
14251 document {
14252 element {
14253 prefix: 'a';
14254 local-name: 'p';
14255 namespace-uri: 'http://1.example/';
14256 attribute {
14257 prefix: 'xmlns';
14258 local-name: 'a';
14259 namespace-uri: 'http://www.w3.org/2000/xmlns/';
14260 specified: true;
14261 }
14262 attribute {
14263 prefix: null;
14264 local-name: 'a';
14265 specified: true;
14266 }
14267 attribute {
14268 prefix: 'a';
14269 local-name: 'a';
14270 namespace-uri: 'http://1.example/';
14271 specified: true;
14272 }
14273 }
14274 }
14275 @@XMLTest:
14276 @@@QName: xp.names.5.test
14277 @@@DEnt:
14278 @@@@test:value:
14279 <p xmlns:a="http://1.example/">$
14280 <a:q/>$
14281 </p>
14282 @@@test:domTree:
14283 document {
14284 element {
14285 prefix: null;
14286 local-name: 'p';
14287 namespace-uri: null;
14288 attribute {
14289 prefix: 'xmlns';
14290 local-name: 'a';
14291 namespace-uri: 'http://www.w3.org/2000/xmlns/';
14292 specified: true;
14293 }
14294 element {
14295 prefix: 'a';
14296 local-name: 'q';
14297 namespace-uri: 'http://1.example/';
14298 }
14299 }
14300 }
14301 @@XMLTest:
14302 @@@QName: xp.names.6.test
14303 @@@DEnt:
14304 @@@@test:value:
14305 <p xmlns:a="http://1.example/">$
14306 <q a:b="c"/>$
14307 </p>
14308 @@@test:domTree:
14309 document {
14310 element {
14311 prefix: null;
14312 local-name: 'p';
14313 namespace-uri: null;
14314 attribute {
14315 prefix: 'xmlns';
14316 local-name: 'a';
14317 namespace-uri: 'http://www.w3.org/2000/xmlns/';
14318 specified: true;
14319 }
14320 element {
14321 prefix: null;
14322 local-name: 'q';
14323 namespace-uri: null;
14324 attribute {
14325 prefix: 'a';
14326 local-name: 'b';
14327 namespace-uri: 'http://1.example/';
14328 specified: true;
14329 }
14330 }
14331 }
14332 }
14333 @@XMLTest:
14334 @@@QName: xp.names.7.test
14335 @@@DEnt:
14336 @@@@test:value:
14337 <p xmlns:a="http://1.example/">$
14338 <q a:b="c" xmlns:a="http://2.example/"/>$
14339 </p>
14340 @@@test:domTree:
14341 document {
14342 element {
14343 prefix: null;
14344 local-name: 'p';
14345 namespace-uri: null;
14346 attribute {
14347 prefix: 'xmlns';
14348 local-name: 'a';
14349 namespace-uri: 'http://www.w3.org/2000/xmlns/';
14350 specified: true;
14351 }
14352 element {
14353 prefix: null;
14354 local-name: 'q';
14355 namespace-uri: null;
14356 attribute {
14357 prefix: 'a';
14358 local-name: 'b';
14359 namespace-uri: 'http://2.example/';
14360 specified: true;
14361 }
14362 attribute {
14363 prefix: 'xmlns';
14364 local-name: 'a';
14365 namespace-uri: 'http://www.w3.org/2000/xmlns/';
14366 specified: true;
14367 }
14368 }
14369 }
14370 }
14371
14372 @@XMLTest:
14373 @@@QName: xp.names.undeclare.1.test
14374 @@@DEnt:
14375 @@@@test:value:
14376 <p xmlns="http://1.example/">$
14377 <q xmlns="">$
14378 <r xmlns="http://2.example/"/>$
14379 </q>$
14380 </p>
14381 @@@test:domTree:
14382 document {
14383 element {
14384 prefix: null;
14385 local-name: 'p';
14386 namespace-uri: 'http://1.example/';
14387 attribute {
14388 prefix: null;
14389 local-name: 'xmlns';
14390 namespace-uri: 'http://www.w3.org/2000/xmlns/';
14391 specified: true;
14392 }
14393 element {
14394 prefix: null;
14395 local-name: 'q';
14396 namespace-uri: null;
14397 attribute {
14398 prefix: null;
14399 local-name: 'xmlns';
14400 namespace-uri: 'http://www.w3.org/2000/xmlns/';
14401 specified: true;
14402 }
14403 element {
14404 prefix: null;
14405 local-name: 'r';
14406 namespace-uri: 'http://2.example/';
14407 attribute {
14408 prefix: null;
14409 local-name: 'xmlns';
14410 namespace-uri: 'http://www.w3.org/2000/xmlns/';
14411 specified: true;
14412 }
14413 }
14414 }
14415 }
14416 }
14417
14418 @@XMLTest:
14419 @@@QName: xp.names.undeclare.1.0.1.test
14420 @@@DEnt:
14421 @@@@test:value:
14422 <?xml version="1.0"?>
14423 <a:p xmlns:a="http://1.example/">$
14424 <q xmlns:a="">$
14425 <a:r xmlns:a="http://2.example/"/>$
14426 </q>$
14427 </a:p>
14428 @@@c:erred: <[xp|nswf-empty-namespace-name]> { (2, 34)..(2, 47); }
14429 @@XMLTest:
14430 @@@QName: xp.names.undeclare.1.1.1.test
14431 @@@DEnt:
14432 @@@@test:value:
14433 <?xml version="1.1"?>
14434 <a:p xmlns:a="http://1.example/">$
14435 <q xmlns:a="">$
14436 <a:r xmlns:a="http://2.example/"/>$
14437 </q>$
14438 </a:p>
14439 @@@test:domTree:
14440 document {
14441 element {
14442 prefix: 'a';
14443 local-name: 'p';
14444 namespace-uri: 'http://1.example/';
14445 attribute {
14446 prefix: 'xmlns';
14447 local-name: 'a';
14448 namespace-uri: 'http://www.w3.org/2000/xmlns/';
14449 specified: true;
14450 }
14451 element {
14452 prefix: null;
14453 local-name: 'q';
14454 namespace-uri: null;
14455 attribute {
14456 prefix: 'xmlns';
14457 local-name: 'a';
14458 namespace-uri: 'http://www.w3.org/2000/xmlns/';
14459 specified: true;
14460 }
14461 element {
14462 prefix: 'a';
14463 local-name: 'r';
14464 namespace-uri: 'http://2.example/';
14465 attribute {
14466 prefix: 'xmlns';
14467 local-name: 'a';
14468 namespace-uri: 'http://www.w3.org/2000/xmlns/';
14469 specified: true;
14470 }
14471 }
14472 }
14473 }
14474 }
14475 @@XMLTest:
14476 @@@QName: xp.names.undeclare.1.1.2.test
14477 @@@DEnt:
14478 @@@@test:value:
14479 <?xml version="1.1"?>
14480 <a:p xmlns:a="http://1.example/">$
14481 <q xmlns:a="">$
14482 <a:r/>$
14483 </q>$
14484 </a:p>
14485 @@@c:erred: <[xp|nsc-prefix-declared]> { (2, 48)..(2, 53); }
14486
14487 @@XMLTest:
14488 @@@QName: xp.names.xml.prefix.1.test
14489 @@@DEnt:
14490 @@@@test:value:
14491 <a xmlns:xml="http://www.w3.org/XML/1998/namespace"/>
14492 @@@test:domTree:
14493 document {
14494 element {
14495 attribute {
14496 prefix: 'xmlns';
14497 local-name: 'xml';
14498 namespace-uri: 'http://www.w3.org/2000/xmlns/';
14499 }
14500 }
14501 }
14502 @@XMLTest:
14503 @@@QName: xp.names.xml.prefix.2.test
14504 @@@DEnt:
14505 @@@@test:value:
14506 <a xmlns:xml="a"/>
14507 @@@c:erred: <[xp|nsc-reserved-prefix-xml]> { (1, 1)..(1, 18); }
14508 @@XMLTest:
14509 @@@QName: xp.names.xml.prefix.3.test
14510 @@@DEnt:
14511 @@@@test:value:
14512 <a xmlns:a="http://www.w3.org/XML/1998/namespace"
14513 />
14514 @@@c:erred: <[xp|nsc-reserved-namespace-name-xml]> { (1, 1)..(2, 2); }
14515 @@XMLTest:
14516 @@@QName: xp.names.xml.prefix.4.test
14517 @@@DEnt:
14518 @@@@test:value:
14519 <a xml:lang="ja"/>
14520 @@@test:domTree:
14521 document {
14522 element {
14523 attribute {
14524 prefix: 'xml';
14525 local-name: 'lang';
14526 namespace-uri: 'http://www.w3.org/XML/1998/namespace';
14527 }
14528 }
14529 }
14530
14531 @@XMLTest:
14532 @@@QName: xp.names.prefix.declared.1.test
14533 @@@DEnt:
14534 @@@@test:value:
14535 <!DOCTYPE a [
14536 <!ATTLIST a
14537 b:c CDATA "d"
14538 >
14539 ]>
14540 <a/>
14541 @@@c:erred: <[xp|nsc-prefix-declared]> { (6, 1)..(6, 4); }
14542
14543 @@XMLTest:
14544 @@@QName: xp.names.xmlns.reserved.1.test
14545 @@@DEnt:
14546 @@@@test:value:
14547 <a xmlns:xmlns="http://www.w3.org/2000/xmlns/"
14548 />
14549 @@@c:erred: <[xp|nsc-reserved-prefix-xmlns]> { (1, 1)..(2, 2); }
14550 @@@c:erred: <[xp|nsc-reserved-namespace-name-xmlns]> { (1, 1)..(2, 2); }
14551 @@XMLTest:
14552 @@@QName: xp.names.xmlns.reserved.2.test
14553 @@@DEnt:
14554 @@@@test:value:
14555 <a xmlns:xmlns="a"
14556 />
14557 @@@c:erred: <[xp|nsc-reserved-prefix-xmlns]> { (1, 1)..(2, 2); }
14558 @@XMLTest:
14559 @@@QName: xp.names.xmlns.reserved.3.test
14560 @@@DEnt:
14561 @@@@test:value:
14562 <a xmlns:a="http://www.w3.org/2000/xmlns/"
14563 />
14564 @@@c:erred: <[xp|nsc-reserved-namespace-name-xmlns]> { (1, 1)..(2, 2); }
14565
14566 @@XMLTest:
14567 @@@QName: xp.names.default.1.test
14568 @@@DEnt:
14569 @@@@test:value:
14570 <!DOCTYPE a [
14571 <!ATTLIST a
14572 xmlns CDATA "http://1.example/">
14573 ]>
14574 <a/>
14575 @@@test:domTree:
14576 document {
14577 document-type {
14578 element-type-definition {
14579 node-name: 'a';
14580 attribute-definition {
14581 node-name: 'xmlns';
14582 node-value: 'http://1.example/';
14583 }
14584 }
14585 }
14586 element {
14587 prefix: null;
14588 local-name: 'a';
14589 namespace-uri: 'http://1.example/';
14590 attribute {
14591 prefix: null;
14592 local-name: 'xmlns';
14593 namespace-uri: 'http://www.w3.org/2000/xmlns/';
14594 value: 'http://1.example/';
14595 specified: false;
14596 }
14597 }
14598 }
14599 @@XMLTest:
14600 @@@QName: xp.names.default.2.test
14601 @@@DEnt:
14602 @@@@test:value:
14603 <!DOCTYPE a [
14604 <!ATTLIST a
14605 xmlns CDATA "http://1.example/">
14606 ]>
14607 <a xmlns="http://2.example/"/>
14608 @@@test:domTree:
14609 document {
14610 document-type {
14611 element-type-definition {
14612 node-name: 'a';
14613 attribute-definition {
14614 node-name: 'xmlns';
14615 node-value: 'http://1.example/';
14616 }
14617 }
14618 }
14619 element {
14620 prefix: null;
14621 local-name: 'a';
14622 namespace-uri: 'http://2.example/';
14623 attribute {
14624 prefix: null;
14625 local-name: 'xmlns';
14626 namespace-uri: 'http://www.w3.org/2000/xmlns/';
14627 value: 'http://2.example/';
14628 specified: true;
14629 }
14630 }
14631 }
14632 @@XMLTest:
14633 @@@QName: xp.names.default.3.test
14634 @@@DEnt:
14635 @@@@test:value:
14636 <!DOCTYPE b:a [
14637 <!ATTLIST b:a
14638 xmlns:b CDATA "http://1.example/">
14639 ]>
14640 <b:a/>
14641 @@@test:domTree:
14642 document {
14643 document-type {
14644 element-type-definition {
14645 node-name: 'b:a';
14646 attribute-definition {
14647 node-name: 'xmlns:b';
14648 node-value: 'http://1.example/';
14649 }
14650 }
14651 }
14652 element {
14653 prefix: 'b';
14654 local-name: 'a';
14655 namespace-uri: 'http://1.example/';
14656 attribute {
14657 prefix: 'xmlns';
14658 local-name: 'b';
14659 namespace-uri: 'http://www.w3.org/2000/xmlns/';
14660 value: 'http://1.example/';
14661 specified: false;
14662 }
14663 }
14664 }
14665 @@XMLTest:
14666 @@@QName: xp.names.default.4.test
14667 @@@DEnt:
14668 @@@@test:value:
14669 <!DOCTYPE b:a [
14670 <!ATTLIST b:a
14671 xmlns:b CDATA "http://1.example/">
14672 ]>
14673 <b:a xmlns:b="http://2.example/"/>
14674 @@@test:domTree:
14675 document {
14676 document-type {
14677 element-type-definition {
14678 node-name: 'b:a';
14679 attribute-definition {
14680 node-name: 'xmlns:b';
14681 node-value: 'http://1.example/';
14682 }
14683 }
14684 }
14685 element {
14686 prefix: 'b';
14687 local-name: 'a';
14688 namespace-uri: 'http://2.example/';
14689 attribute {
14690 prefix: 'xmlns';
14691 local-name: 'b';
14692 namespace-uri: 'http://www.w3.org/2000/xmlns/';
14693 value: 'http://2.example/';
14694 specified: true;
14695 }
14696 }
14697 }
14698 @@XMLTest:
14699 @@@QName: xp.names.default.5.test
14700 @@@DEnt:
14701 @@@@test:value:
14702 <!DOCTYPE a [
14703 <!ATTLIST a
14704 xmlns:b CDATA "http://1.example/"
14705 b:c CDATA "http://1.example/">
14706 ]>
14707 <a xmlns:b="http://2.example/"/>
14708 @@@test:domTree:
14709 document {
14710 document-type {
14711 element-type-definition {
14712 node-name: 'a';
14713 attribute-definition {
14714 node-name: 'xmlns:b';
14715 text-content: 'http://1.example/';
14716 }
14717 attribute-definition {
14718 node-name: 'b:c';
14719 text-content: 'http://1.example/';
14720 }
14721 }
14722 }
14723 element {
14724 prefix: null;
14725 local-name: 'a';
14726 namespace-uri: null;
14727 attribute {
14728 prefix: 'xmlns';
14729 local-name: 'b';
14730 namespace-uri: 'http://www.w3.org/2000/xmlns/';
14731 value: 'http://2.example/';
14732 specified: true;
14733 }
14734 attribute {
14735 prefix: 'b';
14736 local-name: 'c';
14737 namespace-uri: 'http://2.example/';
14738 specified: false;
14739 }
14740 }
14741 }
14742
14743 @@XMLTest:
14744 @@@QName: xp.names.unique.1.test
14745 @@@DEnt:
14746 @@@@test:value:
14747 <a
14748 xmlns:b="http://2.example/"
14749 xmlns:c="http://2.example/"
14750 b:d=""
14751 c:d=""
14752 />
14753 @@@c:erred: <[xp|nswf-unique-att-spec-expanded-name]> { (1, 1)..(6, 2); }
14754 @@XMLTest:
14755 @@@QName: xp.names.unique.2.test
14756 @@@DEnt:
14757 @@@@test:value:
14758 <!DOCTYPE a [
14759 <!ATTLIST a
14760 c:d CDATA ""
14761 >
14762 ]>
14763 <a
14764 xmlns:b="http://2.example/"
14765 xmlns:c="http://2.example/"
14766 b:d=""
14767 />
14768 @@@c:erred: <[xp|nswf-unique-att-spec-expanded-name]> { (6, 1)..(10, 2);}
14769 @@XMLTest:
14770 @@@QName: xp.names.unique.3.test
14771 @@@DEnt:
14772 @@@@test:value:
14773 <!DOCTYPE a [
14774 <!ATTLIST a
14775 c:d CDATA "value1"
14776 >
14777 ]>
14778 <a
14779 xmlns:c="http://2.example/"
14780 c:d="value2"
14781 />
14782 @@@test:domTree:
14783 document {
14784 document-type { }
14785 element {
14786 attribute {
14787 prefix: 'xmlns';
14788 local-name: 'c';
14789 namespace-uri: 'http://www.w3.org/2000/xmlns/';
14790 specified: true;
14791 }
14792 attribute {
14793 prefix: 'c';
14794 local-name: 'd';
14795 namespace-uri: 'http://2.example/';
14796 value: 'value2';
14797 specified: true;
14798 }
14799 }
14800 }
14801
14802 @@XMLTest:
14803 @@@QName: xp.names.normalize.1.test
14804 @@@DEnt:
14805 @@@@test:value:
14806 <!DOCTYPE a [
14807 <!ATTLIST a
14808 xmlns NMTOKEN #IMPLIED
14809 >
14810 ]>
14811 <a xmlns=" "/>
14812 @@@test:domTree:
14813 document {
14814 document-type { }
14815 element {
14816 namespace-uri: null;
14817 prefix: null;
14818 local-name: 'a';
14819 }
14820 }
14821 @@XMLTest:
14822 @@@QName: xp.names.normalize.2.test
14823 @@@DEnt:
14824 @@@@test:value:
14825 <!DOCTYPE a [
14826 <!ATTLIST a
14827 xmlns NMTOKEN #IMPLIED
14828 >
14829 ]>
14830 <a xmlns=" about:blank "/>
14831 @@@test:domTree:
14832 document {
14833 document-type { }
14834 element {
14835 namespace-uri: 'about:blank';
14836 prefix: null;
14837 local-name: 'a';
14838 }
14839 }
14840 @@XMLTest:
14841 @@@QName: xp.names.normalize.3.test
14842 @@@DEnt:
14843 @@@@test:value:
14844 <!DOCTYPE a:a [
14845 <!ATTLIST a:a
14846 xmlns:a NMTOKEN #IMPLIED
14847 >
14848 ]>
14849 <a:a xmlns:a=" about:blank "/>
14850 @@@test:domTree:
14851 document {
14852 document-type { }
14853 element {
14854 namespace-uri: 'about:blank';
14855 prefix: 'a';
14856 local-name: 'a';
14857 }
14858 }
14859
14860 @@XMLTest:
14861 @@@QName: xp.no.baseuri.test
14862 @@@DEnt:
14863 @@@@test:value:
14864 <p/>
14865 @@@test:domTree:
14866 document {
14867 document-uri: null;
14868 base-uri: null;
14869 element {
14870 node-name: 'p';
14871 base-uri: null;
14872 }
14873 }
14874 @@XMLTest:
14875 @@@QName: xp.docuri.no.baseuri.test
14876 @@@DEnt:
14877 @@@@test:uri:
14878 http://www.example.com/
14879 @@@@test:value:
14880 <p/>
14881 @@@test:domTree:
14882 document {
14883 document-uri: 'http://www.example.com/';
14884 base-uri: 'http://www.example.com/';
14885 element {
14886 node-name: 'p';
14887 base-uri: 'http://www.example.com/';
14888 }
14889 }
14890 @@XMLTest:
14891 @@@QName: xp.docuri.baseuri.test
14892 @@@DEnt:
14893 @@@@test:uri:
14894 http://www.example.com/
14895 @@@@test:baseURI:
14896 ftp://ftp.example.com/
14897 @@@@test:value:
14898 <p/>
14899 @@@test:domTree:
14900 document {
14901 document-uri: 'http://www.example.com/';
14902 base-uri: 'ftp://ftp.example.com/';
14903 element {
14904 node-name: 'p';
14905 base-uri: 'ftp://ftp.example.com/';
14906 }
14907 }
14908 @@XMLTest:
14909 @@@QName: xp.doctype.baseuri.test
14910 @@@DEnt:
14911 @@@@test:uri:
14912 http://www.example.com/
14913 @@@@test:baseURI:
14914 ftp://ftp.example.com/
14915 @@@@test:value:
14916 <!DOCTYPE p SYSTEM "sys">
14917 <p/>
14918 @@@test:domTree:
14919 document {
14920 document-uri: 'http://www.example.com/';
14921 base-uri: 'ftp://ftp.example.com/';
14922 document-type {
14923 system-id: 'sys';
14924 manakai-declaration-base-uri: 'ftp://ftp.example.com/';
14925 }
14926 element {
14927 node-name: 'p';
14928 base-uri: 'ftp://ftp.example.com/';
14929 }
14930 }
14931 @@XMLTest:
14932 @@@QName: xp.entdecl.baseuri.test
14933 @@@DEnt:
14934 @@@@test:uri:
14935 http://www.example.com/
14936 @@@@test:baseURI:
14937 ftp://ftp.example.com/
14938 @@@@test:value:
14939 <!DOCTYPE p [
14940 <!ENTITY ent SYSTEM "ent">
14941 ]>
14942 <p/>
14943 @@@test:domTree:
14944 document {
14945 document-uri: 'http://www.example.com/';
14946 base-uri: 'ftp://ftp.example.com/';
14947 document-type {
14948 general-entity {
14949 node-name: 'ent';
14950 manakai-declaration-base-uri: 'ftp://ftp.example.com/';
14951 }
14952 }
14953 element {
14954 node-name: 'p';
14955 base-uri: 'ftp://ftp.example.com/';
14956 }
14957 }
14958 @@XMLTest:
14959 @@@QName: xp.notdecl.baseuri.test
14960 @@@DEnt:
14961 @@@@test:uri:
14962 http://www.example.com/
14963 @@@@test:baseURI:
14964 ftp://ftp.example.com/
14965 @@@@test:value:
14966 <!DOCTYPE p [
14967 <!NOTATION not SYSTEM "not">
14968 ]>
14969 <p/>
14970 @@@test:domTree:
14971 document {
14972 document-uri: 'http://www.example.com/';
14973 base-uri: 'ftp://ftp.example.com/';
14974 document-type {
14975 notation {
14976 node-name: 'not';
14977 manakai-declaration-base-uri: 'ftp://ftp.example.com/';
14978 }
14979 }
14980 element {
14981 node-name: 'p';
14982 base-uri: 'ftp://ftp.example.com/';
14983 }
14984 }
14985 @@XMLTest:
14986 @@@QName: xp.doctype.intsubset.pi.baseuri.test
14987 @@@DEnt:
14988 @@@@test:uri:
14989 http://www.example.com/
14990 @@@@test:baseURI:
14991 ftp://ftp.example.com/
14992 @@@@test:value:
14993 <!DOCTYPE p [
14994 <?pi?>
14995 ]>
14996 <p/>
14997 @@@test:domTree:
14998 document {
14999 document-uri: 'http://www.example.com/';
15000 base-uri: 'ftp://ftp.example.com/';
15001 document-type {
15002 pi {
15003 node-name: 'pi';
15004 base-uri: 'ftp://ftp.example.com/';
15005 }
15006 }
15007 element {
15008 node-name: 'p';
15009 base-uri: 'ftp://ftp.example.com/';
15010 }
15011 }
15012
15013 @@XMLTest:
15014 @@@QName: xp.xmlid.attr.test
15015 @@@DEnt:
15016 @@@@test:value:
15017 <p xml:id="idv"/>
15018 @@@cfg:xml-id: 1
15019 @@@test:domTree:
15020 document {
15021 element {
15022 attribute {
15023 node-name: 'xml:id';
15024 value: 'idv';
15025 schema-type-info: TypeInfo ('http://www.w3.org/TR/REC-xml',
15026 'ID');
15027 specified: true;
15028 }
15029 }
15030 }
15031 @@XMLTest:
15032 @@@QName: xp.xmlid.attr.disabled.test
15033 @@@DEnt:
15034 @@@@test:value:
15035 <p xml:id="idv"/>
15036 @@@cfg:xml-id: 0
15037 @@@test:domTree:
15038 document {
15039 element {
15040 attribute {
15041 node-name: 'xml:id';
15042 value: 'idv';
15043 schema-type-info: TypeInfo (null, null);
15044 specified: true;
15045 }
15046 }
15047 }
15048 @@XMLTest:
15049 @@@QName: xp.xmlid.attr.norm.test
15050 @@@DEnt:
15051 @@@@test:value:
15052 <p xml:id=" $u000Aidv "/>
15053 @@@cfg:xml-id: 1
15054 @@@test:domTree:
15055 document {
15056 element {
15057 attribute {
15058 node-name: 'xml:id';
15059 value: 'idv';
15060 schema-type-info: TypeInfo ('http://www.w3.org/TR/REC-xml',
15061 'ID');
15062 specified: true;
15063 }
15064 }
15065 }
15066 @@XMLTest:
15067 @@@QName: xp.xmlid.attr.norm.disabled.test
15068 @@@DEnt:
15069 @@@@test:value:
15070 <p xml:id=" $u000Aidv "/>
15071 @@@cfg:xml-id: 0
15072 @@@test:domTree:
15073 document {
15074 element {
15075 attribute {
15076 node-name: 'xml:id';
15077 value: ' idv ';
15078 schema-type-info: TypeInfo (null, null);
15079 specified: true;
15080 }
15081 }
15082 }
15083 @@XMLTest:
15084 @@@QName: xp.xmlid.attrdef.test
15085 @@@DEnt:
15086 @@@@test:value:
15087 <!DOCTYPE p [
15088 <!ATTLIST p xml:id ID #IMPLIED>
15089 ]>
15090 <p/>
15091 @@@cfg:xml-id: 1
15092 @@@test:domTree:
15093 document {
15094 document-type {
15095 element-type-definition {
15096 node-name: 'p';
15097 attribute-definition {
15098 node-name: 'xml:id';
15099 declared-type: const (ID_ATTR);
15100 default-type: const (IMPLIED_DEFAULT);
15101 }
15102 }
15103 }
15104 element { }
15105 }
15106 @@XMLTest:
15107 @@@QName: xp.xmlid.attrdef.disabled.test
15108 @@@DEnt:
15109 @@@@test:value:
15110 <!DOCTYPE p [
15111 <!ATTLIST p xml:id ID #IMPLIED>
15112 ]>
15113 <p/>
15114 @@@cfg:xml-id: 0
15115 @@@test:domTree:
15116 document {
15117 document-type {
15118 element-type-definition {
15119 node-name: 'p';
15120 attribute-definition {
15121 node-name: 'xml:id';
15122 declared-type: const (ID_ATTR);
15123 default-type: const (IMPLIED_DEFAULT);
15124 }
15125 }
15126 }
15127 element { }
15128 }
15129 @@XMLTest:
15130 @@@QName: xp.xmlid.attrdef.defaultattr.test
15131 @@@DEnt:
15132 @@@@test:value:
15133 <!DOCTYPE p [
15134 <!ATTLIST p xml:id ID "idv"><!-- invalid -->
15135 ]>
15136 <p/>
15137 @@@cfg:xml-id: 1
15138 @@@test:domTree:
15139 document {
15140 document-type {
15141 element-type-definition {
15142 node-name: 'p';
15143 attribute-definition {
15144 node-name: 'xml:id';
15145 declared-type: const (ID_ATTR);
15146 default-type: const (EXPLICIT_DEFAULT);
15147 node-value: 'idv';
15148 }
15149 }
15150 }
15151 element {
15152 attribute {
15153 node-name: 'xml:id';
15154 schema-type-info: TypeInfo ('http://www.w3.org/TR/REC-xml',
15155 'ID');
15156 value: 'idv';
15157 specified: false;
15158 }
15159 }
15160 }
15161 @@XMLTest:
15162 @@@QName: xp.xmlid.attrdef.defaultattr.disabled.test
15163 @@@DEnt:
15164 @@@@test:value:
15165 <!DOCTYPE p [
15166 <!ATTLIST p xml:id ID "idv"><!-- invalid -->
15167 ]>
15168 <p/>
15169 @@@cfg:xml-id: 0
15170 @@@test:domTree:
15171 document {
15172 document-type {
15173 element-type-definition {
15174 node-name: 'p';
15175 attribute-definition {
15176 node-name: 'xml:id';
15177 declared-type: const (ID_ATTR);
15178 default-type: const (EXPLICIT_DEFAULT);
15179 node-value: 'idv';
15180 }
15181 }
15182 }
15183 element {
15184 attribute {
15185 node-name: 'xml:id';
15186 schema-type-info: TypeInfo ('http://www.w3.org/TR/REC-xml',
15187 'ID');
15188 value: 'idv';
15189 specified: false;
15190 }
15191 }
15192 }
15193
15194 @@XMLTest:
15195 @@@QName: xp.general.entity.unused.1.test
15196 @@@DEnt:
15197 @@@@test:value:
15198 <!DOCTYPE p [
15199 <!ENTITY mylt "<">
15200 ]>
15201 <p/>
15202 @@@cfg:entity-replacement-tree: 0
15203 @@@test:domTree:
15204 document {
15205 document-type {
15206 general-entity {
15207 node-name: 'mylt';
15208 }
15209 }
15210 element { }
15211 }
15212 @@XMLTest:
15213 @@@QName: xp.general.entity.unused.2.test
15214 @@@DEnt:
15215 @@@@test:value:
15216 <!DOCTYPE p [
15217 <!ENTITY mylt "<">
15218 ]>
15219 <p/>
15220 @@@cfg:entity-replacement-tree: 1
15221 @@@c:erred: <[xp|wf-syntax-error]> { (1, 1)..(1, 2); }
15222
15223 @@XMLTest:
15224 @@@QName: xp.dtdecl.readonly.test
15225 @@@DEnt:
15226 @@@@test:value:
15227 <!DOCTYPE p>
15228 <p/>
15229 @@@test:domTree:
15230 document {
15231 document-type {
15232 manakai-read-only: true;
15233 }
15234 element {
15235 manakai-read-only: false;
15236 }
15237 manakai-read-only: false;
15238 }
15239 @@XMLTest:
15240 @@@QName: xp.entity.decl.readonly.1.test
15241 @@@DEnt:
15242 @@@@test:value:
15243 <!DOCTYPE p [
15244 <!ENTITY ent "val">
15245 ]>
15246 <p/>
15247 @@@cfg:entity-replacement-tree: 1
15248 @@@test:domTree:
15249 document {
15250 document-type {
15251 general-entity {
15252 node-name: 'ent';
15253 manakai-read-only: true;
15254 has-replacement-tree: true;
15255 }
15256 manakai-read-only: true;
15257 }
15258 element {
15259 manakai-read-only: false;
15260 }
15261 manakai-read-only: false;
15262 }
15263 @@XMLTest:
15264 @@@QName: xp.entity.decl.readonly.2.test
15265 @@@DEnt:
15266 @@@@test:value:
15267 <!DOCTYPE p [
15268 <!ENTITY ent "val">
15269 ]>
15270 <p/>
15271 @@@test:domTree:
15272 document {
15273 document-type {
15274 general-entity {
15275 node-name: 'ent';
15276 manakai-read-only: true;
15277 }
15278 manakai-read-only: true;
15279 }
15280 element {
15281 manakai-read-only: false;
15282 }
15283 manakai-read-only: false;
15284 }
15285 @@XMLTest:
15286 @@@QName: xp.notation.decl.readonly.test
15287 @@@DEnt:
15288 @@@@test:value:
15289 <!DOCTYPE p [
15290 <!NOTATION ent SYSTEM "val">
15291 ]>
15292 <p/>
15293 @@@test:domTree:
15294 document {
15295 document-type {
15296 notation {
15297 node-name: 'ent';
15298 manakai-read-only: true;
15299 }
15300 manakai-read-only: true;
15301 }
15302 element {
15303 manakai-read-only: false;
15304 }
15305 manakai-read-only: false;
15306 }
15307 @@XMLTest:
15308 @@@QName: xp.dtd.pi.readonly.test
15309 @@@DEnt:
15310 @@@@test:value:
15311 <!DOCTYPE p [
15312 <?pi content?>
15313 ]>
15314 <p/>
15315 @@@test:domTree:
15316 document {
15317 document-type {
15318 pi {
15319 node-name: 'pi';
15320 manakai-read-only: true;
15321 }
15322 manakai-read-only: true;
15323 }
15324 element {
15325 manakai-read-only: false;
15326 }
15327 manakai-read-only: false;
15328 }
15329 @@XMLTest:
15330 @@@QName: xp.dtd.attlist.decl.readonly.test
15331 @@@DEnt:
15332 @@@@test:value:
15333 <!DOCTYPE p [
15334 <!ATTLIST p
15335 attr CDATA #IMPLIED
15336 >
15337 ]>
15338 <p/>
15339 @@@test:domTree:
15340 document {
15341 document-type {
15342 element-type-definition {
15343 node-name: 'p';
15344 attribute-definition {
15345 node-name: 'attr';
15346 manakai-read-only: true;
15347 }
15348 manakai-read-only: true;
15349 }
15350 manakai-read-only: true;
15351 }
15352 element {
15353 manakai-read-only: false;
15354 }
15355 manakai-read-only: false;
15356 }
15357 @@XMLTest:
15358 @@@QName: xp.general.entity.reference.readonly.1.test
15359 @@@DEnt:
15360 @@@@test:value:
15361 <!DOCTYPE p [
15362 <!ENTITY ent "val">
15363 ]>
15364 <p>&ent;</p>
15365 @@@test:domTree:
15366 document {
15367 document-type {
15368 general-entity {
15369 node-name: 'ent';
15370 manakai-read-only: true;
15371 }
15372 manakai-read-only: true;
15373 }
15374 element {
15375 general-entity-reference {
15376 text {
15377 manakai-read-only: true;
15378 }
15379 manakai-read-only: true;
15380 }
15381 manakai-read-only: false;
15382 }
15383 manakai-read-only: false;
15384 }
15385 @@XMLTest:
15386 @@@QName: xp.general.entity.reference.readonly.2.test
15387 @@@DEnt:
15388 @@@@test:value:
15389 <!DOCTYPE p [
15390 <!ENTITY ent "val">
15391 ]>
15392 <p attr="&ent;"/>
15393 @@@test:domTree:
15394 document {
15395 document-type {
15396 general-entity {
15397 node-name: 'ent';
15398 manakai-read-only: true;
15399 }
15400 manakai-read-only: true;
15401 }
15402 element {
15403 attribute {
15404 node-name: 'attr';
15405 general-entity-reference {
15406 text {
15407 manakai-read-only: true;
15408 }
15409 manakai-read-only: true;
15410 }
15411 manakai-read-only: false;
15412 }
15413 manakai-read-only: false;
15414 }
15415 manakai-read-only: false;
15416 }
15417 @@XMLTest:
15418 @@@QName: xp.general.entity.reference.readonly.3.test
15419 @@@DEnt:
15420 @@@@test:value:
15421 <!DOCTYPE p [
15422 <!ENTITY ent1 "val">
15423 <!ENTITY ent2 "&ent1;">
15424 ]>
15425 <p>&ent2;</p>
15426 @@@test:domTree:
15427 document {
15428 document-type {
15429 general-entity {
15430 node-name: 'ent1';
15431 manakai-read-only: true;
15432 }
15433 general-entity {
15434 node-name: 'ent2';
15435 manakai-read-only: true;
15436 }
15437 manakai-read-only: true;
15438 }
15439 element {
15440 general-entity-reference {
15441 general-entity-reference {
15442 text {
15443 manakai-read-only: true;
15444 }
15445 manakai-read-only: true;
15446 }
15447 manakai-read-only: true;
15448 }
15449 manakai-read-only: false;
15450 }
15451 manakai-read-only: false;
15452 }
15453
15454 @@PerlDef:
15455 my $impl = $Message::DOM::ImplementationRegistry->get_dom_implementation ({
15456 'Core' => '3.0',
15457 'XML' => '3.0',
15458 'XMLVersion' => ['1.0', '1.1'],
15459 });
15460
15461 for my $test_data (@$TestData) {
15462 my $parser = <Class::ManakaiXMLParser>->new ($impl);
15463
15464 $test->start_new_test ($test_data->{uri});
15465 my $doc_ent = $test_data->{entity}->{$test_data->{root_uri}};
15466 my $not_ok;
15467
15468 ## -- DOM Configuration Parameters
15469
15470 my $pcfg = $parser->dom_config;
15471 for (keys %{$test_data->{dom_config}}) {
15472 $pcfg->set_parameter ($_ => $test_data->{dom_config}->{$_});
15473 }
15474
15475 $pcfg->set_parameter ('error-handler' => sub ($$) {
15476 my (undef, $err) = @_;
15477 my $err_type = $err->type;
15478 if ($test_data->{dom_error}->{$err_type}) {
15479 $test->assert_error_equals
15480 (actual_value => $err,
15481 expected_hash => shift @{$test_data->{dom_error}
15482 ->{$err_type}});
15483 } else { # Uncatched error
15484 warn $err;
15485 unless ($err->severity == <C::c|DOMError.SEVERITY_WARNING>) {
15486 $test->failure_comment ('Unexpected error |'.$err->type.'|');
15487 $not_ok = true;
15488 }
15489 }
15490 return true; # continue as far as possible
15491 });
15492
15493 ## -- Input Data
15494
15495 my $input = {string_data => \$doc_ent->{<Q::test:value>},
15496 system_id => $doc_ent->{<Q::test:uri>},
15497 base_uri => $doc_ent->{<Q::test:baseURI>}};
15498
15499 ## -- Test and Result
15500
15501 if ($test_data->{dom_tree}) { # Successful test
15502 my $doc;
15503 try {
15504 $doc = $parser->parse ($input);
15505 $test->assert_dom_tree_equals
15506 (actual_value => $doc,
15507 expected_hash => $test_data->{dom_tree});
15508 for (values %{$test_data->{dom_error}||{}}) {
15509 if (@$_) {
15510 $test->failure_comment
15511 (@$_.' |DOMError|s of type |'.
15512 $_->[0]->{type}->{value}.'| are not reported');
15513 $not_ok = true;
15514 }
15515 }
15516 $not_ok ? $test->not_ok : $test->ok;
15517 undef $doc;
15518 } catch Message::Util::IF::DTException with {
15519 require 'manakai/mndebug.pl';
15520 manakai::mndebug::dump ($doc);
15521 } catch Message::DOM::IF::LSException with {
15522 # not_ok
15523 } otherwise {
15524 my $err = shift;
15525 warn $err;
15526 $test->not_ok;
15527 };
15528 } else {
15529 my $doc;
15530 try {
15531 $doc = $parser->parse ($input);
15532 } catch Message::Util::IF::DTException with {
15533 require 'manakai/mndebug.pl';
15534 manakai::mndebug::dump ($doc);
15535 } catch Message::DOM::IF::LSException with {
15536 #
15537 } otherwise {
15538 my $err = shift;
15539 warn $err;
15540 $test->not_ok;
15541 };
15542 for (values %{$test_data->{dom_error}||{}}) {
15543 if (@$_) {
15544 $test->failure_comment
15545 (@$_.' |DOMError|s of type |'.
15546 $_->[0]->{type}->{value}.'| are not reported');
15547 $not_ok = true;
15548 }
15549 }
15550 $not_ok ? $test->not_ok : $test->ok;
15551 }
15552 }
15553
15554 @XMLTests:
15555 @@QName: xp.byteStream.tests
15556
15557 @@XMLTest:
15558 @@@QName: xp.labeled.utf-8.test
15559 @@@DEnt:
15560 @@@@xp:encoding: utf-8
15561 @@@@test:value:
15562 <p/>
15563 @@@test:domTree:
15564 document {
15565 input-encoding: 'utf-8';
15566 xml-encoding: null;
15567 element {
15568 node-name: 'p';
15569 }
15570 }
15571 @@XMLTest:
15572 @@@QName: xp.labeled.utf-16.be.test
15573 @@@DEnt:
15574 @@@@xp:encoding: utf-16
15575 @@@@test:value:
15576 $u00FE$u00FF$u0000<$u0000p$u0000/$u0000>
15577 @@@test:domTree:
15578 document {
15579 xml-encoding: null;
15580 input-encoding: 'utf-16';
15581 element {
15582 node-name: 'p';
15583 }
15584 }
15585 @@XMLTest:
15586 @@@QName: xp.labeled.utf-16.le.test
15587 @@@DEnt:
15588 @@@@xp:encoding: utf-16
15589 @@@@test:value:
15590 $u00FF$u00FE<$u0000p$u0000/$u0000>$u0000
15591 @@@test:domTree:
15592 document {
15593 xml-encoding: null;
15594 input-encoding: 'utf-16';
15595 element {
15596 node-name: 'p';
15597 }
15598 }
15599 @@XMLTest:
15600 @@@QName: xp.labeled.utf-16.nobom.test
15601 @@@DEnt:
15602 @@@@xp:encoding: utf-16
15603 @@@@test:value:
15604 <$u0000p$u0000/$u0000>$u0000
15605 @@@c:erred: <[xp|fatal-utf-16-no-bom]> {}
15606 @@XMLTest:
15607 @@@QName: xp.labeled.unknown.test
15608 @@@DEnt:
15609 @@@@xp:encoding: x-unknown-encoding-name
15610 @@@@test:value:
15611 <p/>
15612 @@@c:erred: <[xp|fatal-unprocessable-encoding]> {}
15613 @@XMLTest:
15614 @@@QName: xp.unlabeled.encdecl.unknown.test
15615 @@@DEnt:
15616 @@@@test:value:
15617 <?xml version="1.0" encoding="x-unknown-encoding-name"?>
15618 <p/>
15619 # @@@c:erred: <[xp|fatal-unprocessable-encoding]> {}
15620 @@@c:erred: <[xp|fatal-encoding-mismatch]> {}
15621 @@XMLTest:
15622 @@@QName: xp.labeled.utf-8.illegal.test
15623 @@@DEnt:
15624 @@@@xp:encoding: utf-8
15625 @@@@test:value:
15626 <p/$u00A0>
15627 @@@c:erred: <[xp|fatal-illegal-byte-sequence]> {}
15628 @@XMLTest:
15629 @@@QName: xp.unlabeled.encdecl.utf-8.illegal.test
15630 @@@DEnt:
15631 @@@@test:value:
15632 <?xml version="1.0" encoding="utf-8"?>
15633 <p/$u00A0>
15634 @@@c:erred: <[xp|fatal-illegal-byte-sequence]> {}
15635 @@XMLTest:
15636 @@@QName: xp.unlabeled.utf-8.illegal.test
15637 @@@DEnt:
15638 @@@@test:value:
15639 <p/$u00A0>
15640 @@@c:erred: <[xp|fatal-illegal-byte-sequence]> {}
15641 @@XMLTest:
15642 @@@QName: xp.mismatch.encdecl-as-utf-16.utf-8.test
15643 @@@DEnt:
15644 @@@@test:value:
15645 <?xml version="1.0" encoding="utf-16"?>
15646 <p/>
15647 @@@c:erred: <[xp|fatal-encoding-mismatch]> {}
15648 @@XMLTest:
15649 @@@QName: xp.mismatch.labeled-as-utf-16.utf-8.test
15650 @@@DEnt:
15651 @@@@xp:encoding: utf-16
15652 @@@@test:value:
15653 <p/>
15654 @@@c:erred: <[xp|fatal-utf-16-no-bom]> {}
15655 @@XMLTest:
15656 @@@QName: xp.labeled-as-utf-8.encdecl-utf-16.test
15657 @@@DEnt:
15658 @@@@xp:encoding: utf-8
15659 @@@@test:value:
15660 <?xml version="1.0" encoding="utf-16"?>
15661 <p/>
15662 @@@test:domTree:
15663 document {
15664 xml-encoding: 'utf-16';
15665 input-encoding: 'utf-8';
15666 element { }
15667 }
15668
15669 @@PerlDef:
15670 my $impl = $Message::DOM::ImplementationRegistry->get_dom_implementation ({
15671 'Core' => '3.0',
15672 'XML' => '3.0',
15673 'XMLVersion' => ['1.0', '1.1'],
15674 });
15675
15676 for my $test_data (@$TestData) {
15677 my $parser = <Class::ManakaiXMLParser>->new ($impl);
15678
15679 $test->start_new_test ($test_data->{uri});
15680 my $doc_ent = $test_data->{entity}->{$test_data->{root_uri}};
15681 my $not_ok;
15682
15683 ## -- DOM Configuration Parameters
15684
15685 my $pcfg = $parser->dom_config;
15686 for (keys %{$test_data->{dom_config}}) {
15687 $pcfg->set_parameter ($_ => $test_data->{dom_config}->{$_});
15688 }
15689
15690 $pcfg->set_parameter ('error-handler' => sub ($$) {
15691 my (undef, $err) = @_;
15692 my $err_type = $err->type;
15693 if ($test_data->{dom_error}->{$err_type}) {
15694 $test->assert_error_equals
15695 (actual_value => $err,
15696 expected_hash => shift @{$test_data->{dom_error}
15697 ->{$err_type}});
15698 } else { # Uncatched error
15699 warn $err;
15700 unless ($err->severity == <C::c|DOMError.SEVERITY_WARNING>) {
15701 $test->failure_comment ('Unexpected error |'.$err->type.'|');
15702 $not_ok = true;
15703 }
15704 }
15705 return false;
15706 });
15707
15708 ## -- Input Data
15709
15710 open my $byte, '<', \$doc_ent->{<Q::test|value>};
15711 my $input = {byte_stream => $byte,
15712 system_id => $doc_ent->{<Q::test:uri>},
15713 base_uri => $doc_ent->{<Q::test:baseURI>},
15714 encoding => $doc_ent->{<Q::xp|encoding>}};
15715
15716 ## -- Test and Result
15717
15718 if ($test_data->{dom_tree}) { # Successful test
15719 my $doc;
15720 try {
15721 $doc = $parser->parse ($input);
15722 $test->assert_dom_tree_equals
15723 (actual_value => $doc,
15724 expected_hash => $test_data->{dom_tree});
15725 for (values %{$test_data->{dom_error}||{}}) {
15726 if (@$_) {
15727 $test->failure_comment
15728 (@$_.' |DOMError|s of type |'.
15729 $_->[0]->{type}->{value}.'| are not reported');
15730 $not_ok = true;
15731 }
15732 }
15733 $not_ok ? $test->not_ok : $test->ok;
15734 undef $doc;
15735 } catch Message::Util::IF::DTException with {
15736 require 'manakai/mndebug.pl';
15737 manakai::mndebug::dump ($doc);
15738 } catch Message::DOM::IF::LSException with {
15739 # not_ok
15740 } otherwise {
15741 my $err = shift;
15742 warn $err;
15743 $test->not_ok;
15744 };
15745 } else {
15746 my $doc;
15747 try {
15748 $doc = $parser->parse ($input);
15749 } catch Message::Util::IF::DTException with {
15750 require 'manakai/mndebug.pl';
15751 manakai::mndebug::dump ($doc);
15752 } catch Message::DOM::IF::LSException with {
15753 #
15754 } otherwise {
15755 my $err = shift;
15756 warn $err;
15757 $test->not_ok;
15758 };
15759 for (values %{$test_data->{dom_error}||{}}) {
15760 if (@$_) {
15761 $test->failure_comment
15762 (@$_.' |DOMError|s of type |'.
15763 $_->[0]->{type}->{value}.'| are not reported');
15764 $not_ok = true;
15765 }
15766 }
15767 $not_ok ? $test->not_ok : $test->ok;
15768 }
15769 }
15770
15771
15772 @ResourceDef:
15773 @@QName: getEmptyEntityState
15774 @@rdf:type: DISPerl|InlineCode
15775 @@ForCheck: ManakaiDOM|ForClass
15776 @@PerlDef:
15777 {reptxt => \'', line => 1, column => 1, pos => 0,
15778 is_externally_declared => true, name => $name,
15779 fh => do {
15780 open my $empty, '<', \'';
15781 $empty;
15782 },
15783 close_file => sub { }}
15784
15785 @ResourceDef:
15786 @@QName: getCopyOfEntityState
15787 @@rdf:type: DISPerl|InlineCode
15788 @@ForCheck: ManakaiDOM|ForClass
15789 @@PerlDef:
15790 {%{$self->{$entity_type}->{$entity_name}},
15791 line => 1, column => 1, pos => 0,
15792 fh => do {
15793 require IO::String;
15794 IO::String->new
15795 (${$self->{$entity_type}->{$entity_name}->{reptxt}});
15796 ## TODO: External entities.
15797 },
15798 close_file => sub { }}
15799 ##ManakaiXMLParser
15800
15801 ElementTypeBinding:
15802 @Name: Test
15803 @ElementType:
15804 dis:ResourceDef
15805 @ShadowContent:
15806 @@ForCheck: ManakaiDOM|ForClass
15807 @@rdf:type: test|StandaloneTest
15808
15809 ElementTypeBinding:
15810 @Name: XMLTests
15811 @ElementType:
15812 dis:ResourceDef
15813 @ShadowContent:
15814 @@ForCheck: ManakaiDOM|ForClass
15815 @@rdf:type: test|ParserTestSet
15816
15817 ElementTypeBinding:
15818 @Name: XMLTest
15819 @ElementType:
15820 dis:ResourceDef
15821 @ShadowContent:
15822 @@ForCheck: ManakaiDOM|ForClass
15823 @@rdf:type: test|ParserTest
15824
15825 ElementTypeBinding:
15826 @Name: DEnt
15827 @ElementType:
15828 dis:ResourceDef
15829 @ShadowContent:
15830 @@rdf:type: test|RootEntity
15831
15832 ElementTypeBinding:
15833 @Name: Ent
15834 @ElementType:
15835 dis:ResourceDef
15836 @ShadowContent:
15837 @@rdf:type: test|Entity
15838
15839 ResourceDef:
15840 @QName: xp|get-location-from-token
15841 @rdf:type: DISPerl|BlockCode
15842 @enDesc:
15843 Creates a <IF::DOMCore:DOMLocator> object from a token.
15844 @PerlDef:
15845 my $__d = $token->{type} ne '#EOF'
15846 ? $token->{location}->{char_d}
15847 : 0;
15848 $__d -= $token->{location_d} if $token->{location_d};
15849 $result = {
15850 utf32_offset => $token->{location}->{pos} - $__d,
15851 line_number => $token->{location}->{line},
15852 column_number => $token->{location}->{column} - $__d,
15853 };
15854 $result->{utf32_offset} = 0 if $result->{utf32_offset} < 0;
15855 $result->{column_number} = 0 if $result->{column_number} < 0;
15856 ## 0 or 1, which should be?
15857
15858 ElementTypeBinding:
15859 @Name: RuleDef
15860 @ElementType:
15861 dis:ResourceDef
15862 @ShadowContent:
15863 @@ForCheck: ManakaiDOM|ForClass
15864 @@rdf:type: Muf2003|RuleDefClass
15865
15866 ElementTypeBinding:
15867 @Name: RuleParam
15868 @ElementType:
15869 dis:ResourceDef
15870 @ShadowContent:
15871 @@rdf:type: Muf2003|RuleParameter
15872
15873 ElementTypeBinding:
15874 @Name: enImplNote
15875 @ElementType:
15876 dis:ImplNote
15877 @ShadowContent:
15878 @@lang:en
15879
15880 ElementTypeBinding:
15881 @Name: WFErrDef
15882 @ElementType:
15883 dis:ResourceDef
15884 @ShadowContent:
15885 @@rdf:type: DOMCore|DOMErrorType
15886 @@ecore:textFormatter: ManakaiXMLParserExceptionFormatter
15887 @@c:severity: c|SEVERITY_FATAL_ERROR
15888
15889 ElementTypeBinding:
15890 @Name: FatalErrDef
15891 @ElementType:
15892 dis:ResourceDef
15893 @ShadowContent:
15894 @@rdf:type: DOMCore|DOMErrorType
15895 @@ecore:textFormatter: ManakaiXMLParserExceptionFormatter
15896 @@c:severity: c|SEVERITY_FATAL_ERROR
15897
15898 ElementTypeBinding:
15899 @Name: NSFatalErrDef
15900 @ElementType:
15901 dis:ResourceDef
15902 @ShadowContent:
15903 @@rdf:type: c|DOMErrorType
15904 @@ecore:textFormatter: ManakaiXMLParserExceptionFormatter
15905 @@c:severity: c|SEVERITY_FATAL_ERROR
15906
15907 ElementTypeBinding:
15908 @Name: NSCErrDef
15909 @ElementType:
15910 dis:ResourceDef
15911 @ShadowContent:
15912 @@rdf:type: c|DOMErrorType
15913 @@ecore:textFormatter: ManakaiXMLParserExceptionFormatter
15914 @@c:severity: c|SEVERITY_FATAL_ERROR
15915
15916 ElementTypeBinding:
15917 @Name: VCErrDef
15918 @ElementType:
15919 dis:ResourceDef
15920 @ShadowContent:
15921 @@rdf:type: c|DOMErrorType
15922 @@ecore:textFormatter: ManakaiXMLParserExceptionFormatter
15923 @@c:severity: c|SEVERITY_ERROR
15924
15925 ElementTypeBinding:
15926 @Name: ErrDef
15927 @ElementType:
15928 dis:ResourceDef
15929 @ShadowContent:
15930 @@rdf:type: c|DOMErrorType
15931 @@ecore:textFormatter: ManakaiXMLParserExceptionFormatter
15932 @@c:severity: c|SEVERITY_ERROR
15933
15934 ElementTypeBinding:
15935 @Name: WarnDef
15936 @ElementType:
15937 dis:ResourceDef
15938 @ShadowContent:
15939 @@rdf:type: c|DOMErrorType
15940 @@ecore:textFormatter: ManakaiXMLParserExceptionFormatter
15941 @@c:severity: c|SEVERITY_WARNING
15942
15943 WFErrDef:
15944 @QName: xp|wf-syntax-error
15945 @enDesc:
15946 The entity does not match to the production rule; it is not
15947 well-formed.
15948 @enMufDef:
15949 |%xp-error-token-type;|%xp-error-token-value
15950 (prefix => { (|}, suffix => {|)}); is not
15951 allowed%xp-error-lines (prefix => { (|}, suffix => {|)});
15952 @ecore:hasParameter:
15953 @@@: xp|error-token
15954 @@enDesc:
15955 The token that is not allowed.
15956
15957 WFErrDef:
15958 @QName: xp|wf-pi-target-is-xml
15959 @enDesc:
15960 A processing instruction has its <CODE::PITarget> of
15961 <XML::xml> (in any case) which is not allowed.
15962 @enMufDef:
15963 Processing instruction target name cannot be |%p
15964 (name => {<Q::xp|name>});|
15965 @ecore:hasParameter:
15966 @@@: xp|error-token
15967 @@enDesc:
15968 The token that contains the name.
15969 @ecore:hasParameter:
15970 @@@: xp|name
15971 @@enDesc:
15972 A string that is specified as target name of the
15973 processing instruction.
15974 @ecore:hasParameter: xp|parent
15975
15976 WFErrDef:
15977 @QName: xp|wf-no-end-tag
15978 @enDesc:
15979 An end-tag is not found.
15980 @enMufDef:
15981 End-tag |</%p (name => {<Q::xp|expected-element-type>});>| is required
15982 @ecore:hasParameter: xp|error-token
15983 @ecore:hasParameter:
15984 @@@: xp|node
15985 @@enDesc:
15986 The element node that is not closed.
15987 @ecore:hasParameter:
15988 @@@: xp|expected-element-type
15989 @@enDesc:
15990 The element type name of the element that is not closed.
15991
15992 WFErrDef:
15993 @QName: xp|wf-unsupported-xml-version
15994 @enDesc:
15995 The XML version specified in the version declaration is not supported.
15996 @enMufDef:
15997 XML version |%p (name => {<Q::infoset|version>});| is not supported
15998 @ecore:hasParameter: xp|bad-token
15999 @ecore:hasParameter:
16000 @@@: xp|parent
16001 @@enDesc:
16002 The document node.
16003 @ecore:hasParameter:
16004 @@@: infoset|version
16005 @@enDesc:
16006 The specified XML version.
16007
16008 WFErrDef:
16009 @QName: xp|wf-malformed-enc-name
16010 @enDesc:
16011 An <XA::encoding> pseudo-attribute value does not match
16012 to the procduction rule <CODE::EncName>.
16013 @enMufDef:
16014 Encoding name |%p (name => {<Q::xp|name>});| is not allowed
16015 @ecore:hasParameter: xp|error-token
16016 @ecore:hasParameter:
16017 @@@: xp|parent
16018 @@enDesc: The document node.
16019 @ecore:hasParameter:
16020 @@@: xp|name
16021 @@enDesc:
16022 The <XA::encoding> value.
16023
16024 WFErrDef:
16025 @QName: xp|wf-malformed-xml-standalone
16026 @enDesc:
16027 An <XA::standalone> pseudo-attribute value is neither <XML::yes>
16028 or <XML::no>.
16029 @enMufDef:
16030 |standalone| pseudo-attribute value |%p (name => {<Q::xp|name>});|
16031 is not allowed
16032 @ecore:hasParameter: xp|error-token
16033 @ecore:hasParameter:
16034 @@@: xp|parent
16035 @@enDesc: The document node.
16036 @ecore:hasParameter:
16037 @@@: xp|name
16038 @@enDesc:
16039 The <XA::standalone> value.
16040
16041 WFErrDef:
16042 @QName: xp|wf-legal-literal-character
16043 @enDesc:
16044 Each character in XML entity must match to the production
16045 rule <CODE::Char - RestrictedChar>.
16046 @enMufDef:
16047 Character %character-code-point
16048 (v => {<Q::xp|character-number>}); is not allowed
16049 @ecore:hasParameter:
16050 @@@: xp|character-number
16051 @@enDesc:
16052 The code position of the character being referred.
16053
16054 WFErrDef:
16055 @QName: xp|wf-invalid-character-in-node-name
16056 @c:errorType:
16057 @@@: wf-invalid-character-in-node-name
16058 @@ContentType: DISCore|String
16059 @enDesc:
16060 If a name contains a character that is not a name character
16061 in the XML version in use, or if the first character of a name
16062 is not a name start character in the XML version in use.
16063
16064 {NOTE::
16065 When an invalid character is encountered in an entity
16066 where a <CODE::Name> is expected, what type of error
16067 is issued is implementation dependent: <Q::xp|wf-syntax-error>,
16068 <Q::xp|wf-pi-target-is-xml> or other error might be reported.
16069 }
16070
16071 {NOTE::
16072 This error type is defined in DOM Level 3 Core and Load and Save
16073 modules and redefined herein for the purpose of XML parser.
16074 }
16075 @enMufDef:
16076 Character %character-code-point
16077 (v => {<Q::xp|character-number>}); is not allowed in name
16078 @ecore:hasParameter: xp|error-token
16079 @ecore:hasParameter:
16080 @@@: xp|character-number
16081 @@enDesc:
16082 The code position of the character being referred.
16083 @ecore:hasParameter:
16084 @@@: infoset|version
16085 @@enDesc:
16086 The version of XML in use.
16087
16088 WFErrDef:
16089 @QName: xp|wf-pes-in-internal-subset
16090 @enDesc:
16091 In the internal subset of the DTD, parameter entity references
16092 <kwd:MUST-NOT> occur within markup declarations.
16093 @enMufDef:
16094 Parameter entity reference |%percent;%param (name => {<Q::xp|name>});;|
16095 cannot occur within a markup declaration
16096 @ecore:hasParameter: xp|error-token
16097 @ecore:hasParameter:
16098 @@@: xp|name
16099 @@enDesc:
16100 The name of the parameter entity.
16101
16102 WFErrDef:
16103 @QName: xp|wf-element-type-match
16104 @enDesc:
16105 The <CODE::Name> in an element's end-tag must match the element type
16106 in the start-tag.
16107 @enMufDef:
16108 End-tag |</%p (name => {<Q::xp|actual-element-type>});>| does
16109 not match to start-tag |<%p (name => {<Q::xp|expected-element-type>});>|
16110 @ecore:hasParameter: xp|error-token
16111 @ecore:hasParameter:
16112 @@@: xp|node
16113 @@enDesc:
16114 The current opening element node.
16115 @ecore:hasParameter:
16116 @@@: xp|expected-element-type
16117 @@enDesc:
16118 The element type name of the current element.
16119 @ecore:hasParameter:
16120 @@@: xp|actual-element-type
16121 @@enDesc:
16122 The <CODE::Name> occurs in the end-tag.
16123
16124 WFErrDef:
16125 @QName: xp|wf-unique-att-spec
16126 @enDesc:
16127 An attribute name <kwd:MUST-NOT> appear more than once in
16128 the same start-tag or empty-element tag.
16129 @enMufDef:
16130 Attribute |%p (name => {<Q::xp|name>});| is specified more
16131 than once in the same tag
16132 @ecore:hasParameter: xp|error-token
16133 @ecore:hasParameter:
16134 @@@: xp|name
16135 @@enDesc:
16136 The name of the attribute.
16137
16138 WFErrDef:
16139 @QName: xp|wf-no-external-entity-references
16140 @enDesc:
16141 Attribute values <kwd:MUST-NOT> contain direct or indirect
16142 entity references to external entities.
16143 @enMufDef:
16144 External entity |%p (name => {<Q::xp|name>});| is referenced
16145 in an attribute value literal
16146 @ecore:hasParameter: xp|error-token
16147 @ecore:hasParameter:
16148 @@@: xp|name
16149 @@enDesc:
16150 The name of the entity.
16151
16152 WFErrDef:
16153 @QName: xp|wf-no-lt-in-attribute-values
16154 @enDesc:
16155 The replacement text of any entity referred to directly or indirectly
16156 in an attribute value literal <kwd:MUST-NOT> contain a
16157 <CHAR::LESS-THAN SIGN>.
16158 @enMufDef:
16159 Entity replacement text cannot contain a
16160 |LESS-THAN SIGN| since it is referenced from an attribute
16161 value literal
16162 @ecore:hasParameter: xp|error-token
16163
16164 WarnDef:
16165 @QName: xp|warning-attribute-definition-ignored
16166 @enDesc:
16167 An attribute definition is ignored because the same attribute
16168 is declared before.
16169 @enMufDef:
16170 Attribute definition for |%p (name => {<Q::xp|name>});| is ignored
16171 @ecore:hasParameter: xp|error-token
16172 @ecore:hasParameter:
16173 @@@: xp|name
16174 @@enDesc:
16175 The name of the attribute.
16176
16177 WFErrDef:
16178 @QName: xp|wf-legal-character
16179 @enDesc:
16180 Characters referred to using character references <kwd:MUST>
16181 match the production for <CODE::Char>.
16182 @enMufDef:
16183 Reference to character %character-code-point
16184 (v => {<Q::xp|character-number>}); is not allowed
16185 @ecore:hasParameter: xp|error-token
16186 @ecore:hasParameter:
16187 @@@: xp|character-number
16188 @@enDesc:
16189 The code position of the character being referred.
16190 @ecore:hasParameter:
16191 @@@: xp|parent
16192 @@enDesc:
16193 The parent node in which the character reference has
16194 occurred, if available.
16195
16196 WFErrDef:
16197 @QName: xp|wf-entity-declared
16198 @enDesc:
16199 {P:: In a document
16200
16201 - without any DTD,
16202
16203 - with only an internal DTD subset that contains no parameter
16204 entity references, or
16205
16206 - with <XML::standalone="yes">,
16207
16208 for an entity reference that does not occur within the external
16209 subset or a parameter entity, the <CODE::Name> given in the
16210 entity reference <kwd:MUST> match the <CODE::Name> does not
16211 occur within the external subset or a parameter entity,
16212 except that five predefined character entities need not
16213 be declared. The declaration of a general entity <kwd:MUST>
16214 precede any reference to it which appears in a default value
16215 in an attribute list declaration.
16216 @enMufDef:
16217 Entity |%p (name => {<Q::xp|name>});| must be declared
16218 in the internal subset
16219 @ecore:hasParameter: xp|error-token
16220 @ecore:hasParameter:
16221 @@@: xp|name
16222 @@enDesc:
16223 The name of the entity.
16224
16225 WFErrDef:
16226 @QName: xp|wf-parsed-entity
16227 @enDesc:
16228 An entity reference <kwd:MUST-NOT> contain the name of an
16229 unparsed entity.
16230 @enMufDef:
16231 Entity |%p (name => {<Q::xp|name>});| is an unparsed entity
16232 @ecore:hasParameter: xp|error-token
16233 @ecore:hasParameter:
16234 @@@: xp|name
16235 @@enDesc:
16236 The name of the entity.
16237
16238 WFErrDef:
16239 @QName: xp|wf-no-recursion
16240 @enDesc:
16241 A parsed entity <kwd:MUST-NOT> contain a recursive reference
16242 to itself, either directly or indirectly.
16243 @enMufDef:
16244 Entity |%p (name => {<Q::xp|name>});| is recursively referenced
16245 @ecore:hasParameter: xp|error-token
16246 @ecore:hasParameter:
16247 @@@: xp|name
16248 @@enDesc:
16249 The name of the entity.
16250
16251 FatalErrDef:
16252 @QName: xp|fatal-xml11-end-of-line-in-xml-declaration
16253 @enDesc:
16254 An end-of-line character <CODE::U+0085> or <CODE::U+2028> is appeared
16255 within an XML declaration or text declaration.
16256 @enMufDef:
16257 End-of-line character %character-code-point
16258 (v => {<Q::xp|character-number>}); cannot be used within the
16259 XML or text declaration
16260 @ecore:hasParameter:
16261 @@@: xp|character-number
16262 @@enDesc:
16263 The code position of the end-of-line character.
16264
16265 ErrDef:
16266 @QName: xp|error-internal-predefined-entity
16267 @enDesc:
16268 A general entity declaration whose <CODE::Name> equals to one
16269 of predefined entities <kwd:MUST> declare it as an internal entity.
16270 @enMufDef:
16271 Entity |%p (name => {<Q::xp|name>});| must be declared as an
16272 internal entity
16273 @ecore:hasParameter: xp|error-token
16274 @ecore:hasParameter:
16275 @@@: xp|name
16276 @@enDesc:
16277 The name of the entity.
16278
16279 ErrDef:
16280 @QName: xp|error-malformed-predefined-entity
16281 @enDesc:
16282 A general entity declaration whose <CODE::Name> equals to one
16283 of predefined entities <kwd:MUST> declare it as a data
16284 character for the entity.
16285 @enMufDef:
16286 Entity declaration for |%p (name => {<Q::xp|name>});|
16287 (replacement text |%p (name => {<Q::xp|replacement-text>});|) is malformed
16288 @ecore:hasParameter: xp|error-token
16289 @ecore:hasParameter:
16290 @@@: xp|name
16291 @@enDesc:
16292 The name of the entity.
16293 @ecore:hasParameter:
16294 @@@: xp|replacement-text
16295 @@enDesc:
16296 The replacement text of the entity declaration.
16297
16298 WarnDef:
16299 @QName: xp|warning-entity-declaration-ignored
16300 @enDesc:
16301 An entity declaration is ignored because the same entity
16302 is declared before.
16303 @enMufDef:
16304 Entity declaration for |%p (name => {<Q::xp|name>});| is ignored
16305 @ecore:hasParameter: xp|error-token
16306 @ecore:hasParameter:
16307 @@@: xp|name
16308 @@enDesc:
16309 The name of the entity.
16310
16311 VCErrDef:
16312 @QName: xp|vc-unique-notation-name
16313 @enDesc:
16314 A <CODE::Name> <kwd:MUST-NOT> be declared in more than
16315 one notation declaration.
16316 @enMufDef:
16317 Notation |%p (name => {<Q::xp|name>});| is already declared
16318 @ecore:hasParameter: xp|error-token
16319 @ecore:hasParameter:
16320 @@@: xp|name
16321 @@enDesc:
16322 The name of the notation.
16323
16324 WarnDef:
16325 @QName: xp|warning-entity-declaration-not-processed
16326 @enDesc:
16327 An entity declaration is not processed because there
16328 is a reference to parameter entity before the declaration
16329 and the entity is not read.
16330 @enMufDef:
16331 Entity declaration for |%p (name => {<Q::xp|name>});| is not processed
16332 @ecore:hasParameter: xp|error-token
16333 @ecore:hasParameter:
16334 @@@: xp|name
16335 @@enDesc:
16336 The name of the entity.
16337
16338 WarnDef:
16339 @QName: xp|warning-attribute-definition-not-processed
16340 @enDesc:
16341 An attribute definition is not processed because there
16342 is a reference to parameter entity before the declaration
16343 and the entity is not read.
16344 @enMufDef:
16345 Attribute definition for |%p (name => {<Q::xp|name>});| is not processed
16346 @ecore:hasParameter: xp|error-token
16347 @ecore:hasParameter:
16348 @@@: xp|name
16349 @@enDesc:
16350 The name of the attribute.
16351
16352 FatalErrDef:
16353 @QName: xp|fatal-illegal-byte-sequence
16354 @enDesc:
16355 An XML entity is determined to be in a certain encoding but
16356 contains byte sequences that are not legal in that encoding.
16357 @enMufDef:
16358 Illegal byte sequence
16359 @enImplNote: dump
16360 @ecore:hasParameter: xp|byte-sequence
16361 @ecore:hasParameter: xp|code-state
16362
16363 XWParam:
16364 @QName: xp|byte-sequence
16365 @enDesc:
16366 A reference to the byte string that contains an error.
16367
16368 XWParam:
16369 @QName: xp|code-state
16370 @enDesc:
16371 A string that identifies the state defined in the coded character set
16372 in which an error is encoutnered.
16373
16374 WarnDef:
16375 @QName: xp|warning-unassigned-code-point
16376 @enDesc:
16377 If the entity contains an unassigned code point.
16378 @enMufDef:
16379 Unassigned code point found
16380 @enImplNote: dump
16381 @ecore:hasParameter: xp|byte-sequence
16382
16383 FatalErrDef:
16384 @QName: xp|fatal-unprocessable-encoding
16385 @enDesc:
16386 When an XML processor encounters an entity with an encoding
16387 that is unable to process.
16388 @enMufDef:
16389 Encoding <%p (name => {<Q::xp|charset-uri>});>
16390 %p (name => {<Q::xp|encoding>}, prefix => {(}, suffix => {) });is
16391 not supported
16392 @ecore:hasParameter: xp|encoding
16393 @ecore:hasParameter: xp|charset-uri
16394
16395 XWParam:
16396 @QName: xp|encoding
16397 @enDesc:
16398 The XML name of the encoding.
16399 @multipleProperties: DISCore|Single
16400 @dataType: DISCore|String
16401 @DISCore:resourceType: DISSource|ResourceProperty
16402
16403 XWParam:
16404 @QName: xp|charset-uri
16405 @enDesc:
16406 The URI that identifies the encoding.
16407
16408 FatalErrDef:
16409 @QName: xp|fatal-utf-16-no-bom
16410 @enDesc:
16411 If the encoding of an entity is UTF-16 but it does not
16412 contains <CHAR::BOM>.
16413 @enMufDef:
16414 The entity contains no BOM
16415
16416 FatalErrDef:
16417 @QName: xp|fatal-encoding-mismatch
16418 @enDesc:
16419 If an entity including an encoding declaration
16420 in an encoding other than that named in the declaration.
16421 @enMufDef:
16422 The entity is labeled as <%p (name => {<Q::xp|charset-uri>});>
16423 %p (name => {<Q::xp|encoding>}, prefix => {(}, suffix => {) });but
16424 it is wrong
16425 @ecore:hasParameter: xp|encoding
16426 @ecore:hasParameter: xp|charset-uri
16427
16428 WarnDef:
16429 @QName: xp|warn-unknown-decode-error
16430 @enDesc:
16431 Unknown message from the decoder.
16432 @enMufDef:
16433 Encoding decoder error: <%p (name => {<Q::xp|error-type>});>
16434 @ecore:hasParameter: xp|error-type
16435 @ecore:hasParameter: xp|error-param
16436
16437 XWParam:
16438 @QName: xp|error-type
16439 @enDesc:
16440 A DOM URI that identifies the error type.
16441
16442 XWParam:
16443 @QName: xp|error-param
16444 @enDesc:
16445 A <Q::xp|error-type>-dependent set of error descriptions.
16446
16447 NSFatalErrDef:
16448 @QName: xp|nswf-legal-ncname
16449 @enDesc:
16450 <CODE::Name>s other than element type names and attribute names
16451 <kwd:MUST> be <CODE::NCName>s.
16452 @enMufDef:
16453 <CODE::Name> |%p (name => {<Q::xp|name>});| is not an <CODE::NCName>
16454 @ecore:hasParameter: xp|error-token
16455 @ecore:hasParameter:
16456 @@@: xp|name
16457 @@enDesc:
16458 The name.
16459 @ecore:hasParameter:
16460 @@@: infoset|version
16461 @@enDesc:
16462 The version of XML in use.
16463
16464 NSFatalErrDef:
16465 @QName: xp|nswf-legal-qname
16466 @enDesc:
16467 An element type name or an attribute name <kwd:MUST> be a
16468 <CODE::QName>.
16469 @enMufDef:
16470 <CODE::Name> |%p (name => {<Q::xp|name>});| is not a <CODE::QName>
16471 @ecore:hasParameter: xp|error-token
16472 @ecore:hasParameter:
16473 @@@: xp|name
16474 @@enDesc:
16475 The name.
16476 @ecore:hasParameter:
16477 @@@: infoset|version
16478 @@enDesc:
16479 The version of XML in use.
16480
16481 NSCErrDef:
16482 @QName: xp|nsc-reserved-prefix-xml
16483 @enDesc:
16484 The prefix <XML::xml> <kwd:MUST-NOT> be undeclared or bound
16485 to any namespace name other than <URI::http://www.w3.org/XML/1998/namespace>.
16486 @enMufDef:
16487 Namespace prefix |xml| cannot be bound to namespace
16488 name |%p (name => {<Q::infoset|namespaceName>});|
16489 @ecore:hasParameter: xp|error-token
16490 @ecore:hasParameter:
16491 @@@: infoset|prefix
16492 @@enDesc:
16493 The namespace prefix.
16494 @ecore:hasParameter:
16495 @@@: infoset|namespaceName
16496 @@enDesc:
16497 The namespace name bound to or an empty string for undeclaring.
16498
16499 NSCErrDef:
16500 @QName: xp|nsc-reserved-namespace-name-xml
16501 @enDesc:
16502 Namespace prefixes other than <XML::xml> <kwd:MUST-NOT> be bound
16503 to the namespace name <URI::http://www.w3.org/XML/1998/namespace>.
16504 @enMufDef:
16505 Namespace prefix |%p (name => {<Q::infoset|prefix>});| cannot be
16506 bound to namespace name |http://www.w3.org/XML/1998/namespace|
16507 @enImplNote:
16508 The XMLNames spec does not prohibit the URI bound to
16509 the default namespace (!)
16510 @ecore:hasParameter: xp|error-token
16511 @ecore:hasParameter:
16512 @@@: infoset|prefix
16513 @@enDesc:
16514 The namespace prefix or <DOM::null> for default namespace.
16515 @ecore:hasParameter:
16516 @@@: infoset|namespaceName
16517 @@enDesc:
16518 The namespace name bound to.
16519
16520 NSCErrDef:
16521 @QName: xp|nsc-reserved-prefix-xmlns
16522 @enDesc:
16523 The prefix <XML::xmlns> <kwd:MUST-NOT> be declared or undeclared.
16524 @enMufDef:
16525 Namespace prefix |xmlns| cannot be declared or undeclared
16526 @ecore:hasParameter: xp|error-token
16527 @ecore:hasParameter:
16528 @@@: infoset|prefix
16529 @@enDesc:
16530 The namespace prefix.
16531 @ecore:hasParameter:
16532 @@@: infoset|namespaceName
16533 @@enDesc:
16534 The namespace name bound to or an empty string for undeclaring.
16535
16536 NSCErrDef:
16537 @QName: xp|nsc-reserved-namespace-name-xmlns
16538 @enDesc:
16539 Namespace prefixes <kwd:MUST-NOT> be bound
16540 to the namespace name <URI::http://www.w3.org/2000/xmlns/>.
16541 @enMufDef:
16542 Namespace prefix |%p (name => {<Q::infoset|prefix>});| cannot be
16543 bound to namespace name |http://www.w3.org/2000/xmlns/|
16544 @enImplNote:
16545 The XMLNames spec does not prohibit the URI bound to
16546 the default namespace (!)
16547 @ecore:hasParameter: xp|error-token
16548 @ecore:hasParameter:
16549 @@@: infoset|prefix
16550 @@enDesc:
16551 The namespace prefix or <DOM::null> for default namespace.
16552 @ecore:hasParameter:
16553 @@@: infoset|namespaceName
16554 @@enDesc:
16555 The namespace name bound to.
16556
16557 NSCErrDef:
16558 @QName: xp|nsc-prefix-declared
16559 @enDesc:
16560 A namespace prefix other than <XML::xml> or <XML::xmlns>
16561 <kwd:MUST> have been declared in a namespace declaration
16562 attribute in either the start or empty element tag of the
16563 element where the prefix is used or in an ancestor
16564 element. Furthermore, the attribute value in the innermost
16565 such declaration <kwd:MUST-NOT> be an empty string.
16566 @enMufDef:
16567 Namespace prefix |%p (name => {<Q::infoset|prefix>});| in
16568 qualified name |%p (name => {<Q::xp|name>});| is not declared
16569 @ecore:hasParameter: xp|error-token
16570 @ecore:hasParameter:
16571 @@@: infoset|prefix
16572 @@enDesc:
16573 The namespace prefix.
16574 @ecore:hasParameter:
16575 @@@: xp|name
16576 @@enDesc:
16577 The qualified name.
16578
16579 NSFatalErrDef:
16580 @QName: xp|nswf-empty-namespace-name
16581 @enDesc:
16582 If the XML version of the document is 1.0 and the
16583 normalized value of the prefixed namespace declaration attribute is empty.
16584 @enMufDef:
16585 Namespace |%p (name => {<Q::infoset|prefix>});| cannot be
16586 undeclared in XML 1.0
16587 @ecore:hasParameter: xp|error-token
16588 @ecore:hasParameter:
16589 @@@: infoset|prefix
16590 @@enDesc:
16591 The namespace prefix.
16592 @ecore:hasParameter:
16593 @@@: infoset|namespaceName
16594 @@enDesc:
16595 An empty string.
16596
16597 NSFatalErrDef:
16598 @QName: xp|nswf-unique-att-spec-expanded-name
16599 @enDesc:
16600 No element may have two attributes that have qualified name
16601 with the same local part and with namespace prefixes
16602 that have been bound to namespace names that are identical.
16603 @enMufDef:
16604 Attribute |%p (name => {<Q::infoset|localName>});| in
16605 namespace |%p (name => {<Q::infoset|namespaceName>});| is
16606 attached to the same element more than once (as
16607 |%p (name => {<Q::xp|name>});| and
16608 |%p (name => {<Q::xp|another-attribute-name>});|)
16609 @enImplNote:
16610 The XMLNames spec doesn't mention default attributes
16611 for this constraint...
16612 @ecore:hasParameter: xp|error-token
16613 @ecore:hasParameter:
16614 @@@: infoset|localName
16615 @@enDesc:
16616 The local part of the attribute.
16617 @ecore:hasParameter:
16618 @@@: infoset|namespaceName
16619 @@enDesc:
16620 The namespace URI of the attribute.
16621 @ecore:hasParameter:
16622 @@@: xp|name
16623 @@enDesc:
16624 The name, i.e. a qualified name consist of <Q::infoset:localName>
16625 and <Q::infoset:namespaceName> parameter values.
16626 @ecore:hasParameter:
16627 @@@: xp|another-attribute-name
16628 @@enDesc:
16629 Another attribute qualified name expanded to the same expanded name
16630 as <Q::xp|name>.
16631
16632 XWParam:
16633 @QName: xp|another-attribute-name
16634
16635 XWParam:
16636 @QName: xp|replacement-text
16637 @enDesc:
16638 The replacement text.
16639
16640 XWParam:
16641 @QName: xp|error-token
16642 @enDesc:
16643 The token where the parser found an error.
16644
16645 XWParam:
16646 @QName: xp|name
16647 @enDesc:
16648 A name.
16649
16650 XWParam:
16651 @QName: xp|parent
16652 @enDesc:
16653 The parent node in which the error occurs.
16654
16655 XWParam:
16656 @QName: xp|node
16657 @enDesc:
16658 The current node.
16659
16660 XWParam:
16661 @QName: xp|actual-element-type
16662 @enDesc:
16663 The actual element type name occured in the source.
16664
16665 XWParam:
16666 @QName: xp|expected-element-type
16667 @enDesc:
16668 The element type name expected.
16669
16670 XWParam:
16671 @QName: xp|character-number
16672 @enDesc:
16673 The character code position.
16674
16675 ElementTypeBinding:
16676 @Name: XWParam
16677 @ElementType:
16678 dis:ResourceDef
16679 @ShadowContent:
16680 @@rdf:type: ecore|Parameter
16681
16682 ElementTypeBinding:
16683 @Name:enMufDef
16684 @ElementType:
16685 ecore:defaultMessage
16686 @ShadowContent:
16687 @@lang:en
16688 @@ContentType:
16689 lang:muf
16690
16691 ResourceDef:
16692 @QName: DOMImpl
16693 @AliasFor: DOMCore|DOMImplementation
16694
16695 ResourceDef:
16696 @QName: LSInput
16697 @AliasFor: DOMLS|LSInput
16698
16699 ResourceDef:
16700 @QName: LSParser
16701 @AliasFor: DOMLS|LSParser
16702
16703 ElementTypeBinding:
16704 @Name: Attr
16705 @ElementType:
16706 dis:ResourceDef
16707 @ShadowContent:
16708 @@rdf:type: DISLang|Attribute
16709
16710 ElementTypeBinding:
16711 @Name: Get
16712 @ElementType:
16713 dis:ResourceDef
16714 @ShadowContent:
16715 @@rdf:type: DISLang|AttributeGet
16716
16717 ElementTypeBinding:
16718 @Name: Set
16719 @ElementType:
16720 dis:ResourceDef
16721 @ShadowContent:
16722 @@rdf:type: DISLang|AttributeSet
16723
16724 ElementTypeBinding:
16725 @Name: enDesc
16726 @ElementType:
16727 dis:Description
16728 @ShadowContent:
16729 @@lang:en
16730
16731 ElementTypeBinding:
16732 @Name: Method
16733 @ElementType:
16734 dis:ResourceDef
16735 @ShadowContent:
16736 @@rdf:type: DISLang|Method
16737
16738 ElementTypeBinding:
16739 @Name: Return
16740 @ElementType:
16741 dis:ResourceDef
16742 @ShadowContent:
16743 @@rdf:type: DISLang|MethodReturn
16744
16745 ElementTypeBinding:
16746 @Name: Param
16747 @ElementType:
16748 dis:ResourceDef
16749 @ShadowContent:
16750 @@rdf:type: DISLang|MethodParameter
16751
16752 ElementTypeBinding:
16753 @Name: PerlDef
16754 @ElementType:
16755 dis:Def
16756 @ShadowContent:
16757 @@ContentType: lang|Perl
16758
16759 ElementTypeBinding:
16760 @Name: PerlDefC
16761 @ElementType:
16762 dis:Def
16763 @ShadowContent:
16764 @@ContentType: lang|Perl
16765
16766 ElementTypeBinding:
16767 @Name: PropDef
16768 @ElementType:
16769 dis:ResourceDef
16770 @ShadowContent:
16771 @@rdf:type: rdf|Property
16772
16773 ClsDef:
16774 @ClsQName: ManakaiXMLParserExceptionFormatter
16775
16776 @ClsISA: ecore|MUErrorFormatter
16777
16778 @RuleDef:
16779 @@Name: xp-error-token-type
16780 @@enDesc:
16781 The type of the token the parser is encountered.
16782
16783 @@Method:
16784 @@@Name: after
16785 @@@Param:
16786 @@@@Name: name
16787 @@@@Type: DOMString
16788 @@@@enDesc: The name of the method.
16789 @@@Param:
16790 @@@@Name: p
16791 @@@@Type: DISPerl|HASH
16792 @@@@enDesc: The set of the parameters to the method.
16793 @@@Param:
16794 @@@@Name: o
16795 @@@@Type: DISPerl|HASH
16796 @@@@enDesc: The option value.
16797 @@@Return:
16798 @@@@PerlDef:
16799 $p->{-result} = $o->{<H::xp|error-token>}->{type}
16800 if defined $o->{<H::xp|error-token>}->{type};
16801
16802 @RuleDef:
16803 @@Name: xp-error-token-value
16804 @@enDesc:
16805 The value of the token the parser is encountered, if any.
16806
16807 @@Method:
16808 @@@Name: after
16809 @@@Param:
16810 @@@@Name: name
16811 @@@@Type: DOMString
16812 @@@@enDesc: The name of the method.
16813 @@@Param:
16814 @@@@Name: p
16815 @@@@Type: DISPerl|HASH
16816 @@@@enDesc: The set of the parameters to the method.
16817 @@@Param:
16818 @@@@Name: o
16819 @@@@Type: DISPerl|HASH
16820 @@@@enDesc: The option value.
16821 @@@Return:
16822 @@@@PerlDef:
16823 $p->{-result} = $o->{<H::xp|error-token>}->{value}
16824 if defined $o->{<H::xp|error-token>}->{value};
16825
16826 @RuleDef:
16827 @@Name: xp-error-lines
16828 @@enDesc:
16829 A copy of fragment of the source text that contains the line
16830 where the error occurred, if available.
16831
16832 @@Method:
16833 @@@Name: after
16834 @@@Param:
16835 @@@@Name: name
16836 @@@@Type: DOMString
16837 @@@@enDesc: The name of the method.
16838 @@@Param:
16839 @@@@Name: p
16840 @@@@Type: DISPerl|HASH
16841 @@@@enDesc: The set of the parameters to the method.
16842 @@@Param:
16843 @@@@Name: o
16844 @@@@Type: DISPerl|HASH
16845 @@@@enDesc: The option value.
16846 @@@Return:
16847 @@@@PerlDef:
16848 my $pos = $o-><AG::DOMCore|DOMError.location>
16849 -><AG::DOMCore|DOMLocator.utf32Offset>;
16850 my $src = $o->{<H::ecore|object>}->{entity}->[-1]->{reptxt};
16851 if (defined $src and $pos > -1) {
16852 my $start = $pos;
16853 $start = rindex ($$src, "\x0A", $start - 1) for 0..2;
16854 $start++;
16855 my $end = $pos;
16856 $end = index ($$src, "\x0A", $end + 1) for 0..2;
16857 $end = length $$src if $end < 0;
16858 $p->{-result} = substr $$src, $start, $end - $start;
16859 }
16860
16861 @RuleDef:
16862 @@Name: character-code-point
16863 @@enDesc:
16864 The character code position, in <CODE::U+<VAR::HHHH>> notation.
16865
16866 @@Method:
16867 @@@Name: after
16868 @@@Param:
16869 @@@@Name: name
16870 @@@@Type: DOMString
16871 @@@@enDesc: The name of the method.
16872 @@@Param:
16873 @@@@Name: p
16874 @@@@Type: DISPerl|HASH
16875 @@@@enDesc: The set of the parameters to the method.
16876 @@@Param:
16877 @@@@Name: o
16878 @@@@Type: DISPerl|HASH
16879 @@@@enDesc: The option value.
16880 @@@RuleParam:
16881 @@@@Name: v
16882 @@@@Type: DISPerl|Number
16883 @@@@enDesc:
16884 The name of the error parameter that contains the character code.
16885 @@@Return:
16886 @@@@PerlDef:
16887 $p->{-result} = sprintf 'U+%04X', $o->{$p->{v}};
16888 ##XMLParserExceptionFormatter
16889
16890 ElementTypeBinding:
16891 @Name: CParam
16892 @ElementType:
16893 dis:ResourceDef
16894 @ShadowContent:
16895 @@rdf:type:
16896 @@@@: c|DOMConfigurationParameter
16897 @@rdf:type:
16898 @@@@: DISSource|ResourceProperty
16899 @@subsetOf:
16900 @@@@: c|anyDOMConfigurationParameter
16901 @@multipleProperties:
16902 @@@@: DISCore|Single
16903
16904 ElementTypeBinding:
16905 @Name: CParamApp
16906 @ElementType:
16907 dis:ResourceDef
16908 @ShadowContent:
16909 @@rdf:type:
16910 @@@@: c|DOMConfigurationParameterApplication
16911
16912 ElementTypeBinding:
16913 @Name: boolCParam
16914 @ElementType:
16915 dis:ResourceDef
16916 @ShadowContent:
16917 @@DISCore:resourceType:
16918 @@@@: c|DOMConfigurationParameter
16919 @@DISCore:resourceType:
16920 @@@@: DISSource|ResourceProperty
16921 @@Type: idl|boolean
16922 @@subsetOf:
16923 @@@@: c|anyDOMConfigurationParameter
16924 @@multipleProperties:
16925 @@@@: DISCore|Single
16926 @@dataType:
16927 @@@@: DISCore|Boolean
16928
16929 CParamApp:
16930 @QName: xml-id
16931 @c:domConfigurationParameter: cfg|xml-id
16932 @c:targetType: xp|ManakaiXMLParser
16933 @TrueCase:
16934 @@c:isSupported: 1
16935 @FalseCase:
16936 @@c:isSupported: 1
16937
16938 CParamApp:
16939 @QName: error-handler
16940 @c:domConfigurationParameter: c|error-handler
16941 @c:targetType: xp|ManakaiXMLParser
16942
16943 boolCParam:
16944 @QName: cfg|entity-replacement-tree
16945 @DOMLS:lsKey:
16946 @@@: erep
16947 @Type: idl|boolean
16948 @c:targetType: xp|ManakaiXMLParser
16949 @IsSupportRequired: 1
16950 @c:isSupported: 1
16951 @TrueCase:
16952 @@c:isSupported: 1
16953 @@enDesc:
16954 The parser <kwd:MUST> cnstruct the replacement subtree of
16955 a general parsed <IF::tx|Entity> node if the replacement text
16956 for the node is available.
16957
16958 If this value is set to the parameter, then a fatal error
16959 might be reported even if the entire document is well-formed
16960 in case a general parsed entity has replacement text that is
16961 not well-formed when evaluated as if it has been referenced
16962 in the content of an element, except that undeclared namespace prefixes
16963 do not result in namespace well-formedness error.
16964 @FalseCase:
16965 @@IsDefault: 1
16966 @@c:isSupported: 1
16967 @@IsSupportRequired: 1
16968 @@enDesc:
16969 The parser don't have to construct <IF::tx|Entity> replacement
16970 subtrees.
16971
16972 @Test:
16973 @@QName: cfg.entity-replacement-tree.test
16974 @@PerlDef:
16975 my $xp;
16976 __CODE{createParserForTest:: $xp => $xp}__;
16977 my $cfg = $xp-><AG::LSInput.domConfig>;
16978
16979 my $pname = <Q::cfg|entity-replacement-tree>;
16980
16981 $test->id ('default.false');
16982 $test->assert_false ($cfg-><M::c|DOMConfiguration.getParameter> ($pname));
16983
16984 $test->id ('false.to.true');
16985 $cfg-><M::c|DOMConfiguration.setParameter> ($pname => true);
16986 $test->assert_false ($cfg-><M::c|DOMConfiguration.getParameter> ($pname));
16987
16988 $test->id ('true.to.false');
16989 $cfg-><M::c|DOMConfiguration.setParameter> ($pname => false);
16990 $test->assert_false ($cfg-><M::c|DOMConfiguration.getParameter> ($pname));
16991
16992 $test->id ('reset');
16993 $cfg-><M::c|DOMConfiguration.setParameter> ($pname => true);
16994 $cfg-><M::c|DOMConfiguration.setParameter> ($pname => null);
16995 $test->assert_false ($cfg-><M::c|DOMConfiguration.getParameter> ($pname));
16996
16997 CParam:
16998 @QName: xp|ls-input-to-input-file
16999 @DOMLS:lsKey:
17000 @@@: i2i
17001 @Type: ManakaiDOMLSInputToInputFile
17002 @c:targetType: xp|ManakaiXMLParser
17003 @IsSupportRequired: 1
17004 @c:isSupported: 1
17005 @enDesc:
17006 An <IF::LSInput> to Perl filehandle converter.
17007
17008 @Method:
17009 @@rdf:type: c|DOMConfigurationParameterDefaultGetter
17010 @@Param:
17011 @@@Name: name
17012 @@@Type: DOMString
17013 @@@dis:actualType: c|DOMConfigurationParameterName
17014 @@@enDesc: The parameter name.
17015 @@Return:
17016 @@@Type: ManakaiDOMLSInputToInputFile
17017 @@@enDesc:
17018 The default resolver.
17019 @@@PerlDefC:
17020 # resolveLSInput
17021 $r = sub {
17022 my ($self, $impl, $input, $parser, $errorHandler) = @_;
17023 ## As defined in DOM Level 3 LS |LSInput| interface
17024
17025 my $r = {};
17026
17027 __DEEP{
17028
17029 FH: {
17030 ## 1. |characterStream|
17031 my $v = $input-><AG::LSInput.characterStream>;
17032 if (defined $v) {
17033 $r->{filehandle} = $v;
17034 last FH;
17035 }
17036
17037 ## 2. |byteStream|
17038 $v = $input-><AG::LSInput.byteStream>;
17039 if (defined $v) {
17040 require Message::Charset::Encode;
17041 my $mceimpl = $impl-><M::f|GetFeature.getFeature>
17042 (<Q::fe|MCEncode>, '1.0');
17043 my $encode = $input-><AG::LSInput.encoding>;
17044 my $encode_uri = defined $encode
17045 ? $mceimpl-><M::mce|MCEncodeImplementation
17046 .getURIFromCharsetName>
17047 (<Q::cs|xmlName>, $encode)
17048 : <Q::xml-auto-charset:>;
17049 $r->{filehandle} = $mceimpl-><M::mce|MCEncodeImplementation
17050 .createMCDecodeHandle>
17051 ($encode_uri, $v, sub {
17052 my ($self, $fh, $type, %opt) = @_;
17053 my $continue = true;
17054 if ($type eq <Q::cs|illegal-octets-error>) {
17055 $continue = __c|ERROR{xp|fatal-illegal-byte-sequence::
17056 xp|byte-sequence => {$opt{octets}},
17057 ecore|object => {$parser},
17058 }__;
17059 } elsif ($type eq <Q::cs|unassigned-code-point-error>) {
17060 $continue = __c|ERROR{xp|warning-unassigned-code-point::
17061 xp|byte-sequence => {$opt{octets}},
17062 ecore|object => {$parser},
17063 }__;
17064 $opt{octets} = \"\x{FFFD}";
17065 } elsif ($type eq <Q::cs|invalid-state-error>) {
17066 $continue = __c|ERROR{xp|fatal-illegal-byte-sequence::
17067 xp|code-state => {$opt{state}},
17068 ecore|object => {$parser},
17069 }__;
17070 } elsif ($type eq <Q::cs|charset-not-supported-error>) {
17071 $continue = __c|ERROR{xp|fatal-unprocessable-encoding::
17072 xp|encoding => {$encode},
17073 xp|charset-uri => {$opt{charset_uri}},
17074 ecore|object => {$parser},
17075 }__;
17076 } elsif ($type eq <Q::cs|no-bom-error>) {
17077 if ($opt{charset_uri} eq <Q::cs|XML.utf-16>) {
17078 $continue = __c|ERROR{xp|fatal-utf-16-no-bom::
17079 ecore|object => {$parser},
17080 }__;
17081 } else {
17082 $continue = __c|ERROR{xp|fatal-illegal-byte-sequence::
17083 xp|code-state => 'bom',
17084 ecore|object => {$parser},
17085 }__;
17086 }
17087 } elsif ($type eq <Q::cs|charset-name-mismatch-error>) {
17088 $continue = __c|ERROR{xp|fatal-encoding-mismatch::
17089 xp|encoding => {$encode},
17090 xp|charset-uri => {$opt{charset_uri}},
17091 ecore|object => {$parser},
17092 }__;
17093 } else {
17094 $continue = __c|ERROR{xp|warn-unknown-decode-error::
17095 xp|error-type => {$type},
17096 xp|error-param => {\%opt},
17097 ecore|object => {$parser},
17098 }__;
17099 }
17100 unless ($continue) {
17101 __EXCEPTION{DOMLS|PARSE_ERR::
17102 ecore|object => {$parser},
17103 }__;
17104 }
17105 });
17106 $r->{input_encoding}
17107 = $r->{filehandle}-><AG::mce|MCDecodeHandle.inputEncoding>
17108 if defined $r->{filehandle};
17109 last FH;
17110 }
17111
17112 ## 3. |stringData|
17113 $v = $input-><AG::LSInput.stringData>;
17114 if (defined $v) {
17115 require IO::String;
17116 $r->{filehandle} = IO::String->new ($v);
17117 last FH;
17118 }
17119
17120 ## 4. |systemId|
17121 ## TODO:
17122 ## resolve relative URI
17123 ## open
17124 ## set document_uri
17125
17126 ## 5. |publicId|
17127 ## The default resolver does not support only-|publicId| input.
17128
17129 return null;
17130 } # FH
17131
17132 DURI: {
17133 last DURI if defined $r->{document_uri};
17134
17135 my $v = $input-><AG::LSInput.systemId>;
17136 if (defined $v) {
17137 $r->{base_uri} = $input-><AG::LSInput.baseURI>
17138 unless defined $r->{base_uri};
17139 if (defined $r->{base_uri}) {
17140 $r->{document_uri} = $impl->create_uri_reference (\$v)
17141 -><M::urigen|URIReference.getAbsoluteReference>
17142 ($r->{base_uri})
17143 -><AG::urigen|URIReference.uriReference>;
17144 } else {
17145 $r->{document_uri} = $v;
17146 }
17147 last DURI;
17148 }
17149
17150 ## TODO: pubid -> pubid URN -> document_uri
17151 } # DURI
17152
17153 BURI: {
17154 last BURI if defined $r->{base_uri};
17155
17156 my $v = $input-><AG::LSInput.baseURI>;
17157 if (defined $v) {
17158 $r->{base_uri} = $v;
17159 last BURI;
17160 }
17161
17162 if (defined $r->{document_uri}) {
17163 $r->{base_uri} = $r->{document_uri};
17164 }
17165 } # BURI
17166
17167 $r->{input_encoding} = $input-><AG::LSInput.encoding>
17168 unless defined $r->{input_encoding};
17169
17170 }__;
17171
17172 ## ISSUE: Is |certifiedText| required by parsers?
17173
17174 return $r;
17175 };
17176 @Method:
17177 @@rdf:type: c|DOMConfigurationParameterSetter
17178 @@Param:
17179 @@@Name: name
17180 @@@Type: DOMString
17181 @@@dis:actualType: c|DOMConfigurationParameterName
17182 @@@enDesc: The parameter name.
17183 @@Param:
17184 @@@Name: value
17185 @@@Type: DOMMain|DOMUserData
17186 @@@dis:actualType: ManakaiDOMLSInputToInputFile
17187 @@@enDesc: The new value.
17188 @@Return:
17189 @@@Type: idl|void
17190 @@@PerlDefC:
17191 $self->[1]->{<H::xp|ls-input-to-input-file>} = $value;
17192 @@enImplNote:
17193 Implied input processor converts non-blessed code references
17194 into a <Class::ManakaiDOMLSInputToInputFile> object.
17195 @Method:
17196 @@rdf:type: c|DOMConfigurationParameterChecker
17197 @@Param:
17198 @@@Name: name
17199 @@@Type: DOMString
17200 @@@dis:actualType: c|DOMConfigurationParameterName
17201 @@@enDesc: The parameter name.
17202 @@Param:
17203 @@@Name: value
17204 @@@Type: DOMMain|DOMUserData
17205 #@@@dis:actualType: ManakaiDOMLSInputToInputFile
17206 @@@enDesc: The new value.
17207 @@Return:
17208 @@@Type: idl|boolean
17209 @@@PerlDefC:
17210 $r = UNIVERSAL::isa ($value, 'CODE') or
17211 UNIVERSAL::isa ($value, <ClassName::ManakaiDOMLSInputToInputFile>);
17212
17213 @@Test:
17214 @@@QName: cp.ls-input-to-input-file.test
17215 @@@PerlDefC:
17216 my $xp;
17217 __CODE{createParserForTest:: $xp => $xp}__;
17218 my $cfg = $xp-><AG::LSInput.domConfig>;
17219
17220 my $cp = <Q::xp|ls-input-to-input-file>;
17221
17222 $test->id ('default');
17223 my $default = $cfg-><M::c|DOMConfiguration.getParameter> ($cp);
17224 $test->assert_isa ($default,
17225 <ClassName::ManakaiDOMLSInputToInputFile>);
17226
17227 $test->id ('set');
17228 my $sub1 = sub { };
17229 $cfg-><M::c|DOMConfiguration.setParameter> ($cp => $sub1);
17230 my $sub2 = $cfg-><M::c|DOMConfiguration.getParameter> ($cp);
17231 $test->assert_isa ($sub2, <ClassName::ManakaiDOMLSInputToInputFile>);
17232 $test->assert_equals ($sub2, $sub1);
17233
17234 $test->id ('reset');
17235 $cfg-><M::c|DOMConfiguration.setParameter> ($cp => null);
17236 my $sub3 = $cfg-><M::c|DOMConfiguration.getParameter> ($cp);
17237 $test->assert_isa ($sub3, <ClassName::ManakaiDOMLSInputToInputFile>);
17238 $test->assert_equals ($sub3, $default);
17239
17240 @@Test:
17241 @@@QName: cp.ls-input-to-input-file.default.test
17242 @@@PerlDefC:
17243 my $xp;
17244 __CODE{createParserForTest:: $xp => $xp}__;
17245 my $cfg = $xp-><AG::LSInput.domConfig>;
17246 my $cp = <Q::xp|ls-input-to-input-file>;
17247 my $default = $cfg-><M::c|DOMConfiguration.getParameter> ($cp);
17248
17249 my $err = sub {}; # dummy error handler
17250
17251 my $cs = \*STDOUT; # dummy input
17252
17253 $test->id ('cs.sysid');
17254 my $r1 = $default->resolve_ls_input ({
17255 character_stream => $cs,
17256 system_id => q<http://example.com/sysid>,
17257 }, $err);
17258 $test->assert_equals
17259 ($r1->document_uri, q<http://example.com/sysid>);
17260 $test->assert_equals
17261 ($r1->base_uri, q<http://example.com/sysid>);
17262
17263 $test->id ('cs.baseuri.sysid');
17264 my $r1 = $default->resolve_ls_input ({
17265 character_stream => $cs,
17266 system_id => q<sysid>,
17267 base_uri => q<http://example.com/>,
17268 }, $err);
17269 $test->assert_equals
17270 ($r1->document_uri, q<http://example.com/sysid>);
17271 $test->assert_equals
17272 ($r1->base_uri, q<http://example.com/>);
17273 ##ls-input-to-input-file
17274
17275 ClsDef:
17276 @ClsQName: ManakaiDOMLSInputToInputFile
17277 @enDesc:
17278 An <Class::ManakaiDOMLSInputToInputFile> object is used to covert
17279 a <IF::LSInput> object into a Perl filehandle.
17280
17281 {ISSUE::
17282 In which module this class should be placed?
17283
17284 Better interface name?
17285 }
17286
17287 @enDesc:
17288 @@ddid: perl
17289 @@@:
17290 For Perl binding, any parameter that accepts
17291 a <Class::ManakaiDOMLSInputToInputFile> would also accept a Perl code
17292 reference (subroutine reference). The code reference
17293 will be blessed as a <Class::ManakaiDOMLSInputToInputFile> whose
17294 <M::ManakaiDOMLSInputToInputFile.resolveLSInput> method invokes the code.
17295
17296 @ResourceDef:
17297 @@QName: LSInputToInputFileIOProcessor
17298 @@rdf:type: DISLang|InputProcessor
17299 @@rdf:type: DISLang|OutputProcessor
17300 @@PerlDef:
17301 $INPUT = bless $INPUT, <ClassName::ManakaiDOMLSInputToInputFile>
17302 if ref $INPUT eq 'CODE';
17303
17304 @Method:
17305 @@Name: resolveLSInput
17306 @@enDesc:
17307 Converts a <IF::LSInput> into a Perl filehandle.
17308 @@Param:
17309 @@@Name: impl
17310 @@@Type: f|MinimumImplementation
17311 @@@enDesc:
17312 The implementation object.
17313 @@Param:
17314 @@@Name: input
17315 @@@Type: LSInput
17316 @@@enDesc:
17317 The input.
17318 @@Param:
17319 @@@Name: parser
17320 @@@Type: LSParser
17321 @@@enDesc:
17322 The parser.
17323 @@Param:
17324 @@@Name: errorHandler
17325 @@@Type: c|DOMErrorHandler
17326 @@@enDesc:
17327 An error handler. If the method encounters an error
17328 or warning, it <kwd:MAY> notify it to application
17329 via this handler.
17330 @@Return:
17331 @@@Type: ManakaiDOMInputFile
17332 @@@enDesc:
17333 A <Class::ManakaiDOMInputFile> object created from <P::input>.
17334 @@@nullCase:
17335 @@@@enDesc:
17336 If the method was unable to resolve the <P::input>.
17337
17338 {ISSUE::
17339 Should we allow the method to throw exceptions?
17340 }
17341 @@@PerlDef:
17342 __DEEP{
17343 $r = $self->($self, $impl, $input, $parser, $errorHandler);
17344 }__;
17345 @@@enImplNote:
17346 Notet that the input / output processor for <CODE::$input>
17347 and return value might or might not be inserted in
17348 the <Perl::$self> code.
17349 ##LSInputToInputFile
17350
17351 ClsDef:
17352 @ClsQName: ManakaiDOMInputFile
17353 @enDesc:
17354 A set of information on the input, including filehandle.
17355
17356 @enDesc:
17357 @@ddid: perl
17358 @@@:
17359 For Perl binding, any parameter that accepts
17360 a <Class::ManakaiDOMInputFile> would also accept a Perl hash reference.
17361 If a hash reference is given to parameter that expects
17362 a <Class::ManakaiDOMInputFile> object, then it
17363 bless the hash with the class.
17364
17365 Each attributes defined
17366 in the class is associated to the hash value with the
17367 key equals to the attribut name. Each method defined in
17368 the class will invoke the code reference retrieved
17369 from the hash by the key equals to the method name.
17370
17371 If there is no value in the hash for an attribute,
17372 then its value is <DOM::null>.
17373
17374 @ResourceDef:
17375 @@QName: InputFileIOProcessor
17376 @@rdf:type: DISLang|InputProcessor
17377 @@rdf:type: DISLang|OutputProcessor
17378 @@PerlDef:
17379 $INPUT = bless $INPUT, <ClassName::ManakaiDOMInputFile>
17380 if ref $INPUT eq 'HASH';
17381
17382 @Attr:
17383 @@Name: filehandle
17384 @@Type: DISPerl|filehandle
17385 @@enDesc:
17386 The input filehandle.
17387
17388 It <kwd:MUST> be an <Perl::open>ed (and not <Perl::close>d)
17389 filehandle. Note that
17390 it does not have to be associated with an actual file
17391 in the local file system.
17392
17393 It <kwd:MUST> return a character (rather than byte)
17394 by <Perl::getc>.
17395 @@Get:
17396 @@@PerlDef: $r = $self->{filehandle};
17397 @@Set:
17398 @@@PerlDef: $self->{filehandle} = $given;
17399
17400 @Attr:
17401 @@Name: baseURI
17402 @@enDesc:
17403 The base URI of the input.
17404
17405 It <kwd:MUST> be an absolute DOM URI or <DOM::null>.
17406 Otherwise, the result is undefined.
17407 @@Type: DOMString
17408 @@nullCase:
17409 @@@enDesc:
17410 If the base URI is not available.
17411 @@Get:
17412 @@@PerlDef: $r = $self->{base_uri};
17413 @@Set:
17414 @@@PerlDef: $self->{base_uri} = $given;
17415
17416 @Attr:
17417 @@Name: documentURI
17418 @@enDesc:
17419 The URI of the document.
17420
17421 It <kwd:MUST> be an absolute DOM URI or <DOM::null>.
17422 Otherwise, the result is undefined.
17423 @@Type: DOMString
17424 @@nullCase:
17425 @@@enDesc:
17426 If the document URI is not available.
17427 @@Get:
17428 @@@PerlDef: $r = $self->{document_uri};
17429 @@Set:
17430 @@@PerlDef: $self->{document_uri} = $given;
17431
17432 @Attr:
17433 @@Name: inputEncoding
17434 @@enDesc:
17435 The input encoding name.
17436 @@Type: DOMString
17437 @@nullCase:
17438 @@@enDesc:
17439 If the input encoding name is not available.
17440 @@Get:
17441 @@@PerlDef: $r = $self->{input_encoding};
17442 @@Set:
17443 @@@PerlDef: $self->{input_encoding} = $given;
17444
17445 @Method:
17446 @@Name: close
17447 @@enDesc:
17448 Closes the file.
17449
17450 Since when the Perl's destructor is invoked is unreliable,
17451 this method is explicitly called when the file is no longer
17452 in use.
17453
17454 If the <Class::ManakaiDOMInputFile> is given as a hash
17455 reference and whose value for <CODE::close> is not defined,
17456 then the statement <Perl::close $filehandle> is done
17457 (where <Perl::$filehandle> is the <A::ManakaiDOMInputFile.filehandle>
17458 value).
17459 @@Return:
17460 @@@PerlDef:
17461 __DEEP{
17462 if ($self->{close}) {
17463 $self->{close}->($self);
17464 } else {
17465 $self->{filehandle}->close;
17466 }
17467 }__;
17468 ##ManakaiDOMInputFile
17469
17470
17471

admin@suikawiki.org
ViewVC Help
Powered by ViewVC 1.1.24