/[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.31 - (show annotations) (download)
Fri Mar 10 10:52:03 2006 UTC (18 years, 8 months ago) by wakaba
Branch: MAIN
Changes since 1.30: +76 -53 lines
++ manakai/lib/Message/ChangeLog	10 Mar 2006 10:43:42 -0000
2006-03-10  Wakaba  <wakaba@suika.fam.cx>

	* Makefile: Directories |URI| and |Charset| are added.

	* Charset/: New directory.

++ manakai/lib/Message/Util/ChangeLog	10 Mar 2006 10:51:06 -0000
2006-03-10  Wakaba  <wakaba@suika.fam.cx>

	* PerlCode.dis (stringify): Inserts new line after |COMMA|s
	in lists (hash literals and array literals --- "lists" theirselves
	are excluded since they are usually not so long).

	* DIS.dis (loadResource): Don't throw error
	if an alias is alreadt defined for same URI.  Registers
	aliases from |srinfo| to the database. By these
	fixes aliases defined in another module from the canonical
	resource name's module can live even after the canonical's
	module is updated.

++ manakai/lib/Message/DOM/ChangeLog	10 Mar 2006 10:44:35 -0000
2006-03-10  Wakaba  <wakaba@suika.fam.cx>

	* DOMCore.dis, DOMXML.dis, XDoctype.dis (manakaiAppendText): New
	method.

	* XMLParser.dis: Don't create adjacent text nodes.

++ manakai/lib/Message/URI/ChangeLog	10 Mar 2006 10:47:21 -0000
2006-03-10  Wakaba  <wakaba@suika.fam.cx>

	* Generic.dis (MURI:): Typos are fixed.

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

	* dis-catalog: New |Message::Charset| namespace is added.

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/06 07:32:52 $
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 my @ent = values %{$self->{general_entity}};
665 for my $ent (@ent) {
666 if (exists $ent->{has_replacement_text}) {
667 my $ent_name = $ent->{name};
668 $self->{entity} = [<Code::getCopyOfEntityState::
669 $entity_type = 'general_entity',
670 $entity_name = $ent_name>];
671 $self->{location} = $self->{entity}->[-1];
672 $self->{token} = [];
673 $self->{char} = [];
674 local $ent->{is_opened} = true;
675 ## TODO: External entity support
676 $self->_parse_InternalGeneralParsedEntity ($ent->{node});
677 $ent->{node}-><AS::x|Entity.hasReplacementTree> (true);
678 $self->{entity}->[-1]->{close_file}->();
679 ## ISSUE: Should errors detected by this phase result
680 ## in |DOMLS:PARSE_ERR| exception thrown?
681 }
682 ## TODO: Read-only if configuration (for all entities)
683 }
684
685 ## Turns flags to their default value
686 $self->{doc_cfg}-><M::c|DOMConfiguration.setParameter>
687 (<Q::cfg|entity-reference-read-only> => null);
688 $self->{doc_cfg}-><M::c|DOMConfiguration.setParameter>
689 (<Q::cfg|clone-entity-reference-subtree> => null);
690 $self->{doc_cfg}-><M::c|DOMConfiguration.setParameter>
691 (<Q::cfg|dtd-default-attributes> => null);
692 $self->{doc_cfg}-><M::c|DOMConfiguration.setParameter>
693 (<Q::cfg|xml-id> => null);
694 $self->{doc_cfg}-><M::c|DOMConfiguration.setParameter>
695 ('error-handler' => null);
696 $r-><AS::Document.strictErrorChecking> (true);
697 }__;
698
699 @Method:
700 @@Name: shiftChar
701 @@ManakaiDOM:isForInternal:1
702 @@ForCheck: ManakaiDOM|ForClass
703 @@enDesc:
704 Returns the next character.
705 @@Return:
706 @@@Type: idl|long||ManakaiDOM|all
707 @@@enDesc:
708 The code position number of the next character, if any,
709 or <CODE::-1>.
710 @@@PerlDef:
711 if (@{$self->{char}}) {
712 $r = shift @{$self->{char}};
713 } else {
714 GETCHAR: {
715 no warnings 'closed'; # getc() on closed filehandle warning
716 my $ent = $self->{entity}->[-1];
717 my $char = getc $ent->{fh};
718
719 if (defined $char and length $char) {
720 $ent->{pos}++;
721 $r = ord $char;
722 if ($r == 0x000A) {
723 $ent->{line}++;
724 $ent->{column} = 1;
725 } elsif ($r == 0x000D) {
726 my $next_char = getc $ent->{fh};
727 if ($next_char eq "\x0A") {
728 if ($ent->{is_external_entity}) {
729 $ent->{pos}++;
730 $ent->{line}++;
731 $ent->{column} = 1;
732 $r = 0x000A; # ^ U+000D U+000A -> U+000A ^
733 } else { # Internal entity
734 $ent->{column}++;
735 ## Line number will be increased by next |shiftChar|.
736 $ent->{fh}->ungetc (0x000A);
737 #$r = 0x000D; # ^ U+000D U+000A -> U+000D ^ U+000A
738 # no change
739 }
740 } elsif ($next_char eq "\x85") {
741 if ($self->{xml_version} eq '1.1') {
742 if ($ent->{is_external_entity}) {
743 if ($ent->{no_xml11_eol}) {
744 my $location = {
745 utf32_offset => $ent->{pos} - 1,
746 line_number => $ent->{line},
747 column_number => $ent->{column},
748 };
749 my $continue = __c|ERROR{
750 xp|fatal-xml11-end-of-line-in-xml-declaration::
751 c|location => {$location},
752 xp|character-number => {$r},
753 }__;
754 unless ($continue) {
755 __CODE{ParseError}__;
756 }
757 } # no_xml11_eol
758 $ent->{pos}++;
759 $ent->{line}++;
760 $ent->{column} = 1;
761 $r = 0x000A; # ^ U+000D U+0085 -> U+000A ^
762 } else { # internal entity
763 $ent->{column}++;
764 ## Line number will be increased by next |shiftChar|.
765 $ent->{fh}->ungetc (0x0085);
766 #$r = 0x000D; # ^ U+000D U+0085 -> U+000D ^ U+0085
767 # no change
768 }
769 } else { # XML 1.0
770 ## |no_xml11_eol| will be tested later.
771 $ent->{column}++;
772 ## Line number will be increased by next |shiftChar|.
773 $ent->{fh}->ungetc (0x0085);
774 $r = 0x000A if $ent->{is_external_entity};
775 # external: ^ U+000D U+0085 -> U+000A ^ U+0085
776 # internal: ^ U+000D U+0085 -> U+000D ^ U+0085 (as is)
777 }
778 } else { # neither U+000A nor U+0085
779 $ent->{line}++;
780 $ent->{column} = 1;
781 $ent->{fh}->ungetc (ord $next_char);
782 $r = 0x000A if $ent->{is_external_entity};
783 # external: ^ U+000D _ -> U+000A ^ _
784 # internal: ^ U+000D _ -> U+000D ^ _ (as is)
785 }
786 } elsif ($r == 0x0085 or $r == 0x2028) {
787 if ($ent->{no_xml11_eol}) {
788 my $location = {
789 utf32_offset => $ent->{pos} - 1,
790 line_number => $ent->{line},
791 column_number => $ent->{column},
792 };
793 my $continue = __c|ERROR{
794 xp|fatal-xml11-end-of-line-in-xml-declaration::
795 c|location => {$location},
796 xp|character-number => {$r},
797 }__;
798 unless ($continue) {
799 __CODE{ParseError}__;
800 }
801 } # no_xml11_eol
802 $r = 0x000A if $self->{xml_version} eq '1.1' and
803 $ent->{is_external_entity};
804 ## Even in XML 1.0 it increases the line number.
805 $ent->{line}++;
806 $ent->{column} = 1;
807 } elsif (
808 not ((0x0020 <= $r and $r <= 0x007E) or
809 (0x00A0 <= $r and $r <= 0xD7FF) or
810 (0xE000 <= $r and $r <= 0xFFFD) or
811 (0x10000 <= $r and $r <= 0x10FFFF)) and
812 $r != 0x0009 and
813 not (($self->{xml_version} eq '1.0' or
814 not $ent->{is_external_entity}) and
815 (0x007F <= $r and $r <= 0x009F)) and
816 not ($self->{xml_version} eq '1.1' and
817 not $ent->{is_external_entity} and
818 0x0001 <= $r and $r <= 0x001F)
819 ) {
820 my $location = {
821 utf32_offset => $ent->{pos} - 1,
822 line_number => $ent->{line},
823 column_number => $ent->{column},
824 };
825 my $continue = __c|ERROR{xp|wf-legal-literal-character::
826 c|location => {$location},
827 xp|character-number => {$r},
828 }__;
829 unless ($continue) {
830 __CODE{ParseError}__;
831 }
832 $ent->{column}++;
833 } else { # XML |Char|
834 $ent->{column}++;
835 }
836 } else {
837 $r = -1;
838 }
839 } # GETCHAR
840 }
841
842 @Method:
843 @@ManakaiDOM:isForInternal: 1
844 @@Operator: ManakaiDOM|MUErrorHandler
845 @@enDesc:
846 When a <IF::ecore|ErrorInterface||ManakaiDOM|Perl> is <Perl::report>ed,
847 then this method is invoked.
848
849 The method calls the <cfg::DOMCore|error-handler> if the error is of
850 <IF::DOMCore|DOMError>. Otherwise, the error is re-thrown so that
851 corresponding <Perl::catch> clause, if any, can catch the error.
852 @@Param:
853 @@@Name: err
854 @@@Type: ecore|ErrorInterface||ManakaiDOM|Perl
855 @@@enDesc:
856 The reported error object.
857 @@Return:
858 @@@Type: DISPerl|Any
859 @@@enDesc:
860 If the <P::err> is a <IF::DOMCore|DOMError>, then the return value
861 of the error handler.
862
863 {NOTE:: If the error is thrown, the method never returns.
864 }
865 @@@nullCase:
866 @@@@enDesc:
867 No error handler.
868 @@@PerlDef:
869 if ($err->isa (<IFName::DOMCore|DOMError||ManakaiDOM|ManakaiDOM>)) {
870 __DEEP{
871 A: {
872 my $cfg = $self-><AG::LSParser.domConfig>;
873 my $h = $cfg-><M::DOMCore|DOMConfiguration.getParameter>
874 ('error-handler');
875 $r = $h-><M::DOMCore|DOMErrorHandler.handleError> ($err);
876 } # A
877 }__;
878 } else {
879 $err-><M::ecore|ErrorInterface||ManakaiDOM|Perl.throw>;
880 }
881
882 @DISPerl:dpgDef:
883
884 /*
885 XML Document Entity
886
887 document := prolog element *Misc
888 - *Char RestrictedChar *Char ;; [1]
889 */
890 rule DocumentEntity : standalone {
891 /*
892 prolog := XMLDecl? *Misc [doctypedecl *Misc] ;; [22]
893 */
894 ?lexmode DocumentStart;
895
896 my $doc;
897 lang:Perl {
898 $doc = $self->{doc};
899 }
900
901 ~? (XDO) {
902 ?lexmode XMLDeclarationOrPI;
903 lang:Perl {
904 $self->{entity}->[-1]->{no_xml11_eol} = true;
905 }
906 ~ (S) { // XML declaration
907 &_XMLDeclaration_ ($doc => $doc);
908 ~ (PIC2) {
909 ?lexmode DocumentProlog;
910 } else {
911 ?lexmode DocumentProlog;
912 }
913 } (NameChar) { // Processing instruction whose target begins with |xml|
914 my $target_token;
915 lang:Perl ($v => $token.value) {
916 $target_token = $token;
917 $target_token->{value} = 'xml'.$target_token->{value};
918 $self->{entity}->[-1]->{no_xml11_eol} = false;
919 }
920 ?lexmode PINmtoken;
921 ~? (Nmtoken) {
922 lang:Perl ($v => $token.value) {
923 $target_token->{value} .= $v;
924 }
925 ?lexmode PIName;
926 }
927 lang:Perl {
928 $target_token->{type} = 'Name';
929 $target_token->{location_d} += 3; # 'xml'
930 unshift @{$self->{token}}, $token;
931 $token = $target_token;
932 }
933 &_ProcessingInstruction_ ($doc => $doc, $parent => $doc);
934 ~ (PIC) {
935 ?lexmode DocumentProlog;
936 } else {
937 ?lexmode DocumentProlog;
938 }
939 } else {
940 lang:Perl {
941 $self->{entity}->[-1]->{no_xml11_eol} = false;
942 }
943 }
944 } else {
945 ?lexmode 'DocumentProlog';
946 }
947
948 // *Misc
949 ~* (CDO) {
950 &_CommentDeclaration_ ($doc => $doc, $parent => $doc);
951
952 ~ (MDC) {
953 ?lexmode DocumentProlog;
954 } else {
955 ?lexmode DocumentProlog;
956 }
957 } (PIO) {
958 &_ProcessingInstruction_ ($doc => $doc, $parent => $doc);
959
960 ~ (PIC) {
961 ?lexmode 'DocumentProlog';
962 } else {
963 ?lexmode DocumentProlog;
964 }
965 } (S) {
966 //
967 }
968
969 // doctypedecl
970 ~? (MDO) {
971 &_DocumentTypeDeclaration_ ($doc => $doc);
972
973 ~ (MDC) {
974 ?lexmode DocumentMisc;
975 } else {
976 ?lexmode DocumentMisc;
977 }
978 } else {
979 ?lexmode DocumentMisc;
980 }
981
982 lang:Perl {
983 $self->{doc}-><AS::Document.allDeclarationsProcessed> (true)
984 unless $self->{dont_process};
985 }
986
987 // *Misc
988 ~* (CDO) {
989 &_CommentDeclaration_ ($doc => $doc, $parent => $doc);
990
991 ~ (MDC) {
992 ?lexmode DocumentMisc;
993 } else {
994 ?lexmode DocumentMisc;
995 }
996 } (PIO) {
997 &_ProcessingInstruction_ ($doc => $doc, $parent => $doc);
998
999 ~ (PIC) {
1000 ?lexmode 'DocumentMisc';
1001 } else {
1002 ?lexmode DocumentMisc;
1003 }
1004 } (S) {
1005 //
1006 }
1007
1008 // Document element
1009 ~ (STAGO) {
1010 &Element_ ($doc => $doc, $parent => $doc)
1011 : unshift-current-token;
1012 ~ (TAGC) {
1013 ?lexmode DocumentEnd;
1014 } else {
1015 ?lexmode DocumentEnd;
1016 }
1017 } else {
1018 ?lexmode 'DocumentEnd';
1019 }
1020
1021 // *Misc
1022 ~* (CDO) {
1023 &_CommentDeclaration_ ($doc => $doc, $parent => $doc);
1024
1025 ~ (MDC) {
1026 ?lexmode DocumentEnd;
1027 } else {
1028 ?lexmode DocumentEnd;
1029 }
1030 } (PIO) {
1031 &_ProcessingInstruction_ ($doc => $doc, $parent => $doc);
1032 ~ (PIC) {
1033 ?lexmode 'DocumentEnd';
1034 } else {
1035 ?lexmode DocumentEnd;
1036 }
1037 } (S) {
1038 //
1039 }
1040
1041 ~ (#EOF) { }
1042 } // DocumentEntity
1043
1044 /*
1045 Internal General Parsed Entity
1046
1047 An internal general parsed entity is well-formed if its
1048 replacement text matches the production labeled |content|.
1049 */
1050 rule InternalGeneralParsedEntity ($ent) : standalone {
1051 ?lexmode ElementContent;
1052
1053 my $ns;
1054 lang:Perl {
1055 $ns = {
1056 xml => <Q::xml:>,
1057 xmlns => <Q::xmlns:>,
1058 };
1059 }
1060
1061 &content ($parent => $ent, $ns => $ns);
1062
1063 ~ (#EOF) { }
1064 } // InternalGeneralParsedEntity
1065
1066 /*
1067 XML Declaration
1068
1069 XMLDecl := '<?xml' VersionInfo
1070 [EncodingDecl]
1071 [SDDecl]
1072 [S] '?>' ;; [23]
1073
1074 NOTE: XML declaration is optional in XML 1.0
1075 while it is required in XML 1.1.
1076 */
1077 rule _XMLDeclaration_ {
1078 // ~ (XDO) { }
1079 ?lexmode XMLDeclaration;
1080 //lang:Perl {
1081 // $self->{entity}->[-1]->{no_xml11_eol} = true;
1082 //}
1083 //~ (S) { }
1084
1085 ~ (Name == 'version') {
1086 ~? (S) { }
1087 ~ (VI) { }
1088 ~? (S) { }
1089
1090 my $ver;
1091 my $bad_token;
1092
1093 ~ (LIT) {
1094 ?lexmode AttributeValueLiteral;
1095
1096 ~ (STRING) {
1097 lang:Perl ($version => $token.value) {
1098 $ver = $version;
1099 $bad_token = $token;
1100 }
1101 }
1102
1103 ~ (LIT) {
1104 ?lexmode XMLDeclaration;
1105 }
1106 } (LITA) {
1107 ?lexmode AttributeValueLiteralA;
1108
1109 ~ (STRING) {
1110 lang:Perl ($version => $token.value) {
1111 $ver = $version;
1112 $bad_token = $token;
1113 }
1114 }
1115
1116 ~ (LITA) {
1117 ?lexmode XMLDeclaration;
1118 }
1119 }
1120
1121 lang:Perl : has-error {
1122 unless ($ver eq '1.0' or $ver eq '1.1') {
1123 my $location;
1124 __CODE{xp|get-location-from-token::
1125 $token => {$bad_token},
1126 $result => {$location},
1127 }__;
1128 my $continue = __DOMCore:ERROR{xp|wf-unsupported-xml-version::
1129 DOMCore|location => {$location},
1130 xp|parent => {$self->{doc}},
1131 infoset|version => {$ver},
1132 xp|error-token => {$bad_token},
1133 }__;
1134 unless ($continue) {
1135 __CODE{ParseError}__;
1136 }
1137 }
1138 $self->{doc}-><AS::Document.xmlVersion> ($ver);
1139 $self->{xml_version} = $ver;
1140 }
1141
1142 ~? (S) { }
1143 }
1144
1145 ~? (Name == 'encoding') {
1146 ~? (S) { }
1147 ~ (VI) { }
1148 ~? (S) { }
1149
1150 my $ver;
1151 my $bad_token;
1152
1153 ~ (LIT) {
1154 ?lexmode AttributeValueLiteral;
1155
1156 ~ (STRING) {
1157 lang:Perl ($version => $token.value) {
1158 $ver = $version;
1159 $bad_token = $token;
1160 }
1161 }
1162
1163 ~ (LIT) {
1164 ?lexmode XMLDeclaration;
1165 }
1166 } (LITA) {
1167 ?lexmode AttributeValueLiteralA;
1168
1169 ~ (STRING) {
1170 lang:Perl ($version => $token.value) {
1171 $ver = $version;
1172 $bad_token = $token;
1173 }
1174 }
1175
1176 ~ (LITA) {
1177 ?lexmode XMLDeclaration;
1178 }
1179 }
1180
1181 lang:Perl : has-error {
1182 unless ($ver =~ /\A[A-Za-z][A-Za-z0-9._-]*\z/) {
1183 my $location;
1184 __CODE{xp|get-location-from-token::
1185 $token => {$bad_token},
1186 $result => {$location},
1187 }__;
1188 my $continue = __DOMCore:ERROR{xp|wf-malformed-enc-name::
1189 DOMCore|location => {$location},
1190 xp|parent => {$self->{doc}},
1191 xp|name => {$ver},
1192 xp|error-token => {$bad_token},
1193 }__;
1194 unless ($continue) {
1195 __CODE{ParseError}__;
1196 }
1197 }
1198 $self->{doc}-><AS::Document.xmlEncoding> ($ver);
1199 }
1200
1201 ~? (S) { }
1202 }
1203
1204 ~? (Name == 'standalone') {
1205 ~? (S) { }
1206 ~ (VI) { }
1207 ~? (S) { }
1208
1209 my $ver;
1210 my $bad_token;
1211
1212 ~ (LIT) {
1213 ?lexmode AttributeValueLiteral;
1214
1215 ~ (STRING) {
1216 lang:Perl ($version => $token.value) {
1217 $ver = $version;
1218 $bad_token = $token;
1219 }
1220 }
1221
1222 ~ (LIT) {
1223 ?lexmode XMLDeclaration;
1224 }
1225 } (LITA) {
1226 ?lexmode AttributeValueLiteralA;
1227
1228 ~ (STRING) {
1229 lang:Perl ($version => $token.value) {
1230 $ver = $version;
1231 $bad_token = $token;
1232 }
1233 }
1234
1235 ~ (LITA) {
1236 ?lexmode XMLDeclaration;
1237 }
1238 }
1239
1240 lang:Perl : has-error {
1241 unless ($ver eq 'yes' or $ver eq 'no') {
1242 my $location;
1243 __CODE{xp|get-location-from-token::
1244 $token => {$bad_token},
1245 $result => {$location},
1246 }__;
1247 my $continue = __DOMCore:ERROR{xp|wf-malformed-xml-standalone::
1248 DOMCore|location => {$location},
1249 xp|parent => {$self->{doc}},
1250 xp|name => {$ver},
1251 xp|error-token => {$bad_token},
1252 }__;
1253 unless ($continue) {
1254 __CODE{ParseError}__;
1255 }
1256 }
1257 if ($ver eq 'yes') {
1258 $self->{doc}-><AS::Document.xmlStandalone> (true);
1259 $self->{standalone} = true;
1260 }
1261 }
1262
1263 ~? (S) { }
1264 }
1265
1266 ~ (PIC1) {
1267 lang:Perl {
1268 $self->{entity}->[-1]->{no_xml11_eol} = false;
1269 }
1270 } else {
1271 lang:Perl {
1272 $self->{entity}->[-1]->{no_xml11_eol} = false;
1273 }
1274 }
1275
1276 // ~ (PIC2) { }
1277 } // _XMLDeclaration_
1278
1279 /*
1280 Comment Declaration
1281
1282 Comment := '<!--' *(Char - '-' / '-' (Char - '-'))
1283 '-->' ;; [15]
1284 */
1285 rule _CommentDeclaration_ ($doc, $parent) {
1286 ?lexmode 'CommentDeclaration';
1287
1288 ~? (STRING) {
1289 lang:Perl ($data => $token.value) {
1290 my $com = $doc-><M::Document.createComment> ($data);
1291 $parent-><M::Node.appendChild> ($com);
1292 }
1293 } else {
1294 lang:Perl {
1295 my $com = $doc-><M::Document.createComment> ('');
1296 $parent-><M::Node.appendChild> ($com);
1297 }
1298 }
1299
1300 ~ (COM) {
1301 ?lexmode MarkupDeclaration;
1302 } else {
1303 ?lexmode MarkupDeclaration;
1304 }
1305
1306 // ~ (MDC) { }
1307 } // _CommentDeclaration
1308
1309 rule _CommentDeclarationDTD {
1310 ?lexmode CommentDeclaration;
1311
1312 ~? (STRING) {
1313 //
1314 }
1315
1316 ~ (COM) {
1317 ?lexmode MarkupDeclaration;
1318 } else {
1319 ?lexmode MarkupDeclaration;
1320 }
1321
1322 ~ (MDC) {
1323 ?lexmode DTD;
1324 } else {
1325 ?lexmode DTD;
1326 }
1327 } // _CommentDeclarationDTD
1328
1329 /*
1330 Processing Instruction
1331
1332 PI := '<?' PITarget [S *Char - *Char '?>' *Char]
1333 '?>' ;; [16]
1334 */
1335 rule _ProcessingInstruction_ ($doc, $parent) {
1336 ?lexmode 'PIName';
1337
1338 my $pi;
1339
1340 ~ (Name) {
1341 lang:Perl ($name => $token.value) : has-error {
1342 if (lc $name eq 'xml') {
1343 my $location;
1344 __CODE{xp|get-location-from-token::
1345 $token => {$token},
1346 $result => {$location},
1347 }__;
1348 my $continue = __DOMCore:ERROR{xp|wf-pi-target-is-xml::
1349 xp|name => {$name},
1350 DOMCore|location => {$location},
1351 xp|parent => {$parent},
1352 }__;
1353 unless ($continue) {
1354 __CODE{ParseError}__;
1355 }
1356 }
1357 __CODE{checkNCName:: $name => $name}__;
1358
1359 $pi = $doc-><M::Document.createProcessingInstruction>
1360 ($name);
1361 }
1362 } else {
1363 lang:Perl {
1364 $pi = $doc-><M::Document.createProcessingInstruction> ('#INVALID');
1365 }
1366 }
1367
1368 ~? (S) {
1369 ?lexmode 'PIData';
1370
1371 my $tdata;
1372
1373 ~? (DATA) {
1374 lang:Perl ($data => $token.value) {
1375 $tdata = $data;
1376 }
1377 } else {
1378 lang:Perl {
1379 $tdata = '';
1380 }
1381 }
1382
1383 lang:Perl {
1384 $pi-><AS::Node.nodeValue> ($tdata);
1385 }
1386 }
1387
1388 lang:Perl {
1389 $parent-><M::Node.appendChild> ($pi);
1390 }
1391
1392 // ~ (PIC) { }
1393 } // _ProcessingInstruction_
1394
1395 /*
1396 Processing instruction in DTD
1397 */
1398 rule _ProcessingInstructionDTD ($doc, $doctype) {
1399 ?lexmode 'PIName';
1400
1401 my $pi;
1402
1403 ~ (Name) {
1404 lang:Perl ($name => $token.value) : has-error {
1405 if (lc $name eq 'xml') {
1406 my $location;
1407 __CODE{xp|get-location-from-token::
1408 $token => {$token},
1409 $result => {$location},
1410 }__;
1411 my $continue = __DOMCore:ERROR{xp|wf-pi-target-is-xml::
1412 xp|name => {$name},
1413 DOMCore|location => {$location},
1414 xp|parent => {$doctype},
1415 }__;
1416 unless ($continue) {
1417 __CODE{ParseError}__;
1418 }
1419 }
1420 __CODE{checkNCName:: $name => $name}__;
1421
1422 $pi = $doc-><M::Document.createProcessingInstruction>
1423 ($name);
1424 $pi-><AS::x|ProcessingInstruction.manakaiBaseURI>
1425 ($self->{location}->{base_uri});
1426 }
1427 } else {
1428 lang:Perl {
1429 $pi = $doc-><M::Document.createProcessingInstruction> ('#INVALID');
1430 }
1431 }
1432
1433 ~? (S) {
1434 ?lexmode 'PIData';
1435
1436 my $tdata;
1437
1438 ~? (DATA) {
1439 lang:Perl ($data => $token.value) {
1440 $tdata = $data;
1441 }
1442 } else {
1443 lang:Perl {
1444 $tdata = '';
1445 }
1446 }
1447
1448 lang:Perl {
1449 $pi-><AS::Node.nodeValue> ($tdata);
1450 }
1451 }
1452
1453 lang:Perl {
1454 $doctype-><M::Node.appendChild> ($pi);
1455 }
1456
1457 ~ (PIC) {
1458 ?lexmode DTD;
1459 } else {
1460 ?lexmode DTD;
1461 }
1462 } // _ProcessingInstructionDTD
1463
1464 /*
1465 Element content parsing mode
1466
1467 element := EmptyElemTag /
1468 STag content ETag ;; [39]
1469 content := (CharData / element / Reference / CDSect /
1470 PI / Comment) ;; [43]
1471 */
1472 rule Element_ ($doc, $parent, $ns) : standalone {
1473 ?lexmode 'ElementContent';
1474
1475 my $node; // Current "parent" node
1476 my $nodes; // Node stack (w/o $current_node)
1477 my $type; // Current "parent" element type QName
1478 my $types; // Element type stack (w/o $current_type)
1479 //my $ns; // Current in-scope namespace bindings
1480 my $nses; // Namespace binding stack (w/o $current_ns)
1481
1482 lang:Perl {
1483 $node = $parent;
1484 $nodes = [];
1485 $type = '';
1486 $types = [];
1487 $ns ||= {
1488 xml => <Q::xml:>,
1489 xmlns => <Q::xmlns:>,
1490 };
1491 $nses = [];
1492 }
1493
1494 ~* : name => CONTENT
1495 (CharData) {
1496 // Character data
1497 lang:Perl ($data => $token.value) {
1498 $node-><M::Node.manakaiAppendText> (\($data));
1499 }
1500 } (STAGO) {
1501 // Start tag or empty element tag
1502
1503 ?lexmode 'StartTag';
1504
1505 ~ (Name) {
1506 my $attrs;
1507 lang:Perl ($name => $token.value) : has-error {
1508 __CODE{checkQName:: $name => $name}__;
1509 push @{$types}, $type;
1510 $type = $name;
1511 $attrs = {};
1512 }
1513
1514 ~? (S) {
1515 &AttributeSpecificationList
1516 ($doc => $doc, $attrs => $attrs);
1517 }
1518
1519 my $el;
1520
1521 /*
1522 Note that this implementation does not perform
1523 attribute value tokenization (but does white space
1524 normalization common to attribute types) and
1525 construct the tree as is. DOM Level 3 Core spec
1526 is unclear on this point. With tokenization,
1527 entity references cannot be preserved.
1528
1529 The manakai Node.nodeValue and Attr.value attributes
1530 do tokenization according to attribute types.
1531 */
1532
1533 /*
1534 ISSUE: Should |xml:id| attribute be typed?
1535 */
1536
1537 lang:Perl {
1538 push @{$nses}, $ns;
1539 $ns = {%$ns};
1540
1541 ## Default attributes
1542 DA: for my $atqname (%{$self->{attr}->{$type}}) {
1543 next DA unless $self->{attr}->{$type}->{$atqname};
1544 next DA if exists $attrs->{$atqname}; # specified
1545 my $dtype = $self->{attr}->{$type}->{$atqname}
1546 -><AG::ATDef.defaultType>;
1547 next DA unless $dtype == <C::ATDef.EXPLICIT_DEFAULT> or
1548 $dtype == <C::ATDef.FIXED_DEFAULT>;
1549 $attrs->{$atqname} = {is_default => true, nodes => []};
1550 for (@{$self->{attr}->{$type}->{$atqname}
1551 -><AG::Node.childNodes>}) {
1552 push @{$attrs->{$atqname}->{nodes}},
1553 $_-><M::Node.cloneNode> (true);
1554 }
1555 }
1556
1557 my %gattr;
1558 my %lattr;
1559 for my $atqname (keys %$attrs) {
1560 my ($pfx, $lname) = split /:/, $atqname;
1561 $attrs->{$atqname}->{def} = $self->{attr}->{$type}->{$atqname};
1562 if (defined $lname) { ## Global attribute
1563 if ($pfx eq 'xmlns') {
1564 my $nsuri = $attrs->{$atqname}->{is_default}
1565 ? $attrs->{$atqname}->{def}-><AG::Node.nodeValue>
1566 : $attrs->{$atqname}->{value};
1567 if (not $attrs->{$atqname}->{is_default} and
1568 $attrs->{$atqname}->{def}) {
1569 my $dt = $attrs->{$atqname}->{def}-><AG::ATDef.declaredType>;
1570 if ({
1571 <C::ATDef.ID_ATTR> => true,
1572 <C::ATDef.IDREF_ATTR> => true,
1573 <C::ATDef.IDREFS_ATTR> => true,
1574 <C::ATDef.ENTITY_ATTR> => true,
1575 <C::ATDef.ENTITIES_ATTR> => true,
1576 <C::ATDef.NMTOKEN_ATTR> => true,
1577 <C::ATDef.NMTOKENS_ATTR> => true,
1578 <C::ATDef.NOTATION_ATTR> => true,
1579 <C::ATDef.ENUMERATION_ATTR> => true,
1580 }->{$dt}) {
1581 ## Tokenization (XML 1 3.3.3)
1582 for ($nsuri) {
1583 s/^\x20+//;
1584 s/\x20+\z//;
1585 s/\x20+/ /g;
1586 }
1587 }
1588 }
1589 if ($lname eq 'xml' and
1590 $nsuri ne <Q::xml:>) {
1591 my $location;
1592 __CODE{xp|get-location-from-token::
1593 $token => $token,
1594 $result => $location,
1595 }__;
1596 my $continue = __c|ERROR{xp|nsc-reserved-prefix-xml::
1597 c|location => {$location},
1598 xp|token => {$token},
1599 infoset|prefix => {$lname},
1600 infoset|namespaceName => {$nsuri},
1601 }__;
1602 unless ($continue) {
1603 __CODE{ParseError}__;
1604 }
1605 } elsif ($lname eq 'xmlns') {
1606 my $location;
1607 __CODE{xp|get-location-from-token::
1608 $token => $token,
1609 $result => $location,
1610 }__;
1611 my $continue = __c|ERROR{xp|nsc-reserved-prefix-xmlns::
1612 c|location => {$location},
1613 xp|token => {$token},
1614 infoset|prefix => {$lname},
1615 infoset|namespaceName => {$nsuri},
1616 }__;
1617 unless ($continue) {
1618 __CODE{ParseError}__;
1619 }
1620 }
1621 if ($nsuri eq '') {
1622 if ($self->{xml_version} eq '1.0') {
1623 my $location;
1624 __CODE{xp|get-location-from-token::
1625 $token => $token,
1626 $result => $location,
1627 }__;
1628 my $continue = __c|ERROR{xp|nswf-empty-namespace-name::
1629 c|location => {$location},
1630 xp|token => {$token},
1631 infoset|namespaceName => {$nsuri},
1632 infoset|prefix => {$lname},
1633 }__;
1634 unless ($continue) {
1635 __CODE{ParseError}__;
1636 }
1637 }
1638 } elsif ($nsuri eq <Q::xml:> and
1639 $lname ne 'xml') {
1640 my $location;
1641 __CODE{xp|get-location-from-token::
1642 $token => $token,
1643 $result => $location,
1644 }__;
1645 my $continue = __c|ERROR{
1646 xp|nsc-reserved-namespace-name-xml::
1647 c|location => {$location},
1648 xp|token => {$token},
1649 infoset|prefix => {$lname},
1650 infoset|namespaceName => {$nsuri},
1651 }__;
1652 unless ($continue) {
1653 __CODE{ParseError}__;
1654 }
1655 } elsif ($nsuri eq <Q::xmlns:>) {
1656 my $location;
1657 __CODE{xp|get-location-from-token::
1658 $token => $token,
1659 $result => $location,
1660 }__;
1661 my $continue = __c|ERROR{
1662 xp|nsc-reserved-namespace-name-xmlns::
1663 c|location => {$location},
1664 xp|token => {$token},
1665 infoset|prefix => {$lname},
1666 infoset|namespaceName => {$nsuri},
1667 }__;
1668 unless ($continue) {
1669 __CODE{ParseError}__;
1670 }
1671 }
1672 $ns->{$lname} = $nsuri;
1673 delete $ns->{$lname} unless length $ns->{$lname};
1674 }
1675 $gattr{$pfx}->{$lname} = $attrs->{$atqname};
1676 } else { ## Local attribute
1677 if ($pfx eq 'xmlns') {
1678 $ns->{''} = $attrs->{xmlns}->{is_default}
1679 ? $attrs->{xmlns}->{def}-><AG::Node.nodeValue>
1680 : $attrs->{xmlns}->{value};
1681 if (not $attrs->{$atqname}->{is_default} and
1682 $attrs->{$atqname}->{def}) {
1683 my $dt = $attrs->{$atqname}->{def}-><AG::ATDef.declaredType>;
1684 if ({
1685 <C::ATDef.ID_ATTR> => true,
1686 <C::ATDef.IDREF_ATTR> => true,
1687 <C::ATDef.IDREFS_ATTR> => true,
1688 <C::ATDef.ENTITY_ATTR> => true,
1689 <C::ATDef.ENTITIES_ATTR> => true,
1690 <C::ATDef.NMTOKEN_ATTR> => true,
1691 <C::ATDef.NMTOKENS_ATTR> => true,
1692 <C::ATDef.NOTATION_ATTR> => true,
1693 <C::ATDef.ENUMERATION_ATTR> => true,
1694 }->{$dt}) {
1695 ## Tokenization (XML 1 3.3.3)
1696 for ($ns->{''}) {
1697 s/^\x20+//;
1698 s/\x20+\z//;
1699 s/\x20+/ /g;
1700 }
1701 }
1702 }
1703 unless ($ns->{''}) {
1704 delete $ns->{''};
1705 } elsif ($ns->{''} eq <Q::xml:>) {
1706 my $location;
1707 __CODE{xp|get-location-from-token::
1708 $token => $token,
1709 $result => $location,
1710 }__;
1711 my $continue = __c|ERROR{
1712 xp|nsc-reserved-namespace-name-xml::
1713 c|location => {$location},
1714 xp|token => {$token},
1715 infoset|prefix => {null},
1716 infoset|namespaceName => {<Q::xml:>},
1717 }__;
1718 unless ($continue) {
1719 __CODE{ParseError}__;
1720 }
1721 } elsif ($ns->{''} eq <Q::xmlns:>) {
1722 my $location;
1723 __CODE{xp|get-location-from-token::
1724 $token => $token,
1725 $result => $location,
1726 }__;
1727 my $continue = __c|ERROR{
1728 xp|nsc-reserved-namespace-name-xmlns::
1729 c|location => {$location},
1730 xp|token => {$token},
1731 infoset|prefix => {null},
1732 infoset|namespaceName => {<Q::xmlns:>},
1733 }__;
1734 unless ($continue) {
1735 __CODE{ParseError}__;
1736 }
1737 }
1738 } else {
1739 $lattr{$pfx} = $attrs->{$atqname};
1740 }
1741 }
1742 }
1743
1744 my ($pfx, $lname) = split /:/, $type;
1745 my $nsuri;
1746 if (defined $lname) { ## Prefixed namespace
1747 if (defined $ns->{$pfx}) {
1748 $nsuri = $ns->{$pfx};
1749 } else {
1750 my $location;
1751 __CODE{xp|get-location-from-token::
1752 $token => $token,
1753 $result => $location,
1754 }__;
1755 my $continue = __c|ERROR{xp|nsc-prefix-declared::
1756 c|location => {$location},
1757 xp|token => {$token},
1758 infoset|prefix => {$pfx},
1759 xp|name => {$type},
1760 }__;
1761 unless ($continue) {
1762 __CODE{ParseError}__;
1763 }
1764 }
1765 } else { ## Default namespace
1766 $nsuri = $ns->{''};
1767 }
1768
1769 $el = $doc-><M::Document.createElementNS>
1770 ($nsuri, $type);
1771
1772 if ($attrs->{xmlns}) {
1773 my $attr = $doc-><M::Document.createAttributeNS>
1774 (<Q::xmlns:>, 'xmlns');
1775 for (@{$attrs->{xmlns}->{nodes}}) {
1776 if ($_-><AG::Node.nodeType> == <C::Node.TEXT_NODE>) {
1777 $attr-><M::Node.manakaiAppendText>
1778 (\($_-><AG::Node.textContent>));
1779 } else {
1780 $attr-><M::Node.appendChild> ($_);
1781 }
1782 }
1783 if ($attrs->{xmlns}->{def}) {
1784 __CODE{t|setAttrType::
1785 $attr => $attr,
1786 $type => {$attrs->{xmlns}->{def}-><AG::ATDef.declaredType>},
1787 }__;
1788 }
1789 $el-><M::Element.setAttributeNodeNS> ($attr);
1790 $attr-><AS::t|Attr.specified> (false)
1791 if $attrs->{xmlns}->{is_default};
1792 }
1793
1794 for my $lname (keys %lattr) {
1795 my $attr = $doc-><M::Document.createAttributeNS>
1796 (null, $lname);
1797 for (@{$lattr{$lname}->{nodes}}) {
1798 if ($_-><AG::Node.nodeType> == <C::Node.TEXT_NODE>) {
1799 $attr-><M::Node.manakaiAppendText>
1800 (\($_-><AG::Node.textContent>));
1801 } else {
1802 $attr-><M::Node.appendChild> ($_);
1803 }
1804 }
1805 if ($attrs->{$lname}->{def}) {
1806 __CODE{t|setAttrType::
1807 $attr => $attr,
1808 $type => {$attrs->{$lname}->{def}-><AG::ATDef.declaredType>},
1809 }__;
1810 }
1811 $el-><M::Element.setAttributeNodeNS> ($attr);
1812 $attr-><AS::t|Attr.specified> (false)
1813 if $attrs->{$lname}->{is_default};
1814 }
1815
1816 for my $pfx (keys %gattr) {
1817 LN: for my $lname (keys %{$gattr{$pfx}}) {
1818 my $name = $pfx.':'.$lname;
1819 unless (defined $ns->{$pfx}) {
1820 my $location;
1821 __CODE{xp|get-location-from-token::
1822 $token => $token,
1823 $result => $location,
1824 }__;
1825 my $continue = __c|ERROR{xp|nsc-prefix-declared::
1826 c|location => {$location},
1827 xp|token => {$token},
1828 xp|name => {$name},
1829 infoset|prefix => {$pfx},
1830 }__;
1831 unless ($continue) {
1832 __CODE{ParseError}__;
1833 }
1834 }
1835 my $attr = $el-><M::Element.getAttributeNodeNS>
1836 ($ns->{$pfx}, $lname);
1837 if ($attr) {
1838 my $another_name = $attr-><AG::Node.nodeName>;
1839 if ($name ne $another_name) {
1840 my $location;
1841 __CODE{xp|get-location-from-token::
1842 $token => $token,
1843 $result => $location,
1844 }__;
1845 my $continue = __c|ERROR{
1846 xp|nswf-unique-att-spec-expanded-name::
1847 c|location => {$location},
1848 xp|token => {$token},
1849 xp|another-attribute-name => {$another_name},
1850 xp|name => {$name},
1851 infoset|namespaceName => {$ns->{$pfx}},
1852 infoset|localName => {$lname},
1853 }__;
1854 unless ($continue) {
1855 __CODE{ParseError}__;
1856 }
1857 unless ($attr-><AG::t|Attr.specified>) {
1858 ## It is a default attribute
1859 $attr = $doc-><M::Document.createAttributeNS>
1860 ($ns->{$pfx}, $name);
1861 } else {
1862 ## It is a specified attribute
1863 next LN;
1864 }
1865 } else { ## There is default attribute
1866 $attr = $doc-><M::Document.createAttributeNS>
1867 ($ns->{$pfx}, $name);
1868 }
1869 } else {
1870 $attr = $doc-><M::Document.createAttributeNS>
1871 ($ns->{$pfx}, $name);
1872 }
1873 for (@{$gattr{$pfx}->{$lname}->{nodes}}) {
1874 if ($_-><AG::Node.nodeType> == <C::Node.TEXT_NODE>) {
1875 $attr-><M::Node.manakaiAppendText>
1876 (\($_-><AG::Node.textContent>));
1877 } else {
1878 $attr-><M::Node.appendChild> ($_);
1879 }
1880 }
1881 if ($gattr{$pfx}->{$lname}->{def}) {
1882 __CODE{t|setAttrType::
1883 $attr => $attr,
1884 $type => {$gattr{$pfx}->{$lname}
1885 ->{def}-><AG::ATDef.declaredType>},
1886 }__;
1887 }
1888 $el-><M::Element.setAttributeNodeNS> ($attr);
1889 $attr-><AS::t|Attr.specified> (false)
1890 if $gattr{$pfx}->{$lname}->{is_default};
1891 } # PFX
1892 }
1893
1894 $node-><M::Node.appendChild> ($el);
1895 }
1896
1897 ~ (TAGC) {
1898 lang:Perl {
1899 push @{$nodes}, $node;
1900 $node = $el;
1901 }
1902 ?lexmode ElementContent;
1903 } (NESTC) {
1904 my $is_docel;
1905 lang:Perl {
1906 $ns = pop @{$nses};
1907 $type = pop @{$types};
1908 $is_docel = (@{$types} == 0);
1909 }
1910
1911 if-true ($is_docel) {
1912 return;
1913 }
1914
1915 ~ (TAGC) {
1916 ?lexmode ElementContent;
1917 } else {
1918 ?lexmode ElementContent;
1919 }
1920 } else {
1921 ?lexmode ElementContent;
1922 }
1923 } else {
1924 ?lexmode ElementContent;
1925 }
1926
1927 } (ETAGO) {
1928 // End tag
1929
1930 ?lexmode 'EndTag';
1931
1932 my $is_docel;
1933
1934 ~ (Name) {
1935 // No NCName & QName check (it must match to start-tag)
1936 lang:Perl ($name => $token.value) : has-error {
1937 if ($name eq $type) {
1938 $type = pop @{$types};
1939 if ($type eq '') {
1940 $is_docel = true;
1941 }
1942 $node = pop @{$nodes};
1943 $ns = pop @{$nses};
1944 } else {
1945 my $location;
1946 __CODE{xp|get-location-from-token::
1947 $token => $token,
1948 $result => $location,
1949 }__;
1950 my $continue = __DOMCore:ERROR{xp|wf-element-type-match::
1951 DOMCore:location => {$location},
1952 xp|token => {$token},
1953 xp|expected-element-type => {$type},
1954 xp|actual-element-type => {$name},
1955 xp|node => {$node},
1956 }__;
1957 unless ($continue) {
1958 __CODE{ParseError}__;
1959 }
1960 }
1961 }
1962 }
1963
1964 ~? (S) { }
1965
1966 if-true ($is_docel) {
1967 lang:Perl : has-error {
1968 if (@{$types}) {
1969 my $location;
1970 __CODE{xp|get-location-from-token::
1971 $token => $token,
1972 $result => $location,
1973 }__;
1974 for my $type (reverse @{$types}) {
1975 my $continue = __DOMCore:ERROR{xp|wf-no-end-tag::
1976 DOMCore:location => {$location},
1977 xp|token => {$token},
1978 xp|expected-element-type => {$type},
1979 xp|node => {$node},
1980 }__;
1981 unless ($continue) {
1982 __CODE{ParseError}__;
1983 }
1984 $node = shift @{$nodes};
1985 }
1986 }
1987 }
1988 return;
1989 }
1990
1991 ~ (TAGC) {
1992 ?lexmode ElementContent;
1993 } else {
1994 ?lexmode 'ElementContent';
1995 }
1996
1997 } (HCRO) {
1998 &_HexadecimalCharacterReference_
1999 ($doc => $doc, $parent => $node);
2000
2001 ~ (REFC) {
2002 ?lexmode 'ElementContent';
2003 } else {
2004 ?lexmode ElementContent;
2005 }
2006 } (CRO) {
2007 &_NumericCharacterReference_
2008 ($doc => $doc, $parent => $node);
2009
2010 ~ (REFC) {
2011 ?lexmode 'ElementContent';
2012 } else {
2013 ?lexmode ElementContent;
2014 }
2015 } (ERO) {
2016 &_GeneralEntityReferenceEC
2017 ($doc => $doc, $parent => $node, $ns => $ns);
2018 } (CDO) {
2019 &_CommentDeclaration_ ($doc => $doc, $parent => $node);
2020
2021 ~ (MDC) {
2022 ?lexmode ElementContent;
2023 } else {
2024 ?lexmode ElementContent;
2025 }
2026 } (CDSO) {
2027 &_CDATASection_ ($doc => $doc, $parent => $node);
2028
2029 ~ (MSE) {
2030 ?lexmode 'ElementContent';
2031 } else {
2032 ?lexmode ElementContent;
2033 }
2034 } (PIO) {
2035 &_ProcessingInstruction_ ($doc => $doc, $parent => $node);
2036
2037 ~ (PIC) {
2038 ?lexmode 'ElementContent';
2039 } else {
2040 ?lexmode ElementContent;
2041 }
2042 }
2043
2044 ~ (#NONE) { }
2045 } // Element_
2046
2047 /*
2048 content := [CharData]
2049 *((element / Reference / CDSect / PI / Comment) [CharData])
2050 */
2051 rule content ($parent, $ns) {
2052 // ?lexmode ElementContent;
2053
2054 my $doc;
2055 lang:Perl {
2056 $doc = $self->{doc};
2057 }
2058
2059 ~* (CharData) {
2060 lang:Perl ($data => $token.value) {
2061 $parent-><M::Node.manakaiAppendText> (\($data));
2062 }
2063 } (STAGO) {
2064 &Element_ ($doc => $doc, $parent => $parent, $ns => $ns)
2065 : unshift-current-token;
2066 ~ (TAGC) {
2067 ?lexmode ElementContent;
2068 } else {
2069 ?lexmode ElementContent;
2070 }
2071 } (HCRO) {
2072 &_HexadecimalCharacterReference_ ($parent => $parent);
2073
2074 ~ (REFC) {
2075 ?lexmode 'ElementContent';
2076 } else {
2077 ?lexmode ElementContent;
2078 }
2079 } (CRO) {
2080 &_NumericCharacterReference_ ($parent => $parent);
2081
2082 ~ (REFC) {
2083 ?lexmode 'ElementContent';
2084 } else {
2085 ?lexmode ElementContent;
2086 }
2087 } (ERO) {
2088 &_GeneralEntityReferenceEC
2089 ($doc => $doc, $parent => $parent, $ns => $ns);
2090 } (CDO) {
2091 &_CommentDeclaration_ ($doc => $doc, $parent => $parent);
2092
2093 ~ (MDC) {
2094 ?lexmode ElementContent;
2095 } else {
2096 ?lexmode ElementContent;
2097 }
2098 } (CDSO) {
2099 &_CDATASection_ ($doc => $doc, $parent => $parent);
2100
2101 ~ (MSE) {
2102 ?lexmode 'ElementContent';
2103 } else {
2104 ?lexmode ElementContent;
2105 }
2106 } (PIO) {
2107 &_ProcessingInstruction_ ($doc => $doc, $parent => $parent);
2108
2109 ~ (PIC) {
2110 ?lexmode 'ElementContent';
2111 } else {
2112 ?lexmode ElementContent;
2113 }
2114 }
2115 } // content
2116
2117 rule AttributeSpecificationList ($doc, $attrs)
2118 : standalone
2119 {
2120 ?lexmode 'StartTag';
2121
2122 my $i;
2123 lang:Perl {
2124 $i = 0;
2125 }
2126
2127 ~* (Name) {
2128 my $atqname;
2129 lang:Perl ($name => $token.value) : has-error {
2130 __CODE{checkQName:: $name => $name}__;
2131 $atqname = $name;
2132 }
2133
2134 my $vals;
2135 lang:Perl : has-error {
2136 if ($attrs->{$atqname}) {
2137 my $location;
2138 __CODE{xp|get-location-from-token::
2139 $token => $token,
2140 $result => $location,
2141 }__;
2142 my $continue = __DOMCore:ERROR{xp|wf-unique-att-spec::
2143 DOMCore:location => {$location},
2144 xp|token => {$token},
2145 xp|name => {$atqname},
2146 }__;
2147 unless ($continue) {
2148 __CODE{ParseError}__;
2149 }
2150 }
2151
2152 $vals = $attrs->{$atqname} = {
2153 nodes => [],
2154 value => '',
2155 index => $i++,
2156 };
2157 }
2158
2159 ~? (S) { }
2160 ~ (VI) { }
2161 ~? (S) { }
2162
2163 ~ (LIT) {
2164 &_AttributeValueSpecification_
2165 ($doc => $doc, $vals => $vals);
2166
2167 ~ (LIT) {
2168 ?lexmode StartTag;
2169 } else {
2170 ?lexmode StartTag;
2171 }
2172 } (LITA) {
2173 &_AttributeValueSpecificationA_
2174 ($doc => $doc, $vals => $vals);
2175
2176 ~ (LITA) {
2177 ?lexmode StartTag;
2178 } else {
2179 ?lexmode StartTag;
2180 }
2181 }
2182 } (S) : separator : terminator? { }
2183 } // AttributeSpecificationList
2184
2185 rule _AttributeValueSpecification_ ($doc, $vals) {
2186 // ~ (LIT) { }
2187 ?lexmode 'AttributeValueLiteral';
2188
2189 ~* (STRING) {
2190 lang:Perl ($value => $token.value) {
2191 $value =~ s/[\x09\x0A\x0D]/ /g;
2192 my $text = $doc-><M::Document.createTextNode> ($value);
2193 push @{$vals->{nodes}}, $text;
2194 $vals->{value} .= $value;
2195 }
2196 } (HCRO) {
2197 &_HexadecimalCharacterReferenceV_
2198 ($doc => $doc, $vals => $vals);
2199
2200 ~ (REFC) {
2201 ?lexmode AttributeValueLiteral;
2202 } else {
2203 ?lexmode AttributeValueLiteral;
2204 }
2205 } (CRO) {
2206 &_NumericCharacterReferenceV_
2207 ($doc => $doc, $vals => $vals);
2208
2209 ~ (REFC) {
2210 ?lexmode AttributeValueLiteral;
2211 } else {
2212 ?lexmode AttributeValueLiteral;
2213 }
2214 } (ERO) {
2215 // TODO: Attribute value normalization
2216 &_GeneralEntityReferenceV_
2217 ($doc => $doc, $vals => $vals);
2218
2219 ~ (REFC) {
2220 ?lexmode AttributeValueLiteral;
2221 } else {
2222 ?lexmode AttributeValueLiteral;
2223 }
2224 }
2225
2226 // ~ (LIT) { } (LITA) { }
2227 } // _AttributeValueSpecification_
2228
2229 rule _AttributeValueSpecificationA_ ($doc, $vals) {
2230 // ~ (LITA) { }
2231 ?lexmode 'AttributeValueLiteralA';
2232
2233 ~* (STRING) {
2234 lang:Perl ($value => $token.value) {
2235 $value =~ s/[\x09\x0A\x0D]/ /g;
2236 my $text = $doc-><M::Document.createTextNode> ($value);
2237 push @{$vals->{nodes}}, $text;
2238 $vals->{value} .= $value;
2239 }
2240 } (HCRO) {
2241 &_HexadecimalCharacterReferenceV_
2242 ($doc => $doc, $vals => $vals);
2243
2244 ~ (REFC) {
2245 ?lexmode AttributeValueLiteralA;
2246 } else {
2247 ?lexmode AttributeValueLiteralA;
2248 }
2249 } (CRO) {
2250 &_NumericCharacterReferenceV_
2251 ($doc => $doc, $vals => $vals);
2252
2253 ~ (REFC) {
2254 ?lexmode AttributeValueLiteralA;
2255 } else {
2256 ?lexmode AttributeValueLiteralA;
2257 }
2258 } (ERO) {
2259 // TODO: Attribute value normalization
2260 &_GeneralEntityReferenceV_
2261 ($doc => $doc, $vals => $vals);
2262
2263 ~ (REFC) {
2264 ?lexmode AttributeValueLiteralA;
2265 } else {
2266 ?lexmode AttributeValueLiteralA;
2267 }
2268 }
2269
2270 // ~ (LITA) { }
2271 } // _AttributeValueSpecificationA_
2272
2273 /*
2274 Parsing replacement text of an entity referenced in
2275 an attribute value specification.
2276 */
2277 rule AttributeValueLiteralE_ ($parent, $vals)
2278 : recursive
2279 {
2280 // ?lexmode AttributeValueLiteralE;
2281
2282 ~* (STRING) {
2283 lang:Perl ($value => $token.value) {
2284 $value =~ s/[\x09\x0A\x0D]/ /g;
2285 $parent-><M::Node.manakaiAppendText> (\($value));
2286 $vals->{value} .= $value;
2287 }
2288 } (HCRO) {
2289 &_HexadecimalCharacterReferenceAE_
2290 ($parent => $parent, $vals => $vals);
2291
2292 ~ (REFC) {
2293 ?lexmode AttributeValueLiteralE;
2294 } else {
2295 ?lexmode AttributeValueLiteralE;
2296 }
2297 } (CRO) {
2298 &_NumericCharacterReferenceAE_
2299 ($parent => $parent, $vals => $vals);
2300
2301 ~ (REFC) {
2302 ?lexmode AttributeValueLiteralE;
2303 } else {
2304 ?lexmode AttributeValueLiteralE;
2305 }
2306 } (ERO) {
2307 &_GeneralEntityReferenceAE_ ($parent => $parent, $vals => $vals);
2308
2309 ~ (REFC) {
2310 ?lexmode AttributeValueLiteralE;
2311 } else {
2312 ?lexmode AttributeValueLiteralE;
2313 }
2314 } (#INVALID == '<') {
2315 lang:Perl : has-error {
2316 my $location;
2317 __CODE{xp|get-location-from-token::
2318 $token => $token,
2319 $result => $location,
2320 }__;
2321 my $continue = __DOMCore:ERROR{xp|wf-no-lt-in-attribute-values::
2322 c|location => {$location},
2323 xp|token => {$token},
2324 }__;
2325 unless ($continue) {
2326 __CODE{ParseError}__;
2327 }
2328
2329 $parent-><M::Node.manakaiAppendText> ('<');
2330 $vals->{value} .= '<';
2331 }
2332 }
2333
2334 // ~ (#EOF) { }
2335 } // AttributeValueLiteralE_
2336
2337 /*
2338 CDATA Section Content Parsing Mode
2339 */
2340 rule _CDATASection_ ($doc, $parent) {
2341 ?lexmode 'CDATASectionContent';
2342
2343 my $cdata;
2344
2345 ~? (CData) {
2346 lang:Perl ($data => $token.value) {
2347 $cdata = $data;
2348 }
2349 } else {
2350 lang:Perl {
2351 $cdata = '';
2352 }
2353 }
2354
2355 lang:Perl {
2356 my $cdsect = $doc-><M::Document.createCDATASection>
2357 ($cdata);
2358 $parent-><M::Node.appendChild> ($cdsect);
2359 }
2360
2361 // ~ (MSE) { }
2362 } // _CDATASection_
2363
2364 rule _NumericCharacterReference_ ($parent) {
2365 ?lexmode 'NumericCharacterReference';
2366
2367 ~ (NUMBER) {
2368 lang:Perl ($num => $token.value) : has-error {
2369 $num += 0;
2370 unless (
2371 ($self->{xml_version} eq '1.0' and
2372 ((0x0020 <= $num and $num <= 0xD7FF) or
2373 (0xE000 <= $num and $num <= 0xFFFD) or
2374 (0x10000 <= $num and $num <= 0x10FFFF) or
2375 $num == 0x9 or $num == 0xA or $num == 0xD)) or
2376 ($self->{xml_version} eq '1.1' and
2377 ((0x0001 <= $num and $num <= 0xD7FF) or
2378 (0xE000 <= $num and $num <= 0xFFFD) or
2379 (0x10000 <= $num and $num <= 0x10FFFF)))
2380 ) {
2381 my $location;
2382 __CODE{xp|get-location-from-token::
2383 $token => $token,
2384 $result => $location,
2385 }__;
2386 my $continue = __DOMCore:ERROR{xp|wf-legal-character::
2387 DOMCore:location => {$location},
2388 xp|token => {$token},
2389 xp|character-number => {$num},
2390 xp|parent => {$parent},
2391 }__;
2392 unless ($continue) {
2393 __CODE{ParseError}__;
2394 }
2395 }
2396 $parent-><M::Node.manakaiAppendText> (chr $num);
2397 }
2398 }
2399
2400 // ~ (REFC) { }
2401 } // _NumericCharacterReference_
2402
2403 rule _NumericCharacterReferenceV_ ($doc, $vals) {
2404 ?lexmode 'NumericCharacterReference';
2405
2406 ~ (NUMBER) {
2407 lang:Perl ($num => $token.value) : has-error {
2408 $num += 0;
2409 unless (
2410 ($self->{xml_version} eq '1.0' and
2411 ((0x0020 <= $num and $num <= 0xD7FF) or
2412 (0xE000 <= $num and $num <= 0xFFFD) or
2413 (0x10000 <= $num and $num <= 0x10FFFF) or
2414 $num == 0x9 or $num == 0xA or $num == 0xD)) or
2415 ($self->{xml_version} eq '1.1' and
2416 ((0x0001 <= $num and $num <= 0xD7FF) or
2417 (0xE000 <= $num and $num <= 0xFFFD) or
2418 (0x10000 <= $num and $num <= 0x10FFFF)))
2419 ) {
2420 my $location;
2421 __CODE{xp|get-location-from-token::
2422 $token => $token,
2423 $result => $location,
2424 }__;
2425 my $continue = __DOMCore:ERROR{xp|wf-legal-character::
2426 DOMCore:location => {$location},
2427 xp|token => {$token},
2428 xp|character-number => {$num},
2429 }__;
2430 unless ($continue) {
2431 __CODE{ParseError}__;
2432 }
2433 }
2434 my $ncr = $doc-><M::Document.createTextNode>
2435 (my $char = chr $num);
2436 push @{$vals->{nodes}}, $ncr;
2437 $vals->{value} .= $char;
2438 }
2439 }
2440
2441 // ~ (REFC) { }
2442 } // _NumericCharacterReferenceV_
2443
2444 /*
2445 Numeric character reference in the replacement text
2446 of the entity referenced in an attribute value specification
2447 */
2448 rule _NumericCharacterReferenceAE_ ($parent, $vals)
2449 {
2450 ?lexmode NumericCharacterReference;
2451
2452 ~ (NUMBER) {
2453 lang:Perl ($num => $token.value) : has-error {
2454 $num += 0;
2455 unless (
2456 ($self->{xml_version} eq '1.0' and
2457 ((0x0020 <= $num and $num <= 0xD7FF) or
2458 (0xE000 <= $num and $num <= 0xFFFD) or
2459 (0x10000 <= $num and $num <= 0x10FFFF) or
2460 $num == 0x9 or $num == 0xA or $num == 0xD)) or
2461 ($self->{xml_version} eq '1.1' and
2462 ((0x0001 <= $num and $num <= 0xD7FF) or
2463 (0xE000 <= $num and $num <= 0xFFFD) or
2464 (0x10000 <= $num and $num <= 0x10FFFF)))
2465 ) {
2466 my $location;
2467 __CODE{xp|get-location-from-token::
2468 $token => $token,
2469 $result => $location,
2470 }__;
2471 my $continue = __DOMCore:ERROR{xp|wf-legal-character::
2472 DOMCore:location => {$location},
2473 xp|token => {$token},
2474 xp|character-number => {$num},
2475 }__;
2476 unless ($continue) {
2477 __CODE{ParseError}__;
2478 }
2479 }
2480 my $char = chr $num;
2481 $parent-><M::Node.manakaiAppendText> (\$char);
2482 $vals->{value} .= $char;
2483 }
2484 }
2485
2486 // ~ (REFC) { }
2487 } // _NumericCharacterReferenceAE_
2488
2489 rule _NumericCharacterReferenceEV_ ($vals)
2490 {
2491 ?lexmode 'NumericCharacterReference';
2492
2493 ~ (NUMBER) {
2494 lang:Perl ($num => $token.value) : has-error {
2495 $num += 0;
2496 unless (
2497 ($self->{xml_version} eq '1.0' and
2498 ((0x0020 <= $num and $num <= 0xD7FF) or
2499 (0xE000 <= $num and $num <= 0xFFFD) or
2500 (0x10000 <= $num and $num <= 0x10FFFF) or
2501 $num == 0x9 or $num == 0xA or $num == 0xD)) or
2502 ($self->{xml_version} eq '1.1' and
2503 ((0x0001 <= $num and $num <= 0xD7FF) or
2504 (0xE000 <= $num and $num <= 0xFFFD) or
2505 (0x10000 <= $num and $num <= 0x10FFFF)))
2506 ) {
2507 my $location;
2508 __CODE{xp|get-location-from-token::
2509 $token => $token,
2510 $result => $location,
2511 }__;
2512 my $continue = __DOMCore:ERROR{xp|wf-legal-character::
2513 DOMCore:location => {$location},
2514 xp|token => {$token},
2515 xp|character-number => {$num},
2516 }__;
2517 unless ($continue) {
2518 __CODE{ParseError}__;
2519 }
2520 }
2521 push @{$vals}, chr $num;
2522 }
2523 }
2524
2525 // ~ (REFC) { }
2526 } // _NumericCharacterReferenceEV_
2527
2528 rule _HexadecimalCharacterReference_ ($parent) {
2529 ?lexmode 'HexadecimalCharacterReference';
2530
2531 ~ (Hex) {
2532 lang:Perl ($v => $token.value) : has-error {
2533 my $num = hex $v;
2534 unless (
2535 ($self->{xml_version} eq '1.0' and
2536 ((0x0020 <= $num and $num <= 0xD7FF) or
2537 (0xE000 <= $num and $num <= 0xFFFD) or
2538 (0x10000 <= $num and $num <= 0x10FFFF) or
2539 $num == 0x9 or $num == 0xA or $num == 0xD)) or
2540 ($self->{xml_version} eq '1.1' and
2541 ((0x0001 <= $num and $num <= 0xD7FF) or
2542 (0xE000 <= $num and $num <= 0xFFFD) or
2543 (0x10000 <= $num and $num <= 0x10FFFF)))
2544 ) {
2545 my $location;
2546 __CODE{xp|get-location-from-token::
2547 $token => $token,
2548 $result => $location,
2549 }__;
2550 my $continue = __DOMCore:ERROR{xp|wf-legal-character::
2551 DOMCore:location => {$location},
2552 xp|token => {$token},
2553 xp|character-number => {$num},
2554 xp|parent => {$parent},
2555 }__;
2556 unless ($continue) {
2557 __CODE{ParseError}__;
2558 }
2559 }
2560 $parent-><M::Node.manakaiAppendText> (chr $num);
2561 }
2562 }
2563
2564 // ~ (REFC) { }
2565 } // _HexadecimalCharacterReference_
2566
2567 rule _HexadecimalCharacterReferenceV_ ($doc, $vals) {
2568 ?lexmode 'HexadecimalCharacterReference';
2569
2570 ~ (Hex) {
2571 lang:Perl ($v => $token.value) : has-error {
2572 my $num = hex $v;
2573 unless (
2574 ($self->{xml_version} eq '1.0' and
2575 ((0x0020 <= $num and $num <= 0xD7FF) or
2576 (0xE000 <= $num and $num <= 0xFFFD) or
2577 (0x10000 <= $num and $num <= 0x10FFFF) or
2578 $num == 0x9 or $num == 0xA or $num == 0xD)) or
2579 ($self->{xml_version} eq '1.1' and
2580 ((0x0001 <= $num and $num <= 0xD7FF) or
2581 (0xE000 <= $num and $num <= 0xFFFD) or
2582 (0x10000 <= $num and $num <= 0x10FFFF)))
2583 ) {
2584 my $location;
2585 __CODE{xp|get-location-from-token::
2586 $token => $token,
2587 $result => $location,
2588 }__;
2589 my $continue = __DOMCore:ERROR{xp|wf-legal-character::
2590 DOMCore:location => {$location},
2591 xp|token => {$token},
2592 xp|character-number => {$num},
2593 }__;
2594 unless ($continue) {
2595 __CODE{ParseError}__;
2596 }
2597 }
2598 my $ncr = $doc-><M::Document.createTextNode>
2599 (my $char = chr $num);
2600 push @{$vals->{nodes}}, $ncr;
2601 $vals->{value} .= $char;
2602 }
2603 }
2604
2605 // ~ (REFC) { }
2606 } // _HexadecimalCharacterReferenceV_
2607
2608 /*
2609 Hexadecimal character reference in the replacement text
2610 of the entity referenced in an attribute value literal
2611 */
2612 rule _HexadecimalCharacterReferenceAE_ ($parent, $vals)
2613 {
2614 ?lexmode HexadecimalCharacterReference;
2615
2616 ~ (Hex) {
2617 lang:Perl ($v => $token.value) : has-error {
2618 my $num = hex $v;
2619 unless (
2620 ($self->{xml_version} eq '1.0' and
2621 ((0x0020 <= $num and $num <= 0xD7FF) or
2622 (0xE000 <= $num and $num <= 0xFFFD) or
2623 (0x10000 <= $num and $num <= 0x10FFFF) or
2624 $num == 0x9 or $num == 0xA or $num == 0xD)) or
2625 ($self->{xml_version} eq '1.1' and
2626 ((0x0001 <= $num and $num <= 0xD7FF) or
2627 (0xE000 <= $num and $num <= 0xFFFD) or
2628 (0x10000 <= $num and $num <= 0x10FFFF)))
2629 ) {
2630 my $location;
2631 __CODE{xp|get-location-from-token::
2632 $token => $token,
2633 $result => $location,
2634 }__;
2635 my $continue = __DOMCore:ERROR{xp|wf-legal-character::
2636 DOMCore:location => {$location},
2637 xp|token => {$token},
2638 xp|character-number => {$num},
2639 }__;
2640 unless ($continue) {
2641 __CODE{ParseError}__;
2642 }
2643 }
2644 my $char = chr $num;
2645 $parent-><M::Node.manakaiAppendText> (\$char);
2646 $vals->{value} .= $char;
2647 }
2648 }
2649
2650 // ~ (REFC) { }
2651 } // _HexadecimalCharacterReferenceAE_
2652
2653 rule _HexadecimalCharacterReferenceEV_ ($vals) {
2654 ?lexmode HexadecimalCharacterReference;
2655
2656 ~ (Hex) {
2657 lang:Perl ($v => $token.value) : has-error {
2658 my $num = hex $v;
2659 unless (
2660 ($self->{xml_version} eq '1.0' and
2661 ((0x0020 <= $num and $num <= 0xD7FF) or
2662 (0xE000 <= $num and $num <= 0xFFFD) or
2663 (0x10000 <= $num and $num <= 0x10FFFF) or
2664 $num == 0x9 or $num == 0xA or $num == 0xD)) or
2665 ($self->{xml_version} eq '1.1' and
2666 ((0x0001 <= $num and $num <= 0xD7FF) or
2667 (0xE000 <= $num and $num <= 0xFFFD) or
2668 (0x10000 <= $num and $num <= 0x10FFFF)))
2669 ) {
2670 my $location;
2671 __CODE{xp|get-location-from-token::
2672 $token => $token,
2673 $result => $location,
2674 }__;
2675 my $continue = __DOMCore:ERROR{xp|wf-legal-character::
2676 DOMCore:location => {$location},
2677 xp|token => {$token},
2678 xp|character-number => {$num},
2679 }__;
2680 unless ($continue) {
2681 __CODE{ParseError}__;
2682 }
2683 }
2684 push @{$vals}, chr $num;
2685 }
2686 }
2687
2688 // ~ (REFC) { }
2689 } // _HexadecimalCharacterReferenceEV_
2690
2691 /*
2692 General entity reference in element's content
2693 */
2694 rule _GeneralEntityReferenceEC ($doc, $parent, $ns)
2695 : recursive
2696 {
2697 ?lexmode 'EntityReference';
2698
2699 ~ (Name == 'lt') {
2700 lang:Perl {
2701 $parent-><M::Node.manakaiAppendText> ('<');
2702 }
2703 } (Name == 'gt') {
2704 lang:Perl {
2705 $parent-><M::Node.manakaiAppendText> ('>');
2706 }
2707 } (Name == 'amp') {
2708 lang:Perl {
2709 $parent-><M::Node.manakaiAppendText> ('&');
2710 }
2711 } (Name == 'quot') {
2712 lang:Perl {
2713 $parent-><M::Node.manakaiAppendText> ('"');
2714 }
2715 } (Name == 'apos') {
2716 lang:Perl {
2717 $parent-><M::Node.manakaiAppendText> ("'");
2718 }
2719 } (Name) {
2720 my $er;
2721 lang:Perl ($name => $token.value) : has-error {
2722 __CODE{checkNCName:: $name => $name}__;
2723
2724 $er = $doc-><M::Document.createEntityReference>
2725 ($name);
2726 $er-><AS::Node.textContent> ('');
2727 ## NOTE: When document entity (and entities referenced directly
2728 ## or indirectly from it) is parsed, no general entity
2729 ## node have its replacement tree. During general
2730 ## entity node collection construction, however,
2731 ## some entity node has replacement tree.
2732 $parent-><M::Node.appendChild> ($er);
2733
2734 my $ent = $self->{general_entity}->{$name};
2735 if (not $ent) { # no entity declaration
2736 if ($self->{standalone} or not $self->{has_xref}) { # WFC error
2737 my $location;
2738 __CODE{xp|get-location-from-token::
2739 $token => {$token},
2740 $result => {$location},
2741 }__;
2742 my $continue = __DOMCore:ERROR{xp|wf-entity-declared::
2743 xp|error-token => {$token},
2744 c|location => {$location},
2745 xp|name => {$name},
2746 }__;
2747 unless ($continue) {
2748 __CODE{ParseError}__;
2749 }
2750 } # Otherwise VC error
2751 push @{$self->{entity}}, <Code::getEmptyEntityState::
2752 $name = $name>;
2753 $er-><AS::x|EntityReference.isExpanded> (false);
2754
2755 } else { # there IS entity declaration
2756 if (($self->{standalone} or not $self->{has_xref}) and
2757 $ent->{is_externally_declared} and
2758 not $self->{entity}->[-1]->{is_externally_declared}) {
2759 my $location;
2760 __CODE{xp|get-location-from-token::
2761 $token => {$token},
2762 $result => {$location},
2763 }__;
2764 my $continue = __DOMCore:ERROR{xp|wf-entity-declared::
2765 xp|error-token => {$token},
2766 c|location => {$location},
2767 xp|name => {$name},
2768 }__;
2769 unless ($continue) {
2770 __CODE{ParseError}__;
2771 }
2772 }
2773 $er-><AS::x|EntityReference.isExpanded>
2774 ($ent->{has_replacement_text});
2775 push @{$self->{entity}}, <Code::getCopyOfEntityState::
2776 $entity_type = 'general_entity',
2777 $entity_name = $name>;
2778
2779 if (defined $ent->{notation}) {
2780 my $location;
2781 __CODE{xp|get-location-from-token::
2782 $token => {$token},
2783 $result => {$location},
2784 }__;
2785 my $continue = __c|ERROR{xp|wf-parsed-entity::
2786 xp|error-token => {$token},
2787 c|location => {$location},
2788 xp|name => {$name},
2789 }__;
2790 unless ($continue) {
2791 __CODE{ParseError}__;
2792 }
2793 } # if unparsed entity
2794
2795 if ($ent->{is_opened}) {
2796 my $location;
2797 __CODE{xp|get-location-from-token::
2798 $token => {$token},
2799 $result => {$location},
2800 }__;
2801 my $continue = __c|ERROR{xp|wf-no-recursion::
2802 xp|error-token => {$token},
2803 c|location => {$location},
2804 xp|name => {$name},
2805 }__;
2806 unless ($continue) {
2807 __CODE{ParseError}__;
2808 }
2809 open my $empty, '<', \'';
2810 $self->{entity}->[-1]->{fh} = $empty;
2811 $er-><AS::x|EntityReference.isExpanded> (false);
2812 } # recursive
2813 $ent->{is_opened} = true;
2814 } # entity declared
2815 $self->{location} = $self->{entity}->[-1];
2816 push @{$self->{entity_token}}, $self->{token};
2817 $self->{token} = [];
2818 push @{$self->{entity_char}}, $self->{char};
2819 $self->{char} = [];
2820 }
2821
2822 ?lexmode ElementContent;
2823 &content ($doc => $doc, $parent => $er, $ns => $ns);
2824 ~ (#EOF) { }
2825 lang:Perl {
2826 $self->{general_entity}->{$self->{entity}->[-1]->{name}}
2827 ->{is_opened} = false
2828 if $self->{general_entity}->{$self->{entity}->[-1]->{name}};
2829 $self->{token} = pop @{$self->{entity_token}};
2830 $self->{char} = pop @{$self->{entity_char}};
2831 pop (@{$self->{entity}})->{close_file}->();
2832 $self->{location} = $self->{entity}->[-1];
2833 }
2834
2835 // TODO: Set read-only flag
2836
2837 ?lexmode EntityReference;
2838 ?requires-next-token;
2839 }
2840
2841 ~ (REFC) {
2842 ?lexmode ElementContent;
2843 } else {
2844 ?lexmode ElementContent;
2845 }
2846 } // _GeneralEntityReferenceEC
2847
2848 /*
2849 General entity reference in an attribute value literal
2850 */
2851 rule _GeneralEntityReferenceV_ ($vals) {
2852 ?lexmode EntityReference;
2853
2854 ~ (Name == 'lt') {
2855 lang:Perl {
2856 push @{$vals->{nodes}}, $self->{doc}-><M::Document.createTextNode>
2857 ('<');
2858 $vals->{value} .= '<';
2859 }
2860 } (Name == 'gt') {
2861 lang:Perl {
2862 push @{$vals->{nodes}}, $self->{doc}-><M::Document.createTextNode>
2863 ('>');
2864 $vals->{value} .= '>';
2865 }
2866 } (Name == 'amp') {
2867 lang:Perl {
2868 push @{$vals->{nodes}}, $self->{doc}-><M::Document.createTextNode>
2869 ('&');
2870 $vals->{value} .= '&';
2871 }
2872 } (Name == 'quot') {
2873 lang:Perl {
2874 push @{$vals->{nodes}}, $self->{doc}-><M::Document.createTextNode>
2875 ('"');
2876 $vals->{value} .= '"';
2877 }
2878 } (Name == 'apos') {
2879 lang:Perl {
2880 push @{$vals->{nodes}}, $self->{doc}-><M::Document.createTextNode>
2881 ("'");
2882 $vals->{value} .= "'";
2883 }
2884 } (Name) {
2885 my $er;
2886 lang:Perl ($name => $token.value) : has-error {
2887 __CODE{checkNCName:: $name => $name}__;
2888
2889 $er = $self->{doc}-><M::Document.createEntityReference> ($name);
2890 $er-><AS::Node.textContent> ('');
2891 ## NOTE: When document entity (and entities referenced directly
2892 ## or indirectly from it) is parsed, no general entity
2893 ## node have its replacement tree. During general
2894 ## entity node collection construction, however,
2895 ## some entity node has replacement tree.
2896 my $ent = $self->{general_entity}->{$name};
2897 if (not $ent) { # no entity declaration
2898 if ($self->{standalone} or not $self->{has_xref}) { # WFC error
2899 my $location;
2900 __CODE{xp|get-location-from-token::
2901 $token => {$token},
2902 $result => {$location},
2903 }__;
2904 my $continue = __DOMCore:ERROR{xp|wf-entity-declared::
2905 xp|error-token => {$token},
2906 c|location => {$location},
2907 xp|name => {$name},
2908 }__;
2909 unless ($continue) {
2910 __CODE{ParseError}__;
2911 }
2912 } # Otherwise VC error
2913 push @{$self->{entity}}, <Code::getEmptyEntityState::
2914 $name = $name>;
2915 $er-><AS::x|EntityReference.isExpanded> (false);
2916
2917 } else { # there IS entity declaration
2918 if (($self->{standalone} or not $self->{has_xref}) and
2919 $ent->{is_externally_declared} and
2920 not $self->{entity}->[-1]->{is_externally_declared}) {
2921 my $location;
2922 __CODE{xp|get-location-from-token::
2923 $token => {$token},
2924 $result => {$location},
2925 }__;
2926 my $continue = __DOMCore:ERROR{xp|wf-entity-declared::
2927 xp|error-token => {$token},
2928 c|location => {$location},
2929 xp|name => {$name},
2930 }__;
2931 unless ($continue) {
2932 __CODE{ParseError}__;
2933 }
2934 }
2935
2936 if ($ent->{is_external_entity}) {
2937 my $location;
2938 __CODE{xp|get-location-from-token::
2939 $token => {$token},
2940 $result => {$location},
2941 }__;
2942 my $continue = __c|ERROR{xp|wf-no-external-entity-references::
2943 xp|error-token => {$token},
2944 c|location => {$location},
2945 xp|name => {$name},
2946 }__;
2947 unless ($continue) {
2948 __CODE{ParseError}__;
2949 }
2950 ## NOTE: |xp:wf-parsed-entity| is not checked
2951 } # if external entity
2952
2953 $er-><AS::x|EntityReference.isExpanded>
2954 ($ent->{has_replacement_text});
2955 push @{$self->{entity}}, <Code::getCopyOfEntityState::
2956 $entity_type = 'general_entity',
2957 $entity_name = $name>;
2958
2959 if ($ent->{is_opened}) {
2960 my $location;
2961 __CODE{xp|get-location-from-token::
2962 $token => {$token},
2963 $result => {$location},
2964 }__;
2965 my $continue = __c|ERROR{xp|wf-no-recursion::
2966 xp|error-token => {$token},
2967 c|location => {$location},
2968 xp|name => {$name},
2969 }__;
2970 unless ($continue) {
2971 __CODE{ParseError}__;
2972 }
2973 open my $empty, '<', \'';
2974 $self->{entity}->[-1]->{fh} = $empty;
2975 $er-><AS::x|EntityReference.isExpanded> (false);
2976 } # recursive
2977 $ent->{is_opened} = true;
2978 }
2979 push @{$vals->{nodes}}, $er;
2980 $self->{location} = $self->{entity}->[-1];
2981 push @{$self->{entity_token}}, $self->{token};
2982 $self->{token} = [];
2983 push @{$self->{entity_char}}, $self->{char};
2984 $self->{char} = [];
2985 }
2986
2987 ?lexmode AttributeValueLiteralE;
2988 &AttributeValueLiteralE_ ($parent => $er, $vals => $vals);
2989 ~ (#EOF) { }
2990 lang:Perl {
2991 $self->{general_entity}->{$self->{entity}->[-1]->{name}}
2992 ->{is_opened} = false
2993 if $self->{general_entity}->{$self->{entity}->[-1]->{name}};
2994 $self->{token} = pop @{$self->{entity_token}};
2995 $self->{char} = pop @{$self->{entity_char}};
2996 pop (@{$self->{entity}})->{close_file}->();
2997 $self->{location} = $self->{entity}->[-1];
2998 }
2999
3000 // TODO: Set read-only flag
3001
3002 ?lexmode EntityReference;
3003 ?requires-next-token;
3004 }
3005
3006 // ~ (REFC) { }
3007 } // _GeneralEntityReferenceV_
3008
3009 /*
3010 General entity reference in the replacement text
3011 of the entity referenced in an attribute value literal
3012 */
3013 rule _GeneralEntityReferenceAE_ ($parent, $vals)
3014 {
3015 ?lexmode EntityReference;
3016
3017 ~ (Name == 'lt') {
3018 lang:Perl {
3019 $parent-><M::Node.manakaiAppendText> ('<');
3020 $vals->{value} .= '<';
3021 }
3022 } (Name == 'gt') {
3023 lang:Perl {
3024 $parent-><M::Node.manakaiAppendText> ('>');
3025 $vals->{value} .= '>';
3026 }
3027 } (Name == 'amp') {
3028 lang:Perl {
3029 $parent-><M::Node.manakaiAppendText> ('&');
3030 $vals->{value} .= '&';
3031 }
3032 } (Name == 'quot') {
3033 lang:Perl {
3034 $parent-><M::Node.manakaiAppendText> ('"');
3035 $vals->{value} .= '"';
3036 }
3037 } (Name == 'apos') {
3038 lang:Perl {
3039 $parent-><M::Node.manakaiAppendText> ("'");
3040 $vals->{value} .= "'";
3041 }
3042 } (Name) {
3043 my $er;
3044 lang:Perl ($name => $token.value) : has-error {
3045 __CODE{checkNCName:: $name => $name}__;
3046
3047 $er = $self->{doc}-><M::Document.createEntityReference> ($name);
3048 $er-><AS::Node.textContent> ('');
3049 ## NOTE: When document entity (and entities referenced directly
3050 ## or indirectly from it) is parsed, no general entity
3051 ## node have its replacement tree. During general
3052 ## entity node collection construction, however,
3053 ## some entity node has replacement tree.
3054 my $ent = $self->{general_entity}->{$name};
3055 if (not $ent) { # no entity declaration
3056 if ($self->{standalone} or not $self->{has_xref}) { # WFC error
3057 my $location;
3058 __CODE{xp|get-location-from-token::
3059 $token => {$token},
3060 $result => {$location},
3061 }__;
3062 my $continue = __DOMCore:ERROR{xp|wf-entity-declared::
3063 xp|error-token => {$token},
3064 c|location => {$location},
3065 xp|name => {$name},
3066 }__;
3067 unless ($continue) {
3068 __CODE{ParseError}__;
3069 }
3070 } # Otherwise VC error
3071 push @{$self->{entity}}, <Code::getEmptyEntityState::
3072 $name = $name>;
3073 $er-><AS::x|EntityReference.isExpanded> (false);
3074
3075 } else { # there IS entity declaration
3076 if (($self->{standalone} or not $self->{has_xref}) and
3077 $ent->{is_externally_declared} and
3078 not $self->{entity}->[-1]->{is_externally_declared}) {
3079 my $location;
3080 __CODE{xp|get-location-from-token::
3081 $token => {$token},
3082 $result => {$location},
3083 }__;
3084 my $continue = __DOMCore:ERROR{xp|wf-entity-declared::
3085 xp|error-token => {$token},
3086 c|location => {$location},
3087 xp|name => {$name},
3088 }__;
3089 unless ($continue) {
3090 __CODE{ParseError}__;
3091 }
3092 }
3093
3094 if ($ent->{is_external_entity}) {
3095 my $location;
3096 __CODE{xp|get-location-from-token::
3097 $token => {$token},
3098 $result => {$location},
3099 }__;
3100 my $continue = __c|ERROR{xp|wf-no-external-entity-references::
3101 xp|error-token => {$token},
3102 c|location => {$location},
3103 xp|name => {$name},
3104 }__;
3105 unless ($continue) {
3106 __CODE{ParseError}__;
3107 }
3108 ## NOTE: |xp:wf-parsed-entity| is not checked
3109 } # if external entity
3110
3111 $er-><AS::x|EntityReference.isExpanded>
3112 ($ent->{has_replacement_text});
3113 push @{$self->{entity}}, <Code::getCopyOfEntityState::
3114 $entity_type = 'general_entity',
3115 $entity_name = $name>;
3116
3117 if ($ent->{is_opened}) {
3118 my $location;
3119 __CODE{xp|get-location-from-token::
3120 $token => {$token},
3121 $result => {$location},
3122 }__;
3123 my $continue = __c|ERROR{xp|wf-no-recursion::
3124 xp|error-token => {$token},
3125 c|location => {$location},
3126 xp|name => {$name},
3127 }__;
3128 unless ($continue) {
3129 __CODE{ParseError}__;
3130 }
3131 open my $empty, '<', \'';
3132 $self->{entity}->[-1]->{fh} = $empty;
3133 $er-><AS::x|EntityReference.isExpanded> (false);
3134 } # recursive
3135 $ent->{is_opened} = true;
3136 }
3137 $parent-><M::Node.appendChild> ($er);
3138 $self->{location} = $self->{entity}->[-1];
3139 push @{$self->{entity_token}}, $self->{token};
3140 $self->{token} = [];
3141 push @{$self->{entity_char}}, $self->{char};
3142 $self->{char} = [];
3143 }
3144
3145 ?lexmode AttributeValueLiteralE;
3146 &AttributeValueLiteralE_ ($parent => $er, $vals => $vals);
3147 ~ (#EOF) { }
3148 lang:Perl {
3149 $self->{general_entity}->{$self->{entity}->[-1]->{name}}
3150 ->{is_opened} = false
3151 if $self->{general_entity}->{$self->{entity}->[-1]->{name}};
3152 $self->{token} = pop @{$self->{entity_token}};
3153 $self->{char} = pop @{$self->{entity_char}};
3154 pop (@{$self->{entity}})->{close_file}->();
3155 $self->{location} = $self->{entity}->[-1];
3156 }
3157
3158 // TODO: Set read-only flag
3159
3160 ?lexmode EntityReference;
3161 ?requires-next-token;
3162 }
3163
3164 // ~ (REFC) { }
3165 } // _GeneralEntityReferenceAE_
3166
3167 /*
3168 General Entity Reference in Literal Entity Value in Entity Declaration
3169 */
3170 rule _GeneralEntityReferenceEV_ ($vals) {
3171 ?lexmode 'EntityReference';
3172
3173 ~ (Name) {
3174 lang:Perl ($name => $token.value) {
3175 __CODE{checkNCName:: $name => $name}__;
3176 push @$vals, $name;
3177 }
3178 /*
3179 WFCs such as Entity Declared are not checked
3180 <http://www.w3.org/TR/xml11/#bypass>
3181
3182 Note that violation to the Parsed Entity WFC is an error
3183 rather than fatal error here.
3184 */
3185 }
3186
3187 // No expansion
3188
3189 // ~ (REFC) { }
3190 } // _GeneralEntityReferenceEV_
3191
3192 /*
3193 Document Type Declaration
3194 */
3195 rule _DocumentTypeDeclaration_ ($doc) {
3196 ?lexmode MarkupDeclaration;
3197
3198 ~ (Name == 'DOCTYPE') { }
3199
3200 ~ (S) { }
3201
3202 // Document type name
3203 my $name;
3204 ~ (Name) {
3205 lang:Perl ($v => $token.value) {
3206 __CODE{checkQName:: $name => $v}__;
3207 $name = $v;
3208 }
3209 }
3210
3211 my $node;
3212 my $decl;
3213 lang:Perl {
3214 $self->{docx} = $self->{doc}
3215 -><M::Node.getFeature> (<Q::fe:XDoctype>, '3.0');
3216 $node = $self->{docx}-><M::DocumentXDoctype.createDocumentTypeDefinition>
3217 ($name);
3218 $decl = $self->{dtdecl} = $node-><M::Node.getFeature>
3219 (<Q::fe:XDoctypeDeclaration>, '3.0');
3220 }
3221
3222 my $has_extid;
3223 ~? (S) {
3224 ~? (Name == 'PUBLIC') {
3225 ~ (S) { }
3226
3227 &PubidLiteral ($decl => $decl);
3228
3229 ~ (S) { }
3230
3231 &SystemLiteral ($decl => $decl);
3232
3233 ~? (S) { }
3234
3235 lang:Perl {
3236 $self->{has_xref} = true;
3237 $has_extid = true;
3238 }
3239 } (Name == 'SYSTEM') {
3240 ~ (S) { }
3241
3242 &SystemLiteral ($decl => $decl);
3243
3244 ~? (S) { }
3245
3246 lang:Perl {
3247 $self->{has_xref} = true;
3248 $has_extid = true;
3249 }
3250 }
3251 }
3252
3253 lang:Perl {
3254 $self->{dtdef} = $node;
3255 $self->{doc}-><M::Node.appendChild> ($node);
3256 $self->{doc_cfg}-><M::c|DOMConfiguration.setParameter>
3257 ('schema-type' => <Q::xml-dtd:>);
3258 ## ISSUE: Should default schema language information be
3259 ## preserved by some other flag?
3260 }
3261
3262 ~? (DSO) {
3263 &InternalSubset ($doc => $doc, $doctype => $node);
3264
3265 ~ (DSC) {
3266 ?lexmode MarkupDeclaration;
3267 } else {
3268 ?lexmode MarkupDeclaration;
3269 }
3270
3271 ~? (S) { }
3272 }
3273
3274 // TODO: Read and process external subset if any.
3275 lang:Perl {
3276 $self->{dont_process} = true if $has_extid;
3277 }
3278
3279 // ~ (MDC) { }
3280 } // _DocumentTypeDeclaration_
3281
3282 /*
3283 Public Identifier Literal
3284 */
3285 rule PubidLiteral ($decl) {
3286 my $pubid;
3287 my $pubid_token;
3288 ~ (LIT) {
3289 ?lexmode SystemLiteral;
3290
3291 ~? (STRING) {
3292 lang:Perl ($v => $token.value) {
3293 $pubid = $v;
3294 $pubid_token = $token;
3295 }
3296 }
3297
3298 ~ (LIT) {
3299 ?lexmode MarkupDeclaration;
3300 } else {
3301 ?lexmode MarkupDeclaration;
3302 }
3303 } (LITA) {
3304 ?lexmode SystemLiteralA;
3305
3306 ~? (STRING) {
3307 lang:Perl ($v => $token.value) {
3308 $pubid = $v;
3309 $pubid_token = $token;
3310 }
3311 }
3312
3313 ~ (LITA) {
3314 ?lexmode MarkupDeclaration;
3315 } else {
3316 ?lexmode MarkupDeclaration;
3317 }
3318 }
3319
3320 if-true ($pubid_token) {
3321 lang:Perl : has-error {
3322 if ($pubid =~ m{[^\x20\x0D\x0Aa-zA-Z0-9'()+,./:=?;!*#\@\$_%-]}s) {
3323 my $location;
3324 __CODE{xp|get-location-from-token::
3325 $token => {$pubid_token},
3326 $result => {$location},
3327 }__;
3328 ## Should this be other (new) error type?
3329 my $continue = __DOMCore:ERROR{xp|wf-syntax-error::
3330 xp|error-token => {$token},
3331 c|location => {$location},
3332 }__;
3333 unless ($continue) {
3334 __CODE{ParseError}__;
3335 }
3336 }
3337
3338 ## NOTE: U+0009 is syntactically illegal.
3339 $pubid =~ s/[\x09\x0A\x0D\x20]+/\x20/gs;
3340 $pubid =~ s/\A\x20//s;
3341 $pubid =~ s/\x20\z//s;
3342 ## NOTE: Bare attribute name is written.
3343 $decl->public_id ($pubid);
3344 }
3345 }
3346 } // PubidLiteral
3347
3348 /*
3349 System Identifier Literal
3350 */
3351 rule SystemLiteral ($decl) {
3352 ~ (LIT) {
3353 ?lexmode SystemLiteral;
3354 &_SystemLiteral ($decl => $decl);
3355 } (LITA) {
3356 ?lexmode SystemLiteralA;
3357 &_SystemLiteral ($decl => $decl);
3358 }
3359 } // SystemLiteral
3360
3361 /*
3362 System Identifier Literal Content
3363
3364 Used in document type declaration, entity declaration,
3365 and notation declaration.
3366 */
3367 rule _SystemLiteral ($decl) {
3368 // LIT or LITA
3369
3370 ~? (STRING) {
3371 lang:Perl ($v => $token.value) {
3372 $decl-><AS::x|Entity.systemId> ($v);
3373 $decl-><AS::x|Entity.manakaiDeclarationBaseURI>
3374 ($self->{location}->{base_uri});
3375 }
3376 }
3377
3378 ~ (LIT) {
3379 ?lexmode MarkupDeclaration;
3380 } (LITA) {
3381 ?lexmode MarkupDeclaration;
3382 } else {
3383 ?lexmode MarkupDeclaration;
3384 }
3385 } // _SystemLiteral
3386
3387 /*
3388 DTD Internal Subset
3389
3390 intSubset := *(markupdecl / DeclSep) ;; [28b]
3391 */
3392 rule InternalSubset ($doc, $doctype) {
3393 ?lexmode DTD;
3394
3395 ~* (MDO) {
3396 ?lexmode MarkupDeclaration;
3397
3398 ~ (Name == 'ELEMENT') {
3399 &_ElementDeclaration ($doc => $doc);
3400 } (Name == 'ATTLIST') {
3401 &_AttlistDeclaration ($doc => $doc, $doctype => $doctype);
3402 } (Name == 'ENTITY') {
3403 &_EntityDeclaration ($doc => $doc);
3404 } (Name == 'NOTATION') {
3405 &_NotationDeclaration ($doc => $doc);
3406 }
3407 } (S) {
3408 //
3409 } (CDO) {
3410 &_CommentDeclarationDTD ($doc => $doc);
3411 } (PIO) {
3412 &_ProcessingInstructionDTD ($doc => $doc, $doctype => $doctype);
3413 } (PERO) {
3414 ?lexmode EntityReference;
3415
3416 lang:Perl {
3417 $self->{has_xref} = true;
3418 $self->{dont_process} = true;
3419 }
3420
3421 ~ (Name) {
3422 // TODO: __CODE{checkNCName:: $name => $name}__;
3423
3424 }
3425
3426 ~ (REFC) {
3427 ?lexmode DTD;
3428 } else {
3429 ?lexmode DTD;
3430 }
3431 }
3432 } // InternalSubset
3433
3434 rule _ElementDeclaration ($doc) {
3435 // ~ (MDO) { }
3436 // ?lexmode MarkupDeclaration
3437 // ~ (Name == 'Element') { }
3438
3439 ~ (S) { }
3440
3441 ~ (Name) {
3442 // TODO: __CODE{checkQName:: $name => $name}__;
3443
3444 }
3445
3446 ?lexmode ElementDeclaration;
3447
3448 ~ (S) { }
3449
3450 // contentspec
3451 ~ (MGO) {
3452 &_ContentModel ($doc => $doc);
3453 } (Name == 'EMPTY') {
3454
3455 } (Name == 'ANY') {
3456
3457 }
3458
3459 ~? (S) { }
3460
3461 ~ (MDC) {
3462 ?lexmode DTD;
3463 } else {
3464 ?lexmode DTD;
3465 }
3466 } // _ElementDeclaration
3467
3468 rule _ContentModel ($doc) {
3469 // ~ (MGO) { }
3470
3471 ~? (S) { }
3472
3473 ~ (Name) {
3474 // Element content model
3475 &_ModelGroup ($doc => $doc)
3476 : unshift-current-token;
3477
3478 ~? (OPT) {
3479
3480 } (REP) {
3481
3482 } (PLUS) {
3483
3484 }
3485
3486 } (MDO) {
3487 &_ModelGroup ($doc => $doc)
3488 : unshift-current-token;
3489
3490 ~? (OPT) {
3491
3492 } (REP) {
3493
3494 } (PLUS) {
3495
3496 }
3497
3498 } (PCDATA) {
3499 // Mixed content declaration
3500 ~? (S) { }
3501
3502 ~* (OR) {
3503 ~? (S) { }
3504
3505 ~ (Name) {
3506 // TODO: Name & QName check
3507
3508 }
3509
3510 ~? (S) { }
3511 }
3512
3513 ~ (MGC) { }
3514
3515 ~? (REP) {
3516
3517 } else {
3518 // TODO: error if |Name|
3519 }
3520
3521
3522 }
3523 } // _ContentModel
3524
3525 rule _ModelGroup ($doc)
3526 : standalone
3527 : recursive
3528 {
3529 // ~ (MGO) { }
3530 // ~? (S) { }
3531
3532 &ContentParticle ($doc => $doc);
3533
3534 ~? (S) { }
3535
3536 ~? (OR) {
3537 ~? (S) { }
3538
3539 &ContentParticle ($doc => $doc);
3540
3541 ~? (S) { }
3542
3543 ~* (OR) {
3544 ~? (S) { }
3545
3546 &ContentParticle ($doc => $doc);
3547
3548 ~? (S) { }
3549 }
3550
3551 } (SEQ) {
3552 ~? (S) { }
3553
3554 &ContentParticle ($doc => $doc);
3555
3556 ~? (S) { }
3557
3558 ~* (SEQ) {
3559 ~? (S) { }
3560
3561 &ContentParticle ($doc => $doc);
3562
3563 ~? (S) { }
3564 }
3565
3566 }
3567
3568 ~ (MGC) { }
3569 } // _ModelGroup
3570
3571 rule ContentParticle ($doc) {
3572 ~ (Name) {
3573 // TODO: Name & QName check
3574
3575 } (MGO) {
3576 ~? (S) { }
3577
3578 &_ModelGroup ($doc => $doc);
3579 }
3580
3581 ~? (OPT) {
3582
3583 } (REP) {
3584
3585 } (PLUS) {
3586
3587 }
3588 } // ContentParticle
3589
3590 /*
3591 Attribute list declaration
3592 */
3593 rule _AttlistDeclaration ($doc, $doctype) {
3594 // ~ (MDO) { }
3595 // ~ (Name == 'ATTLIST') { }
3596
3597 ?lexmode AttlistDeclaration;
3598
3599 ~ (S) { }
3600
3601 my $name;
3602 ~ (Name) {
3603 lang:Perl ($v => $token.value) {
3604 __CODE{checkQName:: $name => $v}__;
3605 $name = $v;
3606 }
3607 } else {
3608 lang:Perl { $name = '#ILLEGAL' }
3609 }
3610
3611 my $docxd;
3612 my $et;
3613 lang:Perl {
3614 $et = $doctype-><M::DTDef.getElementTypeDefinitionNode> ($name);
3615 unless ($et) {
3616 $docxd = $doc-><M::Node.getFeature> (<Q::fe:XDoctype>, '3.0');
3617 $et = $docxd-><M::DocumentXDoctype.createElementTypeDefinition>
3618 ($name);
3619 $doctype-><M::DTDef.setElementTypeDefinitionNode> ($et)
3620 unless $name eq '#ILLEGAL';
3621 }
3622 }
3623
3624 ~? (S) { }
3625
3626 ~* (Name) {
3627 my $at;
3628 lang:Perl ($v => $token.value) : has-error {
3629 __CODE{checkQName:: $name => $v}__;
3630 $docxd ||= $doc-><M::Node.getFeature>
3631 (<Q::fe:XDoctype>, '3.0');
3632 $at = $docxd-><M::DocumentXDoctype.createAttributeDefinition> ($v);
3633 if (exists $et-><AG::ETDef.attributeDefinitions>->{$v}) {
3634 my $location;
3635 __CODE{xp|get-location-from-token::
3636 $token => {$token},
3637 $result => {$location},
3638 }__;
3639 my $continue = __c|ERROR{xp|warning-attribute-definition-ignored::
3640 xp|error-token => {$token},
3641 c|location => {$location},
3642 xp|name => {$v},
3643 }__;
3644 unless ($continue) {
3645 __CODE{ParseError}__;
3646 }
3647 } elsif ($self->{dont_process} and not $self->{standalone}) {
3648 my $location;
3649 __CODE{xp|get-location-from-token::
3650 $token => {$token},
3651 $result => {$location},
3652 }__;
3653 my $continue = __c|ERROR{
3654 xp|warning-attribute-definition-not-processed::
3655 xp|error-token => {$token},
3656 c|location => {$location},
3657 xp|name => {$v},
3658 }__;
3659 unless ($continue) {
3660 __CODE{ParseError}__;
3661 }
3662 } else {
3663 $et-><M::ETDef.setAttributeDefinitionNode> ($at);
3664 $self->{attr}->{$name}->{$v} = $at;
3665 }
3666 }
3667
3668 ~ (S) { }
3669
3670 // AttType
3671 ~ (Name == 'NOTATION') {
3672 ~ (S) { }
3673
3674 my $kwd;
3675 lang:Perl {
3676 $at-><AS::ATDef.declaredType> (<C::ATDef.NOTATION_ATTR>);
3677 $kwd = $at-><AG::ATDef.allowedTokens>;
3678 }
3679
3680 ~ (EGO) {
3681 ~? (S) { }
3682
3683 ~+ (Name) {
3684 lang:Perl ($v => $token.value) : has-error {
3685 __CODE{checkNCName:: $name => $v}__;
3686 push @$kwd, $v;
3687 }
3688
3689 ~? (S) { }
3690 } (OR) : separator {
3691 ~? (S) { }
3692 }
3693
3694 ~ (EGC) { }
3695 }
3696
3697 } (Name) {
3698 my $type;
3699 lang:Perl ($v => $token.value) : has-error {
3700 my $map = {
3701 CDATA => <C::ATDef.CDATA_ATTR>,
3702 ID => <C::ATDef.ID_ATTR>,
3703 IDREF => <C::ATDef.IDREF_ATTR>,
3704 IDREFS => <C::ATDef.IDREFS_ATTR>,
3705 ENTITY => <C::ATDef.ENTITY_ATTR>,
3706 ENTITIES => <C::ATDef.ENTITIES_ATTR>,
3707 NMTOKEN => <C::ATDef.NMTOKEN_ATTR>,
3708 NMTOKENS => <C::ATDef.NMTOKENS_ATTR>,
3709 };
3710 if ($map->{$v}) {
3711 $at-><AS::ATDef.declaredType> ($map->{$v});
3712 } else {
3713 ## TODO: Exception
3714 }
3715 }
3716
3717 } (EGO) {
3718 ?lexmode Enumeration;
3719
3720 ~? (S) { }
3721
3722 my $kwd;
3723 lang:Perl {
3724 $at-><AS::ATDef.declaredType> (<C::ATDef.ENUMERATION_ATTR>);
3725 $kwd = $at-><AG::ATDef.allowedTokens>;
3726 }
3727
3728 ~+ (Nmtoken) {
3729 lang:Perl ($v => $token.value) {
3730 push @$kwd, $v;
3731 }
3732
3733 ~? (S) { }
3734 } (OR) : separator {
3735 ~? (S) { }
3736 }
3737
3738 ~ (EGC) {
3739 ?lexmode AttlistDeclaration;
3740 } else {
3741 ?lexmode AttlistDeclaration;
3742 }
3743
3744 }
3745
3746 ~ (S) { }
3747
3748 // DefaultDecl
3749 ~ (RNI) {
3750 ~ (Name == 'REQUIRED') {
3751 lang:Perl {
3752 $at-><AS::ATDef.defaultType> (<C::ATDef.REQUIRED_DEFAULT>);
3753 }
3754 } (Name == 'IMPLIED') {
3755 lang:Perl {
3756 $at-><AS::ATDef.defaultType> (<C::ATDef.IMPLIED_DEFAULT>);
3757 }
3758 } (Name == 'FIXED') {
3759 ~ (S) { }
3760
3761 lang:Perl {
3762 $at-><AS::ATDef.defaultType> (<C::ATDef.FIXED_DEFAULT>);
3763 }
3764
3765 ~ (LIT) {
3766 my $vals;
3767 lang:Perl {
3768 $vals = {nodes => [], value => ''};
3769 }
3770
3771 &_AttributeValueSpecification_ ($doc => $doc, $vals => $vals);
3772
3773 lang:Perl {
3774 for (@{$vals->{nodes}}) {
3775 $at-><M::Node.appendChild> ($_);
3776 }
3777 }
3778
3779 ~ (LIT) {
3780 ?lexmode AttlistDeclaration;
3781 } else {
3782 ?lexmode AttlistDeclaration;
3783 }
3784 } (LITA) {
3785 my $vals;
3786 lang:Perl {
3787 $vals = {nodes => [], value => ''};
3788 }
3789
3790 &_AttributeValueSpecificationA_ ($doc => $doc, $vals => $vals);
3791
3792 lang:Perl {
3793 for (@{$vals->{nodes}}) {
3794 $at-><M::Node.appendChild> ($_);
3795 }
3796 }
3797
3798 ~ (LITA) {
3799 ?lexmode AttlistDeclaration;
3800 } else {
3801 ?lexmode AttlistDeclaration;
3802 }
3803 }
3804 }
3805
3806 } (LIT) {
3807 my $vals;
3808 lang:Perl {
3809 $at-><AS::ATDef.defaultType> (<C::ATDef.EXPLICIT_DEFAULT>);
3810 $vals = {nodes => [], value => ''};
3811 }
3812
3813 &_AttributeValueSpecification_ ($doc => $doc, $vals => $vals);
3814
3815 lang:Perl {
3816 for (@{$vals->{nodes}}) {
3817 $at-><M::Node.appendChild> ($_);
3818 }
3819 }
3820
3821 ~ (LIT) {
3822 ?lexmode AttlistDeclaration;
3823 } else {
3824 ?lexmode AttlistDeclaration;
3825 }
3826 } (LITA) {
3827 my $vals;
3828 lang:Perl {
3829 $at-><AS::ATDef.defaultType> (<C::ATDef.EXPLICIT_DEFAULT>);
3830 $vals = {nodes => [], value => ''};
3831 }
3832
3833 &_AttributeValueSpecificationA_ ($doc => $doc, $vals => $vals);
3834
3835 lang:Perl {
3836 for (@{$vals->{nodes}}) {
3837 $at-><M::Node.appendChild> ($_);
3838 }
3839 }
3840
3841 ~ (LITA) {
3842 ?lexmode AttlistDeclaration;
3843 } else {
3844 ?lexmode AttlistDeclaration;
3845 }
3846 }
3847
3848 } (S) : separator : terminator? {
3849 //
3850 }
3851
3852 ~ (MDC) {
3853 ?lexmode DTD;
3854 } else {
3855 ?lexmode DTD;
3856 }
3857 } // _AttlistDeclaration
3858
3859 /*
3860 Entity Declaration
3861 */
3862 rule _EntityDeclaration ($doc) {
3863 // ~ (MDO) { }
3864 // ~ (Name == ENTITY) { }
3865
3866 ~ (S) { }
3867
3868 my $is_param_entity;
3869 my $decl;
3870 lang:Perl {
3871 $decl = {
3872 name => '#ILLEGAL',
3873 reptxt => \'',
3874 is_external_entity => false,
3875 document_uri => $self->{location}->{document_uri},
3876 base_uri => $self->{location}->{base_uri},
3877 };
3878 }
3879
3880 ~? (PERO) {
3881 ~ (S) { }
3882 lang:Perl {
3883 $is_param_entity = $decl->{is_param_entity} = true;
3884 }
3885 }
3886
3887 /*
3888 TODO: Set |$decl->{is_externally_declared}| flag
3889 and |Entity.isExternallyDeclared| attribute
3890 for entity declarations in external subset or
3891 in parameter entity.
3892 */
3893
3894 ~ (Name) {
3895 lang:Perl ($v => $token.value) {
3896 __CODE{checkNCName:: $name => $v}__;
3897 $decl->{name} = $v;
3898 }
3899 }
3900
3901 my $node;
3902 lang:Perl {
3903 $node =
3904 $decl->{node} = $self->{docx}-><M::DocumentXDoctype.createGeneralEntity>
3905 ($decl->{name});
3906 ## TODO: Parameter entity...
3907 }
3908
3909 ~ (S) { }
3910
3911 ~ (LIT) {
3912 &_EntityValue ($doc => $doc, $decl => $decl);
3913 } (LITA) {
3914 &_EntityValueA ($doc => $doc, $decl => $decl);
3915 } (Name == 'PUBLIC') {
3916 ~ (S) { }
3917
3918 &PubidLiteral ($decl => $node);
3919
3920 ~ (S) { }
3921
3922 &SystemLiteral ($decl => $node);
3923
3924 lang:Perl {
3925 $decl->{is_external_entity} = true;
3926 }
3927 } (Name == 'SYSTEM') {
3928 ~ (S) { }
3929
3930 &SystemLiteral ($decl => $node);
3931
3932 lang:Perl {
3933 $decl->{is_external_entity} = true;
3934 }
3935 }
3936
3937 ~? (S) {
3938 ~? (Name == 'NDATA') {
3939 if-true ($is_param_entity) {
3940 lang:Perl : has-error {
3941 my $location;
3942 __CODE{xp|get-location-from-token::
3943 $token => {$token},
3944 $result => {$location},
3945 }__;
3946 my $continue = __DOMCore:ERROR{xp|wf-syntax-error::
3947 xp|error-token => {$token},
3948 c|location => {$location},
3949 }__;
3950 unless ($continue) {
3951 __CODE{ParseError}__;
3952 }
3953 }
3954 }
3955
3956 ~ (S) { }
3957
3958 ~ (Name) {
3959 lang:Perl ($v => $token.value) : has-error {
3960 __CODE{checkNCName:: $name => $v}__;
3961 $decl->{notation} = $v;
3962 $decl->{node}-><AG::x|Entity.notationName> ($v);
3963 }
3964 }
3965
3966 ~? (S) { }
3967 }
3968 }
3969
3970 lang:Perl : has-error {
3971 if ($self->{$decl->{is_param_entity} ? 'param_entity' : 'general_entity'}
3972 ->{$decl->{name}}) {
3973 ## Predefined entity
3974 if (not $decl->{is_param_entity} and
3975 {lt => true, gt => true, amp => true,
3976 quot => true, apos => true}->{$decl->{name}}) {
3977 if ($decl->{is_external_entity}) {
3978 my $location;
3979 __CODE{xp|get-location-from-token::
3980 $token => {$token},
3981 $result => {$location},
3982 }__;
3983 my $continue = __c|ERROR{xp|error-internal-predefined-entity::
3984 xp|error-token => {$token},
3985 c|location => {$location},
3986 xp|name => {$decl->{name}},
3987 }__;
3988 unless ($continue) {
3989 __CODE{ParseError}__;
3990 }
3991 } elsif (
3992 not ({gt => true, apos => true, quot => true}->{$decl->{name}} and
3993 ${$decl->{reptxt}} eq {
3994 gt => '>', apos => "'", quot => '"',
3995 }->{$decl->{name}}) and
3996 not (${$decl->{reptxt}} =~ /\A&#0*@{[{
3997 lt => '60', gt => '62', amp => '38',
3998 apos => '39', quot => '34',
3999 }->{$decl->{name}}]};\z/) and
4000 not (${$decl->{reptxt}} =~ /\A&#x0*(?:(?i)@{[{
4001 lt => '3C', gt => '3E', amp => '26',
4002 apos => '27', quot => '22',
4003 }->{$decl->{name}}]});\z/)
4004 ) {
4005 ## NOTE: See "SuikaWiki - Predefined Entities"
4006 ## "http://suika.fam.cx/gate/2005/sw/%E5%AE%9A%E7%BE%A9%E6%B8%88%E5%AE%9F%E4%BD%93".
4007 my $location;
4008 __CODE{xp|get-location-from-token::
4009 $token => {$token},
4010 $result => {$location},
4011 }__;
4012 my $continue = __c|ERROR{xp|error-malformed-predefined-entity::
4013 xp|error-token => {$token},
4014 c|location => {$location},
4015 xp|name => {$decl->{name}},
4016 xp|replacement-text => {${$decl->{reptxt}}},
4017 }__;
4018 unless ($continue) {
4019 __CODE{ParseError}__;
4020 }
4021 }
4022 $self->{dtdecl}->{<H::mn:node>}->{{
4023 lt => <H::d|hasLtDeclaration>,
4024 gt => <H::d|hasGtDeclaration>,
4025 amp => <H::d|hasAmpDeclaration>,
4026 apos => <H::d|hasAposDeclaration>,
4027 quot => <H::d|hasQuotDeclaration>,
4028 }->{$decl->{name}}} = true;
4029 } else { ## Dupulicating declaration
4030 my $location;
4031 __CODE{xp|get-location-from-token::
4032 $token => {$token},
4033 $result => {$location},
4034 }__;
4035 my $continue = __c|ERROR{xp|warning-entity-declaration-ignored::
4036 xp|error-token => {$token},
4037 c|location => {$location},
4038 xp|name => {$decl->{name}},
4039 }__;
4040 unless ($continue) {
4041 __CODE{ParseError}__;
4042 }
4043 }
4044 } elsif ($self->{dont_process} and not $self->{standalone}) {
4045 ## TODO: |standalone| and parameter entities??
4046 my $location;
4047 __CODE{xp|get-location-from-token::
4048 $token => {$token},
4049 $result => {$location},
4050 }__;
4051 my $continue = __c|ERROR{xp|warning-entity-declaration-not-processed::
4052 xp|error-token => {$token},
4053 c|location => {$location},
4054 xp|name => {$decl->{name}},
4055 }__;
4056 unless ($continue) {
4057 __CODE{ParseError}__;
4058 }
4059 } else {
4060 $self->{$decl->{is_param_entity} ? 'param_entity' : 'general_entity'}
4061 ->{$decl->{name}} = $decl;
4062 $self->{dtdef}-><M::DTDef.setGeneralEntityNode> ($decl->{node})
4063 unless $decl->{is_param_entity};
4064 }
4065 }
4066
4067 ~ (MDC) {
4068 ?lexmode DTD;
4069 } else {
4070 ?lexmode DTD;
4071 }
4072 } // _EntityDeclaration
4073
4074 /*
4075 Notation Declaration
4076 */
4077 rule _NotationDeclaration {
4078 // ~ (MDO) { }
4079 // ~ (Name == NOTATION) { }
4080
4081 ~ (S) { }
4082
4083 my $name;
4084 ~ (Name) {
4085 lang:Perl ($v => $token.value) : has-error {
4086 __CODE{checkNCName:: $name => $v}__;
4087 $name = $v;
4088 }
4089 } else {
4090 lang:Perl {
4091 $name = '#INVALID';
4092 }
4093 }
4094
4095 ~ (S) { }
4096
4097 lang:Perl {
4098 $decl = $self->{docx}-><M::DocumentXDoctype.createNotation> ($name);
4099 }
4100
4101 ~ (Name == 'PUBLIC') {
4102 ~ (S) { }
4103
4104 &PubidLiteral ($decl => $decl);
4105
4106 ~? (S) {
4107 ~? (LIT) {
4108 ?lexmode SystemLiteral;
4109 &_SystemLiteral ($decl => $decl);
4110
4111 ~? (S) { }
4112 } (LITA) {
4113 ?lexmode SystemLiteralA;
4114 &_SystemLiteral ($decl => $decl);
4115
4116 ~? (S) { }
4117 }
4118 }
4119 } (Name == 'SYSTEM') {
4120 ~ (S) { }
4121
4122 &SystemLiteral ($decl => $decl);
4123
4124 ~? (S) { }
4125 }
4126
4127 lang:Perl : has-error {
4128 if ($self->{dtdef}-><M::DTDef.getNotationNode> ($name)) {
4129 ## Dupulication
4130 my $location;
4131 __CODE{xp|get-location-from-token::
4132 $token => {$token},
4133 $result => {$location},
4134 }__;
4135 my $continue = __c|ERROR{xp|vc-unique-notation-name::
4136 xp|error-token => {$token},
4137 c|location => {$location},
4138 xp|name => {$name},
4139 }__;
4140 unless ($continue) {
4141 __CODE{ParseError}__;
4142 }
4143 } else {
4144 $self->{dtdef}-><M::DTDef.setNotationNode> ($decl);
4145 }
4146 }
4147
4148 ~ (MDC) {
4149 ?lexmode DTD;
4150 } else {
4151 ?lexmode DTD;
4152 }
4153 } // _NotationDeclaration
4154
4155 rule _EntityValue ($decl) {
4156 ?lexmode EntityValue;
4157
4158 my $vals;
4159 my $reptxt;
4160 lang:Perl {
4161 $vals = [];
4162 $reptxt = '';
4163 }
4164
4165 ~* (STRING) {
4166 lang:Perl ($v => $token.value) {
4167 $reptxt .= $v;
4168 }
4169 } (PERO) {
4170 ?lexmode EntityReference;
4171
4172 lang:Perl {
4173 $self->{has_xref} = true;
4174 $self->{dont_process} = true;
4175 }
4176
4177 // TODO: Expand or wferror if internal subset
4178
4179 ~ (Name) {
4180
4181 // Note that external subset and parameter entities are not supported
4182 lang:Perl ($name => $token.value) : has-error {
4183 __CODE{checkNCName:: $name => $name}__;
4184 my $location;
4185 __CODE{xp|get-location-from-token::
4186 $token => {$token},
4187 $result => {$location},
4188 }__;
4189 my $continue = __c|ERROR{xp|wf-pes-in-internal-subset::
4190 xp|error-token => {$token},
4191 c|location => {$location},
4192 xp|name => {$name},
4193 }__;
4194 unless ($continue) {
4195 __CODE{ParseError}__;
4196 }
4197 }
4198 }
4199
4200 ~ (REFC) {
4201 ?lexmode EntityValue;
4202 } else {
4203 ?lexmode EntityValue;
4204 }
4205 } (HCRO) {
4206 &_HexadecimalCharacterReferenceEV_ ($vals => $vals);
4207
4208 lang:Perl {
4209 $reptxt .= $vals->[-1];
4210 }
4211
4212 ~ (REFC) {
4213 ?lexmode EntityValue;
4214 } else {
4215 ?lexmode EntityValue;
4216 }
4217 } (CRO) {
4218 &_NumericCharacterReferenceEV_ ($vals => $vals);
4219
4220 lang:Perl {
4221 $reptxt .= $vals->[-1];
4222 }
4223
4224 ~ (REFC) {
4225 ?lexmode EntityValue;
4226 } else {
4227 ?lexmode EntityValue;
4228 }
4229 } (ERO) {
4230 &_GeneralEntityReferenceEV_ ($vals => $vals);
4231
4232 lang:Perl {
4233 $reptxt .= '&' . $vals->[-1] . ';';
4234 }
4235
4236 ~ (REFC) {
4237 ?lexmode EntityValue;
4238 } else {
4239 ?lexmode EntityValue;
4240 }
4241 }
4242
4243 ~ (LIT) {
4244 ?lexmode MarkupDeclaration;
4245 } (LITA) {
4246 ?lexmode MarkupDeclaration;
4247 } else {
4248 ?lexmode MarkupDeclaration;
4249 }
4250
4251 lang:Perl {
4252 $decl->{reptxt} = \$reptxt;
4253 $decl->{has_replacement_text} = true;
4254 }
4255 } // _EntityValue
4256
4257 rule _EntityValueA ($decl) {
4258 ?lexmode EntityValueA;
4259
4260 my $vals;
4261 my $reptxt;
4262 lang:Perl {
4263 $vals = [];
4264 $reptxt = '';
4265 }
4266
4267 ~* (STRING) {
4268 lang:Perl ($v => $token.value) {
4269 $reptxt .= $v;
4270 }
4271 } (PERO) {
4272 ?lexmode EntityReference;
4273
4274 lang:Perl {
4275 $self->{has_xref} = true;
4276 $self->{dont_process} = true;
4277 }
4278
4279 // TODO: implement this
4280 ~ (Name) {
4281
4282 // Note that external subset and parameter entities are not supported
4283 lang:Perl ($name => $token.value) : has-error {
4284 __CODE{checkNCName:: $name => $name}__;
4285 my $location;
4286 __CODE{xp|get-location-from-token::
4287 $token => {$token},
4288 $result => {$location},
4289 }__;
4290 my $continue = __c|ERROR{xp|wf-pes-in-internal-subset::
4291 xp|error-token => {$token},
4292 c|location => {$location},
4293 xp|name => {$name},
4294 }__;
4295 unless ($continue) {
4296 __CODE{ParseError}__;
4297 }
4298 }
4299 }
4300
4301 ~ (REFC) {
4302 ?lexmode EntityValueA;
4303 } else {
4304 ?lexmode EntityValueA;
4305 }
4306 } (HCRO) {
4307 &_HexadecimalCharacterReferenceEV_ ($vals => $vals);
4308
4309 lang:Perl {
4310 $reptxt .= $vals->[-1];
4311 }
4312
4313
4314 ~ (REFC) {
4315 ?lexmode EntityValueA;
4316 } else {
4317 ?lexmode EntityValueA;
4318 }
4319 } (CRO) {
4320 &_NumericCharacterReferenceEV_ ($vals => $vals);
4321
4322 lang:Perl {
4323 $reptxt .= $vals->[-1];
4324 }
4325
4326 ~ (REFC) {
4327 ?lexmode EntityValueA;
4328 } else {
4329 ?lexmode EntityValueA;
4330 }
4331 } (ERO) {
4332 &_GeneralEntityReferenceEV_ ($vals => $vals);
4333
4334 lang:Perl {
4335 $reptxt .= '&' . $vals->[-1] . ';';
4336 }
4337
4338 ~ (REFC) {
4339 ?lexmode EntityValueA;
4340 } else {
4341 ?lexmode EntityValueA;
4342 }
4343 }
4344
4345 ~ (LITA) {
4346 ?lexmode MarkupDeclaration;
4347 } else {
4348 ?lexmode MarkupDeclaration;
4349 }
4350
4351 lang:Perl {
4352 $decl->{reptxt} = \$reptxt;
4353 $decl->{has_replacement_text} = true;
4354 }
4355 } // _EntityValueA
4356
4357
4358 /*
4359 XML Name
4360 */
4361 lexmode NameChar {
4362 $NameStartChar10 := [
4363 '_' ':'
4364 // Letter
4365 // BaseChar
4366 U+0041..U+005A U+0061..U+007A U+00C0..U+00D6
4367 U+00D8..U+00F6 U+00F8..U+00FF U+0100..U+0131
4368 U+0134..U+013E U+0141..U+0148 U+014A..U+017E
4369 U+0180..U+01C3 U+01CD..U+01F0 U+01F4..U+01F5
4370 U+01FA..U+0217 U+0250..U+02A8 U+02BB..U+02C1
4371 U+0386 U+0388..U+038A U+038C U+038E..U+03A1
4372 U+03A3..U+03CE U+03D0..U+03D6 U+03DA U+03DC
4373 U+03DE U+03E0 U+03E2..U+03F3 U+0401..U+040C
4374 U+040E..U+044F U+0451..U+045C U+045E..U+0481
4375 U+0490..U+04C4 U+04C7..U+04C8 U+04CB..U+04CC
4376 U+04D0..U+04EB U+04EE..U+04F5 U+04F8..U+04F9
4377 U+0531..U+0556 U+0559 U+0561..U+0586
4378 U+05D0..U+05EA U+05F0..U+05F2 U+0621..U+063A
4379 U+0641..U+064A U+0671..U+06B7 U+06BA..U+06BE
4380 U+06C0..U+06CE U+06D0..U+06D3 U+06D5
4381 U+06E5..U+06E6 U+0905..U+0939 U+093D
4382 U+0958..U+0961 U+0985..U+098C U+098F..U+0990
4383 U+0993..U+09A8 U+09AA..U+09B0 U+09B2
4384 U+09B6..U+09B9 U+09DC..U+09DD U+09DF..U+09E1
4385 U+09F0..U+09F1 U+0A05..U+0A0A U+0A0F..U+0A10
4386 U+0A13..U+0A28 U+0A2A..U+0A30 U+0A32..U+0A33
4387 U+0A35..U+0A36 U+0A38..U+0A39 U+0A59..U+0A5C
4388 U+0A5E U+0A72..U+0A74 U+0A85..U+0A8B U+0A8D
4389 U+0A8F..U+0A91 U+0A93..U+0AA8 U+0AAA..U+0AB0
4390 U+0AB2..U+0AB3 U+0AB5..U+0AB9 U+0ABD U+0AE0
4391 U+0B05..U+0B0C U+0B0F..U+0B10 U+0B13..U+0B28
4392 U+0B2A..U+0B30 U+0B32..U+0B33 U+0B36..U+0B39
4393 U+0B3D U+0B5C..U+0B5D U+0B5F..U+0B61
4394 U+0B85..U+0B8A U+0B8E..U+0B90 U+0B92..U+0B95
4395 U+0B99..U+0B9A U+0B9C U+0B9E..U+0B9F
4396 U+0BA3..U+0BA4 U+0BA8..U+0BAA U+0BAE..U+0BB5
4397 U+0BB7..U+0BB9 U+0C05..U+0C0C U+0C0E..U+0C10
4398 U+0C12..U+0C28 U+0C2A..U+0C33 U+0C35..U+0C39
4399 U+0C60..U+0C61 U+0C85..U+0C8C U+0C8E..U+0C90
4400 U+0C92..U+0CA8 U+0CAA..U+0CB3 U+0CB5..U+0CB9
4401 U+0CDE U+0CE0..U+0CE1 U+0D05..U+0D0C
4402 U+0D0E..U+0D10 U+0D12..U+0D28 U+0D2A..U+0D39
4403 U+0D60..U+0D61 U+0E01..U+0E2E U+0E30
4404 U+0E32..U+0E33 U+0E40..U+0E45 U+0E81..U+0E82
4405 U+0E84 U+0E87..U+0E88 U+0E8A U+0E8D
4406 U+0E94..U+0E97 U+0E99..U+0E9F U+0EA1..U+0EA3
4407 U+0EA5 U+0EA7 U+0EAA..U+0EAB U+0EAD..U+0EAE
4408 U+0EB0 U+0EB2..U+0EB3 U+0EBD U+0EC0..U+0EC4
4409 U+0F40..U+0F47 U+0F49..U+0F69 U+10A0..U+10C5
4410 U+10D0..U+10F6 U+1100 U+1102..U+1103
4411 U+1105..U+1107 U+1109 U+110B..U+110C
4412 U+110E..U+1112 U+113C U+113E U+1140 U+114C
4413 U+114E U+1150 U+1154..U+1155 U+1159
4414 U+115F..U+1161 U+1163 U+1165 U+1167 U+1169
4415 U+116D..U+116E U+1172..U+1173 U+1175 U+119E
4416 U+11A8 U+11AB U+11AE..U+11AF U+11B7..U+11B8
4417 U+11BA U+11BC..U+11C2 U+11EB U+11F0 U+11F9
4418 U+1E00..U+1E9B U+1EA0..U+1EF9 U+1F00..U+1F15
4419 U+1F18..U+1F1D U+1F20..U+1F45 U+1F48..U+1F4D
4420 U+1F50..U+1F57 U+1F59 U+1F5B U+1F5D
4421 U+1F5F..U+1F7D U+1F80..U+1FB4 U+1FB6..U+1FBC
4422 U+1FBE U+1FC2..U+1FC4 U+1FC6..U+1FCC
4423 U+1FD0..U+1FD3 U+1FD6..U+1FDB U+1FE0..U+1FEC
4424 U+1FF2..U+1FF4 U+1FF6..U+1FFC U+2126
4425 U+212A..U+212B U+212E U+2180..U+2182
4426 U+3041..U+3094 U+30A1..U+30FA U+3105..U+312C
4427 U+AC00..U+D7A3
4428 // Ideographic
4429 U+4E00..U+9FA5 U+3007 U+3021..U+3029
4430 ];
4431 $NameChar10 := [
4432 '.' '-' '_' ':'
4433 // Letter
4434 // BaseChar
4435 U+0041..U+005A U+0061..U+007A U+00C0..U+00D6
4436 U+00D8..U+00F6 U+00F8..U+00FF U+0100..U+0131
4437 U+0134..U+013E U+0141..U+0148 U+014A..U+017E
4438 U+0180..U+01C3 U+01CD..U+01F0 U+01F4..U+01F5
4439 U+01FA..U+0217 U+0250..U+02A8 U+02BB..U+02C1
4440 U+0386 U+0388..U+038A U+038C U+038E..U+03A1
4441 U+03A3..U+03CE U+03D0..U+03D6 U+03DA U+03DC
4442 U+03DE U+03E0 U+03E2..U+03F3 U+0401..U+040C
4443 U+040E..U+044F U+0451..U+045C U+045E..U+0481
4444 U+0490..U+04C4 U+04C7..U+04C8 U+04CB..U+04CC
4445 U+04D0..U+04EB U+04EE..U+04F5 U+04F8..U+04F9
4446 U+0531..U+0556 U+0559 U+0561..U+0586
4447 U+05D0..U+05EA U+05F0..U+05F2 U+0621..U+063A
4448 U+0641..U+064A U+0671..U+06B7 U+06BA..U+06BE
4449 U+06C0..U+06CE U+06D0..U+06D3 U+06D5
4450 U+06E5..U+06E6 U+0905..U+0939 U+093D
4451 U+0958..U+0961 U+0985..U+098C U+098F..U+0990
4452 U+0993..U+09A8 U+09AA..U+09B0 U+09B2
4453 U+09B6..U+09B9 U+09DC..U+09DD U+09DF..U+09E1
4454 U+09F0..U+09F1 U+0A05..U+0A0A U+0A0F..U+0A10
4455 U+0A13..U+0A28 U+0A2A..U+0A30 U+0A32..U+0A33
4456 U+0A35..U+0A36 U+0A38..U+0A39 U+0A59..U+0A5C
4457 U+0A5E U+0A72..U+0A74 U+0A85..U+0A8B U+0A8D
4458 U+0A8F..U+0A91 U+0A93..U+0AA8 U+0AAA..U+0AB0
4459 U+0AB2..U+0AB3 U+0AB5..U+0AB9 U+0ABD U+0AE0
4460 U+0B05..U+0B0C U+0B0F..U+0B10 U+0B13..U+0B28
4461 U+0B2A..U+0B30 U+0B32..U+0B33 U+0B36..U+0B39
4462 U+0B3D U+0B5C..U+0B5D U+0B5F..U+0B61
4463 U+0B85..U+0B8A U+0B8E..U+0B90 U+0B92..U+0B95
4464 U+0B99..U+0B9A U+0B9C U+0B9E..U+0B9F
4465 U+0BA3..U+0BA4 U+0BA8..U+0BAA U+0BAE..U+0BB5
4466 U+0BB7..U+0BB9 U+0C05..U+0C0C U+0C0E..U+0C10
4467 U+0C12..U+0C28 U+0C2A..U+0C33 U+0C35..U+0C39
4468 U+0C60..U+0C61 U+0C85..U+0C8C U+0C8E..U+0C90
4469 U+0C92..U+0CA8 U+0CAA..U+0CB3 U+0CB5..U+0CB9
4470 U+0CDE U+0CE0..U+0CE1 U+0D05..U+0D0C
4471 U+0D0E..U+0D10 U+0D12..U+0D28 U+0D2A..U+0D39
4472 U+0D60..U+0D61 U+0E01..U+0E2E U+0E30
4473 U+0E32..U+0E33 U+0E40..U+0E45 U+0E81..U+0E82
4474 U+0E84 U+0E87..U+0E88 U+0E8A U+0E8D
4475 U+0E94..U+0E97 U+0E99..U+0E9F U+0EA1..U+0EA3
4476 U+0EA5 U+0EA7 U+0EAA..U+0EAB U+0EAD..U+0EAE
4477 U+0EB0 U+0EB2..U+0EB3 U+0EBD U+0EC0..U+0EC4
4478 U+0F40..U+0F47 U+0F49..U+0F69 U+10A0..U+10C5
4479 U+10D0..U+10F6 U+1100 U+1102..U+1103
4480 U+1105..U+1107 U+1109 U+110B..U+110C
4481 U+110E..U+1112 U+113C U+113E U+1140 U+114C
4482 U+114E U+1150 U+1154..U+1155 U+1159
4483 U+115F..U+1161 U+1163 U+1165 U+1167 U+1169
4484 U+116D..U+116E U+1172..U+1173 U+1175 U+119E
4485 U+11A8 U+11AB U+11AE..U+11AF U+11B7..U+11B8
4486 U+11BA U+11BC..U+11C2 U+11EB U+11F0 U+11F9
4487 U+1E00..U+1E9B U+1EA0..U+1EF9 U+1F00..U+1F15
4488 U+1F18..U+1F1D U+1F20..U+1F45 U+1F48..U+1F4D
4489 U+1F50..U+1F57 U+1F59 U+1F5B U+1F5D
4490 U+1F5F..U+1F7D U+1F80..U+1FB4 U+1FB6..U+1FBC
4491 U+1FBE U+1FC2..U+1FC4 U+1FC6..U+1FCC
4492 U+1FD0..U+1FD3 U+1FD6..U+1FDB U+1FE0..U+1FEC
4493 U+1FF2..U+1FF4 U+1FF6..U+1FFC U+2126
4494 U+212A..U+212B U+212E U+2180..U+2182
4495 U+3041..U+3094 U+30A1..U+30FA U+3105..U+312C
4496 U+AC00..U+D7A3
4497 // Ideographic
4498 U+4E00..U+9FA5 U+3007 U+3021..U+3029
4499 // Digit
4500 U+0030..U+0039 U+0660..U+0669 U+06F0..U+06F9
4501 U+0966..U+096F U+09E6..U+09EF U+0A66..U+0A6F
4502 U+0AE6..U+0AEF U+0B66..U+0B6F U+0BE7..U+0BEF
4503 U+0C66..U+0C6F U+0CE6..U+0CEF U+0D66..U+0D6F
4504 U+0E50..U+0E59 U+0ED0..U+0ED9 U+0F20..U+0F29
4505 // CombiningChar
4506 U+0300..U+0345 U+0360..U+0361 U+0483..U+0486
4507 U+0591..U+05A1 U+05A3..U+05B9 U+05BB..U+05BD
4508 U+05BF U+05C1..U+05C2 U+05C4 U+064B..U+0652
4509 U+0670 U+06D6..U+06DC U+06DD..U+06DF
4510 U+06E0..U+06E4 U+06E7..U+06E8 U+06EA..U+06ED
4511 U+0901..U+0903 U+093C U+093E..U+094C U+094D
4512 U+0951..U+0954 U+0962..U+0963 U+0981..U+0983
4513 U+09BC U+09BE U+09BF U+09C0..U+09C4
4514 U+09C7..U+09C8 U+09CB..U+09CD U+09D7
4515 U+09E2..U+09E3 U+0A02 U+0A3C U+0A3E U+0A3F
4516 U+0A40..U+0A42 U+0A47..U+0A48 U+0A4B..U+0A4D
4517 U+0A70..U+0A71 U+0A81..U+0A83 U+0ABC
4518 U+0ABE..U+0AC5 U+0AC7..U+0AC9 U+0ACB..U+0ACD
4519 U+0B01..U+0B03 U+0B3C U+0B3E..U+0B43
4520 U+0B47..U+0B48 U+0B4B..U+0B4D U+0B56..U+0B57
4521 U+0B82..U+0B83 U+0BBE..U+0BC2 U+0BC6..U+0BC8
4522 U+0BCA..U+0BCD U+0BD7 U+0C01..U+0C03
4523 U+0C3E..U+0C44 U+0C46..U+0C48 U+0C4A..U+0C4D
4524 U+0C55..U+0C56 U+0C82..U+0C83 U+0CBE..U+0CC4
4525 U+0CC6..U+0CC8 U+0CCA..U+0CCD U+0CD5..U+0CD6
4526 U+0D02..U+0D03 U+0D3E..U+0D43 U+0D46..U+0D48
4527 U+0D4A..U+0D4D U+0D57 U+0E31 U+0E34..U+0E3A
4528 U+0E47..U+0E4E U+0EB1 U+0EB4..U+0EB9
4529 U+0EBB..U+0EBC U+0EC8..U+0ECD U+0F18..U+0F19
4530 U+0F35 U+0F37 U+0F39 U+0F3E U+0F3F
4531 U+0F71..U+0F84 U+0F86..U+0F8B U+0F90..U+0F95
4532 U+0F97 U+0F99..U+0FAD U+0FB1..U+0FB7 U+0FB9
4533 U+20D0..U+20DC U+20E1 U+302A..U+302F U+3099
4534 U+309A
4535 // Extender
4536 U+00B7 U+02D0 U+02D1 U+0387 U+0640 U+0E46
4537 U+0EC6 U+3005 U+3031..U+3035 U+309D..U+309E
4538 U+30FC..U+30FE
4539 ];
4540
4541 $NameStartChar11 := [
4542 ':' '_'
4543 'A' 'B' 'C' 'D' 'E' 'F' 'G' 'H' 'I' 'J' 'K' 'L' 'M'
4544 'N' 'O' 'P' 'Q' 'R' 'S' 'T' 'U' 'V' 'W' 'X' 'Y' 'Z'
4545 'a' 'b' 'c' 'd' 'e' 'f' 'g' 'h' 'i' 'j' 'k' 'l' 'm'
4546 'n' 'o' 'p' 'q' 'r' 's' 't' 'u' 'v' 'w' 'x' 'y' 'z'
4547 U+00C0..U+00D6 U+00D8..U+00F6 U+00F8..U+02FF
4548 U+0370..U+037D U+037F..U+1FFF U+200C..U+200D
4549 U+2070..U+218F U+2C00..U+2FEF U+3001..U+D7FF
4550 U+F900..U+FDCF U+FDF0..U+FFFD U+10000..U+EFFFF
4551 ];
4552 $NameChar11 := [
4553 '-' '.' '0' '1' '2' '3' '4' '5' '6' '7' '8' '9'
4554 U+00B7 U+0300..U+036F U+203F..U+2040
4555 // NameStartChar
4556 ':' '_'
4557 'A' 'B' 'C' 'D' 'E' 'F' 'G' 'H' 'I' 'J' 'K' 'L' 'M'
4558 'N' 'O' 'P' 'Q' 'R' 'S' 'T' 'U' 'V' 'W' 'X' 'Y' 'Z'
4559 'a' 'b' 'c' 'd' 'e' 'f' 'g' 'h' 'i' 'j' 'k' 'l' 'm'
4560 'n' 'o' 'p' 'q' 'r' 's' 't' 'u' 'v' 'w' 'x' 'y' 'z'
4561 U+00C0..U+00D6 U+00D8..U+00F6 U+00F8..U+02FF
4562 U+0370..U+037D U+037F..U+1FFF U+200C..U+200D
4563 U+2070..U+218F U+2C00..U+2FEF U+3001..U+D7FF
4564 U+F900..U+FDCF U+FDF0..U+FFFD U+10000..U+EFFFF
4565 ];
4566 } // NameChar
4567
4568 lexmode Name
4569 : extends => 'NameChar'
4570 {
4571 Name : value := $NameStartChar11 $NameChar11*;
4572 } // Name
4573
4574 lexmode Nmtoken
4575 : extends => 'NameChar'
4576 {
4577 Nmtoken : value := $NameChar11*;
4578 } // Nmtoken
4579
4580 /*
4581 S
4582 */
4583 lexmode S {
4584 $s := [U+0009 U+000A U+000D U+0020];
4585 S := $s+;
4586 } // S
4587
4588 /*
4589 Document end scanning mode
4590 */
4591 lexmode DocumentEnd
4592 : standalone
4593 : extends => 'S'
4594 {
4595 /*
4596 Processing instruction
4597 */
4598 PIO := ['<'] ['?'];
4599
4600 /*
4601 Comment declaration
4602 */
4603 CDO := ['<'] ['!'] ['-'] ['-'];
4604 } // DocumentEnd
4605
4606 /*
4607 Document misc scanning mode
4608
4609 This mode scans |Misc| constructions as well
4610 as document element's start tag.
4611 */
4612 lexmode DocumentMisc
4613 : standalone
4614 : extends => 'DocumentEnd'
4615 {
4616 /*
4617 Document element start tag
4618 */
4619 STAGO := ['<'];
4620 } // DocumentMisc
4621
4622 /*
4623 Document prolog scanning mode
4624 */
4625 lexmode DocumentProlog
4626 : standalone
4627 : extends => 'DocumentMisc'
4628 {
4629 /*
4630 |DOCTYPE| declaration
4631 */
4632 MDO := ['<'] ['!'];
4633 } // DocumentProlog
4634
4635 /*
4636 Document Start Scanning Mode
4637 */
4638 lexmode DocumentStart
4639 : standalone
4640 : extends => 'DocumentProlog'
4641 {
4642 /*
4643 XML declaration
4644 */
4645 XDO := ['<'] ['?'] ['x'] ['m'] ['l'];
4646 } // DocumentStart
4647
4648 /*
4649 Comment declaration scanning mode
4650 */
4651 lexmode CommentDeclaration
4652 : standalone
4653 {
4654 /*
4655 Comment close
4656 */
4657 COM := ['-'] ['-'];
4658
4659 /*
4660 Comment data
4661 */
4662 ?default-token STRING : value;
4663 } // CommentDeclaration
4664
4665 /*
4666 Processing instruction name and |S| scanning mode
4667 */
4668 lexmode PIName
4669 : standalone
4670 : extends => 'Name'
4671 : extends => 'S'
4672 {
4673 /*
4674 Processing instruction close
4675 */
4676 PIC := ['?'] ['>'];
4677 } // PIName
4678
4679 /*
4680 Processing instruction name and |S| scanning mode
4681 */
4682 lexmode PINmtoken
4683 : standalone
4684 : extends => 'Nmtoken'
4685 : extends => 'S'
4686 {
4687 /*
4688 Processing instruction close
4689 */
4690 PIC := ['?'] ['>'];
4691 } // PINmtoken
4692
4693 /*
4694 Processing instruction data scanning mode
4695 */
4696 lexmode PIData
4697 : standalone
4698 {
4699 /*
4700 Processing instruction close
4701 */
4702 PIC := ['?'] ['>'];
4703
4704 /*
4705 Processing instruction target data
4706 */
4707 ?default-token DATA : value;
4708 } // PIData
4709
4710 /*
4711 Content of element scanning mode
4712 */
4713 lexmode ElementContent
4714 : standalone
4715 {
4716 /*
4717 Start tag open
4718 */
4719 STAGO := ['<'];
4720
4721 /*
4722 End tag open
4723 */
4724 ETAGO := ['<'] ['/'];
4725
4726 /*
4727 Hexadecimal character reference open
4728 */
4729 HCRO := ['&'] ['#'] ['x'];
4730
4731 /*
4732 Numeric character reference open
4733 */
4734 CRO := ['&'] ['#'];
4735
4736 /*
4737 General entity reference open
4738 */
4739 ERO := ['&'];
4740
4741 /*
4742 Comment declaration open
4743 */
4744 CDO := ['<'] ['!'] ['-'] ['-'];
4745
4746 /*
4747 CDATA section open
4748 */
4749 CDSO := ['<'] ['!'] ['[']
4750 ['C'] ['D'] ['A'] ['T'] ['A'] ['['];
4751
4752 /*
4753 Processing instruction open
4754 */
4755 PIO := ['<'] ['?'];
4756
4757 /*
4758 Markup section end
4759 */
4760 MSE := [']'] [']'] ['>'];
4761
4762 /*
4763 Character data
4764 */
4765 /*
4766 Character data and/or |MSE|
4767 */
4768 ?default-token CharData : value;
4769 } // ElementContent
4770
4771 /*
4772 CDATA section content scanning mode
4773 */
4774 lexmode CDATASectionContent
4775 : standalone
4776 {
4777 /*
4778 Markup section end
4779 */
4780 MSE := [']'] [']'] ['>'];
4781
4782 /*
4783 Character data
4784 */
4785 ?default-token CData : value;
4786 } // CDATASectionContent
4787
4788 lexmode EntityReference
4789 : standalone
4790 : extends => 'Name'
4791 {
4792 /*
4793 Reference close
4794 */
4795 REFC := [';'];
4796 } // EntityReference
4797
4798 lexmode NumericCharacterReference
4799 : standalone
4800 {
4801 /*
4802 Decimal number
4803 */
4804 $digit := ['0' '1' '2' '3' '4' '5' '6' '7' '8' '9'];
4805 NUMBER : value := $digit+;
4806
4807 /*
4808 Reference close
4809 */
4810 REFC := [';'];
4811 } // NumericCharacterReference
4812
4813 lexmode HexadecimalCharacterReference
4814 : standalone
4815 {
4816 /*
4817 Hexadecimal number
4818 */
4819 $hexdigit := ['0' '1' '2' '3' '4' '5' '6' '7' '8' '9'
4820 'A' 'B' 'C' 'D' 'E' 'F'
4821 'a' 'b' 'c' 'd' 'e' 'f'];
4822 Hex : value := $hexdigit+;
4823
4824 /*
4825 Reference close
4826 */
4827 REFC := [';'];
4828 } // HexadecimalCharacterReference
4829
4830 /*
4831 The XML Declaration and Text Declaration Scanning Mode
4832 */
4833 lexmode XMLDeclaration
4834 : standalone
4835 : extends => 'Name'
4836 : extends => 'S'
4837 {
4838
4839 /*
4840 Value indicator
4841 */
4842 VI := ['='];
4843
4844 /*
4845 Literal open
4846 */
4847 LIT := ['"'];
4848 LITA := [U+0027];
4849
4850 /*
4851 Processing instruction close
4852
4853 The |PIC|, i.e. |?>|, is split into two tokens |PIC1| and |PIC2|
4854 in this scanning mode to set |no_xml11_eol| flag in the
4855 |_XMLDeclaration_| |rule|.
4856 */
4857 PIC1 := ['?'];
4858 PIC2 := ['>'];
4859 } // XMLDeclaration
4860
4861 /*
4862 The XML Declaration or Processing Instruction Scanning Mode
4863
4864 '<?xml' S ...
4865 (DocumentStart) (XMLDeclarationOrPI) (XMLDeclaration)
4866 '<?xml' '1' S ...
4867 (DocumentStart) (XMLDeclarationOrPI) (PINmtoken)(PIName) (PITarget)
4868 '<?xml' '-' 'stylesheet' S ...
4869 (DocumentStart) (XMLDeclarationOrPI) (PINmtoken) (PIName) (PITarget)
4870 */
4871 lexmode XMLDeclarationOrPI
4872 : standalone
4873 : extends => 'NameChar'
4874 : extends => 'S'
4875 {
4876 NameChar : value := $NameChar11;
4877 } // XMLDeclarationOrPI
4878
4879 lexmode StartTag
4880 : standalone
4881 : extends => 'Name'
4882 : extends => 'S'
4883 {
4884
4885 /*
4886 Value indicator
4887 */
4888 VI := ['='];
4889
4890 /*
4891 Literal open
4892 */
4893 LIT := ['"'];
4894 LITA := [U+0027];
4895
4896 /*
4897 Tag close
4898 */
4899 TAGC := ['>'];
4900
4901 /*
4902 Null end-tag enabled start-tag close
4903 */
4904 NESTC := ['/'];
4905 } // StartTag
4906
4907 lexmode EndTag
4908 : standalone
4909 : extends => 'Name'
4910 : extends => 'S'
4911 {
4912 /*
4913 Tag close
4914 */
4915 TAGC := ['>'];
4916 } // EndTag
4917
4918 lexmode AttributeValueLiteral_ {
4919 ERO := ['&'];
4920 CRO := ['&'] ['#'];
4921 HCRO := ['&'] ['#'] ['x'];
4922 } // AttributeValueLiteral_
4923
4924 lexmode AttributeValueLiteral
4925 : standalone
4926 : extends => 'AttributeValueLiteral_'
4927 {
4928 LIT := ['"'];
4929 STRING : value := [^'"' '&' '<']+;
4930 } // AttributeValueLiteral
4931
4932 lexmode AttributeValueLiteralA
4933 : standalone
4934 : extends => 'AttributeValueLiteral_'
4935 {
4936 LITA := [U+0027];
4937 STRING : value := [^U+0027 '&' '<']+;
4938 } // AttributeValueLiteralA
4939
4940 lexmode AttributeValueLiteralE
4941 : standalone
4942 : extends => 'AttributeValueLiteral_'
4943 {
4944 STRING : value := [^'&' '<']+;
4945 } // AttributeValueLiteralE
4946
4947 lexmode EntityValue_ {
4948 PERO := ['%'];
4949 ERO := ['&'];
4950 CRO := ['&'] ['#'];
4951 HCRO := ['&'] ['#'] ['x'];
4952 } // EntityValue_
4953
4954 lexmode EntityValue
4955 : standalone
4956 : extends => 'EntityValue_'
4957 {
4958 LIT := ['"'];
4959 STRING : value := [^'"' '&' '%']+;
4960 } // EntityValue
4961
4962 lexmode EntityValueA
4963 : standalone
4964 : extends => 'EntityValue_'
4965 {
4966 LITA := [U+0027];
4967 STRING : value := [^U+0027 '&' '%']+;
4968 } // EntityValueA
4969
4970 lexmode SystemLiteral
4971 : standalone
4972 {
4973 LIT := ['"'];
4974 ?default-token STRING : value;
4975 } // SystemLiteral
4976
4977 lexmode SystemLiteralA
4978 : standalone
4979 {
4980 LITA := [U+0027];
4981 ?default-token STRING : value;
4982 } // SystemLiteralA
4983
4984 lexmode DTD
4985 : standalone
4986 : extends => 'S'
4987 {
4988 /*
4989 Markup declaration open
4990 */
4991 MDO := ['<'] ['!'];
4992
4993 /*
4994 Comment declaration open
4995 */
4996 CDO := ['<'] ['!'] ['-'] ['-'];
4997
4998 /*
4999 Processing instruction open
5000 */
5001 PIO := ['<'] ['?'];
5002
5003 /*
5004 Parameter entity reference open
5005 */
5006 PERO := ['%'];
5007
5008 /*
5009 Declaration subset close
5010 */
5011 DSC := [']'];
5012
5013 /*
5014 Contition section open
5015 */
5016 CSO := ['<'] ['!'] ['['];
5017 } // DTD
5018
5019 /*
5020 Markup declaration scanning mode
5021
5022 This mode is used to recognize |MDC| that terminates
5023 a comment declaration as well as the base |lexmode|
5024 for e.g. document type declaration scanning mode.
5025 */
5026 lexmode MarkupDeclaration
5027 : standalone
5028 : extends => 'Name'
5029 : extends => 'S'
5030 {
5031 /*
5032 Markup declaration close
5033 */
5034 MDC := ['>'];
5035
5036 /*
5037 Literal open
5038 */
5039 LIT := ['"'];
5040
5041 /*
5042 Alternative literal open
5043 */
5044 LITA := [U+0027];
5045
5046 /*
5047 Parameter entity reference open
5048 */
5049 PERO := ['%'];
5050
5051 /*
5052 Declaration subset open
5053 */
5054 DSO := ['['];
5055 } // MarkupDeclaration
5056
5057 lexmode ElementDeclaration
5058 : standalone
5059 : extends => 'MarkupDeclaration'
5060 {
5061 /*
5062 Model group open
5063 */
5064 MGO := ['('];
5065
5066 /*
5067 Model group close
5068 */
5069 MGC := [')'];
5070
5071 /*
5072 Reserved name indicator
5073 */
5074 RNI := ['#'];
5075
5076 /*
5077 Occurence indicators
5078 */
5079 OPT := ['?'];
5080 REP := ['*'];
5081 PLUS := ['+'];
5082
5083 /*
5084 Connectors
5085 */
5086 OR := ['|'];
5087 SEQ := [','];
5088 } // ElementDeclaration
5089
5090 lexmode AttlistDeclaration
5091 : standalone
5092 : extends => 'MarkupDeclaration'
5093 {
5094 /*
5095 Enumeration group open
5096 */
5097 EGO := ['('];
5098
5099 /*
5100 Enumeration group close
5101 */
5102 EGC := [')'];
5103
5104 /*
5105 Enumeration choice delimiter
5106 */
5107 OR := ['|'];
5108
5109 /*
5110 Reserved name indicator
5111 */
5112 RNI := ['#'];
5113 } // AttlistDeclaration
5114
5115 lexmode Enumeration
5116 : standalone
5117 : extends => 'Nmtoken'
5118 : extends => 'S'
5119 {
5120 /*
5121 Enumeration group close
5122 */
5123 EGC := [')'];
5124
5125 /*
5126 Enumeration choice delimiter
5127 */
5128 OR := ['|'];
5129 } // Enumeration
5130
5131
5132 token-error default : default {
5133 lang:Perl {
5134 my $location;
5135 __CODE{xp|get-location-from-token::
5136 $token => {$token},
5137 $result => {$location},
5138 }__;
5139 my $continue = __DOMCore:ERROR{xp|wf-syntax-error::
5140 xp|error-token => {$token},
5141 DOMCore|location => {$location},
5142 }__;
5143 unless ($continue) {
5144 __CODE{ParseError}__;
5145 }
5146 }
5147 } // default
5148
5149 @ResourceDef:
5150 @@ForCheck: ManakaiDOM|ForClass
5151 @@QName: ParseError
5152 @@rdf:type: DISPerl|BlockCode
5153 @@PerlDef:
5154 __DEEP{
5155 for (@{$self->{entity}}) {
5156 $_->{close_file}->();
5157 }
5158 }__;
5159 __EXCEPTION{DOMLS|PARSE_ERR}__;
5160
5161 @ResourceDef:
5162 @@ForCheck: ManakaiDOM|ForClass
5163 @@QName: checkNCName
5164 @@rdf:type: DISPerl|BlockCode
5165 @@PerlDef:
5166 if (($self->{xml_version} eq '1.0' and
5167 not <Code::DOMMain|testXML10Name:: $INPUT = $name>) or
5168 ($self->{xml_version} eq '1.1' and
5169 not <Code::DOMMain|testXML11Name:: $INPUT = $name>)) {
5170 my $__location;
5171 __CODE{xp|get-location-from-token::
5172 $token => {$token},
5173 $result => {$__location},
5174 }__;
5175 my $__continue = __c|ERROR{xp|wf-invalid-character-in-node-name::
5176 xp|error-token => {$token},
5177 c|location => {$__location},
5178 xp|name => {$name},
5179 infoset|version => {$self->{xml_version}},
5180 }__;
5181 unless ($__continue) {
5182 __CODE{ParseError}__;
5183 }
5184 } elsif (index ($name, ':') > -1) {
5185 my $__location;
5186 __CODE{xp|get-location-from-token::
5187 $token => {$token},
5188 $result => {$__location},
5189 }__;
5190 my $__continue = __c|ERROR{xp|nswf-legal-ncname::
5191 xp|error-token => {$token},
5192 c|location => {$__location},
5193 xp|name => {$name},
5194 infoset|version => {$self->{xml_version}},
5195 }__;
5196 unless ($__continue) {
5197 __CODE{ParseError}__;
5198 }
5199 }
5200
5201 @ResourceDef:
5202 @@ForCheck: ManakaiDOM|ForClass
5203 @@QName: checkQName
5204 @@rdf:type: DISPerl|BlockCode
5205 @@PerlDef:
5206 if (($self->{xml_version} eq '1.0' and
5207 not <Code::DOMMain|testXML10Name:: $INPUT = $name>) or
5208 ($self->{xml_version} eq '1.1' and
5209 not <Code::DOMMain|testXML11Name:: $INPUT = $name>)) {
5210 my $__location;
5211 __CODE{xp|get-location-from-token::
5212 $token => {$token},
5213 $result => {$__location},
5214 }__;
5215 my $__continue = __c|ERROR{xp|wf-invalid-character-in-node-name::
5216 xp|error-token => {$token},
5217 c|location => {$__location},
5218 xp|name => {$name},
5219 infoset|version => {$self->{xml_version}},
5220 }__;
5221 unless ($__continue) {
5222 __CODE{ParseError}__;
5223 }
5224 } elsif (($self->{xml_version} eq '1.0' and
5225 not <Code::DOMMain|testXML10QName:: $INPUT = $name>) or
5226 ($self->{xml_version} eq '1.1' and
5227 not <Code::DOMMain|testXML11QName:: $INPUT = $name>)) {
5228 my $__location;
5229 __CODE{xp|get-location-from-token::
5230 $token => {$token},
5231 $result => {$__location},
5232 }__;
5233 my $__continue = __c|ERROR{xp|nswf-legal-qname::
5234 xp|error-token => {$token},
5235 c|location => {$__location},
5236 xp|name => {$name},
5237 infoset|version => {$self->{xml_version}},
5238 }__;
5239 unless ($__continue) {
5240 __CODE{ParseError}__;
5241 }
5242 }
5243
5244
5245 @XMLTests:
5246 @@XMLTest:
5247 @@@QName: xp.char.xml10.test
5248 @@@DEnt:
5249 @@@@test:value:
5250 <?xml version="1.0"?>
5251 <p>$u0009$u000A$u000D$u0020$uD7FF$uE000$uFFFD$U00010000$U0010FFFF</p>
5252 @@@test:domTree:
5253 document {
5254 xml-version: '1.0';
5255 element {
5256 text-content: U+0009 U+000A U+000A U+0020 U+D7FF
5257 U+E000 U+FFFD U+10000 U+10FFFF;
5258 }
5259 }
5260 @@XMLTest:
5261 @@@QName: xp.char.xml11.test
5262 @@@DEnt:
5263 @@@@test:value:
5264 <?xml version="1.1"?>
5265 <p>$u0009$u000A$u000D$u0020$uD7FF$uE000$uFFFD$U00010000$U0010FFFF</p>
5266 @@@test:domTree:
5267 document {
5268 xml-version: '1.1';
5269 element {
5270 text-content: U+0009 U+000A U+000A U+0020 U+D7FF
5271 U+E000 U+FFFD U+10000 U+10FFFF;
5272 }
5273 }
5274 @@XMLTest:
5275 @@@QName: xp.char.xml10.c0.test
5276 @@@DEnt:
5277 @@@@test:value:
5278 <?xml version="1.0"?>
5279 <p>$u0000$u0001$u0002$u0003$u0004$u0005$u0006$u0007$u0008$u000B$
5280 $u000C$u000E$u000F$u0010$u0011$u0012$u0013$u0014$u0015$u0016$
5281 $u0017$u0018$u0019$u001A$u001B$u001C$u001D$u001E$u001F</p>
5282 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 4); } /* U+0000 */
5283 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 5); } /* U+0001 */
5284 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 6); } /* U+0002 */
5285 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 7); } /* U+0003 */
5286 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 8); } /* U+0004 */
5287 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 9); } /* U+0005 */
5288 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 10); } /* U+0006 */
5289 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 11); } /* U+0007 */
5290 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 12); } /* U+0008 */
5291 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 13); } /* U+000B */
5292 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 14); } /* U+000C */
5293 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 15); } /* U+000E */
5294 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 16); } /* U+000F */
5295 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 17); } /* U+0010 */
5296 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 18); } /* U+0011 */
5297 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 19); } /* U+0012 */
5298 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 20); } /* U+0013 */
5299 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 21); } /* U+0014 */
5300 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 22); } /* U+0015 */
5301 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 23); } /* U+0016 */
5302 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 24); } /* U+0017 */
5303 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 25); } /* U+0018 */
5304 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 26); } /* U+0019 */
5305 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 27); } /* U+001A */
5306 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 28); } /* U+001B */
5307 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 29); } /* U+001C */
5308 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 30); } /* U+001D */
5309 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 31); } /* U+001E */
5310 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 32); } /* U+001F */
5311 @@XMLTest:
5312 @@@QName: xp.char.xml11.c0.test
5313 @@@DEnt:
5314 @@@@test:value:
5315 <?xml version="1.1"?>
5316 <p>$u0000$u0001$u0002$u0003$u0004$u0005$u0006$u0007$u0008$u000B$
5317 $u000C$u000E$u000F$u0010$u0011$u0012$u0013$u0014$u0015$u0016$
5318 $u0017$u0018$u0019$u001A$u001B$u001C$u001D$u001E$u001F</p>
5319 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 4); } /* U+0000 */
5320 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 5); } /* U+0001 */
5321 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 6); } /* U+0002 */
5322 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 7); } /* U+0003 */
5323 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 8); } /* U+0004 */
5324 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 9); } /* U+0005 */
5325 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 10); } /* U+0006 */
5326 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 11); } /* U+0007 */
5327 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 12); } /* U+0008 */
5328 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 13); } /* U+000B */
5329 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 14); } /* U+000C */
5330 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 15); } /* U+000E */
5331 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 16); } /* U+000F */
5332 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 17); } /* U+0010 */
5333 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 18); } /* U+0011 */
5334 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 19); } /* U+0012 */
5335 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 20); } /* U+0013 */
5336 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 21); } /* U+0014 */
5337 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 22); } /* U+0015 */
5338 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 23); } /* U+0016 */
5339 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 24); } /* U+0017 */
5340 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 25); } /* U+0018 */
5341 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 26); } /* U+0019 */
5342 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 27); } /* U+001A */
5343 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 28); } /* U+001B */
5344 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 29); } /* U+001C */
5345 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 30); } /* U+001D */
5346 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 31); } /* U+001E */
5347 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 32); } /* U+001F */
5348 @@XMLTest:
5349 @@@QName: xp.char.xml10.c1.test
5350 @@@DEnt:
5351 @@@@test:value:
5352 <?xml version="1.0"?>
5353 <p>$u007F$u0080$u0081$u0082$u0083$u0084$u0086$u0087$u0088$
5354 $u0089$u008A$u008B$u008C$
5355 $u008D$u008E$u008F$u0090$u0091$u0092$u0093$u0094$u0095$u0096$
5356 $u0097$u0098$u0099$u009A$u009B$u009C$u009D$u009E$u009F$u0085</p>
5357 @@@test:domTree:
5358 document {
5359 xml-version: '1.0';
5360 element {
5361 text-content: U+007F U+0080 U+0081 U+0082 U+0083 U+0084 U+0086
5362 U+0087 U+0088 U+0089 U+008A U+008B U+008C U+008D
5363 U+008E U+008F U+0090 U+0091 U+0092 U+0093 U+0094
5364 U+0095 U+0096 U+0097 U+0098 U+0099 U+009A U+009B
5365 U+009C U+009D U+009E U+009F U+0085;
5366 }
5367 }
5368 @@XMLTest:
5369 @@@QName: xp.char.xml11.c1.test
5370 @@@DEnt:
5371 @@@@test:value:
5372 <?xml version="1.1"?>
5373 <p>$u007F$u0080$u0081$u0082$u0083$u0084$u0086$u0087$u0088$
5374 $u0089$u008A$u008B$u008C$
5375 $u008D$u008E$u008F$u0090$u0091$u0092$u0093$u0094$u0095$u0096$
5376 $u0097$u0098$u0099$u009A$u009B$u009C$u009D$u009E$u009F$u0085</p>
5377 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 4); } /* U+007F */
5378 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 5); } /* U+0080 */
5379 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 6); } /* U+0081 */
5380 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 7); } /* U+0082 */
5381 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 8); } /* U+0083 */
5382 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 9); } /* U+0084 */
5383 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 10); } /* U+0086 */
5384 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 11); } /* U+0087 */
5385 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 12); } /* U+0088 */
5386 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 13); } /* U+0089 */
5387 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 14); } /* U+008A */
5388 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 15); } /* U+008B */
5389 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 16); } /* U+008C */
5390 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 17); } /* U+008D */
5391 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 18); } /* U+008E */
5392 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 19); } /* U+008F */
5393 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 20); } /* U+0090 */
5394 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 21); } /* U+0091 */
5395 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 22); } /* U+0092 */
5396 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 23); } /* U+0093 */
5397 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 24); } /* U+0094 */
5398 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 25); } /* U+0095 */
5399 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 26); } /* U+0096 */
5400 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 27); } /* U+0097 */
5401 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 28); } /* U+0098 */
5402 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 29); } /* U+0099 */
5403 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 30); } /* U+009A */
5404 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 31); } /* U+009B */
5405 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 32); } /* U+009C */
5406 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 33); } /* U+009D */
5407 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 34); } /* U+009E */
5408 @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 35); } /* U+009F */
5409
5410 @@XMLTest:
5411 @@@QName: xp.c0.internal.entity.xml11.1.test
5412 @@@DEnt:
5413 @@@@test:value:
5414 <?xml version="1.1"?>
5415 <!DOCTYPE a [
5416 <!ENTITY e "&#x01;&#x02;&#x03;&#x04;&#x05;&#x06;&#x07;$
5417 &#x08;&#x09;&#x0A;&#x0B;&#x0C;&#x0D;&#x0E;&#x0F;$
5418 &#x10;&#x11;&#x12;&#x13;&#x14;&#x15;&#x16;&#x17;$
5419 &#x18;&#x19;&#x1A;&#x1B;&#x1C;&#x1D;&#x1E;&#x1F;">
5420 ]><a/>
5421 @@@test:domTree:
5422 document {
5423 document-type {
5424 general-entity {
5425 node-name: 'e';
5426 text-content: U+0001 U+0002 U+0003 U+0004 U+0005
5427 U+0006 U+0007 U+0008 U+0009 U+000A U+000B
5428 U+000C U+000D U+000E U+000F
5429 U+0010 U+0011 U+0012 U+0013 U+0014 U+0015
5430 U+0016 U+0017 U+0018 U+0019 U+001A U+001B
5431 U+001C U+001D U+001E U+001F;
5432 }
5433 }
5434 element { }
5435 }
5436 @@XMLTest:
5437 @@@QName: xp.c1.internal.entity.xml11.1.test
5438 @@@DEnt:
5439 @@@@test:value:
5440 <?xml version="1.1"?>
5441 <!DOCTYPE a [
5442 <!ENTITY e "&#x80;&#x81;&#x82;&#x83;&#x84;&#x85;&#x86;&#x87;$
5443 &#x88;&#x89;&#x8A;&#x8B;&#x8C;&#x8D;&#x8E;&#x8F;$
5444 &#x90;&#x91;&#x92;&#x93;&#x94;&#x95;&#x96;&#x97;$
5445 &#x98;&#x99;&#x9A;&#x9B;&#x9C;&#x9D;&#x9E;&#x9F;&#x7F;">
5446 ]><a/>
5447 @@@test:domTree:
5448 document {
5449 document-type {
5450 general-entity {
5451 node-name: 'e';
5452 text-content: U+0080 U+0081 U+0082 U+0083 U+0084 U+0085
5453 U+0086 U+0087 U+0088 U+0089 U+008A U+008B
5454 U+008C U+008D U+008E U+008F
5455 U+0090 U+0091 U+0092 U+0093 U+0094 U+0095
5456 U+0096 U+0097 U+0098 U+0099 U+009A U+009B
5457 U+009C U+009D U+009E U+009F U+007F;
5458 }
5459 }
5460 element { }
5461 }
5462
5463 @@XMLTest:
5464 @@@QName: xp.syntax.empty.test
5465 @@@DEnt:
5466 @@@@test:value: \
5467 @@@c:erred:
5468 <[[xp:wf-syntax-error]]> { (1, 1); }
5469 @@XMLTest:
5470 @@@QName: xp.syntax.space.test
5471 @@@DEnt:
5472 @@@@test:value: \
5473 @@@c:erred:
5474 <[[xp:wf-syntax-error]]> { (1, 4); }
5475 @@XMLTest:
5476 @@@QName: xp.syntax.newlines.test
5477 @@@DEnt:
5478 @@@@test:value:
5479 \
5480 \
5481 \
5482 @@@c:erred:
5483 <[[xp:wf-syntax-error]]> { (3, 1); }
5484
5485 @@XMLTest:
5486 @@@QName: xp.only.docel.test
5487 @@@DEnt:
5488 @@@@test:value:
5489 <p></p>
5490 @@@test:domTree:
5491 document {
5492 xml-version: '1.0';
5493 xml-encoding: null;
5494 xml-standalone: false;
5495 element {
5496 namespace-uri: null;
5497 prefix: null;
5498 local-name: 'p';
5499 text-content: '';
5500 }
5501 }
5502 @@XMLTest:
5503 @@@QName: xp.only.docel.emptyelemtag.test
5504 @@@DEnt:
5505 @@@@test:value:
5506 <p/>
5507 @@@test:domTree:
5508 document {
5509 xml-version: '1.0';
5510 xml-encoding: null;
5511 xml-standalone: false;
5512 element {
5513 namespace-uri: null;
5514 prefix: null;
5515 local-name: 'p';
5516 text-content: '';
5517 }
5518 }
5519 @@XMLTest:
5520 @@@QName: xp.root.s.1.test
5521 @@@DEnt:
5522 @@@@test:value:
5523 <?xml version="1.0"?>$u0020$u000D$u000A$u0009
5524 <p></p>
5525 @@@test:domTree:
5526 document {
5527 element { }
5528 }
5529
5530 @@XMLTest:
5531 @@@QName: xp.Name.1.test
5532 @@@DEnt:
5533 @@@@test:value: <name/>
5534 @@@test:domTree:
5535 document {
5536 element {
5537 node-name: 'name';
5538 }
5539 }
5540 @@XMLTest:
5541 @@@QName: xp.Name.2.test
5542 @@@DEnt:
5543 @@@@test:value: <name0/>
5544 @@@test:domTree:
5545 document {
5546 element {
5547 node-name: 'name0';
5548 }
5549 }
5550 @@enImplNote:
5551 @@@ddid: xml11name
5552 @@@@:
5553 {TODO:: XML 1.1 Name tests required
5554 }
5555
5556 @@XMLTest:
5557 @@@QName: xp.content.mse.1.test
5558 @@@DEnt:
5559 @@@@test:value:
5560 <p>]]></p>
5561 @@@c:erred:
5562 <[[xp|wf-syntax-error]]> { (1, 4)..(1, 6); }
5563 @@XMLTest:
5564 @@@QName: xp.content.mse.2.test
5565 @@@DEnt:
5566 @@@@test:value:
5567 <p>aaa]]>bbb</p>
5568 @@@c:erred:
5569 <[[xp|wf-syntax-error]]> { (1, 7)..(1, 9); }
5570
5571 @@XMLTest:
5572 @@@QName: xp.root.comment.1.test
5573 @@@DEnt:
5574 @@@@test:value:
5575 <!--comment data-->
5576 <p/>
5577 @@@test:domTree:
5578 document {
5579 comment {
5580 data: 'comment data';
5581 }
5582 element { }
5583 }
5584 @@XMLTest:
5585 @@@QName: xp.root.comment.2.test
5586 @@@DEnt:
5587 @@@@test:value:
5588 <!---->
5589 <p/>
5590 @@@test:domTree:
5591 document {
5592 comment {
5593 data: '';
5594 }
5595 element { }
5596 }
5597 @@XMLTest:
5598 @@@QName: xp.root.after.pi.comment.1.test
5599 @@@DEnt:
5600 @@@@test:value:
5601 <?pi?>
5602 <!--comment data-->
5603 <p/>
5604 @@@test:domTree:
5605 document {
5606 pi { }
5607 comment {
5608 data: 'comment data';
5609 }
5610 element { }
5611 }
5612 @@XMLTest:
5613 @@@QName: xp.root.after.pi.comment.2.test
5614 @@@DEnt:
5615 @@@@test:value:
5616 <?pi?>
5617 <!---->
5618 <p/>
5619 @@@test:domTree:
5620 document {
5621 pi { }
5622 comment {
5623 data: '';
5624 }
5625 element { }
5626 }
5627 @@XMLTest:
5628 @@@QName: xp.root.after.element.comment.1.test
5629 @@@DEnt:
5630 @@@@test:value:
5631 <p/>
5632 <!--comment data-->
5633 @@@test:domTree:
5634 document {
5635 element { }
5636 comment {
5637 data: 'comment data';
5638 }
5639 }
5640 @@XMLTest:
5641 @@@QName: xp.root.after.element.comment.2.test
5642 @@@DEnt:
5643 @@@@test:value:
5644 <p/>
5645 <!---->
5646 @@@test:domTree:
5647 document {
5648 element { }
5649 comment {
5650 data: '';
5651 }
5652 }
5653 @@XMLTest:
5654 @@@QName: xp.doctype.intsubset.comment.1.test
5655 @@@DEnt:
5656 @@@@test:value:
5657 <!DOCTYPE a [
5658 <!--comment data-->
5659 ]>
5660 <p/>
5661 @@@test:domTree:
5662 document {
5663 document-type { }
5664 element { }
5665 }
5666 @@XMLTest:
5667 @@@QName: xp.doctype.intsubset.comment.2.test
5668 @@@DEnt:
5669 @@@@test:value:
5670 <!DOCTYPE a [
5671 <!---->
5672 ]>
5673 <p/>
5674 @@@test:domTree:
5675 document {
5676 document-type { }
5677 element { }
5678 }
5679 @@XMLTest:
5680 @@@QName: xp.doctype.intsubset.comment.3.test
5681 @@@DEnt:
5682 @@@@test:value:
5683 <!DOCTYPE a [
5684 <?pi?>
5685 <!---->
5686 ]>
5687 <p/>
5688 @@@test:domTree:
5689 document {
5690 document-type {
5691 pi { }
5692 }
5693 element { }
5694 }
5695 @@XMLTest:
5696 @@@QName: xp.content.comment.1.test
5697 @@@DEnt:
5698 @@@@test:value:
5699 <p><!--comment data--></p>
5700 @@@test:domTree:
5701 document {
5702 element {
5703 comment {
5704 data: 'comment data';
5705 }
5706 }
5707 }
5708 @@XMLTest:
5709 @@@QName: xp.content.comment.2.test
5710 @@@DEnt:
5711 @@@@test:value:
5712 <p><!----></p>
5713 @@@test:domTree:
5714 document {
5715 element {
5716 comment {
5717 data: '';
5718 }
5719 }
5720 }
5721 @@XMLTest:
5722 @@@QName: xp.content.comment.3.test
5723 @@@DEnt:
5724 @@@@test:value:
5725 <p>aaaaa<!---->bbbbb</p>
5726 @@@test:domTree:
5727 document {
5728 element {
5729 text {
5730 data: 'aaaaa';
5731 }
5732 comment {
5733 data: '';
5734 }
5735 text {
5736 data: 'bbbbb';
5737 }
5738 }
5739 }
5740 @@XMLTest:
5741 @@@QName: xp.content.comment.--.1.test
5742 @@@DEnt:
5743 @@@@test:value:
5744 <p><!--data--data--></p>
5745 @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 12)..(1, 17); }
5746 @@XMLTest:
5747 @@@QName: xp.content.comment.---gt.test
5748 @@@DEnt:
5749 @@@@test:value:
5750 <p><!--data---></p>
5751 @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 12)..(1, 15); }
5752
5753 @@XMLTest:
5754 @@@QName: xp.xmldecl.version.1.0.test
5755 @@@DEnt:
5756 @@@@test:value:
5757 <?xml version="1.0"?>
5758 <p></p>
5759 @@@test:domTree:
5760 document {
5761 xml-version: '1.0';
5762 xml-encoding: null;
5763 xml-standalone: false;
5764 element { }
5765 }
5766 @@XMLTest:
5767 @@@QName: xp.xmldecl.version.1.0.lita.test
5768 @@@DEnt:
5769 @@@@test:value:
5770 <?xml version='1.0'?>
5771 <p></p>
5772 @@@test:domTree:
5773 document {
5774 xml-version: '1.0';
5775 xml-encoding: null;
5776 xml-standalone: false;
5777 element { }
5778 }
5779 @@XMLTest:
5780 @@@QName: xp.xmldecl.version.1.0.s.test
5781 @@@DEnt:
5782 @@@@test:value:
5783 <?xml version = "1.0" ?>
5784 <p></p>
5785 @@@test:domTree:
5786 document {
5787 xml-version: '1.0';
5788 xml-encoding: null;
5789 xml-standalone: false;
5790 element { }
5791 }
5792 @@XMLTest:
5793 @@@QName: xp.xmldecl.version.1.1.test
5794 @@@DEnt:
5795 @@@@test:value:
5796 <?xml version="1.1"?>
5797 <p></p>
5798 @@@test:domTree:
5799 document {
5800 xml-version: '1.1';
5801 xml-encoding: null;
5802 xml-standalone: false;
5803 element { }
5804 }
5805
5806 @@XMLTest:
5807 @@@QName: xp.xmldecl.version.1.0.encoding.usascii.test
5808 @@@DEnt:
5809 @@@@test:value:
5810 <?xml version="1.0" encoding="US-ascii"?>
5811 <p></p>
5812 @@@test:domTree:
5813 document {
5814 xml-version: '1.0';
5815 xml-encoding: 'US-ascii';
5816 xml-standalone: false;
5817 element { }
5818 }
5819 @@XMLTest:
5820 @@@QName: xp.xmldecl.version.1.0.encoding.usascii.lita.test
5821 @@@DEnt:
5822 @@@@test:value:
5823 <?xml version="1.0" encoding='US-ascii'?>
5824 <p></p>
5825 @@@test:domTree:
5826 document {
5827 xml-version: '1.0';
5828 xml-encoding: 'US-ascii';
5829 xml-standalone: false;
5830 element { }
5831 }
5832 @@XMLTest:
5833 @@@QName: xp.xmldecl.version.1.0.encoding.usascii.s.test
5834 @@@DEnt:
5835 @@@@test:value:
5836 <?xml version="1.0" encoding = "US-ascii" ?>
5837 <p></p>
5838 @@@test:domTree:
5839 document {
5840 xml-version: '1.0';
5841 xml-encoding: 'US-ascii';
5842 xml-standalone: false;
5843 element { }
5844 }
5845
5846 @@XMLTest:
5847 @@@QName: xp.xmldecl.version.1.0.encoding.usascii.standalone.yes.test
5848 @@@DEnt:
5849 @@@@test:value:
5850 <?xml version="1.0" encoding="us-ascii" standalone="yes"?>
5851 <p></p>
5852 @@@test:domTree:
5853 document {
5854 xml-version: '1.0';
5855 xml-encoding: 'us-ascii';
5856 xml-standalone: true;
5857 element { }
5858 }
5859 @@XMLTest:
5860 @@@QName: xp.xmldecl.version.1.0.encoding.usascii.standalone.no.test
5861 @@@DEnt:
5862 @@@@test:value:
5863 <?xml version="1.0" encoding="us-ascii" standalone="no"?>
5864 <p></p>
5865 @@@test:domTree:
5866 document {
5867 xml-version: '1.0';
5868 xml-encoding: 'us-ascii';
5869 xml-standalone: false;
5870 element { }
5871 }
5872 @@XMLTest:
5873 @@@QName: xp.xmldecl.version.1.0.encoding.usascii.standalone.yes.lita.test
5874 @@@DEnt:
5875 @@@@test:value:
5876 <?xml version="1.0" encoding="us-ascii" standalone='yes'?>
5877 <p></p>
5878 @@@test:domTree:
5879 document {
5880 xml-version: '1.0';
5881 xml-encoding: 'us-ascii';
5882 xml-standalone: true;
5883 element { }
5884 }
5885 @@XMLTest:
5886 @@@QName: xp.xmldecl.version.1.0.encoding.usascii.standalone.yes.s.test
5887 @@@DEnt:
5888 @@@@test:value:
5889 <?xml version="1.0" encoding="us-ascii" standalone = "yes" ?>
5890 <p></p>
5891 @@@test:domTree:
5892 document {
5893 xml-version: '1.0';
5894 xml-encoding: 'us-ascii';
5895 xml-standalone: true;
5896 element { }
5897 }
5898 @@XMLTest:
5899 @@@QName: xp.xmldecl.no.encoding.but.standalone.attr.test
5900 @@@DEnt:
5901 @@@@test:value:
5902 <?xml version="1.0" standalone="yes"?>
5903 <p></p>
5904 @@@test:domTree:
5905 document {
5906 xml-version: '1.0';
5907 xml-encoding: null;
5908 xml-standalone: true;
5909 element { }
5910 }
5911 @@XMLTest:
5912 @@@QName: xp.xmldecl.encoding.encname.test
5913 @@@DEnt:
5914 @@@@test:value:
5915 <?xml version="1.0" encoding="a-._01-"?>
5916 <p></p>
5917 @@@test:domTree:
5918 document {
5919 xml-version: '1.0';
5920 xml-encoding: 'a-._01-';
5921 xml-standalone: false;
5922 element { }
5923 }
5924
5925 @@XMLTest:
5926 @@@QName: xp.xmldecl.no.s.no.attr.test
5927 @@@DEnt:
5928 @@@@test:value:
5929 <?xml?>
5930 <p></p>
5931 @@@c:erred:
5932 <[[xp:wf-syntax-error]]> { (1, 1)..(1, 7); }
5933 @@XMLTest:
5934 @@@QName: xp.xmldecl.s.no.attr.test
5935 @@@DEnt:
5936 @@@@test:value:
5937 <?xml ?>
5938 <p></p>
5939 @@@c:erred:
5940 <[[xp:wf-syntax-error]]> { (1, 8)..(1, 9); }
5941 @@XMLTest:
5942 @@@QName: xp.xmldecl.unknown.attr.test
5943 @@@DEnt:
5944 @@@@test:value:
5945 <?xml unknown="value"?>
5946 <p></p>
5947 @@@c:erred:
5948 <[[xp:wf-syntax-error]]> { (1, 8)..(1, 22); }
5949 @@XMLTest:
5950 @@@QName: xp.xmldecl.version.unknown.attr.test
5951 @@@DEnt:
5952 @@@@test:value:
5953 <?xml version="1.0" unknown="value"?>
5954 <p></p>
5955 @@@c:erred:
5956 <[[xp:wf-syntax-error]]> { (1, 21)..(1, 35); }
5957 @@XMLTest:
5958 @@@QName: xp.xmldecl.version.encoding.unknown.attr.test
5959 @@@DEnt:
5960 @@@@test:value:
5961 <?xml version="1.0" encoding="us-ascii" unknown="value"?>
5962 <p></p>
5963 @@@c:erred:
5964 <[[xp:wf-syntax-error]]> { (1, 41)..(1, 55); }
5965 @@XMLTest:
5966 @@@QName: xp.xmldecl.version.encoding.standalone.unknown.attr.test
5967 @@@DEnt:
5968 @@@@test:value:
5969 <?xml version="1.0" encoding="us-ascii" standalone="yes"
5970 unknown="value"?>
5971 <p></p>
5972 @@@c:erred:
5973 <[[xp:wf-syntax-error]]> { (2, 1)..(2, 15); }
5974 @@XMLTest:
5975 @@@QName: xp.xmldecl.no.version.but.encoding.attr.test
5976 @@@DEnt:
5977 @@@@test:value:
5978 <?xml encoding="us-ascii"?>
5979 <p></p>
5980 @@@c:erred:
5981 <[[xp:wf-syntax-error]]> { (1, 7)..(1, 25); }
5982 @@XMLTest:
5983 @@@QName: xp.xmldecl.no.version.but.standalone.attr.test
5984 @@@DEnt:
5985 @@@@test:value:
5986 <?xml standalone="yes"?>
5987 <p></p>
5988 @@@c:erred:
5989 <[[xp:wf-syntax-error]]> { (1, 7)..(1, 24); }
5990 @@XMLTest:
5991 @@@QName: xp.xmldecl.version.unsupported.test
5992 @@@DEnt:
5993 @@@@test:value:
5994 <?xml version="1.2"?>
5995 <p></p>
5996 @@@c:erred:
5997 <[[xp:wf-unsupported-xml-version]]> { (1, 7)..(1, 19); }
5998 @@XMLTest:
5999 @@@QName: xp.xmldecl.version.unsupported.2.test
6000 @@@DEnt:
6001 @@@@test:value:
6002 <?xml version=" 1.0 "?>
6003 <p></p>
6004 @@@c:erred:
6005 <[[xp:wf-unsupported-xml-version]]> { (1, 7)..(1, 21); }
6006 @@XMLTest:
6007 @@@QName: xp.xmldecl.version.unsupported.3.test
6008 @@@DEnt:
6009 @@@@test:value:
6010 <?xml version="01.00"?>
6011 <p></p>
6012 @@@c:erred:
6013 <[[xp:wf-unsupported-xml-version]]> { (1, 7)..(1, 21); }
6014 @@XMLTest:
6015 @@@QName: xp.xmldecl.encoding.malformed.1.test
6016 @@@DEnt:
6017 @@@@test:value:
6018 <?xml version="1.0" encoding="0088"?>
6019 <p></p>
6020 @@@c:erred:
6021 <[[xp:wf-malformed-enc-name]]> { (1, 21)..(1, 35); }
6022 @@XMLTest:
6023 @@@QName: xp.xmldecl.encoding.malformed.2.test
6024 @@@DEnt:
6025 @@@@test:value:
6026 <?xml version="1.0" encoding="D.V.D!"?>
6027 <p></p>
6028 @@@c:erred:
6029 <[[xp:wf-malformed-enc-name]]> { (1, 21)..(1, 38); }
6030 @@XMLTest:
6031 @@@QName: xp.xmldecl.standalone.malformed.1.test
6032 @@@DEnt:
6033 @@@@test:value:
6034 <?xml version="1.0" standalone="true"?>
6035 <p></p>
6036 @@@c:erred:
6037 <[[xp:wf-malformed-xml-standalone]]> { (1, 21)..(1, 38); }
6038 @@XMLTest:
6039 @@@QName: xp.xmldecl.standalone.malformed.2.test
6040 @@@DEnt:
6041 @@@@test:value:
6042 <?xml version="1.0" standalone="YES"?>
6043 <p></p>
6044 @@@c:erred:
6045 <[[xp:wf-malformed-xml-standalone]]> { (1, 21)..(1, 37); }
6046 @@XMLTest:
6047 @@@QName: xp.xmldecl.standalone.malformed.3.test
6048 @@@DEnt:
6049 @@@@test:value:
6050 <?xml version="1.0" standalone="no "?>
6051 <p></p>
6052 @@@c:erred:
6053 <[[xp:wf-malformed-xml-standalone]]> { (1, 21)..(1, 38); }
6054
6055 @@XMLTest:
6056 @@@QName: xp.no-xmldecl.xml...-pi.test
6057 @@@DEnt:
6058 @@@@test:value:
6059 <?xmldeclaration?>
6060 <a></a>
6061 @@@test:domTree:
6062 document {
6063 pi {
6064 node-name: 'xmldeclaration';
6065 node-value: '';
6066 }
6067 element { }
6068 }
6069 @@XMLTest:
6070 @@@QName: xp.no-xmldecl.xml...-pi.after.document.element.test
6071 @@@DEnt:
6072 @@@@test:value:
6073 <a></a>
6074 <?xmldeclaration?>
6075 @@@test:domTree:
6076 document {
6077 element { }
6078 pi {
6079 node-name: 'xmldeclaration';
6080 node-value: '';
6081 }
6082 }
6083 @@XMLTest:
6084 @@@QName: xp.no-xmldecl.xml...-pi.in.document.element.test
6085 @@@DEnt:
6086 @@@@test:value:
6087 <a>
6088 <?xmldeclaration?>
6089 </a>
6090 @@@test:domTree:
6091 document {
6092 element {
6093 text { }
6094 pi {
6095 node-name: 'xmldeclaration';
6096 node-value: '';
6097 }
6098 text { }
6099 }
6100 }
6101 @@XMLTest:
6102 @@@QName: xp.no-xmldecl.xml...-pi.in.doctype.test
6103 @@@DEnt:
6104 @@@@test:value:
6105 <!DOCTYPE a [
6106 <?xmldeclaration?>
6107 ]>
6108 <a></a>
6109 @@@test:domTree:
6110 document {
6111 document-type {
6112 pi {
6113 node-name: 'xmldeclaration';
6114 node-value: '';
6115 }
6116 }
6117 element { }
6118 }
6119
6120 @@XMLTest:
6121 @@@QName: xp.XMLdecl.test
6122 @@@DEnt:
6123 @@@@test:value:
6124 <?XML version="1.0"?>
6125 <p></p>
6126 @@@c:erred:
6127 <[[xp:wf-pi-target-is-xml]]> { (1, 1)..(1, 5); }
6128 @@XMLTest:
6129 @@@QName: xp.Xmldecl.test
6130 @@@DEnt:
6131 @@@@test:value:
6132 <?Xml version="1.0"?>
6133 <p></p>
6134 @@@c:erred:
6135 <[[xp:wf-pi-target-is-xml]]> { (1, 1)..(1, 5); }
6136 @@XMLTest:
6137 @@@QName: xp.xmldecl.after.document.element.empty.test
6138 @@@DEnt:
6139 @@@@test:value:
6140 <p></p>
6141 <?xml?>
6142 @@@c:erred:
6143 <[[xp:wf-pi-target-is-xml]]> { (2, 1)..(2, 5); }
6144 @@XMLTest:
6145 @@@QName: xp.xmldecl.after.document.element.test
6146 @@@DEnt:
6147 @@@@test:value:
6148 <p></p>
6149 <?xml version="1.0"?>
6150 @@@c:erred:
6151 <[[xp:wf-pi-target-is-xml]]> { (2, 1)..(2, 5); }
6152 @@XMLTest:
6153 @@@QName: xp.xmldecl.in.element.empty.test
6154 @@@DEnt:
6155 @@@@test:value:
6156 <p>
6157 <?xml?>
6158 </p>
6159 @@@c:erred:
6160 <[[xp:wf-pi-target-is-xml]]> { (2, 1)..(2, 5); }
6161 @@XMLTest:
6162 @@@QName: xp.xmldecl.in.element.test
6163 @@@DEnt:
6164 @@@@test:value:
6165 <p>
6166 <?xml version="1.0"?>
6167 </p>
6168 @@@c:erred:
6169 <[[xp:wf-pi-target-is-xml]]> { (2, 1)..(2, 5); }
6170 @@XMLTest:
6171 @@@QName: xp.xmldecl.after.comment.test
6172 @@@DEnt:
6173 @@@@test:value:
6174 <!---->
6175 <?xml version="1.0"?>
6176 <p></p>
6177 @@@c:erred:
6178 <[[xp:wf-pi-target-is-xml]]> { (2, 1)..(2, 5); }
6179 @@XMLTest:
6180 @@@QName: xp.xmldecl.after.comment.empty.test
6181 @@@DEnt:
6182 @@@@test:value:
6183 <!---->
6184 <?xml?>
6185 <p></p>
6186 @@@c:erred:
6187 <[[xp:wf-pi-target-is-xml]]> { (2, 1)..(2, 5); }
6188 @@XMLTest:
6189 @@@QName: xp.xmldecl.after.pi.test
6190 @@@DEnt:
6191 @@@@test:value:
6192 <?xml-declaration?>
6193 <?xml version="1.0"?>
6194 <p></p>
6195 @@@c:erred:
6196 <[[xp:wf-pi-target-is-xml]]> { (2, 1)..(2, 5); }
6197 @@XMLTest:
6198 @@@QName: xp.xmldecl.after.pi.empty.test
6199 @@@DEnt:
6200 @@@@test:value:
6201 <?xml-declaration?>
6202 <?xml?>
6203 <p></p>
6204 @@@c:erred:
6205 <[[xp:wf-pi-target-is-xml]]> { (2, 1)..(2, 5); }
6206 @@XMLTest:
6207 @@@QName: xp.xmldecl.after.pi.2.test
6208 @@@DEnt:
6209 @@@@test:value:
6210 <?declaration?>
6211 <?xml version="1.0"?>
6212 <p></p>
6213 @@@c:erred:
6214 <[[xp:wf-pi-target-is-xml]]> { (2, 1)..(2, 5); }
6215 @@XMLTest:
6216 @@@QName: xp.xmldecl.after.pi.empty.2.test
6217 @@@DEnt:
6218 @@@@test:value:
6219 <?declaration?>
6220 <?xml?>
6221 <p></p>
6222 @@@c:erred:
6223 <[[xp:wf-pi-target-is-xml]]> { (2, 1)..(2, 5); }
6224 @@XMLTest:
6225 @@@QName: xp.xmldecl.after.doctype.test
6226 @@@DEnt:
6227 @@@@test:value:
6228 <!DOCTYPE a>
6229 <?xml version="1.0"?>
6230 <p></p>
6231 @@@c:erred:
6232 <[[xp:wf-pi-target-is-xml]]> { (2, 1)..(2, 5); }
6233 @@XMLTest:
6234 @@@QName: xp.xmldecl.after.doctype.empty.test
6235 @@@DEnt:
6236 @@@@test:value:
6237 <!DOCTYPE a>
6238 <?xml?>
6239 <p></p>
6240 @@@c:erred:
6241 <[[xp:wf-pi-target-is-xml]]> { (2, 1)..(2, 5); }
6242 @@XMLTest:
6243 @@@QName: xp.xmldecl.in.doctype.test
6244 @@@DEnt:
6245 @@@@test:value:
6246 <!DOCTYPE a [
6247 <?xml version="1.0"?>
6248 ]>
6249 <p></p>
6250 @@@c:erred:
6251 <[[xp:wf-pi-target-is-xml]]> { (2, 1)..(2, 5); }
6252 @@XMLTest:
6253 @@@QName: xp.xmldecl.in.doctype.empty.test
6254 @@@DEnt:
6255 @@@@test:value:
6256 <!DOCTYPE a [
6257 <?xml?>
6258 ]>
6259 <p></p>
6260 @@@c:erred:
6261 <[[xp:wf-pi-target-is-xml]]> { (2, 1)..(2, 5); }
6262
6263 @@XMLTest:
6264 @@@QName: xp.pi.before.element.empty.test
6265 @@@DEnt:
6266 @@@@test:value:
6267 <?target?>
6268 <a></a>
6269 @@@test:domTree:
6270 document {
6271 pi {
6272 node-name: 'target';
6273 node-value: '';
6274 }
6275 element { }
6276 }
6277 @@XMLTest:
6278 @@@QName: xp.pi.before.element.s.test
6279 @@@DEnt:
6280 @@@@test:value:
6281 <?target ?>
6282 <a></a>
6283 @@@test:domTree:
6284 document {
6285 pi {
6286 node-name: 'target';
6287 node-value: '';
6288 }
6289 element { }
6290 }
6291 @@XMLTest:
6292 @@@QName: xp.pi.before.element.string.test
6293 @@@DEnt:
6294 @@@@test:value:
6295 <?target string?>
6296 <a></a>
6297 @@@test:domTree:
6298 document {
6299 pi {
6300 node-name: 'target';
6301 node-value: 'string';
6302 }
6303 element { }
6304 }
6305 @@XMLTest:
6306 @@@QName: xp.pi.before.element.string.s.test
6307 @@@DEnt:
6308 @@@@test:value:
6309 <?target string ?>
6310 <a></a>
6311 @@@test:domTree:
6312 document {
6313 pi {
6314 node-name: 'target';
6315 node-value: 'string ';
6316 }
6317 element { }
6318 }
6319 @@XMLTest:
6320 @@@QName: xp.pi.before.element.gt.test
6321 @@@DEnt:
6322 @@@@test:value:
6323 <?target string>string?>
6324 <a></a>
6325 @@@test:domTree:
6326 document {
6327 pi {
6328 node-name: 'target';
6329 node-value: 'string>string';
6330 }
6331 element { }
6332 }
6333 @@XMLTest:
6334 @@@QName: xp.pi.doctype.empty.test
6335 @@@DEnt:
6336 @@@@test:value:
6337 <!DOCTYPE a [
6338 <?target?>
6339 ]>
6340 <a></a>
6341 @@@test:domTree:
6342 document {
6343 document-type {
6344 pi {
6345 node-name: 'target';
6346 node-value: '';
6347 }
6348 }
6349 element { }
6350 }
6351
6352 @@XMLTest:
6353 @@@QName: xp.pi.no.target.test
6354 @@@DEnt:
6355 @@@@test:value:
6356 <??>
6357 <p></p>
6358 @@@c:erred:
6359 <[[xp:wf-syntax-error]]> { (1, 3)..(1, 4); }
6360 @@XMLTest:
6361 @@@QName: xp.pi.no.target.2.test
6362 @@@DEnt:
6363 @@@@test:value:
6364 <? ?>
6365 <p></p>
6366 @@@c:erred:
6367 <[[xp:wf-syntax-error]]> { (1, 3)..(1, 4); }
6368 @@XMLTest:
6369 @@@QName: xp.pi.bad.target.1.test
6370 @@@DEnt:
6371 @@@@test:value:
6372 <?target! ?>
6373 <p></p>
6374 @@@c:erred:
6375 <[[xp:wf-syntax-error]]> { (1, 9)..(1, 9); }
6376 @@XMLTest:
6377 @@@QName: xp.pi.bad.target.2.test
6378 @@@DEnt:
6379 @@@@test:value:
6380 <?0target ?>
6381 <p></p>
6382 @@@c:erred:
6383 <[[xp:wf-syntax-error]]> { (1, 3)..(1, 3); }
6384
6385 @@XMLTest:
6386 @@@QName: xp.cdatasection.empty.1.test
6387 @@@DEnt:
6388 @@@@test:value:
6389 <p><![CDATA[]]></p>
6390 @@@test:domTree:
6391 document {
6392 element {
6393 cdata-section {
6394 data: '';
6395 }
6396 }
6397 }
6398 @@XMLTest:
6399 @@@QName: xp.cdatasection.empty.2.test
6400 @@@DEnt:
6401 @@@@test:value:
6402 <p>aa<![CDATA[]]>bb</p>
6403 @@@test:domTree:
6404 document {
6405 element {
6406 text { data: 'aa'; }
6407 cdata-section {
6408 data: '';
6409 }
6410 text { data: 'bb'; }
6411 }
6412 }
6413 @@XMLTest:
6414 @@@QName: xp.cdatasection.1.test
6415 @@@DEnt:
6416 @@@@test:value:
6417 <p><![CDATA[abcdefg]]></p>
6418 @@@test:domTree:
6419 document {
6420 element {
6421 cdata-section {
6422 data: 'abcdefg';
6423 }
6424 }
6425 }
6426 @@XMLTest:
6427 @@@QName: xp.cdatasection.2.test
6428 @@@DEnt:
6429 @@@@test:value:
6430 <p>aa<![CDATA[abcdefg]]>bb</p>
6431 @@@test:domTree:
6432 document {
6433 element {
6434 text { data: 'aa'; }
6435 cdata-section {
6436 data: 'abcdefg';
6437 }
6438 text { data: 'bb'; }
6439 }
6440 }
6441 @@XMLTest:
6442 @@@QName: xp.cdatasection.ref.1.test
6443 @@@DEnt:
6444 @@@@test:value:
6445 <p><![CDATA[a&amp;&#x32;&#32;%abc;&def;]]&gt;b]]></p>
6446 @@@test:domTree:
6447 document {
6448 element {
6449 cdata-section {
6450 data: 'a&amp;&#x32;&#32;%abc;&def;]]&gt;b';
6451 }
6452 }
6453 }
6454 @@XMLTest:
6455 @@@QName: xp.cdatasection.in.general.entity.test
6456 @@@DEnt:
6457 @@@@test:value:
6458 <!DOCTYPE p [
6459 <!ENTITY cdata "<![CDATA[text]]>">
6460 ]>
6461 <p>&cdata;</p>
6462 @@@test:domTree:
6463 document {
6464 document-type {
6465 general-entity {
6466 node-name: 'cdata';
6467 cdata-section {
6468 data: 'text';
6469 }
6470 }
6471 }
6472 element {
6473 general-entity-reference {
6474 node-name: 'cdata';
6475 is-expanded: true;
6476 cdata-section {
6477 data: 'text';
6478 }
6479 }
6480 }
6481 }
6482 @@XMLTest:
6483 @@@QName: xp.cdatasection.no.mse.test
6484 @@@DEnt:
6485 @@@@test:value:
6486 <p><![CDATA[text</p>
6487 @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 21); }
6488 @@XMLTest:
6489 @@@QName: xp.cdatasection.nest.test
6490 @@@DEnt:
6491 @@@@test:value:
6492 <p><![CDATA[text01<![CDATA[txt2]]>text3]]></p>
6493 @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 40)..(1, 42); }
6494
6495 @@XMLTest:
6496 @@@QName: xp.doctype.empty.test
6497 @@@DEnt:
6498 @@@@test:value:
6499 <!DOCTYPE a>
6500 <a></a>
6501 @@@test:domTree:
6502 document {
6503 xml-version: '1.0';
6504 xml-encoding: null;
6505 xml-standalone: false;
6506 document-type {
6507 node-name: 'a';
6508 public-id: null;
6509 system-id: null;
6510 }
6511 element {
6512 namespace-uri: null;
6513 prefix: null;
6514 local-name: 'a';
6515 text-content: '';
6516 }
6517 }
6518 @@XMLTest:
6519 @@@QName: xp.doctype.empty.after.document.element.test
6520 @@@DEnt:
6521 @@@@test:value:
6522 <a></a>
6523 <!DOCTYPE a>
6524 @@@c:erred: <[[xp|wf-syntax-error]]> { (2, 1)..(2, 12); }
6525 @@XMLTest:
6526 @@@QName: xp.doctype.empty.in.element.test
6527 @@@DEnt:
6528 @@@@test:value:
6529 <a>
6530 <!DOCTYPE a>
6531 </a>
6532 @@@c:erred: <[[xp|wf-syntax-error]]> { (2, 1)..(2, 12); }
6533 @@XMLTest:
6534 @@@QName: xp.doctype.empty.dup.test
6535 @@@DEnt:
6536 @@@@test:value:
6537 <!DOCTYPE a>
6538 <!DOCTYPE a>
6539 <a></a>
6540 @@@c:erred: <[[xp|wf-syntax-error]]> { (2, 1)..(2, 12); }
6541 @@XMLTest:
6542 @@@QName: xp.doctype.empty.in.intsubset.test
6543 @@@DEnt:
6544 @@@@test:value:
6545 <!DOCTYPE a [
6546 <!DOCTYPE a>
6547 ]>
6548 <a></a>
6549 @@@c:erred: <[[xp|wf-syntax-error]]> { (2, 1)..(2, 12); }
6550 @@XMLTest:
6551 @@@QName: xp.doctype.no.s.no.name.test
6552 @@@DEnt:
6553 @@@@test:value:
6554 <!DOCTYPE>
6555 <a></a>
6556 @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 10); }
6557 @@XMLTest:
6558 @@@QName: xp.doctype.no.name.test
6559 @@@DEnt:
6560 @@@@test:value:
6561 <!DOCTYPE >
6562 <a></a>
6563 @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 11); }
6564 @@XMLTest:
6565 @@@QName: xp.doctype.name.s.test
6566 @@@DEnt:
6567 @@@@test:value:
6568 <!DOCTYPE aa >
6569 <aa></aa>
6570 @@@test:domTree:
6571 document {
6572 document-type {
6573 node-name: 'aa';
6574 public-id: null;
6575 system-id: null;
6576 }
6577 element { }
6578 }
6579 @@XMLTest:
6580 @@@QName: xp.doctype.no.mdc.test
6581 @@@DEnt:
6582 @@@@test:value:
6583 <!DOCTYPE aa
6584 <aa></aa>
6585 @@@c:erred: <[[xp|wf-syntax-error]]> { (2, 1); }
6586
6587 @@XMLTest:
6588 @@@QName: xp.doctype.intsubset.empty.1.test
6589 @@@DEnt:
6590 @@@@test:value:
6591 <!DOCTYPE a []>
6592 <a></a>
6593 @@@test:domTree:
6594 document {
6595 xml-version: '1.0';
6596 xml-encoding: null;
6597 xml-standalone: false;
6598 document-type {
6599 node-name: 'a';
6600 public-id: null;
6601 system-id: null;
6602 }
6603 element {
6604 namespace-uri: null;
6605 prefix: null;
6606 local-name: 'a';
6607 text-content: '';
6608 }
6609 }
6610 @@XMLTest:
6611 @@@QName: xp.doctype.intsubset.empty.2.test
6612 @@@DEnt:
6613 @@@@test:value:
6614 <!DOCTYPE a [
6615
6616 ]>
6617 <a></a>
6618 @@@test:domTree:
6619 document {
6620 xml-version: '1.0';
6621 xml-encoding: null;
6622 xml-standalone: false;
6623 document-type {
6624 node-name: 'a';
6625 public-id: null;
6626 system-id: null;
6627 }
6628 element {
6629 namespace-uri: null;
6630 prefix: null;
6631 local-name: 'a';
6632 text-content: '';
6633 }
6634 }
6635 @@XMLTest:
6636 @@@QName: xp.doctype.intsubset.empty.3.test
6637 @@@DEnt:
6638 @@@@test:value:
6639 <!DOCTYPE a[]>
6640 <a></a>
6641 @@@test:domTree:
6642 document {
6643 document-type {
6644 node-name: 'a';
6645 public-id: null;
6646 system-id: null;
6647 }
6648 element { }
6649 }
6650 @@XMLTest:
6651 @@@QName: xp.doctype.intsubset.empty.4.test
6652 @@@DEnt:
6653 @@@@test:value:
6654 <!DOCTYPE a[] >
6655 <a></a>
6656 @@@test:domTree:
6657 document {
6658 document-type {
6659 node-name: 'a';
6660 public-id: null;
6661 system-id: null;
6662 }
6663 element { }
6664 }
6665 @@XMLTest:
6666 @@@QName: xp.doctype.intsubset.no.dsc.1.test
6667 @@@DEnt:
6668 @@@@test:value:
6669 <!DOCTYPE a [>
6670 <a></a>
6671 @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 14); }
6672 @@XMLTest:
6673 @@@QName: xp.doctype.intsubset.no.dsc.2.test
6674 @@@DEnt:
6675 @@@@test:value:
6676 <!DOCTYPE a [
6677 <a></a>
6678 @@@c:erred: <[[xp|wf-syntax-error]]> { (2, 1); }
6679 @@XMLTest:
6680 @@@QName: xp.doctype.intsubset.no.dsc.3.test
6681 @@@DEnt:
6682 @@@@test:value:
6683 <!DOCTYPE a [
6684 @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 14); }
6685 @@XMLTest:
6686 @@@QName: xp.doctype.intsubset.no.mdc.1.test
6687 @@@DEnt:
6688 @@@@test:value:
6689 <!DOCTYPE a []
6690 <a/>
6691 @@@c:erred: <[[xp|wf-syntax-error]]> { (2, 1); }
6692 @@XMLTest:
6693 @@@QName: xp.doctype.intsubset.no.mdc.2.test
6694 @@@DEnt:
6695 @@@@test:value:
6696 <!DOCTYPE a []]>
6697 <a/>
6698 @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 15); }
6699 @@XMLTest:
6700 @@@QName: xp.doctype.pubid.sysid.1.test
6701 @@@DEnt:
6702 @@@@test:value:
6703 <!DOCTYPE a PUBLIC "pubid" "sysid">
6704 <a/>
6705 @@@test:domTree:
6706 document {
6707 document-type {
6708 node-name: 'a';
6709 public-id: 'pubid';
6710 system-id: 'sysid';
6711 }
6712 element { }
6713 }
6714 @@XMLTest:
6715 @@@QName: xp.doctype.pubid.sysid.2.test
6716 @@@DEnt:
6717 @@@@test:value:
6718 <!DOCTYPE a PUBLIC 'pubid' "sysid">
6719 <a/>
6720 @@@test:domTree:
6721 document {
6722 document-type {
6723 node-name: 'a';
6724 public-id: 'pubid';
6725 system-id: 'sysid';
6726 }
6727 element { }
6728 }
6729 @@XMLTest:
6730 @@@QName: xp.doctype.pubid.sysid.3.test
6731 @@@DEnt:
6732 @@@@test:value:
6733 <!DOCTYPE a PUBLIC "pubid" 'sysid'>
6734 <a/>
6735 @@@test:domTree:
6736 document {
6737 document-type {
6738 node-name: 'a';
6739 public-id: 'pubid';
6740 system-id: 'sysid';
6741 }
6742 element { }
6743 }
6744 @@XMLTest:
6745 @@@QName: xp.doctype.pubid.sysid.4.test
6746 @@@DEnt:
6747 @@@@test:value:
6748 <!DOCTYPE a PUBLIC 'pubid' 'sysid'>
6749 <a/>
6750 @@@test:domTree:
6751 document {
6752 document-type {
6753 node-name: 'a';
6754 public-id: 'pubid';
6755 system-id: 'sysid';
6756 }
6757 element { }
6758 }
6759 @@XMLTest:
6760 @@@QName: xp.doctype.pubid.sysid.5.test
6761 @@@DEnt:
6762 @@@@test:value:
6763 <!DOCTYPE a PUBLIC "pubid" "sysid" >
6764 <a/>
6765 @@@test:domTree:
6766 document {
6767 document-type {
6768 node-name: 'a';
6769 public-id: 'pubid';
6770 system-id: 'sysid';
6771 }
6772 element { }
6773 }
6774 @@XMLTest:
6775 @@@QName: xp.doctype.pubid.sysid.6.test
6776 @@@DEnt:
6777 @@@@test:value:
6778 <!DOCTYPE a PUBLIC 'pubid' 'sysid' >
6779 <a/>
6780 @@@test:domTree:
6781 document {
6782 document-type {
6783 node-name: 'a';
6784 public-id: 'pubid';
6785 system-id: 'sysid';
6786 }
6787 element { }
6788 }
6789 @@XMLTest:
6790 @@@QName: xp.doctype.pubid.sysid.intsubset.1.test
6791 @@@DEnt:
6792 @@@@test:value:
6793 <!DOCTYPE a PUBLIC "pubid" "sysid"[]>
6794 <a/>
6795 @@@test:domTree:
6796 document {
6797 document-type {
6798 node-name: 'a';
6799 public-id: 'pubid';
6800 system-id: 'sysid';
6801 }
6802 element { }
6803 }
6804 @@XMLTest:
6805 @@@QName: xp.doctype.pubid.sysid.intsubset.2.test
6806 @@@DEnt:
6807 @@@@test:value:
6808 <!DOCTYPE a PUBLIC "pubid" "sysid" []>
6809 <a/>
6810 @@@test:domTree:
6811 document {
6812 document-type {
6813 node-name: 'a';
6814 public-id: 'pubid';
6815 system-id: 'sysid';
6816 }
6817 element { }
6818 }
6819 @@XMLTest:
6820 @@@QName: xp.doctype.pubid.sysid.intsubset.3.test
6821 @@@DEnt:
6822 @@@@test:value:
6823 <!DOCTYPE a PUBLIC 'pubid' 'sysid'[]>
6824 <a/>
6825 @@@test:domTree:
6826 document {
6827 document-type {
6828 node-name: 'a';
6829 public-id: 'pubid';
6830 system-id: 'sysid';
6831 }
6832 element { }
6833 }
6834 @@XMLTest:
6835 @@@QName: xp.doctype.pubid.sysid.intsubset.4.test
6836 @@@DEnt:
6837 @@@@test:value:
6838 <!DOCTYPE a PUBLIC 'pubid' 'sysid' []>
6839 <a/>
6840 @@@test:domTree:
6841 document {
6842 document-type {
6843 node-name: 'a';
6844 public-id: 'pubid';
6845 system-id: 'sysid';
6846 }
6847 element { }
6848 }
6849 @@XMLTest:
6850 @@@QName: xp.doctype.sysid.1.test
6851 @@@DEnt:
6852 @@@@test:value:
6853 <!DOCTYPE a SYSTEM "sysid">
6854 <a/>
6855 @@@test:domTree:
6856 document {
6857 document-type {
6858 node-name: 'a';
6859 public-id: null;
6860 system-id: 'sysid';
6861 }
6862 element { }
6863 }
6864 @@XMLTest:
6865 @@@QName: xp.doctype.sysid.2.test
6866 @@@DEnt:
6867 @@@@test:value:
6868 <!DOCTYPE a SYSTEM 'sysid'>
6869 <a/>
6870 @@@test:domTree:
6871 document {
6872 document-type {
6873 node-name: 'a';
6874 public-id: null;
6875 system-id: 'sysid';
6876 }
6877 element { }
6878 }
6879 @@XMLTest:
6880 @@@QName: xp.doctype.sysid.3.test
6881 @@@DEnt:
6882 @@@@test:value:
6883 <!DOCTYPE a SYSTEM "sysid" >
6884 <a/>
6885 @@@test:domTree:
6886 document {
6887 document-type {
6888 node-name: 'a';
6889 public-id: null;
6890 system-id: 'sysid';
6891 }
6892 element { }
6893 }
6894 @@XMLTest:
6895 @@@QName: xp.doctype.sysid.4.test
6896 @@@DEnt:
6897 @@@@test:value:
6898 <!DOCTYPE a SYSTEM 'sysid' >
6899 <a/>
6900 @@@test:domTree:
6901 document {
6902 document-type {
6903 node-name: 'a';
6904 public-id: null;
6905 system-id: 'sysid';
6906 }
6907 element { }
6908 }
6909 @@XMLTest:
6910 @@@QName: xp.doctype.sysid.intsubset.1.test
6911 @@@DEnt:
6912 @@@@test:value:
6913 <!DOCTYPE a SYSTEM "sysid"[]>
6914 <a/>
6915 @@@test:domTree:
6916 document {
6917 document-type {
6918 node-name: 'a';
6919 public-id: null;
6920 system-id: 'sysid';
6921 }
6922 element { }
6923 }
6924 @@XMLTest:
6925 @@@QName: xp.doctype.sysid.intsubset.2.test
6926 @@@DEnt:
6927 @@@@test:value:
6928 <!DOCTYPE a SYSTEM "sysid" []>
6929 <a/>
6930 @@@test:domTree:
6931 document {
6932 document-type {
6933 node-name: 'a';
6934 public-id: null;
6935 system-id: 'sysid';
6936 }
6937 element { }
6938 }
6939 @@XMLTest:
6940 @@@QName: xp.doctype.sysid.intsubset.3.test
6941 @@@DEnt:
6942 @@@@test:value:
6943 <!DOCTYPE a SYSTEM 'sysid'[]>
6944 <a/>
6945 @@@test:domTree:
6946 document {
6947 document-type {
6948 node-name: 'a';
6949 public-id: null;
6950 system-id: 'sysid';
6951 }
6952 element { }
6953 }
6954 @@XMLTest:
6955 @@@QName: xp.doctype.sysid.intsubset.4.test
6956 @@@DEnt:
6957 @@@@test:value:
6958 <!DOCTYPE a SYSTEM 'sysid' []>
6959 <a/>
6960 @@@test:domTree:
6961 document {
6962 document-type {
6963 node-name: 'a';
6964 public-id: null;
6965 system-id: 'sysid';
6966 }
6967 element { }
6968 }
6969 @@XMLTest:
6970 @@@QName: xp.doctype.public.stago.test
6971 @@@DEnt:
6972 @@@@test:value:
6973 <!DOCTYPE a PUBLIC<a/>
6974 @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 19); }
6975 @@XMLTest:
6976 @@@QName: xp.doctype.public.mdc.test
6977 @@@DEnt:
6978 @@@@test:value:
6979 <!DOCTYPE a PUBLIC>
6980 <a/>
6981 @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 19); }
6982 @@XMLTest:
6983 @@@QName: xp.doctype.public.s.stago.test
6984 @@@DEnt:
6985 @@@@test:value:
6986 <!DOCTYPE a PUBLIC <a/>
6987 @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 20); }
6988 @@XMLTest:
6989 @@@QName: xp.doctype.public.s.mdc.test
6990 @@@DEnt:
6991 @@@@test:value:
6992 <!DOCTYPE a PUBLIC >
6993 <a/>
6994 @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 20); }
6995 @@XMLTest:
6996 @@@QName: xp.doctype.public.lit.test
6997 @@@DEnt:
6998 @@@@test:value:
6999 <!DOCTYPE a PUBLIC"p" "s">
7000 <a/>
7001 @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 19); }
7002 @@XMLTest:
7003 @@@QName: xp.doctype.public.lita.test
7004 @@@DEnt:
7005 @@@@test:value:
7006 <!DOCTYPE a PUBLIC'p' "s">
7007 <a/>
7008 @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 19); }
7009 @@XMLTest:
7010 @@@QName: xp.doctype.pubid.lit.lita.unmatched.1.test
7011 @@@DEnt:
7012 @@@@test:value:
7013 <!DOCTYPE a PUBLIC "p' "s">
7014 <a/>
7015 @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 25); }
7016 @@XMLTest:
7017 @@@QName: xp.doctype.pubid.lit.lita.unmatched.2.test
7018 @@@DEnt:
7019 @@@@test:value:
7020 <!DOCTYPE a PUBLIC "p' 's'><a/>
7021 @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 32); }
7022 @@XMLTest:
7023 @@@QName: xp.doctype.pubid.lita.lit.unmatched.1.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.2.test
7030 @@@DEnt:
7031 @@@@test:value:
7032 <!DOCTYPE a PUBLIC 'p" 's'>
7033 <a/>
7034 @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 21)..(1, 25); }
7035 @@XMLTest:
7036 @@@QName: xp.doctype.public.s.lit.mdc.test
7037 @@@DEnt:
7038 @@@@test:value:
7039 <!DOCTYPE a PUBLIC "><a/>
7040 @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 26); }
7041 @@XMLTest:
7042 @@@QName: xp.doctype.public.s.lita.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.lit.pubid.lit.mdc.test
7049 @@@DEnt:
7050 @@@@test:value:
7051 <!DOCTYPE a PUBLIC "p">
7052 <a/>
7053 @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 23); }
7054 @@XMLTest:
7055 @@@QName: xp.doctype.public.lita.pubid.lita.mdc.test
7056 @@@DEnt:
7057 @@@@test:value:
7058 <!DOCTYPE a PUBLIC 'p'>
7059 <a/>
7060 @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 23); }
7061 @@XMLTest:
7062 @@@QName: xp.doctype.public.lit.pubid.lit.s.mdc.test
7063 @@@DEnt:
7064 @@@@test:value:
7065 <!DOCTYPE a PUBLIC "p" >
7066 <a/>
7067 @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 24); }
7068 @@XMLTest:
7069 @@@QName: xp.doctype.public.lita.pubid.lita.s.mdc.test
7070 @@@DEnt:
7071 @@@@test:value:
7072 <!DOCTYPE a PUBLIC 'p' >
7073 <a/>
7074 @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 24); }
7075 @@XMLTest:
7076 @@@QName: xp.doctype.public.lit.pubid.lit.s.lit.mdc.test
7077 @@@DEnt:
7078 @@@@test:value:
7079 <!DOCTYPE a PUBLIC "p" "><a/>
7080 @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 30); }
7081 @@XMLTest:
7082 @@@QName: xp.doctype.public.lit.pubid.lit.s.lita.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.lita.pubid.lita.s.lit.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.lita.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.lit.pubid.lit.lit.lita.unmatched.mdc.test
7101 @@@DEnt:
7102 @@@@test:value:
7103 <!DOCTYPE a PUBLIC "p" "s'><a/>
7104 @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 32); }
7105 @@XMLTest:
7106 @@@QName: xp.doctype.public.lita.pubid.lita.lita.lit.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.pubid.sysid.stago.1.test
7113 @@@DEnt:
7114 @@@@test:value:
7115 <!DOCTYPE a PUBLIC "p" "s"<a/>
7116 @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 27); }
7117 @@XMLTest:
7118 @@@QName: xp.doctype.pubid.sysid.stago.2.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.s.1.test
7125 @@@DEnt:
7126 @@@@test:value:
7127 <!DOCTYPE a PUBLIC "p" "s" <a/>
7128 @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 28); }
7129 @@XMLTest:
7130 @@@QName: xp.doctype.pubid.sysid.stago.s.2.test
7131 @@@DEnt:
7132 @@@@test:value:
7133 <!DOCTYPE a PUBLIC "p" 's' <a/>
7134 @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 28); }
7135
7136 @@XMLTest:
7137 @@@QName: xp.endofline.1.0.crlf.test
7138 @@@DEnt:
7139 @@@@test:value:
7140 <?xml version="1.0"?>
7141 <p>aaa$u000D$u000Abbb</p>
7142 @@@test:domTree:
7143 document {
7144 xml-version: '1.0';
7145 element {
7146 text-content: 'aaa' U+000A 'bbb';
7147 }
7148 }
7149 @@XMLTest:
7150 @@@QName: xp.endofline.1.1.crlf.test
7151 @@@DEnt:
7152 @@@@test:value:
7153 <?xml version="1.1"?>
7154 <p>aaa$u000D$u000Abbb</p>
7155 @@@test:domTree:
7156 document {
7157 xml-version: '1.1';
7158 element {
7159 text-content: 'aaa' U+000A 'bbb';
7160 }
7161 }
7162 @@XMLTest:
7163 @@@QName: xp.endofline.1.0.crnl.test
7164 @@@DEnt:
7165 @@@@test:value:
7166 <?xml version="1.0"?>
7167 <p>aaa$u000D$u0085bbb</p>
7168 @@@test:domTree:
7169 document {
7170 xml-version: '1.0';
7171 element {
7172 text-content: 'aaa' U+000A U+0085 'bbb';
7173 }
7174 }
7175 @@XMLTest:
7176 @@@QName: xp.endofline.1.1.crnl.test
7177 @@@DEnt:
7178 @@@@test:value:
7179 <?xml version="1.1"?>
7180 <p>aaa$u000D$u0085bbb</p>
7181 @@@test:domTree:
7182 document {
7183 xml-version: '1.1';
7184 element {
7185 text-content: 'aaa' U+000A 'bbb';
7186 }
7187 }
7188 @@XMLTest:
7189 @@@QName: xp.endofline.1.0.nl.test
7190 @@@DEnt:
7191 @@@@test:value:
7192 <?xml version="1.0"?>
7193 <p>aaa$u0085bbb</p>
7194 @@@test:domTree:
7195 document {
7196 xml-version: '1.0';
7197 element {
7198 text-content: 'aaa' U+0085 'bbb';
7199 }
7200 }
7201 @@XMLTest:
7202 @@@QName: xp.endofline.1.1.nl.test
7203 @@@DEnt:
7204 @@@@test:value:
7205 <?xml version="1.1"?>
7206 <p>aaa$u0085bbb</p>
7207 @@@test:domTree:
7208 document {
7209 xml-version: '1.1';
7210 element {
7211 text-content: 'aaa' U+000A 'bbb';
7212 }
7213 }
7214 @@XMLTest:
7215 @@@QName: xp.endofline.1.0.ls.test
7216 @@@DEnt:
7217 @@@@test:value:
7218 <?xml version="1.0"?>
7219 <p>aaa$u2028bbb</p>
7220 @@@test:domTree:
7221 document {
7222 xml-version: '1.0';
7223 element {
7224 text-content: 'aaa' U+2028 'bbb';
7225 }
7226 }
7227 @@XMLTest:
7228 @@@QName: xp.endofline.1.1.ls.test
7229 @@@DEnt:
7230 @@@@test:value:
7231 <?xml version="1.1"?>
7232 <p>aaa$u2028bbb</p>
7233 @@@test:domTree:
7234 document {
7235 xml-version: '1.1';
7236 element {
7237 text-content: 'aaa' U+000A 'bbb';
7238 }
7239 }
7240 @@XMLTest:
7241 @@@QName: xp.endofline.1.0.cr.test
7242 @@@DEnt:
7243 @@@@test:value:
7244 <?xml version="1.0"?>
7245 <p>aaa$u000Dbbb</p>
7246 @@@test:domTree:
7247 document {
7248 xml-version: '1.0';
7249 element {
7250 text-content: 'aaa' U+000A 'bbb';
7251 }
7252 }
7253 @@XMLTest:
7254 @@@QName: xp.endofline.1.1.cr.test
7255 @@@DEnt:
7256 @@@@test:value:
7257 <?xml version="1.1"?>
7258 <p>aaa$u000Dbbb</p>
7259 @@@test:domTree:
7260 document {
7261 xml-version: '1.1';
7262 element {
7263 text-content: 'aaa' U+000A 'bbb';
7264 }
7265 }
7266 @@XMLTest:
7267 @@@QName: xp.endofline.1.0.lf.test
7268 @@@DEnt:
7269 @@@@test:value:
7270 <?xml version="1.0"?>
7271 <p>aaa$u000Abbb</p>
7272 @@@test:domTree:
7273 document {
7274 xml-version: '1.0';
7275 element {
7276 text-content: 'aaa' U+000A 'bbb';
7277 }
7278 }
7279 @@XMLTest:
7280 @@@QName: xp.endofline.1.1.lf.test
7281 @@@DEnt:
7282 @@@@test:value:
7283 <?xml version="1.1"?>
7284 <p>aaa$u000Abbb</p>
7285 @@@test:domTree:
7286 document {
7287 xml-version: '1.1';
7288 element {
7289 text-content: 'aaa' U+000A 'bbb';
7290 }
7291 }
7292 @@XMLTest:
7293 @@@QName: xp.xml10.endofline.nl.in.xmldecl.1.test
7294 @@@DEnt:
7295 @@@@test:value:
7296 <?xml$u0085version="1.0"?>
7297 <p/>
7298 @@@c:erred:
7299 <[[xp|fatal-xml11-end-of-line-in-xml-declaration]]> { (1, 6)..(2, 0); }
7300 @@@c:erred: <[[xp|wf-syntax-error]]> { }
7301 @@XMLTest:
7302 @@@QName: xp.xml11.endofline.nl.in.xmldecl.1.test
7303 @@@DEnt:
7304 @@@@test:value:
7305 <?xml$u0085version="1.1"?>
7306 (err)<p/>
7307 @@@c:erred:
7308 <[[xp|fatal-xml11-end-of-line-in-xml-declaration]]> { (1, 6)..(2, 0); }
7309 @@@c:erred: <[[xp|wf-syntax-error]]> { }
7310 @@XMLTest:
7311 @@@QName: xp.xml10.endofline.crnl.in.xmldecl.1.test
7312 @@@DEnt:
7313 @@@@test:value:
7314 <?xml$u000D$u0085version="1.0"?>
7315 <p/>
7316 @@@c:erred:
7317 <[[xp|fatal-xml11-end-of-line-in-xml-declaration]]> { (1, 6)..(2, 0); }
7318 @@@c:erred: <[[xp|wf-syntax-error]]> { }
7319 @@XMLTest:
7320 @@@QName: xp.xml11.endofline.crnl.in.xmldecl.1.test
7321 @@@DEnt:
7322 @@@@test:value:
7323 <?xml$u000D$u0085version="1.1"?>
7324 (err)<p/>
7325 @@@c:erred:
7326 <[[xp|fatal-xml11-end-of-line-in-xml-declaration]]> { (1, 6)..(2, 0); }
7327 @@@c:erred: <[[xp|wf-syntax-error]]> { }
7328 @@XMLTest:
7329 @@@QName: xp.xml10.endofline.ls.in.xmldecl.1.test
7330 @@@DEnt:
7331 @@@@test:value:
7332 <?xml$u2028version="1.0"?>
7333 <p/>
7334 @@@c:erred:
7335 <[[xp|fatal-xml11-end-of-line-in-xml-declaration]]> { (1, 6)..(2, 0); }
7336 @@@c:erred: <[[xp|wf-syntax-error]]> { }
7337 @@XMLTest:
7338 @@@QName: xp.xml11.endofline.ls.in.xmldecl.1.test
7339 @@@DEnt:
7340 @@@@test:value:
7341 <?xml$u2028version="1.1"?>
7342 (err)<p/>
7343 @@@c:erred:
7344 <[[xp|fatal-xml11-end-of-line-in-xml-declaration]]> { (1, 6)..(2, 0); }
7345 @@@c:erred: <[[xp|wf-syntax-error]]> { }
7346 @@XMLTest:
7347 @@@QName: xp.xml10.endofline.nl.in.xmldecl.2.test
7348 @@@DEnt:
7349 @@@@test:value:
7350 <?xml version="1.0"$u0085?>
7351 <p/>
7352 @@@c:erred:
7353 <[[xp|fatal-xml11-end-of-line-in-xml-declaration]]> { (1, 20)..(2, 0); }
7354 @@@c:erred: <[[xp|wf-syntax-error]]> { }
7355 @@XMLTest:
7356 @@@QName: xp.xml11.endofline.nl.in.xmldecl.2.test
7357 @@@DEnt:
7358 @@@@test:value:
7359 <?xml version="1.1"$u0085?>
7360 (err)<p/>
7361 @@@c:erred:
7362 <[[xp|fatal-xml11-end-of-line-in-xml-declaration]]> { (1, 20)..(2, 0); }
7363 @@@c:erred: <[[xp|wf-syntax-error]]> { }
7364 @@XMLTest:
7365 @@@QName: xp.xml10.endofline.crnl.in.xmldecl.2.test
7366 @@@DEnt:
7367 @@@@test:value:
7368 <?xml version="1.0"$u000D$u0085?>
7369 <p/>
7370 @@@c:erred:
7371 <[[xp|fatal-xml11-end-of-line-in-xml-declaration]]> { (1, 20)..(2, 0); }
7372 @@@c:erred: <[[xp|wf-syntax-error]]> { }
7373 @@XMLTest:
7374 @@@QName: xp.xml11.endofline.crnl.in.xmldecl.2.test
7375 @@@DEnt:
7376 @@@@test:value:
7377 <?xml version="1.1"$u000D$u0085?>
7378 (err)<p/>
7379 @@@c:erred:
7380 <[[xp|fatal-xml11-end-of-line-in-xml-declaration]]> { (1, 20)..(2, 0); }
7381 @@@c:erred: <[[xp|wf-syntax-error]]> { }
7382 @@XMLTest:
7383 @@@QName: xp.xml10.endofline.ls.in.xmldecl.2.test
7384 @@@DEnt:
7385 @@@@test:value:
7386 <?xml version="1.0"$u2028?>
7387 <p/>
7388 @@@c:erred:
7389 <[[xp|fatal-xml11-end-of-line-in-xml-declaration]]> { (1, 20)..(2, 0); }
7390 @@@c:erred: <[[xp|wf-syntax-error]]> { }
7391 @@XMLTest:
7392 @@@QName: xp.xml11.endofline.ls.in.xmldecl.2.test
7393 @@@DEnt:
7394 @@@@test:value:
7395 <?xml version="1.1"$u2028?>
7396 (err)<p/>
7397 @@@c:erred:
7398 <[[xp|fatal-xml11-end-of-line-in-xml-declaration]]> { (1, 20)..(2, 0); }
7399 @@@c:erred: <[[xp|wf-syntax-error]]> { }
7400 @@XMLTest:
7401 @@@QName: xp.xml10.endofline.nl.in.xmldecl.3.test
7402 @@@DEnt:
7403 @@@@test:value:
7404 <?xml $u0085version="1.0"?>
7405 <p/>
7406 @@@c:erred:
7407 <[[xp|fatal-xml11-end-of-line-in-xml-declaration]]> { (1, 7)..(2, 0); }
7408 @@@c:erred: <[[xp|wf-syntax-error]]> { }
7409 @@XMLTest:
7410 @@@QName: xp.xml11.endofline.nl.in.xmldecl.3.test
7411 @@@DEnt:
7412 @@@@test:value:
7413 <?xml $u0085version="1.1"?>
7414 (err)<p/>
7415 @@@c:erred:
7416 <[[xp|fatal-xml11-end-of-line-in-xml-declaration]]> { (1, 7)..(2, 0); }
7417 @@@c:erred: <[[xp|wf-syntax-error]]> { }
7418 @@XMLTest:
7419 @@@QName: xp.xml10.endofline.crnl.in.xmldecl.3.test
7420 @@@DEnt:
7421 @@@@test:value:
7422 <?xml $u000D$u0085version="1.0"?>
7423 <p/>
7424 @@@c:erred:
7425 <[[xp|fatal-xml11-end-of-line-in-xml-declaration]]> { (1, 7)..(2, 0); }
7426 @@@c:erred: <[[xp|wf-syntax-error]]> { }
7427 @@XMLTest:
7428 @@@QName: xp.xml11.endofline.crnl.in.xmldecl.3.test
7429 @@@DEnt:
7430 @@@@test:value:
7431 <?xml $u000D$u0085version="1.1"?>
7432 (err)<p/>
7433 @@@c:erred:
7434 <[[xp|fatal-xml11-end-of-line-in-xml-declaration]]> { (1, 7)..(2, 0); }
7435 @@@c:erred: <[[xp|wf-syntax-error]]> { }
7436 @@XMLTest:
7437 @@@QName: xp.xml10.endofline.ls.in.xmldecl.3.test
7438 @@@DEnt:
7439 @@@@test:value:
7440 <?xml $u2028version="1.0"?>
7441 <p/>
7442 @@@c:erred:
7443 <[[xp|fatal-xml11-end-of-line-in-xml-declaration]]> { (1, 7)..(2, 0); }
7444 @@@c:erred: <[[xp|wf-syntax-error]]> { }
7445 @@XMLTest:
7446 @@@QName: xp.xml11.endofline.ls.in.xmldecl.3.test
7447 @@@DEnt:
7448 @@@@test:value:
7449 <?xml $u2028version="1.1"?>
7450 (err)<p/>
7451 @@@c:erred:
7452 <[[xp|fatal-xml11-end-of-line-in-xml-declaration]]> { (1, 7)..(2, 0); }
7453 @@@c:erred: <[[xp|wf-syntax-error]]> { }
7454 @@XMLTest:
7455 @@@QName: xp.xml10implied.endofline.nl.in.pi.1.test
7456 @@@DEnt:
7457 @@@@test:value:
7458 <?xml-$u0085?>
7459 <p/>
7460 @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 7)..(2, 0); }
7461 @@XMLTest:
7462 @@@QName: xp.xml10.endofline.nl.in.pi.1.test
7463 @@@DEnt:
7464 @@@@test:value:
7465 <?xml version="1.0"?>
7466 <?xml-$u0085?>
7467 <p/>
7468 @@@c:erred: <[[xp|wf-syntax-error]]> { (2, 7)..(3, 0); }
7469 @@XMLTest:
7470 @@@QName: xp.xml11.endofline.nl.in.pi.1.test
7471 @@@DEnt:
7472 @@@@test:value:
7473 <?xml version="1.1"?>
7474 <?xml-$u0085?>
7475 <p/>
7476 @@@test:domTree:
7477 document {
7478 xml-version: '1.1';
7479 pi {
7480 node-name: 'xml-';
7481 node-value: '';
7482 }
7483 element { }
7484 }
7485 @@XMLTest:
7486 @@@QName: xp.xml10implied.endofline.crnl.in.pi.1.test
7487 @@@DEnt:
7488 @@@@test:value:
7489 <?xml-$u000D$u0085?>
7490 <p/>
7491 @@@test:domTree:
7492 document {
7493 xml-version: '1.0';
7494 pi {
7495 node-name: 'xml-';
7496 node-value: U+0085;
7497 }
7498 element { }
7499 }
7500 @@XMLTest:
7501 @@@QName: xp.xml10.endofline.crnl.in.pi.1.test
7502 @@@DEnt:
7503 @@@@test:value:
7504 <?xml version="1.0"?>
7505 <?xml-$u000D$u0085?>
7506 <p/>
7507 @@@test:domTree:
7508 document {
7509 xml-version: '1.0';
7510 pi {
7511 node-name: 'xml-';
7512 node-value: U+0085;
7513 }
7514 element { }
7515 }
7516 @@XMLTest:
7517 @@@QName: xp.xml11.endofline.crnl.in.pi.1.test
7518 @@@DEnt:
7519 @@@@test:value:
7520 <?xml version="1.1"?>
7521 <?xml-$u000D$u0085?>
7522 <p/>
7523 @@@test:domTree:
7524 document {
7525 xml-version: '1.1';
7526 pi {
7527 node-name: 'xml-';
7528 node-value: '';
7529 }
7530 element { }
7531 }
7532 @@XMLTest:
7533 @@@QName: xp.xml10implied.endofline.ls.in.pi.1.test
7534 @@@DEnt:
7535 @@@@test:value:
7536 <?xml-$u2028?>
7537 <p/>
7538 @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 7)..(2, 0); }
7539 @@XMLTest:
7540 @@@QName: xp.xml10.endofline.ls.in.pi.1.test
7541 @@@DEnt:
7542 @@@@test:value:
7543 <?xml version="1.0"?>
7544 <?xml-$u2028?>
7545 <p/>
7546 @@@c:erred: <[[xp|wf-syntax-error]]> { (2, 7)..(3, 0); }
7547 @@XMLTest:
7548 @@@QName: xp.xml11.endofline.ls.in.pi.1.test
7549 @@@DEnt:
7550 @@@@test:value:
7551 <?xml version="1.1"?>
7552 <?xml-$u2028?>
7553 <p/>
7554 @@@test:domTree:
7555 document {
7556 xml-version: '1.1';
7557 pi {
7558 node-name: 'xml-';
7559 node-value: '';
7560 }
7561 element { }
7562 }
7563
7564 @@XMLTest:
7565 @@@QName: xp.xml10.endofline.internal.1.test
7566 @@@DEnt:
7567 @@@@test:value:
7568 <?xml version="1.0"?>
7569 <!DOCTYPE a [
7570 <!ENTITY e "&#x000D; &#x000A; &#x0085; &#x000D;&#x000A; $
7571 &#x000D;&#x0085; &#x2028;">
7572 ]><a>&e;</a>
7573 @@@test:domTree:
7574 document {
7575 xml-version: '1.0';
7576 document-type {
7577 general-entity {
7578 node-name: 'e';
7579 text-content: U+000D ' ' U+000A ' ' U+0085 ' '
7580 U+000D U+000A ' ' U+000D U+0085 ' ' U+2028;
7581 }
7582 }
7583 element {
7584 text-content: U+000D ' ' U+000A ' ' U+0085 ' '
7585 U+000D U+000A ' ' U+000D U+0085 ' ' U+2028;
7586 }
7587 }
7588 @@XMLTest:
7589 @@@QName: xp.xml11.endofline.internal.1.test
7590 @@@DEnt:
7591 @@@@test:value:
7592 <?xml version="1.1"?>
7593 <!DOCTYPE a [
7594 <!ENTITY e "&#x000D; &#x000A; &#x0085; &#x000D;&#x000A; $
7595 &#x000D;&#x0085; &#x2028;">
7596 ]><a>&e;</a>
7597 @@@test:domTree:
7598 document {
7599 xml-version: '1.1';
7600 document-type {
7601 general-entity {
7602 node-name: 'e';
7603 text-content: U+000D ' ' U+000A ' ' U+0085 ' '
7604 U+000D U+000A ' ' U+000D U+0085 ' ' U+2028;
7605 }
7606 }
7607 element {
7608 text-content: U+000D ' ' U+000A ' ' U+0085 ' '
7609 U+000D U+000A ' ' U+000D U+0085 ' ' U+2028;
7610 }
7611 }
7612
7613 @@XMLTest:
7614 @@@QName: xp.noxmldecl.pi.pi.test
7615 @@@DEnt:
7616 @@@@test:value:
7617 <?noxml 1?><?noxml 2?><p/>
7618 @@@test:domTree:
7619 document {
7620 xml-version: '1.0';
7621 pi {
7622 node-name: 'noxml';
7623 node-value: '1';
7624 }
7625 pi {
7626 node-name: 'noxml';
7627 node-value: '2';
7628 }
7629 element { }
7630 }
7631 @@XMLTest:
7632 @@@QName: xp.noxmldecl.pi.pi.2.test
7633 @@@DEnt:
7634 @@@@test:value:
7635 <?xmlno 1?><?xmlno 2?><p/>
7636 @@@test:domTree:
7637 document {
7638 xml-version: '1.0';
7639 pi {
7640 node-name: 'xmlno';
7641 node-value: '1';
7642 }
7643 pi {
7644 node-name: 'xmlno';
7645 node-value: '2';
7646 }
7647 element { }
7648 }
7649 @@XMLTest:
7650 @@@QName: xp.noxmldecl.pi.pi.3.test
7651 @@@DEnt:
7652 @@@@test:value:
7653 <?xmln 1?><?xmln 2?><p/>
7654 @@@test:domTree:
7655 document {
7656 xml-version: '1.0';
7657 pi {
7658 node-name: 'xmln';
7659 node-value: '1';
7660 }
7661 pi {
7662 node-name: 'xmln';
7663 node-value: '2';
7664 }
7665 element { }
7666 }
7667 @@XMLTest:
7668 @@@QName: xp.noxml.s.nl.test
7669 @@@DEnt:
7670 @@@@test:value:
7671 $u0085<p/>
7672 @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 1)..(2, 0); }
7673 @@XMLTest:
7674 @@@QName: xp.noxml.s.crnl.test
7675 @@@DEnt:
7676 @@@@test:value:
7677 $u000D$u0085<p/>
7678 @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 1)..(2, 0); }
7679 @@XMLTest:
7680 @@@QName: xp.noxml.s.ls.test
7681 @@@DEnt:
7682 @@@@test:value:
7683 $u2028<p/>
7684 @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 1)..(2, 0); }
7685 @@XMLTest:
7686 @@@QName: xp.xml10.decl.s.nl.test
7687 @@@DEnt:
7688 @@@@test:value:
7689 <?xml version="1.0"?>$u0085<p/>
7690 @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 22)..(2, 0); }
7691 @@XMLTest:
7692 @@@QName: xp.xml10.decl.s.crnl.test
7693 @@@DEnt:
7694 @@@@test:value:
7695 <?xml version="1.0"?>$u000D$u0085<p/>
7696 @@@c:erred: <[[xp|wf-syntax-error]]> { (2, 0)..(3, 0); }
7697 @@XMLTest:
7698 @@@QName: xp.xml10.decl.s.ls.test
7699 @@@DEnt:
7700 @@@@test:value:
7701 <?xml version="1.0"?>$u2028<p/>
7702 @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 22)..(2, 0); }
7703 @@XMLTest:
7704 @@@QName: xp.xml11.decl.s.nl.test
7705 @@@DEnt:
7706 @@@@test:value:
7707 <?xml version="1.1"?>$u0085<p/>
7708 @@@test:domTree:
7709 document {
7710 xml-version: '1.1';
7711 element { }
7712 }
7713 @@XMLTest:
7714 @@@QName: xp.xml11.decl.s.crnl.test
7715 @@@DEnt:
7716 @@@@test:value:
7717 <?xml version="1.1"?>$u000D$u0085<p/>
7718 @@@test:domTree:
7719 document {
7720 xml-version: '1.1';
7721 element { }
7722 }
7723 @@XMLTest:
7724 @@@QName: xp.xml11.decl.s.ls.test
7725 @@@DEnt:
7726 @@@@test:value:
7727 <?xml version="1.1"?>$u2028<p/>
7728 @@@test:domTree:
7729 document {
7730 xml-version: '1.1';
7731 element { }
7732 }
7733
7734 @@XMLTest:
7735 @@@QName: xp.element.type.match.1.test
7736 @@@DEnt:
7737 @@@@test:value:
7738 <p></pa>(err)
7739 @@@c:erred: <[[xp|wf-element-type-match]]> { (1, 4)..(1, 8); }
7740 @@@c:erred: <[[xp|wf-syntax-error]]> { }
7741 @@XMLTest:
7742 @@@QName: xp.element.type.match.2.test
7743 @@@DEnt:
7744 @@@@test:value:
7745 <p><pa></pa></pa>(err)
7746 @@@c:erred: <[[xp|wf-element-type-match]]> { (1, 13)..(1, 17); }
7747 @@@c:erred: <[[xp|wf-syntax-error]]> { }
7748 @@XMLTest:
7749 @@@QName: xp.element.type.match.3.test
7750 @@@DEnt:
7751 @@@@test:value:
7752 <p><pa></p></p>(err)
7753 @@@c:erred: <[[xp|wf-element-type-match]]> { (1, 8)..(1, 11); }
7754 @@@c:erred: <[[xp|wf-syntax-error]]> { }
7755 @@XMLTest:
7756 @@@QName: xp.element.type.match.4.test
7757 @@@DEnt:
7758 @@@@test:value:
7759 <a:p xmlns:a="about:1"></p>(err)
7760 @@@c:erred: <[[xp|wf-element-type-match]]> { (1, 24)..(1, 27); }
7761 @@@c:erred: <[[xp|wf-syntax-error]]> { }
7762 @@XMLTest:
7763 @@@QName: xp.element.type.match.5.test
7764 @@@DEnt:
7765 @@@@test:value:
7766 <a:p xmlns:a="about:1" xmlns:b="about:1"></b:p>(err)
7767 @@@c:erred: <[[xp|wf-element-type-match]]> { (1, 42)..(1, 47); }
7768 @@@c:erred: <[[xp|wf-syntax-error]]> { }
7769
7770 @@XMLTest:
7771 @@@QName: xp.stag.stago.name.etago.test
7772 @@@DEnt:
7773 @@@@test:value:
7774 <a</a>
7775 @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 3); }
7776 @@XMLTest:
7777 @@@QName: xp.stag.stago.name.s.etago.test
7778 @@@DEnt:
7779 @@@@test:value:
7780 <a </a>
7781 @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 4); }
7782 @@XMLTest:
7783 @@@QName: xp.stag.stago.name.s.attr.etago.test
7784 @@@DEnt:
7785 @@@@test:value:
7786 <a a="b"</a>
7787 @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 9); }
7788 @@XMLTest:
7789 @@@QName: xp.stag.stago.name.s.attr.s.attr.etago.test
7790 @@@DEnt:
7791 @@@@test:value:
7792 <a a="b" c="d"</a>
7793 @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 15); }
7794 @@XMLTest:
7795 @@@QName: xp.stag.stago.name.s.attr.s.etago.test
7796 @@@DEnt:
7797 @@@@test:value:
7798 <a a="b" </a>
7799 @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 10); }
7800 @@XMLTest:
7801 @@@QName: xp.stag.etag.1.test
7802 @@@DEnt:
7803 @@@@test:value:
7804 <root><a></a></root>
7805 @@@test:domTree:
7806 document {
7807 element {
7808 element {
7809 node-name: 'a';
7810 }
7811 }
7812 }
7813 @@XMLTest:
7814 @@@QName: xp.stag.etag.2.test
7815 @@@DEnt:
7816 @@@@test:value:
7817 <root><ab></ab></root>
7818 @@@test:domTree:
7819 document {
7820 element {
7821 element {
7822 node-name: 'ab';
7823 }
7824 }
7825 }
7826 @@XMLTest:
7827 @@@QName: xp.stag.etag.s.1.test
7828 @@@DEnt:
7829 @@@@test:value:
7830 <root><a ></a ></root>
7831 @@@test:domTree:
7832 document {
7833 element {
7834 element {
7835 node-name: 'a';
7836 }
7837 }
7838 }
7839 @@XMLTest:
7840 @@@QName: xp.etag.1.test
7841 @@@DEnt:
7842 @@@@test:value:
7843 <root><a/></root>
7844 @@@test:domTree:
7845 document {
7846 element {
7847 element {
7848 node-name: 'a';
7849 }
7850 }
7851 }
7852 @@XMLTest:
7853 @@@QName: xp.etag.2.test
7854 @@@DEnt:
7855 @@@@test:value:
7856 <root><a /></root>
7857 @@@test:domTree:
7858 document {
7859 element {
7860 element {
7861 node-name: 'a';
7862 }
7863 }
7864 }
7865 @@XMLTest:
7866 @@@QName: xp.stag.etag.attr.1.test
7867 @@@DEnt:
7868 @@@@test:value:
7869 <root><a at="v"></a></root>
7870 @@@test:domTree:
7871 document {
7872 element {
7873 element {
7874 node-name: 'a';
7875 attribute {
7876 node-name: 'at';
7877 value: 'v';
7878 }
7879 }
7880 }
7881 }
7882 @@XMLTest:
7883 @@@QName: xp.stag.etag.attr.2.test
7884 @@@DEnt:
7885 @@@@test:value:
7886 <root><a at="v" ></a></root>
7887 @@@test:domTree:
7888 document {
7889 element {
7890 element {
7891 node-name: 'a';
7892 attribute {
7893 node-name: 'at';
7894 value: 'v';
7895 }
7896 }
7897 }
7898 }
7899 @@XMLTest:
7900 @@@QName: xp.stag.etag.attr.3.test
7901 @@@DEnt:
7902 @@@@test:value:
7903 <root><a at ="v"></a></root>
7904 @@@test:domTree:
7905 document {
7906 element {
7907 element {
7908 node-name: 'a';
7909 attribute {
7910 node-name: 'at';
7911 value: 'v';
7912 }
7913 }
7914 }
7915 }
7916 @@XMLTest:
7917 @@@QName: xp.stag.etag.attr.4.test
7918 @@@DEnt:
7919 @@@@test:value:
7920 <root><a at= "v"></a></root>
7921 @@@test:domTree:
7922 document {
7923 element {
7924 element {
7925 node-name: 'a';
7926 attribute {
7927 node-name: 'at';
7928 value: 'v';
7929 }
7930 }
7931 }
7932 }
7933 @@XMLTest:
7934 @@@QName: xp.stag.etag.attr.5.test
7935 @@@DEnt:
7936 @@@@test:value:
7937 <root><a at='v'></a></root>
7938 @@@test:domTree:
7939 document {
7940 element {
7941 element {
7942 node-name: 'a';
7943 attribute {
7944 node-name: 'at';
7945 value: 'v';
7946 }
7947 }
7948 }
7949 }
7950 @@XMLTest:
7951 @@@QName: xp.stag.etag.attr.6.test
7952 @@@DEnt:
7953 @@@@test:value:
7954 <root><a at= 'v' ></a></root>
7955 @@@test:domTree:
7956 document {
7957 element {
7958 element {
7959 node-name: 'a';
7960 attribute {
7961 node-name: 'at';
7962 value: 'v';
7963 }
7964 }
7965 }
7966 }
7967 @@XMLTest:
7968 @@@QName: xp.stag.etag.attr.attr.1.test
7969 @@@DEnt:
7970 @@@@test:value:
7971 <root><a at="v" tr="w"></a></root>
7972 @@@test:domTree:
7973 document {
7974 element {
7975 element {
7976 node-name: 'a';
7977 attribute {
7978 node-name: 'at';
7979 value: 'v';
7980 }
7981 attribute {
7982 node-name: 'tr';
7983 value: 'w';
7984 }
7985 }
7986 }
7987 }
7988 @@XMLTest:
7989 @@@QName: xp.stag.etag.attr.attr.2.test
7990 @@@DEnt:
7991 @@@@test:value:
7992 <root><a tr="w" at="v"></a></root>
7993 @@@test:domTree:
7994 document {
7995 element {
7996 element {
7997 node-name: 'a';
7998 attribute {
7999 node-name: 'at';
8000 value: 'v';
8001 }
8002 attribute {
8003 node-name: 'tr';
8004 value: 'w';
8005 }
8006 }
8007 }
8008 }
8009 @@XMLTest:
8010 @@@QName: xp.stag.etag.attr.no.s.attr.test
8011 @@@DEnt:
8012 @@@@test:value:
8013 <root><a at="v"tr="w"></a></root>
8014 @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 16)..(1, 17); }
8015 @@XMLTest:
8016 @@@QName: xp.etag.attr.1.test
8017 @@@DEnt:
8018 @@@@test:value:
8019 <root><a at="v" tr="w"></a b="c"></root>
8020 @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 28); }
8021 @@XMLTest:
8022 @@@QName: xp.etag.no.etagc.1.test
8023 @@@DEnt:
8024 @@@@test:value:
8025 <root><a at="v" tr="w"></a</root>
8026 @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 27)..(1, 28); }
8027 @@XMLTest:
8028 @@@QName: xp.etag.no.etagc.2.test
8029 @@@DEnt:
8030 @@@@test:value:
8031 <root><a at="v" tr="w"></a </root>
8032 @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 29)..(1, 30); }
8033 @@XMLTest:
8034 @@@QName: xp.mtag.attr.1.test
8035 @@@DEnt:
8036 @@@@test:value:
8037 <root><a b="c"/></root>
8038 @@@test:domTree:
8039 document {
8040 element {
8041 element {
8042 node-name: 'a';
8043 attribute {
8044 node-name: 'b';
8045 value: 'c';
8046 }
8047 }
8048 }
8049 }
8050 @@XMLTest:
8051 @@@QName: xp.mtag.attr.2.test
8052 @@@DEnt:
8053 @@@@test:value:
8054 <root><a b="c" /></root>
8055 @@@test:domTree:
8056 document {
8057 element {
8058 element {
8059 node-name: 'a';
8060 attribute {
8061 node-name: 'b';
8062 value: 'c';
8063 }
8064 }
8065 }
8066 }
8067 @@XMLTest:
8068 @@@QName: xp.mtag.attr.3.test
8069 @@@DEnt:
8070 @@@@test:value:
8071 <root><a b='c'/></root>
8072 @@@test:domTree:
8073 document {
8074 element {
8075 element {
8076 node-name: 'a';
8077 attribute {
8078 node-name: 'b';
8079 value: 'c';
8080 }
8081 }
8082 }
8083 }
8084 @@XMLTest:
8085 @@@QName: xp.mtag.attr.4.test
8086 @@@DEnt:
8087 @@@@test:value:
8088 <root><a b="c" d="e"/></root>
8089 @@@test:domTree:
8090 document {
8091 element {
8092 element {
8093 node-name: 'a';
8094 attribute {
8095 node-name: 'b';
8096 value: 'c';
8097 }
8098 attribute {
8099 node-name: 'd';
8100 value: 'e';
8101 }
8102 }
8103 }
8104 }
8105
8106 @@XMLTest:
8107 @@@QName: xp.attvalue.lt.1.test
8108 @@@DEnt:
8109 @@@@test:value:
8110 <a b="aa<dd"/>
8111 @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 9); }
8112 @@XMLTest:
8113 @@@QName: xp.attvalue.lt.2.test
8114 @@@DEnt:
8115 @@@@test:value:
8116 <a b='aa<dd'/>
8117 @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 9); }
8118 @@XMLTest:
8119 @@@QName: xp.attvalue.amp.1.test
8120 @@@DEnt:
8121 @@@@test:value:
8122 <a b="aa& dd"/>
8123 @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 9)..(1, 12); }
8124 @@XMLTest:
8125 @@@QName: xp.attvalue.amp.2.test
8126 @@@DEnt:
8127 @@@@test:value:
8128 <a b='aa& dd'/>
8129 @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 9)..(1, 12); }
8130 @@XMLTest:
8131 @@@QName: xp.attvalue.amp.3.test
8132 @@@DEnt:
8133 @@@@test:value:
8134 <a b="aa&# dd"/>
8135 @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 9)..(1, 13); }
8136 @@XMLTest:
8137 @@@QName: xp.attvalue.amp.4.test
8138 @@@DEnt:
8139 @@@@test:value:
8140 <a b="aa&#x dd"/>
8141 @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 9)..(1, 14); }
8142
8143 @@XMLTest:
8144 @@@QName: xp.unique.att.spec.1.test
8145 @@@DEnt:
8146 @@@@test:value:
8147 <a b="c" b="d"/>
8148 @@@c:erred: <[[xp|wf-unique-att-spec]]> { (1, 4)..(1, 14); }
8149 @@XMLTest:
8150 @@@QName: xp.unique.att.spec.2.test
8151 @@@DEnt:
8152 @@@@test:value:
8153 <a d:b="c" d:b="d" xmlns:d="about:2"/>
8154 @@@c:erred: <[[xp|wf-unique-att-spec]]> { (1, 4)..(1, 18); }
8155
8156 @@XMLTest:
8157 @@@QName: xp.no.external.entity.references.1.test
8158 @@@DEnt:
8159 @@@@test:value:
8160 <!DOCTYPE a [
8161 <!ENTITY ent SYSTEM "something">
8162 ]>
8163 <a b="c&ent;"/>
8164 @@@c:erred: <[[xp|wf-no-external-entity-references]]> { (4, 8)..(4, 12); }
8165 @@XMLTest:
8166 @@@QName: xp.no.external.entity.references.2.test
8167 @@@DEnt:
8168 @@@@test:value:
8169 <!DOCTYPE a [
8170 <!NOTATION n SYSTEM "notation">
8171 <!ENTITY ent SYSTEM "something" NDATA n>
8172 ]>
8173 <a b="c&ent;"/>
8174 @@@c:erred: <[[xp|wf-no-external-entity-references]]> { (5, 8)..(5, 12); }
8175 @@XMLTest:
8176 @@@QName: xp.no.external.entity.references.3.test
8177 @@@DEnt:
8178 @@@@test:value:
8179 <!DOCTYPE a [
8180 <!ENTITY ent SYSTEM "something">
8181 <!ENTITY ent2 "ddd&ent;">
8182 ]>
8183 <a b="c&ent2;"/>
8184 @@@c:erred: <[[xp|wf-no-external-entity-references]]> { (1, 4)..(1, 8); }
8185 @@XMLTest:
8186 @@@QName: xp.no.external.entity.references.4.test
8187 @@@DEnt:
8188 @@@@test:value:
8189 <!DOCTYPE a [
8190 <!NOTATION n SYSTEM "notation">
8191 <!ENTITY ent SYSTEM "something" NDATA n>
8192 <!ENTITY ent2 "ddd&ent;">
8193 ]>
8194 <a b="c&ent2;"/>
8195 @@@c:erred: <[[xp|wf-no-external-entity-references]]> { (1, 4)..(1, 8); }
8196 @@@c:erred: <[[xp|wf-parsed-entity]]> { }
8197 @@XMLTest:
8198 @@@QName: xp.no.lt.in.attr.value.1.test
8199 @@@DEnt:
8200 @@@@test:value:
8201 <!DOCTYPE a [
8202 <!ENTITY ent "aa<bb">
8203 ]>
8204 <a b="c&ent;"/>
8205 @@@c:erred: <[[xp|wf-no-lt-in-attribute-values]]> { (1, 3); }
8206 @@@c:erred:
8207 @@@@@: <[[xp|wf-syntax-error]]> { (1, 3)..(1, 6); }
8208 @@@@enImplNote: When entity node is created.
8209 @@XMLTest:
8210 @@@QName: xp.no.lt.in.attr.value.2.test
8211 @@@DEnt:
8212 @@@@test:value:
8213 <!DOCTYPE a [
8214 <!ENTITY ent "aa<bb">
8215 <!ENTITY ent2 "ccc&ent;">
8216 ]>
8217 <a b="c&ent2;"/>
8218 @@@c:erred: <[[xp|wf-no-lt-in-attribute-values]]> { (1, 3); }
8219 @@@c:erred:
8220 @@@@@: <[[xp|wf-syntax-error]]> { (1, 3)..(1, 6); }
8221 @@@@enImplNote: When entity node is created.
8222 @@XMLTest:
8223 @@@QName: xp.no.lt.in.attr.value.3.test
8224 @@@DEnt:
8225 @@@@test:value:
8226 <!DOCTYPE a [
8227 <!ENTITY ent "aa&#x3C;bb">
8228 ]>
8229 <a b="c&ent;"/>
8230 @@@c:erred: <[[xp|wf-no-lt-in-attribute-values]]> { (1, 3); }
8231 @@@c:erred:
8232 @@@@@: <[[xp|wf-syntax-error]]> { (1, 3)..(1, 6); }
8233 @@@@enImplNote: When entity node is created.
8234 @@XMLTest:
8235 @@@QName: xp.no.lt.in.attr.value.4.test
8236 @@@DEnt:
8237 @@@@test:value:
8238 <!DOCTYPE a [
8239 <!ENTITY ent "aa&#x3C;bb">
8240 <!ENTITY ent2 "ccc&ent;">
8241 ]>
8242 <a b="c&ent2;"/>
8243 @@@c:erred: <[[xp|wf-no-lt-in-attribute-values]]> { (1, 3); }
8244 @@@c:erred:
8245 @@@@@: <[[xp|wf-syntax-error]]> { (1, 3)..(1, 6); }
8246 @@@@enImplNote: When entity node is created.
8247 @@XMLTest:
8248 @@@QName: xp.ger.lt.in.attr.value.1.test
8249 @@@DEnt:
8250 @@@@test:value:
8251 <!DOCTYPE a [
8252 <!ENTITY ent "aa&lt;bb">
8253 ]>
8254 <a b="c&ent;"/>
8255 @@@test:domTree:
8256 document {
8257 document-type {
8258 general-entity {
8259 node-name: 'ent';
8260 text-content: 'aa<bb';
8261 }
8262 }
8263 element {
8264 attribute {
8265 node-name: 'b';
8266 text { data: 'c'; }
8267 general-entity-reference {
8268 is-expanded: true;
8269 node-name: 'ent';
8270 text-content: 'aa<bb';
8271 }
8272 }
8273 }
8274 }
8275 @@XMLTest:
8276 @@@QName: xp.ger.lt.in.attr.value.2.test
8277 @@@DEnt:
8278 @@@@test:value:
8279 <!DOCTYPE a [
8280 <!ENTITY ent "aa&lt;bb">
8281 <!ENTITY ent2 "ccc&ent;">
8282 ]>
8283 <a b="c&ent2;"/>
8284 @@@test:domTree:
8285 document {
8286 document-type {
8287 general-entity {
8288 node-name: 'ent';
8289 text-content: 'aa<bb';
8290 }
8291 general-entity {
8292 node-name: 'ent2';
8293 text { data: 'ccc'; }
8294 general-entity-reference {
8295 node-name: 'ent';
8296 text-content: 'aa<bb';
8297 is-expanded: true;
8298 }
8299 }
8300 }
8301 element {
8302 attribute {
8303 node-name: 'b';
8304 text { data: 'c'; }
8305 general-entity-reference {
8306 node-name: 'ent2';
8307 text { data: 'ccc'; }
8308 general-entity-reference {
8309 node-name: 'ent';
8310 text-content: 'aa<bb';
8311 is-expanded: true;
8312 }
8313 is-expanded: true;
8314 }
8315 }
8316 }
8317 }
8318
8319 @@XMLTest:
8320 @@@QName: xp.doctype.intsubset.pi.test
8321 @@@DEnt:
8322 @@@@test:value:
8323 <!DOCTYPE a [
8324 <?pi data ?>
8325 ]>
8326 <a></a>
8327 @@@test:domTree:
8328 document {
8329 xml-version: '1.0';
8330 xml-encoding: null;
8331 xml-standalone: false;
8332 document-type {
8333 node-name: 'a';
8334 pi {
8335 target: 'pi';
8336 data: 'data ';
8337 }
8338 }
8339 element {
8340 namespace-uri: null;
8341 prefix: null;
8342 local-name: 'a';
8343 text-content: '';
8344 }
8345 }
8346 @@@enImplNote:
8347 A DOM PI node in doctype node is a manakai extension.
8348
8349
8350 @@XMLTest:
8351 @@@QName: xp.doctype.intsubset.entity.general.internal.test
8352 @@@DEnt:
8353 @@@@test:value:
8354 <!DOCTYPE a [
8355 <!ENTITY entity "entity value">
8356 ]>
8357 <a></a>
8358 @@@test:domTree:
8359 document {
8360 xml-version: '1.0';
8361 xml-encoding: null;
8362 xml-standalone: false;
8363 document-type {
8364 node-name: 'a';
8365 general-entity {
8366 node-name: 'entity';
8367 text-content: 'entity value';
8368 has-replacement-tree: true;
8369 }
8370 }
8371 element {
8372 namespace-uri: null;
8373 prefix: null;
8374 local-name: 'a';
8375 text-content: '';
8376 }
8377 }
8378 @@XMLTest:
8379 @@@QName: xp.doctype.intsubset.entity.parameter.internal.test
8380 @@@DEnt:
8381 @@@@test:value:
8382 <!DOCTYPE a [
8383 <!ENTITY % entity "entity value">
8384 ]>
8385 <a></a>
8386 @@@test:domTree:
8387 document {
8388 xml-version: '1.0';
8389 xml-encoding: null;
8390 xml-standalone: false;
8391 document-type {
8392 node-name: 'a';
8393 }
8394 element {
8395 namespace-uri: null;
8396 prefix: null;
8397 local-name: 'a';
8398 text-content: '';
8399 }
8400 }
8401
8402 @@XMLTest:
8403 @@@QName: xp.doctype.internal.entity.root.element.text.only.test
8404 @@@DEnt:
8405 @@@@test:value:
8406 <!DOCTYPE a [
8407 <!ENTITY entity "entity value">
8408 ]>
8409 <a>&entity;</a>
8410 @@@test:domTree:
8411 document {
8412 xml-version: '1.0';
8413 xml-encoding: null;
8414 xml-standalone: false;
8415 document-type {
8416 node-name: 'a';
8417 general-entity {
8418 node-name: 'entity';
8419 text-content: 'entity value';
8420 has-replacement-tree: true;
8421 }
8422 }
8423 element {
8424 namespace-uri: null;
8425 prefix: null;
8426 local-name: 'a';
8427 general-entity-reference {
8428 node-name: 'entity';
8429 text {
8430 data: 'entity value';
8431 }
8432 is-expanded: true;
8433 }
8434 }
8435 }
8436 @@XMLTest:
8437 @@@QName: xp.doctype.internal.entity.root.element.text.mult.test
8438 @@@DEnt:
8439 @@@@test:value:
8440 <!DOCTYPE a [
8441 <!ENTITY entity "entity value">
8442 ]>
8443 <a>&entity; and &entity;</a>
8444 @@@test:domTree:
8445 document {
8446 xml-version: '1.0';
8447 xml-encoding: null;
8448 xml-standalone: false;
8449 document-type {
8450 node-name: 'a';
8451 general-entity {
8452 node-name: 'entity';
8453 text-content: 'entity value';
8454 has-replacement-tree: true;
8455 }
8456 }
8457 element {
8458 namespace-uri: null;
8459 prefix: null;
8460 local-name: 'a';
8461 general-entity-reference {
8462 node-name: 'entity';
8463 text {
8464 data: 'entity value';
8465 }
8466 is-expanded: true;
8467 }
8468 text { data: ' and '; }
8469 general-entity-reference {
8470 node-name: 'entity';
8471 text {
8472 data: 'entity value';
8473 }
8474 is-expanded: true;
8475 }
8476 }
8477 }
8478 @@XMLTest:
8479 @@@QName: xp.doctype.internal.entity.root.element.text.element.test
8480 @@@DEnt:
8481 @@@@test:value:
8482 <!DOCTYPE a [
8483 <!ENTITY entity "entity <p>value</p> with <e>element</e> ">
8484 ]>
8485 <a>&entity;</a>
8486 @@@test:domTree:
8487 document {
8488 xml-version: '1.0';
8489 xml-encoding: null;
8490 xml-standalone: false;
8491 document-type {
8492 node-name: 'a';
8493 general-entity {
8494 node-name: 'entity';
8495 has-replacement-tree: true;
8496 text { data: 'entity '; }
8497 element {
8498 node-name: 'p';
8499 text-content: 'value';
8500 }
8501 text { data: ' with '; }
8502 element {
8503 node-name: 'e';
8504 text-content: 'element';
8505 }
8506 text { data: ' '; }
8507 }
8508 }
8509 element {
8510 namespace-uri: null;
8511 prefix: null;
8512 local-name: 'a';
8513 general-entity-reference {
8514 node-name: 'entity';
8515 is-expanded: true;
8516 text {
8517 data: 'entity ';
8518 }
8519 element {
8520 namespace-uri: null;
8521 prefix: null;
8522 local-name: 'p';
8523 text {
8524 data: 'value';
8525 }
8526 }
8527 text {
8528 data: ' with ';
8529 }
8530 element {
8531 namespace-uri: null;
8532 prefix: null;
8533 local-name: 'e';
8534 text {
8535 data: 'element';
8536 }
8537 }
8538 text {
8539 data: ' ';
8540 }
8541 }
8542 }
8543 }
8544 @@XMLTest:
8545 @@@QName: xp.doctype.internal.entity.root.element.text.in.ent.test
8546 @@@DEnt:
8547 @@@@test:value:
8548 <!DOCTYPE a [
8549 <!ENTITY entity1 "entity value">
8550 <!ENTITY entity2 "e&entity1;n">
8551 ]>
8552 <a>&entity2;</a>
8553 @@@test:domTree:
8554 document {
8555 xml-version: '1.0';
8556 xml-encoding: null;
8557 xml-standalone: false;
8558 document-type {
8559 node-name: 'a';
8560 general-entity {
8561 node-name: 'entity1';
8562 text-content: 'entity value';
8563 }
8564 general-entity {
8565 node-name: 'entity2';
8566 text { data: 'e'; }
8567 general-entity-reference {
8568 node-name: 'entity1';
8569 text-content: 'entity value';
8570 is-expanded: true;
8571 }
8572 text { data: 'n'; }
8573 }
8574 }
8575 element {
8576 namespace-uri: null;
8577 prefix: null;
8578 local-name: 'a';
8579 general-entity-reference {
8580 node-name: 'entity2';
8581 text { data: 'e'; }
8582 is-expanded: true;
8583 general-entity-reference {
8584 node-name: 'entity1';
8585 text {
8586 data: 'entity value';
8587 }
8588 is-expanded: true;
8589 }
8590 text { data: 'n'; }
8591 }
8592 }
8593 }
8594
8595 @@XMLTest:
8596 @@@QName: xp.doctype.entity.value.charref.test
8597 @@@DEnt:
8598 @@@@test:value:
8599 <!DOCTYPE a [
8600 <!ENTITY entity1 "entity &#x21;value&#35;">
8601 <!ENTITY entity2 '&#x21;value&#35;'>
8602 ]>
8603 <a></a>
8604 @@@test:domTree:
8605 document {
8606 document-type {
8607 general-entity {
8608 node-name: 'entity1';
8609 text-content: 'entity !value#';
8610 has-replacement-tree: true;
8611 }
8612 general-entity {
8613 node-name: 'entity2';
8614 text-content: '!value#';
8615 has-replacement-tree: true;
8616 }
8617 }
8618 element { }
8619 }
8620
8621 @@XMLTest:
8622 @@@QName: xp.predefined.in.content.test
8623 @@@DEnt:
8624 @@@@test:value:
8625 <a>_&lt;_&gt;_&quot;_&apos;_&amp;_</a>
8626 @@@test:domTree:
8627 document {
8628 element {
8629 text-content: '_<_>_"_' U+0027 '_&_';
8630 }
8631 }
8632 @@XMLTest:
8633 @@@QName: xp.predefined.in.attr.test
8634 @@@DEnt:
8635 @@@@test:value:
8636 <a at="_&lt;_&gt;_&quot;_&apos;_&amp;_"></a>
8637 @@@test:domTree:
8638 document {
8639 element {
8640 attribute {
8641 node-name: 'at';
8642 text-content: '_<_>_"_' U+0027 '_&_';
8643 }
8644 }
8645 }
8646 @@XMLTest:
8647 @@@QName: xp.predefined.in.content.in.entity.test
8648 @@@DEnt:
8649 @@@@test:value:
8650 <!DOCTYPE a [
8651 <!ENTITY ent "_&lt;_&gt;_&quot;_&apos;_&amp;_">
8652 ]>
8653 <a>&ent;</a>
8654 @@@test:domTree:
8655 document {
8656 document-type {
8657 general-entity {
8658 node-name: 'ent';
8659 text-content: '_<_>_"_' U+0027 '_&_';
8660 }
8661 }
8662 element {
8663 text-content: '_<_>_"_' U+0027 '_&_';
8664 }
8665 }
8666 @@XMLTest:
8667 @@@QName: xp.predefined.decl.ignore.test
8668 @@@DEnt:
8669 @@@@test:value:
8670 <!DOCTYPE a [
8671 <!ENTITY lt "&#x26;#x3C;">
8672 <!ENTITY gt "&#x3E;">
8673 <!ENTITY amp "&#x26;#x26;">
8674 <!ENTITY quot "&#x22;">
8675 <!ENTITY apos "&#x27;">
8676 <!ENTITY other "other">
8677 ]>
8678 <a>_&lt;_&gt;_&quot;_&apos;_&amp;_&other;_</a>
8679 @@@test:domTree:
8680 document {
8681 document-type {
8682 general-entity {
8683 node-name: 'other';
8684 text-content: 'other';
8685 }
8686 }
8687 element {
8688 text-content: '_<_>_"_' U+0027 '_&_other_';
8689 }
8690 }
8691
8692 @@XMLTest:
8693 @@@QName: xp.doctype.internal.attr.empty.test
8694 @@@DEnt:
8695 @@@@test:value:
8696 <!DOCTYPE a [
8697 <!ATTLIST a>
8698 ]>
8699 <a></a>
8700 @@@test:domTree:
8701 document {
8702 xml-version: '1.0';
8703 xml-encoding: null;
8704 xml-standalone: false;
8705 document-type {
8706 node-name: 'a';
8707 element-type-definition {
8708 node-name: 'a';
8709 }
8710 }
8711 element {
8712 namespace-uri: null;
8713 local-name: 'a';
8714 }
8715 }
8716 @@XMLTest:
8717 @@@QName: xp.doctype.internal.attr.cdata.implied.test
8718 @@@DEnt:
8719 @@@@test:value:
8720 <!DOCTYPE a [
8721 <!ATTLIST a
8722 at CDATA #IMPLIED
8723 >
8724 ]>
8725 <a></a>
8726 @@@test:domTree:
8727 document {
8728 xml-version: '1.0';
8729 xml-encoding: null;
8730 xml-standalone: false;
8731 document-type {
8732 node-name: 'a';
8733 element-type-definition {
8734 node-name: 'a';
8735 attribute-definition {
8736 node-name: 'at';
8737 declared-type: const (CDATA_ATTR);
8738 allowed-tokens: DOMStringList ();
8739 default-type: const (IMPLIED_DEFAULT);
8740 text-content: '';
8741 }
8742 }
8743 }
8744 element {
8745 namespace-uri: null;
8746 local-name: 'a';
8747 }
8748 }
8749 @@XMLTest:
8750 @@@QName: xp.doctype.internal.attr.types.implied.test
8751 @@@DEnt:
8752 @@@@test:value:
8753 <!DOCTYPE a [
8754 <!ATTLIST a
8755 at1 ID #IMPLIED
8756 at2 IDREF #IMPLIED
8757 at3 IDREFS #IMPLIED
8758 at4 ENTITY #IMPLIED
8759 at5 ENTITIES #IMPLIED
8760 at6 NMTOKEN #IMPLIED
8761 at7 NMTOKENS #IMPLIED
8762 at8 NOTATION (n1 | n2|n3) #IMPLIED
8763 at9 (e1| e2| e3 ) #IMPLIED
8764 >
8765 ]>
8766 <a></a>
8767 @@@test:domTree:
8768 document {
8769 xml-version: '1.0';
8770 xml-encoding: null;
8771 xml-standalone: false;
8772 document-type {
8773 node-name: 'a';
8774 element-type-definition {
8775 node-name: 'a';
8776 attribute-definition {
8777 node-name: 'at1';
8778 declared-type: const (ID_ATTR);
8779 allowed-tokens: DOMStringList ();
8780 default-type: const (IMPLIED_DEFAULT);
8781 text-content: '';
8782 }
8783 attribute-definition {
8784 node-name: 'at2';
8785 declared-type: const (IDREF_ATTR);
8786 allowed-tokens: DOMStringList ();
8787 default-type: const (IMPLIED_DEFAULT);
8788 text-content: '';
8789 }
8790 attribute-definition {
8791 node-name: 'at3';
8792 declared-type: const (IDREFS_ATTR);
8793 allowed-tokens: DOMStringList ();
8794 default-type: const (IMPLIED_DEFAULT);
8795 text-content: '';
8796 }
8797 attribute-definition {
8798 node-name: 'at4';
8799 declared-type: const (ENTITY_ATTR);
8800 allowed-tokens: DOMStringList ();
8801 default-type: const (IMPLIED_DEFAULT);
8802 text-content: '';
8803 }
8804 attribute-definition {
8805 node-name: 'at5';
8806 declared-type: const (ENTITIES_ATTR);
8807 allowed-tokens: DOMStringList ();
8808 default-type: const (IMPLIED_DEFAULT);
8809 text-content: '';
8810 }
8811 attribute-definition {
8812 node-name: 'at6';
8813 declared-type: const (NMTOKEN_ATTR);
8814 allowed-tokens: DOMStringList ();
8815 default-type: const (IMPLIED_DEFAULT);
8816 text-content: '';
8817 }
8818 attribute-definition {
8819 node-name: 'at7';
8820 declared-type: const (NMTOKENS_ATTR);
8821 allowed-tokens: DOMStringList ();
8822 default-type: const (IMPLIED_DEFAULT);
8823 text-content: '';
8824 }
8825 attribute-definition {
8826 node-name: 'at8';
8827 declared-type: const (NOTATION_ATTR);
8828 allowed-tokens: DOMStringList ('n1', 'n2', 'n3');
8829 default-type: const (IMPLIED_DEFAULT);
8830 text-content: '';
8831 }
8832 attribute-definition {
8833 node-name: 'at9';
8834 declared-type: const (ENUMERATION_ATTR);
8835 allowed-tokens: DOMStringList ('e1', 'e2', 'e3');
8836 default-type: const (IMPLIED_DEFAULT);
8837 text-content: '';
8838 }
8839 }
8840 }
8841 element {
8842 namespace-uri: null;
8843 local-name: 'a';
8844 }
8845 }
8846 @@XMLTest:
8847 @@@QName: xp.doctype.internal.attr.cdata.defaults.test
8848 @@@DEnt:
8849 @@@@test:value:
8850 <!DOCTYPE a [
8851 <!ATTLIST a
8852 at1 CDATA #IMPLIED
8853 at2 CDATA #REQUIRED
8854 at3 CDATA #FIXED "value3"
8855 at4 CDATA "value4"
8856 at5 CDATA #FIXED 'value5'
8857 at6 CDATA 'value6'
8858 >
8859 ]>
8860 <a></a>
8861 @@@test:domTree:
8862 document {
8863 xml-version: '1.0';
8864 xml-encoding: null;
8865 xml-standalone: false;
8866 document-type {
8867 node-name: 'a';
8868 element-type-definition {
8869 node-name: 'a';
8870 attribute-definition {
8871 node-name: 'at1';
8872 declared-type: const (CDATA_ATTR);
8873 allowed-tokens: DOMStringList ();
8874 default-type: const (IMPLIED_DEFAULT);
8875 text-content: '';
8876 }
8877 attribute-definition {
8878 node-name: 'at2';
8879 declared-type: const (CDATA_ATTR);
8880 allowed-tokens: DOMStringList ();
8881 default-type: const (REQUIRED_DEFAULT);
8882 text-content: '';
8883 }
8884 attribute-definition {
8885 node-name: 'at3';
8886 declared-type: const (CDATA_ATTR);
8887 allowed-tokens: DOMStringList ();
8888 default-type: const (FIXED_DEFAULT);
8889 text-content: 'value3';
8890 }
8891 attribute-definition {
8892 node-name: 'at4';
8893 declared-type: const (CDATA_ATTR);
8894 allowed-tokens: DOMStringList ();
8895 default-type: const (EXPLICIT_DEFAULT);
8896 text-content: 'value4';
8897 }
8898 attribute-definition {
8899 node-name: 'at5';
8900 declared-type: const (CDATA_ATTR);
8901 allowed-tokens: DOMStringList ();
8902 default-type: const (FIXED_DEFAULT);
8903 text-content: 'value5';
8904 }
8905 attribute-definition {
8906 node-name: 'at6';
8907 declared-type: const (CDATA_ATTR);
8908 allowed-tokens: DOMStringList ();
8909 default-type: const (EXPLICIT_DEFAULT);
8910 text-content: 'value6';
8911 }
8912 }
8913 }
8914 element {
8915 namespace-uri: null;
8916 local-name: 'a';
8917 attribute {
8918 node-name: 'at3';
8919 text-content: 'value3';
8920 specified: false;
8921 }
8922 attribute {
8923 node-name: 'at4';
8924 text-content: 'value4';
8925 specified: false;
8926 }
8927 attribute {
8928 node-name: 'at5';
8929 text-content: 'value5';
8930 specified: false;
8931 }
8932 attribute {
8933 node-name: 'at6';
8934 text-content: 'value6';
8935 specified: false;
8936 }
8937 }
8938 }
8939
8940 @@XMLTest:
8941 @@@QName: xp.doctype.internal.attr.cdata.default.normalize.test
8942 @@@DEnt:
8943 @@@@test:value:
8944 <!DOCTYPE a [
8945 <!ATTLIST a
8946 at CDATA " default &#x0A;value "
8947 >
8948 ]>
8949 <a></a>
8950 @@@test:domTree:
8951 document {
8952 xml-version: '1.0';
8953 xml-encoding: null;
8954 xml-standalone: false;
8955 document-type {
8956 node-name: 'a';
8957 element-type-definition {
8958 node-name: 'a';
8959 attribute-definition {
8960 node-name: 'at';
8961 declared-type: const (CDATA_ATTR);
8962 allowed-tokens: DOMStringList ();
8963 default-type: const (EXPLICIT_DEFAULT);
8964 text-content: ' default ' U+000A 'value ';
8965 }
8966 }
8967 }
8968 element {
8969 namespace-uri: null;
8970 local-name: 'a';
8971 attribute {
8972 node-name: 'at';
8973 text-content: ' default ' U+000A 'value ';
8974 specified: false;
8975 }
8976 }
8977 }
8978 @@XMLTest:
8979 @@@QName: xp.doctype.internal.attr.nmtoken.default.normalize.test
8980 @@@DEnt:
8981 @@@@test:value:
8982 <!DOCTYPE a [
8983 <!ATTLIST a
8984 at NMTOKEN " default &#x0A;value "
8985 >
8986 ]>
8987 <a></a>
8988 @@@test:domTree:
8989 document {
8990 xml-version: '1.0';
8991 xml-encoding: null;
8992 xml-standalone: false;
8993 document-type {
8994 node-name: 'a';
8995 element-type-definition {
8996 node-name: 'a';
8997 attribute-definition {
8998 node-name: 'at';
8999 declared-type: const (NMTOKEN_ATTR);
9000 allowed-tokens: DOMStringList ();
9001 default-type: const (EXPLICIT_DEFAULT);
9002 text-content: ' default ' U+000A 'value ';
9003 }
9004 }
9005 }
9006 element {
9007 namespace-uri: null;
9008 local-name: 'a';
9009 attribute {
9010 node-name: 'at';
9011 text-content: ' default ' U+000A 'value ';
9012 specified: false;
9013 }
9014 }
9015 }
9016
9017 @@XMLTest:
9018 @@@QName: xp.doctype.attrtype.no-value.test
9019 @@@DEnt:
9020 @@@@test:value:
9021 <!DOCTYPE a>
9022 <a at=" at value "></a>
9023 @@@test:domTree:
9024 document {
9025 xml-version: '1.0';
9026 xml-encoding: null;
9027 xml-standalone: false;
9028 document-type { }
9029 element {
9030 namespace-uri: null;
9031 local-name: 'a';
9032 attribute {
9033 namespace-uri: null;
9034 local-name: 'at';
9035 value: ' at value ';
9036 text {
9037 data: ' at value ';
9038 }
9039 schema-type-info: TypeInfo (null, null);
9040 specified: true;
9041 }
9042 }
9043 }
9044 @@XMLTest:
9045 @@@QName: xp.doctype.attrtype.cdata.test
9046 @@@DEnt:
9047 @@@@test:value:
9048 <!DOCTYPE a [
9049 <!ATTLIST a
9050 at CDATA #IMPLIED
9051 >
9052 ]>
9053 <a at=" at value "></a>
9054 @@@test:domTree:
9055 document {
9056 xml-version: '1.0';
9057 xml-encoding: null;
9058 xml-standalone: false;
9059 document-type { }
9060 element {
9061 namespace-uri: null;
9062 local-name: 'a';
9063 attribute {
9064 namespace-uri: null;
9065 local-name: 'at';
9066 value: ' at value ';
9067 text {
9068 data: ' at value ';
9069 }
9070 schema-type-info:
9071 TypeInfo ('http://www.w3.org/TR/REC-xml', 'CDATA');
9072 specified: true;
9073 }
9074 }
9075 }
9076 @@XMLTest:
9077 @@@QName: xp.doctype.attrtype.nmtoken.test
9078 @@@DEnt:
9079 @@@@test:value:
9080 <!DOCTYPE a [
9081 <!ATTLIST a
9082 at NMTOKEN #IMPLIED
9083 >
9084 ]>
9085 <a at=" at value "></a>
9086 @@@test:domTree:
9087 document {
9088 xml-version: '1.0';
9089 xml-encoding: null;
9090 xml-standalone: false;
9091 document-type { }
9092 element {
9093 namespace-uri: null;
9094 local-name: 'a';
9095 attribute {
9096 namespace-uri: null;
9097 local-name: 'at';
9098 value: 'at value';
9099 text {
9100 data: ' at value ';
9101 }
9102 schema-type-info:
9103 TypeInfo ('http://www.w3.org/TR/REC-xml', 'NMTOKEN');
9104 specified: true;
9105 }
9106 }
9107 }
9108
9109 @@XMLTest:
9110 @@@QName: xp.doctype.attr.normalization.1.test
9111 @@@DEnt:
9112 @@@@test:value:
9113 <a at=" at &#xA;value "></a>
9114 @@@test:domTree:
9115 document {
9116 element {
9117 attribute {
9118 node-name: 'at';
9119 value: ' at ' U+000A 'value ';
9120 schema-type-info: TypeInfo (null, null);
9121 specified: true;
9122 }
9123 }
9124 }
9125 @@XMLTest:
9126 @@@QName: xp.doctype.attr.normalization.2.test
9127 @@@DEnt:
9128 @@@@test:value:
9129 <a at=" at &#xD;value "></a>
9130 @@@test:domTree:
9131 document {
9132 element {
9133 attribute {
9134 value: ' at ' U+000D 'value ';
9135 schema-type-info: TypeInfo (null, null);
9136 specified: true;
9137 }
9138 }
9139 }
9140 @@XMLTest:
9141 @@@QName: xp.doctype.attr.normalization.3.test
9142 @@@DEnt:
9143 @@@@test:value:
9144 <a at=" at &#x9;value "></a>
9145 @@@test:domTree:
9146 document {
9147 element {
9148 attribute {
9149 node-name: 'at';
9150 value: ' at ' U+0009 'value ';
9151 schema-type-info: TypeInfo (null, null);
9152 specified: true;
9153 }
9154 }
9155 }
9156
9157 @@XMLTest:
9158 @@@QName: xp.doctype.attr.specified.1.test
9159 @@@DEnt:
9160 @@@@test:value:
9161 <!DOCTYPE a [
9162 <!ATTLIST a
9163 at CDATA "default"
9164 >
9165 ]>
9166 <a></a>
9167 @@@test:domTree:
9168 document {
9169 document-type { }
9170 element {
9171 attribute {
9172 node-name: 'at';
9173 value: 'default';
9174 specified: false;
9175 }
9176 }
9177 }
9178 @@XMLTest:
9179 @@@QName: xp.doctype.attr.specified.2.test
9180 @@@DEnt:
9181 @@@@test:value:
9182 <!DOCTYPE a [
9183 <!ATTLIST a
9184 at CDATA "default"
9185 >
9186 ]>
9187 <a at2="specified"></a>
9188 @@@test:domTree:
9189 document {
9190 document-type { }
9191 element {
9192 attribute {
9193 node-name: 'at';
9194 value: 'default';
9195 specified: false;
9196 }
9197 attribute {
9198 node-name: 'at2';
9199 value: 'specified';
9200 specified: true;
9201 }
9202 }
9203 }
9204 @@XMLTest:
9205 @@@QName: xp.doctype.attr.specified.3.test
9206 @@@DEnt:
9207 @@@@test:value:
9208 <!DOCTYPE a [
9209 <!ATTLIST a
9210 at CDATA "default"
9211 >
9212 ]>
9213 <a at="specified"></a>
9214 @@@test:domTree:
9215 document {
9216 document-type { }
9217 element {
9218 attribute {
9219 node-name: 'at';
9220 value: 'specified';
9221 specified: true;
9222 }
9223 }
9224 }
9225
9226 @@XMLTest:
9227 @@@QName: xp.attr.literal.charref.test
9228 @@@DEnt:
9229 @@@@test:value:
9230 <a at1 = "value&#33;_&#x25;value"
9231 at2 = 'value&#x25;_&#33;value'></a>
9232 @@@test:domTree:
9233 document {
9234 element {
9235 attribute {
9236 node-name: 'at1';
9237 text-content: 'value!_%value';
9238 }
9239 attribute {
9240 node-name: 'at2';
9241 text-content: 'value%_!value';
9242 }
9243 }
9244 }
9245 @@XMLTest:
9246 @@@QName: xp.attr.literal.entref.test
9247 @@@DEnt:
9248 @@@@test:value:
9249 <!DOCTYPE a [
9250 <!ENTITY ent "entity&#x26;#33;_&#x26;#x29;value">
9251 ]>
9252 <a at1 = "value&ent;value"
9253 at2 = 'value&ent;value'></a>
9254 @@@test:domTree:
9255 document {
9256 document-type {
9257 general-entity {
9258 node-name: 'ent';
9259 text-content: 'entity!_)value';
9260 }
9261 }
9262 element {
9263 attribute {
9264 node-name: 'at1';
9265 text-content: 'valueentity!_)valuevalue';
9266 }
9267 attribute {
9268 node-name: 'at2';
9269 text-content: 'valueentity!_)valuevalue';
9270 }
9271 }
9272 }
9273 @@XMLTest:
9274 @@@QName: xp.attr.literal.entref.nest.test
9275 @@@DEnt:
9276 @@@@test:value:
9277 <!DOCTYPE a [
9278 <!ENTITY ent1 "entity&#x26;#33;_&#x26;#x29;value">
9279 <!ENTITY ent2 "@&ent1;@">
9280 ]>
9281 <a at1 = "value&ent2;value"
9282 at2 = 'value&ent2;value'></a>
9283 @@@test:domTree:
9284 document {
9285 document-type {
9286 general-entity {
9287 node-name: 'ent1';
9288 text-content: 'entity!_)value';
9289 }
9290 general-entity {
9291 node-name: 'ent2';
9292 text-content: '@entity!_)value@';
9293 }
9294 }
9295 element {
9296 attribute {
9297 node-name: 'at1';
9298 text-content: 'value@entity!_)value@value';
9299 }
9300 attribute {
9301 node-name: 'at2';
9302 text-content: 'value@entity!_)value@value';
9303 }
9304 }
9305 }
9306
9307 @@XMLTest:
9308 @@@QName: xp.element.content.ncr.1.test
9309 @@@DEnt:
9310 @@@@test:value:
9311 <e>&#33;</e>
9312 @@@test:domTree:
9313 document {
9314 element {
9315 text-content: '!';
9316 }
9317 }
9318 @@XMLTest:
9319 @@@QName: xp.element.content.ncr.2.test
9320 @@@DEnt:
9321 @@@@test:value:
9322 <e>aaaa&#33;bbbb</e>
9323 @@@test:domTree:
9324 document {
9325 element {
9326 text-content: 'aaaa!bbbb';
9327 text {
9328 text-content: 'aaaa!bbbb';
9329 }
9330 }
9331 }
9332 @@XMLTest:
9333 @@@QName: xp.attrval.ncr.1.test
9334 @@@DEnt:
9335 @@@@test:value:
9336 <e a="&#33;"/>
9337 @@@test:domTree:
9338 document {
9339 element {
9340 attribute {
9341 node-name: 'a';
9342 text-content: '!';
9343 }
9344 }
9345 }
9346 @@XMLTest:
9347 @@@QName: xp.attrval.ncr.2.test
9348 @@@DEnt:
9349 @@@@test:value:
9350 <e a="aaaaa&#33;bbbbb"/>
9351 @@@test:domTree:
9352 document {
9353 element {
9354 attribute {
9355 node-name: 'a';
9356 text-content: 'aaaaa!bbbbb';
9357 text {
9358 text-content: 'aaaaa!bbbbb';
9359 }
9360 }
9361 }
9362 }
9363 @@XMLTest:
9364 @@@QName: xp.attrval.ncr.3.test
9365 @@@DEnt:
9366 @@@@test:value:
9367 <e a='&#33;'/>
9368 @@@test:domTree:
9369 document {
9370 element {
9371 attribute {
9372 node-name: 'a';
9373 text-content: '!';
9374 }
9375 }
9376 }
9377 @@XMLTest:
9378 @@@QName: xp.attrval.ncr.4.test
9379 @@@DEnt:
9380 @@@@test:value:
9381 <e a='aaaaa&#33;bbbbb'/>
9382 @@@test:domTree:
9383 document {
9384 element {
9385 attribute {
9386 node-name: 'a';
9387 text-content: 'aaaaa!bbbbb';
9388 }
9389 }
9390 }
9391 @@XMLTest:
9392 @@@QName: xp.entval.ncr.1.test
9393 @@@DEnt:
9394 @@@@test:value:
9395 <!DOCTYPE e [
9396 <!ENTITY ent "&#33;">
9397 ]>
9398 <e/>
9399 @@@test:domTree:
9400 document {
9401 document-type {
9402 general-entity {
9403 node-name: 'ent';
9404 text-content: '!';
9405 }
9406 }
9407 element { }
9408 }
9409 @@XMLTest:
9410 @@@QName: xp.entval.ncr.2.test
9411 @@@DEnt:
9412 @@@@test:value:
9413 <!DOCTYPE e [
9414 <!ENTITY ent "aaaaa&#33;bbbbb">
9415 ]>
9416 <e/>
9417 @@@test:domTree:
9418 document {
9419 document-type {
9420 general-entity {
9421 node-name: 'ent';
9422 text-content: 'aaaaa!bbbbb';
9423 }
9424 }
9425 element { }
9426 }
9427 @@XMLTest:
9428 @@@QName: xp.element.content.reptxt.ncr.1.test
9429 @@@DEnt:
9430 @@@@test:value:
9431 <!DOCTYPE e [
9432 <!ENTITY ent "&#38;#33;">
9433 ]>
9434 <e>&ent;</e>
9435 @@@test:domTree:
9436 document {
9437 document-type { }
9438 element {
9439 general-entity-reference {
9440 node-name: 'ent';
9441 text-content: '!';
9442 is-expanded: true;
9443 }
9444 }
9445 }
9446 @@XMLTest:
9447 @@@QName: xp.element.content.reptxt.ncr.2.test
9448 @@@DEnt:
9449 @@@@test:value:
9450 <!DOCTYPE e [
9451 <!ENTITY ent "aaaaa&#38;#33;bbbbb">
9452 ]>
9453 <e>&ent;</e>
9454 @@@test:domTree:
9455 document {
9456 document-type { }
9457 element {
9458 general-entity-reference {
9459 node-name: 'ent';
9460 text-content: 'aaaaa!bbbbb';
9461 is-expanded: true;
9462 }
9463 }
9464 }
9465 @@XMLTest:
9466 @@@QName: xp.element.content.reptxt.reptxt.ncr.1.test
9467 @@@DEnt:
9468 @@@@test:value:
9469 <!DOCTYPE e [
9470 <!ENTITY ent "&#38;#33;">
9471 <!ENTITY ent2 "&ent;">
9472 ]>
9473 <e>&ent2;</e>
9474 @@@test:domTree:
9475 document {
9476 document-type { }
9477 element {
9478 general-entity-reference {
9479 node-name: 'ent2';
9480 general-entity-reference {
9481 node-name: 'ent';
9482 text-content: '!';
9483 is-expanded: true;
9484 }
9485 is-expanded: true;
9486 }
9487 }
9488 }
9489 @@XMLTest:
9490 @@@QName: xp.element.content.reptxt.reptxt.ncr.2.test
9491 @@@DEnt:
9492 @@@@test:value:
9493 <!DOCTYPE e [
9494 <!ENTITY ent "aa&#38;#33;bb">
9495 <!ENTITY ent2 "&ent;">
9496 ]>
9497 <e>&ent2;</e>
9498 @@@test:domTree:
9499 document {
9500 document-type { }
9501 element {
9502 general-entity-reference {
9503 node-name: 'ent2';
9504 general-entity-reference {
9505 node-name: 'ent';
9506 text-content: 'aa!bb';
9507 is-expanded: true;
9508 text {
9509 text-content: 'aa!bb';
9510 }
9511 }
9512 is-expanded: true;
9513 }
9514 }
9515 }
9516 @@XMLTest:
9517 @@@QName: xp.attval.reptxt.ncr.1.test
9518 @@@DEnt:
9519 @@@@test:value:
9520 <!DOCTYPE e [
9521 <!ENTITY ent "&#38;#33;">
9522 ]>
9523 <e a="&ent;"/>
9524 @@@test:domTree:
9525 document {
9526 document-type { }
9527 element {
9528 attribute {
9529 node-name: 'a';
9530 general-entity-reference {
9531 node-name: 'ent';
9532 text-content: '!';
9533 is-expanded: true;
9534 }
9535 }
9536 }
9537 }
9538 @@XMLTest:
9539 @@@QName: xp.attval.reptxt.ncr.2.test
9540 @@@DEnt:
9541 @@@@test:value:
9542 <!DOCTYPE e [
9543 <!ENTITY ent "aaaaa&#38;#33;bbbbb">
9544 ]>
9545 <e a="&ent;"/>
9546 @@@test:domTree:
9547 document {
9548 document-type { }
9549 element {
9550 attribute {
9551 node-name: 'a';
9552 general-entity-reference {
9553 node-name: 'ent';
9554 text-content: 'aaaaa!bbbbb';
9555 is-expanded: true;
9556 text {
9557 text-content: 'aaaaa!bbbbb';
9558 }
9559 }
9560 }
9561 }
9562 }
9563 @@XMLTest:
9564 @@@QName: xp.attval.reptxt.reptxt.ncr.1.test
9565 @@@DEnt:
9566 @@@@test:value:
9567 <!DOCTYPE e [
9568 <!ENTITY ent "&#38;#33;">
9569 <!ENTITY ent2 "&ent;">
9570 ]>
9571 <e a="&ent2;"/>
9572 @@@test:domTree:
9573 document {
9574 document-type { }
9575 element {
9576 attribute {
9577 node-name: 'a';
9578 general-entity-reference {
9579 node-name: 'ent2';
9580 is-expanded: true;
9581 general-entity-reference {
9582 node-name: 'ent';
9583 text-content: '!';
9584 is-expanded: true;
9585 }
9586 }
9587 }
9588 }
9589 }
9590 @@XMLTest:
9591 @@@QName: xp.attval.reptxt.reptxt.ncr.2.test
9592 @@@DEnt:
9593 @@@@test:value:
9594 <!DOCTYPE e [
9595 <!ENTITY ent "aa&#38;#33;bb">
9596 <!ENTITY ent2 "&ent;">
9597 ]>
9598 <e a="&ent2;"/>
9599 @@@test:domTree:
9600 document {
9601 document-type { }
9602 element {
9603 attribute {
9604 node-name: 'a';
9605 general-entity-reference {
9606 node-name: 'ent2';
9607 is-expanded: true;
9608 general-entity-reference {
9609 node-name: 'ent';
9610 text-content: 'aa!bb';
9611 is-expanded: true;
9612 }
9613 }
9614 }
9615 }
9616 }
9617
9618 @@XMLTest:
9619 @@@QName: xp.element.content.hcr.1.test
9620 @@@DEnt:
9621 @@@@test:value:
9622 <e>&#x21;</e>
9623 @@@test:domTree:
9624 document {
9625 element {
9626 text-content: '!';
9627 }
9628 }
9629 @@XMLTest:
9630 @@@QName: xp.element.content.hcr.2.test
9631 @@@DEnt:
9632 @@@@test:value:
9633 <e>aaaa&#x21;bbbb</e>
9634 @@@test:domTree:
9635 document {
9636 element {
9637 text-content: 'aaaa!bbbb';
9638 text {
9639 text-content: 'aaaa!bbbb';
9640 }
9641 }
9642 }
9643 @@XMLTest:
9644 @@@QName: xp.attrval.hcr.1.test
9645 @@@DEnt:
9646 @@@@test:value:
9647 <e a="&#x21;"/>
9648 @@@test:domTree:
9649 document {
9650 element {
9651 attribute {
9652 node-name: 'a';
9653 text-content: '!';
9654 }
9655 }
9656 }
9657 @@XMLTest:
9658 @@@QName: xp.attrval.hcr.2.test
9659 @@@DEnt:
9660 @@@@test:value:
9661 <e a="aaaaa&#x21;bbbbb"/>
9662 @@@test:domTree:
9663 document {
9664 element {
9665 attribute {
9666 node-name: 'a';
9667 text-content: 'aaaaa!bbbbb';
9668 text {
9669 text-content: 'aaaaa!bbbbb';
9670 }
9671 }
9672 }
9673 }
9674 @@XMLTest:
9675 @@@QName: xp.attrval.hcr.3.test
9676 @@@DEnt:
9677 @@@@test:value:
9678 <e a='&#x21;'/>
9679 @@@test:domTree:
9680 document {
9681 element {
9682 attribute {
9683 node-name: 'a';
9684 text-content: '!';
9685 }
9686 }
9687 }
9688 @@XMLTest:
9689 @@@QName: xp.attrval.hcr.4.test
9690 @@@DEnt:
9691 @@@@test:value:
9692 <e a='aaaaa&#x21;bbbbb'/>
9693 @@@test:domTree:
9694 document {
9695 element {
9696 attribute {
9697 node-name: 'a';
9698 text-content: 'aaaaa!bbbbb';
9699 }
9700 }
9701 }
9702 @@XMLTest:
9703 @@@QName: xp.entval.hcr.1.test
9704 @@@DEnt:
9705 @@@@test:value:
9706 <!DOCTYPE e [
9707 <!ENTITY ent "&#x21;">
9708 ]>
9709 <e/>
9710 @@@test:domTree:
9711 document {
9712 document-type {
9713 general-entity {
9714 node-name: 'ent';
9715 text-content: '!';
9716 }
9717 }
9718 element { }
9719 }
9720 @@XMLTest:
9721 @@@QName: xp.entval.hcr.2.test
9722 @@@DEnt:
9723 @@@@test:value:
9724 <!DOCTYPE e [
9725 <!ENTITY ent "aaaaa&#x21;bbbbb">
9726 ]>
9727 <e/>
9728 @@@test:domTree:
9729 document {
9730 document-type {
9731 general-entity {
9732 node-name: 'ent';
9733 text-content: 'aaaaa!bbbbb';
9734 text {
9735 text-content: 'aaaaa!bbbbb';
9736 }
9737 }
9738 }
9739 element { }
9740 }
9741 @@XMLTest:
9742 @@@QName: xp.element.content.reptxt.hcr.1.test
9743 @@@DEnt:
9744 @@@@test:value:
9745 <!DOCTYPE e [
9746 <!ENTITY ent "&#38;#x21;">
9747 ]>
9748 <e>&ent;</e>
9749 @@@test:domTree:
9750 document {
9751 document-type { }
9752 element {
9753 general-entity-reference {
9754 node-name: 'ent';
9755 text-content: '!';
9756 is-expanded: true;
9757 }
9758 }
9759 }
9760 @@XMLTest:
9761 @@@QName: xp.element.content.reptxt.hcr.2.test
9762 @@@DEnt:
9763 @@@@test:value:
9764 <!DOCTYPE e [
9765 <!ENTITY ent "aaaaa&#38;#x21;bbbbb">
9766 ]>
9767 <e>&ent;</e>
9768 @@@test:domTree:
9769 document {
9770 document-type { }
9771 element {
9772 general-entity-reference {
9773 node-name: 'ent';
9774 text-content: 'aaaaa!bbbbb';
9775 is-expanded: true;
9776 }
9777 }
9778 }
9779 @@XMLTest:
9780 @@@QName: xp.element.content.reptxt.reptxt.hcr.1.test
9781 @@@DEnt:
9782 @@@@test:value:
9783 <!DOCTYPE e [
9784 <!ENTITY ent "&#38;#x21;">
9785 <!ENTITY ent2 "&ent;">
9786 ]>
9787 <e>&ent2;</e>
9788 @@@test:domTree:
9789 document {
9790 document-type { }
9791 element {
9792 general-entity-reference {
9793 node-name: 'ent2';
9794 is-expanded: true;
9795 general-entity-reference {
9796 node-name: 'ent';
9797 text-content: '!';
9798 is-expanded: true;
9799 }
9800 }
9801 }
9802 }
9803 @@XMLTest:
9804 @@@QName: xp.element.content.reptxt.reptxt.hcr.2.test
9805 @@@DEnt:
9806 @@@@test:value:
9807 <!DOCTYPE e [
9808 <!ENTITY ent "aa&#38;#x21;bb">
9809 <!ENTITY ent2 "&ent;">
9810 ]>
9811 <e>&ent2;</e>
9812 @@@test:domTree:
9813 document {
9814 document-type { }
9815 element {
9816 general-entity-reference {
9817 node-name: 'ent2';
9818 is-expanded: true;
9819 general-entity-reference {
9820 node-name: 'ent';
9821 is-expanded: true;
9822 text-content: 'aa!bb';
9823 }
9824 }
9825 }
9826 }
9827 @@XMLTest:
9828 @@@QName: xp.attval.reptxt.hcr.1.test
9829 @@@DEnt:
9830 @@@@test:value:
9831 <!DOCTYPE e [
9832 <!ENTITY ent "&#38;#x21;">
9833 ]>
9834 <e a="&ent;"/>
9835 @@@test:domTree:
9836 document {
9837 document-type { }
9838 element {
9839 attribute {
9840 node-name: 'a';
9841 general-entity-reference {
9842 node-name: 'ent';
9843 is-expanded: true;
9844 text-content: '!';
9845 }
9846 }
9847 }
9848 }
9849 @@XMLTest:
9850 @@@QName: xp.attval.reptxt.hcr.2.test
9851 @@@DEnt:
9852 @@@@test:value:
9853 <!DOCTYPE e [
9854 <!ENTITY ent "aaaaa&#38;#x21;bbbbb">
9855 ]>
9856 <e a="&ent;"/>
9857 @@@test:domTree:
9858 document {
9859 document-type { }
9860 element {
9861 attribute {
9862 node-name: 'a';
9863 general-entity-reference {
9864 node-name: 'ent';
9865 is-expanded: true;
9866 text-content: 'aaaaa!bbbbb';
9867 text {
9868 text-content: 'aaaaa!bbbbb';
9869 }
9870 }
9871 }
9872 }
9873 }
9874 @@XMLTest:
9875 @@@QName: xp.attval.reptxt.reptxt.hcr.1.test
9876 @@@DEnt:
9877 @@@@test:value:
9878 <!DOCTYPE e [
9879 <!ENTITY ent "&#38;#x21;">
9880 <!ENTITY ent2 "&ent;">
9881 ]>
9882 <e a="&ent2;"/>
9883 @@@test:domTree:
9884 document {
9885 document-type { }
9886 element {
9887 attribute {
9888 node-name: 'a';
9889 general-entity-reference {
9890 node-name: 'ent2';
9891 is-expanded: true;
9892 general-entity-reference {
9893 node-name: 'ent';
9894 is-expanded: true;
9895 text-content: '!';
9896 }
9897 }
9898 }
9899 }
9900 }
9901 @@XMLTest:
9902 @@@QName: xp.attval.reptxt.reptxt.hcr.2.test
9903 @@@DEnt:
9904 @@@@test:value:
9905 <!DOCTYPE e [
9906 <!ENTITY ent "aa&#38;#x21;bb">
9907 <!ENTITY ent2 "&ent;">
9908 ]>
9909 <e a="&ent2;"/>
9910 @@@test:domTree:
9911 document {
9912 document-type { }
9913 element {
9914 attribute {
9915 node-name: 'a';
9916 general-entity-reference {
9917 node-name: 'ent2';
9918 is-expanded: true;
9919 general-entity-reference {
9920 node-name: 'ent';
9921 is-expanded: true;
9922 text-content: 'aa!bb';
9923 }
9924 }
9925 }
9926 }
9927 }
9928
9929 @@XMLTest:
9930 @@@QName: xp.element.content.ncr.legal.char.1.0.1.test
9931 @@@DEnt:
9932 @@@@test:value:
9933 <?xml version="1.0"?>
9934 <e>&#0;</e>
9935 @@@c:erred: <[[xp|wf-legal-character]]> { (2, 4)..(2, 7); }
9936 @@XMLTest:
9937 @@@QName: xp.element.content.ncr.legal.char.1.1.1.test
9938 @@@DEnt:
9939 @@@@test:value:
9940 <?xml version="1.1"?>
9941 <e>&#0;</e>
9942 @@@c:erred: <[[xp|wf-legal-character]]> { (2, 4)..(2, 7); }
9943 @@XMLTest:
9944 @@@QName: xp.element.content.ncr.legal.char.1.0.2.test
9945 @@@DEnt:
9946 @@@@test:value:
9947 <?xml version="1.0"?>
9948 <e>&#1;</e>
9949 @@@c:erred: <[[xp|wf-legal-character]]> { (2, 4)..(2, 7); }
9950 @@XMLTest:
9951 @@@QName: xp.element.content.ncr.legal.char.1.1.2.test
9952 @@@DEnt:
9953 @@@@test:value:
9954 <?xml version="1.1"?>
9955 <e>&#1;</e>
9956 @@@test:domTree:
9957 document {
9958 xml-version: '1.1';
9959 element {
9960 text-content: U+0001;
9961 }
9962 }
9963 @@XMLTest:
9964 @@@QName: xp.element.content.hcr.legal.char.1.0.1.test
9965 @@@DEnt:
9966 @@@@test:value:
9967 <?xml version="1.0"?>
9968 <e>&#x0;</e>
9969 @@@c:erred: <[[xp|wf-legal-character]]> { (2, 4)..(2, 8); }
9970 @@XMLTest:
9971 @@@QName: xp.element.content.hcr.legal.char.1.1.1.test
9972 @@@DEnt:
9973 @@@@test:value:
9974 <?xml version="1.1"?>
9975 <e>&#x0;</e>
9976 @@@c:erred: <[[xp|wf-legal-character]]> { (2, 4)..(2, 8); }
9977 @@XMLTest:
9978 @@@QName: xp.element.content.hcr.legal.char.1.0.2.test
9979 @@@DEnt:
9980 @@@@test:value:
9981 <?xml version="1.0"?>
9982 <e>&#x1;</e>
9983 @@@c:erred: <[[xp|wf-legal-character]]> { (2, 4)..(2, 8); }
9984 @@XMLTest:
9985 @@@QName: xp.element.content.hcr.legal.char.1.1.2.test
9986 @@@DEnt:
9987 @@@@test:value:
9988 <?xml version="1.1"?>
9989 <e>&#x1;</e>
9990 @@@test:domTree:
9991 document {
9992 xml-version: '1.1';
9993 element {
9994 text-content: U+0001;
9995 }
9996 }
9997
9998 @@XMLTest:
9999 @@@QName: xp.element.content.ger.entity.declared.nodtd.1.test
10000 @@@DEnt:
10001 @@@@test:value:
10002 <p>&entity;</p>
10003 @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 4)..(1, 11); }
10004 @@XMLTest:
10005 @@@QName: xp.element.content.ger.entity.declared.nodtd.2.test
10006 @@@DEnt:
10007 @@@@test:value:
10008 <?xml version="1.0" standalone="yes"?>
10009 <p>&entity;</p>
10010 @@@c:erred: <[[xp|wf-entity-declared]]> { (2, 4)..(2, 11); }
10011 @@XMLTest:
10012 @@@QName: xp.element.content.ger.entity.declared.nodtd.3.test
10013 @@@DEnt:
10014 @@@@test:value:
10015 <?xml version="1.0" standalone="no"?>
10016 <p>&entity;</p>
10017 @@@c:erred: <[[xp|wf-entity-declared]]> { (2, 4)..(2, 11); }
10018 @@XMLTest:
10019 @@@QName: xp.element.content.ger.entity.declared.nodtd.-1.test
10020 @@@DEnt:
10021 @@@@test:value:
10022 <p>&lt;&gt;&amp;&quot;&apos;</p>
10023 @@@test:domTree:
10024 document {
10025 element {
10026 text-content: '<>&"' U+0027;
10027 }
10028 }
10029 @@XMLTest:
10030 @@@QName: xp.element.content.ger.entity.declared.nopref.1.test
10031 @@@DEnt:
10032 @@@@test:value:
10033 <!DOCTYPE p []>
10034 <p>&entity;</p>
10035 @@@c:erred: <[[xp|wf-entity-declared]]> { (2, 4)..(2, 11); }
10036 @@XMLTest:
10037 @@@QName: xp.element.content.ger.entity.declared.nopref.2.test
10038 @@@DEnt:
10039 @@@@test:value:
10040 <!DOCTYPE p [
10041 <!ENTITY other "aa">
10042 <!ENTITY % another "aa">
10043 ]>
10044 <p>&entity;</p>
10045 @@@c:erred: <[[xp|wf-entity-declared]]> { (5, 4)..(5, 11); }
10046 @@XMLTest:
10047 @@@QName: xp.element.content.ger.entity.declared.nopref.3.test
10048 @@@DEnt:
10049 @@@@test:value:
10050 <?xml version="1.0" standalone="yes"?>
10051 <!DOCTYPE p []>
10052 <p>&entity;</p>
10053 @@@c:erred: <[[xp|wf-entity-declared]]> { (3, 4)..(3, 11); }
10054 @@XMLTest:
10055 @@@QName: xp.element.content.ger.entity.declared.nopref.4.test
10056 @@@DEnt:
10057 @@@@test:value:
10058 <?xml version="1.0" standalone="no"?>
10059 <!DOCTYPE p []>
10060 <p>&entity;</p>
10061 @@@c:erred: <[[xp|wf-entity-declared]]> { (3, 4)..(3, 11); }
10062 @@XMLTest:
10063 @@@QName: xp.element.content.ger.entity.declared.nopref.5.test
10064 @@@DEnt:
10065 @@@@test:value:
10066 <?xml version="1.0" standalone="yes"?>
10067 <!DOCTYPE p [
10068 <!ENTITY other "aa">
10069 <!ENTITY % another "aa">
10070 ]>
10071 <p>&entity;</p>
10072 @@@c:erred: <[[xp|wf-entity-declared]]> { (6, 4)..(6, 11); }
10073 @@XMLTest:
10074 @@@QName: xp.element.content.ger.entity.declared.nopref.6.test
10075 @@@DEnt:
10076 @@@@test:value:
10077 <?xml version="1.0" standalone="no"?>
10078 <!DOCTYPE p [
10079 <!ENTITY other "aa">
10080 <!ENTITY % another "aa">
10081 ]>
10082 <p>&entity;</p>
10083 @@@c:erred: <[[xp|wf-entity-declared]]> { (6, 4)..(6, 11); }
10084 @@XMLTest:
10085 @@@QName: xp.element.content.ger.entity.declared.nopref.-1.test
10086 @@@DEnt:
10087 @@@@test:value:
10088 <!DOCTYPE p [
10089 <!ENTITY entity "value">
10090 ]>
10091 <p>&entity;</p>
10092 @@@test:domTree:
10093 document {
10094 document-type {
10095 general-entity {
10096 node-name: 'entity';
10097 text-content: 'value';
10098 }
10099 }
10100 element {
10101 general-entity-reference {
10102 node-name: 'entity';
10103 is-expanded: true;
10104 text-content: 'value';
10105 }
10106 }
10107 }
10108 @@XMLTest:
10109 @@@QName: xp.element.content.ger.entity.declared.nopref.-2.test
10110 @@@DEnt:
10111 @@@@test:value:
10112 <!DOCTYPE p [
10113 <!ENTITY entity "value">
10114 <!ENTITY another SYSTEM "another">
10115 ]>
10116 <p>&entity;</p>
10117 @@@test:domTree:
10118 document {
10119 document-type {
10120 general-entity {
10121 node-name: 'entity';
10122 text-content: 'value';
10123 }
10124 general-entity {
10125 node-name: 'another';
10126 public-id: null;
10127 system-id: 'another';
10128 }
10129 }
10130 element {
10131 general-entity-reference {
10132 node-name: 'entity';
10133 is-expanded: true;
10134 text-content: 'value';
10135 }
10136 }
10137 }
10138 @@XMLTest:
10139 @@@QName: xp.element.content.ger.entity.declared.standalone.1.test
10140 @@@DEnt:
10141 @@@@test:value:
10142 <?xml version="1.0" standalone="yes"?>
10143 <p>&entity;</p>
10144 @@@c:erred: <[[xp|wf-entity-declared]]> { (2, 4)..(2, 11); }
10145 @@XMLTest:
10146 @@@QName: xp.element.content.ger.entity.declared.standalone.2.test
10147 @@@DEnt:
10148 @@@@test:value:
10149 <?xml version="1.0" standalone="yes"?>
10150 <!DOCTYPE p []>
10151 <p>&entity;</p>
10152 @@@c:erred: <[[xp|wf-entity-declared]]> { (3, 4)..(3, 11); }
10153 @@XMLTest:
10154 @@@QName: xp.element.content.ger.entity.declared.standalone.3.test
10155 @@@DEnt:
10156 @@@@test:value:
10157 <?xml version="1.0" standalone="yes"?>
10158 <!DOCTYPE p [
10159 <!ENTITY % para "<!-- -->">
10160 %para;
10161 ]>
10162 <p>&entity;</p>
10163 @@@c:erred: <[[xp|wf-entity-declared]]> { (6, 4)..(6, 11); }
10164 @@XMLTest:
10165 @@@QName: xp.element.content.ger.entity.declared.standalone.-1.test
10166 @@@DEnt:
10167 @@@@test:value:
10168 <?xml version="1.0" standalone="no"?>
10169 <!DOCTYPE p [
10170 <!ENTITY % para "<!-- -->">
10171 %para;
10172 ]>
10173 <p>&entity;</p>
10174 @@@test:domTree:
10175 document {
10176 document-type { }
10177 element {
10178 general-entity-reference {
10179 is-expanded: false;
10180 }
10181 }
10182 }
10183 @@XMLTest:
10184 @@@QName: xp.element.content.ger.entity.declared.standalone.-2.test
10185 @@@DEnt:
10186 @@@@test:value:
10187 <!DOCTYPE p [
10188 <!ENTITY % para "<!-- -->">
10189 %para;
10190 ]>
10191 <p>&entity;</p>
10192 @@@test:domTree:
10193 document {
10194 document-type { }
10195 element {
10196 general-entity-reference {
10197 is-expanded: false;
10198 }
10199 }
10200 }
10201 @@XMLTest:
10202 @@@QName: xp.element.content.ger.entity.declared.standalone.4.test
10203 @@@DEnt:
10204 @@@@test:value:
10205 <?xml version="1.0" standalone="yes"?>
10206 <!DOCTYPE p [
10207 <!ENTITY % para SYSTEM "para">
10208 %para;
10209 ]>
10210 <p>&entity;</p>
10211 @@@c:erred: <[[xp|wf-entity-declared]]> { (6, 4)..(6, 11); }
10212 @@XMLTest:
10213 @@@QName: xp.element.content.ger.entity.declared.standalone.-3.test
10214 @@@DEnt:
10215 @@@@test:value:
10216 <?xml version="1.0" standalone="no"?>
10217 <!DOCTYPE p [
10218 <!ENTITY % para SYSTEM "para">
10219 %para;
10220 ]>
10221 <p>&entity;</p>
10222 @@@test:domTree:
10223 document {
10224 document-type { }
10225 element {
10226 general-entity-reference {
10227 is-expanded: false;
10228 }
10229 }
10230 }
10231 @@XMLTest:
10232 @@@QName: xp.element.content.ger.entity.declared.standalone.-4.test
10233 @@@DEnt:
10234 @@@@test:value:
10235 <!DOCTYPE p [
10236 <!ENTITY % para SYSTEM "para">
10237 %para;
10238 ]>
10239 <p>&entity;</p>
10240 @@@test:domTree:
10241 document {
10242 document-type { }
10243 element {
10244 general-entity-reference {
10245 is-expanded: false;
10246 }
10247 }
10248 }
10249 @@XMLTest:
10250 @@@QName: xp.element.content.ger.entity.declared.standalone.5.test
10251 @@@DEnt:
10252 @@@@test:value:
10253 <?xml version="1.0" standalone="yes"?>
10254 <!DOCTYPE p SYSTEM "dtd">
10255 <p>&entity;</p>
10256 @@@c:erred: <[[xp|wf-entity-declared]]> { (3, 4)..(3, 11); }
10257 @@XMLTest:
10258 @@@QName: xp.element.content.ger.entity.declared.standalone.-5.test
10259 @@@DEnt:
10260 @@@@test:value:
10261 <?xml version="1.0" standalone="no"?>
10262 <!DOCTYPE p SYSTEM "dtd">
10263 <p>&entity;</p>
10264 @@@test:domTree:
10265 document {
10266 document-type { }
10267 element {
10268 general-entity-reference {
10269 is-expanded: false;
10270 }
10271 }
10272 }
10273 @@XMLTest:
10274 @@@QName: xp.element.content.ger.entity.declared.standalone.-6.test
10275 @@@DEnt:
10276 @@@@test:value:
10277 <!DOCTYPE p SYSTEM "dtd">
10278 <p>&entity;</p>
10279 @@@test:domTree:
10280 document {
10281 document-type { }
10282 element {
10283 general-entity-reference {
10284 is-expanded: false;
10285 }
10286 }
10287 }
10288
10289 @@XMLTest:
10290 @@@QName: xp.reptxt.element.content.ger.entity.declared.nopref.1.test
10291 @@@DEnt:
10292 @@@@test:value:
10293 <!DOCTYPE p [
10294 <!ENTITY c "&entity;">
10295 ]>
10296 <p>&c;</p>
10297 @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
10298 @@XMLTest:
10299 @@@QName: xp.reptxt.element.content.ger.entity.declared.nopref.2.test
10300 @@@DEnt:
10301 @@@@test:value:
10302 <!DOCTYPE p [
10303 <!ENTITY other "aa">
10304 <!ENTITY % another "aa">
10305 <!ENTITY c "&entity;">
10306 ]>
10307 <p>&c;</p>
10308 @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
10309 @@XMLTest:
10310 @@@QName: xp.reptxt.element.content.ger.entity.declared.nopref.3.test
10311 @@@DEnt:
10312 @@@@test:value:
10313 <?xml version="1.0" standalone="yes"?>
10314 <!DOCTYPE p [
10315 <!ENTITY c "&entity;">
10316 ]>
10317 <p>&c;</p>
10318 @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
10319 @@XMLTest:
10320 @@@QName: xp.reptxt.element.content.ger.entity.declared.nopref.4.test
10321 @@@DEnt:
10322 @@@@test:value:
10323 <?xml version="1.0" standalone="no"?>
10324 <!DOCTYPE p [
10325 <!ENTITY c "&entity;">
10326 ]>
10327 <p>&c;</p>
10328 @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
10329 @@XMLTest:
10330 @@@QName: xp.reptxt.element.content.ger.entity.declared.nopref.5.test
10331 @@@DEnt:
10332 @@@@test:value:
10333 <?xml version="1.0" standalone="yes"?>
10334 <!DOCTYPE p [
10335 <!ENTITY other "aa">
10336 <!ENTITY % another "aa">
10337 <!ENTITY c "&entity;">
10338 ]>
10339 <p>&c;</p>
10340 @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
10341 @@XMLTest:
10342 @@@QName: xp.reptxt.element.content.ger.entity.declared.nopref.6.test
10343 @@@DEnt:
10344 @@@@test:value:
10345 <?xml version="1.0" standalone="no"?>
10346 <!DOCTYPE p [
10347 <!ENTITY other "aa">
10348 <!ENTITY % another "aa">
10349 <!ENTITY c "&entity;">
10350 ]>
10351 <p>&c;</p>
10352 @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
10353 @@XMLTest:
10354 @@@QName: xp.reptxt.element.content.ger.entity.declared.nopref.-1.test
10355 @@@DEnt:
10356 @@@@test:value:
10357 <!DOCTYPE p [
10358 <!ENTITY entity "value">
10359 <!ENTITY c "&entity;">
10360 ]>
10361 <p>&c;</p>
10362 @@@test:domTree:
10363 document {
10364 document-type {
10365 general-entity {
10366 node-name: 'entity';
10367 text-content: 'value';
10368 }
10369 general-entity {
10370 node-name: 'c';
10371 general-entity-reference {
10372 node-name: 'entity';
10373 text-content: 'value';
10374 }
10375 }
10376 }
10377 element {
10378 general-entity-reference {
10379 node-name: 'c';
10380 general-entity-reference {
10381 node-name: 'entity';
10382 text-content: 'value';
10383 }
10384 }
10385 }
10386 }
10387 @@XMLTest:
10388 @@@QName: xp.reptxt.element.content.ger.entity.declared.nopref.-2.test
10389 @@@DEnt:
10390 @@@@test:value:
10391 <!DOCTYPE p [
10392 <!ENTITY entity "value">
10393 <!ENTITY another SYSTEM "another">
10394 <!ENTITY c "&entity;">
10395 ]>
10396 <p>&c;</p>
10397 @@@test:domTree:
10398 document {
10399 document-type {
10400 general-entity {
10401 node-name: 'entity';
10402 text-content: 'value';
10403 }
10404 general-entity {
10405 node-name: 'c';
10406 general-entity-reference {
10407 node-name: 'entity';
10408 is-expanded: true;
10409 text-content: 'value';
10410 }
10411 }
10412 general-entity {
10413 node-name: 'another';
10414 public-id: null;
10415 system-id: 'another';
10416 has-replacement-tree: false;
10417 }
10418 }
10419 element {
10420 general-entity-reference {
10421 node-name: 'c';
10422 is-expanded: true;
10423 general-entity-reference {
10424 node-name: 'entity';
10425 is-expanded: true;
10426 text-content: 'value';
10427 }
10428 }
10429 }
10430 }
10431 @@XMLTest:
10432 @@@QName: xp.reptxt.element.content.ger.entity.declared.standalone.2.test
10433 @@@DEnt:
10434 @@@@test:value:
10435 <?xml version="1.0" standalone="yes"?>
10436 <!DOCTYPE p [
10437 <!ENTITY c "&entity;">
10438 ]>
10439 <p>&c;</p>
10440 @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
10441 @@XMLTest:
10442 @@@QName: xp.reptxt.element.content.ger.entity.declared.standalone.3.test
10443 @@@DEnt:
10444 @@@@test:value:
10445 <?xml version="1.0" standalone="yes"?>
10446 <!DOCTYPE p [
10447 <!ENTITY % para "<!-- -->">
10448 %para;
10449 <!ENTITY c "&entity;">
10450 ]>
10451 <p>&c;</p>
10452 @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
10453 @@XMLTest:
10454 @@@QName: xp.reptxt.element.content.ger.entity.declared.standalone.-1.test
10455 @@@DEnt:
10456 @@@@test:value:
10457 <?xml version="1.0" standalone="no"?>
10458 <!DOCTYPE p [
10459 <!ENTITY c "&entity;">
10460 <!ENTITY % para "<!-- -->">
10461 %para;
10462 ]>
10463 <p>&c;</p>
10464 @@@test:domTree:
10465 document {
10466 document-type {
10467 general-entity {
10468 node-name: 'c';
10469 general-entity-reference {
10470 node-name: 'entity';
10471 is-expanded: false;
10472 }
10473 }
10474 }
10475 element {
10476 general-entity-reference {
10477 node-name: 'c';
10478 general-entity-reference {
10479 node-name: 'entity';
10480 is-expanded: false;
10481 }
10482 }
10483 }
10484 }
10485 @@XMLTest:
10486 @@@QName:
10487 xp.reptxt.element.content.ger.entity.declared.standalone.-1.2.test
10488 @@@DEnt:
10489 @@@@test:value:
10490 <?xml version="1.0" standalone="no"?>
10491 <!DOCTYPE p [
10492 <!ENTITY % para "<!-- -->">
10493 %para;
10494 <!ENTITY c "&entity;">
10495 ]>
10496 <p>&c;</p>
10497 @@@test:domTree:
10498 document {
10499 document-type { }
10500 element {
10501 general-entity-reference {
10502 node-name: 'c';
10503 is-expanded: false;
10504 }
10505 }
10506 }
10507 @@XMLTest:
10508 @@@QName: xp.reptxt.element.content.ger.entity.declared.standalone.-2.test
10509 @@@DEnt:
10510 @@@@test:value:
10511 <!DOCTYPE p [
10512 <!ENTITY c "&entity;">
10513 <!ENTITY % para "<!-- -->">
10514 %para;
10515 ]>
10516 <p>&c;</p>
10517 @@@test:domTree:
10518 document {
10519 document-type { }
10520 element {
10521 general-entity-reference {
10522 node-name: 'c';
10523 is-expanded: true;
10524 general-entity-reference {
10525 node-name: 'entity';
10526 is-expanded: false;
10527 }
10528 }
10529 }
10530 }
10531 @@XMLTest:
10532 @@@QName:
10533 xp.reptxt.element.content.ger.entity.declared.standalone.-2.2.test
10534 @@@DEnt:
10535 @@@@test:value:
10536 <!DOCTYPE p [
10537 <!ENTITY % para "<!-- -->">
10538 %para;
10539 <!ENTITY c "&entity;">
10540 ]>
10541 <p>&c;</p>
10542 @@@test:domTree:
10543 document {
10544 document-type { }
10545 element {
10546 general-entity-reference {
10547 node-name: 'c';
10548 is-expanded: false;
10549 }
10550 }
10551 }
10552 @@XMLTest:
10553 @@@QName: xp.reptxt.element.content.ger.entity.declared.standalone.4.test
10554 @@@DEnt:
10555 @@@@test:value:
10556 <?xml version="1.0" standalone="yes"?>
10557 <!DOCTYPE p [
10558 <!ENTITY % para SYSTEM "para">
10559 %para;
10560 <!ENTITY c "&entity;">
10561 ]>
10562 <p>&c;</p>
10563 @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
10564 @@XMLTest:
10565 @@@QName: xp.reptxt.element.content.ger.entity.declared.standalone.-3.test
10566 @@@DEnt:
10567 @@@@test:value:
10568 <?xml version="1.0" standalone="no"?>
10569 <!DOCTYPE p [
10570 <!ENTITY c "&entity;">
10571 <!ENTITY % para SYSTEM "para">
10572 %para;
10573 ]>
10574 <p>&c;</p>
10575 @@@test:domTree:
10576 document {
10577 document-type { }
10578 element {
10579 general-entity-reference {
10580 node-name: 'c';
10581 is-expanded: true;
10582 general-entity-reference {
10583 node-name: 'entity';
10584 is-expanded: false;
10585 }
10586 }
10587 }
10588 }
10589 @@XMLTest:
10590 @@@QName:
10591 xp.reptxt.element.content.ger.entity.declared.standalone.-3.2.test
10592 @@@DEnt:
10593 @@@@test:value:
10594 <?xml version="1.0" standalone="no"?>
10595 <!DOCTYPE p [
10596 <!ENTITY % para SYSTEM "para">
10597 %para;
10598 <!ENTITY c "&entity;">
10599 ]>
10600 <p>&c;</p>
10601 @@@test:domTree:
10602 document {
10603 document-type { }
10604 element {
10605 general-entity-reference {
10606 node-name: 'c';
10607 is-expanded: false;
10608 }
10609 }
10610 }
10611 @@XMLTest:
10612 @@@QName: xp.reptxt.element.content.ger.entity.declared.standalone.-4.test
10613 @@@DEnt:
10614 @@@@test:value:
10615 <!DOCTYPE p [
10616 <!ENTITY c "&entity;">
10617 <!ENTITY % para SYSTEM "para">
10618 %para;
10619 ]>
10620 <p>&c;</p>
10621 @@@test:domTree:
10622 document {
10623 document-type { }
10624 element {
10625 general-entity-reference {
10626 node-name: 'c';
10627 is-expanded: true;
10628 general-entity-reference {
10629 node-name: 'entity';
10630 is-expanded: false;
10631 }
10632 }
10633 }
10634 }
10635 @@XMLTest:
10636 @@@QName:
10637 xp.reptxt.element.content.ger.entity.declared.standalone.-4.2.test
10638 @@@DEnt:
10639 @@@@test:value:
10640 <!DOCTYPE p [
10641 <!ENTITY % para SYSTEM "para">
10642 %para;
10643 <!ENTITY c "&entity;">
10644 ]>
10645 <p>&c;</p>
10646 @@@test:domTree:
10647 document {
10648 document-type { }
10649 element {
10650 general-entity-reference {
10651 node-name: 'c';
10652 is-expanded: false;
10653 }
10654 }
10655 }
10656 @@XMLTest:
10657 @@@QName: xp.reptxt.element.content.ger.entity.declared.standalone.5.test
10658 @@@DEnt:
10659 @@@@test:value:
10660 <?xml version="1.0" standalone="yes"?>
10661 <!DOCTYPE p SYSTEM "dtd" [
10662 <!ENTITY c "&entity;">
10663 ]>
10664 <p>&c;</p>
10665 @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
10666 @@XMLTest:
10667 @@@QName: xp.reptxt.element.content.ger.entity.declared.standalone.-5.test
10668 @@@DEnt:
10669 @@@@test:value:
10670 <?xml version="1.0" standalone="no"?>
10671 <!DOCTYPE p SYSTEM "dtd" [
10672 <!ENTITY c "&entity;">
10673 ]>
10674 <p>&c;</p>
10675 @@@test:domTree:
10676 document {
10677 document-type { }
10678 element {
10679 general-entity-reference {
10680 node-name: 'c';
10681 is-expanded: true;
10682 general-entity-reference {
10683 node-name: 'entity';
10684 is-expanded: false;
10685 }
10686 }
10687 }
10688 }
10689 @@XMLTest:
10690 @@@QName: xp.reptxt.element.content.ger.entity.declared.standalone.-6.test
10691 @@@DEnt:
10692 @@@@test:value:
10693 <!DOCTYPE p SYSTEM "dtd" [<!ENTITY c "&entity;">]>
10694 <p>&c;</p>
10695 @@@test:domTree:
10696 document {
10697 document-type { }
10698 element {
10699 general-entity-reference {
10700 node-name: 'c';
10701 is-expanded: true;
10702 general-entity-reference {
10703 node-name: 'entity';
10704 is-expanded: false;
10705 }
10706 }
10707 }
10708 }
10709
10710 @@XMLTest:
10711 @@@QName: xp.attval.ger.entity.declared.nodtd.1.test
10712 @@@DEnt:
10713 @@@@test:value:
10714 <p a="&entity;"/>
10715 @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 7)..(1, 14); }
10716 @@XMLTest:
10717 @@@QName: xp.attval.ger.entity.declared.nodtd.2.test
10718 @@@DEnt:
10719 @@@@test:value:
10720 <?xml version="1.0" standalone="yes"?>
10721 <p a="&entity;"/>
10722 @@@c:erred: <[[xp|wf-entity-declared]]> { (2, 7)..(2, 14); }
10723 @@XMLTest:
10724 @@@QName: xp.attval.ger.entity.declared.nodtd.3.test
10725 @@@DEnt:
10726 @@@@test:value:
10727 <?xml version="1.0" standalone="no"?>
10728 <p a="&entity;"/>
10729 @@@c:erred: <[[xp|wf-entity-declared]]> { (2, 7)..(2, 14); }
10730 @@XMLTest:
10731 @@@QName: xp.attval.ger.entity.declared.nodtd.-1.test
10732 @@@DEnt:
10733 @@@@test:value:
10734 <p a="&lt;&gt;&amp;&quot;&apos;"/>
10735 @@@test:domTree:
10736 document {
10737 element {
10738 attribute {
10739 node-name: 'a';
10740 text-content: '<>&"' U+0027;
10741 }
10742 }
10743 }
10744 @@XMLTest:
10745 @@@QName: xp.attval.ger.entity.declared.nopref.1.test
10746 @@@DEnt:
10747 @@@@test:value:
10748 <!DOCTYPE p []>
10749 <p a="&entity;"/>
10750 @@@c:erred: <[[xp|wf-entity-declared]]> { (2, 7)..(2, 14); }
10751 @@XMLTest:
10752 @@@QName: xp.attval.ger.entity.declared.nopref.2.test
10753 @@@DEnt:
10754 @@@@test:value:
10755 <!DOCTYPE p [
10756 <!ENTITY other "aa">
10757 <!ENTITY % another "aa">
10758 ]>
10759 <p a="&entity;"/>
10760 @@@c:erred: <[[xp|wf-entity-declared]]> { (5, 7)..(5, 14); }
10761 @@XMLTest:
10762 @@@QName: xp.attval.ger.entity.declared.nopref.3.test
10763 @@@DEnt:
10764 @@@@test:value:
10765 <?xml version="1.0" standalone="yes"?>
10766 <!DOCTYPE p []>
10767 <p a="&entity;"/>
10768 @@@c:erred: <[[xp|wf-entity-declared]]> { (3, 7)..(3, 14); }
10769 @@XMLTest:
10770 @@@QName: xp.attval.ger.entity.declared.nopref.4.test
10771 @@@DEnt:
10772 @@@@test:value:
10773 <?xml version="1.0" standalone="no"?>
10774 <!DOCTYPE p []>
10775 <p a="&entity;"/>
10776 @@@c:erred: <[[xp|wf-entity-declared]]> { (3, 7)..(3, 14); }
10777 @@XMLTest:
10778 @@@QName: xp.attval.ger.entity.declared.nopref.5.test
10779 @@@DEnt:
10780 @@@@test:value:
10781 <?xml version="1.0" standalone="yes"?>
10782 <!DOCTYPE p [
10783 <!ENTITY other "aa">
10784 <!ENTITY % another "aa">
10785 ]>
10786 <p a="&entity;"/>
10787 @@@c:erred: <[[xp|wf-entity-declared]]> { (6, 7)..(6, 14); }
10788 @@XMLTest:
10789 @@@QName: xp.attval.ger.entity.declared.nopref.6.test
10790 @@@DEnt:
10791 @@@@test:value:
10792 <?xml version="1.0" standalone="no"?>
10793 <!DOCTYPE p [
10794 <!ENTITY other "aa">
10795 <!ENTITY % another "aa">
10796 ]>
10797 <p a="&entity;"/>
10798 @@@c:erred: <[[xp|wf-entity-declared]]> { (6, 7)..(6, 14); }
10799 @@XMLTest:
10800 @@@QName: xp.attval.ger.entity.declared.nopref.-1.test
10801 @@@DEnt:
10802 @@@@test:value:
10803 <!DOCTYPE p [
10804 <!ENTITY entity "value">
10805 ]>
10806 <p a="&entity;"/>
10807 @@@test:domTree:
10808 document {
10809 document-type {
10810 general-entity {
10811 node-name: 'entity';
10812 text-content: 'value';
10813 }
10814 }
10815 element {
10816 attribute {
10817 node-name: 'a';
10818 general-entity-reference {
10819 node-name: 'entity';
10820 is-expanded: true;
10821 text-content: 'value';
10822 }
10823 }
10824 }
10825 }
10826 @@XMLTest:
10827 @@@QName: xp.attval.ger.entity.declared.nopref.-2.test
10828 @@@DEnt:
10829 @@@@test:value:
10830 <!DOCTYPE p [
10831 <!ENTITY entity "value">
10832 <!ENTITY another SYSTEM "another">
10833 ]>
10834 <p a="&entity;"/>
10835 @@@test:domTree:
10836 document {
10837 document-type {
10838 general-entity {
10839 node-name: 'entity';
10840 text-content: 'value';
10841 has-replacement-tree: true;
10842 }
10843 general-entity {
10844 node-name: 'another';
10845 public-id: null;
10846 system-id: 'another';
10847 has-replacement-tree: false;
10848 }
10849 }
10850 element {
10851 attribute {
10852 node-name: 'a';
10853 general-entity-reference {
10854 node-name: 'entity';
10855 is-expanded: true;
10856 text-content: 'value';
10857 }
10858 }
10859 }
10860 }
10861 @@XMLTest:
10862 @@@QName: xp.attval.ger.entity.declared.standalone.1.test
10863 @@@DEnt:
10864 @@@@test:value:
10865 <?xml version="1.0" standalone="yes"?>
10866 <p a="&entity;"/>
10867 @@@c:erred: <[[xp|wf-entity-declared]]> { (2, 7)..(2, 14); }
10868 @@XMLTest:
10869 @@@QName: xp.attval.ger.entity.declared.standalone.2.test
10870 @@@DEnt:
10871 @@@@test:value:
10872 <?xml version="1.0" standalone="yes"?>
10873 <!DOCTYPE p []>
10874 <p a="&entity;"/>
10875 @@@c:erred: <[[xp|wf-entity-declared]]> { (3, 7)..(3, 14); }
10876 @@XMLTest:
10877 @@@QName: xp.attval.ger.entity.declared.standalone.3.test
10878 @@@DEnt:
10879 @@@@test:value:
10880 <?xml version="1.0" standalone="yes"?>
10881 <!DOCTYPE p [
10882 <!ENTITY % para "<!-- -->">
10883 %para;
10884 ]>
10885 <p a="&entity;"/>
10886 @@@c:erred: <[[xp|wf-entity-declared]]> { (6, 7)..(6, 14); }
10887 @@XMLTest:
10888 @@@QName: xp.attval.ger.entity.declared.standalone.-1.test
10889 @@@DEnt:
10890 @@@@test:value:
10891 <?xml version="1.0" standalone="no"?>
10892 <!DOCTYPE p [
10893 <!ENTITY % para "<!-- -->">
10894 %para;
10895 ]>
10896 <p a="&entity;"/>
10897 @@@test:domTree:
10898 document {
10899 document-type { }
10900 element {
10901 attribute {
10902 node-name: 'a';
10903 general-entity-reference {
10904 is-expanded: false;
10905 }
10906 }
10907 }
10908 }
10909 @@XMLTest:
10910 @@@QName: xp.attval.ger.entity.declared.standalone.-2.test
10911 @@@DEnt:
10912 @@@@test:value:
10913 <!DOCTYPE p [
10914 <!ENTITY % para "<!-- -->">
10915 %para;
10916 ]>
10917 <p a="&entity;"/>
10918 @@@test:domTree:
10919 document {
10920 document-type { }
10921 element {
10922 attribute {
10923 node-name: 'a';
10924 general-entity-reference {
10925 is-expanded: false;
10926 }
10927 }
10928 }
10929 }
10930 @@XMLTest:
10931 @@@QName: xp.attval.ger.entity.declared.standalone.4.test
10932 @@@DEnt:
10933 @@@@test:value:
10934 <?xml version="1.0" standalone="yes"?>
10935 <!DOCTYPE p [
10936 <!ENTITY % para SYSTEM "para">
10937 %para;
10938 ]>
10939 <p a="&entity;"/>
10940 @@@c:erred: <[[xp|wf-entity-declared]]> { (6, 7)..(6, 14); }
10941 @@XMLTest:
10942 @@@QName: xp.attval.ger.entity.declared.standalone.-3.test
10943 @@@DEnt:
10944 @@@@test:value:
10945 <?xml version="1.0" standalone="no"?>
10946 <!DOCTYPE p [
10947 <!ENTITY % para SYSTEM "para">
10948 %para;
10949 ]>
10950 <p a="&entity;"/>
10951 @@@test:domTree:
10952 document {
10953 document-type { }
10954 element {
10955 attribute {
10956 node-name: 'a';
10957 general-entity-reference {
10958 is-expanded: false;
10959 }
10960 }
10961 }
10962 }
10963 @@XMLTest:
10964 @@@QName: xp.attval.ger.entity.declared.standalone.-4.test
10965 @@@DEnt:
10966 @@@@test:value:
10967 <!DOCTYPE p [
10968 <!ENTITY % para SYSTEM "para">
10969 %para;
10970 ]>
10971 <p a="&entity;"/>
10972 @@@test:domTree:
10973 document {
10974 document-type { }
10975 element {
10976 attribute {
10977 node-name: 'a';
10978 general-entity-reference {
10979 is-expanded: false;
10980 }
10981 }
10982 }
10983 }
10984 @@XMLTest:
10985 @@@QName: xp.attval.ger.entity.declared.standalone.5.test
10986 @@@DEnt:
10987 @@@@test:value:
10988 <?xml version="1.0" standalone="yes"?>
10989 <!DOCTYPE p SYSTEM "dtd">
10990 <p a="&entity;"/>
10991 @@@c:erred: <[[xp|wf-entity-declared]]> { (3, 7)..(3, 14); }
10992 @@XMLTest:
10993 @@@QName: xp.attval.ger.entity.declared.standalone.-5.test
10994 @@@DEnt:
10995 @@@@test:value:
10996 <?xml version="1.0" standalone="no"?>
10997 <!DOCTYPE p SYSTEM "dtd">
10998 <p a="&entity;"/>
10999 @@@test:domTree:
11000 document {
11001 document-type { }
11002 element {
11003 attribute {
11004 node-name: 'a';
11005 general-entity-reference {
11006 is-expanded: false;
11007 }
11008 }
11009 }
11010 }
11011 @@XMLTest:
11012 @@@QName: xp.attval.ger.entity.declared.standalone.-6.test
11013 @@@DEnt:
11014 @@@@test:value:
11015 <!DOCTYPE p SYSTEM "dtd">
11016 <p a="&entity;"/>
11017 @@@test:domTree:
11018 document {
11019 document-type { }
11020 element {
11021 attribute {
11022 node-name: 'a';
11023 general-entity-reference {
11024 is-expanded: false;
11025 }
11026 }
11027 }
11028 }
11029
11030 @@XMLTest:
11031 @@@QName: xp.reptxt.attval.ger.entity.declared.nopref.1.test
11032 @@@DEnt:
11033 @@@@test:value:
11034 <!DOCTYPE p [
11035 <!ENTITY c "&entity;">
11036 ]>
11037 <p a="&c;"/>
11038 @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
11039 @@XMLTest:
11040 @@@QName: xp.reptxt.attval.ger.entity.declared.nopref.2.test
11041 @@@DEnt:
11042 @@@@test:value:
11043 <!DOCTYPE p [
11044 <!ENTITY other "aa">
11045 <!ENTITY % another "aa">
11046 <!ENTITY c "&entity;">
11047 ]>
11048 <p a="&c;"/>
11049 @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
11050 @@XMLTest:
11051 @@@QName: xp.reptxt.attval.ger.entity.declared.nopref.3.test
11052 @@@DEnt:
11053 @@@@test:value:
11054 <?xml version="1.0" standalone="yes"?>
11055 <!DOCTYPE p [
11056 <!ENTITY c "&entity;">
11057 ]>
11058 <p a="&c;"/>
11059 @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
11060 @@XMLTest:
11061 @@@QName: xp.reptxt.attval.ger.entity.declared.nopref.4.test
11062 @@@DEnt:
11063 @@@@test:value:
11064 <?xml version="1.0" standalone="no"?>
11065 <!DOCTYPE p [
11066 <!ENTITY c "&entity;">
11067 ]>
11068 <p a="&c;"/>
11069 @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
11070 @@XMLTest:
11071 @@@QName: xp.reptxt.attval.ger.entity.declared.nopref.5.test
11072 @@@DEnt:
11073 @@@@test:value:
11074 <?xml version="1.0" standalone="yes"?>
11075 <!DOCTYPE p [
11076 <!ENTITY other "aa">
11077 <!ENTITY % another "aa">
11078 <!ENTITY c "&entity;">
11079 ]>
11080 <p a="&c;"/>
11081 @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
11082 @@XMLTest:
11083 @@@QName: xp.reptxt.attval.ger.entity.declared.nopref.6.test
11084 @@@DEnt:
11085 @@@@test:value:
11086 <?xml version="1.0" standalone="no"?>
11087 <!DOCTYPE p [
11088 <!ENTITY other "aa">
11089 <!ENTITY % another "aa">
11090 <!ENTITY c "&entity;">
11091 ]>
11092 <p a="&c;"/>
11093 @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
11094 @@XMLTest:
11095 @@@QName: xp.reptxt.attval.ger.entity.declared.nopref.-1.test
11096 @@@DEnt:
11097 @@@@test:value:
11098 <!DOCTYPE p [
11099 <!ENTITY entity "value">
11100 <!ENTITY c "&entity;">
11101 ]>
11102 <p a="&c;"/>
11103 @@@test:domTree:
11104 document {
11105 document-type {
11106 general-entity {
11107 node-name: 'entity';
11108 text-content: 'value';
11109 }
11110 general-entity {
11111 node-name: 'c';
11112 general-entity-reference {
11113 node-name: 'entity';
11114 text-content: 'value';
11115 }
11116 }
11117 }
11118 element {
11119 attribute {
11120 node-name: 'a';
11121 general-entity-reference {
11122 node-name: 'c';
11123 general-entity-reference {
11124 node-name: 'entity';
11125 text-content: 'value';
11126 }
11127 }
11128 }
11129 }
11130 }
11131 @@XMLTest:
11132 @@@QName: xp.reptxt.attval.ger.entity.declared.nopref.-2.test
11133 @@@DEnt:
11134 @@@@test:value:
11135 <!DOCTYPE p [
11136 <!ENTITY entity "value">
11137 <!ENTITY another SYSTEM "another">
11138 <!ENTITY c "&entity;">
11139 ]>
11140 <p a="&c;"/>
11141 @@@test:domTree:
11142 document {
11143 document-type {
11144 general-entity {
11145 node-name: 'entity';
11146 text-content: 'value';
11147 }
11148 general-entity {
11149 node-name: 'c';
11150 general-entity-reference {
11151 node-name: 'entity';
11152 text-content: 'value';
11153 }
11154 }
11155 general-entity {
11156 node-name: 'another';
11157 public-id: null;
11158 system-id: 'another';
11159 has-replacement-tree: false;
11160 }
11161 }
11162 element {
11163 attribute {
11164 node-name: 'a';
11165 general-entity-reference {
11166 node-name: 'c';
11167 general-entity-reference {
11168 node-name: 'entity';
11169 text-content: 'value';
11170 }
11171 }
11172 }
11173 }
11174 }
11175 @@XMLTest:
11176 @@@QName: xp.reptxt.attval.ger.entity.declared.standalone.2.test
11177 @@@DEnt:
11178 @@@@test:value:
11179 <?xml version="1.0" standalone="yes"?>
11180 <!DOCTYPE p [
11181 <!ENTITY c "&entity;">
11182 ]>
11183 <p a="&c;"/>
11184 @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
11185 @@XMLTest:
11186 @@@QName: xp.reptxt.attval.ger.entity.declared.standalone.3.test
11187 @@@DEnt:
11188 @@@@test:value:
11189 <?xml version="1.0" standalone="yes"?>
11190 <!DOCTYPE p [
11191 <!ENTITY % para "<!-- -->">
11192 %para;
11193 <!ENTITY c "&entity;">
11194 ]>
11195 <p a="&c;"/>
11196 @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
11197 @@XMLTest:
11198 @@@QName: xp.reptxt.attval.ger.entity.declared.standalone.-1.test
11199 @@@DEnt:
11200 @@@@test:value:
11201 <?xml version="1.0" standalone="no"?>
11202 <!DOCTYPE p [
11203 <!ENTITY c "&entity;">
11204 <!ENTITY % para "<!-- -->">
11205 %para;
11206 ]>
11207 <p a="&c;"/>
11208 @@@test:domTree:
11209 document {
11210 document-type {
11211 general-entity {
11212 node-name: 'c';
11213 general-entity-reference {
11214 node-name: 'entity';
11215 is-expanded: false;
11216 }
11217 }
11218 }
11219 element {
11220 attribute {
11221 node-name: 'a';
11222 general-entity-reference {
11223 node-name: 'c';
11224 general-entity-reference {
11225 node-name: 'entity';
11226 is-expanded: false;
11227 }
11228 }
11229 }
11230 }
11231 }
11232 @@XMLTest:
11233 @@@QName:
11234 xp.reptxt.attval.ger.entity.declared.standalone.-1.2.test
11235 @@@DEnt:
11236 @@@@test:value:
11237 <?xml version="1.0" standalone="no"?>
11238 <!DOCTYPE p [
11239 <!ENTITY % para "<!-- -->">
11240 %para;
11241 <!ENTITY c "&entity;">
11242 ]>
11243 <p a="&c;"/>
11244 @@@test:domTree:
11245 document {
11246 document-type { }
11247 element {
11248 attribute {
11249 node-name: 'a';
11250 general-entity-reference {
11251 node-name: 'c';
11252 is-expanded: false;
11253 }
11254 }
11255 }
11256 }
11257 @@XMLTest:
11258 @@@QName: xp.reptxt.attval.ger.entity.declared.standalone.-2.test
11259 @@@DEnt:
11260 @@@@test:value:
11261 <!DOCTYPE p [
11262 <!ENTITY c "&entity;">
11263 <!ENTITY % para "<!-- -->">
11264 %para;
11265 ]>
11266 <p a="&c;"/>
11267 @@@test:domTree:
11268 document {
11269 document-type { }
11270 element {
11271 attribute {
11272 node-name: 'a';
11273 general-entity-reference {
11274 node-name: 'c';
11275 is-expanded: true;
11276 general-entity-reference {
11277 node-name: 'entity';
11278 is-expanded: false;
11279 }
11280 }
11281 }
11282 }
11283 }
11284 @@XMLTest:
11285 @@@QName:
11286 xp.reptxt.attval.ger.entity.declared.standalone.-2.2.test
11287 @@@DEnt:
11288 @@@@test:value:
11289 <!DOCTYPE p [
11290 <!ENTITY % para "<!-- -->">
11291 %para;
11292 <!ENTITY c "&entity;">
11293 ]>
11294 <p a="&c;"/>
11295 @@@test:domTree:
11296 document {
11297 document-type { }
11298 element {
11299 attribute {
11300 node-name: 'a';
11301 general-entity-reference {
11302 node-name: 'c';
11303 is-expanded: false;
11304 }
11305 }
11306 }
11307 }
11308 @@XMLTest:
11309 @@@QName: xp.reptxt.attval.ger.entity.declared.standalone.4.test
11310 @@@DEnt:
11311 @@@@test:value:
11312 <?xml version="1.0" standalone="yes"?>
11313 <!DOCTYPE p [
11314 <!ENTITY % para SYSTEM "para">
11315 %para;
11316 <!ENTITY c "&entity;">
11317 ]>
11318 <p a="&c;"/>
11319 @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
11320 @@XMLTest:
11321 @@@QName: xp.reptxt.attval.ger.entity.declared.standalone.-3.test
11322 @@@DEnt:
11323 @@@@test:value:
11324 <?xml version="1.0" standalone="no"?>
11325 <!DOCTYPE p [
11326 <!ENTITY c "&entity;">
11327 <!ENTITY % para SYSTEM "para">
11328 %para;
11329 ]>
11330 <p a="&c;"/>
11331 @@@test:domTree:
11332 document {
11333 document-type { }
11334 element {
11335 attribute {
11336 node-name: 'a';
11337 general-entity-reference {
11338 node-name: 'c';
11339 is-expanded: true;
11340 general-entity-reference {
11341 node-name: 'entity';
11342 is-expanded: false;
11343 }
11344 }
11345 }
11346 }
11347 }
11348 @@XMLTest:
11349 @@@QName:
11350 xp.reptxt.attval.ger.entity.declared.standalone.-3.2.test
11351 @@@DEnt:
11352 @@@@test:value:
11353 <?xml version="1.0" standalone="no"?>
11354 <!DOCTYPE p [
11355 <!ENTITY % para SYSTEM "para">
11356 %para;
11357 <!ENTITY c "&entity;">
11358 ]>
11359 <p a="&c;"/>
11360 @@@test:domTree:
11361 document {
11362 document-type { }
11363 element {
11364 attribute {
11365 node-name: 'a';
11366 general-entity-reference {
11367 node-name: 'c';
11368 is-expanded: false;
11369 }
11370 }
11371 }
11372 }
11373 @@XMLTest:
11374 @@@QName: xp.reptxt.attval.ger.entity.declared.standalone.-4.test
11375 @@@DEnt:
11376 @@@@test:value:
11377 <!DOCTYPE p [
11378 <!ENTITY c "&entity;">
11379 <!ENTITY % para SYSTEM "para">
11380 %para;
11381 ]>
11382 <p a="&c;"/>
11383 @@@test:domTree:
11384 document {
11385 document-type { }
11386 element {
11387 attribute {
11388 node-name: 'a';
11389 general-entity-reference {
11390 node-name: 'c';
11391 is-expanded: true;
11392 general-entity-reference {
11393 node-name: 'entity';
11394 is-expanded: false;
11395 }
11396 }
11397 }
11398 }
11399 }
11400 @@XMLTest:
11401 @@@QName:
11402 xp.reptxt.attval.ger.entity.declared.standalone.-4.2.test
11403 @@@DEnt:
11404 @@@@test:value:
11405 <!DOCTYPE p [
11406 <!ENTITY % para SYSTEM "para">
11407 %para;
11408 <!ENTITY c "&entity;">
11409 ]>
11410 <p a="&c;"/>
11411 @@@test:domTree:
11412 document {
11413 document-type { }
11414 element {
11415 attribute {
11416 node-name: 'a';
11417 general-entity-reference {
11418 node-name: 'c';
11419 is-expanded: false;
11420 }
11421 }
11422 }
11423 }
11424 @@XMLTest:
11425 @@@QName: xp.reptxt.attval.ger.entity.declared.standalone.5.test
11426 @@@DEnt:
11427 @@@@test:value:
11428 <?xml version="1.0" standalone="yes"?>
11429 <!DOCTYPE p SYSTEM "dtd" [
11430 <!ENTITY c "&entity;">
11431 ]>
11432 <p a="&c;"/>
11433 @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
11434 @@XMLTest:
11435 @@@QName: xp.reptxt.attval.ger.entity.declared.standalone.-5.test
11436 @@@DEnt:
11437 @@@@test:value:
11438 <?xml version="1.0" standalone="no"?>
11439 <!DOCTYPE p SYSTEM "dtd" [
11440 <!ENTITY c "&entity;">
11441 ]>
11442 <p a="&c;"/>
11443 @@@test:domTree:
11444 document {
11445 document-type { }
11446 element {
11447 attribute {
11448 node-name: 'a';
11449 general-entity-reference {
11450 node-name: 'c';
11451 is-expanded: true;
11452 general-entity-reference {
11453 node-name: 'entity';
11454 is-expanded: false;
11455 }
11456 }
11457 }
11458 }
11459 }
11460 @@XMLTest:
11461 @@@QName: xp.reptxt.attval.ger.entity.declared.standalone.-6.test
11462 @@@DEnt:
11463 @@@@test:value:
11464 <!DOCTYPE p SYSTEM "dtd" [<!ENTITY c "&entity;">]>
11465 <p a="&c;"/>
11466 @@@test:domTree:
11467 document {
11468 document-type { }
11469 element {
11470 attribute {
11471 node-name: 'a';
11472 general-entity-reference {
11473 node-name: 'c';
11474 is-expanded: true;
11475 general-entity-reference {
11476 node-name: 'entity';
11477 is-expanded: false;
11478 }
11479 }
11480 }
11481 }
11482 }
11483
11484 @@XMLTest:
11485 @@@QName: xp.attlist.dup.entity.declared.1.test
11486 @@@DEnt:
11487 @@@@test:value:
11488 <!DOCTYPE p [
11489 <!ATTLIST p a CDATA "no-entity">
11490 <!ATTLIST p a CDATA "&entity;">
11491 ]>
11492 <p/>
11493 @@@c:erred: <[[xp|wf-entity-declared]]> { (3, 21)..(3, 29); }
11494 @@XMLTest:
11495 @@@QName: xp.attlist.dup.entity.declared.2.test
11496 @@@DEnt:
11497 @@@@test:value:
11498 <!DOCTYPE p [
11499 <!ATTLIST p a CDATA "no-entity"
11500 a CDATA "&entity;">
11501 ]>
11502 <p/>
11503 @@@c:erred: <[[xp|wf-entity-declared]]> { (3, 21)..(3, 29); }
11504 @@XMLTest:
11505 @@@QName: xp.attlist.unused.entity.declared.1.test
11506 @@@DEnt:
11507 @@@@test:value:
11508 <!DOCTYPE p [
11509 <!ATTLIST q a CDATA "&entity;">
11510 ]>
11511 <p/>
11512 @@@c:erred: <[[xp|wf-entity-declared]]> { (2, 21)..(2, 29); }
11513 @@XMLTest:
11514 @@@QName: xp.attlist.unused.entity.declared.2.test
11515 @@@DEnt:
11516 @@@@test:value:
11517 <!DOCTYPE p [
11518 <!ATTLIST p a CDATA "&entity;">
11519 ]>
11520 <p a="bb"/>
11521 @@@c:erred: <[[xp|wf-entity-declared]]> { (2, 21)..(2, 29); }
11522
11523 @@XMLTest:
11524 @@@QName: xp.reptxt.attlist.attval.ger.entity.declared.nopref.1.test
11525 @@@DEnt:
11526 @@@@test:value:
11527 <!DOCTYPE p [
11528 <!ENTITY c "&entity;">
11529 <!ATTLIST p a CDATA "&c;">
11530 ]>
11531 <p/>
11532 @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
11533 @@XMLTest:
11534 @@@QName: xp.reptxt.attlist.attval.ger.entity.declared.nopref.2.test
11535 @@@DEnt:
11536 @@@@test:value:
11537 <!DOCTYPE p [
11538 <!ENTITY other "aa">
11539 <!ENTITY % another "aa">
11540 <!ENTITY c "&entity;">
11541 <!ATTLIST p a CDATA "&c;">
11542 ]>
11543 <p/>
11544 @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
11545 @@XMLTest:
11546 @@@QName: xp.reptxt.attlist.attval.ger.entity.declared.nopref.3.test
11547 @@@DEnt:
11548 @@@@test:value:
11549 <?xml version="1.0" standalone="yes"?>
11550 <!DOCTYPE p [
11551 <!ENTITY c "&entity;">
11552 <!ATTLIST p a CDATA "&c;">
11553 ]>
11554 <p/>
11555 @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
11556 @@XMLTest:
11557 @@@QName: xp.reptxt.attlist.attval.ger.entity.declared.nopref.4.test
11558 @@@DEnt:
11559 @@@@test:value:
11560 <?xml version="1.0" standalone="no"?>
11561 <!DOCTYPE p [
11562 <!ENTITY c "&entity;">
11563 <!ATTLIST p a CDATA "&c;">
11564 ]>
11565 <p/>
11566 @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
11567 @@XMLTest:
11568 @@@QName: xp.reptxt.attlist.attval.ger.entity.declared.nopref.5.test
11569 @@@DEnt:
11570 @@@@test:value:
11571 <?xml version="1.0" standalone="yes"?>
11572 <!DOCTYPE p [
11573 <!ENTITY other "aa">
11574 <!ENTITY % another "aa">
11575 <!ENTITY c "&entity;">
11576 <!ATTLIST p a CDATA "&c;">
11577 ]>
11578 <p/>
11579 @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
11580 @@XMLTest:
11581 @@@QName: xp.reptxt.attlist.attval.ger.entity.declared.nopref.6.test
11582 @@@DEnt:
11583 @@@@test:value:
11584 <?xml version="1.0" standalone="no"?>
11585 <!DOCTYPE p [
11586 <!ENTITY other "aa">
11587 <!ENTITY % another "aa">
11588 <!ENTITY c "&entity;">
11589 <!ATTLIST p a CDATA "&c;">
11590 ]>
11591 <p/>
11592 @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
11593 @@XMLTest:
11594 @@@QName: xp.reptxt.attlist.attval.ger.entity.declared.nopref.-1.test
11595 @@@DEnt:
11596 @@@@test:value:
11597 <!DOCTYPE p [
11598 <!ENTITY entity "value">
11599 <!ENTITY c "&entity;">
11600 <!ATTLIST p a CDATA "&c;">
11601 ]>
11602 <p/>
11603 @@@test:domTree:
11604 document {
11605 document-type {
11606 general-entity {
11607 node-name: 'entity';
11608 text-content: 'value';
11609 }
11610 general-entity {
11611 node-name: 'c';
11612 general-entity-reference {
11613 node-name: 'entity';
11614 is-expanded: true;
11615 text-content: 'value';
11616 }
11617 }
11618 element-type-definition {
11619 node-name: 'p';
11620 attribute-definition {
11621 node-name: 'a';
11622 general-entity-reference {
11623 node-name: 'c';
11624 is-expanded: true;
11625 general-entity-reference {
11626 node-name: 'entity';
11627 is-expanded: true;
11628 text-content: 'value';
11629 }
11630 }
11631 }
11632 }
11633 }
11634 element {
11635 attribute {
11636 node-name: 'a';
11637 specified: false;
11638 general-entity-reference {
11639 node-name: 'c';
11640 general-entity-reference {
11641 node-name: 'entity';
11642 text-content: 'value';
11643 }
11644 }
11645 }
11646 }
11647 }
11648 @@XMLTest:
11649 @@@QName: xp.reptxt.attlist.attval.ger.entity.declared.nopref.-2.test
11650 @@@DEnt:
11651 @@@@test:value:
11652 <!DOCTYPE p [
11653 <!ENTITY entity "value">
11654 <!ENTITY another SYSTEM "another">
11655 <!ENTITY c "&entity;">
11656 <!ATTLIST p a CDATA "&c;">
11657 ]>
11658 <p/>
11659 @@@test:domTree:
11660 document {
11661 document-type {
11662 general-entity {
11663 node-name: 'entity';
11664 text-content: 'value';
11665 }
11666 general-entity {
11667 node-name: 'c';
11668 general-entity-reference {
11669 node-name: 'entity';
11670 text-content: 'value';
11671 }
11672 }
11673 general-entity {
11674 node-name: 'another';
11675 public-id: null;
11676 system-id: 'another';
11677 has-replacement-tree: false;
11678 }
11679 element-type-definition {
11680 node-name: 'p';
11681 attribute-definition {
11682 node-name: 'a';
11683 general-entity-reference {
11684 node-name: 'c';
11685 is-expanded: true;
11686 general-entity-reference {
11687 node-name: 'entity';
11688 is-expanded: true;
11689 text-content: 'value';
11690 }
11691 }
11692 }
11693 }
11694 }
11695 element {
11696 attribute {
11697 node-name: 'a';
11698 specified: false;
11699 general-entity-reference {
11700 node-name: 'c';
11701 general-entity-reference {
11702 node-name: 'entity';
11703 text-content: 'value';
11704 }
11705 }
11706 }
11707 }
11708 }
11709 @@XMLTest:
11710 @@@QName: xp.reptxt.attlist.attval.ger.entity.declared.standalone.2.test
11711 @@@DEnt:
11712 @@@@test:value:
11713 <?xml version="1.0" standalone="yes"?>
11714 <!DOCTYPE p [
11715 <!ENTITY c "&entity;">
11716 <!ATTLIST p a CDATA "&c;">
11717 ]>
11718 <p/>
11719 @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
11720 @@XMLTest:
11721 @@@QName: xp.reptxt.attlist.attval.ger.entity.declared.standalone.3.test
11722 @@@DEnt:
11723 @@@@test:value:
11724 <?xml version="1.0" standalone="yes"?>
11725 <!DOCTYPE p [
11726 <!ENTITY % para "<!-- -->">
11727 %para;
11728 <!ENTITY c "&entity;">
11729 <!ATTLIST p a CDATA "&c;">
11730 ]>
11731 <p/>
11732 @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
11733 @@XMLTest:
11734 @@@QName: xp.reptxt.attlist.attval.ger.entity.declared.standalone.-1.test
11735 @@@DEnt:
11736 @@@@test:value:
11737 <?xml version="1.0" standalone="no"?>
11738 <!DOCTYPE p [
11739 <!ENTITY c "&entity;">
11740 <!ATTLIST p a CDATA "&c;">
11741 <!ENTITY % para "<!-- -->">
11742 %para;
11743 ]>
11744 <p/>
11745 @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
11746 @@XMLTest:
11747 @@@QName:
11748 xp.reptxt.attlist.attval.ger.entity.declared.standalone.-1.2.test
11749 @@@DEnt:
11750 @@@@test:value:
11751 <?xml version="1.0" standalone="no"?>
11752 <!DOCTYPE p [
11753 <!ENTITY % para "<!-- -->">
11754 %para;
11755 <!ENTITY c "&entity;">
11756 <!ATTLIST p a CDATA "&c;">
11757 ]>
11758 <p g="h"/>
11759 @@@test:domTree:
11760 document {
11761 document-type { }
11762 element {
11763 attribute {
11764 node-name: 'g';
11765 text-content: 'h';
11766 }
11767 }
11768 }
11769 @@XMLTest:
11770 @@@QName: xp.reptxt.attlist.attval.ger.entity.declared.standalone.-2.test
11771 @@@DEnt:
11772 @@@@test:value:
11773 <!DOCTYPE p [
11774 <!ENTITY c "&entity;">
11775 <!ATTLIST p a CDATA "&c;">
11776 <!ENTITY % para "<!-- -->">
11777 %para;
11778 ]>
11779 <p/>
11780 @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
11781 @@XMLTest:
11782 @@@QName:
11783 xp.reptxt.attlist.attval.ger.entity.declared.standalone.-2.2.test
11784 @@@DEnt:
11785 @@@@test:value:
11786 <!DOCTYPE p [
11787 <!ENTITY % para "<!-- -->">
11788 %para;
11789 <!ENTITY c "&entity;">
11790 <!ATTLIST p a CDATA "&c;">
11791 ]>
11792 <p g="h"/>
11793 @@@test:domTree:
11794 document {
11795 document-type { }
11796 element {
11797 attribute {
11798 node-name: 'g';
11799 text-content: 'h';
11800 }
11801 }
11802 }
11803 @@XMLTest:
11804 @@@QName: xp.reptxt.attlist.attval.ger.entity.declared.standalone.4.test
11805 @@@DEnt:
11806 @@@@test:value:
11807 <?xml version="1.0" standalone="yes"?>
11808 <!DOCTYPE p [
11809 <!ENTITY % para SYSTEM "para">
11810 %para;
11811 <!ENTITY c "&entity;">
11812 <!ATTLIST p a CDATA "&c;">
11813 ]>
11814 <p/>
11815 @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
11816 @@XMLTest:
11817 @@@QName: xp.reptxt.attlist.attval.ger.entity.declared.standalone.-3.test
11818 @@@DEnt:
11819 @@@@test:value:
11820 <?xml version="1.0" standalone="no"?>
11821 <!DOCTYPE p [
11822 <!ENTITY c "&entity;">
11823 <!ATTLIST p a CDATA "&c;">
11824 <!ENTITY % para SYSTEM "para">
11825 %para;
11826 ]>
11827 <p/>
11828 @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
11829 @@XMLTest:
11830 @@@QName:
11831 xp.reptxt.attlist.attval.ger.entity.declared.standalone.-3.2.test
11832 @@@DEnt:
11833 @@@@test:value:
11834 <?xml version="1.0" standalone="no"?>
11835 <!DOCTYPE p [
11836 <!ENTITY % para SYSTEM "para">
11837 %para;
11838 <!ENTITY c "&entity;">
11839 <!ATTLIST p a CDATA "&c;">
11840 ]>
11841 <p g="h"/>
11842 @@@test:domTree:
11843 document {
11844 document-type { }
11845 element {
11846 attribute {
11847 node-name: 'g';
11848 text-content: 'h';
11849 }
11850 }
11851 }
11852 @@XMLTest:
11853 @@@QName: xp.reptxt.attlist.attval.ger.entity.declared.standalone.-4.test
11854 @@@DEnt:
11855 @@@@test:value:
11856 <!DOCTYPE p [
11857 <!ENTITY c "&entity;">
11858 <!ATTLIST p a CDATA "&c;">
11859 <!ENTITY % para SYSTEM "para">
11860 %para;
11861 ]>
11862 <p/>
11863 @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
11864 @@XMLTest:
11865 @@@QName:
11866 xp.reptxt.attlist.attval.ger.entity.declared.standalone.-4.2.test
11867 @@@DEnt:
11868 @@@@test:value:
11869 <!DOCTYPE p [
11870 <!ENTITY % para SYSTEM "para">
11871 %para;
11872 <!ENTITY c "&entity;">
11873 <!ATTLIST p a CDATA "&c;">
11874 ]>
11875 <p g="h"/>
11876 @@@test:domTree:
11877 document {
11878 document-type { }
11879 element {
11880 attribute {
11881 node-name: 'g';
11882 text-content: 'h';
11883 }
11884 }
11885 }
11886 @@XMLTest:
11887 @@@QName: xp.reptxt.attlist.attval.ger.entity.declared.standalone.5.test
11888 @@@DEnt:
11889 @@@@test:value:
11890 <?xml version="1.0" standalone="yes"?>
11891 <!DOCTYPE p SYSTEM "dtd" [
11892 <!ENTITY c "&entity;">
11893 <!ATTLIST p a CDATA "&c;">
11894 ]>
11895 <p/>
11896 @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
11897 @@XMLTest:
11898 @@@QName: xp.reptxt.attlist.attval.ger.entity.declared.standalone.-5.test
11899 @@@DEnt:
11900 @@@@test:value:
11901 <?xml version="1.0" standalone="no"?>
11902 <!DOCTYPE p SYSTEM "dtd" [
11903 <!ENTITY c "&entity;">
11904 <!ATTLIST p a CDATA "&c;">
11905 ]>
11906 <p/>
11907 @@@test:domTree:
11908 document {
11909 document-type { }
11910 element {
11911 attribute {
11912 node-name: 'a';
11913 specified: false;
11914 general-entity-reference {
11915 node-name: 'c';
11916 is-expanded: true;
11917 general-entity-reference {
11918 node-name: 'entity';
11919 is-expanded: false;
11920 }
11921 }
11922 }
11923 }
11924 }
11925 @@XMLTest:
11926 @@@QName: xp.reptxt.attlist.attval.ger.entity.declared.standalone.-6.test
11927 @@@DEnt:
11928 @@@@test:value:
11929 <!DOCTYPE p SYSTEM "dtd" [<!ENTITY c "&entity;">
11930 <!ATTLIST p a CDATA "&c;">
11931 ]>
11932 <p/>
11933 @@@test:domTree:
11934 document {
11935 document-type { }
11936 element {
11937 attribute {
11938 node-name: 'a';
11939 specified: false;
11940 general-entity-reference {
11941 node-name: 'c';
11942 is-expanded: true;
11943 general-entity-reference {
11944 node-name: 'entity';
11945 is-expanded: false;
11946 }
11947 }
11948 }
11949 }
11950 }
11951
11952 @@XMLTest:
11953 @@@QName: xp.attlist.attval.ger.entity.declared.nopref.1.test
11954 @@@DEnt:
11955 @@@@test:value:
11956 <!DOCTYPE p [
11957 <!ATTLIST p a CDATA "&entity;">
11958 ]>
11959 <p/>
11960 @@@c:erred: <[[xp|wf-entity-declared]]> { (2, 22)..(2, 29); }
11961 @@XMLTest:
11962 @@@QName: xp.attlist.attval.ger.entity.declared.nopref.2.test
11963 @@@DEnt:
11964 @@@@test:value:
11965 <!DOCTYPE p [
11966 <!ENTITY other "aa">
11967 <!ENTITY % another "aa">
11968 <!ATTLIST p a CDATA "&entity;">
11969 ]>
11970 <p/>
11971 @@@c:erred: <[[xp|wf-entity-declared]]> { (4, 22)..(4, 29); }
11972 @@XMLTest:
11973 @@@QName: xp.attlist.attval.ger.entity.declared.nopref.3.test
11974 @@@DEnt:
11975 @@@@test:value:
11976 <?xml version="1.0" standalone="yes"?>
11977 <!DOCTYPE p [
11978 <!ATTLIST p a CDATA "&entity;">
11979 ]>
11980 <p/>
11981 @@@c:erred: <[[xp|wf-entity-declared]]> { (3, 22)..(3, 29); }
11982 @@XMLTest:
11983 @@@QName: xp.attlist.attval.ger.entity.declared.nopref.4.test
11984 @@@DEnt:
11985 @@@@test:value:
11986 <?xml version="1.0" standalone="no"?>
11987 <!DOCTYPE p [
11988 <!ATTLIST p a CDATA "&entity;">
11989 ]>
11990 <p/>
11991 @@@c:erred: <[[xp|wf-entity-declared]]> { (3, 22)..(3, 29); }
11992 @@XMLTest:
11993 @@@QName: xp.attlist.attval.ger.entity.declared.nopref.5.test
11994 @@@DEnt:
11995 @@@@test:value:
11996 <?xml version="1.0" standalone="yes"?>
11997 <!DOCTYPE p [
11998 <!ENTITY other "aa">
11999 <!ENTITY % another "aa">
12000 <!ATTLIST p a CDATA "&entity;">
12001 ]>
12002 <p/>
12003 @@@c:erred: <[[xp|wf-entity-declared]]> { (5, 22)..(5, 29); }
12004 @@XMLTest:
12005 @@@QName: xp.attlist.attval.ger.entity.declared.nopref.6.test
12006 @@@DEnt:
12007 @@@@test:value:
12008 <?xml version="1.0" standalone="no"?>
12009 <!DOCTYPE p [
12010 <!ENTITY other "aa">
12011 <!ENTITY % another "aa">
12012 <!ATTLIST p a CDATA "&entity;">
12013 ]>
12014 <p/>
12015 @@@c:erred: <[[xp|wf-entity-declared]]> { (5, 22)..(5, 29); }
12016 @@XMLTest:
12017 @@@QName: xp.attlist.attval.ger.entity.declared.nopref.-1.test
12018 @@@DEnt:
12019 @@@@test:value:
12020 <!DOCTYPE p [
12021 <!ENTITY entity "value">
12022 <!ATTLIST p a CDATA "&entity;">
12023 ]>
12024 <p/>
12025 @@@test:domTree:
12026 document {
12027 document-type {
12028 general-entity {
12029 node-name: 'entity';
12030 text-content: 'value';
12031 }
12032 element-type-definition {
12033 node-name: 'p';
12034 attribute-definition {
12035 node-name: 'a';
12036 general-entity-reference {
12037 node-name: 'entity';
12038 is-expanded: true;
12039 text-content: 'value';
12040 }
12041 }
12042 }
12043 }
12044 element {
12045 attribute {
12046 node-name: 'a';
12047 specified: false;
12048 general-entity-reference {
12049 node-name: 'entity';
12050 is-expanded: true;
12051 text-content: 'value';
12052 }
12053 }
12054 }
12055 }
12056 @@XMLTest:
12057 @@@QName: xp.attlist.attval.ger.entity.declared.nopref.-1.2.test
12058 @@@DEnt:
12059 @@@@test:value:
12060 <!DOCTYPE p [
12061 <!ATTLIST p a CDATA "&entity;">
12062 <!ENTITY entity "value">
12063 ]>
12064 <p/>
12065 @@@c:erred: <[[xp|wf-entity-declared]]> { (2, 22)..(2, 29); }
12066 @@XMLTest:
12067 @@@QName: xp.attlist.attval.ger.entity.declared.nopref.-2.test
12068 @@@DEnt:
12069 @@@@test:value:
12070 <!DOCTYPE p [
12071 <!ENTITY entity "value">
12072 <!ENTITY another SYSTEM "another">
12073 <!ATTLIST p a CDATA "&entity;">
12074 ]>
12075 <p/>
12076 @@@test:domTree:
12077 document {
12078 document-type {
12079 element-type-definition {
12080 node-name: 'p';
12081 attribute-definition {
12082 node-name: 'a';
12083 general-entity-reference {
12084 node-name: 'entity';
12085 is-expanded: true;
12086 text-content: 'value';
12087 }
12088 }
12089 }
12090 general-entity {
12091 node-name: 'entity';
12092 text-content: 'value';
12093 has-replacement-tree: true;
12094 }
12095 general-entity {
12096 node-name: 'another';
12097 public-id: null;
12098 system-id: 'another';
12099 has-replacement-tree: false;
12100 }
12101 }
12102 element {
12103 attribute {
12104 node-name: 'a';
12105 specified: false;
12106 general-entity-reference {
12107 node-name: 'entity';
12108 is-expanded: true;
12109 text-content: 'value';
12110 }
12111 }
12112 }
12113 }
12114 @@XMLTest:
12115 @@@QName: xp.attlist.attval.ger.entity.declared.nopref.-2.2.test
12116 @@@DEnt:
12117 @@@@test:value:
12118 <!DOCTYPE p [
12119 <!ATTLIST p a CDATA "&entity;">
12120 <!ENTITY entity "value">
12121 <!ENTITY another SYSTEM "another">
12122 ]>
12123 <p/>
12124 @@@c:erred: <[[xp|wf-entity-declared]]> { (2, 22)..(2, 29); }
12125 @@XMLTest:
12126 @@@QName: xp.attlist.attval.ger.entity.declared.standalone.2.test
12127 @@@DEnt:
12128 @@@@test:value:
12129 <?xml version="1.0" standalone="yes"?>
12130 <!DOCTYPE p [
12131 <!ATTLIST p a CDATA "&entity;">
12132 ]>
12133 <p/>
12134 @@@c:erred: <[[xp|wf-entity-declared]]> { (3, 22)..(3, 29); }
12135 @@XMLTest:
12136 @@@QName: xp.attlist.attval.ger.entity.declared.standalone.3.test
12137 @@@DEnt:
12138 @@@@test:value:
12139 <?xml version="1.0" standalone="yes"?>
12140 <!DOCTYPE p [
12141 <!ATTLIST p a CDATA "&entity;">
12142 <!ENTITY % para "<!-- -->">
12143 %para;
12144 ]>
12145 <p/>
12146 @@@c:erred: <[[xp|wf-entity-declared]]> { (3, 22)..(3, 29); }
12147 @@XMLTest:
12148 @@@QName: xp.attlist.attval.ger.entity.declared.standalone.3.2.test
12149 @@@DEnt:
12150 @@@@test:value:
12151 <?xml version="1.0" standalone="yes"?>
12152 <!DOCTYPE p [
12153 <!ENTITY % para "<!-- -->">
12154 %para;
12155 <!ATTLIST p a CDATA "&entity;">
12156 ]>
12157 <p/>
12158 @@@c:erred: <[[xp|wf-entity-declared]]> { (5, 22)..(5, 29); }
12159 @@@enImplNote:
12160 The <XML::ATTLIST> declaration is processed since
12161 it is a <XA::standalone> document.
12162 @@XMLTest:
12163 @@@QName: xp.attlist.attval.ger.entity.declared.standalone.-1.test
12164 @@@DEnt:
12165 @@@@test:value:
12166 <?xml version="1.0" standalone="no"?>
12167 <!DOCTYPE p [
12168 <!ATTLIST p a CDATA "&entity;">
12169 <!ENTITY % para "<!-- -->">
12170 %para;
12171 ]>
12172 <p/>
12173 @@@c:erred: <[[xp|wf-entity-declared]]> { (3, 22)..(3, 29); }
12174 @@XMLTest:
12175 @@@QName: xp.attlist.attval.ger.entity.declared.standalone.-1.2.test
12176 @@@DEnt:
12177 @@@@test:value:
12178 <?xml version="1.0" standalone="no"?>
12179 <!DOCTYPE p [
12180 <!ATTLIST p b CDATA #IMPLIED>
12181 <!ENTITY % para "<!-- -->">
12182 %para;
12183 <!ATTLIST p a CDATA "&entity;">
12184 ]>
12185 <p c="d"/>
12186 @@@c:erred:
12187 <[[xp|warning-attribute-definition-not-processed]]> { (6, 13)..(6, 30); }
12188 @@@test:domTree:
12189 document {
12190 document-type {
12191 element-type-definition {
12192 node-name: 'p';
12193 attribute-definition {
12194 node-name: 'b';
12195 }
12196 }
12197 }
12198 element {
12199 attribute {
12200 node-name: 'c';
12201 text-content: 'd';
12202 }
12203 }
12204 }
12205 @@@enImplNote:
12206 The second <XML::ATTLIST> declaration is read but not processed
12207 and its <XML::&entity;> general entity reference violates
12208 entity declared validty constraint rather than well-formedness
12209 constraint.
12210 @@XMLTest:
12211 @@@QName: xp.attlist.attval.ger.entity.declared.standalone.-2.test
12212 @@@DEnt:
12213 @@@@test:value:
12214 <!DOCTYPE p [
12215 <!ATTLIST p a CDATA "&entity;">
12216 <!ENTITY % para "<!-- -->">
12217 %para;
12218 ]>
12219 <p/>
12220 @@@c:erred: <[[xp|wf-entity-declared]]> { (2, 22)..(2, 29); }
12221 @@XMLTest:
12222 @@@QName: xp.attlist.attval.ger.entity.declared.standalone.-2.2.test
12223 @@@DEnt:
12224 @@@@test:value:
12225 <!DOCTYPE p [
12226 <!ATTLIST p b CDATA #IMPLIED>
12227 <!ENTITY % para "<!-- -->">
12228 %para;
12229 <!ATTLIST p a CDATA "&entity;">
12230 ]>
12231 <p c="d"/>
12232 @@@c:erred:
12233 <[[xp|warning-attribute-definition-not-processed]]> { (5, 13)..(5, 30); }
12234 @@@test:domTree:
12235 document {
12236 document-type {
12237 element-type-definition {
12238 node-name: 'p';
12239 attribute-definition {
12240 node-name: 'b';
12241 }
12242 }
12243 }
12244 element {
12245 attribute {
12246 node-name: 'c';
12247 text-content: 'd';
12248 }
12249 }
12250 }
12251 @@XMLTest:
12252 @@@QName: xp.attlist.attval.ger.entity.declared.standalone.4.test
12253 @@@DEnt:
12254 @@@@test:value:
12255 <?xml version="1.0" standalone="yes"?>
12256 <!DOCTYPE p [
12257 <!ATTLIST p a CDATA "&entity;">
12258 <!ENTITY % para SYSTEM "p">
12259 %para;
12260 ]>
12261 <p/>
12262 @@@c:erred: <[[xp|wf-entity-declared]]> { (3, 22)..(3, 29); }
12263 @@XMLTest:
12264 @@@QName: xp.attlist.attval.ger.entity.declared.standalone.4.2.test
12265 @@@DEnt:
12266 @@@@test:value:
12267 <?xml version="1.0" standalone="yes"?>
12268 <!DOCTYPE p [
12269 <!ENTITY % para SYSTEM "p">
12270 %para;
12271 <!ATTLIST p a CDATA "&entity;">
12272 ]>
12273 <p/>
12274 @@@c:erred: <[[xp|wf-entity-declared]]> { (5, 22)..(5, 29); }
12275 @@@enImplNote:
12276 The <XML::ATTLIST> declaration is processed since
12277 it is a <XA::standalone> document.
12278 @@XMLTest:
12279 @@@QName: xp.attlist.attval.ger.entity.declared.standalone.-3.test
12280 @@@DEnt:
12281 @@@@test:value:
12282 <?xml version="1.0" standalone="no"?>
12283 <!DOCTYPE p [
12284 <!ATTLIST p a CDATA "&entity;">
12285 <!ENTITY % para SYSTEM "p">
12286 %para;
12287 ]>
12288 <p/>
12289 @@@c:erred: <[[xp|wf-entity-declared]]> { (3, 22)..(3, 29); }
12290 @@@enImplNote:
12291 Is this well-formed? It has a parameter entity reference,
12292 therefore, it does not violates Entity Declared WFC, isn't it?
12293
12294 Note that Firefox 1.5 and Opera 9 TP1 reports that this document has a
12295 fatal error (also note that they does not support unexpanded).
12296
12297 See also:
12298 <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>
12299 @@XMLTest:
12300 @@@QName: xp.attlist.attval.ger.entity.declared.standalone.-3.2.test
12301 @@@DEnt:
12302 @@@@test:value:
12303 <?xml version="1.0" standalone="no"?>
12304 <!DOCTYPE p [
12305 <!ATTLIST p b CDATA #IMPLIED>
12306 <!ENTITY % para SYSTEM "p">
12307 %para;
12308 <!ATTLIST p a CDATA "&entity;">
12309 ]>
12310 <p c="d"/>
12311 @@@c:erred:
12312 <[[xp|warning-attribute-definition-not-processed]]> { (6, 13)..(6, 30); }
12313 @@@test:domTree:
12314 document {
12315 document-type {
12316 element-type-definition {
12317 node-name: 'p';
12318 attribute-definition {
12319 node-name: 'b';
12320 }
12321 }
12322 }
12323 element {
12324 attribute {
12325 node-name: 'c';
12326 text-content: 'd';
12327 }
12328 }
12329 }
12330 @@@enImplNote:
12331 The second <XML::ATTLIST> declaration is read but not processed
12332 and its <XML::&entity;> general entity reference violates
12333 entity declared validty constraint rather than well-formedness
12334 constraint.
12335 @@XMLTest:
12336 @@@QName: xp.attlist.attval.ger.entity.declared.standalone.-4.test
12337 @@@DEnt:
12338 @@@@test:value:
12339 <!DOCTYPE p [
12340 <!ATTLIST p a CDATA "&entity;">
12341 <!ENTITY % para SYSTEM "p">
12342 %para;
12343 ]>
12344 <p/>
12345 @@@c:erred: <[[xp|wf-entity-declared]]> { (2, 22)..(2, 29); }
12346 @@XMLTest:
12347 @@@QName: xp.attlist.attval.ger.entity.declared.standalone.-4.2.test
12348 @@@DEnt:
12349 @@@@test:value:
12350 <!DOCTYPE p [
12351 <!ATTLIST p b CDATA #IMPLIED>
12352 <!ENTITY % para SYSTEM "p">
12353 %para;
12354 <!ATTLIST p a CDATA "&entity;">
12355 ]>
12356 <p c="d"/>
12357 @@@c:erred:
12358 <[[xp|warning-attribute-definition-not-processed]]> { (5, 13)..(5, 30); }
12359 @@@test:domTree:
12360 document {
12361 document-type {
12362 element-type-definition {
12363 node-name: 'p';
12364 attribute-definition {
12365 node-name: 'b';
12366 }
12367 }
12368 }
12369 element {
12370 attribute {
12371 node-name: 'c';
12372 text-content: 'd';
12373 }
12374 }
12375 }
12376 @@XMLTest:
12377 @@@QName: xp.attlist.attval.ger.entity.declared.standalone.5.test
12378 @@@DEnt:
12379 @@@@test:value:
12380 <?xml version="1.0" standalone="yes"?>
12381 <!DOCTYPE p SYSTEM "dtd" [
12382 <!ATTLIST p a CDATA "&entity;">
12383 ]>
12384 <p/>
12385 @@@c:erred: <[[xp|wf-entity-declared]]> { (3, 22)..(3, 29); }
12386 @@@enImplNote:
12387 This document has an error - result is implementation dependent.
12388 @@XMLTest:
12389 @@@QName: xp.attlist.attval.ger.entity.declared.standalone.-5.test
12390 @@@DEnt:
12391 @@@@test:value:
12392 <?xml version="1.0" standalone="no"?>
12393 <!DOCTYPE p SYSTEM "dtd" [
12394 <!ATTLIST p a CDATA "&entity;">
12395 ]>
12396 <p/>
12397 @@@test:domTree:
12398 document {
12399 document-type {
12400 element-type-definition {
12401 node-name: 'p';
12402 attribute-definition {
12403 node-name: 'a';
12404 general-entity-reference {
12405 node-name: 'entity';
12406 is-expanded: false;
12407 }
12408 }
12409 }
12410 }
12411 element {
12412 attribute {
12413 node-name: 'a';
12414 specified: false;
12415 general-entity-reference {
12416 node-name: 'entity';
12417 is-expanded: false;
12418 }
12419 }
12420 }
12421 }
12422 @@@enImplNote:
12423 This document has an error - result is implementation dependent.
12424 @@XMLTest:
12425 @@@QName: xp.attlist.attval.ger.entity.declared.standalone.-6.test
12426 @@@DEnt:
12427 @@@@test:value:
12428 <!DOCTYPE p SYSTEM "dtd" [
12429 <!ATTLIST p a CDATA "&entity;">
12430 ]>
12431 <p/>
12432 @@@test:domTree:
12433 document {
12434 document-type {
12435 element-type-definition {
12436 node-name: 'p';
12437 attribute-definition {
12438 node-name: 'a';
12439 general-entity-reference {
12440 node-name: 'entity';
12441 is-expanded: false;
12442 }
12443 }
12444 }
12445 }
12446 element {
12447 attribute {
12448 node-name: 'a';
12449 specified: false;
12450 general-entity-reference {
12451 node-name: 'entity';
12452 is-expanded: false;
12453 }
12454 }
12455 }
12456 }
12457 @@@enImplNote:
12458 This document has an error - result is implementation dependent.
12459
12460 @@enImplNote:
12461 {TODO:: Entity declared WFC for
12462
12463 - General entity references in entity value??
12464
12465 }
12466
12467 @@XMLTest:
12468 @@@QName: xp.element.content.parsed.entity.reference.test
12469 @@@DEnt:
12470 @@@@test:value:
12471 <!DOCTYPE p [
12472 <!NOTATION n SYSTEM "notation">
12473 <!ENTITY ext SYSTEM "system" NDATA n>
12474 ]>
12475 <p>&ext;</p>
12476 @@@c:erred: <[[xp|wf-parsed-entity]]> { (5, 4)..(5, 8); }
12477 @@XMLTest:
12478 @@@QName: xp.attval.parsed.entity.reference.test
12479 @@@DEnt:
12480 @@@@test:value:
12481 <!DOCTYPE p [
12482 <!NOTATION n SYSTEM "notation">
12483 <!ENTITY ext SYSTEM "system" NDATA n>
12484 ]>
12485 <p a="&ext;"/>
12486 # @@@c:erred: <[[xp|wf-parsed-entity]]> { (5, 7)..(5, 11); }
12487 @@@c:erred: <[[xp|wf-no-external-entity-references]]> { (5, 7)..(5, 11); }
12488 @@XMLTest:
12489 @@@QName: xp.element.content.reptxt.parsed.entity.reference.test
12490 @@@DEnt:
12491 @@@@test:value:
12492 <!DOCTYPE p [
12493 <!NOTATION n SYSTEM "notation">
12494 <!ENTITY ext SYSTEM "system" NDATA n>
12495 <!ENTITY c "&#x26;ext;">
12496 ]>
12497 <p>&c;</p>
12498 @@@c:erred: <[[xp|wf-parsed-entity]]> { (1, 1)..(1, 5); }
12499 @@XMLTest:
12500 @@@QName: xp.attval.reptxt.parsed.entity.reference.test
12501 @@@DEnt:
12502 @@@@test:value:
12503 <!DOCTYPE p [
12504 <!NOTATION n SYSTEM "notation">
12505 <!ENTITY ext SYSTEM "system" NDATA n>
12506 <!ENTITY c "&#x26;ext;">
12507 ]>
12508 <p a="&c;"/>
12509 @@@c:erred: <[[xp|wf-no-external-entity-references]]> { (1, 1)..(1, 5); }
12510 @@@c:erred:
12511 @@@@@: <[[xp|wf-parsed-entity]]> { }
12512 @@@@enImplNote: During entity node construction.
12513 @@XMLTest:
12514 @@@QName: xp.element.content.entval.parsed.entity.reference.test
12515 @@@DEnt:
12516 @@@@test:value:
12517 <!DOCTYPE p [
12518 <!NOTATION n SYSTEM "notation">
12519 <!ENTITY ext SYSTEM "system" NDATA n>
12520 <!ENTITY c "&ext;">
12521 ]>
12522 <p>&c;</p>
12523 @@@c:erred: <[[xp|wf-parsed-entity]]> { }
12524 @@XMLTest:
12525 @@@QName: xp.attval.entval.parsed.entity.reference.test
12526 @@@DEnt:
12527 @@@@test:value:
12528 <!DOCTYPE p [
12529 <!NOTATION n SYSTEM "notation">
12530 <!ENTITY ext SYSTEM "system" NDATA n>
12531 <!ENTITY c "&ext;">
12532 ]>
12533 <p a="&c;"/>
12534 @@@c:erred: <[[xp|wf-no-external-entity-references]]> { }
12535 @@@c:erred: <[[xp|wf-parsed-entity]]> { }
12536
12537 @@XMLTest:
12538 @@@QName: xp.element.content.no.recursion.direct.test
12539 @@@DEnt:
12540 @@@@test:value:
12541 <!DOCTYPE p [
12542 <!ENTITY c "&c;">
12543 ]>
12544 <p>&c;</p>
12545 @@@c:erred: <[[xp|wf-no-recursion]]> { (1, 1)..(1, 3); }
12546 @@XMLTest:
12547 @@@QName: xp.element.content.no.recursion.indirect.test
12548 @@@DEnt:
12549 @@@@test:value:
12550 <!DOCTYPE p [
12551 <!ENTITY d "&c;">
12552 <!ENTITY c "&d;">
12553 ]>
12554 <p>&c;</p>
12555 @@@c:erred: <[[xp|wf-no-recursion]]> { /* |d| */ (1, 1)..(1, 3); }
12556 @@XMLTest:
12557 @@@QName: xp.attval.no.recursion.direct.test
12558 @@@DEnt:
12559 @@@@test:value:
12560 <!DOCTYPE p [
12561 <!ENTITY c "&c;">
12562 ]>
12563 <p a="&c;"/>
12564 @@@c:erred: <[[xp|wf-no-recursion]]> { (1, 1)..(1, 3); }
12565 @@XMLTest:
12566 @@@QName: xp.attval.no.recursion.indirect.test
12567 @@@DEnt:
12568 @@@@test:value:
12569 <!DOCTYPE p [
12570 <!ENTITY d "&c;">
12571 <!ENTITY c "&d;">
12572 ]>
12573 <p a="&c;"/>
12574 @@@c:erred: <[[xp|wf-no-recursion]]> { /* |d| */ (1, 1)..(1, 3); }
12575 @@XMLTest:
12576 @@@QName: xp.reptxt.element.content.no.recursion.direct.test
12577 @@@DEnt:
12578 @@@@test:value:
12579 <!DOCTYPE p [
12580 <!ENTITY c "&c;">
12581 <!ENTITY e "&#x26;c;">
12582 ]>
12583 <p>&e;</p>
12584 @@@c:erred: <[[xp|wf-no-recursion]]> { /* |e| */ (1, 1)..(1, 3); }
12585 @@XMLTest:
12586 @@@QName: xp.reptxt.element.content.no.recursion.indirect.test
12587 @@@DEnt:
12588 @@@@test:value:
12589 <!DOCTYPE p [
12590 <!ENTITY d "&c;">
12591 <!ENTITY c "&d;">
12592 <!ENTITY e "&#x26;c;">
12593 ]>
12594 <p>&e;</p>
12595 @@@c:erred: <[[xp|wf-no-recursion]]> { /* |d| */ (1, 1)..(1, 3); }
12596 @@XMLTest:
12597 @@@QName: xp.reptxt.attval.no.recursion.direct.test
12598 @@@DEnt:
12599 @@@@test:value:
12600 <!DOCTYPE p [
12601 <!ENTITY c "&c;">
12602 <!ENTITY e "&#x26;c;">
12603 ]>
12604 <p a="&e;"/>
12605 @@@c:erred: <[[xp|wf-no-recursion]]> { /* |e| */ (1, 1)..(1, 3); }
12606 @@XMLTest:
12607 @@@QName: xp.reptxt.attval.no.recursion.indirect.test
12608 @@@DEnt:
12609 @@@@test:value:
12610 <!DOCTYPE p [
12611 <!ENTITY d "&c;">
12612 <!ENTITY c "&d;">
12613 <!ENTITY e "&#x26;c;">
12614 ]>
12615 <p a="&e;"/>
12616 @@@c:erred: <[[xp|wf-no-recursion]]> { /* |d| */ (1, 1)..(1, 3); }
12617
12618 @@XMLTest:
12619 @@@QName: xp.ENTITY.system.ndata.name.test
12620 @@@DEnt:
12621 @@@@test:value:
12622 <!DOCTYPE a [
12623 <!NOTATION n SYSTEM "n">
12624 <!ENTITY % e SYSTEM "sys" NDATA n>
12625 ]><a/>
12626 @@@c:erred: <[[xp|wf-syntax-error]]> { (3, 26)..(3, 30); }
12627 @@XMLTest:
12628 @@@QName: xp.ENTITY.public.ndata.name.test
12629 @@@DEnt:
12630 @@@@test:value:
12631 <!DOCTYPE a [
12632 <!NOTATION n SYSTEM "n">
12633 <!ENTITY % e PUBLIC "pub" "sys" NDATA n>
12634 ]><a/>
12635 @@@c:erred: <[[xp|wf-syntax-error]]> { (3, 33)..(3, 37); }
12636 @@XMLTest:
12637 @@@QName: xp.ENTITY.public.ndata.name.-1.test
12638 @@@DEnt:
12639 @@@@test:value:
12640 <!DOCTYPE a [
12641 <!NOTATION n SYSTEM "n">
12642 <!ENTITY % e PUBLIC "pub" "sys" >
12643 ]><a/>
12644 @@@test:domTree:
12645 document { }
12646
12647 @@XMLTest:
12648 @@@QName: xp.ENTITY.pubid.1.test
12649 @@@DEnt:
12650 @@@@test:value:
12651 <!DOCTYPE a [
12652 <!ENTITY e PUBLIC "p" "s">
12653 ]><a/>
12654 @@@test:domTree:
12655 document {
12656 document-type {
12657 general-entity {
12658 node-name: 'e';
12659 public-id: 'p';
12660 system-id: 's';
12661 }
12662 }
12663 element { }
12664 }
12665 @@XMLTest:
12666 @@@QName: xp.ENTITY.pubid.2.test
12667 @@@DEnt:
12668 @@@@test:value:
12669 <!DOCTYPE a [
12670 <!ENTITY e PUBLIC " p " "s">
12671 ]><a/>
12672 @@@test:domTree:
12673 document {
12674 document-type {
12675 general-entity {
12676 node-name: 'e';
12677 public-id: 'p';
12678 system-id: 's';
12679 }
12680 }
12681 element { }
12682 }
12683 @@XMLTest:
12684 @@@QName: xp.ENTITY.pubid.3.test
12685 @@@DEnt:
12686 @@@@test:value:
12687 <!DOCTYPE a [
12688 <!ENTITY e PUBLIC " p $u000Aq$u000A " "s">
12689 ]><a/>
12690 @@@test:domTree:
12691 document {
12692 document-type {
12693 general-entity {
12694 node-name: 'e';
12695 public-id: 'p q';
12696 system-id: 's';
12697 }
12698 }
12699 element { }
12700 }
12701 @@XMLTest:
12702 @@@QName: xp.ENTITY.pubid.4.test
12703 @@@DEnt:
12704 @@@@test:value:
12705 <!DOCTYPE a [
12706 <!ENTITY e PUBLIC " p $u000D$u000Aq" "s">
12707 ]><a/>
12708 @@@test:domTree:
12709 document {
12710 document-type {
12711 general-entity {
12712 node-name: 'e';
12713 public-id: 'p q';
12714 system-id: 's';
12715 }
12716 }
12717 element { }
12718 }
12719 @@XMLTest:
12720 @@@QName: xp.ENTITY.pubid.5.test
12721 @@@DEnt:
12722 @@@@test:value:
12723 <?xml version="1.1"?>
12724 <!DOCTYPE a [
12725 <!ENTITY e PUBLIC " p $u000D$u0085q" "s">
12726 ]><a/>
12727 @@@test:domTree:
12728 document {
12729 document-type {
12730 general-entity {
12731 node-name: 'e';
12732 public-id: 'p q';
12733 system-id: 's';
12734 }
12735 }
12736 element { }
12737 }
12738
12739 @@XMLTest:
12740 @@@QName: xp.ENTITY.ignored.test
12741 @@@DEnt:
12742 @@@@test:value:
12743 <!DOCTYPE a [
12744 <!ENTITY e "a">
12745 <!ENTITY e "b">
12746 ]><a/>
12747 @@@test:domTree:
12748 document {
12749 document-type {
12750 general-entity {
12751 node-name: 'e';
12752 text-content: 'a';
12753 }
12754 }
12755 element { }
12756 }
12757 @@@c:erred:
12758 <[[xp|warning-entity-declaration-ignored]]> { (3, 1)..(3, 15); }
12759 @@XMLTest:
12760 @@@QName: xp.ENTITY.ignored.2.test
12761 @@@DEnt:
12762 @@@@test:value:
12763 <!DOCTYPE a [
12764 <!ENTITY % e "a">
12765 <!ENTITY % e "b">
12766 ]><a/>
12767 @@@test:domTree:
12768 document { }
12769 @@@c:erred:
12770 <[[xp|warning-entity-declaration-ignored]]> { (3, 1)..(3, 17); }
12771
12772 @@XMLTest:
12773 @@@QName: xp.ENTITY.predefined.1.test
12774 @@@DEnt:
12775 @@@@test:value:
12776 <!DOCTYPE a [
12777 <!ENTITY lt "&#38;#60;">
12778 <!ENTITY gt "&#62;">
12779 <!ENTITY amp "&#38;#38;">
12780 <!ENTITY apos "&#39;">
12781 <!ENTITY quot "&#34;">
12782 <!ENTITY e "f">
12783 ]><a>&lt;&gt;&amp;&apos;&quot;</a>
12784 @@@test:domTree:
12785 document {
12786 document-type {
12787 general-entity {
12788 node-name: 'e';
12789 text-content: 'f';
12790 }
12791 }
12792 element {
12793 text-content: '<>&' U+0027 '"';
12794 }
12795 }
12796 @@XMLTest:
12797 @@@QName: xp.ENTITY.predefined.2.test
12798 @@@DEnt:
12799 @@@@test:value:
12800 <!DOCTYPE a [
12801 <!ENTITY lt "&#38;#60;">
12802 <!ENTITY gt "&#x26;#62;">
12803 <!ENTITY amp "&#38;#38;">
12804 <!ENTITY apos "&#x26;#39;">
12805 <!ENTITY quot "&#x26;#34;">
12806 <!ENTITY e "f">
12807 ]><a>&lt;&gt;&amp;&apos;&quot;</a>
12808 @@@test:domTree:
12809 document {
12810 document-type {
12811 general-entity {
12812 node-name: 'e';
12813 text-content: 'f';
12814 }
12815 }
12816 element {
12817 text-content: '<>&' U+0027 '"';
12818 }
12819 }
12820 @@XMLTest:
12821 @@@QName: xp.ENTITY.predefined.3.test
12822 @@@DEnt:
12823 @@@@test:value:
12824 <!DOCTYPE a [
12825 <!ENTITY lt "&#60;">
12826 <!ENTITY gt "&#62;">
12827 <!ENTITY amp "&#38;">
12828 <!ENTITY apos "&#39;">
12829 <!ENTITY quot "&#34;">
12830 <!ENTITY e "f">
12831 ]><a>&lt;&gt;&amp;&apos;&quot;</a>
12832 @@@c:erred: <[[xp|error-malformed-predefined-entity]]> { (2, 1)..(2, 24); }
12833 @@@c:erred: <[[xp|error-malformed-predefined-entity]]> { (4, 1)..(4, 24); }
12834 @@@test:domTree:
12835 document {
12836 document-type {
12837 general-entity {
12838 node-name: 'e';
12839 text-content: 'f';
12840 }
12841 }
12842 element {
12843 text-content: '<>&' U+0027 '"';
12844 }
12845 }
12846 @@XMLTest:
12847 @@@QName: xp.ENTITY.predefined.4.test
12848 @@@DEnt:
12849 @@@@test:value:
12850 <!DOCTYPE a [
12851 <!ENTITY lt "1">
12852 <!ENTITY gt "2">
12853 <!ENTITY amp "3">
12854 <!ENTITY apos "4">
12855 <!ENTITY quot "5">
12856 <!ENTITY e "f">
12857 ]><a>&lt;&gt;&amp;&apos;&quot;</a>
12858 @@@c:erred: <[[xp|error-malformed-predefined-entity]]> { (2, 1)..(2, 24); }
12859 @@@c:erred: <[[xp|error-malformed-predefined-entity]]> { (3, 1)..(3, 24); }
12860 @@@c:erred: <[[xp|error-malformed-predefined-entity]]> { (4, 1)..(4, 24); }
12861 @@@c:erred: <[[xp|error-malformed-predefined-entity]]> { (5, 1)..(5, 24); }
12862 @@@c:erred: <[[xp|error-malformed-predefined-entity]]> { (6, 1)..(6, 24); }
12863 @@@test:domTree:
12864 document {
12865 document-type {
12866 general-entity {
12867 node-name: 'e';
12868 text-content: 'f';
12869 }
12870 }
12871 element {
12872 text-content: '<>&' U+0027 '"';
12873 }
12874 }
12875 @@XMLTest:
12876 @@@QName: xp.ENTITY.predefined.5.test
12877 @@@DEnt:
12878 @@@@test:value:
12879 <!DOCTYPE a [
12880 <!ENTITY lt SYSTEM "1">
12881 <!ENTITY gt SYSTEM "2">
12882 <!ENTITY amp SYSTEM "3">
12883 <!ENTITY apos SYSTEM "4">
12884 <!ENTITY quot SYSTEM "5">
12885 <!ENTITY e "f">
12886 ]><a>&lt;&gt;&amp;&apos;&quot;</a>
12887 @@@c:erred: <[[xp|error-internal-predefined-entity]]> { (2, 1)..(2, 27); }
12888 @@@c:erred: <[[xp|error-internal-predefined-entity]]> { (3, 1)..(3, 27); }
12889 @@@c:erred: <[[xp|error-internal-predefined-entity]]> { (4, 1)..(4, 27); }
12890 @@@c:erred: <[[xp|error-internal-predefined-entity]]> { (5, 1)..(5, 27); }
12891 @@@c:erred: <[[xp|error-internal-predefined-entity]]> { (6, 1)..(6, 27); }
12892 @@@test:domTree:
12893 document {
12894 document-type {
12895 general-entity {
12896 node-name: 'e';
12897 text-content: 'f';
12898 }
12899 }
12900 element {
12901 text-content: '<>&' U+0027 '"';
12902 }
12903 }
12904 @@XMLTest:
12905 @@@QName: xp.ENTITY.predefined.6.test
12906 @@@DEnt:
12907 @@@@test:value:
12908 <!DOCTYPE a [
12909 <!ENTITY % lt SYSTEM "1">
12910 <!ENTITY % gt SYSTEM "2">
12911 <!ENTITY % amp SYSTEM "3">
12912 <!ENTITY % apos SYSTEM "4">
12913 <!ENTITY % quot SYSTEM "5">
12914 <!ENTITY e "f">
12915 ]><a>&lt;&gt;&amp;&apos;&quot;</a>
12916 @@@test:domTree:
12917 document {
12918 document-type {
12919 general-entity {
12920 node-name: 'e';
12921 text-content: 'f';
12922 }
12923 }
12924 element {
12925 text-content: '<>&' U+0027 '"';
12926 }
12927 }
12928 @@XMLTest:
12929 @@@QName: xp.ENTITY.predefined.7.test
12930 @@@DEnt:
12931 @@@@test:value:
12932 <!DOCTYPE a [
12933 <!ENTITY lt "&#38;#x3C;">
12934 <!ENTITY gt "&#x3E;">
12935 <!ENTITY amp "&#38;#x26;">
12936 <!ENTITY apos "&#x27;">
12937 <!ENTITY quot "&#x22;">
12938 <!ENTITY e "f">
12939 ]><a>&lt;&gt;&amp;&apos;&quot;</a>
12940 @@@test:domTree:
12941 document {
12942 document-type {
12943 general-entity {
12944 node-name: 'e';
12945 text-content: 'f';
12946 }
12947 }
12948 element {
12949 text-content: '<>&' U+0027 '"';
12950 }
12951 }
12952 @@XMLTest:
12953 @@@QName: xp.ENTITY.predefined.8.test
12954 @@@DEnt:
12955 @@@@test:value:
12956 <!DOCTYPE a [
12957 <!ENTITY lt "&#38;#x3c;">
12958 <!ENTITY gt "&#x3e;">
12959 <!ENTITY amp "&#38;#x26;">
12960 <!ENTITY apos "&#x27;">
12961 <!ENTITY quot "&#x22;">
12962 <!ENTITY e "f">
12963 ]><a>&lt;&gt;&amp;&apos;&quot;</a>
12964 @@@test:domTree:
12965 document {
12966 document-type {
12967 general-entity {
12968 node-name: 'e';
12969 text-content: 'f';
12970 }
12971 }
12972 element {
12973 text-content: '<>&' U+0027 '"';
12974 }
12975 }
12976 @@XMLTest:
12977 @@@QName: xp.ENTITY.predefined.9.test
12978 @@@DEnt:
12979 @@@@test:value:
12980 <!DOCTYPE a [
12981 <!ENTITY lt "&#38;#x00003C;">
12982 <!ENTITY gt "&#x0003E;">
12983 <!ENTITY amp "&#38;#x026;">
12984 <!ENTITY apos "&#x000027;">
12985 <!ENTITY quot "&#x0022;">
12986 <!ENTITY e "f">
12987 ]><a>&lt;&gt;&amp;&apos;&quot;</a>
12988 @@@test:domTree:
12989 document {
12990 document-type {
12991 general-entity {
12992 node-name: 'e';
12993 text-content: 'f';
12994 }
12995 }
12996 element {
12997 text-content: '<>&' U+0027 '"';
12998 }
12999 }
13000 @@XMLTest:
13001 @@@QName: xp.ENTITY.predefined.10.test
13002 @@@DEnt:
13003 @@@@test:value:
13004 <!DOCTYPE a [
13005 <!ENTITY lt "&#38;#00060;">
13006 <!ENTITY gt "&#062;">
13007 <!ENTITY amp "&#38;#000038;">
13008 <!ENTITY apos "&#0000039;">
13009 <!ENTITY quot "&#0034;">
13010 <!ENTITY e "f">
13011 ]><a>&lt;&gt;&amp;&apos;&quot;</a>
13012 @@@test:domTree:
13013 document {
13014 document-type {
13015 general-entity {
13016 node-name: 'e';
13017 text-content: 'f';
13018 }
13019 }
13020 element {
13021 text-content: '<>&' U+0027 '"';
13022 }
13023 }
13024
13025 @@XMLTest:
13026 @@@QName: xp.processed.1.test
13027 @@@DEnt:
13028 @@@@test:value:
13029 <a/>
13030 @@@test:domTree:
13031 document {
13032 all-declarations-processed: true;
13033 element { }
13034 }
13035 @@XMLTest:
13036 @@@QName: xp.processed.2.test
13037 @@@DEnt:
13038 @@@@test:value:
13039 <!DOCTYPE a [
13040 <!ENTITY e "f">
13041 <!ATTLIST a b NMTOKEN " c ">
13042 ]><a>&e;</a>
13043 @@@test:domTree:
13044 document {
13045 document-type {
13046 general-entity {
13047 node-name: 'e';
13048 }
13049 element-type-definition {
13050 node-name: 'a';
13051 attribute-definition {
13052 node-name: 'b';
13053 }
13054 }
13055 }
13056 all-declarations-processed: true;
13057 element {
13058 attribute {
13059 node-name: 'b';
13060 node-value: 'c';
13061 }
13062 text-content: 'f';
13063 }
13064 }
13065 @@XMLTest:
13066 @@@QName: xp.processed.3.test
13067 @@@DEnt:
13068 @@@@test:value:
13069 <!DOCTYPE a [
13070 <!ENTITY % p SYSTEM "p">
13071 %p;
13072 <!ENTITY e "f">
13073 <!ATTLIST a b NMTOKEN " c ">
13074 ]><a d="e">&e;</a>
13075 @@@test:domTree:
13076 document {
13077 document-type { }
13078 all-declarations-processed: false;
13079 element {
13080 attribute {
13081 node-name: 'd';
13082 node-value: 'e';
13083 }
13084 general-entity-reference {
13085 node-name: 'e';
13086 is-expanded: false;
13087 }
13088 }
13089 }
13090 @@@c:erred:
13091 <[[xp|warning-entity-declaration-not-processed]]> { (4, 1)..(4, 20); }
13092 @@@c:erred:
13093 <[[xp|warning-attribute-definition-not-processed]]> { (5, 13)..(5, 31); }
13094 @@XMLTest:
13095 @@@QName: xp.processed.4.test
13096 @@@DEnt:
13097 @@@@test:value:
13098 <?xml version="1.1" standalone="yes"?>
13099 <!DOCTYPE a [
13100 <!ENTITY % p SYSTEM "p">
13101 %p;
13102 <!ENTITY e "f">
13103 <!ATTLIST a b NMTOKEN " c ">
13104 ]><a>&e;</a>
13105 @@@test:domTree:
13106 document {
13107 document-type {
13108 general-entity {
13109 node-name: 'e';
13110 }
13111 element-type-definition {
13112 node-name: 'a';
13113 attribute-definition {
13114 node-name: 'b';
13115 }
13116 }
13117 }
13118 all-declarations-processed: false;
13119 element {
13120 attribute {
13121 node-name: 'b';
13122 node-value: 'c';
13123 }
13124 text-content: 'f';
13125 }
13126 }
13127 @@XMLTest:
13128 @@@QName: xp.processed.5.test
13129 @@@DEnt:
13130 @@@@test:value:
13131 <!DOCTYPE a SYSTEM "p" [
13132 <!ENTITY e "f">
13133 <!ATTLIST a b NMTOKEN " c ">
13134 ]><a>&e;</a>
13135 @@@test:domTree:
13136 document {
13137 document-type {
13138 general-entity {
13139 node-name: 'e';
13140 }
13141 element-type-definition {
13142 node-name: 'a';
13143 attribute-definition {
13144 node-name: 'b';
13145 }
13146 }
13147 }
13148 all-declarations-processed: false;
13149 element {
13150 attribute {
13151 node-name: 'b';
13152 node-value: 'c';
13153 }
13154 text-content: 'f';
13155 }
13156 }
13157
13158 @@XMLTest:
13159 @@@QName: xp.PEs.in.internal.subset.1.test
13160 @@@DEnt:
13161 @@@@test:value:
13162 <!DOCTYPE a [
13163 <!ENTITY % p " ">
13164 <!ENTITY % q "%p;">
13165 ]><a/>
13166 @@@c:erred: <[[xp|wf-pes-in-internal-subset]]> { (3, 15)..(3, 17); }
13167 @@XMLTest:
13168 @@@QName: xp.PEs.in.internal.subset.2.test
13169 @@@DEnt:
13170 @@@@test:value:
13171 <!DOCTYPE a [
13172 <!ENTITY % p " ">
13173 <!ENTITY % q '%p;'>
13174 ]><a/>
13175 @@@c:erred: <[[xp|wf-pes-in-internal-subset]]> { (3, 15)..(3, 17); }
13176
13177 @@XMLTest:
13178 @@@QName: xp.name.pitarget.content.1.0.2.test
13179 @@@DEnt:
13180 @@@@test:value:
13181 <?xml version="1.0"?>
13182 <p>
13183 <?$u3001$u3002?>
13184 </p>
13185 @@@c:erred: <[[xp|wf-invalid-character-in-node-name]]> { (3, 3)..(3, 4); }
13186 @@XMLTest:
13187 @@@QName: xp.name.pitarget.content.1.1.2.test
13188 @@@DEnt:
13189 @@@@test:value:
13190 <?xml version="1.1"?>
13191 <p>$
13192 <?$u3001$u3002?>$
13193 </p>
13194 @@@test:domTree:
13195 document {
13196 xml-version: '1.1';
13197 element {
13198 pi {
13199 node-name: U+3001 U+3002;
13200 }
13201 }
13202 }
13203 @@XMLTest:
13204 @@@QName: xp.name.pitarget.content.1.0.3.test
13205 @@@DEnt:
13206 @@@@test:value:
13207 <?xml version="1.0"?>
13208 <p>
13209 <?$u3005b?>
13210 </p>
13211 @@@c:erred: <[[xp|wf-invalid-character-in-node-name]]> { (3, 3)..(3, 4); }
13212 @@XMLTest:
13213 @@@QName: xp.name.pitarget.content.1.1.3.test
13214 @@@DEnt:
13215 @@@@test:value:
13216 <?xml version="1.1"?>
13217 <p>$
13218 <?$u3005b?>$
13219 </p>
13220 @@@test:domTree:
13221 document {
13222 xml-version: '1.1';
13223 element {
13224 pi {
13225 node-name: U+3005 'b';
13226 }
13227 }
13228 }
13229 @@XMLTest:
13230 @@@QName: xp.name.pitarget.content.names.1.0.1.test
13231 @@@DEnt:
13232 @@@@test:value:
13233 <?xml version="1.0"?>
13234 <p>
13235 <?a:b?>
13236 </p>
13237 @@@c:erred: <[[xp|nswf-legal-ncname]]> { (3, 3)..(3, 5); }
13238 @@XMLTest:
13239 @@@QName: xp.name.pitarget.content.names.1.1.1.test
13240 @@@DEnt:
13241 @@@@test:value:
13242 <?xml version="1.1"?>
13243 <p>
13244 <?a:b?>
13245 </p>
13246 @@@c:erred: <[[xp|nswf-legal-ncname]]> { (3, 3)..(3, 5); }
13247 @@XMLTest:
13248 @@@QName: xp.name.pitarget.intsubset.1.0.2.test
13249 @@@DEnt:
13250 @@@@test:value:
13251 <?xml version="1.0"?>
13252 <!DOCTYPE p [
13253 <?$u3001$u3002?>
13254 ]><p/>
13255 @@@c:erred: <[[xp|wf-invalid-character-in-node-name]]> { (3, 3)..(3, 4); }
13256 @@XMLTest:
13257 @@@QName: xp.name.pitarget.intsubset.1.1.2.test
13258 @@@DEnt:
13259 @@@@test:value:
13260 <?xml version="1.1"?>
13261 <!DOCTYPE p [
13262 <?$u3001$u3002?>
13263 ]><p/>
13264 @@@test:domTree:
13265 document {
13266 xml-version: '1.1';
13267 document-type {
13268 pi {
13269 node-name: U+3001 U+3002;
13270 }
13271 }
13272 element { }
13273 }
13274 @@XMLTest:
13275 @@@QName: xp.name.pitarget.intsubset.1.0.3.test
13276 @@@DEnt:
13277 @@@@test:value:
13278 <?xml version="1.0"?>
13279 <!DOCTYPE p [
13280 <?$u3005b?>
13281 ]><p/>
13282 @@@c:erred: <[[xp|wf-invalid-character-in-node-name]]> { (3, 3)..(3, 4); }
13283 @@XMLTest:
13284 @@@QName: xp.name.pitarget.intsubset.1.1.3.test
13285 @@@DEnt:
13286 @@@@test:value:
13287 <?xml version="1.1"?>
13288 <!DOCTYPE p [
13289 <?$u3005b?>
13290 ]><p/>
13291 @@@test:domTree:
13292 document {
13293 xml-version: '1.1';
13294 document-type {
13295 pi {
13296 node-name: U+3005 'b';
13297 }
13298 }
13299 element { }
13300 }
13301 @@XMLTest:
13302 @@@QName: xp.name.pitarget.intsubset.names.1.0.1.test
13303 @@@DEnt:
13304 @@@@test:value:
13305 <?xml version="1.0"?>
13306 <!DOCTYPE p [
13307 <?a:b?>
13308 ]><p/>
13309 @@@c:erred: <[[xp|nswf-legal-ncname]]> { (3, 3)..(3, 5); }
13310 @@XMLTest:
13311 @@@QName: xp.name.pitarget.intsubset.names.1.1.1.test
13312 @@@DEnt:
13313 @@@@test:value:
13314 <?xml version="1.1"?>
13315 <!DOCTYPE p [
13316 <?a:b?>
13317 ]><p/>
13318 @@@c:erred: <[[xp|nswf-legal-ncname]]> { (3, 3)..(3, 5); }
13319 @@XMLTest:
13320 @@@QName: xp.name.doctypedecl.stag.etag.1.0.2.test
13321 @@@DEnt:
13322 @@@@test:value:
13323 <?xml version="1.0"?>
13324 <!DOCTYPE $u3001$u3002>
13325 <$u3001$u3002>
13326 </$u3001$u3002>
13327 @@@c:erred: <[[xp|wf-invalid-character-in-node-name]]>{ (2, 11)..(2, 12); }
13328 @@@c:erred: <[[xp|wf-invalid-character-in-node-name]]>{ (3, 2)..(3, 3); }
13329 # @@@c:erred: <[[xp|wf-invalid-character-in-node-name]]>{ (4, 3)..(4, 4); }
13330 @@XMLTest:
13331 @@@QName: xp.name.doctypedecl.stag.etag.1.1.2.test
13332 @@@DEnt:
13333 @@@@test:value:
13334 <?xml version="1.1"?>
13335 <!DOCTYPE $u3001$u3002>
13336 <$u3001$u3002>
13337 </$u3001$u3002>
13338 @@@test:domTree:
13339 document {
13340 xml-version: '1.1';
13341 document-type {
13342 node-name: U+3001 U+3002;
13343 }
13344 element {
13345 node-name: U+3001 U+3002;
13346 }
13347 }
13348 @@XMLTest:
13349 @@@QName: xp.name.doctypedecl.stag.etag.1.0.3.test
13350 @@@DEnt:
13351 @@@@test:value:
13352 <?xml version="1.0"?>
13353 <!DOCTYPE $u3005b>
13354 <$u3005b>
13355 </$u3005b>
13356 @@@c:erred: <[[xp|wf-invalid-character-in-node-name]]>{ (2, 11)..(2, 12); }
13357 @@@c:erred: <[[xp|wf-invalid-character-in-node-name]]>{ (3, 2)..(3, 3); }
13358 # @@@c:erred: <[[xp|wf-invalid-character-in-node-name]]>{ (4, 3)..(4, 4); }
13359 @@XMLTest:
13360 @@@QName: xp.name.doctype.decl.stag.etag.1.1.3.test
13361 @@@DEnt:
13362 @@@@test:value:
13363 <?xml version="1.1"?>
13364 <!DOCTYPE $u3005b>
13365 <$u3005b>
13366 </$u3005b>
13367 @@@test:domTree:
13368 document {
13369 xml-version: '1.1';
13370 document-type {
13371 node-name: U+3005 'b';
13372 }
13373 element {
13374 node-name: U+3005 'b';
13375 }
13376 }
13377 @@XMLTest:
13378 @@@QName: xp.name.doctypedecl.stag.etag.names.1.0.1.test
13379 @@@DEnt:
13380 @@@@test:value:
13381 <?xml version="1.0"?>
13382 <!DOCTYPE a:b>
13383 <a:b xmlns:a="http://a.example/">
13384 </a:b>
13385 @@@test:domTree:
13386 document {
13387 xml-version: '1.0';
13388 document-type {
13389 node-name: 'a:b';
13390 }
13391 element {
13392 prefix: 'a';
13393 local-name: 'b';
13394 namespace-uri: 'http://a.example/';
13395 attribute {
13396 namespace-uri: 'http://www.w3.org/2000/xmlns/';
13397 prefix: 'xmlns';
13398 local-name: 'a';
13399 value: 'http://a.example/';
13400 specified: true;
13401 }
13402 }
13403 }
13404 @@XMLTest:
13405 @@@QName: xp.name.doctypedecl.stag.etag.names.1.1.1.test
13406 @@@DEnt:
13407 @@@@test:value:
13408 <?xml version="1.1"?>
13409 <!DOCTYPE a:b>
13410 <a:b xmlns:a="http://a.example/">
13411 </a:b>
13412 @@@test:domTree:
13413 document {
13414 xml-version: '1.1';
13415 document-type {
13416 node-name: 'a:b';
13417 }
13418 element {
13419 prefix: 'a';
13420 local-name: 'b';
13421 namespace-uri: 'http://a.example/';
13422 attribute {
13423 namespace-uri: 'http://www.w3.org/2000/xmlns/';
13424 prefix: 'xmlns';
13425 local-name: 'a';
13426 specified: true;
13427 }
13428 }
13429 }
13430 @@XMLTest:
13431 @@@QName: xp.name.doctypedecl.stag.etag.names.1.0.2.test
13432 @@@DEnt:
13433 @@@@test:value:
13434 <?xml version="1.0"?>
13435 <!DOCTYPE :ab>
13436 <:ab>
13437 </:ab>
13438 @@@c:erred: <[[xp|nswf-legal-qname]]> { (2, 11)..(2, 13); }
13439 @@@c:erred: <[[xp|nswf-legal-qname]]> { (3, 2)..(3, 4); }
13440 @@@c:erred: <[[xp|nsc-prefix-declared]]> { /* prefix || */ }
13441 @@XMLTest:
13442 @@@QName: xp.name.doctypedecl.stag.etag.names.1.1.2.test
13443 @@@DEnt:
13444 @@@@test:value:
13445 <?xml version="1.1"?>
13446 <!DOCTYPE :ab>
13447 <:ab>
13448 </:ab>
13449 @@@c:erred: <[[xp|nswf-legal-qname]]> { (2, 11)..(2, 13); }
13450 @@@c:erred: <[[xp|nswf-legal-qname]]> { (3, 2)..(3, 4); }
13451 @@@c:erred: <[[xp|nsc-prefix-declared]]> { /* prefix || */ }
13452 @@XMLTest:
13453 @@@QName: xp.name.doctypedecl.stag.etag.names.1.0.3.test
13454 @@@DEnt:
13455 @@@@test:value:
13456 <?xml version="1.0"?>
13457 <!DOCTYPE a:$u3005>
13458 <a:$u3005 xmlns:a="http://a.example/">
13459 </a:$u3005>
13460 @@@c:erred: <[[xp|nswf-legal-qname]]> { (2, 11)..(2, 13); }
13461 @@@c:erred: <[[xp|nswf-legal-qname]]> { (3, 2)..(3, 4); }
13462 @@XMLTest:
13463 @@@QName: xp.name.doctypedecl.stag.etag.names.1.1.3.test
13464 @@@DEnt:
13465 @@@@test:value:
13466 <?xml version="1.1"?>
13467 <!DOCTYPE a:$u3005>
13468 <a:$u3005 xmlns:a="http://a.example/">
13469 </a:$u3005>
13470 @@@test:domTree:
13471 document {
13472 xml-version: '1.1';
13473 document-type {
13474 node-name: 'a:' U+3005;
13475 }
13476 element {
13477 prefix: 'a';
13478 local-name: U+3005;
13479 namespace-uri: 'http://a.example/';
13480 attribute {
13481 namespace-uri: 'http://www.w3.org/2000/xmlns/';
13482 prefix: 'xmlns';
13483 local-name: 'a';
13484 value: 'http://a.example/';
13485 specified: true;
13486 }
13487 }
13488 }
13489 @@XMLTest:
13490 @@@QName: xp.name.doctypedecl.stag.etag.names.1.0.4.test
13491 @@@DEnt:
13492 @@@@test:value:
13493 <?xml version="1.0"?>
13494 <!DOCTYPE a:b>
13495 <a:b>
13496 </a:b>
13497 @@@c:erred: <[[xp|nsc-prefix-declared]]> { (3, 1)..(3, 5); }
13498 @@XMLTest:
13499 @@@QName: xp.name.doctypedecl.stag.etag.names.1.1.4.test
13500 @@@DEnt:
13501 @@@@test:value:
13502 <?xml version="1.1"?>
13503 <!DOCTYPE a:b>
13504 <a:b>
13505 </a:b>
13506 @@@c:erred: <[[xp|nsc-prefix-declared]]> { (3, 1)..(3, 5); }
13507 @@XMLTest:
13508 @@@QName: xp.name.emptyelemtag.1.0.2.test
13509 @@@DEnt:
13510 @@@@test:value:
13511 <?xml version="1.0"?>
13512 <$u3001$u3002/>
13513 @@@c:erred: <[[xp|wf-invalid-character-in-node-name]]>{ (2, 2)..(2, 3); }
13514 @@XMLTest:
13515 @@@QName: xp.name.emptyelemtag.1.1.2.test
13516 @@@DEnt:
13517 @@@@test:value:
13518 <?xml version="1.1"?>
13519 <$u3001$u3002/>
13520 @@@test:domTree:
13521 document {
13522 xml-version: '1.1';
13523 element {
13524 node-name: U+3001 U+3002;
13525 }
13526 }
13527 @@XMLTest:
13528 @@@QName: xp.name.emptyelemtag.1.0.3.test
13529 @@@DEnt:
13530 @@@@test:value:
13531 <?xml version="1.0"?>
13532 <$u3005b/>
13533 @@@c:erred: <[[xp|wf-invalid-character-in-node-name]]>{ (2, 2)..(2, 3); }
13534 @@XMLTest:
13535 @@@QName: xp.name.emptyelemtag.1.1.3.test
13536 @@@DEnt:
13537 @@@@test:value:
13538 <?xml version="1.1"?>
13539 <$u3005b/>
13540 @@@test:domTree:
13541 document {
13542 xml-version: '1.1';
13543 element {
13544 node-name: U+3005 'b';
13545 }
13546 }
13547 @@XMLTest:
13548 @@@QName: xp.name.emptyelemtag.names.1.0.1.test
13549 @@@DEnt:
13550 @@@@test:value:
13551 <?xml version="1.0"?>
13552 <a:b/>
13553 @@@c:erred: <[[xp|nsc-prefix-declared]]>{ (2, 1)..(2, 6); }
13554 @@XMLTest:
13555 @@@QName: xp.name.emptyelemtag.names.1.1.1.test
13556 @@@DEnt:
13557 @@@@test:value:
13558 <?xml version="1.1"?>
13559 <a:b/>
13560 @@@c:erred: <[[xp|nsc-prefix-declared]]>{ (2, 1)..(2, 6); }
13561 @@XMLTest:
13562 @@@QName: xp.name.attr.1.0.2.test
13563 @@@DEnt:
13564 @@@@test:value:
13565 <?xml version="1.0"?>
13566 <a $u3001$u3002=""/>
13567 @@@c:erred: <[[xp|wf-invalid-character-in-node-name]]>{ (2, 4)..(2, 5); }
13568 @@XMLTest:
13569 @@@QName: xp.name.attr.1.1.2.test
13570 @@@DEnt:
13571 @@@@test:value:
13572 <?xml version="1.1"?>
13573 <a $u3001$u3002=""/>
13574 @@@test:domTree:
13575 document {
13576 xml-version: '1.1';
13577 element {
13578 attribute {
13579 node-name: U+3001 U+3002;
13580 }
13581 }
13582 }
13583 @@XMLTest:
13584 @@@QName: xp.name.attr.1.0.3.test
13585 @@@DEnt:
13586 @@@@test:value:
13587 <?xml version="1.0"?>
13588 <a $u3005b=""/>
13589 @@@c:erred: <[[xp|wf-invalid-character-in-node-name]]>{ (2, 4)..(2, 5); }
13590 @@XMLTest:
13591 @@@QName: xp.name.attr.1.1.3.test
13592 @@@DEnt:
13593 @@@@test:value:
13594 <?xml version="1.1"?>
13595 <a $u3005b=""/>
13596 @@@test:domTree:
13597 document {
13598 xml-version: '1.1';
13599 element {
13600 attribute {
13601 node-name: U+3005 'b';
13602 }
13603 }
13604 }
13605 @@XMLTest:
13606 @@@QName: xp.name.attr.names.1.0.1.test
13607 @@@DEnt:
13608 @@@@test:value:
13609 <?xml version="1.0"?>
13610 <a a:b=""/>
13611 @@@c:erred: <[[xp|nsc-prefix-declared]]>{ (2, 1)..(2, 11); }
13612 @@XMLTest:
13613 @@@QName: xp.name.attr.names.1.1.1.test
13614 @@@DEnt:
13615 @@@@test:value:
13616 <?xml version="1.1"?>
13617 <a a:b=""/>
13618 @@@c:erred: <[[xp|nsc-prefix-declared]]>{ (2, 1)..(2, 11); }
13619 @@XMLTest:
13620 @@@QName: xp.name.attr.names.1.0.2.test
13621 @@@DEnt:
13622 @@@@test:value:
13623 <?xml version="1.0"?>
13624 <a :ab=""/>
13625 @@@c:erred: <[[xp|nswf-legal-qname]]>{ (2, 4)..(2, 6); }
13626 @@@c:erred: <[[xp|nsc-prefix-declared]]> { }
13627 @@XMLTest:
13628 @@@QName: xp.name.attr.names.1.1.2.test
13629 @@@DEnt:
13630 @@@@test:value:
13631 <?xml version="1.1"?>
13632 <a :ab=""/>
13633 @@@c:erred: <[[xp|nswf-legal-qname]]>{ (2, 4)..(2, 6); }
13634 @@@c:erred: <[[xp|nsc-prefix-declared]]> { }
13635 @@XMLTest:
13636 @@@QName: xp.name.attlist.1.0.2.test
13637 @@@DEnt:
13638 @@@@test:value:
13639 <?xml version="1.0"?>
13640 <!DOCTYPE p [
13641 <!NOTATION $u3001$u3002 SYSTEM "n">
13642 <!ATTLIST $u3001$u3002
13643 $u3001$u3002
13644 NOTATION
13645 ($u3001$u3002)
13646 #IMPLIED>
13647 ]><p/>
13648 @@@c:erred: <[[xp|wf-invalid-character-in-node-name]]>{ (3, 12)..(3, 13); }
13649 @@@c:erred: <[[xp|wf-invalid-character-in-node-name]]>{ (4, 11)..(4, 12); }
13650 @@@c:erred: <[[xp|wf-invalid-character-in-node-name]]>{ (5, 1)..(5, 2); }
13651 @@@c:erred: <[[xp|wf-invalid-character-in-node-name]]>{ (7, 2)..(7, 3); }
13652 @@XMLTest:
13653 @@@QName: xp.name.attlist.1.1.2.test
13654 @@@DEnt:
13655 @@@@test:value:
13656 <?xml version="1.1"?>
13657 <!DOCTYPE p [
13658 <!NOTATION $u3001$u3002 SYSTEM "n">
13659 <!ATTLIST $u3001$u3002
13660 $u3001$u3002
13661 NOTATION
13662 ($u3001$u3002)
13663 #IMPLIED>
13664 ]><p/>
13665 @@@test:domTree:
13666 document {
13667 xml-version: '1.1';
13668 document-type {
13669 notation {
13670 node-name: U+3001 U+3002;
13671 }
13672 element-type-definition {
13673 node-name: U+3001 U+3002;
13674 attribute-definition {
13675 node-name: U+3001 U+3002;
13676 allowed-tokens: DOMStringList (U+3001 U+3002);
13677 }
13678 }
13679 }
13680 element { }
13681 }
13682 @@XMLTest:
13683 @@@QName: xp.name.attlist.1.0.3.test
13684 @@@DEnt:
13685 @@@@test:value:
13686 <?xml version="1.0"?>
13687 <!DOCTYPE p [
13688 <!NOTATION $u3005b SYSTEM "n">
13689 <!ATTLIST $u3005b
13690 $u3005b
13691 NOTATION
13692 ($u3005b)
13693 #IMPLIED>
13694 ]><p/>
13695 @@@c:erred: <[[xp|wf-invalid-character-in-node-name]]>{ (3, 12)..(3, 13); }
13696 @@@c:erred: <[[xp|wf-invalid-character-in-node-name]]>{ (4, 11)..(4, 12); }
13697 @@@c:erred: <[[xp|wf-invalid-character-in-node-name]]>{ (5, 1)..(5, 2); }
13698 @@@c:erred: <[[xp|wf-invalid-character-in-node-name]]>{ (7, 2)..(7, 3); }
13699 @@XMLTest:
13700 @@@QName: xp.name.attlist.1.1.3.test
13701 @@@DEnt:
13702 @@@@test:value:
13703 <?xml version="1.1"?>
13704 <!DOCTYPE p [
13705 <!NOTATION $u3005b SYSTEM "n">
13706 <!ATTLIST $u3005b
13707 $u3005b
13708 NOTATION
13709 ($u3005b)
13710 #IMPLIED>
13711 ]><p/>
13712 @@@test:domTree:
13713 document {
13714 xml-version: '1.1';
13715 document-type {
13716 notation {
13717 node-name: U+3005 'b';
13718 }
13719 element-type-definition {
13720 node-name: U+3005 'b';
13721 attribute-definition {
13722 node-name: U+3005 'b';
13723 allowed-tokens: DOMStringList (U+3005 'b');
13724 }
13725 }
13726 }
13727 element { }
13728 }
13729 @@XMLTest:
13730 @@@QName: xp.name.attlist.names.1.0.1.test
13731 @@@DEnt:
13732 @@@@test:value:
13733 <?xml version="1.0"?>
13734 <!DOCTYPE p [
13735 <!NOTATION a:b SYSTEM "n">
13736 <!ATTLIST a:b
13737 a:b
13738 NOTATION
13739 (a:b)
13740 #IMPLIED>
13741 ]><p/>
13742 @@@c:erred: <[[xp|nswf-legal-ncname]]>{ (3, 12)..(3, 14); }
13743 @@@c:erred: <[[xp|nswf-legal-ncname]]>{ (7, 2)..(7, 4); }
13744 @@XMLTest:
13745 @@@QName: xp.name.attlist.names.1.1.1.test
13746 @@@DEnt:
13747 @@@@test:value:
13748 <?xml version="1.1"?>
13749 <!DOCTYPE p [
13750 <!NOTATION a:b SYSTEM "n">
13751 <!ATTLIST a:b
13752 a:b
13753 NOTATION
13754 (a:b)
13755 #IMPLIED>
13756 ]><p/>
13757 @@@c:erred: <[[xp|nswf-legal-ncname]]>{ (3, 12)..(3, 14); }
13758 @@@c:erred: <[[xp|nswf-legal-ncname]]>{ (7, 2)..(7, 4); }
13759 @@XMLTest:
13760 @@@QName: xp.name.attlist.names.1.0.2.test
13761 @@@DEnt:
13762 @@@@test:value:
13763 <?xml version="1.0"?>
13764 <!DOCTYPE p [
13765 <!NOTATION :ab SYSTEM "n">
13766 <!ATTLIST :ab
13767 :ab
13768 NOTATION
13769 (:ab)
13770 #IMPLIED>
13771 ]><p/>
13772 @@@c:erred: <[[xp|nswf-legal-ncname]]>{ (3, 12)..(3, 14); }
13773 @@@c:erred: <[[xp|nswf-legal-qname]]>{ (4, 11)..(4, 13); }
13774 @@@c:erred: <[[xp|nswf-legal-qname]]>{ (5, 1)..(5, 3); }
13775 @@@c:erred: <[[xp|nswf-legal-ncname]]>{ (7, 2)..(7, 4); }
13776 @@XMLTest:
13777 @@@QName: xp.name.attlist.names.1.1.2.test
13778 @@@DEnt:
13779 @@@@test:value:
13780 <?xml version="1.1"?>
13781 <!DOCTYPE p [
13782 <!NOTATION :ab SYSTEM "n">
13783 <!ATTLIST :ab
13784 :ab
13785 NOTATION
13786 (:ab)
13787 #IMPLIED>
13788 ]><p/>
13789 @@@c:erred: <[[xp|nswf-legal-ncname]]>{ (3, 12)..(3, 14); }
13790 @@@c:erred: <[[xp|nswf-legal-qname]]>{ (4, 11)..(4, 13); }
13791 @@@c:erred: <[[xp|nswf-legal-qname]]>{ (5, 1)..(5, 3); }
13792 @@@c:erred: <[[xp|nswf-legal-ncname]]>{ (7, 2)..(7, 4); }
13793 @@XMLTest:
13794 @@@QName: xp.name.gent.1.0.2.test
13795 @@@DEnt:
13796 @@@@test:value:
13797 <?xml version="1.0"?>
13798 <!DOCTYPE p [
13799 <!ENTITY $u3001$u3002 "n">
13800 ]>
13801 <p a="&$u3001$u3002;">
13802 &$u3001$u3002;
13803 </p>
13804 @@@c:erred: <[[xp|wf-invalid-character-in-node-name]]>{ (3, 10)..(3, 11); }
13805 @@@c:erred: <[[xp|wf-invalid-character-in-node-name]]>{ (5, 8)..(5, 9); }
13806 @@@c:erred: <[[xp|wf-invalid-character-in-node-name]]>{ (6, 2)..(6, 3); }
13807 @@XMLTest:
13808 @@@QName: xp.name.ger.1.1.2.test
13809 @@@DEnt:
13810 @@@@test:value:
13811 <?xml version="1.1"?>
13812 <!DOCTYPE p [
13813 <!ENTITY $u3001$u3002 "n">
13814 ]>
13815 <p a="&$u3001$u3002;">$
13816 &$u3001$u3002;$
13817 </p>
13818 @@@test:domTree:
13819 document {
13820 xml-version: '1.1';
13821 document-type {
13822 general-entity {
13823 node-name: U+3001 U+3002;
13824 }
13825 }
13826 element {
13827 attribute {
13828 node-name: 'a';
13829 general-entity-reference {
13830 node-name: U+3001 U+3002;
13831 }
13832 }
13833 general-entity-reference {
13834 node-name: U+3001 U+3002;
13835 }
13836 }
13837 }
13838 @@XMLTest:
13839 @@@QName: xp.name.ger.1.0.3.test
13840 @@@DEnt:
13841 @@@@test:value:
13842 <?xml version="1.0"?>
13843 <!DOCTYPE p [
13844 <!ENTITY $u3005b "n">
13845 ]>
13846 <p a="&$u3005b;">
13847 &$u3005b;
13848 </p>
13849 @@@c:erred: <[[xp|wf-invalid-character-in-node-name]]>{ (3, 10)..(3, 11); }
13850 @@@c:erred: <[[xp|wf-invalid-character-in-node-name]]>{ (5, 8)..(5, 9); }
13851 @@@c:erred: <[[xp|wf-invalid-character-in-node-name]]>{ (6, 2)..(6, 3); }
13852 @@XMLTest:
13853 @@@QName: xp.name.ger.1.1.3.test
13854 @@@DEnt:
13855 @@@@test:value:
13856 <?xml version="1.1"?>
13857 <!DOCTYPE p [
13858 <!ENTITY $u3005b "n">
13859 ]>
13860 <p a="&$u3005b;">$
13861 &$u3005b;$
13862 </p>
13863 @@@test:domTree:
13864 document {
13865 xml-version: '1.1';
13866 document-type {
13867 general-entity {
13868 node-name: U+3005 'b';
13869 }
13870 }
13871 element {
13872 attribute {
13873 node-name: 'a';
13874 general-entity-reference {
13875 node-name: U+3005 'b';
13876 }
13877 }
13878 general-entity-reference {
13879 node-name: U+3005 'b';
13880 }
13881 }
13882 }
13883 @@XMLTest:
13884 @@@QName: xp.name.ger.names.1.0.1.test
13885 @@@DEnt:
13886 @@@@test:value:
13887 <?xml version="1.0"?>
13888 <!DOCTYPE p [
13889 <!ENTITY a:b "n">
13890 ]>
13891 <p a="&a:b;">
13892 &a:b;
13893 </p>
13894 @@@c:erred: <[[xp|nswf-legal-ncname]]>{ (3, 10)..(3, 12); }
13895 @@@c:erred: <[[xp|nswf-legal-ncname]]>{ (5, 8)..(5, 10); }
13896 @@@c:erred: <[[xp|nswf-legal-ncname]]>{ (6, 2)..(6, 4); }
13897 @@XMLTest:
13898 @@@QName: xp.name.ger.names.1.1.1.test
13899 @@@DEnt:
13900 @@@@test:value:
13901 <?xml version="1.1"?>
13902 <!DOCTYPE p [
13903 <!ENTITY a:b "n">
13904 ]>
13905 <p a="&a:b;">
13906 &a:b;
13907 </p>
13908 @@@c:erred: <[[xp|nswf-legal-ncname]]>{ (3, 10)..(3, 12); }
13909 @@@c:erred: <[[xp|nswf-legal-ncname]]>{ (5, 8)..(5, 10); }
13910 @@@c:erred: <[[xp|nswf-legal-ncname]]>{ (6, 2)..(6, 4); }
13911 @@XMLTest:
13912 @@@QName: xp.name.ndata.1.0.2.test
13913 @@@DEnt:
13914 @@@@test:value:
13915 <?xml version="1.0"?>
13916 <!DOCTYPE p [
13917 <!NOTATION $u3001$u3002 SYSTEM "n">
13918 <!ENTITY e SYSTEM "s" NDATA $u3001$u3002>
13919 ]><p/>
13920 @@@c:erred: <[[xp|wf-invalid-character-in-node-name]]>{ (3, 12)..(3, 13); }
13921 @@@c:erred: <[[xp|wf-invalid-character-in-node-name]]>{ (4, 29)..(4, 30); }
13922 @@XMLTest:
13923 @@@QName: xp.name.ndata.1.1.2.test
13924 @@@DEnt:
13925 @@@@test:value:
13926 <?xml version="1.1"?>
13927 <!DOCTYPE p [
13928 <!NOTATION $u3001$u3002 SYSTEM "n">
13929 <!ENTITY e SYSTEM "s" NDATA $u3001$u3002>
13930 ]><p/>
13931 @@@test:domTree:
13932 document {
13933 xml-version: '1.1';
13934 document-type {
13935 notation {
13936 node-name: U+3001 U+3002;
13937 }
13938 general-entity {
13939 node-name: 'e';
13940 notation-name: U+3001 U+3002;
13941 }
13942 }
13943 element { }
13944 }
13945 @@XMLTest:
13946 @@@QName: xp.name.ndata.1.0.3.test
13947 @@@DEnt:
13948 @@@@test:value:
13949 <?xml version="1.0"?>
13950 <!DOCTYPE p [
13951 <!NOTATION $u3005b SYSTEM "n">
13952 <!ENTITY e SYSTEM "s" NDATA $u3005b>
13953 ]><p/>
13954 @@@c:erred: <[[xp|wf-invalid-character-in-node-name]]>{ (3, 12)..(3, 13); }
13955 @@@c:erred: <[[xp|wf-invalid-character-in-node-name]]>{ (4, 29)..(4, 30); }
13956 @@XMLTest:
13957 @@@QName: xp.name.ndata.1.1.3.test
13958 @@@DEnt:
13959 @@@@test:value:
13960 <?xml version="1.1"?>
13961 <!DOCTYPE p [
13962 <!NOTATION $u3005b SYSTEM "n">
13963 <!ENTITY e SYSTEM "s" NDATA $u3005b>
13964 ]><p/>
13965 @@@test:domTree:
13966 document {
13967 xml-version: '1.1';
13968 document-type {
13969 notation {
13970 node-name: U+3005 'b';
13971 }
13972 general-entity {
13973 node-name: 'e';
13974 notation-name: U+3005 'b';
13975 }
13976 }
13977 element { }
13978 }
13979 @@XMLTest:
13980 @@@QName: xp.name.ndata.names.1.0.1.test
13981 @@@DEnt:
13982 @@@@test:value:
13983 <?xml version="1.0"?>
13984 <!DOCTYPE p [
13985 <!NOTATION a:b SYSTEM "n">
13986 <!ENTITY e SYSTEM "s" NDATA a:b>
13987 ]><p/>
13988 @@@c:erred: <[[xp|nswf-legal-ncname]]>{ (3, 12)..(3, 14); }
13989 @@@c:erred: <[[xp|nswf-legal-ncname]]>{ (4, 29)..(4, 31); }
13990 @@XMLTest:
13991 @@@QName: xp.name.ndata.names.1.1.1.test
13992 @@@DEnt:
13993 @@@@test:value:
13994 <?xml version="1.1"?>
13995 <!DOCTYPE p [
13996 <!NOTATION a:b SYSTEM "n">
13997 <!ENTITY e SYSTEM "s" NDATA a:b>
13998 ]><p/>
13999 @@@c:erred: <[[xp|nswf-legal-ncname]]>{ (3, 12)..(3, 14); }
14000 @@@c:erred: <[[xp|nswf-legal-ncname]]>{ (4, 29)..(4, 31); }
14001
14002 @@enImplNote:
14003 @@@ddid: wf-invalid-character-in-node-name
14004 @@@@:
14005 {ISSUE::
14006 {P:: Tests required for:
14007
14008 - <CODE::Name> in element type declaration
14009
14010 - <CODE::Name> in model group
14011
14012 - <CODE::Name> in parameter entity declaration
14013
14014 - <CODE::Name> in parameter entity reference
14015
14016 }
14017 }
14018
14019 @@XMLTest:
14020 @@@QName: xp.NOTATION.1.test
14021 @@@DEnt:
14022 @@@@test:value:
14023 <!DOCTYPE p [
14024 <!NOTATION n SYSTEM "m">
14025 ]><p/>
14026 @@@test:domTree:
14027 document {
14028 document-type {
14029 notation {
14030 node-name: 'n';
14031 public-id: null;
14032 system-id: 'm';
14033 }
14034 }
14035 element { }
14036 }
14037 @@XMLTest:
14038 @@@QName: xp.NOTATION.2.test
14039 @@@DEnt:
14040 @@@@test:value:
14041 <!DOCTYPE p [
14042 <!NOTATION n PUBLIC "m">
14043 ]><p/>
14044 @@@test:domTree:
14045 document {
14046 document-type {
14047 notation {
14048 node-name: 'n';
14049 system-id: null;
14050 public-id: 'm';
14051 }
14052 }
14053 element { }
14054 }
14055 @@XMLTest:
14056 @@@QName: xp.NOTATION.3.test
14057 @@@DEnt:
14058 @@@@test:value:
14059 <!DOCTYPE p [
14060 <!NOTATION n PUBLIC "m" "l">
14061 ]><p/>
14062 @@@test:domTree:
14063 document {
14064 document-type {
14065 notation {
14066 node-name: 'n';
14067 public-id: 'm';
14068 system-id: 'l';
14069 }
14070 }
14071 element { }
14072 }
14073 @@XMLTest:
14074 @@@QName: xp.NOTATION.4.test
14075 @@@DEnt:
14076 @@@@test:value:
14077 <!DOCTYPE p [
14078 <!NOTATION n SYSTEM "m">
14079 <!NOTATION n SYSTEM "l">
14080 ]><p/>
14081 @@@c:erred: <[[xp|vc-unique-notation-name]]> { (3, 1)..(3, 24); }
14082 @@@test:domTree:
14083 document {
14084 document-type {
14085 notation {
14086 node-name: 'n';
14087 system-id: 'm';
14088 }
14089 }
14090 element { }
14091 }
14092
14093 @@XMLTest:
14094 @@@QName: xp.names.1.test
14095 @@@DEnt:
14096 @@@@test:value:
14097 <p xmlns="http://1.example/" a="b"/>
14098 @@@test:domTree:
14099 document {
14100 element {
14101 prefix: null;
14102 local-name: 'p';
14103 namespace-uri: 'http://1.example/';
14104 attribute {
14105 prefix: null;
14106 local-name: 'xmlns';
14107 namespace-uri: 'http://www.w3.org/2000/xmlns/';
14108 specified: true;
14109 }
14110 attribute {
14111 prefix: null;
14112 local-name: 'a';
14113 specified: true;
14114 }
14115 }
14116 }
14117 @@XMLTest:
14118 @@@QName: xp.names.2.test
14119 @@@DEnt:
14120 @@@@test:value:
14121 <p xmlns:a="http://1.example/" a="b" a:a="c"/>
14122 @@@test:domTree:
14123 document {
14124 element {
14125 prefix: null;
14126 local-name: 'p';
14127 namespace-uri: null;
14128 attribute {
14129 prefix: 'xmlns';
14130 local-name: 'a';
14131 namespace-uri: 'http://www.w3.org/2000/xmlns/';
14132 specified: true;
14133 }
14134 attribute {
14135 prefix: null;
14136 local-name: 'a';
14137 specified: true;
14138 }
14139 attribute {
14140 prefix: 'a';
14141 local-name: 'a';
14142 namespace-uri: 'http://1.example/';
14143 specified: true;
14144 }
14145 }
14146 }
14147 @@XMLTest:
14148 @@@QName: xp.names.3.test
14149 @@@DEnt:
14150 @@@@test:value:
14151 <a:p xmlns:a="http://1.example/" a="b" a:a="c"/>
14152 @@@test:domTree:
14153 document {
14154 element {
14155 prefix: 'a';
14156 local-name: 'p';
14157 namespace-uri: 'http://1.example/';
14158 attribute {
14159 prefix: 'xmlns';
14160 local-name: 'a';
14161 namespace-uri: 'http://www.w3.org/2000/xmlns/';
14162 specified: true;
14163 }
14164 attribute {
14165 prefix: null;
14166 local-name: 'a';
14167 specified: true;
14168 }
14169 attribute {
14170 prefix: 'a';
14171 local-name: 'a';
14172 namespace-uri: 'http://1.example/';
14173 specified: true;
14174 }
14175 }
14176 }
14177 @@XMLTest:
14178 @@@QName: xp.names.5.test
14179 @@@DEnt:
14180 @@@@test:value:
14181 <p xmlns:a="http://1.example/">$
14182 <a:q/>$
14183 </p>
14184 @@@test:domTree:
14185 document {
14186 element {
14187 prefix: null;
14188 local-name: 'p';
14189 namespace-uri: null;
14190 attribute {
14191 prefix: 'xmlns';
14192 local-name: 'a';
14193 namespace-uri: 'http://www.w3.org/2000/xmlns/';
14194 specified: true;
14195 }
14196 element {
14197 prefix: 'a';
14198 local-name: 'q';
14199 namespace-uri: 'http://1.example/';
14200 }
14201 }
14202 }
14203 @@XMLTest:
14204 @@@QName: xp.names.6.test
14205 @@@DEnt:
14206 @@@@test:value:
14207 <p xmlns:a="http://1.example/">$
14208 <q a:b="c"/>$
14209 </p>
14210 @@@test:domTree:
14211 document {
14212 element {
14213 prefix: null;
14214 local-name: 'p';
14215 namespace-uri: null;
14216 attribute {
14217 prefix: 'xmlns';
14218 local-name: 'a';
14219 namespace-uri: 'http://www.w3.org/2000/xmlns/';
14220 specified: true;
14221 }
14222 element {
14223 prefix: null;
14224 local-name: 'q';
14225 namespace-uri: null;
14226 attribute {
14227 prefix: 'a';
14228 local-name: 'b';
14229 namespace-uri: 'http://1.example/';
14230 specified: true;
14231 }
14232 }
14233 }
14234 }
14235 @@XMLTest:
14236 @@@QName: xp.names.7.test
14237 @@@DEnt:
14238 @@@@test:value:
14239 <p xmlns:a="http://1.example/">$
14240 <q a:b="c" xmlns:a="http://2.example/"/>$
14241 </p>
14242 @@@test:domTree:
14243 document {
14244 element {
14245 prefix: null;
14246 local-name: 'p';
14247 namespace-uri: null;
14248 attribute {
14249 prefix: 'xmlns';
14250 local-name: 'a';
14251 namespace-uri: 'http://www.w3.org/2000/xmlns/';
14252 specified: true;
14253 }
14254 element {
14255 prefix: null;
14256 local-name: 'q';
14257 namespace-uri: null;
14258 attribute {
14259 prefix: 'a';
14260 local-name: 'b';
14261 namespace-uri: 'http://2.example/';
14262 specified: true;
14263 }
14264 attribute {
14265 prefix: 'xmlns';
14266 local-name: 'a';
14267 namespace-uri: 'http://www.w3.org/2000/xmlns/';
14268 specified: true;
14269 }
14270 }
14271 }
14272 }
14273
14274 @@XMLTest:
14275 @@@QName: xp.names.undeclare.1.test
14276 @@@DEnt:
14277 @@@@test:value:
14278 <p xmlns="http://1.example/">$
14279 <q xmlns="">$
14280 <r xmlns="http://2.example/"/>$
14281 </q>$
14282 </p>
14283 @@@test:domTree:
14284 document {
14285 element {
14286 prefix: null;
14287 local-name: 'p';
14288 namespace-uri: 'http://1.example/';
14289 attribute {
14290 prefix: null;
14291 local-name: 'xmlns';
14292 namespace-uri: 'http://www.w3.org/2000/xmlns/';
14293 specified: true;
14294 }
14295 element {
14296 prefix: null;
14297 local-name: 'q';
14298 namespace-uri: null;
14299 attribute {
14300 prefix: null;
14301 local-name: 'xmlns';
14302 namespace-uri: 'http://www.w3.org/2000/xmlns/';
14303 specified: true;
14304 }
14305 element {
14306 prefix: null;
14307 local-name: 'r';
14308 namespace-uri: 'http://2.example/';
14309 attribute {
14310 prefix: null;
14311 local-name: 'xmlns';
14312 namespace-uri: 'http://www.w3.org/2000/xmlns/';
14313 specified: true;
14314 }
14315 }
14316 }
14317 }
14318 }
14319
14320 @@XMLTest:
14321 @@@QName: xp.names.undeclare.1.0.1.test
14322 @@@DEnt:
14323 @@@@test:value:
14324 <?xml version="1.0"?>
14325 <a:p xmlns:a="http://1.example/">$
14326 <q xmlns:a="">$
14327 <a:r xmlns:a="http://2.example/"/>$
14328 </q>$
14329 </a:p>
14330 @@@c:erred: <[[xp|nswf-empty-namespace-name]]> { (2, 34)..(2, 47); }
14331 @@XMLTest:
14332 @@@QName: xp.names.undeclare.1.1.1.test
14333 @@@DEnt:
14334 @@@@test:value:
14335 <?xml version="1.1"?>
14336 <a:p xmlns:a="http://1.example/">$
14337 <q xmlns:a="">$
14338 <a:r xmlns:a="http://2.example/"/>$
14339 </q>$
14340 </a:p>
14341 @@@test:domTree:
14342 document {
14343 element {
14344 prefix: 'a';
14345 local-name: 'p';
14346 namespace-uri: 'http://1.example/';
14347 attribute {
14348 prefix: 'xmlns';
14349 local-name: 'a';
14350 namespace-uri: 'http://www.w3.org/2000/xmlns/';
14351 specified: true;
14352 }
14353 element {
14354 prefix: null;
14355 local-name: 'q';
14356 namespace-uri: null;
14357 attribute {
14358 prefix: 'xmlns';
14359 local-name: 'a';
14360 namespace-uri: 'http://www.w3.org/2000/xmlns/';
14361 specified: true;
14362 }
14363 element {
14364 prefix: 'a';
14365 local-name: 'r';
14366 namespace-uri: 'http://2.example/';
14367 attribute {
14368 prefix: 'xmlns';
14369 local-name: 'a';
14370 namespace-uri: 'http://www.w3.org/2000/xmlns/';
14371 specified: true;
14372 }
14373 }
14374 }
14375 }
14376 }
14377 @@XMLTest:
14378 @@@QName: xp.names.undeclare.1.1.2.test
14379 @@@DEnt:
14380 @@@@test:value:
14381 <?xml version="1.1"?>
14382 <a:p xmlns:a="http://1.example/">$
14383 <q xmlns:a="">$
14384 <a:r/>$
14385 </q>$
14386 </a:p>
14387 @@@c:erred: <[[xp|nsc-prefix-declared]]> { (2, 48)..(2, 53); }
14388
14389 @@XMLTest:
14390 @@@QName: xp.names.xml.prefix.1.test
14391 @@@DEnt:
14392 @@@@test:value:
14393 <a xmlns:xml="http://www.w3.org/XML/1998/namespace"/>
14394 @@@test:domTree:
14395 document {
14396 element {
14397 attribute {
14398 prefix: 'xmlns';
14399 local-name: 'xml';
14400 namespace-uri: 'http://www.w3.org/2000/xmlns/';
14401 }
14402 }
14403 }
14404 @@XMLTest:
14405 @@@QName: xp.names.xml.prefix.2.test
14406 @@@DEnt:
14407 @@@@test:value:
14408 <a xmlns:xml="a"/>
14409 @@@c:erred: <[[xp|nsc-reserved-prefix-xml]]> { (1, 1)..(1, 18); }
14410 @@XMLTest:
14411 @@@QName: xp.names.xml.prefix.3.test
14412 @@@DEnt:
14413 @@@@test:value:
14414 <a xmlns:a="http://www.w3.org/XML/1998/namespace"
14415 />
14416 @@@c:erred: <[[xp|nsc-reserved-namespace-name-xml]]> { (1, 1)..(2, 2); }
14417 @@XMLTest:
14418 @@@QName: xp.names.xml.prefix.4.test
14419 @@@DEnt:
14420 @@@@test:value:
14421 <a xml:lang="ja"/>
14422 @@@test:domTree:
14423 document {
14424 element {
14425 attribute {
14426 prefix: 'xml';
14427 local-name: 'lang';
14428 namespace-uri: 'http://www.w3.org/XML/1998/namespace';
14429 }
14430 }
14431 }
14432
14433 @@XMLTest:
14434 @@@QName: xp.names.prefix.declared.1.test
14435 @@@DEnt:
14436 @@@@test:value:
14437 <!DOCTYPE a [
14438 <!ATTLIST a
14439 b:c CDATA "d"
14440 >
14441 ]>
14442 <a/>
14443 @@@c:erred: <[[xp|nsc-prefix-declared]]> { (6, 1)..(6, 4); }
14444
14445 @@XMLTest:
14446 @@@QName: xp.names.xmlns.reserved.1.test
14447 @@@DEnt:
14448 @@@@test:value:
14449 <a xmlns:xmlns="http://www.w3.org/2000/xmlns/"
14450 />
14451 @@@c:erred: <[[xp|nsc-reserved-prefix-xmlns]]> { (1, 1)..(2, 2); }
14452 @@@c:erred: <[[xp|nsc-reserved-namespace-name-xmlns]]> { (1, 1)..(2, 2); }
14453 @@XMLTest:
14454 @@@QName: xp.names.xmlns.reserved.2.test
14455 @@@DEnt:
14456 @@@@test:value:
14457 <a xmlns:xmlns="a"
14458 />
14459 @@@c:erred: <[[xp|nsc-reserved-prefix-xmlns]]> { (1, 1)..(2, 2); }
14460 @@XMLTest:
14461 @@@QName: xp.names.xmlns.reserved.3.test
14462 @@@DEnt:
14463 @@@@test:value:
14464 <a xmlns:a="http://www.w3.org/2000/xmlns/"
14465 />
14466 @@@c:erred: <[[xp|nsc-reserved-namespace-name-xmlns]]> { (1, 1)..(2, 2); }
14467
14468 @@XMLTest:
14469 @@@QName: xp.names.default.1.test
14470 @@@DEnt:
14471 @@@@test:value:
14472 <!DOCTYPE a [
14473 <!ATTLIST a
14474 xmlns CDATA "http://1.example/">
14475 ]>
14476 <a/>
14477 @@@test:domTree:
14478 document {
14479 document-type {
14480 element-type-definition {
14481 node-name: 'a';
14482 attribute-definition {
14483 node-name: 'xmlns';
14484 node-value: 'http://1.example/';
14485 }
14486 }
14487 }
14488 element {
14489 prefix: null;
14490 local-name: 'a';
14491 namespace-uri: 'http://1.example/';
14492 attribute {
14493 prefix: null;
14494 local-name: 'xmlns';
14495 namespace-uri: 'http://www.w3.org/2000/xmlns/';
14496 value: 'http://1.example/';
14497 specified: false;
14498 }
14499 }
14500 }
14501 @@XMLTest:
14502 @@@QName: xp.names.default.2.test
14503 @@@DEnt:
14504 @@@@test:value:
14505 <!DOCTYPE a [
14506 <!ATTLIST a
14507 xmlns CDATA "http://1.example/">
14508 ]>
14509 <a xmlns="http://2.example/"/>
14510 @@@test:domTree:
14511 document {
14512 document-type {
14513 element-type-definition {
14514 node-name: 'a';
14515 attribute-definition {
14516 node-name: 'xmlns';
14517 node-value: 'http://1.example/';
14518 }
14519 }
14520 }
14521 element {
14522 prefix: null;
14523 local-name: 'a';
14524 namespace-uri: 'http://2.example/';
14525 attribute {
14526 prefix: null;
14527 local-name: 'xmlns';
14528 namespace-uri: 'http://www.w3.org/2000/xmlns/';
14529 value: 'http://2.example/';
14530 specified: true;
14531 }
14532 }
14533 }
14534 @@XMLTest:
14535 @@@QName: xp.names.default.3.test
14536 @@@DEnt:
14537 @@@@test:value:
14538 <!DOCTYPE b:a [
14539 <!ATTLIST b:a
14540 xmlns:b CDATA "http://1.example/">
14541 ]>
14542 <b:a/>
14543 @@@test:domTree:
14544 document {
14545 document-type {
14546 element-type-definition {
14547 node-name: 'b:a';
14548 attribute-definition {
14549 node-name: 'xmlns:b';
14550 node-value: 'http://1.example/';
14551 }
14552 }
14553 }
14554 element {
14555 prefix: 'b';
14556 local-name: 'a';
14557 namespace-uri: 'http://1.example/';
14558 attribute {
14559 prefix: 'xmlns';
14560 local-name: 'b';
14561 namespace-uri: 'http://www.w3.org/2000/xmlns/';
14562 value: 'http://1.example/';
14563 specified: false;
14564 }
14565 }
14566 }
14567 @@XMLTest:
14568 @@@QName: xp.names.default.4.test
14569 @@@DEnt:
14570 @@@@test:value:
14571 <!DOCTYPE b:a [
14572 <!ATTLIST b:a
14573 xmlns:b CDATA "http://1.example/">
14574 ]>
14575 <b:a xmlns:b="http://2.example/"/>
14576 @@@test:domTree:
14577 document {
14578 document-type {
14579 element-type-definition {
14580 node-name: 'b:a';
14581 attribute-definition {
14582 node-name: 'xmlns:b';
14583 node-value: 'http://1.example/';
14584 }
14585 }
14586 }
14587 element {
14588 prefix: 'b';
14589 local-name: 'a';
14590 namespace-uri: 'http://2.example/';
14591 attribute {
14592 prefix: 'xmlns';
14593 local-name: 'b';
14594 namespace-uri: 'http://www.w3.org/2000/xmlns/';
14595 value: 'http://2.example/';
14596 specified: true;
14597 }
14598 }
14599 }
14600 @@XMLTest:
14601 @@@QName: xp.names.default.5.test
14602 @@@DEnt:
14603 @@@@test:value:
14604 <!DOCTYPE a [
14605 <!ATTLIST a
14606 xmlns:b CDATA "http://1.example/"
14607 b:c CDATA "http://1.example/">
14608 ]>
14609 <a xmlns:b="http://2.example/"/>
14610 @@@test:domTree:
14611 document {
14612 document-type {
14613 element-type-definition {
14614 node-name: 'a';
14615 attribute-definition {
14616 node-name: 'xmlns:b';
14617 text-content: 'http://1.example/';
14618 }
14619 attribute-definition {
14620 node-name: 'b:c';
14621 text-content: 'http://1.example/';
14622 }
14623 }
14624 }
14625 element {
14626 prefix: null;
14627 local-name: 'a';
14628 namespace-uri: null;
14629 attribute {
14630 prefix: 'xmlns';
14631 local-name: 'b';
14632 namespace-uri: 'http://www.w3.org/2000/xmlns/';
14633 value: 'http://2.example/';
14634 specified: true;
14635 }
14636 attribute {
14637 prefix: 'b';
14638 local-name: 'c';
14639 namespace-uri: 'http://2.example/';
14640 specified: false;
14641 }
14642 }
14643 }
14644
14645 @@XMLTest:
14646 @@@QName: xp.names.unique.1.test
14647 @@@DEnt:
14648 @@@@test:value:
14649 <a
14650 xmlns:b="http://2.example/"
14651 xmlns:c="http://2.example/"
14652 b:d=""
14653 c:d=""
14654 />
14655 @@@c:erred: <[[xp|nswf-unique-att-spec-expanded-name]]> { (1, 1)..(6, 2); }
14656 @@XMLTest:
14657 @@@QName: xp.names.unique.2.test
14658 @@@DEnt:
14659 @@@@test:value:
14660 <!DOCTYPE a [
14661 <!ATTLIST a
14662 c:d CDATA ""
14663 >
14664 ]>
14665 <a
14666 xmlns:b="http://2.example/"
14667 xmlns:c="http://2.example/"
14668 b:d=""
14669 />
14670 @@@c:erred: <[[xp|nswf-unique-att-spec-expanded-name]]> { (6, 1)..(10, 2);}
14671 @@XMLTest:
14672 @@@QName: xp.names.unique.3.test
14673 @@@DEnt:
14674 @@@@test:value:
14675 <!DOCTYPE a [
14676 <!ATTLIST a
14677 c:d CDATA "value1"
14678 >
14679 ]>
14680 <a
14681 xmlns:c="http://2.example/"
14682 c:d="value2"
14683 />
14684 @@@test:domTree:
14685 document {
14686 document-type { }
14687 element {
14688 attribute {
14689 prefix: 'xmlns';
14690 local-name: 'c';
14691 namespace-uri: 'http://www.w3.org/2000/xmlns/';
14692 specified: true;
14693 }
14694 attribute {
14695 prefix: 'c';
14696 local-name: 'd';
14697 namespace-uri: 'http://2.example/';
14698 value: 'value2';
14699 specified: true;
14700 }
14701 }
14702 }
14703
14704 @@XMLTest:
14705 @@@QName: xp.names.normalize.1.test
14706 @@@DEnt:
14707 @@@@test:value:
14708 <!DOCTYPE a [
14709 <!ATTLIST a
14710 xmlns NMTOKEN #IMPLIED
14711 >
14712 ]>
14713 <a xmlns=" "/>
14714 @@@test:domTree:
14715 document {
14716 document-type { }
14717 element {
14718 namespace-uri: null;
14719 prefix: null;
14720 local-name: 'a';
14721 }
14722 }
14723 @@XMLTest:
14724 @@@QName: xp.names.normalize.2.test
14725 @@@DEnt:
14726 @@@@test:value:
14727 <!DOCTYPE a [
14728 <!ATTLIST a
14729 xmlns NMTOKEN #IMPLIED
14730 >
14731 ]>
14732 <a xmlns=" about:blank "/>
14733 @@@test:domTree:
14734 document {
14735 document-type { }
14736 element {
14737 namespace-uri: 'about:blank';
14738 prefix: null;
14739 local-name: 'a';
14740 }
14741 }
14742 @@XMLTest:
14743 @@@QName: xp.names.normalize.3.test
14744 @@@DEnt:
14745 @@@@test:value:
14746 <!DOCTYPE a:a [
14747 <!ATTLIST a:a
14748 xmlns:a NMTOKEN #IMPLIED
14749 >
14750 ]>
14751 <a:a xmlns:a=" about:blank "/>
14752 @@@test:domTree:
14753 document {
14754 document-type { }
14755 element {
14756 namespace-uri: 'about:blank';
14757 prefix: 'a';
14758 local-name: 'a';
14759 }
14760 }
14761
14762 @@XMLTest:
14763 @@@QName: xp.no.baseuri.test
14764 @@@DEnt:
14765 @@@@test:value:
14766 <p/>
14767 @@@test:domTree:
14768 document {
14769 document-uri: null;
14770 base-uri: null;
14771 element {
14772 node-name: 'p';
14773 base-uri: null;
14774 }
14775 }
14776 @@XMLTest:
14777 @@@QName: xp.docuri.no.baseuri.test
14778 @@@DEnt:
14779 @@@@test:uri:
14780 http://www.example.com/
14781 @@@@test:value:
14782 <p/>
14783 @@@test:domTree:
14784 document {
14785 document-uri: 'http://www.example.com/';
14786 base-uri: 'http://www.example.com/';
14787 element {
14788 node-name: 'p';
14789 base-uri: 'http://www.example.com/';
14790 }
14791 }
14792 @@XMLTest:
14793 @@@QName: xp.docuri.baseuri.test
14794 @@@DEnt:
14795 @@@@test:uri:
14796 http://www.example.com/
14797 @@@@test:baseURI:
14798 ftp://ftp.example.com/
14799 @@@@test:value:
14800 <p/>
14801 @@@test:domTree:
14802 document {
14803 document-uri: 'http://www.example.com/';
14804 base-uri: 'ftp://ftp.example.com/';
14805 element {
14806 node-name: 'p';
14807 base-uri: 'ftp://ftp.example.com/';
14808 }
14809 }
14810 @@XMLTest:
14811 @@@QName: xp.doctype.baseuri.test
14812 @@@DEnt:
14813 @@@@test:uri:
14814 http://www.example.com/
14815 @@@@test:baseURI:
14816 ftp://ftp.example.com/
14817 @@@@test:value:
14818 <!DOCTYPE p SYSTEM "sys">
14819 <p/>
14820 @@@test:domTree:
14821 document {
14822 document-uri: 'http://www.example.com/';
14823 base-uri: 'ftp://ftp.example.com/';
14824 document-type {
14825 system-id: 'sys';
14826 manakai-declaration-base-uri: 'ftp://ftp.example.com/';
14827 }
14828 element {
14829 node-name: 'p';
14830 base-uri: 'ftp://ftp.example.com/';
14831 }
14832 }
14833 @@XMLTest:
14834 @@@QName: xp.entdecl.baseuri.test
14835 @@@DEnt:
14836 @@@@test:uri:
14837 http://www.example.com/
14838 @@@@test:baseURI:
14839 ftp://ftp.example.com/
14840 @@@@test:value:
14841 <!DOCTYPE p [
14842 <!ENTITY ent SYSTEM "ent">
14843 ]>
14844 <p/>
14845 @@@test:domTree:
14846 document {
14847 document-uri: 'http://www.example.com/';
14848 base-uri: 'ftp://ftp.example.com/';
14849 document-type {
14850 general-entity {
14851 node-name: 'ent';
14852 manakai-declaration-base-uri: 'ftp://ftp.example.com/';
14853 }
14854 }
14855 element {
14856 node-name: 'p';
14857 base-uri: 'ftp://ftp.example.com/';
14858 }
14859 }
14860 @@XMLTest:
14861 @@@QName: xp.notdecl.baseuri.test
14862 @@@DEnt:
14863 @@@@test:uri:
14864 http://www.example.com/
14865 @@@@test:baseURI:
14866 ftp://ftp.example.com/
14867 @@@@test:value:
14868 <!DOCTYPE p [
14869 <!NOTATION not SYSTEM "not">
14870 ]>
14871 <p/>
14872 @@@test:domTree:
14873 document {
14874 document-uri: 'http://www.example.com/';
14875 base-uri: 'ftp://ftp.example.com/';
14876 document-type {
14877 notation {
14878 node-name: 'not';
14879 manakai-declaration-base-uri: 'ftp://ftp.example.com/';
14880 }
14881 }
14882 element {
14883 node-name: 'p';
14884 base-uri: 'ftp://ftp.example.com/';
14885 }
14886 }
14887 @@XMLTest:
14888 @@@QName: xp.doctype.intsubset.pi.baseuri.test
14889 @@@DEnt:
14890 @@@@test:uri:
14891 http://www.example.com/
14892 @@@@test:baseURI:
14893 ftp://ftp.example.com/
14894 @@@@test:value:
14895 <!DOCTYPE p [
14896 <?pi?>
14897 ]>
14898 <p/>
14899 @@@test:domTree:
14900 document {
14901 document-uri: 'http://www.example.com/';
14902 base-uri: 'ftp://ftp.example.com/';
14903 document-type {
14904 pi {
14905 node-name: 'pi';
14906 base-uri: 'ftp://ftp.example.com/';
14907 }
14908 }
14909 element {
14910 node-name: 'p';
14911 base-uri: 'ftp://ftp.example.com/';
14912 }
14913 }
14914
14915 @@XMLTest:
14916 @@@QName: xp.xmlid.attr.test
14917 @@@DEnt:
14918 @@@@test:value:
14919 <p xml:id="idv"/>
14920 @@@test:domTree:
14921 document {
14922 element {
14923 attribute {
14924 node-name: 'xml:id';
14925 value: 'idv';
14926 schema-type-info: TypeInfo ('http://www.w3.org/TR/REC-xml',
14927 'ID');
14928 specified: true;
14929 }
14930 }
14931 }
14932 @@XMLTest:
14933 @@@QName: xp.xmlid.attr.norm.test
14934 @@@DEnt:
14935 @@@@test:value:
14936 <p xml:id=" $u000Aidv "/>
14937 @@@test:domTree:
14938 document {
14939 element {
14940 attribute {
14941 node-name: 'xml:id';
14942 value: 'idv';
14943 schema-type-info: TypeInfo ('http://www.w3.org/TR/REC-xml',
14944 'ID');
14945 specified: true;
14946 }
14947 }
14948 }
14949 @@XMLTest:
14950 @@@QName: xp.xmlid.attrdef.test
14951 @@@DEnt:
14952 @@@@test:value:
14953 <!DOCTYPE p [
14954 <!ATTLIST p xml:id ID #IMPLIED>
14955 ]>
14956 <p/>
14957 @@@test:domTree:
14958 document {
14959 document-type {
14960 element-type-definition {
14961 node-name: 'p';
14962 attribute-definition {
14963 node-name: 'xml:id';
14964 declared-type: const (ID_ATTR);
14965 default-type: const (IMPLIED_DEFAULT);
14966 }
14967 }
14968 }
14969 element { }
14970 }
14971 @@XMLTest:
14972 @@@QName: xp.xmlid.attrdef.defaultattr.test
14973 @@@DEnt:
14974 @@@@test:value:
14975 <!DOCTYPE p [
14976 <!ATTLIST p xml:id ID "idv"><!-- invalid -->
14977 ]>
14978 <p/>
14979 @@@test:domTree:
14980 document {
14981 document-type {
14982 element-type-definition {
14983 node-name: 'p';
14984 attribute-definition {
14985 node-name: 'xml:id';
14986 declared-type: const (ID_ATTR);
14987 default-type: const (EXPLICIT_DEFAULT);
14988 node-value: 'idv';
14989 }
14990 }
14991 }
14992 element {
14993 attribute {
14994 node-name: 'xml:id';
14995 schema-type-info: TypeInfo ('http://www.w3.org/TR/REC-xml',
14996 'ID');
14997 value: 'idv';
14998 specified: false;
14999 }
15000 }
15001 }
15002
15003 @@PerlDef:
15004 my $impl = $Message::DOM::ImplementationRegistry->get_implementation ({
15005 'Core' => '3.0',
15006 'XML' => '3.0',
15007 'XMLVersion' => ['1.0', '1.1'],
15008 });
15009 my $parser = <Class::ManakaiXMLParser>->new ($impl);
15010
15011 for my $test_data (@$TestData) {
15012 $test->start_new_test ($test_data->{uri});
15013 my $doc_ent = $test_data->{entity}->{$test_data->{root_uri}};
15014 my $not_ok;
15015
15016 $parser->dom_config->set_parameter ('error-handler' => sub ($$) {
15017 my (undef, $err) = @_;
15018 my $err_type = $err->type;
15019 if ($test_data->{dom_error}->{$err_type}) {
15020 $test->assert_error_equals
15021 (actual_value => $err,
15022 expected_hash => shift @{$test_data->{dom_error}
15023 ->{$err_type}});
15024 } else { # Uncatched error
15025 warn $err;
15026 unless ($err->severity == <C::c|DOMError.SEVERITY_WARNING>) {
15027 $test->failure_comment ('Unexpected error |'.$err->type.'|');
15028 $not_ok = true;
15029 }
15030 }
15031 return true; # continue as far as possible
15032 });
15033
15034 my $input = {string_data => \$doc_ent->{<Q::test:value>},
15035 system_id => $doc_ent->{<Q::test:uri>},
15036 base_uri => $doc_ent->{<Q::test:baseURI>}};
15037 if ($test_data->{dom_tree}) { # Successful test
15038 my $doc;
15039 try {
15040 $doc = $parser->parse ($input);
15041 $test->assert_dom_tree_equals
15042 (actual_value => $doc,
15043 expected_hash => $test_data->{dom_tree});
15044 for (values %{$test_data->{dom_error}||{}}) {
15045 if (@$_) {
15046 $test->failure_comment
15047 (@$_.' |DOMError|s of type |'.
15048 $_->[0]->{type}->{value}.'| are not reported');
15049 $not_ok = true;
15050 }
15051 }
15052 $not_ok ? $test->not_ok : $test->ok;
15053 undef $doc;
15054 } catch Message::Util::IF::DTException with {
15055 require 'manakai/mndebug.pl';
15056 manakai::mndebug::dump ($doc);
15057 } catch Message::DOM::IF::LSException with {
15058 # not_ok
15059 } otherwise {
15060 my $err = shift;
15061 warn $err;
15062 $test->not_ok;
15063 };
15064 } else {
15065 my $doc;
15066 try {
15067 $doc = $parser->parse ($input);
15068 } catch Message::Util::IF::DTException with {
15069 require 'manakai/mndebug.pl';
15070 manakai::mndebug::dump ($doc);
15071 } catch Message::DOM::IF::LSException with {
15072 #
15073 } otherwise {
15074 my $err = shift;
15075 warn $err;
15076 $test->not_ok;
15077 };
15078 for (values %{$test_data->{dom_error}||{}}) {
15079 if (@$_) {
15080 $test->failure_comment
15081 (@$_.' |DOMError|s of type |'.
15082 $_->[0]->{type}->{value}.'| are not reported');
15083 $not_ok = true;
15084 }
15085 }
15086 $not_ok ? $test->not_ok : $test->ok;
15087 }
15088 }
15089
15090 @ResourceDef:
15091 @@QName: getEmptyEntityState
15092 @@rdf:type: DISPerl|InlineCode
15093 @@ForCheck: ManakaiDOM|ForClass
15094 @@PerlDef:
15095 {reptxt => \'', line => 1, column => 1, pos => 0,
15096 is_externally_declared => true, name => $name,
15097 fh => do {
15098 open my $empty, '<', \'';
15099 $empty;
15100 },
15101 close_file => sub { }}
15102
15103 @ResourceDef:
15104 @@QName: getCopyOfEntityState
15105 @@rdf:type: DISPerl|InlineCode
15106 @@ForCheck: ManakaiDOM|ForClass
15107 @@PerlDef:
15108 {%{$self->{$entity_type}->{$entity_name}},
15109 line => 1, column => 1, pos => 0,
15110 fh => do {
15111 require IO::String;
15112 IO::String->new
15113 (${$self->{$entity_type}->{$entity_name}->{reptxt}});
15114 ## TODO: External entities.
15115 },
15116 close_file => sub { }}
15117 ##ManakaiXMLParser
15118
15119 ElementTypeBinding:
15120 @Name: Test
15121 @ElementType:
15122 dis:ResourceDef
15123 @ShadowContent:
15124 @@ForCheck: ManakaiDOM|ForClass
15125 @@rdf:type: test|StandaloneTest
15126
15127 ElementTypeBinding:
15128 @Name: XMLTests
15129 @ElementType:
15130 dis:ResourceDef
15131 @ShadowContent:
15132 @@ForCheck: ManakaiDOM|ForClass
15133 @@rdf:type: test|ParserTestSet
15134
15135 ElementTypeBinding:
15136 @Name: XMLTest
15137 @ElementType:
15138 dis:ResourceDef
15139 @ShadowContent:
15140 @@ForCheck: ManakaiDOM|ForClass
15141 @@rdf:type: test|ParserTest
15142
15143 ElementTypeBinding:
15144 @Name: DEnt
15145 @ElementType:
15146 dis:ResourceDef
15147 @ShadowContent:
15148 @@rdf:type: test|RootEntity
15149
15150 ElementTypeBinding:
15151 @Name: Ent
15152 @ElementType:
15153 dis:ResourceDef
15154 @ShadowContent:
15155 @@rdf:type: test|Entity
15156
15157 ResourceDef:
15158 @QName: xp|get-location-from-token
15159 @rdf:type: DISPerl|BlockCode
15160 @enDesc:
15161 Creates a <IF::DOMCore:DOMLocator> object from a token.
15162 @PerlDef:
15163 my $__d = $token->{type} ne '#EOF'
15164 ? $token->{location}->{char_d}
15165 : 0;
15166 $__d -= $token->{location_d} if $token->{location_d};
15167 $result = {
15168 utf32_offset => $token->{location}->{pos} - $__d,
15169 line_number => $token->{location}->{line},
15170 column_number => $token->{location}->{column} - $__d,
15171 };
15172 $result->{utf32_offset} = 0 if $result->{utf32_offset} < 0;
15173 $result->{column_number} = 0 if $result->{column_number} < 0;
15174 ## 0 or 1, which should be?
15175 @For: ManakaiDOM|ManakaiDOM3
15176
15177 ElementTypeBinding:
15178 @Name: RuleDef
15179 @ElementType:
15180 dis:ResourceDef
15181 @ShadowContent:
15182 @@ForCheck: ManakaiDOM|ForClass
15183 @@rdf:type: Muf2003|RuleDefClass
15184
15185 ElementTypeBinding:
15186 @Name: RuleParam
15187 @ElementType:
15188 dis:ResourceDef
15189 @ShadowContent:
15190 @@rdf:type: Muf2003|RuleParameter
15191
15192 ElementTypeBinding:
15193 @Name: enImplNote
15194 @ElementType:
15195 dis:ImplNote
15196 @ShadowContent:
15197 @@lang:en
15198
15199 ElementTypeBinding:
15200 @Name: WFErrDef
15201 @ElementType:
15202 dis:ResourceDef
15203 @ShadowContent:
15204 @@rdf:type: DOMCore|DOMErrorType
15205 @@For: ManakaiDOM|DOM3
15206 @@ecore:textFormatter: ManakaiXMLParserExceptionFormatter
15207 @@c:severity: c|SEVERITY_FATAL_ERROR
15208
15209 ElementTypeBinding:
15210 @Name: FatalErrDef
15211 @ElementType:
15212 dis:ResourceDef
15213 @ShadowContent:
15214 @@rdf:type: DOMCore|DOMErrorType
15215 @@For: ManakaiDOM|DOM3
15216 @@ecore:textFormatter: ManakaiXMLParserExceptionFormatter
15217 @@c:severity: c|SEVERITY_FATAL_ERROR
15218
15219 ElementTypeBinding:
15220 @Name: NSFatalErrDef
15221 @ElementType:
15222 dis:ResourceDef
15223 @ShadowContent:
15224 @@rdf:type: c|DOMErrorType
15225 @@For: ManakaiDOM|DOM3
15226 @@ecore:textFormatter: ManakaiXMLParserExceptionFormatter
15227 @@c:severity: c|SEVERITY_FATAL_ERROR
15228
15229 ElementTypeBinding:
15230 @Name: NSCErrDef
15231 @ElementType:
15232 dis:ResourceDef
15233 @ShadowContent:
15234 @@rdf:type: c|DOMErrorType
15235 @@For: ManakaiDOM|DOM3
15236 @@ecore:textFormatter: ManakaiXMLParserExceptionFormatter
15237 @@c:severity: c|SEVERITY_FATAL_ERROR
15238
15239 ElementTypeBinding:
15240 @Name: VCErrDef
15241 @ElementType:
15242 dis:ResourceDef
15243 @ShadowContent:
15244 @@rdf:type: c|DOMErrorType
15245 @@For: ManakaiDOM|DOM3
15246 @@ecore:textFormatter: ManakaiXMLParserExceptionFormatter
15247 @@c:severity: c|SEVERITY_ERROR
15248
15249 ElementTypeBinding:
15250 @Name: ErrDef
15251 @ElementType:
15252 dis:ResourceDef
15253 @ShadowContent:
15254 @@rdf:type: c|DOMErrorType
15255 @@For: ManakaiDOM|DOM3
15256 @@ecore:textFormatter: ManakaiXMLParserExceptionFormatter
15257 @@c:severity: c|SEVERITY_ERROR
15258
15259 ElementTypeBinding:
15260 @Name: WarnDef
15261 @ElementType:
15262 dis:ResourceDef
15263 @ShadowContent:
15264 @@rdf:type: c|DOMErrorType
15265 @@For: ManakaiDOM|DOM3
15266 @@ecore:textFormatter: ManakaiXMLParserExceptionFormatter
15267 @@c:severity: c|SEVERITY_WARNING
15268
15269 WFErrDef:
15270 @QName: xp|wf-syntax-error
15271 @enDesc:
15272 The entity does not match to the production rule; it is not
15273 well-formed.
15274 @enMufDef:
15275 |%xp-error-token-type;|%xp-error-token-value
15276 (prefix => { (|}, suffix => {|)}); is not
15277 allowed%xp-error-lines (prefix => { (|}, suffix => {|)});
15278 @ecore:hasParameter:
15279 @@@: xp|error-token
15280 @@enDesc:
15281 The token that is not allowed.
15282
15283 WFErrDef:
15284 @QName: xp|wf-pi-target-is-xml
15285 @enDesc:
15286 A processing instruction has its <CODE::PITarget> of
15287 <XML::xml> (in any case) which is not allowed.
15288 @enMufDef:
15289 Processing instruction target name cannot be |%p
15290 (name => {<Q::xp|name>});|
15291 @ecore:hasParameter:
15292 @@@: xp|error-token
15293 @@enDesc:
15294 The token that contains the name.
15295 @ecore:hasParameter:
15296 @@@: xp|name
15297 @@enDesc:
15298 A string that is specified as target name of the
15299 processing instruction.
15300 @ecore:hasParameter: xp|parent
15301
15302 WFErrDef:
15303 @QName: xp|wf-no-end-tag
15304 @enDesc:
15305 An end-tag is not found.
15306 @enMufDef:
15307 End-tag |</%p (name => {<Q::xp|expected-element-type>});>| is required
15308 @ecore:hasParameter: xp|error-token
15309 @ecore:hasParameter:
15310 @@@: xp|node
15311 @@enDesc:
15312 The element node that is not closed.
15313 @ecore:hasParameter:
15314 @@@: xp|expected-element-type
15315 @@enDesc:
15316 The element type name of the element that is not closed.
15317
15318 WFErrDef:
15319 @QName: xp|wf-unsupported-xml-version
15320 @enDesc:
15321 The XML version specified in the version declaration is not supported.
15322 @enMufDef:
15323 XML version |%p (name => {<Q::infoset|version>});| is not supported
15324 @ecore:hasParameter: xp|bad-token
15325 @ecore:hasParameter:
15326 @@@: xp|parent
15327 @@enDesc:
15328 The document node.
15329 @ecore:hasParameter:
15330 @@@: infoset|version
15331 @@enDesc:
15332 The specified XML version.
15333
15334 WFErrDef:
15335 @QName: xp|wf-malformed-enc-name
15336 @enDesc:
15337 An <XA::encoding> pseudo-attribute value does not match
15338 to the procduction rule <CODE::EncName>.
15339 @enMufDef:
15340 Encoding name |%p (name => {<Q::xp|name>});| is not allowed
15341 @ecore:hasParameter: xp|error-token
15342 @ecore:hasParameter:
15343 @@@: xp|parent
15344 @@enDesc: The document node.
15345 @ecore:hasParameter:
15346 @@@: xp|name
15347 @@enDesc:
15348 The <XA::encoding> value.
15349
15350 WFErrDef:
15351 @QName: xp|wf-malformed-xml-standalone
15352 @enDesc:
15353 An <XA::standalone> pseudo-attribute value is neither <XML::yes>
15354 or <XML::no>.
15355 @enMufDef:
15356 |standalone| pseudo-attribute value |%p (name => {<Q::xp|name>});|
15357 is not allowed
15358 @ecore:hasParameter: xp|error-token
15359 @ecore:hasParameter:
15360 @@@: xp|parent
15361 @@enDesc: The document node.
15362 @ecore:hasParameter:
15363 @@@: xp|name
15364 @@enDesc:
15365 The <XA::standalone> value.
15366
15367 WFErrDef:
15368 @QName: xp|wf-legal-literal-character
15369 @enDesc:
15370 Each character in XML entity must match to the production
15371 rule <CODE::Char - RestrictedChar>.
15372 @enMufDef:
15373 Character %character-code-point
15374 (v => {<Q::xp|character-number>}); is not allowed
15375 @ecore:hasParameter:
15376 @@@: xp|character-number
15377 @@enDesc:
15378 The code position of the character being referred.
15379
15380 WFErrDef:
15381 @QName: xp|wf-invalid-character-in-node-name
15382 @c:errorType:
15383 @@@: wf-invalid-character-in-node-name
15384 @@ContentType: DISCore|String
15385 @enDesc:
15386 If a name contains a character that is not a name character
15387 in the XML version in use, or if the first character of a name
15388 is not a name start character in the XML version in use.
15389
15390 {NOTE::
15391 When an invalid character is encountered in an entity
15392 where a <CODE::Name> is expected, what type of error
15393 is issued is implementation dependent: <Q::xp|wf-syntax-error>,
15394 <Q::xp|wf-pi-target-is-xml> or other error might be reported.
15395 }
15396
15397 {NOTE::
15398 This error type is defined in DOM Level 3 Core and Load and Save
15399 modules and redefined herein for the purpose of XML parser.
15400 }
15401 @enMufDef:
15402 Character %character-code-point
15403 (v => {<Q::xp|character-number>}); is not allowed in name
15404 @ecore:hasParameter: xp|error-token
15405 @ecore:hasParameter:
15406 @@@: xp|character-number
15407 @@enDesc:
15408 The code position of the character being referred.
15409 @ecore:hasParameter:
15410 @@@: infoset|version
15411 @@enDesc:
15412 The version of XML in use.
15413
15414 WFErrDef:
15415 @QName: xp|wf-pes-in-internal-subset
15416 @enDesc:
15417 In the internal subset of the DTD, parameter entity references
15418 <kwd:MUST-NOT> occur within markup declarations.
15419 @enMufDef:
15420 Parameter entity reference |%percent;%param (name => {<Q::xp|name>});;|
15421 cannot occur within a markup declaration
15422 @ecore:hasParameter: xp|error-token
15423 @ecore:hasParameter:
15424 @@@: xp|name
15425 @@enDesc:
15426 The name of the parameter entity.
15427
15428 WFErrDef:
15429 @QName: xp|wf-element-type-match
15430 @enDesc:
15431 The <CODE::Name> in an element's end-tag must match the element type
15432 in the start-tag.
15433 @enMufDef:
15434 End-tag |</%p (name => {<Q::xp|actual-element-type>});>| does
15435 not match to start-tag |<%p (name => {<Q::xp|expected-element-type>});>|
15436 @ecore:hasParameter: xp|error-token
15437 @ecore:hasParameter:
15438 @@@: xp|node
15439 @@enDesc:
15440 The current opening element node.
15441 @ecore:hasParameter:
15442 @@@: xp|expected-element-type
15443 @@enDesc:
15444 The element type name of the current element.
15445 @ecore:hasParameter:
15446 @@@: xp|actual-element-type
15447 @@enDesc:
15448 The <CODE::Name> occurs in the end-tag.
15449
15450 WFErrDef:
15451 @QName: xp|wf-unique-att-spec
15452 @enDesc:
15453 An attribute name <kwd:MUST-NOT> appear more than once in
15454 the same start-tag or empty-element tag.
15455 @enMufDef:
15456 Attribute |%p (name => {<Q::xp|name>});| is specified more
15457 than once in the same tag
15458 @ecore:hasParameter: xp|error-token
15459 @ecore:hasParameter:
15460 @@@: xp|name
15461 @@enDesc:
15462 The name of the attribute.
15463
15464 WFErrDef:
15465 @QName: xp|wf-no-external-entity-references
15466 @enDesc:
15467 Attribute values <kwd:MUST-NOT> contain direct or indirect
15468 entity references to external entities.
15469 @enMufDef:
15470 External entity |%p (name => {<Q::xp|name>});| is referenced
15471 in an attribute value literal
15472 @ecore:hasParameter: xp|error-token
15473 @ecore:hasParameter:
15474 @@@: xp|name
15475 @@enDesc:
15476 The name of the entity.
15477
15478 WFErrDef:
15479 @QName: xp|wf-no-lt-in-attribute-values
15480 @enDesc:
15481 The replacement text of any entity referred to directly or indirectly
15482 in an attribute value literal <kwd:MUST-NOT> contain a
15483 <CHAR::LESS-THAN SIGN>.
15484 @enMufDef:
15485 Entity replacement text cannot contain a
15486 |LESS-THAN SIGN| since it is referenced from an attribute
15487 value literal
15488 @ecore:hasParameter: xp|error-token
15489
15490 WarnDef:
15491 @QName: xp|warning-attribute-definition-ignored
15492 @enDesc:
15493 An attribute definition is ignored because the same attribute
15494 is declared before.
15495 @enMufDef:
15496 Attribute definition for |%p (name => {<Q::xp|name>});| is ignored
15497 @ecore:hasParameter: xp|error-token
15498 @ecore:hasParameter:
15499 @@@: xp|name
15500 @@enDesc:
15501 The name of the attribute.
15502
15503 WFErrDef:
15504 @QName: xp|wf-legal-character
15505 @enDesc:
15506 Characters referred to using character references <kwd:MUST>
15507 match the production for <CODE::Char>.
15508 @enMufDef:
15509 Reference to character %character-code-point
15510 (v => {<Q::xp|character-number>}); is not allowed
15511 @ecore:hasParameter: xp|error-token
15512 @ecore:hasParameter:
15513 @@@: xp|character-number
15514 @@enDesc:
15515 The code position of the character being referred.
15516 @ecore:hasParameter:
15517 @@@: xp|parent
15518 @@enDesc:
15519 The parent node in which the character reference has
15520 occurred, if available.
15521
15522 WFErrDef:
15523 @QName: xp|wf-entity-declared
15524 @enDesc:
15525 {P:: In a document
15526
15527 - without any DTD,
15528
15529 - with only an internal DTD subset that contains no parameter
15530 entity references, or
15531
15532 - with <XML::standalone="yes">,
15533
15534 for an entity reference that does not occur within the external
15535 subset or a parameter entity, the <CODE::Name> given in the
15536 entity reference <kwd:MUST> match the <CODE::Name> does not
15537 occur within the external subset or a parameter entity,
15538 except that five predefined character entities need not
15539 be declared. The declaration of a general entity <kwd:MUST>
15540 precede any reference to it which appears in a default value
15541 in an attribute list declaration.
15542 @enMufDef:
15543 Entity |%p (name => {<Q::xp|name>});| must be declared
15544 in the internal subset
15545 @ecore:hasParameter: xp|error-token
15546 @ecore:hasParameter:
15547 @@@: xp|name
15548 @@enDesc:
15549 The name of the entity.
15550
15551 WFErrDef:
15552 @QName: xp|wf-parsed-entity
15553 @enDesc:
15554 An entity reference <kwd:MUST-NOT> contain the name of an
15555 unparsed entity.
15556 @enMufDef:
15557 Entity |%p (name => {<Q::xp|name>});| is an unparsed entity
15558 @ecore:hasParameter: xp|error-token
15559 @ecore:hasParameter:
15560 @@@: xp|name
15561 @@enDesc:
15562 The name of the entity.
15563
15564 WFErrDef:
15565 @QName: xp|wf-no-recursion
15566 @enDesc:
15567 A parsed entity <kwd:MUST-NOT> contain a recursive reference
15568 to itself, either directly or indirectly.
15569 @enMufDef:
15570 Entity |%p (name => {<Q::xp|name>});| is recursively referenced
15571 @ecore:hasParameter: xp|error-token
15572 @ecore:hasParameter:
15573 @@@: xp|name
15574 @@enDesc:
15575 The name of the entity.
15576
15577 FatalErrDef:
15578 @QName: xp|fatal-xml11-end-of-line-in-xml-declaration
15579 @enDesc:
15580 An end-of-line character <CODE::U+0085> or <CODE::U+2028> is appeared
15581 within an XML declaration or text declaration.
15582 @enMufDef:
15583 End-of-line character %character-code-point
15584 (v => {<Q::xp|character-number>}); cannot be used within the
15585 XML or text declaration
15586 @ecore:hasParameter:
15587 @@@: xp|character-number
15588 @@enDesc:
15589 The code position of the end-of-line character.
15590
15591 ErrDef:
15592 @QName: xp|error-internal-predefined-entity
15593 @enDesc:
15594 A general entity declaration whose <CODE::Name> equals to one
15595 of predefined entities <kwd:MUST> declare it as an internal entity.
15596 @enMufDef:
15597 Entity |%p (name => {<Q::xp|name>});| must be declared as an
15598 internal entity
15599 @ecore:hasParameter: xp|error-token
15600 @ecore:hasParameter:
15601 @@@: xp|name
15602 @@enDesc:
15603 The name of the entity.
15604
15605 ErrDef:
15606 @QName: xp|error-malformed-predefined-entity
15607 @enDesc:
15608 A general entity declaration whose <CODE::Name> equals to one
15609 of predefined entities <kwd:MUST> declare it as a data
15610 character for the entity.
15611 @enMufDef:
15612 Entity declaration for |%p (name => {<Q::xp|name>});|
15613 (replacement text |%p (name => {<Q::xp|replacement-text>});|) is malformed
15614 @ecore:hasParameter: xp|error-token
15615 @ecore:hasParameter:
15616 @@@: xp|name
15617 @@enDesc:
15618 The name of the entity.
15619 @ecore:hasParameter:
15620 @@@: xp|replacement-text
15621 @@enDesc:
15622 The replacement text of the entity declaration.
15623
15624 WarnDef:
15625 @QName: xp|warning-entity-declaration-ignored
15626 @enDesc:
15627 An entity declaration is ignored because the same entity
15628 is declared before.
15629 @enMufDef:
15630 Entity declaration for |%p (name => {<Q::xp|name>});| is ignored
15631 @ecore:hasParameter: xp|error-token
15632 @ecore:hasParameter:
15633 @@@: xp|name
15634 @@enDesc:
15635 The name of the entity.
15636
15637 VCErrDef:
15638 @QName: xp|vc-unique-notation-name
15639 @enDesc:
15640 A <CODE::Name> <kwd:MUST-NOT> be declared in more than
15641 one notation declaration.
15642 @enMufDef:
15643 Notation |%p (name => {<Q::xp|name>});| is already declared
15644 @ecore:hasParameter: xp|error-token
15645 @ecore:hasParameter:
15646 @@@: xp|name
15647 @@enDesc:
15648 The name of the notation.
15649
15650 WarnDef:
15651 @QName: xp|warning-entity-declaration-not-processed
15652 @enDesc:
15653 An entity declaration is not processed because there
15654 is a reference to parameter entity before the declaration
15655 and the entity is not read.
15656 @enMufDef:
15657 Entity declaration for |%p (name => {<Q::xp|name>});| is not processed
15658 @ecore:hasParameter: xp|error-token
15659 @ecore:hasParameter:
15660 @@@: xp|name
15661 @@enDesc:
15662 The name of the entity.
15663
15664 WarnDef:
15665 @QName: xp|warning-attribute-definition-not-processed
15666 @enDesc:
15667 An attribute definition is not processed because there
15668 is a reference to parameter entity before the declaration
15669 and the entity is not read.
15670 @enMufDef:
15671 Attribute definition for |%p (name => {<Q::xp|name>});| is not processed
15672 @ecore:hasParameter: xp|error-token
15673 @ecore:hasParameter:
15674 @@@: xp|name
15675 @@enDesc:
15676 The name of the attribute.
15677
15678 NSFatalErrDef:
15679 @QName: xp|nswf-legal-ncname
15680 @enDesc:
15681 <CODE::Name>s other than element type names and attribute names
15682 <kwd:MUST> be <CODE::NCName>s.
15683 @enMufDef:
15684 <CODE::Name> |%p (name => {<Q::xp|name>});| is not an <CODE::NCName>
15685 @ecore:hasParameter: xp|error-token
15686 @ecore:hasParameter:
15687 @@@: xp|name
15688 @@enDesc:
15689 The name.
15690 @ecore:hasParameter:
15691 @@@: infoset|version
15692 @@enDesc:
15693 The version of XML in use.
15694
15695 NSFatalErrDef:
15696 @QName: xp|nswf-legal-qname
15697 @enDesc:
15698 An element type name or an attribute name <kwd:MUST> be a
15699 <CODE::QName>.
15700 @enMufDef:
15701 <CODE::Name> |%p (name => {<Q::xp|name>});| is not a <CODE::QName>
15702 @ecore:hasParameter: xp|error-token
15703 @ecore:hasParameter:
15704 @@@: xp|name
15705 @@enDesc:
15706 The name.
15707 @ecore:hasParameter:
15708 @@@: infoset|version
15709 @@enDesc:
15710 The version of XML in use.
15711
15712 NSCErrDef:
15713 @QName: xp|nsc-reserved-prefix-xml
15714 @enDesc:
15715 The prefix <XML::xml> <kwd:MUST-NOT> be undeclared or bound
15716 to any namespace name other than <URI::http://www.w3.org/XML/1998/namespace>.
15717 @enMufDef:
15718 Namespace prefix |xml| cannot be bound to namespace
15719 name |%p (name => {<Q::infoset|namespaceName>});|
15720 @ecore:hasParameter: xp|error-token
15721 @ecore:hasParameter:
15722 @@@: infoset|prefix
15723 @@enDesc:
15724 The namespace prefix.
15725 @ecore:hasParameter:
15726 @@@: infoset|namespaceName
15727 @@enDesc:
15728 The namespace name bound to or an empty string for undeclaring.
15729
15730 NSCErrDef:
15731 @QName: xp|nsc-reserved-namespace-name-xml
15732 @enDesc:
15733 Namespace prefixes other than <XML::xml> <kwd:MUST-NOT> be bound
15734 to the namespace name <URI::http://www.w3.org/XML/1998/namespace>.
15735 @enMufDef:
15736 Namespace prefix |%p (name => {<Q::infoset|prefix>});| cannot be
15737 bound to namespace name |http://www.w3.org/XML/1998/namespace|
15738 @enImplNote:
15739 The XMLNames spec does not prohibit the URI bound to
15740 the default namespace (!)
15741 @ecore:hasParameter: xp|error-token
15742 @ecore:hasParameter:
15743 @@@: infoset|prefix
15744 @@enDesc:
15745 The namespace prefix or <DOM::null> for default namespace.
15746 @ecore:hasParameter:
15747 @@@: infoset|namespaceName
15748 @@enDesc:
15749 The namespace name bound to.
15750
15751 NSCErrDef:
15752 @QName: xp|nsc-reserved-prefix-xmlns
15753 @enDesc:
15754 The prefix <XML::xmlns> <kwd:MUST-NOT> be declared or undeclared.
15755 @enMufDef:
15756 Namespace prefix |xmlns| cannot be declared or undeclared
15757 @ecore:hasParameter: xp|error-token
15758 @ecore:hasParameter:
15759 @@@: infoset|prefix
15760 @@enDesc:
15761 The namespace prefix.
15762 @ecore:hasParameter:
15763 @@@: infoset|namespaceName
15764 @@enDesc:
15765 The namespace name bound to or an empty string for undeclaring.
15766
15767 NSCErrDef:
15768 @QName: xp|nsc-reserved-namespace-name-xmlns
15769 @enDesc:
15770 Namespace prefixes <kwd:MUST-NOT> be bound
15771 to the namespace name <URI::http://www.w3.org/2000/xmlns/>.
15772 @enMufDef:
15773 Namespace prefix |%p (name => {<Q::infoset|prefix>});| cannot be
15774 bound to namespace name |http://www.w3.org/2000/xmlns/|
15775 @enImplNote:
15776 The XMLNames spec does not prohibit the URI bound to
15777 the default namespace (!)
15778 @ecore:hasParameter: xp|error-token
15779 @ecore:hasParameter:
15780 @@@: infoset|prefix
15781 @@enDesc:
15782 The namespace prefix or <DOM::null> for default namespace.
15783 @ecore:hasParameter:
15784 @@@: infoset|namespaceName
15785 @@enDesc:
15786 The namespace name bound to.
15787
15788 NSCErrDef:
15789 @QName: xp|nsc-prefix-declared
15790 @enDesc:
15791 A namespace prefix other than <XML::xml> or <XML::xmlns>
15792 <kwd:MUST> have been declared in a namespace declaration
15793 attribute in either the start or empty element tag of the
15794 element where the prefix is used or in an ancestor
15795 element. Furthermore, the attribute value in the innermost
15796 such declaration <kwd:MUST-NOT> be an empty string.
15797 @enMufDef:
15798 Namespace prefix |%p (name => {<Q::infoset|prefix>});| in
15799 qualified name |%p (name => {<Q::xp|name>});| is not declared
15800 @ecore:hasParameter: xp|error-token
15801 @ecore:hasParameter:
15802 @@@: infoset|prefix
15803 @@enDesc:
15804 The namespace prefix.
15805 @ecore:hasParameter:
15806 @@@: xp|name
15807 @@enDesc:
15808 The qualified name.
15809
15810 NSFatalErrDef:
15811 @QName: xp|nswf-empty-namespace-name
15812 @enDesc:
15813 If the XML version of the document is 1.0 and the
15814 normalized value of the prefixed namespace declaration attribute is empty.
15815 @enMufDef:
15816 Namespace |%p (name => {<Q::infoset|prefix>});| cannot be
15817 undeclared in XML 1.0
15818 @ecore:hasParameter: xp|error-token
15819 @ecore:hasParameter:
15820 @@@: infoset|prefix
15821 @@enDesc:
15822 The namespace prefix.
15823 @ecore:hasParameter:
15824 @@@: infoset|namespaceName
15825 @@enDesc:
15826 An empty string.
15827
15828 NSFatalErrDef:
15829 @QName: xp|nswf-unique-att-spec-expanded-name
15830 @enDesc:
15831 No element may have two attributes that have qualified name
15832 with the same local part and with namespace prefixes
15833 that have been bound to namespace names that are identical.
15834 @enMufDef:
15835 Attribute |%p (name => {<Q::infoset|localName>});| in
15836 namespace |%p (name => {<Q::infoset|namespaceName>});| is
15837 attached to the same element more than once (as
15838 |%p (name => {<Q::xp|name>});| and
15839 |%p (name => {<Q::xp|another-attribute-name>});|)
15840 @enImplNote:
15841 The XMLNames spec doesn't mention default attributes
15842 for this constraint...
15843 @ecore:hasParameter: xp|error-token
15844 @ecore:hasParameter:
15845 @@@: infoset|localName
15846 @@enDesc:
15847 The local part of the attribute.
15848 @ecore:hasParameter:
15849 @@@: infoset|namespaceName
15850 @@enDesc:
15851 The namespace URI of the attribute.
15852 @ecore:hasParameter:
15853 @@@: xp|name
15854 @@enDesc:
15855 The name, i.e. a qualified name consist of <Q::infoset:localName>
15856 and <Q::infoset:namespaceName> parameter values.
15857 @ecore:hasParameter:
15858 @@@: xp|another-attribute-name
15859 @@enDesc:
15860 Another attribute qualified name expanded to the same expanded name
15861 as <Q::xp|name>.
15862
15863 XWParam:
15864 @QName: xp|another-attribute-name
15865
15866 XWParam:
15867 @QName: xp|replacement-text
15868 @enDesc:
15869 The replacement text.
15870
15871 XWParam:
15872 @QName: xp|error-token
15873 @enDesc:
15874 The token where the parser found an error.
15875
15876 XWParam:
15877 @QName: xp|name
15878 @enDesc:
15879 A name.
15880
15881 XWParam:
15882 @QName: xp|parent
15883 @enDesc:
15884 The parent node in which the error occurs.
15885
15886 XWParam:
15887 @QName: xp|node
15888 @enDesc:
15889 The current node.
15890
15891 XWParam:
15892 @QName: xp|actual-element-type
15893 @enDesc:
15894 The actual element type name occured in the source.
15895
15896 XWParam:
15897 @QName: xp|expected-element-type
15898 @enDesc:
15899 The element type name expected.
15900
15901 XWParam:
15902 @QName: xp|character-number
15903 @enDesc:
15904 The character code position.
15905
15906 ElementTypeBinding:
15907 @Name: XWParam
15908 @ElementType:
15909 dis:ResourceDef
15910 @ShadowContent:
15911 @@For: =ManakaiDOM|all
15912 @@rdf:type: ecore|Parameter
15913
15914 ElementTypeBinding:
15915 @Name:enMufDef
15916 @ElementType:
15917 ecore:defaultMessage
15918 @ShadowContent:
15919 @@lang:en
15920 @@ContentType:
15921 lang:muf
15922
15923 ResourceDef:
15924 @QName: DOMImpl
15925 @AliasFor: DOMCore|DOMImplementation
15926 @For: ManakaiDOM|DOM
15927
15928 ResourceDef:
15929 @QName: LSInput
15930 @AliasFor: DOMLS|LSInput
15931 @For: ManakaiDOM|DOM
15932
15933 ResourceDef:
15934 @QName: LSParser
15935 @AliasFor: DOMLS|LSParser
15936 @For: ManakaiDOM|DOM
15937
15938 ElementTypeBinding:
15939 @Name: Attr
15940 @ElementType:
15941 dis:ResourceDef
15942 @ShadowContent:
15943 @@rdf:type: DISLang|Attribute
15944 @@ForCheck: !=ManakaiDOM|ManakaiDOM
15945
15946 ElementTypeBinding:
15947 @Name: Get
15948 @ElementType:
15949 dis:ResourceDef
15950 @ShadowContent:
15951 @@rdf:type: DISLang|AttributeGet
15952
15953 ElementTypeBinding:
15954 @Name: Set
15955 @ElementType:
15956 dis:ResourceDef
15957 @ShadowContent:
15958 @@rdf:type: DISLang|AttributeSet
15959
15960 ElementTypeBinding:
15961 @Name: enDesc
15962 @ElementType:
15963 dis:Description
15964 @ShadowContent:
15965 @@lang:en
15966
15967 ElementTypeBinding:
15968 @Name: Method
15969 @ElementType:
15970 dis:ResourceDef
15971 @ShadowContent:
15972 @@rdf:type: DISLang|Method
15973 @@For: !=ManakaiDOM|ManakaiDOM
15974
15975 ElementTypeBinding:
15976 @Name: Return
15977 @ElementType:
15978 dis:ResourceDef
15979 @ShadowContent:
15980 @@rdf:type: DISLang|MethodReturn
15981
15982 ElementTypeBinding:
15983 @Name: Param
15984 @ElementType:
15985 dis:ResourceDef
15986 @ShadowContent:
15987 @@rdf:type: DISLang|MethodParameter
15988
15989 ElementTypeBinding:
15990 @Name: PerlDef
15991 @ElementType:
15992 dis:Def
15993 @ShadowContent:
15994 @@ContentType: lang|Perl
15995
15996 ElementTypeBinding:
15997 @Name: PerlDefC
15998 @ElementType:
15999 dis:Def
16000 @ShadowContent:
16001 @@ContentType: lang|Perl
16002
16003 ElementTypeBinding:
16004 @Name: PropDef
16005 @ElementType:
16006 dis:ResourceDef
16007 @ShadowContent:
16008 @@rdf:type: rdf|Property
16009
16010 ClsDef:
16011 @ClsQName: ManakaiXMLParserExceptionFormatter
16012
16013 @ClsISA: ecore|MUErrorFormatter||ManakaiDOM|Perl
16014
16015 @RuleDef:
16016 @@Name: xp-error-token-type
16017 @@enDesc:
16018 The type of the token the parser is encountered.
16019
16020 @@Method:
16021 @@@Name: after
16022 @@@Param:
16023 @@@@Name: name
16024 @@@@Type: DOMString
16025 @@@@enDesc: The name of the method.
16026 @@@Param:
16027 @@@@Name: p
16028 @@@@Type: DISPerl|HASH
16029 @@@@enDesc: The set of the parameters to the method.
16030 @@@Param:
16031 @@@@Name: o
16032 @@@@Type: DISPerl|HASH
16033 @@@@enDesc: The option value.
16034 @@@Return:
16035 @@@@PerlDef:
16036 $p->{-result} = $o->{<H::xp|error-token>}->{type}
16037 if defined $o->{<H::xp|error-token>}->{type};
16038
16039 @RuleDef:
16040 @@Name: xp-error-token-value
16041 @@enDesc:
16042 The value of the token the parser is encountered, if any.
16043
16044 @@Method:
16045 @@@Name: after
16046 @@@Param:
16047 @@@@Name: name
16048 @@@@Type: DOMString
16049 @@@@enDesc: The name of the method.
16050 @@@Param:
16051 @@@@Name: p
16052 @@@@Type: DISPerl|HASH
16053 @@@@enDesc: The set of the parameters to the method.
16054 @@@Param:
16055 @@@@Name: o
16056 @@@@Type: DISPerl|HASH
16057 @@@@enDesc: The option value.
16058 @@@Return:
16059 @@@@PerlDef:
16060 $p->{-result} = $o->{<H::xp|error-token>}->{value}
16061 if defined $o->{<H::xp|error-token>}->{value};
16062
16063 @RuleDef:
16064 @@Name: xp-error-lines
16065 @@enDesc:
16066 A copy of fragment of the source text that contains the line
16067 where the error occurred, if available.
16068
16069 @@Method:
16070 @@@Name: after
16071 @@@Param:
16072 @@@@Name: name
16073 @@@@Type: DOMString
16074 @@@@enDesc: The name of the method.
16075 @@@Param:
16076 @@@@Name: p
16077 @@@@Type: DISPerl|HASH
16078 @@@@enDesc: The set of the parameters to the method.
16079 @@@Param:
16080 @@@@Name: o
16081 @@@@Type: DISPerl|HASH
16082 @@@@enDesc: The option value.
16083 @@@Return:
16084 @@@@PerlDef:
16085 my $pos = $o-><AG::DOMCore|DOMError.location>
16086 -><AG::DOMCore|DOMLocator.utf32Offset>;
16087 my $src = $o->{<H::ecore|object>}->{entity}->[-1]->{reptxt};
16088 if (defined $src and $pos > -1) {
16089 my $start = $pos;
16090 $start = rindex ($$src, "\x0A", $start - 1) for 0..2;
16091 $start++;
16092 my $end = $pos;
16093 $end = index ($$src, "\x0A", $end + 1) for 0..2;
16094 $end = length $$src if $end < 0;
16095 $p->{-result} = substr $$src, $start, $end - $start;
16096 }
16097
16098 @RuleDef:
16099 @@Name: character-code-point
16100 @@enDesc:
16101 The character code position, in <CODE::U+<VAR::HHHH>> notation.
16102
16103 @@Method:
16104 @@@Name: after
16105 @@@Param:
16106 @@@@Name: name
16107 @@@@Type: DOMString
16108 @@@@enDesc: The name of the method.
16109 @@@Param:
16110 @@@@Name: p
16111 @@@@Type: DISPerl|HASH
16112 @@@@enDesc: The set of the parameters to the method.
16113 @@@Param:
16114 @@@@Name: o
16115 @@@@Type: DISPerl|HASH
16116 @@@@enDesc: The option value.
16117 @@@RuleParam:
16118 @@@@Name: v
16119 @@@@Type: DISPerl|Number
16120 @@@@enDesc:
16121 The name of the error parameter that contains the character code.
16122 @@@Return:
16123 @@@@PerlDef:
16124 $p->{-result} = sprintf 'U+%04X', $o->{$p->{v}};
16125 ##XMLParserExceptionFormatter
16126
16127 ElementTypeBinding:
16128 @Name: CParam
16129 @ElementType:
16130 dis:ResourceDef
16131 @ShadowContent:
16132 @@rdf:type:
16133 @@@@: c|DOMConfigurationParameter
16134 @@@For: ManakaiDOM|DOM
16135 @@rdf:type:
16136 @@@@: DISCore|Property
16137 @@@For: =ManakaiDOM|all
16138 @@For: ManakaiDOM|DOM3
16139 @@For: =ManakaiDOM|all
16140
16141 ElementTypeBinding:
16142 @Name: CParamApp
16143 @ElementType:
16144 dis:ResourceDef
16145 @ShadowContent:
16146 @@rdf:type:
16147 @@@@: c|DOMConfigurationParameterApplication
16148 @@@For: ManakaiDOM|DOM
16149 @@For: ManakaiDOM|DOM3
16150
16151 CParamApp:
16152 @QName: xml-id
16153 @c:domConfigurationParameter: cfg|xml-id
16154 @c:targetType: xp|ManakaiXMLParser
16155
16156 CParamApp:
16157 @QName: error-handler
16158 @c:domConfigurationParameter: c|error-handler
16159 @c:targetType: xp|ManakaiXMLParser
16160
16161 CParam:
16162 @QName: xp|ls-input-to-input-file
16163 @DOMLS:lsKey:
16164 @@@: i2i
16165 @@For: =ManakaiDOM|all
16166 @Type: ManakaiDOMLSInputToInputFile
16167 @c:targetType: xp|ManakaiXMLParser
16168 @IsSupportRequired: 1
16169 @c:isSupported: 1
16170 @enDesc:
16171 An <IF::LSInput> to Perl filehandle converter.
16172
16173 @Method:
16174 @@rdf:type: c|DOMConfigurationParameterDefaultGetter
16175 @@Param:
16176 @@@Name: name
16177 @@@Type: DOMString
16178 @@@dis:actualType: c|DOMConfigurationParameterName
16179 @@@enDesc: The parameter name.
16180 @@Return:
16181 @@@Type: ManakaiDOMLSInputToInputFile
16182 @@@enDesc:
16183 The default resolver.
16184 @@@PerlDefC:
16185 $r = sub {
16186 my ($self, $input, $errorHandler) = @_;
16187 ## As defined in DOM Level 3 LS |LSInput| interface
16188
16189 my $r = {};
16190
16191 __DEEP{
16192
16193 FH: {
16194 ## 1. |characterStream|
16195 my $v = $input-><AG::LSInput.characterStream>;
16196 if (defined $v) {
16197 $r->{filehandle} = $v;
16198 last FH;
16199 }
16200
16201 ## 2. |byteStream|
16202 $v = $input-><AG::LSInput.byteStream>;
16203 if (defined $v) {
16204 ## TODO: Support byte filehandle
16205 ## |encoding|
16206 ## TODO: How to guess?
16207 return null;
16208 }
16209
16210 ## 3. |stringData|
16211 $v = $input-><AG::LSInput.stringData>;
16212 if (defined $v) {
16213 require IO::String;
16214 $r->{filehandle} = IO::String->new ($v);
16215 last FH;
16216 }
16217
16218 ## 4. |systemId|
16219 ## TODO:
16220 ## resolve relative URI
16221 ## open
16222 ## set document_uri
16223
16224 ## 5. |publicId|
16225 ## The default resolver does not support only-|publicId| input.
16226
16227 return null;
16228 } # FH
16229
16230 DURI: {
16231 last DURI if defined $r->{document_uri};
16232
16233 my $v = $input-><AG::LSInput.systemId>;
16234 if (defined $v) {
16235 $r->{base_uri} = $input-><AG::LSInput.baseURI>
16236 unless defined $r->{base_uri};
16237 if (defined $r->{base_uri}) {
16238 $r->{document_uri}
16239 = <ClassM::urigen|ManakaiURIReference.new> (\$v)
16240 -><M::urigen|URIReference.getAbsoluteReference>
16241 ($r->{base_uri})
16242 -><AG::urigen|URIReference.uriReference>;
16243 } else {
16244 $r->{document_uri} = $v;
16245 }
16246 last DURI;
16247 }
16248
16249 ## TODO: pubid -> pubid URN -> document_uri
16250 } # DURI
16251
16252 BURI: {
16253 last BURI if defined $r->{base_uri};
16254
16255 my $v = $input-><AG::LSInput.baseURI>;
16256 if (defined $v) {
16257 $r->{base_uri} = $v;
16258 last BURI;
16259 }
16260
16261 if (defined $r->{document_uri}) {
16262 $r->{base_uri} = $r->{document_uri};
16263 }
16264 } # BURI
16265
16266 }__;
16267
16268 ## ISSUE: Is |certifiedText| required by parsers?
16269
16270 return $r;
16271 };
16272 @Method:
16273 @@rdf:type: c|DOMConfigurationParameterSetter
16274 @@Param:
16275 @@@Name: name
16276 @@@Type: DOMString
16277 @@@dis:actualType: c|DOMConfigurationParameterName
16278 @@@enDesc: The parameter name.
16279 @@Param:
16280 @@@Name: value
16281 @@@Type: DOMMain|DOMUserData
16282 @@@dis:actualType: ManakaiDOMLSInputToInputFile
16283 @@@enDesc: The new value.
16284 @@Return:
16285 @@@Type: idl|void||ManakaiDOM|all
16286 @@@PerlDefC:
16287 $self->[1]->{<H::xp|ls-input-to-input-file>} = $value;
16288 @@enImplNote:
16289 Implied input processor converts non-blessed code references
16290 into a <Class::ManakaiDOMLSInputToInputFile> object.
16291 @Method:
16292 @@rdf:type: c|DOMConfigurationParameterChecker
16293 @@Param:
16294 @@@Name: name
16295 @@@Type: DOMString
16296 @@@dis:actualType: c|DOMConfigurationParameterName
16297 @@@enDesc: The parameter name.
16298 @@Param:
16299 @@@Name: value
16300 @@@Type: DOMMain|DOMUserData
16301 #@@@dis:actualType: ManakaiDOMLSInputToInputFile
16302 @@@enDesc: The new value.
16303 @@Return:
16304 @@@Type: idl|boolean||ManakaiDOM|all
16305 @@@PerlDefC:
16306 $r = UNIVERSAL::isa ($value, 'CODE') or
16307 UNIVERSAL::isa ($value, <ClassName::ManakaiDOMLSInputToInputFile>);
16308
16309 @@Test:
16310 @@@QName: cp.ls-input-to-input-file.test
16311 @@@PerlDefC:
16312 my $xp;
16313 __CODE{createParserForTest:: $xp => $xp}__;
16314 my $cfg = $xp-><AG::LSInput.domConfig>;
16315
16316 my $cp = <Q::xp|ls-input-to-input-file>;
16317
16318 $test->id ('default');
16319 my $default = $cfg-><M::c|DOMConfiguration.getParameter> ($cp);
16320 $test->assert_isa ($default,
16321 <ClassName::ManakaiDOMLSInputToInputFile>);
16322
16323 $test->id ('set');
16324 my $sub1 = sub { };
16325 $cfg-><M::c|DOMConfiguration.setParameter> ($cp => $sub1);
16326 my $sub2 = $cfg-><M::c|DOMConfiguration.getParameter> ($cp);
16327 $test->assert_isa ($sub2, <ClassName::ManakaiDOMLSInputToInputFile>);
16328 $test->assert_equals ($sub2, $sub1);
16329
16330 $test->id ('reset');
16331 $cfg-><M::c|DOMConfiguration.setParameter> ($cp => null);
16332 my $sub3 = $cfg-><M::c|DOMConfiguration.getParameter> ($cp);
16333 $test->assert_isa ($sub3, <ClassName::ManakaiDOMLSInputToInputFile>);
16334 $test->assert_equals ($sub3, $default);
16335
16336 @@Test:
16337 @@@QName: cp.ls-input-to-input-file.default.test
16338 @@@PerlDefC:
16339 my $xp;
16340 __CODE{createParserForTest:: $xp => $xp}__;
16341 my $cfg = $xp-><AG::LSInput.domConfig>;
16342 my $cp = <Q::xp|ls-input-to-input-file>;
16343 my $default = $cfg-><M::c|DOMConfiguration.getParameter> ($cp);
16344
16345 my $err = sub {}; # dummy error handler
16346
16347 my $cs = \*STDOUT; # dummy input
16348
16349 $test->id ('cs.sysid');
16350 my $r1 = $default->resolve_ls_input ({
16351 character_stream => $cs,
16352 system_id => q<http://example.com/sysid>,
16353 }, $err);
16354 $test->assert_equals
16355 ($r1->document_uri, q<http://example.com/sysid>);
16356 $test->assert_equals
16357 ($r1->base_uri, q<http://example.com/sysid>);
16358
16359 $test->id ('cs.baseuri.sysid');
16360 my $r1 = $default->resolve_ls_input ({
16361 character_stream => $cs,
16362 system_id => q<sysid>,
16363 base_uri => q<http://example.com/>,
16364 }, $err);
16365 $test->assert_equals
16366 ($r1->document_uri, q<http://example.com/sysid>);
16367 $test->assert_equals
16368 ($r1->base_uri, q<http://example.com/>);
16369 ##ls-input-to-input-file
16370
16371 ClsDef:
16372 @ClsQName: ManakaiDOMLSInputToInputFile
16373 @enDesc:
16374 An <Class::ManakaiDOMLSInputToInputFile> object is used to covert
16375 a <IF::LSInput> object into a Perl filehandle.
16376
16377 {ISSUE::
16378 In which module this class should be placed?
16379
16380 Better interface name?
16381 }
16382
16383 @enDesc:
16384 @@ddid: perl
16385 @@ForCheck: ManakaiDOM|ManakaiDOM
16386 @@@:
16387 For Perl binding, any parameter that accepts
16388 a <Class::ManakaiDOMLSInputToInputFile> would also accept a Perl code
16389 reference (subroutine reference). The code reference
16390 will be blessed as a <Class::ManakaiDOMLSInputToInputFile> whose
16391 <M::ManakaiDOMLSInputToInputFile.resolveLSInput> method invokes the code.
16392
16393 @ResourceDef:
16394 @@rdf:type: DISLang|InputProcessor
16395 @@rdf:type: DISLang|OutputProcessor
16396 @@PerlDef:
16397 $INPUT = bless $INPUT, <ClassName::ManakaiDOMLSInputToInputFile>
16398 if ref $INPUT eq 'CODE';
16399
16400 @Method:
16401 @@Name: resolveLSInput
16402 @@enDesc:
16403 Converts a <IF::LSInput> into a Perl filehandle.
16404 @@Param:
16405 @@@Name: input
16406 @@@Type: LSInput
16407 @@@enDesc:
16408 The input.
16409 @@Param:
16410 @@@Name: errorHandler
16411 @@@Type: c|DOMErrorHandler
16412 @@@enDesc:
16413 An error handler. If the method encounters an error
16414 or warning, it <kwd:MAY> notify it to application
16415 via this handler.
16416 @@Return:
16417 @@@Type: ManakaiDOMInputFile
16418 @@@enDesc:
16419 A <Class::ManakaiDOMInputFile> object created from <P::input>.
16420 @@@nullCase:
16421 @@@@enDesc:
16422 If the method was unable to resolve the <P::input>.
16423
16424 {ISSUE::
16425 Should we allow the method to throw exceptions?
16426 }
16427 @@@PerlDef:
16428 __DEEP{
16429 $r = $self->($self, $input, $errorHandler);
16430 }__;
16431 @@@enImplNote:
16432 Notet that the input / output processor for <CODE::$input>
16433 and return value might or might not be inserted in
16434 the <Perl::$self> code.
16435 ##LSInputToInputFile
16436
16437 ClsDef:
16438 @ClsQName: ManakaiDOMInputFile
16439 @enDesc:
16440 A set of information on the input, including filehandle.
16441
16442 @enDesc:
16443 @@ddid: perl
16444 @@ForCheck: ManakaiDOM|ManakaiDOM
16445 @@@:
16446 For Perl binding, any parameter that accepts
16447 a <Class::ManakaiDOMInputFile> would also accept a Perl hash reference.
16448 If a hash reference is given to parameter that expects
16449 a <Class::ManakaiDOMInputFile> object, then it
16450 bless the hash with the class.
16451
16452 Each attributes defined
16453 in the class is associated to the hash value with the
16454 key equals to the attribut name. Each method defined in
16455 the class will invoke the code reference retrieved
16456 from the hash by the key equals to the method name.
16457
16458 If there is no value in the hash for an attribute,
16459 then its value is <DOM::null>.
16460
16461 @ResourceDef:
16462 @@rdf:type: DISLang|InputProcessor
16463 @@rdf:type: DISLang|OutputProcessor
16464 @@PerlDef:
16465 $INPUT = bless $INPUT, <ClassName::ManakaiDOMInputFile>
16466 if ref $INPUT eq 'HASH';
16467
16468 @Attr:
16469 @@Name: filehandle
16470 @@Type: DISPerl|filehandle||ManakaiDOM|all
16471 @@enDesc:
16472 The input filehandle.
16473
16474 It <kwd:MUST> be an <Perl::open>ed (and not <Perl::close>d)
16475 filehandle. Note that
16476 it does not have to be associated with an actual file
16477 in the local file system.
16478
16479 It <kwd:MUST> return a character (rather than byte)
16480 by <Perl::getc>.
16481 @@Get:
16482 @@@PerlDef: $r = $self->{filehandle};
16483 @@Set:
16484 @@@PerlDef: $self->{filehandle} = $given;
16485
16486 @Attr:
16487 @@Name: baseURI
16488 @@enDesc:
16489 The base URI of the input.
16490
16491 It <kwd:MUST> be an absolute DOM URI or <DOM::null>.
16492 Otherwise, the result is undefined.
16493 @@Type: DOMString
16494 @@nullCase:
16495 @@@enDesc:
16496 If the base URI is not available.
16497 @@Get:
16498 @@@PerlDef: $r = $self->{base_uri};
16499 @@Set:
16500 @@@PerlDef: $self->{base_uri} = $given;
16501
16502 @Attr:
16503 @@Name: documentURI
16504 @@enDesc:
16505 The URI of the document.
16506
16507 It <kwd:MUST> be an absolute DOM URI or <DOM::null>.
16508 Otherwise, the result is undefined.
16509 @@Type: DOMString
16510 @@nullCase:
16511 @@@enDesc:
16512 If the document URI is not available.
16513 @@Get:
16514 @@@PerlDef: $r = $self->{document_uri};
16515 @@Set:
16516 @@@PerlDef: $self->{document_uri} = $given;
16517
16518 @Method:
16519 @@Name: close
16520 @@enDesc:
16521 Closes the file.
16522
16523 Since when the Perl's destructor is invoked is unreliable,
16524 this method is explicitly called when the file is no longer
16525 in use.
16526
16527 If the <Class::ManakaiDOMInputFile> is given as a hash
16528 reference and whose value for <CODE::close> is not defined,
16529 then the statement <Perl::close $filehandle> is done
16530 (where <Perl::$filehandle> is the <A::ManakaiDOMInputFile.filehandle>
16531 value).
16532 @@Return:
16533 @@@PerlDef:
16534 __DEEP{
16535 if ($self->{close}) {
16536 $self->{close}->($self);
16537 } else {
16538 close $self->{filehandle};
16539 }
16540 }__;
16541 ##ManakaiDOMInputFile
16542
16543
16544

admin@suikawiki.org
ViewVC Help
Powered by ViewVC 1.1.24