/[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.34 - (show annotations) (download)
Thu Mar 16 08:52:32 2006 UTC (18 years, 8 months ago) by wakaba
Branch: MAIN
Changes since 1.33: +432 -121 lines
++ manakai/bin/ChangeLog	16 Mar 2006 08:50:09 -0000
2006-03-16  Wakaba  <wakaba@suika.fam.cx>

	* daf.pl: In parser tests |c:anyDOMConfigurationParameter|
	properties are supported.

++ manakai/lib/Message/Util/DIS/ChangeLog	16 Mar 2006 08:52:18 -0000
2006-03-16  Wakaba  <wakaba@suika.fam.cx>

	* Value.dis (getPerlCode): A typo is fixed.

++ manakai/lib/Message/DOM/ChangeLog	16 Mar 2006 08:51:43 -0000
2006-03-16  Wakaba  <wakaba@suika.fam.cx>

	* XMLParser.dis (cfg:entity-replacement-tree): New configuration
	parameter.

	* DOMXML.dis (manakaiExpanded): Renamed from |isExpanded|.

	* DOMCore.dis, Tree.dis, DOMLS.dis, XMLParser.dis: Lexical
	data types added to configuration parameters.

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/03/15 13:45:00 $
14
15 @DefaultFor: ManakaiDOM|ManakaiDOMLatest
16
17 @Require:
18 @@Module:
19 @@@QName: MDOM|DOMLS
20 @@@WithFor: ManakaiDOM|ManakaiDOMLatest
21 @@Module:
22 @@@QName: MDOM|XDoctype
23 @@@WithFor: ManakaiDOM|ManakaiDOMLatest
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 @d:
31 http://suika.fam.cx/~wakaba/archive/2004/dom/xdt#
32 @dis:
33 http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--
34 @dtest:
35 http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#Test/
36 @dx:
37 http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/Error/DOMException#
38 @ecore:
39 http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/Error/Core/
40 @f:
41 http://suika.fam.cx/~wakaba/archive/2004/dom/feature#
42 @fe:
43 http://suika.fam.cx/www/2006/feature/
44 @gls:
45 http://suika.fam.cx/~wakaba/archive/2004/dom/gls#
46 @idl:
47 http://suika.fam.cx/~wakaba/archive/2004/dis/IDL#
48 @infoset:
49 http://www.w3.org/2001/04/infoset#
50 @lang:
51 http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#
52 @license:
53 http://suika.fam.cx/~wakaba/archive/2004/8/18/license#
54 @LSEV:
55 http://www.w3.org/2002/DOMLS
56 @ManakaiDOM:
57 http://suika.fam.cx/~wakaba/archive/2004/8/18/manakai-dom#
58 @ManakaiDOMLS:
59 http://suika.fam.cx/~wakaba/archive/2004/mdom-ls#
60 @MDOM:
61 http://suika.fam.cx/~wakaba/archive/2004/8/18/manakai-dom#ManakaiDOM.
62 @MDOMX:
63 http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#
64 @mn:
65 http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/ManakaiNode#
66 @rdf:
67 http://www.w3.org/1999/02/22-rdf-syntax-ns#
68 @rdfs:
69 http://www.w3.org/2000/01/rdf-schema#
70 @t:
71 http://suika.fam.cx/~wakaba/archive/2004/dom/tree#
72 @test:
73 http://suika.fam.cx/~wakaba/archive/2004/dis/Test#
74 @urigen:
75 http://suika.fam.cx/~wakaba/archive/2005/manakai/URI/Generic/
76 @x:
77 http://suika.fam.cx/~wakaba/archive/2004/dom/xml#
78 @xml:
79 http://www.w3.org/XML/1998/namespace
80 @xml-dtd:
81 http://www.w3.org/TR/REC-xml
82 @xmlns:
83 http://www.w3.org/2000/xmlns/
84 @xp:
85 http://suika.fam.cx/~wakaba/archive/2004/dom/xml-parser#
86
87 ## -- Features
88
89 ElementTypeBinding:
90 @Name: FeatureDef
91 @ElementType:
92 dis:ResourceDef
93 @ShadowContent:
94 @@rdf:type: f|Feature
95 @@For: =ManakaiDOM|all
96
97 ElementTypeBinding:
98 @Name: FeatureVerDef
99 @ElementType:
100 dis:ResourceDef
101 @ShadowContent:
102 @@rdf:type: f|Feature
103
104 ElementTypeBinding:
105 @Name: featureQName
106 @ElementType:
107 f:name
108 @ShadowContent:
109 @@ContentType: DISCore|QName
110
111 ResourceDef:
112 @QName: DOMString
113 @AliasFor: DOMMain|DOMString
114 @For: ManakaiDOM|DOM
115
116 ResourceDef:
117 @QName: Node
118 @AliasFor: t|Node
119 @For: ManakaiDOM|DOM
120
121 ResourceDef:
122 @QName: Element
123 @AliasFor: t|Element
124 @For: ManakaiDOM|DOM
125
126 ResourceDef:
127 @QName: Document
128 @AliasFor: t|Document
129 @For: ManakaiDOM|DOM
130
131 ResourceDef:
132 @QName: DocumentXDoctype
133 @AliasFor: d|DocumentXDoctype
134 @For: ManakaiDOM|DOM
135
136 ResourceDef:
137 @QName: DTDef
138 @AliasFor: d|DocumentTypeDefinition
139 @For: ManakaiDOM|DOM
140
141 ResourceDef:
142 @QName: ETDef
143 @AliasFor: d|ElementTypeDefinition
144 @For: ManakaiDOM|DOM
145
146 ResourceDef:
147 @QName: ATDef
148 @AliasFor: d|AttributeDefinition
149 @For: ManakaiDOM|DOM
150
151 ElementTypeBinding:
152 @Name: ClsDef
153 @ElementType:
154 dis:ResourceDef
155 @ShadowContent:
156 @@rdf:type:
157 @@@@: dis|MultipleResource
158 @@@ForCheck: !ManakaiDOM|ForIF !ManakaiDOM|ForClass
159 @@resourceFor:
160 @@@@: ManakaiDOM|ForClass
161 @@@ForCheck: ManakaiDOM|ManakaiDOM !=ManakaiDOM|ManakaiDOM
162 @@For: ManakaiDOM|DOM3
163 @@For: =ManakaiDOM|ManakaiDOM
164
165 @@rdf:type:
166 @@@@: DISLang|Class
167 @@@ForCheck: ManakaiDOM|ForClass
168
169 ElementTypeBinding:
170 @Name: ClsQName
171 @ElementType:
172 dis:QName
173 @ShadowContent:
174 @@ForCheck: ManakaiDOM|ForClass
175
176 ElementTypeBinding:
177 @Name: ClsISA
178 @ElementType:
179 dis:ISA
180 @ShadowContent:
181 @@ForCheck: ManakaiDOM|ForClass
182
183 ElementTypeBinding:
184 @Name: nullCase
185 @ElementType:
186 dis:ResourceDef
187 @ShadowContent:
188 @@rdf:type: ManakaiDOM|InCase
189 @@Value:
190 @@@is-null:1
191
192 ElementTypeBinding:
193 @Name: TrueCase
194 @ElementType:
195 dis:ResourceDef
196 @ShadowContent:
197 @@rdf:type:
198 ManakaiDOM:InCase
199 @@Value:
200 @@@@: 1
201 @@@ContentType: DISCore|Boolean
202 @@Type: idl|boolean||ManakaiDOM|all
203
204 ElementTypeBinding:
205 @Name: FalseCase
206 @ElementType:
207 dis:ResourceDef
208 @ShadowContent:
209 @@rdf:type:
210 ManakaiDOM:InCase
211 @@Value:
212 @@@@: 0
213 @@@ContentType: DISCore|Boolean
214 @@Type: idl|boolean||ManakaiDOM|all
215
216 ResourceDef:
217 @QName: LSParser
218 @AliasFor: DOMLS|LSParser
219 @For: ManakaiDOM|DOM3
220
221 ClsDef:
222 @ClsQName: ManakaiXMLParser
223
224 @Implement: DOMLS|LSParser
225
226 @f:implements: DOMLS|LSFeature30
227 @f:implements: DOMLS|ParseString10
228 @enImplNote:
229 @@ddid: dtdfeature
230 @@@:
231 {TODO::
232 Once DTD validation is implemented, add <Q::f:implements>
233 for XML-DTD-feature.
234 }
235
236 @DISLang:role: gls|ParserRole
237
238 @enDesc:
239 Note that the <Class::ManakaiXMLParser> reports any XML errors
240 (syntax errors and / or well-formedness constraint errors)
241 via the <IF::DOMCore:error-handler> registered to
242 the <A::DOMLS:LSParser.domConfig> object. Each error has
243 its <A::DOMCore:DOMError.severity>, either <C::DOMCore:SEVERITY_ERROR>
244 or <C::DOMCore:SEVERITY_FATAL_ERROR>. However, their semantics
245 are slight different from the ones of <QUOTE::error> and
246 <QUOTE::fatal error> in XML; in this implemenetation,
247 <C::DOMCore:SEVERITY_ERROR> implies that the parsing process
248 can effectively be continued to detect more errors while
249 <C::DOMCore:SEVERITY_FATAL_ERROR> implies that the error
250 is serious so that the result document tree and any errors
251 might be far from the ones obtained when the error would not
252 be found.
253
254 @Test:
255 @@QName: GLSImpl.createGLSParser.LS.test
256 @@enDesc:
257 Since there is at least one implementation of the feature (i.e.
258 this class), the <M::gls|GLSImplementation.createGLSParser>
259 must not throw an exception.
260 @@PerlDef:
261 my $impl;
262 __CODE{DOMLS|createImplForTest:: $impl => $impl}__;
263
264 my $p = $impl-><M::gls|GLSImplementation.createGLSParser>
265 ({LS => '3.0'});
266
267 $test->assert_isa ($p, <IFName::LSParser>);
268 @Test:
269 @@QName: GLSImpl.createGLSParser.ParseXMLString.test
270 @@enDesc:
271 Since there is at least one implementation of the feature (i.e.
272 this class), the <M::gls|GLSImplementation.createGLSParser>
273 must not throw an exception.
274 @@PerlDef:
275 my $impl;
276 __CODE{DOMLS|createImplForTest:: $impl => $impl}__;
277
278 my $p = $impl-><M::gls|GLSImplementation.createGLSParser>
279 ({<Q::fe|ParseXMLString> => '1.0'});
280
281 $test->assert_not_null ($p);
282 @Test:
283 @@QName: GLSImpl.createGLSParser.LS.ParseXMLString.test
284 @@enDesc:
285 Since there is at least one implementation of the feature (i.e.
286 this class), the <M::gls|GLSImplementation.createGLSParser>
287 must not throw an exception.
288 @@PerlDef:
289 my $impl;
290 __CODE{DOMLS|createImplForTest:: $impl => $impl}__;
291
292 my $p = $impl-><M::gls|GLSImplementation.createGLSParser>
293 ({LS => '3.0', <Q::fe|ParseXMLString> => '1.0'});
294
295 $test->assert_isa ($p, <IFName::LSParser>);
296
297 @Test:
298 @@QName: DOMImplLS.createLSParser.1.test
299 @@enDesc:
300 Since there is at least one implementation of the feature (i.e.
301 this class), the <M::gls|GLSImplementation.createGLSParser>
302 must not throw an exception.
303 @@PerlDef:
304 my $impl;
305 __CODE{DOMLS|createImplForTest:: $impl => $impl}__;
306
307 my $p = $impl-><M::DOMLS|DOMImplementationLS.createLSParser>
308 (<C::DOMLS|DOMImplementationLS.MODE_SYNCHRONOUS>);
309 $test->assert_isa ($p, <IFName::LSParser>);
310 @enImplNote:
311 @@ddid: lsparsertext
312 @@@:
313 Future version should add test:
314 @@QName: DOMImplLS.createLSParser.2.test
315 @@enDesc:
316 Since there is at least one implementation of the feature (i.e.
317 this class), the <M::gls|GLSImplementation.createGLSParser>
318 must not throw an exception.
319 @@PerlDef:
320 my $impl;
321 __CODE{DOMLS|createImplForTest:: $impl => $impl}__;
322
323 my $p = $impl-><M::DOMLS|DOMImplementationLS.createLSParser>
324 (<C::DOMLS|DOMImplementationLS.MODE_SYNCHRONOUS>,
325 <Q::xml-dtd:>);
326 $test->assert_isa ($p, <IFName::LSParser>);
327
328 @Test:
329 @@QName: Perl.open.utf8.strref.1.test
330 @@enDesc:
331 Does PerlIO works as intended?
332 @@PerlDef:
333 my $s = qq<\x{3001}\x0A\x{10001}>;
334 #open my $a, '<'.':utf8', \$s;
335 require IO::String;
336 my $a = IO::String->new ($s);
337 $test->assert_num_equals
338 (actual_value => ord getc $a,
339 expected_value => 0x3001);
340 $test->assert_num_equals
341 (actual_value => ord getc $a,
342 expected_value => 0x000A);
343 $test->assert_num_equals
344 (actual_value => ord getc $a,
345 expected_value => 0x10001);
346 $a->ungetc (0x10001);
347 $test->assert_num_equals
348 (actual_value => ord getc $a,
349 expected_value => 0x10001);
350 $test->assert_null (getc $a);
351 close $a;
352 @Test:
353 @@QName: Perl.open.8859.strref.2.test
354 @@enDesc:
355 Does PerlIO works as intended?
356 @@PerlDef:
357 my $s = qq<\x{0080}\x0A\x{00A9}>;
358 #open my $a, '<', \$s;
359 require IO::String;
360 my $a = IO::String->new ($s);
361 $test->assert_num_equals
362 (actual_value => ord getc $a,
363 expected_value => 0x0080);
364 $test->assert_num_equals
365 (actual_value => ord getc $a,
366 expected_value => 0x000A);
367 $test->assert_num_equals
368 (actual_value => ord getc $a,
369 expected_value => 0x00A9);
370 $a->ungetc (0x00A9);
371 $test->assert_num_equals
372 (actual_value => ord getc $a,
373 expected_value => 0x00A9);
374 $test->assert_null (getc $a);
375 close $a;
376
377 @Attr:
378 @@Name: domConfig
379 @@enDesc:
380 The configuration of the parser.
381
382 @@Get:
383 @@@Type: DOMCore|DOMConfiguration
384 @@@enDesc: The DOM configuration object.
385 @@@PerlDef:
386 __CODE{DOMCore|getConfigObject::
387 $target => $self,
388 $targetHash => $self,
389 $targetType => {<ClassName::xp|ManakaiXMLParser>},
390 $result => $r,
391 }__;
392
393 @Attr:
394 @@ForCheck: ManakaiDOM|ForClass
395 @@Name: async
396 @@enDesc:
397 Whether the parser is asynchronous or not.
398 @@Type: idl|boolean||ManakaiDOM|all
399 @@Get:
400 @@@FalseCase:
401 @@@@enDesc:
402 The parser does not in asynchronous mode.
403 @@@PerlDef: \
404 @@Test:
405 @@@QName: XMLParser.async.test
406 @@@PerlDef:
407 my $xp;
408 __CODE{createParserForTest:: $xp => $xp}__;
409
410 $test->assert_false ($xp-><AG::DOMLS|LSParser.async>);
411
412 @Attr:
413 @@ForCheck: ManakaiDOM|ForClass
414 @@Name: busy
415 @@enDesc:
416 Whether the parser is currently busy loading a document or not.
417 @@Type: idl|boolean||ManakaiDOM|all
418 @@Get:
419 @@@TrueCase:
420 @@@@enDesc:
421 The parser is currently busy.
422 @@@FalseCase:
423 @@@@enDesc:
424 The parser is not busy.
425 @@@PerlDef:
426 $r = $self->{<H::DOMLS|busy>};
427
428 @enImplNote:
429 @@ddid: abort
430 @@@:
431 {ISSUE::
432 LSParser.abort:
433
434 Is it required to support even in synchronous mode?
435 }
436
437 {TODO::
438 LSParser.filter
439 }
440
441 @ResourceDef:
442 @@QName: createParserForTest
443 @@ForCheck: ManakaiDOM|ForClass
444 @@rdf:type: DISPerl|BlockCode
445 @@PerlDef:
446 require Message::DOM::GenericLS;
447 $xp = <Class::ManakaiXMLParser>
448 ->new (<Class::gls|ManakaiGLSImplementation>->_new, '');
449
450 @Method:
451 @@ManakaiDOM:isForInternal:1
452 @@ForCheck: ManakaiDOM|ForClass
453 @@Operator: DISPerl|NewMethod
454 @@enDesc:
455 Creates a new instance of the object.
456 @@Param:
457 @@@Name: impl
458 @@@Type: gls|GLSImplementation
459 @@@enDesc:
460 The implementation from which the parser is created.
461 @@Param:
462 @@@Name: features
463 @@@Type: DOMString
464 @@@dis:actualType: f|FeaturesString
465 @@@enDesc:
466 The set of features requested for the parser.
467 @@Return:
468 @@@Type: DOMMain|DOMObject
469 @@@dis:actualType: LSParser
470 @@@enDesc:
471 The newly created parser.
472 @@@PerlDef:
473 $r = bless {
474 <H::DOMCore:implementation> => $impl,
475 }, $self;
476
477 @Method:
478 @@Name: parseURI
479 @@enDesc:
480 Parses an XML document identified by a DOM URI.
481
482 It is equivalent to <M::.parse> method with its <P::input>
483 parameter set to a <IF::LSInput> object whose
484 <A::LSInput.systemId> set to <P::uri>.
485 @@Param:
486 @@@Name: uri
487 @@@Type: DOMString
488 @@@enDesc:
489 The DOM URI of the XML document to be read.
490 @@Return:
491 @@@Type: Document
492 @@@enDesc:
493 The newly created and populated <IF::Document> node.
494 @@@dx:raises:
495 @@@@@: ManakaiDOMLS|MDOMLS_BUSY
496 @@@@enDesc:
497 If <A::LSParser.busy> is <DOM::true>.
498 @@@dx:raises:
499 @@@@@: DOMLS|PARSE_ERR
500 @@@@enDesc:
501 If the <IF::LSParser> was unable to load the document.
502 @@@PerlDef:
503 __DEEP{
504 $r = $self-><M::LSParser.parse> ({system_id => $uri});
505 }__;
506
507 @Method:
508 @@Name: parse
509 @@enDesc:
510 Parses an XML document from a resource identified
511 by a <IF::LSInput>.
512 @@Param:
513 @@@Name: input
514 @@@Type: LSInput
515 @@@enDesc:
516 The <IF::LSInput> from which the source of the document
517 is to be read.
518 @@Return:
519 @@@Type: Document
520 @@@enDesc:
521 The newly created and populated <IF::Document> node.
522 @@@dx:raises:
523 @@@@@: ManakaiDOMLS|MDOMLS_BUSY
524 @@@@enDesc:
525 If the <A::LSParser.busy> is <DOM::true>.
526 @@@dx:raises:
527 @@@@@: DOMLS|PARSE_ERR
528 @@@@enDesc:
529 If the <IF::LSParser> was unable to load the document.
530 @@@PerlDef:
531 if ($self->{<H::DOMLS|busy>}) {
532 __EXCEPTION{ManakaiDOMLS|MDOMLS_BUSY}__;
533 }
534 local $self->{<H::DOMLS|busy>} = true;
535
536 my $in;
537 __DEEP{
538 $self->{parser_cfg} = $self-><AG::LSParser.domConfig>;
539 ## Parser's |domConfig| object.
540 $self->{in_in} = $self->{parser_cfg}
541 -><M::c|DOMConfiguration.getParameter>
542 (<Q::xp|ls-input-to-input-file>);
543 $in = $self->{in_in}-><M::ManakaiDOMLSInputToInputFile.resolveLSInput>
544 ($input,
545 $self->{parser_cfg}
546 -><M::c|DOMConfiguration.getParameter>
547 ('error-handler'));
548 }__;
549 unless (defined $in) {
550 __c|ERROR{DOMLS|no-input-specified::
551 MDOMX:param-name => 'input',
552 }__;
553 __CODE{ParseError}__;
554 }
555
556 require IO::Handle;
557
558 $self->{char} = [];
559 $self->{token} = [];
560 $self->{entity} = [{
561 fh => $in-><AG::ManakaiDOMInputFile.filehandle>,
562 base_uri => $in-><AG::ManakaiDOMInputFile.baseURI>,
563 doc_uri => $in-><AG::ManakaiDOMInputFile.documentURI>,
564 line => 1,
565 column => 1,
566 pos => 0,
567 close_file => sub { $in-><M::ManakaiDOMInputFile.close> },
568 reptxt => \'',
569 is_external_entity => true,
570 }];
571 ## Entity stack.
572 $self->{location} = $self->{entity}->[-1];
573 ## Parsing location object as required by DPG.
574 ## It must always be equal to |{entity}->[-1]|.
575 $self->{entity_char} = [];
576 ## Stack for |{char}| stacks analog to |{entity}| stack.
577 $self->{entity_token} = [];
578 ## Stack for |{token}| stacks analog to |{entity}| stack.
579 $self->{xml_version} = '1.0';
580 ## Document XML version: either |1.0| or |1.1|.
581 $self->{standalone} = false;
582 ## True iff |standalone=yes| is explicitly specified.
583 $self->{has_xref} = false;
584 ## There is an unread external entity.
585 $self->{dont_process} = false;
586 ## So, don't process |ENTITY| and |ATTLIST| declarations.
587 $self->{general_entity} = {
588 lt => {is_predefined => true},
589 gt => {is_predefined => true},
590 amp => {is_predefined => true},
591 quot => {is_predefined => true},
592 apos => {is_predefined => true},
593 };
594 ## Declared general entities.
595 $self->{param_entity} = {};
596 ## Declared parameter entities.
597 $self->{attr} = {};
598 # $self->{attr}->{$element_type_name}->{$attr_name} = $attr_def
599 ## Declared attributes.
600
601 __DEEP{
602 $r = $self->{<H::c|implementation>}-><M::DOMImpl.createDocument>;
603 $self->{doc} = $r;
604 ## |Document| object.
605 CORE::delete $self->{docx};
606 ## |DocumentXDoctype| object (if necessary).
607 $self->{doc_cfg} = $r-><AG::Document.domConfig>;
608 ## |Document|'s configuration.
609 CORE::delete $self->{dtdef};
610 ## |DocumentTypeDefinition| object (if created).
611 CORE::delete $self->{dtdecl};
612 ## |DocumentTypeDeclaration| object (if created).
613
614 $r-><AS::Document.strictErrorChecking> (false);
615 ## NOTE: Any checks such as |Name| validity done by
616 ## methods on DOM nodes are disabled. It might result
617 ## in creating an ill-formed DOM tree when parser
618 ## errors are traped by |error-handler|.
619 $self->{doc_cfg}-><M::c|DOMConfiguration.setParameter>
620 (<Q::cfg|entity-reference-read-only> => false);
621 ## NOTE: Turn this configuration parameter off is required
622 ## because entity reference subtree is created by
623 ## the parser rather than |createEntityReference|'s
624 ## cloning. Parser's |cfg:entity-reference-read-only|
625 ## configuration parameter controls whether generated
626 ## subtree is then marked as read-only or not.
627 $self->{doc_cfg}-><M::c|DOMConfiguration.setParameter>
628 (<Q::cfg|clone-entity-reference-subtree> => true);
629 ## NOTE: Turn this configuration parameter on makes
630 ## entity reference subtrees in attribute default values
631 ## cloned as is into default attribute node subtrees.
632 $self->{doc_cfg}-><M::c|DOMConfiguration.setParameter>
633 (<Q::cfg|dtd-default-attributes> => false);
634 ## NOTE: Don't create DTD default attributes by
635 ## |createElementNS| method.
636 $self->{doc_cfg}-><M::c|DOMConfiguration.setParameter>
637 (<Q::cfg|xml-id> => $self->{parser_cfg}
638 -><M::c|DOMConfiguration.getParameter>
639 (<Q::cfg|xml-id>));
640 $self->{doc_cfg}-><M::c|DOMConfiguration.setParameter>
641 ('error-handler' => sub {
642 my (undef, $err) = @_;
643 return ($err-><AG::c|DOMError.severity> !=
644 <C::c|DOMError.SEVERITY_FATAL_ERROR>);
645 })
646 unless $Message::DOM::XMLParser::DEBUG;
647 ## NOTE: The default error handler in manakai |warn|s error
648 ## description.
649
650 ## Document entity's URI and base URI
651 $r-><AS::Document.documentURI> ($self->{entity}->[0]->{doc_uri});
652 $r-><AS::Document.manakaiEntityBaseURI>
653 ($self->{entity}->[0]->{base_uri});
654
655 ## Document entity -> |Document| node
656 $self->_parse_DocumentEntity;
657
658 for (@{$self->{entity}}) {
659 $_->{close_file}->();
660 ## NOTE: There should be only the document entity.
661 }
662
663 ## Replacement tree for general |Entity| nodes
664 if ($self->{parser_cfg}-><M::c|DOMConfiguration.getParameter>
665 (<Q::cfg|entity-replacement-tree>)) {
666 my @ent = values %{$self->{general_entity}};
667 for my $ent (@ent) {
668 if (exists $ent->{has_replacement_text}) {
669 my $ent_name = $ent->{name};
670 $self->{entity} = [<Code::getCopyOfEntityState::
671 $entity_type = 'general_entity',
672 $entity_name = $ent_name>];
673 $self->{location} = $self->{entity}->[-1];
674 $self->{token} = [];
675 $self->{char} = [];
676 local $ent->{is_opened} = true;
677 ## TODO: External entity support
678 $self->_parse_InternalGeneralParsedEntity ($ent->{node});
679 $ent->{node}-><AS::x|Entity.hasReplacementTree> (true);
680 $self->{entity}->[-1]->{close_file}->();
681 ## ISSUE: Should errors detected by this phase result
682 ## in |DOMLS:PARSE_ERR| exception thrown?
683 }
684 ## TODO: Read-only if configuration (for all entities)
685 }
686 } # cfg|entity-replacement-tree
687
688 ## Turns flags to their default value
689 $self->{doc_cfg}-><M::c|DOMConfiguration.setParameter>
690 (<Q::cfg|entity-reference-read-only> => null);
691 $self->{doc_cfg}-><M::c|DOMConfiguration.setParameter>
692 (<Q::cfg|clone-entity-reference-subtree> => null);
693 $self->{doc_cfg}-><M::c|DOMConfiguration.setParameter>
694 (<Q::cfg|dtd-default-attributes> => null);
695 $self->{doc_cfg}-><M::c|DOMConfiguration.setParameter>
696 (<Q::cfg|xml-id> => null);
697 $self->{doc_cfg}-><M::c|DOMConfiguration.setParameter>
698 ('error-handler' => null);
699 $r-><AS::Document.strictErrorChecking> (true);
700 }__;
701
702 @Method:
703 @@Name: shiftChar
704 @@ManakaiDOM:isForInternal:1
705 @@ForCheck: ManakaiDOM|ForClass
706 @@enDesc:
707 Returns the next character.
708 @@Return:
709 @@@Type: idl|long||ManakaiDOM|all
710 @@@enDesc:
711 The code position number of the next character, if any,
712 or <CODE::-1>.
713 @@@PerlDef:
714 if (@{$self->{char}}) {
715 $r = shift @{$self->{char}};
716 } else {
717 GETCHAR: {
718 no warnings 'closed'; # getc() on closed filehandle warning
719 my $ent = $self->{entity}->[-1];
720 my $char = $ent->{fh}->getc;
721
722 if (defined $char and length $char) {
723 $ent->{pos}++;
724 $r = ord $char;
725 if ($r == 0x000A) {
726 $ent->{line}++;
727 $ent->{column} = 1;
728 } elsif ($r == 0x000D) {
729 my $next_char = $ent->{fh}->getc;
730 if ($next_char eq "\x0A") {
731 if ($ent->{is_external_entity}) {
732 $ent->{pos}++;
733 $ent->{line}++;
734 $ent->{column} = 1;
735 $r = 0x000A; # ^ U+000D U+000A -> U+000A ^
736 } else { # Internal entity
737 $ent->{column}++;
738 ## Line number will be increased by next |shiftChar|.
739 $ent->{fh}->ungetc (0x000A);
740 #$r = 0x000D; # ^ U+000D U+000A -> U+000D ^ U+000A
741 # no change
742 }
743 } elsif ($next_char eq "\x85") {
744 if ($self->{xml_version} eq '1.1') {
745 if ($ent->{is_external_entity}) {
746 if ($ent->{no_xml11_eol}) {
747 my $location = {
748 utf32_offset => $ent->{pos} - 1,
749 line_number => $ent->{line},
750 column_number => $ent->{column},
751 };
752 my $continue = __c|ERROR{
753 xp|fatal-xml11-end-of-line-in-xml-declaration::
754 c|location => {$location},
755 xp|character-number => {$r},
756 }__;
757 unless ($continue) {
758 __CODE{ParseError}__;
759 }
760 } # no_xml11_eol
761 $ent->{pos}++;
762 $ent->{line}++;
763 $ent->{column} = 1;
764 $r = 0x000A; # ^ U+000D U+0085 -> U+000A ^
765 } else { # internal entity
766 $ent->{column}++;
767 ## Line number will be increased by next |shiftChar|.
768 $ent->{fh}->ungetc (0x0085);
769 #$r = 0x000D; # ^ U+000D U+0085 -> U+000D ^ U+0085
770 # no change
771 }
772 } else { # XML 1.0
773 ## |no_xml11_eol| will be tested later.
774 $ent->{column}++;
775 ## Line number will be increased by next |shiftChar|.
776 $ent->{fh}->ungetc (0x0085);
777 $r = 0x000A if $ent->{is_external_entity};
778 # external: ^ U+000D U+0085 -> U+000A ^ U+0085
779 # internal: ^ U+000D U+0085 -> U+000D ^ U+0085 (as is)
780 }
781 } else { # neither U+000A nor U+0085
782 $ent->{line}++;
783 $ent->{column} = 1;
784 $ent->{fh}->ungetc (ord $next_char);
785 $r = 0x000A if $ent->{is_external_entity};
786 # external: ^ U+000D _ -> U+000A ^ _
787 # internal: ^ U+000D _ -> U+000D ^ _ (as is)
788 }
789 } elsif ($r == 0x0085 or $r == 0x2028) {
790 if ($ent->{no_xml11_eol}) {
791 my $location = {
792 utf32_offset => $ent->{pos} - 1,
793 line_number => $ent->{line},
794 column_number => $ent->{column},
795 };
796 my $continue = __c|ERROR{
797 xp|fatal-xml11-end-of-line-in-xml-declaration::
798 c|location => {$location},
799 xp|character-number => {$r},
800 }__;
801 unless ($continue) {
802 __CODE{ParseError}__;
803 }
804 } # no_xml11_eol
805 $r = 0x000A if $self->{xml_version} eq '1.1' and
806 $ent->{is_external_entity};
807 ## Even in XML 1.0 it increases the line number.
808 $ent->{line}++;
809 $ent->{column} = 1;
810 } elsif (
811 not ((0x0020 <= $r and $r <= 0x007E) or
812 (0x00A0 <= $r and $r <= 0xD7FF) or
813 (0xE000 <= $r and $r <= 0xFFFD) or
814 (0x10000 <= $r and $r <= 0x10FFFF)) and
815 $r != 0x0009 and
816 not (($self->{xml_version} eq '1.0' or
817 not $ent->{is_external_entity}) and
818 (0x007F <= $r and $r <= 0x009F)) and
819 not ($self->{xml_version} eq '1.1' and
820 not $ent->{is_external_entity} and
821 0x0001 <= $r and $r <= 0x001F)
822 ) {
823 my $location = {
824 utf32_offset => $ent->{pos} - 1,
825 line_number => $ent->{line},
826 column_number => $ent->{column},
827 };
828 my $continue = __c|ERROR{xp|wf-legal-literal-character::
829 c|location => {$location},
830 xp|character-number => {$r},
831 }__;
832 unless ($continue) {
833 __CODE{ParseError}__;
834 }
835 $ent->{column}++;
836 } else { # XML |Char|
837 $ent->{column}++;
838 }
839 } else {
840 $r = -1;
841 }
842 } # GETCHAR
843 }
844
845 @Method:
846 @@ManakaiDOM:isForInternal: 1
847 @@Operator: ManakaiDOM|MUErrorHandler
848 @@enDesc:
849 When a <IF::ecore|ErrorInterface||ManakaiDOM|Perl> is <Perl::report>ed,
850 then this method is invoked.
851
852 The method calls the <cfg::DOMCore|error-handler> if the error is of
853 <IF::DOMCore|DOMError>. Otherwise, the error is re-thrown so that
854 corresponding <Perl::catch> clause, if any, can catch the error.
855 @@Param:
856 @@@Name: err
857 @@@Type: ecore|ErrorInterface||ManakaiDOM|Perl
858 @@@enDesc:
859 The reported error object.
860 @@Return:
861 @@@Type: DISPerl|Any
862 @@@enDesc:
863 If the <P::err> is a <IF::DOMCore|DOMError>, then the return value
864 of the error handler.
865
866 {NOTE:: If the error is thrown, the method never returns.
867 }
868 @@@nullCase:
869 @@@@enDesc:
870 No error handler.
871 @@@PerlDef:
872 if ($err->isa (<IFName::DOMCore|DOMError||ManakaiDOM|ManakaiDOM>)) {
873 __DEEP{
874 A: {
875 my $cfg = $self-><AG::LSParser.domConfig>;
876 my $h = $cfg-><M::DOMCore|DOMConfiguration.getParameter>
877 ('error-handler');
878 $r = $h-><M::DOMCore|DOMErrorHandler.handleError> ($err);
879 } # A
880 }__;
881 } else {
882 $err-><M::ecore|ErrorInterface||ManakaiDOM|Perl.throw>;
883 }
884
885 @DISPerl:dpgDef:
886
887 /*
888 XML Document Entity
889
890 document := prolog element *Misc
891 - *Char RestrictedChar *Char ;; [1]
892 */
893 rule DocumentEntity : standalone {
894 /*
895 prolog := XMLDecl? *Misc [doctypedecl *Misc] ;; [22]
896 */
897 ?lexmode DocumentStart;
898
899 my $doc;
900 lang:Perl {
901 $doc = $self->{doc};
902 }
903
904 ~? (XDO) {
905 ?lexmode XMLDeclarationOrPI;
906 lang:Perl {
907 $self->{entity}->[-1]->{no_xml11_eol} = true;
908 }
909 ~ (S) { // XML declaration
910 &_XMLDeclaration_ ($doc => $doc);
911 ~ (PIC2) {
912 ?lexmode DocumentProlog;
913 } else {
914 ?lexmode DocumentProlog;
915 }
916 } (NameChar) { // Processing instruction whose target begins with |xml|
917 my $target_token;
918 lang:Perl ($v => $token.value) {
919 $target_token = $token;
920 $target_token->{value} = 'xml'.$target_token->{value};
921 $self->{entity}->[-1]->{no_xml11_eol} = false;
922 }
923 ?lexmode PINmtoken;
924 ~? (Nmtoken) {
925 lang:Perl ($v => $token.value) {
926 $target_token->{value} .= $v;
927 }
928 ?lexmode PIName;
929 }
930 lang:Perl {
931 $target_token->{type} = 'Name';
932 $target_token->{location_d} += 3; # 'xml'
933 unshift @{$self->{token}}, $token;
934 $token = $target_token;
935 }
936 &_ProcessingInstruction_ ($doc => $doc, $parent => $doc);
937 ~ (PIC) {
938 ?lexmode DocumentProlog;
939 } else {
940 ?lexmode DocumentProlog;
941 }
942 } else {
943 lang:Perl {
944 $self->{entity}->[-1]->{no_xml11_eol} = false;
945 }
946 }
947 } else {
948 ?lexmode 'DocumentProlog';
949 }
950
951 // *Misc
952 ~* (CDO) {
953 &_CommentDeclaration_ ($doc => $doc, $parent => $doc);
954
955 ~ (MDC) {
956 ?lexmode DocumentProlog;
957 } else {
958 ?lexmode DocumentProlog;
959 }
960 } (PIO) {
961 &_ProcessingInstruction_ ($doc => $doc, $parent => $doc);
962
963 ~ (PIC) {
964 ?lexmode 'DocumentProlog';
965 } else {
966 ?lexmode DocumentProlog;
967 }
968 } (S) {
969 //
970 }
971
972 // doctypedecl
973 ~? (MDO) {
974 &_DocumentTypeDeclaration_ ($doc => $doc);
975
976 ~ (MDC) {
977 ?lexmode DocumentMisc;
978 } else {
979 ?lexmode DocumentMisc;
980 }
981 } else {
982 ?lexmode DocumentMisc;
983 }
984
985 lang:Perl {
986 $self->{doc}-><AS::Document.allDeclarationsProcessed> (true)
987 unless $self->{dont_process};
988 }
989
990 // *Misc
991 ~* (CDO) {
992 &_CommentDeclaration_ ($doc => $doc, $parent => $doc);
993
994 ~ (MDC) {
995 ?lexmode DocumentMisc;
996 } else {
997 ?lexmode DocumentMisc;
998 }
999 } (PIO) {
1000 &_ProcessingInstruction_ ($doc => $doc, $parent => $doc);
1001
1002 ~ (PIC) {
1003 ?lexmode 'DocumentMisc';
1004 } else {
1005 ?lexmode DocumentMisc;
1006 }
1007 } (S) {
1008 //
1009 }
1010
1011 // Document element
1012 ~ (STAGO) {
1013 &Element_ ($doc => $doc, $parent => $doc)
1014 : unshift-current-token;
1015 ~ (TAGC) {
1016 ?lexmode DocumentEnd;
1017 } else {
1018 ?lexmode DocumentEnd;
1019 }
1020 } else {
1021 ?lexmode 'DocumentEnd';
1022 }
1023
1024 // *Misc
1025 ~* (CDO) {
1026 &_CommentDeclaration_ ($doc => $doc, $parent => $doc);
1027
1028 ~ (MDC) {
1029 ?lexmode DocumentEnd;
1030 } else {
1031 ?lexmode DocumentEnd;
1032 }
1033 } (PIO) {
1034 &_ProcessingInstruction_ ($doc => $doc, $parent => $doc);
1035 ~ (PIC) {
1036 ?lexmode 'DocumentEnd';
1037 } else {
1038 ?lexmode DocumentEnd;
1039 }
1040 } (S) {
1041 //
1042 }
1043
1044 ~ (#EOF) { }
1045 } // DocumentEntity
1046
1047 /*
1048 Internal General Parsed Entity
1049
1050 An internal general parsed entity is well-formed if its
1051 replacement text matches the production labeled |content|.
1052 */
1053 rule InternalGeneralParsedEntity ($ent) : standalone {
1054 ?lexmode ElementContent;
1055
1056 my $ns;
1057 lang:Perl {
1058 $ns = {
1059 xml => <Q::xml:>,
1060 xmlns => <Q::xmlns:>,
1061 };
1062 }
1063
1064 &content ($parent => $ent, $ns => $ns);
1065
1066 ~ (#EOF) { }
1067 } // InternalGeneralParsedEntity
1068
1069 /*
1070 XML Declaration
1071
1072 XMLDecl := '<?xml' VersionInfo
1073 [EncodingDecl]
1074 [SDDecl]
1075 [S] '?>' ;; [23]
1076
1077 NOTE: XML declaration is optional in XML 1.0
1078 while it is required in XML 1.1.
1079 */
1080 rule _XMLDeclaration_ {
1081 // ~ (XDO) { }
1082 ?lexmode XMLDeclaration;
1083 //lang:Perl {
1084 // $self->{entity}->[-1]->{no_xml11_eol} = true;
1085 //}
1086 //~ (S) { }
1087
1088 ~ (Name == 'version') {
1089 ~? (S) { }
1090 ~ (VI) { }
1091 ~? (S) { }
1092
1093 my $ver;
1094 my $bad_token;
1095
1096 ~ (LIT) {
1097 ?lexmode AttributeValueLiteral;
1098
1099 ~ (STRING) {
1100 lang:Perl ($version => $token.value) {
1101 $ver = $version;
1102 $bad_token = $token;
1103 }
1104 }
1105
1106 ~ (LIT) {
1107 ?lexmode XMLDeclaration;
1108 }
1109 } (LITA) {
1110 ?lexmode AttributeValueLiteralA;
1111
1112 ~ (STRING) {
1113 lang:Perl ($version => $token.value) {
1114 $ver = $version;
1115 $bad_token = $token;
1116 }
1117 }
1118
1119 ~ (LITA) {
1120 ?lexmode XMLDeclaration;
1121 }
1122 }
1123
1124 lang:Perl : has-error {
1125 unless ($ver eq '1.0' or $ver eq '1.1') {
1126 my $location;
1127 __CODE{xp|get-location-from-token::
1128 $token => {$bad_token},
1129 $result => {$location},
1130 }__;
1131 my $continue = __DOMCore:ERROR{xp|wf-unsupported-xml-version::
1132 DOMCore|location => {$location},
1133 xp|parent => {$self->{doc}},
1134 infoset|version => {$ver},
1135 xp|error-token => {$bad_token},
1136 }__;
1137 unless ($continue) {
1138 __CODE{ParseError}__;
1139 }
1140 }
1141 $self->{doc}-><AS::Document.xmlVersion> ($ver);
1142 $self->{xml_version} = $ver;
1143 }
1144
1145 ~? (S) { }
1146 }
1147
1148 ~? (Name == 'encoding') {
1149 ~? (S) { }
1150 ~ (VI) { }
1151 ~? (S) { }
1152
1153 my $ver;
1154 my $bad_token;
1155
1156 ~ (LIT) {
1157 ?lexmode AttributeValueLiteral;
1158
1159 ~ (STRING) {
1160 lang:Perl ($version => $token.value) {
1161 $ver = $version;
1162 $bad_token = $token;
1163 }
1164 }
1165
1166 ~ (LIT) {
1167 ?lexmode XMLDeclaration;
1168 }
1169 } (LITA) {
1170 ?lexmode AttributeValueLiteralA;
1171
1172 ~ (STRING) {
1173 lang:Perl ($version => $token.value) {
1174 $ver = $version;
1175 $bad_token = $token;
1176 }
1177 }
1178
1179 ~ (LITA) {
1180 ?lexmode XMLDeclaration;
1181 }
1182 }
1183
1184 lang:Perl : has-error {
1185 unless ($ver =~ /\A[A-Za-z][A-Za-z0-9._-]*\z/) {
1186 my $location;
1187 __CODE{xp|get-location-from-token::
1188 $token => {$bad_token},
1189 $result => {$location},
1190 }__;
1191 my $continue = __DOMCore:ERROR{xp|wf-malformed-enc-name::
1192 DOMCore|location => {$location},
1193 xp|parent => {$self->{doc}},
1194 xp|name => {$ver},
1195 xp|error-token => {$bad_token},
1196 }__;
1197 unless ($continue) {
1198 __CODE{ParseError}__;
1199 }
1200 }
1201 $self->{doc}-><AS::Document.xmlEncoding> ($ver);
1202 }
1203
1204 ~? (S) { }
1205 }
1206
1207 ~? (Name == 'standalone') {
1208 ~? (S) { }
1209 ~ (VI) { }
1210 ~? (S) { }
1211
1212 my $ver;
1213 my $bad_token;
1214
1215 ~ (LIT) {
1216 ?lexmode AttributeValueLiteral;
1217
1218 ~ (STRING) {
1219 lang:Perl ($version => $token.value) {
1220 $ver = $version;
1221 $bad_token = $token;
1222 }
1223 }
1224
1225 ~ (LIT) {
1226 ?lexmode XMLDeclaration;
1227 }
1228 } (LITA) {
1229 ?lexmode AttributeValueLiteralA;
1230
1231 ~ (STRING) {
1232 lang:Perl ($version => $token.value) {
1233 $ver = $version;
1234 $bad_token = $token;
1235 }
1236 }
1237
1238 ~ (LITA) {
1239 ?lexmode XMLDeclaration;
1240 }
1241 }
1242
1243 lang:Perl : has-error {
1244 unless ($ver eq 'yes' or $ver eq 'no') {
1245 my $location;
1246 __CODE{xp|get-location-from-token::
1247 $token => {$bad_token},
1248 $result => {$location},
1249 }__;
1250 my $continue = __DOMCore:ERROR{xp|wf-malformed-xml-standalone::
1251 DOMCore|location => {$location},
1252 xp|parent => {$self->{doc}},
1253 xp|name => {$ver},
1254 xp|error-token => {$bad_token},
1255 }__;
1256 unless ($continue) {
1257 __CODE{ParseError}__;
1258 }
1259 }
1260 if ($ver eq 'yes') {
1261 $self->{doc}-><AS::Document.xmlStandalone> (true);
1262 $self->{standalone} = true;
1263 }
1264 }
1265
1266 ~? (S) { }
1267 }
1268
1269 ~ (PIC1) {
1270 lang:Perl {
1271 $self->{entity}->[-1]->{no_xml11_eol} = false;
1272 }
1273 } else {
1274 lang:Perl {
1275 $self->{entity}->[-1]->{no_xml11_eol} = false;
1276 }
1277 }
1278
1279 // ~ (PIC2) { }
1280 } // _XMLDeclaration_
1281
1282 /*
1283 Comment Declaration
1284
1285 Comment := '<!--' *(Char - '-' / '-' (Char - '-'))
1286 '-->' ;; [15]
1287 */
1288 rule _CommentDeclaration_ ($doc, $parent) {
1289 ?lexmode 'CommentDeclaration';
1290
1291 ~? (STRING) {
1292 lang:Perl ($data => $token.value) {
1293 my $com = $doc-><M::Document.createComment> ($data);
1294 $parent-><M::Node.appendChild> ($com);
1295 }
1296 } else {
1297 lang:Perl {
1298 my $com = $doc-><M::Document.createComment> ('');
1299 $parent-><M::Node.appendChild> ($com);
1300 }
1301 }
1302
1303 ~ (COM) {
1304 ?lexmode MarkupDeclaration;
1305 } else {
1306 ?lexmode MarkupDeclaration;
1307 }
1308
1309 // ~ (MDC) { }
1310 } // _CommentDeclaration
1311
1312 rule _CommentDeclarationDTD {
1313 ?lexmode CommentDeclaration;
1314
1315 ~? (STRING) {
1316 //
1317 }
1318
1319 ~ (COM) {
1320 ?lexmode MarkupDeclaration;
1321 } else {
1322 ?lexmode MarkupDeclaration;
1323 }
1324
1325 ~ (MDC) {
1326 ?lexmode DTD;
1327 } else {
1328 ?lexmode DTD;
1329 }
1330 } // _CommentDeclarationDTD
1331
1332 /*
1333 Processing Instruction
1334
1335 PI := '<?' PITarget [S *Char - *Char '?>' *Char]
1336 '?>' ;; [16]
1337 */
1338 rule _ProcessingInstruction_ ($doc, $parent) {
1339 ?lexmode 'PIName';
1340
1341 my $pi;
1342
1343 ~ (Name) {
1344 lang:Perl ($name => $token.value) : has-error {
1345 if (lc $name eq 'xml') {
1346 my $location;
1347 __CODE{xp|get-location-from-token::
1348 $token => {$token},
1349 $result => {$location},
1350 }__;
1351 my $continue = __DOMCore:ERROR{xp|wf-pi-target-is-xml::
1352 xp|name => {$name},
1353 DOMCore|location => {$location},
1354 xp|parent => {$parent},
1355 }__;
1356 unless ($continue) {
1357 __CODE{ParseError}__;
1358 }
1359 }
1360 __CODE{checkNCName:: $name => $name}__;
1361
1362 $pi = $doc-><M::Document.createProcessingInstruction>
1363 ($name);
1364 }
1365 } else {
1366 lang:Perl {
1367 $pi = $doc-><M::Document.createProcessingInstruction> ('#INVALID');
1368 }
1369 }
1370
1371 ~? (S) {
1372 ?lexmode 'PIData';
1373
1374 my $tdata;
1375
1376 ~? (DATA) {
1377 lang:Perl ($data => $token.value) {
1378 $tdata = $data;
1379 }
1380 } else {
1381 lang:Perl {
1382 $tdata = '';
1383 }
1384 }
1385
1386 lang:Perl {
1387 $pi-><AS::Node.nodeValue> ($tdata);
1388 }
1389 }
1390
1391 lang:Perl {
1392 $parent-><M::Node.appendChild> ($pi);
1393 }
1394
1395 // ~ (PIC) { }
1396 } // _ProcessingInstruction_
1397
1398 /*
1399 Processing instruction in DTD
1400 */
1401 rule _ProcessingInstructionDTD ($doc, $doctype) {
1402 ?lexmode 'PIName';
1403
1404 my $pi;
1405
1406 ~ (Name) {
1407 lang:Perl ($name => $token.value) : has-error {
1408 if (lc $name eq 'xml') {
1409 my $location;
1410 __CODE{xp|get-location-from-token::
1411 $token => {$token},
1412 $result => {$location},
1413 }__;
1414 my $continue = __DOMCore:ERROR{xp|wf-pi-target-is-xml::
1415 xp|name => {$name},
1416 DOMCore|location => {$location},
1417 xp|parent => {$doctype},
1418 }__;
1419 unless ($continue) {
1420 __CODE{ParseError}__;
1421 }
1422 }
1423 __CODE{checkNCName:: $name => $name}__;
1424
1425 $pi = $doc-><M::Document.createProcessingInstruction>
1426 ($name);
1427 $pi-><AS::x|ProcessingInstruction.manakaiBaseURI>
1428 ($self->{location}->{base_uri});
1429 }
1430 } else {
1431 lang:Perl {
1432 $pi = $doc-><M::Document.createProcessingInstruction> ('#INVALID');
1433 }
1434 }
1435
1436 ~? (S) {
1437 ?lexmode 'PIData';
1438
1439 my $tdata;
1440
1441 ~? (DATA) {
1442 lang:Perl ($data => $token.value) {
1443 $tdata = $data;
1444 }
1445 } else {
1446 lang:Perl {
1447 $tdata = '';
1448 }
1449 }
1450
1451 lang:Perl {
1452 $pi-><AS::Node.nodeValue> ($tdata);
1453 }
1454 }
1455
1456 lang:Perl {
1457 $doctype-><M::Node.appendChild> ($pi);
1458 }
1459
1460 ~ (PIC) {
1461 ?lexmode DTD;
1462 } else {
1463 ?lexmode DTD;
1464 }
1465 } // _ProcessingInstructionDTD
1466
1467 /*
1468 Element content parsing mode
1469
1470 element := EmptyElemTag /
1471 STag content ETag ;; [39]
1472 content := (CharData / element / Reference / CDSect /
1473 PI / Comment) ;; [43]
1474 */
1475 rule Element_ ($doc, $parent, $ns) : standalone {
1476 ?lexmode 'ElementContent';
1477
1478 my $node; // Current "parent" node
1479 my $nodes; // Node stack (w/o $current_node)
1480 my $type; // Current "parent" element type QName
1481 my $types; // Element type stack (w/o $current_type)
1482 //my $ns; // Current in-scope namespace bindings
1483 my $nses; // Namespace binding stack (w/o $current_ns)
1484
1485 lang:Perl {
1486 $node = $parent;
1487 $nodes = [];
1488 $type = '';
1489 $types = [];
1490 $ns ||= {
1491 xml => <Q::xml:>,
1492 xmlns => <Q::xmlns:>,
1493 };
1494 $nses = [];
1495 }
1496
1497 ~* : name => CONTENT
1498 (CharData) {
1499 // Character data
1500 lang:Perl ($data => $token.value) {
1501 $node-><M::Node.manakaiAppendText> (\($data));
1502 }
1503 } (STAGO) {
1504 // Start tag or empty element tag
1505
1506 ?lexmode 'StartTag';
1507
1508 ~ (Name) {
1509 my $attrs;
1510 lang:Perl ($name => $token.value) : has-error {
1511 __CODE{checkQName:: $name => $name}__;
1512 push @{$types}, $type;
1513 $type = $name;
1514 $attrs = {};
1515 }
1516
1517 ~? (S) {
1518 &AttributeSpecificationList
1519 ($doc => $doc, $attrs => $attrs);
1520 }
1521
1522 my $el;
1523
1524 /*
1525 Note that this implementation does not perform
1526 attribute value tokenization (but does white space
1527 normalization common to attribute types) and
1528 construct the tree as is. DOM Level 3 Core spec
1529 is unclear on this point. With tokenization,
1530 entity references cannot be preserved.
1531
1532 The manakai Node.nodeValue and Attr.value attributes
1533 do tokenization according to attribute types.
1534 */
1535
1536 /*
1537 ISSUE: Should |xml:id| attribute be typed?
1538 */
1539
1540 lang:Perl {
1541 push @{$nses}, $ns;
1542 $ns = {%$ns};
1543
1544 ## Default attributes
1545 DA: for my $atqname (%{$self->{attr}->{$type}}) {
1546 next DA unless $self->{attr}->{$type}->{$atqname};
1547 next DA if exists $attrs->{$atqname}; # specified
1548 my $dtype = $self->{attr}->{$type}->{$atqname}
1549 -><AG::ATDef.defaultType>;
1550 next DA unless $dtype == <C::ATDef.EXPLICIT_DEFAULT> or
1551 $dtype == <C::ATDef.FIXED_DEFAULT>;
1552 $attrs->{$atqname} = {is_default => true, nodes => []};
1553 for (@{$self->{attr}->{$type}->{$atqname}
1554 -><AG::Node.childNodes>}) {
1555 push @{$attrs->{$atqname}->{nodes}},
1556 $_-><M::Node.cloneNode> (true);
1557 }
1558 }
1559
1560 my %gattr;
1561 my %lattr;
1562 for my $atqname (keys %$attrs) {
1563 my ($pfx, $lname) = split /:/, $atqname;
1564 $attrs->{$atqname}->{def} = $self->{attr}->{$type}->{$atqname};
1565 if (defined $lname) { ## Global attribute
1566 if ($pfx eq 'xmlns') {
1567 my $nsuri = $attrs->{$atqname}->{is_default}
1568 ? $attrs->{$atqname}->{def}-><AG::Node.nodeValue>
1569 : $attrs->{$atqname}->{value};
1570 if (not $attrs->{$atqname}->{is_default} and
1571 $attrs->{$atqname}->{def}) {
1572 my $dt = $attrs->{$atqname}->{def}-><AG::ATDef.declaredType>;
1573 if ({
1574 <C::ATDef.ID_ATTR> => true,
1575 <C::ATDef.IDREF_ATTR> => true,
1576 <C::ATDef.IDREFS_ATTR> => true,
1577 <C::ATDef.ENTITY_ATTR> => true,
1578 <C::ATDef.ENTITIES_ATTR> => true,
1579 <C::ATDef.NMTOKEN_ATTR> => true,
1580 <C::ATDef.NMTOKENS_ATTR> => true,
1581 <C::ATDef.NOTATION_ATTR> => true,
1582 <C::ATDef.ENUMERATION_ATTR> => true,
1583 }->{$dt}) {
1584 ## Tokenization (XML 1 3.3.3)
1585 for ($nsuri) {
1586 s/^\x20+//;
1587 s/\x20+\z//;
1588 s/\x20+/ /g;
1589 }
1590 }
1591 }
1592 if ($lname eq 'xml' and
1593 $nsuri ne <Q::xml:>) {
1594 my $location;
1595 __CODE{xp|get-location-from-token::
1596 $token => $token,
1597 $result => $location,
1598 }__;
1599 my $continue = __c|ERROR{xp|nsc-reserved-prefix-xml::
1600 c|location => {$location},
1601 xp|token => {$token},
1602 infoset|prefix => {$lname},
1603 infoset|namespaceName => {$nsuri},
1604 }__;
1605 unless ($continue) {
1606 __CODE{ParseError}__;
1607 }
1608 } elsif ($lname eq 'xmlns') {
1609 my $location;
1610 __CODE{xp|get-location-from-token::
1611 $token => $token,
1612 $result => $location,
1613 }__;
1614 my $continue = __c|ERROR{xp|nsc-reserved-prefix-xmlns::
1615 c|location => {$location},
1616 xp|token => {$token},
1617 infoset|prefix => {$lname},
1618 infoset|namespaceName => {$nsuri},
1619 }__;
1620 unless ($continue) {
1621 __CODE{ParseError}__;
1622 }
1623 }
1624 if ($nsuri eq '') {
1625 if ($self->{xml_version} eq '1.0') {
1626 my $location;
1627 __CODE{xp|get-location-from-token::
1628 $token => $token,
1629 $result => $location,
1630 }__;
1631 my $continue = __c|ERROR{xp|nswf-empty-namespace-name::
1632 c|location => {$location},
1633 xp|token => {$token},
1634 infoset|namespaceName => {$nsuri},
1635 infoset|prefix => {$lname},
1636 }__;
1637 unless ($continue) {
1638 __CODE{ParseError}__;
1639 }
1640 }
1641 } elsif ($nsuri eq <Q::xml:> and
1642 $lname ne 'xml') {
1643 my $location;
1644 __CODE{xp|get-location-from-token::
1645 $token => $token,
1646 $result => $location,
1647 }__;
1648 my $continue = __c|ERROR{
1649 xp|nsc-reserved-namespace-name-xml::
1650 c|location => {$location},
1651 xp|token => {$token},
1652 infoset|prefix => {$lname},
1653 infoset|namespaceName => {$nsuri},
1654 }__;
1655 unless ($continue) {
1656 __CODE{ParseError}__;
1657 }
1658 } elsif ($nsuri eq <Q::xmlns:>) {
1659 my $location;
1660 __CODE{xp|get-location-from-token::
1661 $token => $token,
1662 $result => $location,
1663 }__;
1664 my $continue = __c|ERROR{
1665 xp|nsc-reserved-namespace-name-xmlns::
1666 c|location => {$location},
1667 xp|token => {$token},
1668 infoset|prefix => {$lname},
1669 infoset|namespaceName => {$nsuri},
1670 }__;
1671 unless ($continue) {
1672 __CODE{ParseError}__;
1673 }
1674 }
1675 $ns->{$lname} = $nsuri;
1676 delete $ns->{$lname} unless length $ns->{$lname};
1677 }
1678 $gattr{$pfx}->{$lname} = $attrs->{$atqname};
1679 } else { ## Local attribute
1680 if ($pfx eq 'xmlns') {
1681 $ns->{''} = $attrs->{xmlns}->{is_default}
1682 ? $attrs->{xmlns}->{def}-><AG::Node.nodeValue>
1683 : $attrs->{xmlns}->{value};
1684 if (not $attrs->{$atqname}->{is_default} and
1685 $attrs->{$atqname}->{def}) {
1686 my $dt = $attrs->{$atqname}->{def}-><AG::ATDef.declaredType>;
1687 if ({
1688 <C::ATDef.ID_ATTR> => true,
1689 <C::ATDef.IDREF_ATTR> => true,
1690 <C::ATDef.IDREFS_ATTR> => true,
1691 <C::ATDef.ENTITY_ATTR> => true,
1692 <C::ATDef.ENTITIES_ATTR> => true,
1693 <C::ATDef.NMTOKEN_ATTR> => true,
1694 <C::ATDef.NMTOKENS_ATTR> => true,
1695 <C::ATDef.NOTATION_ATTR> => true,
1696 <C::ATDef.ENUMERATION_ATTR> => true,
1697 }->{$dt}) {
1698 ## Tokenization (XML 1 3.3.3)
1699 for ($ns->{''}) {
1700 s/^\x20+//;
1701 s/\x20+\z//;
1702 s/\x20+/ /g;
1703 }
1704 }
1705 }
1706 unless ($ns->{''}) {
1707 delete $ns->{''};
1708 } elsif ($ns->{''} eq <Q::xml:>) {
1709 my $location;
1710 __CODE{xp|get-location-from-token::
1711 $token => $token,
1712 $result => $location,
1713 }__;
1714 my $continue = __c|ERROR{
1715 xp|nsc-reserved-namespace-name-xml::
1716 c|location => {$location},
1717 xp|token => {$token},
1718 infoset|prefix => {null},
1719 infoset|namespaceName => {<Q::xml:>},
1720 }__;
1721 unless ($continue) {
1722 __CODE{ParseError}__;
1723 }
1724 } elsif ($ns->{''} eq <Q::xmlns:>) {
1725 my $location;
1726 __CODE{xp|get-location-from-token::
1727 $token => $token,
1728 $result => $location,
1729 }__;
1730 my $continue = __c|ERROR{
1731 xp|nsc-reserved-namespace-name-xmlns::
1732 c|location => {$location},
1733 xp|token => {$token},
1734 infoset|prefix => {null},
1735 infoset|namespaceName => {<Q::xmlns:>},
1736 }__;
1737 unless ($continue) {
1738 __CODE{ParseError}__;
1739 }
1740 }
1741 } else {
1742 $lattr{$pfx} = $attrs->{$atqname};
1743 }
1744 }
1745 }
1746
1747 my ($pfx, $lname) = split /:/, $type;
1748 my $nsuri;
1749 if (defined $lname) { ## Prefixed namespace
1750 if (defined $ns->{$pfx}) {
1751 $nsuri = $ns->{$pfx};
1752 } else {
1753 my $location;
1754 __CODE{xp|get-location-from-token::
1755 $token => $token,
1756 $result => $location,
1757 }__;
1758 my $continue = __c|ERROR{xp|nsc-prefix-declared::
1759 c|location => {$location},
1760 xp|token => {$token},
1761 infoset|prefix => {$pfx},
1762 xp|name => {$type},
1763 }__;
1764 unless ($continue) {
1765 __CODE{ParseError}__;
1766 }
1767 }
1768 } else { ## Default namespace
1769 $nsuri = $ns->{''};
1770 }
1771
1772 $el = $doc-><M::Document.createElementNS>
1773 ($nsuri, $type);
1774
1775 if ($attrs->{xmlns}) {
1776 my $attr = $doc-><M::Document.createAttributeNS>
1777 (<Q::xmlns:>, 'xmlns');
1778 for (@{$attrs->{xmlns}->{nodes}}) {
1779 if ($_-><AG::Node.nodeType> == <C::Node.TEXT_NODE>) {
1780 $attr-><M::Node.manakaiAppendText>
1781 (\($_-><AG::Node.textContent>));
1782 } else {
1783 $attr-><M::Node.appendChild> ($_);
1784 }
1785 }
1786 if ($attrs->{xmlns}->{def}) {
1787 __CODE{t|setAttrType::
1788 $attr => $attr,
1789 $type => {$attrs->{xmlns}->{def}-><AG::ATDef.declaredType>},
1790 }__;
1791 }
1792 $el-><M::Element.setAttributeNodeNS> ($attr);
1793 $attr-><AS::t|Attr.specified> (false)
1794 if $attrs->{xmlns}->{is_default};
1795 }
1796
1797 for my $lname (keys %lattr) {
1798 my $attr = $doc-><M::Document.createAttributeNS>
1799 (null, $lname);
1800 for (@{$lattr{$lname}->{nodes}}) {
1801 if ($_-><AG::Node.nodeType> == <C::Node.TEXT_NODE>) {
1802 $attr-><M::Node.manakaiAppendText>
1803 (\($_-><AG::Node.textContent>));
1804 } else {
1805 $attr-><M::Node.appendChild> ($_);
1806 }
1807 }
1808 if ($attrs->{$lname}->{def}) {
1809 __CODE{t|setAttrType::
1810 $attr => $attr,
1811 $type => {$attrs->{$lname}->{def}-><AG::ATDef.declaredType>},
1812 }__;
1813 }
1814 $el-><M::Element.setAttributeNodeNS> ($attr);
1815 $attr-><AS::t|Attr.specified> (false)
1816 if $attrs->{$lname}->{is_default};
1817 }
1818
1819 for my $pfx (keys %gattr) {
1820 LN: for my $lname (keys %{$gattr{$pfx}}) {
1821 my $name = $pfx.':'.$lname;
1822 unless (defined $ns->{$pfx}) {
1823 my $location;
1824 __CODE{xp|get-location-from-token::
1825 $token => $token,
1826 $result => $location,
1827 }__;
1828 my $continue = __c|ERROR{xp|nsc-prefix-declared::
1829 c|location => {$location},
1830 xp|token => {$token},
1831 xp|name => {$name},
1832 infoset|prefix => {$pfx},
1833 }__;
1834 unless ($continue) {
1835 __CODE{ParseError}__;
1836 }
1837 }
1838 my $attr = $el-><M::Element.getAttributeNodeNS>
1839 ($ns->{$pfx}, $lname);
1840 if ($attr) {
1841 my $another_name = $attr-><AG::Node.nodeName>;
1842 if ($name ne $another_name) {
1843 my $location;
1844 __CODE{xp|get-location-from-token::
1845 $token => $token,
1846 $result => $location,
1847 }__;
1848 my $continue = __c|ERROR{
1849 xp|nswf-unique-att-spec-expanded-name::
1850 c|location => {$location},
1851 xp|token => {$token},
1852 xp|another-attribute-name => {$another_name},
1853 xp|name => {$name},
1854 infoset|namespaceName => {$ns->{$pfx}},
1855 infoset|localName => {$lname},
1856 }__;
1857 unless ($continue) {
1858 __CODE{ParseError}__;
1859 }
1860 unless ($attr-><AG::t|Attr.specified>) {
1861 ## It is a default attribute
1862 $attr = $doc-><M::Document.createAttributeNS>
1863 ($ns->{$pfx}, $name);
1864 } else {
1865 ## It is a specified attribute
1866 next LN;
1867 }
1868 } else { ## There is default attribute
1869 $attr = $doc-><M::Document.createAttributeNS>
1870 ($ns->{$pfx}, $name);
1871 }
1872 } else {
1873 $attr = $doc-><M::Document.createAttributeNS>
1874 ($ns->{$pfx}, $name);
1875 }
1876 for (@{$gattr{$pfx}->{$lname}->{nodes}}) {
1877 if ($_-><AG::Node.nodeType> == <C::Node.TEXT_NODE>) {
1878 $attr-><M::Node.manakaiAppendText>
1879 (\($_-><AG::Node.textContent>));
1880 } else {
1881 $attr-><M::Node.appendChild> ($_);
1882 }
1883 }
1884 if ($gattr{$pfx}->{$lname}->{def}) {
1885 __CODE{t|setAttrType::
1886 $attr => $attr,
1887 $type => {$gattr{$pfx}->{$lname}
1888 ->{def}-><AG::ATDef.declaredType>},
1889 }__;
1890 }
1891 $el-><M::Element.setAttributeNodeNS> ($attr);
1892 $attr-><AS::t|Attr.specified> (false)
1893 if $gattr{$pfx}->{$lname}->{is_default};
1894 } # PFX
1895 }
1896
1897 $node-><M::Node.appendChild> ($el);
1898 }
1899
1900 ~ (TAGC) {
1901 lang:Perl {
1902 push @{$nodes}, $node;
1903 $node = $el;
1904 }
1905 ?lexmode ElementContent;
1906 } (NESTC) {
1907 my $is_docel;
1908 lang:Perl {
1909 $ns = pop @{$nses};
1910 $type = pop @{$types};
1911 $is_docel = (@{$types} == 0);
1912 }
1913
1914 if-true ($is_docel) {
1915 return;
1916 }
1917
1918 ~ (TAGC) {
1919 ?lexmode ElementContent;
1920 } else {
1921 ?lexmode ElementContent;
1922 }
1923 } else {
1924 ?lexmode ElementContent;
1925 }
1926 } else {
1927 ?lexmode ElementContent;
1928 }
1929
1930 } (ETAGO) {
1931 // End tag
1932
1933 ?lexmode 'EndTag';
1934
1935 my $is_docel;
1936
1937 ~ (Name) {
1938 // No NCName & QName check (it must match to start-tag)
1939 lang:Perl ($name => $token.value) : has-error {
1940 if ($name eq $type) {
1941 $type = pop @{$types};
1942 if ($type eq '') {
1943 $is_docel = true;
1944 }
1945 $node = pop @{$nodes};
1946 $ns = pop @{$nses};
1947 } else {
1948 my $location;
1949 __CODE{xp|get-location-from-token::
1950 $token => $token,
1951 $result => $location,
1952 }__;
1953 my $continue = __DOMCore:ERROR{xp|wf-element-type-match::
1954 DOMCore:location => {$location},
1955 xp|token => {$token},
1956 xp|expected-element-type => {$type},
1957 xp|actual-element-type => {$name},
1958 xp|node => {$node},
1959 }__;
1960 unless ($continue) {
1961 __CODE{ParseError}__;
1962 }
1963 }
1964 }
1965 }
1966
1967 ~? (S) { }
1968
1969 if-true ($is_docel) {
1970 lang:Perl : has-error {
1971 if (@{$types}) {
1972 my $location;
1973 __CODE{xp|get-location-from-token::
1974 $token => $token,
1975 $result => $location,
1976 }__;
1977 for my $type (reverse @{$types}) {
1978 my $continue = __DOMCore:ERROR{xp|wf-no-end-tag::
1979 DOMCore:location => {$location},
1980 xp|token => {$token},
1981 xp|expected-element-type => {$type},
1982 xp|node => {$node},
1983 }__;
1984 unless ($continue) {
1985 __CODE{ParseError}__;
1986 }
1987 $node = shift @{$nodes};
1988 }
1989 }
1990 }
1991 return;
1992 }
1993
1994 ~ (TAGC) {
1995 ?lexmode ElementContent;
1996 } else {
1997 ?lexmode 'ElementContent';
1998 }
1999
2000 } (HCRO) {
2001 &_HexadecimalCharacterReference_
2002 ($doc => $doc, $parent => $node);
2003
2004 ~ (REFC) {
2005 ?lexmode 'ElementContent';
2006 } else {
2007 ?lexmode ElementContent;
2008 }
2009 } (CRO) {
2010 &_NumericCharacterReference_
2011 ($doc => $doc, $parent => $node);
2012
2013 ~ (REFC) {
2014 ?lexmode 'ElementContent';
2015 } else {
2016 ?lexmode ElementContent;
2017 }
2018 } (ERO) {
2019 &_GeneralEntityReferenceEC
2020 ($doc => $doc, $parent => $node, $ns => $ns);
2021 } (CDO) {
2022 &_CommentDeclaration_ ($doc => $doc, $parent => $node);
2023
2024 ~ (MDC) {
2025 ?lexmode ElementContent;
2026 } else {
2027 ?lexmode ElementContent;
2028 }
2029 } (CDSO) {
2030 &_CDATASection_ ($doc => $doc, $parent => $node);
2031
2032 ~ (MSE) {
2033 ?lexmode 'ElementContent';
2034 } else {
2035 ?lexmode ElementContent;
2036 }
2037 } (PIO) {
2038 &_ProcessingInstruction_ ($doc => $doc, $parent => $node);
2039
2040 ~ (PIC) {
2041 ?lexmode 'ElementContent';
2042 } else {
2043 ?lexmode ElementContent;
2044 }
2045 }
2046
2047 ~ (#NONE) { }
2048 } // Element_
2049
2050 /*
2051 content := [CharData]
2052 *((element / Reference / CDSect / PI / Comment) [CharData])
2053 */
2054 rule content ($parent, $ns) {
2055 // ?lexmode ElementContent;
2056
2057 my $doc;
2058 lang:Perl {
2059 $doc = $self->{doc};
2060 }
2061
2062 ~* (CharData) {
2063 lang:Perl ($data => $token.value) {
2064 $parent-><M::Node.manakaiAppendText> (\($data));
2065 }
2066 } (STAGO) {
2067 &Element_ ($doc => $doc, $parent => $parent, $ns => $ns)
2068 : unshift-current-token;
2069 ~ (TAGC) {
2070 ?lexmode ElementContent;
2071 } else {
2072 ?lexmode ElementContent;
2073 }
2074 } (HCRO) {
2075 &_HexadecimalCharacterReference_ ($parent => $parent);
2076
2077 ~ (REFC) {
2078 ?lexmode 'ElementContent';
2079 } else {
2080 ?lexmode ElementContent;
2081 }
2082 } (CRO) {
2083 &_NumericCharacterReference_ ($parent => $parent);
2084
2085 ~ (REFC) {
2086 ?lexmode 'ElementContent';
2087 } else {
2088 ?lexmode ElementContent;
2089 }
2090 } (ERO) {
2091 &_GeneralEntityReferenceEC
2092 ($doc => $doc, $parent => $parent, $ns => $ns);
2093 } (CDO) {
2094 &_CommentDeclaration_ ($doc => $doc, $parent => $parent);
2095
2096 ~ (MDC) {
2097 ?lexmode ElementContent;
2098 } else {
2099 ?lexmode ElementContent;
2100 }
2101 } (CDSO) {
2102 &_CDATASection_ ($doc => $doc, $parent => $parent);
2103
2104 ~ (MSE) {
2105 ?lexmode 'ElementContent';
2106 } else {
2107 ?lexmode ElementContent;
2108 }
2109 } (PIO) {
2110 &_ProcessingInstruction_ ($doc => $doc, $parent => $parent);
2111
2112 ~ (PIC) {
2113 ?lexmode 'ElementContent';
2114 } else {
2115 ?lexmode ElementContent;
2116 }
2117 }
2118 } // content
2119
2120 rule AttributeSpecificationList ($doc, $attrs)
2121 : standalone
2122 {
2123 ?lexmode 'StartTag';
2124
2125 my $i;
2126 lang:Perl {
2127 $i = 0;
2128 }
2129
2130 ~* (Name) {
2131 my $atqname;
2132 lang:Perl ($name => $token.value) : has-error {
2133 __CODE{checkQName:: $name => $name}__;
2134 $atqname = $name;
2135 }
2136
2137 my $vals;
2138 lang:Perl : has-error {
2139 if ($attrs->{$atqname}) {
2140 my $location;
2141 __CODE{xp|get-location-from-token::
2142 $token => $token,
2143 $result => $location,
2144 }__;
2145 my $continue = __DOMCore:ERROR{xp|wf-unique-att-spec::
2146 DOMCore:location => {$location},
2147 xp|token => {$token},
2148 xp|name => {$atqname},
2149 }__;
2150 unless ($continue) {
2151 __CODE{ParseError}__;
2152 }
2153 }
2154
2155 $vals = $attrs->{$atqname} = {
2156 nodes => [],
2157 value => '',
2158 index => $i++,
2159 };
2160 }
2161
2162 ~? (S) { }
2163 ~ (VI) { }
2164 ~? (S) { }
2165
2166 ~ (LIT) {
2167 &_AttributeValueSpecification_
2168 ($doc => $doc, $vals => $vals);
2169
2170 ~ (LIT) {
2171 ?lexmode StartTag;
2172 } else {
2173 ?lexmode StartTag;
2174 }
2175 } (LITA) {
2176 &_AttributeValueSpecificationA_
2177 ($doc => $doc, $vals => $vals);
2178
2179 ~ (LITA) {
2180 ?lexmode StartTag;
2181 } else {
2182 ?lexmode StartTag;
2183 }
2184 }
2185 } (S) : separator : terminator? { }
2186 } // AttributeSpecificationList
2187
2188 rule _AttributeValueSpecification_ ($doc, $vals) {
2189 // ~ (LIT) { }
2190 ?lexmode 'AttributeValueLiteral';
2191
2192 ~* (STRING) {
2193 lang:Perl ($value => $token.value) {
2194 $value =~ s/[\x09\x0A\x0D]/ /g;
2195 my $text = $doc-><M::Document.createTextNode> ($value);
2196 push @{$vals->{nodes}}, $text;
2197 $vals->{value} .= $value;
2198 }
2199 } (HCRO) {
2200 &_HexadecimalCharacterReferenceV_
2201 ($doc => $doc, $vals => $vals);
2202
2203 ~ (REFC) {
2204 ?lexmode AttributeValueLiteral;
2205 } else {
2206 ?lexmode AttributeValueLiteral;
2207 }
2208 } (CRO) {
2209 &_NumericCharacterReferenceV_
2210 ($doc => $doc, $vals => $vals);
2211
2212 ~ (REFC) {
2213 ?lexmode AttributeValueLiteral;
2214 } else {
2215 ?lexmode AttributeValueLiteral;
2216 }
2217 } (ERO) {
2218 // TODO: Attribute value normalization
2219 &_GeneralEntityReferenceV_
2220 ($doc => $doc, $vals => $vals);
2221
2222 ~ (REFC) {
2223 ?lexmode AttributeValueLiteral;
2224 } else {
2225 ?lexmode AttributeValueLiteral;
2226 }
2227 }
2228
2229 // ~ (LIT) { } (LITA) { }
2230 } // _AttributeValueSpecification_
2231
2232 rule _AttributeValueSpecificationA_ ($doc, $vals) {
2233 // ~ (LITA) { }
2234 ?lexmode 'AttributeValueLiteralA';
2235
2236 ~* (STRING) {
2237 lang:Perl ($value => $token.value) {
2238 $value =~ s/[\x09\x0A\x0D]/ /g;
2239 my $text = $doc-><M::Document.createTextNode> ($value);
2240 push @{$vals->{nodes}}, $text;
2241 $vals->{value} .= $value;
2242 }
2243 } (HCRO) {
2244 &_HexadecimalCharacterReferenceV_
2245 ($doc => $doc, $vals => $vals);
2246
2247 ~ (REFC) {
2248 ?lexmode AttributeValueLiteralA;
2249 } else {
2250 ?lexmode AttributeValueLiteralA;
2251 }
2252 } (CRO) {
2253 &_NumericCharacterReferenceV_
2254 ($doc => $doc, $vals => $vals);
2255
2256 ~ (REFC) {
2257 ?lexmode AttributeValueLiteralA;
2258 } else {
2259 ?lexmode AttributeValueLiteralA;
2260 }
2261 } (ERO) {
2262 // TODO: Attribute value normalization
2263 &_GeneralEntityReferenceV_
2264 ($doc => $doc, $vals => $vals);
2265
2266 ~ (REFC) {
2267 ?lexmode AttributeValueLiteralA;
2268 } else {
2269 ?lexmode AttributeValueLiteralA;
2270 }
2271 }
2272
2273 // ~ (LITA) { }
2274 } // _AttributeValueSpecificationA_
2275
2276 /*
2277 Parsing replacement text of an entity referenced in
2278 an attribute value specification.
2279 */
2280 rule AttributeValueLiteralE_ ($parent, $vals)
2281 : recursive
2282 {
2283 // ?lexmode AttributeValueLiteralE;
2284
2285 ~* (STRING) {
2286 lang:Perl ($value => $token.value) {
2287 $value =~ s/[\x09\x0A\x0D]/ /g;
2288 $parent-><M::Node.manakaiAppendText> (\($value));
2289 $vals->{value} .= $value;
2290 }
2291 } (HCRO) {
2292 &_HexadecimalCharacterReferenceAE_
2293 ($parent => $parent, $vals => $vals);
2294
2295 ~ (REFC) {
2296 ?lexmode AttributeValueLiteralE;
2297 } else {
2298 ?lexmode AttributeValueLiteralE;
2299 }
2300 } (CRO) {
2301 &_NumericCharacterReferenceAE_
2302 ($parent => $parent, $vals => $vals);
2303
2304 ~ (REFC) {
2305 ?lexmode AttributeValueLiteralE;
2306 } else {
2307 ?lexmode AttributeValueLiteralE;
2308 }
2309 } (ERO) {
2310 &_GeneralEntityReferenceAE_ ($parent => $parent, $vals => $vals);
2311
2312 ~ (REFC) {
2313 ?lexmode AttributeValueLiteralE;
2314 } else {
2315 ?lexmode AttributeValueLiteralE;
2316 }
2317 } (#INVALID == '<') {
2318 lang:Perl : has-error {
2319 my $location;
2320 __CODE{xp|get-location-from-token::
2321 $token => $token,
2322 $result => $location,
2323 }__;
2324 my $continue = __DOMCore:ERROR{xp|wf-no-lt-in-attribute-values::
2325 c|location => {$location},
2326 xp|token => {$token},
2327 }__;
2328 unless ($continue) {
2329 __CODE{ParseError}__;
2330 }
2331
2332 $parent-><M::Node.manakaiAppendText> ('<');
2333 $vals->{value} .= '<';
2334 }
2335 }
2336
2337 // ~ (#EOF) { }
2338 } // AttributeValueLiteralE_
2339
2340 /*
2341 CDATA Section Content Parsing Mode
2342 */
2343 rule _CDATASection_ ($doc, $parent) {
2344 ?lexmode 'CDATASectionContent';
2345
2346 my $cdata;
2347
2348 ~? (CData) {
2349 lang:Perl ($data => $token.value) {
2350 $cdata = $data;
2351 }
2352 } else {
2353 lang:Perl {
2354 $cdata = '';
2355 }
2356 }
2357
2358 lang:Perl {
2359 my $cdsect = $doc-><M::Document.createCDATASection>
2360 ($cdata);
2361 $parent-><M::Node.appendChild> ($cdsect);
2362 }
2363
2364 // ~ (MSE) { }
2365 } // _CDATASection_
2366
2367 rule _NumericCharacterReference_ ($parent) {
2368 ?lexmode 'NumericCharacterReference';
2369
2370 ~ (NUMBER) {
2371 lang:Perl ($num => $token.value) : has-error {
2372 $num += 0;
2373 unless (
2374 ($self->{xml_version} eq '1.0' and
2375 ((0x0020 <= $num and $num <= 0xD7FF) or
2376 (0xE000 <= $num and $num <= 0xFFFD) or
2377 (0x10000 <= $num and $num <= 0x10FFFF) or
2378 $num == 0x9 or $num == 0xA or $num == 0xD)) or
2379 ($self->{xml_version} eq '1.1' and
2380 ((0x0001 <= $num and $num <= 0xD7FF) or
2381 (0xE000 <= $num and $num <= 0xFFFD) or
2382 (0x10000 <= $num and $num <= 0x10FFFF)))
2383 ) {
2384 my $location;
2385 __CODE{xp|get-location-from-token::
2386 $token => $token,
2387 $result => $location,
2388 }__;
2389 my $continue = __DOMCore:ERROR{xp|wf-legal-character::
2390 DOMCore:location => {$location},
2391 xp|token => {$token},
2392 xp|character-number => {$num},
2393 xp|parent => {$parent},
2394 }__;
2395 unless ($continue) {
2396 __CODE{ParseError}__;
2397 }
2398 }
2399 $parent-><M::Node.manakaiAppendText> (chr $num);
2400 }
2401 }
2402
2403 // ~ (REFC) { }
2404 } // _NumericCharacterReference_
2405
2406 rule _NumericCharacterReferenceV_ ($doc, $vals) {
2407 ?lexmode 'NumericCharacterReference';
2408
2409 ~ (NUMBER) {
2410 lang:Perl ($num => $token.value) : has-error {
2411 $num += 0;
2412 unless (
2413 ($self->{xml_version} eq '1.0' and
2414 ((0x0020 <= $num and $num <= 0xD7FF) or
2415 (0xE000 <= $num and $num <= 0xFFFD) or
2416 (0x10000 <= $num and $num <= 0x10FFFF) or
2417 $num == 0x9 or $num == 0xA or $num == 0xD)) or
2418 ($self->{xml_version} eq '1.1' and
2419 ((0x0001 <= $num and $num <= 0xD7FF) or
2420 (0xE000 <= $num and $num <= 0xFFFD) or
2421 (0x10000 <= $num and $num <= 0x10FFFF)))
2422 ) {
2423 my $location;
2424 __CODE{xp|get-location-from-token::
2425 $token => $token,
2426 $result => $location,
2427 }__;
2428 my $continue = __DOMCore:ERROR{xp|wf-legal-character::
2429 DOMCore:location => {$location},
2430 xp|token => {$token},
2431 xp|character-number => {$num},
2432 }__;
2433 unless ($continue) {
2434 __CODE{ParseError}__;
2435 }
2436 }
2437 my $ncr = $doc-><M::Document.createTextNode>
2438 (my $char = chr $num);
2439 push @{$vals->{nodes}}, $ncr;
2440 $vals->{value} .= $char;
2441 }
2442 }
2443
2444 // ~ (REFC) { }
2445 } // _NumericCharacterReferenceV_
2446
2447 /*
2448 Numeric character reference in the replacement text
2449 of the entity referenced in an attribute value specification
2450 */
2451 rule _NumericCharacterReferenceAE_ ($parent, $vals)
2452 {
2453 ?lexmode NumericCharacterReference;
2454
2455 ~ (NUMBER) {
2456 lang:Perl ($num => $token.value) : has-error {
2457 $num += 0;
2458 unless (
2459 ($self->{xml_version} eq '1.0' and
2460 ((0x0020 <= $num and $num <= 0xD7FF) or
2461 (0xE000 <= $num and $num <= 0xFFFD) or
2462 (0x10000 <= $num and $num <= 0x10FFFF) or
2463 $num == 0x9 or $num == 0xA or $num == 0xD)) or
2464 ($self->{xml_version} eq '1.1' and
2465 ((0x0001 <= $num and $num <= 0xD7FF) or
2466 (0xE000 <= $num and $num <= 0xFFFD) or
2467 (0x10000 <= $num and $num <= 0x10FFFF)))
2468 ) {
2469 my $location;
2470 __CODE{xp|get-location-from-token::
2471 $token => $token,
2472 $result => $location,
2473 }__;
2474 my $continue = __DOMCore:ERROR{xp|wf-legal-character::
2475 DOMCore:location => {$location},
2476 xp|token => {$token},
2477 xp|character-number => {$num},
2478 }__;
2479 unless ($continue) {
2480 __CODE{ParseError}__;
2481 }
2482 }
2483 my $char = chr $num;
2484 $parent-><M::Node.manakaiAppendText> (\$char);
2485 $vals->{value} .= $char;
2486 }
2487 }
2488
2489 // ~ (REFC) { }
2490 } // _NumericCharacterReferenceAE_
2491
2492 rule _NumericCharacterReferenceEV_ ($vals)
2493 {
2494 ?lexmode 'NumericCharacterReference';
2495
2496 ~ (NUMBER) {
2497 lang:Perl ($num => $token.value) : has-error {
2498 $num += 0;
2499 unless (
2500 ($self->{xml_version} eq '1.0' and
2501 ((0x0020 <= $num and $num <= 0xD7FF) or
2502 (0xE000 <= $num and $num <= 0xFFFD) or
2503 (0x10000 <= $num and $num <= 0x10FFFF) or
2504 $num == 0x9 or $num == 0xA or $num == 0xD)) or
2505 ($self->{xml_version} eq '1.1' and
2506 ((0x0001 <= $num and $num <= 0xD7FF) or
2507 (0xE000 <= $num and $num <= 0xFFFD) or
2508 (0x10000 <= $num and $num <= 0x10FFFF)))
2509 ) {
2510 my $location;
2511 __CODE{xp|get-location-from-token::
2512 $token => $token,
2513 $result => $location,
2514 }__;
2515 my $continue = __DOMCore:ERROR{xp|wf-legal-character::
2516 DOMCore:location => {$location},
2517 xp|token => {$token},
2518 xp|character-number => {$num},
2519 }__;
2520 unless ($continue) {
2521 __CODE{ParseError}__;
2522 }
2523 }
2524 push @{$vals}, chr $num;
2525 }
2526 }
2527
2528 // ~ (REFC) { }
2529 } // _NumericCharacterReferenceEV_
2530
2531 rule _HexadecimalCharacterReference_ ($parent) {
2532 ?lexmode 'HexadecimalCharacterReference';
2533
2534 ~ (Hex) {
2535 lang:Perl ($v => $token.value) : has-error {
2536 my $num = hex $v;
2537 unless (
2538 ($self->{xml_version} eq '1.0' and
2539 ((0x0020 <= $num and $num <= 0xD7FF) or
2540 (0xE000 <= $num and $num <= 0xFFFD) or
2541 (0x10000 <= $num and $num <= 0x10FFFF) or
2542 $num == 0x9 or $num == 0xA or $num == 0xD)) or
2543 ($self->{xml_version} eq '1.1' and
2544 ((0x0001 <= $num and $num <= 0xD7FF) or
2545 (0xE000 <= $num and $num <= 0xFFFD) or
2546 (0x10000 <= $num and $num <= 0x10FFFF)))
2547 ) {
2548 my $location;
2549 __CODE{xp|get-location-from-token::
2550 $token => $token,
2551 $result => $location,
2552 }__;
2553 my $continue = __DOMCore:ERROR{xp|wf-legal-character::
2554 DOMCore:location => {$location},
2555 xp|token => {$token},
2556 xp|character-number => {$num},
2557 xp|parent => {$parent},
2558 }__;
2559 unless ($continue) {
2560 __CODE{ParseError}__;
2561 }
2562 }
2563 $parent-><M::Node.manakaiAppendText> (chr $num);
2564 }
2565 }
2566
2567 // ~ (REFC) { }
2568 } // _HexadecimalCharacterReference_
2569
2570 rule _HexadecimalCharacterReferenceV_ ($doc, $vals) {
2571 ?lexmode 'HexadecimalCharacterReference';
2572
2573 ~ (Hex) {
2574 lang:Perl ($v => $token.value) : has-error {
2575 my $num = hex $v;
2576 unless (
2577 ($self->{xml_version} eq '1.0' and
2578 ((0x0020 <= $num and $num <= 0xD7FF) or
2579 (0xE000 <= $num and $num <= 0xFFFD) or
2580 (0x10000 <= $num and $num <= 0x10FFFF) or
2581 $num == 0x9 or $num == 0xA or $num == 0xD)) or
2582 ($self->{xml_version} eq '1.1' and
2583 ((0x0001 <= $num and $num <= 0xD7FF) or
2584 (0xE000 <= $num and $num <= 0xFFFD) or
2585 (0x10000 <= $num and $num <= 0x10FFFF)))
2586 ) {
2587 my $location;
2588 __CODE{xp|get-location-from-token::
2589 $token => $token,
2590 $result => $location,
2591 }__;
2592 my $continue = __DOMCore:ERROR{xp|wf-legal-character::
2593 DOMCore:location => {$location},
2594 xp|token => {$token},
2595 xp|character-number => {$num},
2596 }__;
2597 unless ($continue) {
2598 __CODE{ParseError}__;
2599 }
2600 }
2601 my $ncr = $doc-><M::Document.createTextNode>
2602 (my $char = chr $num);
2603 push @{$vals->{nodes}}, $ncr;
2604 $vals->{value} .= $char;
2605 }
2606 }
2607
2608 // ~ (REFC) { }
2609 } // _HexadecimalCharacterReferenceV_
2610
2611 /*
2612 Hexadecimal character reference in the replacement text
2613 of the entity referenced in an attribute value literal
2614 */
2615 rule _HexadecimalCharacterReferenceAE_ ($parent, $vals)
2616 {
2617 ?lexmode HexadecimalCharacterReference;
2618
2619 ~ (Hex) {
2620 lang:Perl ($v => $token.value) : has-error {
2621 my $num = hex $v;
2622 unless (
2623 ($self->{xml_version} eq '1.0' and
2624 ((0x0020 <= $num and $num <= 0xD7FF) or
2625 (0xE000 <= $num and $num <= 0xFFFD) or
2626 (0x10000 <= $num and $num <= 0x10FFFF) or
2627 $num == 0x9 or $num == 0xA or $num == 0xD)) or
2628 ($self->{xml_version} eq '1.1' and
2629 ((0x0001 <= $num and $num <= 0xD7FF) or
2630 (0xE000 <= $num and $num <= 0xFFFD) or
2631 (0x10000 <= $num and $num <= 0x10FFFF)))
2632 ) {
2633 my $location;
2634 __CODE{xp|get-location-from-token::
2635 $token => $token,
2636 $result => $location,
2637 }__;
2638 my $continue = __DOMCore:ERROR{xp|wf-legal-character::
2639 DOMCore:location => {$location},
2640 xp|token => {$token},
2641 xp|character-number => {$num},
2642 }__;
2643 unless ($continue) {
2644 __CODE{ParseError}__;
2645 }
2646 }
2647 my $char = chr $num;
2648 $parent-><M::Node.manakaiAppendText> (\$char);
2649 $vals->{value} .= $char;
2650 }
2651 }
2652
2653 // ~ (REFC) { }
2654 } // _HexadecimalCharacterReferenceAE_
2655
2656 rule _HexadecimalCharacterReferenceEV_ ($vals) {
2657 ?lexmode HexadecimalCharacterReference;
2658
2659 ~ (Hex) {
2660 lang:Perl ($v => $token.value) : has-error {
2661 my $num = hex $v;
2662 unless (
2663 ($self->{xml_version} eq '1.0' and
2664 ((0x0020 <= $num and $num <= 0xD7FF) or
2665 (0xE000 <= $num and $num <= 0xFFFD) or
2666 (0x10000 <= $num and $num <= 0x10FFFF) or
2667 $num == 0x9 or $num == 0xA or $num == 0xD)) or
2668 ($self->{xml_version} eq '1.1' and
2669 ((0x0001 <= $num and $num <= 0xD7FF) or
2670 (0xE000 <= $num and $num <= 0xFFFD) or
2671 (0x10000 <= $num and $num <= 0x10FFFF)))
2672 ) {
2673 my $location;
2674 __CODE{xp|get-location-from-token::
2675 $token => $token,
2676 $result => $location,
2677 }__;
2678 my $continue = __DOMCore:ERROR{xp|wf-legal-character::
2679 DOMCore:location => {$location},
2680 xp|token => {$token},
2681 xp|character-number => {$num},
2682 }__;
2683 unless ($continue) {
2684 __CODE{ParseError}__;
2685 }
2686 }
2687 push @{$vals}, chr $num;
2688 }
2689 }
2690
2691 // ~ (REFC) { }
2692 } // _HexadecimalCharacterReferenceEV_
2693
2694 /*
2695 General entity reference in element's content
2696 */
2697 rule _GeneralEntityReferenceEC ($doc, $parent, $ns)
2698 : recursive
2699 {
2700 ?lexmode 'EntityReference';
2701
2702 ~ (Name == 'lt') {
2703 lang:Perl {
2704 $parent-><M::Node.manakaiAppendText> ('<');
2705 }
2706 } (Name == 'gt') {
2707 lang:Perl {
2708 $parent-><M::Node.manakaiAppendText> ('>');
2709 }
2710 } (Name == 'amp') {
2711 lang:Perl {
2712 $parent-><M::Node.manakaiAppendText> ('&');
2713 }
2714 } (Name == 'quot') {
2715 lang:Perl {
2716 $parent-><M::Node.manakaiAppendText> ('"');
2717 }
2718 } (Name == 'apos') {
2719 lang:Perl {
2720 $parent-><M::Node.manakaiAppendText> ("'");
2721 }
2722 } (Name) {
2723 my $er;
2724 lang:Perl ($name => $token.value) : has-error {
2725 __CODE{checkNCName:: $name => $name}__;
2726
2727 $er = $doc-><M::Document.createEntityReference>
2728 ($name);
2729 $er-><AS::Node.textContent> ('');
2730 ## NOTE: When document entity (and entities referenced directly
2731 ## or indirectly from it) is parsed, no general entity
2732 ## node have its replacement tree. During general
2733 ## entity node collection construction, however,
2734 ## some entity node has replacement tree.
2735 $parent-><M::Node.appendChild> ($er);
2736
2737 my $ent = $self->{general_entity}->{$name};
2738 if (not $ent) { # no entity declaration
2739 if ($self->{standalone} or not $self->{has_xref}) { # WFC error
2740 my $location;
2741 __CODE{xp|get-location-from-token::
2742 $token => {$token},
2743 $result => {$location},
2744 }__;
2745 my $continue = __DOMCore:ERROR{xp|wf-entity-declared::
2746 xp|error-token => {$token},
2747 c|location => {$location},
2748 xp|name => {$name},
2749 }__;
2750 unless ($continue) {
2751 __CODE{ParseError}__;
2752 }
2753 } # Otherwise VC error
2754 push @{$self->{entity}}, <Code::getEmptyEntityState::
2755 $name = $name>;
2756 $er-><AS::x|EntityReference.manakaiExpanded> (false);
2757
2758 } else { # there IS entity declaration
2759 if (($self->{standalone} or not $self->{has_xref}) and
2760 $ent->{is_externally_declared} and
2761 not $self->{entity}->[-1]->{is_externally_declared}) {
2762 my $location;
2763 __CODE{xp|get-location-from-token::
2764 $token => {$token},
2765 $result => {$location},
2766 }__;
2767 my $continue = __DOMCore:ERROR{xp|wf-entity-declared::
2768 xp|error-token => {$token},
2769 c|location => {$location},
2770 xp|name => {$name},
2771 }__;
2772 unless ($continue) {
2773 __CODE{ParseError}__;
2774 }
2775 }
2776 $er-><AS::x|EntityReference.manakaiExpanded>
2777 ($ent->{has_replacement_text});
2778 push @{$self->{entity}}, <Code::getCopyOfEntityState::
2779 $entity_type = 'general_entity',
2780 $entity_name = $name>;
2781
2782 if (defined $ent->{notation}) {
2783 my $location;
2784 __CODE{xp|get-location-from-token::
2785 $token => {$token},
2786 $result => {$location},
2787 }__;
2788 my $continue = __c|ERROR{xp|wf-parsed-entity::
2789 xp|error-token => {$token},
2790 c|location => {$location},
2791 xp|name => {$name},
2792 }__;
2793 unless ($continue) {
2794 __CODE{ParseError}__;
2795 }
2796 } # if unparsed entity
2797
2798 if ($ent->{is_opened}) {
2799 my $location;
2800 __CODE{xp|get-location-from-token::
2801 $token => {$token},
2802 $result => {$location},
2803 }__;
2804 my $continue = __c|ERROR{xp|wf-no-recursion::
2805 xp|error-token => {$token},
2806 c|location => {$location},
2807 xp|name => {$name},
2808 }__;
2809 unless ($continue) {
2810 __CODE{ParseError}__;
2811 }
2812 open my $empty, '<', \'';
2813 $self->{entity}->[-1]->{fh} = $empty;
2814 $er-><AS::x|EntityReference.manakaiExpanded> (false);
2815 } # recursive
2816 $ent->{is_opened} = true;
2817 } # entity declared
2818 $self->{location} = $self->{entity}->[-1];
2819 push @{$self->{entity_token}}, $self->{token};
2820 $self->{token} = [];
2821 push @{$self->{entity_char}}, $self->{char};
2822 $self->{char} = [];
2823 }
2824
2825 ?lexmode ElementContent;
2826 &content ($doc => $doc, $parent => $er, $ns => $ns);
2827 ~ (#EOF) { }
2828 lang:Perl {
2829 $self->{general_entity}->{$self->{entity}->[-1]->{name}}
2830 ->{is_opened} = false
2831 if $self->{general_entity}->{$self->{entity}->[-1]->{name}};
2832 $self->{token} = pop @{$self->{entity_token}};
2833 $self->{char} = pop @{$self->{entity_char}};
2834 pop (@{$self->{entity}})->{close_file}->();
2835 $self->{location} = $self->{entity}->[-1];
2836 }
2837
2838 // TODO: Set read-only flag
2839
2840 ?lexmode EntityReference;
2841 ?requires-next-token;
2842 }
2843
2844 ~ (REFC) {
2845 ?lexmode ElementContent;
2846 } else {
2847 ?lexmode ElementContent;
2848 }
2849 } // _GeneralEntityReferenceEC
2850
2851 /*
2852 General entity reference in an attribute value literal
2853 */
2854 rule _GeneralEntityReferenceV_ ($vals) {
2855 ?lexmode EntityReference;
2856
2857 ~ (Name == 'lt') {
2858 lang:Perl {
2859 push @{$vals->{nodes}}, $self->{doc}-><M::Document.createTextNode>
2860 ('<');
2861 $vals->{value} .= '<';
2862 }
2863 } (Name == 'gt') {
2864 lang:Perl {
2865 push @{$vals->{nodes}}, $self->{doc}-><M::Document.createTextNode>
2866 ('>');
2867 $vals->{value} .= '>';
2868 }
2869 } (Name == 'amp') {
2870 lang:Perl {
2871 push @{$vals->{nodes}}, $self->{doc}-><M::Document.createTextNode>
2872 ('&');
2873 $vals->{value} .= '&';
2874 }
2875 } (Name == 'quot') {
2876 lang:Perl {
2877 push @{$vals->{nodes}}, $self->{doc}-><M::Document.createTextNode>
2878 ('"');
2879 $vals->{value} .= '"';
2880 }
2881 } (Name == 'apos') {
2882 lang:Perl {
2883 push @{$vals->{nodes}}, $self->{doc}-><M::Document.createTextNode>
2884 ("'");
2885 $vals->{value} .= "'";
2886 }
2887 } (Name) {
2888 my $er;
2889 lang:Perl ($name => $token.value) : has-error {
2890 __CODE{checkNCName:: $name => $name}__;
2891
2892 $er = $self->{doc}-><M::Document.createEntityReference> ($name);
2893 $er-><AS::Node.textContent> ('');
2894 ## NOTE: When document entity (and entities referenced directly
2895 ## or indirectly from it) is parsed, no general entity
2896 ## node have its replacement tree. During general
2897 ## entity node collection construction, however,
2898 ## some entity node has replacement tree.
2899 my $ent = $self->{general_entity}->{$name};
2900 if (not $ent) { # no entity declaration
2901 if ($self->{standalone} or not $self->{has_xref}) { # WFC error
2902 my $location;
2903 __CODE{xp|get-location-from-token::
2904 $token => {$token},
2905 $result => {$location},
2906 }__;
2907 my $continue = __DOMCore:ERROR{xp|wf-entity-declared::
2908 xp|error-token => {$token},
2909 c|location => {$location},
2910 xp|name => {$name},
2911 }__;
2912 unless ($continue) {
2913 __CODE{ParseError}__;
2914 }
2915 } # Otherwise VC error
2916 push @{$self->{entity}}, <Code::getEmptyEntityState::
2917 $name = $name>;
2918 $er-><AS::x|EntityReference.manakaiExpanded> (false);
2919
2920 } else { # there IS entity declaration
2921 if (($self->{standalone} or not $self->{has_xref}) and
2922 $ent->{is_externally_declared} and
2923 not $self->{entity}->[-1]->{is_externally_declared}) {
2924 my $location;
2925 __CODE{xp|get-location-from-token::
2926 $token => {$token},
2927 $result => {$location},
2928 }__;
2929 my $continue = __DOMCore:ERROR{xp|wf-entity-declared::
2930 xp|error-token => {$token},
2931 c|location => {$location},
2932 xp|name => {$name},
2933 }__;
2934 unless ($continue) {
2935 __CODE{ParseError}__;
2936 }
2937 }
2938
2939 if ($ent->{is_external_entity}) {
2940 my $location;
2941 __CODE{xp|get-location-from-token::
2942 $token => {$token},
2943 $result => {$location},
2944 }__;
2945 my $continue = __c|ERROR{xp|wf-no-external-entity-references::
2946 xp|error-token => {$token},
2947 c|location => {$location},
2948 xp|name => {$name},
2949 }__;
2950 unless ($continue) {
2951 __CODE{ParseError}__;
2952 }
2953 ## NOTE: |xp:wf-parsed-entity| is not checked
2954 } # if external entity
2955
2956 $er-><AS::x|EntityReference.manakaiExpanded>
2957 ($ent->{has_replacement_text});
2958 push @{$self->{entity}}, <Code::getCopyOfEntityState::
2959 $entity_type = 'general_entity',
2960 $entity_name = $name>;
2961
2962 if ($ent->{is_opened}) {
2963 my $location;
2964 __CODE{xp|get-location-from-token::
2965 $token => {$token},
2966 $result => {$location},
2967 }__;
2968 my $continue = __c|ERROR{xp|wf-no-recursion::
2969 xp|error-token => {$token},
2970 c|location => {$location},
2971 xp|name => {$name},
2972 }__;
2973 unless ($continue) {
2974 __CODE{ParseError}__;
2975 }
2976 open my $empty, '<', \'';
2977 $self->{entity}->[-1]->{fh} = $empty;
2978 $er-><AS::x|EntityReference.manakaiExpanded> (false);
2979 } # recursive
2980 $ent->{is_opened} = true;
2981 }
2982 push @{$vals->{nodes}}, $er;
2983 $self->{location} = $self->{entity}->[-1];
2984 push @{$self->{entity_token}}, $self->{token};
2985 $self->{token} = [];
2986 push @{$self->{entity_char}}, $self->{char};
2987 $self->{char} = [];
2988 }
2989
2990 ?lexmode AttributeValueLiteralE;
2991 &AttributeValueLiteralE_ ($parent => $er, $vals => $vals);
2992 ~ (#EOF) { }
2993 lang:Perl {
2994 $self->{general_entity}->{$self->{entity}->[-1]->{name}}
2995 ->{is_opened} = false
2996 if $self->{general_entity}->{$self->{entity}->[-1]->{name}};
2997 $self->{token} = pop @{$self->{entity_token}};
2998 $self->{char} = pop @{$self->{entity_char}};
2999 pop (@{$self->{entity}})->{close_file}->();
3000 $self->{location} = $self->{entity}->[-1];
3001 }
3002
3003 // TODO: Set read-only flag
3004
3005 ?lexmode EntityReference;
3006 ?requires-next-token;
3007 }
3008
3009 // ~ (REFC) { }
3010 } // _GeneralEntityReferenceV_
3011
3012 /*
3013 General entity reference in the replacement text
3014 of the entity referenced in an attribute value literal
3015 */
3016 rule _GeneralEntityReferenceAE_ ($parent, $vals)
3017 {
3018 ?lexmode EntityReference;
3019
3020 ~ (Name == 'lt') {
3021 lang:Perl {
3022 $parent-><M::Node.manakaiAppendText> ('<');
3023 $vals->{value} .= '<';
3024 }
3025 } (Name == 'gt') {
3026 lang:Perl {
3027 $parent-><M::Node.manakaiAppendText> ('>');
3028 $vals->{value} .= '>';
3029 }
3030 } (Name == 'amp') {
3031 lang:Perl {
3032 $parent-><M::Node.manakaiAppendText> ('&');
3033 $vals->{value} .= '&';
3034 }
3035 } (Name == 'quot') {
3036 lang:Perl {
3037 $parent-><M::Node.manakaiAppendText> ('"');
3038 $vals->{value} .= '"';
3039 }
3040 } (Name == 'apos') {
3041 lang:Perl {
3042 $parent-><M::Node.manakaiAppendText> ("'");
3043 $vals->{value} .= "'";
3044 }
3045 } (Name) {
3046 my $er;
3047 lang:Perl ($name => $token.value) : has-error {
3048 __CODE{checkNCName:: $name => $name}__;
3049
3050 $er = $self->{doc}-><M::Document.createEntityReference> ($name);
3051 $er-><AS::Node.textContent> ('');
3052 ## NOTE: When document entity (and entities referenced directly
3053 ## or indirectly from it) is parsed, no general entity
3054 ## node have its replacement tree. During general
3055 ## entity node collection construction, however,
3056 ## some entity node has replacement tree.
3057 my $ent = $self->{general_entity}->{$name};
3058 if (not $ent) { # no entity declaration
3059 if ($self->{standalone} or not $self->{has_xref}) { # WFC error
3060 my $location;
3061 __CODE{xp|get-location-from-token::
3062 $token => {$token},
3063 $result => {$location},
3064 }__;
3065 my $continue = __DOMCore:ERROR{xp|wf-entity-declared::
3066 xp|error-token => {$token},
3067 c|location => {$location},
3068 xp|name => {$name},
3069 }__;
3070 unless ($continue) {
3071 __CODE{ParseError}__;
3072 }
3073 } # Otherwise VC error
3074 push @{$self->{entity}}, <Code::getEmptyEntityState::
3075 $name = $name>;
3076 $er-><AS::x|EntityReference.manakaiExpanded> (false);
3077
3078 } else { # there IS entity declaration
3079 if (($self->{standalone} or not $self->{has_xref}) and
3080 $ent->{is_externally_declared} and
3081 not $self->{entity}->[-1]->{is_externally_declared}) {
3082 my $location;
3083 __CODE{xp|get-location-from-token::
3084 $token => {$token},
3085 $result => {$location},
3086 }__;
3087 my $continue = __DOMCore:ERROR{xp|wf-entity-declared::
3088 xp|error-token => {$token},
3089 c|location => {$location},
3090 xp|name => {$name},
3091 }__;
3092 unless ($continue) {
3093 __CODE{ParseError}__;
3094 }
3095 }
3096
3097 if ($ent->{is_external_entity}) {
3098 my $location;
3099 __CODE{xp|get-location-from-token::
3100 $token => {$token},
3101 $result => {$location},
3102 }__;
3103 my $continue = __c|ERROR{xp|wf-no-external-entity-references::
3104 xp|error-token => {$token},
3105 c|location => {$location},
3106 xp|name => {$name},
3107 }__;
3108 unless ($continue) {
3109 __CODE{ParseError}__;
3110 }
3111 ## NOTE: |xp:wf-parsed-entity| is not checked
3112 } # if external entity
3113
3114 $er-><AS::x|EntityReference.manakaiExpanded>
3115 ($ent->{has_replacement_text});
3116 push @{$self->{entity}}, <Code::getCopyOfEntityState::
3117 $entity_type = 'general_entity',
3118 $entity_name = $name>;
3119
3120 if ($ent->{is_opened}) {
3121 my $location;
3122 __CODE{xp|get-location-from-token::
3123 $token => {$token},
3124 $result => {$location},
3125 }__;
3126 my $continue = __c|ERROR{xp|wf-no-recursion::
3127 xp|error-token => {$token},
3128 c|location => {$location},
3129 xp|name => {$name},
3130 }__;
3131 unless ($continue) {
3132 __CODE{ParseError}__;
3133 }
3134 open my $empty, '<', \'';
3135 $self->{entity}->[-1]->{fh} = $empty;
3136 $er-><AS::x|EntityReference.manakaiExpanded> (false);
3137 } # recursive
3138 $ent->{is_opened} = true;
3139 }
3140 $parent-><M::Node.appendChild> ($er);
3141 $self->{location} = $self->{entity}->[-1];
3142 push @{$self->{entity_token}}, $self->{token};
3143 $self->{token} = [];
3144 push @{$self->{entity_char}}, $self->{char};
3145 $self->{char} = [];
3146 }
3147
3148 ?lexmode AttributeValueLiteralE;
3149 &AttributeValueLiteralE_ ($parent => $er, $vals => $vals);
3150 ~ (#EOF) { }
3151 lang:Perl {
3152 $self->{general_entity}->{$self->{entity}->[-1]->{name}}
3153 ->{is_opened} = false
3154 if $self->{general_entity}->{$self->{entity}->[-1]->{name}};
3155 $self->{token} = pop @{$self->{entity_token}};
3156 $self->{char} = pop @{$self->{entity_char}};
3157 pop (@{$self->{entity}})->{close_file}->();
3158 $self->{location} = $self->{entity}->[-1];
3159 }
3160
3161 // TODO: Set read-only flag
3162
3163 ?lexmode EntityReference;
3164 ?requires-next-token;
3165 }
3166
3167 // ~ (REFC) { }
3168 } // _GeneralEntityReferenceAE_
3169
3170 /*
3171 General Entity Reference in Literal Entity Value in Entity Declaration
3172 */
3173 rule _GeneralEntityReferenceEV_ ($vals) {
3174 ?lexmode 'EntityReference';
3175
3176 ~ (Name) {
3177 lang:Perl ($name => $token.value) {
3178 __CODE{checkNCName:: $name => $name}__;
3179 push @$vals, $name;
3180 }
3181 /*
3182 WFCs such as Entity Declared are not checked
3183 <http://www.w3.org/TR/xml11/#bypass>
3184
3185 Note that violation to the Parsed Entity WFC is an error
3186 rather than fatal error here.
3187 */
3188 }
3189
3190 // No expansion
3191
3192 // ~ (REFC) { }
3193 } // _GeneralEntityReferenceEV_
3194
3195 /*
3196 Document Type Declaration
3197 */
3198 rule _DocumentTypeDeclaration_ ($doc) {
3199 ?lexmode MarkupDeclaration;
3200
3201 ~ (Name == 'DOCTYPE') { }
3202
3203 ~ (S) { }
3204
3205 // Document type name
3206 my $name;
3207 ~ (Name) {
3208 lang:Perl ($v => $token.value) {
3209 __CODE{checkQName:: $name => $v}__;
3210 $name = $v;
3211 }
3212 }
3213
3214 my $node;
3215 my $decl;
3216 lang:Perl {
3217 $self->{docx} = $self->{doc}
3218 -><M::Node.getFeature> (<Q::fe:XDoctype>, '3.0');
3219 $node = $self->{docx}-><M::DocumentXDoctype.createDocumentTypeDefinition>
3220 ($name);
3221 $decl = $self->{dtdecl} = $node-><M::Node.getFeature>
3222 (<Q::fe:XDoctypeDeclaration>, '3.0');
3223 }
3224
3225 my $has_extid;
3226 ~? (S) {
3227 ~? (Name == 'PUBLIC') {
3228 ~ (S) { }
3229
3230 &PubidLiteral ($decl => $decl);
3231
3232 ~ (S) { }
3233
3234 &SystemLiteral ($decl => $decl);
3235
3236 ~? (S) { }
3237
3238 lang:Perl {
3239 $self->{has_xref} = true;
3240 $has_extid = true;
3241 }
3242 } (Name == 'SYSTEM') {
3243 ~ (S) { }
3244
3245 &SystemLiteral ($decl => $decl);
3246
3247 ~? (S) { }
3248
3249 lang:Perl {
3250 $self->{has_xref} = true;
3251 $has_extid = true;
3252 }
3253 }
3254 }
3255
3256 lang:Perl {
3257 $self->{dtdef} = $node;
3258 $self->{doc}-><M::Node.appendChild> ($node);
3259 $self->{doc_cfg}-><M::c|DOMConfiguration.setParameter>
3260 ('schema-type' => <Q::xml-dtd:>);
3261 ## ISSUE: Should default schema language information be
3262 ## preserved by some other flag?
3263 }
3264
3265 ~? (DSO) {
3266 &InternalSubset ($doc => $doc, $doctype => $node);
3267
3268 ~ (DSC) {
3269 ?lexmode MarkupDeclaration;
3270 } else {
3271 ?lexmode MarkupDeclaration;
3272 }
3273
3274 ~? (S) { }
3275 }
3276
3277 // TODO: Read and process external subset if any.
3278 lang:Perl {
3279 $self->{dont_process} = true if $has_extid;
3280 }
3281
3282 // ~ (MDC) { }
3283 } // _DocumentTypeDeclaration_
3284
3285 /*
3286 Public Identifier Literal
3287 */
3288 rule PubidLiteral ($decl) {
3289 my $pubid;
3290 my $pubid_token;
3291 ~ (LIT) {
3292 ?lexmode SystemLiteral;
3293
3294 ~? (STRING) {
3295 lang:Perl ($v => $token.value) {
3296 $pubid = $v;
3297 $pubid_token = $token;
3298 }
3299 }
3300
3301 ~ (LIT) {
3302 ?lexmode MarkupDeclaration;
3303 } else {
3304 ?lexmode MarkupDeclaration;
3305 }
3306 } (LITA) {
3307 ?lexmode SystemLiteralA;
3308
3309 ~? (STRING) {
3310 lang:Perl ($v => $token.value) {
3311 $pubid = $v;
3312 $pubid_token = $token;
3313 }
3314 }
3315
3316 ~ (LITA) {
3317 ?lexmode MarkupDeclaration;
3318 } else {
3319 ?lexmode MarkupDeclaration;
3320 }
3321 }
3322
3323 if-true ($pubid_token) {
3324 lang:Perl : has-error {
3325 if ($pubid =~ m{[^\x20\x0D\x0Aa-zA-Z0-9'()+,./:=?;!*#\@\$_%-]}s) {
3326 my $location;
3327 __CODE{xp|get-location-from-token::
3328 $token => {$pubid_token},
3329 $result => {$location},
3330 }__;
3331 ## Should this be other (new) error type?
3332 my $continue = __DOMCore:ERROR{xp|wf-syntax-error::
3333 xp|error-token => {$token},
3334 c|location => {$location},
3335 }__;
3336 unless ($continue) {
3337 __CODE{ParseError}__;
3338 }
3339 }
3340
3341 ## NOTE: U+0009 is syntactically illegal.
3342 $pubid =~ s/[\x09\x0A\x0D\x20]+/\x20/gs;
3343 $pubid =~ s/\A\x20//s;
3344 $pubid =~ s/\x20\z//s;
3345 ## NOTE: Bare attribute name is written.
3346 $decl->public_id ($pubid);
3347 }
3348 }
3349 } // PubidLiteral
3350
3351 /*
3352 System Identifier Literal
3353 */
3354 rule SystemLiteral ($decl) {
3355 ~ (LIT) {
3356 ?lexmode SystemLiteral;
3357 &_SystemLiteral ($decl => $decl);
3358 } (LITA) {
3359 ?lexmode SystemLiteralA;
3360 &_SystemLiteral ($decl => $decl);
3361 }
3362 } // SystemLiteral
3363
3364 /*
3365 System Identifier Literal Content
3366
3367 Used in document type declaration, entity declaration,
3368 and notation declaration.
3369 */
3370 rule _SystemLiteral ($decl) {
3371 // LIT or LITA
3372
3373 ~? (STRING) {
3374 lang:Perl ($v => $token.value) {
3375 $decl-><AS::x|Entity.systemId> ($v);
3376 $decl-><AS::x|Entity.manakaiDeclarationBaseURI>
3377 ($self->{location}->{base_uri});
3378 }
3379 }
3380
3381 ~ (LIT) {
3382 ?lexmode MarkupDeclaration;
3383 } (LITA) {
3384 ?lexmode MarkupDeclaration;
3385 } else {
3386 ?lexmode MarkupDeclaration;
3387 }
3388 } // _SystemLiteral
3389
3390 /*
3391 DTD Internal Subset
3392
3393 intSubset := *(markupdecl / DeclSep) ;; [28b]
3394 */
3395 rule InternalSubset ($doc, $doctype) {
3396 ?lexmode DTD;
3397
3398 ~* (MDO) {
3399 ?lexmode MarkupDeclaration;
3400
3401 ~ (Name == 'ELEMENT') {
3402 &_ElementDeclaration ($doc => $doc);
3403 } (Name == 'ATTLIST') {
3404 &_AttlistDeclaration ($doc => $doc, $doctype => $doctype);
3405 } (Name == 'ENTITY') {
3406 &_EntityDeclaration ($doc => $doc);
3407 } (Name == 'NOTATION') {
3408 &_NotationDeclaration ($doc => $doc);
3409 }
3410 } (S) {
3411 //
3412 } (CDO) {
3413 &_CommentDeclarationDTD ($doc => $doc);
3414 } (PIO) {
3415 &_ProcessingInstructionDTD ($doc => $doc, $doctype => $doctype);
3416 } (PERO) {
3417 ?lexmode EntityReference;
3418
3419 lang:Perl {
3420 $self->{has_xref} = true;
3421 $self->{dont_process} = true;
3422 }
3423
3424 ~ (Name) {
3425 // TODO: __CODE{checkNCName:: $name => $name}__;
3426
3427 }
3428
3429 ~ (REFC) {
3430 ?lexmode DTD;
3431 } else {
3432 ?lexmode DTD;
3433 }
3434 }
3435 } // InternalSubset
3436
3437 rule _ElementDeclaration ($doc) {
3438 // ~ (MDO) { }
3439 // ?lexmode MarkupDeclaration
3440 // ~ (Name == 'Element') { }
3441
3442 ~ (S) { }
3443
3444 ~ (Name) {
3445 // TODO: __CODE{checkQName:: $name => $name}__;
3446
3447 }
3448
3449 ?lexmode ElementDeclaration;
3450
3451 ~ (S) { }
3452
3453 // contentspec
3454 ~ (MGO) {
3455 &_ContentModel ($doc => $doc);
3456 } (Name == 'EMPTY') {
3457
3458 } (Name == 'ANY') {
3459
3460 }
3461
3462 ~? (S) { }
3463
3464 ~ (MDC) {
3465 ?lexmode DTD;
3466 } else {
3467 ?lexmode DTD;
3468 }
3469 } // _ElementDeclaration
3470
3471 rule _ContentModel ($doc) {
3472 // ~ (MGO) { }
3473
3474 ~? (S) { }
3475
3476 ~ (Name) {
3477 // Element content model
3478 &_ModelGroup ($doc => $doc)
3479 : unshift-current-token;
3480
3481 ~? (OPT) {
3482
3483 } (REP) {
3484
3485 } (PLUS) {
3486
3487 }
3488
3489 } (MDO) {
3490 &_ModelGroup ($doc => $doc)
3491 : unshift-current-token;
3492
3493 ~? (OPT) {
3494
3495 } (REP) {
3496
3497 } (PLUS) {
3498
3499 }
3500
3501 } (PCDATA) {
3502 // Mixed content declaration
3503 ~? (S) { }
3504
3505 ~* (OR) {
3506 ~? (S) { }
3507
3508 ~ (Name) {
3509 // TODO: Name & QName check
3510
3511 }
3512
3513 ~? (S) { }
3514 }
3515
3516 ~ (MGC) { }
3517
3518 ~? (REP) {
3519
3520 } else {
3521 // TODO: error if |Name|
3522 }
3523
3524
3525 }
3526 } // _ContentModel
3527
3528 rule _ModelGroup ($doc)
3529 : standalone
3530 : recursive
3531 {
3532 // ~ (MGO) { }
3533 // ~? (S) { }
3534
3535 &ContentParticle ($doc => $doc);
3536
3537 ~? (S) { }
3538
3539 ~? (OR) {
3540 ~? (S) { }
3541
3542 &ContentParticle ($doc => $doc);
3543
3544 ~? (S) { }
3545
3546 ~* (OR) {
3547 ~? (S) { }
3548
3549 &ContentParticle ($doc => $doc);
3550
3551 ~? (S) { }
3552 }
3553
3554 } (SEQ) {
3555 ~? (S) { }
3556
3557 &ContentParticle ($doc => $doc);
3558
3559 ~? (S) { }
3560
3561 ~* (SEQ) {
3562 ~? (S) { }
3563
3564 &ContentParticle ($doc => $doc);
3565
3566 ~? (S) { }
3567 }
3568
3569 }
3570
3571 ~ (MGC) { }
3572 } // _ModelGroup
3573
3574 rule ContentParticle ($doc) {
3575 ~ (Name) {
3576 // TODO: Name & QName check
3577
3578 } (MGO) {
3579 ~? (S) { }
3580
3581 &_ModelGroup ($doc => $doc);
3582 }
3583
3584 ~? (OPT) {
3585
3586 } (REP) {
3587
3588 } (PLUS) {
3589
3590 }
3591 } // ContentParticle
3592
3593 /*
3594 Attribute list declaration
3595 */
3596 rule _AttlistDeclaration ($doc, $doctype) {
3597 // ~ (MDO) { }
3598 // ~ (Name == 'ATTLIST') { }
3599
3600 ?lexmode AttlistDeclaration;
3601
3602 ~ (S) { }
3603
3604 my $name;
3605 ~ (Name) {
3606 lang:Perl ($v => $token.value) {
3607 __CODE{checkQName:: $name => $v}__;
3608 $name = $v;
3609 }
3610 } else {
3611 lang:Perl { $name = '#ILLEGAL' }
3612 }
3613
3614 my $docxd;
3615 my $et;
3616 lang:Perl {
3617 $et = $doctype-><M::DTDef.getElementTypeDefinitionNode> ($name);
3618 unless ($et) {
3619 $docxd = $doc-><M::Node.getFeature> (<Q::fe:XDoctype>, '3.0');
3620 $et = $docxd-><M::DocumentXDoctype.createElementTypeDefinition>
3621 ($name);
3622 $doctype-><M::DTDef.setElementTypeDefinitionNode> ($et)
3623 unless $name eq '#ILLEGAL';
3624 }
3625 }
3626
3627 ~? (S) { }
3628
3629 ~* (Name) {
3630 my $at;
3631 lang:Perl ($v => $token.value) : has-error {
3632 __CODE{checkQName:: $name => $v}__;
3633 $docxd ||= $doc-><M::Node.getFeature>
3634 (<Q::fe:XDoctype>, '3.0');
3635 $at = $docxd-><M::DocumentXDoctype.createAttributeDefinition> ($v);
3636 if (exists $et-><AG::ETDef.attributeDefinitions>->{$v}) {
3637 my $location;
3638 __CODE{xp|get-location-from-token::
3639 $token => {$token},
3640 $result => {$location},
3641 }__;
3642 my $continue = __c|ERROR{xp|warning-attribute-definition-ignored::
3643 xp|error-token => {$token},
3644 c|location => {$location},
3645 xp|name => {$v},
3646 }__;
3647 unless ($continue) {
3648 __CODE{ParseError}__;
3649 }
3650 } elsif ($self->{dont_process} and not $self->{standalone}) {
3651 my $location;
3652 __CODE{xp|get-location-from-token::
3653 $token => {$token},
3654 $result => {$location},
3655 }__;
3656 my $continue = __c|ERROR{
3657 xp|warning-attribute-definition-not-processed::
3658 xp|error-token => {$token},
3659 c|location => {$location},
3660 xp|name => {$v},
3661 }__;
3662 unless ($continue) {
3663 __CODE{ParseError}__;
3664 }
3665 } else {
3666 $et-><M::ETDef.setAttributeDefinitionNode> ($at);
3667 $self->{attr}->{$name}->{$v} = $at;
3668 }
3669 }
3670
3671 ~ (S) { }
3672
3673 // AttType
3674 ~ (Name == 'NOTATION') {
3675 ~ (S) { }
3676
3677 my $kwd;
3678 lang:Perl {
3679 $at-><AS::ATDef.declaredType> (<C::ATDef.NOTATION_ATTR>);
3680 $kwd = $at-><AG::ATDef.allowedTokens>;
3681 }
3682
3683 ~ (EGO) {
3684 ~? (S) { }
3685
3686 ~+ (Name) {
3687 lang:Perl ($v => $token.value) : has-error {
3688 __CODE{checkNCName:: $name => $v}__;
3689 push @$kwd, $v;
3690 }
3691
3692 ~? (S) { }
3693 } (OR) : separator {
3694 ~? (S) { }
3695 }
3696
3697 ~ (EGC) { }
3698 }
3699
3700 } (Name) {
3701 my $type;
3702 lang:Perl ($v => $token.value) : has-error {
3703 my $map = {
3704 CDATA => <C::ATDef.CDATA_ATTR>,
3705 ID => <C::ATDef.ID_ATTR>,
3706 IDREF => <C::ATDef.IDREF_ATTR>,
3707 IDREFS => <C::ATDef.IDREFS_ATTR>,
3708 ENTITY => <C::ATDef.ENTITY_ATTR>,
3709 ENTITIES => <C::ATDef.ENTITIES_ATTR>,
3710 NMTOKEN => <C::ATDef.NMTOKEN_ATTR>,
3711 NMTOKENS => <C::ATDef.NMTOKENS_ATTR>,
3712 };
3713 if ($map->{$v}) {
3714 $at-><AS::ATDef.declaredType> ($map->{$v});
3715 } else {
3716 ## TODO: Exception
3717 }
3718 }
3719
3720 } (EGO) {
3721 ?lexmode Enumeration;
3722
3723 ~? (S) { }
3724
3725 my $kwd;
3726 lang:Perl {
3727 $at-><AS::ATDef.declaredType> (<C::ATDef.ENUMERATION_ATTR>);
3728 $kwd = $at-><AG::ATDef.allowedTokens>;
3729 }
3730
3731 ~+ (Nmtoken) {
3732 lang:Perl ($v => $token.value) {
3733 push @$kwd, $v;
3734 }
3735
3736 ~? (S) { }
3737 } (OR) : separator {
3738 ~? (S) { }
3739 }
3740
3741 ~ (EGC) {
3742 ?lexmode AttlistDeclaration;
3743 } else {
3744 ?lexmode AttlistDeclaration;
3745 }
3746
3747 }
3748
3749 ~ (S) { }
3750
3751 // DefaultDecl
3752 ~ (RNI) {
3753 ~ (Name == 'REQUIRED') {
3754 lang:Perl {
3755 $at-><AS::ATDef.defaultType> (<C::ATDef.REQUIRED_DEFAULT>);
3756 }
3757 } (Name == 'IMPLIED') {
3758 lang:Perl {
3759 $at-><AS::ATDef.defaultType> (<C::ATDef.IMPLIED_DEFAULT>);
3760 }
3761 } (Name == 'FIXED') {
3762 ~ (S) { }
3763
3764 lang:Perl {
3765 $at-><AS::ATDef.defaultType> (<C::ATDef.FIXED_DEFAULT>);
3766 }
3767
3768 ~ (LIT) {
3769 my $vals;
3770 lang:Perl {
3771 $vals = {nodes => [], value => ''};
3772 }
3773
3774 &_AttributeValueSpecification_ ($doc => $doc, $vals => $vals);
3775
3776 lang:Perl {
3777 for (@{$vals->{nodes}}) {
3778 $at-><M::Node.appendChild> ($_);
3779 }
3780 }
3781
3782 ~ (LIT) {
3783 ?lexmode AttlistDeclaration;
3784 } else {
3785 ?lexmode AttlistDeclaration;
3786 }
3787 } (LITA) {
3788 my $vals;
3789 lang:Perl {
3790 $vals = {nodes => [], value => ''};
3791 }
3792
3793 &_AttributeValueSpecificationA_ ($doc => $doc, $vals => $vals);
3794
3795 lang:Perl {
3796 for (@{$vals->{nodes}}) {
3797 $at-><M::Node.appendChild> ($_);
3798 }
3799 }
3800
3801 ~ (LITA) {
3802 ?lexmode AttlistDeclaration;
3803 } else {
3804 ?lexmode AttlistDeclaration;
3805 }
3806 }
3807 }
3808
3809 } (LIT) {
3810 my $vals;
3811 lang:Perl {
3812 $at-><AS::ATDef.defaultType> (<C::ATDef.EXPLICIT_DEFAULT>);
3813 $vals = {nodes => [], value => ''};
3814 }
3815
3816 &_AttributeValueSpecification_ ($doc => $doc, $vals => $vals);
3817
3818 lang:Perl {
3819 for (@{$vals->{nodes}}) {
3820 $at-><M::Node.appendChild> ($_);
3821 }
3822 }
3823
3824 ~ (LIT) {
3825 ?lexmode AttlistDeclaration;
3826 } else {
3827 ?lexmode AttlistDeclaration;
3828 }
3829 } (LITA) {
3830 my $vals;
3831 lang:Perl {
3832 $at-><AS::ATDef.defaultType> (<C::ATDef.EXPLICIT_DEFAULT>);
3833 $vals = {nodes => [], value => ''};
3834 }
3835
3836 &_AttributeValueSpecificationA_ ($doc => $doc, $vals => $vals);
3837
3838 lang:Perl {
3839 for (@{$vals->{nodes}}) {
3840 $at-><M::Node.appendChild> ($_);
3841 }
3842 }
3843
3844 ~ (LITA) {
3845 ?lexmode AttlistDeclaration;
3846 } else {
3847 ?lexmode AttlistDeclaration;
3848 }
3849 }
3850
3851 } (S) : separator : terminator? {
3852 //
3853 }
3854
3855 ~ (MDC) {
3856 ?lexmode DTD;
3857 } else {
3858 ?lexmode DTD;
3859 }
3860 } // _AttlistDeclaration
3861
3862 /*
3863 Entity Declaration
3864 */
3865 rule _EntityDeclaration ($doc) {
3866 // ~ (MDO) { }
3867 // ~ (Name == ENTITY) { }
3868
3869 ~ (S) { }
3870
3871 my $is_param_entity;
3872 my $decl;
3873 lang:Perl {
3874 $decl = {
3875 name => '#ILLEGAL',
3876 reptxt => \'',
3877 is_external_entity => false,
3878 document_uri => $self->{location}->{document_uri},
3879 base_uri => $self->{location}->{base_uri},
3880 };
3881 }
3882
3883 ~? (PERO) {
3884 ~ (S) { }
3885 lang:Perl {
3886 $is_param_entity = $decl->{is_param_entity} = true;
3887 }
3888 }
3889
3890 /*
3891 TODO: Set |$decl->{is_externally_declared}| flag
3892 and |Entity.isExternallyDeclared| attribute
3893 for entity declarations in external subset or
3894 in parameter entity.
3895 */
3896
3897 ~ (Name) {
3898 lang:Perl ($v => $token.value) {
3899 __CODE{checkNCName:: $name => $v}__;
3900 $decl->{name} = $v;
3901 }
3902 }
3903
3904 my $node;
3905 lang:Perl {
3906 $node =
3907 $decl->{node} = $self->{docx}-><M::DocumentXDoctype.createGeneralEntity>
3908 ($decl->{name});
3909 ## TODO: Parameter entity...
3910 }
3911
3912 ~ (S) { }
3913
3914 ~ (LIT) {
3915 &_EntityValue ($doc => $doc, $decl => $decl);
3916 } (LITA) {
3917 &_EntityValueA ($doc => $doc, $decl => $decl);
3918 } (Name == 'PUBLIC') {
3919 ~ (S) { }
3920
3921 &PubidLiteral ($decl => $node);
3922
3923 ~ (S) { }
3924
3925 &SystemLiteral ($decl => $node);
3926
3927 lang:Perl {
3928 $decl->{is_external_entity} = true;
3929 }
3930 } (Name == 'SYSTEM') {
3931 ~ (S) { }
3932
3933 &SystemLiteral ($decl => $node);
3934
3935 lang:Perl {
3936 $decl->{is_external_entity} = true;
3937 }
3938 }
3939
3940 ~? (S) {
3941 ~? (Name == 'NDATA') {
3942 if-true ($is_param_entity) {
3943 lang:Perl : has-error {
3944 my $location;
3945 __CODE{xp|get-location-from-token::
3946 $token => {$token},
3947 $result => {$location},
3948 }__;
3949 my $continue = __DOMCore:ERROR{xp|wf-syntax-error::
3950 xp|error-token => {$token},
3951 c|location => {$location},
3952 }__;
3953 unless ($continue) {
3954 __CODE{ParseError}__;
3955 }
3956 }
3957 }
3958
3959 ~ (S) { }
3960
3961 ~ (Name) {
3962 lang:Perl ($v => $token.value) : has-error {
3963 __CODE{checkNCName:: $name => $v}__;
3964 $decl->{notation} = $v;
3965 $decl->{node}-><AG::x|Entity.notationName> ($v);
3966 }
3967 }
3968
3969 ~? (S) { }
3970 }
3971 }
3972
3973 lang:Perl : has-error {
3974 if ($self->{$decl->{is_param_entity} ? 'param_entity' : 'general_entity'}
3975 ->{$decl->{name}}) {
3976 ## Predefined entity
3977 if (not $decl->{is_param_entity} and
3978 {lt => true, gt => true, amp => true,
3979 quot => true, apos => true}->{$decl->{name}}) {
3980 if ($decl->{is_external_entity}) {
3981 my $location;
3982 __CODE{xp|get-location-from-token::
3983 $token => {$token},
3984 $result => {$location},
3985 }__;
3986 my $continue = __c|ERROR{xp|error-internal-predefined-entity::
3987 xp|error-token => {$token},
3988 c|location => {$location},
3989 xp|name => {$decl->{name}},
3990 }__;
3991 unless ($continue) {
3992 __CODE{ParseError}__;
3993 }
3994 } elsif (
3995 not ({gt => true, apos => true, quot => true}->{$decl->{name}} and
3996 ${$decl->{reptxt}} eq {
3997 gt => '>', apos => "'", quot => '"',
3998 }->{$decl->{name}}) and
3999 not (${$decl->{reptxt}} =~ /\A&#0*@{[{
4000 lt => '60', gt => '62', amp => '38',
4001 apos => '39', quot => '34',
4002 }->{$decl->{name}}]};\z/) and
4003 not (${$decl->{reptxt}} =~ /\A&#x0*(?:(?i)@{[{
4004 lt => '3C', gt => '3E', amp => '26',
4005 apos => '27', quot => '22',
4006 }->{$decl->{name}}]});\z/)
4007 ) {
4008 ## NOTE: See "SuikaWiki - Predefined Entities"
4009 ## "http://suika.fam.cx/gate/2005/sw/%E5%AE%9A%E7%BE%A9%E6%B8%88%E5%AE%9F%E4%BD%93".
4010 my $location;
4011 __CODE{xp|get-location-from-token::
4012 $token => {$token},
4013 $result => {$location},
4014 }__;
4015 my $continue = __c|ERROR{xp|error-malformed-predefined-entity::
4016 xp|error-token => {$token},
4017 c|location => {$location},
4018 xp|name => {$decl->{name}},
4019 xp|replacement-text => {${$decl->{reptxt}}},
4020 }__;
4021 unless ($continue) {
4022 __CODE{ParseError}__;
4023 }
4024 }
4025 $self->{dtdecl}->{<H::mn:node>}->{{
4026 lt => <H::d|hasLtDeclaration>,
4027 gt => <H::d|hasGtDeclaration>,
4028 amp => <H::d|hasAmpDeclaration>,
4029 apos => <H::d|hasAposDeclaration>,
4030 quot => <H::d|hasQuotDeclaration>,
4031 }->{$decl->{name}}} = true;
4032 } else { ## Dupulicating declaration
4033 my $location;
4034 __CODE{xp|get-location-from-token::
4035 $token => {$token},
4036 $result => {$location},
4037 }__;
4038 my $continue = __c|ERROR{xp|warning-entity-declaration-ignored::
4039 xp|error-token => {$token},
4040 c|location => {$location},
4041 xp|name => {$decl->{name}},
4042 }__;
4043 unless ($continue) {
4044 __CODE{ParseError}__;
4045 }
4046 }
4047 } elsif ($self->{dont_process} and not $self->{standalone}) {
4048 ## TODO: |standalone| and parameter entities??
4049 my $location;
4050 __CODE{xp|get-location-from-token::
4051 $token => {$token},
4052 $result => {$location},
4053 }__;
4054 my $continue = __c|ERROR{xp|warning-entity-declaration-not-processed::
4055 xp|error-token => {$token},
4056 c|location => {$location},
4057 xp|name => {$decl->{name}},
4058 }__;
4059 unless ($continue) {
4060 __CODE{ParseError}__;
4061 }
4062 } else {
4063 $self->{$decl->{is_param_entity} ? 'param_entity' : 'general_entity'}
4064 ->{$decl->{name}} = $decl;
4065 $self->{dtdef}-><M::DTDef.setGeneralEntityNode> ($decl->{node})
4066 unless $decl->{is_param_entity};
4067 }
4068 }
4069
4070 ~ (MDC) {
4071 ?lexmode DTD;
4072 } else {
4073 ?lexmode DTD;
4074 }
4075 } // _EntityDeclaration
4076
4077 /*
4078 Notation Declaration
4079 */
4080 rule _NotationDeclaration {
4081 // ~ (MDO) { }
4082 // ~ (Name == NOTATION) { }
4083
4084 ~ (S) { }
4085
4086 my $name;
4087 ~ (Name) {
4088 lang:Perl ($v => $token.value) : has-error {
4089 __CODE{checkNCName:: $name => $v}__;
4090 $name = $v;
4091 }
4092 } else {
4093 lang:Perl {
4094 $name = '#INVALID';
4095 }
4096 }
4097
4098 ~ (S) { }
4099
4100 lang:Perl {
4101 $decl = $self->{docx}-><M::DocumentXDoctype.createNotation> ($name);
4102 }
4103
4104 ~ (Name == 'PUBLIC') {
4105 ~ (S) { }
4106
4107 &PubidLiteral ($decl => $decl);
4108
4109 ~? (S) {
4110 ~? (LIT) {
4111 ?lexmode SystemLiteral;
4112 &_SystemLiteral ($decl => $decl);
4113
4114 ~? (S) { }
4115 } (LITA) {
4116 ?lexmode SystemLiteralA;
4117 &_SystemLiteral ($decl => $decl);
4118
4119 ~? (S) { }
4120 }
4121 }
4122 } (Name == 'SYSTEM') {
4123 ~ (S) { }
4124
4125 &SystemLiteral ($decl => $decl);
4126
4127 ~? (S) { }
4128 }
4129
4130 lang:Perl : has-error {
4131 if ($self->{dtdef}-><M::DTDef.getNotationNode> ($name)) {
4132 ## Dupulication
4133 my $location;
4134 __CODE{xp|get-location-from-token::
4135 $token => {$token},
4136 $result => {$location},
4137 }__;
4138 my $continue = __c|ERROR{xp|vc-unique-notation-name::
4139 xp|error-token => {$token},
4140 c|location => {$location},
4141 xp|name => {$name},
4142 }__;
4143 unless ($continue) {
4144 __CODE{ParseError}__;
4145 }
4146 } else {
4147 $self->{dtdef}-><M::DTDef.setNotationNode> ($decl);
4148 }
4149 }
4150
4151 ~ (MDC) {
4152 ?lexmode DTD;
4153 } else {
4154 ?lexmode DTD;
4155 }
4156 } // _NotationDeclaration
4157
4158 rule _EntityValue ($decl) {
4159 ?lexmode EntityValue;
4160
4161 my $vals;
4162 my $reptxt;
4163 lang:Perl {
4164 $vals = [];
4165 $reptxt = '';
4166 }
4167
4168 ~* (STRING) {
4169 lang:Perl ($v => $token.value) {
4170 $reptxt .= $v;
4171 }
4172 } (PERO) {
4173 ?lexmode EntityReference;
4174
4175 lang:Perl {
4176 $self->{has_xref} = true;
4177 $self->{dont_process} = true;
4178 }
4179
4180 // TODO: Expand or wferror if internal subset
4181
4182 ~ (Name) {
4183
4184 // Note that external subset and parameter entities are not supported
4185 lang:Perl ($name => $token.value) : has-error {
4186 __CODE{checkNCName:: $name => $name}__;
4187 my $location;
4188 __CODE{xp|get-location-from-token::
4189 $token => {$token},
4190 $result => {$location},
4191 }__;
4192 my $continue = __c|ERROR{xp|wf-pes-in-internal-subset::
4193 xp|error-token => {$token},
4194 c|location => {$location},
4195 xp|name => {$name},
4196 }__;
4197 unless ($continue) {
4198 __CODE{ParseError}__;
4199 }
4200 }
4201 }
4202
4203 ~ (REFC) {
4204 ?lexmode EntityValue;
4205 } else {
4206 ?lexmode EntityValue;
4207 }
4208 } (HCRO) {
4209 &_HexadecimalCharacterReferenceEV_ ($vals => $vals);
4210
4211 lang:Perl {
4212 $reptxt .= $vals->[-1];
4213 }
4214
4215 ~ (REFC) {
4216 ?lexmode EntityValue;
4217 } else {
4218 ?lexmode EntityValue;
4219 }
4220 } (CRO) {
4221 &_NumericCharacterReferenceEV_ ($vals => $vals);
4222
4223 lang:Perl {
4224 $reptxt .= $vals->[-1];
4225 }
4226
4227 ~ (REFC) {
4228 ?lexmode EntityValue;
4229 } else {
4230 ?lexmode EntityValue;
4231 }
4232 } (ERO) {
4233 &_GeneralEntityReferenceEV_ ($vals => $vals);
4234
4235 lang:Perl {
4236 $reptxt .= '&' . $vals->[-1] . ';';
4237 }
4238
4239 ~ (REFC) {
4240 ?lexmode EntityValue;
4241 } else {
4242 ?lexmode EntityValue;
4243 }
4244 }
4245
4246 ~ (LIT) {
4247 ?lexmode MarkupDeclaration;
4248 } (LITA) {
4249 ?lexmode MarkupDeclaration;
4250 } else {
4251 ?lexmode MarkupDeclaration;
4252 }
4253
4254 lang:Perl {
4255 $decl->{reptxt} = \$reptxt;
4256 $decl->{has_replacement_text} = true;
4257 }
4258 } // _EntityValue
4259
4260 rule _EntityValueA ($decl) {
4261 ?lexmode EntityValueA;
4262
4263 my $vals;
4264 my $reptxt;
4265 lang:Perl {
4266 $vals = [];
4267 $reptxt = '';
4268 }
4269
4270 ~* (STRING) {
4271 lang:Perl ($v => $token.value) {
4272 $reptxt .= $v;
4273 }
4274 } (PERO) {
4275 ?lexmode EntityReference;
4276
4277 lang:Perl {
4278 $self->{has_xref} = true;
4279 $self->{dont_process} = true;
4280 }
4281
4282 // TODO: implement this
4283 ~ (Name) {
4284
4285 // Note that external subset and parameter entities are not supported
4286 lang:Perl ($name => $token.value) : has-error {
4287 __CODE{checkNCName:: $name => $name}__;
4288 my $location;
4289 __CODE{xp|get-location-from-token::
4290 $token => {$token},
4291 $result => {$location},
4292 }__;
4293 my $continue = __c|ERROR{xp|wf-pes-in-internal-subset::
4294 xp|error-token => {$token},
4295 c|location => {$location},
4296 xp|name => {$name},
4297 }__;
4298 unless ($continue) {
4299 __CODE{ParseError}__;
4300 }
4301 }
4302 }
4303
4304 ~ (REFC) {
4305 ?lexmode EntityValueA;
4306 } else {
4307 ?lexmode EntityValueA;
4308 }
4309 } (HCRO) {
4310 &_HexadecimalCharacterReferenceEV_ ($vals => $vals);
4311
4312 lang:Perl {
4313 $reptxt .= $vals->[-1];
4314 }
4315
4316
4317 ~ (REFC) {
4318 ?lexmode EntityValueA;
4319 } else {
4320 ?lexmode EntityValueA;
4321 }
4322 } (CRO) {
4323 &_NumericCharacterReferenceEV_ ($vals => $vals);
4324
4325 lang:Perl {
4326 $reptxt .= $vals->[-1];
4327 }
4328
4329 ~ (REFC) {
4330 ?lexmode EntityValueA;
4331 } else {
4332 ?lexmode EntityValueA;
4333 }
4334 } (ERO) {
4335 &_GeneralEntityReferenceEV_ ($vals => $vals);
4336
4337 lang:Perl {
4338 $reptxt .= '&' . $vals->[-1] . ';';
4339 }
4340
4341 ~ (REFC) {
4342 ?lexmode EntityValueA;
4343 } else {
4344 ?lexmode EntityValueA;
4345 }
4346 }
4347
4348 ~ (LITA) {
4349 ?lexmode MarkupDeclaration;
4350 } else {
4351 ?lexmode MarkupDeclaration;
4352 }
4353
4354 lang:Perl {
4355 $decl->{reptxt} = \$reptxt;
4356 $decl->{has_replacement_text} = true;
4357 }
4358 } // _EntityValueA
4359
4360
4361 /*
4362 XML Name
4363 */
4364 lexmode NameChar {
4365 $NameStartChar10 := [
4366 '_' ':'
4367 // Letter
4368 // BaseChar
4369 U+0041..U+005A U+0061..U+007A U+00C0..U+00D6
4370 U+00D8..U+00F6 U+00F8..U+00FF U+0100..U+0131
4371 U+0134..U+013E U+0141..U+0148 U+014A..U+017E
4372 U+0180..U+01C3 U+01CD..U+01F0 U+01F4..U+01F5
4373 U+01FA..U+0217 U+0250..U+02A8 U+02BB..U+02C1
4374 U+0386 U+0388..U+038A U+038C U+038E..U+03A1
4375 U+03A3..U+03CE U+03D0..U+03D6 U+03DA U+03DC
4376 U+03DE U+03E0 U+03E2..U+03F3 U+0401..U+040C
4377 U+040E..U+044F U+0451..U+045C U+045E..U+0481
4378 U+0490..U+04C4 U+04C7..U+04C8 U+04CB..U+04CC
4379 U+04D0..U+04EB U+04EE..U+04F5 U+04F8..U+04F9
4380 U+0531..U+0556 U+0559 U+0561..U+0586
4381 U+05D0..U+05EA U+05F0..U+05F2 U+0621..U+063A
4382 U+0641..U+064A U+0671..U+06B7 U+06BA..U+06BE
4383 U+06C0..U+06CE U+06D0..U+06D3 U+06D5
4384 U+06E5..U+06E6 U+0905..U+0939 U+093D
4385 U+0958..U+0961 U+0985..U+098C U+098F..U+0990
4386 U+0993..U+09A8 U+09AA..U+09B0 U+09B2
4387 U+09B6..U+09B9 U+09DC..U+09DD U+09DF..U+09E1
4388 U+09F0..U+09F1 U+0A05..U+0A0A U+0A0F..U+0A10
4389 U+0A13..U+0A28 U+0A2A..U+0A30 U+0A32..U+0A33
4390 U+0A35..U+0A36 U+0A38..U+0A39 U+0A59..U+0A5C
4391 U+0A5E U+0A72..U+0A74 U+0A85..U+0A8B U+0A8D
4392 U+0A8F..U+0A91 U+0A93..U+0AA8 U+0AAA..U+0AB0
4393 U+0AB2..U+0AB3 U+0AB5..U+0AB9 U+0ABD U+0AE0
4394 U+0B05..U+0B0C U+0B0F..U+0B10 U+0B13..U+0B28
4395 U+0B2A..U+0B30 U+0B32..U+0B33 U+0B36..U+0B39
4396 U+0B3D U+0B5C..U+0B5D U+0B5F..U+0B61
4397 U+0B85..U+0B8A U+0B8E..U+0B90 U+0B92..U+0B95
4398 U+0B99..U+0B9A U+0B9C U+0B9E..U+0B9F
4399 U+0BA3..U+0BA4 U+0BA8..U+0BAA U+0BAE..U+0BB5
4400 U+0BB7..U+0BB9 U+0C05..U+0C0C U+0C0E..U+0C10
4401 U+0C12..U+0C28 U+0C2A..U+0C33 U+0C35..U+0C39
4402 U+0C60..U+0C61 U+0C85..U+0C8C U+0C8E..U+0C90
4403 U+0C92..U+0CA8 U+0CAA..U+0CB3 U+0CB5..U+0CB9
4404 U+0CDE U+0CE0..U+0CE1 U+0D05..U+0D0C
4405 U+0D0E..U+0D10 U+0D12..U+0D28 U+0D2A..U+0D39
4406 U+0D60..U+0D61 U+0E01..U+0E2E U+0E30
4407 U+0E32..U+0E33 U+0E40..U+0E45 U+0E81..U+0E82
4408 U+0E84 U+0E87..U+0E88 U+0E8A U+0E8D
4409 U+0E94..U+0E97 U+0E99..U+0E9F U+0EA1..U+0EA3
4410 U+0EA5 U+0EA7 U+0EAA..U+0EAB U+0EAD..U+0EAE
4411 U+0EB0 U+0EB2..U+0EB3 U+0EBD U+0EC0..U+0EC4
4412 U+0F40..U+0F47 U+0F49..U+0F69 U+10A0..U+10C5
4413 U+10D0..U+10F6 U+1100 U+1102..U+1103
4414 U+1105..U+1107 U+1109 U+110B..U+110C
4415 U+110E..U+1112 U+113C U+113E U+1140 U+114C
4416 U+114E U+1150 U+1154..U+1155 U+1159
4417 U+115F..U+1161 U+1163 U+1165 U+1167 U+1169
4418 U+116D..U+116E U+1172..U+1173 U+1175 U+119E
4419 U+11A8 U+11AB U+11AE..U+11AF U+11B7..U+11B8
4420 U+11BA U+11BC..U+11C2 U+11EB U+11F0 U+11F9
4421 U+1E00..U+1E9B U+1EA0..U+1EF9 U+1F00..U+1F15
4422 U+1F18..U+1F1D U+1F20..U+1F45 U+1F48..U+1F4D
4423 U+1F50..U+1F57 U+1F59 U+1F5B U+1F5D
4424 U+1F5F..U+1F7D U+1F80..U+1FB4 U+1FB6..U+1FBC
4425 U+1FBE U+1FC2..U+1FC4 U+1FC6..U+1FCC
4426 U+1FD0..U+1FD3 U+1FD6..U+1FDB U+1FE0..U+1FEC
4427 U+1FF2..U+1FF4 U+1FF6..U+1FFC U+2126
4428 U+212A..U+212B U+212E U+2180..U+2182
4429 U+3041..U+3094 U+30A1..U+30FA U+3105..U+312C
4430 U+AC00..U+D7A3
4431 // Ideographic
4432 U+4E00..U+9FA5 U+3007 U+3021..U+3029
4433 ];
4434 $NameChar10 := [
4435 '.' '-' '_' ':'
4436 // Letter
4437 // BaseChar
4438 U+0041..U+005A U+0061..U+007A U+00C0..U+00D6
4439 U+00D8..U+00F6 U+00F8..U+00FF U+0100..U+0131
4440 U+0134..U+013E U+0141..U+0148 U+014A..U+017E
4441 U+0180..U+01C3 U+01CD..U+01F0 U+01F4..U+01F5
4442 U+01FA..U+0217 U+0250..U+02A8 U+02BB..U+02C1
4443 U+0386 U+0388..U+038A U+038C U+038E..U+03A1
4444 U+03A3..U+03CE U+03D0..U+03D6 U+03DA U+03DC
4445 U+03DE U+03E0 U+03E2..U+03F3 U+0401..U+040C
4446 U+040E..U+044F U+0451..U+045C U+045E..U+0481
4447 U+0490..U+04C4 U+04C7..U+04C8 U+04CB..U+04CC
4448 U+04D0..U+04EB U+04EE..U+04F5 U+04F8..U+04F9
4449 U+0531..U+0556 U+0559 U+0561..U+0586
4450 U+05D0..U+05EA U+05F0..U+05F2 U+0621..U+063A
4451 U+0641..U+064A U+0671..U+06B7 U+06BA..U+06BE
4452 U+06C0..U+06CE U+06D0..U+06D3 U+06D5
4453 U+06E5..U+06E6 U+0905..U+0939 U+093D
4454 U+0958..U+0961 U+0985..U+098C U+098F..U+0990
4455 U+0993..U+09A8 U+09AA..U+09B0 U+09B2
4456 U+09B6..U+09B9 U+09DC..U+09DD U+09DF..U+09E1
4457 U+09F0..U+09F1 U+0A05..U+0A0A U+0A0F..U+0A10
4458 U+0A13..U+0A28 U+0A2A..U+0A30 U+0A32..U+0A33
4459 U+0A35..U+0A36 U+0A38..U+0A39 U+0A59..U+0A5C
4460 U+0A5E U+0A72..U+0A74 U+0A85..U+0A8B U+0A8D
4461 U+0A8F..U+0A91 U+0A93..U+0AA8 U+0AAA..U+0AB0
4462 U+0AB2..U+0AB3 U+0AB5..U+0AB9 U+0ABD U+0AE0
4463 U+0B05..U+0B0C U+0B0F..U+0B10 U+0B13..U+0B28
4464 U+0B2A..U+0B30 U+0B32..U+0B33 U+0B36..U+0B39
4465 U+0B3D U+0B5C..U+0B5D U+0B5F..U+0B61
4466 U+0B85..U+0B8A U+0B8E..U+0B90 U+0B92..U+0B95
4467 U+0B99..U+0B9A U+0B9C U+0B9E..U+0B9F
4468 U+0BA3..U+0BA4 U+0BA8..U+0BAA U+0BAE..U+0BB5
4469 U+0BB7..U+0BB9 U+0C05..U+0C0C U+0C0E..U+0C10
4470 U+0C12..U+0C28 U+0C2A..U+0C33 U+0C35..U+0C39
4471 U+0C60..U+0C61 U+0C85..U+0C8C U+0C8E..U+0C90
4472 U+0C92..U+0CA8 U+0CAA..U+0CB3 U+0CB5..U+0CB9
4473 U+0CDE U+0CE0..U+0CE1 U+0D05..U+0D0C
4474 U+0D0E..U+0D10 U+0D12..U+0D28 U+0D2A..U+0D39
4475 U+0D60..U+0D61 U+0E01..U+0E2E U+0E30
4476 U+0E32..U+0E33 U+0E40..U+0E45 U+0E81..U+0E82
4477 U+0E84 U+0E87..U+0E88 U+0E8A U+0E8D
4478 U+0E94..U+0E97 U+0E99..U+0E9F U+0EA1..U+0EA3
4479 U+0EA5 U+0EA7 U+0EAA..U+0EAB U+0EAD..U+0EAE
4480 U+0EB0 U+0EB2..U+0EB3 U+0EBD U+0EC0..U+0EC4
4481 U+0F40..U+0F47 U+0F49..U+0F69 U+10A0..U+10C5
4482 U+10D0..U+10F6 U+1100 U+1102..U+1103
4483 U+1105..U+1107 U+1109 U+110B..U+110C
4484 U+110E..U+1112 U+113C U+113E U+1140 U+114C
4485 U+114E U+1150 U+1154..U+1155 U+1159
4486 U+115F..U+1161 U+1163 U+1165 U+1167 U+1169
4487 U+116D..U+116E U+1172..U+1173 U+1175 U+119E
4488 U+11A8 U+11AB U+11AE..U+11AF U+11B7..U+11B8
4489 U+11BA U+11BC..U+11C2 U+11EB U+11F0 U+11F9
4490 U+1E00..U+1E9B U+1EA0..U+1EF9 U+1F00..U+1F15
4491 U+1F18..U+1F1D U+1F20..U+1F45 U+1F48..U+1F4D
4492 U+1F50..U+1F57 U+1F59 U+1F5B U+1F5D
4493 U+1F5F..U+1F7D U+1F80..U+1FB4 U+1FB6..U+1FBC
4494 U+1FBE U+1FC2..U+1FC4 U+1FC6..U+1FCC
4495 U+1FD0..U+1FD3 U+1FD6..U+1FDB U+1FE0..U+1FEC
4496 U+1FF2..U+1FF4 U+1FF6..U+1FFC U+2126
4497 U+212A..U+212B U+212E U+2180..U+2182
4498 U+3041..U+3094 U+30A1..U+30FA U+3105..U+312C
4499 U+AC00..U+D7A3
4500 // Ideographic
4501 U+4E00..U+9FA5 U+3007 U+3021..U+3029
4502 // Digit
4503 U+0030..U+0039 U+0660..U+0669 U+06F0..U+06F9
4504 U+0966..U+096F U+09E6..U+09EF U+0A66..U+0A6F
4505 U+0AE6..U+0AEF U+0B66..U+0B6F U+0BE7..U+0BEF
4506 U+0C66..U+0C6F U+0CE6..U+0CEF U+0D66..U+0D6F
4507 U+0E50..U+0E59 U+0ED0..U+0ED9 U+0F20..U+0F29
4508 // CombiningChar
4509 U+0300..U+0345 U+0360..U+0361 U+0483..U+0486
4510 U+0591..U+05A1 U+05A3..U+05B9 U+05BB..U+05BD
4511 U+05BF U+05C1..U+05C2 U+05C4 U+064B..U+0652
4512 U+0670 U+06D6..U+06DC U+06DD..U+06DF
4513 U+06E0..U+06E4 U+06E7..U+06E8 U+06EA..U+06ED
4514 U+0901..U+0903 U+093C U+093E..U+094C U+094D
4515 U+0951..U+0954 U+0962..U+0963 U+0981..U+0983
4516 U+09BC U+09BE U+09BF U+09C0..U+09C4
4517 U+09C7..U+09C8 U+09CB..U+09CD U+09D7
4518 U+09E2..U+09E3 U+0A02 U+0A3C U+0A3E U+0A3F
4519 U+0A40..U+0A42 U+0A47..U+0A48 U+0A4B..U+0A4D
4520 U+0A70..U+0A71 U+0A81..U+0A83 U+0ABC
4521 U+0ABE..U+0AC5 U+0AC7..U+0AC9 U+0ACB..U+0ACD
4522 U+0B01..U+0B03 U+0B3C U+0B3E..U+0B43
4523 U+0B47..U+0B48 U+0B4B..U+0B4D U+0B56..U+0B57
4524 U+0B82..U+0B83 U+0BBE..U+0BC2 U+0BC6..U+0BC8
4525 U+0BCA..U+0BCD U+0BD7 U+0C01..U+0C03
4526 U+0C3E..U+0C44 U+0C46..U+0C48 U+0C4A..U+0C4D
4527 U+0C55..U+0C56 U+0C82..U+0C83 U+0CBE..U+0CC4
4528 U+0CC6..U+0CC8 U+0CCA..U+0CCD U+0CD5..U+0CD6
4529 U+0D02..U+0D03 U+0D3E..U+0D43 U+0D46..U+0D48
4530 U+0D4A..U+0D4D U+0D57 U+0E31 U+0E34..U+0E3A
4531 U+0E47..U+0E4E U+0EB1 U+0EB4..U+0EB9
4532 U+0EBB..U+0EBC U+0EC8..U+0ECD U+0F18..U+0F19
4533 U+0F35 U+0F37 U+0F39 U+0F3E U+0F3F
4534 U+0F71..U+0F84 U+0F86..U+0F8B U+0F90..U+0F95
4535 U+0F97 U+0F99..U+0FAD U+0FB1..U+0FB7 U+0FB9
4536 U+20D0..U+20DC U+20E1 U+302A..U+302F U+3099
4537 U+309A
4538 // Extender
4539 U+00B7 U+02D0 U+02D1 U+0387 U+0640 U+0E46
4540 U+0EC6 U+3005 U+3031..U+3035 U+309D..U+309E
4541 U+30FC..U+30FE
4542 ];
4543
4544 $NameStartChar11 := [
4545 ':' '_'
4546 'A' 'B' 'C' 'D' 'E' 'F' 'G' 'H' 'I' 'J' 'K' 'L' 'M'
4547 'N' 'O' 'P' 'Q' 'R' 'S' 'T' 'U' 'V' 'W' 'X' 'Y' 'Z'
4548 'a' 'b' 'c' 'd' 'e' 'f' 'g' 'h' 'i' 'j' 'k' 'l' 'm'
4549 'n' 'o' 'p' 'q' 'r' 's' 't' 'u' 'v' 'w' 'x' 'y' 'z'
4550 U+00C0..U+00D6 U+00D8..U+00F6 U+00F8..U+02FF
4551 U+0370..U+037D U+037F..U+1FFF U+200C..U+200D
4552 U+2070..U+218F U+2C00..U+2FEF U+3001..U+D7FF
4553 U+F900..U+FDCF U+FDF0..U+FFFD U+10000..U+EFFFF
4554 ];
4555 $NameChar11 := [
4556 '-' '.' '0' '1' '2' '3' '4' '5' '6' '7' '8' '9'
4557 U+00B7 U+0300..U+036F U+203F..U+2040
4558 // NameStartChar
4559 ':' '_'
4560 'A' 'B' 'C' 'D' 'E' 'F' 'G' 'H' 'I' 'J' 'K' 'L' 'M'
4561 'N' 'O' 'P' 'Q' 'R' 'S' 'T' 'U' 'V' 'W' 'X' 'Y' 'Z'
4562 'a' 'b' 'c' 'd' 'e' 'f' 'g' 'h' 'i' 'j' 'k' 'l' 'm'
4563 'n' 'o' 'p' 'q' 'r' 's' 't' 'u' 'v' 'w' 'x' 'y' 'z'
4564 U+00C0..U+00D6 U+00D8..U+00F6 U+00F8..U+02FF
4565 U+0370..U+037D U+037F..U+1FFF U+200C..U+200D
4566 U+2070..U+218F U+2C00..U+2FEF U+3001..U+D7FF
4567 U+F900..U+FDCF U+FDF0..U+FFFD U+10000..U+EFFFF
4568 ];
4569 } // NameChar
4570
4571 lexmode Name
4572 : extends => 'NameChar'
4573 {
4574 Name : value := $NameStartChar11 $NameChar11*;
4575 } // Name
4576
4577 lexmode Nmtoken
4578 : extends => 'NameChar'
4579 {
4580 Nmtoken : value := $NameChar11*;
4581 } // Nmtoken
4582
4583 /*
4584 S
4585 */
4586 lexmode S {
4587 $s := [U+0009 U+000A U+000D U+0020];
4588 S := $s+;
4589 } // S
4590
4591 /*
4592 Document end scanning mode
4593 */
4594 lexmode DocumentEnd
4595 : standalone
4596 : extends => 'S'
4597 {
4598 /*
4599 Processing instruction
4600 */
4601 PIO := ['<'] ['?'];
4602
4603 /*
4604 Comment declaration
4605 */
4606 CDO := ['<'] ['!'] ['-'] ['-'];
4607 } // DocumentEnd
4608
4609 /*
4610 Document misc scanning mode
4611
4612 This mode scans |Misc| constructions as well
4613 as document element's start tag.
4614 */
4615 lexmode DocumentMisc
4616 : standalone
4617 : extends => 'DocumentEnd'
4618 {
4619 /*
4620 Document element start tag
4621 */
4622 STAGO := ['<'];
4623 } // DocumentMisc
4624
4625 /*
4626 Document prolog scanning mode
4627 */
4628 lexmode DocumentProlog
4629 : standalone
4630 : extends => 'DocumentMisc'
4631 {
4632 /*
4633 |DOCTYPE| declaration
4634 */
4635 MDO := ['<'] ['!'];
4636 } // DocumentProlog
4637
4638 /*
4639 Document Start Scanning Mode
4640 */
4641 lexmode DocumentStart
4642 : standalone
4643 : extends => 'DocumentProlog'
4644 {
4645 /*
4646 XML declaration
4647 */
4648 XDO := ['<'] ['?'] ['x'] ['m'] ['l'];
4649 } // DocumentStart
4650
4651 /*
4652 Comment declaration scanning mode
4653 */
4654 lexmode CommentDeclaration
4655 : standalone
4656 {
4657 /*
4658 Comment close
4659 */
4660 COM := ['-'] ['-'];
4661
4662 /*
4663 Comment data
4664 */
4665 ?default-token STRING : value;
4666 } // CommentDeclaration
4667
4668 /*
4669 Processing instruction name and |S| scanning mode
4670 */
4671 lexmode PIName
4672 : standalone
4673 : extends => 'Name'
4674 : extends => 'S'
4675 {
4676 /*
4677 Processing instruction close
4678 */
4679 PIC := ['?'] ['>'];
4680 } // PIName
4681
4682 /*
4683 Processing instruction name and |S| scanning mode
4684 */
4685 lexmode PINmtoken
4686 : standalone
4687 : extends => 'Nmtoken'
4688 : extends => 'S'
4689 {
4690 /*
4691 Processing instruction close
4692 */
4693 PIC := ['?'] ['>'];
4694 } // PINmtoken
4695
4696 /*
4697 Processing instruction data scanning mode
4698 */
4699 lexmode PIData
4700 : standalone
4701 {
4702 /*
4703 Processing instruction close
4704 */
4705 PIC := ['?'] ['>'];
4706
4707 /*
4708 Processing instruction target data
4709 */
4710 ?default-token DATA : value;
4711 } // PIData
4712
4713 /*
4714 Content of element scanning mode
4715 */
4716 lexmode ElementContent
4717 : standalone
4718 {
4719 /*
4720 Start tag open
4721 */
4722 STAGO := ['<'];
4723
4724 /*
4725 End tag open
4726 */
4727 ETAGO := ['<'] ['/'];
4728
4729 /*
4730 Hexadecimal character reference open
4731 */
4732 HCRO := ['&'] ['#'] ['x'];
4733
4734 /*
4735 Numeric character reference open
4736 */
4737 CRO := ['&'] ['#'];
4738
4739 /*
4740 General entity reference open
4741 */
4742 ERO := ['&'];
4743
4744 /*
4745 Comment declaration open
4746 */
4747 CDO := ['<'] ['!'] ['-'] ['-'];
4748
4749 /*
4750 CDATA section open
4751 */
4752 CDSO := ['<'] ['!'] ['[']
4753 ['C'] ['D'] ['A'] ['T'] ['A'] ['['];
4754
4755 /*
4756 Processing instruction open
4757 */
4758 PIO := ['<'] ['?'];
4759
4760 /*
4761 Markup section end
4762 */
4763 MSE := [']'] [']'] ['>'];
4764
4765 /*
4766 Character data
4767 */
4768 /*
4769 Character data and/or |MSE|
4770 */
4771 ?default-token CharData : value;
4772 } // ElementContent
4773
4774 /*
4775 CDATA section content scanning mode
4776 */
4777 lexmode CDATASectionContent
4778 : standalone
4779 {
4780 /*
4781 Markup section end
4782 */
4783 MSE := [']'] [']'] ['>'];
4784
4785 /*
4786 Character data
4787 */
4788 ?default-token CData : value;
4789 } // CDATASectionContent
4790
4791 lexmode EntityReference
4792 : standalone
4793 : extends => 'Name'
4794 {
4795 /*
4796 Reference close
4797 */
4798 REFC := [';'];
4799 } // EntityReference
4800
4801 lexmode NumericCharacterReference
4802 : standalone
4803 {
4804 /*
4805 Decimal number
4806 */
4807 $digit := ['0' '1' '2' '3' '4' '5' '6' '7' '8' '9'];
4808 NUMBER : value := $digit+;
4809
4810 /*
4811 Reference close
4812 */
4813 REFC := [';'];
4814 } // NumericCharacterReference
4815
4816 lexmode HexadecimalCharacterReference
4817 : standalone
4818 {
4819 /*
4820 Hexadecimal number
4821 */
4822 $hexdigit := ['0' '1' '2' '3' '4' '5' '6' '7' '8' '9'
4823 'A' 'B' 'C' 'D' 'E' 'F'
4824 'a' 'b' 'c' 'd' 'e' 'f'];
4825 Hex : value := $hexdigit+;
4826
4827 /*
4828 Reference close
4829 */
4830 REFC := [';'];
4831 } // HexadecimalCharacterReference
4832
4833 /*
4834 The XML Declaration and Text Declaration Scanning Mode
4835 */
4836 lexmode XMLDeclaration
4837 : standalone
4838 : extends => 'Name'
4839 : extends => 'S'
4840 {
4841
4842 /*
4843 Value indicator
4844 */
4845 VI := ['='];
4846
4847 /*
4848 Literal open
4849 */
4850 LIT := ['"'];
4851 LITA := [U+0027];
4852
4853 /*
4854 Processing instruction close
4855
4856 The |PIC|, i.e. |?>|, is split into two tokens |PIC1| and |PIC2|
4857 in this scanning mode to set |no_xml11_eol| flag in the
4858 |_XMLDeclaration_| |rule|.
4859 */
4860 PIC1 := ['?'];
4861 PIC2 := ['>'];
4862 } // XMLDeclaration
4863
4864 /*
4865 The XML Declaration or Processing Instruction Scanning Mode
4866
4867 '<?xml' S ...
4868 (DocumentStart) (XMLDeclarationOrPI) (XMLDeclaration)
4869 '<?xml' '1' S ...
4870 (DocumentStart) (XMLDeclarationOrPI) (PINmtoken)(PIName) (PITarget)
4871 '<?xml' '-' 'stylesheet' S ...
4872 (DocumentStart) (XMLDeclarationOrPI) (PINmtoken) (PIName) (PITarget)
4873 */
4874 lexmode XMLDeclarationOrPI
4875 : standalone
4876 : extends => 'NameChar'
4877 : extends => 'S'
4878 {
4879 NameChar : value := $NameChar11;
4880 } // XMLDeclarationOrPI
4881
4882 lexmode StartTag
4883 : standalone
4884 : extends => 'Name'
4885 : extends => 'S'
4886 {
4887
4888 /*
4889 Value indicator
4890 */
4891 VI := ['='];
4892
4893 /*
4894 Literal open
4895 */
4896 LIT := ['"'];
4897 LITA := [U+0027];
4898
4899 /*
4900 Tag close
4901 */
4902 TAGC := ['>'];
4903
4904 /*
4905 Null end-tag enabled start-tag close
4906 */
4907 NESTC := ['/'];
4908 } // StartTag
4909
4910 lexmode EndTag
4911 : standalone
4912 : extends => 'Name'
4913 : extends => 'S'
4914 {
4915 /*
4916 Tag close
4917 */
4918 TAGC := ['>'];
4919 } // EndTag
4920
4921 lexmode AttributeValueLiteral_ {
4922 ERO := ['&'];
4923 CRO := ['&'] ['#'];
4924 HCRO := ['&'] ['#'] ['x'];
4925 } // AttributeValueLiteral_
4926
4927 lexmode AttributeValueLiteral
4928 : standalone
4929 : extends => 'AttributeValueLiteral_'
4930 {
4931 LIT := ['"'];
4932 STRING : value := [^'"' '&' '<']+;
4933 } // AttributeValueLiteral
4934
4935 lexmode AttributeValueLiteralA
4936 : standalone
4937 : extends => 'AttributeValueLiteral_'
4938 {
4939 LITA := [U+0027];
4940 STRING : value := [^U+0027 '&' '<']+;
4941 } // AttributeValueLiteralA
4942
4943 lexmode AttributeValueLiteralE
4944 : standalone
4945 : extends => 'AttributeValueLiteral_'
4946 {
4947 STRING : value := [^'&' '<']+;
4948 } // AttributeValueLiteralE
4949
4950 lexmode EntityValue_ {
4951 PERO := ['%'];
4952 ERO := ['&'];
4953 CRO := ['&'] ['#'];
4954 HCRO := ['&'] ['#'] ['x'];
4955 } // EntityValue_
4956
4957 lexmode EntityValue
4958 : standalone
4959 : extends => 'EntityValue_'
4960 {
4961 LIT := ['"'];
4962 STRING : value := [^'"' '&' '%']+;
4963 } // EntityValue
4964
4965 lexmode EntityValueA
4966 : standalone
4967 : extends => 'EntityValue_'
4968 {
4969 LITA := [U+0027];
4970 STRING : value := [^U+0027 '&' '%']+;
4971 } // EntityValueA
4972
4973 lexmode SystemLiteral
4974 : standalone
4975 {
4976 LIT := ['"'];
4977 ?default-token STRING : value;
4978 } // SystemLiteral
4979
4980 lexmode SystemLiteralA
4981 : standalone
4982 {
4983 LITA := [U+0027];
4984 ?default-token STRING : value;
4985 } // SystemLiteralA
4986
4987 lexmode DTD
4988 : standalone
4989 : extends => 'S'
4990 {
4991 /*
4992 Markup declaration open
4993 */
4994 MDO := ['<'] ['!'];
4995
4996 /*
4997 Comment declaration open
4998 */
4999 CDO := ['<'] ['!'] ['-'] ['-'];
5000
5001 /*
5002 Processing instruction open
5003 */
5004 PIO := ['<'] ['?'];
5005
5006 /*
5007 Parameter entity reference open
5008 */
5009 PERO := ['%'];
5010
5011 /*
5012 Declaration subset close
5013 */
5014 DSC := [']'];
5015
5016 /*
5017 Contition section open
5018 */
5019 CSO := ['<'] ['!'] ['['];
5020 } // DTD
5021
5022 /*
5023 Markup declaration scanning mode
5024
5025 This mode is used to recognize |MDC| that terminates
5026 a comment declaration as well as the base |lexmode|
5027 for e.g. document type declaration scanning mode.
5028 */
5029 lexmode MarkupDeclaration
5030 : standalone
5031 : extends => 'Name'
5032 : extends => 'S'
5033 {
5034 /*
5035 Markup declaration close
5036 */
5037 MDC := ['>'];
5038
5039 /*
5040 Literal open
5041 */
5042 LIT := ['"'];
5043
5044 /*
5045 Alternative literal open
5046 */
5047 LITA := [U+0027];
5048
5049 /*
5050 Parameter entity reference open
5051 */
5052 PERO := ['%'];
5053
5054 /*
5055 Declaration subset open
5056 */
5057 DSO := ['['];
5058 } // MarkupDeclaration
5059
5060 lexmode ElementDeclaration
5061 : standalone
5062 : extends => 'MarkupDeclaration'
5063 {
5064 /*
5065 Model group open
5066 */
5067 MGO := ['('];
5068
5069 /*
5070 Model group close
5071 */
5072 MGC := [')'];
5073
5074 /*
5075 Reserved name indicator
5076 */
5077 RNI := ['#'];
5078
5079 /*
5080 Occurence indicators
5081 */
5082 OPT := ['?'];
5083 REP := ['*'];
5084 PLUS := ['+'];
5085
5086 /*
5087 Connectors
5088 */
5089 OR := ['|'];
5090 SEQ := [','];
5091 } // ElementDeclaration
5092
5093 lexmode AttlistDeclaration
5094 : standalone
5095 : extends => 'MarkupDeclaration'
5096 {
5097 /*
5098 Enumeration group open
5099 */
5100 EGO := ['('];
5101
5102 /*
5103 Enumeration group close
5104 */
5105 EGC := [')'];
5106
5107 /*
5108 Enumeration choice delimiter
5109 */
5110 OR := ['|'];
5111
5112 /*
5113 Reserved name indicator
5114 */
5115 RNI := ['#'];
5116 } // AttlistDeclaration
5117
5118 lexmode Enumeration
5119 : standalone
5120 : extends => 'Nmtoken'
5121 : extends => 'S'
5122 {
5123 /*
5124 Enumeration group close
5125 */
5126 EGC := [')'];
5127
5128 /*
5129 Enumeration choice delimiter
5130 */
5131 OR := ['|'];
5132 } // Enumeration
5133
5134
5135 token-error default : default {
5136 lang:Perl {
5137 my $location;
5138 __CODE{xp|get-location-from-token::
5139 $token => {$token},
5140 $result => {$location},
5141 }__;
5142 my $continue = __DOMCore:ERROR{xp|wf-syntax-error::
5143 xp|error-token => {$token},
5144 DOMCore|location => {$location},
5145 }__;
5146 unless ($continue) {
5147 __CODE{ParseError}__;
5148 }
5149 }
5150 } // default
5151
5152 @ResourceDef:
5153 @@ForCheck: ManakaiDOM|ForClass
5154 @@QName: ParseError
5155 @@rdf:type: DISPerl|BlockCode
5156 @@PerlDef:
5157 __DEEP{
5158 for (@{$self->{entity}}) {
5159 $_->{close_file}->();
5160 }
5161 }__;
5162 __EXCEPTION{DOMLS|PARSE_ERR}__;
5163
5164 @ResourceDef:
5165 @@ForCheck: ManakaiDOM|ForClass
5166 @@QName: checkNCName
5167 @@rdf:type: DISPerl|BlockCode
5168 @@PerlDef:
5169 if (($self->{xml_version} eq '1.0' and
5170 not <Code::DOMMain|testXML10Name:: $INPUT = $name>) or
5171 ($self->{xml_version} eq '1.1' and
5172 not <Code::DOMMain|testXML11Name:: $INPUT = $name>)) {
5173 my $__location;
5174 __CODE{xp|get-location-from-token::
5175 $token => {$token},
5176 $result => {$__location},
5177 }__;
5178 my $__continue = __c|ERROR{xp|wf-invalid-character-in-node-name::
5179 xp|error-token => {$token},
5180 c|location => {$__location},
5181 xp|name => {$name},
5182 infoset|version => {$self->{xml_version}},
5183 }__;
5184 unless ($__continue) {
5185 __CODE{ParseError}__;
5186 }
5187 } elsif (index ($name, ':') > -1) {
5188 my $__location;
5189 __CODE{xp|get-location-from-token::
5190 $token => {$token},
5191 $result => {$__location},
5192 }__;
5193 my $__continue = __c|ERROR{xp|nswf-legal-ncname::
5194 xp|error-token => {$token},
5195 c|location => {$__location},
5196 xp|name => {$name},
5197 infoset|version => {$self->{xml_version}},
5198 }__;
5199 unless ($__continue) {
5200 __CODE{ParseError}__;
5201 }
5202 }
5203
5204 @ResourceDef:
5205 @@ForCheck: ManakaiDOM|ForClass
5206 @@QName: checkQName
5207 @@rdf:type: DISPerl|BlockCode
5208 @@PerlDef:
5209 if (($self->{xml_version} eq '1.0' and
5210 not <Code::DOMMain|testXML10Name:: $INPUT = $name>) or
5211 ($self->{xml_version} eq '1.1' and
5212 not <Code::DOMMain|testXML11Name:: $INPUT = $name>)) {
5213 my $__location;
5214 __CODE{xp|get-location-from-token::
5215 $token => {$token},
5216 $result => {$__location},
5217 }__;
5218 my $__continue = __c|ERROR{xp|wf-invalid-character-in-node-name::
5219 xp|error-token => {$token},
5220 c|location => {$__location},
5221 xp|name => {$name},
5222 infoset|version => {$self->{xml_version}},
5223 }__;
5224 unless ($__continue) {
5225 __CODE{ParseError}__;
5226 }
5227 } elsif (($self->{xml_version} eq '1.0' and
5228 not <Code::DOMMain|testXML10QName:: $INPUT = $name>) or
5229 ($self->{xml_version} eq '1.1' and
5230 not <Code::DOMMain|testXML11QName:: $INPUT = $name>)) {
5231 my $__location;
5232 __CODE{xp|get-location-from-token::
5233 $token => {$token},
5234 $result => {$__location},
5235 }__;
5236 my $__continue = __c|ERROR{xp|nswf-legal-qname::
5237 xp|error-token => {$token},
5238 c|location => {$__location},
5239 xp|name => {$name},
5240 infoset|version => {$self->{xml_version}},
5241 }__;
5242 unless ($__continue) {
5243 __CODE{ParseError}__;
5244 }
5245 }
5246
5247
5248 @XMLTests:
5249 @@XMLTest:
5250 @@@QName: xp.char.xml10.test
5251 @@@DEnt:
5252 @@@@test:value:
5253 <?xml version="1.0"?>
5254 <p>$u0009$u000A$u000D$u0020$uD7FF$uE000$uFFFD$U00010000$U0010FFFF</p>
5255 @@@test:domTree:
5256 document {
5257 xml-version: '1.0';
5258 element {
5259 text-content: U+0009 U+000A U+000A U+0020 U+D7FF
5260 U+E000 U+FFFD U+10000 U+10FFFF;
5261 }
5262 }
5263 @@XMLTest:
5264 @@@QName: xp.char.xml11.test
5265 @@@DEnt:
5266 @@@@test:value:
5267 <?xml version="1.1"?>
5268 <p>$u0009$u000A$u000D$u0020$uD7FF$uE000$uFFFD$U00010000$U0010FFFF</p>
5269 @@@test:domTree:
5270 document {
5271 xml-version: '1.1';
5272 element {
5273 text-content: U+0009 U+000A U+000A U+0020 U+D7FF
5274 U+E000 U+FFFD U+10000 U+10FFFF;
5275 }
5276 }
5277 @@XMLTest:
5278 @@@QName: xp.char.xml10.c0.test
5279 @@@DEnt:
5280 @@@@test:value:
5281 <?xml version="1.0"?>
5282 <p>$u0000$u0001$u0002$u0003$u0004$u0005$u0006$u0007$u0008$u000B$
5283 $u000C$u000E$u000F$u0010$u0011$u0012$u0013$u0014$u0015$u0016$
5284 $u0017$u0018$u0019$u001A$u001B$u001C$u001D$u001E$u001F</p>
5285 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 4); } /* U+0000 */
5286 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 5); } /* U+0001 */
5287 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 6); } /* U+0002 */
5288 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 7); } /* U+0003 */
5289 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 8); } /* U+0004 */
5290 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 9); } /* U+0005 */
5291 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 10); } /* U+0006 */
5292 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 11); } /* U+0007 */
5293 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 12); } /* U+0008 */
5294 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 13); } /* U+000B */
5295 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 14); } /* U+000C */
5296 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 15); } /* U+000E */
5297 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 16); } /* U+000F */
5298 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 17); } /* U+0010 */
5299 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 18); } /* U+0011 */
5300 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 19); } /* U+0012 */
5301 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 20); } /* U+0013 */
5302 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 21); } /* U+0014 */
5303 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 22); } /* U+0015 */
5304 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 23); } /* U+0016 */
5305 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 24); } /* U+0017 */
5306 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 25); } /* U+0018 */
5307 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 26); } /* U+0019 */
5308 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 27); } /* U+001A */
5309 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 28); } /* U+001B */
5310 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 29); } /* U+001C */
5311 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 30); } /* U+001D */
5312 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 31); } /* U+001E */
5313 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 32); } /* U+001F */
5314 @@XMLTest:
5315 @@@QName: xp.char.xml11.c0.test
5316 @@@DEnt:
5317 @@@@test:value:
5318 <?xml version="1.1"?>
5319 <p>$u0000$u0001$u0002$u0003$u0004$u0005$u0006$u0007$u0008$u000B$
5320 $u000C$u000E$u000F$u0010$u0011$u0012$u0013$u0014$u0015$u0016$
5321 $u0017$u0018$u0019$u001A$u001B$u001C$u001D$u001E$u001F</p>
5322 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 4); } /* U+0000 */
5323 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 5); } /* U+0001 */
5324 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 6); } /* U+0002 */
5325 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 7); } /* U+0003 */
5326 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 8); } /* U+0004 */
5327 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 9); } /* U+0005 */
5328 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 10); } /* U+0006 */
5329 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 11); } /* U+0007 */
5330 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 12); } /* U+0008 */
5331 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 13); } /* U+000B */
5332 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 14); } /* U+000C */
5333 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 15); } /* U+000E */
5334 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 16); } /* U+000F */
5335 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 17); } /* U+0010 */
5336 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 18); } /* U+0011 */
5337 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 19); } /* U+0012 */
5338 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 20); } /* U+0013 */
5339 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 21); } /* U+0014 */
5340 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 22); } /* U+0015 */
5341 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 23); } /* U+0016 */
5342 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 24); } /* U+0017 */
5343 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 25); } /* U+0018 */
5344 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 26); } /* U+0019 */
5345 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 27); } /* U+001A */
5346 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 28); } /* U+001B */
5347 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 29); } /* U+001C */
5348 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 30); } /* U+001D */
5349 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 31); } /* U+001E */
5350 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 32); } /* U+001F */
5351 @@XMLTest:
5352 @@@QName: xp.char.xml10.c1.test
5353 @@@DEnt:
5354 @@@@test:value:
5355 <?xml version="1.0"?>
5356 <p>$u007F$u0080$u0081$u0082$u0083$u0084$u0086$u0087$u0088$
5357 $u0089$u008A$u008B$u008C$
5358 $u008D$u008E$u008F$u0090$u0091$u0092$u0093$u0094$u0095$u0096$
5359 $u0097$u0098$u0099$u009A$u009B$u009C$u009D$u009E$u009F$u0085</p>
5360 @@@test:domTree:
5361 document {
5362 xml-version: '1.0';
5363 element {
5364 text-content: U+007F U+0080 U+0081 U+0082 U+0083 U+0084 U+0086
5365 U+0087 U+0088 U+0089 U+008A U+008B U+008C U+008D
5366 U+008E U+008F U+0090 U+0091 U+0092 U+0093 U+0094
5367 U+0095 U+0096 U+0097 U+0098 U+0099 U+009A U+009B
5368 U+009C U+009D U+009E U+009F U+0085;
5369 }
5370 }
5371 @@XMLTest:
5372 @@@QName: xp.char.xml11.c1.test
5373 @@@DEnt:
5374 @@@@test:value:
5375 <?xml version="1.1"?>
5376 <p>$u007F$u0080$u0081$u0082$u0083$u0084$u0086$u0087$u0088$
5377 $u0089$u008A$u008B$u008C$
5378 $u008D$u008E$u008F$u0090$u0091$u0092$u0093$u0094$u0095$u0096$
5379 $u0097$u0098$u0099$u009A$u009B$u009C$u009D$u009E$u009F$u0085</p>
5380 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 4); } /* U+007F */
5381 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 5); } /* U+0080 */
5382 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 6); } /* U+0081 */
5383 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 7); } /* U+0082 */
5384 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 8); } /* U+0083 */
5385 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 9); } /* U+0084 */
5386 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 10); } /* U+0086 */
5387 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 11); } /* U+0087 */
5388 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 12); } /* U+0088 */
5389 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 13); } /* U+0089 */
5390 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 14); } /* U+008A */
5391 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 15); } /* U+008B */
5392 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 16); } /* U+008C */
5393 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 17); } /* U+008D */
5394 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 18); } /* U+008E */
5395 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 19); } /* U+008F */
5396 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 20); } /* U+0090 */
5397 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 21); } /* U+0091 */
5398 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 22); } /* U+0092 */
5399 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 23); } /* U+0093 */
5400 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 24); } /* U+0094 */
5401 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 25); } /* U+0095 */
5402 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 26); } /* U+0096 */
5403 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 27); } /* U+0097 */
5404 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 28); } /* U+0098 */
5405 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 29); } /* U+0099 */
5406 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 30); } /* U+009A */
5407 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 31); } /* U+009B */
5408 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 32); } /* U+009C */
5409 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 33); } /* U+009D */
5410 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 34); } /* U+009E */
5411 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 35); } /* U+009F */
5412
5413 @@XMLTest:
5414 @@@QName: xp.c0.internal.entity.xml11.1.test
5415 @@@DEnt:
5416 @@@@test:value:
5417 <?xml version="1.1"?>
5418 <!DOCTYPE a [
5419 <!ENTITY e "&#x01;&#x02;&#x03;&#x04;&#x05;&#x06;&#x07;$
5420 &#x08;&#x09;&#x0A;&#x0B;&#x0C;&#x0D;&#x0E;&#x0F;$
5421 &#x10;&#x11;&#x12;&#x13;&#x14;&#x15;&#x16;&#x17;$
5422 &#x18;&#x19;&#x1A;&#x1B;&#x1C;&#x1D;&#x1E;&#x1F;">
5423 ]><a/>
5424 @@@cfg:entity-replacement-tree: 1
5425 @@@test:domTree:
5426 document {
5427 document-type {
5428 general-entity {
5429 node-name: 'e';
5430 text-content: U+0001 U+0002 U+0003 U+0004 U+0005
5431 U+0006 U+0007 U+0008 U+0009 U+000A U+000B
5432 U+000C U+000D U+000E U+000F
5433 U+0010 U+0011 U+0012 U+0013 U+0014 U+0015
5434 U+0016 U+0017 U+0018 U+0019 U+001A U+001B
5435 U+001C U+001D U+001E U+001F;
5436 }
5437 }
5438 element { }
5439 }
5440 @@XMLTest:
5441 @@@QName: xp.c1.internal.entity.xml11.1.test
5442 @@@DEnt:
5443 @@@@test:value:
5444 <?xml version="1.1"?>
5445 <!DOCTYPE a [
5446 <!ENTITY e "&#x80;&#x81;&#x82;&#x83;&#x84;&#x85;&#x86;&#x87;$
5447 &#x88;&#x89;&#x8A;&#x8B;&#x8C;&#x8D;&#x8E;&#x8F;$
5448 &#x90;&#x91;&#x92;&#x93;&#x94;&#x95;&#x96;&#x97;$
5449 &#x98;&#x99;&#x9A;&#x9B;&#x9C;&#x9D;&#x9E;&#x9F;&#x7F;">
5450 ]><a/>
5451 @@@cfg:entity-replacement-tree: 1
5452 @@@test:domTree:
5453 document {
5454 document-type {
5455 general-entity {
5456 node-name: 'e';
5457 text-content: U+0080 U+0081 U+0082 U+0083 U+0084 U+0085
5458 U+0086 U+0087 U+0088 U+0089 U+008A U+008B
5459 U+008C U+008D U+008E U+008F
5460 U+0090 U+0091 U+0092 U+0093 U+0094 U+0095
5461 U+0096 U+0097 U+0098 U+0099 U+009A U+009B
5462 U+009C U+009D U+009E U+009F U+007F;
5463 }
5464 }
5465 element { }
5466 }
5467
5468 @@XMLTest:
5469 @@@QName: xp.syntax.empty.test
5470 @@@DEnt:
5471 @@@@test:value: \
5472 @@@c:erred:
5473 <[[xp:wf-syntax-error]]> { (1, 1); }
5474 @@XMLTest:
5475 @@@QName: xp.syntax.space.test
5476 @@@DEnt:
5477 @@@@test:value: \
5478 @@@c:erred:
5479 <[[xp:wf-syntax-error]]> { (1, 4); }
5480 @@XMLTest:
5481 @@@QName: xp.syntax.newlines.test
5482 @@@DEnt:
5483 @@@@test:value:
5484 \
5485 \
5486 \
5487 @@@c:erred:
5488 <[[xp:wf-syntax-error]]> { (3, 1); }
5489
5490 @@XMLTest:
5491 @@@QName: xp.only.docel.test
5492 @@@DEnt:
5493 @@@@test:value:
5494 <p></p>
5495 @@@test:domTree:
5496 document {
5497 xml-version: '1.0';
5498 xml-encoding: null;
5499 xml-standalone: false;
5500 element {
5501 namespace-uri: null;
5502 prefix: null;
5503 local-name: 'p';
5504 text-content: '';
5505 }
5506 }
5507 @@XMLTest:
5508 @@@QName: xp.only.docel.emptyelemtag.test
5509 @@@DEnt:
5510 @@@@test:value:
5511 <p/>
5512 @@@test:domTree:
5513 document {
5514 xml-version: '1.0';
5515 xml-encoding: null;
5516 xml-standalone: false;
5517 element {
5518 namespace-uri: null;
5519 prefix: null;
5520 local-name: 'p';
5521 text-content: '';
5522 }
5523 }
5524 @@XMLTest:
5525 @@@QName: xp.root.s.1.test
5526 @@@DEnt:
5527 @@@@test:value:
5528 <?xml version="1.0"?>$u0020$u000D$u000A$u0009
5529 <p></p>
5530 @@@test:domTree:
5531 document {
5532 element { }
5533 }
5534
5535 @@XMLTest:
5536 @@@QName: xp.Name.1.test
5537 @@@DEnt:
5538 @@@@test:value: <name/>
5539 @@@test:domTree:
5540 document {
5541 element {
5542 node-name: 'name';
5543 }
5544 }
5545 @@XMLTest:
5546 @@@QName: xp.Name.2.test
5547 @@@DEnt:
5548 @@@@test:value: <name0/>
5549 @@@test:domTree:
5550 document {
5551 element {
5552 node-name: 'name0';
5553 }
5554 }
5555 @@enImplNote:
5556 @@@ddid: xml11name
5557 @@@@:
5558 {TODO:: XML 1.1 Name tests required
5559 }
5560
5561 @@XMLTest:
5562 @@@QName: xp.content.mse.1.test
5563 @@@DEnt:
5564 @@@@test:value:
5565 <p>]]></p>
5566 @@@c:erred:
5567 <[[xp|wf-syntax-error]]> { (1, 4)..(1, 6); }
5568 @@XMLTest:
5569 @@@QName: xp.content.mse.2.test
5570 @@@DEnt:
5571 @@@@test:value:
5572 <p>aaa]]>bbb</p>
5573 @@@c:erred:
5574 <[[xp|wf-syntax-error]]> { (1, 7)..(1, 9); }
5575
5576 @@XMLTest:
5577 @@@QName: xp.root.comment.1.test
5578 @@@DEnt:
5579 @@@@test:value:
5580 <!--comment data-->
5581 <p/>
5582 @@@test:domTree:
5583 document {
5584 comment {
5585 data: 'comment data';
5586 }
5587 element { }
5588 }
5589 @@XMLTest:
5590 @@@QName: xp.root.comment.2.test
5591 @@@DEnt:
5592 @@@@test:value:
5593 <!---->
5594 <p/>
5595 @@@test:domTree:
5596 document {
5597 comment {
5598 data: '';
5599 }
5600 element { }
5601 }
5602 @@XMLTest:
5603 @@@QName: xp.root.after.pi.comment.1.test
5604 @@@DEnt:
5605 @@@@test:value:
5606 <?pi?>
5607 <!--comment data-->
5608 <p/>
5609 @@@test:domTree:
5610 document {
5611 pi { }
5612 comment {
5613 data: 'comment data';
5614 }
5615 element { }
5616 }
5617 @@XMLTest:
5618 @@@QName: xp.root.after.pi.comment.2.test
5619 @@@DEnt:
5620 @@@@test:value:
5621 <?pi?>
5622 <!---->
5623 <p/>
5624 @@@test:domTree:
5625 document {
5626 pi { }
5627 comment {
5628 data: '';
5629 }
5630 element { }
5631 }
5632 @@XMLTest:
5633 @@@QName: xp.root.after.element.comment.1.test
5634 @@@DEnt:
5635 @@@@test:value:
5636 <p/>
5637 <!--comment data-->
5638 @@@test:domTree:
5639 document {
5640 element { }
5641 comment {
5642 data: 'comment data';
5643 }
5644 }
5645 @@XMLTest:
5646 @@@QName: xp.root.after.element.comment.2.test
5647 @@@DEnt:
5648 @@@@test:value:
5649 <p/>
5650 <!---->
5651 @@@test:domTree:
5652 document {
5653 element { }
5654 comment {
5655 data: '';
5656 }
5657 }
5658 @@XMLTest:
5659 @@@QName: xp.doctype.intsubset.comment.1.test
5660 @@@DEnt:
5661 @@@@test:value:
5662 <!DOCTYPE a [
5663 <!--comment data-->
5664 ]>
5665 <p/>
5666 @@@test:domTree:
5667 document {
5668 document-type { }
5669 element { }
5670 }
5671 @@XMLTest:
5672 @@@QName: xp.doctype.intsubset.comment.2.test
5673 @@@DEnt:
5674 @@@@test:value:
5675 <!DOCTYPE a [
5676 <!---->
5677 ]>
5678 <p/>
5679 @@@test:domTree:
5680 document {
5681 document-type { }
5682 element { }
5683 }
5684 @@XMLTest:
5685 @@@QName: xp.doctype.intsubset.comment.3.test
5686 @@@DEnt:
5687 @@@@test:value:
5688 <!DOCTYPE a [
5689 <?pi?>
5690 <!---->
5691 ]>
5692 <p/>
5693 @@@test:domTree:
5694 document {
5695 document-type {
5696 pi { }
5697 }
5698 element { }
5699 }
5700 @@XMLTest:
5701 @@@QName: xp.content.comment.1.test
5702 @@@DEnt:
5703 @@@@test:value:
5704 <p><!--comment data--></p>
5705 @@@test:domTree:
5706 document {
5707 element {
5708 comment {
5709 data: 'comment data';
5710 }
5711 }
5712 }
5713 @@XMLTest:
5714 @@@QName: xp.content.comment.2.test
5715 @@@DEnt:
5716 @@@@test:value:
5717 <p><!----></p>
5718 @@@test:domTree:
5719 document {
5720 element {
5721 comment {
5722 data: '';
5723 }
5724 }
5725 }
5726 @@XMLTest:
5727 @@@QName: xp.content.comment.3.test
5728 @@@DEnt:
5729 @@@@test:value:
5730 <p>aaaaa<!---->bbbbb</p>
5731 @@@test:domTree:
5732 document {
5733 element {
5734 text {
5735 data: 'aaaaa';
5736 }
5737 comment {
5738 data: '';
5739 }
5740 text {
5741 data: 'bbbbb';
5742 }
5743 }
5744 }
5745 @@XMLTest:
5746 @@@QName: xp.content.comment.--.1.test
5747 @@@DEnt:
5748 @@@@test:value:
5749 <p><!--data--data--></p>
5750 @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 12)..(1, 17); }
5751 @@XMLTest:
5752 @@@QName: xp.content.comment.---gt.test
5753 @@@DEnt:
5754 @@@@test:value:
5755 <p><!--data---></p>
5756 @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 12)..(1, 15); }
5757
5758 @@XMLTest:
5759 @@@QName: xp.xmldecl.version.1.0.test
5760 @@@DEnt:
5761 @@@@test:value:
5762 <?xml version="1.0"?>
5763 <p></p>
5764 @@@test:domTree:
5765 document {
5766 xml-version: '1.0';
5767 xml-encoding: null;
5768 xml-standalone: false;
5769 element { }
5770 }
5771 @@XMLTest:
5772 @@@QName: xp.xmldecl.version.1.0.lita.test
5773 @@@DEnt:
5774 @@@@test:value:
5775 <?xml version='1.0'?>
5776 <p></p>
5777 @@@test:domTree:
5778 document {
5779 xml-version: '1.0';
5780 xml-encoding: null;
5781 xml-standalone: false;
5782 element { }
5783 }
5784 @@XMLTest:
5785 @@@QName: xp.xmldecl.version.1.0.s.test
5786 @@@DEnt:
5787 @@@@test:value:
5788 <?xml version = "1.0" ?>
5789 <p></p>
5790 @@@test:domTree:
5791 document {
5792 xml-version: '1.0';
5793 xml-encoding: null;
5794 xml-standalone: false;
5795 element { }
5796 }
5797 @@XMLTest:
5798 @@@QName: xp.xmldecl.version.1.1.test
5799 @@@DEnt:
5800 @@@@test:value:
5801 <?xml version="1.1"?>
5802 <p></p>
5803 @@@test:domTree:
5804 document {
5805 xml-version: '1.1';
5806 xml-encoding: null;
5807 xml-standalone: false;
5808 element { }
5809 }
5810
5811 @@XMLTest:
5812 @@@QName: xp.xmldecl.version.1.0.encoding.usascii.test
5813 @@@DEnt:
5814 @@@@test:value:
5815 <?xml version="1.0" encoding="US-ascii"?>
5816 <p></p>
5817 @@@test:domTree:
5818 document {
5819 xml-version: '1.0';
5820 xml-encoding: 'US-ascii';
5821 xml-standalone: false;
5822 element { }
5823 }
5824 @@XMLTest:
5825 @@@QName: xp.xmldecl.version.1.0.encoding.usascii.lita.test
5826 @@@DEnt:
5827 @@@@test:value:
5828 <?xml version="1.0" encoding='US-ascii'?>
5829 <p></p>
5830 @@@test:domTree:
5831 document {
5832 xml-version: '1.0';
5833 xml-encoding: 'US-ascii';
5834 xml-standalone: false;
5835 element { }
5836 }
5837 @@XMLTest:
5838 @@@QName: xp.xmldecl.version.1.0.encoding.usascii.s.test
5839 @@@DEnt:
5840 @@@@test:value:
5841 <?xml version="1.0" encoding = "US-ascii" ?>
5842 <p></p>
5843 @@@test:domTree:
5844 document {
5845 xml-version: '1.0';
5846 xml-encoding: 'US-ascii';
5847 xml-standalone: false;
5848 element { }
5849 }
5850
5851 @@XMLTest:
5852 @@@QName: xp.xmldecl.version.1.0.encoding.usascii.standalone.yes.test
5853 @@@DEnt:
5854 @@@@test:value:
5855 <?xml version="1.0" encoding="us-ascii" standalone="yes"?>
5856 <p></p>
5857 @@@test:domTree:
5858 document {
5859 xml-version: '1.0';
5860 xml-encoding: 'us-ascii';
5861 xml-standalone: true;
5862 element { }
5863 }
5864 @@XMLTest:
5865 @@@QName: xp.xmldecl.version.1.0.encoding.usascii.standalone.no.test
5866 @@@DEnt:
5867 @@@@test:value:
5868 <?xml version="1.0" encoding="us-ascii" standalone="no"?>
5869 <p></p>
5870 @@@test:domTree:
5871 document {
5872 xml-version: '1.0';
5873 xml-encoding: 'us-ascii';
5874 xml-standalone: false;
5875 element { }
5876 }
5877 @@XMLTest:
5878 @@@QName: xp.xmldecl.version.1.0.encoding.usascii.standalone.yes.lita.test
5879 @@@DEnt:
5880 @@@@test:value:
5881 <?xml version="1.0" encoding="us-ascii" standalone='yes'?>
5882 <p></p>
5883 @@@test:domTree:
5884 document {
5885 xml-version: '1.0';
5886 xml-encoding: 'us-ascii';
5887 xml-standalone: true;
5888 element { }
5889 }
5890 @@XMLTest:
5891 @@@QName: xp.xmldecl.version.1.0.encoding.usascii.standalone.yes.s.test
5892 @@@DEnt:
5893 @@@@test:value:
5894 <?xml version="1.0" encoding="us-ascii" standalone = "yes" ?>
5895 <p></p>
5896 @@@test:domTree:
5897 document {
5898 xml-version: '1.0';
5899 xml-encoding: 'us-ascii';
5900 xml-standalone: true;
5901 element { }
5902 }
5903 @@XMLTest:
5904 @@@QName: xp.xmldecl.no.encoding.but.standalone.attr.test
5905 @@@DEnt:
5906 @@@@test:value:
5907 <?xml version="1.0" standalone="yes"?>
5908 <p></p>
5909 @@@test:domTree:
5910 document {
5911 xml-version: '1.0';
5912 xml-encoding: null;
5913 xml-standalone: true;
5914 element { }
5915 }
5916 @@XMLTest:
5917 @@@QName: xp.xmldecl.encoding.encname.test
5918 @@@DEnt:
5919 @@@@test:value:
5920 <?xml version="1.0" encoding="a-._01-"?>
5921 <p></p>
5922 @@@test:domTree:
5923 document {
5924 xml-version: '1.0';
5925 xml-encoding: 'a-._01-';
5926 xml-standalone: false;
5927 element { }
5928 }
5929
5930 @@XMLTest:
5931 @@@QName: xp.xmldecl.no.s.no.attr.test
5932 @@@DEnt:
5933 @@@@test:value:
5934 <?xml?>
5935 <p></p>
5936 @@@c:erred:
5937 <[[xp:wf-syntax-error]]> { (1, 1)..(1, 7); }
5938 @@XMLTest:
5939 @@@QName: xp.xmldecl.s.no.attr.test
5940 @@@DEnt:
5941 @@@@test:value:
5942 <?xml ?>
5943 <p></p>
5944 @@@c:erred:
5945 <[[xp:wf-syntax-error]]> { (1, 8)..(1, 9); }
5946 @@XMLTest:
5947 @@@QName: xp.xmldecl.unknown.attr.test
5948 @@@DEnt:
5949 @@@@test:value:
5950 <?xml unknown="value"?>
5951 <p></p>
5952 @@@c:erred:
5953 <[[xp:wf-syntax-error]]> { (1, 8)..(1, 22); }
5954 @@XMLTest:
5955 @@@QName: xp.xmldecl.version.unknown.attr.test
5956 @@@DEnt:
5957 @@@@test:value:
5958 <?xml version="1.0" unknown="value"?>
5959 <p></p>
5960 @@@c:erred:
5961 <[[xp:wf-syntax-error]]> { (1, 21)..(1, 35); }
5962 @@XMLTest:
5963 @@@QName: xp.xmldecl.version.encoding.unknown.attr.test
5964 @@@DEnt:
5965 @@@@test:value:
5966 <?xml version="1.0" encoding="us-ascii" unknown="value"?>
5967 <p></p>
5968 @@@c:erred:
5969 <[[xp:wf-syntax-error]]> { (1, 41)..(1, 55); }
5970 @@XMLTest:
5971 @@@QName: xp.xmldecl.version.encoding.standalone.unknown.attr.test
5972 @@@DEnt:
5973 @@@@test:value:
5974 <?xml version="1.0" encoding="us-ascii" standalone="yes"
5975 unknown="value"?>
5976 <p></p>
5977 @@@c:erred:
5978 <[[xp:wf-syntax-error]]> { (2, 1)..(2, 15); }
5979 @@XMLTest:
5980 @@@QName: xp.xmldecl.no.version.but.encoding.attr.test
5981 @@@DEnt:
5982 @@@@test:value:
5983 <?xml encoding="us-ascii"?>
5984 <p></p>
5985 @@@c:erred:
5986 <[[xp:wf-syntax-error]]> { (1, 7)..(1, 25); }
5987 @@XMLTest:
5988 @@@QName: xp.xmldecl.no.version.but.standalone.attr.test
5989 @@@DEnt:
5990 @@@@test:value:
5991 <?xml standalone="yes"?>
5992 <p></p>
5993 @@@c:erred:
5994 <[[xp:wf-syntax-error]]> { (1, 7)..(1, 24); }
5995 @@XMLTest:
5996 @@@QName: xp.xmldecl.version.unsupported.test
5997 @@@DEnt:
5998 @@@@test:value:
5999 <?xml version="1.2"?>
6000 <p></p>
6001 @@@c:erred:
6002 <[[xp:wf-unsupported-xml-version]]> { (1, 7)..(1, 19); }
6003 @@XMLTest:
6004 @@@QName: xp.xmldecl.version.unsupported.2.test
6005 @@@DEnt:
6006 @@@@test:value:
6007 <?xml version=" 1.0 "?>
6008 <p></p>
6009 @@@c:erred:
6010 <[[xp:wf-unsupported-xml-version]]> { (1, 7)..(1, 21); }
6011 @@XMLTest:
6012 @@@QName: xp.xmldecl.version.unsupported.3.test
6013 @@@DEnt:
6014 @@@@test:value:
6015 <?xml version="01.00"?>
6016 <p></p>
6017 @@@c:erred:
6018 <[[xp:wf-unsupported-xml-version]]> { (1, 7)..(1, 21); }
6019 @@XMLTest:
6020 @@@QName: xp.xmldecl.encoding.malformed.1.test
6021 @@@DEnt:
6022 @@@@test:value:
6023 <?xml version="1.0" encoding="0088"?>
6024 <p></p>
6025 @@@c:erred:
6026 <[[xp:wf-malformed-enc-name]]> { (1, 21)..(1, 35); }
6027 @@XMLTest:
6028 @@@QName: xp.xmldecl.encoding.malformed.2.test
6029 @@@DEnt:
6030 @@@@test:value:
6031 <?xml version="1.0" encoding="D.V.D!"?>
6032 <p></p>
6033 @@@c:erred:
6034 <[[xp:wf-malformed-enc-name]]> { (1, 21)..(1, 38); }
6035 @@XMLTest:
6036 @@@QName: xp.xmldecl.standalone.malformed.1.test
6037 @@@DEnt:
6038 @@@@test:value:
6039 <?xml version="1.0" standalone="true"?>
6040 <p></p>
6041 @@@c:erred:
6042 <[[xp:wf-malformed-xml-standalone]]> { (1, 21)..(1, 38); }
6043 @@XMLTest:
6044 @@@QName: xp.xmldecl.standalone.malformed.2.test
6045 @@@DEnt:
6046 @@@@test:value:
6047 <?xml version="1.0" standalone="YES"?>
6048 <p></p>
6049 @@@c:erred:
6050 <[[xp:wf-malformed-xml-standalone]]> { (1, 21)..(1, 37); }
6051 @@XMLTest:
6052 @@@QName: xp.xmldecl.standalone.malformed.3.test
6053 @@@DEnt:
6054 @@@@test:value:
6055 <?xml version="1.0" standalone="no "?>
6056 <p></p>
6057 @@@c:erred:
6058 <[[xp:wf-malformed-xml-standalone]]> { (1, 21)..(1, 38); }
6059
6060 @@XMLTest:
6061 @@@QName: xp.no-xmldecl.xml...-pi.test
6062 @@@DEnt:
6063 @@@@test:value:
6064 <?xmldeclaration?>
6065 <a></a>
6066 @@@test:domTree:
6067 document {
6068 pi {
6069 node-name: 'xmldeclaration';
6070 node-value: '';
6071 }
6072 element { }
6073 }
6074 @@XMLTest:
6075 @@@QName: xp.no-xmldecl.xml...-pi.after.document.element.test
6076 @@@DEnt:
6077 @@@@test:value:
6078 <a></a>
6079 <?xmldeclaration?>
6080 @@@test:domTree:
6081 document {
6082 element { }
6083 pi {
6084 node-name: 'xmldeclaration';
6085 node-value: '';
6086 }
6087 }
6088 @@XMLTest:
6089 @@@QName: xp.no-xmldecl.xml...-pi.in.document.element.test
6090 @@@DEnt:
6091 @@@@test:value:
6092 <a>
6093 <?xmldeclaration?>
6094 </a>
6095 @@@test:domTree:
6096 document {
6097 element {
6098 text { }
6099 pi {
6100 node-name: 'xmldeclaration';
6101 node-value: '';
6102 }
6103 text { }
6104 }
6105 }
6106 @@XMLTest:
6107 @@@QName: xp.no-xmldecl.xml...-pi.in.doctype.test
6108 @@@DEnt:
6109 @@@@test:value:
6110 <!DOCTYPE a [
6111 <?xmldeclaration?>
6112 ]>
6113 <a></a>
6114 @@@test:domTree:
6115 document {
6116 document-type {
6117 pi {
6118 node-name: 'xmldeclaration';
6119 node-value: '';
6120 }
6121 }
6122 element { }
6123 }
6124
6125 @@XMLTest:
6126 @@@QName: xp.XMLdecl.test
6127 @@@DEnt:
6128 @@@@test:value:
6129 <?XML version="1.0"?>
6130 <p></p>
6131 @@@c:erred:
6132 <[[xp:wf-pi-target-is-xml]]> { (1, 1)..(1, 5); }
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.after.document.element.empty.test
6143 @@@DEnt:
6144 @@@@test:value:
6145 <p></p>
6146 <?xml?>
6147 @@@c:erred:
6148 <[[xp:wf-pi-target-is-xml]]> { (2, 1)..(2, 5); }
6149 @@XMLTest:
6150 @@@QName: xp.xmldecl.after.document.element.test
6151 @@@DEnt:
6152 @@@@test:value:
6153 <p></p>
6154 <?xml version="1.0"?>
6155 @@@c:erred:
6156 <[[xp:wf-pi-target-is-xml]]> { (2, 1)..(2, 5); }
6157 @@XMLTest:
6158 @@@QName: xp.xmldecl.in.element.empty.test
6159 @@@DEnt:
6160 @@@@test:value:
6161 <p>
6162 <?xml?>
6163 </p>
6164 @@@c:erred:
6165 <[[xp:wf-pi-target-is-xml]]> { (2, 1)..(2, 5); }
6166 @@XMLTest:
6167 @@@QName: xp.xmldecl.in.element.test
6168 @@@DEnt:
6169 @@@@test:value:
6170 <p>
6171 <?xml version="1.0"?>
6172 </p>
6173 @@@c:erred:
6174 <[[xp:wf-pi-target-is-xml]]> { (2, 1)..(2, 5); }
6175 @@XMLTest:
6176 @@@QName: xp.xmldecl.after.comment.test
6177 @@@DEnt:
6178 @@@@test:value:
6179 <!---->
6180 <?xml version="1.0"?>
6181 <p></p>
6182 @@@c:erred:
6183 <[[xp:wf-pi-target-is-xml]]> { (2, 1)..(2, 5); }
6184 @@XMLTest:
6185 @@@QName: xp.xmldecl.after.comment.empty.test
6186 @@@DEnt:
6187 @@@@test:value:
6188 <!---->
6189 <?xml?>
6190 <p></p>
6191 @@@c:erred:
6192 <[[xp:wf-pi-target-is-xml]]> { (2, 1)..(2, 5); }
6193 @@XMLTest:
6194 @@@QName: xp.xmldecl.after.pi.test
6195 @@@DEnt:
6196 @@@@test:value:
6197 <?xml-declaration?>
6198 <?xml version="1.0"?>
6199 <p></p>
6200 @@@c:erred:
6201 <[[xp:wf-pi-target-is-xml]]> { (2, 1)..(2, 5); }
6202 @@XMLTest:
6203 @@@QName: xp.xmldecl.after.pi.empty.test
6204 @@@DEnt:
6205 @@@@test:value:
6206 <?xml-declaration?>
6207 <?xml?>
6208 <p></p>
6209 @@@c:erred:
6210 <[[xp:wf-pi-target-is-xml]]> { (2, 1)..(2, 5); }
6211 @@XMLTest:
6212 @@@QName: xp.xmldecl.after.pi.2.test
6213 @@@DEnt:
6214 @@@@test:value:
6215 <?declaration?>
6216 <?xml version="1.0"?>
6217 <p></p>
6218 @@@c:erred:
6219 <[[xp:wf-pi-target-is-xml]]> { (2, 1)..(2, 5); }
6220 @@XMLTest:
6221 @@@QName: xp.xmldecl.after.pi.empty.2.test
6222 @@@DEnt:
6223 @@@@test:value:
6224 <?declaration?>
6225 <?xml?>
6226 <p></p>
6227 @@@c:erred:
6228 <[[xp:wf-pi-target-is-xml]]> { (2, 1)..(2, 5); }
6229 @@XMLTest:
6230 @@@QName: xp.xmldecl.after.doctype.test
6231 @@@DEnt:
6232 @@@@test:value:
6233 <!DOCTYPE a>
6234 <?xml version="1.0"?>
6235 <p></p>
6236 @@@c:erred:
6237 <[[xp:wf-pi-target-is-xml]]> { (2, 1)..(2, 5); }
6238 @@XMLTest:
6239 @@@QName: xp.xmldecl.after.doctype.empty.test
6240 @@@DEnt:
6241 @@@@test:value:
6242 <!DOCTYPE a>
6243 <?xml?>
6244 <p></p>
6245 @@@c:erred:
6246 <[[xp:wf-pi-target-is-xml]]> { (2, 1)..(2, 5); }
6247 @@XMLTest:
6248 @@@QName: xp.xmldecl.in.doctype.test
6249 @@@DEnt:
6250 @@@@test:value:
6251 <!DOCTYPE a [
6252 <?xml version="1.0"?>
6253 ]>
6254 <p></p>
6255 @@@c:erred:
6256 <[[xp:wf-pi-target-is-xml]]> { (2, 1)..(2, 5); }
6257 @@XMLTest:
6258 @@@QName: xp.xmldecl.in.doctype.empty.test
6259 @@@DEnt:
6260 @@@@test:value:
6261 <!DOCTYPE a [
6262 <?xml?>
6263 ]>
6264 <p></p>
6265 @@@c:erred:
6266 <[[xp:wf-pi-target-is-xml]]> { (2, 1)..(2, 5); }
6267
6268 @@XMLTest:
6269 @@@QName: xp.pi.before.element.empty.test
6270 @@@DEnt:
6271 @@@@test:value:
6272 <?target?>
6273 <a></a>
6274 @@@test:domTree:
6275 document {
6276 pi {
6277 node-name: 'target';
6278 node-value: '';
6279 }
6280 element { }
6281 }
6282 @@XMLTest:
6283 @@@QName: xp.pi.before.element.s.test
6284 @@@DEnt:
6285 @@@@test:value:
6286 <?target ?>
6287 <a></a>
6288 @@@test:domTree:
6289 document {
6290 pi {
6291 node-name: 'target';
6292 node-value: '';
6293 }
6294 element { }
6295 }
6296 @@XMLTest:
6297 @@@QName: xp.pi.before.element.string.test
6298 @@@DEnt:
6299 @@@@test:value:
6300 <?target string?>
6301 <a></a>
6302 @@@test:domTree:
6303 document {
6304 pi {
6305 node-name: 'target';
6306 node-value: 'string';
6307 }
6308 element { }
6309 }
6310 @@XMLTest:
6311 @@@QName: xp.pi.before.element.string.s.test
6312 @@@DEnt:
6313 @@@@test:value:
6314 <?target string ?>
6315 <a></a>
6316 @@@test:domTree:
6317 document {
6318 pi {
6319 node-name: 'target';
6320 node-value: 'string ';
6321 }
6322 element { }
6323 }
6324 @@XMLTest:
6325 @@@QName: xp.pi.before.element.gt.test
6326 @@@DEnt:
6327 @@@@test:value:
6328 <?target string>string?>
6329 <a></a>
6330 @@@test:domTree:
6331 document {
6332 pi {
6333 node-name: 'target';
6334 node-value: 'string>string';
6335 }
6336 element { }
6337 }
6338 @@XMLTest:
6339 @@@QName: xp.pi.doctype.empty.test
6340 @@@DEnt:
6341 @@@@test:value:
6342 <!DOCTYPE a [
6343 <?target?>
6344 ]>
6345 <a></a>
6346 @@@test:domTree:
6347 document {
6348 document-type {
6349 pi {
6350 node-name: 'target';
6351 node-value: '';
6352 }
6353 }
6354 element { }
6355 }
6356
6357 @@XMLTest:
6358 @@@QName: xp.pi.no.target.test
6359 @@@DEnt:
6360 @@@@test:value:
6361 <??>
6362 <p></p>
6363 @@@c:erred:
6364 <[[xp:wf-syntax-error]]> { (1, 3)..(1, 4); }
6365 @@XMLTest:
6366 @@@QName: xp.pi.no.target.2.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.bad.target.1.test
6375 @@@DEnt:
6376 @@@@test:value:
6377 <?target! ?>
6378 <p></p>
6379 @@@c:erred:
6380 <[[xp:wf-syntax-error]]> { (1, 9)..(1, 9); }
6381 @@XMLTest:
6382 @@@QName: xp.pi.bad.target.2.test
6383 @@@DEnt:
6384 @@@@test:value:
6385 <?0target ?>
6386 <p></p>
6387 @@@c:erred:
6388 <[[xp:wf-syntax-error]]> { (1, 3)..(1, 3); }
6389
6390 @@XMLTest:
6391 @@@QName: xp.cdatasection.empty.1.test
6392 @@@DEnt:
6393 @@@@test:value:
6394 <p><![CDATA[]]></p>
6395 @@@test:domTree:
6396 document {
6397 element {
6398 cdata-section {
6399 data: '';
6400 }
6401 }
6402 }
6403 @@XMLTest:
6404 @@@QName: xp.cdatasection.empty.2.test
6405 @@@DEnt:
6406 @@@@test:value:
6407 <p>aa<![CDATA[]]>bb</p>
6408 @@@test:domTree:
6409 document {
6410 element {
6411 text { data: 'aa'; }
6412 cdata-section {
6413 data: '';
6414 }
6415 text { data: 'bb'; }
6416 }
6417 }
6418 @@XMLTest:
6419 @@@QName: xp.cdatasection.1.test
6420 @@@DEnt:
6421 @@@@test:value:
6422 <p><![CDATA[abcdefg]]></p>
6423 @@@test:domTree:
6424 document {
6425 element {
6426 cdata-section {
6427 data: 'abcdefg';
6428 }
6429 }
6430 }
6431 @@XMLTest:
6432 @@@QName: xp.cdatasection.2.test
6433 @@@DEnt:
6434 @@@@test:value:
6435 <p>aa<![CDATA[abcdefg]]>bb</p>
6436 @@@test:domTree:
6437 document {
6438 element {
6439 text { data: 'aa'; }
6440 cdata-section {
6441 data: 'abcdefg';
6442 }
6443 text { data: 'bb'; }
6444 }
6445 }
6446 @@XMLTest:
6447 @@@QName: xp.cdatasection.ref.1.test
6448 @@@DEnt:
6449 @@@@test:value:
6450 <p><![CDATA[a&amp;&#x32;&#32;%abc;&def;]]&gt;b]]></p>
6451 @@@test:domTree:
6452 document {
6453 element {
6454 cdata-section {
6455 data: 'a&amp;&#x32;&#32;%abc;&def;]]&gt;b';
6456 }
6457 }
6458 }
6459 @@XMLTest:
6460 @@@QName: xp.cdatasection.in.general.entity.test
6461 @@@DEnt:
6462 @@@@test:value:
6463 <!DOCTYPE p [
6464 <!ENTITY cdata "<![CDATA[text]]>">
6465 ]>
6466 <p>&cdata;</p>
6467 @@@cfg:entity-replacement-tree: 1
6468 @@@test:domTree:
6469 document {
6470 document-type {
6471 general-entity {
6472 node-name: 'cdata';
6473 cdata-section {
6474 data: 'text';
6475 }
6476 }
6477 }
6478 element {
6479 general-entity-reference {
6480 node-name: 'cdata';
6481 manakai-expanded: true;
6482 cdata-section {
6483 data: 'text';
6484 }
6485 }
6486 }
6487 }
6488 @@XMLTest:
6489 @@@QName: xp.cdatasection.no.mse.test
6490 @@@DEnt:
6491 @@@@test:value:
6492 <p><![CDATA[text</p>
6493 @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 21); }
6494 @@XMLTest:
6495 @@@QName: xp.cdatasection.nest.test
6496 @@@DEnt:
6497 @@@@test:value:
6498 <p><![CDATA[text01<![CDATA[txt2]]>text3]]></p>
6499 @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 40)..(1, 42); }
6500
6501 @@XMLTest:
6502 @@@QName: xp.doctype.empty.test
6503 @@@DEnt:
6504 @@@@test:value:
6505 <!DOCTYPE a>
6506 <a></a>
6507 @@@test:domTree:
6508 document {
6509 xml-version: '1.0';
6510 xml-encoding: null;
6511 xml-standalone: false;
6512 document-type {
6513 node-name: 'a';
6514 public-id: null;
6515 system-id: null;
6516 }
6517 element {
6518 namespace-uri: null;
6519 prefix: null;
6520 local-name: 'a';
6521 text-content: '';
6522 }
6523 }
6524 @@XMLTest:
6525 @@@QName: xp.doctype.empty.after.document.element.test
6526 @@@DEnt:
6527 @@@@test:value:
6528 <a></a>
6529 <!DOCTYPE a>
6530 @@@c:erred: <[[xp|wf-syntax-error]]> { (2, 1)..(2, 12); }
6531 @@XMLTest:
6532 @@@QName: xp.doctype.empty.in.element.test
6533 @@@DEnt:
6534 @@@@test:value:
6535 <a>
6536 <!DOCTYPE a>
6537 </a>
6538 @@@c:erred: <[[xp|wf-syntax-error]]> { (2, 1)..(2, 12); }
6539 @@XMLTest:
6540 @@@QName: xp.doctype.empty.dup.test
6541 @@@DEnt:
6542 @@@@test:value:
6543 <!DOCTYPE a>
6544 <!DOCTYPE a>
6545 <a></a>
6546 @@@c:erred: <[[xp|wf-syntax-error]]> { (2, 1)..(2, 12); }
6547 @@XMLTest:
6548 @@@QName: xp.doctype.empty.in.intsubset.test
6549 @@@DEnt:
6550 @@@@test:value:
6551 <!DOCTYPE a [
6552 <!DOCTYPE a>
6553 ]>
6554 <a></a>
6555 @@@c:erred: <[[xp|wf-syntax-error]]> { (2, 1)..(2, 12); }
6556 @@XMLTest:
6557 @@@QName: xp.doctype.no.s.no.name.test
6558 @@@DEnt:
6559 @@@@test:value:
6560 <!DOCTYPE>
6561 <a></a>
6562 @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 10); }
6563 @@XMLTest:
6564 @@@QName: xp.doctype.no.name.test
6565 @@@DEnt:
6566 @@@@test:value:
6567 <!DOCTYPE >
6568 <a></a>
6569 @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 11); }
6570 @@XMLTest:
6571 @@@QName: xp.doctype.name.s.test
6572 @@@DEnt:
6573 @@@@test:value:
6574 <!DOCTYPE aa >
6575 <aa></aa>
6576 @@@test:domTree:
6577 document {
6578 document-type {
6579 node-name: 'aa';
6580 public-id: null;
6581 system-id: null;
6582 }
6583 element { }
6584 }
6585 @@XMLTest:
6586 @@@QName: xp.doctype.no.mdc.test
6587 @@@DEnt:
6588 @@@@test:value:
6589 <!DOCTYPE aa
6590 <aa></aa>
6591 @@@c:erred: <[[xp|wf-syntax-error]]> { (2, 1); }
6592
6593 @@XMLTest:
6594 @@@QName: xp.doctype.intsubset.empty.1.test
6595 @@@DEnt:
6596 @@@@test:value:
6597 <!DOCTYPE a []>
6598 <a></a>
6599 @@@test:domTree:
6600 document {
6601 xml-version: '1.0';
6602 xml-encoding: null;
6603 xml-standalone: false;
6604 document-type {
6605 node-name: 'a';
6606 public-id: null;
6607 system-id: null;
6608 }
6609 element {
6610 namespace-uri: null;
6611 prefix: null;
6612 local-name: 'a';
6613 text-content: '';
6614 }
6615 }
6616 @@XMLTest:
6617 @@@QName: xp.doctype.intsubset.empty.2.test
6618 @@@DEnt:
6619 @@@@test:value:
6620 <!DOCTYPE a [
6621
6622 ]>
6623 <a></a>
6624 @@@test:domTree:
6625 document {
6626 xml-version: '1.0';
6627 xml-encoding: null;
6628 xml-standalone: false;
6629 document-type {
6630 node-name: 'a';
6631 public-id: null;
6632 system-id: null;
6633 }
6634 element {
6635 namespace-uri: null;
6636 prefix: null;
6637 local-name: 'a';
6638 text-content: '';
6639 }
6640 }
6641 @@XMLTest:
6642 @@@QName: xp.doctype.intsubset.empty.3.test
6643 @@@DEnt:
6644 @@@@test:value:
6645 <!DOCTYPE a[]>
6646 <a></a>
6647 @@@test:domTree:
6648 document {
6649 document-type {
6650 node-name: 'a';
6651 public-id: null;
6652 system-id: null;
6653 }
6654 element { }
6655 }
6656 @@XMLTest:
6657 @@@QName: xp.doctype.intsubset.empty.4.test
6658 @@@DEnt:
6659 @@@@test:value:
6660 <!DOCTYPE a[] >
6661 <a></a>
6662 @@@test:domTree:
6663 document {
6664 document-type {
6665 node-name: 'a';
6666 public-id: null;
6667 system-id: null;
6668 }
6669 element { }
6670 }
6671 @@XMLTest:
6672 @@@QName: xp.doctype.intsubset.no.dsc.1.test
6673 @@@DEnt:
6674 @@@@test:value:
6675 <!DOCTYPE a [>
6676 <a></a>
6677 @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 14); }
6678 @@XMLTest:
6679 @@@QName: xp.doctype.intsubset.no.dsc.2.test
6680 @@@DEnt:
6681 @@@@test:value:
6682 <!DOCTYPE a [
6683 <a></a>
6684 @@@c:erred: <[[xp|wf-syntax-error]]> { (2, 1); }
6685 @@XMLTest:
6686 @@@QName: xp.doctype.intsubset.no.dsc.3.test
6687 @@@DEnt:
6688 @@@@test:value:
6689 <!DOCTYPE a [
6690 @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 14); }
6691 @@XMLTest:
6692 @@@QName: xp.doctype.intsubset.no.mdc.1.test
6693 @@@DEnt:
6694 @@@@test:value:
6695 <!DOCTYPE a []
6696 <a/>
6697 @@@c:erred: <[[xp|wf-syntax-error]]> { (2, 1); }
6698 @@XMLTest:
6699 @@@QName: xp.doctype.intsubset.no.mdc.2.test
6700 @@@DEnt:
6701 @@@@test:value:
6702 <!DOCTYPE a []]>
6703 <a/>
6704 @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 15); }
6705 @@XMLTest:
6706 @@@QName: xp.doctype.pubid.sysid.1.test
6707 @@@DEnt:
6708 @@@@test:value:
6709 <!DOCTYPE a PUBLIC "pubid" "sysid">
6710 <a/>
6711 @@@test:domTree:
6712 document {
6713 document-type {
6714 node-name: 'a';
6715 public-id: 'pubid';
6716 system-id: 'sysid';
6717 }
6718 element { }
6719 }
6720 @@XMLTest:
6721 @@@QName: xp.doctype.pubid.sysid.2.test
6722 @@@DEnt:
6723 @@@@test:value:
6724 <!DOCTYPE a PUBLIC 'pubid' "sysid">
6725 <a/>
6726 @@@test:domTree:
6727 document {
6728 document-type {
6729 node-name: 'a';
6730 public-id: 'pubid';
6731 system-id: 'sysid';
6732 }
6733 element { }
6734 }
6735 @@XMLTest:
6736 @@@QName: xp.doctype.pubid.sysid.3.test
6737 @@@DEnt:
6738 @@@@test:value:
6739 <!DOCTYPE a PUBLIC "pubid" 'sysid'>
6740 <a/>
6741 @@@test:domTree:
6742 document {
6743 document-type {
6744 node-name: 'a';
6745 public-id: 'pubid';
6746 system-id: 'sysid';
6747 }
6748 element { }
6749 }
6750 @@XMLTest:
6751 @@@QName: xp.doctype.pubid.sysid.4.test
6752 @@@DEnt:
6753 @@@@test:value:
6754 <!DOCTYPE a PUBLIC 'pubid' 'sysid'>
6755 <a/>
6756 @@@test:domTree:
6757 document {
6758 document-type {
6759 node-name: 'a';
6760 public-id: 'pubid';
6761 system-id: 'sysid';
6762 }
6763 element { }
6764 }
6765 @@XMLTest:
6766 @@@QName: xp.doctype.pubid.sysid.5.test
6767 @@@DEnt:
6768 @@@@test:value:
6769 <!DOCTYPE a PUBLIC "pubid" "sysid" >
6770 <a/>
6771 @@@test:domTree:
6772 document {
6773 document-type {
6774 node-name: 'a';
6775 public-id: 'pubid';
6776 system-id: 'sysid';
6777 }
6778 element { }
6779 }
6780 @@XMLTest:
6781 @@@QName: xp.doctype.pubid.sysid.6.test
6782 @@@DEnt:
6783 @@@@test:value:
6784 <!DOCTYPE a PUBLIC 'pubid' 'sysid' >
6785 <a/>
6786 @@@test:domTree:
6787 document {
6788 document-type {
6789 node-name: 'a';
6790 public-id: 'pubid';
6791 system-id: 'sysid';
6792 }
6793 element { }
6794 }
6795 @@XMLTest:
6796 @@@QName: xp.doctype.pubid.sysid.intsubset.1.test
6797 @@@DEnt:
6798 @@@@test:value:
6799 <!DOCTYPE a PUBLIC "pubid" "sysid"[]>
6800 <a/>
6801 @@@test:domTree:
6802 document {
6803 document-type {
6804 node-name: 'a';
6805 public-id: 'pubid';
6806 system-id: 'sysid';
6807 }
6808 element { }
6809 }
6810 @@XMLTest:
6811 @@@QName: xp.doctype.pubid.sysid.intsubset.2.test
6812 @@@DEnt:
6813 @@@@test:value:
6814 <!DOCTYPE a PUBLIC "pubid" "sysid" []>
6815 <a/>
6816 @@@test:domTree:
6817 document {
6818 document-type {
6819 node-name: 'a';
6820 public-id: 'pubid';
6821 system-id: 'sysid';
6822 }
6823 element { }
6824 }
6825 @@XMLTest:
6826 @@@QName: xp.doctype.pubid.sysid.intsubset.3.test
6827 @@@DEnt:
6828 @@@@test:value:
6829 <!DOCTYPE a PUBLIC 'pubid' 'sysid'[]>
6830 <a/>
6831 @@@test:domTree:
6832 document {
6833 document-type {
6834 node-name: 'a';
6835 public-id: 'pubid';
6836 system-id: 'sysid';
6837 }
6838 element { }
6839 }
6840 @@XMLTest:
6841 @@@QName: xp.doctype.pubid.sysid.intsubset.4.test
6842 @@@DEnt:
6843 @@@@test:value:
6844 <!DOCTYPE a PUBLIC 'pubid' 'sysid' []>
6845 <a/>
6846 @@@test:domTree:
6847 document {
6848 document-type {
6849 node-name: 'a';
6850 public-id: 'pubid';
6851 system-id: 'sysid';
6852 }
6853 element { }
6854 }
6855 @@XMLTest:
6856 @@@QName: xp.doctype.sysid.1.test
6857 @@@DEnt:
6858 @@@@test:value:
6859 <!DOCTYPE a SYSTEM "sysid">
6860 <a/>
6861 @@@test:domTree:
6862 document {
6863 document-type {
6864 node-name: 'a';
6865 public-id: null;
6866 system-id: 'sysid';
6867 }
6868 element { }
6869 }
6870 @@XMLTest:
6871 @@@QName: xp.doctype.sysid.2.test
6872 @@@DEnt:
6873 @@@@test:value:
6874 <!DOCTYPE a SYSTEM 'sysid'>
6875 <a/>
6876 @@@test:domTree:
6877 document {
6878 document-type {
6879 node-name: 'a';
6880 public-id: null;
6881 system-id: 'sysid';
6882 }
6883 element { }
6884 }
6885 @@XMLTest:
6886 @@@QName: xp.doctype.sysid.3.test
6887 @@@DEnt:
6888 @@@@test:value:
6889 <!DOCTYPE a SYSTEM "sysid" >
6890 <a/>
6891 @@@test:domTree:
6892 document {
6893 document-type {
6894 node-name: 'a';
6895 public-id: null;
6896 system-id: 'sysid';
6897 }
6898 element { }
6899 }
6900 @@XMLTest:
6901 @@@QName: xp.doctype.sysid.4.test
6902 @@@DEnt:
6903 @@@@test:value:
6904 <!DOCTYPE a SYSTEM 'sysid' >
6905 <a/>
6906 @@@test:domTree:
6907 document {
6908 document-type {
6909 node-name: 'a';
6910 public-id: null;
6911 system-id: 'sysid';
6912 }
6913 element { }
6914 }
6915 @@XMLTest:
6916 @@@QName: xp.doctype.sysid.intsubset.1.test
6917 @@@DEnt:
6918 @@@@test:value:
6919 <!DOCTYPE a SYSTEM "sysid"[]>
6920 <a/>
6921 @@@test:domTree:
6922 document {
6923 document-type {
6924 node-name: 'a';
6925 public-id: null;
6926 system-id: 'sysid';
6927 }
6928 element { }
6929 }
6930 @@XMLTest:
6931 @@@QName: xp.doctype.sysid.intsubset.2.test
6932 @@@DEnt:
6933 @@@@test:value:
6934 <!DOCTYPE a SYSTEM "sysid" []>
6935 <a/>
6936 @@@test:domTree:
6937 document {
6938 document-type {
6939 node-name: 'a';
6940 public-id: null;
6941 system-id: 'sysid';
6942 }
6943 element { }
6944 }
6945 @@XMLTest:
6946 @@@QName: xp.doctype.sysid.intsubset.3.test
6947 @@@DEnt:
6948 @@@@test:value:
6949 <!DOCTYPE a SYSTEM 'sysid'[]>
6950 <a/>
6951 @@@test:domTree:
6952 document {
6953 document-type {
6954 node-name: 'a';
6955 public-id: null;
6956 system-id: 'sysid';
6957 }
6958 element { }
6959 }
6960 @@XMLTest:
6961 @@@QName: xp.doctype.sysid.intsubset.4.test
6962 @@@DEnt:
6963 @@@@test:value:
6964 <!DOCTYPE a SYSTEM 'sysid' []>
6965 <a/>
6966 @@@test:domTree:
6967 document {
6968 document-type {
6969 node-name: 'a';
6970 public-id: null;
6971 system-id: 'sysid';
6972 }
6973 element { }
6974 }
6975 @@XMLTest:
6976 @@@QName: xp.doctype.public.stago.test
6977 @@@DEnt:
6978 @@@@test:value:
6979 <!DOCTYPE a PUBLIC<a/>
6980 @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 19); }
6981 @@XMLTest:
6982 @@@QName: xp.doctype.public.mdc.test
6983 @@@DEnt:
6984 @@@@test:value:
6985 <!DOCTYPE a PUBLIC>
6986 <a/>
6987 @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 19); }
6988 @@XMLTest:
6989 @@@QName: xp.doctype.public.s.stago.test
6990 @@@DEnt:
6991 @@@@test:value:
6992 <!DOCTYPE a PUBLIC <a/>
6993 @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 20); }
6994 @@XMLTest:
6995 @@@QName: xp.doctype.public.s.mdc.test
6996 @@@DEnt:
6997 @@@@test:value:
6998 <!DOCTYPE a PUBLIC >
6999 <a/>
7000 @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 20); }
7001 @@XMLTest:
7002 @@@QName: xp.doctype.public.lit.test
7003 @@@DEnt:
7004 @@@@test:value:
7005 <!DOCTYPE a PUBLIC"p" "s">
7006 <a/>
7007 @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 19); }
7008 @@XMLTest:
7009 @@@QName: xp.doctype.public.lita.test
7010 @@@DEnt:
7011 @@@@test:value:
7012 <!DOCTYPE a PUBLIC'p' "s">
7013 <a/>
7014 @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 19); }
7015 @@XMLTest:
7016 @@@QName: xp.doctype.pubid.lit.lita.unmatched.1.test
7017 @@@DEnt:
7018 @@@@test:value:
7019 <!DOCTYPE a PUBLIC "p' "s">
7020 <a/>
7021 @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 25); }
7022 @@XMLTest:
7023 @@@QName: xp.doctype.pubid.lit.lita.unmatched.2.test
7024 @@@DEnt:
7025 @@@@test:value:
7026 <!DOCTYPE a PUBLIC "p' 's'><a/>
7027 @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 32); }
7028 @@XMLTest:
7029 @@@QName: xp.doctype.pubid.lita.lit.unmatched.1.test
7030 @@@DEnt:
7031 @@@@test:value:
7032 <!DOCTYPE a PUBLIC 'p" "s"><a/>
7033 @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 32); }
7034 @@XMLTest:
7035 @@@QName: xp.doctype.pubid.lita.lit.unmatched.2.test
7036 @@@DEnt:
7037 @@@@test:value:
7038 <!DOCTYPE a PUBLIC 'p" 's'>
7039 <a/>
7040 @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 21)..(1, 25); }
7041 @@XMLTest:
7042 @@@QName: xp.doctype.public.s.lit.mdc.test
7043 @@@DEnt:
7044 @@@@test:value:
7045 <!DOCTYPE a PUBLIC "><a/>
7046 @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 26); }
7047 @@XMLTest:
7048 @@@QName: xp.doctype.public.s.lita.mdc.test
7049 @@@DEnt:
7050 @@@@test:value:
7051 <!DOCTYPE a PUBLIC '><a/>
7052 @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 26); }
7053 @@XMLTest:
7054 @@@QName: xp.doctype.public.lit.pubid.lit.mdc.test
7055 @@@DEnt:
7056 @@@@test:value:
7057 <!DOCTYPE a PUBLIC "p">
7058 <a/>
7059 @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 23); }
7060 @@XMLTest:
7061 @@@QName: xp.doctype.public.lita.pubid.lita.mdc.test
7062 @@@DEnt:
7063 @@@@test:value:
7064 <!DOCTYPE a PUBLIC 'p'>
7065 <a/>
7066 @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 23); }
7067 @@XMLTest:
7068 @@@QName: xp.doctype.public.lit.pubid.lit.s.mdc.test
7069 @@@DEnt:
7070 @@@@test:value:
7071 <!DOCTYPE a PUBLIC "p" >
7072 <a/>
7073 @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 24); }
7074 @@XMLTest:
7075 @@@QName: xp.doctype.public.lita.pubid.lita.s.mdc.test
7076 @@@DEnt:
7077 @@@@test:value:
7078 <!DOCTYPE a PUBLIC 'p' >
7079 <a/>
7080 @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 24); }
7081 @@XMLTest:
7082 @@@QName: xp.doctype.public.lit.pubid.lit.s.lit.mdc.test
7083 @@@DEnt:
7084 @@@@test:value:
7085 <!DOCTYPE a PUBLIC "p" "><a/>
7086 @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 30); }
7087 @@XMLTest:
7088 @@@QName: xp.doctype.public.lit.pubid.lit.s.lita.mdc.test
7089 @@@DEnt:
7090 @@@@test:value:
7091 <!DOCTYPE a PUBLIC "p" '><a/>
7092 @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 30); }
7093 @@XMLTest:
7094 @@@QName: xp.doctype.public.lita.pubid.lita.s.lit.mdc.test
7095 @@@DEnt:
7096 @@@@test:value:
7097 <!DOCTYPE a PUBLIC 'p' "><a/>
7098 @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 30); }
7099 @@XMLTest:
7100 @@@QName: xp.doctype.public.lita.pubid.lita.s.lita.mdc.test
7101 @@@DEnt:
7102 @@@@test:value:
7103 <!DOCTYPE a PUBLIC 'p' '><a/>
7104 @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 30); }
7105 @@XMLTest:
7106 @@@QName: xp.doctype.public.lit.pubid.lit.lit.lita.unmatched.mdc.test
7107 @@@DEnt:
7108 @@@@test:value:
7109 <!DOCTYPE a PUBLIC "p" "s'><a/>
7110 @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 32); }
7111 @@XMLTest:
7112 @@@QName: xp.doctype.public.lita.pubid.lita.lita.lit.unmatched.mdc.test
7113 @@@DEnt:
7114 @@@@test:value:
7115 <!DOCTYPE a PUBLIC 'p' 's"><a/>
7116 @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 32); }
7117 @@XMLTest:
7118 @@@QName: xp.doctype.pubid.sysid.stago.1.test
7119 @@@DEnt:
7120 @@@@test:value:
7121 <!DOCTYPE a PUBLIC "p" "s"<a/>
7122 @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 27); }
7123 @@XMLTest:
7124 @@@QName: xp.doctype.pubid.sysid.stago.2.test
7125 @@@DEnt:
7126 @@@@test:value:
7127 <!DOCTYPE a PUBLIC "p" 's'<a/>
7128 @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 27); }
7129 @@XMLTest:
7130 @@@QName: xp.doctype.pubid.sysid.stago.s.1.test
7131 @@@DEnt:
7132 @@@@test:value:
7133 <!DOCTYPE a PUBLIC "p" "s" <a/>
7134 @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 28); }
7135 @@XMLTest:
7136 @@@QName: xp.doctype.pubid.sysid.stago.s.2.test
7137 @@@DEnt:
7138 @@@@test:value:
7139 <!DOCTYPE a PUBLIC "p" 's' <a/>
7140 @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 28); }
7141
7142 @@XMLTest:
7143 @@@QName: xp.endofline.1.0.crlf.test
7144 @@@DEnt:
7145 @@@@test:value:
7146 <?xml version="1.0"?>
7147 <p>aaa$u000D$u000Abbb</p>
7148 @@@test:domTree:
7149 document {
7150 xml-version: '1.0';
7151 element {
7152 text-content: 'aaa' U+000A 'bbb';
7153 }
7154 }
7155 @@XMLTest:
7156 @@@QName: xp.endofline.1.1.crlf.test
7157 @@@DEnt:
7158 @@@@test:value:
7159 <?xml version="1.1"?>
7160 <p>aaa$u000D$u000Abbb</p>
7161 @@@test:domTree:
7162 document {
7163 xml-version: '1.1';
7164 element {
7165 text-content: 'aaa' U+000A 'bbb';
7166 }
7167 }
7168 @@XMLTest:
7169 @@@QName: xp.endofline.1.0.crnl.test
7170 @@@DEnt:
7171 @@@@test:value:
7172 <?xml version="1.0"?>
7173 <p>aaa$u000D$u0085bbb</p>
7174 @@@test:domTree:
7175 document {
7176 xml-version: '1.0';
7177 element {
7178 text-content: 'aaa' U+000A U+0085 'bbb';
7179 }
7180 }
7181 @@XMLTest:
7182 @@@QName: xp.endofline.1.1.crnl.test
7183 @@@DEnt:
7184 @@@@test:value:
7185 <?xml version="1.1"?>
7186 <p>aaa$u000D$u0085bbb</p>
7187 @@@test:domTree:
7188 document {
7189 xml-version: '1.1';
7190 element {
7191 text-content: 'aaa' U+000A 'bbb';
7192 }
7193 }
7194 @@XMLTest:
7195 @@@QName: xp.endofline.1.0.nl.test
7196 @@@DEnt:
7197 @@@@test:value:
7198 <?xml version="1.0"?>
7199 <p>aaa$u0085bbb</p>
7200 @@@test:domTree:
7201 document {
7202 xml-version: '1.0';
7203 element {
7204 text-content: 'aaa' U+0085 'bbb';
7205 }
7206 }
7207 @@XMLTest:
7208 @@@QName: xp.endofline.1.1.nl.test
7209 @@@DEnt:
7210 @@@@test:value:
7211 <?xml version="1.1"?>
7212 <p>aaa$u0085bbb</p>
7213 @@@test:domTree:
7214 document {
7215 xml-version: '1.1';
7216 element {
7217 text-content: 'aaa' U+000A 'bbb';
7218 }
7219 }
7220 @@XMLTest:
7221 @@@QName: xp.endofline.1.0.ls.test
7222 @@@DEnt:
7223 @@@@test:value:
7224 <?xml version="1.0"?>
7225 <p>aaa$u2028bbb</p>
7226 @@@test:domTree:
7227 document {
7228 xml-version: '1.0';
7229 element {
7230 text-content: 'aaa' U+2028 'bbb';
7231 }
7232 }
7233 @@XMLTest:
7234 @@@QName: xp.endofline.1.1.ls.test
7235 @@@DEnt:
7236 @@@@test:value:
7237 <?xml version="1.1"?>
7238 <p>aaa$u2028bbb</p>
7239 @@@test:domTree:
7240 document {
7241 xml-version: '1.1';
7242 element {
7243 text-content: 'aaa' U+000A 'bbb';
7244 }
7245 }
7246 @@XMLTest:
7247 @@@QName: xp.endofline.1.0.cr.test
7248 @@@DEnt:
7249 @@@@test:value:
7250 <?xml version="1.0"?>
7251 <p>aaa$u000Dbbb</p>
7252 @@@test:domTree:
7253 document {
7254 xml-version: '1.0';
7255 element {
7256 text-content: 'aaa' U+000A 'bbb';
7257 }
7258 }
7259 @@XMLTest:
7260 @@@QName: xp.endofline.1.1.cr.test
7261 @@@DEnt:
7262 @@@@test:value:
7263 <?xml version="1.1"?>
7264 <p>aaa$u000Dbbb</p>
7265 @@@test:domTree:
7266 document {
7267 xml-version: '1.1';
7268 element {
7269 text-content: 'aaa' U+000A 'bbb';
7270 }
7271 }
7272 @@XMLTest:
7273 @@@QName: xp.endofline.1.0.lf.test
7274 @@@DEnt:
7275 @@@@test:value:
7276 <?xml version="1.0"?>
7277 <p>aaa$u000Abbb</p>
7278 @@@test:domTree:
7279 document {
7280 xml-version: '1.0';
7281 element {
7282 text-content: 'aaa' U+000A 'bbb';
7283 }
7284 }
7285 @@XMLTest:
7286 @@@QName: xp.endofline.1.1.lf.test
7287 @@@DEnt:
7288 @@@@test:value:
7289 <?xml version="1.1"?>
7290 <p>aaa$u000Abbb</p>
7291 @@@test:domTree:
7292 document {
7293 xml-version: '1.1';
7294 element {
7295 text-content: 'aaa' U+000A 'bbb';
7296 }
7297 }
7298 @@XMLTest:
7299 @@@QName: xp.xml10.endofline.nl.in.xmldecl.1.test
7300 @@@DEnt:
7301 @@@@test:value:
7302 <?xml$u0085version="1.0"?>
7303 <p/>
7304 @@@c:erred:
7305 <[[xp|fatal-xml11-end-of-line-in-xml-declaration]]> { (1, 6)..(2, 0); }
7306 @@@c:erred: <[[xp|wf-syntax-error]]> { }
7307 @@XMLTest:
7308 @@@QName: xp.xml11.endofline.nl.in.xmldecl.1.test
7309 @@@DEnt:
7310 @@@@test:value:
7311 <?xml$u0085version="1.1"?>
7312 (err)<p/>
7313 @@@c:erred:
7314 <[[xp|fatal-xml11-end-of-line-in-xml-declaration]]> { (1, 6)..(2, 0); }
7315 @@@c:erred: <[[xp|wf-syntax-error]]> { }
7316 @@XMLTest:
7317 @@@QName: xp.xml10.endofline.crnl.in.xmldecl.1.test
7318 @@@DEnt:
7319 @@@@test:value:
7320 <?xml$u000D$u0085version="1.0"?>
7321 <p/>
7322 @@@c:erred:
7323 <[[xp|fatal-xml11-end-of-line-in-xml-declaration]]> { (1, 6)..(2, 0); }
7324 @@@c:erred: <[[xp|wf-syntax-error]]> { }
7325 @@XMLTest:
7326 @@@QName: xp.xml11.endofline.crnl.in.xmldecl.1.test
7327 @@@DEnt:
7328 @@@@test:value:
7329 <?xml$u000D$u0085version="1.1"?>
7330 (err)<p/>
7331 @@@c:erred:
7332 <[[xp|fatal-xml11-end-of-line-in-xml-declaration]]> { (1, 6)..(2, 0); }
7333 @@@c:erred: <[[xp|wf-syntax-error]]> { }
7334 @@XMLTest:
7335 @@@QName: xp.xml10.endofline.ls.in.xmldecl.1.test
7336 @@@DEnt:
7337 @@@@test:value:
7338 <?xml$u2028version="1.0"?>
7339 <p/>
7340 @@@c:erred:
7341 <[[xp|fatal-xml11-end-of-line-in-xml-declaration]]> { (1, 6)..(2, 0); }
7342 @@@c:erred: <[[xp|wf-syntax-error]]> { }
7343 @@XMLTest:
7344 @@@QName: xp.xml11.endofline.ls.in.xmldecl.1.test
7345 @@@DEnt:
7346 @@@@test:value:
7347 <?xml$u2028version="1.1"?>
7348 (err)<p/>
7349 @@@c:erred:
7350 <[[xp|fatal-xml11-end-of-line-in-xml-declaration]]> { (1, 6)..(2, 0); }
7351 @@@c:erred: <[[xp|wf-syntax-error]]> { }
7352 @@XMLTest:
7353 @@@QName: xp.xml10.endofline.nl.in.xmldecl.2.test
7354 @@@DEnt:
7355 @@@@test:value:
7356 <?xml version="1.0"$u0085?>
7357 <p/>
7358 @@@c:erred:
7359 <[[xp|fatal-xml11-end-of-line-in-xml-declaration]]> { (1, 20)..(2, 0); }
7360 @@@c:erred: <[[xp|wf-syntax-error]]> { }
7361 @@XMLTest:
7362 @@@QName: xp.xml11.endofline.nl.in.xmldecl.2.test
7363 @@@DEnt:
7364 @@@@test:value:
7365 <?xml version="1.1"$u0085?>
7366 (err)<p/>
7367 @@@c:erred:
7368 <[[xp|fatal-xml11-end-of-line-in-xml-declaration]]> { (1, 20)..(2, 0); }
7369 @@@c:erred: <[[xp|wf-syntax-error]]> { }
7370 @@XMLTest:
7371 @@@QName: xp.xml10.endofline.crnl.in.xmldecl.2.test
7372 @@@DEnt:
7373 @@@@test:value:
7374 <?xml version="1.0"$u000D$u0085?>
7375 <p/>
7376 @@@c:erred:
7377 <[[xp|fatal-xml11-end-of-line-in-xml-declaration]]> { (1, 20)..(2, 0); }
7378 @@@c:erred: <[[xp|wf-syntax-error]]> { }
7379 @@XMLTest:
7380 @@@QName: xp.xml11.endofline.crnl.in.xmldecl.2.test
7381 @@@DEnt:
7382 @@@@test:value:
7383 <?xml version="1.1"$u000D$u0085?>
7384 (err)<p/>
7385 @@@c:erred:
7386 <[[xp|fatal-xml11-end-of-line-in-xml-declaration]]> { (1, 20)..(2, 0); }
7387 @@@c:erred: <[[xp|wf-syntax-error]]> { }
7388 @@XMLTest:
7389 @@@QName: xp.xml10.endofline.ls.in.xmldecl.2.test
7390 @@@DEnt:
7391 @@@@test:value:
7392 <?xml version="1.0"$u2028?>
7393 <p/>
7394 @@@c:erred:
7395 <[[xp|fatal-xml11-end-of-line-in-xml-declaration]]> { (1, 20)..(2, 0); }
7396 @@@c:erred: <[[xp|wf-syntax-error]]> { }
7397 @@XMLTest:
7398 @@@QName: xp.xml11.endofline.ls.in.xmldecl.2.test
7399 @@@DEnt:
7400 @@@@test:value:
7401 <?xml version="1.1"$u2028?>
7402 (err)<p/>
7403 @@@c:erred:
7404 <[[xp|fatal-xml11-end-of-line-in-xml-declaration]]> { (1, 20)..(2, 0); }
7405 @@@c:erred: <[[xp|wf-syntax-error]]> { }
7406 @@XMLTest:
7407 @@@QName: xp.xml10.endofline.nl.in.xmldecl.3.test
7408 @@@DEnt:
7409 @@@@test:value:
7410 <?xml $u0085version="1.0"?>
7411 <p/>
7412 @@@c:erred:
7413 <[[xp|fatal-xml11-end-of-line-in-xml-declaration]]> { (1, 7)..(2, 0); }
7414 @@@c:erred: <[[xp|wf-syntax-error]]> { }
7415 @@XMLTest:
7416 @@@QName: xp.xml11.endofline.nl.in.xmldecl.3.test
7417 @@@DEnt:
7418 @@@@test:value:
7419 <?xml $u0085version="1.1"?>
7420 (err)<p/>
7421 @@@c:erred:
7422 <[[xp|fatal-xml11-end-of-line-in-xml-declaration]]> { (1, 7)..(2, 0); }
7423 @@@c:erred: <[[xp|wf-syntax-error]]> { }
7424 @@XMLTest:
7425 @@@QName: xp.xml10.endofline.crnl.in.xmldecl.3.test
7426 @@@DEnt:
7427 @@@@test:value:
7428 <?xml $u000D$u0085version="1.0"?>
7429 <p/>
7430 @@@c:erred:
7431 <[[xp|fatal-xml11-end-of-line-in-xml-declaration]]> { (1, 7)..(2, 0); }
7432 @@@c:erred: <[[xp|wf-syntax-error]]> { }
7433 @@XMLTest:
7434 @@@QName: xp.xml11.endofline.crnl.in.xmldecl.3.test
7435 @@@DEnt:
7436 @@@@test:value:
7437 <?xml $u000D$u0085version="1.1"?>
7438 (err)<p/>
7439 @@@c:erred:
7440 <[[xp|fatal-xml11-end-of-line-in-xml-declaration]]> { (1, 7)..(2, 0); }
7441 @@@c:erred: <[[xp|wf-syntax-error]]> { }
7442 @@XMLTest:
7443 @@@QName: xp.xml10.endofline.ls.in.xmldecl.3.test
7444 @@@DEnt:
7445 @@@@test:value:
7446 <?xml $u2028version="1.0"?>
7447 <p/>
7448 @@@c:erred:
7449 <[[xp|fatal-xml11-end-of-line-in-xml-declaration]]> { (1, 7)..(2, 0); }
7450 @@@c:erred: <[[xp|wf-syntax-error]]> { }
7451 @@XMLTest:
7452 @@@QName: xp.xml11.endofline.ls.in.xmldecl.3.test
7453 @@@DEnt:
7454 @@@@test:value:
7455 <?xml $u2028version="1.1"?>
7456 (err)<p/>
7457 @@@c:erred:
7458 <[[xp|fatal-xml11-end-of-line-in-xml-declaration]]> { (1, 7)..(2, 0); }
7459 @@@c:erred: <[[xp|wf-syntax-error]]> { }
7460 @@XMLTest:
7461 @@@QName: xp.xml10implied.endofline.nl.in.pi.1.test
7462 @@@DEnt:
7463 @@@@test:value:
7464 <?xml-$u0085?>
7465 <p/>
7466 @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 7)..(2, 0); }
7467 @@XMLTest:
7468 @@@QName: xp.xml10.endofline.nl.in.pi.1.test
7469 @@@DEnt:
7470 @@@@test:value:
7471 <?xml version="1.0"?>
7472 <?xml-$u0085?>
7473 <p/>
7474 @@@c:erred: <[[xp|wf-syntax-error]]> { (2, 7)..(3, 0); }
7475 @@XMLTest:
7476 @@@QName: xp.xml11.endofline.nl.in.pi.1.test
7477 @@@DEnt:
7478 @@@@test:value:
7479 <?xml version="1.1"?>
7480 <?xml-$u0085?>
7481 <p/>
7482 @@@test:domTree:
7483 document {
7484 xml-version: '1.1';
7485 pi {
7486 node-name: 'xml-';
7487 node-value: '';
7488 }
7489 element { }
7490 }
7491 @@XMLTest:
7492 @@@QName: xp.xml10implied.endofline.crnl.in.pi.1.test
7493 @@@DEnt:
7494 @@@@test:value:
7495 <?xml-$u000D$u0085?>
7496 <p/>
7497 @@@test:domTree:
7498 document {
7499 xml-version: '1.0';
7500 pi {
7501 node-name: 'xml-';
7502 node-value: U+0085;
7503 }
7504 element { }
7505 }
7506 @@XMLTest:
7507 @@@QName: xp.xml10.endofline.crnl.in.pi.1.test
7508 @@@DEnt:
7509 @@@@test:value:
7510 <?xml version="1.0"?>
7511 <?xml-$u000D$u0085?>
7512 <p/>
7513 @@@test:domTree:
7514 document {
7515 xml-version: '1.0';
7516 pi {
7517 node-name: 'xml-';
7518 node-value: U+0085;
7519 }
7520 element { }
7521 }
7522 @@XMLTest:
7523 @@@QName: xp.xml11.endofline.crnl.in.pi.1.test
7524 @@@DEnt:
7525 @@@@test:value:
7526 <?xml version="1.1"?>
7527 <?xml-$u000D$u0085?>
7528 <p/>
7529 @@@test:domTree:
7530 document {
7531 xml-version: '1.1';
7532 pi {
7533 node-name: 'xml-';
7534 node-value: '';
7535 }
7536 element { }
7537 }
7538 @@XMLTest:
7539 @@@QName: xp.xml10implied.endofline.ls.in.pi.1.test
7540 @@@DEnt:
7541 @@@@test:value:
7542 <?xml-$u2028?>
7543 <p/>
7544 @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 7)..(2, 0); }
7545 @@XMLTest:
7546 @@@QName: xp.xml10.endofline.ls.in.pi.1.test
7547 @@@DEnt:
7548 @@@@test:value:
7549 <?xml version="1.0"?>
7550 <?xml-$u2028?>
7551 <p/>
7552 @@@c:erred: <[[xp|wf-syntax-error]]> { (2, 7)..(3, 0); }
7553 @@XMLTest:
7554 @@@QName: xp.xml11.endofline.ls.in.pi.1.test
7555 @@@DEnt:
7556 @@@@test:value:
7557 <?xml version="1.1"?>
7558 <?xml-$u2028?>
7559 <p/>
7560 @@@test:domTree:
7561 document {
7562 xml-version: '1.1';
7563 pi {
7564 node-name: 'xml-';
7565 node-value: '';
7566 }
7567 element { }
7568 }
7569
7570 @@XMLTest:
7571 @@@QName: xp.xml10.endofline.internal.1.test
7572 @@@DEnt:
7573 @@@@test:value:
7574 <?xml version="1.0"?>
7575 <!DOCTYPE a [
7576 <!ENTITY e "&#x000D; &#x000A; &#x0085; &#x000D;&#x000A; $
7577 &#x000D;&#x0085; &#x2028;">
7578 ]><a>&e;</a>
7579 @@@cfg:entity-replacement-tree: 1
7580 @@@test:domTree:
7581 document {
7582 xml-version: '1.0';
7583 document-type {
7584 general-entity {
7585 node-name: 'e';
7586 text-content: U+000D ' ' U+000A ' ' U+0085 ' '
7587 U+000D U+000A ' ' U+000D U+0085 ' ' U+2028;
7588 }
7589 }
7590 element {
7591 text-content: U+000D ' ' U+000A ' ' U+0085 ' '
7592 U+000D U+000A ' ' U+000D U+0085 ' ' U+2028;
7593 }
7594 }
7595 @@XMLTest:
7596 @@@QName: xp.xml11.endofline.internal.1.test
7597 @@@DEnt:
7598 @@@@test:value:
7599 <?xml version="1.1"?>
7600 <!DOCTYPE a [
7601 <!ENTITY e "&#x000D; &#x000A; &#x0085; &#x000D;&#x000A; $
7602 &#x000D;&#x0085; &#x2028;">
7603 ]><a>&e;</a>
7604 @@@cfg:entity-replacement-tree: 1
7605 @@@test:domTree:
7606 document {
7607 xml-version: '1.1';
7608 document-type {
7609 general-entity {
7610 node-name: 'e';
7611 text-content: U+000D ' ' U+000A ' ' U+0085 ' '
7612 U+000D U+000A ' ' U+000D U+0085 ' ' U+2028;
7613 }
7614 }
7615 element {
7616 text-content: U+000D ' ' U+000A ' ' U+0085 ' '
7617 U+000D U+000A ' ' U+000D U+0085 ' ' U+2028;
7618 }
7619 }
7620
7621 @@XMLTest:
7622 @@@QName: xp.noxmldecl.pi.pi.test
7623 @@@DEnt:
7624 @@@@test:value:
7625 <?noxml 1?><?noxml 2?><p/>
7626 @@@test:domTree:
7627 document {
7628 xml-version: '1.0';
7629 pi {
7630 node-name: 'noxml';
7631 node-value: '1';
7632 }
7633 pi {
7634 node-name: 'noxml';
7635 node-value: '2';
7636 }
7637 element { }
7638 }
7639 @@XMLTest:
7640 @@@QName: xp.noxmldecl.pi.pi.2.test
7641 @@@DEnt:
7642 @@@@test:value:
7643 <?xmlno 1?><?xmlno 2?><p/>
7644 @@@test:domTree:
7645 document {
7646 xml-version: '1.0';
7647 pi {
7648 node-name: 'xmlno';
7649 node-value: '1';
7650 }
7651 pi {
7652 node-name: 'xmlno';
7653 node-value: '2';
7654 }
7655 element { }
7656 }
7657 @@XMLTest:
7658 @@@QName: xp.noxmldecl.pi.pi.3.test
7659 @@@DEnt:
7660 @@@@test:value:
7661 <?xmln 1?><?xmln 2?><p/>
7662 @@@test:domTree:
7663 document {
7664 xml-version: '1.0';
7665 pi {
7666 node-name: 'xmln';
7667 node-value: '1';
7668 }
7669 pi {
7670 node-name: 'xmln';
7671 node-value: '2';
7672 }
7673 element { }
7674 }
7675 @@XMLTest:
7676 @@@QName: xp.noxml.s.nl.test
7677 @@@DEnt:
7678 @@@@test:value:
7679 $u0085<p/>
7680 @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 1)..(2, 0); }
7681 @@XMLTest:
7682 @@@QName: xp.noxml.s.crnl.test
7683 @@@DEnt:
7684 @@@@test:value:
7685 $u000D$u0085<p/>
7686 @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 1)..(2, 0); }
7687 @@XMLTest:
7688 @@@QName: xp.noxml.s.ls.test
7689 @@@DEnt:
7690 @@@@test:value:
7691 $u2028<p/>
7692 @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 1)..(2, 0); }
7693 @@XMLTest:
7694 @@@QName: xp.xml10.decl.s.nl.test
7695 @@@DEnt:
7696 @@@@test:value:
7697 <?xml version="1.0"?>$u0085<p/>
7698 @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 22)..(2, 0); }
7699 @@XMLTest:
7700 @@@QName: xp.xml10.decl.s.crnl.test
7701 @@@DEnt:
7702 @@@@test:value:
7703 <?xml version="1.0"?>$u000D$u0085<p/>
7704 @@@c:erred: <[[xp|wf-syntax-error]]> { (2, 0)..(3, 0); }
7705 @@XMLTest:
7706 @@@QName: xp.xml10.decl.s.ls.test
7707 @@@DEnt:
7708 @@@@test:value:
7709 <?xml version="1.0"?>$u2028<p/>
7710 @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 22)..(2, 0); }
7711 @@XMLTest:
7712 @@@QName: xp.xml11.decl.s.nl.test
7713 @@@DEnt:
7714 @@@@test:value:
7715 <?xml version="1.1"?>$u0085<p/>
7716 @@@test:domTree:
7717 document {
7718 xml-version: '1.1';
7719 element { }
7720 }
7721 @@XMLTest:
7722 @@@QName: xp.xml11.decl.s.crnl.test
7723 @@@DEnt:
7724 @@@@test:value:
7725 <?xml version="1.1"?>$u000D$u0085<p/>
7726 @@@test:domTree:
7727 document {
7728 xml-version: '1.1';
7729 element { }
7730 }
7731 @@XMLTest:
7732 @@@QName: xp.xml11.decl.s.ls.test
7733 @@@DEnt:
7734 @@@@test:value:
7735 <?xml version="1.1"?>$u2028<p/>
7736 @@@test:domTree:
7737 document {
7738 xml-version: '1.1';
7739 element { }
7740 }
7741
7742 @@XMLTest:
7743 @@@QName: xp.element.type.match.1.test
7744 @@@DEnt:
7745 @@@@test:value:
7746 <p></pa>(err)
7747 @@@c:erred: <[[xp|wf-element-type-match]]> { (1, 4)..(1, 8); }
7748 @@@c:erred: <[[xp|wf-syntax-error]]> { }
7749 @@XMLTest:
7750 @@@QName: xp.element.type.match.2.test
7751 @@@DEnt:
7752 @@@@test:value:
7753 <p><pa></pa></pa>(err)
7754 @@@c:erred: <[[xp|wf-element-type-match]]> { (1, 13)..(1, 17); }
7755 @@@c:erred: <[[xp|wf-syntax-error]]> { }
7756 @@XMLTest:
7757 @@@QName: xp.element.type.match.3.test
7758 @@@DEnt:
7759 @@@@test:value:
7760 <p><pa></p></p>(err)
7761 @@@c:erred: <[[xp|wf-element-type-match]]> { (1, 8)..(1, 11); }
7762 @@@c:erred: <[[xp|wf-syntax-error]]> { }
7763 @@XMLTest:
7764 @@@QName: xp.element.type.match.4.test
7765 @@@DEnt:
7766 @@@@test:value:
7767 <a:p xmlns:a="about:1"></p>(err)
7768 @@@c:erred: <[[xp|wf-element-type-match]]> { (1, 24)..(1, 27); }
7769 @@@c:erred: <[[xp|wf-syntax-error]]> { }
7770 @@XMLTest:
7771 @@@QName: xp.element.type.match.5.test
7772 @@@DEnt:
7773 @@@@test:value:
7774 <a:p xmlns:a="about:1" xmlns:b="about:1"></b:p>(err)
7775 @@@c:erred: <[[xp|wf-element-type-match]]> { (1, 42)..(1, 47); }
7776 @@@c:erred: <[[xp|wf-syntax-error]]> { }
7777
7778 @@XMLTest:
7779 @@@QName: xp.stag.stago.name.etago.test
7780 @@@DEnt:
7781 @@@@test:value:
7782 <a</a>
7783 @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 3); }
7784 @@XMLTest:
7785 @@@QName: xp.stag.stago.name.s.etago.test
7786 @@@DEnt:
7787 @@@@test:value:
7788 <a </a>
7789 @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 4); }
7790 @@XMLTest:
7791 @@@QName: xp.stag.stago.name.s.attr.etago.test
7792 @@@DEnt:
7793 @@@@test:value:
7794 <a a="b"</a>
7795 @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 9); }
7796 @@XMLTest:
7797 @@@QName: xp.stag.stago.name.s.attr.s.attr.etago.test
7798 @@@DEnt:
7799 @@@@test:value:
7800 <a a="b" c="d"</a>
7801 @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 15); }
7802 @@XMLTest:
7803 @@@QName: xp.stag.stago.name.s.attr.s.etago.test
7804 @@@DEnt:
7805 @@@@test:value:
7806 <a a="b" </a>
7807 @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 10); }
7808 @@XMLTest:
7809 @@@QName: xp.stag.etag.1.test
7810 @@@DEnt:
7811 @@@@test:value:
7812 <root><a></a></root>
7813 @@@test:domTree:
7814 document {
7815 element {
7816 element {
7817 node-name: 'a';
7818 }
7819 }
7820 }
7821 @@XMLTest:
7822 @@@QName: xp.stag.etag.2.test
7823 @@@DEnt:
7824 @@@@test:value:
7825 <root><ab></ab></root>
7826 @@@test:domTree:
7827 document {
7828 element {
7829 element {
7830 node-name: 'ab';
7831 }
7832 }
7833 }
7834 @@XMLTest:
7835 @@@QName: xp.stag.etag.s.1.test
7836 @@@DEnt:
7837 @@@@test:value:
7838 <root><a ></a ></root>
7839 @@@test:domTree:
7840 document {
7841 element {
7842 element {
7843 node-name: 'a';
7844 }
7845 }
7846 }
7847 @@XMLTest:
7848 @@@QName: xp.etag.1.test
7849 @@@DEnt:
7850 @@@@test:value:
7851 <root><a/></root>
7852 @@@test:domTree:
7853 document {
7854 element {
7855 element {
7856 node-name: 'a';
7857 }
7858 }
7859 }
7860 @@XMLTest:
7861 @@@QName: xp.etag.2.test
7862 @@@DEnt:
7863 @@@@test:value:
7864 <root><a /></root>
7865 @@@test:domTree:
7866 document {
7867 element {
7868 element {
7869 node-name: 'a';
7870 }
7871 }
7872 }
7873 @@XMLTest:
7874 @@@QName: xp.stag.etag.attr.1.test
7875 @@@DEnt:
7876 @@@@test:value:
7877 <root><a at="v"></a></root>
7878 @@@test:domTree:
7879 document {
7880 element {
7881 element {
7882 node-name: 'a';
7883 attribute {
7884 node-name: 'at';
7885 value: 'v';
7886 }
7887 }
7888 }
7889 }
7890 @@XMLTest:
7891 @@@QName: xp.stag.etag.attr.2.test
7892 @@@DEnt:
7893 @@@@test:value:
7894 <root><a at="v" ></a></root>
7895 @@@test:domTree:
7896 document {
7897 element {
7898 element {
7899 node-name: 'a';
7900 attribute {
7901 node-name: 'at';
7902 value: 'v';
7903 }
7904 }
7905 }
7906 }
7907 @@XMLTest:
7908 @@@QName: xp.stag.etag.attr.3.test
7909 @@@DEnt:
7910 @@@@test:value:
7911 <root><a at ="v"></a></root>
7912 @@@test:domTree:
7913 document {
7914 element {
7915 element {
7916 node-name: 'a';
7917 attribute {
7918 node-name: 'at';
7919 value: 'v';
7920 }
7921 }
7922 }
7923 }
7924 @@XMLTest:
7925 @@@QName: xp.stag.etag.attr.4.test
7926 @@@DEnt:
7927 @@@@test:value:
7928 <root><a at= "v"></a></root>
7929 @@@test:domTree:
7930 document {
7931 element {
7932 element {
7933 node-name: 'a';
7934 attribute {
7935 node-name: 'at';
7936 value: 'v';
7937 }
7938 }
7939 }
7940 }
7941 @@XMLTest:
7942 @@@QName: xp.stag.etag.attr.5.test
7943 @@@DEnt:
7944 @@@@test:value:
7945 <root><a at='v'></a></root>
7946 @@@test:domTree:
7947 document {
7948 element {
7949 element {
7950 node-name: 'a';
7951 attribute {
7952 node-name: 'at';
7953 value: 'v';
7954 }
7955 }
7956 }
7957 }
7958 @@XMLTest:
7959 @@@QName: xp.stag.etag.attr.6.test
7960 @@@DEnt:
7961 @@@@test:value:
7962 <root><a at= 'v' ></a></root>
7963 @@@test:domTree:
7964 document {
7965 element {
7966 element {
7967 node-name: 'a';
7968 attribute {
7969 node-name: 'at';
7970 value: 'v';
7971 }
7972 }
7973 }
7974 }
7975 @@XMLTest:
7976 @@@QName: xp.stag.etag.attr.attr.1.test
7977 @@@DEnt:
7978 @@@@test:value:
7979 <root><a at="v" tr="w"></a></root>
7980 @@@test:domTree:
7981 document {
7982 element {
7983 element {
7984 node-name: 'a';
7985 attribute {
7986 node-name: 'at';
7987 value: 'v';
7988 }
7989 attribute {
7990 node-name: 'tr';
7991 value: 'w';
7992 }
7993 }
7994 }
7995 }
7996 @@XMLTest:
7997 @@@QName: xp.stag.etag.attr.attr.2.test
7998 @@@DEnt:
7999 @@@@test:value:
8000 <root><a tr="w" at="v"></a></root>
8001 @@@test:domTree:
8002 document {
8003 element {
8004 element {
8005 node-name: 'a';
8006 attribute {
8007 node-name: 'at';
8008 value: 'v';
8009 }
8010 attribute {
8011 node-name: 'tr';
8012 value: 'w';
8013 }
8014 }
8015 }
8016 }
8017 @@XMLTest:
8018 @@@QName: xp.stag.etag.attr.no.s.attr.test
8019 @@@DEnt:
8020 @@@@test:value:
8021 <root><a at="v"tr="w"></a></root>
8022 @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 16)..(1, 17); }
8023 @@XMLTest:
8024 @@@QName: xp.etag.attr.1.test
8025 @@@DEnt:
8026 @@@@test:value:
8027 <root><a at="v" tr="w"></a b="c"></root>
8028 @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 28); }
8029 @@XMLTest:
8030 @@@QName: xp.etag.no.etagc.1.test
8031 @@@DEnt:
8032 @@@@test:value:
8033 <root><a at="v" tr="w"></a</root>
8034 @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 27)..(1, 28); }
8035 @@XMLTest:
8036 @@@QName: xp.etag.no.etagc.2.test
8037 @@@DEnt:
8038 @@@@test:value:
8039 <root><a at="v" tr="w"></a </root>
8040 @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 29)..(1, 30); }
8041 @@XMLTest:
8042 @@@QName: xp.mtag.attr.1.test
8043 @@@DEnt:
8044 @@@@test:value:
8045 <root><a b="c"/></root>
8046 @@@test:domTree:
8047 document {
8048 element {
8049 element {
8050 node-name: 'a';
8051 attribute {
8052 node-name: 'b';
8053 value: 'c';
8054 }
8055 }
8056 }
8057 }
8058 @@XMLTest:
8059 @@@QName: xp.mtag.attr.2.test
8060 @@@DEnt:
8061 @@@@test:value:
8062 <root><a b="c" /></root>
8063 @@@test:domTree:
8064 document {
8065 element {
8066 element {
8067 node-name: 'a';
8068 attribute {
8069 node-name: 'b';
8070 value: 'c';
8071 }
8072 }
8073 }
8074 }
8075 @@XMLTest:
8076 @@@QName: xp.mtag.attr.3.test
8077 @@@DEnt:
8078 @@@@test:value:
8079 <root><a b='c'/></root>
8080 @@@test:domTree:
8081 document {
8082 element {
8083 element {
8084 node-name: 'a';
8085 attribute {
8086 node-name: 'b';
8087 value: 'c';
8088 }
8089 }
8090 }
8091 }
8092 @@XMLTest:
8093 @@@QName: xp.mtag.attr.4.test
8094 @@@DEnt:
8095 @@@@test:value:
8096 <root><a b="c" d="e"/></root>
8097 @@@test:domTree:
8098 document {
8099 element {
8100 element {
8101 node-name: 'a';
8102 attribute {
8103 node-name: 'b';
8104 value: 'c';
8105 }
8106 attribute {
8107 node-name: 'd';
8108 value: 'e';
8109 }
8110 }
8111 }
8112 }
8113
8114 @@XMLTest:
8115 @@@QName: xp.attvalue.lt.1.test
8116 @@@DEnt:
8117 @@@@test:value:
8118 <a b="aa<dd"/>
8119 @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 9); }
8120 @@XMLTest:
8121 @@@QName: xp.attvalue.lt.2.test
8122 @@@DEnt:
8123 @@@@test:value:
8124 <a b='aa<dd'/>
8125 @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 9); }
8126 @@XMLTest:
8127 @@@QName: xp.attvalue.amp.1.test
8128 @@@DEnt:
8129 @@@@test:value:
8130 <a b="aa& dd"/>
8131 @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 9)..(1, 12); }
8132 @@XMLTest:
8133 @@@QName: xp.attvalue.amp.2.test
8134 @@@DEnt:
8135 @@@@test:value:
8136 <a b='aa& dd'/>
8137 @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 9)..(1, 12); }
8138 @@XMLTest:
8139 @@@QName: xp.attvalue.amp.3.test
8140 @@@DEnt:
8141 @@@@test:value:
8142 <a b="aa&# dd"/>
8143 @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 9)..(1, 13); }
8144 @@XMLTest:
8145 @@@QName: xp.attvalue.amp.4.test
8146 @@@DEnt:
8147 @@@@test:value:
8148 <a b="aa&#x dd"/>
8149 @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 9)..(1, 14); }
8150
8151 @@XMLTest:
8152 @@@QName: xp.unique.att.spec.1.test
8153 @@@DEnt:
8154 @@@@test:value:
8155 <a b="c" b="d"/>
8156 @@@c:erred: <[[xp|wf-unique-att-spec]]> { (1, 4)..(1, 14); }
8157 @@XMLTest:
8158 @@@QName: xp.unique.att.spec.2.test
8159 @@@DEnt:
8160 @@@@test:value:
8161 <a d:b="c" d:b="d" xmlns:d="about:2"/>
8162 @@@c:erred: <[[xp|wf-unique-att-spec]]> { (1, 4)..(1, 18); }
8163
8164 @@XMLTest:
8165 @@@QName: xp.no.external.entity.references.1.test
8166 @@@DEnt:
8167 @@@@test:value:
8168 <!DOCTYPE a [
8169 <!ENTITY ent SYSTEM "something">
8170 ]>
8171 <a b="c&ent;"/>
8172 @@@c:erred: <[[xp|wf-no-external-entity-references]]> { (4, 8)..(4, 12); }
8173 @@XMLTest:
8174 @@@QName: xp.no.external.entity.references.2.test
8175 @@@DEnt:
8176 @@@@test:value:
8177 <!DOCTYPE a [
8178 <!NOTATION n SYSTEM "notation">
8179 <!ENTITY ent SYSTEM "something" NDATA n>
8180 ]>
8181 <a b="c&ent;"/>
8182 @@@c:erred: <[[xp|wf-no-external-entity-references]]> { (5, 8)..(5, 12); }
8183 @@XMLTest:
8184 @@@QName: xp.no.external.entity.references.3.test
8185 @@@DEnt:
8186 @@@@test:value:
8187 <!DOCTYPE a [
8188 <!ENTITY ent SYSTEM "something">
8189 <!ENTITY ent2 "ddd&ent;">
8190 ]>
8191 <a b="c&ent2;"/>
8192 @@@c:erred: <[[xp|wf-no-external-entity-references]]> { (1, 4)..(1, 8); }
8193 @@XMLTest:
8194 @@@QName: xp.no.external.entity.references.4.test
8195 @@@DEnt:
8196 @@@@test:value:
8197 <!DOCTYPE a [
8198 <!NOTATION n SYSTEM "notation">
8199 <!ENTITY ent SYSTEM "something" NDATA n>
8200 <!ENTITY ent2 "ddd&ent;">
8201 ]>
8202 <a b="c&ent2;"/>
8203 @@@cfg:entity-replacement-tree: 1
8204 @@@c:erred: <[[xp|wf-no-external-entity-references]]> { (1, 4)..(1, 8); }
8205 @@@c:erred: <[[xp|wf-parsed-entity]]> { }
8206 @@XMLTest:
8207 @@@QName: xp.no.lt.in.attr.value.1.test
8208 @@@DEnt:
8209 @@@@test:value:
8210 <!DOCTYPE a [
8211 <!ENTITY ent "aa<bb">
8212 ]>
8213 <a b="c&ent;"/>
8214 @@@cfg:entity-replacement-tree: 1
8215 @@@c:erred: <[[xp|wf-no-lt-in-attribute-values]]> { (1, 3); }
8216 @@@c:erred:
8217 @@@@@: <[[xp|wf-syntax-error]]> { (1, 3)..(1, 6); }
8218 @@@@enImplNote: When entity node is created.
8219 @@XMLTest:
8220 @@@QName: xp.no.lt.in.attr.value.1.2.test
8221 @@@DEnt:
8222 @@@@test:value:
8223 <!DOCTYPE a [
8224 <!ENTITY ent "aa<bb">
8225 ]>
8226 <a b="c&ent;"/>
8227 @@@cfg:entity-replacement-tree: 0
8228 @@@c:erred: <[[xp|wf-no-lt-in-attribute-values]]> { (1, 3); }
8229 @@XMLTest:
8230 @@@QName: xp.no.lt.in.attr.value.2.test
8231 @@@DEnt:
8232 @@@@test:value:
8233 <!DOCTYPE a [
8234 <!ENTITY ent "aa<bb">
8235 <!ENTITY ent2 "ccc&ent;">
8236 ]>
8237 <a b="c&ent2;"/>
8238 @@@cfg:entity-replacement-tree: 1
8239 @@@c:erred: <[[xp|wf-no-lt-in-attribute-values]]> { (1, 3); }
8240 @@@c:erred:
8241 @@@@@: <[[xp|wf-syntax-error]]> { (1, 3)..(1, 6); }
8242 @@@@enImplNote: When entity node is created.
8243 @@XMLTest:
8244 @@@QName: xp.no.lt.in.attr.value.3.test
8245 @@@DEnt:
8246 @@@@test:value:
8247 <!DOCTYPE a [
8248 <!ENTITY ent "aa&#x3C;bb">
8249 ]>
8250 <a b="c&ent;"/>
8251 @@@cfg:entity-replacement-tree: 1
8252 @@@c:erred: <[[xp|wf-no-lt-in-attribute-values]]> { (1, 3); }
8253 @@@c:erred:
8254 @@@@@: <[[xp|wf-syntax-error]]> { (1, 3)..(1, 6); }
8255 @@@@enImplNote: When entity node is created.
8256 @@XMLTest:
8257 @@@QName: xp.no.lt.in.attr.value.4.test
8258 @@@DEnt:
8259 @@@@test:value:
8260 <!DOCTYPE a [
8261 <!ENTITY ent "aa&#x3C;bb">
8262 <!ENTITY ent2 "ccc&ent;">
8263 ]>
8264 <a b="c&ent2;"/>
8265 @@@cfg:entity-replacement-tree: 1
8266 @@@c:erred: <[[xp|wf-no-lt-in-attribute-values]]> { (1, 3); }
8267 @@@c:erred:
8268 @@@@@: <[[xp|wf-syntax-error]]> { (1, 3)..(1, 6); }
8269 @@@@enImplNote: When entity node is created.
8270 @@XMLTest:
8271 @@@QName: xp.ger.lt.in.attr.value.1.test
8272 @@@DEnt:
8273 @@@@test:value:
8274 <!DOCTYPE a [
8275 <!ENTITY ent "aa&lt;bb">
8276 ]>
8277 <a b="c&ent;"/>
8278 @@@cfg:entity-replacement-tree: 1
8279 @@@test:domTree:
8280 document {
8281 document-type {
8282 general-entity {
8283 node-name: 'ent';
8284 text-content: 'aa<bb';
8285 }
8286 }
8287 element {
8288 attribute {
8289 node-name: 'b';
8290 text { data: 'c'; }
8291 general-entity-reference {
8292 manakai-expanded: true;
8293 node-name: 'ent';
8294 text-content: 'aa<bb';
8295 }
8296 }
8297 }
8298 }
8299 @@XMLTest:
8300 @@@QName: xp.ger.lt.in.attr.value.2.test
8301 @@@DEnt:
8302 @@@@test:value:
8303 <!DOCTYPE a [
8304 <!ENTITY ent "aa&lt;bb">
8305 <!ENTITY ent2 "ccc&ent;">
8306 ]>
8307 <a b="c&ent2;"/>
8308 @@@cfg:entity-replacement-tree: 1
8309 @@@test:domTree:
8310 document {
8311 document-type {
8312 general-entity {
8313 node-name: 'ent';
8314 text-content: 'aa<bb';
8315 }
8316 general-entity {
8317 node-name: 'ent2';
8318 text { data: 'ccc'; }
8319 general-entity-reference {
8320 node-name: 'ent';
8321 text-content: 'aa<bb';
8322 manakai-expanded: true;
8323 }
8324 }
8325 }
8326 element {
8327 attribute {
8328 node-name: 'b';
8329 text { data: 'c'; }
8330 general-entity-reference {
8331 node-name: 'ent2';
8332 text { data: 'ccc'; }
8333 general-entity-reference {
8334 node-name: 'ent';
8335 text-content: 'aa<bb';
8336 manakai-expanded: true;
8337 }
8338 manakai-expanded: true;
8339 }
8340 }
8341 }
8342 }
8343
8344 @@XMLTest:
8345 @@@QName: xp.doctype.intsubset.pi.test
8346 @@@DEnt:
8347 @@@@test:value:
8348 <!DOCTYPE a [
8349 <?pi data ?>
8350 ]>
8351 <a></a>
8352 @@@test:domTree:
8353 document {
8354 xml-version: '1.0';
8355 xml-encoding: null;
8356 xml-standalone: false;
8357 document-type {
8358 node-name: 'a';
8359 pi {
8360 target: 'pi';
8361 data: 'data ';
8362 }
8363 }
8364 element {
8365 namespace-uri: null;
8366 prefix: null;
8367 local-name: 'a';
8368 text-content: '';
8369 }
8370 }
8371 @@@enImplNote:
8372 A DOM PI node in doctype node is a manakai extension.
8373
8374
8375 @@XMLTest:
8376 @@@QName: xp.doctype.intsubset.entity.general.internal.test
8377 @@@DEnt:
8378 @@@@test:value:
8379 <!DOCTYPE a [
8380 <!ENTITY entity "entity value">
8381 ]>
8382 <a></a>
8383 @@@cfg:entity-replacement-tree: 1
8384 @@@test:domTree:
8385 document {
8386 xml-version: '1.0';
8387 xml-encoding: null;
8388 xml-standalone: false;
8389 document-type {
8390 node-name: 'a';
8391 general-entity {
8392 node-name: 'entity';
8393 text-content: 'entity value';
8394 has-replacement-tree: true;
8395 }
8396 }
8397 element {
8398 namespace-uri: null;
8399 prefix: null;
8400 local-name: 'a';
8401 text-content: '';
8402 }
8403 }
8404 @@XMLTest:
8405 @@@QName: xp.doctype.intsubset.entity.parameter.internal.test
8406 @@@DEnt:
8407 @@@@test:value:
8408 <!DOCTYPE a [
8409 <!ENTITY % entity "entity value">
8410 ]>
8411 <a></a>
8412 @@@test:domTree:
8413 document {
8414 xml-version: '1.0';
8415 xml-encoding: null;
8416 xml-standalone: false;
8417 document-type {
8418 node-name: 'a';
8419 }
8420 element {
8421 namespace-uri: null;
8422 prefix: null;
8423 local-name: 'a';
8424 text-content: '';
8425 }
8426 }
8427
8428 @@XMLTest:
8429 @@@QName: xp.doctype.internal.entity.root.element.text.only.test
8430 @@@DEnt:
8431 @@@@test:value:
8432 <!DOCTYPE a [
8433 <!ENTITY entity "entity value">
8434 ]>
8435 <a>&entity;</a>
8436 @@@cfg:entity-replacement-tree: 1
8437 @@@test:domTree:
8438 document {
8439 xml-version: '1.0';
8440 xml-encoding: null;
8441 xml-standalone: false;
8442 document-type {
8443 node-name: 'a';
8444 general-entity {
8445 node-name: 'entity';
8446 text-content: 'entity value';
8447 has-replacement-tree: true;
8448 }
8449 }
8450 element {
8451 namespace-uri: null;
8452 prefix: null;
8453 local-name: 'a';
8454 general-entity-reference {
8455 node-name: 'entity';
8456 text {
8457 data: 'entity value';
8458 }
8459 manakai-expanded: true;
8460 }
8461 }
8462 }
8463 @@XMLTest:
8464 @@@QName: xp.doctype.internal.entity.root.element.text.mult.test
8465 @@@DEnt:
8466 @@@@test:value:
8467 <!DOCTYPE a [
8468 <!ENTITY entity "entity value">
8469 ]>
8470 <a>&entity; and &entity;</a>
8471 @@@cfg:entity-replacement-tree: 1
8472 @@@test:domTree:
8473 document {
8474 xml-version: '1.0';
8475 xml-encoding: null;
8476 xml-standalone: false;
8477 document-type {
8478 node-name: 'a';
8479 general-entity {
8480 node-name: 'entity';
8481 text-content: 'entity value';
8482 has-replacement-tree: true;
8483 }
8484 }
8485 element {
8486 namespace-uri: null;
8487 prefix: null;
8488 local-name: 'a';
8489 general-entity-reference {
8490 node-name: 'entity';
8491 text {
8492 data: 'entity value';
8493 }
8494 manakai-expanded: true;
8495 }
8496 text { data: ' and '; }
8497 general-entity-reference {
8498 node-name: 'entity';
8499 text {
8500 data: 'entity value';
8501 }
8502 manakai-expanded: true;
8503 }
8504 }
8505 }
8506 @@XMLTest:
8507 @@@QName: xp.doctype.internal.entity.root.element.text.element.test
8508 @@@DEnt:
8509 @@@@test:value:
8510 <!DOCTYPE a [
8511 <!ENTITY entity "entity <p>value</p> with <e>element</e> ">
8512 ]>
8513 <a>&entity;</a>
8514 @@@cfg:entity-replacement-tree: 1
8515 @@@test:domTree:
8516 document {
8517 xml-version: '1.0';
8518 xml-encoding: null;
8519 xml-standalone: false;
8520 document-type {
8521 node-name: 'a';
8522 general-entity {
8523 node-name: 'entity';
8524 has-replacement-tree: true;
8525 text { data: 'entity '; }
8526 element {
8527 node-name: 'p';
8528 text-content: 'value';
8529 }
8530 text { data: ' with '; }
8531 element {
8532 node-name: 'e';
8533 text-content: 'element';
8534 }
8535 text { data: ' '; }
8536 }
8537 }
8538 element {
8539 namespace-uri: null;
8540 prefix: null;
8541 local-name: 'a';
8542 general-entity-reference {
8543 node-name: 'entity';
8544 manakai-expanded: true;
8545 text {
8546 data: 'entity ';
8547 }
8548 element {
8549 namespace-uri: null;
8550 prefix: null;
8551 local-name: 'p';
8552 text {
8553 data: 'value';
8554 }
8555 }
8556 text {
8557 data: ' with ';
8558 }
8559 element {
8560 namespace-uri: null;
8561 prefix: null;
8562 local-name: 'e';
8563 text {
8564 data: 'element';
8565 }
8566 }
8567 text {
8568 data: ' ';
8569 }
8570 }
8571 }
8572 }
8573 @@XMLTest:
8574 @@@QName: xp.doctype.internal.entity.root.element.text.in.ent.test
8575 @@@DEnt:
8576 @@@@test:value:
8577 <!DOCTYPE a [
8578 <!ENTITY entity1 "entity value">
8579 <!ENTITY entity2 "e&entity1;n">
8580 ]>
8581 <a>&entity2;</a>
8582 @@@cfg:entity-replacement-tree: 1
8583 @@@test:domTree:
8584 document {
8585 xml-version: '1.0';
8586 xml-encoding: null;
8587 xml-standalone: false;
8588 document-type {
8589 node-name: 'a';
8590 general-entity {
8591 node-name: 'entity1';
8592 text-content: 'entity value';
8593 }
8594 general-entity {
8595 node-name: 'entity2';
8596 text { data: 'e'; }
8597 general-entity-reference {
8598 node-name: 'entity1';
8599 text-content: 'entity value';
8600 manakai-expanded: true;
8601 }
8602 text { data: 'n'; }
8603 }
8604 }
8605 element {
8606 namespace-uri: null;
8607 prefix: null;
8608 local-name: 'a';
8609 general-entity-reference {
8610 node-name: 'entity2';
8611 text { data: 'e'; }
8612 manakai-expanded: true;
8613 general-entity-reference {
8614 node-name: 'entity1';
8615 text {
8616 data: 'entity value';
8617 }
8618 manakai-expanded: true;
8619 }
8620 text { data: 'n'; }
8621 }
8622 }
8623 }
8624
8625 @@XMLTest:
8626 @@@QName: xp.doctype.entity.value.charref.test
8627 @@@DEnt:
8628 @@@@test:value:
8629 <!DOCTYPE a [
8630 <!ENTITY entity1 "entity &#x21;value&#35;">
8631 <!ENTITY entity2 '&#x21;value&#35;'>
8632 ]>
8633 <a></a>
8634 @@@cfg:entity-replacement-tree: 1
8635 @@@test:domTree:
8636 document {
8637 document-type {
8638 general-entity {
8639 node-name: 'entity1';
8640 text-content: 'entity !value#';
8641 has-replacement-tree: true;
8642 }
8643 general-entity {
8644 node-name: 'entity2';
8645 text-content: '!value#';
8646 has-replacement-tree: true;
8647 }
8648 }
8649 element { }
8650 }
8651
8652 @@XMLTest:
8653 @@@QName: xp.predefined.in.content.test
8654 @@@DEnt:
8655 @@@@test:value:
8656 <a>_&lt;_&gt;_&quot;_&apos;_&amp;_</a>
8657 @@@test:domTree:
8658 document {
8659 element {
8660 text-content: '_<_>_"_' U+0027 '_&_';
8661 }
8662 }
8663 @@XMLTest:
8664 @@@QName: xp.predefined.in.attr.test
8665 @@@DEnt:
8666 @@@@test:value:
8667 <a at="_&lt;_&gt;_&quot;_&apos;_&amp;_"></a>
8668 @@@test:domTree:
8669 document {
8670 element {
8671 attribute {
8672 node-name: 'at';
8673 text-content: '_<_>_"_' U+0027 '_&_';
8674 }
8675 }
8676 }
8677 @@XMLTest:
8678 @@@QName: xp.predefined.in.content.in.entity.test
8679 @@@DEnt:
8680 @@@@test:value:
8681 <!DOCTYPE a [
8682 <!ENTITY ent "_&lt;_&gt;_&quot;_&apos;_&amp;_">
8683 ]>
8684 <a>&ent;</a>
8685 @@@cfg:entity-replacement-tree: 1
8686 @@@test:domTree:
8687 document {
8688 document-type {
8689 general-entity {
8690 node-name: 'ent';
8691 text-content: '_<_>_"_' U+0027 '_&_';
8692 }
8693 }
8694 element {
8695 text-content: '_<_>_"_' U+0027 '_&_';
8696 }
8697 }
8698 @@XMLTest:
8699 @@@QName: xp.predefined.decl.ignore.test
8700 @@@DEnt:
8701 @@@@test:value:
8702 <!DOCTYPE a [
8703 <!ENTITY lt "&#x26;#x3C;">
8704 <!ENTITY gt "&#x3E;">
8705 <!ENTITY amp "&#x26;#x26;">
8706 <!ENTITY quot "&#x22;">
8707 <!ENTITY apos "&#x27;">
8708 <!ENTITY other "other">
8709 ]>
8710 <a>_&lt;_&gt;_&quot;_&apos;_&amp;_&other;_</a>
8711 @@@cfg:entity-replacement-tree: 1
8712 @@@test:domTree:
8713 document {
8714 document-type {
8715 general-entity {
8716 node-name: 'other';
8717 text-content: 'other';
8718 }
8719 }
8720 element {
8721 text-content: '_<_>_"_' U+0027 '_&_other_';
8722 }
8723 }
8724
8725 @@XMLTest:
8726 @@@QName: xp.doctype.internal.attr.empty.test
8727 @@@DEnt:
8728 @@@@test:value:
8729 <!DOCTYPE a [
8730 <!ATTLIST a>
8731 ]>
8732 <a></a>
8733 @@@test:domTree:
8734 document {
8735 xml-version: '1.0';
8736 xml-encoding: null;
8737 xml-standalone: false;
8738 document-type {
8739 node-name: 'a';
8740 element-type-definition {
8741 node-name: 'a';
8742 }
8743 }
8744 element {
8745 namespace-uri: null;
8746 local-name: 'a';
8747 }
8748 }
8749 @@XMLTest:
8750 @@@QName: xp.doctype.internal.attr.cdata.implied.test
8751 @@@DEnt:
8752 @@@@test:value:
8753 <!DOCTYPE a [
8754 <!ATTLIST a
8755 at CDATA #IMPLIED
8756 >
8757 ]>
8758 <a></a>
8759 @@@test:domTree:
8760 document {
8761 xml-version: '1.0';
8762 xml-encoding: null;
8763 xml-standalone: false;
8764 document-type {
8765 node-name: 'a';
8766 element-type-definition {
8767 node-name: 'a';
8768 attribute-definition {
8769 node-name: 'at';
8770 declared-type: const (CDATA_ATTR);
8771 allowed-tokens: DOMStringList ();
8772 default-type: const (IMPLIED_DEFAULT);
8773 text-content: '';
8774 }
8775 }
8776 }
8777 element {
8778 namespace-uri: null;
8779 local-name: 'a';
8780 }
8781 }
8782 @@XMLTest:
8783 @@@QName: xp.doctype.internal.attr.types.implied.test
8784 @@@DEnt:
8785 @@@@test:value:
8786 <!DOCTYPE a [
8787 <!ATTLIST a
8788 at1 ID #IMPLIED
8789 at2 IDREF #IMPLIED
8790 at3 IDREFS #IMPLIED
8791 at4 ENTITY #IMPLIED
8792 at5 ENTITIES #IMPLIED
8793 at6 NMTOKEN #IMPLIED
8794 at7 NMTOKENS #IMPLIED
8795 at8 NOTATION (n1 | n2|n3) #IMPLIED
8796 at9 (e1| e2| e3 ) #IMPLIED
8797 >
8798 ]>
8799 <a></a>
8800 @@@test:domTree:
8801 document {
8802 xml-version: '1.0';
8803 xml-encoding: null;
8804 xml-standalone: false;
8805 document-type {
8806 node-name: 'a';
8807 element-type-definition {
8808 node-name: 'a';
8809 attribute-definition {
8810 node-name: 'at1';
8811 declared-type: const (ID_ATTR);
8812 allowed-tokens: DOMStringList ();
8813 default-type: const (IMPLIED_DEFAULT);
8814 text-content: '';
8815 }
8816 attribute-definition {
8817 node-name: 'at2';
8818 declared-type: const (IDREF_ATTR);
8819 allowed-tokens: DOMStringList ();
8820 default-type: const (IMPLIED_DEFAULT);
8821 text-content: '';
8822 }
8823 attribute-definition {
8824 node-name: 'at3';
8825 declared-type: const (IDREFS_ATTR);
8826 allowed-tokens: DOMStringList ();
8827 default-type: const (IMPLIED_DEFAULT);
8828 text-content: '';
8829 }
8830 attribute-definition {
8831 node-name: 'at4';
8832 declared-type: const (ENTITY_ATTR);
8833 allowed-tokens: DOMStringList ();
8834 default-type: const (IMPLIED_DEFAULT);
8835 text-content: '';
8836 }
8837 attribute-definition {
8838 node-name: 'at5';
8839 declared-type: const (ENTITIES_ATTR);
8840 allowed-tokens: DOMStringList ();
8841 default-type: const (IMPLIED_DEFAULT);
8842 text-content: '';
8843 }
8844 attribute-definition {
8845 node-name: 'at6';
8846 declared-type: const (NMTOKEN_ATTR);
8847 allowed-tokens: DOMStringList ();
8848 default-type: const (IMPLIED_DEFAULT);
8849 text-content: '';
8850 }
8851 attribute-definition {
8852 node-name: 'at7';
8853 declared-type: const (NMTOKENS_ATTR);
8854 allowed-tokens: DOMStringList ();
8855 default-type: const (IMPLIED_DEFAULT);
8856 text-content: '';
8857 }
8858 attribute-definition {
8859 node-name: 'at8';
8860 declared-type: const (NOTATION_ATTR);
8861 allowed-tokens: DOMStringList ('n1', 'n2', 'n3');
8862 default-type: const (IMPLIED_DEFAULT);
8863 text-content: '';
8864 }
8865 attribute-definition {
8866 node-name: 'at9';
8867 declared-type: const (ENUMERATION_ATTR);
8868 allowed-tokens: DOMStringList ('e1', 'e2', 'e3');
8869 default-type: const (IMPLIED_DEFAULT);
8870 text-content: '';
8871 }
8872 }
8873 }
8874 element {
8875 namespace-uri: null;
8876 local-name: 'a';
8877 }
8878 }
8879 @@XMLTest:
8880 @@@QName: xp.doctype.internal.attr.cdata.defaults.test
8881 @@@DEnt:
8882 @@@@test:value:
8883 <!DOCTYPE a [
8884 <!ATTLIST a
8885 at1 CDATA #IMPLIED
8886 at2 CDATA #REQUIRED
8887 at3 CDATA #FIXED "value3"
8888 at4 CDATA "value4"
8889 at5 CDATA #FIXED 'value5'
8890 at6 CDATA 'value6'
8891 >
8892 ]>
8893 <a></a>
8894 @@@test:domTree:
8895 document {
8896 xml-version: '1.0';
8897 xml-encoding: null;
8898 xml-standalone: false;
8899 document-type {
8900 node-name: 'a';
8901 element-type-definition {
8902 node-name: 'a';
8903 attribute-definition {
8904 node-name: 'at1';
8905 declared-type: const (CDATA_ATTR);
8906 allowed-tokens: DOMStringList ();
8907 default-type: const (IMPLIED_DEFAULT);
8908 text-content: '';
8909 }
8910 attribute-definition {
8911 node-name: 'at2';
8912 declared-type: const (CDATA_ATTR);
8913 allowed-tokens: DOMStringList ();
8914 default-type: const (REQUIRED_DEFAULT);
8915 text-content: '';
8916 }
8917 attribute-definition {
8918 node-name: 'at3';
8919 declared-type: const (CDATA_ATTR);
8920 allowed-tokens: DOMStringList ();
8921 default-type: const (FIXED_DEFAULT);
8922 text-content: 'value3';
8923 }
8924 attribute-definition {
8925 node-name: 'at4';
8926 declared-type: const (CDATA_ATTR);
8927 allowed-tokens: DOMStringList ();
8928 default-type: const (EXPLICIT_DEFAULT);
8929 text-content: 'value4';
8930 }
8931 attribute-definition {
8932 node-name: 'at5';
8933 declared-type: const (CDATA_ATTR);
8934 allowed-tokens: DOMStringList ();
8935 default-type: const (FIXED_DEFAULT);
8936 text-content: 'value5';
8937 }
8938 attribute-definition {
8939 node-name: 'at6';
8940 declared-type: const (CDATA_ATTR);
8941 allowed-tokens: DOMStringList ();
8942 default-type: const (EXPLICIT_DEFAULT);
8943 text-content: 'value6';
8944 }
8945 }
8946 }
8947 element {
8948 namespace-uri: null;
8949 local-name: 'a';
8950 attribute {
8951 node-name: 'at3';
8952 text-content: 'value3';
8953 specified: false;
8954 }
8955 attribute {
8956 node-name: 'at4';
8957 text-content: 'value4';
8958 specified: false;
8959 }
8960 attribute {
8961 node-name: 'at5';
8962 text-content: 'value5';
8963 specified: false;
8964 }
8965 attribute {
8966 node-name: 'at6';
8967 text-content: 'value6';
8968 specified: false;
8969 }
8970 }
8971 }
8972
8973 @@XMLTest:
8974 @@@QName: xp.doctype.internal.attr.cdata.default.normalize.test
8975 @@@DEnt:
8976 @@@@test:value:
8977 <!DOCTYPE a [
8978 <!ATTLIST a
8979 at CDATA " default &#x0A;value "
8980 >
8981 ]>
8982 <a></a>
8983 @@@test:domTree:
8984 document {
8985 xml-version: '1.0';
8986 xml-encoding: null;
8987 xml-standalone: false;
8988 document-type {
8989 node-name: 'a';
8990 element-type-definition {
8991 node-name: 'a';
8992 attribute-definition {
8993 node-name: 'at';
8994 declared-type: const (CDATA_ATTR);
8995 allowed-tokens: DOMStringList ();
8996 default-type: const (EXPLICIT_DEFAULT);
8997 text-content: ' default ' U+000A 'value ';
8998 }
8999 }
9000 }
9001 element {
9002 namespace-uri: null;
9003 local-name: 'a';
9004 attribute {
9005 node-name: 'at';
9006 text-content: ' default ' U+000A 'value ';
9007 specified: false;
9008 }
9009 }
9010 }
9011 @@XMLTest:
9012 @@@QName: xp.doctype.internal.attr.nmtoken.default.normalize.test
9013 @@@DEnt:
9014 @@@@test:value:
9015 <!DOCTYPE a [
9016 <!ATTLIST a
9017 at NMTOKEN " default &#x0A;value "
9018 >
9019 ]>
9020 <a></a>
9021 @@@test:domTree:
9022 document {
9023 xml-version: '1.0';
9024 xml-encoding: null;
9025 xml-standalone: false;
9026 document-type {
9027 node-name: 'a';
9028 element-type-definition {
9029 node-name: 'a';
9030 attribute-definition {
9031 node-name: 'at';
9032 declared-type: const (NMTOKEN_ATTR);
9033 allowed-tokens: DOMStringList ();
9034 default-type: const (EXPLICIT_DEFAULT);
9035 text-content: ' default ' U+000A 'value ';
9036 }
9037 }
9038 }
9039 element {
9040 namespace-uri: null;
9041 local-name: 'a';
9042 attribute {
9043 node-name: 'at';
9044 text-content: ' default ' U+000A 'value ';
9045 specified: false;
9046 }
9047 }
9048 }
9049
9050 @@XMLTest:
9051 @@@QName: xp.doctype.attrtype.no-value.test
9052 @@@DEnt:
9053 @@@@test:value:
9054 <!DOCTYPE a>
9055 <a at=" at value "></a>
9056 @@@test:domTree:
9057 document {
9058 xml-version: '1.0';
9059 xml-encoding: null;
9060 xml-standalone: false;
9061 document-type { }
9062 element {
9063 namespace-uri: null;
9064 local-name: 'a';
9065 attribute {
9066 namespace-uri: null;
9067 local-name: 'at';
9068 value: ' at value ';
9069 text {
9070 data: ' at value ';
9071 }
9072 schema-type-info: TypeInfo (null, null);
9073 specified: true;
9074 }
9075 }
9076 }
9077 @@XMLTest:
9078 @@@QName: xp.doctype.attrtype.cdata.test
9079 @@@DEnt:
9080 @@@@test:value:
9081 <!DOCTYPE a [
9082 <!ATTLIST a
9083 at CDATA #IMPLIED
9084 >
9085 ]>
9086 <a at=" at value "></a>
9087 @@@test:domTree:
9088 document {
9089 xml-version: '1.0';
9090 xml-encoding: null;
9091 xml-standalone: false;
9092 document-type { }
9093 element {
9094 namespace-uri: null;
9095 local-name: 'a';
9096 attribute {
9097 namespace-uri: null;
9098 local-name: 'at';
9099 value: ' at value ';
9100 text {
9101 data: ' at value ';
9102 }
9103 schema-type-info:
9104 TypeInfo ('http://www.w3.org/TR/REC-xml', 'CDATA');
9105 specified: true;
9106 }
9107 }
9108 }
9109 @@XMLTest:
9110 @@@QName: xp.doctype.attrtype.nmtoken.test
9111 @@@DEnt:
9112 @@@@test:value:
9113 <!DOCTYPE a [
9114 <!ATTLIST a
9115 at NMTOKEN #IMPLIED
9116 >
9117 ]>
9118 <a at=" at value "></a>
9119 @@@test:domTree:
9120 document {
9121 xml-version: '1.0';
9122 xml-encoding: null;
9123 xml-standalone: false;
9124 document-type { }
9125 element {
9126 namespace-uri: null;
9127 local-name: 'a';
9128 attribute {
9129 namespace-uri: null;
9130 local-name: 'at';
9131 value: 'at value';
9132 text {
9133 data: ' at value ';
9134 }
9135 schema-type-info:
9136 TypeInfo ('http://www.w3.org/TR/REC-xml', 'NMTOKEN');
9137 specified: true;
9138 }
9139 }
9140 }
9141
9142 @@XMLTest:
9143 @@@QName: xp.doctype.attr.normalization.1.test
9144 @@@DEnt:
9145 @@@@test:value:
9146 <a at=" at &#xA;value "></a>
9147 @@@test:domTree:
9148 document {
9149 element {
9150 attribute {
9151 node-name: 'at';
9152 value: ' at ' U+000A 'value ';
9153 schema-type-info: TypeInfo (null, null);
9154 specified: true;
9155 }
9156 }
9157 }
9158 @@XMLTest:
9159 @@@QName: xp.doctype.attr.normalization.2.test
9160 @@@DEnt:
9161 @@@@test:value:
9162 <a at=" at &#xD;value "></a>
9163 @@@test:domTree:
9164 document {
9165 element {
9166 attribute {
9167 value: ' at ' U+000D 'value ';
9168 schema-type-info: TypeInfo (null, null);
9169 specified: true;
9170 }
9171 }
9172 }
9173 @@XMLTest:
9174 @@@QName: xp.doctype.attr.normalization.3.test
9175 @@@DEnt:
9176 @@@@test:value:
9177 <a at=" at &#x9;value "></a>
9178 @@@test:domTree:
9179 document {
9180 element {
9181 attribute {
9182 node-name: 'at';
9183 value: ' at ' U+0009 'value ';
9184 schema-type-info: TypeInfo (null, null);
9185 specified: true;
9186 }
9187 }
9188 }
9189
9190 @@XMLTest:
9191 @@@QName: xp.doctype.attr.specified.1.test
9192 @@@DEnt:
9193 @@@@test:value:
9194 <!DOCTYPE a [
9195 <!ATTLIST a
9196 at CDATA "default"
9197 >
9198 ]>
9199 <a></a>
9200 @@@test:domTree:
9201 document {
9202 document-type { }
9203 element {
9204 attribute {
9205 node-name: 'at';
9206 value: 'default';
9207 specified: false;
9208 }
9209 }
9210 }
9211 @@XMLTest:
9212 @@@QName: xp.doctype.attr.specified.2.test
9213 @@@DEnt:
9214 @@@@test:value:
9215 <!DOCTYPE a [
9216 <!ATTLIST a
9217 at CDATA "default"
9218 >
9219 ]>
9220 <a at2="specified"></a>
9221 @@@test:domTree:
9222 document {
9223 document-type { }
9224 element {
9225 attribute {
9226 node-name: 'at';
9227 value: 'default';
9228 specified: false;
9229 }
9230 attribute {
9231 node-name: 'at2';
9232 value: 'specified';
9233 specified: true;
9234 }
9235 }
9236 }
9237 @@XMLTest:
9238 @@@QName: xp.doctype.attr.specified.3.test
9239 @@@DEnt:
9240 @@@@test:value:
9241 <!DOCTYPE a [
9242 <!ATTLIST a
9243 at CDATA "default"
9244 >
9245 ]>
9246 <a at="specified"></a>
9247 @@@test:domTree:
9248 document {
9249 document-type { }
9250 element {
9251 attribute {
9252 node-name: 'at';
9253 value: 'specified';
9254 specified: true;
9255 }
9256 }
9257 }
9258
9259 @@XMLTest:
9260 @@@QName: xp.attr.literal.charref.test
9261 @@@DEnt:
9262 @@@@test:value:
9263 <a at1 = "value&#33;_&#x25;value"
9264 at2 = 'value&#x25;_&#33;value'></a>
9265 @@@test:domTree:
9266 document {
9267 element {
9268 attribute {
9269 node-name: 'at1';
9270 text-content: 'value!_%value';
9271 }
9272 attribute {
9273 node-name: 'at2';
9274 text-content: 'value%_!value';
9275 }
9276 }
9277 }
9278 @@XMLTest:
9279 @@@QName: xp.attr.literal.entref.test
9280 @@@DEnt:
9281 @@@@test:value:
9282 <!DOCTYPE a [
9283 <!ENTITY ent "entity&#x26;#33;_&#x26;#x29;value">
9284 ]>
9285 <a at1 = "value&ent;value"
9286 at2 = 'value&ent;value'></a>
9287 @@@cfg:entity-replacement-tree: 1
9288 @@@test:domTree:
9289 document {
9290 document-type {
9291 general-entity {
9292 node-name: 'ent';
9293 text-content: 'entity!_)value';
9294 }
9295 }
9296 element {
9297 attribute {
9298 node-name: 'at1';
9299 text-content: 'valueentity!_)valuevalue';
9300 }
9301 attribute {
9302 node-name: 'at2';
9303 text-content: 'valueentity!_)valuevalue';
9304 }
9305 }
9306 }
9307 @@XMLTest:
9308 @@@QName: xp.attr.literal.entref.nest.test
9309 @@@DEnt:
9310 @@@@test:value:
9311 <!DOCTYPE a [
9312 <!ENTITY ent1 "entity&#x26;#33;_&#x26;#x29;value">
9313 <!ENTITY ent2 "@&ent1;@">
9314 ]>
9315 <a at1 = "value&ent2;value"
9316 at2 = 'value&ent2;value'></a>
9317 @@@cfg:entity-replacement-tree: 1
9318 @@@test:domTree:
9319 document {
9320 document-type {
9321 general-entity {
9322 node-name: 'ent1';
9323 text-content: 'entity!_)value';
9324 }
9325 general-entity {
9326 node-name: 'ent2';
9327 text-content: '@entity!_)value@';
9328 }
9329 }
9330 element {
9331 attribute {
9332 node-name: 'at1';
9333 text-content: 'value@entity!_)value@value';
9334 }
9335 attribute {
9336 node-name: 'at2';
9337 text-content: 'value@entity!_)value@value';
9338 }
9339 }
9340 }
9341
9342 @@XMLTest:
9343 @@@QName: xp.element.content.ncr.1.test
9344 @@@DEnt:
9345 @@@@test:value:
9346 <e>&#33;</e>
9347 @@@test:domTree:
9348 document {
9349 element {
9350 text-content: '!';
9351 }
9352 }
9353 @@XMLTest:
9354 @@@QName: xp.element.content.ncr.2.test
9355 @@@DEnt:
9356 @@@@test:value:
9357 <e>aaaa&#33;bbbb</e>
9358 @@@test:domTree:
9359 document {
9360 element {
9361 text-content: 'aaaa!bbbb';
9362 text {
9363 text-content: 'aaaa!bbbb';
9364 }
9365 }
9366 }
9367 @@XMLTest:
9368 @@@QName: xp.attrval.ncr.1.test
9369 @@@DEnt:
9370 @@@@test:value:
9371 <e a="&#33;"/>
9372 @@@test:domTree:
9373 document {
9374 element {
9375 attribute {
9376 node-name: 'a';
9377 text-content: '!';
9378 }
9379 }
9380 }
9381 @@XMLTest:
9382 @@@QName: xp.attrval.ncr.2.test
9383 @@@DEnt:
9384 @@@@test:value:
9385 <e a="aaaaa&#33;bbbbb"/>
9386 @@@test:domTree:
9387 document {
9388 element {
9389 attribute {
9390 node-name: 'a';
9391 text-content: 'aaaaa!bbbbb';
9392 text {
9393 text-content: 'aaaaa!bbbbb';
9394 }
9395 }
9396 }
9397 }
9398 @@XMLTest:
9399 @@@QName: xp.attrval.ncr.3.test
9400 @@@DEnt:
9401 @@@@test:value:
9402 <e a='&#33;'/>
9403 @@@test:domTree:
9404 document {
9405 element {
9406 attribute {
9407 node-name: 'a';
9408 text-content: '!';
9409 }
9410 }
9411 }
9412 @@XMLTest:
9413 @@@QName: xp.attrval.ncr.4.test
9414 @@@DEnt:
9415 @@@@test:value:
9416 <e a='aaaaa&#33;bbbbb'/>
9417 @@@test:domTree:
9418 document {
9419 element {
9420 attribute {
9421 node-name: 'a';
9422 text-content: 'aaaaa!bbbbb';
9423 }
9424 }
9425 }
9426 @@XMLTest:
9427 @@@QName: xp.entval.ncr.1.test
9428 @@@DEnt:
9429 @@@@test:value:
9430 <!DOCTYPE e [
9431 <!ENTITY ent "&#33;">
9432 ]>
9433 <e/>
9434 @@@cfg:entity-replacement-tree: 1
9435 @@@test:domTree:
9436 document {
9437 document-type {
9438 general-entity {
9439 node-name: 'ent';
9440 text-content: '!';
9441 }
9442 }
9443 element { }
9444 }
9445 @@XMLTest:
9446 @@@QName: xp.entval.ncr.2.test
9447 @@@DEnt:
9448 @@@@test:value:
9449 <!DOCTYPE e [
9450 <!ENTITY ent "aaaaa&#33;bbbbb">
9451 ]>
9452 <e/>
9453 @@@cfg:entity-replacement-tree: 1
9454 @@@test:domTree:
9455 document {
9456 document-type {
9457 general-entity {
9458 node-name: 'ent';
9459 text-content: 'aaaaa!bbbbb';
9460 }
9461 }
9462 element { }
9463 }
9464 @@XMLTest:
9465 @@@QName: xp.element.content.reptxt.ncr.1.test
9466 @@@DEnt:
9467 @@@@test:value:
9468 <!DOCTYPE e [
9469 <!ENTITY ent "&#38;#33;">
9470 ]>
9471 <e>&ent;</e>
9472 @@@test:domTree:
9473 document {
9474 document-type { }
9475 element {
9476 general-entity-reference {
9477 node-name: 'ent';
9478 text-content: '!';
9479 manakai-expanded: true;
9480 }
9481 }
9482 }
9483 @@XMLTest:
9484 @@@QName: xp.element.content.reptxt.ncr.2.test
9485 @@@DEnt:
9486 @@@@test:value:
9487 <!DOCTYPE e [
9488 <!ENTITY ent "aaaaa&#38;#33;bbbbb">
9489 ]>
9490 <e>&ent;</e>
9491 @@@test:domTree:
9492 document {
9493 document-type { }
9494 element {
9495 general-entity-reference {
9496 node-name: 'ent';
9497 text-content: 'aaaaa!bbbbb';
9498 manakai-expanded: true;
9499 }
9500 }
9501 }
9502 @@XMLTest:
9503 @@@QName: xp.element.content.reptxt.reptxt.ncr.1.test
9504 @@@DEnt:
9505 @@@@test:value:
9506 <!DOCTYPE e [
9507 <!ENTITY ent "&#38;#33;">
9508 <!ENTITY ent2 "&ent;">
9509 ]>
9510 <e>&ent2;</e>
9511 @@@test:domTree:
9512 document {
9513 document-type { }
9514 element {
9515 general-entity-reference {
9516 node-name: 'ent2';
9517 general-entity-reference {
9518 node-name: 'ent';
9519 text-content: '!';
9520 manakai-expanded: true;
9521 }
9522 manakai-expanded: true;
9523 }
9524 }
9525 }
9526 @@XMLTest:
9527 @@@QName: xp.element.content.reptxt.reptxt.ncr.2.test
9528 @@@DEnt:
9529 @@@@test:value:
9530 <!DOCTYPE e [
9531 <!ENTITY ent "aa&#38;#33;bb">
9532 <!ENTITY ent2 "&ent;">
9533 ]>
9534 <e>&ent2;</e>
9535 @@@test:domTree:
9536 document {
9537 document-type { }
9538 element {
9539 general-entity-reference {
9540 node-name: 'ent2';
9541 general-entity-reference {
9542 node-name: 'ent';
9543 text-content: 'aa!bb';
9544 manakai-expanded: true;
9545 text {
9546 text-content: 'aa!bb';
9547 }
9548 }
9549 manakai-expanded: true;
9550 }
9551 }
9552 }
9553 @@XMLTest:
9554 @@@QName: xp.attval.reptxt.ncr.1.test
9555 @@@DEnt:
9556 @@@@test:value:
9557 <!DOCTYPE e [
9558 <!ENTITY ent "&#38;#33;">
9559 ]>
9560 <e a="&ent;"/>
9561 @@@test:domTree:
9562 document {
9563 document-type { }
9564 element {
9565 attribute {
9566 node-name: 'a';
9567 general-entity-reference {
9568 node-name: 'ent';
9569 text-content: '!';
9570 manakai-expanded: true;
9571 }
9572 }
9573 }
9574 }
9575 @@XMLTest:
9576 @@@QName: xp.attval.reptxt.ncr.2.test
9577 @@@DEnt:
9578 @@@@test:value:
9579 <!DOCTYPE e [
9580 <!ENTITY ent "aaaaa&#38;#33;bbbbb">
9581 ]>
9582 <e a="&ent;"/>
9583 @@@test:domTree:
9584 document {
9585 document-type { }
9586 element {
9587 attribute {
9588 node-name: 'a';
9589 general-entity-reference {
9590 node-name: 'ent';
9591 text-content: 'aaaaa!bbbbb';
9592 manakai-expanded: true;
9593 text {
9594 text-content: 'aaaaa!bbbbb';
9595 }
9596 }
9597 }
9598 }
9599 }
9600 @@XMLTest:
9601 @@@QName: xp.attval.reptxt.reptxt.ncr.1.test
9602 @@@DEnt:
9603 @@@@test:value:
9604 <!DOCTYPE e [
9605 <!ENTITY ent "&#38;#33;">
9606 <!ENTITY ent2 "&ent;">
9607 ]>
9608 <e a="&ent2;"/>
9609 @@@test:domTree:
9610 document {
9611 document-type { }
9612 element {
9613 attribute {
9614 node-name: 'a';
9615 general-entity-reference {
9616 node-name: 'ent2';
9617 manakai-expanded: true;
9618 general-entity-reference {
9619 node-name: 'ent';
9620 text-content: '!';
9621 manakai-expanded: true;
9622 }
9623 }
9624 }
9625 }
9626 }
9627 @@XMLTest:
9628 @@@QName: xp.attval.reptxt.reptxt.ncr.2.test
9629 @@@DEnt:
9630 @@@@test:value:
9631 <!DOCTYPE e [
9632 <!ENTITY ent "aa&#38;#33;bb">
9633 <!ENTITY ent2 "&ent;">
9634 ]>
9635 <e a="&ent2;"/>
9636 @@@test:domTree:
9637 document {
9638 document-type { }
9639 element {
9640 attribute {
9641 node-name: 'a';
9642 general-entity-reference {
9643 node-name: 'ent2';
9644 manakai-expanded: true;
9645 general-entity-reference {
9646 node-name: 'ent';
9647 text-content: 'aa!bb';
9648 manakai-expanded: true;
9649 }
9650 }
9651 }
9652 }
9653 }
9654
9655 @@XMLTest:
9656 @@@QName: xp.element.content.hcr.1.test
9657 @@@DEnt:
9658 @@@@test:value:
9659 <e>&#x21;</e>
9660 @@@test:domTree:
9661 document {
9662 element {
9663 text-content: '!';
9664 }
9665 }
9666 @@XMLTest:
9667 @@@QName: xp.element.content.hcr.2.test
9668 @@@DEnt:
9669 @@@@test:value:
9670 <e>aaaa&#x21;bbbb</e>
9671 @@@test:domTree:
9672 document {
9673 element {
9674 text-content: 'aaaa!bbbb';
9675 text {
9676 text-content: 'aaaa!bbbb';
9677 }
9678 }
9679 }
9680 @@XMLTest:
9681 @@@QName: xp.attrval.hcr.1.test
9682 @@@DEnt:
9683 @@@@test:value:
9684 <e a="&#x21;"/>
9685 @@@test:domTree:
9686 document {
9687 element {
9688 attribute {
9689 node-name: 'a';
9690 text-content: '!';
9691 }
9692 }
9693 }
9694 @@XMLTest:
9695 @@@QName: xp.attrval.hcr.2.test
9696 @@@DEnt:
9697 @@@@test:value:
9698 <e a="aaaaa&#x21;bbbbb"/>
9699 @@@test:domTree:
9700 document {
9701 element {
9702 attribute {
9703 node-name: 'a';
9704 text-content: 'aaaaa!bbbbb';
9705 text {
9706 text-content: 'aaaaa!bbbbb';
9707 }
9708 }
9709 }
9710 }
9711 @@XMLTest:
9712 @@@QName: xp.attrval.hcr.3.test
9713 @@@DEnt:
9714 @@@@test:value:
9715 <e a='&#x21;'/>
9716 @@@test:domTree:
9717 document {
9718 element {
9719 attribute {
9720 node-name: 'a';
9721 text-content: '!';
9722 }
9723 }
9724 }
9725 @@XMLTest:
9726 @@@QName: xp.attrval.hcr.4.test
9727 @@@DEnt:
9728 @@@@test:value:
9729 <e a='aaaaa&#x21;bbbbb'/>
9730 @@@test:domTree:
9731 document {
9732 element {
9733 attribute {
9734 node-name: 'a';
9735 text-content: 'aaaaa!bbbbb';
9736 }
9737 }
9738 }
9739 @@XMLTest:
9740 @@@QName: xp.entval.hcr.1.test
9741 @@@DEnt:
9742 @@@@test:value:
9743 <!DOCTYPE e [
9744 <!ENTITY ent "&#x21;">
9745 ]>
9746 <e/>
9747 @@@cfg:entity-replacement-tree: 1
9748 @@@test:domTree:
9749 document {
9750 document-type {
9751 general-entity {
9752 node-name: 'ent';
9753 text-content: '!';
9754 }
9755 }
9756 element { }
9757 }
9758 @@XMLTest:
9759 @@@QName: xp.entval.hcr.2.test
9760 @@@DEnt:
9761 @@@@test:value:
9762 <!DOCTYPE e [
9763 <!ENTITY ent "aaaaa&#x21;bbbbb">
9764 ]>
9765 <e/>
9766 @@@cfg:entity-replacement-tree: 1
9767 @@@test:domTree:
9768 document {
9769 document-type {
9770 general-entity {
9771 node-name: 'ent';
9772 text-content: 'aaaaa!bbbbb';
9773 text {
9774 text-content: 'aaaaa!bbbbb';
9775 }
9776 }
9777 }
9778 element { }
9779 }
9780 @@XMLTest:
9781 @@@QName: xp.element.content.reptxt.hcr.1.test
9782 @@@DEnt:
9783 @@@@test:value:
9784 <!DOCTYPE e [
9785 <!ENTITY ent "&#38;#x21;">
9786 ]>
9787 <e>&ent;</e>
9788 @@@test:domTree:
9789 document {
9790 document-type { }
9791 element {
9792 general-entity-reference {
9793 node-name: 'ent';
9794 text-content: '!';
9795 manakai-expanded: true;
9796 }
9797 }
9798 }
9799 @@XMLTest:
9800 @@@QName: xp.element.content.reptxt.hcr.2.test
9801 @@@DEnt:
9802 @@@@test:value:
9803 <!DOCTYPE e [
9804 <!ENTITY ent "aaaaa&#38;#x21;bbbbb">
9805 ]>
9806 <e>&ent;</e>
9807 @@@test:domTree:
9808 document {
9809 document-type { }
9810 element {
9811 general-entity-reference {
9812 node-name: 'ent';
9813 text-content: 'aaaaa!bbbbb';
9814 manakai-expanded: true;
9815 }
9816 }
9817 }
9818 @@XMLTest:
9819 @@@QName: xp.element.content.reptxt.reptxt.hcr.1.test
9820 @@@DEnt:
9821 @@@@test:value:
9822 <!DOCTYPE e [
9823 <!ENTITY ent "&#38;#x21;">
9824 <!ENTITY ent2 "&ent;">
9825 ]>
9826 <e>&ent2;</e>
9827 @@@test:domTree:
9828 document {
9829 document-type { }
9830 element {
9831 general-entity-reference {
9832 node-name: 'ent2';
9833 manakai-expanded: true;
9834 general-entity-reference {
9835 node-name: 'ent';
9836 text-content: '!';
9837 manakai-expanded: true;
9838 }
9839 }
9840 }
9841 }
9842 @@XMLTest:
9843 @@@QName: xp.element.content.reptxt.reptxt.hcr.2.test
9844 @@@DEnt:
9845 @@@@test:value:
9846 <!DOCTYPE e [
9847 <!ENTITY ent "aa&#38;#x21;bb">
9848 <!ENTITY ent2 "&ent;">
9849 ]>
9850 <e>&ent2;</e>
9851 @@@test:domTree:
9852 document {
9853 document-type { }
9854 element {
9855 general-entity-reference {
9856 node-name: 'ent2';
9857 manakai-expanded: true;
9858 general-entity-reference {
9859 node-name: 'ent';
9860 manakai-expanded: true;
9861 text-content: 'aa!bb';
9862 }
9863 }
9864 }
9865 }
9866 @@XMLTest:
9867 @@@QName: xp.attval.reptxt.hcr.1.test
9868 @@@DEnt:
9869 @@@@test:value:
9870 <!DOCTYPE e [
9871 <!ENTITY ent "&#38;#x21;">
9872 ]>
9873 <e a="&ent;"/>
9874 @@@test:domTree:
9875 document {
9876 document-type { }
9877 element {
9878 attribute {
9879 node-name: 'a';
9880 general-entity-reference {
9881 node-name: 'ent';
9882 manakai-expanded: true;
9883 text-content: '!';
9884 }
9885 }
9886 }
9887 }
9888 @@XMLTest:
9889 @@@QName: xp.attval.reptxt.hcr.2.test
9890 @@@DEnt:
9891 @@@@test:value:
9892 <!DOCTYPE e [
9893 <!ENTITY ent "aaaaa&#38;#x21;bbbbb">
9894 ]>
9895 <e a="&ent;"/>
9896 @@@test:domTree:
9897 document {
9898 document-type { }
9899 element {
9900 attribute {
9901 node-name: 'a';
9902 general-entity-reference {
9903 node-name: 'ent';
9904 manakai-expanded: true;
9905 text-content: 'aaaaa!bbbbb';
9906 text {
9907 text-content: 'aaaaa!bbbbb';
9908 }
9909 }
9910 }
9911 }
9912 }
9913 @@XMLTest:
9914 @@@QName: xp.attval.reptxt.reptxt.hcr.1.test
9915 @@@DEnt:
9916 @@@@test:value:
9917 <!DOCTYPE e [
9918 <!ENTITY ent "&#38;#x21;">
9919 <!ENTITY ent2 "&ent;">
9920 ]>
9921 <e a="&ent2;"/>
9922 @@@test:domTree:
9923 document {
9924 document-type { }
9925 element {
9926 attribute {
9927 node-name: 'a';
9928 general-entity-reference {
9929 node-name: 'ent2';
9930 manakai-expanded: true;
9931 general-entity-reference {
9932 node-name: 'ent';
9933 manakai-expanded: true;
9934 text-content: '!';
9935 }
9936 }
9937 }
9938 }
9939 }
9940 @@XMLTest:
9941 @@@QName: xp.attval.reptxt.reptxt.hcr.2.test
9942 @@@DEnt:
9943 @@@@test:value:
9944 <!DOCTYPE e [
9945 <!ENTITY ent "aa&#38;#x21;bb">
9946 <!ENTITY ent2 "&ent;">
9947 ]>
9948 <e a="&ent2;"/>
9949 @@@test:domTree:
9950 document {
9951 document-type { }
9952 element {
9953 attribute {
9954 node-name: 'a';
9955 general-entity-reference {
9956 node-name: 'ent2';
9957 manakai-expanded: true;
9958 general-entity-reference {
9959 node-name: 'ent';
9960 manakai-expanded: true;
9961 text-content: 'aa!bb';
9962 }
9963 }
9964 }
9965 }
9966 }
9967
9968 @@XMLTest:
9969 @@@QName: xp.element.content.ncr.legal.char.1.0.1.test
9970 @@@DEnt:
9971 @@@@test:value:
9972 <?xml version="1.0"?>
9973 <e>&#0;</e>
9974 @@@c:erred: <[[xp|wf-legal-character]]> { (2, 4)..(2, 7); }
9975 @@XMLTest:
9976 @@@QName: xp.element.content.ncr.legal.char.1.1.1.test
9977 @@@DEnt:
9978 @@@@test:value:
9979 <?xml version="1.1"?>
9980 <e>&#0;</e>
9981 @@@c:erred: <[[xp|wf-legal-character]]> { (2, 4)..(2, 7); }
9982 @@XMLTest:
9983 @@@QName: xp.element.content.ncr.legal.char.1.0.2.test
9984 @@@DEnt:
9985 @@@@test:value:
9986 <?xml version="1.0"?>
9987 <e>&#1;</e>
9988 @@@c:erred: <[[xp|wf-legal-character]]> { (2, 4)..(2, 7); }
9989 @@XMLTest:
9990 @@@QName: xp.element.content.ncr.legal.char.1.1.2.test
9991 @@@DEnt:
9992 @@@@test:value:
9993 <?xml version="1.1"?>
9994 <e>&#1;</e>
9995 @@@test:domTree:
9996 document {
9997 xml-version: '1.1';
9998 element {
9999 text-content: U+0001;
10000 }
10001 }
10002 @@XMLTest:
10003 @@@QName: xp.element.content.hcr.legal.char.1.0.1.test
10004 @@@DEnt:
10005 @@@@test:value:
10006 <?xml version="1.0"?>
10007 <e>&#x0;</e>
10008 @@@c:erred: <[[xp|wf-legal-character]]> { (2, 4)..(2, 8); }
10009 @@XMLTest:
10010 @@@QName: xp.element.content.hcr.legal.char.1.1.1.test
10011 @@@DEnt:
10012 @@@@test:value:
10013 <?xml version="1.1"?>
10014 <e>&#x0;</e>
10015 @@@c:erred: <[[xp|wf-legal-character]]> { (2, 4)..(2, 8); }
10016 @@XMLTest:
10017 @@@QName: xp.element.content.hcr.legal.char.1.0.2.test
10018 @@@DEnt:
10019 @@@@test:value:
10020 <?xml version="1.0"?>
10021 <e>&#x1;</e>
10022 @@@c:erred: <[[xp|wf-legal-character]]> { (2, 4)..(2, 8); }
10023 @@XMLTest:
10024 @@@QName: xp.element.content.hcr.legal.char.1.1.2.test
10025 @@@DEnt:
10026 @@@@test:value:
10027 <?xml version="1.1"?>
10028 <e>&#x1;</e>
10029 @@@test:domTree:
10030 document {
10031 xml-version: '1.1';
10032 element {
10033 text-content: U+0001;
10034 }
10035 }
10036
10037 @@XMLTest:
10038 @@@QName: xp.element.content.ger.entity.declared.nodtd.1.test
10039 @@@DEnt:
10040 @@@@test:value:
10041 <p>&entity;</p>
10042 @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 4)..(1, 11); }
10043 @@XMLTest:
10044 @@@QName: xp.element.content.ger.entity.declared.nodtd.2.test
10045 @@@DEnt:
10046 @@@@test:value:
10047 <?xml version="1.0" standalone="yes"?>
10048 <p>&entity;</p>
10049 @@@c:erred: <[[xp|wf-entity-declared]]> { (2, 4)..(2, 11); }
10050 @@XMLTest:
10051 @@@QName: xp.element.content.ger.entity.declared.nodtd.3.test
10052 @@@DEnt:
10053 @@@@test:value:
10054 <?xml version="1.0" standalone="no"?>
10055 <p>&entity;</p>
10056 @@@c:erred: <[[xp|wf-entity-declared]]> { (2, 4)..(2, 11); }
10057 @@XMLTest:
10058 @@@QName: xp.element.content.ger.entity.declared.nodtd.-1.test
10059 @@@DEnt:
10060 @@@@test:value:
10061 <p>&lt;&gt;&amp;&quot;&apos;</p>
10062 @@@test:domTree:
10063 document {
10064 element {
10065 text-content: '<>&"' U+0027;
10066 }
10067 }
10068 @@XMLTest:
10069 @@@QName: xp.element.content.ger.entity.declared.nopref.1.test
10070 @@@DEnt:
10071 @@@@test:value:
10072 <!DOCTYPE p []>
10073 <p>&entity;</p>
10074 @@@c:erred: <[[xp|wf-entity-declared]]> { (2, 4)..(2, 11); }
10075 @@XMLTest:
10076 @@@QName: xp.element.content.ger.entity.declared.nopref.2.test
10077 @@@DEnt:
10078 @@@@test:value:
10079 <!DOCTYPE p [
10080 <!ENTITY other "aa">
10081 <!ENTITY % another "aa">
10082 ]>
10083 <p>&entity;</p>
10084 @@@c:erred: <[[xp|wf-entity-declared]]> { (5, 4)..(5, 11); }
10085 @@XMLTest:
10086 @@@QName: xp.element.content.ger.entity.declared.nopref.3.test
10087 @@@DEnt:
10088 @@@@test:value:
10089 <?xml version="1.0" standalone="yes"?>
10090 <!DOCTYPE p []>
10091 <p>&entity;</p>
10092 @@@c:erred: <[[xp|wf-entity-declared]]> { (3, 4)..(3, 11); }
10093 @@XMLTest:
10094 @@@QName: xp.element.content.ger.entity.declared.nopref.4.test
10095 @@@DEnt:
10096 @@@@test:value:
10097 <?xml version="1.0" standalone="no"?>
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.5.test
10103 @@@DEnt:
10104 @@@@test:value:
10105 <?xml version="1.0" standalone="yes"?>
10106 <!DOCTYPE p [
10107 <!ENTITY other "aa">
10108 <!ENTITY % another "aa">
10109 ]>
10110 <p>&entity;</p>
10111 @@@c:erred: <[[xp|wf-entity-declared]]> { (6, 4)..(6, 11); }
10112 @@XMLTest:
10113 @@@QName: xp.element.content.ger.entity.declared.nopref.6.test
10114 @@@DEnt:
10115 @@@@test:value:
10116 <?xml version="1.0" standalone="no"?>
10117 <!DOCTYPE p [
10118 <!ENTITY other "aa">
10119 <!ENTITY % another "aa">
10120 ]>
10121 <p>&entity;</p>
10122 @@@c:erred: <[[xp|wf-entity-declared]]> { (6, 4)..(6, 11); }
10123 @@XMLTest:
10124 @@@QName: xp.element.content.ger.entity.declared.nopref.-1.test
10125 @@@DEnt:
10126 @@@@test:value:
10127 <!DOCTYPE p [
10128 <!ENTITY entity "value">
10129 ]>
10130 <p>&entity;</p>
10131 @@@cfg:entity-replacement-tree: 1
10132 @@@test:domTree:
10133 document {
10134 document-type {
10135 general-entity {
10136 node-name: 'entity';
10137 text-content: 'value';
10138 }
10139 }
10140 element {
10141 general-entity-reference {
10142 node-name: 'entity';
10143 manakai-expanded: true;
10144 text-content: 'value';
10145 }
10146 }
10147 }
10148 @@XMLTest:
10149 @@@QName: xp.element.content.ger.entity.declared.nopref.-2.test
10150 @@@DEnt:
10151 @@@@test:value:
10152 <!DOCTYPE p [
10153 <!ENTITY entity "value">
10154 <!ENTITY another SYSTEM "another">
10155 ]>
10156 <p>&entity;</p>
10157 @@@cfg:entity-replacement-tree: 1
10158 @@@test:domTree:
10159 document {
10160 document-type {
10161 general-entity {
10162 node-name: 'entity';
10163 text-content: 'value';
10164 }
10165 general-entity {
10166 node-name: 'another';
10167 public-id: null;
10168 system-id: 'another';
10169 }
10170 }
10171 element {
10172 general-entity-reference {
10173 node-name: 'entity';
10174 manakai-expanded: true;
10175 text-content: 'value';
10176 }
10177 }
10178 }
10179 @@XMLTest:
10180 @@@QName: xp.element.content.ger.entity.declared.standalone.1.test
10181 @@@DEnt:
10182 @@@@test:value:
10183 <?xml version="1.0" standalone="yes"?>
10184 <p>&entity;</p>
10185 @@@c:erred: <[[xp|wf-entity-declared]]> { (2, 4)..(2, 11); }
10186 @@XMLTest:
10187 @@@QName: xp.element.content.ger.entity.declared.standalone.2.test
10188 @@@DEnt:
10189 @@@@test:value:
10190 <?xml version="1.0" standalone="yes"?>
10191 <!DOCTYPE p []>
10192 <p>&entity;</p>
10193 @@@c:erred: <[[xp|wf-entity-declared]]> { (3, 4)..(3, 11); }
10194 @@XMLTest:
10195 @@@QName: xp.element.content.ger.entity.declared.standalone.3.test
10196 @@@DEnt:
10197 @@@@test:value:
10198 <?xml version="1.0" standalone="yes"?>
10199 <!DOCTYPE p [
10200 <!ENTITY % para "<!-- -->">
10201 %para;
10202 ]>
10203 <p>&entity;</p>
10204 @@@c:erred: <[[xp|wf-entity-declared]]> { (6, 4)..(6, 11); }
10205 @@XMLTest:
10206 @@@QName: xp.element.content.ger.entity.declared.standalone.-1.test
10207 @@@DEnt:
10208 @@@@test:value:
10209 <?xml version="1.0" standalone="no"?>
10210 <!DOCTYPE p [
10211 <!ENTITY % para "<!-- -->">
10212 %para;
10213 ]>
10214 <p>&entity;</p>
10215 @@@test:domTree:
10216 document {
10217 document-type { }
10218 element {
10219 general-entity-reference {
10220 manakai-expanded: false;
10221 }
10222 }
10223 }
10224 @@XMLTest:
10225 @@@QName: xp.element.content.ger.entity.declared.standalone.-2.test
10226 @@@DEnt:
10227 @@@@test:value:
10228 <!DOCTYPE p [
10229 <!ENTITY % para "<!-- -->">
10230 %para;
10231 ]>
10232 <p>&entity;</p>
10233 @@@test:domTree:
10234 document {
10235 document-type { }
10236 element {
10237 general-entity-reference {
10238 manakai-expanded: false;
10239 }
10240 }
10241 }
10242 @@XMLTest:
10243 @@@QName: xp.element.content.ger.entity.declared.standalone.4.test
10244 @@@DEnt:
10245 @@@@test:value:
10246 <?xml version="1.0" standalone="yes"?>
10247 <!DOCTYPE p [
10248 <!ENTITY % para SYSTEM "para">
10249 %para;
10250 ]>
10251 <p>&entity;</p>
10252 @@@c:erred: <[[xp|wf-entity-declared]]> { (6, 4)..(6, 11); }
10253 @@XMLTest:
10254 @@@QName: xp.element.content.ger.entity.declared.standalone.-3.test
10255 @@@DEnt:
10256 @@@@test:value:
10257 <?xml version="1.0" standalone="no"?>
10258 <!DOCTYPE p [
10259 <!ENTITY % para SYSTEM "para">
10260 %para;
10261 ]>
10262 <p>&entity;</p>
10263 @@@test:domTree:
10264 document {
10265 document-type { }
10266 element {
10267 general-entity-reference {
10268 manakai-expanded: false;
10269 }
10270 }
10271 }
10272 @@XMLTest:
10273 @@@QName: xp.element.content.ger.entity.declared.standalone.-4.test
10274 @@@DEnt:
10275 @@@@test:value:
10276 <!DOCTYPE p [
10277 <!ENTITY % para SYSTEM "para">
10278 %para;
10279 ]>
10280 <p>&entity;</p>
10281 @@@test:domTree:
10282 document {
10283 document-type { }
10284 element {
10285 general-entity-reference {
10286 manakai-expanded: false;
10287 }
10288 }
10289 }
10290 @@XMLTest:
10291 @@@QName: xp.element.content.ger.entity.declared.standalone.5.test
10292 @@@DEnt:
10293 @@@@test:value:
10294 <?xml version="1.0" standalone="yes"?>
10295 <!DOCTYPE p SYSTEM "dtd">
10296 <p>&entity;</p>
10297 @@@c:erred: <[[xp|wf-entity-declared]]> { (3, 4)..(3, 11); }
10298 @@XMLTest:
10299 @@@QName: xp.element.content.ger.entity.declared.standalone.-5.test
10300 @@@DEnt:
10301 @@@@test:value:
10302 <?xml version="1.0" standalone="no"?>
10303 <!DOCTYPE p SYSTEM "dtd">
10304 <p>&entity;</p>
10305 @@@test:domTree:
10306 document {
10307 document-type { }
10308 element {
10309 general-entity-reference {
10310 manakai-expanded: false;
10311 }
10312 }
10313 }
10314 @@XMLTest:
10315 @@@QName: xp.element.content.ger.entity.declared.standalone.-6.test
10316 @@@DEnt:
10317 @@@@test:value:
10318 <!DOCTYPE p SYSTEM "dtd">
10319 <p>&entity;</p>
10320 @@@test:domTree:
10321 document {
10322 document-type { }
10323 element {
10324 general-entity-reference {
10325 manakai-expanded: false;
10326 }
10327 }
10328 }
10329
10330 @@XMLTest:
10331 @@@QName: xp.reptxt.element.content.ger.entity.declared.nopref.1.test
10332 @@@DEnt:
10333 @@@@test:value:
10334 <!DOCTYPE p [
10335 <!ENTITY c "&entity;">
10336 ]>
10337 <p>&c;</p>
10338 @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
10339 @@XMLTest:
10340 @@@QName: xp.reptxt.element.content.ger.entity.declared.nopref.2.test
10341 @@@DEnt:
10342 @@@@test:value:
10343 <!DOCTYPE p [
10344 <!ENTITY other "aa">
10345 <!ENTITY % another "aa">
10346 <!ENTITY c "&entity;">
10347 ]>
10348 <p>&c;</p>
10349 @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
10350 @@XMLTest:
10351 @@@QName: xp.reptxt.element.content.ger.entity.declared.nopref.3.test
10352 @@@DEnt:
10353 @@@@test:value:
10354 <?xml version="1.0" standalone="yes"?>
10355 <!DOCTYPE p [
10356 <!ENTITY c "&entity;">
10357 ]>
10358 <p>&c;</p>
10359 @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
10360 @@XMLTest:
10361 @@@QName: xp.reptxt.element.content.ger.entity.declared.nopref.4.test
10362 @@@DEnt:
10363 @@@@test:value:
10364 <?xml version="1.0" standalone="no"?>
10365 <!DOCTYPE p [
10366 <!ENTITY c "&entity;">
10367 ]>
10368 <p>&c;</p>
10369 @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
10370 @@XMLTest:
10371 @@@QName: xp.reptxt.element.content.ger.entity.declared.nopref.5.test
10372 @@@DEnt:
10373 @@@@test:value:
10374 <?xml version="1.0" standalone="yes"?>
10375 <!DOCTYPE p [
10376 <!ENTITY other "aa">
10377 <!ENTITY % another "aa">
10378 <!ENTITY c "&entity;">
10379 ]>
10380 <p>&c;</p>
10381 @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
10382 @@XMLTest:
10383 @@@QName: xp.reptxt.element.content.ger.entity.declared.nopref.6.test
10384 @@@DEnt:
10385 @@@@test:value:
10386 <?xml version="1.0" standalone="no"?>
10387 <!DOCTYPE p [
10388 <!ENTITY other "aa">
10389 <!ENTITY % another "aa">
10390 <!ENTITY c "&entity;">
10391 ]>
10392 <p>&c;</p>
10393 @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
10394 @@XMLTest:
10395 @@@QName: xp.reptxt.element.content.ger.entity.declared.nopref.-1.test
10396 @@@DEnt:
10397 @@@@test:value:
10398 <!DOCTYPE p [
10399 <!ENTITY entity "value">
10400 <!ENTITY c "&entity;">
10401 ]>
10402 <p>&c;</p>
10403 @@@cfg:entity-replacement-tree: 1
10404 @@@test:domTree:
10405 document {
10406 document-type {
10407 general-entity {
10408 node-name: 'entity';
10409 text-content: 'value';
10410 }
10411 general-entity {
10412 node-name: 'c';
10413 general-entity-reference {
10414 node-name: 'entity';
10415 text-content: 'value';
10416 }
10417 }
10418 }
10419 element {
10420 general-entity-reference {
10421 node-name: 'c';
10422 general-entity-reference {
10423 node-name: 'entity';
10424 text-content: 'value';
10425 }
10426 }
10427 }
10428 }
10429 @@XMLTest:
10430 @@@QName: xp.reptxt.element.content.ger.entity.declared.nopref.-2.test
10431 @@@DEnt:
10432 @@@@test:value:
10433 <!DOCTYPE p [
10434 <!ENTITY entity "value">
10435 <!ENTITY another SYSTEM "another">
10436 <!ENTITY c "&entity;">
10437 ]>
10438 <p>&c;</p>
10439 @@@cfg:entity-replacement-tree: 1
10440 @@@test:domTree:
10441 document {
10442 document-type {
10443 general-entity {
10444 node-name: 'entity';
10445 text-content: 'value';
10446 }
10447 general-entity {
10448 node-name: 'c';
10449 general-entity-reference {
10450 node-name: 'entity';
10451 manakai-expanded: true;
10452 text-content: 'value';
10453 }
10454 }
10455 general-entity {
10456 node-name: 'another';
10457 public-id: null;
10458 system-id: 'another';
10459 has-replacement-tree: false;
10460 }
10461 }
10462 element {
10463 general-entity-reference {
10464 node-name: 'c';
10465 manakai-expanded: true;
10466 general-entity-reference {
10467 node-name: 'entity';
10468 manakai-expanded: true;
10469 text-content: 'value';
10470 }
10471 }
10472 }
10473 }
10474 @@XMLTest:
10475 @@@QName: xp.reptxt.element.content.ger.entity.declared.standalone.2.test
10476 @@@DEnt:
10477 @@@@test:value:
10478 <?xml version="1.0" standalone="yes"?>
10479 <!DOCTYPE p [
10480 <!ENTITY c "&entity;">
10481 ]>
10482 <p>&c;</p>
10483 @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
10484 @@XMLTest:
10485 @@@QName: xp.reptxt.element.content.ger.entity.declared.standalone.3.test
10486 @@@DEnt:
10487 @@@@test:value:
10488 <?xml version="1.0" standalone="yes"?>
10489 <!DOCTYPE p [
10490 <!ENTITY % para "<!-- -->">
10491 %para;
10492 <!ENTITY c "&entity;">
10493 ]>
10494 <p>&c;</p>
10495 @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
10496 @@XMLTest:
10497 @@@QName: xp.reptxt.element.content.ger.entity.declared.standalone.-1.test
10498 @@@DEnt:
10499 @@@@test:value:
10500 <?xml version="1.0" standalone="no"?>
10501 <!DOCTYPE p [
10502 <!ENTITY c "&entity;">
10503 <!ENTITY % para "<!-- -->">
10504 %para;
10505 ]>
10506 <p>&c;</p>
10507 @@@cfg:entity-replacement-tree: 1
10508 @@@test:domTree:
10509 document {
10510 document-type {
10511 general-entity {
10512 node-name: 'c';
10513 general-entity-reference {
10514 node-name: 'entity';
10515 manakai-expanded: false;
10516 }
10517 }
10518 }
10519 element {
10520 general-entity-reference {
10521 node-name: 'c';
10522 general-entity-reference {
10523 node-name: 'entity';
10524 manakai-expanded: false;
10525 }
10526 }
10527 }
10528 }
10529 @@XMLTest:
10530 @@@QName:
10531 xp.reptxt.element.content.ger.entity.declared.standalone.-1.2.test
10532 @@@DEnt:
10533 @@@@test:value:
10534 <?xml version="1.0" standalone="no"?>
10535 <!DOCTYPE p [
10536 <!ENTITY % para "<!-- -->">
10537 %para;
10538 <!ENTITY c "&entity;">
10539 ]>
10540 <p>&c;</p>
10541 @@@test:domTree:
10542 document {
10543 document-type { }
10544 element {
10545 general-entity-reference {
10546 node-name: 'c';
10547 manakai-expanded: false;
10548 }
10549 }
10550 }
10551 @@XMLTest:
10552 @@@QName: xp.reptxt.element.content.ger.entity.declared.standalone.-2.test
10553 @@@DEnt:
10554 @@@@test:value:
10555 <!DOCTYPE p [
10556 <!ENTITY c "&entity;">
10557 <!ENTITY % para "<!-- -->">
10558 %para;
10559 ]>
10560 <p>&c;</p>
10561 @@@test:domTree:
10562 document {
10563 document-type { }
10564 element {
10565 general-entity-reference {
10566 node-name: 'c';
10567 manakai-expanded: true;
10568 general-entity-reference {
10569 node-name: 'entity';
10570 manakai-expanded: false;
10571 }
10572 }
10573 }
10574 }
10575 @@XMLTest:
10576 @@@QName:
10577 xp.reptxt.element.content.ger.entity.declared.standalone.-2.2.test
10578 @@@DEnt:
10579 @@@@test:value:
10580 <!DOCTYPE p [
10581 <!ENTITY % para "<!-- -->">
10582 %para;
10583 <!ENTITY c "&entity;">
10584 ]>
10585 <p>&c;</p>
10586 @@@test:domTree:
10587 document {
10588 document-type { }
10589 element {
10590 general-entity-reference {
10591 node-name: 'c';
10592 manakai-expanded: false;
10593 }
10594 }
10595 }
10596 @@XMLTest:
10597 @@@QName: xp.reptxt.element.content.ger.entity.declared.standalone.4.test
10598 @@@DEnt:
10599 @@@@test:value:
10600 <?xml version="1.0" standalone="yes"?>
10601 <!DOCTYPE p [
10602 <!ENTITY % para SYSTEM "para">
10603 %para;
10604 <!ENTITY c "&entity;">
10605 ]>
10606 <p>&c;</p>
10607 @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
10608 @@XMLTest:
10609 @@@QName: xp.reptxt.element.content.ger.entity.declared.standalone.-3.test
10610 @@@DEnt:
10611 @@@@test:value:
10612 <?xml version="1.0" standalone="no"?>
10613 <!DOCTYPE p [
10614 <!ENTITY c "&entity;">
10615 <!ENTITY % para SYSTEM "para">
10616 %para;
10617 ]>
10618 <p>&c;</p>
10619 @@@test:domTree:
10620 document {
10621 document-type { }
10622 element {
10623 general-entity-reference {
10624 node-name: 'c';
10625 manakai-expanded: true;
10626 general-entity-reference {
10627 node-name: 'entity';
10628 manakai-expanded: false;
10629 }
10630 }
10631 }
10632 }
10633 @@XMLTest:
10634 @@@QName:
10635 xp.reptxt.element.content.ger.entity.declared.standalone.-3.2.test
10636 @@@DEnt:
10637 @@@@test:value:
10638 <?xml version="1.0" standalone="no"?>
10639 <!DOCTYPE p [
10640 <!ENTITY % para SYSTEM "para">
10641 %para;
10642 <!ENTITY c "&entity;">
10643 ]>
10644 <p>&c;</p>
10645 @@@test:domTree:
10646 document {
10647 document-type { }
10648 element {
10649 general-entity-reference {
10650 node-name: 'c';
10651 manakai-expanded: false;
10652 }
10653 }
10654 }
10655 @@XMLTest:
10656 @@@QName: xp.reptxt.element.content.ger.entity.declared.standalone.-4.test
10657 @@@DEnt:
10658 @@@@test:value:
10659 <!DOCTYPE p [
10660 <!ENTITY c "&entity;">
10661 <!ENTITY % para SYSTEM "para">
10662 %para;
10663 ]>
10664 <p>&c;</p>
10665 @@@test:domTree:
10666 document {
10667 document-type { }
10668 element {
10669 general-entity-reference {
10670 node-name: 'c';
10671 manakai-expanded: true;
10672 general-entity-reference {
10673 node-name: 'entity';
10674 manakai-expanded: false;
10675 }
10676 }
10677 }
10678 }
10679 @@XMLTest:
10680 @@@QName:
10681 xp.reptxt.element.content.ger.entity.declared.standalone.-4.2.test
10682 @@@DEnt:
10683 @@@@test:value:
10684 <!DOCTYPE p [
10685 <!ENTITY % para SYSTEM "para">
10686 %para;
10687 <!ENTITY c "&entity;">
10688 ]>
10689 <p>&c;</p>
10690 @@@test:domTree:
10691 document {
10692 document-type { }
10693 element {
10694 general-entity-reference {
10695 node-name: 'c';
10696 manakai-expanded: false;
10697 }
10698 }
10699 }
10700 @@XMLTest:
10701 @@@QName: xp.reptxt.element.content.ger.entity.declared.standalone.5.test
10702 @@@DEnt:
10703 @@@@test:value:
10704 <?xml version="1.0" standalone="yes"?>
10705 <!DOCTYPE p SYSTEM "dtd" [
10706 <!ENTITY c "&entity;">
10707 ]>
10708 <p>&c;</p>
10709 @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
10710 @@XMLTest:
10711 @@@QName: xp.reptxt.element.content.ger.entity.declared.standalone.-5.test
10712 @@@DEnt:
10713 @@@@test:value:
10714 <?xml version="1.0" standalone="no"?>
10715 <!DOCTYPE p SYSTEM "dtd" [
10716 <!ENTITY c "&entity;">
10717 ]>
10718 <p>&c;</p>
10719 @@@test:domTree:
10720 document {
10721 document-type { }
10722 element {
10723 general-entity-reference {
10724 node-name: 'c';
10725 manakai-expanded: true;
10726 general-entity-reference {
10727 node-name: 'entity';
10728 manakai-expanded: false;
10729 }
10730 }
10731 }
10732 }
10733 @@XMLTest:
10734 @@@QName: xp.reptxt.element.content.ger.entity.declared.standalone.-6.test
10735 @@@DEnt:
10736 @@@@test:value:
10737 <!DOCTYPE p SYSTEM "dtd" [<!ENTITY c "&entity;">]>
10738 <p>&c;</p>
10739 @@@test:domTree:
10740 document {
10741 document-type { }
10742 element {
10743 general-entity-reference {
10744 node-name: 'c';
10745 manakai-expanded: true;
10746 general-entity-reference {
10747 node-name: 'entity';
10748 manakai-expanded: false;
10749 }
10750 }
10751 }
10752 }
10753
10754 @@XMLTest:
10755 @@@QName: xp.attval.ger.entity.declared.nodtd.1.test
10756 @@@DEnt:
10757 @@@@test:value:
10758 <p a="&entity;"/>
10759 @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 7)..(1, 14); }
10760 @@XMLTest:
10761 @@@QName: xp.attval.ger.entity.declared.nodtd.2.test
10762 @@@DEnt:
10763 @@@@test:value:
10764 <?xml version="1.0" standalone="yes"?>
10765 <p a="&entity;"/>
10766 @@@c:erred: <[[xp|wf-entity-declared]]> { (2, 7)..(2, 14); }
10767 @@XMLTest:
10768 @@@QName: xp.attval.ger.entity.declared.nodtd.3.test
10769 @@@DEnt:
10770 @@@@test:value:
10771 <?xml version="1.0" standalone="no"?>
10772 <p a="&entity;"/>
10773 @@@c:erred: <[[xp|wf-entity-declared]]> { (2, 7)..(2, 14); }
10774 @@XMLTest:
10775 @@@QName: xp.attval.ger.entity.declared.nodtd.-1.test
10776 @@@DEnt:
10777 @@@@test:value:
10778 <p a="&lt;&gt;&amp;&quot;&apos;"/>
10779 @@@test:domTree:
10780 document {
10781 element {
10782 attribute {
10783 node-name: 'a';
10784 text-content: '<>&"' U+0027;
10785 }
10786 }
10787 }
10788 @@XMLTest:
10789 @@@QName: xp.attval.ger.entity.declared.nopref.1.test
10790 @@@DEnt:
10791 @@@@test:value:
10792 <!DOCTYPE p []>
10793 <p a="&entity;"/>
10794 @@@c:erred: <[[xp|wf-entity-declared]]> { (2, 7)..(2, 14); }
10795 @@XMLTest:
10796 @@@QName: xp.attval.ger.entity.declared.nopref.2.test
10797 @@@DEnt:
10798 @@@@test:value:
10799 <!DOCTYPE p [
10800 <!ENTITY other "aa">
10801 <!ENTITY % another "aa">
10802 ]>
10803 <p a="&entity;"/>
10804 @@@c:erred: <[[xp|wf-entity-declared]]> { (5, 7)..(5, 14); }
10805 @@XMLTest:
10806 @@@QName: xp.attval.ger.entity.declared.nopref.3.test
10807 @@@DEnt:
10808 @@@@test:value:
10809 <?xml version="1.0" standalone="yes"?>
10810 <!DOCTYPE p []>
10811 <p a="&entity;"/>
10812 @@@c:erred: <[[xp|wf-entity-declared]]> { (3, 7)..(3, 14); }
10813 @@XMLTest:
10814 @@@QName: xp.attval.ger.entity.declared.nopref.4.test
10815 @@@DEnt:
10816 @@@@test:value:
10817 <?xml version="1.0" standalone="no"?>
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.5.test
10823 @@@DEnt:
10824 @@@@test:value:
10825 <?xml version="1.0" standalone="yes"?>
10826 <!DOCTYPE p [
10827 <!ENTITY other "aa">
10828 <!ENTITY % another "aa">
10829 ]>
10830 <p a="&entity;"/>
10831 @@@c:erred: <[[xp|wf-entity-declared]]> { (6, 7)..(6, 14); }
10832 @@XMLTest:
10833 @@@QName: xp.attval.ger.entity.declared.nopref.6.test
10834 @@@DEnt:
10835 @@@@test:value:
10836 <?xml version="1.0" standalone="no"?>
10837 <!DOCTYPE p [
10838 <!ENTITY other "aa">
10839 <!ENTITY % another "aa">
10840 ]>
10841 <p a="&entity;"/>
10842 @@@c:erred: <[[xp|wf-entity-declared]]> { (6, 7)..(6, 14); }
10843 @@XMLTest:
10844 @@@QName: xp.attval.ger.entity.declared.nopref.-1.test
10845 @@@DEnt:
10846 @@@@test:value:
10847 <!DOCTYPE p [
10848 <!ENTITY entity "value">
10849 ]>
10850 <p a="&entity;"/>
10851 @@@cfg:entity-replacement-tree: 1
10852 @@@test:domTree:
10853 document {
10854 document-type {
10855 general-entity {
10856 node-name: 'entity';
10857 text-content: 'value';
10858 }
10859 }
10860 element {
10861 attribute {
10862 node-name: 'a';
10863 general-entity-reference {
10864 node-name: 'entity';
10865 manakai-expanded: true;
10866 text-content: 'value';
10867 }
10868 }
10869 }
10870 }
10871 @@XMLTest:
10872 @@@QName: xp.attval.ger.entity.declared.nopref.-2.test
10873 @@@DEnt:
10874 @@@@test:value:
10875 <!DOCTYPE p [
10876 <!ENTITY entity "value">
10877 <!ENTITY another SYSTEM "another">
10878 ]>
10879 <p a="&entity;"/>
10880 @@@cfg:entity-replacement-tree: 1
10881 @@@test:domTree:
10882 document {
10883 document-type {
10884 general-entity {
10885 node-name: 'entity';
10886 text-content: 'value';
10887 has-replacement-tree: true;
10888 }
10889 general-entity {
10890 node-name: 'another';
10891 public-id: null;
10892 system-id: 'another';
10893 has-replacement-tree: false;
10894 }
10895 }
10896 element {
10897 attribute {
10898 node-name: 'a';
10899 general-entity-reference {
10900 node-name: 'entity';
10901 manakai-expanded: true;
10902 text-content: 'value';
10903 }
10904 }
10905 }
10906 }
10907 @@XMLTest:
10908 @@@QName: xp.attval.ger.entity.declared.standalone.1.test
10909 @@@DEnt:
10910 @@@@test:value:
10911 <?xml version="1.0" standalone="yes"?>
10912 <p a="&entity;"/>
10913 @@@c:erred: <[[xp|wf-entity-declared]]> { (2, 7)..(2, 14); }
10914 @@XMLTest:
10915 @@@QName: xp.attval.ger.entity.declared.standalone.2.test
10916 @@@DEnt:
10917 @@@@test:value:
10918 <?xml version="1.0" standalone="yes"?>
10919 <!DOCTYPE p []>
10920 <p a="&entity;"/>
10921 @@@c:erred: <[[xp|wf-entity-declared]]> { (3, 7)..(3, 14); }
10922 @@XMLTest:
10923 @@@QName: xp.attval.ger.entity.declared.standalone.3.test
10924 @@@DEnt:
10925 @@@@test:value:
10926 <?xml version="1.0" standalone="yes"?>
10927 <!DOCTYPE p [
10928 <!ENTITY % para "<!-- -->">
10929 %para;
10930 ]>
10931 <p a="&entity;"/>
10932 @@@c:erred: <[[xp|wf-entity-declared]]> { (6, 7)..(6, 14); }
10933 @@XMLTest:
10934 @@@QName: xp.attval.ger.entity.declared.standalone.-1.test
10935 @@@DEnt:
10936 @@@@test:value:
10937 <?xml version="1.0" standalone="no"?>
10938 <!DOCTYPE p [
10939 <!ENTITY % para "<!-- -->">
10940 %para;
10941 ]>
10942 <p a="&entity;"/>
10943 @@@test:domTree:
10944 document {
10945 document-type { }
10946 element {
10947 attribute {
10948 node-name: 'a';
10949 general-entity-reference {
10950 manakai-expanded: false;
10951 }
10952 }
10953 }
10954 }
10955 @@XMLTest:
10956 @@@QName: xp.attval.ger.entity.declared.standalone.-2.test
10957 @@@DEnt:
10958 @@@@test:value:
10959 <!DOCTYPE p [
10960 <!ENTITY % para "<!-- -->">
10961 %para;
10962 ]>
10963 <p a="&entity;"/>
10964 @@@test:domTree:
10965 document {
10966 document-type { }
10967 element {
10968 attribute {
10969 node-name: 'a';
10970 general-entity-reference {
10971 manakai-expanded: false;
10972 }
10973 }
10974 }
10975 }
10976 @@XMLTest:
10977 @@@QName: xp.attval.ger.entity.declared.standalone.4.test
10978 @@@DEnt:
10979 @@@@test:value:
10980 <?xml version="1.0" standalone="yes"?>
10981 <!DOCTYPE p [
10982 <!ENTITY % para SYSTEM "para">
10983 %para;
10984 ]>
10985 <p a="&entity;"/>
10986 @@@c:erred: <[[xp|wf-entity-declared]]> { (6, 7)..(6, 14); }
10987 @@XMLTest:
10988 @@@QName: xp.attval.ger.entity.declared.standalone.-3.test
10989 @@@DEnt:
10990 @@@@test:value:
10991 <?xml version="1.0" standalone="no"?>
10992 <!DOCTYPE p [
10993 <!ENTITY % para SYSTEM "para">
10994 %para;
10995 ]>
10996 <p a="&entity;"/>
10997 @@@test:domTree:
10998 document {
10999 document-type { }
11000 element {
11001 attribute {
11002 node-name: 'a';
11003 general-entity-reference {
11004 manakai-expanded: false;
11005 }
11006 }
11007 }
11008 }
11009 @@XMLTest:
11010 @@@QName: xp.attval.ger.entity.declared.standalone.-4.test
11011 @@@DEnt:
11012 @@@@test:value:
11013 <!DOCTYPE p [
11014 <!ENTITY % para SYSTEM "para">
11015 %para;
11016 ]>
11017 <p a="&entity;"/>
11018 @@@test:domTree:
11019 document {
11020 document-type { }
11021 element {
11022 attribute {
11023 node-name: 'a';
11024 general-entity-reference {
11025 manakai-expanded: false;
11026 }
11027 }
11028 }
11029 }
11030 @@XMLTest:
11031 @@@QName: xp.attval.ger.entity.declared.standalone.5.test
11032 @@@DEnt:
11033 @@@@test:value:
11034 <?xml version="1.0" standalone="yes"?>
11035 <!DOCTYPE p SYSTEM "dtd">
11036 <p a="&entity;"/>
11037 @@@c:erred: <[[xp|wf-entity-declared]]> { (3, 7)..(3, 14); }
11038 @@XMLTest:
11039 @@@QName: xp.attval.ger.entity.declared.standalone.-5.test
11040 @@@DEnt:
11041 @@@@test:value:
11042 <?xml version="1.0" standalone="no"?>
11043 <!DOCTYPE p SYSTEM "dtd">
11044 <p a="&entity;"/>
11045 @@@test:domTree:
11046 document {
11047 document-type { }
11048 element {
11049 attribute {
11050 node-name: 'a';
11051 general-entity-reference {
11052 manakai-expanded: false;
11053 }
11054 }
11055 }
11056 }
11057 @@XMLTest:
11058 @@@QName: xp.attval.ger.entity.declared.standalone.-6.test
11059 @@@DEnt:
11060 @@@@test:value:
11061 <!DOCTYPE p SYSTEM "dtd">
11062 <p a="&entity;"/>
11063 @@@test:domTree:
11064 document {
11065 document-type { }
11066 element {
11067 attribute {
11068 node-name: 'a';
11069 general-entity-reference {
11070 manakai-expanded: false;
11071 }
11072 }
11073 }
11074 }
11075
11076 @@XMLTest:
11077 @@@QName: xp.reptxt.attval.ger.entity.declared.nopref.1.test
11078 @@@DEnt:
11079 @@@@test:value:
11080 <!DOCTYPE p [
11081 <!ENTITY c "&entity;">
11082 ]>
11083 <p a="&c;"/>
11084 @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
11085 @@XMLTest:
11086 @@@QName: xp.reptxt.attval.ger.entity.declared.nopref.2.test
11087 @@@DEnt:
11088 @@@@test:value:
11089 <!DOCTYPE p [
11090 <!ENTITY other "aa">
11091 <!ENTITY % another "aa">
11092 <!ENTITY c "&entity;">
11093 ]>
11094 <p a="&c;"/>
11095 @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
11096 @@XMLTest:
11097 @@@QName: xp.reptxt.attval.ger.entity.declared.nopref.3.test
11098 @@@DEnt:
11099 @@@@test:value:
11100 <?xml version="1.0" standalone="yes"?>
11101 <!DOCTYPE p [
11102 <!ENTITY c "&entity;">
11103 ]>
11104 <p a="&c;"/>
11105 @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
11106 @@XMLTest:
11107 @@@QName: xp.reptxt.attval.ger.entity.declared.nopref.4.test
11108 @@@DEnt:
11109 @@@@test:value:
11110 <?xml version="1.0" standalone="no"?>
11111 <!DOCTYPE p [
11112 <!ENTITY c "&entity;">
11113 ]>
11114 <p a="&c;"/>
11115 @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
11116 @@XMLTest:
11117 @@@QName: xp.reptxt.attval.ger.entity.declared.nopref.5.test
11118 @@@DEnt:
11119 @@@@test:value:
11120 <?xml version="1.0" standalone="yes"?>
11121 <!DOCTYPE p [
11122 <!ENTITY other "aa">
11123 <!ENTITY % another "aa">
11124 <!ENTITY c "&entity;">
11125 ]>
11126 <p a="&c;"/>
11127 @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
11128 @@XMLTest:
11129 @@@QName: xp.reptxt.attval.ger.entity.declared.nopref.6.test
11130 @@@DEnt:
11131 @@@@test:value:
11132 <?xml version="1.0" standalone="no"?>
11133 <!DOCTYPE p [
11134 <!ENTITY other "aa">
11135 <!ENTITY % another "aa">
11136 <!ENTITY c "&entity;">
11137 ]>
11138 <p a="&c;"/>
11139 @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
11140 @@XMLTest:
11141 @@@QName: xp.reptxt.attval.ger.entity.declared.nopref.-1.test
11142 @@@DEnt:
11143 @@@@test:value:
11144 <!DOCTYPE p [
11145 <!ENTITY entity "value">
11146 <!ENTITY c "&entity;">
11147 ]>
11148 <p a="&c;"/>
11149 @@@cfg:entity-replacement-tree: 1
11150 @@@test:domTree:
11151 document {
11152 document-type {
11153 general-entity {
11154 node-name: 'entity';
11155 text-content: 'value';
11156 }
11157 general-entity {
11158 node-name: 'c';
11159 general-entity-reference {
11160 node-name: 'entity';
11161 text-content: 'value';
11162 }
11163 }
11164 }
11165 element {
11166 attribute {
11167 node-name: 'a';
11168 general-entity-reference {
11169 node-name: 'c';
11170 general-entity-reference {
11171 node-name: 'entity';
11172 text-content: 'value';
11173 }
11174 }
11175 }
11176 }
11177 }
11178 @@XMLTest:
11179 @@@QName: xp.reptxt.attval.ger.entity.declared.nopref.-2.test
11180 @@@DEnt:
11181 @@@@test:value:
11182 <!DOCTYPE p [
11183 <!ENTITY entity "value">
11184 <!ENTITY another SYSTEM "another">
11185 <!ENTITY c "&entity;">
11186 ]>
11187 <p a="&c;"/>
11188 @@@cfg:entity-replacement-tree: 1
11189 @@@test:domTree:
11190 document {
11191 document-type {
11192 general-entity {
11193 node-name: 'entity';
11194 text-content: 'value';
11195 }
11196 general-entity {
11197 node-name: 'c';
11198 general-entity-reference {
11199 node-name: 'entity';
11200 text-content: 'value';
11201 }
11202 }
11203 general-entity {
11204 node-name: 'another';
11205 public-id: null;
11206 system-id: 'another';
11207 has-replacement-tree: false;
11208 }
11209 }
11210 element {
11211 attribute {
11212 node-name: 'a';
11213 general-entity-reference {
11214 node-name: 'c';
11215 general-entity-reference {
11216 node-name: 'entity';
11217 text-content: 'value';
11218 }
11219 }
11220 }
11221 }
11222 }
11223 @@XMLTest:
11224 @@@QName: xp.reptxt.attval.ger.entity.declared.standalone.2.test
11225 @@@DEnt:
11226 @@@@test:value:
11227 <?xml version="1.0" standalone="yes"?>
11228 <!DOCTYPE p [
11229 <!ENTITY c "&entity;">
11230 ]>
11231 <p a="&c;"/>
11232 @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
11233 @@XMLTest:
11234 @@@QName: xp.reptxt.attval.ger.entity.declared.standalone.3.test
11235 @@@DEnt:
11236 @@@@test:value:
11237 <?xml version="1.0" standalone="yes"?>
11238 <!DOCTYPE p [
11239 <!ENTITY % para "<!-- -->">
11240 %para;
11241 <!ENTITY c "&entity;">
11242 ]>
11243 <p a="&c;"/>
11244 @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
11245 @@XMLTest:
11246 @@@QName: xp.reptxt.attval.ger.entity.declared.standalone.-1.test
11247 @@@DEnt:
11248 @@@@test:value:
11249 <?xml version="1.0" standalone="no"?>
11250 <!DOCTYPE p [
11251 <!ENTITY c "&entity;">
11252 <!ENTITY % para "<!-- -->">
11253 %para;
11254 ]>
11255 <p a="&c;"/>
11256 @@@cfg:entity-replacement-tree: 1
11257 @@@test:domTree:
11258 document {
11259 document-type {
11260 general-entity {
11261 node-name: 'c';
11262 general-entity-reference {
11263 node-name: 'entity';
11264 manakai-expanded: false;
11265 }
11266 }
11267 }
11268 element {
11269 attribute {
11270 node-name: 'a';
11271 general-entity-reference {
11272 node-name: 'c';
11273 general-entity-reference {
11274 node-name: 'entity';
11275 manakai-expanded: false;
11276 }
11277 }
11278 }
11279 }
11280 }
11281 @@XMLTest:
11282 @@@QName:
11283 xp.reptxt.attval.ger.entity.declared.standalone.-1.2.test
11284 @@@DEnt:
11285 @@@@test:value:
11286 <?xml version="1.0" standalone="no"?>
11287 <!DOCTYPE p [
11288 <!ENTITY % para "<!-- -->">
11289 %para;
11290 <!ENTITY c "&entity;">
11291 ]>
11292 <p a="&c;"/>
11293 @@@test:domTree:
11294 document {
11295 document-type { }
11296 element {
11297 attribute {
11298 node-name: 'a';
11299 general-entity-reference {
11300 node-name: 'c';
11301 manakai-expanded: false;
11302 }
11303 }
11304 }
11305 }
11306 @@XMLTest:
11307 @@@QName: xp.reptxt.attval.ger.entity.declared.standalone.-2.test
11308 @@@DEnt:
11309 @@@@test:value:
11310 <!DOCTYPE p [
11311 <!ENTITY c "&entity;">
11312 <!ENTITY % para "<!-- -->">
11313 %para;
11314 ]>
11315 <p a="&c;"/>
11316 @@@test:domTree:
11317 document {
11318 document-type { }
11319 element {
11320 attribute {
11321 node-name: 'a';
11322 general-entity-reference {
11323 node-name: 'c';
11324 manakai-expanded: true;
11325 general-entity-reference {
11326 node-name: 'entity';
11327 manakai-expanded: false;
11328 }
11329 }
11330 }
11331 }
11332 }
11333 @@XMLTest:
11334 @@@QName:
11335 xp.reptxt.attval.ger.entity.declared.standalone.-2.2.test
11336 @@@DEnt:
11337 @@@@test:value:
11338 <!DOCTYPE p [
11339 <!ENTITY % para "<!-- -->">
11340 %para;
11341 <!ENTITY c "&entity;">
11342 ]>
11343 <p a="&c;"/>
11344 @@@test:domTree:
11345 document {
11346 document-type { }
11347 element {
11348 attribute {
11349 node-name: 'a';
11350 general-entity-reference {
11351 node-name: 'c';
11352 manakai-expanded: false;
11353 }
11354 }
11355 }
11356 }
11357 @@XMLTest:
11358 @@@QName: xp.reptxt.attval.ger.entity.declared.standalone.4.test
11359 @@@DEnt:
11360 @@@@test:value:
11361 <?xml version="1.0" standalone="yes"?>
11362 <!DOCTYPE p [
11363 <!ENTITY % para SYSTEM "para">
11364 %para;
11365 <!ENTITY c "&entity;">
11366 ]>
11367 <p a="&c;"/>
11368 @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
11369 @@XMLTest:
11370 @@@QName: xp.reptxt.attval.ger.entity.declared.standalone.-3.test
11371 @@@DEnt:
11372 @@@@test:value:
11373 <?xml version="1.0" standalone="no"?>
11374 <!DOCTYPE p [
11375 <!ENTITY c "&entity;">
11376 <!ENTITY % para SYSTEM "para">
11377 %para;
11378 ]>
11379 <p a="&c;"/>
11380 @@@test:domTree:
11381 document {
11382 document-type { }
11383 element {
11384 attribute {
11385 node-name: 'a';
11386 general-entity-reference {
11387 node-name: 'c';
11388 manakai-expanded: true;
11389 general-entity-reference {
11390 node-name: 'entity';
11391 manakai-expanded: false;
11392 }
11393 }
11394 }
11395 }
11396 }
11397 @@XMLTest:
11398 @@@QName:
11399 xp.reptxt.attval.ger.entity.declared.standalone.-3.2.test
11400 @@@DEnt:
11401 @@@@test:value:
11402 <?xml version="1.0" standalone="no"?>
11403 <!DOCTYPE p [
11404 <!ENTITY % para SYSTEM "para">
11405 %para;
11406 <!ENTITY c "&entity;">
11407 ]>
11408 <p a="&c;"/>
11409 @@@test:domTree:
11410 document {
11411 document-type { }
11412 element {
11413 attribute {
11414 node-name: 'a';
11415 general-entity-reference {
11416 node-name: 'c';
11417 manakai-expanded: false;
11418 }
11419 }
11420 }
11421 }
11422 @@XMLTest:
11423 @@@QName: xp.reptxt.attval.ger.entity.declared.standalone.-4.test
11424 @@@DEnt:
11425 @@@@test:value:
11426 <!DOCTYPE p [
11427 <!ENTITY c "&entity;">
11428 <!ENTITY % para SYSTEM "para">
11429 %para;
11430 ]>
11431 <p a="&c;"/>
11432 @@@test:domTree:
11433 document {
11434 document-type { }
11435 element {
11436 attribute {
11437 node-name: 'a';
11438 general-entity-reference {
11439 node-name: 'c';
11440 manakai-expanded: true;
11441 general-entity-reference {
11442 node-name: 'entity';
11443 manakai-expanded: false;
11444 }
11445 }
11446 }
11447 }
11448 }
11449 @@XMLTest:
11450 @@@QName:
11451 xp.reptxt.attval.ger.entity.declared.standalone.-4.2.test
11452 @@@DEnt:
11453 @@@@test:value:
11454 <!DOCTYPE p [
11455 <!ENTITY % para SYSTEM "para">
11456 %para;
11457 <!ENTITY c "&entity;">
11458 ]>
11459 <p a="&c;"/>
11460 @@@test:domTree:
11461 document {
11462 document-type { }
11463 element {
11464 attribute {
11465 node-name: 'a';
11466 general-entity-reference {
11467 node-name: 'c';
11468 manakai-expanded: false;
11469 }
11470 }
11471 }
11472 }
11473 @@XMLTest:
11474 @@@QName: xp.reptxt.attval.ger.entity.declared.standalone.5.test
11475 @@@DEnt:
11476 @@@@test:value:
11477 <?xml version="1.0" standalone="yes"?>
11478 <!DOCTYPE p SYSTEM "dtd" [
11479 <!ENTITY c "&entity;">
11480 ]>
11481 <p a="&c;"/>
11482 @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
11483 @@XMLTest:
11484 @@@QName: xp.reptxt.attval.ger.entity.declared.standalone.-5.test
11485 @@@DEnt:
11486 @@@@test:value:
11487 <?xml version="1.0" standalone="no"?>
11488 <!DOCTYPE p SYSTEM "dtd" [
11489 <!ENTITY c "&entity;">
11490 ]>
11491 <p a="&c;"/>
11492 @@@test:domTree:
11493 document {
11494 document-type { }
11495 element {
11496 attribute {
11497 node-name: 'a';
11498 general-entity-reference {
11499 node-name: 'c';
11500 manakai-expanded: true;
11501 general-entity-reference {
11502 node-name: 'entity';
11503 manakai-expanded: false;
11504 }
11505 }
11506 }
11507 }
11508 }
11509 @@XMLTest:
11510 @@@QName: xp.reptxt.attval.ger.entity.declared.standalone.-6.test
11511 @@@DEnt:
11512 @@@@test:value:
11513 <!DOCTYPE p SYSTEM "dtd" [<!ENTITY c "&entity;">]>
11514 <p a="&c;"/>
11515 @@@test:domTree:
11516 document {
11517 document-type { }
11518 element {
11519 attribute {
11520 node-name: 'a';
11521 general-entity-reference {
11522 node-name: 'c';
11523 manakai-expanded: true;
11524 general-entity-reference {
11525 node-name: 'entity';
11526 manakai-expanded: false;
11527 }
11528 }
11529 }
11530 }
11531 }
11532
11533 @@XMLTest:
11534 @@@QName: xp.attlist.dup.entity.declared.1.test
11535 @@@DEnt:
11536 @@@@test:value:
11537 <!DOCTYPE p [
11538 <!ATTLIST p a CDATA "no-entity">
11539 <!ATTLIST p a CDATA "&entity;">
11540 ]>
11541 <p/>
11542 @@@c:erred: <[[xp|wf-entity-declared]]> { (3, 21)..(3, 29); }
11543 @@XMLTest:
11544 @@@QName: xp.attlist.dup.entity.declared.2.test
11545 @@@DEnt:
11546 @@@@test:value:
11547 <!DOCTYPE p [
11548 <!ATTLIST p a CDATA "no-entity"
11549 a CDATA "&entity;">
11550 ]>
11551 <p/>
11552 @@@c:erred: <[[xp|wf-entity-declared]]> { (3, 21)..(3, 29); }
11553 @@XMLTest:
11554 @@@QName: xp.attlist.unused.entity.declared.1.test
11555 @@@DEnt:
11556 @@@@test:value:
11557 <!DOCTYPE p [
11558 <!ATTLIST q a CDATA "&entity;">
11559 ]>
11560 <p/>
11561 @@@c:erred: <[[xp|wf-entity-declared]]> { (2, 21)..(2, 29); }
11562 @@XMLTest:
11563 @@@QName: xp.attlist.unused.entity.declared.2.test
11564 @@@DEnt:
11565 @@@@test:value:
11566 <!DOCTYPE p [
11567 <!ATTLIST p a CDATA "&entity;">
11568 ]>
11569 <p a="bb"/>
11570 @@@c:erred: <[[xp|wf-entity-declared]]> { (2, 21)..(2, 29); }
11571
11572 @@XMLTest:
11573 @@@QName: xp.reptxt.attlist.attval.ger.entity.declared.nopref.1.test
11574 @@@DEnt:
11575 @@@@test:value:
11576 <!DOCTYPE p [
11577 <!ENTITY c "&entity;">
11578 <!ATTLIST p a CDATA "&c;">
11579 ]>
11580 <p/>
11581 @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
11582 @@XMLTest:
11583 @@@QName: xp.reptxt.attlist.attval.ger.entity.declared.nopref.2.test
11584 @@@DEnt:
11585 @@@@test:value:
11586 <!DOCTYPE p [
11587 <!ENTITY other "aa">
11588 <!ENTITY % another "aa">
11589 <!ENTITY c "&entity;">
11590 <!ATTLIST p a CDATA "&c;">
11591 ]>
11592 <p/>
11593 @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
11594 @@XMLTest:
11595 @@@QName: xp.reptxt.attlist.attval.ger.entity.declared.nopref.3.test
11596 @@@DEnt:
11597 @@@@test:value:
11598 <?xml version="1.0" standalone="yes"?>
11599 <!DOCTYPE p [
11600 <!ENTITY c "&entity;">
11601 <!ATTLIST p a CDATA "&c;">
11602 ]>
11603 <p/>
11604 @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
11605 @@XMLTest:
11606 @@@QName: xp.reptxt.attlist.attval.ger.entity.declared.nopref.4.test
11607 @@@DEnt:
11608 @@@@test:value:
11609 <?xml version="1.0" standalone="no"?>
11610 <!DOCTYPE p [
11611 <!ENTITY c "&entity;">
11612 <!ATTLIST p a CDATA "&c;">
11613 ]>
11614 <p/>
11615 @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
11616 @@XMLTest:
11617 @@@QName: xp.reptxt.attlist.attval.ger.entity.declared.nopref.5.test
11618 @@@DEnt:
11619 @@@@test:value:
11620 <?xml version="1.0" standalone="yes"?>
11621 <!DOCTYPE p [
11622 <!ENTITY other "aa">
11623 <!ENTITY % another "aa">
11624 <!ENTITY c "&entity;">
11625 <!ATTLIST p a CDATA "&c;">
11626 ]>
11627 <p/>
11628 @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
11629 @@XMLTest:
11630 @@@QName: xp.reptxt.attlist.attval.ger.entity.declared.nopref.6.test
11631 @@@DEnt:
11632 @@@@test:value:
11633 <?xml version="1.0" standalone="no"?>
11634 <!DOCTYPE p [
11635 <!ENTITY other "aa">
11636 <!ENTITY % another "aa">
11637 <!ENTITY c "&entity;">
11638 <!ATTLIST p a CDATA "&c;">
11639 ]>
11640 <p/>
11641 @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
11642 @@XMLTest:
11643 @@@QName: xp.reptxt.attlist.attval.ger.entity.declared.nopref.-1.test
11644 @@@DEnt:
11645 @@@@test:value:
11646 <!DOCTYPE p [
11647 <!ENTITY entity "value">
11648 <!ENTITY c "&entity;">
11649 <!ATTLIST p a CDATA "&c;">
11650 ]>
11651 <p/>
11652 @@@cfg:entity-replacement-tree: 1
11653 @@@test:domTree:
11654 document {
11655 document-type {
11656 general-entity {
11657 node-name: 'entity';
11658 text-content: 'value';
11659 }
11660 general-entity {
11661 node-name: 'c';
11662 general-entity-reference {
11663 node-name: 'entity';
11664 manakai-expanded: true;
11665 text-content: 'value';
11666 }
11667 }
11668 element-type-definition {
11669 node-name: 'p';
11670 attribute-definition {
11671 node-name: 'a';
11672 general-entity-reference {
11673 node-name: 'c';
11674 manakai-expanded: true;
11675 general-entity-reference {
11676 node-name: 'entity';
11677 manakai-expanded: true;
11678 text-content: 'value';
11679 }
11680 }
11681 }
11682 }
11683 }
11684 element {
11685 attribute {
11686 node-name: 'a';
11687 specified: false;
11688 general-entity-reference {
11689 node-name: 'c';
11690 general-entity-reference {
11691 node-name: 'entity';
11692 text-content: 'value';
11693 }
11694 }
11695 }
11696 }
11697 }
11698 @@XMLTest:
11699 @@@QName: xp.reptxt.attlist.attval.ger.entity.declared.nopref.-2.test
11700 @@@DEnt:
11701 @@@@test:value:
11702 <!DOCTYPE p [
11703 <!ENTITY entity "value">
11704 <!ENTITY another SYSTEM "another">
11705 <!ENTITY c "&entity;">
11706 <!ATTLIST p a CDATA "&c;">
11707 ]>
11708 <p/>
11709 @@@cfg:entity-replacement-tree: 1
11710 @@@test:domTree:
11711 document {
11712 document-type {
11713 general-entity {
11714 node-name: 'entity';
11715 text-content: 'value';
11716 }
11717 general-entity {
11718 node-name: 'c';
11719 general-entity-reference {
11720 node-name: 'entity';
11721 text-content: 'value';
11722 }
11723 }
11724 general-entity {
11725 node-name: 'another';
11726 public-id: null;
11727 system-id: 'another';
11728 has-replacement-tree: false;
11729 }
11730 element-type-definition {
11731 node-name: 'p';
11732 attribute-definition {
11733 node-name: 'a';
11734 general-entity-reference {
11735 node-name: 'c';
11736 manakai-expanded: true;
11737 general-entity-reference {
11738 node-name: 'entity';
11739 manakai-expanded: true;
11740 text-content: 'value';
11741 }
11742 }
11743 }
11744 }
11745 }
11746 element {
11747 attribute {
11748 node-name: 'a';
11749 specified: false;
11750 general-entity-reference {
11751 node-name: 'c';
11752 general-entity-reference {
11753 node-name: 'entity';
11754 text-content: 'value';
11755 }
11756 }
11757 }
11758 }
11759 }
11760 @@XMLTest:
11761 @@@QName: xp.reptxt.attlist.attval.ger.entity.declared.standalone.2.test
11762 @@@DEnt:
11763 @@@@test:value:
11764 <?xml version="1.0" standalone="yes"?>
11765 <!DOCTYPE p [
11766 <!ENTITY c "&entity;">
11767 <!ATTLIST p a CDATA "&c;">
11768 ]>
11769 <p/>
11770 @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
11771 @@XMLTest:
11772 @@@QName: xp.reptxt.attlist.attval.ger.entity.declared.standalone.3.test
11773 @@@DEnt:
11774 @@@@test:value:
11775 <?xml version="1.0" standalone="yes"?>
11776 <!DOCTYPE p [
11777 <!ENTITY % para "<!-- -->">
11778 %para;
11779 <!ENTITY c "&entity;">
11780 <!ATTLIST p a CDATA "&c;">
11781 ]>
11782 <p/>
11783 @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
11784 @@XMLTest:
11785 @@@QName: xp.reptxt.attlist.attval.ger.entity.declared.standalone.-1.test
11786 @@@DEnt:
11787 @@@@test:value:
11788 <?xml version="1.0" standalone="no"?>
11789 <!DOCTYPE p [
11790 <!ENTITY c "&entity;">
11791 <!ATTLIST p a CDATA "&c;">
11792 <!ENTITY % para "<!-- -->">
11793 %para;
11794 ]>
11795 <p/>
11796 @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
11797 @@XMLTest:
11798 @@@QName:
11799 xp.reptxt.attlist.attval.ger.entity.declared.standalone.-1.2.test
11800 @@@DEnt:
11801 @@@@test:value:
11802 <?xml version="1.0" standalone="no"?>
11803 <!DOCTYPE p [
11804 <!ENTITY % para "<!-- -->">
11805 %para;
11806 <!ENTITY c "&entity;">
11807 <!ATTLIST p a CDATA "&c;">
11808 ]>
11809 <p g="h"/>
11810 @@@test:domTree:
11811 document {
11812 document-type { }
11813 element {
11814 attribute {
11815 node-name: 'g';
11816 text-content: 'h';
11817 }
11818 }
11819 }
11820 @@XMLTest:
11821 @@@QName: xp.reptxt.attlist.attval.ger.entity.declared.standalone.-2.test
11822 @@@DEnt:
11823 @@@@test:value:
11824 <!DOCTYPE p [
11825 <!ENTITY c "&entity;">
11826 <!ATTLIST p a CDATA "&c;">
11827 <!ENTITY % para "<!-- -->">
11828 %para;
11829 ]>
11830 <p/>
11831 @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
11832 @@XMLTest:
11833 @@@QName:
11834 xp.reptxt.attlist.attval.ger.entity.declared.standalone.-2.2.test
11835 @@@DEnt:
11836 @@@@test:value:
11837 <!DOCTYPE p [
11838 <!ENTITY % para "<!-- -->">
11839 %para;
11840 <!ENTITY c "&entity;">
11841 <!ATTLIST p a CDATA "&c;">
11842 ]>
11843 <p g="h"/>
11844 @@@test:domTree:
11845 document {
11846 document-type { }
11847 element {
11848 attribute {
11849 node-name: 'g';
11850 text-content: 'h';
11851 }
11852 }
11853 }
11854 @@XMLTest:
11855 @@@QName: xp.reptxt.attlist.attval.ger.entity.declared.standalone.4.test
11856 @@@DEnt:
11857 @@@@test:value:
11858 <?xml version="1.0" standalone="yes"?>
11859 <!DOCTYPE p [
11860 <!ENTITY % para SYSTEM "para">
11861 %para;
11862 <!ENTITY c "&entity;">
11863 <!ATTLIST p a CDATA "&c;">
11864 ]>
11865 <p/>
11866 @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
11867 @@XMLTest:
11868 @@@QName: xp.reptxt.attlist.attval.ger.entity.declared.standalone.-3.test
11869 @@@DEnt:
11870 @@@@test:value:
11871 <?xml version="1.0" standalone="no"?>
11872 <!DOCTYPE p [
11873 <!ENTITY c "&entity;">
11874 <!ATTLIST p a CDATA "&c;">
11875 <!ENTITY % para SYSTEM "para">
11876 %para;
11877 ]>
11878 <p/>
11879 @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
11880 @@XMLTest:
11881 @@@QName:
11882 xp.reptxt.attlist.attval.ger.entity.declared.standalone.-3.2.test
11883 @@@DEnt:
11884 @@@@test:value:
11885 <?xml version="1.0" standalone="no"?>
11886 <!DOCTYPE p [
11887 <!ENTITY % para SYSTEM "para">
11888 %para;
11889 <!ENTITY c "&entity;">
11890 <!ATTLIST p a CDATA "&c;">
11891 ]>
11892 <p g="h"/>
11893 @@@test:domTree:
11894 document {
11895 document-type { }
11896 element {
11897 attribute {
11898 node-name: 'g';
11899 text-content: 'h';
11900 }
11901 }
11902 }
11903 @@XMLTest:
11904 @@@QName: xp.reptxt.attlist.attval.ger.entity.declared.standalone.-4.test
11905 @@@DEnt:
11906 @@@@test:value:
11907 <!DOCTYPE p [
11908 <!ENTITY c "&entity;">
11909 <!ATTLIST p a CDATA "&c;">
11910 <!ENTITY % para SYSTEM "para">
11911 %para;
11912 ]>
11913 <p/>
11914 @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
11915 @@XMLTest:
11916 @@@QName:
11917 xp.reptxt.attlist.attval.ger.entity.declared.standalone.-4.2.test
11918 @@@DEnt:
11919 @@@@test:value:
11920 <!DOCTYPE p [
11921 <!ENTITY % para SYSTEM "para">
11922 %para;
11923 <!ENTITY c "&entity;">
11924 <!ATTLIST p a CDATA "&c;">
11925 ]>
11926 <p g="h"/>
11927 @@@test:domTree:
11928 document {
11929 document-type { }
11930 element {
11931 attribute {
11932 node-name: 'g';
11933 text-content: 'h';
11934 }
11935 }
11936 }
11937 @@XMLTest:
11938 @@@QName: xp.reptxt.attlist.attval.ger.entity.declared.standalone.5.test
11939 @@@DEnt:
11940 @@@@test:value:
11941 <?xml version="1.0" standalone="yes"?>
11942 <!DOCTYPE p SYSTEM "dtd" [
11943 <!ENTITY c "&entity;">
11944 <!ATTLIST p a CDATA "&c;">
11945 ]>
11946 <p/>
11947 @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
11948 @@XMLTest:
11949 @@@QName: xp.reptxt.attlist.attval.ger.entity.declared.standalone.-5.test
11950 @@@DEnt:
11951 @@@@test:value:
11952 <?xml version="1.0" standalone="no"?>
11953 <!DOCTYPE p SYSTEM "dtd" [
11954 <!ENTITY c "&entity;">
11955 <!ATTLIST p a CDATA "&c;">
11956 ]>
11957 <p/>
11958 @@@test:domTree:
11959 document {
11960 document-type { }
11961 element {
11962 attribute {
11963 node-name: 'a';
11964 specified: false;
11965 general-entity-reference {
11966 node-name: 'c';
11967 manakai-expanded: true;
11968 general-entity-reference {
11969 node-name: 'entity';
11970 manakai-expanded: false;
11971 }
11972 }
11973 }
11974 }
11975 }
11976 @@XMLTest:
11977 @@@QName: xp.reptxt.attlist.attval.ger.entity.declared.standalone.-6.test
11978 @@@DEnt:
11979 @@@@test:value:
11980 <!DOCTYPE p SYSTEM "dtd" [<!ENTITY c "&entity;">
11981 <!ATTLIST p a CDATA "&c;">
11982 ]>
11983 <p/>
11984 @@@test:domTree:
11985 document {
11986 document-type { }
11987 element {
11988 attribute {
11989 node-name: 'a';
11990 specified: false;
11991 general-entity-reference {
11992 node-name: 'c';
11993 manakai-expanded: true;
11994 general-entity-reference {
11995 node-name: 'entity';
11996 manakai-expanded: false;
11997 }
11998 }
11999 }
12000 }
12001 }
12002
12003 @@XMLTest:
12004 @@@QName: xp.attlist.attval.ger.entity.declared.nopref.1.test
12005 @@@DEnt:
12006 @@@@test:value:
12007 <!DOCTYPE p [
12008 <!ATTLIST p a CDATA "&entity;">
12009 ]>
12010 <p/>
12011 @@@c:erred: <[[xp|wf-entity-declared]]> { (2, 22)..(2, 29); }
12012 @@XMLTest:
12013 @@@QName: xp.attlist.attval.ger.entity.declared.nopref.2.test
12014 @@@DEnt:
12015 @@@@test:value:
12016 <!DOCTYPE p [
12017 <!ENTITY other "aa">
12018 <!ENTITY % another "aa">
12019 <!ATTLIST p a CDATA "&entity;">
12020 ]>
12021 <p/>
12022 @@@c:erred: <[[xp|wf-entity-declared]]> { (4, 22)..(4, 29); }
12023 @@XMLTest:
12024 @@@QName: xp.attlist.attval.ger.entity.declared.nopref.3.test
12025 @@@DEnt:
12026 @@@@test:value:
12027 <?xml version="1.0" standalone="yes"?>
12028 <!DOCTYPE p [
12029 <!ATTLIST p a CDATA "&entity;">
12030 ]>
12031 <p/>
12032 @@@c:erred: <[[xp|wf-entity-declared]]> { (3, 22)..(3, 29); }
12033 @@XMLTest:
12034 @@@QName: xp.attlist.attval.ger.entity.declared.nopref.4.test
12035 @@@DEnt:
12036 @@@@test:value:
12037 <?xml version="1.0" standalone="no"?>
12038 <!DOCTYPE p [
12039 <!ATTLIST p a CDATA "&entity;">
12040 ]>
12041 <p/>
12042 @@@c:erred: <[[xp|wf-entity-declared]]> { (3, 22)..(3, 29); }
12043 @@XMLTest:
12044 @@@QName: xp.attlist.attval.ger.entity.declared.nopref.5.test
12045 @@@DEnt:
12046 @@@@test:value:
12047 <?xml version="1.0" standalone="yes"?>
12048 <!DOCTYPE p [
12049 <!ENTITY other "aa">
12050 <!ENTITY % another "aa">
12051 <!ATTLIST p a CDATA "&entity;">
12052 ]>
12053 <p/>
12054 @@@c:erred: <[[xp|wf-entity-declared]]> { (5, 22)..(5, 29); }
12055 @@XMLTest:
12056 @@@QName: xp.attlist.attval.ger.entity.declared.nopref.6.test
12057 @@@DEnt:
12058 @@@@test:value:
12059 <?xml version="1.0" standalone="no"?>
12060 <!DOCTYPE p [
12061 <!ENTITY other "aa">
12062 <!ENTITY % another "aa">
12063 <!ATTLIST p a CDATA "&entity;">
12064 ]>
12065 <p/>
12066 @@@c:erred: <[[xp|wf-entity-declared]]> { (5, 22)..(5, 29); }
12067 @@XMLTest:
12068 @@@QName: xp.attlist.attval.ger.entity.declared.nopref.-1.test
12069 @@@DEnt:
12070 @@@@test:value:
12071 <!DOCTYPE p [
12072 <!ENTITY entity "value">
12073 <!ATTLIST p a CDATA "&entity;">
12074 ]>
12075 <p/>
12076 @@@cfg:entity-replacement-tree: 1
12077 @@@test:domTree:
12078 document {
12079 document-type {
12080 general-entity {
12081 node-name: 'entity';
12082 text-content: 'value';
12083 }
12084 element-type-definition {
12085 node-name: 'p';
12086 attribute-definition {
12087 node-name: 'a';
12088 general-entity-reference {
12089 node-name: 'entity';
12090 manakai-expanded: true;
12091 text-content: 'value';
12092 }
12093 }
12094 }
12095 }
12096 element {
12097 attribute {
12098 node-name: 'a';
12099 specified: false;
12100 general-entity-reference {
12101 node-name: 'entity';
12102 manakai-expanded: true;
12103 text-content: 'value';
12104 }
12105 }
12106 }
12107 }
12108 @@XMLTest:
12109 @@@QName: xp.attlist.attval.ger.entity.declared.nopref.-1.2.test
12110 @@@DEnt:
12111 @@@@test:value:
12112 <!DOCTYPE p [
12113 <!ATTLIST p a CDATA "&entity;">
12114 <!ENTITY entity "value">
12115 ]>
12116 <p/>
12117 @@@c:erred: <[[xp|wf-entity-declared]]> { (2, 22)..(2, 29); }
12118 @@XMLTest:
12119 @@@QName: xp.attlist.attval.ger.entity.declared.nopref.-2.test
12120 @@@DEnt:
12121 @@@@test:value:
12122 <!DOCTYPE p [
12123 <!ENTITY entity "value">
12124 <!ENTITY another SYSTEM "another">
12125 <!ATTLIST p a CDATA "&entity;">
12126 ]>
12127 <p/>
12128 @@@cfg:entity-replacement-tree: 1
12129 @@@test:domTree:
12130 document {
12131 document-type {
12132 element-type-definition {
12133 node-name: 'p';
12134 attribute-definition {
12135 node-name: 'a';
12136 general-entity-reference {
12137 node-name: 'entity';
12138 manakai-expanded: true;
12139 text-content: 'value';
12140 }
12141 }
12142 }
12143 general-entity {
12144 node-name: 'entity';
12145 text-content: 'value';
12146 has-replacement-tree: true;
12147 }
12148 general-entity {
12149 node-name: 'another';
12150 public-id: null;
12151 system-id: 'another';
12152 has-replacement-tree: false;
12153 }
12154 }
12155 element {
12156 attribute {
12157 node-name: 'a';
12158 specified: false;
12159 general-entity-reference {
12160 node-name: 'entity';
12161 manakai-expanded: true;
12162 text-content: 'value';
12163 }
12164 }
12165 }
12166 }
12167 @@XMLTest:
12168 @@@QName: xp.attlist.attval.ger.entity.declared.nopref.-2.2.test
12169 @@@DEnt:
12170 @@@@test:value:
12171 <!DOCTYPE p [
12172 <!ATTLIST p a CDATA "&entity;">
12173 <!ENTITY entity "value">
12174 <!ENTITY another SYSTEM "another">
12175 ]>
12176 <p/>
12177 @@@c:erred: <[[xp|wf-entity-declared]]> { (2, 22)..(2, 29); }
12178 @@XMLTest:
12179 @@@QName: xp.attlist.attval.ger.entity.declared.standalone.2.test
12180 @@@DEnt:
12181 @@@@test:value:
12182 <?xml version="1.0" standalone="yes"?>
12183 <!DOCTYPE p [
12184 <!ATTLIST p a CDATA "&entity;">
12185 ]>
12186 <p/>
12187 @@@c:erred: <[[xp|wf-entity-declared]]> { (3, 22)..(3, 29); }
12188 @@XMLTest:
12189 @@@QName: xp.attlist.attval.ger.entity.declared.standalone.3.test
12190 @@@DEnt:
12191 @@@@test:value:
12192 <?xml version="1.0" standalone="yes"?>
12193 <!DOCTYPE p [
12194 <!ATTLIST p a CDATA "&entity;">
12195 <!ENTITY % para "<!-- -->">
12196 %para;
12197 ]>
12198 <p/>
12199 @@@c:erred: <[[xp|wf-entity-declared]]> { (3, 22)..(3, 29); }
12200 @@XMLTest:
12201 @@@QName: xp.attlist.attval.ger.entity.declared.standalone.3.2.test
12202 @@@DEnt:
12203 @@@@test:value:
12204 <?xml version="1.0" standalone="yes"?>
12205 <!DOCTYPE p [
12206 <!ENTITY % para "<!-- -->">
12207 %para;
12208 <!ATTLIST p a CDATA "&entity;">
12209 ]>
12210 <p/>
12211 @@@c:erred: <[[xp|wf-entity-declared]]> { (5, 22)..(5, 29); }
12212 @@@enImplNote:
12213 The <XML::ATTLIST> declaration is processed since
12214 it is a <XA::standalone> document.
12215 @@XMLTest:
12216 @@@QName: xp.attlist.attval.ger.entity.declared.standalone.-1.test
12217 @@@DEnt:
12218 @@@@test:value:
12219 <?xml version="1.0" standalone="no"?>
12220 <!DOCTYPE p [
12221 <!ATTLIST p a CDATA "&entity;">
12222 <!ENTITY % para "<!-- -->">
12223 %para;
12224 ]>
12225 <p/>
12226 @@@c:erred: <[[xp|wf-entity-declared]]> { (3, 22)..(3, 29); }
12227 @@XMLTest:
12228 @@@QName: xp.attlist.attval.ger.entity.declared.standalone.-1.2.test
12229 @@@DEnt:
12230 @@@@test:value:
12231 <?xml version="1.0" standalone="no"?>
12232 <!DOCTYPE p [
12233 <!ATTLIST p b CDATA #IMPLIED>
12234 <!ENTITY % para "<!-- -->">
12235 %para;
12236 <!ATTLIST p a CDATA "&entity;">
12237 ]>
12238 <p c="d"/>
12239 @@@c:erred:
12240 <[[xp|warning-attribute-definition-not-processed]]> { (6, 13)..(6, 30); }
12241 @@@test:domTree:
12242 document {
12243 document-type {
12244 element-type-definition {
12245 node-name: 'p';
12246 attribute-definition {
12247 node-name: 'b';
12248 }
12249 }
12250 }
12251 element {
12252 attribute {
12253 node-name: 'c';
12254 text-content: 'd';
12255 }
12256 }
12257 }
12258 @@@enImplNote:
12259 The second <XML::ATTLIST> declaration is read but not processed
12260 and its <XML::&entity;> general entity reference violates
12261 entity declared validty constraint rather than well-formedness
12262 constraint.
12263 @@XMLTest:
12264 @@@QName: xp.attlist.attval.ger.entity.declared.standalone.-2.test
12265 @@@DEnt:
12266 @@@@test:value:
12267 <!DOCTYPE p [
12268 <!ATTLIST p a CDATA "&entity;">
12269 <!ENTITY % para "<!-- -->">
12270 %para;
12271 ]>
12272 <p/>
12273 @@@c:erred: <[[xp|wf-entity-declared]]> { (2, 22)..(2, 29); }
12274 @@XMLTest:
12275 @@@QName: xp.attlist.attval.ger.entity.declared.standalone.-2.2.test
12276 @@@DEnt:
12277 @@@@test:value:
12278 <!DOCTYPE p [
12279 <!ATTLIST p b CDATA #IMPLIED>
12280 <!ENTITY % para "<!-- -->">
12281 %para;
12282 <!ATTLIST p a CDATA "&entity;">
12283 ]>
12284 <p c="d"/>
12285 @@@c:erred:
12286 <[[xp|warning-attribute-definition-not-processed]]> { (5, 13)..(5, 30); }
12287 @@@test:domTree:
12288 document {
12289 document-type {
12290 element-type-definition {
12291 node-name: 'p';
12292 attribute-definition {
12293 node-name: 'b';
12294 }
12295 }
12296 }
12297 element {
12298 attribute {
12299 node-name: 'c';
12300 text-content: 'd';
12301 }
12302 }
12303 }
12304 @@XMLTest:
12305 @@@QName: xp.attlist.attval.ger.entity.declared.standalone.4.test
12306 @@@DEnt:
12307 @@@@test:value:
12308 <?xml version="1.0" standalone="yes"?>
12309 <!DOCTYPE p [
12310 <!ATTLIST p a CDATA "&entity;">
12311 <!ENTITY % para SYSTEM "p">
12312 %para;
12313 ]>
12314 <p/>
12315 @@@c:erred: <[[xp|wf-entity-declared]]> { (3, 22)..(3, 29); }
12316 @@XMLTest:
12317 @@@QName: xp.attlist.attval.ger.entity.declared.standalone.4.2.test
12318 @@@DEnt:
12319 @@@@test:value:
12320 <?xml version="1.0" standalone="yes"?>
12321 <!DOCTYPE p [
12322 <!ENTITY % para SYSTEM "p">
12323 %para;
12324 <!ATTLIST p a CDATA "&entity;">
12325 ]>
12326 <p/>
12327 @@@c:erred: <[[xp|wf-entity-declared]]> { (5, 22)..(5, 29); }
12328 @@@enImplNote:
12329 The <XML::ATTLIST> declaration is processed since
12330 it is a <XA::standalone> document.
12331 @@XMLTest:
12332 @@@QName: xp.attlist.attval.ger.entity.declared.standalone.-3.test
12333 @@@DEnt:
12334 @@@@test:value:
12335 <?xml version="1.0" standalone="no"?>
12336 <!DOCTYPE p [
12337 <!ATTLIST p a CDATA "&entity;">
12338 <!ENTITY % para SYSTEM "p">
12339 %para;
12340 ]>
12341 <p/>
12342 @@@c:erred: <[[xp|wf-entity-declared]]> { (3, 22)..(3, 29); }
12343 @@@enImplNote:
12344 Is this well-formed? It has a parameter entity reference,
12345 therefore, it does not violates Entity Declared WFC, isn't it?
12346
12347 Note that Firefox 1.5 and Opera 9 TP1 reports that this document has a
12348 fatal error (also note that they does not support unexpanded).
12349
12350 See also:
12351 <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>
12352 @@XMLTest:
12353 @@@QName: xp.attlist.attval.ger.entity.declared.standalone.-3.2.test
12354 @@@DEnt:
12355 @@@@test:value:
12356 <?xml version="1.0" standalone="no"?>
12357 <!DOCTYPE p [
12358 <!ATTLIST p b CDATA #IMPLIED>
12359 <!ENTITY % para SYSTEM "p">
12360 %para;
12361 <!ATTLIST p a CDATA "&entity;">
12362 ]>
12363 <p c="d"/>
12364 @@@c:erred:
12365 <[[xp|warning-attribute-definition-not-processed]]> { (6, 13)..(6, 30); }
12366 @@@test:domTree:
12367 document {
12368 document-type {
12369 element-type-definition {
12370 node-name: 'p';
12371 attribute-definition {
12372 node-name: 'b';
12373 }
12374 }
12375 }
12376 element {
12377 attribute {
12378 node-name: 'c';
12379 text-content: 'd';
12380 }
12381 }
12382 }
12383 @@@enImplNote:
12384 The second <XML::ATTLIST> declaration is read but not processed
12385 and its <XML::&entity;> general entity reference violates
12386 entity declared validty constraint rather than well-formedness
12387 constraint.
12388 @@XMLTest:
12389 @@@QName: xp.attlist.attval.ger.entity.declared.standalone.-4.test
12390 @@@DEnt:
12391 @@@@test:value:
12392 <!DOCTYPE p [
12393 <!ATTLIST p a CDATA "&entity;">
12394 <!ENTITY % para SYSTEM "p">
12395 %para;
12396 ]>
12397 <p/>
12398 @@@c:erred: <[[xp|wf-entity-declared]]> { (2, 22)..(2, 29); }
12399 @@XMLTest:
12400 @@@QName: xp.attlist.attval.ger.entity.declared.standalone.-4.2.test
12401 @@@DEnt:
12402 @@@@test:value:
12403 <!DOCTYPE p [
12404 <!ATTLIST p b CDATA #IMPLIED>
12405 <!ENTITY % para SYSTEM "p">
12406 %para;
12407 <!ATTLIST p a CDATA "&entity;">
12408 ]>
12409 <p c="d"/>
12410 @@@c:erred:
12411 <[[xp|warning-attribute-definition-not-processed]]> { (5, 13)..(5, 30); }
12412 @@@test:domTree:
12413 document {
12414 document-type {
12415 element-type-definition {
12416 node-name: 'p';
12417 attribute-definition {
12418 node-name: 'b';
12419 }
12420 }
12421 }
12422 element {
12423 attribute {
12424 node-name: 'c';
12425 text-content: 'd';
12426 }
12427 }
12428 }
12429 @@XMLTest:
12430 @@@QName: xp.attlist.attval.ger.entity.declared.standalone.5.test
12431 @@@DEnt:
12432 @@@@test:value:
12433 <?xml version="1.0" standalone="yes"?>
12434 <!DOCTYPE p SYSTEM "dtd" [
12435 <!ATTLIST p a CDATA "&entity;">
12436 ]>
12437 <p/>
12438 @@@c:erred: <[[xp|wf-entity-declared]]> { (3, 22)..(3, 29); }
12439 @@@enImplNote:
12440 This document has an error - result is implementation dependent.
12441 @@XMLTest:
12442 @@@QName: xp.attlist.attval.ger.entity.declared.standalone.-5.test
12443 @@@DEnt:
12444 @@@@test:value:
12445 <?xml version="1.0" standalone="no"?>
12446 <!DOCTYPE p SYSTEM "dtd" [
12447 <!ATTLIST p a CDATA "&entity;">
12448 ]>
12449 <p/>
12450 @@@test:domTree:
12451 document {
12452 document-type {
12453 element-type-definition {
12454 node-name: 'p';
12455 attribute-definition {
12456 node-name: 'a';
12457 general-entity-reference {
12458 node-name: 'entity';
12459 manakai-expanded: false;
12460 }
12461 }
12462 }
12463 }
12464 element {
12465 attribute {
12466 node-name: 'a';
12467 specified: false;
12468 general-entity-reference {
12469 node-name: 'entity';
12470 manakai-expanded: false;
12471 }
12472 }
12473 }
12474 }
12475 @@@enImplNote:
12476 This document has an error - result is implementation dependent.
12477 @@XMLTest:
12478 @@@QName: xp.attlist.attval.ger.entity.declared.standalone.-6.test
12479 @@@DEnt:
12480 @@@@test:value:
12481 <!DOCTYPE p SYSTEM "dtd" [
12482 <!ATTLIST p a CDATA "&entity;">
12483 ]>
12484 <p/>
12485 @@@test:domTree:
12486 document {
12487 document-type {
12488 element-type-definition {
12489 node-name: 'p';
12490 attribute-definition {
12491 node-name: 'a';
12492 general-entity-reference {
12493 node-name: 'entity';
12494 manakai-expanded: false;
12495 }
12496 }
12497 }
12498 }
12499 element {
12500 attribute {
12501 node-name: 'a';
12502 specified: false;
12503 general-entity-reference {
12504 node-name: 'entity';
12505 manakai-expanded: false;
12506 }
12507 }
12508 }
12509 }
12510 @@@enImplNote:
12511 This document has an error - result is implementation dependent.
12512
12513 @@enImplNote:
12514 {TODO:: Entity declared WFC for
12515
12516 - General entity references in entity value??
12517
12518 }
12519
12520 @@XMLTest:
12521 @@@QName: xp.element.content.parsed.entity.reference.test
12522 @@@DEnt:
12523 @@@@test:value:
12524 <!DOCTYPE p [
12525 <!NOTATION n SYSTEM "notation">
12526 <!ENTITY ext SYSTEM "system" NDATA n>
12527 ]>
12528 <p>&ext;</p>
12529 @@@c:erred: <[[xp|wf-parsed-entity]]> { (5, 4)..(5, 8); }
12530 @@XMLTest:
12531 @@@QName: xp.attval.parsed.entity.reference.test
12532 @@@DEnt:
12533 @@@@test:value:
12534 <!DOCTYPE p [
12535 <!NOTATION n SYSTEM "notation">
12536 <!ENTITY ext SYSTEM "system" NDATA n>
12537 ]>
12538 <p a="&ext;"/>
12539 # @@@c:erred: <[[xp|wf-parsed-entity]]> { (5, 7)..(5, 11); }
12540 @@@c:erred: <[[xp|wf-no-external-entity-references]]> { (5, 7)..(5, 11); }
12541 @@XMLTest:
12542 @@@QName: xp.element.content.reptxt.parsed.entity.reference.test
12543 @@@DEnt:
12544 @@@@test:value:
12545 <!DOCTYPE p [
12546 <!NOTATION n SYSTEM "notation">
12547 <!ENTITY ext SYSTEM "system" NDATA n>
12548 <!ENTITY c "&#x26;ext;">
12549 ]>
12550 <p>&c;</p>
12551 @@@c:erred: <[[xp|wf-parsed-entity]]> { (1, 1)..(1, 5); }
12552 @@XMLTest:
12553 @@@QName: xp.attval.reptxt.parsed.entity.reference.test
12554 @@@DEnt:
12555 @@@@test:value:
12556 <!DOCTYPE p [
12557 <!NOTATION n SYSTEM "notation">
12558 <!ENTITY ext SYSTEM "system" NDATA n>
12559 <!ENTITY c "&#x26;ext;">
12560 ]>
12561 <p a="&c;"/>
12562 @@@cfg:entity-replacement-tree: 0
12563 @@@c:erred: <[[xp|wf-no-external-entity-references]]> { (1, 1)..(1, 5); }
12564 @@XMLTest:
12565 @@@QName: xp.attval.reptxt.parsed.entity.reference.2.test
12566 @@@DEnt:
12567 @@@@test:value:
12568 <!DOCTYPE p [
12569 <!NOTATION n SYSTEM "notation">
12570 <!ENTITY ext SYSTEM "system" NDATA n>
12571 <!ENTITY c "&#x26;ext;">
12572 ]>
12573 <p a="&c;"/>
12574 @@@cfg:entity-replacement-tree: 1
12575 @@@c:erred: <[[xp|wf-no-external-entity-references]]> { (1, 1)..(1, 5); }
12576 @@@c:erred:
12577 @@@@@: <[[xp|wf-parsed-entity]]> { }
12578 @@@@enImplNote: During entity node construction.
12579 @@XMLTest:
12580 @@@QName: xp.element.content.entval.parsed.entity.reference.test
12581 @@@DEnt:
12582 @@@@test:value:
12583 <!DOCTYPE p [
12584 <!NOTATION n SYSTEM "notation">
12585 <!ENTITY ext SYSTEM "system" NDATA n>
12586 <!ENTITY c "&ext;">
12587 ]>
12588 <p>&c;</p>
12589 @@@c:erred: <[[xp|wf-parsed-entity]]> { }
12590 @@XMLTest:
12591 @@@QName: xp.attval.entval.parsed.entity.reference.test
12592 @@@DEnt:
12593 @@@@test:value:
12594 <!DOCTYPE p [
12595 <!NOTATION n SYSTEM "notation">
12596 <!ENTITY ext SYSTEM "system" NDATA n>
12597 <!ENTITY c "&ext;">
12598 ]>
12599 <p a="&c;"/>
12600 @@@cfg:entity-replacement-tree: 0
12601 @@@c:erred: <[[xp|wf-no-external-entity-references]]> { }
12602 @@XMLTest:
12603 @@@QName: xp.attval.entval.parsed.entity.reference.2.test
12604 @@@DEnt:
12605 @@@@test:value:
12606 <!DOCTYPE p [
12607 <!NOTATION n SYSTEM "notation">
12608 <!ENTITY ext SYSTEM "system" NDATA n>
12609 <!ENTITY c "&ext;">
12610 ]>
12611 <p a="&c;"/>
12612 @@@cfg:entity-replacement-tree: 1
12613 @@@c:erred: <[[xp|wf-no-external-entity-references]]> { }
12614 @@@c:erred: <[[xp|wf-parsed-entity]]> { }
12615
12616 @@XMLTest:
12617 @@@QName: xp.element.content.no.recursion.direct.test
12618 @@@DEnt:
12619 @@@@test:value:
12620 <!DOCTYPE p [
12621 <!ENTITY c "&c;">
12622 ]>
12623 <p>&c;</p>
12624 @@@c:erred: <[[xp|wf-no-recursion]]> { (1, 1)..(1, 3); }
12625 @@XMLTest:
12626 @@@QName: xp.element.content.no.recursion.indirect.test
12627 @@@DEnt:
12628 @@@@test:value:
12629 <!DOCTYPE p [
12630 <!ENTITY d "&c;">
12631 <!ENTITY c "&d;">
12632 ]>
12633 <p>&c;</p>
12634 @@@c:erred: <[[xp|wf-no-recursion]]> { /* |d| */ (1, 1)..(1, 3); }
12635 @@XMLTest:
12636 @@@QName: xp.attval.no.recursion.direct.test
12637 @@@DEnt:
12638 @@@@test:value:
12639 <!DOCTYPE p [
12640 <!ENTITY c "&c;">
12641 ]>
12642 <p a="&c;"/>
12643 @@@c:erred: <[[xp|wf-no-recursion]]> { (1, 1)..(1, 3); }
12644 @@XMLTest:
12645 @@@QName: xp.attval.no.recursion.indirect.test
12646 @@@DEnt:
12647 @@@@test:value:
12648 <!DOCTYPE p [
12649 <!ENTITY d "&c;">
12650 <!ENTITY c "&d;">
12651 ]>
12652 <p a="&c;"/>
12653 @@@c:erred: <[[xp|wf-no-recursion]]> { /* |d| */ (1, 1)..(1, 3); }
12654 @@XMLTest:
12655 @@@QName: xp.reptxt.element.content.no.recursion.direct.test
12656 @@@DEnt:
12657 @@@@test:value:
12658 <!DOCTYPE p [
12659 <!ENTITY c "&c;">
12660 <!ENTITY e "&#x26;c;">
12661 ]>
12662 <p>&e;</p>
12663 @@@c:erred: <[[xp|wf-no-recursion]]> { /* |e| */ (1, 1)..(1, 3); }
12664 @@XMLTest:
12665 @@@QName: xp.reptxt.element.content.no.recursion.indirect.test
12666 @@@DEnt:
12667 @@@@test:value:
12668 <!DOCTYPE p [
12669 <!ENTITY d "&c;">
12670 <!ENTITY c "&d;">
12671 <!ENTITY e "&#x26;c;">
12672 ]>
12673 <p>&e;</p>
12674 @@@c:erred: <[[xp|wf-no-recursion]]> { /* |d| */ (1, 1)..(1, 3); }
12675 @@XMLTest:
12676 @@@QName: xp.reptxt.attval.no.recursion.direct.test
12677 @@@DEnt:
12678 @@@@test:value:
12679 <!DOCTYPE p [
12680 <!ENTITY c "&c;">
12681 <!ENTITY e "&#x26;c;">
12682 ]>
12683 <p a="&e;"/>
12684 @@@c:erred: <[[xp|wf-no-recursion]]> { /* |e| */ (1, 1)..(1, 3); }
12685 @@XMLTest:
12686 @@@QName: xp.reptxt.attval.no.recursion.indirect.test
12687 @@@DEnt:
12688 @@@@test:value:
12689 <!DOCTYPE p [
12690 <!ENTITY d "&c;">
12691 <!ENTITY c "&d;">
12692 <!ENTITY e "&#x26;c;">
12693 ]>
12694 <p a="&e;"/>
12695 @@@c:erred: <[[xp|wf-no-recursion]]> { /* |d| */ (1, 1)..(1, 3); }
12696
12697 @@XMLTest:
12698 @@@QName: xp.ENTITY.system.ndata.name.test
12699 @@@DEnt:
12700 @@@@test:value:
12701 <!DOCTYPE a [
12702 <!NOTATION n SYSTEM "n">
12703 <!ENTITY % e SYSTEM "sys" NDATA n>
12704 ]><a/>
12705 @@@c:erred: <[[xp|wf-syntax-error]]> { (3, 26)..(3, 30); }
12706 @@XMLTest:
12707 @@@QName: xp.ENTITY.public.ndata.name.test
12708 @@@DEnt:
12709 @@@@test:value:
12710 <!DOCTYPE a [
12711 <!NOTATION n SYSTEM "n">
12712 <!ENTITY % e PUBLIC "pub" "sys" NDATA n>
12713 ]><a/>
12714 @@@c:erred: <[[xp|wf-syntax-error]]> { (3, 33)..(3, 37); }
12715 @@XMLTest:
12716 @@@QName: xp.ENTITY.public.ndata.name.-1.test
12717 @@@DEnt:
12718 @@@@test:value:
12719 <!DOCTYPE a [
12720 <!NOTATION n SYSTEM "n">
12721 <!ENTITY % e PUBLIC "pub" "sys" >
12722 ]><a/>
12723 @@@test:domTree:
12724 document { }
12725
12726 @@XMLTest:
12727 @@@QName: xp.ENTITY.pubid.1.test
12728 @@@DEnt:
12729 @@@@test:value:
12730 <!DOCTYPE a [
12731 <!ENTITY e PUBLIC "p" "s">
12732 ]><a/>
12733 @@@test:domTree:
12734 document {
12735 document-type {
12736 general-entity {
12737 node-name: 'e';
12738 public-id: 'p';
12739 system-id: 's';
12740 }
12741 }
12742 element { }
12743 }
12744 @@XMLTest:
12745 @@@QName: xp.ENTITY.pubid.2.test
12746 @@@DEnt:
12747 @@@@test:value:
12748 <!DOCTYPE a [
12749 <!ENTITY e PUBLIC " p " "s">
12750 ]><a/>
12751 @@@test:domTree:
12752 document {
12753 document-type {
12754 general-entity {
12755 node-name: 'e';
12756 public-id: 'p';
12757 system-id: 's';
12758 }
12759 }
12760 element { }
12761 }
12762 @@XMLTest:
12763 @@@QName: xp.ENTITY.pubid.3.test
12764 @@@DEnt:
12765 @@@@test:value:
12766 <!DOCTYPE a [
12767 <!ENTITY e PUBLIC " p $u000Aq$u000A " "s">
12768 ]><a/>
12769 @@@test:domTree:
12770 document {
12771 document-type {
12772 general-entity {
12773 node-name: 'e';
12774 public-id: 'p q';
12775 system-id: 's';
12776 }
12777 }
12778 element { }
12779 }
12780 @@XMLTest:
12781 @@@QName: xp.ENTITY.pubid.4.test
12782 @@@DEnt:
12783 @@@@test:value:
12784 <!DOCTYPE a [
12785 <!ENTITY e PUBLIC " p $u000D$u000Aq" "s">
12786 ]><a/>
12787 @@@test:domTree:
12788 document {
12789 document-type {
12790 general-entity {
12791 node-name: 'e';
12792 public-id: 'p q';
12793 system-id: 's';
12794 }
12795 }
12796 element { }
12797 }
12798 @@XMLTest:
12799 @@@QName: xp.ENTITY.pubid.5.test
12800 @@@DEnt:
12801 @@@@test:value:
12802 <?xml version="1.1"?>
12803 <!DOCTYPE a [
12804 <!ENTITY e PUBLIC " p $u000D$u0085q" "s">
12805 ]><a/>
12806 @@@test:domTree:
12807 document {
12808 document-type {
12809 general-entity {
12810 node-name: 'e';
12811 public-id: 'p q';
12812 system-id: 's';
12813 }
12814 }
12815 element { }
12816 }
12817
12818 @@XMLTest:
12819 @@@QName: xp.ENTITY.ignored.test
12820 @@@DEnt:
12821 @@@@test:value:
12822 <!DOCTYPE a [
12823 <!ENTITY e "a">
12824 <!ENTITY e "b">
12825 ]><a/>
12826 @@@cfg:entity-replacement-tree: 1
12827 @@@test:domTree:
12828 document {
12829 document-type {
12830 general-entity {
12831 node-name: 'e';
12832 text-content: 'a';
12833 }
12834 }
12835 element { }
12836 }
12837 @@@c:erred:
12838 <[[xp|warning-entity-declaration-ignored]]> { (3, 1)..(3, 15); }
12839 @@XMLTest:
12840 @@@QName: xp.ENTITY.ignored.2.test
12841 @@@DEnt:
12842 @@@@test:value:
12843 <!DOCTYPE a [
12844 <!ENTITY % e "a">
12845 <!ENTITY % e "b">
12846 ]><a/>
12847 @@@test:domTree:
12848 document { }
12849 @@@c:erred:
12850 <[[xp|warning-entity-declaration-ignored]]> { (3, 1)..(3, 17); }
12851
12852 @@XMLTest:
12853 @@@QName: xp.ENTITY.predefined.1.test
12854 @@@DEnt:
12855 @@@@test:value:
12856 <!DOCTYPE a [
12857 <!ENTITY lt "&#38;#60;">
12858 <!ENTITY gt "&#62;">
12859 <!ENTITY amp "&#38;#38;">
12860 <!ENTITY apos "&#39;">
12861 <!ENTITY quot "&#34;">
12862 <!ENTITY e "f">
12863 ]><a>&lt;&gt;&amp;&apos;&quot;</a>
12864 @@@cfg:entity-replacement-tree: 1
12865 @@@test:domTree:
12866 document {
12867 document-type {
12868 general-entity {
12869 node-name: 'e';
12870 text-content: 'f';
12871 }
12872 }
12873 element {
12874 text-content: '<>&' U+0027 '"';
12875 }
12876 }
12877 @@XMLTest:
12878 @@@QName: xp.ENTITY.predefined.2.test
12879 @@@DEnt:
12880 @@@@test:value:
12881 <!DOCTYPE a [
12882 <!ENTITY lt "&#38;#60;">
12883 <!ENTITY gt "&#x26;#62;">
12884 <!ENTITY amp "&#38;#38;">
12885 <!ENTITY apos "&#x26;#39;">
12886 <!ENTITY quot "&#x26;#34;">
12887 <!ENTITY e "f">
12888 ]><a>&lt;&gt;&amp;&apos;&quot;</a>
12889 @@@cfg:entity-replacement-tree: 1
12890 @@@test:domTree:
12891 document {
12892 document-type {
12893 general-entity {
12894 node-name: 'e';
12895 text-content: 'f';
12896 }
12897 }
12898 element {
12899 text-content: '<>&' U+0027 '"';
12900 }
12901 }
12902 @@XMLTest:
12903 @@@QName: xp.ENTITY.predefined.3.test
12904 @@@DEnt:
12905 @@@@test:value:
12906 <!DOCTYPE a [
12907 <!ENTITY lt "&#60;">
12908 <!ENTITY gt "&#62;">
12909 <!ENTITY amp "&#38;">
12910 <!ENTITY apos "&#39;">
12911 <!ENTITY quot "&#34;">
12912 <!ENTITY e "f">
12913 ]><a>&lt;&gt;&amp;&apos;&quot;</a>
12914 @@@cfg:entity-replacement-tree: 1
12915 @@@c:erred: <[[xp|error-malformed-predefined-entity]]> { (2, 1)..(2, 24); }
12916 @@@c:erred: <[[xp|error-malformed-predefined-entity]]> { (4, 1)..(4, 24); }
12917 @@@test:domTree:
12918 document {
12919 document-type {
12920 general-entity {
12921 node-name: 'e';
12922 text-content: 'f';
12923 }
12924 }
12925 element {
12926 text-content: '<>&' U+0027 '"';
12927 }
12928 }
12929 @@XMLTest:
12930 @@@QName: xp.ENTITY.predefined.4.test
12931 @@@DEnt:
12932 @@@@test:value:
12933 <!DOCTYPE a [
12934 <!ENTITY lt "1">
12935 <!ENTITY gt "2">
12936 <!ENTITY amp "3">
12937 <!ENTITY apos "4">
12938 <!ENTITY quot "5">
12939 <!ENTITY e "f">
12940 ]><a>&lt;&gt;&amp;&apos;&quot;</a>
12941 @@@cfg:entity-replacement-tree: 1
12942 @@@c:erred: <[[xp|error-malformed-predefined-entity]]> { (2, 1)..(2, 24); }
12943 @@@c:erred: <[[xp|error-malformed-predefined-entity]]> { (3, 1)..(3, 24); }
12944 @@@c:erred: <[[xp|error-malformed-predefined-entity]]> { (4, 1)..(4, 24); }
12945 @@@c:erred: <[[xp|error-malformed-predefined-entity]]> { (5, 1)..(5, 24); }
12946 @@@c:erred: <[[xp|error-malformed-predefined-entity]]> { (6, 1)..(6, 24); }
12947 @@@test:domTree:
12948 document {
12949 document-type {
12950 general-entity {
12951 node-name: 'e';
12952 text-content: 'f';
12953 }
12954 }
12955 element {
12956 text-content: '<>&' U+0027 '"';
12957 }
12958 }
12959 @@XMLTest:
12960 @@@QName: xp.ENTITY.predefined.5.test
12961 @@@DEnt:
12962 @@@@test:value:
12963 <!DOCTYPE a [
12964 <!ENTITY lt SYSTEM "1">
12965 <!ENTITY gt SYSTEM "2">
12966 <!ENTITY amp SYSTEM "3">
12967 <!ENTITY apos SYSTEM "4">
12968 <!ENTITY quot SYSTEM "5">
12969 <!ENTITY e "f">
12970 ]><a>&lt;&gt;&amp;&apos;&quot;</a>
12971 @@@cfg:entity-replacement-tree: 1
12972 @@@c:erred: <[[xp|error-internal-predefined-entity]]> { (2, 1)..(2, 27); }
12973 @@@c:erred: <[[xp|error-internal-predefined-entity]]> { (3, 1)..(3, 27); }
12974 @@@c:erred: <[[xp|error-internal-predefined-entity]]> { (4, 1)..(4, 27); }
12975 @@@c:erred: <[[xp|error-internal-predefined-entity]]> { (5, 1)..(5, 27); }
12976 @@@c:erred: <[[xp|error-internal-predefined-entity]]> { (6, 1)..(6, 27); }
12977 @@@test:domTree:
12978 document {
12979 document-type {
12980 general-entity {
12981 node-name: 'e';
12982 text-content: 'f';
12983 }
12984 }
12985 element {
12986 text-content: '<>&' U+0027 '"';
12987 }
12988 }
12989 @@XMLTest:
12990 @@@QName: xp.ENTITY.predefined.6.test
12991 @@@DEnt:
12992 @@@@test:value:
12993 <!DOCTYPE a [
12994 <!ENTITY % lt SYSTEM "1">
12995 <!ENTITY % gt SYSTEM "2">
12996 <!ENTITY % amp SYSTEM "3">
12997 <!ENTITY % apos SYSTEM "4">
12998 <!ENTITY % quot SYSTEM "5">
12999 <!ENTITY e "f">
13000 ]><a>&lt;&gt;&amp;&apos;&quot;</a>
13001 @@@cfg:entity-replacement-tree: 1
13002 @@@test:domTree:
13003 document {
13004 document-type {
13005 general-entity {
13006 node-name: 'e';
13007 text-content: 'f';
13008 }
13009 }
13010 element {
13011 text-content: '<>&' U+0027 '"';
13012 }
13013 }
13014 @@XMLTest:
13015 @@@QName: xp.ENTITY.predefined.7.test
13016 @@@DEnt:
13017 @@@@test:value:
13018 <!DOCTYPE a [
13019 <!ENTITY lt "&#38;#x3C;">
13020 <!ENTITY gt "&#x3E;">
13021 <!ENTITY amp "&#38;#x26;">
13022 <!ENTITY apos "&#x27;">
13023 <!ENTITY quot "&#x22;">
13024 <!ENTITY e "f">
13025 ]><a>&lt;&gt;&amp;&apos;&quot;</a>
13026 @@@cfg:entity-replacement-tree: 1
13027 @@@test:domTree:
13028 document {
13029 document-type {
13030 general-entity {
13031 node-name: 'e';
13032 text-content: 'f';
13033 }
13034 }
13035 element {
13036 text-content: '<>&' U+0027 '"';
13037 }
13038 }
13039 @@XMLTest:
13040 @@@QName: xp.ENTITY.predefined.8.test
13041 @@@DEnt:
13042 @@@@test:value:
13043 <!DOCTYPE a [
13044 <!ENTITY lt "&#38;#x3c;">
13045 <!ENTITY gt "&#x3e;">
13046 <!ENTITY amp "&#38;#x26;">
13047 <!ENTITY apos "&#x27;">
13048 <!ENTITY quot "&#x22;">
13049 <!ENTITY e "f">
13050 ]><a>&lt;&gt;&amp;&apos;&quot;</a>
13051 @@@cfg:entity-replacement-tree: 1
13052 @@@test:domTree:
13053 document {
13054 document-type {
13055 general-entity {
13056 node-name: 'e';
13057 text-content: 'f';
13058 }
13059 }
13060 element {
13061 text-content: '<>&' U+0027 '"';
13062 }
13063 }
13064 @@XMLTest:
13065 @@@QName: xp.ENTITY.predefined.9.test
13066 @@@DEnt:
13067 @@@@test:value:
13068 <!DOCTYPE a [
13069 <!ENTITY lt "&#38;#x00003C;">
13070 <!ENTITY gt "&#x0003E;">
13071 <!ENTITY amp "&#38;#x026;">
13072 <!ENTITY apos "&#x000027;">
13073 <!ENTITY quot "&#x0022;">
13074 <!ENTITY e "f">
13075 ]><a>&lt;&gt;&amp;&apos;&quot;</a>
13076 @@@cfg:entity-replacement-tree: 1
13077 @@@test:domTree:
13078 document {
13079 document-type {
13080 general-entity {
13081 node-name: 'e';
13082 text-content: 'f';
13083 }
13084 }
13085 element {
13086 text-content: '<>&' U+0027 '"';
13087 }
13088 }
13089 @@XMLTest:
13090 @@@QName: xp.ENTITY.predefined.10.test
13091 @@@DEnt:
13092 @@@@test:value:
13093 <!DOCTYPE a [
13094 <!ENTITY lt "&#38;#00060;">
13095 <!ENTITY gt "&#062;">
13096 <!ENTITY amp "&#38;#000038;">
13097 <!ENTITY apos "&#0000039;">
13098 <!ENTITY quot "&#0034;">
13099 <!ENTITY e "f">
13100 ]><a>&lt;&gt;&amp;&apos;&quot;</a>
13101 @@@cfg:entity-replacement-tree: 1
13102 @@@test:domTree:
13103 document {
13104 document-type {
13105 general-entity {
13106 node-name: 'e';
13107 text-content: 'f';
13108 }
13109 }
13110 element {
13111 text-content: '<>&' U+0027 '"';
13112 }
13113 }
13114
13115 @@XMLTest:
13116 @@@QName: xp.processed.1.test
13117 @@@DEnt:
13118 @@@@test:value:
13119 <a/>
13120 @@@test:domTree:
13121 document {
13122 all-declarations-processed: true;
13123 element { }
13124 }
13125 @@XMLTest:
13126 @@@QName: xp.processed.2.test
13127 @@@DEnt:
13128 @@@@test:value:
13129 <!DOCTYPE a [
13130 <!ENTITY e "f">
13131 <!ATTLIST a b NMTOKEN " c ">
13132 ]><a>&e;</a>
13133 @@@test:domTree:
13134 document {
13135 document-type {
13136 general-entity {
13137 node-name: 'e';
13138 }
13139 element-type-definition {
13140 node-name: 'a';
13141 attribute-definition {
13142 node-name: 'b';
13143 }
13144 }
13145 }
13146 all-declarations-processed: true;
13147 element {
13148 attribute {
13149 node-name: 'b';
13150 node-value: 'c';
13151 }
13152 text-content: 'f';
13153 }
13154 }
13155 @@XMLTest:
13156 @@@QName: xp.processed.3.test
13157 @@@DEnt:
13158 @@@@test:value:
13159 <!DOCTYPE a [
13160 <!ENTITY % p SYSTEM "p">
13161 %p;
13162 <!ENTITY e "f">
13163 <!ATTLIST a b NMTOKEN " c ">
13164 ]><a d="e">&e;</a>
13165 @@@test:domTree:
13166 document {
13167 document-type { }
13168 all-declarations-processed: false;
13169 element {
13170 attribute {
13171 node-name: 'd';
13172 node-value: 'e';
13173 }
13174 general-entity-reference {
13175 node-name: 'e';
13176 manakai-expanded: false;
13177 }
13178 }
13179 }
13180 @@@c:erred:
13181 <[[xp|warning-entity-declaration-not-processed]]> { (4, 1)..(4, 20); }
13182 @@@c:erred:
13183 <[[xp|warning-attribute-definition-not-processed]]> { (5, 13)..(5, 31); }
13184 @@XMLTest:
13185 @@@QName: xp.processed.4.test
13186 @@@DEnt:
13187 @@@@test:value:
13188 <?xml version="1.1" standalone="yes"?>
13189 <!DOCTYPE a [
13190 <!ENTITY % p SYSTEM "p">
13191 %p;
13192 <!ENTITY e "f">
13193 <!ATTLIST a b NMTOKEN " c ">
13194 ]><a>&e;</a>
13195 @@@test:domTree:
13196 document {
13197 document-type {
13198 general-entity {
13199 node-name: 'e';
13200 }
13201 element-type-definition {
13202 node-name: 'a';
13203 attribute-definition {
13204 node-name: 'b';
13205 }
13206 }
13207 }
13208 all-declarations-processed: false;
13209 element {
13210 attribute {
13211 node-name: 'b';
13212 node-value: 'c';
13213 }
13214 text-content: 'f';
13215 }
13216 }
13217 @@XMLTest:
13218 @@@QName: xp.processed.5.test
13219 @@@DEnt:
13220 @@@@test:value:
13221 <!DOCTYPE a SYSTEM "p" [
13222 <!ENTITY e "f">
13223 <!ATTLIST a b NMTOKEN " c ">
13224 ]><a>&e;</a>
13225 @@@test:domTree:
13226 document {
13227 document-type {
13228 general-entity {
13229 node-name: 'e';
13230 }
13231 element-type-definition {
13232 node-name: 'a';
13233 attribute-definition {
13234 node-name: 'b';
13235 }
13236 }
13237 }
13238 all-declarations-processed: false;
13239 element {
13240 attribute {
13241 node-name: 'b';
13242 node-value: 'c';
13243 }
13244 text-content: 'f';
13245 }
13246 }
13247
13248 @@XMLTest:
13249 @@@QName: xp.PEs.in.internal.subset.1.test
13250 @@@DEnt:
13251 @@@@test:value:
13252 <!DOCTYPE a [
13253 <!ENTITY % p " ">
13254 <!ENTITY % q "%p;">
13255 ]><a/>
13256 @@@c:erred: <[[xp|wf-pes-in-internal-subset]]> { (3, 15)..(3, 17); }
13257 @@XMLTest:
13258 @@@QName: xp.PEs.in.internal.subset.2.test
13259 @@@DEnt:
13260 @@@@test:value:
13261 <!DOCTYPE a [
13262 <!ENTITY % p " ">
13263 <!ENTITY % q '%p;'>
13264 ]><a/>
13265 @@@c:erred: <[[xp|wf-pes-in-internal-subset]]> { (3, 15)..(3, 17); }
13266
13267 @@XMLTest:
13268 @@@QName: xp.name.pitarget.content.1.0.2.test
13269 @@@DEnt:
13270 @@@@test:value:
13271 <?xml version="1.0"?>
13272 <p>
13273 <?$u3001$u3002?>
13274 </p>
13275 @@@c:erred: <[[xp|wf-invalid-character-in-node-name]]> { (3, 3)..(3, 4); }
13276 @@XMLTest:
13277 @@@QName: xp.name.pitarget.content.1.1.2.test
13278 @@@DEnt:
13279 @@@@test:value:
13280 <?xml version="1.1"?>
13281 <p>$
13282 <?$u3001$u3002?>$
13283 </p>
13284 @@@test:domTree:
13285 document {
13286 xml-version: '1.1';
13287 element {
13288 pi {
13289 node-name: U+3001 U+3002;
13290 }
13291 }
13292 }
13293 @@XMLTest:
13294 @@@QName: xp.name.pitarget.content.1.0.3.test
13295 @@@DEnt:
13296 @@@@test:value:
13297 <?xml version="1.0"?>
13298 <p>
13299 <?$u3005b?>
13300 </p>
13301 @@@c:erred: <[[xp|wf-invalid-character-in-node-name]]> { (3, 3)..(3, 4); }
13302 @@XMLTest:
13303 @@@QName: xp.name.pitarget.content.1.1.3.test
13304 @@@DEnt:
13305 @@@@test:value:
13306 <?xml version="1.1"?>
13307 <p>$
13308 <?$u3005b?>$
13309 </p>
13310 @@@test:domTree:
13311 document {
13312 xml-version: '1.1';
13313 element {
13314 pi {
13315 node-name: U+3005 'b';
13316 }
13317 }
13318 }
13319 @@XMLTest:
13320 @@@QName: xp.name.pitarget.content.names.1.0.1.test
13321 @@@DEnt:
13322 @@@@test:value:
13323 <?xml version="1.0"?>
13324 <p>
13325 <?a:b?>
13326 </p>
13327 @@@c:erred: <[[xp|nswf-legal-ncname]]> { (3, 3)..(3, 5); }
13328 @@XMLTest:
13329 @@@QName: xp.name.pitarget.content.names.1.1.1.test
13330 @@@DEnt:
13331 @@@@test:value:
13332 <?xml version="1.1"?>
13333 <p>
13334 <?a:b?>
13335 </p>
13336 @@@c:erred: <[[xp|nswf-legal-ncname]]> { (3, 3)..(3, 5); }
13337 @@XMLTest:
13338 @@@QName: xp.name.pitarget.intsubset.1.0.2.test
13339 @@@DEnt:
13340 @@@@test:value:
13341 <?xml version="1.0"?>
13342 <!DOCTYPE p [
13343 <?$u3001$u3002?>
13344 ]><p/>
13345 @@@c:erred: <[[xp|wf-invalid-character-in-node-name]]> { (3, 3)..(3, 4); }
13346 @@XMLTest:
13347 @@@QName: xp.name.pitarget.intsubset.1.1.2.test
13348 @@@DEnt:
13349 @@@@test:value:
13350 <?xml version="1.1"?>
13351 <!DOCTYPE p [
13352 <?$u3001$u3002?>
13353 ]><p/>
13354 @@@test:domTree:
13355 document {
13356 xml-version: '1.1';
13357 document-type {
13358 pi {
13359 node-name: U+3001 U+3002;
13360 }
13361 }
13362 element { }
13363 }
13364 @@XMLTest:
13365 @@@QName: xp.name.pitarget.intsubset.1.0.3.test
13366 @@@DEnt:
13367 @@@@test:value:
13368 <?xml version="1.0"?>
13369 <!DOCTYPE p [
13370 <?$u3005b?>
13371 ]><p/>
13372 @@@c:erred: <[[xp|wf-invalid-character-in-node-name]]> { (3, 3)..(3, 4); }
13373 @@XMLTest:
13374 @@@QName: xp.name.pitarget.intsubset.1.1.3.test
13375 @@@DEnt:
13376 @@@@test:value:
13377 <?xml version="1.1"?>
13378 <!DOCTYPE p [
13379 <?$u3005b?>
13380 ]><p/>
13381 @@@test:domTree:
13382 document {
13383 xml-version: '1.1';
13384 document-type {
13385 pi {
13386 node-name: U+3005 'b';
13387 }
13388 }
13389 element { }
13390 }
13391 @@XMLTest:
13392 @@@QName: xp.name.pitarget.intsubset.names.1.0.1.test
13393 @@@DEnt:
13394 @@@@test:value:
13395 <?xml version="1.0"?>
13396 <!DOCTYPE p [
13397 <?a:b?>
13398 ]><p/>
13399 @@@c:erred: <[[xp|nswf-legal-ncname]]> { (3, 3)..(3, 5); }
13400 @@XMLTest:
13401 @@@QName: xp.name.pitarget.intsubset.names.1.1.1.test
13402 @@@DEnt:
13403 @@@@test:value:
13404 <?xml version="1.1"?>
13405 <!DOCTYPE p [
13406 <?a:b?>
13407 ]><p/>
13408 @@@c:erred: <[[xp|nswf-legal-ncname]]> { (3, 3)..(3, 5); }
13409 @@XMLTest:
13410 @@@QName: xp.name.doctypedecl.stag.etag.1.0.2.test
13411 @@@DEnt:
13412 @@@@test:value:
13413 <?xml version="1.0"?>
13414 <!DOCTYPE $u3001$u3002>
13415 <$u3001$u3002>
13416 </$u3001$u3002>
13417 @@@c:erred: <[[xp|wf-invalid-character-in-node-name]]>{ (2, 11)..(2, 12); }
13418 @@@c:erred: <[[xp|wf-invalid-character-in-node-name]]>{ (3, 2)..(3, 3); }
13419 # @@@c:erred: <[[xp|wf-invalid-character-in-node-name]]>{ (4, 3)..(4, 4); }
13420 @@XMLTest:
13421 @@@QName: xp.name.doctypedecl.stag.etag.1.1.2.test
13422 @@@DEnt:
13423 @@@@test:value:
13424 <?xml version="1.1"?>
13425 <!DOCTYPE $u3001$u3002>
13426 <$u3001$u3002>
13427 </$u3001$u3002>
13428 @@@test:domTree:
13429 document {
13430 xml-version: '1.1';
13431 document-type {
13432 node-name: U+3001 U+3002;
13433 }
13434 element {
13435 node-name: U+3001 U+3002;
13436 }
13437 }
13438 @@XMLTest:
13439 @@@QName: xp.name.doctypedecl.stag.etag.1.0.3.test
13440 @@@DEnt:
13441 @@@@test:value:
13442 <?xml version="1.0"?>
13443 <!DOCTYPE $u3005b>
13444 <$u3005b>
13445 </$u3005b>
13446 @@@c:erred: <[[xp|wf-invalid-character-in-node-name]]>{ (2, 11)..(2, 12); }
13447 @@@c:erred: <[[xp|wf-invalid-character-in-node-name]]>{ (3, 2)..(3, 3); }
13448 # @@@c:erred: <[[xp|wf-invalid-character-in-node-name]]>{ (4, 3)..(4, 4); }
13449 @@XMLTest:
13450 @@@QName: xp.name.doctype.decl.stag.etag.1.1.3.test
13451 @@@DEnt:
13452 @@@@test:value:
13453 <?xml version="1.1"?>
13454 <!DOCTYPE $u3005b>
13455 <$u3005b>
13456 </$u3005b>
13457 @@@test:domTree:
13458 document {
13459 xml-version: '1.1';
13460 document-type {
13461 node-name: U+3005 'b';
13462 }
13463 element {
13464 node-name: U+3005 'b';
13465 }
13466 }
13467 @@XMLTest:
13468 @@@QName: xp.name.doctypedecl.stag.etag.names.1.0.1.test
13469 @@@DEnt:
13470 @@@@test:value:
13471 <?xml version="1.0"?>
13472 <!DOCTYPE a:b>
13473 <a:b xmlns:a="http://a.example/">
13474 </a:b>
13475 @@@test:domTree:
13476 document {
13477 xml-version: '1.0';
13478 document-type {
13479 node-name: 'a:b';
13480 }
13481 element {
13482 prefix: 'a';
13483 local-name: 'b';
13484 namespace-uri: 'http://a.example/';
13485 attribute {
13486 namespace-uri: 'http://www.w3.org/2000/xmlns/';
13487 prefix: 'xmlns';
13488 local-name: 'a';
13489 value: 'http://a.example/';
13490 specified: true;
13491 }
13492 }
13493 }
13494 @@XMLTest:
13495 @@@QName: xp.name.doctypedecl.stag.etag.names.1.1.1.test
13496 @@@DEnt:
13497 @@@@test:value:
13498 <?xml version="1.1"?>
13499 <!DOCTYPE a:b>
13500 <a:b xmlns:a="http://a.example/">
13501 </a:b>
13502 @@@test:domTree:
13503 document {
13504 xml-version: '1.1';
13505 document-type {
13506 node-name: 'a:b';
13507 }
13508 element {
13509 prefix: 'a';
13510 local-name: 'b';
13511 namespace-uri: 'http://a.example/';
13512 attribute {
13513 namespace-uri: 'http://www.w3.org/2000/xmlns/';
13514 prefix: 'xmlns';
13515 local-name: 'a';
13516 specified: true;
13517 }
13518 }
13519 }
13520 @@XMLTest:
13521 @@@QName: xp.name.doctypedecl.stag.etag.names.1.0.2.test
13522 @@@DEnt:
13523 @@@@test:value:
13524 <?xml version="1.0"?>
13525 <!DOCTYPE :ab>
13526 <:ab>
13527 </:ab>
13528 @@@c:erred: <[[xp|nswf-legal-qname]]> { (2, 11)..(2, 13); }
13529 @@@c:erred: <[[xp|nswf-legal-qname]]> { (3, 2)..(3, 4); }
13530 @@@c:erred: <[[xp|nsc-prefix-declared]]> { /* prefix || */ }
13531 @@XMLTest:
13532 @@@QName: xp.name.doctypedecl.stag.etag.names.1.1.2.test
13533 @@@DEnt:
13534 @@@@test:value:
13535 <?xml version="1.1"?>
13536 <!DOCTYPE :ab>
13537 <:ab>
13538 </:ab>
13539 @@@c:erred: <[[xp|nswf-legal-qname]]> { (2, 11)..(2, 13); }
13540 @@@c:erred: <[[xp|nswf-legal-qname]]> { (3, 2)..(3, 4); }
13541 @@@c:erred: <[[xp|nsc-prefix-declared]]> { /* prefix || */ }
13542 @@XMLTest:
13543 @@@QName: xp.name.doctypedecl.stag.etag.names.1.0.3.test
13544 @@@DEnt:
13545 @@@@test:value:
13546 <?xml version="1.0"?>
13547 <!DOCTYPE a:$u3005>
13548 <a:$u3005 xmlns:a="http://a.example/">
13549 </a:$u3005>
13550 @@@c:erred: <[[xp|nswf-legal-qname]]> { (2, 11)..(2, 13); }
13551 @@@c:erred: <[[xp|nswf-legal-qname]]> { (3, 2)..(3, 4); }
13552 @@XMLTest:
13553 @@@QName: xp.name.doctypedecl.stag.etag.names.1.1.3.test
13554 @@@DEnt:
13555 @@@@test:value:
13556 <?xml version="1.1"?>
13557 <!DOCTYPE a:$u3005>
13558 <a:$u3005 xmlns:a="http://a.example/">
13559 </a:$u3005>
13560 @@@test:domTree:
13561 document {
13562 xml-version: '1.1';
13563 document-type {
13564 node-name: 'a:' U+3005;
13565 }
13566 element {
13567 prefix: 'a';
13568 local-name: U+3005;
13569 namespace-uri: 'http://a.example/';
13570 attribute {
13571 namespace-uri: 'http://www.w3.org/2000/xmlns/';
13572 prefix: 'xmlns';
13573 local-name: 'a';
13574 value: 'http://a.example/';
13575 specified: true;
13576 }
13577 }
13578 }
13579 @@XMLTest:
13580 @@@QName: xp.name.doctypedecl.stag.etag.names.1.0.4.test
13581 @@@DEnt:
13582 @@@@test:value:
13583 <?xml version="1.0"?>
13584 <!DOCTYPE a:b>
13585 <a:b>
13586 </a:b>
13587 @@@c:erred: <[[xp|nsc-prefix-declared]]> { (3, 1)..(3, 5); }
13588 @@XMLTest:
13589 @@@QName: xp.name.doctypedecl.stag.etag.names.1.1.4.test
13590 @@@DEnt:
13591 @@@@test:value:
13592 <?xml version="1.1"?>
13593 <!DOCTYPE a:b>
13594 <a:b>
13595 </a:b>
13596 @@@c:erred: <[[xp|nsc-prefix-declared]]> { (3, 1)..(3, 5); }
13597 @@XMLTest:
13598 @@@QName: xp.name.emptyelemtag.1.0.2.test
13599 @@@DEnt:
13600 @@@@test:value:
13601 <?xml version="1.0"?>
13602 <$u3001$u3002/>
13603 @@@c:erred: <[[xp|wf-invalid-character-in-node-name]]>{ (2, 2)..(2, 3); }
13604 @@XMLTest:
13605 @@@QName: xp.name.emptyelemtag.1.1.2.test
13606 @@@DEnt:
13607 @@@@test:value:
13608 <?xml version="1.1"?>
13609 <$u3001$u3002/>
13610 @@@test:domTree:
13611 document {
13612 xml-version: '1.1';
13613 element {
13614 node-name: U+3001 U+3002;
13615 }
13616 }
13617 @@XMLTest:
13618 @@@QName: xp.name.emptyelemtag.1.0.3.test
13619 @@@DEnt:
13620 @@@@test:value:
13621 <?xml version="1.0"?>
13622 <$u3005b/>
13623 @@@c:erred: <[[xp|wf-invalid-character-in-node-name]]>{ (2, 2)..(2, 3); }
13624 @@XMLTest:
13625 @@@QName: xp.name.emptyelemtag.1.1.3.test
13626 @@@DEnt:
13627 @@@@test:value:
13628 <?xml version="1.1"?>
13629 <$u3005b/>
13630 @@@test:domTree:
13631 document {
13632 xml-version: '1.1';
13633 element {
13634 node-name: U+3005 'b';
13635 }
13636 }
13637 @@XMLTest:
13638 @@@QName: xp.name.emptyelemtag.names.1.0.1.test
13639 @@@DEnt:
13640 @@@@test:value:
13641 <?xml version="1.0"?>
13642 <a:b/>
13643 @@@c:erred: <[[xp|nsc-prefix-declared]]>{ (2, 1)..(2, 6); }
13644 @@XMLTest:
13645 @@@QName: xp.name.emptyelemtag.names.1.1.1.test
13646 @@@DEnt:
13647 @@@@test:value:
13648 <?xml version="1.1"?>
13649 <a:b/>
13650 @@@c:erred: <[[xp|nsc-prefix-declared]]>{ (2, 1)..(2, 6); }
13651 @@XMLTest:
13652 @@@QName: xp.name.attr.1.0.2.test
13653 @@@DEnt:
13654 @@@@test:value:
13655 <?xml version="1.0"?>
13656 <a $u3001$u3002=""/>
13657 @@@c:erred: <[[xp|wf-invalid-character-in-node-name]]>{ (2, 4)..(2, 5); }
13658 @@XMLTest:
13659 @@@QName: xp.name.attr.1.1.2.test
13660 @@@DEnt:
13661 @@@@test:value:
13662 <?xml version="1.1"?>
13663 <a $u3001$u3002=""/>
13664 @@@test:domTree:
13665 document {
13666 xml-version: '1.1';
13667 element {
13668 attribute {
13669 node-name: U+3001 U+3002;
13670 }
13671 }
13672 }
13673 @@XMLTest:
13674 @@@QName: xp.name.attr.1.0.3.test
13675 @@@DEnt:
13676 @@@@test:value:
13677 <?xml version="1.0"?>
13678 <a $u3005b=""/>
13679 @@@c:erred: <[[xp|wf-invalid-character-in-node-name]]>{ (2, 4)..(2, 5); }
13680 @@XMLTest:
13681 @@@QName: xp.name.attr.1.1.3.test
13682 @@@DEnt:
13683 @@@@test:value:
13684 <?xml version="1.1"?>
13685 <a $u3005b=""/>
13686 @@@test:domTree:
13687 document {
13688 xml-version: '1.1';
13689 element {
13690 attribute {
13691 node-name: U+3005 'b';
13692 }
13693 }
13694 }
13695 @@XMLTest:
13696 @@@QName: xp.name.attr.names.1.0.1.test
13697 @@@DEnt:
13698 @@@@test:value:
13699 <?xml version="1.0"?>
13700 <a a:b=""/>
13701 @@@c:erred: <[[xp|nsc-prefix-declared]]>{ (2, 1)..(2, 11); }
13702 @@XMLTest:
13703 @@@QName: xp.name.attr.names.1.1.1.test
13704 @@@DEnt:
13705 @@@@test:value:
13706 <?xml version="1.1"?>
13707 <a a:b=""/>
13708 @@@c:erred: <[[xp|nsc-prefix-declared]]>{ (2, 1)..(2, 11); }
13709 @@XMLTest:
13710 @@@QName: xp.name.attr.names.1.0.2.test
13711 @@@DEnt:
13712 @@@@test:value:
13713 <?xml version="1.0"?>
13714 <a :ab=""/>
13715 @@@c:erred: <[[xp|nswf-legal-qname]]>{ (2, 4)..(2, 6); }
13716 @@@c:erred: <[[xp|nsc-prefix-declared]]> { }
13717 @@XMLTest:
13718 @@@QName: xp.name.attr.names.1.1.2.test
13719 @@@DEnt:
13720 @@@@test:value:
13721 <?xml version="1.1"?>
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.attlist.1.0.2.test
13727 @@@DEnt:
13728 @@@@test:value:
13729 <?xml version="1.0"?>
13730 <!DOCTYPE p [
13731 <!NOTATION $u3001$u3002 SYSTEM "n">
13732 <!ATTLIST $u3001$u3002
13733 $u3001$u3002
13734 NOTATION
13735 ($u3001$u3002)
13736 #IMPLIED>
13737 ]><p/>
13738 @@@c:erred: <[[xp|wf-invalid-character-in-node-name]]>{ (3, 12)..(3, 13); }
13739 @@@c:erred: <[[xp|wf-invalid-character-in-node-name]]>{ (4, 11)..(4, 12); }
13740 @@@c:erred: <[[xp|wf-invalid-character-in-node-name]]>{ (5, 1)..(5, 2); }
13741 @@@c:erred: <[[xp|wf-invalid-character-in-node-name]]>{ (7, 2)..(7, 3); }
13742 @@XMLTest:
13743 @@@QName: xp.name.attlist.1.1.2.test
13744 @@@DEnt:
13745 @@@@test:value:
13746 <?xml version="1.1"?>
13747 <!DOCTYPE p [
13748 <!NOTATION $u3001$u3002 SYSTEM "n">
13749 <!ATTLIST $u3001$u3002
13750 $u3001$u3002
13751 NOTATION
13752 ($u3001$u3002)
13753 #IMPLIED>
13754 ]><p/>
13755 @@@test:domTree:
13756 document {
13757 xml-version: '1.1';
13758 document-type {
13759 notation {
13760 node-name: U+3001 U+3002;
13761 }
13762 element-type-definition {
13763 node-name: U+3001 U+3002;
13764 attribute-definition {
13765 node-name: U+3001 U+3002;
13766 allowed-tokens: DOMStringList (U+3001 U+3002);
13767 }
13768 }
13769 }
13770 element { }
13771 }
13772 @@XMLTest:
13773 @@@QName: xp.name.attlist.1.0.3.test
13774 @@@DEnt:
13775 @@@@test:value:
13776 <?xml version="1.0"?>
13777 <!DOCTYPE p [
13778 <!NOTATION $u3005b SYSTEM "n">
13779 <!ATTLIST $u3005b
13780 $u3005b
13781 NOTATION
13782 ($u3005b)
13783 #IMPLIED>
13784 ]><p/>
13785 @@@c:erred: <[[xp|wf-invalid-character-in-node-name]]>{ (3, 12)..(3, 13); }
13786 @@@c:erred: <[[xp|wf-invalid-character-in-node-name]]>{ (4, 11)..(4, 12); }
13787 @@@c:erred: <[[xp|wf-invalid-character-in-node-name]]>{ (5, 1)..(5, 2); }
13788 @@@c:erred: <[[xp|wf-invalid-character-in-node-name]]>{ (7, 2)..(7, 3); }
13789 @@XMLTest:
13790 @@@QName: xp.name.attlist.1.1.3.test
13791 @@@DEnt:
13792 @@@@test:value:
13793 <?xml version="1.1"?>
13794 <!DOCTYPE p [
13795 <!NOTATION $u3005b SYSTEM "n">
13796 <!ATTLIST $u3005b
13797 $u3005b
13798 NOTATION
13799 ($u3005b)
13800 #IMPLIED>
13801 ]><p/>
13802 @@@test:domTree:
13803 document {
13804 xml-version: '1.1';
13805 document-type {
13806 notation {
13807 node-name: U+3005 'b';
13808 }
13809 element-type-definition {
13810 node-name: U+3005 'b';
13811 attribute-definition {
13812 node-name: U+3005 'b';
13813 allowed-tokens: DOMStringList (U+3005 'b');
13814 }
13815 }
13816 }
13817 element { }
13818 }
13819 @@XMLTest:
13820 @@@QName: xp.name.attlist.names.1.0.1.test
13821 @@@DEnt:
13822 @@@@test:value:
13823 <?xml version="1.0"?>
13824 <!DOCTYPE p [
13825 <!NOTATION a:b SYSTEM "n">
13826 <!ATTLIST a:b
13827 a:b
13828 NOTATION
13829 (a:b)
13830 #IMPLIED>
13831 ]><p/>
13832 @@@c:erred: <[[xp|nswf-legal-ncname]]>{ (3, 12)..(3, 14); }
13833 @@@c:erred: <[[xp|nswf-legal-ncname]]>{ (7, 2)..(7, 4); }
13834 @@XMLTest:
13835 @@@QName: xp.name.attlist.names.1.1.1.test
13836 @@@DEnt:
13837 @@@@test:value:
13838 <?xml version="1.1"?>
13839 <!DOCTYPE p [
13840 <!NOTATION a:b SYSTEM "n">
13841 <!ATTLIST a:b
13842 a:b
13843 NOTATION
13844 (a:b)
13845 #IMPLIED>
13846 ]><p/>
13847 @@@c:erred: <[[xp|nswf-legal-ncname]]>{ (3, 12)..(3, 14); }
13848 @@@c:erred: <[[xp|nswf-legal-ncname]]>{ (7, 2)..(7, 4); }
13849 @@XMLTest:
13850 @@@QName: xp.name.attlist.names.1.0.2.test
13851 @@@DEnt:
13852 @@@@test:value:
13853 <?xml version="1.0"?>
13854 <!DOCTYPE p [
13855 <!NOTATION :ab SYSTEM "n">
13856 <!ATTLIST :ab
13857 :ab
13858 NOTATION
13859 (:ab)
13860 #IMPLIED>
13861 ]><p/>
13862 @@@c:erred: <[[xp|nswf-legal-ncname]]>{ (3, 12)..(3, 14); }
13863 @@@c:erred: <[[xp|nswf-legal-qname]]>{ (4, 11)..(4, 13); }
13864 @@@c:erred: <[[xp|nswf-legal-qname]]>{ (5, 1)..(5, 3); }
13865 @@@c:erred: <[[xp|nswf-legal-ncname]]>{ (7, 2)..(7, 4); }
13866 @@XMLTest:
13867 @@@QName: xp.name.attlist.names.1.1.2.test
13868 @@@DEnt:
13869 @@@@test:value:
13870 <?xml version="1.1"?>
13871 <!DOCTYPE p [
13872 <!NOTATION :ab SYSTEM "n">
13873 <!ATTLIST :ab
13874 :ab
13875 NOTATION
13876 (:ab)
13877 #IMPLIED>
13878 ]><p/>
13879 @@@c:erred: <[[xp|nswf-legal-ncname]]>{ (3, 12)..(3, 14); }
13880 @@@c:erred: <[[xp|nswf-legal-qname]]>{ (4, 11)..(4, 13); }
13881 @@@c:erred: <[[xp|nswf-legal-qname]]>{ (5, 1)..(5, 3); }
13882 @@@c:erred: <[[xp|nswf-legal-ncname]]>{ (7, 2)..(7, 4); }
13883 @@XMLTest:
13884 @@@QName: xp.name.gent.1.0.2.test
13885 @@@DEnt:
13886 @@@@test:value:
13887 <?xml version="1.0"?>
13888 <!DOCTYPE p [
13889 <!ENTITY $u3001$u3002 "n">
13890 ]>
13891 <p a="&$u3001$u3002;">
13892 &$u3001$u3002;
13893 </p>
13894 @@@c:erred: <[[xp|wf-invalid-character-in-node-name]]>{ (3, 10)..(3, 11); }
13895 @@@c:erred: <[[xp|wf-invalid-character-in-node-name]]>{ (5, 8)..(5, 9); }
13896 @@@c:erred: <[[xp|wf-invalid-character-in-node-name]]>{ (6, 2)..(6, 3); }
13897 @@XMLTest:
13898 @@@QName: xp.name.ger.1.1.2.test
13899 @@@DEnt:
13900 @@@@test:value:
13901 <?xml version="1.1"?>
13902 <!DOCTYPE p [
13903 <!ENTITY $u3001$u3002 "n">
13904 ]>
13905 <p a="&$u3001$u3002;">$
13906 &$u3001$u3002;$
13907 </p>
13908 @@@test:domTree:
13909 document {
13910 xml-version: '1.1';
13911 document-type {
13912 general-entity {
13913 node-name: U+3001 U+3002;
13914 }
13915 }
13916 element {
13917 attribute {
13918 node-name: 'a';
13919 general-entity-reference {
13920 node-name: U+3001 U+3002;
13921 }
13922 }
13923 general-entity-reference {
13924 node-name: U+3001 U+3002;
13925 }
13926 }
13927 }
13928 @@XMLTest:
13929 @@@QName: xp.name.ger.1.0.3.test
13930 @@@DEnt:
13931 @@@@test:value:
13932 <?xml version="1.0"?>
13933 <!DOCTYPE p [
13934 <!ENTITY $u3005b "n">
13935 ]>
13936 <p a="&$u3005b;">
13937 &$u3005b;
13938 </p>
13939 @@@c:erred: <[[xp|wf-invalid-character-in-node-name]]>{ (3, 10)..(3, 11); }
13940 @@@c:erred: <[[xp|wf-invalid-character-in-node-name]]>{ (5, 8)..(5, 9); }
13941 @@@c:erred: <[[xp|wf-invalid-character-in-node-name]]>{ (6, 2)..(6, 3); }
13942 @@XMLTest:
13943 @@@QName: xp.name.ger.1.1.3.test
13944 @@@DEnt:
13945 @@@@test:value:
13946 <?xml version="1.1"?>
13947 <!DOCTYPE p [
13948 <!ENTITY $u3005b "n">
13949 ]>
13950 <p a="&$u3005b;">$
13951 &$u3005b;$
13952 </p>
13953 @@@test:domTree:
13954 document {
13955 xml-version: '1.1';
13956 document-type {
13957 general-entity {
13958 node-name: U+3005 'b';
13959 }
13960 }
13961 element {
13962 attribute {
13963 node-name: 'a';
13964 general-entity-reference {
13965 node-name: U+3005 'b';
13966 }
13967 }
13968 general-entity-reference {
13969 node-name: U+3005 'b';
13970 }
13971 }
13972 }
13973 @@XMLTest:
13974 @@@QName: xp.name.ger.names.1.0.1.test
13975 @@@DEnt:
13976 @@@@test:value:
13977 <?xml version="1.0"?>
13978 <!DOCTYPE p [
13979 <!ENTITY a:b "n">
13980 ]>
13981 <p a="&a:b;">
13982 &a:b;
13983 </p>
13984 @@@c:erred: <[[xp|nswf-legal-ncname]]>{ (3, 10)..(3, 12); }
13985 @@@c:erred: <[[xp|nswf-legal-ncname]]>{ (5, 8)..(5, 10); }
13986 @@@c:erred: <[[xp|nswf-legal-ncname]]>{ (6, 2)..(6, 4); }
13987 @@XMLTest:
13988 @@@QName: xp.name.ger.names.1.1.1.test
13989 @@@DEnt:
13990 @@@@test:value:
13991 <?xml version="1.1"?>
13992 <!DOCTYPE p [
13993 <!ENTITY a:b "n">
13994 ]>
13995 <p a="&a:b;">
13996 &a:b;
13997 </p>
13998 @@@c:erred: <[[xp|nswf-legal-ncname]]>{ (3, 10)..(3, 12); }
13999 @@@c:erred: <[[xp|nswf-legal-ncname]]>{ (5, 8)..(5, 10); }
14000 @@@c:erred: <[[xp|nswf-legal-ncname]]>{ (6, 2)..(6, 4); }
14001 @@XMLTest:
14002 @@@QName: xp.name.ndata.1.0.2.test
14003 @@@DEnt:
14004 @@@@test:value:
14005 <?xml version="1.0"?>
14006 <!DOCTYPE p [
14007 <!NOTATION $u3001$u3002 SYSTEM "n">
14008 <!ENTITY e SYSTEM "s" NDATA $u3001$u3002>
14009 ]><p/>
14010 @@@c:erred: <[[xp|wf-invalid-character-in-node-name]]>{ (3, 12)..(3, 13); }
14011 @@@c:erred: <[[xp|wf-invalid-character-in-node-name]]>{ (4, 29)..(4, 30); }
14012 @@XMLTest:
14013 @@@QName: xp.name.ndata.1.1.2.test
14014 @@@DEnt:
14015 @@@@test:value:
14016 <?xml version="1.1"?>
14017 <!DOCTYPE p [
14018 <!NOTATION $u3001$u3002 SYSTEM "n">
14019 <!ENTITY e SYSTEM "s" NDATA $u3001$u3002>
14020 ]><p/>
14021 @@@test:domTree:
14022 document {
14023 xml-version: '1.1';
14024 document-type {
14025 notation {
14026 node-name: U+3001 U+3002;
14027 }
14028 general-entity {
14029 node-name: 'e';
14030 notation-name: U+3001 U+3002;
14031 }
14032 }
14033 element { }
14034 }
14035 @@XMLTest:
14036 @@@QName: xp.name.ndata.1.0.3.test
14037 @@@DEnt:
14038 @@@@test:value:
14039 <?xml version="1.0"?>
14040 <!DOCTYPE p [
14041 <!NOTATION $u3005b SYSTEM "n">
14042 <!ENTITY e SYSTEM "s" NDATA $u3005b>
14043 ]><p/>
14044 @@@c:erred: <[[xp|wf-invalid-character-in-node-name]]>{ (3, 12)..(3, 13); }
14045 @@@c:erred: <[[xp|wf-invalid-character-in-node-name]]>{ (4, 29)..(4, 30); }
14046 @@XMLTest:
14047 @@@QName: xp.name.ndata.1.1.3.test
14048 @@@DEnt:
14049 @@@@test:value:
14050 <?xml version="1.1"?>
14051 <!DOCTYPE p [
14052 <!NOTATION $u3005b SYSTEM "n">
14053 <!ENTITY e SYSTEM "s" NDATA $u3005b>
14054 ]><p/>
14055 @@@test:domTree:
14056 document {
14057 xml-version: '1.1';
14058 document-type {
14059 notation {
14060 node-name: U+3005 'b';
14061 }
14062 general-entity {
14063 node-name: 'e';
14064 notation-name: U+3005 'b';
14065 }
14066 }
14067 element { }
14068 }
14069 @@XMLTest:
14070 @@@QName: xp.name.ndata.names.1.0.1.test
14071 @@@DEnt:
14072 @@@@test:value:
14073 <?xml version="1.0"?>
14074 <!DOCTYPE p [
14075 <!NOTATION a:b SYSTEM "n">
14076 <!ENTITY e SYSTEM "s" NDATA a:b>
14077 ]><p/>
14078 @@@c:erred: <[[xp|nswf-legal-ncname]]>{ (3, 12)..(3, 14); }
14079 @@@c:erred: <[[xp|nswf-legal-ncname]]>{ (4, 29)..(4, 31); }
14080 @@XMLTest:
14081 @@@QName: xp.name.ndata.names.1.1.1.test
14082 @@@DEnt:
14083 @@@@test:value:
14084 <?xml version="1.1"?>
14085 <!DOCTYPE p [
14086 <!NOTATION a:b SYSTEM "n">
14087 <!ENTITY e SYSTEM "s" NDATA a:b>
14088 ]><p/>
14089 @@@c:erred: <[[xp|nswf-legal-ncname]]>{ (3, 12)..(3, 14); }
14090 @@@c:erred: <[[xp|nswf-legal-ncname]]>{ (4, 29)..(4, 31); }
14091
14092 @@enImplNote:
14093 @@@ddid: wf-invalid-character-in-node-name
14094 @@@@:
14095 {ISSUE::
14096 {P:: Tests required for:
14097
14098 - <CODE::Name> in element type declaration
14099
14100 - <CODE::Name> in model group
14101
14102 - <CODE::Name> in parameter entity declaration
14103
14104 - <CODE::Name> in parameter entity reference
14105
14106 }
14107 }
14108
14109 @@XMLTest:
14110 @@@QName: xp.NOTATION.1.test
14111 @@@DEnt:
14112 @@@@test:value:
14113 <!DOCTYPE p [
14114 <!NOTATION n SYSTEM "m">
14115 ]><p/>
14116 @@@test:domTree:
14117 document {
14118 document-type {
14119 notation {
14120 node-name: 'n';
14121 public-id: null;
14122 system-id: 'm';
14123 }
14124 }
14125 element { }
14126 }
14127 @@XMLTest:
14128 @@@QName: xp.NOTATION.2.test
14129 @@@DEnt:
14130 @@@@test:value:
14131 <!DOCTYPE p [
14132 <!NOTATION n PUBLIC "m">
14133 ]><p/>
14134 @@@test:domTree:
14135 document {
14136 document-type {
14137 notation {
14138 node-name: 'n';
14139 system-id: null;
14140 public-id: 'm';
14141 }
14142 }
14143 element { }
14144 }
14145 @@XMLTest:
14146 @@@QName: xp.NOTATION.3.test
14147 @@@DEnt:
14148 @@@@test:value:
14149 <!DOCTYPE p [
14150 <!NOTATION n PUBLIC "m" "l">
14151 ]><p/>
14152 @@@test:domTree:
14153 document {
14154 document-type {
14155 notation {
14156 node-name: 'n';
14157 public-id: 'm';
14158 system-id: 'l';
14159 }
14160 }
14161 element { }
14162 }
14163 @@XMLTest:
14164 @@@QName: xp.NOTATION.4.test
14165 @@@DEnt:
14166 @@@@test:value:
14167 <!DOCTYPE p [
14168 <!NOTATION n SYSTEM "m">
14169 <!NOTATION n SYSTEM "l">
14170 ]><p/>
14171 @@@c:erred: <[[xp|vc-unique-notation-name]]> { (3, 1)..(3, 24); }
14172 @@@test:domTree:
14173 document {
14174 document-type {
14175 notation {
14176 node-name: 'n';
14177 system-id: 'm';
14178 }
14179 }
14180 element { }
14181 }
14182
14183 @@XMLTest:
14184 @@@QName: xp.names.1.test
14185 @@@DEnt:
14186 @@@@test:value:
14187 <p xmlns="http://1.example/" a="b"/>
14188 @@@test:domTree:
14189 document {
14190 element {
14191 prefix: null;
14192 local-name: 'p';
14193 namespace-uri: 'http://1.example/';
14194 attribute {
14195 prefix: null;
14196 local-name: 'xmlns';
14197 namespace-uri: 'http://www.w3.org/2000/xmlns/';
14198 specified: true;
14199 }
14200 attribute {
14201 prefix: null;
14202 local-name: 'a';
14203 specified: true;
14204 }
14205 }
14206 }
14207 @@XMLTest:
14208 @@@QName: xp.names.2.test
14209 @@@DEnt:
14210 @@@@test:value:
14211 <p xmlns:a="http://1.example/" a="b" a:a="c"/>
14212 @@@test:domTree:
14213 document {
14214 element {
14215 prefix: null;
14216 local-name: 'p';
14217 namespace-uri: null;
14218 attribute {
14219 prefix: 'xmlns';
14220 local-name: 'a';
14221 namespace-uri: 'http://www.w3.org/2000/xmlns/';
14222 specified: true;
14223 }
14224 attribute {
14225 prefix: null;
14226 local-name: 'a';
14227 specified: true;
14228 }
14229 attribute {
14230 prefix: 'a';
14231 local-name: 'a';
14232 namespace-uri: 'http://1.example/';
14233 specified: true;
14234 }
14235 }
14236 }
14237 @@XMLTest:
14238 @@@QName: xp.names.3.test
14239 @@@DEnt:
14240 @@@@test:value:
14241 <a:p xmlns:a="http://1.example/" a="b" a:a="c"/>
14242 @@@test:domTree:
14243 document {
14244 element {
14245 prefix: 'a';
14246 local-name: 'p';
14247 namespace-uri: 'http://1.example/';
14248 attribute {
14249 prefix: 'xmlns';
14250 local-name: 'a';
14251 namespace-uri: 'http://www.w3.org/2000/xmlns/';
14252 specified: true;
14253 }
14254 attribute {
14255 prefix: null;
14256 local-name: 'a';
14257 specified: true;
14258 }
14259 attribute {
14260 prefix: 'a';
14261 local-name: 'a';
14262 namespace-uri: 'http://1.example/';
14263 specified: true;
14264 }
14265 }
14266 }
14267 @@XMLTest:
14268 @@@QName: xp.names.5.test
14269 @@@DEnt:
14270 @@@@test:value:
14271 <p xmlns:a="http://1.example/">$
14272 <a:q/>$
14273 </p>
14274 @@@test:domTree:
14275 document {
14276 element {
14277 prefix: null;
14278 local-name: 'p';
14279 namespace-uri: null;
14280 attribute {
14281 prefix: 'xmlns';
14282 local-name: 'a';
14283 namespace-uri: 'http://www.w3.org/2000/xmlns/';
14284 specified: true;
14285 }
14286 element {
14287 prefix: 'a';
14288 local-name: 'q';
14289 namespace-uri: 'http://1.example/';
14290 }
14291 }
14292 }
14293 @@XMLTest:
14294 @@@QName: xp.names.6.test
14295 @@@DEnt:
14296 @@@@test:value:
14297 <p xmlns:a="http://1.example/">$
14298 <q a:b="c"/>$
14299 </p>
14300 @@@test:domTree:
14301 document {
14302 element {
14303 prefix: null;
14304 local-name: 'p';
14305 namespace-uri: null;
14306 attribute {
14307 prefix: 'xmlns';
14308 local-name: 'a';
14309 namespace-uri: 'http://www.w3.org/2000/xmlns/';
14310 specified: true;
14311 }
14312 element {
14313 prefix: null;
14314 local-name: 'q';
14315 namespace-uri: null;
14316 attribute {
14317 prefix: 'a';
14318 local-name: 'b';
14319 namespace-uri: 'http://1.example/';
14320 specified: true;
14321 }
14322 }
14323 }
14324 }
14325 @@XMLTest:
14326 @@@QName: xp.names.7.test
14327 @@@DEnt:
14328 @@@@test:value:
14329 <p xmlns:a="http://1.example/">$
14330 <q a:b="c" xmlns:a="http://2.example/"/>$
14331 </p>
14332 @@@test:domTree:
14333 document {
14334 element {
14335 prefix: null;
14336 local-name: 'p';
14337 namespace-uri: null;
14338 attribute {
14339 prefix: 'xmlns';
14340 local-name: 'a';
14341 namespace-uri: 'http://www.w3.org/2000/xmlns/';
14342 specified: true;
14343 }
14344 element {
14345 prefix: null;
14346 local-name: 'q';
14347 namespace-uri: null;
14348 attribute {
14349 prefix: 'a';
14350 local-name: 'b';
14351 namespace-uri: 'http://2.example/';
14352 specified: true;
14353 }
14354 attribute {
14355 prefix: 'xmlns';
14356 local-name: 'a';
14357 namespace-uri: 'http://www.w3.org/2000/xmlns/';
14358 specified: true;
14359 }
14360 }
14361 }
14362 }
14363
14364 @@XMLTest:
14365 @@@QName: xp.names.undeclare.1.test
14366 @@@DEnt:
14367 @@@@test:value:
14368 <p xmlns="http://1.example/">$
14369 <q xmlns="">$
14370 <r xmlns="http://2.example/"/>$
14371 </q>$
14372 </p>
14373 @@@test:domTree:
14374 document {
14375 element {
14376 prefix: null;
14377 local-name: 'p';
14378 namespace-uri: 'http://1.example/';
14379 attribute {
14380 prefix: null;
14381 local-name: 'xmlns';
14382 namespace-uri: 'http://www.w3.org/2000/xmlns/';
14383 specified: true;
14384 }
14385 element {
14386 prefix: null;
14387 local-name: 'q';
14388 namespace-uri: null;
14389 attribute {
14390 prefix: null;
14391 local-name: 'xmlns';
14392 namespace-uri: 'http://www.w3.org/2000/xmlns/';
14393 specified: true;
14394 }
14395 element {
14396 prefix: null;
14397 local-name: 'r';
14398 namespace-uri: 'http://2.example/';
14399 attribute {
14400 prefix: null;
14401 local-name: 'xmlns';
14402 namespace-uri: 'http://www.w3.org/2000/xmlns/';
14403 specified: true;
14404 }
14405 }
14406 }
14407 }
14408 }
14409
14410 @@XMLTest:
14411 @@@QName: xp.names.undeclare.1.0.1.test
14412 @@@DEnt:
14413 @@@@test:value:
14414 <?xml version="1.0"?>
14415 <a:p xmlns:a="http://1.example/">$
14416 <q xmlns:a="">$
14417 <a:r xmlns:a="http://2.example/"/>$
14418 </q>$
14419 </a:p>
14420 @@@c:erred: <[[xp|nswf-empty-namespace-name]]> { (2, 34)..(2, 47); }
14421 @@XMLTest:
14422 @@@QName: xp.names.undeclare.1.1.1.test
14423 @@@DEnt:
14424 @@@@test:value:
14425 <?xml version="1.1"?>
14426 <a:p xmlns:a="http://1.example/">$
14427 <q xmlns:a="">$
14428 <a:r xmlns:a="http://2.example/"/>$
14429 </q>$
14430 </a:p>
14431 @@@test:domTree:
14432 document {
14433 element {
14434 prefix: 'a';
14435 local-name: 'p';
14436 namespace-uri: 'http://1.example/';
14437 attribute {
14438 prefix: 'xmlns';
14439 local-name: 'a';
14440 namespace-uri: 'http://www.w3.org/2000/xmlns/';
14441 specified: true;
14442 }
14443 element {
14444 prefix: null;
14445 local-name: 'q';
14446 namespace-uri: null;
14447 attribute {
14448 prefix: 'xmlns';
14449 local-name: 'a';
14450 namespace-uri: 'http://www.w3.org/2000/xmlns/';
14451 specified: true;
14452 }
14453 element {
14454 prefix: 'a';
14455 local-name: 'r';
14456 namespace-uri: 'http://2.example/';
14457 attribute {
14458 prefix: 'xmlns';
14459 local-name: 'a';
14460 namespace-uri: 'http://www.w3.org/2000/xmlns/';
14461 specified: true;
14462 }
14463 }
14464 }
14465 }
14466 }
14467 @@XMLTest:
14468 @@@QName: xp.names.undeclare.1.1.2.test
14469 @@@DEnt:
14470 @@@@test:value:
14471 <?xml version="1.1"?>
14472 <a:p xmlns:a="http://1.example/">$
14473 <q xmlns:a="">$
14474 <a:r/>$
14475 </q>$
14476 </a:p>
14477 @@@c:erred: <[[xp|nsc-prefix-declared]]> { (2, 48)..(2, 53); }
14478
14479 @@XMLTest:
14480 @@@QName: xp.names.xml.prefix.1.test
14481 @@@DEnt:
14482 @@@@test:value:
14483 <a xmlns:xml="http://www.w3.org/XML/1998/namespace"/>
14484 @@@test:domTree:
14485 document {
14486 element {
14487 attribute {
14488 prefix: 'xmlns';
14489 local-name: 'xml';
14490 namespace-uri: 'http://www.w3.org/2000/xmlns/';
14491 }
14492 }
14493 }
14494 @@XMLTest:
14495 @@@QName: xp.names.xml.prefix.2.test
14496 @@@DEnt:
14497 @@@@test:value:
14498 <a xmlns:xml="a"/>
14499 @@@c:erred: <[[xp|nsc-reserved-prefix-xml]]> { (1, 1)..(1, 18); }
14500 @@XMLTest:
14501 @@@QName: xp.names.xml.prefix.3.test
14502 @@@DEnt:
14503 @@@@test:value:
14504 <a xmlns:a="http://www.w3.org/XML/1998/namespace"
14505 />
14506 @@@c:erred: <[[xp|nsc-reserved-namespace-name-xml]]> { (1, 1)..(2, 2); }
14507 @@XMLTest:
14508 @@@QName: xp.names.xml.prefix.4.test
14509 @@@DEnt:
14510 @@@@test:value:
14511 <a xml:lang="ja"/>
14512 @@@test:domTree:
14513 document {
14514 element {
14515 attribute {
14516 prefix: 'xml';
14517 local-name: 'lang';
14518 namespace-uri: 'http://www.w3.org/XML/1998/namespace';
14519 }
14520 }
14521 }
14522
14523 @@XMLTest:
14524 @@@QName: xp.names.prefix.declared.1.test
14525 @@@DEnt:
14526 @@@@test:value:
14527 <!DOCTYPE a [
14528 <!ATTLIST a
14529 b:c CDATA "d"
14530 >
14531 ]>
14532 <a/>
14533 @@@c:erred: <[[xp|nsc-prefix-declared]]> { (6, 1)..(6, 4); }
14534
14535 @@XMLTest:
14536 @@@QName: xp.names.xmlns.reserved.1.test
14537 @@@DEnt:
14538 @@@@test:value:
14539 <a xmlns:xmlns="http://www.w3.org/2000/xmlns/"
14540 />
14541 @@@c:erred: <[[xp|nsc-reserved-prefix-xmlns]]> { (1, 1)..(2, 2); }
14542 @@@c:erred: <[[xp|nsc-reserved-namespace-name-xmlns]]> { (1, 1)..(2, 2); }
14543 @@XMLTest:
14544 @@@QName: xp.names.xmlns.reserved.2.test
14545 @@@DEnt:
14546 @@@@test:value:
14547 <a xmlns:xmlns="a"
14548 />
14549 @@@c:erred: <[[xp|nsc-reserved-prefix-xmlns]]> { (1, 1)..(2, 2); }
14550 @@XMLTest:
14551 @@@QName: xp.names.xmlns.reserved.3.test
14552 @@@DEnt:
14553 @@@@test:value:
14554 <a xmlns:a="http://www.w3.org/2000/xmlns/"
14555 />
14556 @@@c:erred: <[[xp|nsc-reserved-namespace-name-xmlns]]> { (1, 1)..(2, 2); }
14557
14558 @@XMLTest:
14559 @@@QName: xp.names.default.1.test
14560 @@@DEnt:
14561 @@@@test:value:
14562 <!DOCTYPE a [
14563 <!ATTLIST a
14564 xmlns CDATA "http://1.example/">
14565 ]>
14566 <a/>
14567 @@@test:domTree:
14568 document {
14569 document-type {
14570 element-type-definition {
14571 node-name: 'a';
14572 attribute-definition {
14573 node-name: 'xmlns';
14574 node-value: 'http://1.example/';
14575 }
14576 }
14577 }
14578 element {
14579 prefix: null;
14580 local-name: 'a';
14581 namespace-uri: 'http://1.example/';
14582 attribute {
14583 prefix: null;
14584 local-name: 'xmlns';
14585 namespace-uri: 'http://www.w3.org/2000/xmlns/';
14586 value: 'http://1.example/';
14587 specified: false;
14588 }
14589 }
14590 }
14591 @@XMLTest:
14592 @@@QName: xp.names.default.2.test
14593 @@@DEnt:
14594 @@@@test:value:
14595 <!DOCTYPE a [
14596 <!ATTLIST a
14597 xmlns CDATA "http://1.example/">
14598 ]>
14599 <a xmlns="http://2.example/"/>
14600 @@@test:domTree:
14601 document {
14602 document-type {
14603 element-type-definition {
14604 node-name: 'a';
14605 attribute-definition {
14606 node-name: 'xmlns';
14607 node-value: 'http://1.example/';
14608 }
14609 }
14610 }
14611 element {
14612 prefix: null;
14613 local-name: 'a';
14614 namespace-uri: 'http://2.example/';
14615 attribute {
14616 prefix: null;
14617 local-name: 'xmlns';
14618 namespace-uri: 'http://www.w3.org/2000/xmlns/';
14619 value: 'http://2.example/';
14620 specified: true;
14621 }
14622 }
14623 }
14624 @@XMLTest:
14625 @@@QName: xp.names.default.3.test
14626 @@@DEnt:
14627 @@@@test:value:
14628 <!DOCTYPE b:a [
14629 <!ATTLIST b:a
14630 xmlns:b CDATA "http://1.example/">
14631 ]>
14632 <b:a/>
14633 @@@test:domTree:
14634 document {
14635 document-type {
14636 element-type-definition {
14637 node-name: 'b:a';
14638 attribute-definition {
14639 node-name: 'xmlns:b';
14640 node-value: 'http://1.example/';
14641 }
14642 }
14643 }
14644 element {
14645 prefix: 'b';
14646 local-name: 'a';
14647 namespace-uri: 'http://1.example/';
14648 attribute {
14649 prefix: 'xmlns';
14650 local-name: 'b';
14651 namespace-uri: 'http://www.w3.org/2000/xmlns/';
14652 value: 'http://1.example/';
14653 specified: false;
14654 }
14655 }
14656 }
14657 @@XMLTest:
14658 @@@QName: xp.names.default.4.test
14659 @@@DEnt:
14660 @@@@test:value:
14661 <!DOCTYPE b:a [
14662 <!ATTLIST b:a
14663 xmlns:b CDATA "http://1.example/">
14664 ]>
14665 <b:a xmlns:b="http://2.example/"/>
14666 @@@test:domTree:
14667 document {
14668 document-type {
14669 element-type-definition {
14670 node-name: 'b:a';
14671 attribute-definition {
14672 node-name: 'xmlns:b';
14673 node-value: 'http://1.example/';
14674 }
14675 }
14676 }
14677 element {
14678 prefix: 'b';
14679 local-name: 'a';
14680 namespace-uri: 'http://2.example/';
14681 attribute {
14682 prefix: 'xmlns';
14683 local-name: 'b';
14684 namespace-uri: 'http://www.w3.org/2000/xmlns/';
14685 value: 'http://2.example/';
14686 specified: true;
14687 }
14688 }
14689 }
14690 @@XMLTest:
14691 @@@QName: xp.names.default.5.test
14692 @@@DEnt:
14693 @@@@test:value:
14694 <!DOCTYPE a [
14695 <!ATTLIST a
14696 xmlns:b CDATA "http://1.example/"
14697 b:c CDATA "http://1.example/">
14698 ]>
14699 <a xmlns:b="http://2.example/"/>
14700 @@@test:domTree:
14701 document {
14702 document-type {
14703 element-type-definition {
14704 node-name: 'a';
14705 attribute-definition {
14706 node-name: 'xmlns:b';
14707 text-content: 'http://1.example/';
14708 }
14709 attribute-definition {
14710 node-name: 'b:c';
14711 text-content: 'http://1.example/';
14712 }
14713 }
14714 }
14715 element {
14716 prefix: null;
14717 local-name: 'a';
14718 namespace-uri: null;
14719 attribute {
14720 prefix: 'xmlns';
14721 local-name: 'b';
14722 namespace-uri: 'http://www.w3.org/2000/xmlns/';
14723 value: 'http://2.example/';
14724 specified: true;
14725 }
14726 attribute {
14727 prefix: 'b';
14728 local-name: 'c';
14729 namespace-uri: 'http://2.example/';
14730 specified: false;
14731 }
14732 }
14733 }
14734
14735 @@XMLTest:
14736 @@@QName: xp.names.unique.1.test
14737 @@@DEnt:
14738 @@@@test:value:
14739 <a
14740 xmlns:b="http://2.example/"
14741 xmlns:c="http://2.example/"
14742 b:d=""
14743 c:d=""
14744 />
14745 @@@c:erred: <[[xp|nswf-unique-att-spec-expanded-name]]> { (1, 1)..(6, 2); }
14746 @@XMLTest:
14747 @@@QName: xp.names.unique.2.test
14748 @@@DEnt:
14749 @@@@test:value:
14750 <!DOCTYPE a [
14751 <!ATTLIST a
14752 c:d CDATA ""
14753 >
14754 ]>
14755 <a
14756 xmlns:b="http://2.example/"
14757 xmlns:c="http://2.example/"
14758 b:d=""
14759 />
14760 @@@c:erred: <[[xp|nswf-unique-att-spec-expanded-name]]> { (6, 1)..(10, 2);}
14761 @@XMLTest:
14762 @@@QName: xp.names.unique.3.test
14763 @@@DEnt:
14764 @@@@test:value:
14765 <!DOCTYPE a [
14766 <!ATTLIST a
14767 c:d CDATA "value1"
14768 >
14769 ]>
14770 <a
14771 xmlns:c="http://2.example/"
14772 c:d="value2"
14773 />
14774 @@@test:domTree:
14775 document {
14776 document-type { }
14777 element {
14778 attribute {
14779 prefix: 'xmlns';
14780 local-name: 'c';
14781 namespace-uri: 'http://www.w3.org/2000/xmlns/';
14782 specified: true;
14783 }
14784 attribute {
14785 prefix: 'c';
14786 local-name: 'd';
14787 namespace-uri: 'http://2.example/';
14788 value: 'value2';
14789 specified: true;
14790 }
14791 }
14792 }
14793
14794 @@XMLTest:
14795 @@@QName: xp.names.normalize.1.test
14796 @@@DEnt:
14797 @@@@test:value:
14798 <!DOCTYPE a [
14799 <!ATTLIST a
14800 xmlns NMTOKEN #IMPLIED
14801 >
14802 ]>
14803 <a xmlns=" "/>
14804 @@@test:domTree:
14805 document {
14806 document-type { }
14807 element {
14808 namespace-uri: null;
14809 prefix: null;
14810 local-name: 'a';
14811 }
14812 }
14813 @@XMLTest:
14814 @@@QName: xp.names.normalize.2.test
14815 @@@DEnt:
14816 @@@@test:value:
14817 <!DOCTYPE a [
14818 <!ATTLIST a
14819 xmlns NMTOKEN #IMPLIED
14820 >
14821 ]>
14822 <a xmlns=" about:blank "/>
14823 @@@test:domTree:
14824 document {
14825 document-type { }
14826 element {
14827 namespace-uri: 'about:blank';
14828 prefix: null;
14829 local-name: 'a';
14830 }
14831 }
14832 @@XMLTest:
14833 @@@QName: xp.names.normalize.3.test
14834 @@@DEnt:
14835 @@@@test:value:
14836 <!DOCTYPE a:a [
14837 <!ATTLIST a:a
14838 xmlns:a NMTOKEN #IMPLIED
14839 >
14840 ]>
14841 <a:a xmlns:a=" about:blank "/>
14842 @@@test:domTree:
14843 document {
14844 document-type { }
14845 element {
14846 namespace-uri: 'about:blank';
14847 prefix: 'a';
14848 local-name: 'a';
14849 }
14850 }
14851
14852 @@XMLTest:
14853 @@@QName: xp.no.baseuri.test
14854 @@@DEnt:
14855 @@@@test:value:
14856 <p/>
14857 @@@test:domTree:
14858 document {
14859 document-uri: null;
14860 base-uri: null;
14861 element {
14862 node-name: 'p';
14863 base-uri: null;
14864 }
14865 }
14866 @@XMLTest:
14867 @@@QName: xp.docuri.no.baseuri.test
14868 @@@DEnt:
14869 @@@@test:uri:
14870 http://www.example.com/
14871 @@@@test:value:
14872 <p/>
14873 @@@test:domTree:
14874 document {
14875 document-uri: 'http://www.example.com/';
14876 base-uri: 'http://www.example.com/';
14877 element {
14878 node-name: 'p';
14879 base-uri: 'http://www.example.com/';
14880 }
14881 }
14882 @@XMLTest:
14883 @@@QName: xp.docuri.baseuri.test
14884 @@@DEnt:
14885 @@@@test:uri:
14886 http://www.example.com/
14887 @@@@test:baseURI:
14888 ftp://ftp.example.com/
14889 @@@@test:value:
14890 <p/>
14891 @@@test:domTree:
14892 document {
14893 document-uri: 'http://www.example.com/';
14894 base-uri: 'ftp://ftp.example.com/';
14895 element {
14896 node-name: 'p';
14897 base-uri: 'ftp://ftp.example.com/';
14898 }
14899 }
14900 @@XMLTest:
14901 @@@QName: xp.doctype.baseuri.test
14902 @@@DEnt:
14903 @@@@test:uri:
14904 http://www.example.com/
14905 @@@@test:baseURI:
14906 ftp://ftp.example.com/
14907 @@@@test:value:
14908 <!DOCTYPE p SYSTEM "sys">
14909 <p/>
14910 @@@test:domTree:
14911 document {
14912 document-uri: 'http://www.example.com/';
14913 base-uri: 'ftp://ftp.example.com/';
14914 document-type {
14915 system-id: 'sys';
14916 manakai-declaration-base-uri: 'ftp://ftp.example.com/';
14917 }
14918 element {
14919 node-name: 'p';
14920 base-uri: 'ftp://ftp.example.com/';
14921 }
14922 }
14923 @@XMLTest:
14924 @@@QName: xp.entdecl.baseuri.test
14925 @@@DEnt:
14926 @@@@test:uri:
14927 http://www.example.com/
14928 @@@@test:baseURI:
14929 ftp://ftp.example.com/
14930 @@@@test:value:
14931 <!DOCTYPE p [
14932 <!ENTITY ent SYSTEM "ent">
14933 ]>
14934 <p/>
14935 @@@test:domTree:
14936 document {
14937 document-uri: 'http://www.example.com/';
14938 base-uri: 'ftp://ftp.example.com/';
14939 document-type {
14940 general-entity {
14941 node-name: 'ent';
14942 manakai-declaration-base-uri: 'ftp://ftp.example.com/';
14943 }
14944 }
14945 element {
14946 node-name: 'p';
14947 base-uri: 'ftp://ftp.example.com/';
14948 }
14949 }
14950 @@XMLTest:
14951 @@@QName: xp.notdecl.baseuri.test
14952 @@@DEnt:
14953 @@@@test:uri:
14954 http://www.example.com/
14955 @@@@test:baseURI:
14956 ftp://ftp.example.com/
14957 @@@@test:value:
14958 <!DOCTYPE p [
14959 <!NOTATION not SYSTEM "not">
14960 ]>
14961 <p/>
14962 @@@test:domTree:
14963 document {
14964 document-uri: 'http://www.example.com/';
14965 base-uri: 'ftp://ftp.example.com/';
14966 document-type {
14967 notation {
14968 node-name: 'not';
14969 manakai-declaration-base-uri: 'ftp://ftp.example.com/';
14970 }
14971 }
14972 element {
14973 node-name: 'p';
14974 base-uri: 'ftp://ftp.example.com/';
14975 }
14976 }
14977 @@XMLTest:
14978 @@@QName: xp.doctype.intsubset.pi.baseuri.test
14979 @@@DEnt:
14980 @@@@test:uri:
14981 http://www.example.com/
14982 @@@@test:baseURI:
14983 ftp://ftp.example.com/
14984 @@@@test:value:
14985 <!DOCTYPE p [
14986 <?pi?>
14987 ]>
14988 <p/>
14989 @@@test:domTree:
14990 document {
14991 document-uri: 'http://www.example.com/';
14992 base-uri: 'ftp://ftp.example.com/';
14993 document-type {
14994 pi {
14995 node-name: 'pi';
14996 base-uri: 'ftp://ftp.example.com/';
14997 }
14998 }
14999 element {
15000 node-name: 'p';
15001 base-uri: 'ftp://ftp.example.com/';
15002 }
15003 }
15004
15005 @@XMLTest:
15006 @@@QName: xp.xmlid.attr.test
15007 @@@DEnt:
15008 @@@@test:value:
15009 <p xml:id="idv"/>
15010 @@@cfg:xml-id: 1
15011 @@@test:domTree:
15012 document {
15013 element {
15014 attribute {
15015 node-name: 'xml:id';
15016 value: 'idv';
15017 schema-type-info: TypeInfo ('http://www.w3.org/TR/REC-xml',
15018 'ID');
15019 specified: true;
15020 }
15021 }
15022 }
15023 @@XMLTest:
15024 @@@QName: xp.xmlid.attr.disabled.test
15025 @@@DEnt:
15026 @@@@test:value:
15027 <p xml:id="idv"/>
15028 @@@cfg:xml-id: 0
15029 @@@test:domTree:
15030 document {
15031 element {
15032 attribute {
15033 node-name: 'xml:id';
15034 value: 'idv';
15035 schema-type-info: TypeInfo (null, null);
15036 specified: true;
15037 }
15038 }
15039 }
15040 @@XMLTest:
15041 @@@QName: xp.xmlid.attr.norm.test
15042 @@@DEnt:
15043 @@@@test:value:
15044 <p xml:id=" $u000Aidv "/>
15045 @@@cfg:xml-id: 1
15046 @@@test:domTree:
15047 document {
15048 element {
15049 attribute {
15050 node-name: 'xml:id';
15051 value: 'idv';
15052 schema-type-info: TypeInfo ('http://www.w3.org/TR/REC-xml',
15053 'ID');
15054 specified: true;
15055 }
15056 }
15057 }
15058 @@XMLTest:
15059 @@@QName: xp.xmlid.attr.norm.disabled.test
15060 @@@DEnt:
15061 @@@@test:value:
15062 <p xml:id=" $u000Aidv "/>
15063 @@@cfg:xml-id: 0
15064 @@@test:domTree:
15065 document {
15066 element {
15067 attribute {
15068 node-name: 'xml:id';
15069 value: ' idv ';
15070 schema-type-info: TypeInfo (null, null);
15071 specified: true;
15072 }
15073 }
15074 }
15075 @@XMLTest:
15076 @@@QName: xp.xmlid.attrdef.test
15077 @@@DEnt:
15078 @@@@test:value:
15079 <!DOCTYPE p [
15080 <!ATTLIST p xml:id ID #IMPLIED>
15081 ]>
15082 <p/>
15083 @@@cfg:xml-id: 1
15084 @@@test:domTree:
15085 document {
15086 document-type {
15087 element-type-definition {
15088 node-name: 'p';
15089 attribute-definition {
15090 node-name: 'xml:id';
15091 declared-type: const (ID_ATTR);
15092 default-type: const (IMPLIED_DEFAULT);
15093 }
15094 }
15095 }
15096 element { }
15097 }
15098 @@XMLTest:
15099 @@@QName: xp.xmlid.attrdef.disabled.test
15100 @@@DEnt:
15101 @@@@test:value:
15102 <!DOCTYPE p [
15103 <!ATTLIST p xml:id ID #IMPLIED>
15104 ]>
15105 <p/>
15106 @@@cfg:xml-id: 0
15107 @@@test:domTree:
15108 document {
15109 document-type {
15110 element-type-definition {
15111 node-name: 'p';
15112 attribute-definition {
15113 node-name: 'xml:id';
15114 declared-type: const (ID_ATTR);
15115 default-type: const (IMPLIED_DEFAULT);
15116 }
15117 }
15118 }
15119 element { }
15120 }
15121 @@XMLTest:
15122 @@@QName: xp.xmlid.attrdef.defaultattr.test
15123 @@@DEnt:
15124 @@@@test:value:
15125 <!DOCTYPE p [
15126 <!ATTLIST p xml:id ID "idv"><!-- invalid -->
15127 ]>
15128 <p/>
15129 @@@cfg:xml-id: 1
15130 @@@test:domTree:
15131 document {
15132 document-type {
15133 element-type-definition {
15134 node-name: 'p';
15135 attribute-definition {
15136 node-name: 'xml:id';
15137 declared-type: const (ID_ATTR);
15138 default-type: const (EXPLICIT_DEFAULT);
15139 node-value: 'idv';
15140 }
15141 }
15142 }
15143 element {
15144 attribute {
15145 node-name: 'xml:id';
15146 schema-type-info: TypeInfo ('http://www.w3.org/TR/REC-xml',
15147 'ID');
15148 value: 'idv';
15149 specified: false;
15150 }
15151 }
15152 }
15153 @@XMLTest:
15154 @@@QName: xp.xmlid.attrdef.defaultattr.disabled.test
15155 @@@DEnt:
15156 @@@@test:value:
15157 <!DOCTYPE p [
15158 <!ATTLIST p xml:id ID "idv"><!-- invalid -->
15159 ]>
15160 <p/>
15161 @@@cfg:xml-id: 0
15162 @@@test:domTree:
15163 document {
15164 document-type {
15165 element-type-definition {
15166 node-name: 'p';
15167 attribute-definition {
15168 node-name: 'xml:id';
15169 declared-type: const (ID_ATTR);
15170 default-type: const (EXPLICIT_DEFAULT);
15171 node-value: 'idv';
15172 }
15173 }
15174 }
15175 element {
15176 attribute {
15177 node-name: 'xml:id';
15178 schema-type-info: TypeInfo ('http://www.w3.org/TR/REC-xml',
15179 'ID');
15180 value: 'idv';
15181 specified: false;
15182 }
15183 }
15184 }
15185
15186 @@XMLTest:
15187 @@@QName: xp.general.entity.unused.1.test
15188 @@@DEnt:
15189 @@@@test:value:
15190 <!DOCTYPE p [
15191 <!ENTITY mylt "<">
15192 ]>
15193 <p/>
15194 @@@cfg:entity-replacement-tree: 0
15195 @@@test:domTree:
15196 document {
15197 document-type {
15198 general-entity {
15199 node-name: 'mylt';
15200 }
15201 }
15202 element { }
15203 }
15204 @@XMLTest:
15205 @@@QName: xp.general.entity.unused.2.test
15206 @@@DEnt:
15207 @@@@test:value:
15208 <!DOCTYPE p [
15209 <!ENTITY mylt "<">
15210 ]>
15211 <p/>
15212 @@@cfg:entity-replacement-tree: 1
15213 @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 1)..(1, 2); }
15214
15215 @@PerlDef:
15216 my $impl = $Message::DOM::ImplementationRegistry->get_implementation ({
15217 'Core' => '3.0',
15218 'XML' => '3.0',
15219 'XMLVersion' => ['1.0', '1.1'],
15220 });
15221
15222 for my $test_data (@$TestData) {
15223 my $parser = <Class::ManakaiXMLParser>->new ($impl);
15224
15225 $test->start_new_test ($test_data->{uri});
15226 my $doc_ent = $test_data->{entity}->{$test_data->{root_uri}};
15227 my $not_ok;
15228
15229 ## -- DOM Configuration Parameters
15230
15231 my $pcfg = $parser->dom_config;
15232 for (keys %{$test_data->{dom_config}}) {
15233 $pcfg->set_parameter ($_ => $test_data->{dom_config}->{$_});
15234 }
15235
15236 $pcfg->set_parameter ('error-handler' => sub ($$) {
15237 my (undef, $err) = @_;
15238 my $err_type = $err->type;
15239 if ($test_data->{dom_error}->{$err_type}) {
15240 $test->assert_error_equals
15241 (actual_value => $err,
15242 expected_hash => shift @{$test_data->{dom_error}
15243 ->{$err_type}});
15244 } else { # Uncatched error
15245 warn $err;
15246 unless ($err->severity == <C::c|DOMError.SEVERITY_WARNING>) {
15247 $test->failure_comment ('Unexpected error |'.$err->type.'|');
15248 $not_ok = true;
15249 }
15250 }
15251 return true; # continue as far as possible
15252 });
15253
15254 ## -- Input Data
15255
15256 my $input = {string_data => \$doc_ent->{<Q::test:value>},
15257 system_id => $doc_ent->{<Q::test:uri>},
15258 base_uri => $doc_ent->{<Q::test:baseURI>}};
15259
15260 ## -- Test and Result
15261
15262 if ($test_data->{dom_tree}) { # Successful test
15263 my $doc;
15264 try {
15265 $doc = $parser->parse ($input);
15266 $test->assert_dom_tree_equals
15267 (actual_value => $doc,
15268 expected_hash => $test_data->{dom_tree});
15269 for (values %{$test_data->{dom_error}||{}}) {
15270 if (@$_) {
15271 $test->failure_comment
15272 (@$_.' |DOMError|s of type |'.
15273 $_->[0]->{type}->{value}.'| are not reported');
15274 $not_ok = true;
15275 }
15276 }
15277 $not_ok ? $test->not_ok : $test->ok;
15278 undef $doc;
15279 } catch Message::Util::IF::DTException with {
15280 require 'manakai/mndebug.pl';
15281 manakai::mndebug::dump ($doc);
15282 } catch Message::DOM::IF::LSException with {
15283 # not_ok
15284 } otherwise {
15285 my $err = shift;
15286 warn $err;
15287 $test->not_ok;
15288 };
15289 } else {
15290 my $doc;
15291 try {
15292 $doc = $parser->parse ($input);
15293 } catch Message::Util::IF::DTException with {
15294 require 'manakai/mndebug.pl';
15295 manakai::mndebug::dump ($doc);
15296 } catch Message::DOM::IF::LSException with {
15297 #
15298 } otherwise {
15299 my $err = shift;
15300 warn $err;
15301 $test->not_ok;
15302 };
15303 for (values %{$test_data->{dom_error}||{}}) {
15304 if (@$_) {
15305 $test->failure_comment
15306 (@$_.' |DOMError|s of type |'.
15307 $_->[0]->{type}->{value}.'| are not reported');
15308 $not_ok = true;
15309 }
15310 }
15311 $not_ok ? $test->not_ok : $test->ok;
15312 }
15313 }
15314
15315 @ResourceDef:
15316 @@QName: getEmptyEntityState
15317 @@rdf:type: DISPerl|InlineCode
15318 @@ForCheck: ManakaiDOM|ForClass
15319 @@PerlDef:
15320 {reptxt => \'', line => 1, column => 1, pos => 0,
15321 is_externally_declared => true, name => $name,
15322 fh => do {
15323 open my $empty, '<', \'';
15324 $empty;
15325 },
15326 close_file => sub { }}
15327
15328 @ResourceDef:
15329 @@QName: getCopyOfEntityState
15330 @@rdf:type: DISPerl|InlineCode
15331 @@ForCheck: ManakaiDOM|ForClass
15332 @@PerlDef:
15333 {%{$self->{$entity_type}->{$entity_name}},
15334 line => 1, column => 1, pos => 0,
15335 fh => do {
15336 require IO::String;
15337 IO::String->new
15338 (${$self->{$entity_type}->{$entity_name}->{reptxt}});
15339 ## TODO: External entities.
15340 },
15341 close_file => sub { }}
15342 ##ManakaiXMLParser
15343
15344 ElementTypeBinding:
15345 @Name: Test
15346 @ElementType:
15347 dis:ResourceDef
15348 @ShadowContent:
15349 @@ForCheck: ManakaiDOM|ForClass
15350 @@rdf:type: test|StandaloneTest
15351
15352 ElementTypeBinding:
15353 @Name: XMLTests
15354 @ElementType:
15355 dis:ResourceDef
15356 @ShadowContent:
15357 @@ForCheck: ManakaiDOM|ForClass
15358 @@rdf:type: test|ParserTestSet
15359
15360 ElementTypeBinding:
15361 @Name: XMLTest
15362 @ElementType:
15363 dis:ResourceDef
15364 @ShadowContent:
15365 @@ForCheck: ManakaiDOM|ForClass
15366 @@rdf:type: test|ParserTest
15367
15368 ElementTypeBinding:
15369 @Name: DEnt
15370 @ElementType:
15371 dis:ResourceDef
15372 @ShadowContent:
15373 @@rdf:type: test|RootEntity
15374
15375 ElementTypeBinding:
15376 @Name: Ent
15377 @ElementType:
15378 dis:ResourceDef
15379 @ShadowContent:
15380 @@rdf:type: test|Entity
15381
15382 ResourceDef:
15383 @QName: xp|get-location-from-token
15384 @rdf:type: DISPerl|BlockCode
15385 @enDesc:
15386 Creates a <IF::DOMCore:DOMLocator> object from a token.
15387 @PerlDef:
15388 my $__d = $token->{type} ne '#EOF'
15389 ? $token->{location}->{char_d}
15390 : 0;
15391 $__d -= $token->{location_d} if $token->{location_d};
15392 $result = {
15393 utf32_offset => $token->{location}->{pos} - $__d,
15394 line_number => $token->{location}->{line},
15395 column_number => $token->{location}->{column} - $__d,
15396 };
15397 $result->{utf32_offset} = 0 if $result->{utf32_offset} < 0;
15398 $result->{column_number} = 0 if $result->{column_number} < 0;
15399 ## 0 or 1, which should be?
15400 @For: ManakaiDOM|ManakaiDOM3
15401
15402 ElementTypeBinding:
15403 @Name: RuleDef
15404 @ElementType:
15405 dis:ResourceDef
15406 @ShadowContent:
15407 @@ForCheck: ManakaiDOM|ForClass
15408 @@rdf:type: Muf2003|RuleDefClass
15409
15410 ElementTypeBinding:
15411 @Name: RuleParam
15412 @ElementType:
15413 dis:ResourceDef
15414 @ShadowContent:
15415 @@rdf:type: Muf2003|RuleParameter
15416
15417 ElementTypeBinding:
15418 @Name: enImplNote
15419 @ElementType:
15420 dis:ImplNote
15421 @ShadowContent:
15422 @@lang:en
15423
15424 ElementTypeBinding:
15425 @Name: WFErrDef
15426 @ElementType:
15427 dis:ResourceDef
15428 @ShadowContent:
15429 @@rdf:type: DOMCore|DOMErrorType
15430 @@For: ManakaiDOM|DOM3
15431 @@ecore:textFormatter: ManakaiXMLParserExceptionFormatter
15432 @@c:severity: c|SEVERITY_FATAL_ERROR
15433
15434 ElementTypeBinding:
15435 @Name: FatalErrDef
15436 @ElementType:
15437 dis:ResourceDef
15438 @ShadowContent:
15439 @@rdf:type: DOMCore|DOMErrorType
15440 @@For: ManakaiDOM|DOM3
15441 @@ecore:textFormatter: ManakaiXMLParserExceptionFormatter
15442 @@c:severity: c|SEVERITY_FATAL_ERROR
15443
15444 ElementTypeBinding:
15445 @Name: NSFatalErrDef
15446 @ElementType:
15447 dis:ResourceDef
15448 @ShadowContent:
15449 @@rdf:type: c|DOMErrorType
15450 @@For: ManakaiDOM|DOM3
15451 @@ecore:textFormatter: ManakaiXMLParserExceptionFormatter
15452 @@c:severity: c|SEVERITY_FATAL_ERROR
15453
15454 ElementTypeBinding:
15455 @Name: NSCErrDef
15456 @ElementType:
15457 dis:ResourceDef
15458 @ShadowContent:
15459 @@rdf:type: c|DOMErrorType
15460 @@For: ManakaiDOM|DOM3
15461 @@ecore:textFormatter: ManakaiXMLParserExceptionFormatter
15462 @@c:severity: c|SEVERITY_FATAL_ERROR
15463
15464 ElementTypeBinding:
15465 @Name: VCErrDef
15466 @ElementType:
15467 dis:ResourceDef
15468 @ShadowContent:
15469 @@rdf:type: c|DOMErrorType
15470 @@For: ManakaiDOM|DOM3
15471 @@ecore:textFormatter: ManakaiXMLParserExceptionFormatter
15472 @@c:severity: c|SEVERITY_ERROR
15473
15474 ElementTypeBinding:
15475 @Name: ErrDef
15476 @ElementType:
15477 dis:ResourceDef
15478 @ShadowContent:
15479 @@rdf:type: c|DOMErrorType
15480 @@For: ManakaiDOM|DOM3
15481 @@ecore:textFormatter: ManakaiXMLParserExceptionFormatter
15482 @@c:severity: c|SEVERITY_ERROR
15483
15484 ElementTypeBinding:
15485 @Name: WarnDef
15486 @ElementType:
15487 dis:ResourceDef
15488 @ShadowContent:
15489 @@rdf:type: c|DOMErrorType
15490 @@For: ManakaiDOM|DOM3
15491 @@ecore:textFormatter: ManakaiXMLParserExceptionFormatter
15492 @@c:severity: c|SEVERITY_WARNING
15493
15494 WFErrDef:
15495 @QName: xp|wf-syntax-error
15496 @enDesc:
15497 The entity does not match to the production rule; it is not
15498 well-formed.
15499 @enMufDef:
15500 |%xp-error-token-type;|%xp-error-token-value
15501 (prefix => { (|}, suffix => {|)}); is not
15502 allowed%xp-error-lines (prefix => { (|}, suffix => {|)});
15503 @ecore:hasParameter:
15504 @@@: xp|error-token
15505 @@enDesc:
15506 The token that is not allowed.
15507
15508 WFErrDef:
15509 @QName: xp|wf-pi-target-is-xml
15510 @enDesc:
15511 A processing instruction has its <CODE::PITarget> of
15512 <XML::xml> (in any case) which is not allowed.
15513 @enMufDef:
15514 Processing instruction target name cannot be |%p
15515 (name => {<Q::xp|name>});|
15516 @ecore:hasParameter:
15517 @@@: xp|error-token
15518 @@enDesc:
15519 The token that contains the name.
15520 @ecore:hasParameter:
15521 @@@: xp|name
15522 @@enDesc:
15523 A string that is specified as target name of the
15524 processing instruction.
15525 @ecore:hasParameter: xp|parent
15526
15527 WFErrDef:
15528 @QName: xp|wf-no-end-tag
15529 @enDesc:
15530 An end-tag is not found.
15531 @enMufDef:
15532 End-tag |</%p (name => {<Q::xp|expected-element-type>});>| is required
15533 @ecore:hasParameter: xp|error-token
15534 @ecore:hasParameter:
15535 @@@: xp|node
15536 @@enDesc:
15537 The element node that is not closed.
15538 @ecore:hasParameter:
15539 @@@: xp|expected-element-type
15540 @@enDesc:
15541 The element type name of the element that is not closed.
15542
15543 WFErrDef:
15544 @QName: xp|wf-unsupported-xml-version
15545 @enDesc:
15546 The XML version specified in the version declaration is not supported.
15547 @enMufDef:
15548 XML version |%p (name => {<Q::infoset|version>});| is not supported
15549 @ecore:hasParameter: xp|bad-token
15550 @ecore:hasParameter:
15551 @@@: xp|parent
15552 @@enDesc:
15553 The document node.
15554 @ecore:hasParameter:
15555 @@@: infoset|version
15556 @@enDesc:
15557 The specified XML version.
15558
15559 WFErrDef:
15560 @QName: xp|wf-malformed-enc-name
15561 @enDesc:
15562 An <XA::encoding> pseudo-attribute value does not match
15563 to the procduction rule <CODE::EncName>.
15564 @enMufDef:
15565 Encoding name |%p (name => {<Q::xp|name>});| is not allowed
15566 @ecore:hasParameter: xp|error-token
15567 @ecore:hasParameter:
15568 @@@: xp|parent
15569 @@enDesc: The document node.
15570 @ecore:hasParameter:
15571 @@@: xp|name
15572 @@enDesc:
15573 The <XA::encoding> value.
15574
15575 WFErrDef:
15576 @QName: xp|wf-malformed-xml-standalone
15577 @enDesc:
15578 An <XA::standalone> pseudo-attribute value is neither <XML::yes>
15579 or <XML::no>.
15580 @enMufDef:
15581 |standalone| pseudo-attribute value |%p (name => {<Q::xp|name>});|
15582 is not allowed
15583 @ecore:hasParameter: xp|error-token
15584 @ecore:hasParameter:
15585 @@@: xp|parent
15586 @@enDesc: The document node.
15587 @ecore:hasParameter:
15588 @@@: xp|name
15589 @@enDesc:
15590 The <XA::standalone> value.
15591
15592 WFErrDef:
15593 @QName: xp|wf-legal-literal-character
15594 @enDesc:
15595 Each character in XML entity must match to the production
15596 rule <CODE::Char - RestrictedChar>.
15597 @enMufDef:
15598 Character %character-code-point
15599 (v => {<Q::xp|character-number>}); is not allowed
15600 @ecore:hasParameter:
15601 @@@: xp|character-number
15602 @@enDesc:
15603 The code position of the character being referred.
15604
15605 WFErrDef:
15606 @QName: xp|wf-invalid-character-in-node-name
15607 @c:errorType:
15608 @@@: wf-invalid-character-in-node-name
15609 @@ContentType: DISCore|String
15610 @enDesc:
15611 If a name contains a character that is not a name character
15612 in the XML version in use, or if the first character of a name
15613 is not a name start character in the XML version in use.
15614
15615 {NOTE::
15616 When an invalid character is encountered in an entity
15617 where a <CODE::Name> is expected, what type of error
15618 is issued is implementation dependent: <Q::xp|wf-syntax-error>,
15619 <Q::xp|wf-pi-target-is-xml> or other error might be reported.
15620 }
15621
15622 {NOTE::
15623 This error type is defined in DOM Level 3 Core and Load and Save
15624 modules and redefined herein for the purpose of XML parser.
15625 }
15626 @enMufDef:
15627 Character %character-code-point
15628 (v => {<Q::xp|character-number>}); is not allowed in name
15629 @ecore:hasParameter: xp|error-token
15630 @ecore:hasParameter:
15631 @@@: xp|character-number
15632 @@enDesc:
15633 The code position of the character being referred.
15634 @ecore:hasParameter:
15635 @@@: infoset|version
15636 @@enDesc:
15637 The version of XML in use.
15638
15639 WFErrDef:
15640 @QName: xp|wf-pes-in-internal-subset
15641 @enDesc:
15642 In the internal subset of the DTD, parameter entity references
15643 <kwd:MUST-NOT> occur within markup declarations.
15644 @enMufDef:
15645 Parameter entity reference |%percent;%param (name => {<Q::xp|name>});;|
15646 cannot occur within a markup declaration
15647 @ecore:hasParameter: xp|error-token
15648 @ecore:hasParameter:
15649 @@@: xp|name
15650 @@enDesc:
15651 The name of the parameter entity.
15652
15653 WFErrDef:
15654 @QName: xp|wf-element-type-match
15655 @enDesc:
15656 The <CODE::Name> in an element's end-tag must match the element type
15657 in the start-tag.
15658 @enMufDef:
15659 End-tag |</%p (name => {<Q::xp|actual-element-type>});>| does
15660 not match to start-tag |<%p (name => {<Q::xp|expected-element-type>});>|
15661 @ecore:hasParameter: xp|error-token
15662 @ecore:hasParameter:
15663 @@@: xp|node
15664 @@enDesc:
15665 The current opening element node.
15666 @ecore:hasParameter:
15667 @@@: xp|expected-element-type
15668 @@enDesc:
15669 The element type name of the current element.
15670 @ecore:hasParameter:
15671 @@@: xp|actual-element-type
15672 @@enDesc:
15673 The <CODE::Name> occurs in the end-tag.
15674
15675 WFErrDef:
15676 @QName: xp|wf-unique-att-spec
15677 @enDesc:
15678 An attribute name <kwd:MUST-NOT> appear more than once in
15679 the same start-tag or empty-element tag.
15680 @enMufDef:
15681 Attribute |%p (name => {<Q::xp|name>});| is specified more
15682 than once in the same tag
15683 @ecore:hasParameter: xp|error-token
15684 @ecore:hasParameter:
15685 @@@: xp|name
15686 @@enDesc:
15687 The name of the attribute.
15688
15689 WFErrDef:
15690 @QName: xp|wf-no-external-entity-references
15691 @enDesc:
15692 Attribute values <kwd:MUST-NOT> contain direct or indirect
15693 entity references to external entities.
15694 @enMufDef:
15695 External entity |%p (name => {<Q::xp|name>});| is referenced
15696 in an attribute value literal
15697 @ecore:hasParameter: xp|error-token
15698 @ecore:hasParameter:
15699 @@@: xp|name
15700 @@enDesc:
15701 The name of the entity.
15702
15703 WFErrDef:
15704 @QName: xp|wf-no-lt-in-attribute-values
15705 @enDesc:
15706 The replacement text of any entity referred to directly or indirectly
15707 in an attribute value literal <kwd:MUST-NOT> contain a
15708 <CHAR::LESS-THAN SIGN>.
15709 @enMufDef:
15710 Entity replacement text cannot contain a
15711 |LESS-THAN SIGN| since it is referenced from an attribute
15712 value literal
15713 @ecore:hasParameter: xp|error-token
15714
15715 WarnDef:
15716 @QName: xp|warning-attribute-definition-ignored
15717 @enDesc:
15718 An attribute definition is ignored because the same attribute
15719 is declared before.
15720 @enMufDef:
15721 Attribute definition for |%p (name => {<Q::xp|name>});| is ignored
15722 @ecore:hasParameter: xp|error-token
15723 @ecore:hasParameter:
15724 @@@: xp|name
15725 @@enDesc:
15726 The name of the attribute.
15727
15728 WFErrDef:
15729 @QName: xp|wf-legal-character
15730 @enDesc:
15731 Characters referred to using character references <kwd:MUST>
15732 match the production for <CODE::Char>.
15733 @enMufDef:
15734 Reference to character %character-code-point
15735 (v => {<Q::xp|character-number>}); is not allowed
15736 @ecore:hasParameter: xp|error-token
15737 @ecore:hasParameter:
15738 @@@: xp|character-number
15739 @@enDesc:
15740 The code position of the character being referred.
15741 @ecore:hasParameter:
15742 @@@: xp|parent
15743 @@enDesc:
15744 The parent node in which the character reference has
15745 occurred, if available.
15746
15747 WFErrDef:
15748 @QName: xp|wf-entity-declared
15749 @enDesc:
15750 {P:: In a document
15751
15752 - without any DTD,
15753
15754 - with only an internal DTD subset that contains no parameter
15755 entity references, or
15756
15757 - with <XML::standalone="yes">,
15758
15759 for an entity reference that does not occur within the external
15760 subset or a parameter entity, the <CODE::Name> given in the
15761 entity reference <kwd:MUST> match the <CODE::Name> does not
15762 occur within the external subset or a parameter entity,
15763 except that five predefined character entities need not
15764 be declared. The declaration of a general entity <kwd:MUST>
15765 precede any reference to it which appears in a default value
15766 in an attribute list declaration.
15767 @enMufDef:
15768 Entity |%p (name => {<Q::xp|name>});| must be declared
15769 in the internal subset
15770 @ecore:hasParameter: xp|error-token
15771 @ecore:hasParameter:
15772 @@@: xp|name
15773 @@enDesc:
15774 The name of the entity.
15775
15776 WFErrDef:
15777 @QName: xp|wf-parsed-entity
15778 @enDesc:
15779 An entity reference <kwd:MUST-NOT> contain the name of an
15780 unparsed entity.
15781 @enMufDef:
15782 Entity |%p (name => {<Q::xp|name>});| is an unparsed entity
15783 @ecore:hasParameter: xp|error-token
15784 @ecore:hasParameter:
15785 @@@: xp|name
15786 @@enDesc:
15787 The name of the entity.
15788
15789 WFErrDef:
15790 @QName: xp|wf-no-recursion
15791 @enDesc:
15792 A parsed entity <kwd:MUST-NOT> contain a recursive reference
15793 to itself, either directly or indirectly.
15794 @enMufDef:
15795 Entity |%p (name => {<Q::xp|name>});| is recursively referenced
15796 @ecore:hasParameter: xp|error-token
15797 @ecore:hasParameter:
15798 @@@: xp|name
15799 @@enDesc:
15800 The name of the entity.
15801
15802 FatalErrDef:
15803 @QName: xp|fatal-xml11-end-of-line-in-xml-declaration
15804 @enDesc:
15805 An end-of-line character <CODE::U+0085> or <CODE::U+2028> is appeared
15806 within an XML declaration or text declaration.
15807 @enMufDef:
15808 End-of-line character %character-code-point
15809 (v => {<Q::xp|character-number>}); cannot be used within the
15810 XML or text declaration
15811 @ecore:hasParameter:
15812 @@@: xp|character-number
15813 @@enDesc:
15814 The code position of the end-of-line character.
15815
15816 ErrDef:
15817 @QName: xp|error-internal-predefined-entity
15818 @enDesc:
15819 A general entity declaration whose <CODE::Name> equals to one
15820 of predefined entities <kwd:MUST> declare it as an internal entity.
15821 @enMufDef:
15822 Entity |%p (name => {<Q::xp|name>});| must be declared as an
15823 internal entity
15824 @ecore:hasParameter: xp|error-token
15825 @ecore:hasParameter:
15826 @@@: xp|name
15827 @@enDesc:
15828 The name of the entity.
15829
15830 ErrDef:
15831 @QName: xp|error-malformed-predefined-entity
15832 @enDesc:
15833 A general entity declaration whose <CODE::Name> equals to one
15834 of predefined entities <kwd:MUST> declare it as a data
15835 character for the entity.
15836 @enMufDef:
15837 Entity declaration for |%p (name => {<Q::xp|name>});|
15838 (replacement text |%p (name => {<Q::xp|replacement-text>});|) is malformed
15839 @ecore:hasParameter: xp|error-token
15840 @ecore:hasParameter:
15841 @@@: xp|name
15842 @@enDesc:
15843 The name of the entity.
15844 @ecore:hasParameter:
15845 @@@: xp|replacement-text
15846 @@enDesc:
15847 The replacement text of the entity declaration.
15848
15849 WarnDef:
15850 @QName: xp|warning-entity-declaration-ignored
15851 @enDesc:
15852 An entity declaration is ignored because the same entity
15853 is declared before.
15854 @enMufDef:
15855 Entity declaration for |%p (name => {<Q::xp|name>});| is ignored
15856 @ecore:hasParameter: xp|error-token
15857 @ecore:hasParameter:
15858 @@@: xp|name
15859 @@enDesc:
15860 The name of the entity.
15861
15862 VCErrDef:
15863 @QName: xp|vc-unique-notation-name
15864 @enDesc:
15865 A <CODE::Name> <kwd:MUST-NOT> be declared in more than
15866 one notation declaration.
15867 @enMufDef:
15868 Notation |%p (name => {<Q::xp|name>});| is already declared
15869 @ecore:hasParameter: xp|error-token
15870 @ecore:hasParameter:
15871 @@@: xp|name
15872 @@enDesc:
15873 The name of the notation.
15874
15875 WarnDef:
15876 @QName: xp|warning-entity-declaration-not-processed
15877 @enDesc:
15878 An entity declaration is not processed because there
15879 is a reference to parameter entity before the declaration
15880 and the entity is not read.
15881 @enMufDef:
15882 Entity declaration for |%p (name => {<Q::xp|name>});| is not processed
15883 @ecore:hasParameter: xp|error-token
15884 @ecore:hasParameter:
15885 @@@: xp|name
15886 @@enDesc:
15887 The name of the entity.
15888
15889 WarnDef:
15890 @QName: xp|warning-attribute-definition-not-processed
15891 @enDesc:
15892 An attribute definition is not processed because there
15893 is a reference to parameter entity before the declaration
15894 and the entity is not read.
15895 @enMufDef:
15896 Attribute definition for |%p (name => {<Q::xp|name>});| is not processed
15897 @ecore:hasParameter: xp|error-token
15898 @ecore:hasParameter:
15899 @@@: xp|name
15900 @@enDesc:
15901 The name of the attribute.
15902
15903 NSFatalErrDef:
15904 @QName: xp|nswf-legal-ncname
15905 @enDesc:
15906 <CODE::Name>s other than element type names and attribute names
15907 <kwd:MUST> be <CODE::NCName>s.
15908 @enMufDef:
15909 <CODE::Name> |%p (name => {<Q::xp|name>});| is not an <CODE::NCName>
15910 @ecore:hasParameter: xp|error-token
15911 @ecore:hasParameter:
15912 @@@: xp|name
15913 @@enDesc:
15914 The name.
15915 @ecore:hasParameter:
15916 @@@: infoset|version
15917 @@enDesc:
15918 The version of XML in use.
15919
15920 NSFatalErrDef:
15921 @QName: xp|nswf-legal-qname
15922 @enDesc:
15923 An element type name or an attribute name <kwd:MUST> be a
15924 <CODE::QName>.
15925 @enMufDef:
15926 <CODE::Name> |%p (name => {<Q::xp|name>});| is not a <CODE::QName>
15927 @ecore:hasParameter: xp|error-token
15928 @ecore:hasParameter:
15929 @@@: xp|name
15930 @@enDesc:
15931 The name.
15932 @ecore:hasParameter:
15933 @@@: infoset|version
15934 @@enDesc:
15935 The version of XML in use.
15936
15937 NSCErrDef:
15938 @QName: xp|nsc-reserved-prefix-xml
15939 @enDesc:
15940 The prefix <XML::xml> <kwd:MUST-NOT> be undeclared or bound
15941 to any namespace name other than <URI::http://www.w3.org/XML/1998/namespace>.
15942 @enMufDef:
15943 Namespace prefix |xml| cannot be bound to namespace
15944 name |%p (name => {<Q::infoset|namespaceName>});|
15945 @ecore:hasParameter: xp|error-token
15946 @ecore:hasParameter:
15947 @@@: infoset|prefix
15948 @@enDesc:
15949 The namespace prefix.
15950 @ecore:hasParameter:
15951 @@@: infoset|namespaceName
15952 @@enDesc:
15953 The namespace name bound to or an empty string for undeclaring.
15954
15955 NSCErrDef:
15956 @QName: xp|nsc-reserved-namespace-name-xml
15957 @enDesc:
15958 Namespace prefixes other than <XML::xml> <kwd:MUST-NOT> be bound
15959 to the namespace name <URI::http://www.w3.org/XML/1998/namespace>.
15960 @enMufDef:
15961 Namespace prefix |%p (name => {<Q::infoset|prefix>});| cannot be
15962 bound to namespace name |http://www.w3.org/XML/1998/namespace|
15963 @enImplNote:
15964 The XMLNames spec does not prohibit the URI bound to
15965 the default namespace (!)
15966 @ecore:hasParameter: xp|error-token
15967 @ecore:hasParameter:
15968 @@@: infoset|prefix
15969 @@enDesc:
15970 The namespace prefix or <DOM::null> for default namespace.
15971 @ecore:hasParameter:
15972 @@@: infoset|namespaceName
15973 @@enDesc:
15974 The namespace name bound to.
15975
15976 NSCErrDef:
15977 @QName: xp|nsc-reserved-prefix-xmlns
15978 @enDesc:
15979 The prefix <XML::xmlns> <kwd:MUST-NOT> be declared or undeclared.
15980 @enMufDef:
15981 Namespace prefix |xmlns| cannot be declared or undeclared
15982 @ecore:hasParameter: xp|error-token
15983 @ecore:hasParameter:
15984 @@@: infoset|prefix
15985 @@enDesc:
15986 The namespace prefix.
15987 @ecore:hasParameter:
15988 @@@: infoset|namespaceName
15989 @@enDesc:
15990 The namespace name bound to or an empty string for undeclaring.
15991
15992 NSCErrDef:
15993 @QName: xp|nsc-reserved-namespace-name-xmlns
15994 @enDesc:
15995 Namespace prefixes <kwd:MUST-NOT> be bound
15996 to the namespace name <URI::http://www.w3.org/2000/xmlns/>.
15997 @enMufDef:
15998 Namespace prefix |%p (name => {<Q::infoset|prefix>});| cannot be
15999 bound to namespace name |http://www.w3.org/2000/xmlns/|
16000 @enImplNote:
16001 The XMLNames spec does not prohibit the URI bound to
16002 the default namespace (!)
16003 @ecore:hasParameter: xp|error-token
16004 @ecore:hasParameter:
16005 @@@: infoset|prefix
16006 @@enDesc:
16007 The namespace prefix or <DOM::null> for default namespace.
16008 @ecore:hasParameter:
16009 @@@: infoset|namespaceName
16010 @@enDesc:
16011 The namespace name bound to.
16012
16013 NSCErrDef:
16014 @QName: xp|nsc-prefix-declared
16015 @enDesc:
16016 A namespace prefix other than <XML::xml> or <XML::xmlns>
16017 <kwd:MUST> have been declared in a namespace declaration
16018 attribute in either the start or empty element tag of the
16019 element where the prefix is used or in an ancestor
16020 element. Furthermore, the attribute value in the innermost
16021 such declaration <kwd:MUST-NOT> be an empty string.
16022 @enMufDef:
16023 Namespace prefix |%p (name => {<Q::infoset|prefix>});| in
16024 qualified name |%p (name => {<Q::xp|name>});| is not declared
16025 @ecore:hasParameter: xp|error-token
16026 @ecore:hasParameter:
16027 @@@: infoset|prefix
16028 @@enDesc:
16029 The namespace prefix.
16030 @ecore:hasParameter:
16031 @@@: xp|name
16032 @@enDesc:
16033 The qualified name.
16034
16035 NSFatalErrDef:
16036 @QName: xp|nswf-empty-namespace-name
16037 @enDesc:
16038 If the XML version of the document is 1.0 and the
16039 normalized value of the prefixed namespace declaration attribute is empty.
16040 @enMufDef:
16041 Namespace |%p (name => {<Q::infoset|prefix>});| cannot be
16042 undeclared in XML 1.0
16043 @ecore:hasParameter: xp|error-token
16044 @ecore:hasParameter:
16045 @@@: infoset|prefix
16046 @@enDesc:
16047 The namespace prefix.
16048 @ecore:hasParameter:
16049 @@@: infoset|namespaceName
16050 @@enDesc:
16051 An empty string.
16052
16053 NSFatalErrDef:
16054 @QName: xp|nswf-unique-att-spec-expanded-name
16055 @enDesc:
16056 No element may have two attributes that have qualified name
16057 with the same local part and with namespace prefixes
16058 that have been bound to namespace names that are identical.
16059 @enMufDef:
16060 Attribute |%p (name => {<Q::infoset|localName>});| in
16061 namespace |%p (name => {<Q::infoset|namespaceName>});| is
16062 attached to the same element more than once (as
16063 |%p (name => {<Q::xp|name>});| and
16064 |%p (name => {<Q::xp|another-attribute-name>});|)
16065 @enImplNote:
16066 The XMLNames spec doesn't mention default attributes
16067 for this constraint...
16068 @ecore:hasParameter: xp|error-token
16069 @ecore:hasParameter:
16070 @@@: infoset|localName
16071 @@enDesc:
16072 The local part of the attribute.
16073 @ecore:hasParameter:
16074 @@@: infoset|namespaceName
16075 @@enDesc:
16076 The namespace URI of the attribute.
16077 @ecore:hasParameter:
16078 @@@: xp|name
16079 @@enDesc:
16080 The name, i.e. a qualified name consist of <Q::infoset:localName>
16081 and <Q::infoset:namespaceName> parameter values.
16082 @ecore:hasParameter:
16083 @@@: xp|another-attribute-name
16084 @@enDesc:
16085 Another attribute qualified name expanded to the same expanded name
16086 as <Q::xp|name>.
16087
16088 XWParam:
16089 @QName: xp|another-attribute-name
16090
16091 XWParam:
16092 @QName: xp|replacement-text
16093 @enDesc:
16094 The replacement text.
16095
16096 XWParam:
16097 @QName: xp|error-token
16098 @enDesc:
16099 The token where the parser found an error.
16100
16101 XWParam:
16102 @QName: xp|name
16103 @enDesc:
16104 A name.
16105
16106 XWParam:
16107 @QName: xp|parent
16108 @enDesc:
16109 The parent node in which the error occurs.
16110
16111 XWParam:
16112 @QName: xp|node
16113 @enDesc:
16114 The current node.
16115
16116 XWParam:
16117 @QName: xp|actual-element-type
16118 @enDesc:
16119 The actual element type name occured in the source.
16120
16121 XWParam:
16122 @QName: xp|expected-element-type
16123 @enDesc:
16124 The element type name expected.
16125
16126 XWParam:
16127 @QName: xp|character-number
16128 @enDesc:
16129 The character code position.
16130
16131 ElementTypeBinding:
16132 @Name: XWParam
16133 @ElementType:
16134 dis:ResourceDef
16135 @ShadowContent:
16136 @@For: =ManakaiDOM|all
16137 @@rdf:type: ecore|Parameter
16138
16139 ElementTypeBinding:
16140 @Name:enMufDef
16141 @ElementType:
16142 ecore:defaultMessage
16143 @ShadowContent:
16144 @@lang:en
16145 @@ContentType:
16146 lang:muf
16147
16148 ResourceDef:
16149 @QName: DOMImpl
16150 @AliasFor: DOMCore|DOMImplementation
16151 @For: ManakaiDOM|DOM
16152
16153 ResourceDef:
16154 @QName: LSInput
16155 @AliasFor: DOMLS|LSInput
16156 @For: ManakaiDOM|DOM
16157
16158 ResourceDef:
16159 @QName: LSParser
16160 @AliasFor: DOMLS|LSParser
16161 @For: ManakaiDOM|DOM
16162
16163 ElementTypeBinding:
16164 @Name: Attr
16165 @ElementType:
16166 dis:ResourceDef
16167 @ShadowContent:
16168 @@rdf:type: DISLang|Attribute
16169 @@ForCheck: !=ManakaiDOM|ManakaiDOM
16170
16171 ElementTypeBinding:
16172 @Name: Get
16173 @ElementType:
16174 dis:ResourceDef
16175 @ShadowContent:
16176 @@rdf:type: DISLang|AttributeGet
16177
16178 ElementTypeBinding:
16179 @Name: Set
16180 @ElementType:
16181 dis:ResourceDef
16182 @ShadowContent:
16183 @@rdf:type: DISLang|AttributeSet
16184
16185 ElementTypeBinding:
16186 @Name: enDesc
16187 @ElementType:
16188 dis:Description
16189 @ShadowContent:
16190 @@lang:en
16191
16192 ElementTypeBinding:
16193 @Name: Method
16194 @ElementType:
16195 dis:ResourceDef
16196 @ShadowContent:
16197 @@rdf:type: DISLang|Method
16198 @@For: !=ManakaiDOM|ManakaiDOM
16199
16200 ElementTypeBinding:
16201 @Name: Return
16202 @ElementType:
16203 dis:ResourceDef
16204 @ShadowContent:
16205 @@rdf:type: DISLang|MethodReturn
16206
16207 ElementTypeBinding:
16208 @Name: Param
16209 @ElementType:
16210 dis:ResourceDef
16211 @ShadowContent:
16212 @@rdf:type: DISLang|MethodParameter
16213
16214 ElementTypeBinding:
16215 @Name: PerlDef
16216 @ElementType:
16217 dis:Def
16218 @ShadowContent:
16219 @@ContentType: lang|Perl
16220
16221 ElementTypeBinding:
16222 @Name: PerlDefC
16223 @ElementType:
16224 dis:Def
16225 @ShadowContent:
16226 @@ContentType: lang|Perl
16227
16228 ElementTypeBinding:
16229 @Name: PropDef
16230 @ElementType:
16231 dis:ResourceDef
16232 @ShadowContent:
16233 @@rdf:type: rdf|Property
16234
16235 ClsDef:
16236 @ClsQName: ManakaiXMLParserExceptionFormatter
16237
16238 @ClsISA: ecore|MUErrorFormatter||ManakaiDOM|Perl
16239
16240 @RuleDef:
16241 @@Name: xp-error-token-type
16242 @@enDesc:
16243 The type of the token the parser is encountered.
16244
16245 @@Method:
16246 @@@Name: after
16247 @@@Param:
16248 @@@@Name: name
16249 @@@@Type: DOMString
16250 @@@@enDesc: The name of the method.
16251 @@@Param:
16252 @@@@Name: p
16253 @@@@Type: DISPerl|HASH
16254 @@@@enDesc: The set of the parameters to the method.
16255 @@@Param:
16256 @@@@Name: o
16257 @@@@Type: DISPerl|HASH
16258 @@@@enDesc: The option value.
16259 @@@Return:
16260 @@@@PerlDef:
16261 $p->{-result} = $o->{<H::xp|error-token>}->{type}
16262 if defined $o->{<H::xp|error-token>}->{type};
16263
16264 @RuleDef:
16265 @@Name: xp-error-token-value
16266 @@enDesc:
16267 The value of the token the parser is encountered, if any.
16268
16269 @@Method:
16270 @@@Name: after
16271 @@@Param:
16272 @@@@Name: name
16273 @@@@Type: DOMString
16274 @@@@enDesc: The name of the method.
16275 @@@Param:
16276 @@@@Name: p
16277 @@@@Type: DISPerl|HASH
16278 @@@@enDesc: The set of the parameters to the method.
16279 @@@Param:
16280 @@@@Name: o
16281 @@@@Type: DISPerl|HASH
16282 @@@@enDesc: The option value.
16283 @@@Return:
16284 @@@@PerlDef:
16285 $p->{-result} = $o->{<H::xp|error-token>}->{value}
16286 if defined $o->{<H::xp|error-token>}->{value};
16287
16288 @RuleDef:
16289 @@Name: xp-error-lines
16290 @@enDesc:
16291 A copy of fragment of the source text that contains the line
16292 where the error occurred, if available.
16293
16294 @@Method:
16295 @@@Name: after
16296 @@@Param:
16297 @@@@Name: name
16298 @@@@Type: DOMString
16299 @@@@enDesc: The name of the method.
16300 @@@Param:
16301 @@@@Name: p
16302 @@@@Type: DISPerl|HASH
16303 @@@@enDesc: The set of the parameters to the method.
16304 @@@Param:
16305 @@@@Name: o
16306 @@@@Type: DISPerl|HASH
16307 @@@@enDesc: The option value.
16308 @@@Return:
16309 @@@@PerlDef:
16310 my $pos = $o-><AG::DOMCore|DOMError.location>
16311 -><AG::DOMCore|DOMLocator.utf32Offset>;
16312 my $src = $o->{<H::ecore|object>}->{entity}->[-1]->{reptxt};
16313 if (defined $src and $pos > -1) {
16314 my $start = $pos;
16315 $start = rindex ($$src, "\x0A", $start - 1) for 0..2;
16316 $start++;
16317 my $end = $pos;
16318 $end = index ($$src, "\x0A", $end + 1) for 0..2;
16319 $end = length $$src if $end < 0;
16320 $p->{-result} = substr $$src, $start, $end - $start;
16321 }
16322
16323 @RuleDef:
16324 @@Name: character-code-point
16325 @@enDesc:
16326 The character code position, in <CODE::U+<VAR::HHHH>> notation.
16327
16328 @@Method:
16329 @@@Name: after
16330 @@@Param:
16331 @@@@Name: name
16332 @@@@Type: DOMString
16333 @@@@enDesc: The name of the method.
16334 @@@Param:
16335 @@@@Name: p
16336 @@@@Type: DISPerl|HASH
16337 @@@@enDesc: The set of the parameters to the method.
16338 @@@Param:
16339 @@@@Name: o
16340 @@@@Type: DISPerl|HASH
16341 @@@@enDesc: The option value.
16342 @@@RuleParam:
16343 @@@@Name: v
16344 @@@@Type: DISPerl|Number
16345 @@@@enDesc:
16346 The name of the error parameter that contains the character code.
16347 @@@Return:
16348 @@@@PerlDef:
16349 $p->{-result} = sprintf 'U+%04X', $o->{$p->{v}};
16350 ##XMLParserExceptionFormatter
16351
16352 ElementTypeBinding:
16353 @Name: CParam
16354 @ElementType:
16355 dis:ResourceDef
16356 @ShadowContent:
16357 @@rdf:type:
16358 @@@@: c|DOMConfigurationParameter
16359 @@@For: ManakaiDOM|DOM
16360 @@rdf:type:
16361 @@@@: DISSource|ResourceProperty
16362 @@@For: =ManakaiDOM|all
16363 @@For: ManakaiDOM|DOM3
16364 @@For: =ManakaiDOM|all
16365 @@subsetOf:
16366 @@@@: c|anyDOMConfigurationParameter
16367 @@@For: =ManakaiDOM|all
16368 @@multipleProperties:
16369 @@@@: DISCore|Single
16370 @@@For: =ManakaiDOM|all
16371
16372 ElementTypeBinding:
16373 @Name: CParamApp
16374 @ElementType:
16375 dis:ResourceDef
16376 @ShadowContent:
16377 @@rdf:type:
16378 @@@@: c|DOMConfigurationParameterApplication
16379 @@@For: ManakaiDOM|DOM
16380 @@For: ManakaiDOM|DOM3
16381
16382 ElementTypeBinding:
16383 @Name: boolCParam
16384 @ElementType:
16385 dis:ResourceDef
16386 @ShadowContent:
16387 @@DISCore:resourceType:
16388 @@@@: c|DOMConfigurationParameter
16389 @@@For: ManakaiDOM|DOM
16390 @@DISCore:resourceType:
16391 @@@@: DISSource|ResourceProperty
16392 @@@For: =ManakaiDOM|all
16393 @@For: ManakaiDOM|DOM3
16394 @@For: =ManakaiDOM|all
16395 @@Type: idl|boolean||ManakaiDOM|all
16396 @@subsetOf:
16397 @@@@: c|anyDOMConfigurationParameter
16398 @@@For: =ManakaiDOM|all
16399 @@multipleProperties:
16400 @@@@: DISCore|Single
16401 @@@For: =ManakaiDOM|all
16402 @@dataType:
16403 @@@@: DISCore|Boolean
16404 @@@For: =ManakaiDOM|all
16405
16406 CParamApp:
16407 @QName: xml-id
16408 @c:domConfigurationParameter: cfg|xml-id
16409 @c:targetType: xp|ManakaiXMLParser
16410 @TrueCase:
16411 @@c:isSupported: 1
16412 @FalseCase:
16413 @@c:isSupported: 1
16414
16415 CParamApp:
16416 @QName: error-handler
16417 @c:domConfigurationParameter: c|error-handler
16418 @c:targetType: xp|ManakaiXMLParser
16419
16420 boolCParam:
16421 @QName: cfg|entity-replacement-tree
16422 @DOMLS:lsKey:
16423 @@@: erep
16424 @@For: =ManakaiDOM|all
16425 @Type: idl|boolean||ManakaiDOM|all
16426 @c:targetType: xp|ManakaiXMLParser
16427 @IsSupportRequired: 1
16428 @c:isSupported: 1
16429 @TrueCase:
16430 @@c:isSupported: 1
16431 @@enDesc:
16432 The parser <kwd:MUST> cnstruct the replacement subtree of
16433 a general parsed <IF::x|Entity> node if the replacement text
16434 for the node is available.
16435
16436 If this value is set to the parameter, then a fatal error
16437 might be reported even if the entire document is well-formed
16438 in case a general parsed entity has replacement text that is
16439 not well-formed when evaluated as if it has been referenced
16440 in the content of an element, except that undeclared namespace prefixes
16441 do not result in namespace well-formedness error.
16442 @FalseCase:
16443 @@IsDefault: 1
16444 @@c:isSupported: 1
16445 @@IsSupportRequired: 1
16446 @@enDesc:
16447 The parser don't have to construct <IF::x|Entity> replacement
16448 subtrees.
16449
16450 @Test:
16451 @@QName: cfg.entity-replacement-tree.test
16452 @@PerlDef:
16453 my $xp;
16454 __CODE{createParserForTest:: $xp => $xp}__;
16455 my $cfg = $xp-><AG::LSInput.domConfig>;
16456
16457 my $pname = <Q::cfg|entity-replacement-tree>;
16458
16459 $test->id ('default.false');
16460 $test->assert_false ($cfg-><M::c|DOMConfiguration.getParameter> ($pname));
16461
16462 $test->id ('false.to.true');
16463 $cfg-><M::c|DOMConfiguration.setParameter> ($pname => true);
16464 $test->assert_false ($cfg-><M::c|DOMConfiguration.getParameter> ($pname));
16465
16466 $test->id ('true.to.false');
16467 $cfg-><M::c|DOMConfiguration.setParameter> ($pname => false);
16468 $test->assert_false ($cfg-><M::c|DOMConfiguration.getParameter> ($pname));
16469
16470 $test->id ('reset');
16471 $cfg-><M::c|DOMConfiguration.setParameter> ($pname => true);
16472 $cfg-><M::c|DOMConfiguration.setParameter> ($pname => null);
16473 $test->assert_false ($cfg-><M::c|DOMConfiguration.getParameter> ($pname));
16474
16475 CParam:
16476 @QName: xp|ls-input-to-input-file
16477 @DOMLS:lsKey:
16478 @@@: i2i
16479 @@For: =ManakaiDOM|all
16480 @Type: ManakaiDOMLSInputToInputFile
16481 @c:targetType: xp|ManakaiXMLParser
16482 @IsSupportRequired: 1
16483 @c:isSupported: 1
16484 @enDesc:
16485 An <IF::LSInput> to Perl filehandle converter.
16486
16487 @Method:
16488 @@rdf:type: c|DOMConfigurationParameterDefaultGetter
16489 @@Param:
16490 @@@Name: name
16491 @@@Type: DOMString
16492 @@@dis:actualType: c|DOMConfigurationParameterName
16493 @@@enDesc: The parameter name.
16494 @@Return:
16495 @@@Type: ManakaiDOMLSInputToInputFile
16496 @@@enDesc:
16497 The default resolver.
16498 @@@PerlDefC:
16499 $r = sub {
16500 my ($self, $input, $errorHandler) = @_;
16501 ## As defined in DOM Level 3 LS |LSInput| interface
16502
16503 my $r = {};
16504
16505 __DEEP{
16506
16507 FH: {
16508 ## 1. |characterStream|
16509 my $v = $input-><AG::LSInput.characterStream>;
16510 if (defined $v) {
16511 $r->{filehandle} = $v;
16512 last FH;
16513 }
16514
16515 ## 2. |byteStream|
16516 $v = $input-><AG::LSInput.byteStream>;
16517 if (defined $v) {
16518 ## TODO: Support byte filehandle
16519 ## |encoding|
16520 ## TODO: How to guess?
16521 return null;
16522 }
16523
16524 ## 3. |stringData|
16525 $v = $input-><AG::LSInput.stringData>;
16526 if (defined $v) {
16527 require IO::String;
16528 $r->{filehandle} = IO::String->new ($v);
16529 last FH;
16530 }
16531
16532 ## 4. |systemId|
16533 ## TODO:
16534 ## resolve relative URI
16535 ## open
16536 ## set document_uri
16537
16538 ## 5. |publicId|
16539 ## The default resolver does not support only-|publicId| input.
16540
16541 return null;
16542 } # FH
16543
16544 DURI: {
16545 last DURI if defined $r->{document_uri};
16546
16547 my $v = $input-><AG::LSInput.systemId>;
16548 if (defined $v) {
16549 $r->{base_uri} = $input-><AG::LSInput.baseURI>
16550 unless defined $r->{base_uri};
16551 if (defined $r->{base_uri}) {
16552 $r->{document_uri}
16553 = <ClassM::urigen|ManakaiURIReference.new> (\$v)
16554 -><M::urigen|URIReference.getAbsoluteReference>
16555 ($r->{base_uri})
16556 -><AG::urigen|URIReference.uriReference>;
16557 } else {
16558 $r->{document_uri} = $v;
16559 }
16560 last DURI;
16561 }
16562
16563 ## TODO: pubid -> pubid URN -> document_uri
16564 } # DURI
16565
16566 BURI: {
16567 last BURI if defined $r->{base_uri};
16568
16569 my $v = $input-><AG::LSInput.baseURI>;
16570 if (defined $v) {
16571 $r->{base_uri} = $v;
16572 last BURI;
16573 }
16574
16575 if (defined $r->{document_uri}) {
16576 $r->{base_uri} = $r->{document_uri};
16577 }
16578 } # BURI
16579
16580 }__;
16581
16582 ## ISSUE: Is |certifiedText| required by parsers?
16583
16584 return $r;
16585 };
16586 @Method:
16587 @@rdf:type: c|DOMConfigurationParameterSetter
16588 @@Param:
16589 @@@Name: name
16590 @@@Type: DOMString
16591 @@@dis:actualType: c|DOMConfigurationParameterName
16592 @@@enDesc: The parameter name.
16593 @@Param:
16594 @@@Name: value
16595 @@@Type: DOMMain|DOMUserData
16596 @@@dis:actualType: ManakaiDOMLSInputToInputFile
16597 @@@enDesc: The new value.
16598 @@Return:
16599 @@@Type: idl|void||ManakaiDOM|all
16600 @@@PerlDefC:
16601 $self->[1]->{<H::xp|ls-input-to-input-file>} = $value;
16602 @@enImplNote:
16603 Implied input processor converts non-blessed code references
16604 into a <Class::ManakaiDOMLSInputToInputFile> object.
16605 @Method:
16606 @@rdf:type: c|DOMConfigurationParameterChecker
16607 @@Param:
16608 @@@Name: name
16609 @@@Type: DOMString
16610 @@@dis:actualType: c|DOMConfigurationParameterName
16611 @@@enDesc: The parameter name.
16612 @@Param:
16613 @@@Name: value
16614 @@@Type: DOMMain|DOMUserData
16615 #@@@dis:actualType: ManakaiDOMLSInputToInputFile
16616 @@@enDesc: The new value.
16617 @@Return:
16618 @@@Type: idl|boolean||ManakaiDOM|all
16619 @@@PerlDefC:
16620 $r = UNIVERSAL::isa ($value, 'CODE') or
16621 UNIVERSAL::isa ($value, <ClassName::ManakaiDOMLSInputToInputFile>);
16622
16623 @@Test:
16624 @@@QName: cp.ls-input-to-input-file.test
16625 @@@PerlDefC:
16626 my $xp;
16627 __CODE{createParserForTest:: $xp => $xp}__;
16628 my $cfg = $xp-><AG::LSInput.domConfig>;
16629
16630 my $cp = <Q::xp|ls-input-to-input-file>;
16631
16632 $test->id ('default');
16633 my $default = $cfg-><M::c|DOMConfiguration.getParameter> ($cp);
16634 $test->assert_isa ($default,
16635 <ClassName::ManakaiDOMLSInputToInputFile>);
16636
16637 $test->id ('set');
16638 my $sub1 = sub { };
16639 $cfg-><M::c|DOMConfiguration.setParameter> ($cp => $sub1);
16640 my $sub2 = $cfg-><M::c|DOMConfiguration.getParameter> ($cp);
16641 $test->assert_isa ($sub2, <ClassName::ManakaiDOMLSInputToInputFile>);
16642 $test->assert_equals ($sub2, $sub1);
16643
16644 $test->id ('reset');
16645 $cfg-><M::c|DOMConfiguration.setParameter> ($cp => null);
16646 my $sub3 = $cfg-><M::c|DOMConfiguration.getParameter> ($cp);
16647 $test->assert_isa ($sub3, <ClassName::ManakaiDOMLSInputToInputFile>);
16648 $test->assert_equals ($sub3, $default);
16649
16650 @@Test:
16651 @@@QName: cp.ls-input-to-input-file.default.test
16652 @@@PerlDefC:
16653 my $xp;
16654 __CODE{createParserForTest:: $xp => $xp}__;
16655 my $cfg = $xp-><AG::LSInput.domConfig>;
16656 my $cp = <Q::xp|ls-input-to-input-file>;
16657 my $default = $cfg-><M::c|DOMConfiguration.getParameter> ($cp);
16658
16659 my $err = sub {}; # dummy error handler
16660
16661 my $cs = \*STDOUT; # dummy input
16662
16663 $test->id ('cs.sysid');
16664 my $r1 = $default->resolve_ls_input ({
16665 character_stream => $cs,
16666 system_id => q<http://example.com/sysid>,
16667 }, $err);
16668 $test->assert_equals
16669 ($r1->document_uri, q<http://example.com/sysid>);
16670 $test->assert_equals
16671 ($r1->base_uri, q<http://example.com/sysid>);
16672
16673 $test->id ('cs.baseuri.sysid');
16674 my $r1 = $default->resolve_ls_input ({
16675 character_stream => $cs,
16676 system_id => q<sysid>,
16677 base_uri => q<http://example.com/>,
16678 }, $err);
16679 $test->assert_equals
16680 ($r1->document_uri, q<http://example.com/sysid>);
16681 $test->assert_equals
16682 ($r1->base_uri, q<http://example.com/>);
16683 ##ls-input-to-input-file
16684
16685 ClsDef:
16686 @ClsQName: ManakaiDOMLSInputToInputFile
16687 @enDesc:
16688 An <Class::ManakaiDOMLSInputToInputFile> object is used to covert
16689 a <IF::LSInput> object into a Perl filehandle.
16690
16691 {ISSUE::
16692 In which module this class should be placed?
16693
16694 Better interface name?
16695 }
16696
16697 @enDesc:
16698 @@ddid: perl
16699 @@ForCheck: ManakaiDOM|ManakaiDOM
16700 @@@:
16701 For Perl binding, any parameter that accepts
16702 a <Class::ManakaiDOMLSInputToInputFile> would also accept a Perl code
16703 reference (subroutine reference). The code reference
16704 will be blessed as a <Class::ManakaiDOMLSInputToInputFile> whose
16705 <M::ManakaiDOMLSInputToInputFile.resolveLSInput> method invokes the code.
16706
16707 @ResourceDef:
16708 @@rdf:type: DISLang|InputProcessor
16709 @@rdf:type: DISLang|OutputProcessor
16710 @@PerlDef:
16711 $INPUT = bless $INPUT, <ClassName::ManakaiDOMLSInputToInputFile>
16712 if ref $INPUT eq 'CODE';
16713
16714 @Method:
16715 @@Name: resolveLSInput
16716 @@enDesc:
16717 Converts a <IF::LSInput> into a Perl filehandle.
16718 @@Param:
16719 @@@Name: input
16720 @@@Type: LSInput
16721 @@@enDesc:
16722 The input.
16723 @@Param:
16724 @@@Name: errorHandler
16725 @@@Type: c|DOMErrorHandler
16726 @@@enDesc:
16727 An error handler. If the method encounters an error
16728 or warning, it <kwd:MAY> notify it to application
16729 via this handler.
16730 @@Return:
16731 @@@Type: ManakaiDOMInputFile
16732 @@@enDesc:
16733 A <Class::ManakaiDOMInputFile> object created from <P::input>.
16734 @@@nullCase:
16735 @@@@enDesc:
16736 If the method was unable to resolve the <P::input>.
16737
16738 {ISSUE::
16739 Should we allow the method to throw exceptions?
16740 }
16741 @@@PerlDef:
16742 __DEEP{
16743 $r = $self->($self, $input, $errorHandler);
16744 }__;
16745 @@@enImplNote:
16746 Notet that the input / output processor for <CODE::$input>
16747 and return value might or might not be inserted in
16748 the <Perl::$self> code.
16749 ##LSInputToInputFile
16750
16751 ClsDef:
16752 @ClsQName: ManakaiDOMInputFile
16753 @enDesc:
16754 A set of information on the input, including filehandle.
16755
16756 @enDesc:
16757 @@ddid: perl
16758 @@ForCheck: ManakaiDOM|ManakaiDOM
16759 @@@:
16760 For Perl binding, any parameter that accepts
16761 a <Class::ManakaiDOMInputFile> would also accept a Perl hash reference.
16762 If a hash reference is given to parameter that expects
16763 a <Class::ManakaiDOMInputFile> object, then it
16764 bless the hash with the class.
16765
16766 Each attributes defined
16767 in the class is associated to the hash value with the
16768 key equals to the attribut name. Each method defined in
16769 the class will invoke the code reference retrieved
16770 from the hash by the key equals to the method name.
16771
16772 If there is no value in the hash for an attribute,
16773 then its value is <DOM::null>.
16774
16775 @ResourceDef:
16776 @@rdf:type: DISLang|InputProcessor
16777 @@rdf:type: DISLang|OutputProcessor
16778 @@PerlDef:
16779 $INPUT = bless $INPUT, <ClassName::ManakaiDOMInputFile>
16780 if ref $INPUT eq 'HASH';
16781
16782 @Attr:
16783 @@Name: filehandle
16784 @@Type: DISPerl|filehandle||ManakaiDOM|all
16785 @@enDesc:
16786 The input filehandle.
16787
16788 It <kwd:MUST> be an <Perl::open>ed (and not <Perl::close>d)
16789 filehandle. Note that
16790 it does not have to be associated with an actual file
16791 in the local file system.
16792
16793 It <kwd:MUST> return a character (rather than byte)
16794 by <Perl::getc>.
16795 @@Get:
16796 @@@PerlDef: $r = $self->{filehandle};
16797 @@Set:
16798 @@@PerlDef: $self->{filehandle} = $given;
16799
16800 @Attr:
16801 @@Name: baseURI
16802 @@enDesc:
16803 The base URI of the input.
16804
16805 It <kwd:MUST> be an absolute DOM URI or <DOM::null>.
16806 Otherwise, the result is undefined.
16807 @@Type: DOMString
16808 @@nullCase:
16809 @@@enDesc:
16810 If the base URI is not available.
16811 @@Get:
16812 @@@PerlDef: $r = $self->{base_uri};
16813 @@Set:
16814 @@@PerlDef: $self->{base_uri} = $given;
16815
16816 @Attr:
16817 @@Name: documentURI
16818 @@enDesc:
16819 The URI of the document.
16820
16821 It <kwd:MUST> be an absolute DOM URI or <DOM::null>.
16822 Otherwise, the result is undefined.
16823 @@Type: DOMString
16824 @@nullCase:
16825 @@@enDesc:
16826 If the document URI is not available.
16827 @@Get:
16828 @@@PerlDef: $r = $self->{document_uri};
16829 @@Set:
16830 @@@PerlDef: $self->{document_uri} = $given;
16831
16832 @Method:
16833 @@Name: close
16834 @@enDesc:
16835 Closes the file.
16836
16837 Since when the Perl's destructor is invoked is unreliable,
16838 this method is explicitly called when the file is no longer
16839 in use.
16840
16841 If the <Class::ManakaiDOMInputFile> is given as a hash
16842 reference and whose value for <CODE::close> is not defined,
16843 then the statement <Perl::close $filehandle> is done
16844 (where <Perl::$filehandle> is the <A::ManakaiDOMInputFile.filehandle>
16845 value).
16846 @@Return:
16847 @@@PerlDef:
16848 __DEEP{
16849 if ($self->{close}) {
16850 $self->{close}->($self);
16851 } else {
16852 close $self->{filehandle};
16853 }
16854 }__;
16855 ##ManakaiDOMInputFile
16856
16857
16858

admin@suikawiki.org
ViewVC Help
Powered by ViewVC 1.1.24