/[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.22 - (hide annotations) (download)
Mon Feb 13 10:42:15 2006 UTC (18 years, 9 months ago) by wakaba
Branch: MAIN
Changes since 1.21: +1085 -170 lines
++ manakai/lib/Message/DOM/ChangeLog	13 Feb 2006 10:40:43 -0000
	* XMLParser.dis (_GeneralEntityReferenceAE): The |xp:wf-entity-declared|
	WFC error is implemented.

2006-02-13  Wakaba  <wakaba@suika.fam.cx>

1 wakaba 1.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 wakaba 1.22 $Date: 2006/02/13 08:33:54 $
14 wakaba 1.1
15     @DefaultFor: ManakaiDOM|ManakaiDOMLatest
16    
17     @Require:
18     @@Module:
19     @@@QName: MDOM|DOMLS
20     @@@WithFor: ManakaiDOM|ManakaiDOMLatest
21 wakaba 1.6 @@Module:
22     @@@QName: MDOM|XDoctype
23     @@@WithFor: ManakaiDOM|ManakaiDOMLatest
24 wakaba 1.1
25     Namespace:
26 wakaba 1.8 @c:
27     http://suika.fam.cx/~wakaba/archive/2004/8/18/dom-core#
28 wakaba 1.11 @cfg:
29     http://suika.fam.cx/www/2006/dom-config/
30 wakaba 1.6 @d:
31     http://suika.fam.cx/~wakaba/archive/2004/dom/xdt#
32 wakaba 1.1 @dis:
33     http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--
34 wakaba 1.5 @dtest:
35     http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#Test/
36 wakaba 1.1 @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 wakaba 1.11 @fe:
43     http://suika.fam.cx/www/2006/feature/
44     @gls:
45     http://suika.fam.cx/~wakaba/archive/2004/dom/gls#
46 wakaba 1.1 @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 wakaba 1.11 @mn:
65     http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/ManakaiNode#
66 wakaba 1.1 @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 wakaba 1.5 @test:
73     http://suika.fam.cx/~wakaba/archive/2004/dis/Test#
74 wakaba 1.8 @x:
75     http://suika.fam.cx/~wakaba/archive/2004/dom/xml#
76 wakaba 1.1 @xml:
77     http://www.w3.org/XML/1998/namespace
78 wakaba 1.9 @xml-dtd:
79     http://www.w3.org/TR/REC-xml
80 wakaba 1.1 @xmlns:
81     http://www.w3.org/2000/xmlns/
82     @xp:
83     http://suika.fam.cx/~wakaba/archive/2004/dom/xml-parser#
84    
85     ## -- Features
86    
87     ElementTypeBinding:
88     @Name: FeatureDef
89     @ElementType:
90     dis:ResourceDef
91     @ShadowContent:
92     @@rdf:type: f|Feature
93     @@For: =ManakaiDOM|all
94    
95     ElementTypeBinding:
96     @Name: FeatureVerDef
97     @ElementType:
98     dis:ResourceDef
99     @ShadowContent:
100     @@rdf:type: f|Feature
101    
102     ElementTypeBinding:
103     @Name: featureQName
104     @ElementType:
105     f:name
106     @ShadowContent:
107     @@ContentType: DISCore|QName
108    
109     ResourceDef:
110     @QName: DOMString
111     @AliasFor: DOMMain|DOMString
112     @For: ManakaiDOM|DOM
113    
114     ResourceDef:
115     @QName: Node
116     @AliasFor: t|Node
117     @For: ManakaiDOM|DOM
118    
119     ResourceDef:
120     @QName: Element
121     @AliasFor: t|Element
122     @For: ManakaiDOM|DOM
123    
124     ResourceDef:
125     @QName: Document
126     @AliasFor: t|Document
127     @For: ManakaiDOM|DOM
128    
129 wakaba 1.6 ResourceDef:
130     @QName: DocumentXDoctype
131     @AliasFor: d|DocumentXDoctype
132     @For: ManakaiDOM|DOM
133    
134 wakaba 1.8 ResourceDef:
135     @QName: DTDef
136     @AliasFor: d|DocumentTypeDefinition
137     @For: ManakaiDOM|DOM
138    
139     ResourceDef:
140     @QName: ETDef
141     @AliasFor: d|ElementTypeDefinition
142     @For: ManakaiDOM|DOM
143    
144     ResourceDef:
145     @QName: ATDef
146     @AliasFor: d|AttributeDefinition
147     @For: ManakaiDOM|DOM
148    
149 wakaba 1.1 ElementTypeBinding:
150     @Name: ClsDef
151     @ElementType:
152     dis:ResourceDef
153     @ShadowContent:
154     @@rdf:type:
155     @@@@: dis|MultipleResource
156     @@@ForCheck: !ManakaiDOM|ForIF !ManakaiDOM|ForClass
157     @@resourceFor:
158     @@@@: ManakaiDOM|ForClass
159     @@@ForCheck: ManakaiDOM|ManakaiDOM !=ManakaiDOM|ManakaiDOM
160     @@For: ManakaiDOM|DOM3
161     @@For: =ManakaiDOM|ManakaiDOM
162    
163     @@rdf:type:
164     @@@@: DISLang|Class
165     @@@ForCheck: ManakaiDOM|ForClass
166    
167     ElementTypeBinding:
168     @Name: ClsQName
169     @ElementType:
170     dis:QName
171     @ShadowContent:
172     @@ForCheck: ManakaiDOM|ForClass
173    
174     ElementTypeBinding:
175     @Name: ClsISA
176     @ElementType:
177     dis:ISA
178     @ShadowContent:
179     @@ForCheck: ManakaiDOM|ForClass
180    
181     ElementTypeBinding:
182     @Name: nullCase
183     @ElementType:
184     dis:ResourceDef
185     @ShadowContent:
186     @@rdf:type: ManakaiDOM|InCase
187     @@Value:
188     @@@is-null:1
189    
190     ResourceDef:
191     @QName: LSParser
192     @AliasFor: DOMLS|LSParser
193     @For: ManakaiDOM|DOM3
194    
195     ClsDef:
196     @ClsQName: ManakaiXMLParser
197    
198     @Implement: DOMLS|LSParser
199    
200     @f:implements:
201     @@@: DOMLS|LSFeature30
202     @@For: ManakaiDOM|DOM3
203    
204 wakaba 1.11 @DISLang:role: gls|ParserRole
205 wakaba 1.1
206 wakaba 1.3 @enDesc:
207     Note that the <Class::ManakaiXMLParser> reports any XML errors
208     (syntax errors and / or well-formedness constraint errors)
209     via the <IF::DOMCore:error-handler> registered to
210     the <A::DOMLS:LSParser.domConfig> object. Each error has
211     its <A::DOMCore:DOMError.severity>, either <C::DOMCore:SEVERITY_ERROR>
212     or <C::DOMCore:SEVERITY_FATAL_ERROR>. However, their semantics
213     are slight different from the ones of <QUOTE::error> and
214     <QUOTE::fatal error> in XML; in this implemenetation,
215     <C::DOMCore:SEVERITY_ERROR> implies that the parsing process
216     can effectively be continued to detect more errors while
217     <C::DOMCore:SEVERITY_FATAL_ERROR> implies that the error
218     is serious so that the result document tree and any errors
219     might be far from the ones obtained when the error would not
220     be found.
221    
222 wakaba 1.1 @Attr:
223     @@Name: domConfig
224     @@enDesc:
225     The configuration of the parser.
226    
227     @@Get:
228     @@@Type: DOMCore|DOMConfiguration
229     @@@enDesc: The DOM configuration object.
230     @@@PerlDef:
231     __CODE{DOMCore|getConfigObject::
232     $target => $self,
233     $targetHash => $self,
234     $targetType => {<IFName::LSParser>},
235     $result => $r,
236     }__;
237    
238     @Method:
239     @@ManakaiDOM:isForInternal:1
240     @@ForCheck: ManakaiDOM|ForClass
241     @@Operator: DISPerl|NewMethod
242     @@enDesc:
243     Creates a new instance of the object.
244     @@Param:
245     @@@Name: impl
246 wakaba 1.11 @@@Type: gls|GLSImplementation
247 wakaba 1.1 @@@enDesc:
248     The implementation from which the parser is created.
249     @@Param:
250     @@@Name: features
251     @@@Type: DOMString
252     @@@dis:actualType: f|FeaturesString
253     @@@enDesc:
254     The set of features requested for the parser.
255     @@Return:
256     @@@Type: DOMMain|DOMObject
257     @@@dis:actualType: LSParser
258     @@@enDesc:
259     The newly created parser.
260     @@@PerlDef:
261     $r = bless {
262     <H::DOMCore:implementation> => $impl,
263     }, $self;
264    
265     @Method:
266     @@Name: parseString
267     @@enImplNote:
268     Non-standard - to be removed
269    
270     @@Param:
271     @@@Name: sourceText
272     @@@Type: DOMString
273     @@Return:
274     @@@Type: Document
275     @@@PerlDef:
276    
277     $self->{char} = [];
278     $self->{token} = [];
279 wakaba 1.6 $self->{entity} = [{
280     reptxt => \$sourceText,
281     line => 1,
282     column => 1,
283     pos => 0,
284     }];
285 wakaba 1.14 $self->{location} = $self->{entity}->[-1];
286 wakaba 1.6 $self->{entity_char} = [];
287     $self->{entity_token} = [];
288 wakaba 1.3 $self->{xml_version} = '1.0';
289     $self->{standalone} = false;
290 wakaba 1.19 $self->{has_xref} = false;
291 wakaba 1.11 $self->{general_entity} = {
292     lt => {is_predefined => true},
293     gt => {is_predefined => true},
294     amp => {is_predefined => true},
295     quot => {is_predefined => true},
296     apos => {is_predefined => true},
297     };
298 wakaba 1.6 $self->{param_entity} = {};
299 wakaba 1.9 $self->{attr} = {};
300     # $self->{attr}->{$element_type_name}->{$attr_name} = $attr_def
301 wakaba 1.17
302 wakaba 1.3 ## Well-formedness constraint Entity Declared takes effect?
303 wakaba 1.1
304     __DEEP{
305 wakaba 1.11 $r = $self->{<H::c|implementation>}-><M::DOMImpl.createDocument>;
306     $self->{doc} = $r;
307 wakaba 1.21 $self->{doc_cfg} = $r-><AG::Document.domConfig>;
308 wakaba 1.11 CORE::delete $self->{docx};
309     CORE::delete $self->{dtdef};
310 wakaba 1.17 CORE::delete $self->{dtdecl};
311 wakaba 1.21
312     $r-><AS::Document.strictErrorChecking> (false);
313     ## NOTE: Any checks such as |Name| validity done by
314     ## methods on DOM nodes are disabled. It might result
315     ## in creating an ill-formed DOM tree when parser
316     ## errors are traped by |error-handler|.
317     $self->{doc_cfg}-><M::c|DOMConfiguration.setParameter>
318     (<Q::cfg|entity-reference-read-only> => false);
319     ## NOTE: Turn this configuration parameter off is required
320     ## because entity reference subtree is created by
321     ## the parser rather than |createEntityReference|'s
322     ## cloning. Parser's |cfg:entity-reference-read-only|
323     ## configuration parameter controls whether generated
324     ## subtree is then marked as read-only or not.
325     $self->{doc_cfg}-><M::c|DOMConfiguration.setParameter>
326     (<Q::cfg|clone-entity-reference-subtree> => true);
327     ## NOTE: Turn this configuration parameter on makes
328     ## entity reference subtrees in attribute default values
329     ## cloned as is into default attribute node subtrees.
330 wakaba 1.11
331     ## Document entity -> |Document| node
332     $self->_parse_DocumentEntity;
333    
334     ## Replacement tree for general |Entity| nodes
335 wakaba 1.20 my @ent = values %{$self->{general_entity}};
336     for my $ent (@ent) {
337     if (exists $ent->{has_replacement_text}) {
338 wakaba 1.11 my $ent_name = $ent->{name};
339     $self->{entity} = [<Code::getCopyOfEntityState::
340     $entity_type = 'general_entity',
341     $entity_name = $ent_name>];
342 wakaba 1.14 $self->{location} = $self->{entity}->[-1];
343 wakaba 1.11 $self->{token} = [];
344     $self->{char} = [];
345     ## TODO: External entity support
346     $self->_parse_InternalGeneralParsedEntity ($ent->{node});
347     $ent->{node}-><AS::x|Entity.hasReplacementTree> (true);
348 wakaba 1.21 ## ISSUE: Should errors detected by this phase result
349     ## in |DOMLS:PARSE_ERR| exception thrown?
350 wakaba 1.20 }
351 wakaba 1.11 ## TODO: Read-only if configuration (for all entities)
352     }
353    
354 wakaba 1.21 ## Turns flags to their default value
355     $self->{doc_cfg}-><M::c|DOMConfiguration.setParameter>
356     (<Q::cfg|entity-reference-read-only> => null);
357     $self->{doc_cfg}-><M::c|DOMConfiguration.setParameter>
358     (<Q::cfg|clone-entity-reference-subtree> => null);
359 wakaba 1.11 $r-><AS::Document.strictErrorChecking> (true);
360 wakaba 1.1 }__;
361    
362     @Method:
363     @@Name: shiftChar
364     @@ManakaiDOM:isForInternal:1
365     @@ForCheck: ManakaiDOM|ForClass
366     @@enDesc:
367     Returns the next character.
368     @@Return:
369     @@@Type: idl|long||ManakaiDOM|all
370     @@@enDesc:
371     The code position number of the next character, if any,
372 wakaba 1.6 or <CODE::-1>.
373 wakaba 1.1 @@@PerlDef:
374     if (@{$self->{char}}) {
375     $r = shift @{$self->{char}};
376     } else {
377 wakaba 1.7 no warnings 'substr';
378     ## substr outside length warnings at the end of the string
379 wakaba 1.6 GETCHAR: {
380     my $char = substr (${$self->{entity}->[-1]->{reptxt}},
381     $self->{entity}->[-1]->{pos}, 1);
382    
383 wakaba 1.7 if (defined $char and length $char) {
384 wakaba 1.13 $self->{entity}->[-1]->{pos}++;
385 wakaba 1.6 $r = ord $char;
386     if ($r == 0x000A) {
387     $self->{entity}->[-1]->{line}++;
388     $self->{entity}->[-1]->{column} = 1;
389     } elsif ($r == 0x000D) {
390     my $next_char = substr (${$self->{entity}->[-1]->{reptxt}},
391     $self->{entity}->[-1]->{pos}, 1);
392     if ($next_char eq "\x0A") {
393     $self->{entity}->[-1]->{pos}++;
394 wakaba 1.13 $self->{entity}->[-1]->{line}++;
395 wakaba 1.6 $self->{entity}->[-1]->{column} = 1;
396     } elsif ($next_char eq "\x85") {
397     if ($self->{xml_version} eq '1.1') {
398 wakaba 1.16 if ($self->{entity}->[-1]->{no_xml11_eol}) {
399     my $location = {
400     utf32_offset => $self->{entity}->[-1]->{pos} - 1,
401     line_number => $self->{entity}->[-1]->{line},
402     column_number => $self->{entity}->[-1]->{column},
403     };
404     my $continue = __DOMCore:ERROR{
405     xp|fatal-xml11-end-of-line-in-xml-declaration::
406     DOMCore|location => {$location},
407     xp|character-number => {$r},
408     }__;
409     unless ($continue) {
410     __EXCEPTION{DOMLS|PARSE_ERR}__;
411     }
412     } # no_xml11_eol
413 wakaba 1.6 $self->{entity}->[-1]->{pos}++;
414 wakaba 1.13 $self->{entity}->[-1]->{line}++;
415 wakaba 1.6 $self->{entity}->[-1]->{column} = 1;
416     } else {
417 wakaba 1.16 ## |no_xml11_eol| will be tested later.
418 wakaba 1.13 $self->{entity}->[-1]->{column}++;
419     ## Line number will be increased by next |shiftChar| call.
420 wakaba 1.6 }
421 wakaba 1.3 } else {
422 wakaba 1.13 $self->{entity}->[-1]->{line}++;
423 wakaba 1.6 $self->{entity}->[-1]->{column} = 1;
424     }
425     $r = 0x000A;
426     } elsif (
427     not ((0x0020 <= $r and $r <= 0x007E) or
428     (0x00A0 <= $r and $r <= 0xD7FF) or
429     (0xE000 <= $r and $r <= 0xFFFD) or
430     (0x10000 <= $r and $r <= 0x10FFFF)) and
431     $r != 0x0009 and $r != 0x0085 and
432     not ($self->{xml_version} eq '1.0' and
433     (0x007F <= $r and $r <= 0x009F))
434     ) {
435     my $location = {
436 wakaba 1.13 utf32_offset => $self->{entity}->[-1]->{pos} - 1,
437 wakaba 1.6 line_number => $self->{entity}->[-1]->{line},
438     column_number => $self->{entity}->[-1]->{column},
439     };
440     my $continue = __DOMCore:ERROR{xp|wf-legal-literal-character::
441     DOMCore|location => {$location},
442     xp|character-number => {$r},
443     }__;
444     unless ($continue) {
445     __EXCEPTION{DOMLS|PARSE_ERR}__;
446 wakaba 1.3 }
447 wakaba 1.6 $self->{entity}->[-1]->{column}++;
448     } elsif ($r == 0x0085 or $r == 0x2028) {
449 wakaba 1.16 if ($self->{entity}->[-1]->{no_xml11_eol}) {
450     my $location = {
451     utf32_offset => $self->{entity}->[-1]->{pos} - 1,
452     line_number => $self->{entity}->[-1]->{line},
453     column_number => $self->{entity}->[-1]->{column},
454     };
455     my $continue = __DOMCore:ERROR{
456     xp|fatal-xml11-end-of-line-in-xml-declaration::
457     DOMCore|location => {$location},
458     xp|character-number => {$r},
459     }__;
460     unless ($continue) {
461     __EXCEPTION{DOMLS|PARSE_ERR}__;
462     }
463     } # no_xml11_eol
464 wakaba 1.6 $r = 0x000A if $self->{xml_version} eq '1.1';
465 wakaba 1.13 ## Even in XML 1.0 it increases the line number.
466 wakaba 1.6 $self->{entity}->[-1]->{line}++;
467     $self->{entity}->[-1]->{column} = 1;
468 wakaba 1.3 } else {
469 wakaba 1.6 $self->{entity}->[-1]->{column}++;
470 wakaba 1.3 }
471     } else {
472 wakaba 1.6 $r = -1;
473 wakaba 1.3 }
474 wakaba 1.6 } # GETCHAR
475 wakaba 1.1 }
476    
477     @Method:
478     @@ManakaiDOM:isForInternal: 1
479     @@Operator: ManakaiDOM|MUErrorHandler
480     @@enDesc:
481     When a <IF::ecore|ErrorInterface||ManakaiDOM|Perl> is <Perl::report>ed,
482     then this method is invoked.
483    
484     The method calls the <cfg::DOMCore|error-handler> if the error is of
485     <IF::DOMCore|DOMError>. Otherwise, the error is re-thrown so that
486     corresponding <Perl::catch> clause, if any, can catch the error.
487     @@Param:
488     @@@Name: err
489     @@@Type: ecore|ErrorInterface||ManakaiDOM|Perl
490     @@@enDesc:
491     The reported error object.
492     @@Return:
493     @@@Type: DISPerl|Any
494     @@@enDesc:
495     If the <P::err> is a <IF::DOMCore|DOMError>, then the return value
496     of the error handler.
497    
498     {NOTE:: If the error is thrown, the method never returns.
499     }
500     @@@nullCase:
501     @@@@enDesc:
502     No error handler.
503     @@@PerlDef:
504     if ($err->isa (<IFName::DOMCore|DOMError||ManakaiDOM|ManakaiDOM>)) {
505     __DEEP{
506     A: {
507     my $cfg = $self-><AG::LSParser.domConfig>;
508     my $h = $cfg-><M::DOMCore|DOMConfiguration.getParameter>
509     ('error-handler');
510     $r = $h-><M::DOMCore|DOMErrorHandler.handleError> ($err);
511     } # A
512     }__;
513     } else {
514     $err-><M::ecore|ErrorInterface||ManakaiDOM|Perl.throw>;
515     }
516    
517     @DISPerl:dpgDef:
518    
519     /*
520     XML Document Entity
521    
522     document := prolog element *Misc
523     - *Char RestrictedChar *Char ;; [1]
524     */
525 wakaba 1.11 rule DocumentEntity : standalone {
526 wakaba 1.1 /*
527     prolog := XMLDecl? *Misc [doctypedecl *Misc] ;; [22]
528     */
529 wakaba 1.16 ?lexmode DocumentStart;
530 wakaba 1.11
531     my $doc;
532     lang:Perl {
533     $doc = $self->{doc};
534     }
535 wakaba 1.1
536 wakaba 1.3 ~? (XDO) {
537 wakaba 1.16 ?lexmode XMLDeclarationOrPI;
538     lang:Perl {
539     $self->{entity}->[-1]->{no_xml11_eol} = true;
540     }
541     ~ (S) { // XML declaration
542     &_XMLDeclaration_ ($doc => $doc);
543     ~ (PIC2) {
544     ?lexmode DocumentProlog;
545     } else {
546     ?lexmode DocumentProlog;
547     }
548     } (NameChar) { // Processing instruction whose target begins with |xml|
549     my $target_token;
550     lang:Perl ($v => $token.value) {
551     $target_token = $token;
552     $target_token->{value} = 'xml'.$target_token->{value};
553     $self->{entity}->[-1]->{no_xml11_eol} = false;
554     }
555     ?lexmode PINmtoken;
556     ~? (Nmtoken) {
557     lang:Perl ($v => $token.value) {
558     $target_token->{value} .= $v;
559     }
560     ?lexmode PIName;
561     }
562     lang:Perl {
563     $target_token->{type} = 'Name';
564     $target_token->{location_d} += 3; # 'xml'
565     unshift @{$self->{token}}, $token;
566     $token = $target_token;
567     }
568     &_ProcessingInstruction_ ($doc => $doc, $parent => $doc);
569     ~ (PIC) {
570     ?lexmode DocumentProlog;
571     } else {
572     ?lexmode DocumentProlog;
573     }
574 wakaba 1.3 } else {
575 wakaba 1.16 lang:Perl {
576     $self->{entity}->[-1]->{no_xml11_eol} = false;
577     }
578 wakaba 1.3 }
579     } else {
580     ?lexmode 'DocumentProlog';
581     }
582 wakaba 1.1
583     // *Misc
584 wakaba 1.2 ~* (CDO) {
585 wakaba 1.1 &_CommentDeclaration_ ($doc => $doc, $parent => $doc);
586    
587     ~ (MDC) {
588     ?lexmode DocumentProlog;
589     } else {
590     ?lexmode DocumentProlog;
591     }
592     } (PIO) {
593     &_ProcessingInstruction_ ($doc => $doc, $parent => $doc);
594    
595     ~ (PIC) {
596     ?lexmode 'DocumentProlog';
597     } else {
598     ?lexmode DocumentProlog;
599     }
600     } (S) {
601     //
602     }
603    
604     // doctypedecl
605     ~? (MDO) {
606     &_DocumentTypeDeclaration_ ($doc => $doc);
607    
608 wakaba 1.3 ~ (MDC) {
609     ?lexmode DocumentMisc;
610     } else {
611     ?lexmode DocumentMisc;
612     }
613     } else {
614     ?lexmode DocumentMisc;
615 wakaba 1.1 }
616    
617     // *Misc
618 wakaba 1.2 ~* (CDO) {
619 wakaba 1.1 &_CommentDeclaration_ ($doc => $doc, $parent => $doc);
620    
621     ~ (MDC) {
622     ?lexmode DocumentMisc;
623     } else {
624     ?lexmode DocumentMisc;
625     }
626     } (PIO) {
627     &_ProcessingInstruction_ ($doc => $doc, $parent => $doc);
628    
629     ~ (PIC) {
630     ?lexmode 'DocumentMisc';
631     } else {
632     ?lexmode DocumentMisc;
633     }
634     } (S) {
635     //
636     }
637    
638     // Document element
639     ~ (STAGO) {
640     &Element_ ($doc => $doc, $parent => $doc)
641     : unshift-current-token;
642     ~ (TAGC) {
643     ?lexmode DocumentEnd;
644     } else {
645     ?lexmode DocumentEnd;
646     }
647     } else {
648     ?lexmode 'DocumentEnd';
649     }
650    
651     // *Misc
652 wakaba 1.2 ~* (CDO) {
653 wakaba 1.1 &_CommentDeclaration_ ($doc => $doc, $parent => $doc);
654    
655     ~ (MDC) {
656     ?lexmode DocumentEnd;
657     } else {
658     ?lexmode DocumentEnd;
659     }
660     } (PIO) {
661     &_ProcessingInstruction_ ($doc => $doc, $parent => $doc);
662     ~ (PIC) {
663     ?lexmode 'DocumentEnd';
664     } else {
665     ?lexmode DocumentEnd;
666     }
667     } (S) {
668     //
669     }
670    
671     ~ (#EOF) { }
672     } // DocumentEntity
673 wakaba 1.11
674     /*
675     Internal General Parsed Entity
676    
677     An internal general parsed entity is well-formed if its
678     replacement text matches the production labeled |content|.
679     */
680     rule InternalGeneralParsedEntity ($ent) : standalone {
681     ?lexmode ElementContent;
682    
683     my $ns;
684     lang:Perl {
685     $ns = {
686     xml => <Q::xml:>,
687     xmlns => <Q::xmlns:>,
688     };
689     }
690    
691     &content ($parent => $ent, $ns => $ns);
692    
693     ~ (#EOF) { }
694     } // InternalGeneralParsedEntity
695    
696 wakaba 1.1 /*
697     XML Declaration
698    
699     XMLDecl := '<?xml' VersionInfo
700     [EncodingDecl]
701     [SDDecl]
702     [S] '?>' ;; [23]
703    
704     NOTE: XML declaration is optional in XML 1.0
705     while it is required in XML 1.1.
706     */
707 wakaba 1.16 rule _XMLDeclaration_ {
708     // ~ (XDO) { }
709 wakaba 1.3 ?lexmode XMLDeclaration;
710 wakaba 1.16 //lang:Perl {
711     // $self->{entity}->[-1]->{no_xml11_eol} = true;
712     //}
713     //~ (S) { }
714 wakaba 1.3
715     ~ (Name == 'version') {
716     ~? (S) { }
717     ~ (VI) { }
718     ~? (S) { }
719 wakaba 1.1
720 wakaba 1.3 my $ver;
721     my $bad_token;
722    
723     ~ (LIT) {
724     ?lexmode AttributeValueLiteral;
725    
726     ~ (STRING) {
727     lang:Perl ($version => $token.value) {
728     $ver = $version;
729     $bad_token = $token;
730     }
731     }
732    
733     ~ (LIT) {
734     ?lexmode XMLDeclaration;
735     }
736     } (LITA) {
737     ?lexmode AttributeValueLiteralA;
738    
739     ~ (STRING) {
740     lang:Perl ($version => $token.value) {
741     $ver = $version;
742     $bad_token = $token;
743     }
744     }
745    
746     ~ (LITA) {
747     ?lexmode XMLDeclaration;
748     }
749     }
750    
751     lang:Perl : has-error {
752     unless ($ver eq '1.0' or $ver eq '1.1') {
753     my $location;
754     __CODE{xp|get-location-from-token::
755     $token => {$bad_token},
756     $result => {$location},
757     }__;
758     my $continue = __DOMCore:ERROR{xp|wf-unsupported-xml-version::
759     DOMCore|location => {$location},
760 wakaba 1.16 xp|parent => {$self->{doc}},
761 wakaba 1.3 infoset|version => {$ver},
762     xp|error-token => {$bad_token},
763     }__;
764     unless ($continue) {
765     __EXCEPTION{DOMLS|PARSE_ERR}__;
766     }
767     }
768 wakaba 1.16 $self->{doc}-><AS::Document.xmlVersion> ($ver);
769 wakaba 1.3 $self->{xml_version} = $ver;
770     }
771    
772     ~? (S) { }
773 wakaba 1.1 }
774    
775 wakaba 1.3 ~? (Name == 'encoding') {
776     ~? (S) { }
777     ~ (VI) { }
778     ~? (S) { }
779    
780     my $ver;
781     my $bad_token;
782    
783     ~ (LIT) {
784     ?lexmode AttributeValueLiteral;
785    
786     ~ (STRING) {
787     lang:Perl ($version => $token.value) {
788     $ver = $version;
789     $bad_token = $token;
790     }
791     }
792    
793     ~ (LIT) {
794     ?lexmode XMLDeclaration;
795     }
796     } (LITA) {
797     ?lexmode AttributeValueLiteralA;
798    
799     ~ (STRING) {
800     lang:Perl ($version => $token.value) {
801     $ver = $version;
802     $bad_token = $token;
803     }
804     }
805    
806     ~ (LITA) {
807     ?lexmode XMLDeclaration;
808     }
809     }
810    
811     lang:Perl : has-error {
812     unless ($ver =~ /\A[A-Za-z][A-Za-z0-9._-]*\z/) {
813     my $location;
814     __CODE{xp|get-location-from-token::
815     $token => {$bad_token},
816     $result => {$location},
817     }__;
818     my $continue = __DOMCore:ERROR{xp|wf-malformed-enc-name::
819     DOMCore|location => {$location},
820 wakaba 1.16 xp|parent => {$self->{doc}},
821 wakaba 1.3 xp|name => {$ver},
822     xp|error-token => {$bad_token},
823     }__;
824     unless ($continue) {
825     __EXCEPTION{DOMLS|PARSE_ERR}__;
826     }
827     }
828 wakaba 1.16 $self->{doc}-><AS::Document.xmlEncoding> ($ver);
829 wakaba 1.3 }
830    
831     ~? (S) { }
832 wakaba 1.1 }
833 wakaba 1.3
834     ~? (Name == 'standalone') {
835     ~? (S) { }
836     ~ (VI) { }
837     ~? (S) { }
838    
839     my $ver;
840     my $bad_token;
841    
842     ~ (LIT) {
843     ?lexmode AttributeValueLiteral;
844    
845     ~ (STRING) {
846     lang:Perl ($version => $token.value) {
847     $ver = $version;
848     $bad_token = $token;
849     }
850     }
851    
852     ~ (LIT) {
853     ?lexmode XMLDeclaration;
854     }
855     } (LITA) {
856     ?lexmode AttributeValueLiteralA;
857    
858     ~ (STRING) {
859     lang:Perl ($version => $token.value) {
860     $ver = $version;
861     $bad_token = $token;
862     }
863     }
864 wakaba 1.1
865 wakaba 1.3 ~ (LITA) {
866     ?lexmode XMLDeclaration;
867     }
868     }
869    
870     lang:Perl : has-error {
871     unless ($ver eq 'yes' or $ver eq 'no') {
872     my $location;
873     __CODE{xp|get-location-from-token::
874     $token => {$bad_token},
875     $result => {$location},
876     }__;
877     my $continue = __DOMCore:ERROR{xp|wf-malformed-xml-standalone::
878     DOMCore|location => {$location},
879 wakaba 1.16 xp|parent => {$self->{doc}},
880 wakaba 1.3 xp|name => {$ver},
881     xp|error-token => {$bad_token},
882     }__;
883     unless ($continue) {
884     __EXCEPTION{DOMLS|PARSE_ERR}__;
885     }
886     }
887 wakaba 1.13 if ($ver eq 'yes') {
888 wakaba 1.16 $self->{doc}-><AS::Document.xmlStandalone> (true);
889 wakaba 1.13 $self->{standalone} = true;
890     }
891 wakaba 1.3 }
892    
893     ~? (S) { }
894     }
895    
896 wakaba 1.16 ~ (PIC1) {
897     lang:Perl {
898     $self->{entity}->[-1]->{no_xml11_eol} = false;
899     }
900     } else {
901     lang:Perl {
902     $self->{entity}->[-1]->{no_xml11_eol} = false;
903     }
904     }
905    
906     // ~ (PIC2) { }
907 wakaba 1.3 } // _XMLDeclaration_
908 wakaba 1.1
909     /*
910     Comment Declaration
911    
912     Comment := '<!--' *(Char - '-' / '-' (Char - '-'))
913     '-->' ;; [15]
914 wakaba 1.4 */
915 wakaba 1.1 rule _CommentDeclaration_ ($doc, $parent) {
916     ?lexmode 'CommentDeclaration';
917    
918     ~? (STRING) {
919     lang:Perl ($data => $token.value) {
920     my $com = $doc-><M::Document.createComment> ($data);
921     $parent-><M::Node.appendChild> ($com);
922     }
923     } else {
924     lang:Perl {
925     my $com = $doc-><M::Document.createComment> ('');
926     $parent-><M::Node.appendChild> ($com);
927     }
928     }
929    
930     ~ (COM) {
931     ?lexmode MarkupDeclaration;
932     } else {
933     ?lexmode MarkupDeclaration;
934     }
935    
936     // ~ (MDC) { }
937 wakaba 1.4 } // _CommentDeclaration
938 wakaba 1.15
939     rule _CommentDeclarationDTD {
940     ?lexmode CommentDeclaration;
941 wakaba 1.4
942     ~? (STRING) {
943     //
944     }
945    
946     ~ (COM) {
947     ?lexmode MarkupDeclaration;
948     } else {
949     ?lexmode MarkupDeclaration;
950     }
951    
952     ~ (MDC) {
953     ?lexmode DTD;
954     } else {
955     ?lexmode DTD;
956     }
957     } // _CommentDeclarationDTD
958    
959 wakaba 1.1 /*
960     Processing Instruction
961    
962     PI := '<?' PITarget [S *Char - *Char '?>' *Char]
963     '?>' ;; [16]
964     */
965     rule _ProcessingInstruction_ ($doc, $parent) {
966     ?lexmode 'PIName';
967    
968     my $pi;
969    
970     ~ (Name) {
971 wakaba 1.3 lang:Perl ($name => $token.value) : has-error {
972 wakaba 1.1 if (lc $name eq 'xml') {
973 wakaba 1.3 my $location;
974     __CODE{xp|get-location-from-token::
975     $token => {$token},
976     $result => {$location},
977     }__;
978     my $continue = __DOMCore:ERROR{xp|wf-pi-target-is-xml::
979     xp|name => {$name},
980     DOMCore|location => {$location},
981     xp|parent => {$parent},
982     }__;
983     unless ($continue) {
984     __EXCEPTION{DOMLS|PARSE_ERR::
985     }__;
986     }
987 wakaba 1.1 }
988     ## TODO: Namespace well-formedness
989     $pi = $doc-><M::Document.createProcessingInstruction>
990     ($name);
991     }
992 wakaba 1.14 } else {
993     lang:Perl {
994     $pi = $doc-><M::Document.createProcessingInstruction> ('#INVALID');
995     }
996 wakaba 1.1 }
997    
998 wakaba 1.14 ~? (S) {
999 wakaba 1.1 ?lexmode 'PIData';
1000    
1001     my $tdata;
1002    
1003     ~? (DATA) {
1004     lang:Perl ($data => $token.value) {
1005     $tdata = $data;
1006     }
1007     } else {
1008     lang:Perl {
1009     $tdata = '';
1010     }
1011     }
1012    
1013     lang:Perl {
1014     $pi-><AS::Node.nodeValue> ($tdata);
1015     }
1016     }
1017    
1018     lang:Perl {
1019     $parent-><M::Node.appendChild> ($pi);
1020     }
1021    
1022     // ~ (PIC) { }
1023     } // _ProcessingInstruction_
1024 wakaba 1.4
1025 wakaba 1.6 /*
1026     Processing instruction in DTD
1027     */
1028     rule _ProcessingInstructionDTD ($doc, $doctype) {
1029 wakaba 1.4 ?lexmode 'PIName';
1030 wakaba 1.6
1031     my $pi;
1032 wakaba 1.4
1033     ~ (Name) {
1034 wakaba 1.6 lang:Perl ($name => $token.value) : has-error {
1035     if (lc $name eq 'xml') {
1036     my $location;
1037     __CODE{xp|get-location-from-token::
1038     $token => {$token},
1039     $result => {$location},
1040     }__;
1041     my $continue = __DOMCore:ERROR{xp|wf-pi-target-is-xml::
1042     xp|name => {$name},
1043     DOMCore|location => {$location},
1044     xp|parent => {$doctype},
1045     }__;
1046     unless ($continue) {
1047     __EXCEPTION{DOMLS|PARSE_ERR::
1048     }__;
1049     }
1050     }
1051     ## TODO: Namespace well-formedness
1052     $pi = $doc-><M::Document.createProcessingInstruction>
1053     ($name);
1054     }
1055 wakaba 1.14 } else {
1056     lang:Perl {
1057     $pi = $doc-><M::Document.createProcessingInstruction> ('#INVALID');
1058     }
1059 wakaba 1.4 }
1060    
1061 wakaba 1.14 ~? (S) {
1062 wakaba 1.4 ?lexmode 'PIData';
1063    
1064 wakaba 1.6 my $tdata;
1065    
1066 wakaba 1.4 ~? (DATA) {
1067 wakaba 1.6 lang:Perl ($data => $token.value) {
1068     $tdata = $data;
1069     }
1070     } else {
1071     lang:Perl {
1072     $tdata = '';
1073     }
1074     }
1075    
1076     lang:Perl {
1077     $pi-><AS::Node.nodeValue> ($tdata);
1078 wakaba 1.4 }
1079     }
1080    
1081 wakaba 1.6 lang:Perl {
1082     $doctype-><M::Node.appendChild> ($pi);
1083     }
1084    
1085 wakaba 1.4 ~ (PIC) {
1086     ?lexmode DTD;
1087     } else {
1088     ?lexmode DTD;
1089     }
1090     } // _ProcessingInstructionDTD
1091 wakaba 1.1
1092     /*
1093     Element content parsing mode
1094    
1095     element := EmptyElemTag /
1096     STag content ETag ;; [39]
1097     content := (CharData / element / Reference / CDSect /
1098     PI / Comment) ;; [43]
1099     */
1100 wakaba 1.6 rule Element_ ($doc, $parent, $ns) : standalone {
1101 wakaba 1.1 ?lexmode 'ElementContent';
1102    
1103     my $node; // Current "parent" node
1104     my $nodes; // Node stack (w/o $current_node)
1105     my $type; // Current "parent" element type QName
1106     my $types; // Element type stack (w/o $current_type)
1107 wakaba 1.6 //my $ns; // Current in-scope namespace bindings
1108 wakaba 1.1 my $nses; // Namespace binding stack (w/o $current_ns)
1109    
1110     lang:Perl {
1111     $node = $parent;
1112     $nodes = [];
1113     $type = '';
1114     $types = [];
1115 wakaba 1.6 $ns ||= {
1116 wakaba 1.1 xml => <Q::xml:>,
1117     xmlns => <Q::xmlns:>,
1118     };
1119     $nses = [];
1120     }
1121    
1122     ~* : name => CONTENT
1123     (CharData) {
1124     // Character data
1125     lang:Perl ($data => $token.value) {
1126     $node-><M::Node.appendChild>
1127     ($doc-><M::Document.createTextNode> ($data));
1128     }
1129     } (STAGO) {
1130     // Start tag or empty element tag
1131    
1132     ?lexmode 'StartTag';
1133    
1134     ~ (Name) {
1135     my $attrs;
1136     lang:Perl ($name => $token.value) {
1137     push @{$types}, $type;
1138     $type = $name;
1139     $attrs = {};
1140     }
1141    
1142     ~? (S) {
1143     &AttributeSpecificationList
1144     ($doc => $doc, $attrs => $attrs);
1145     }
1146    
1147     my $el;
1148 wakaba 1.9
1149     /*
1150     Note that this implementation does not perform
1151     attribute value tokenization (but does white space
1152     normalization common to attribute types) and
1153     construct the tree as is. DOM Level 3 Core spec
1154     is unclear on this point. With tokenization,
1155     entity references cannot be preserved.
1156    
1157     The manakai Node.nodeValue and Attr.value attributes
1158     do tokenization according to attribute types.
1159     */
1160    
1161     /*
1162     ISSUE: Should |xml:id| attribute be typed?
1163     */
1164 wakaba 1.1
1165     lang:Perl {
1166     push @{$nses}, $ns;
1167     $ns = {%$ns};
1168    
1169     my %gattr;
1170     my %lattr;
1171     for my $atqname (keys %$attrs) {
1172     my ($pfx, $lname) = split /:/, $atqname;
1173 wakaba 1.9 $attrs->{$atqname}->{def} = $self->{attr}->{$type}->{$atqname};
1174 wakaba 1.1 if (defined $lname) { ## Global attribute
1175     ## TODO: Namespace well-formedness (lname is NCName)
1176     if ($pfx eq 'xmlns') {
1177     my $nsuri = $attrs->{$atqname}->{value};
1178     if ($lname eq 'xml' and
1179     $nsuri ne <Q::xml:>) {
1180     ## TODO: error
1181     } elsif ($lname eq 'xmlns') {
1182     ## TODO: error
1183     }
1184     if ($nsuri eq '') {
1185     ## TODO: error in XML 1.0
1186     } elsif ($nsuri eq <Q::xml:> and
1187     $lname ne 'xml') {
1188     ## TODO: error
1189     } elsif ($nsuri eq <Q::xmlns:>) {
1190     ## TODO: error
1191     }
1192     $ns->{$lname} = $attrs->{$atqname}->{value};
1193 wakaba 1.9 if ($attrs->{$atqname}->{def}) {
1194     my $dt = $attrs->{$atqname}->{def}-><AG::ATDef.declaredType>;
1195     if ({
1196     <C::ATDef.ID_ATTR> => true,
1197     <C::ATDef.IDREF_ATTR> => true,
1198     <C::ATDef.IDREFS_ATTR> => true,
1199     <C::ATDef.ENTITY_ATTR> => true,
1200     <C::ATDef.ENTITIES_ATTR> => true,
1201     <C::ATDef.NMTOKEN_ATTR> => true,
1202     <C::ATDef.NMTOKENS_ATTR> => true,
1203     <C::ATDef.NOTATION_ATTR> => true,
1204     <C::ATDef.ENUMERATION_ATTR> => true,
1205     }->{$dt}) {
1206     ## Tokenization (XML 1 3.3.3)
1207     for ($ns->{$lname}) {
1208     s/^\x20+//;
1209     s/\x20+\z//;
1210     s/\x20+/ /g;
1211     }
1212     }
1213     }
1214 wakaba 1.1 delete $ns->{$lname} unless length $ns->{$lname};
1215     } elsif ($pfx eq '') {
1216     ## TODO: pfx is not NCName error
1217     } else {
1218     if ($gattr{$pfx}->{$lname}) {
1219     ## TODO: Namespace well-formedness error
1220     }
1221     }
1222     $gattr{$pfx}->{$lname} = $attrs->{$atqname};
1223     } else { ## Local attribute
1224     if ($pfx eq 'xmlns') {
1225     $ns->{''} = $attrs->{xmlns}->{value};
1226 wakaba 1.9 if ($attrs->{$atqname}->{def}) {
1227     my $dt = $attrs->{$atqname}->{def}-><AG::ATDef.declaredType>;
1228     if ({
1229     <C::ATDef.ID_ATTR> => true,
1230     <C::ATDef.IDREF_ATTR> => true,
1231     <C::ATDef.IDREFS_ATTR> => true,
1232     <C::ATDef.ENTITY_ATTR> => true,
1233     <C::ATDef.ENTITIES_ATTR> => true,
1234     <C::ATDef.NMTOKEN_ATTR> => true,
1235     <C::ATDef.NMTOKENS_ATTR> => true,
1236     <C::ATDef.NOTATION_ATTR> => true,
1237     <C::ATDef.ENUMERATION_ATTR> => true,
1238     }->{$dt}) {
1239     ## Tokenization (XML 1 3.3.3)
1240     for ($ns->{''}) {
1241     s/^\x20+//;
1242     s/\x20+\z//;
1243     s/\x20+/ /g;
1244     }
1245     }
1246     }
1247 wakaba 1.1 delete $ns->{''} unless length $ns->{''};
1248     } else {
1249     $lattr{$pfx} = $attrs->{$atqname};
1250     }
1251     }
1252     }
1253    
1254     my ($pfx, $lname) = split /:/, $type;
1255     my $nsuri;
1256     ## TODO: lname is NCName?
1257     if (defined $lname) { ## Prefixed namespace
1258     if ($pfx eq '') {
1259     ## TODO: pfx is not NCName error
1260     }
1261     if (defined $ns->{$pfx}) {
1262     $nsuri = $ns->{$pfx};
1263     } else {
1264     ## TODO: namespace ill-formed
1265     }
1266     } else { ## Default namespace
1267     $nsuri = $ns->{''};
1268     }
1269    
1270     $el = $doc-><M::Document.createElementNS>
1271     ($nsuri, $type);
1272    
1273     if ($attrs->{xmlns}) {
1274     my $attr = $doc-><M::Document.createAttributeNS>
1275     (<Q::xmlns:>, 'xmlns');
1276     for (@{$attrs->{xmlns}->{nodes}}) {
1277     $attr-><M::Node.appendChild> ($_);
1278     }
1279 wakaba 1.9 if ($attrs->{xmlns}->{def}) {
1280     __CODE{t|setAttrType::
1281     $attr => $attr,
1282     $type => {$attrs->{xmlns}->{def}-><AG::ATDef.declaredType>},
1283     }__;
1284     }
1285 wakaba 1.1 $el-><M::Element.setAttributeNodeNS> ($attr);
1286     }
1287    
1288     for my $lname (keys %lattr) {
1289     my $attr = $doc-><M::Document.createAttributeNS>
1290     (null, $lname);
1291     for (@{$lattr{$lname}->{nodes}}) {
1292     $attr-><M::Node.appendChild> ($_);
1293     }
1294 wakaba 1.9 if ($attrs->{$lname}->{def}) {
1295     __CODE{t|setAttrType::
1296     $attr => $attr,
1297     $type => {$attrs->{$lname}->{def}-><AG::ATDef.declaredType>},
1298     }__;
1299     }
1300 wakaba 1.1 $el-><M::Element.setAttributeNodeNS> ($attr);
1301     }
1302    
1303     for my $pfx (keys %gattr) {
1304     for my $lname (keys %{$gattr{$pfx}}) {
1305     my $attr = $doc-><M::Document.createAttributeNS>
1306     ($ns->{$pfx}, $pfx.':'.$lname);
1307     for (@{$gattr{$pfx}->{$lname}->{nodes}}) {
1308     $attr-><M::Node.appendChild> ($_);
1309     }
1310 wakaba 1.9 if ($attrs->{$pfx}->{$lname}->{def}) {
1311     __CODE{t|setAttrType::
1312     $attr => $attr,
1313     $type => {$attrs->{$pfx}->{$lname}
1314     ->{def}-><AG::ATDef.declaredType>},
1315     }__;
1316     }
1317 wakaba 1.1 $el-><M::Element.setAttributeNodeNS> ($attr);
1318     }
1319     }
1320    
1321     $node-><M::Node.appendChild> ($el);
1322     }
1323    
1324     ~ (TAGC) {
1325     lang:Perl {
1326     push @{$nodes}, $node;
1327     $node = $el;
1328     }
1329     ?lexmode ElementContent;
1330 wakaba 1.6 } (NESTC) {
1331     my $is_docel;
1332 wakaba 1.1 lang:Perl {
1333     $ns = pop @{$nses};
1334     $type = pop @{$types};
1335 wakaba 1.6 $is_docel = (@{$types} == 0);
1336     }
1337    
1338     if-true ($is_docel) {
1339     return;
1340     }
1341    
1342     ~ (TAGC) {
1343     ?lexmode ElementContent;
1344     } else {
1345     ?lexmode ElementContent;
1346 wakaba 1.1 }
1347     } else {
1348     ?lexmode ElementContent;
1349     }
1350     } else {
1351     ?lexmode ElementContent;
1352     }
1353    
1354     } (ETAGO) {
1355     // End tag
1356    
1357     ?lexmode 'EndTag';
1358    
1359     my $is_docel;
1360    
1361     ~ (Name) {
1362 wakaba 1.3 lang:Perl ($name => $token.value) : has-error {
1363 wakaba 1.1 if ($name eq $type) {
1364     $type = pop @{$types};
1365     if ($type eq '') {
1366     $is_docel = true;
1367     }
1368     $node = pop @{$nodes};
1369     $ns = pop @{$nses};
1370     } else {
1371 wakaba 1.3 my $location;
1372     __CODE{xp|get-location-from-token::
1373     $token => $token,
1374     $result => $location,
1375     }__;
1376     my $continue = __DOMCore:ERROR{xp|wf-element-type-match::
1377     DOMCore:location => {$location},
1378     xp|token => {$token},
1379     xp|expected-element-type => {$type},
1380     xp|actual-element-type => {$name},
1381     xp|node => {$node},
1382     }__;
1383     unless ($continue) {
1384     __EXCEPTION{DOMLS|PARSE_ERR}__;
1385     }
1386 wakaba 1.1 }
1387     }
1388     }
1389    
1390     ~? (S) { }
1391    
1392     if-true ($is_docel) {
1393 wakaba 1.3 lang:Perl : has-error {
1394 wakaba 1.1 if (@{$types}) {
1395 wakaba 1.3 my $location;
1396     __CODE{xp|get-location-from-token::
1397     $token => $token,
1398     $result => $location,
1399     }__;
1400     for my $type (reverse @{$types}) {
1401     my $continue = __DOMCore:ERROR{xp|wf-no-end-tag::
1402     DOMCore:location => {$location},
1403     xp|token => {$token},
1404     xp|expected-element-type => {$type},
1405     xp|node => {$node},
1406     }__;
1407     unless ($continue) {
1408     __EXCEPTION{DOMLS|PARSE_ERR}__;
1409     }
1410     $node = shift @{$nodes};
1411     }
1412 wakaba 1.1 }
1413     }
1414     return;
1415     }
1416    
1417     ~ (TAGC) {
1418     ?lexmode ElementContent;
1419     } else {
1420     ?lexmode 'ElementContent';
1421     }
1422    
1423     } (HCRO) {
1424     &_HexadecimalCharacterReference_
1425     ($doc => $doc, $parent => $node);
1426    
1427     ~ (REFC) {
1428     ?lexmode 'ElementContent';
1429     } else {
1430     ?lexmode ElementContent;
1431     }
1432     } (CRO) {
1433     &_NumericCharacterReference_
1434     ($doc => $doc, $parent => $node);
1435    
1436     ~ (REFC) {
1437     ?lexmode 'ElementContent';
1438     } else {
1439     ?lexmode ElementContent;
1440     }
1441     } (ERO) {
1442 wakaba 1.6 &_GeneralEntityReferenceEC
1443     ($doc => $doc, $parent => $node, $ns => $ns);
1444 wakaba 1.1 } (CDO) {
1445     &_CommentDeclaration_ ($doc => $doc, $parent => $node);
1446    
1447     ~ (MDC) {
1448     ?lexmode ElementContent;
1449     } else {
1450     ?lexmode ElementContent;
1451     }
1452     } (CDSO) {
1453     &_CDATASection_ ($doc => $doc, $parent => $node);
1454    
1455     ~ (MSE) {
1456     ?lexmode 'ElementContent';
1457     } else {
1458     ?lexmode ElementContent;
1459     }
1460     } (PIO) {
1461     &_ProcessingInstruction_ ($doc => $doc, $parent => $node);
1462    
1463     ~ (PIC) {
1464     ?lexmode 'ElementContent';
1465     } else {
1466     ?lexmode ElementContent;
1467     }
1468     }
1469 wakaba 1.3
1470     ~ (#NONE) { }
1471 wakaba 1.1 } // Element_
1472 wakaba 1.11
1473     /*
1474     content := [CharData]
1475     *((element / Reference / CDSect / PI / Comment) [CharData])
1476     */
1477     rule content ($parent, $ns) {
1478     // ?lexmode ElementContent;
1479    
1480     my $doc;
1481     lang:Perl {
1482     $doc = $self->{doc};
1483     }
1484    
1485     ~* (CharData) {
1486     lang:Perl ($data => $token.value) {
1487     $parent-><M::Node.appendChild>
1488     ($self->{doc}-><M::Document.createTextNode> ($data));
1489     }
1490     } (STAGO) {
1491     &Element_ ($doc => $doc, $parent => $parent, $ns => $ns)
1492     : unshift-current-token;
1493     ~ (TAGC) {
1494     ?lexmode ElementContent;
1495     } else {
1496     ?lexmode ElementContent;
1497     }
1498     } (HCRO) {
1499     &_HexadecimalCharacterReference_
1500     ($doc => $doc, $parent => $parent);
1501    
1502     ~ (REFC) {
1503     ?lexmode 'ElementContent';
1504     } else {
1505     ?lexmode ElementContent;
1506     }
1507     } (CRO) {
1508     &_NumericCharacterReference_
1509     ($doc => $doc, $parent => $parent);
1510    
1511     ~ (REFC) {
1512     ?lexmode 'ElementContent';
1513     } else {
1514     ?lexmode ElementContent;
1515     }
1516     } (ERO) {
1517     &_GeneralEntityReferenceEC
1518     ($doc => $doc, $parent => $parent, $ns => $ns);
1519     } (CDO) {
1520     &_CommentDeclaration_ ($doc => $doc, $parent => $parent);
1521    
1522     ~ (MDC) {
1523     ?lexmode ElementContent;
1524     } else {
1525     ?lexmode ElementContent;
1526     }
1527     } (CDSO) {
1528     &_CDATASection_ ($doc => $doc, $parent => $parent);
1529    
1530     ~ (MSE) {
1531     ?lexmode 'ElementContent';
1532     } else {
1533     ?lexmode ElementContent;
1534     }
1535     } (PIO) {
1536     &_ProcessingInstruction_ ($doc => $doc, $parent => $parent);
1537    
1538     ~ (PIC) {
1539     ?lexmode 'ElementContent';
1540     } else {
1541     ?lexmode ElementContent;
1542     }
1543     }
1544     } // content
1545 wakaba 1.1
1546     rule AttributeSpecificationList ($doc, $attrs)
1547     : standalone
1548     {
1549     ?lexmode 'StartTag';
1550    
1551     my $i;
1552     lang:Perl {
1553     $i = 0;
1554     }
1555    
1556     ~* (Name) {
1557     my $atqname;
1558     lang:Perl ($name => $token.value) {
1559     $atqname = $name;
1560     }
1561    
1562     my $vals;
1563 wakaba 1.18 lang:Perl : has-error {
1564 wakaba 1.1 if ($attrs->{$atqname}) {
1565 wakaba 1.3 my $location;
1566     __CODE{xp|get-location-from-token::
1567     $token => $token,
1568     $result => $location,
1569     }__;
1570     my $continue = __DOMCore:ERROR{xp|wf-unique-att-spec::
1571     DOMCore:location => {$location},
1572     xp|token => {$token},
1573     xp|name => {$atqname},
1574     }__;
1575     unless ($continue) {
1576     __EXCEPTION{DOMLS|PARSE_ERR}__;
1577     }
1578 wakaba 1.1 }
1579    
1580     $vals = $attrs->{$atqname} = {
1581     nodes => [],
1582     value => '',
1583     index => $i++,
1584     };
1585     }
1586 wakaba 1.3
1587     ~? (S) { }
1588     ~ (VI) { }
1589     ~? (S) { }
1590 wakaba 1.1
1591     ~ (LIT) {
1592     &_AttributeValueSpecification_
1593     ($doc => $doc, $vals => $vals);
1594    
1595     ~ (LIT) {
1596     ?lexmode StartTag;
1597     } else {
1598     ?lexmode StartTag;
1599     }
1600     } (LITA) {
1601     &_AttributeValueSpecificationA_
1602     ($doc => $doc, $vals => $vals);
1603    
1604     ~ (LITA) {
1605     ?lexmode StartTag;
1606     } else {
1607     ?lexmode StartTag;
1608     }
1609     }
1610     } (S) : separator : terminator? { }
1611     } // AttributeSpecificationList
1612    
1613     rule _AttributeValueSpecification_ ($doc, $vals) {
1614     // ~ (LIT) { }
1615     ?lexmode 'AttributeValueLiteral';
1616    
1617     ~* (STRING) {
1618     lang:Perl ($value => $token.value) {
1619     $value =~ s/[\x09\x0A\x0D]/ /g;
1620     my $text = $doc-><M::Document.createTextNode> ($value);
1621     push @{$vals->{nodes}}, $text;
1622     $vals->{value} .= $value;
1623     }
1624     } (HCRO) {
1625     &_HexadecimalCharacterReferenceV_
1626     ($doc => $doc, $vals => $vals);
1627    
1628     ~ (REFC) {
1629     ?lexmode AttributeValueLiteral;
1630     } else {
1631     ?lexmode AttributeValueLiteral;
1632     }
1633     } (CRO) {
1634     &_NumericCharacterReferenceV_
1635     ($doc => $doc, $vals => $vals);
1636    
1637     ~ (REFC) {
1638     ?lexmode AttributeValueLiteral;
1639     } else {
1640     ?lexmode AttributeValueLiteral;
1641     }
1642     } (ERO) {
1643     // TODO: Attribute value normalization
1644     &_GeneralEntityReferenceV_
1645     ($doc => $doc, $vals => $vals);
1646    
1647     ~ (REFC) {
1648     ?lexmode AttributeValueLiteral;
1649     } else {
1650     ?lexmode AttributeValueLiteral;
1651     }
1652     }
1653    
1654     // ~ (LIT) { } (LITA) { }
1655     } // _AttributeValueSpecification_
1656    
1657     rule _AttributeValueSpecificationA_ ($doc, $vals) {
1658     // ~ (LITA) { }
1659     ?lexmode 'AttributeValueLiteralA';
1660    
1661     ~* (STRING) {
1662     lang:Perl ($value => $token.value) {
1663     $value =~ s/[\x09\x0A\x0D]/ /g;
1664     my $text = $doc-><M::Document.createTextNode> ($value);
1665     push @{$vals->{nodes}}, $text;
1666     $vals->{value} .= $value;
1667     }
1668     } (HCRO) {
1669     &_HexadecimalCharacterReferenceV_
1670     ($doc => $doc, $vals => $vals);
1671    
1672     ~ (REFC) {
1673     ?lexmode AttributeValueLiteralA;
1674     } else {
1675     ?lexmode AttributeValueLiteralA;
1676     }
1677     } (CRO) {
1678     &_NumericCharacterReferenceV_
1679     ($doc => $doc, $vals => $vals);
1680    
1681     ~ (REFC) {
1682     ?lexmode AttributeValueLiteralA;
1683     } else {
1684     ?lexmode AttributeValueLiteralA;
1685     }
1686     } (ERO) {
1687     // TODO: Attribute value normalization
1688     &_GeneralEntityReferenceV_
1689     ($doc => $doc, $vals => $vals);
1690    
1691     ~ (REFC) {
1692     ?lexmode AttributeValueLiteralA;
1693     } else {
1694     ?lexmode AttributeValueLiteralA;
1695     }
1696     }
1697    
1698     // ~ (LITA) { }
1699     } // _AttributeValueSpecificationA_
1700    
1701     /*
1702 wakaba 1.11 Parsing replacement text of an entity referenced in
1703     an attribute value specification.
1704     */
1705     rule AttributeValueLiteralE_ ($parent, $vals)
1706     : recursive
1707     {
1708     // ?lexmode AttributeValueLiteralE;
1709    
1710     ~* (STRING) {
1711     lang:Perl ($value => $token.value) {
1712     $value =~ s/[\x09\x0A\x0D]/ /g;
1713     my $text = $self->{doc}-><M::Document.createTextNode> ($value);
1714     $parent-><M::Node.appendChild> ($text);
1715     $vals->{value} .= $value;
1716     }
1717     } (HCRO) {
1718     &_HexadecimalCharacterReferenceAE_
1719     ($parent => $parent, $vals => $vals);
1720    
1721     ~ (REFC) {
1722     ?lexmode AttributeValueLiteralE;
1723     } else {
1724     ?lexmode AttributeValueLiteralE;
1725     }
1726     } (CRO) {
1727     &_NumericCharacterReferenceAE_
1728     ($parent => $parent, $vals => $vals);
1729    
1730     ~ (REFC) {
1731     ?lexmode AttributeValueLiteralE;
1732     } else {
1733     ?lexmode AttributeValueLiteralE;
1734     }
1735     } (ERO) {
1736     &_GeneralEntityReferenceAE_ ($parent => $parent, $vals => $vals);
1737    
1738     ~ (REFC) {
1739     ?lexmode AttributeValueLiteralE;
1740     } else {
1741     ?lexmode AttributeValueLiteralE;
1742     }
1743 wakaba 1.18 } (#INVALID == '<') {
1744     lang:Perl : has-error {
1745     my $location;
1746     __CODE{xp|get-location-from-token::
1747     $token => $token,
1748     $result => $location,
1749     }__;
1750     my $continue = __DOMCore:ERROR{xp|wf-no-lt-in-attribute-values::
1751     c|location => {$location},
1752     xp|token => {$token},
1753     }__;
1754     unless ($continue) {
1755     __EXCEPTION{DOMLS|PARSE_ERR}__;
1756     }
1757    
1758     my $text = $self->{doc}-><M::Document.createTextNode> ('<');
1759     $parent-><M::Node.appendChild> ($text);
1760     $vals->{value} .= '<';
1761     }
1762 wakaba 1.11 }
1763    
1764     // ~ (#EOF) { }
1765     } // AttributeValueLiteralE_
1766    
1767     /*
1768 wakaba 1.1 CDATA Section Content Parsing Mode
1769     */
1770     rule _CDATASection_ ($doc, $parent) {
1771     ?lexmode 'CDATASectionContent';
1772    
1773     my $cdata;
1774    
1775 wakaba 1.2 ~? (CData) {
1776 wakaba 1.1 lang:Perl ($data => $token.value) {
1777     $cdata = $data;
1778     }
1779     } else {
1780     lang:Perl {
1781     $cdata = '';
1782     }
1783     }
1784    
1785     lang:Perl {
1786     my $cdsect = $doc-><M::Document.createCDATASection>
1787     ($cdata);
1788     $parent-><M::Node.appendChild> ($cdsect);
1789     }
1790    
1791     // ~ (MSE) { }
1792     } // _CDATASection_
1793    
1794     rule _NumericCharacterReference_ ($doc, $parent) {
1795     ?lexmode 'NumericCharacterReference';
1796    
1797     ~ (NUMBER) {
1798 wakaba 1.3 lang:Perl ($num => $token.value) : has-error {
1799     $num += 0;
1800     unless (
1801     ($self->{xml_version} eq '1.0' and
1802     ((0x0020 <= $num and $num <= 0xD7FF) or
1803     (0xE000 <= $num and $num <= 0xFFFD) or
1804     (0x10000 <= $num and $num <= 0x10FFFF) or
1805     $num == 0x9 or $num == 0xA or $num == 0xD)) or
1806     ($self->{xml_version} eq '1.1' and
1807     ((0x0001 <= $num and $num <= 0xD7FF) or
1808     (0xE000 <= $num and $num <= 0xFFFD) or
1809     (0x10000 <= $num and $num <= 0x10FFFF)))
1810     ) {
1811     my $location;
1812     __CODE{xp|get-location-from-token::
1813     $token => $token,
1814     $result => $location,
1815     }__;
1816     my $continue = __DOMCore:ERROR{xp|wf-legal-character::
1817     DOMCore:location => {$location},
1818     xp|token => {$token},
1819     xp|character-number => {$num},
1820     xp|parent => {$parent},
1821     }__;
1822     unless ($continue) {
1823     __EXCEPTION{DOMLS|PARSE_ERR}__;
1824     }
1825     }
1826     my $ncr = $doc-><M::Document.createTextNode> (chr $num);
1827 wakaba 1.1 $parent-><M::Node.appendChild> ($ncr);
1828     }
1829     }
1830    
1831     // ~ (REFC) { }
1832     } // _NumericCharacterReference_
1833    
1834     rule _NumericCharacterReferenceV_ ($doc, $vals) {
1835     ?lexmode 'NumericCharacterReference';
1836    
1837     ~ (NUMBER) {
1838 wakaba 1.3 lang:Perl ($num => $token.value) : has-error {
1839     $num += 0;
1840     unless (
1841     ($self->{xml_version} eq '1.0' and
1842     ((0x0020 <= $num and $num <= 0xD7FF) or
1843     (0xE000 <= $num and $num <= 0xFFFD) or
1844     (0x10000 <= $num and $num <= 0x10FFFF) or
1845     $num == 0x9 or $num == 0xA or $num == 0xD)) or
1846     ($self->{xml_version} eq '1.1' and
1847     ((0x0001 <= $num and $num <= 0xD7FF) or
1848     (0xE000 <= $num and $num <= 0xFFFD) or
1849     (0x10000 <= $num and $num <= 0x10FFFF)))
1850     ) {
1851     my $location;
1852     __CODE{xp|get-location-from-token::
1853     $token => $token,
1854     $result => $location,
1855     }__;
1856     my $continue = __DOMCore:ERROR{xp|wf-legal-character::
1857     DOMCore:location => {$location},
1858     xp|token => {$token},
1859     xp|character-number => {$num},
1860     }__;
1861     unless ($continue) {
1862     __EXCEPTION{DOMLS|PARSE_ERR}__;
1863     }
1864     }
1865 wakaba 1.1 my $ncr = $doc-><M::Document.createTextNode>
1866 wakaba 1.9 (my $char = chr $num);
1867 wakaba 1.1 push @{$vals->{nodes}}, $ncr;
1868     $vals->{value} .= $char;
1869     }
1870     }
1871    
1872     // ~ (REFC) { }
1873     } // _NumericCharacterReferenceV_
1874    
1875 wakaba 1.11 /*
1876     Numeric character reference in the replacement text
1877     of the entity referenced in an attribute value specification
1878     */
1879     rule _NumericCharacterReferenceAE_ ($parent, $vals)
1880     {
1881     ?lexmode NumericCharacterReference;
1882    
1883     ~ (NUMBER) {
1884     lang:Perl ($num => $token.value) : has-error {
1885     $num += 0;
1886     unless (
1887     ($self->{xml_version} eq '1.0' and
1888     ((0x0020 <= $num and $num <= 0xD7FF) or
1889     (0xE000 <= $num and $num <= 0xFFFD) or
1890     (0x10000 <= $num and $num <= 0x10FFFF) or
1891     $num == 0x9 or $num == 0xA or $num == 0xD)) or
1892     ($self->{xml_version} eq '1.1' and
1893     ((0x0001 <= $num and $num <= 0xD7FF) or
1894     (0xE000 <= $num and $num <= 0xFFFD) or
1895     (0x10000 <= $num and $num <= 0x10FFFF)))
1896     ) {
1897     my $location;
1898     __CODE{xp|get-location-from-token::
1899     $token => $token,
1900     $result => $location,
1901     }__;
1902     my $continue = __DOMCore:ERROR{xp|wf-legal-character::
1903     DOMCore:location => {$location},
1904     xp|token => {$token},
1905     xp|character-number => {$num},
1906     }__;
1907     unless ($continue) {
1908     __EXCEPTION{DOMLS|PARSE_ERR}__;
1909     }
1910     }
1911     my $ncr = $self->{doc}-><M::Document.createTextNode>
1912     (my $char = chr $num);
1913     $parent-><M::Node.appendChild> ($ncr);
1914     $vals->{value} .= $char;
1915     }
1916     }
1917    
1918     // ~ (REFC) { }
1919     } // _NumericCharacterReferenceAE_
1920    
1921     rule _NumericCharacterReferenceEV_ ($vals)
1922     {
1923     ?lexmode 'NumericCharacterReference';
1924    
1925     ~ (NUMBER) {
1926     lang:Perl ($num => $token.value) : has-error {
1927     $num += 0;
1928     unless (
1929     ($self->{xml_version} eq '1.0' and
1930     ((0x0020 <= $num and $num <= 0xD7FF) or
1931     (0xE000 <= $num and $num <= 0xFFFD) or
1932     (0x10000 <= $num and $num <= 0x10FFFF) or
1933     $num == 0x9 or $num == 0xA or $num == 0xD)) or
1934     ($self->{xml_version} eq '1.1' and
1935     ((0x0001 <= $num and $num <= 0xD7FF) or
1936     (0xE000 <= $num and $num <= 0xFFFD) or
1937     (0x10000 <= $num and $num <= 0x10FFFF)))
1938     ) {
1939     my $location;
1940     __CODE{xp|get-location-from-token::
1941     $token => $token,
1942     $result => $location,
1943     }__;
1944     my $continue = __DOMCore:ERROR{xp|wf-legal-character::
1945     DOMCore:location => {$location},
1946     xp|token => {$token},
1947     xp|character-number => {$num},
1948     }__;
1949     unless ($continue) {
1950     __EXCEPTION{DOMLS|PARSE_ERR}__;
1951     }
1952     }
1953     push @{$vals}, chr $num;
1954     }
1955     }
1956    
1957     // ~ (REFC) { }
1958     } // _NumericCharacterReferenceEV_
1959    
1960 wakaba 1.1 rule _HexadecimalCharacterReference_ ($doc, $parent) {
1961     ?lexmode 'HexadecimalCharacterReference';
1962    
1963     ~ (Hex) {
1964 wakaba 1.9 lang:Perl ($v => $token.value) : has-error {
1965     my $num = hex $v;
1966 wakaba 1.3 unless (
1967     ($self->{xml_version} eq '1.0' and
1968     ((0x0020 <= $num and $num <= 0xD7FF) or
1969     (0xE000 <= $num and $num <= 0xFFFD) or
1970     (0x10000 <= $num and $num <= 0x10FFFF) or
1971     $num == 0x9 or $num == 0xA or $num == 0xD)) or
1972     ($self->{xml_version} eq '1.1' and
1973     ((0x0001 <= $num and $num <= 0xD7FF) or
1974     (0xE000 <= $num and $num <= 0xFFFD) or
1975     (0x10000 <= $num and $num <= 0x10FFFF)))
1976     ) {
1977     my $location;
1978     __CODE{xp|get-location-from-token::
1979     $token => $token,
1980     $result => $location,
1981     }__;
1982     my $continue = __DOMCore:ERROR{xp|wf-legal-character::
1983     DOMCore:location => {$location},
1984     xp|token => {$token},
1985     xp|character-number => {$num},
1986     xp|parent => {$parent},
1987     }__;
1988     unless ($continue) {
1989     __EXCEPTION{DOMLS|PARSE_ERR}__;
1990     }
1991     }
1992 wakaba 1.1 my $ncr = $doc-><M::Document.createTextNode>
1993 wakaba 1.9 (chr $num);
1994 wakaba 1.1 $parent-><M::Node.appendChild> ($ncr);
1995     }
1996     }
1997    
1998     // ~ (REFC) { }
1999     } // _HexadecimalCharacterReference_
2000    
2001 wakaba 1.3 rule _HexadecimalCharacterReferenceV_ ($doc, $vals) {
2002 wakaba 1.1 ?lexmode 'HexadecimalCharacterReference';
2003    
2004     ~ (Hex) {
2005 wakaba 1.9 lang:Perl ($v => $token.value) : has-error {
2006     my $num = hex $v;
2007 wakaba 1.3 unless (
2008     ($self->{xml_version} eq '1.0' and
2009     ((0x0020 <= $num and $num <= 0xD7FF) or
2010     (0xE000 <= $num and $num <= 0xFFFD) or
2011     (0x10000 <= $num and $num <= 0x10FFFF) or
2012     $num == 0x9 or $num == 0xA or $num == 0xD)) or
2013     ($self->{xml_version} eq '1.1' and
2014     ((0x0001 <= $num and $num <= 0xD7FF) or
2015     (0xE000 <= $num and $num <= 0xFFFD) or
2016     (0x10000 <= $num and $num <= 0x10FFFF)))
2017     ) {
2018     my $location;
2019     __CODE{xp|get-location-from-token::
2020     $token => $token,
2021     $result => $location,
2022     }__;
2023     my $continue = __DOMCore:ERROR{xp|wf-legal-character::
2024     DOMCore:location => {$location},
2025     xp|token => {$token},
2026     xp|character-number => {$num},
2027     }__;
2028     unless ($continue) {
2029     __EXCEPTION{DOMLS|PARSE_ERR}__;
2030     }
2031     }
2032 wakaba 1.1 my $ncr = $doc-><M::Document.createTextNode>
2033 wakaba 1.9 (my $char = chr $num);
2034 wakaba 1.1 push @{$vals->{nodes}}, $ncr;
2035     $vals->{value} .= $char;
2036     }
2037     }
2038    
2039     // ~ (REFC) { }
2040 wakaba 1.11 } // _HexadecimalCharacterReferenceV_
2041    
2042     /*
2043     Hexadecimal character reference in the replacement text
2044     of the entity referenced in an attribute value literal
2045     */
2046     rule _HexadecimalCharacterReferenceAE_ ($parent, $vals)
2047     {
2048     ?lexmode HexadecimalCharacterReference;
2049    
2050     ~ (Hex) {
2051     lang:Perl ($v => $token.value) : has-error {
2052     my $num = hex $v;
2053     unless (
2054     ($self->{xml_version} eq '1.0' and
2055     ((0x0020 <= $num and $num <= 0xD7FF) or
2056     (0xE000 <= $num and $num <= 0xFFFD) or
2057     (0x10000 <= $num and $num <= 0x10FFFF) or
2058     $num == 0x9 or $num == 0xA or $num == 0xD)) or
2059     ($self->{xml_version} eq '1.1' and
2060     ((0x0001 <= $num and $num <= 0xD7FF) or
2061     (0xE000 <= $num and $num <= 0xFFFD) or
2062     (0x10000 <= $num and $num <= 0x10FFFF)))
2063     ) {
2064     my $location;
2065     __CODE{xp|get-location-from-token::
2066     $token => $token,
2067     $result => $location,
2068     }__;
2069     my $continue = __DOMCore:ERROR{xp|wf-legal-character::
2070     DOMCore:location => {$location},
2071     xp|token => {$token},
2072     xp|character-number => {$num},
2073     }__;
2074     unless ($continue) {
2075     __EXCEPTION{DOMLS|PARSE_ERR}__;
2076     }
2077     }
2078     my $ncr = $self->{doc}-><M::Document.createTextNode>
2079     (my $char = chr $num);
2080     $parent-><M::Node.appendChild> ($ncr);
2081     $vals->{value} .= $char;
2082     }
2083     }
2084    
2085     // ~ (REFC) { }
2086     } // _HexadecimalCharacterReferenceAE_
2087    
2088     rule _HexadecimalCharacterReferenceEV_ ($vals) {
2089     ?lexmode HexadecimalCharacterReference;
2090    
2091     ~ (Hex) {
2092     lang:Perl ($v => $token.value) : has-error {
2093     my $num = hex $v;
2094     unless (
2095     ($self->{xml_version} eq '1.0' and
2096     ((0x0020 <= $num and $num <= 0xD7FF) or
2097     (0xE000 <= $num and $num <= 0xFFFD) or
2098     (0x10000 <= $num and $num <= 0x10FFFF) or
2099     $num == 0x9 or $num == 0xA or $num == 0xD)) or
2100     ($self->{xml_version} eq '1.1' and
2101     ((0x0001 <= $num and $num <= 0xD7FF) or
2102     (0xE000 <= $num and $num <= 0xFFFD) or
2103     (0x10000 <= $num and $num <= 0x10FFFF)))
2104     ) {
2105     my $location;
2106     __CODE{xp|get-location-from-token::
2107     $token => $token,
2108     $result => $location,
2109     }__;
2110     my $continue = __DOMCore:ERROR{xp|wf-legal-character::
2111     DOMCore:location => {$location},
2112     xp|token => {$token},
2113     xp|character-number => {$num},
2114     }__;
2115     unless ($continue) {
2116     __EXCEPTION{DOMLS|PARSE_ERR}__;
2117     }
2118     }
2119     push @{$vals}, chr $num;
2120     }
2121     }
2122    
2123     // ~ (REFC) { }
2124     } // _HexadecimalCharacterReferenceEV_
2125    
2126     /*
2127     General entity reference in element's content
2128     */
2129     rule _GeneralEntityReferenceEC ($doc, $parent, $ns)
2130     : recursive
2131     {
2132     ?lexmode 'EntityReference';
2133    
2134     ~ (Name == 'lt') {
2135     lang:Perl {
2136     $parent-><M::Node.appendChild>
2137     ($self->{doc}-><M::Document.createTextNode> ('<'));
2138     }
2139     } (Name == 'gt') {
2140     lang:Perl {
2141     $parent-><M::Node.appendChild>
2142     ($self->{doc}-><M::Document.createTextNode> ('>'));
2143     }
2144     } (Name == 'amp') {
2145     lang:Perl {
2146     $parent-><M::Node.appendChild>
2147     ($self->{doc}-><M::Document.createTextNode> ('&'));
2148     }
2149     } (Name == 'quot') {
2150     lang:Perl {
2151     $parent-><M::Node.appendChild>
2152     ($self->{doc}-><M::Document.createTextNode> ('"'));
2153     }
2154     } (Name == 'apos') {
2155     lang:Perl {
2156     $parent-><M::Node.appendChild>
2157     ($self->{doc}-><M::Document.createTextNode> ("'"));
2158     }
2159     } (Name) {
2160     my $er;
2161 wakaba 1.19 lang:Perl ($name => $token.value) : has-error {
2162 wakaba 1.11 ## TODO: Namespace well-formedness
2163     $er = $doc-><M::Document.createEntityReference>
2164     ($name);
2165 wakaba 1.20 $er-><AS::Node.textContent> ('');
2166     ## NOTE: When document entity (and entities referenced directly
2167     ## or indirectly from it) is parsed, no general entity
2168     ## node have its replacement tree. During general
2169     ## entity node collection construction, however,
2170     ## some entity node has replacement tree.
2171 wakaba 1.11 $parent-><M::Node.appendChild> ($er);
2172 wakaba 1.19
2173     my $ent = $self->{general_entity}->{$name};
2174     if (not $ent) { # no entity declaration
2175     if ($self->{standalone} or not $self->{has_xref}) { # WFC error
2176     my $location;
2177     __CODE{xp|get-location-from-token::
2178     $token => {$token},
2179     $result => {$location},
2180     }__;
2181     my $continue = __DOMCore:ERROR{xp|wf-entity-declared::
2182     xp|error-token => {$token},
2183     c|location => {$location},
2184     xp|name => {$name},
2185     }__;
2186     unless ($continue) {
2187     __EXCEPTION{DOMLS|PARSE_ERR}__;
2188     }
2189     } # Otherwise VC error
2190     push @{$self->{entity}}, <Code::getEmptyEntityState>;
2191 wakaba 1.20 $er-><AS::x|EntityReference.isExpanded> (false);
2192 wakaba 1.19
2193     } else { # there IS entity declaration
2194     if (($self->{standalone} or not $self->{has_xref}) and
2195     $ent->{is_externally_declared} and
2196     not $self->{entity}->[-1]->{is_externally_declared}) {
2197     my $location;
2198     __CODE{xp|get-location-from-token::
2199     $token => {$token},
2200     $result => {$location},
2201     }__;
2202     my $continue = __DOMCore:ERROR{xp|wf-entity-declared::
2203     xp|error-token => {$token},
2204     c|location => {$location},
2205     xp|name => {$name},
2206     }__;
2207     unless ($continue) {
2208     __EXCEPTION{DOMLS|PARSE_ERR}__;
2209     }
2210     }
2211     $er-><AS::x|EntityReference.isExpanded>
2212     ($ent->{has_replacement_text});
2213     push @{$self->{entity}}, <Code::getCopyOfEntityState::
2214 wakaba 1.11 $entity_type = 'general_entity',
2215     $entity_name = $name>;
2216 wakaba 1.19 }
2217 wakaba 1.14 $self->{location} = $self->{entity}->[-1];
2218 wakaba 1.11 push @{$self->{entity_token}}, $self->{token};
2219     $self->{token} = [];
2220     push @{$self->{entity_char}}, $self->{char};
2221     $self->{char} = [];
2222     }
2223    
2224     ?lexmode ElementContent;
2225     &content ($doc => $doc, $parent => $er, $ns => $ns);
2226     ~ (#EOF) { }
2227     lang:Perl {
2228     $self->{token} = pop @{$self->{entity_token}};
2229     $self->{char} = pop @{$self->{entity_char}};
2230     pop @{$self->{entity}};
2231 wakaba 1.14 $self->{location} = $self->{entity}->[-1];
2232 wakaba 1.11 }
2233    
2234     // TODO: Set read-only flag
2235    
2236     ?lexmode EntityReference;
2237     ?requires-next-token;
2238     }
2239    
2240     ~ (REFC) {
2241     ?lexmode ElementContent;
2242     } else {
2243     ?lexmode ElementContent;
2244     }
2245     } // _GeneralEntityReferenceEC
2246    
2247     /*
2248     General entity reference in an attribute value literal
2249     */
2250     rule _GeneralEntityReferenceV_ ($vals) {
2251     ?lexmode EntityReference;
2252    
2253     ~ (Name == 'lt') {
2254     lang:Perl {
2255     push @{$vals->{nodes}}, $self->{doc}-><M::Document.createTextNode>
2256     ('<');
2257     $vals->{value} .= '<';
2258     }
2259     } (Name == 'gt') {
2260     lang:Perl {
2261     push @{$vals->{nodes}}, $self->{doc}-><M::Document.createTextNode>
2262     ('>');
2263     $vals->{value} .= '>';
2264     }
2265     } (Name == 'amp') {
2266     lang:Perl {
2267     push @{$vals->{nodes}}, $self->{doc}-><M::Document.createTextNode>
2268     ('&');
2269     $vals->{value} .= '&';
2270     }
2271     } (Name == 'quot') {
2272     lang:Perl {
2273     push @{$vals->{nodes}}, $self->{doc}-><M::Document.createTextNode>
2274     ('"');
2275     $vals->{value} .= '"';
2276     }
2277     } (Name == 'apos') {
2278     lang:Perl {
2279     push @{$vals->{nodes}}, $self->{doc}-><M::Document.createTextNode>
2280     ("'");
2281     $vals->{value} .= "'";
2282     }
2283     } (Name) {
2284     my $er;
2285 wakaba 1.18 lang:Perl ($name => $token.value) : has-error {
2286 wakaba 1.11 ## TODO: Namespace well-formedness
2287 wakaba 1.18
2288 wakaba 1.11 $er = $self->{doc}-><M::Document.createEntityReference> ($name);
2289 wakaba 1.20 $er-><AS::Node.textContent> ('');
2290     ## NOTE: When document entity (and entities referenced directly
2291     ## or indirectly from it) is parsed, no general entity
2292     ## node have its replacement tree. During general
2293     ## entity node collection construction, however,
2294     ## some entity node has replacement tree.
2295 wakaba 1.19 my $ent = $self->{general_entity}->{$name};
2296 wakaba 1.20 if (not $ent) { # no entity declaration
2297     if ($self->{standalone} or not $self->{has_xref}) { # WFC error
2298     my $location;
2299     __CODE{xp|get-location-from-token::
2300     $token => {$token},
2301     $result => {$location},
2302     }__;
2303     my $continue = __DOMCore:ERROR{xp|wf-entity-declared::
2304     xp|error-token => {$token},
2305     c|location => {$location},
2306     xp|name => {$name},
2307     }__;
2308     unless ($continue) {
2309     __EXCEPTION{DOMLS|PARSE_ERR}__;
2310     }
2311     } # Otherwise VC error
2312     push @{$self->{entity}}, <Code::getEmptyEntityState>;
2313     $er-><AS::x|EntityReference.isExpanded> (false);
2314    
2315     } else { # there IS entity declaration
2316     if (($self->{standalone} or not $self->{has_xref}) and
2317     $ent->{is_externally_declared} and
2318     not $self->{entity}->[-1]->{is_externally_declared}) {
2319     my $location;
2320     __CODE{xp|get-location-from-token::
2321     $token => {$token},
2322     $result => {$location},
2323     }__;
2324     my $continue = __DOMCore:ERROR{xp|wf-entity-declared::
2325     xp|error-token => {$token},
2326     c|location => {$location},
2327     xp|name => {$name},
2328     }__;
2329     unless ($continue) {
2330     __EXCEPTION{DOMLS|PARSE_ERR}__;
2331     }
2332     }
2333    
2334     if ($ent->{is_external_entity}) {
2335     my $location;
2336     __CODE{xp|get-location-from-token::
2337     $token => {$token},
2338     $result => {$location},
2339     }__;
2340     my $continue = __c|ERROR{xp|wf-no-external-entity-references::
2341     xp|error-token => {$token},
2342     c|location => {$location},
2343     xp|name => {$name},
2344     }__;
2345     unless ($continue) {
2346     __EXCEPTION{DOMLS|PARSE_ERR::
2347     }__;
2348     }
2349     } # if external entity
2350    
2351     $er-><AS::x|EntityReference.isExpanded>
2352 wakaba 1.19 ($ent->{has_replacement_text});
2353 wakaba 1.20 push @{$self->{entity}}, <Code::getCopyOfEntityState::
2354 wakaba 1.11 $entity_type = 'general_entity',
2355     $entity_name = $name>;
2356 wakaba 1.20 }
2357     push @{$vals->{nodes}}, $er;
2358 wakaba 1.14 $self->{location} = $self->{entity}->[-1];
2359 wakaba 1.11 push @{$self->{entity_token}}, $self->{token};
2360     $self->{token} = [];
2361     push @{$self->{entity_char}}, $self->{char};
2362     $self->{char} = [];
2363     }
2364    
2365     ?lexmode AttributeValueLiteralE;
2366     &AttributeValueLiteralE_ ($parent => $er, $vals => $vals);
2367     ~ (#EOF) { }
2368     lang:Perl {
2369     $self->{token} = pop @{$self->{entity_token}};
2370     $self->{char} = pop @{$self->{entity_char}};
2371     pop @{$self->{entity}};
2372 wakaba 1.14 $self->{location} = $self->{entity}->[-1];
2373 wakaba 1.11 }
2374    
2375     // TODO: Set read-only flag
2376    
2377     ?lexmode EntityReference;
2378     ?requires-next-token;
2379     }
2380    
2381     // ~ (REFC) { }
2382     } // _GeneralEntityReferenceV_
2383 wakaba 1.1
2384 wakaba 1.6 /*
2385 wakaba 1.11 General entity reference in the replacement text
2386     of the entity referenced in an attribute value literal
2387 wakaba 1.6 */
2388 wakaba 1.11 rule _GeneralEntityReferenceAE_ ($parent, $vals)
2389 wakaba 1.6 {
2390 wakaba 1.11 ?lexmode EntityReference;
2391 wakaba 1.1
2392 wakaba 1.11 ~ (Name == 'lt') {
2393     lang:Perl {
2394     $parent-><M::Node.appendChild>
2395     ($self->{doc}-><M::Document.createTextNode> ('<'));
2396     $vals->{value} .= '<';
2397     }
2398     } (Name == 'gt') {
2399     lang:Perl {
2400     $parent-><M::Node.appendChild>
2401     ($self->{doc}-><M::Document.createTextNode> ('>'));
2402     $vals->{value} .= '>';
2403     }
2404     } (Name == 'amp') {
2405     lang:Perl {
2406     $parent-><M::Node.appendChild>
2407     ($self->{doc}-><M::Document.createTextNode> ('&'));
2408     $vals->{value} .= '&';
2409     }
2410     } (Name == 'quot') {
2411     lang:Perl {
2412     $parent-><M::Node.appendChild>
2413     ($self->{doc}-><M::Document.createTextNode> ('"'));
2414     $vals->{value} .= '"';
2415     }
2416     } (Name == 'apos') {
2417     lang:Perl {
2418     $parent-><M::Node.appendChild>
2419     ($self->{doc}-><M::Document.createTextNode> ("'"));
2420     $vals->{value} .= "'";
2421     }
2422     } (Name) {
2423 wakaba 1.6 my $er;
2424 wakaba 1.1 lang:Perl ($name => $token.value) {
2425     ## TODO: Namespace well-formedness
2426 wakaba 1.18
2427 wakaba 1.11 $er = $self->{doc}-><M::Document.createEntityReference> ($name);
2428 wakaba 1.20 $er-><AS::Node.textContent> ('');
2429     ## NOTE: When document entity (and entities referenced directly
2430     ## or indirectly from it) is parsed, no general entity
2431     ## node have its replacement tree. During general
2432     ## entity node collection construction, however,
2433     ## some entity node has replacement tree.
2434 wakaba 1.19 my $ent = $self->{general_entity}->{$name};
2435 wakaba 1.22 if (not $ent) { # no entity declaration
2436     if ($self->{standalone} or not $self->{has_xref}) { # WFC error
2437     my $location;
2438     __CODE{xp|get-location-from-token::
2439     $token => {$token},
2440     $result => {$location},
2441     }__;
2442     my $continue = __DOMCore:ERROR{xp|wf-entity-declared::
2443     xp|error-token => {$token},
2444     c|location => {$location},
2445     xp|name => {$name},
2446     }__;
2447     unless ($continue) {
2448     __EXCEPTION{DOMLS|PARSE_ERR}__;
2449     }
2450     } # Otherwise VC error
2451     push @{$self->{entity}}, <Code::getEmptyEntityState>;
2452     $er-><AS::x|EntityReference.isExpanded> (false);
2453    
2454     } else { # there IS entity declaration
2455     if (($self->{standalone} or not $self->{has_xref}) and
2456     $ent->{is_externally_declared} and
2457     not $self->{entity}->[-1]->{is_externally_declared}) {
2458     my $location;
2459     __CODE{xp|get-location-from-token::
2460     $token => {$token},
2461     $result => {$location},
2462     }__;
2463     my $continue = __DOMCore:ERROR{xp|wf-entity-declared::
2464     xp|error-token => {$token},
2465     c|location => {$location},
2466     xp|name => {$name},
2467     }__;
2468     unless ($continue) {
2469     __EXCEPTION{DOMLS|PARSE_ERR}__;
2470     }
2471     }
2472    
2473     if ($ent->{is_external_entity}) {
2474     my $location;
2475     __CODE{xp|get-location-from-token::
2476     $token => {$token},
2477     $result => {$location},
2478     }__;
2479     my $continue = __c|ERROR{xp|wf-no-external-entity-references::
2480     xp|error-token => {$token},
2481     c|location => {$location},
2482     xp|name => {$name},
2483     }__;
2484     unless ($continue) {
2485     __EXCEPTION{DOMLS|PARSE_ERR::
2486     }__;
2487     }
2488     } # if external entity
2489    
2490     $er-><AS::x|EntityReference.isExpanded>
2491 wakaba 1.19 ($ent->{has_replacement_text});
2492 wakaba 1.22 push @{$self->{entity}}, <Code::getCopyOfEntityState::
2493 wakaba 1.6 $entity_type = 'general_entity',
2494     $entity_name = $name>;
2495 wakaba 1.22 }
2496     $parent-><M::Node.appendChild> ($er);
2497 wakaba 1.14 $self->{location} = $self->{entity}->[-1];
2498 wakaba 1.6 push @{$self->{entity_token}}, $self->{token};
2499     $self->{token} = [];
2500     push @{$self->{entity_char}}, $self->{char};
2501     $self->{char} = [];
2502     }
2503    
2504 wakaba 1.11 ?lexmode AttributeValueLiteralE;
2505     &AttributeValueLiteralE_ ($parent => $er, $vals => $vals);
2506 wakaba 1.6 ~ (#EOF) { }
2507     lang:Perl {
2508     $self->{token} = pop @{$self->{entity_token}};
2509     $self->{char} = pop @{$self->{entity_char}};
2510     pop @{$self->{entity}};
2511 wakaba 1.14 $self->{location} = $self->{entity}->[-1];
2512 wakaba 1.6 }
2513    
2514 wakaba 1.11 // TODO: Set read-only flag
2515    
2516 wakaba 1.6 ?lexmode EntityReference;
2517     ?requires-next-token;
2518 wakaba 1.1 }
2519    
2520     // ~ (REFC) { }
2521 wakaba 1.11 } // _GeneralEntityReferenceAE_
2522 wakaba 1.6
2523     /*
2524     General entity reference in literal entity value
2525     */
2526 wakaba 1.11 rule _GeneralEntityReferenceEV_ ($vals) {
2527 wakaba 1.6 ?lexmode 'EntityReference';
2528    
2529     ~ (Name) {
2530     lang:Perl ($name => $token.value) {
2531     ## TODO: Namespace well-formedness
2532     ## TODO: Entity declared constraints
2533     push @$vals, $name;
2534     }
2535     }
2536 wakaba 1.11
2537     // No expansion
2538 wakaba 1.6
2539     // ~ (REFC) { }
2540     } // _GeneralEntityReferenceEV_
2541 wakaba 1.1
2542     /*
2543 wakaba 1.4 Document Type Declaration
2544 wakaba 1.1 */
2545 wakaba 1.4 rule _DocumentTypeDeclaration_ ($doc) {
2546     ?lexmode MarkupDeclaration;
2547    
2548     ~ (Name == 'DOCTYPE') { }
2549    
2550     ~ (S) { }
2551    
2552     // Document type name
2553 wakaba 1.6 my $name;
2554 wakaba 1.4 ~ (Name) {
2555 wakaba 1.6 lang:Perl ($v => $token.value) {
2556     $name = $v;
2557     }
2558     }
2559 wakaba 1.17
2560     my $node;
2561     my $decl;
2562 wakaba 1.6 lang:Perl {
2563 wakaba 1.11 $self->{docx} = $self->{doc}
2564     -><M::Node.getFeature> (<Q::fe:XDoctype>, '3.0');
2565     $node = $self->{docx}-><M::DocumentXDoctype.createDocumentTypeDefinition>
2566     ($name);
2567 wakaba 1.17 $decl = $self->{dtdecl} = $node-><M::Node.getFeature>
2568     (<Q::fe:XDoctypeDeclaration>, '3.0');
2569 wakaba 1.4 }
2570    
2571     ~? (S) {
2572     ~? (Name == 'PUBLIC') {
2573     ~ (S) { }
2574    
2575 wakaba 1.17 &PubidLiteral ($decl => $decl);
2576 wakaba 1.4
2577     ~ (S) { }
2578    
2579 wakaba 1.17 &SystemLiteral ($decl => $decl);
2580 wakaba 1.4
2581     ~? (S) { }
2582 wakaba 1.19
2583     lang:Perl {
2584     $self->{has_xref} = true;
2585     }
2586 wakaba 1.4 } (Name == 'SYSTEM') {
2587     ~ (S) { }
2588    
2589 wakaba 1.17 &SystemLiteral ($decl => $decl);
2590 wakaba 1.4
2591     ~? (S) { }
2592 wakaba 1.19
2593     lang:Perl {
2594     $self->{has_xref} = true;
2595     }
2596 wakaba 1.4 }
2597     }
2598 wakaba 1.17
2599 wakaba 1.11 lang:Perl {
2600     $self->{dtdef} = $node;
2601 wakaba 1.21 $self->{doc}-><M::Node.appendChild> ($node);
2602     $self->{doc_cfg}-><M::c|DOMConfiguration.setParameter>
2603     ('schema-type' => <Q::xml-dtd:>);
2604     ## ISSUE: Should default schema language information be
2605     ## preserved by some other flag?
2606 wakaba 1.11 }
2607    
2608 wakaba 1.4 ~? (DSO) {
2609 wakaba 1.6 &InternalSubset ($doc => $doc, $doctype => $node);
2610 wakaba 1.4
2611     ~ (DSC) {
2612     ?lexmode MarkupDeclaration;
2613     } else {
2614     ?lexmode MarkupDeclaration;
2615     }
2616    
2617     ~? (S) { }
2618     }
2619    
2620     // ~ (MDC) { }
2621     } // _DocumentTypeDeclaration_
2622    
2623 wakaba 1.17 /*
2624     Public Identifier Literal
2625     */
2626     rule PubidLiteral ($decl) {
2627     my $pubid;
2628     my $pubid_token;
2629 wakaba 1.4 ~ (LIT) {
2630     ?lexmode SystemLiteral;
2631    
2632     ~? (STRING) {
2633 wakaba 1.17 lang:Perl ($v => $token.value) {
2634     $pubid = $v;
2635     $pubid_token = $token;
2636     }
2637 wakaba 1.4 }
2638    
2639     ~ (LIT) {
2640     ?lexmode MarkupDeclaration;
2641     } else {
2642     ?lexmode MarkupDeclaration;
2643     }
2644     } (LITA) {
2645     ?lexmode SystemLiteralA;
2646    
2647     ~? (STRING) {
2648 wakaba 1.17 lang:Perl ($v => $token.value) {
2649     $pubid = $v;
2650     $pubid_token = $token;
2651     }
2652 wakaba 1.4 }
2653    
2654     ~ (LITA) {
2655     ?lexmode MarkupDeclaration;
2656     } else {
2657     ?lexmode MarkupDeclaration;
2658     }
2659     }
2660 wakaba 1.17
2661     if-true ($pubid_token) {
2662     lang:Perl : has-error {
2663     if ($pubid =~ m{[^\x20\x0D\x0Aa-zA-Z0-9'()+,./:=?;!*#\@\$_%-]}s) {
2664     my $location;
2665     __CODE{xp|get-location-from-token::
2666     $token => {$pubid_token},
2667     $result => {$location},
2668     }__;
2669     ## Should this be other (new) error type?
2670     my $continue = __DOMCore:ERROR{xp|wf-syntax-error::
2671     xp|error-token => {$token},
2672     c|location => {$location},
2673     }__;
2674     unless ($continue) {
2675     __EXCEPTION{DOMLS|PARSE_ERR::
2676     }__;
2677     }
2678     }
2679    
2680     ## NOTE: U+0009 is syntactically illegal.
2681     $pubid =~ s/[\x09\x0A\x0D\x20]+//gs;
2682     $pubid =~ s/\A\x20//s;
2683     $pubid =~ s/\x20\z//s;
2684     ## NOTE: Bare attribute name is written.
2685     $decl->public_id ($pubid);
2686     }
2687     }
2688 wakaba 1.4 } // PubidLiteral
2689    
2690 wakaba 1.17 /*
2691     System Identifier Literal
2692     */
2693     rule SystemLiteral ($decl) {
2694 wakaba 1.4 ~ (LIT) {
2695     ?lexmode SystemLiteral;
2696 wakaba 1.17 &_SystemLiteral ($decl => $decl);
2697 wakaba 1.4 } (LITA) {
2698     ?lexmode SystemLiteralA;
2699 wakaba 1.17 &_SystemLiteral ($decl => $decl);
2700 wakaba 1.4 }
2701     } // SystemLiteral
2702    
2703 wakaba 1.17 /*
2704     System Identifier Literal Content
2705     */
2706     rule _SystemLiteral ($decl) {
2707     // LIT or LITA
2708    
2709 wakaba 1.4 ~? (STRING) {
2710 wakaba 1.17 lang:Perl ($v => $token.value) {
2711     ## NOTE: Bare attribute name is written.
2712     $decl->system_id ($v);
2713     }
2714 wakaba 1.4 }
2715    
2716     ~ (LIT) {
2717     ?lexmode MarkupDeclaration;
2718     } (LITA) {
2719     ?lexmode MarkupDeclaration;
2720     } else {
2721     ?lexmode MarkupDeclaration;
2722     }
2723     } // _SystemLiteral
2724    
2725     /*
2726     DTD Internal Subset
2727    
2728     intSubset := *(markupdecl / DeclSep) ;; [28b]
2729     */
2730 wakaba 1.6 rule InternalSubset ($doc, $doctype) {
2731 wakaba 1.4 ?lexmode DTD;
2732    
2733     ~* (MDO) {
2734     ?lexmode MarkupDeclaration;
2735    
2736     ~ (Name == 'ELEMENT') {
2737     &_ElementDeclaration ($doc => $doc);
2738     } (Name == 'ATTLIST') {
2739 wakaba 1.8 &_AttlistDeclaration ($doc => $doc, $doctype => $doctype);
2740 wakaba 1.4 } (Name == 'ENTITY') {
2741     &_EntityDeclaration ($doc => $doc);
2742     } (Name == 'NOTATION') {
2743     &_NotationDeclaration ($doc => $doc);
2744     }
2745     } (S) {
2746     //
2747     } (CDO) {
2748     &_CommentDeclarationDTD ($doc => $doc);
2749     } (PIO) {
2750 wakaba 1.6 &_ProcessingInstructionDTD ($doc => $doc, $doctype => $doctype);
2751 wakaba 1.4 } (PERO) {
2752     ?lexmode EntityReference;
2753    
2754 wakaba 1.19 lang:Perl {
2755     $self->{has_xref} = true;
2756     }
2757    
2758 wakaba 1.4 ~ (Name) {
2759    
2760     }
2761    
2762     ~ (REFC) {
2763     ?lexmode DTD;
2764     } else {
2765     ?lexmode DTD;
2766     }
2767     }
2768     } // InternalSubset
2769    
2770     rule _ElementDeclaration ($doc) {
2771     // ~ (MDO) { }
2772     // ?lexmode MarkupDeclaration
2773     // ~ (Name == 'Element') { }
2774    
2775     ~ (S) { }
2776    
2777     ~ (Name) {
2778    
2779     }
2780    
2781     ?lexmode ElementDeclaration;
2782    
2783     ~ (S) { }
2784    
2785     // contentspec
2786     ~ (MGO) {
2787     &_ContentModel ($doc => $doc);
2788     } (Name == 'EMPTY') {
2789    
2790     } (Name == 'ANY') {
2791    
2792     }
2793    
2794     ~? (S) { }
2795    
2796     ~ (MDC) {
2797     ?lexmode DTD;
2798     } else {
2799     ?lexmode DTD;
2800     }
2801     } // _ElementDeclaration
2802    
2803     rule _ContentModel ($doc) {
2804     // ~ (MGO) { }
2805    
2806     ~? (S) { }
2807    
2808     ~ (Name) {
2809     // Element content model
2810     &_ModelGroup ($doc => $doc)
2811     : unshift-current-token;
2812    
2813     ~? (OPT) {
2814    
2815     } (REP) {
2816    
2817     } (PLUS) {
2818    
2819     }
2820    
2821     } (MDO) {
2822     &_ModelGroup ($doc => $doc)
2823     : unshift-current-token;
2824    
2825     ~? (OPT) {
2826    
2827     } (REP) {
2828    
2829     } (PLUS) {
2830    
2831     }
2832    
2833     } (PCDATA) {
2834     // Mixed content declaration
2835     ~? (S) { }
2836    
2837     ~* (OR) {
2838     ~? (S) { }
2839    
2840     ~ (Name) {
2841    
2842     }
2843    
2844     ~? (S) { }
2845     }
2846    
2847     ~ (MGC) { }
2848    
2849     ~? (REP) {
2850    
2851     } else {
2852     // TODO: error if |Name|
2853     }
2854    
2855    
2856     }
2857     } // _ContentModel
2858    
2859     rule _ModelGroup ($doc)
2860     : standalone
2861     : recursive
2862     {
2863     // ~ (MGO) { }
2864     // ~? (S) { }
2865    
2866     &ContentParticle ($doc => $doc);
2867    
2868     ~? (S) { }
2869    
2870     ~? (OR) {
2871     ~? (S) { }
2872    
2873     &ContentParticle ($doc => $doc);
2874    
2875     ~? (S) { }
2876    
2877     ~* (OR) {
2878     ~? (S) { }
2879    
2880     &ContentParticle ($doc => $doc);
2881    
2882     ~? (S) { }
2883     }
2884    
2885     } (SEQ) {
2886     ~? (S) { }
2887    
2888     &ContentParticle ($doc => $doc);
2889    
2890     ~? (S) { }
2891    
2892     ~* (SEQ) {
2893     ~? (S) { }
2894    
2895     &ContentParticle ($doc => $doc);
2896    
2897     ~? (S) { }
2898     }
2899    
2900     }
2901    
2902     ~ (MGC) { }
2903     } // _ModelGroup
2904    
2905     rule ContentParticle ($doc) {
2906     ~ (Name) {
2907    
2908     } (MGO) {
2909     ~? (S) { }
2910    
2911     &_ModelGroup ($doc => $doc);
2912     }
2913    
2914     ~? (OPT) {
2915    
2916     } (REP) {
2917    
2918     } (PLUS) {
2919    
2920     }
2921     } // ContentParticle
2922    
2923 wakaba 1.8 /*
2924     Attribute list declaration
2925     */
2926     rule _AttlistDeclaration ($doc, $doctype) {
2927 wakaba 1.4 // ~ (MDO) { }
2928     // ~ (Name == 'ATTLIST') { }
2929    
2930     ?lexmode AttlistDeclaration;
2931    
2932     ~ (S) { }
2933    
2934 wakaba 1.8 my $name;
2935 wakaba 1.4 ~ (Name) {
2936 wakaba 1.8 lang:Perl ($v => $token.value) {
2937     $name = $v;
2938     }
2939     } else {
2940     lang:Perl { $name = '#ILLEGAL' }
2941     }
2942 wakaba 1.4
2943 wakaba 1.8 my $docxd;
2944     my $et;
2945     lang:Perl {
2946     $et = $doctype-><M::DTDef.getElementTypeDefinitionNode> ($name);
2947     unless ($et) {
2948 wakaba 1.11 $docxd = $doc-><M::Node.getFeature> (<Q::fe:XDoctype>, '3.0');
2949 wakaba 1.8 $et = $docxd-><M::DocumentXDoctype.createElementTypeDefinition>
2950     ($name);
2951     $doctype-><M::DTDef.setElementTypeDefinitionNode> ($et)
2952     unless $name eq '#ILLEGAL';
2953     }
2954 wakaba 1.4 }
2955    
2956     ~? (S) { }
2957    
2958     ~* (Name) {
2959 wakaba 1.8 my $at;
2960     lang:Perl ($v => $token.value) {
2961     $docxd ||= $doc-><M::Node.getFeature>
2962 wakaba 1.11 (<Q::fe:XDoctype>, '3.0');
2963 wakaba 1.8 $at = $docxd-><M::DocumentXDoctype.createAttributeDefinition> ($v);
2964 wakaba 1.9 unless (exists $et-><AG::ETDef.attributeDefinitions>->{$v}) {
2965     $et-><M::ETDef.setAttributeDefinitionNode> ($at);
2966     $self->{attr}->{$name}->{$v} = $at;
2967     }
2968 wakaba 1.8 }
2969 wakaba 1.4
2970     ~ (S) { }
2971    
2972     // AttType
2973     ~ (Name == 'NOTATION') {
2974     ~ (S) { }
2975    
2976 wakaba 1.8 my $kwd;
2977     lang:Perl {
2978     $at-><AS::ATDef.declaredType> (<C::ATDef.NOTATION_ATTR>);
2979     $kwd = $at-><AG::ATDef.allowedTokens>;
2980     }
2981    
2982 wakaba 1.4 ~ (EGO) {
2983     ~? (S) { }
2984    
2985 wakaba 1.8 ~+ (Name) {
2986     lang:Perl ($v => $token.value) {
2987     push @$kwd, $v;
2988     }
2989 wakaba 1.4
2990     ~? (S) { }
2991     } (OR) : separator {
2992     ~? (S) { }
2993     }
2994    
2995     ~ (EGC) { }
2996     }
2997 wakaba 1.8
2998 wakaba 1.4 } (Name) {
2999 wakaba 1.8 my $type;
3000     lang:Perl ($v => $token.value) : has-error {
3001     my $map = {
3002     CDATA => <C::ATDef.CDATA_ATTR>,
3003     ID => <C::ATDef.ID_ATTR>,
3004     IDREF => <C::ATDef.IDREF_ATTR>,
3005     IDREFS => <C::ATDef.IDREFS_ATTR>,
3006     ENTITY => <C::ATDef.ENTITY_ATTR>,
3007     ENTITIES => <C::ATDef.ENTITIES_ATTR>,
3008     NMTOKEN => <C::ATDef.NMTOKEN_ATTR>,
3009     NMTOKENS => <C::ATDef.NMTOKENS_ATTR>,
3010     };
3011     if ($map->{$v}) {
3012     $at-><AS::ATDef.declaredType> ($map->{$v});
3013     } else {
3014     ## TODO: Exception
3015     }
3016     }
3017 wakaba 1.4
3018     } (EGO) {
3019     ?lexmode Enumeration;
3020    
3021     ~? (S) { }
3022    
3023 wakaba 1.8 my $kwd;
3024     lang:Perl {
3025     $at-><AS::ATDef.declaredType> (<C::ATDef.ENUMERATION_ATTR>);
3026     $kwd = $at-><AG::ATDef.allowedTokens>;
3027     }
3028    
3029     ~+ (Nmtoken) {
3030     lang:Perl ($v => $token.value) {
3031     push @$kwd, $v;
3032     }
3033 wakaba 1.4
3034     ~? (S) { }
3035     } (OR) : separator {
3036     ~? (S) { }
3037     }
3038    
3039     ~ (EGC) {
3040     ?lexmode AttlistDeclaration;
3041     } else {
3042     ?lexmode AttlistDeclaration;
3043     }
3044    
3045     }
3046    
3047     ~ (S) { }
3048    
3049     // DefaultDecl
3050     ~ (RNI) {
3051     ~ (Name == 'REQUIRED') {
3052 wakaba 1.8 lang:Perl {
3053     $at-><AS::ATDef.defaultType> (<C::ATDef.REQUIRED_DEFAULT>);
3054     }
3055 wakaba 1.4 } (Name == 'IMPLIED') {
3056 wakaba 1.8 lang:Perl {
3057     $at-><AS::ATDef.defaultType> (<C::ATDef.IMPLIED_DEFAULT>);
3058     }
3059 wakaba 1.4 } (Name == 'FIXED') {
3060     ~ (S) { }
3061 wakaba 1.8
3062     lang:Perl {
3063     $at-><AS::ATDef.defaultType> (<C::ATDef.FIXED_DEFAULT>);
3064     }
3065 wakaba 1.4
3066     ~ (LIT) {
3067     my $vals;
3068     lang:Perl {
3069 wakaba 1.8 $vals = {nodes => [], value => ''};
3070 wakaba 1.4 }
3071    
3072     &_AttributeValueSpecification_ ($doc => $doc, $vals => $vals);
3073    
3074 wakaba 1.8 lang:Perl {
3075     for (@{$vals->{nodes}}) {
3076     $at-><M::Node.appendChild> ($_);
3077     }
3078     }
3079    
3080 wakaba 1.4 ~ (LIT) {
3081     ?lexmode AttlistDeclaration;
3082     } else {
3083     ?lexmode AttlistDeclaration;
3084     }
3085     } (LITA) {
3086     my $vals;
3087     lang:Perl {
3088 wakaba 1.8 $vals = {nodes => [], value => ''};
3089 wakaba 1.4 }
3090    
3091     &_AttributeValueSpecificationA_ ($doc => $doc, $vals => $vals);
3092    
3093 wakaba 1.8 lang:Perl {
3094     for (@{$vals->{nodes}}) {
3095     $at-><M::Node.appendChild> ($_);
3096     }
3097     }
3098    
3099     ~ (LITA) {
3100 wakaba 1.4 ?lexmode AttlistDeclaration;
3101     } else {
3102     ?lexmode AttlistDeclaration;
3103     }
3104     }
3105     }
3106    
3107     } (LIT) {
3108     my $vals;
3109     lang:Perl {
3110 wakaba 1.8 $at-><AS::ATDef.defaultType> (<C::ATDef.EXPLICIT_DEFAULT>);
3111     $vals = {nodes => [], value => ''};
3112 wakaba 1.4 }
3113    
3114     &_AttributeValueSpecification_ ($doc => $doc, $vals => $vals);
3115    
3116 wakaba 1.8 lang:Perl {
3117     for (@{$vals->{nodes}}) {
3118     $at-><M::Node.appendChild> ($_);
3119     }
3120     }
3121    
3122 wakaba 1.4 ~ (LIT) {
3123     ?lexmode AttlistDeclaration;
3124     } else {
3125     ?lexmode AttlistDeclaration;
3126     }
3127     } (LITA) {
3128     my $vals;
3129     lang:Perl {
3130 wakaba 1.8 $at-><AS::ATDef.defaultType> (<C::ATDef.EXPLICIT_DEFAULT>);
3131     $vals = {nodes => [], value => ''};
3132 wakaba 1.4 }
3133    
3134     &_AttributeValueSpecificationA_ ($doc => $doc, $vals => $vals);
3135    
3136 wakaba 1.8 lang:Perl {
3137     for (@{$vals->{nodes}}) {
3138     $at-><M::Node.appendChild> ($_);
3139     }
3140     }
3141    
3142 wakaba 1.4 ~ (LITA) {
3143     ?lexmode AttlistDeclaration;
3144     } else {
3145     ?lexmode AttlistDeclaration;
3146     }
3147     }
3148    
3149     } (S) : separator : terminator? {
3150     //
3151     }
3152    
3153     ~ (MDC) {
3154     ?lexmode DTD;
3155     } else {
3156     ?lexmode DTD;
3157     }
3158     } // _AttlistDeclaration
3159    
3160 wakaba 1.11 /*
3161     Entity declaration
3162     */
3163 wakaba 1.4 rule _EntityDeclaration ($doc) {
3164     // ~ (MDO) { }
3165     // ~ (Name == ENTITY) { }
3166    
3167     ~ (S) { }
3168    
3169 wakaba 1.6 my $decl;
3170 wakaba 1.18 lang:Perl { $decl = { name => '#ILLEGAL', reptxt => \'' }; }
3171 wakaba 1.6
3172 wakaba 1.4 ~? (PERO) {
3173     ~ (S) { }
3174 wakaba 1.6 lang:Perl {
3175     $decl->{is_param_entity} = true;
3176     }
3177 wakaba 1.4 }
3178    
3179 wakaba 1.19 /*
3180     TODO: Set |$decl->{is_externally_declared}| flag
3181     and |Entity.isExternallyDeclared| attribute
3182     for entity declarations in external subset or
3183     in parameter entity.
3184     */
3185    
3186 wakaba 1.4 ~ (Name) {
3187 wakaba 1.6 lang:Perl ($v => $token.value) {
3188     $decl->{name} = $v;
3189     }
3190 wakaba 1.4 }
3191    
3192 wakaba 1.18 my $node;
3193 wakaba 1.11 lang:Perl {
3194 wakaba 1.18 $node =
3195 wakaba 1.11 $decl->{node} = $self->{docx}-><M::DocumentXDoctype.createGeneralEntity>
3196     ($decl->{name});
3197     ## TODO: Parameter entity...
3198     }
3199    
3200 wakaba 1.4 ~ (S) { }
3201    
3202     ~ (LIT) {
3203 wakaba 1.6 &_EntityValue ($doc => $doc, $decl => $decl);
3204 wakaba 1.4 } (LITA) {
3205 wakaba 1.6 &_EntityValueA ($doc => $doc, $decl => $decl);
3206 wakaba 1.4 } (Name == 'PUBLIC') {
3207     ~ (S) { }
3208    
3209 wakaba 1.18 &PubidLiteral ($decl => $node);
3210 wakaba 1.4
3211     ~ (S) { }
3212    
3213 wakaba 1.18 &SystemLiteral ($decl => $node);
3214    
3215     lang:Perl {
3216     $decl->{is_external_entity} = true;
3217     }
3218 wakaba 1.4 } (Name == 'SYSTEM') {
3219     ~ (S) { }
3220    
3221 wakaba 1.18 &SystemLiteral ($decl => $node);
3222    
3223     lang:Perl {
3224     $decl->{is_external_entity} = true;
3225     }
3226 wakaba 1.4 }
3227    
3228     ~? (S) {
3229     ~? (Name == 'NDATA') {
3230     // TODO: error if parameter entity
3231    
3232     ~ (S) { }
3233    
3234     ~ (Name) {
3235 wakaba 1.6 lang:Perl ($v => $token.value) {
3236     $decl->{notation} = $v;
3237 wakaba 1.11 $decl->{node}-><AG::x|Entity.notationName> ($v);
3238 wakaba 1.6 }
3239 wakaba 1.4 }
3240    
3241     ~? (S) { }
3242     }
3243     }
3244    
3245 wakaba 1.6 lang:Perl {
3246     if ($self->{$decl->{is_param_entity} ? 'param_entity' : 'general_entity'}
3247     ->{$decl->{name}}) {
3248 wakaba 1.11 ## TODO: warning
3249     ## TODO: predefined entity error check
3250 wakaba 1.6 } else {
3251     $self->{$decl->{is_param_entity} ? 'param_entity' : 'general_entity'}
3252     ->{$decl->{name}} = $decl;
3253 wakaba 1.11 $self->{dtdef}-><M::DTDef.setGeneralEntityNode> ($decl->{node})
3254     unless $decl->{is_param_entity};
3255 wakaba 1.6 }
3256     }
3257    
3258 wakaba 1.4 ~ (MDC) {
3259     ?lexmode DTD;
3260     } else {
3261     ?lexmode DTD;
3262     }
3263     } // _EntityDeclaration
3264    
3265     rule _NotationDeclaration ($doc) {
3266     // ~ (MDO) { }
3267     // ~ (Name == NOTATION) { }
3268    
3269     ~ (S) { }
3270    
3271     ~ (Name) {
3272    
3273     }
3274    
3275     ~ (S) { }
3276    
3277 wakaba 1.17 my $decl;
3278     lang:Perl {
3279     $decl = $self->{docx}-><M::DocumentXDoctype.createGeneralEntity>
3280     ($decl->{name});
3281     ## Temporary: to avoid error.
3282     }
3283    
3284 wakaba 1.4 ~ (Name == 'PUBLIC') {
3285     ~ (S) { }
3286    
3287 wakaba 1.17 &PubidLiteral ($decl => $decl);
3288 wakaba 1.4
3289     ~? (S) {
3290     ~? (LIT) {
3291     ?lexmode SystemLiteral;
3292 wakaba 1.17 &_SystemLiteral ($decl => $decl);
3293 wakaba 1.4
3294     ~? (S) { }
3295     } (LITA) {
3296     ?lexmode SystemLiteralA;
3297 wakaba 1.17 &_SystemLiteral ($decl => $decl);
3298 wakaba 1.4
3299     ~? (S) { }
3300     }
3301     }
3302     } (Name == 'SYSTEM') {
3303     ~ (S) { }
3304    
3305 wakaba 1.17 &SystemLiteral ($decl => $decl);
3306 wakaba 1.4
3307     ~? (S) { }
3308     }
3309    
3310     ~ (MDC) {
3311     ?lexmode DTD;
3312     } else {
3313     ?lexmode DTD;
3314     }
3315     } // _NotationDeclaration
3316    
3317 wakaba 1.11 rule _EntityValue ($decl) {
3318 wakaba 1.4 ?lexmode EntityValue;
3319    
3320     my $vals;
3321 wakaba 1.6 my $reptxt;
3322 wakaba 1.4 lang:Perl {
3323     $vals = [];
3324 wakaba 1.6 $reptxt = '';
3325 wakaba 1.4 }
3326    
3327     ~* (STRING) {
3328 wakaba 1.6 lang:Perl ($v => $token.value) {
3329     $reptxt .= $v;
3330     }
3331 wakaba 1.4 } (PERO) {
3332     ?lexmode EntityDeclaration;
3333 wakaba 1.19
3334     lang:Perl {
3335     $self->{has_xref} = true;
3336     }
3337 wakaba 1.6
3338     // TODO: Expand or wferror if internal subset
3339 wakaba 1.4
3340     ~ (Name) {
3341    
3342     }
3343    
3344     ~ (REFC) {
3345     ?lexmode EntityValue;
3346     } else {
3347     ?lexmode EntityValue;
3348     }
3349     } (HCRO) {
3350 wakaba 1.11 &_HexadecimalCharacterReferenceEV_ ($vals => $vals);
3351 wakaba 1.4
3352 wakaba 1.6 lang:Perl {
3353 wakaba 1.11 $reptxt .= $vals->[-1];
3354 wakaba 1.6 }
3355    
3356 wakaba 1.4 ~ (REFC) {
3357     ?lexmode EntityValue;
3358     } else {
3359     ?lexmode EntityValue;
3360     }
3361     } (CRO) {
3362 wakaba 1.11 &_NumericCharacterReferenceEV_ ($vals => $vals);
3363 wakaba 1.6
3364     lang:Perl {
3365 wakaba 1.11 $reptxt .= $vals->[-1];
3366 wakaba 1.6 }
3367 wakaba 1.4
3368     ~ (REFC) {
3369     ?lexmode EntityValue;
3370     } else {
3371     ?lexmode EntityValue;
3372     }
3373     } (ERO) {
3374 wakaba 1.11 &_GeneralEntityReferenceEV_ ($vals => $vals);
3375 wakaba 1.4
3376 wakaba 1.6 lang:Perl {
3377 wakaba 1.11 $reptxt .= '&' . $vals->[-1] . ';';
3378 wakaba 1.6 }
3379    
3380 wakaba 1.4 ~ (REFC) {
3381     ?lexmode EntityValue;
3382     } else {
3383     ?lexmode EntityValue;
3384     }
3385     }
3386    
3387     ~ (LIT) {
3388     ?lexmode MarkupDeclaration;
3389     } (LITA) {
3390     ?lexmode MarkupDeclaration;
3391     } else {
3392     ?lexmode MarkupDeclaration;
3393     }
3394 wakaba 1.6
3395     lang:Perl {
3396     $decl->{reptxt} = \$reptxt;
3397 wakaba 1.19 $decl->{has_replacement_text} = true;
3398 wakaba 1.6 }
3399 wakaba 1.4 } // _EntityValue
3400    
3401 wakaba 1.11 rule _EntityValueA ($decl) {
3402 wakaba 1.4 ?lexmode EntityValueA;
3403    
3404     my $vals;
3405 wakaba 1.6 my $reptxt;
3406 wakaba 1.4 lang:Perl {
3407     $vals = [];
3408 wakaba 1.6 $reptxt = '';
3409 wakaba 1.4 }
3410    
3411     ~* (STRING) {
3412 wakaba 1.6 lang:Perl ($v => $token.value) {
3413     $reptxt .= $v;
3414     }
3415 wakaba 1.4 } (PERO) {
3416     ?lexmode EntityDeclaration;
3417    
3418 wakaba 1.19 lang:Perl {
3419     $self->{has_xref} = true;
3420     }
3421    
3422 wakaba 1.6 // TODO: implement this
3423 wakaba 1.4 ~ (Name) {
3424    
3425     }
3426    
3427     ~ (REFC) {
3428     ?lexmode EntityValueA;
3429     } else {
3430     ?lexmode EntityValueA;
3431     }
3432     } (HCRO) {
3433 wakaba 1.11 &_HexadecimalCharacterReferenceEV_ ($vals => $vals);
3434 wakaba 1.4
3435 wakaba 1.6 lang:Perl {
3436 wakaba 1.11 $reptxt .= $vals->[-1];
3437 wakaba 1.6 }
3438    
3439    
3440 wakaba 1.4 ~ (REFC) {
3441     ?lexmode EntityValueA;
3442     } else {
3443     ?lexmode EntityValueA;
3444     }
3445     } (CRO) {
3446 wakaba 1.11 &_NumericCharacterReferenceEV_ ($vals => $vals);
3447 wakaba 1.4
3448 wakaba 1.6 lang:Perl {
3449 wakaba 1.11 $reptxt .= $vals->[-1];
3450 wakaba 1.6 }
3451    
3452 wakaba 1.4 ~ (REFC) {
3453     ?lexmode EntityValueA;
3454     } else {
3455     ?lexmode EntityValueA;
3456     }
3457     } (ERO) {
3458 wakaba 1.11 &_GeneralEntityReferenceEV_ ($vals => $vals);
3459 wakaba 1.4
3460 wakaba 1.6 lang:Perl {
3461 wakaba 1.11 $reptxt .= '&' . $vals->[-1] . ';';
3462 wakaba 1.6 }
3463    
3464 wakaba 1.4 ~ (REFC) {
3465     ?lexmode EntityValueA;
3466     } else {
3467     ?lexmode EntityValueA;
3468     }
3469     }
3470    
3471     ~ (LITA) {
3472     ?lexmode MarkupDeclaration;
3473     } else {
3474     ?lexmode MarkupDeclaration;
3475     }
3476 wakaba 1.6
3477     lang:Perl {
3478     $decl->{reptxt} = \$reptxt;
3479 wakaba 1.19 $decl->{has_replacement_text} = true;
3480 wakaba 1.6 }
3481 wakaba 1.4 } // _EntityValueA
3482    
3483    
3484     /*
3485     XML Name
3486     */
3487     lexmode NameChar {
3488     $NameStartChar10 := [
3489     '_' ':'
3490     // Letter
3491     // BaseChar
3492     U+0041..U+005A U+0061..U+007A U+00C0..U+00D6
3493     U+00D8..U+00F6 U+00F8..U+00FF U+0100..U+0131
3494     U+0134..U+013E U+0141..U+0148 U+014A..U+017E
3495     U+0180..U+01C3 U+01CD..U+01F0 U+01F4..U+01F5
3496     U+01FA..U+0217 U+0250..U+02A8 U+02BB..U+02C1
3497     U+0386 U+0388..U+038A U+038C U+038E..U+03A1
3498     U+03A3..U+03CE U+03D0..U+03D6 U+03DA U+03DC
3499     U+03DE U+03E0 U+03E2..U+03F3 U+0401..U+040C
3500     U+040E..U+044F U+0451..U+045C U+045E..U+0481
3501     U+0490..U+04C4 U+04C7..U+04C8 U+04CB..U+04CC
3502     U+04D0..U+04EB U+04EE..U+04F5 U+04F8..U+04F9
3503     U+0531..U+0556 U+0559 U+0561..U+0586
3504     U+05D0..U+05EA U+05F0..U+05F2 U+0621..U+063A
3505     U+0641..U+064A U+0671..U+06B7 U+06BA..U+06BE
3506     U+06C0..U+06CE U+06D0..U+06D3 U+06D5
3507     U+06E5..U+06E6 U+0905..U+0939 U+093D
3508     U+0958..U+0961 U+0985..U+098C U+098F..U+0990
3509     U+0993..U+09A8 U+09AA..U+09B0 U+09B2
3510     U+09B6..U+09B9 U+09DC..U+09DD U+09DF..U+09E1
3511     U+09F0..U+09F1 U+0A05..U+0A0A U+0A0F..U+0A10
3512     U+0A13..U+0A28 U+0A2A..U+0A30 U+0A32..U+0A33
3513     U+0A35..U+0A36 U+0A38..U+0A39 U+0A59..U+0A5C
3514     U+0A5E U+0A72..U+0A74 U+0A85..U+0A8B U+0A8D
3515     U+0A8F..U+0A91 U+0A93..U+0AA8 U+0AAA..U+0AB0
3516     U+0AB2..U+0AB3 U+0AB5..U+0AB9 U+0ABD U+0AE0
3517     U+0B05..U+0B0C U+0B0F..U+0B10 U+0B13..U+0B28
3518     U+0B2A..U+0B30 U+0B32..U+0B33 U+0B36..U+0B39
3519     U+0B3D U+0B5C..U+0B5D U+0B5F..U+0B61
3520     U+0B85..U+0B8A U+0B8E..U+0B90 U+0B92..U+0B95
3521     U+0B99..U+0B9A U+0B9C U+0B9E..U+0B9F
3522     U+0BA3..U+0BA4 U+0BA8..U+0BAA U+0BAE..U+0BB5
3523     U+0BB7..U+0BB9 U+0C05..U+0C0C U+0C0E..U+0C10
3524     U+0C12..U+0C28 U+0C2A..U+0C33 U+0C35..U+0C39
3525     U+0C60..U+0C61 U+0C85..U+0C8C U+0C8E..U+0C90
3526     U+0C92..U+0CA8 U+0CAA..U+0CB3 U+0CB5..U+0CB9
3527     U+0CDE U+0CE0..U+0CE1 U+0D05..U+0D0C
3528     U+0D0E..U+0D10 U+0D12..U+0D28 U+0D2A..U+0D39
3529     U+0D60..U+0D61 U+0E01..U+0E2E U+0E30
3530     U+0E32..U+0E33 U+0E40..U+0E45 U+0E81..U+0E82
3531     U+0E84 U+0E87..U+0E88 U+0E8A U+0E8D
3532     U+0E94..U+0E97 U+0E99..U+0E9F U+0EA1..U+0EA3
3533     U+0EA5 U+0EA7 U+0EAA..U+0EAB U+0EAD..U+0EAE
3534     U+0EB0 U+0EB2..U+0EB3 U+0EBD U+0EC0..U+0EC4
3535     U+0F40..U+0F47 U+0F49..U+0F69 U+10A0..U+10C5
3536     U+10D0..U+10F6 U+1100 U+1102..U+1103
3537     U+1105..U+1107 U+1109 U+110B..U+110C
3538     U+110E..U+1112 U+113C U+113E U+1140 U+114C
3539     U+114E U+1150 U+1154..U+1155 U+1159
3540     U+115F..U+1161 U+1163 U+1165 U+1167 U+1169
3541     U+116D..U+116E U+1172..U+1173 U+1175 U+119E
3542     U+11A8 U+11AB U+11AE..U+11AF U+11B7..U+11B8
3543     U+11BA U+11BC..U+11C2 U+11EB U+11F0 U+11F9
3544     U+1E00..U+1E9B U+1EA0..U+1EF9 U+1F00..U+1F15
3545     U+1F18..U+1F1D U+1F20..U+1F45 U+1F48..U+1F4D
3546     U+1F50..U+1F57 U+1F59 U+1F5B U+1F5D
3547     U+1F5F..U+1F7D U+1F80..U+1FB4 U+1FB6..U+1FBC
3548     U+1FBE U+1FC2..U+1FC4 U+1FC6..U+1FCC
3549     U+1FD0..U+1FD3 U+1FD6..U+1FDB U+1FE0..U+1FEC
3550     U+1FF2..U+1FF4 U+1FF6..U+1FFC U+2126
3551     U+212A..U+212B U+212E U+2180..U+2182
3552     U+3041..U+3094 U+30A1..U+30FA U+3105..U+312C
3553     U+AC00..U+D7A3
3554     // Ideographic
3555     U+4E00..U+9FA5 U+3007 U+3021..U+3029
3556     ];
3557     $NameChar10 := [
3558     '.' '-' '_' ':'
3559     // Letter
3560     // BaseChar
3561     U+0041..U+005A U+0061..U+007A U+00C0..U+00D6
3562     U+00D8..U+00F6 U+00F8..U+00FF U+0100..U+0131
3563     U+0134..U+013E U+0141..U+0148 U+014A..U+017E
3564     U+0180..U+01C3 U+01CD..U+01F0 U+01F4..U+01F5
3565     U+01FA..U+0217 U+0250..U+02A8 U+02BB..U+02C1
3566     U+0386 U+0388..U+038A U+038C U+038E..U+03A1
3567     U+03A3..U+03CE U+03D0..U+03D6 U+03DA U+03DC
3568     U+03DE U+03E0 U+03E2..U+03F3 U+0401..U+040C
3569     U+040E..U+044F U+0451..U+045C U+045E..U+0481
3570     U+0490..U+04C4 U+04C7..U+04C8 U+04CB..U+04CC
3571     U+04D0..U+04EB U+04EE..U+04F5 U+04F8..U+04F9
3572     U+0531..U+0556 U+0559 U+0561..U+0586
3573     U+05D0..U+05EA U+05F0..U+05F2 U+0621..U+063A
3574     U+0641..U+064A U+0671..U+06B7 U+06BA..U+06BE
3575     U+06C0..U+06CE U+06D0..U+06D3 U+06D5
3576     U+06E5..U+06E6 U+0905..U+0939 U+093D
3577     U+0958..U+0961 U+0985..U+098C U+098F..U+0990
3578     U+0993..U+09A8 U+09AA..U+09B0 U+09B2
3579     U+09B6..U+09B9 U+09DC..U+09DD U+09DF..U+09E1
3580     U+09F0..U+09F1 U+0A05..U+0A0A U+0A0F..U+0A10
3581     U+0A13..U+0A28 U+0A2A..U+0A30 U+0A32..U+0A33
3582     U+0A35..U+0A36 U+0A38..U+0A39 U+0A59..U+0A5C
3583     U+0A5E U+0A72..U+0A74 U+0A85..U+0A8B U+0A8D
3584     U+0A8F..U+0A91 U+0A93..U+0AA8 U+0AAA..U+0AB0
3585     U+0AB2..U+0AB3 U+0AB5..U+0AB9 U+0ABD U+0AE0
3586     U+0B05..U+0B0C U+0B0F..U+0B10 U+0B13..U+0B28
3587     U+0B2A..U+0B30 U+0B32..U+0B33 U+0B36..U+0B39
3588     U+0B3D U+0B5C..U+0B5D U+0B5F..U+0B61
3589     U+0B85..U+0B8A U+0B8E..U+0B90 U+0B92..U+0B95
3590     U+0B99..U+0B9A U+0B9C U+0B9E..U+0B9F
3591     U+0BA3..U+0BA4 U+0BA8..U+0BAA U+0BAE..U+0BB5
3592     U+0BB7..U+0BB9 U+0C05..U+0C0C U+0C0E..U+0C10
3593     U+0C12..U+0C28 U+0C2A..U+0C33 U+0C35..U+0C39
3594     U+0C60..U+0C61 U+0C85..U+0C8C U+0C8E..U+0C90
3595     U+0C92..U+0CA8 U+0CAA..U+0CB3 U+0CB5..U+0CB9
3596     U+0CDE U+0CE0..U+0CE1 U+0D05..U+0D0C
3597     U+0D0E..U+0D10 U+0D12..U+0D28 U+0D2A..U+0D39
3598     U+0D60..U+0D61 U+0E01..U+0E2E U+0E30
3599     U+0E32..U+0E33 U+0E40..U+0E45 U+0E81..U+0E82
3600     U+0E84 U+0E87..U+0E88 U+0E8A U+0E8D
3601     U+0E94..U+0E97 U+0E99..U+0E9F U+0EA1..U+0EA3
3602     U+0EA5 U+0EA7 U+0EAA..U+0EAB U+0EAD..U+0EAE
3603     U+0EB0 U+0EB2..U+0EB3 U+0EBD U+0EC0..U+0EC4
3604     U+0F40..U+0F47 U+0F49..U+0F69 U+10A0..U+10C5
3605     U+10D0..U+10F6 U+1100 U+1102..U+1103
3606     U+1105..U+1107 U+1109 U+110B..U+110C
3607     U+110E..U+1112 U+113C U+113E U+1140 U+114C
3608     U+114E U+1150 U+1154..U+1155 U+1159
3609     U+115F..U+1161 U+1163 U+1165 U+1167 U+1169
3610     U+116D..U+116E U+1172..U+1173 U+1175 U+119E
3611     U+11A8 U+11AB U+11AE..U+11AF U+11B7..U+11B8
3612     U+11BA U+11BC..U+11C2 U+11EB U+11F0 U+11F9
3613     U+1E00..U+1E9B U+1EA0..U+1EF9 U+1F00..U+1F15
3614     U+1F18..U+1F1D U+1F20..U+1F45 U+1F48..U+1F4D
3615     U+1F50..U+1F57 U+1F59 U+1F5B U+1F5D
3616     U+1F5F..U+1F7D U+1F80..U+1FB4 U+1FB6..U+1FBC
3617     U+1FBE U+1FC2..U+1FC4 U+1FC6..U+1FCC
3618     U+1FD0..U+1FD3 U+1FD6..U+1FDB U+1FE0..U+1FEC
3619     U+1FF2..U+1FF4 U+1FF6..U+1FFC U+2126
3620     U+212A..U+212B U+212E U+2180..U+2182
3621     U+3041..U+3094 U+30A1..U+30FA U+3105..U+312C
3622     U+AC00..U+D7A3
3623     // Ideographic
3624     U+4E00..U+9FA5 U+3007 U+3021..U+3029
3625     // Digit
3626     U+0030..U+0039 U+0660..U+0669 U+06F0..U+06F9
3627     U+0966..U+096F U+09E6..U+09EF U+0A66..U+0A6F
3628     U+0AE6..U+0AEF U+0B66..U+0B6F U+0BE7..U+0BEF
3629     U+0C66..U+0C6F U+0CE6..U+0CEF U+0D66..U+0D6F
3630     U+0E50..U+0E59 U+0ED0..U+0ED9 U+0F20..U+0F29
3631     // CombiningChar
3632     U+0300..U+0345 U+0360..U+0361 U+0483..U+0486
3633     U+0591..U+05A1 U+05A3..U+05B9 U+05BB..U+05BD
3634     U+05BF U+05C1..U+05C2 U+05C4 U+064B..U+0652
3635     U+0670 U+06D6..U+06DC U+06DD..U+06DF
3636     U+06E0..U+06E4 U+06E7..U+06E8 U+06EA..U+06ED
3637     U+0901..U+0903 U+093C U+093E..U+094C U+094D
3638     U+0951..U+0954 U+0962..U+0963 U+0981..U+0983
3639     U+09BC U+09BE U+09BF U+09C0..U+09C4
3640     U+09C7..U+09C8 U+09CB..U+09CD U+09D7
3641     U+09E2..U+09E3 U+0A02 U+0A3C U+0A3E U+0A3F
3642     U+0A40..U+0A42 U+0A47..U+0A48 U+0A4B..U+0A4D
3643     U+0A70..U+0A71 U+0A81..U+0A83 U+0ABC
3644     U+0ABE..U+0AC5 U+0AC7..U+0AC9 U+0ACB..U+0ACD
3645     U+0B01..U+0B03 U+0B3C U+0B3E..U+0B43
3646     U+0B47..U+0B48 U+0B4B..U+0B4D U+0B56..U+0B57
3647     U+0B82..U+0B83 U+0BBE..U+0BC2 U+0BC6..U+0BC8
3648     U+0BCA..U+0BCD U+0BD7 U+0C01..U+0C03
3649     U+0C3E..U+0C44 U+0C46..U+0C48 U+0C4A..U+0C4D
3650     U+0C55..U+0C56 U+0C82..U+0C83 U+0CBE..U+0CC4
3651     U+0CC6..U+0CC8 U+0CCA..U+0CCD U+0CD5..U+0CD6
3652     U+0D02..U+0D03 U+0D3E..U+0D43 U+0D46..U+0D48
3653     U+0D4A..U+0D4D U+0D57 U+0E31 U+0E34..U+0E3A
3654     U+0E47..U+0E4E U+0EB1 U+0EB4..U+0EB9
3655     U+0EBB..U+0EBC U+0EC8..U+0ECD U+0F18..U+0F19
3656     U+0F35 U+0F37 U+0F39 U+0F3E U+0F3F
3657     U+0F71..U+0F84 U+0F86..U+0F8B U+0F90..U+0F95
3658     U+0F97 U+0F99..U+0FAD U+0FB1..U+0FB7 U+0FB9
3659     U+20D0..U+20DC U+20E1 U+302A..U+302F U+3099
3660     U+309A
3661     // Extender
3662     U+00B7 U+02D0 U+02D1 U+0387 U+0640 U+0E46
3663     U+0EC6 U+3005 U+3031..U+3035 U+309D..U+309E
3664     U+30FC..U+30FE
3665     ];
3666 wakaba 1.1
3667     $NameStartChar11 := [
3668     ':' '_'
3669     'A' 'B' 'C' 'D' 'E' 'F' 'G' 'H' 'I' 'J' 'K' 'L' 'M'
3670     'N' 'O' 'P' 'Q' 'R' 'S' 'T' 'U' 'V' 'W' 'X' 'Y' 'Z'
3671     'a' 'b' 'c' 'd' 'e' 'f' 'g' 'h' 'i' 'j' 'k' 'l' 'm'
3672     'n' 'o' 'p' 'q' 'r' 's' 't' 'u' 'v' 'w' 'x' 'y' 'z'
3673     U+00C0..U+00D6 U+00D8..U+00F6 U+00F8..U+02FF
3674     U+0370..U+037D U+037F..U+1FFF U+200C..U+200D
3675     U+2070..U+218F U+2C00..U+2FEF U+3001..U+D7FF
3676     U+F900..U+FDCF U+FDF0..U+FFFD U+10000..U+EFFFF
3677     ];
3678     $NameChar11 := [
3679     '-' '.' '0' '1' '2' '3' '4' '5' '6' '7' '8' '9'
3680     U+00B7 U+0300..U+036F U+203F..U+2040
3681     // NameStartChar
3682     ':' '_'
3683     'A' 'B' 'C' 'D' 'E' 'F' 'G' 'H' 'I' 'J' 'K' 'L' 'M'
3684     'N' 'O' 'P' 'Q' 'R' 'S' 'T' 'U' 'V' 'W' 'X' 'Y' 'Z'
3685     'a' 'b' 'c' 'd' 'e' 'f' 'g' 'h' 'i' 'j' 'k' 'l' 'm'
3686     'n' 'o' 'p' 'q' 'r' 's' 't' 'u' 'v' 'w' 'x' 'y' 'z'
3687     U+00C0..U+00D6 U+00D8..U+00F6 U+00F8..U+02FF
3688     U+0370..U+037D U+037F..U+1FFF U+200C..U+200D
3689     U+2070..U+218F U+2C00..U+2FEF U+3001..U+D7FF
3690     U+F900..U+FDCF U+FDF0..U+FFFD U+10000..U+EFFFF
3691     ];
3692 wakaba 1.4 } // NameChar
3693    
3694     lexmode Name
3695     : extends => 'NameChar'
3696     {
3697 wakaba 1.1 Name : value := $NameStartChar11 $NameChar11*;
3698     } // Name
3699 wakaba 1.4
3700     lexmode Nmtoken
3701     : extends => 'NameChar'
3702     {
3703     Nmtoken : value := $NameChar11*;
3704     } // Nmtoken
3705 wakaba 1.1
3706     /*
3707 wakaba 1.14 S
3708 wakaba 1.1 */
3709     lexmode S {
3710 wakaba 1.14 $s := [U+0009 U+000A U+000D U+0020];
3711     S := $s+;
3712 wakaba 1.1 } // S
3713    
3714     /*
3715     Document end scanning mode
3716     */
3717     lexmode DocumentEnd
3718     : standalone
3719     : extends => 'S'
3720     {
3721     /*
3722     Processing instruction
3723     */
3724     PIO := ['<'] ['?'];
3725    
3726     /*
3727     Comment declaration
3728     */
3729     CDO := ['<'] ['!'] ['-'] ['-'];
3730     } // DocumentEnd
3731    
3732     /*
3733     Document misc scanning mode
3734    
3735     This mode scans |Misc| constructions as well
3736     as document element's start tag.
3737     */
3738     lexmode DocumentMisc
3739     : standalone
3740     : extends => 'DocumentEnd'
3741     {
3742     /*
3743     Document element start tag
3744     */
3745     STAGO := ['<'];
3746     } // DocumentMisc
3747    
3748     /*
3749     Document prolog scanning mode
3750     */
3751     lexmode DocumentProlog
3752     : standalone
3753     : extends => 'DocumentMisc'
3754     {
3755     /*
3756     |DOCTYPE| declaration
3757     */
3758     MDO := ['<'] ['!'];
3759     } // DocumentProlog
3760 wakaba 1.16
3761 wakaba 1.1 /*
3762 wakaba 1.16 Document Start Scanning Mode
3763 wakaba 1.1 */
3764     lexmode DocumentStart
3765     : standalone
3766     : extends => 'DocumentProlog'
3767     {
3768     /*
3769     XML declaration
3770     */
3771 wakaba 1.16 XDO := ['<'] ['?'] ['x'] ['m'] ['l'];
3772 wakaba 1.1 } // DocumentStart
3773    
3774     /*
3775     Comment declaration scanning mode
3776     */
3777     lexmode CommentDeclaration
3778     : standalone
3779     {
3780     /*
3781     Comment close
3782     */
3783     COM := ['-'] ['-'];
3784    
3785     /*
3786     Comment data
3787     */
3788 wakaba 1.15 ?default-token STRING : value;
3789 wakaba 1.1 } // CommentDeclaration
3790    
3791     /*
3792     Processing instruction name and |S| scanning mode
3793     */
3794     lexmode PIName
3795     : standalone
3796     : extends => 'Name'
3797     : extends => 'S'
3798     {
3799     /*
3800     Processing instruction close
3801     */
3802     PIC := ['?'] ['>'];
3803     } // PIName
3804    
3805     /*
3806 wakaba 1.16 Processing instruction name and |S| scanning mode
3807     */
3808     lexmode PINmtoken
3809     : standalone
3810     : extends => 'Nmtoken'
3811     : extends => 'S'
3812     {
3813     /*
3814     Processing instruction close
3815     */
3816     PIC := ['?'] ['>'];
3817     } // PINmtoken
3818    
3819     /*
3820 wakaba 1.1 Processing instruction data scanning mode
3821     */
3822     lexmode PIData
3823     : standalone
3824     {
3825     /*
3826     Processing instruction close
3827     */
3828     PIC := ['?'] ['>'];
3829    
3830     /*
3831     Processing instruction target data
3832     */
3833 wakaba 1.2 ?default-token DATA : value;
3834 wakaba 1.1 } // PIData
3835    
3836     /*
3837     Content of element scanning mode
3838     */
3839     lexmode ElementContent
3840     : standalone
3841     {
3842     /*
3843     Start tag open
3844     */
3845     STAGO := ['<'];
3846    
3847     /*
3848     End tag open
3849     */
3850     ETAGO := ['<'] ['/'];
3851    
3852     /*
3853     Hexadecimal character reference open
3854     */
3855     HCRO := ['&'] ['#'] ['x'];
3856    
3857     /*
3858     Numeric character reference open
3859     */
3860     CRO := ['&'] ['#'];
3861    
3862     /*
3863     General entity reference open
3864     */
3865     ERO := ['&'];
3866    
3867     /*
3868     Comment declaration open
3869     */
3870     CDO := ['<'] ['!'] ['-'] ['-'];
3871    
3872     /*
3873     CDATA section open
3874     */
3875     CDSO := ['<'] ['!'] ['[']
3876     ['C'] ['D'] ['A'] ['T'] ['A'] ['['];
3877    
3878     /*
3879     Processing instruction open
3880     */
3881     PIO := ['<'] ['?'];
3882 wakaba 1.2
3883     /*
3884     Markup section end
3885     */
3886     MSE := [']'] [']'] ['>'];
3887    
3888     /*
3889     Character data
3890     */
3891     /*
3892     Character data and/or |MSE|
3893     */
3894     ?default-token CharData : value;
3895 wakaba 1.1 } // ElementContent
3896    
3897     /*
3898     CDATA section content scanning mode
3899     */
3900     lexmode CDATASectionContent
3901     : standalone
3902     {
3903     /*
3904     Markup section end
3905     */
3906     MSE := [']'] [']'] ['>'];
3907    
3908     /*
3909     Character data
3910 wakaba 1.2 */
3911     ?default-token CData : value;
3912 wakaba 1.1 } // CDATASectionContent
3913    
3914     lexmode EntityReference
3915     : standalone
3916     : extends => 'Name'
3917     {
3918     /*
3919     Reference close
3920     */
3921     REFC := [';'];
3922     } // EntityReference
3923    
3924     lexmode NumericCharacterReference
3925     : standalone
3926     {
3927     /*
3928     Decimal number
3929     */
3930     $digit := ['0' '1' '2' '3' '4' '5' '6' '7' '8' '9'];
3931     NUMBER : value := $digit+;
3932    
3933     /*
3934     Reference close
3935     */
3936     REFC := [';'];
3937     } // NumericCharacterReference
3938    
3939     lexmode HexadecimalCharacterReference
3940     : standalone
3941     {
3942     /*
3943     Hexadecimal number
3944     */
3945     $hexdigit := ['0' '1' '2' '3' '4' '5' '6' '7' '8' '9'
3946     'A' 'B' 'C' 'D' 'E' 'F'
3947     'a' 'b' 'c' 'd' 'e' 'f'];
3948     Hex : value := $hexdigit+;
3949    
3950     /*
3951     Reference close
3952     */
3953     REFC := [';'];
3954     } // HexadecimalCharacterReference
3955    
3956 wakaba 1.16 /*
3957     The XML Declaration and Text Declaration Scanning Mode
3958     */
3959 wakaba 1.3 lexmode XMLDeclaration
3960     : standalone
3961     : extends => 'Name'
3962     : extends => 'S'
3963     {
3964    
3965     /*
3966     Value indicator
3967     */
3968     VI := ['='];
3969    
3970     /*
3971     Literal open
3972     */
3973     LIT := ['"'];
3974     LITA := [U+0027];
3975    
3976     /*
3977     Processing instruction close
3978 wakaba 1.16
3979     The |PIC|, i.e. |?>|, is split into two tokens |PIC1| and |PIC2|
3980     in this scanning mode to set |no_xml11_eol| flag in the
3981     |_XMLDeclaration_| |rule|.
3982 wakaba 1.3 */
3983 wakaba 1.16 PIC1 := ['?'];
3984     PIC2 := ['>'];
3985 wakaba 1.3 } // XMLDeclaration
3986 wakaba 1.16
3987     /*
3988     The XML Declaration or Processing Instruction Scanning Mode
3989    
3990     '<?xml' S ...
3991     (DocumentStart) (XMLDeclarationOrPI) (XMLDeclaration)
3992     '<?xml' '1' S ...
3993     (DocumentStart) (XMLDeclarationOrPI) (PINmtoken)(PIName) (PITarget)
3994     '<?xml' '-' 'stylesheet' S ...
3995     (DocumentStart) (XMLDeclarationOrPI) (PINmtoken) (PIName) (PITarget)
3996     */
3997     lexmode XMLDeclarationOrPI
3998     : standalone
3999     : extends => 'NameChar'
4000     : extends => 'S'
4001     {
4002     NameChar : value := $NameChar11;
4003     } // XMLDeclarationOrPI
4004 wakaba 1.3
4005 wakaba 1.1 lexmode StartTag
4006     : standalone
4007     : extends => 'Name'
4008     : extends => 'S'
4009     {
4010    
4011     /*
4012     Value indicator
4013     */
4014     VI := ['='];
4015    
4016     /*
4017     Literal open
4018     */
4019     LIT := ['"'];
4020     LITA := [U+0027];
4021    
4022     /*
4023     Tag close
4024     */
4025     TAGC := ['>'];
4026    
4027     /*
4028 wakaba 1.6 Null end-tag enabled start-tag close
4029 wakaba 1.1 */
4030 wakaba 1.6 NESTC := ['/'];
4031 wakaba 1.1 } // StartTag
4032    
4033     lexmode EndTag
4034     : standalone
4035     : extends => 'Name'
4036     : extends => 'S'
4037     {
4038     /*
4039     Tag close
4040     */
4041     TAGC := ['>'];
4042     } // EndTag
4043    
4044     lexmode AttributeValueLiteral_ {
4045     ERO := ['&'];
4046     CRO := ['&'] ['#'];
4047     HCRO := ['&'] ['#'] ['x'];
4048     } // AttributeValueLiteral_
4049    
4050     lexmode AttributeValueLiteral
4051     : standalone
4052     : extends => 'AttributeValueLiteral_'
4053     {
4054     LIT := ['"'];
4055 wakaba 1.3 STRING : value := [^'"' '&' '<']+;
4056 wakaba 1.1 } // AttributeValueLiteral
4057    
4058     lexmode AttributeValueLiteralA
4059     : standalone
4060     : extends => 'AttributeValueLiteral_'
4061     {
4062 wakaba 1.4 LITA := [U+0027];
4063 wakaba 1.3 STRING : value := [^U+0027 '&' '<']+;
4064 wakaba 1.1 } // AttributeValueLiteralA
4065 wakaba 1.11
4066     lexmode AttributeValueLiteralE
4067     : standalone
4068     : extends => 'AttributeValueLiteral_'
4069     {
4070     STRING : value := [^'&' '<']+;
4071     } // AttributeValueLiteralE
4072 wakaba 1.4
4073     lexmode EntityValue_ {
4074     PERO := ['%'];
4075     ERO := ['&'];
4076     CRO := ['&'] ['#'];
4077     HCRO := ['&'] ['#'] ['x'];
4078     } // EntityValue_
4079    
4080     lexmode EntityValue
4081     : standalone
4082     : extends => 'EntityValue_'
4083     {
4084     LIT := ['"'];
4085     STRING : value := [^'"' '&' '%']+;
4086     } // EntityValue
4087    
4088     lexmode EntityValueA
4089     : standalone
4090     : extends => 'EntityValue_'
4091     {
4092     LITA := [U+0027];
4093     STRING : value := [^U+0027 '&' '%']+;
4094     } // EntityValueA
4095    
4096     lexmode SystemLiteral
4097     : standalone
4098     {
4099     LIT := ['"'];
4100     ?default-token STRING : value;
4101     } // SystemLiteral
4102    
4103     lexmode SystemLiteralA
4104     : standalone
4105     {
4106     LITA := [U+0027];
4107     ?default-token STRING : value;
4108     } // SystemLiteralA
4109    
4110     lexmode DTD
4111     : standalone
4112     : extends => 'S'
4113     {
4114     /*
4115     Markup declaration open
4116     */
4117     MDO := ['<'] ['!'];
4118    
4119     /*
4120     Comment declaration open
4121     */
4122     CDO := ['<'] ['!'] ['-'] ['-'];
4123    
4124     /*
4125     Processing instruction open
4126     */
4127     PIO := ['<'] ['?'];
4128    
4129     /*
4130     Parameter entity reference open
4131     */
4132     PERO := ['%'];
4133    
4134     /*
4135     Declaration subset close
4136     */
4137     DSC := [']'];
4138    
4139     /*
4140     Contition section open
4141     */
4142     CSO := ['<'] ['!'] ['['];
4143     } // DTD
4144    
4145     /*
4146     Markup declaration scanning mode
4147    
4148     This mode is used to recognize |MDC| that terminates
4149     a comment declaration as well as the base |lexmode|
4150     for e.g. document type declaration scanning mode.
4151     */
4152     lexmode MarkupDeclaration
4153     : standalone
4154     : extends => 'Name'
4155     : extends => 'S'
4156     {
4157     /*
4158     Markup declaration close
4159     */
4160     MDC := ['>'];
4161    
4162     /*
4163     Literal open
4164     */
4165     LIT := ['"'];
4166    
4167     /*
4168     Alternative literal open
4169     */
4170     LITA := [U+0027];
4171    
4172     /*
4173     Parameter entity reference open
4174     */
4175     PERO := ['%'];
4176    
4177     /*
4178     Declaration subset open
4179     */
4180     DSO := ['['];
4181     } // MarkupDeclaration
4182    
4183     lexmode ElementDeclaration
4184     : standalone
4185     : extends => 'MarkupDeclaration'
4186     {
4187     /*
4188     Model group open
4189     */
4190     MGO := ['('];
4191    
4192     /*
4193     Model group close
4194     */
4195     MGC := [')'];
4196    
4197     /*
4198     Reserved name indicator
4199     */
4200     RNI := ['#'];
4201    
4202     /*
4203     Occurence indicators
4204     */
4205     OPT := ['?'];
4206     REP := ['*'];
4207     PLUS := ['+'];
4208    
4209     /*
4210     Connectors
4211     */
4212     OR := ['|'];
4213     SEQ := [','];
4214     } // ElementDeclaration
4215    
4216     lexmode AttlistDeclaration
4217     : standalone
4218     : extends => 'MarkupDeclaration'
4219     {
4220     /*
4221     Enumeration group open
4222     */
4223     EGO := ['('];
4224    
4225     /*
4226     Enumeration group close
4227     */
4228     EGC := [')'];
4229    
4230     /*
4231     Enumeration choice delimiter
4232     */
4233     OR := ['|'];
4234    
4235     /*
4236     Reserved name indicator
4237     */
4238     RNI := ['#'];
4239     } // AttlistDeclaration
4240    
4241     lexmode Enumeration
4242     : standalone
4243     : extends => 'Nmtoken'
4244     : extends => 'S'
4245     {
4246     /*
4247     Enumeration group close
4248     */
4249     EGC := [')'];
4250    
4251     /*
4252     Enumeration choice delimiter
4253     */
4254     OR := ['|'];
4255     } // Enumeration
4256    
4257 wakaba 1.1
4258     token-error default : default {
4259     lang:Perl {
4260 wakaba 1.3 my $location;
4261     __CODE{xp|get-location-from-token::
4262     $token => {$token},
4263     $result => {$location},
4264     }__;
4265     my $continue = __DOMCore:ERROR{xp|wf-syntax-error::
4266 wakaba 1.1 xp|error-token => {$token},
4267     DOMCore|location => {$location},
4268     }__;
4269     unless ($continue) {
4270     __EXCEPTION{DOMLS|PARSE_ERR::
4271     }__;
4272     }
4273     }
4274     } // default
4275 wakaba 1.5
4276     @XMLTests:
4277     @@XMLTest:
4278 wakaba 1.15 @@@QName: xp.char.xml10.test
4279     @@@DEnt:
4280     @@@@test:value:
4281     <?xml version="1.0"?>
4282     <p>$u0009$u000A$u000D$u0020$uD7FF$uE000$uFFFD$U00010000$U0010FFFF</p>
4283     @@@test:domTree:
4284     document {
4285     xml-version: '1.0';
4286     element {
4287     text-content: U+0009 U+000A U+000A U+0020 U+D7FF
4288     U+E000 U+FFFD U+10000 U+10FFFF;
4289     }
4290     }
4291     @@XMLTest:
4292     @@@QName: xp.char.xml11.test
4293     @@@DEnt:
4294     @@@@test:value:
4295     <?xml version="1.1"?>
4296     <p>$u0009$u000A$u000D$u0020$uD7FF$uE000$uFFFD$U00010000$U0010FFFF</p>
4297     @@@test:domTree:
4298     document {
4299     xml-version: '1.1';
4300     element {
4301     text-content: U+0009 U+000A U+000A U+0020 U+D7FF
4302     U+E000 U+FFFD U+10000 U+10FFFF;
4303     }
4304     }
4305     @@XMLTest:
4306     @@@QName: xp.char.xml10.c0.test
4307     @@@DEnt:
4308     @@@@test:value:
4309     <?xml version="1.0"?>
4310     <p>$u0000$u0001$u0002$u0003$u0004$u0005$u0006$u0007$u0008$u000B$
4311     $u000C$u000E$u000F$u0010$u0011$u0012$u0013$u0014$u0015$u0016$
4312     $u0017$u0018$u0019$u001A$u001B$u001C$u001D$u001E$u001F</p>
4313     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 4); } /* U+0000 */
4314     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 5); } /* U+0001 */
4315     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 6); } /* U+0002 */
4316     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 7); } /* U+0003 */
4317     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 8); } /* U+0004 */
4318     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 9); } /* U+0005 */
4319     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 10); } /* U+0006 */
4320     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 11); } /* U+0007 */
4321     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 12); } /* U+0008 */
4322     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 13); } /* U+000B */
4323     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 14); } /* U+000C */
4324     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 15); } /* U+000E */
4325     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 16); } /* U+000F */
4326     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 17); } /* U+0010 */
4327     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 18); } /* U+0011 */
4328     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 19); } /* U+0012 */
4329     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 20); } /* U+0013 */
4330     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 21); } /* U+0014 */
4331     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 22); } /* U+0015 */
4332     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 23); } /* U+0016 */
4333     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 24); } /* U+0017 */
4334     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 25); } /* U+0018 */
4335     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 26); } /* U+0019 */
4336     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 27); } /* U+001A */
4337     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 28); } /* U+001B */
4338     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 29); } /* U+001C */
4339     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 30); } /* U+001D */
4340     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 31); } /* U+001E */
4341     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 32); } /* U+001F */
4342     @@XMLTest:
4343     @@@QName: xp.char.xml11.c0.test
4344     @@@DEnt:
4345     @@@@test:value:
4346     <?xml version="1.1"?>
4347     <p>$u0000$u0001$u0002$u0003$u0004$u0005$u0006$u0007$u0008$u000B$
4348     $u000C$u000E$u000F$u0010$u0011$u0012$u0013$u0014$u0015$u0016$
4349     $u0017$u0018$u0019$u001A$u001B$u001C$u001D$u001E$u001F</p>
4350     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 4); } /* U+0000 */
4351     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 5); } /* U+0001 */
4352     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 6); } /* U+0002 */
4353     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 7); } /* U+0003 */
4354     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 8); } /* U+0004 */
4355     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 9); } /* U+0005 */
4356     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 10); } /* U+0006 */
4357     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 11); } /* U+0007 */
4358     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 12); } /* U+0008 */
4359     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 13); } /* U+000B */
4360     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 14); } /* U+000C */
4361     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 15); } /* U+000E */
4362     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 16); } /* U+000F */
4363     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 17); } /* U+0010 */
4364     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 18); } /* U+0011 */
4365     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 19); } /* U+0012 */
4366     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 20); } /* U+0013 */
4367     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 21); } /* U+0014 */
4368     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 22); } /* U+0015 */
4369     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 23); } /* U+0016 */
4370     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 24); } /* U+0017 */
4371     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 25); } /* U+0018 */
4372     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 26); } /* U+0019 */
4373     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 27); } /* U+001A */
4374     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 28); } /* U+001B */
4375     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 29); } /* U+001C */
4376     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 30); } /* U+001D */
4377     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 31); } /* U+001E */
4378     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 32); } /* U+001F */
4379     @@XMLTest:
4380     @@@QName: xp.char.xml10.c1.test
4381     @@@DEnt:
4382     @@@@test:value:
4383     <?xml version="1.0"?>
4384     <p>$u007F$u0080$u0081$u0082$u0083$u0084$u0086$u0087$u0088$
4385     $u0089$u008A$u008B$u008C$
4386     $u008D$u008E$u008F$u0090$u0091$u0092$u0093$u0094$u0095$u0096$
4387     $u0097$u0098$u0099$u009A$u009B$u009C$u009D$u009E$u009F$u0085</p>
4388     @@@test:domTree:
4389     document {
4390     xml-version: '1.0';
4391     element {
4392     text-content: U+007F U+0080 U+0081 U+0082 U+0083 U+0084 U+0086
4393     U+0087 U+0088 U+0089 U+008A U+008B U+008C U+008D
4394     U+008E U+008F U+0090 U+0091 U+0092 U+0093 U+0094
4395     U+0095 U+0096 U+0097 U+0098 U+0099 U+009A U+009B
4396     U+009C U+009D U+009E U+009F U+0085;
4397     }
4398     }
4399     @@XMLTest:
4400     @@@QName: xp.char.xml11.c1.test
4401     @@@DEnt:
4402     @@@@test:value:
4403     <?xml version="1.1"?>
4404     <p>$u007F$u0080$u0081$u0082$u0083$u0084$u0086$u0087$u0088$
4405     $u0089$u008A$u008B$u008C$
4406     $u008D$u008E$u008F$u0090$u0091$u0092$u0093$u0094$u0095$u0096$
4407     $u0097$u0098$u0099$u009A$u009B$u009C$u009D$u009E$u009F$u0085</p>
4408     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 4); } /* U+007F */
4409     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 5); } /* U+0080 */
4410     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 6); } /* U+0081 */
4411     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 7); } /* U+0082 */
4412     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 8); } /* U+0083 */
4413     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 9); } /* U+0084 */
4414     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 10); } /* U+0086 */
4415     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 11); } /* U+0087 */
4416     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 12); } /* U+0088 */
4417     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 13); } /* U+0089 */
4418     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 14); } /* U+008A */
4419     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 15); } /* U+008B */
4420     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 16); } /* U+008C */
4421     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 17); } /* U+008D */
4422     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 18); } /* U+008E */
4423     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 19); } /* U+008F */
4424     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 20); } /* U+0090 */
4425     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 21); } /* U+0091 */
4426     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 22); } /* U+0092 */
4427     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 23); } /* U+0093 */
4428     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 24); } /* U+0094 */
4429     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 25); } /* U+0095 */
4430     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 26); } /* U+0096 */
4431     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 27); } /* U+0097 */
4432     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 28); } /* U+0098 */
4433     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 29); } /* U+0099 */
4434     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 30); } /* U+009A */
4435     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 31); } /* U+009B */
4436     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 32); } /* U+009C */
4437     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 33); } /* U+009D */
4438     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 34); } /* U+009E */
4439     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 35); } /* U+009F */
4440    
4441     @@XMLTest:
4442 wakaba 1.12 @@@QName: xp.syntax.empty.test
4443     @@@DEnt:
4444     @@@@test:value: \
4445     @@@c:erred:
4446     <[[xp:wf-syntax-error]]> { (1, 1); }
4447     @@XMLTest:
4448     @@@QName: xp.syntax.space.test
4449     @@@DEnt:
4450 wakaba 1.13 @@@@test:value: \
4451 wakaba 1.12 @@@c:erred:
4452     <[[xp:wf-syntax-error]]> { (1, 4); }
4453     @@XMLTest:
4454     @@@QName: xp.syntax.newlines.test
4455     @@@DEnt:
4456     @@@@test:value:
4457     \
4458     \
4459     \
4460     @@@c:erred:
4461     <[[xp:wf-syntax-error]]> { (3, 1); }
4462    
4463     @@XMLTest:
4464 wakaba 1.6 @@@QName: xp.only.docel.test
4465 wakaba 1.5 @@@DEnt:
4466     @@@@test:value:
4467     <p></p>
4468     @@@test:domTree:
4469     document {
4470     xml-version: '1.0';
4471 wakaba 1.6 xml-encoding: null;
4472     xml-standalone: false;
4473     element {
4474     namespace-uri: null;
4475     prefix: null;
4476     local-name: 'p';
4477     text-content: '';
4478     }
4479     }
4480     @@XMLTest:
4481     @@@QName: xp.only.docel.emptyelemtag.test
4482     @@@DEnt:
4483     @@@@test:value:
4484     <p/>
4485     @@@test:domTree:
4486     document {
4487     xml-version: '1.0';
4488     xml-encoding: null;
4489     xml-standalone: false;
4490 wakaba 1.5 element {
4491     namespace-uri: null;
4492     prefix: null;
4493     local-name: 'p';
4494     text-content: '';
4495     }
4496     }
4497 wakaba 1.15 @@XMLTest:
4498     @@@QName: xp.root.s.1.test
4499     @@@DEnt:
4500     @@@@test:value:
4501     <?xml version="1.0"?>$u0020$u000D$u000A$u0009
4502     <p></p>
4503     @@@test:domTree:
4504     document {
4505     element { }
4506     }
4507    
4508     @@XMLTest:
4509     @@@QName: xp.Name.1.test
4510     @@@DEnt:
4511     @@@@test:value: <name/>
4512     @@@test:domTree:
4513     document {
4514     element {
4515     node-name: 'name';
4516     }
4517     }
4518     @@XMLTest:
4519     @@@QName: xp.Name.2.test
4520     @@@DEnt:
4521     @@@@test:value: <name0/>
4522     @@@test:domTree:
4523     document {
4524     element {
4525     node-name: 'name0';
4526     }
4527     }
4528     @@enImplNote:
4529     @@@ddid: xml11name
4530     @@@@:
4531     {TODO:: XML 1.1 Name tests required
4532     }
4533    
4534     @@XMLTest:
4535     @@@QName: xp.content.mse.1.test
4536     @@@DEnt:
4537     @@@@test:value:
4538     <p>]]></p>
4539     @@@c:erred:
4540     <[[xp|wf-syntax-error]]> { (1, 4)..(1, 6); }
4541     @@XMLTest:
4542     @@@QName: xp.content.mse.2.test
4543     @@@DEnt:
4544     @@@@test:value:
4545     <p>aaa]]>bbb</p>
4546     @@@c:erred:
4547     <[[xp|wf-syntax-error]]> { (1, 7)..(1, 9); }
4548    
4549     @@XMLTest:
4550     @@@QName: xp.root.comment.1.test
4551     @@@DEnt:
4552     @@@@test:value:
4553     <!--comment data-->
4554     <p/>
4555     @@@test:domTree:
4556     document {
4557     comment {
4558     data: 'comment data';
4559     }
4560     element { }
4561     }
4562     @@XMLTest:
4563     @@@QName: xp.root.comment.2.test
4564     @@@DEnt:
4565     @@@@test:value:
4566     <!---->
4567     <p/>
4568     @@@test:domTree:
4569     document {
4570     comment {
4571     data: '';
4572     }
4573     element { }
4574     }
4575     @@XMLTest:
4576     @@@QName: xp.root.after.pi.comment.1.test
4577     @@@DEnt:
4578     @@@@test:value:
4579     <?pi?>
4580     <!--comment data-->
4581     <p/>
4582     @@@test:domTree:
4583     document {
4584     pi { }
4585     comment {
4586     data: 'comment data';
4587     }
4588     element { }
4589     }
4590     @@XMLTest:
4591     @@@QName: xp.root.after.pi.comment.2.test
4592     @@@DEnt:
4593     @@@@test:value:
4594     <?pi?>
4595     <!---->
4596     <p/>
4597     @@@test:domTree:
4598     document {
4599     pi { }
4600     comment {
4601     data: '';
4602     }
4603     element { }
4604     }
4605     @@XMLTest:
4606     @@@QName: xp.root.after.element.comment.1.test
4607     @@@DEnt:
4608     @@@@test:value:
4609     <p/>
4610     <!--comment data-->
4611     @@@test:domTree:
4612     document {
4613     element { }
4614     comment {
4615     data: 'comment data';
4616     }
4617     }
4618     @@XMLTest:
4619     @@@QName: xp.root.after.element.comment.2.test
4620     @@@DEnt:
4621     @@@@test:value:
4622     <p/>
4623     <!---->
4624     @@@test:domTree:
4625     document {
4626     element { }
4627     comment {
4628     data: '';
4629     }
4630     }
4631     @@XMLTest:
4632     @@@QName: xp.doctype.intsubset.comment.1.test
4633     @@@DEnt:
4634     @@@@test:value:
4635     <!DOCTYPE a [
4636     <!--comment data-->
4637     ]>
4638     <p/>
4639     @@@test:domTree:
4640     document {
4641     document-type { }
4642     element { }
4643     }
4644     @@XMLTest:
4645     @@@QName: xp.doctype.intsubset.comment.2.test
4646     @@@DEnt:
4647     @@@@test:value:
4648     <!DOCTYPE a [
4649     <!---->
4650     ]>
4651     <p/>
4652     @@@test:domTree:
4653     document {
4654     document-type { }
4655     element { }
4656     }
4657     @@XMLTest:
4658     @@@QName: xp.doctype.intsubset.comment.3.test
4659     @@@DEnt:
4660     @@@@test:value:
4661     <!DOCTYPE a [
4662     <?pi?>
4663     <!---->
4664     ]>
4665     <p/>
4666     @@@test:domTree:
4667     document {
4668     document-type {
4669     pi { }
4670     }
4671     element { }
4672     }
4673     @@XMLTest:
4674     @@@QName: xp.content.comment.1.test
4675     @@@DEnt:
4676     @@@@test:value:
4677     <p><!--comment data--></p>
4678     @@@test:domTree:
4679     document {
4680     element {
4681     comment {
4682     data: 'comment data';
4683     }
4684     }
4685     }
4686     @@XMLTest:
4687     @@@QName: xp.content.comment.2.test
4688     @@@DEnt:
4689     @@@@test:value:
4690     <p><!----></p>
4691     @@@test:domTree:
4692     document {
4693     element {
4694     comment {
4695     data: '';
4696     }
4697     }
4698     }
4699     @@XMLTest:
4700     @@@QName: xp.content.comment.3.test
4701     @@@DEnt:
4702     @@@@test:value:
4703     <p>aaaaa<!---->bbbbb</p>
4704     @@@test:domTree:
4705     document {
4706     element {
4707     text {
4708     data: 'aaaaa';
4709     }
4710     comment {
4711     data: '';
4712     }
4713     text {
4714     data: 'bbbbb';
4715     }
4716     }
4717     }
4718     @@XMLTest:
4719     @@@QName: xp.content.comment.--.1.test
4720     @@@DEnt:
4721     @@@@test:value:
4722     <p><!--data--data--></p>
4723     @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 12)..(1, 17); }
4724     @@XMLTest:
4725     @@@QName: xp.content.comment.---gt.test
4726     @@@DEnt:
4727     @@@@test:value:
4728     <p><!--data---></p>
4729     @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 12)..(1, 15); }
4730 wakaba 1.13
4731     @@XMLTest:
4732     @@@QName: xp.xmldecl.version.1.0.test
4733     @@@DEnt:
4734     @@@@test:value:
4735     <?xml version="1.0"?>
4736     <p></p>
4737     @@@test:domTree:
4738     document {
4739     xml-version: '1.0';
4740     xml-encoding: null;
4741     xml-standalone: false;
4742     element { }
4743     }
4744     @@XMLTest:
4745     @@@QName: xp.xmldecl.version.1.0.lita.test
4746     @@@DEnt:
4747     @@@@test:value:
4748     <?xml version='1.0'?>
4749     <p></p>
4750     @@@test:domTree:
4751     document {
4752     xml-version: '1.0';
4753     xml-encoding: null;
4754     xml-standalone: false;
4755     element { }
4756     }
4757     @@XMLTest:
4758     @@@QName: xp.xmldecl.version.1.0.s.test
4759     @@@DEnt:
4760     @@@@test:value:
4761     <?xml version = "1.0" ?>
4762     <p></p>
4763     @@@test:domTree:
4764     document {
4765     xml-version: '1.0';
4766     xml-encoding: null;
4767     xml-standalone: false;
4768     element { }
4769     }
4770     @@XMLTest:
4771     @@@QName: xp.xmldecl.version.1.1.test
4772     @@@DEnt:
4773     @@@@test:value:
4774     <?xml version="1.1"?>
4775     <p></p>
4776     @@@test:domTree:
4777     document {
4778     xml-version: '1.1';
4779     xml-encoding: null;
4780     xml-standalone: false;
4781     element { }
4782     }
4783    
4784     @@XMLTest:
4785     @@@QName: xp.xmldecl.version.1.0.encoding.usascii.test
4786     @@@DEnt:
4787     @@@@test:value:
4788     <?xml version="1.0" encoding="US-ascii"?>
4789     <p></p>
4790     @@@test:domTree:
4791     document {
4792     xml-version: '1.0';
4793     xml-encoding: 'US-ascii';
4794     xml-standalone: false;
4795     element { }
4796     }
4797     @@XMLTest:
4798     @@@QName: xp.xmldecl.version.1.0.encoding.usascii.lita.test
4799     @@@DEnt:
4800     @@@@test:value:
4801     <?xml version="1.0" encoding='US-ascii'?>
4802     <p></p>
4803     @@@test:domTree:
4804     document {
4805     xml-version: '1.0';
4806     xml-encoding: 'US-ascii';
4807     xml-standalone: false;
4808     element { }
4809     }
4810     @@XMLTest:
4811     @@@QName: xp.xmldecl.version.1.0.encoding.usascii.s.test
4812     @@@DEnt:
4813     @@@@test:value:
4814     <?xml version="1.0" encoding = "US-ascii" ?>
4815     <p></p>
4816     @@@test:domTree:
4817     document {
4818     xml-version: '1.0';
4819     xml-encoding: 'US-ascii';
4820     xml-standalone: false;
4821     element { }
4822     }
4823    
4824     @@XMLTest:
4825     @@@QName: xp.xmldecl.version.1.0.encoding.usascii.standalone.yes.test
4826     @@@DEnt:
4827     @@@@test:value:
4828     <?xml version="1.0" encoding="us-ascii" standalone="yes"?>
4829     <p></p>
4830     @@@test:domTree:
4831     document {
4832     xml-version: '1.0';
4833     xml-encoding: 'us-ascii';
4834     xml-standalone: true;
4835     element { }
4836     }
4837     @@XMLTest:
4838     @@@QName: xp.xmldecl.version.1.0.encoding.usascii.standalone.no.test
4839     @@@DEnt:
4840     @@@@test:value:
4841     <?xml version="1.0" encoding="us-ascii" standalone="no"?>
4842     <p></p>
4843     @@@test:domTree:
4844     document {
4845     xml-version: '1.0';
4846     xml-encoding: 'us-ascii';
4847     xml-standalone: false;
4848     element { }
4849     }
4850     @@XMLTest:
4851     @@@QName: xp.xmldecl.version.1.0.encoding.usascii.standalone.yes.lita.test
4852     @@@DEnt:
4853     @@@@test:value:
4854     <?xml version="1.0" encoding="us-ascii" standalone='yes'?>
4855     <p></p>
4856     @@@test:domTree:
4857     document {
4858     xml-version: '1.0';
4859     xml-encoding: 'us-ascii';
4860     xml-standalone: true;
4861     element { }
4862     }
4863     @@XMLTest:
4864     @@@QName: xp.xmldecl.version.1.0.encoding.usascii.standalone.yes.s.test
4865     @@@DEnt:
4866     @@@@test:value:
4867     <?xml version="1.0" encoding="us-ascii" standalone = "yes" ?>
4868     <p></p>
4869     @@@test:domTree:
4870     document {
4871     xml-version: '1.0';
4872     xml-encoding: 'us-ascii';
4873     xml-standalone: true;
4874     element { }
4875     }
4876 wakaba 1.14 @@XMLTest:
4877     @@@QName: xp.xmldecl.no.encoding.but.standalone.attr.test
4878     @@@DEnt:
4879     @@@@test:value:
4880     <?xml version="1.0" standalone="yes"?>
4881     <p></p>
4882     @@@test:domTree:
4883     document {
4884     xml-version: '1.0';
4885     xml-encoding: null;
4886     xml-standalone: true;
4887     element { }
4888     }
4889     @@XMLTest:
4890     @@@QName: xp.xmldecl.encoding.encname.test
4891     @@@DEnt:
4892     @@@@test:value:
4893     <?xml version="1.0" encoding="a-._01-"?>
4894     <p></p>
4895     @@@test:domTree:
4896     document {
4897     xml-version: '1.0';
4898     xml-encoding: 'a-._01-';
4899     xml-standalone: false;
4900     element { }
4901     }
4902    
4903     @@XMLTest:
4904     @@@QName: xp.xmldecl.no.s.no.attr.test
4905     @@@DEnt:
4906     @@@@test:value:
4907     <?xml?>
4908     <p></p>
4909     @@@c:erred:
4910 wakaba 1.16 <[[xp:wf-syntax-error]]> { (1, 1)..(1, 7); }
4911 wakaba 1.14 @@XMLTest:
4912     @@@QName: xp.xmldecl.s.no.attr.test
4913     @@@DEnt:
4914     @@@@test:value:
4915     <?xml ?>
4916     <p></p>
4917     @@@c:erred:
4918     <[[xp:wf-syntax-error]]> { (1, 8)..(1, 9); }
4919     @@XMLTest:
4920     @@@QName: xp.xmldecl.unknown.attr.test
4921     @@@DEnt:
4922     @@@@test:value:
4923     <?xml unknown="value"?>
4924     <p></p>
4925     @@@c:erred:
4926     <[[xp:wf-syntax-error]]> { (1, 8)..(1, 22); }
4927     @@XMLTest:
4928     @@@QName: xp.xmldecl.version.unknown.attr.test
4929     @@@DEnt:
4930     @@@@test:value:
4931     <?xml version="1.0" unknown="value"?>
4932     <p></p>
4933     @@@c:erred:
4934     <[[xp:wf-syntax-error]]> { (1, 21)..(1, 35); }
4935     @@XMLTest:
4936     @@@QName: xp.xmldecl.version.encoding.unknown.attr.test
4937     @@@DEnt:
4938     @@@@test:value:
4939     <?xml version="1.0" encoding="us-ascii" unknown="value"?>
4940     <p></p>
4941     @@@c:erred:
4942     <[[xp:wf-syntax-error]]> { (1, 41)..(1, 55); }
4943     @@XMLTest:
4944     @@@QName: xp.xmldecl.version.encoding.standalone.unknown.attr.test
4945     @@@DEnt:
4946     @@@@test:value:
4947     <?xml version="1.0" encoding="us-ascii" standalone="yes"
4948     unknown="value"?>
4949     <p></p>
4950     @@@c:erred:
4951     <[[xp:wf-syntax-error]]> { (2, 1)..(2, 15); }
4952     @@XMLTest:
4953     @@@QName: xp.xmldecl.no.version.but.encoding.attr.test
4954     @@@DEnt:
4955     @@@@test:value:
4956     <?xml encoding="us-ascii"?>
4957     <p></p>
4958     @@@c:erred:
4959     <[[xp:wf-syntax-error]]> { (1, 7)..(1, 25); }
4960     @@XMLTest:
4961     @@@QName: xp.xmldecl.no.version.but.standalone.attr.test
4962     @@@DEnt:
4963     @@@@test:value:
4964     <?xml standalone="yes"?>
4965     <p></p>
4966     @@@c:erred:
4967     <[[xp:wf-syntax-error]]> { (1, 7)..(1, 24); }
4968     @@XMLTest:
4969     @@@QName: xp.xmldecl.version.unsupported.test
4970     @@@DEnt:
4971     @@@@test:value:
4972     <?xml version="1.2"?>
4973     <p></p>
4974     @@@c:erred:
4975     <[[xp:wf-unsupported-xml-version]]> { (1, 7)..(1, 19); }
4976     @@XMLTest:
4977     @@@QName: xp.xmldecl.version.unsupported.2.test
4978     @@@DEnt:
4979     @@@@test:value:
4980     <?xml version=" 1.0 "?>
4981     <p></p>
4982     @@@c:erred:
4983     <[[xp:wf-unsupported-xml-version]]> { (1, 7)..(1, 21); }
4984     @@XMLTest:
4985     @@@QName: xp.xmldecl.version.unsupported.3.test
4986     @@@DEnt:
4987     @@@@test:value:
4988     <?xml version="01.00"?>
4989     <p></p>
4990     @@@c:erred:
4991     <[[xp:wf-unsupported-xml-version]]> { (1, 7)..(1, 21); }
4992     @@XMLTest:
4993     @@@QName: xp.xmldecl.encoding.malformed.1.test
4994     @@@DEnt:
4995     @@@@test:value:
4996     <?xml version="1.0" encoding="0088"?>
4997     <p></p>
4998     @@@c:erred:
4999     <[[xp:wf-malformed-enc-name]]> { (1, 21)..(1, 35); }
5000     @@XMLTest:
5001     @@@QName: xp.xmldecl.encoding.malformed.2.test
5002     @@@DEnt:
5003     @@@@test:value:
5004     <?xml version="1.0" encoding="D.V.D!"?>
5005     <p></p>
5006     @@@c:erred:
5007     <[[xp:wf-malformed-enc-name]]> { (1, 21)..(1, 38); }
5008     @@XMLTest:
5009     @@@QName: xp.xmldecl.standalone.malformed.1.test
5010     @@@DEnt:
5011     @@@@test:value:
5012     <?xml version="1.0" standalone="true"?>
5013     <p></p>
5014     @@@c:erred:
5015     <[[xp:wf-malformed-xml-standalone]]> { (1, 21)..(1, 38); }
5016     @@XMLTest:
5017     @@@QName: xp.xmldecl.standalone.malformed.2.test
5018     @@@DEnt:
5019     @@@@test:value:
5020     <?xml version="1.0" standalone="YES"?>
5021     <p></p>
5022     @@@c:erred:
5023     <[[xp:wf-malformed-xml-standalone]]> { (1, 21)..(1, 37); }
5024     @@XMLTest:
5025     @@@QName: xp.xmldecl.standalone.malformed.3.test
5026     @@@DEnt:
5027     @@@@test:value:
5028     <?xml version="1.0" standalone="no "?>
5029     <p></p>
5030     @@@c:erred:
5031     <[[xp:wf-malformed-xml-standalone]]> { (1, 21)..(1, 38); }
5032 wakaba 1.6
5033     @@XMLTest:
5034 wakaba 1.14 @@@QName: xp.no-xmldecl.xml...-pi.test
5035     @@@DEnt:
5036     @@@@test:value:
5037     <?xmldeclaration?>
5038     <a></a>
5039     @@@test:domTree:
5040     document {
5041     pi {
5042     node-name: 'xmldeclaration';
5043     node-value: '';
5044     }
5045     element { }
5046     }
5047     @@XMLTest:
5048     @@@QName: xp.no-xmldecl.xml...-pi.after.document.element.test
5049     @@@DEnt:
5050     @@@@test:value:
5051     <a></a>
5052     <?xmldeclaration?>
5053     @@@test:domTree:
5054     document {
5055     element { }
5056     pi {
5057     node-name: 'xmldeclaration';
5058     node-value: '';
5059     }
5060     }
5061     @@XMLTest:
5062     @@@QName: xp.no-xmldecl.xml...-pi.in.document.element.test
5063     @@@DEnt:
5064     @@@@test:value:
5065     <a>
5066     <?xmldeclaration?>
5067     </a>
5068     @@@test:domTree:
5069     document {
5070     element {
5071     text { }
5072     pi {
5073     node-name: 'xmldeclaration';
5074     node-value: '';
5075     }
5076     text { }
5077     }
5078     }
5079     @@XMLTest:
5080     @@@QName: xp.no-xmldecl.xml...-pi.in.doctype.test
5081     @@@DEnt:
5082     @@@@test:value:
5083     <!DOCTYPE a [
5084     <?xmldeclaration?>
5085     ]>
5086     <a></a>
5087     @@@test:domTree:
5088     document {
5089     document-type {
5090     pi {
5091     node-name: 'xmldeclaration';
5092     node-value: '';
5093     }
5094     }
5095     element { }
5096     }
5097    
5098     @@XMLTest:
5099     @@@QName: xp.XMLdecl.test
5100     @@@DEnt:
5101     @@@@test:value:
5102     <?XML version="1.0"?>
5103     <p></p>
5104     @@@c:erred:
5105     <[[xp:wf-pi-target-is-xml]]> { (1, 1)..(1, 5); }
5106     @@XMLTest:
5107     @@@QName: xp.Xmldecl.test
5108     @@@DEnt:
5109     @@@@test:value:
5110     <?Xml version="1.0"?>
5111     <p></p>
5112     @@@c:erred:
5113     <[[xp:wf-pi-target-is-xml]]> { (1, 1)..(1, 5); }
5114     @@XMLTest:
5115     @@@QName: xp.xmldecl.after.document.element.empty.test
5116     @@@DEnt:
5117     @@@@test:value:
5118     <p></p>
5119     <?xml?>
5120     @@@c:erred:
5121     <[[xp:wf-pi-target-is-xml]]> { (2, 1)..(2, 5); }
5122     @@XMLTest:
5123     @@@QName: xp.xmldecl.after.document.element.test
5124     @@@DEnt:
5125     @@@@test:value:
5126     <p></p>
5127     <?xml version="1.0"?>
5128     @@@c:erred:
5129     <[[xp:wf-pi-target-is-xml]]> { (2, 1)..(2, 5); }
5130     @@XMLTest:
5131     @@@QName: xp.xmldecl.in.element.empty.test
5132     @@@DEnt:
5133     @@@@test:value:
5134     <p>
5135     <?xml?>
5136     </p>
5137     @@@c:erred:
5138     <[[xp:wf-pi-target-is-xml]]> { (2, 1)..(2, 5); }
5139     @@XMLTest:
5140     @@@QName: xp.xmldecl.in.element.test
5141     @@@DEnt:
5142     @@@@test:value:
5143     <p>
5144     <?xml version="1.0"?>
5145     </p>
5146     @@@c:erred:
5147     <[[xp:wf-pi-target-is-xml]]> { (2, 1)..(2, 5); }
5148     @@XMLTest:
5149     @@@QName: xp.xmldecl.after.comment.test
5150     @@@DEnt:
5151     @@@@test:value:
5152     <!---->
5153     <?xml version="1.0"?>
5154     <p></p>
5155     @@@c:erred:
5156     <[[xp:wf-pi-target-is-xml]]> { (2, 1)..(2, 5); }
5157     @@XMLTest:
5158     @@@QName: xp.xmldecl.after.comment.empty.test
5159     @@@DEnt:
5160     @@@@test:value:
5161     <!---->
5162     <?xml?>
5163     <p></p>
5164     @@@c:erred:
5165     <[[xp:wf-pi-target-is-xml]]> { (2, 1)..(2, 5); }
5166     @@XMLTest:
5167     @@@QName: xp.xmldecl.after.pi.test
5168     @@@DEnt:
5169     @@@@test:value:
5170     <?xml-declaration?>
5171     <?xml version="1.0"?>
5172     <p></p>
5173     @@@c:erred:
5174     <[[xp:wf-pi-target-is-xml]]> { (2, 1)..(2, 5); }
5175     @@XMLTest:
5176     @@@QName: xp.xmldecl.after.pi.empty.test
5177     @@@DEnt:
5178     @@@@test:value:
5179     <?xml-declaration?>
5180     <?xml?>
5181     <p></p>
5182     @@@c:erred:
5183     <[[xp:wf-pi-target-is-xml]]> { (2, 1)..(2, 5); }
5184     @@XMLTest:
5185 wakaba 1.16 @@@QName: xp.xmldecl.after.pi.2.test
5186     @@@DEnt:
5187     @@@@test:value:
5188     <?declaration?>
5189     <?xml version="1.0"?>
5190     <p></p>
5191     @@@c:erred:
5192     <[[xp:wf-pi-target-is-xml]]> { (2, 1)..(2, 5); }
5193     @@XMLTest:
5194     @@@QName: xp.xmldecl.after.pi.empty.2.test
5195     @@@DEnt:
5196     @@@@test:value:
5197     <?declaration?>
5198     <?xml?>
5199     <p></p>
5200     @@@c:erred:
5201     <[[xp:wf-pi-target-is-xml]]> { (2, 1)..(2, 5); }
5202     @@XMLTest:
5203 wakaba 1.14 @@@QName: xp.xmldecl.after.doctype.test
5204     @@@DEnt:
5205     @@@@test:value:
5206     <!DOCTYPE a>
5207     <?xml version="1.0"?>
5208     <p></p>
5209     @@@c:erred:
5210     <[[xp:wf-pi-target-is-xml]]> { (2, 1)..(2, 5); }
5211     @@XMLTest:
5212     @@@QName: xp.xmldecl.after.doctype.empty.test
5213     @@@DEnt:
5214     @@@@test:value:
5215     <!DOCTYPE a>
5216     <?xml?>
5217     <p></p>
5218     @@@c:erred:
5219     <[[xp:wf-pi-target-is-xml]]> { (2, 1)..(2, 5); }
5220     @@XMLTest:
5221     @@@QName: xp.xmldecl.in.doctype.test
5222     @@@DEnt:
5223     @@@@test:value:
5224     <!DOCTYPE a [
5225     <?xml version="1.0"?>
5226     ]>
5227     <p></p>
5228     @@@c:erred:
5229     <[[xp:wf-pi-target-is-xml]]> { (2, 1)..(2, 5); }
5230     @@XMLTest:
5231     @@@QName: xp.xmldecl.in.doctype.empty.test
5232     @@@DEnt:
5233     @@@@test:value:
5234     <!DOCTYPE a [
5235     <?xml?>
5236     ]>
5237     <p></p>
5238     @@@c:erred:
5239     <[[xp:wf-pi-target-is-xml]]> { (2, 1)..(2, 5); }
5240    
5241     @@XMLTest:
5242     @@@QName: xp.pi.before.element.empty.test
5243     @@@DEnt:
5244     @@@@test:value:
5245     <?target?>
5246     <a></a>
5247     @@@test:domTree:
5248     document {
5249     pi {
5250     node-name: 'target';
5251     node-value: '';
5252     }
5253     element { }
5254     }
5255     @@XMLTest:
5256     @@@QName: xp.pi.before.element.s.test
5257     @@@DEnt:
5258     @@@@test:value:
5259     <?target ?>
5260     <a></a>
5261     @@@test:domTree:
5262     document {
5263     pi {
5264     node-name: 'target';
5265     node-value: '';
5266     }
5267     element { }
5268     }
5269     @@XMLTest:
5270     @@@QName: xp.pi.before.element.string.test
5271     @@@DEnt:
5272     @@@@test:value:
5273     <?target string?>
5274     <a></a>
5275     @@@test:domTree:
5276     document {
5277     pi {
5278     node-name: 'target';
5279     node-value: 'string';
5280     }
5281     element { }
5282     }
5283     @@XMLTest:
5284     @@@QName: xp.pi.before.element.string.s.test
5285     @@@DEnt:
5286     @@@@test:value:
5287     <?target string ?>
5288     <a></a>
5289     @@@test:domTree:
5290     document {
5291     pi {
5292     node-name: 'target';
5293     node-value: 'string ';
5294     }
5295     element { }
5296     }
5297     @@XMLTest:
5298     @@@QName: xp.pi.before.element.gt.test
5299     @@@DEnt:
5300     @@@@test:value:
5301     <?target string>string?>
5302     <a></a>
5303     @@@test:domTree:
5304     document {
5305     pi {
5306     node-name: 'target';
5307     node-value: 'string>string';
5308     }
5309     element { }
5310     }
5311     @@XMLTest:
5312     @@@QName: xp.pi.doctype.empty.test
5313     @@@DEnt:
5314     @@@@test:value:
5315     <!DOCTYPE a [
5316     <?target?>
5317     ]>
5318     <a></a>
5319     @@@test:domTree:
5320     document {
5321     document-type {
5322     pi {
5323     node-name: 'target';
5324     node-value: '';
5325     }
5326     }
5327     element { }
5328     }
5329    
5330     @@XMLTest:
5331     @@@QName: xp.pi.no.target.test
5332     @@@DEnt:
5333     @@@@test:value:
5334     <??>
5335     <p></p>
5336     @@@c:erred:
5337     <[[xp:wf-syntax-error]]> { (1, 3)..(1, 4); }
5338     @@XMLTest:
5339     @@@QName: xp.pi.no.target.2.test
5340     @@@DEnt:
5341     @@@@test:value:
5342     <? ?>
5343     <p></p>
5344     @@@c:erred:
5345     <[[xp:wf-syntax-error]]> { (1, 3)..(1, 4); }
5346     @@XMLTest:
5347     @@@QName: xp.pi.bad.target.1.test
5348     @@@DEnt:
5349     @@@@test:value:
5350     <?target! ?>
5351     <p></p>
5352     @@@c:erred:
5353     <[[xp:wf-syntax-error]]> { (1, 9)..(1, 9); }
5354     @@XMLTest:
5355     @@@QName: xp.pi.bad.target.2.test
5356     @@@DEnt:
5357     @@@@test:value:
5358     <?0target ?>
5359     <p></p>
5360     @@@c:erred:
5361     <[[xp:wf-syntax-error]]> { (1, 3)..(1, 3); }
5362    
5363     @@XMLTest:
5364 wakaba 1.15 @@@QName: xp.cdatasection.empty.1.test
5365     @@@DEnt:
5366     @@@@test:value:
5367     <p><![CDATA[]]></p>
5368     @@@test:domTree:
5369     document {
5370     element {
5371     cdata-section {
5372     data: '';
5373     }
5374     }
5375     }
5376     @@XMLTest:
5377     @@@QName: xp.cdatasection.empty.2.test
5378     @@@DEnt:
5379     @@@@test:value:
5380     <p>aa<![CDATA[]]>bb</p>
5381     @@@test:domTree:
5382     document {
5383     element {
5384     text { data: 'aa'; }
5385     cdata-section {
5386     data: '';
5387     }
5388     text { data: 'bb'; }
5389     }
5390     }
5391     @@XMLTest:
5392     @@@QName: xp.cdatasection.1.test
5393     @@@DEnt:
5394     @@@@test:value:
5395     <p><![CDATA[abcdefg]]></p>
5396     @@@test:domTree:
5397     document {
5398     element {
5399     cdata-section {
5400     data: 'abcdefg';
5401     }
5402     }
5403     }
5404     @@XMLTest:
5405     @@@QName: xp.cdatasection.2.test
5406     @@@DEnt:
5407     @@@@test:value:
5408     <p>aa<![CDATA[abcdefg]]>bb</p>
5409     @@@test:domTree:
5410     document {
5411     element {
5412     text { data: 'aa'; }
5413     cdata-section {
5414     data: 'abcdefg';
5415     }
5416     text { data: 'bb'; }
5417     }
5418     }
5419     @@XMLTest:
5420     @@@QName: xp.cdatasection.ref.1.test
5421     @@@DEnt:
5422     @@@@test:value:
5423     <p><![CDATA[a&amp;&#x32;&#32;%abc;&def;]]&gt;b]]></p>
5424     @@@test:domTree:
5425     document {
5426     element {
5427     cdata-section {
5428     data: 'a&amp;&#x32;&#32;%abc;&def;]]&gt;b';
5429     }
5430     }
5431     }
5432     @@XMLTest:
5433     @@@QName: xp.cdatasection.in.general.entity.test
5434     @@@DEnt:
5435     @@@@test:value:
5436     <!DOCTYPE p [
5437     <!ENTITY cdata "<![CDATA[text]]>">
5438     ]>
5439     <p>&cdata;</p>
5440     @@@test:domTree:
5441     document {
5442     document-type {
5443     general-entity {
5444     node-name: 'cdata';
5445     cdata-section {
5446     data: 'text';
5447     }
5448     }
5449     }
5450     element {
5451     general-entity-reference {
5452 wakaba 1.19 is-expanded: true;
5453 wakaba 1.15 cdata-section {
5454     data: 'text';
5455     }
5456     }
5457     }
5458     }
5459     @@XMLTest:
5460     @@@QName: xp.cdatasection.no.mse.test
5461     @@@DEnt:
5462     @@@@test:value:
5463     <p><![CDATA[text</p>
5464     @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 21); }
5465     @@XMLTest:
5466     @@@QName: xp.cdatasection.nest.test
5467     @@@DEnt:
5468     @@@@test:value:
5469     <p><![CDATA[text01<![CDATA[txt2]]>text3]]></p>
5470     @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 40)..(1, 42); }
5471    
5472     @@XMLTest:
5473 wakaba 1.6 @@@QName: xp.doctype.empty.test
5474     @@@DEnt:
5475     @@@@test:value:
5476     <!DOCTYPE a>
5477     <a></a>
5478     @@@test:domTree:
5479     document {
5480     xml-version: '1.0';
5481     xml-encoding: null;
5482     xml-standalone: false;
5483     document-type {
5484     node-name: 'a';
5485 wakaba 1.17 public-id: null;
5486     system-id: null;
5487 wakaba 1.6 }
5488     element {
5489     namespace-uri: null;
5490     prefix: null;
5491     local-name: 'a';
5492     text-content: '';
5493     }
5494     }
5495 wakaba 1.15 @@XMLTest:
5496     @@@QName: xp.doctype.empty.after.document.element.test
5497     @@@DEnt:
5498     @@@@test:value:
5499     <a></a>
5500     <!DOCTYPE a>
5501     @@@c:erred: <[[xp|wf-syntax-error]]> { (2, 1)..(2, 12); }
5502     @@XMLTest:
5503     @@@QName: xp.doctype.empty.in.element.test
5504     @@@DEnt:
5505     @@@@test:value:
5506     <a>
5507     <!DOCTYPE a>
5508     </a>
5509     @@@c:erred: <[[xp|wf-syntax-error]]> { (2, 1)..(2, 12); }
5510     @@XMLTest:
5511     @@@QName: xp.doctype.empty.dup.test
5512     @@@DEnt:
5513     @@@@test:value:
5514     <!DOCTYPE a>
5515     <!DOCTYPE a>
5516     <a></a>
5517     @@@c:erred: <[[xp|wf-syntax-error]]> { (2, 1)..(2, 12); }
5518     @@XMLTest:
5519     @@@QName: xp.doctype.empty.in.intsubset.test
5520     @@@DEnt:
5521     @@@@test:value:
5522     <!DOCTYPE a [
5523     <!DOCTYPE a>
5524     ]>
5525     <a></a>
5526     @@@c:erred: <[[xp|wf-syntax-error]]> { (2, 1)..(2, 12); }
5527 wakaba 1.16 @@XMLTest:
5528     @@@QName: xp.doctype.no.s.no.name.test
5529     @@@DEnt:
5530     @@@@test:value:
5531     <!DOCTYPE>
5532     <a></a>
5533     @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 10); }
5534     @@XMLTest:
5535     @@@QName: xp.doctype.no.name.test
5536     @@@DEnt:
5537     @@@@test:value:
5538     <!DOCTYPE >
5539     <a></a>
5540     @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 11); }
5541     @@XMLTest:
5542     @@@QName: xp.doctype.name.s.test
5543     @@@DEnt:
5544     @@@@test:value:
5545     <!DOCTYPE aa >
5546     <aa></aa>
5547     @@@test:domTree:
5548     document {
5549     document-type {
5550     node-name: 'aa';
5551 wakaba 1.17 public-id: null;
5552     system-id: null;
5553 wakaba 1.16 }
5554     element { }
5555     }
5556     @@XMLTest:
5557     @@@QName: xp.doctype.no.mdc.test
5558     @@@DEnt:
5559     @@@@test:value:
5560     <!DOCTYPE aa
5561     <aa></aa>
5562     @@@c:erred: <[[xp|wf-syntax-error]]> { (2, 1); }
5563 wakaba 1.6
5564     @@XMLTest:
5565 wakaba 1.16 @@@QName: xp.doctype.intsubset.empty.1.test
5566 wakaba 1.6 @@@DEnt:
5567     @@@@test:value:
5568 wakaba 1.16 <!DOCTYPE a []>
5569 wakaba 1.6 <a></a>
5570     @@@test:domTree:
5571     document {
5572     xml-version: '1.0';
5573     xml-encoding: null;
5574     xml-standalone: false;
5575     document-type {
5576     node-name: 'a';
5577 wakaba 1.17 public-id: null;
5578     system-id: null;
5579 wakaba 1.6 }
5580     element {
5581     namespace-uri: null;
5582     prefix: null;
5583     local-name: 'a';
5584     text-content: '';
5585     }
5586     }
5587     @@XMLTest:
5588 wakaba 1.16 @@@QName: xp.doctype.intsubset.empty.2.test
5589 wakaba 1.6 @@@DEnt:
5590     @@@@test:value:
5591     <!DOCTYPE a [
5592 wakaba 1.16
5593 wakaba 1.6 ]>
5594     <a></a>
5595     @@@test:domTree:
5596     document {
5597     xml-version: '1.0';
5598     xml-encoding: null;
5599     xml-standalone: false;
5600     document-type {
5601     node-name: 'a';
5602 wakaba 1.17 public-id: null;
5603     system-id: null;
5604 wakaba 1.6 }
5605     element {
5606     namespace-uri: null;
5607     prefix: null;
5608     local-name: 'a';
5609     text-content: '';
5610     }
5611     }
5612     @@XMLTest:
5613 wakaba 1.16 @@@QName: xp.doctype.intsubset.empty.3.test
5614 wakaba 1.6 @@@DEnt:
5615     @@@@test:value:
5616 wakaba 1.16 <!DOCTYPE a[]>
5617 wakaba 1.6 <a></a>
5618     @@@test:domTree:
5619     document {
5620     document-type {
5621     node-name: 'a';
5622 wakaba 1.17 public-id: null;
5623     system-id: null;
5624 wakaba 1.6 }
5625 wakaba 1.16 element { }
5626     }
5627     @@XMLTest:
5628     @@@QName: xp.doctype.intsubset.empty.4.test
5629     @@@DEnt:
5630     @@@@test:value:
5631     <!DOCTYPE a[] >
5632     <a></a>
5633     @@@test:domTree:
5634     document {
5635     document-type {
5636     node-name: 'a';
5637 wakaba 1.17 public-id: null;
5638     system-id: null;
5639 wakaba 1.6 }
5640 wakaba 1.16 element { }
5641 wakaba 1.6 }
5642     @@XMLTest:
5643 wakaba 1.16 @@@QName: xp.doctype.intsubset.no.dsc.1.test
5644     @@@DEnt:
5645     @@@@test:value:
5646     <!DOCTYPE a [>
5647     <a></a>
5648     @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 14); }
5649     @@XMLTest:
5650     @@@QName: xp.doctype.intsubset.no.dsc.2.test
5651 wakaba 1.6 @@@DEnt:
5652     @@@@test:value:
5653     <!DOCTYPE a [
5654     <a></a>
5655 wakaba 1.16 @@@c:erred: <[[xp|wf-syntax-error]]> { (2, 1); }
5656     @@XMLTest:
5657     @@@QName: xp.doctype.intsubset.no.dsc.3.test
5658     @@@DEnt:
5659     @@@@test:value:
5660     <!DOCTYPE a [
5661     @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 14); }
5662     @@XMLTest:
5663     @@@QName: xp.doctype.intsubset.no.mdc.1.test
5664     @@@DEnt:
5665     @@@@test:value:
5666     <!DOCTYPE a []
5667     <a/>
5668     @@@c:erred: <[[xp|wf-syntax-error]]> { (2, 1); }
5669     @@XMLTest:
5670     @@@QName: xp.doctype.intsubset.no.mdc.2.test
5671     @@@DEnt:
5672     @@@@test:value:
5673     <!DOCTYPE a []]>
5674     <a/>
5675     @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 15); }
5676 wakaba 1.17 @@XMLTest:
5677     @@@QName: xp.doctype.pubid.sysid.1.test
5678     @@@DEnt:
5679     @@@@test:value:
5680     <!DOCTYPE a PUBLIC "pubid" "sysid">
5681     <a/>
5682     @@@test:domTree:
5683     document {
5684     document-type {
5685     node-name: 'a';
5686     public-id: 'pubid';
5687     system-id: 'sysid';
5688     }
5689     element { }
5690     }
5691     @@XMLTest:
5692     @@@QName: xp.doctype.pubid.sysid.2.test
5693     @@@DEnt:
5694     @@@@test:value:
5695     <!DOCTYPE a PUBLIC 'pubid' "sysid">
5696     <a/>
5697     @@@test:domTree:
5698     document {
5699     document-type {
5700     node-name: 'a';
5701     public-id: 'pubid';
5702     system-id: 'sysid';
5703     }
5704     element { }
5705     }
5706     @@XMLTest:
5707     @@@QName: xp.doctype.pubid.sysid.3.test
5708     @@@DEnt:
5709     @@@@test:value:
5710     <!DOCTYPE a PUBLIC "pubid" 'sysid'>
5711     <a/>
5712     @@@test:domTree:
5713     document {
5714     document-type {
5715     node-name: 'a';
5716     public-id: 'pubid';
5717     system-id: 'sysid';
5718     }
5719     element { }
5720     }
5721     @@XMLTest:
5722     @@@QName: xp.doctype.pubid.sysid.4.test
5723     @@@DEnt:
5724     @@@@test:value:
5725     <!DOCTYPE a PUBLIC 'pubid' 'sysid'>
5726     <a/>
5727     @@@test:domTree:
5728     document {
5729     document-type {
5730     node-name: 'a';
5731     public-id: 'pubid';
5732     system-id: 'sysid';
5733     }
5734     element { }
5735     }
5736     @@XMLTest:
5737     @@@QName: xp.doctype.pubid.sysid.5.test
5738     @@@DEnt:
5739     @@@@test:value:
5740     <!DOCTYPE a PUBLIC "pubid" "sysid" >
5741     <a/>
5742     @@@test:domTree:
5743     document {
5744     document-type {
5745     node-name: 'a';
5746     public-id: 'pubid';
5747     system-id: 'sysid';
5748     }
5749     element { }
5750     }
5751     @@XMLTest:
5752     @@@QName: xp.doctype.pubid.sysid.6.test
5753     @@@DEnt:
5754     @@@@test:value:
5755     <!DOCTYPE a PUBLIC 'pubid' 'sysid' >
5756     <a/>
5757     @@@test:domTree:
5758     document {
5759     document-type {
5760     node-name: 'a';
5761     public-id: 'pubid';
5762     system-id: 'sysid';
5763     }
5764     element { }
5765     }
5766     @@XMLTest:
5767     @@@QName: xp.doctype.pubid.sysid.intsubset.1.test
5768     @@@DEnt:
5769     @@@@test:value:
5770     <!DOCTYPE a PUBLIC "pubid" "sysid"[]>
5771     <a/>
5772     @@@test:domTree:
5773     document {
5774     document-type {
5775     node-name: 'a';
5776     public-id: 'pubid';
5777     system-id: 'sysid';
5778     }
5779     element { }
5780     }
5781     @@XMLTest:
5782     @@@QName: xp.doctype.pubid.sysid.intsubset.2.test
5783     @@@DEnt:
5784     @@@@test:value:
5785     <!DOCTYPE a PUBLIC "pubid" "sysid" []>
5786     <a/>
5787     @@@test:domTree:
5788     document {
5789     document-type {
5790     node-name: 'a';
5791     public-id: 'pubid';
5792     system-id: 'sysid';
5793     }
5794     element { }
5795     }
5796     @@XMLTest:
5797     @@@QName: xp.doctype.pubid.sysid.intsubset.3.test
5798     @@@DEnt:
5799     @@@@test:value:
5800     <!DOCTYPE a PUBLIC 'pubid' 'sysid'[]>
5801     <a/>
5802     @@@test:domTree:
5803     document {
5804     document-type {
5805     node-name: 'a';
5806     public-id: 'pubid';
5807     system-id: 'sysid';
5808     }
5809     element { }
5810     }
5811     @@XMLTest:
5812     @@@QName: xp.doctype.pubid.sysid.intsubset.4.test
5813     @@@DEnt:
5814     @@@@test:value:
5815     <!DOCTYPE a PUBLIC 'pubid' 'sysid' []>
5816     <a/>
5817     @@@test:domTree:
5818     document {
5819     document-type {
5820     node-name: 'a';
5821     public-id: 'pubid';
5822     system-id: 'sysid';
5823     }
5824     element { }
5825     }
5826     @@XMLTest:
5827     @@@QName: xp.doctype.sysid.1.test
5828     @@@DEnt:
5829     @@@@test:value:
5830     <!DOCTYPE a SYSTEM "sysid">
5831     <a/>
5832     @@@test:domTree:
5833     document {
5834     document-type {
5835     node-name: 'a';
5836     public-id: null;
5837     system-id: 'sysid';
5838     }
5839     element { }
5840     }
5841     @@XMLTest:
5842     @@@QName: xp.doctype.sysid.2.test
5843     @@@DEnt:
5844     @@@@test:value:
5845     <!DOCTYPE a SYSTEM 'sysid'>
5846     <a/>
5847     @@@test:domTree:
5848     document {
5849     document-type {
5850     node-name: 'a';
5851     public-id: null;
5852     system-id: 'sysid';
5853     }
5854     element { }
5855     }
5856     @@XMLTest:
5857     @@@QName: xp.doctype.sysid.3.test
5858     @@@DEnt:
5859     @@@@test:value:
5860     <!DOCTYPE a SYSTEM "sysid" >
5861     <a/>
5862     @@@test:domTree:
5863     document {
5864     document-type {
5865     node-name: 'a';
5866     public-id: null;
5867     system-id: 'sysid';
5868     }
5869     element { }
5870     }
5871     @@XMLTest:
5872     @@@QName: xp.doctype.sysid.4.test
5873     @@@DEnt:
5874     @@@@test:value:
5875     <!DOCTYPE a SYSTEM 'sysid' >
5876     <a/>
5877     @@@test:domTree:
5878     document {
5879     document-type {
5880     node-name: 'a';
5881     public-id: null;
5882     system-id: 'sysid';
5883     }
5884     element { }
5885     }
5886     @@XMLTest:
5887     @@@QName: xp.doctype.sysid.intsubset.1.test
5888     @@@DEnt:
5889     @@@@test:value:
5890     <!DOCTYPE a SYSTEM "sysid"[]>
5891     <a/>
5892     @@@test:domTree:
5893     document {
5894     document-type {
5895     node-name: 'a';
5896     public-id: null;
5897     system-id: 'sysid';
5898     }
5899     element { }
5900     }
5901     @@XMLTest:
5902     @@@QName: xp.doctype.sysid.intsubset.2.test
5903     @@@DEnt:
5904     @@@@test:value:
5905     <!DOCTYPE a SYSTEM "sysid" []>
5906     <a/>
5907     @@@test:domTree:
5908     document {
5909     document-type {
5910     node-name: 'a';
5911     public-id: null;
5912     system-id: 'sysid';
5913     }
5914     element { }
5915     }
5916     @@XMLTest:
5917     @@@QName: xp.doctype.sysid.intsubset.3.test
5918     @@@DEnt:
5919     @@@@test:value:
5920     <!DOCTYPE a SYSTEM 'sysid'[]>
5921     <a/>
5922     @@@test:domTree:
5923     document {
5924     document-type {
5925     node-name: 'a';
5926     public-id: null;
5927     system-id: 'sysid';
5928     }
5929     element { }
5930     }
5931     @@XMLTest:
5932     @@@QName: xp.doctype.sysid.intsubset.4.test
5933     @@@DEnt:
5934     @@@@test:value:
5935     <!DOCTYPE a SYSTEM 'sysid' []>
5936     <a/>
5937     @@@test:domTree:
5938     document {
5939     document-type {
5940     node-name: 'a';
5941     public-id: null;
5942     system-id: 'sysid';
5943     }
5944     element { }
5945     }
5946     @@XMLTest:
5947     @@@QName: xp.doctype.public.stago.test
5948     @@@DEnt:
5949     @@@@test:value:
5950     <!DOCTYPE a PUBLIC<a/>
5951     @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 19); }
5952     @@XMLTest:
5953     @@@QName: xp.doctype.public.mdc.test
5954     @@@DEnt:
5955     @@@@test:value:
5956     <!DOCTYPE a PUBLIC>
5957     <a/>
5958     @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 19); }
5959     @@XMLTest:
5960     @@@QName: xp.doctype.public.s.stago.test
5961     @@@DEnt:
5962     @@@@test:value:
5963     <!DOCTYPE a PUBLIC <a/>
5964     @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 20); }
5965     @@XMLTest:
5966     @@@QName: xp.doctype.public.s.mdc.test
5967     @@@DEnt:
5968     @@@@test:value:
5969     <!DOCTYPE a PUBLIC >
5970     <a/>
5971     @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 20); }
5972     @@XMLTest:
5973     @@@QName: xp.doctype.public.lit.test
5974     @@@DEnt:
5975     @@@@test:value:
5976     <!DOCTYPE a PUBLIC"p" "s">
5977     <a/>
5978     @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 19); }
5979     @@XMLTest:
5980     @@@QName: xp.doctype.public.lita.test
5981     @@@DEnt:
5982     @@@@test:value:
5983     <!DOCTYPE a PUBLIC'p' "s">
5984     <a/>
5985     @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 19); }
5986     @@XMLTest:
5987     @@@QName: xp.doctype.pubid.lit.lita.unmatched.1.test
5988     @@@DEnt:
5989     @@@@test:value:
5990     <!DOCTYPE a PUBLIC "p' "s">
5991     <a/>
5992     @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 25); }
5993     @@XMLTest:
5994     @@@QName: xp.doctype.pubid.lit.lita.unmatched.2.test
5995     @@@DEnt:
5996     @@@@test:value:
5997     <!DOCTYPE a PUBLIC "p' 's'><a/>
5998     @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 32); }
5999     @@XMLTest:
6000     @@@QName: xp.doctype.pubid.lita.lit.unmatched.1.test
6001     @@@DEnt:
6002     @@@@test:value:
6003     <!DOCTYPE a PUBLIC 'p" "s"><a/>
6004     @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 32); }
6005     @@XMLTest:
6006     @@@QName: xp.doctype.pubid.lita.lit.unmatched.2.test
6007     @@@DEnt:
6008     @@@@test:value:
6009     <!DOCTYPE a PUBLIC 'p" 's'>
6010     <a/>
6011     @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 21)..(1, 25); }
6012     @@XMLTest:
6013     @@@QName: xp.doctype.public.s.lit.mdc.test
6014     @@@DEnt:
6015     @@@@test:value:
6016     <!DOCTYPE a PUBLIC "><a/>
6017     @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 26); }
6018     @@XMLTest:
6019     @@@QName: xp.doctype.public.s.lita.mdc.test
6020     @@@DEnt:
6021     @@@@test:value:
6022     <!DOCTYPE a PUBLIC '><a/>
6023     @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 26); }
6024     @@XMLTest:
6025     @@@QName: xp.doctype.public.lit.pubid.lit.mdc.test
6026     @@@DEnt:
6027     @@@@test:value:
6028     <!DOCTYPE a PUBLIC "p">
6029     <a/>
6030     @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 23); }
6031     @@XMLTest:
6032     @@@QName: xp.doctype.public.lita.pubid.lita.mdc.test
6033     @@@DEnt:
6034     @@@@test:value:
6035     <!DOCTYPE a PUBLIC 'p'>
6036     <a/>
6037     @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 23); }
6038     @@XMLTest:
6039     @@@QName: xp.doctype.public.lit.pubid.lit.s.mdc.test
6040     @@@DEnt:
6041     @@@@test:value:
6042     <!DOCTYPE a PUBLIC "p" >
6043     <a/>
6044     @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 24); }
6045     @@XMLTest:
6046     @@@QName: xp.doctype.public.lita.pubid.lita.s.mdc.test
6047     @@@DEnt:
6048     @@@@test:value:
6049     <!DOCTYPE a PUBLIC 'p' >
6050     <a/>
6051     @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 24); }
6052     @@XMLTest:
6053     @@@QName: xp.doctype.public.lit.pubid.lit.s.lit.mdc.test
6054     @@@DEnt:
6055     @@@@test:value:
6056     <!DOCTYPE a PUBLIC "p" "><a/>
6057     @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 30); }
6058     @@XMLTest:
6059     @@@QName: xp.doctype.public.lit.pubid.lit.s.lita.mdc.test
6060     @@@DEnt:
6061     @@@@test:value:
6062     <!DOCTYPE a PUBLIC "p" '><a/>
6063     @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 30); }
6064     @@XMLTest:
6065     @@@QName: xp.doctype.public.lita.pubid.lita.s.lit.mdc.test
6066     @@@DEnt:
6067     @@@@test:value:
6068     <!DOCTYPE a PUBLIC 'p' "><a/>
6069     @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 30); }
6070     @@XMLTest:
6071     @@@QName: xp.doctype.public.lita.pubid.lita.s.lita.mdc.test
6072     @@@DEnt:
6073     @@@@test:value:
6074     <!DOCTYPE a PUBLIC 'p' '><a/>
6075     @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 30); }
6076     @@XMLTest:
6077     @@@QName: xp.doctype.public.lit.pubid.lit.lit.lita.unmatched.mdc.test
6078     @@@DEnt:
6079     @@@@test:value:
6080     <!DOCTYPE a PUBLIC "p" "s'><a/>
6081     @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 32); }
6082     @@XMLTest:
6083     @@@QName: xp.doctype.public.lita.pubid.lita.lita.lit.unmatched.mdc.test
6084     @@@DEnt:
6085     @@@@test:value:
6086     <!DOCTYPE a PUBLIC 'p' 's"><a/>
6087     @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 32); }
6088     @@XMLTest:
6089     @@@QName: xp.doctype.pubid.sysid.stago.1.test
6090     @@@DEnt:
6091     @@@@test:value:
6092     <!DOCTYPE a PUBLIC "p" "s"<a/>
6093     @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 27); }
6094     @@XMLTest:
6095     @@@QName: xp.doctype.pubid.sysid.stago.2.test
6096     @@@DEnt:
6097     @@@@test:value:
6098     <!DOCTYPE a PUBLIC "p" 's'<a/>
6099     @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 27); }
6100     @@XMLTest:
6101     @@@QName: xp.doctype.pubid.sysid.stago.s.1.test
6102     @@@DEnt:
6103     @@@@test:value:
6104     <!DOCTYPE a PUBLIC "p" "s" <a/>
6105     @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 28); }
6106     @@XMLTest:
6107     @@@QName: xp.doctype.pubid.sysid.stago.s.2.test
6108     @@@DEnt:
6109     @@@@test:value:
6110     <!DOCTYPE a PUBLIC "p" 's' <a/>
6111     @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 28); }
6112 wakaba 1.16
6113     @@XMLTest:
6114     @@@QName: xp.endofline.1.0.crlf.test
6115     @@@DEnt:
6116     @@@@test:value:
6117     <?xml version="1.0"?>
6118     <p>aaa$u000D$u000Abbb</p>
6119 wakaba 1.6 @@@test:domTree:
6120     document {
6121     xml-version: '1.0';
6122 wakaba 1.16 element {
6123     text-content: 'aaa' U+000A 'bbb';
6124 wakaba 1.6 }
6125 wakaba 1.16 }
6126     @@XMLTest:
6127     @@@QName: xp.endofline.1.1.crlf.test
6128     @@@DEnt:
6129     @@@@test:value:
6130     <?xml version="1.1"?>
6131     <p>aaa$u000D$u000Abbb</p>
6132     @@@test:domTree:
6133     document {
6134     xml-version: '1.1';
6135 wakaba 1.6 element {
6136 wakaba 1.16 text-content: 'aaa' U+000A 'bbb';
6137 wakaba 1.6 }
6138     }
6139     @@XMLTest:
6140 wakaba 1.16 @@@QName: xp.endofline.1.0.crnl.test
6141 wakaba 1.6 @@@DEnt:
6142     @@@@test:value:
6143 wakaba 1.16 <?xml version="1.0"?>
6144     <p>aaa$u000D$u0085bbb</p>
6145 wakaba 1.6 @@@test:domTree:
6146     document {
6147     xml-version: '1.0';
6148 wakaba 1.16 element {
6149     text-content: 'aaa' U+000A U+0085 'bbb';
6150 wakaba 1.6 }
6151 wakaba 1.16 }
6152     @@XMLTest:
6153     @@@QName: xp.endofline.1.1.crnl.test
6154     @@@DEnt:
6155     @@@@test:value:
6156     <?xml version="1.1"?>
6157     <p>aaa$u000D$u0085bbb</p>
6158     @@@test:domTree:
6159     document {
6160     xml-version: '1.1';
6161 wakaba 1.6 element {
6162 wakaba 1.16 text-content: 'aaa' U+000A 'bbb';
6163 wakaba 1.6 }
6164     }
6165     @@XMLTest:
6166 wakaba 1.16 @@@QName: xp.endofline.1.0.nl.test
6167 wakaba 1.6 @@@DEnt:
6168     @@@@test:value:
6169 wakaba 1.16 <?xml version="1.0"?>
6170     <p>aaa$u0085bbb</p>
6171 wakaba 1.6 @@@test:domTree:
6172     document {
6173     xml-version: '1.0';
6174     element {
6175 wakaba 1.16 text-content: 'aaa' U+0085 'bbb';
6176 wakaba 1.6 }
6177     }
6178     @@XMLTest:
6179 wakaba 1.16 @@@QName: xp.endofline.1.1.nl.test
6180 wakaba 1.6 @@@DEnt:
6181     @@@@test:value:
6182 wakaba 1.16 <?xml version="1.1"?>
6183     <p>aaa$u0085bbb</p>
6184     @@@test:domTree:
6185     document {
6186     xml-version: '1.1';
6187     element {
6188     text-content: 'aaa' U+000A 'bbb';
6189     }
6190     }
6191     @@XMLTest:
6192     @@@QName: xp.endofline.1.0.ls.test
6193     @@@DEnt:
6194     @@@@test:value:
6195     <?xml version="1.0"?>
6196     <p>aaa$u2028bbb</p>
6197     @@@test:domTree:
6198     document {
6199     xml-version: '1.0';
6200     element {
6201     text-content: 'aaa' U+2028 'bbb';
6202     }
6203     }
6204     @@XMLTest:
6205     @@@QName: xp.endofline.1.1.ls.test
6206     @@@DEnt:
6207     @@@@test:value:
6208     <?xml version="1.1"?>
6209     <p>aaa$u2028bbb</p>
6210     @@@test:domTree:
6211     document {
6212     xml-version: '1.1';
6213     element {
6214     text-content: 'aaa' U+000A 'bbb';
6215     }
6216     }
6217     @@XMLTest:
6218     @@@QName: xp.endofline.1.0.cr.test
6219     @@@DEnt:
6220     @@@@test:value:
6221     <?xml version="1.0"?>
6222     <p>aaa$u000Dbbb</p>
6223     @@@test:domTree:
6224     document {
6225     xml-version: '1.0';
6226     element {
6227     text-content: 'aaa' U+000A 'bbb';
6228     }
6229     }
6230     @@XMLTest:
6231     @@@QName: xp.endofline.1.1.cr.test
6232     @@@DEnt:
6233     @@@@test:value:
6234     <?xml version="1.1"?>
6235     <p>aaa$u000Dbbb</p>
6236     @@@test:domTree:
6237     document {
6238     xml-version: '1.1';
6239     element {
6240     text-content: 'aaa' U+000A 'bbb';
6241     }
6242     }
6243     @@XMLTest:
6244     @@@QName: xp.endofline.1.0.lf.test
6245     @@@DEnt:
6246     @@@@test:value:
6247     <?xml version="1.0"?>
6248     <p>aaa$u000Abbb</p>
6249     @@@test:domTree:
6250     document {
6251     xml-version: '1.0';
6252     element {
6253     text-content: 'aaa' U+000A 'bbb';
6254     }
6255     }
6256     @@XMLTest:
6257     @@@QName: xp.endofline.1.1.lf.test
6258     @@@DEnt:
6259     @@@@test:value:
6260     <?xml version="1.1"?>
6261     <p>aaa$u000Abbb</p>
6262     @@@test:domTree:
6263     document {
6264     xml-version: '1.1';
6265     element {
6266     text-content: 'aaa' U+000A 'bbb';
6267     }
6268     }
6269     @@XMLTest:
6270     @@@QName: xp.xml10.endofline.nl.in.xmldecl.1.test
6271     @@@DEnt:
6272     @@@@test:value:
6273     <?xml$u0085version="1.0"?>
6274     <p/>
6275     @@@c:erred:
6276     <[[xp|fatal-xml11-end-of-line-in-xml-declaration]]> { (1, 6)..(2, 0); }
6277     @@@c:erred: <[[xp|wf-syntax-error]]> { }
6278     @@XMLTest:
6279     @@@QName: xp.xml11.endofline.nl.in.xmldecl.1.test
6280     @@@DEnt:
6281     @@@@test:value:
6282     <?xml$u0085version="1.1"?>
6283     (err)<p/>
6284     @@@c:erred:
6285     <[[xp|fatal-xml11-end-of-line-in-xml-declaration]]> { (1, 6)..(2, 0); }
6286     @@@c:erred: <[[xp|wf-syntax-error]]> { }
6287     @@XMLTest:
6288     @@@QName: xp.xml10.endofline.crnl.in.xmldecl.1.test
6289     @@@DEnt:
6290     @@@@test:value:
6291     <?xml$u000D$u0085version="1.0"?>
6292     <p/>
6293     @@@c:erred:
6294     <[[xp|fatal-xml11-end-of-line-in-xml-declaration]]> { (1, 6)..(2, 0); }
6295     @@@c:erred: <[[xp|wf-syntax-error]]> { }
6296     @@XMLTest:
6297     @@@QName: xp.xml11.endofline.crnl.in.xmldecl.1.test
6298     @@@DEnt:
6299     @@@@test:value:
6300     <?xml$u000D$u0085version="1.1"?>
6301     (err)<p/>
6302     @@@c:erred:
6303     <[[xp|fatal-xml11-end-of-line-in-xml-declaration]]> { (1, 6)..(2, 0); }
6304     @@@c:erred: <[[xp|wf-syntax-error]]> { }
6305     @@XMLTest:
6306     @@@QName: xp.xml10.endofline.ls.in.xmldecl.1.test
6307     @@@DEnt:
6308     @@@@test:value:
6309     <?xml$u2028version="1.0"?>
6310     <p/>
6311     @@@c:erred:
6312     <[[xp|fatal-xml11-end-of-line-in-xml-declaration]]> { (1, 6)..(2, 0); }
6313     @@@c:erred: <[[xp|wf-syntax-error]]> { }
6314     @@XMLTest:
6315     @@@QName: xp.xml11.endofline.ls.in.xmldecl.1.test
6316     @@@DEnt:
6317     @@@@test:value:
6318     <?xml$u2028version="1.1"?>
6319     (err)<p/>
6320     @@@c:erred:
6321     <[[xp|fatal-xml11-end-of-line-in-xml-declaration]]> { (1, 6)..(2, 0); }
6322     @@@c:erred: <[[xp|wf-syntax-error]]> { }
6323     @@XMLTest:
6324     @@@QName: xp.xml10.endofline.nl.in.xmldecl.2.test
6325     @@@DEnt:
6326     @@@@test:value:
6327     <?xml version="1.0"$u0085?>
6328     <p/>
6329     @@@c:erred:
6330     <[[xp|fatal-xml11-end-of-line-in-xml-declaration]]> { (1, 20)..(2, 0); }
6331     @@@c:erred: <[[xp|wf-syntax-error]]> { }
6332     @@XMLTest:
6333     @@@QName: xp.xml11.endofline.nl.in.xmldecl.2.test
6334     @@@DEnt:
6335     @@@@test:value:
6336     <?xml version="1.1"$u0085?>
6337     (err)<p/>
6338     @@@c:erred:
6339     <[[xp|fatal-xml11-end-of-line-in-xml-declaration]]> { (1, 20)..(2, 0); }
6340     @@@c:erred: <[[xp|wf-syntax-error]]> { }
6341     @@XMLTest:
6342     @@@QName: xp.xml10.endofline.crnl.in.xmldecl.2.test
6343     @@@DEnt:
6344     @@@@test:value:
6345     <?xml version="1.0"$u000D$u0085?>
6346     <p/>
6347     @@@c:erred:
6348     <[[xp|fatal-xml11-end-of-line-in-xml-declaration]]> { (1, 20)..(2, 0); }
6349     @@@c:erred: <[[xp|wf-syntax-error]]> { }
6350     @@XMLTest:
6351     @@@QName: xp.xml11.endofline.crnl.in.xmldecl.2.test
6352     @@@DEnt:
6353     @@@@test:value:
6354     <?xml version="1.1"$u000D$u0085?>
6355     (err)<p/>
6356     @@@c:erred:
6357     <[[xp|fatal-xml11-end-of-line-in-xml-declaration]]> { (1, 20)..(2, 0); }
6358     @@@c:erred: <[[xp|wf-syntax-error]]> { }
6359     @@XMLTest:
6360     @@@QName: xp.xml10.endofline.ls.in.xmldecl.2.test
6361     @@@DEnt:
6362     @@@@test:value:
6363     <?xml version="1.0"$u2028?>
6364     <p/>
6365     @@@c:erred:
6366     <[[xp|fatal-xml11-end-of-line-in-xml-declaration]]> { (1, 20)..(2, 0); }
6367     @@@c:erred: <[[xp|wf-syntax-error]]> { }
6368     @@XMLTest:
6369     @@@QName: xp.xml11.endofline.ls.in.xmldecl.2.test
6370     @@@DEnt:
6371     @@@@test:value:
6372     <?xml version="1.1"$u2028?>
6373     (err)<p/>
6374     @@@c:erred:
6375     <[[xp|fatal-xml11-end-of-line-in-xml-declaration]]> { (1, 20)..(2, 0); }
6376     @@@c:erred: <[[xp|wf-syntax-error]]> { }
6377     @@XMLTest:
6378     @@@QName: xp.xml10.endofline.nl.in.xmldecl.3.test
6379     @@@DEnt:
6380     @@@@test:value:
6381     <?xml $u0085version="1.0"?>
6382     <p/>
6383     @@@c:erred:
6384     <[[xp|fatal-xml11-end-of-line-in-xml-declaration]]> { (1, 7)..(2, 0); }
6385     @@@c:erred: <[[xp|wf-syntax-error]]> { }
6386     @@XMLTest:
6387     @@@QName: xp.xml11.endofline.nl.in.xmldecl.3.test
6388     @@@DEnt:
6389     @@@@test:value:
6390     <?xml $u0085version="1.1"?>
6391     (err)<p/>
6392     @@@c:erred:
6393     <[[xp|fatal-xml11-end-of-line-in-xml-declaration]]> { (1, 7)..(2, 0); }
6394     @@@c:erred: <[[xp|wf-syntax-error]]> { }
6395     @@XMLTest:
6396     @@@QName: xp.xml10.endofline.crnl.in.xmldecl.3.test
6397     @@@DEnt:
6398     @@@@test:value:
6399     <?xml $u000D$u0085version="1.0"?>
6400     <p/>
6401     @@@c:erred:
6402     <[[xp|fatal-xml11-end-of-line-in-xml-declaration]]> { (1, 7)..(2, 0); }
6403     @@@c:erred: <[[xp|wf-syntax-error]]> { }
6404     @@XMLTest:
6405     @@@QName: xp.xml11.endofline.crnl.in.xmldecl.3.test
6406     @@@DEnt:
6407     @@@@test:value:
6408     <?xml $u000D$u0085version="1.1"?>
6409     (err)<p/>
6410     @@@c:erred:
6411     <[[xp|fatal-xml11-end-of-line-in-xml-declaration]]> { (1, 7)..(2, 0); }
6412     @@@c:erred: <[[xp|wf-syntax-error]]> { }
6413     @@XMLTest:
6414     @@@QName: xp.xml10.endofline.ls.in.xmldecl.3.test
6415     @@@DEnt:
6416     @@@@test:value:
6417     <?xml $u2028version="1.0"?>
6418     <p/>
6419     @@@c:erred:
6420     <[[xp|fatal-xml11-end-of-line-in-xml-declaration]]> { (1, 7)..(2, 0); }
6421     @@@c:erred: <[[xp|wf-syntax-error]]> { }
6422     @@XMLTest:
6423     @@@QName: xp.xml11.endofline.ls.in.xmldecl.3.test
6424     @@@DEnt:
6425     @@@@test:value:
6426     <?xml $u2028version="1.1"?>
6427     (err)<p/>
6428     @@@c:erred:
6429     <[[xp|fatal-xml11-end-of-line-in-xml-declaration]]> { (1, 7)..(2, 0); }
6430     @@@c:erred: <[[xp|wf-syntax-error]]> { }
6431     @@XMLTest:
6432     @@@QName: xp.xml10implied.endofline.nl.in.pi.1.test
6433     @@@DEnt:
6434     @@@@test:value:
6435     <?xml-$u0085?>
6436     <p/>
6437     @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 7)..(2, 0); }
6438     @@XMLTest:
6439     @@@QName: xp.xml10.endofline.nl.in.pi.1.test
6440     @@@DEnt:
6441     @@@@test:value:
6442     <?xml version="1.0"?>
6443     <?xml-$u0085?>
6444     <p/>
6445     @@@c:erred: <[[xp|wf-syntax-error]]> { (2, 7)..(3, 0); }
6446     @@XMLTest:
6447     @@@QName: xp.xml11.endofline.nl.in.pi.1.test
6448     @@@DEnt:
6449     @@@@test:value:
6450     <?xml version="1.1"?>
6451     <?xml-$u0085?>
6452     <p/>
6453     @@@test:domTree:
6454     document {
6455     xml-version: '1.1';
6456     pi {
6457     node-name: 'xml-';
6458     node-value: '';
6459     }
6460     element { }
6461     }
6462     @@XMLTest:
6463     @@@QName: xp.xml10implied.endofline.crnl.in.pi.1.test
6464     @@@DEnt:
6465     @@@@test:value:
6466     <?xml-$u000D$u0085?>
6467     <p/>
6468     @@@test:domTree:
6469     document {
6470     xml-version: '1.0';
6471     pi {
6472     node-name: 'xml-';
6473     node-value: U+0085;
6474     }
6475     element { }
6476     }
6477     @@XMLTest:
6478     @@@QName: xp.xml10.endofline.crnl.in.pi.1.test
6479     @@@DEnt:
6480     @@@@test:value:
6481     <?xml version="1.0"?>
6482     <?xml-$u000D$u0085?>
6483     <p/>
6484     @@@test:domTree:
6485     document {
6486     xml-version: '1.0';
6487     pi {
6488     node-name: 'xml-';
6489     node-value: U+0085;
6490     }
6491     element { }
6492     }
6493     @@XMLTest:
6494     @@@QName: xp.xml11.endofline.crnl.in.pi.1.test
6495     @@@DEnt:
6496     @@@@test:value:
6497     <?xml version="1.1"?>
6498     <?xml-$u000D$u0085?>
6499     <p/>
6500     @@@test:domTree:
6501     document {
6502     xml-version: '1.1';
6503     pi {
6504     node-name: 'xml-';
6505     node-value: '';
6506     }
6507     element { }
6508     }
6509     @@XMLTest:
6510     @@@QName: xp.xml10implied.endofline.ls.in.pi.1.test
6511     @@@DEnt:
6512     @@@@test:value:
6513     <?xml-$u2028?>
6514     <p/>
6515     @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 7)..(2, 0); }
6516     @@XMLTest:
6517     @@@QName: xp.xml10.endofline.ls.in.pi.1.test
6518     @@@DEnt:
6519     @@@@test:value:
6520     <?xml version="1.0"?>
6521     <?xml-$u2028?>
6522     <p/>
6523     @@@c:erred: <[[xp|wf-syntax-error]]> { (2, 7)..(3, 0); }
6524     @@XMLTest:
6525     @@@QName: xp.xml11.endofline.ls.in.pi.1.test
6526     @@@DEnt:
6527     @@@@test:value:
6528     <?xml version="1.1"?>
6529     <?xml-$u2028?>
6530     <p/>
6531     @@@test:domTree:
6532     document {
6533     xml-version: '1.1';
6534     pi {
6535     node-name: 'xml-';
6536     node-value: '';
6537     }
6538     element { }
6539     }
6540     @@XMLTest:
6541     @@@QName: xp.noxmldecl.pi.pi.test
6542     @@@DEnt:
6543     @@@@test:value:
6544     <?noxml 1?><?noxml 2?><p/>
6545     @@@test:domTree:
6546     document {
6547     xml-version: '1.0';
6548     pi {
6549     node-name: 'noxml';
6550     node-value: '1';
6551     }
6552     pi {
6553     node-name: 'noxml';
6554     node-value: '2';
6555     }
6556     element { }
6557     }
6558     @@XMLTest:
6559     @@@QName: xp.noxmldecl.pi.pi.2.test
6560     @@@DEnt:
6561     @@@@test:value:
6562     <?xmlno 1?><?xmlno 2?><p/>
6563     @@@test:domTree:
6564     document {
6565     xml-version: '1.0';
6566     pi {
6567     node-name: 'xmlno';
6568     node-value: '1';
6569     }
6570     pi {
6571     node-name: 'xmlno';
6572     node-value: '2';
6573     }
6574     element { }
6575     }
6576     @@XMLTest:
6577     @@@QName: xp.noxmldecl.pi.pi.3.test
6578     @@@DEnt:
6579     @@@@test:value:
6580     <?xmln 1?><?xmln 2?><p/>
6581     @@@test:domTree:
6582     document {
6583     xml-version: '1.0';
6584     pi {
6585     node-name: 'xmln';
6586     node-value: '1';
6587     }
6588     pi {
6589     node-name: 'xmln';
6590     node-value: '2';
6591     }
6592     element { }
6593     }
6594     @@XMLTest:
6595     @@@QName: xp.noxml.s.nl.test
6596     @@@DEnt:
6597     @@@@test:value:
6598     $u0085<p/>
6599     @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 1)..(2, 0); }
6600     @@XMLTest:
6601     @@@QName: xp.noxml.s.crnl.test
6602     @@@DEnt:
6603     @@@@test:value:
6604     $u000D$u0085<p/>
6605     @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 1)..(2, 0); }
6606     @@XMLTest:
6607     @@@QName: xp.noxml.s.ls.test
6608     @@@DEnt:
6609     @@@@test:value:
6610     $u2028<p/>
6611     @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 1)..(2, 0); }
6612     @@XMLTest:
6613     @@@QName: xp.xml10.decl.s.nl.test
6614     @@@DEnt:
6615     @@@@test:value:
6616     <?xml version="1.0"?>$u0085<p/>
6617     @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 22)..(2, 0); }
6618     @@XMLTest:
6619     @@@QName: xp.xml10.decl.s.crnl.test
6620     @@@DEnt:
6621     @@@@test:value:
6622     <?xml version="1.0"?>$u000D$u0085<p/>
6623     @@@c:erred: <[[xp|wf-syntax-error]]> { (2, 0)..(3, 0); }
6624     @@XMLTest:
6625     @@@QName: xp.xml10.decl.s.ls.test
6626     @@@DEnt:
6627     @@@@test:value:
6628     <?xml version="1.0"?>$u2028<p/>
6629     @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 22)..(2, 0); }
6630     @@XMLTest:
6631     @@@QName: xp.xml11.decl.s.nl.test
6632     @@@DEnt:
6633     @@@@test:value:
6634     <?xml version="1.1"?>$u0085<p/>
6635     @@@test:domTree:
6636     document {
6637     xml-version: '1.1';
6638     element { }
6639     }
6640     @@XMLTest:
6641     @@@QName: xp.xml11.decl.s.crnl.test
6642     @@@DEnt:
6643     @@@@test:value:
6644     <?xml version="1.1"?>$u000D$u0085<p/>
6645     @@@test:domTree:
6646     document {
6647     xml-version: '1.1';
6648     element { }
6649     }
6650     @@XMLTest:
6651     @@@QName: xp.xml11.decl.s.ls.test
6652     @@@DEnt:
6653     @@@@test:value:
6654     <?xml version="1.1"?>$u2028<p/>
6655     @@@test:domTree:
6656     document {
6657     xml-version: '1.1';
6658     element { }
6659     }
6660    
6661     @@XMLTest:
6662 wakaba 1.18 @@@QName: xp.element.type.match.1.test
6663     @@@DEnt:
6664     @@@@test:value:
6665     <p></pa>(err)
6666     @@@c:erred: <[[xp|wf-element-type-match]]> { (1, 4)..(1, 8); }
6667     @@@c:erred: <[[xp|wf-syntax-error]]> { }
6668     @@XMLTest:
6669     @@@QName: xp.element.type.match.2.test
6670     @@@DEnt:
6671     @@@@test:value:
6672     <p><pa></pa></pa>(err)
6673     @@@c:erred: <[[xp|wf-element-type-match]]> { (1, 13)..(1, 17); }
6674     @@@c:erred: <[[xp|wf-syntax-error]]> { }
6675     @@XMLTest:
6676     @@@QName: xp.element.type.match.3.test
6677     @@@DEnt:
6678     @@@@test:value:
6679     <p><pa></p></p>(err)
6680     @@@c:erred: <[[xp|wf-element-type-match]]> { (1, 8)..(1, 11); }
6681     @@@c:erred: <[[xp|wf-syntax-error]]> { }
6682     @@XMLTest:
6683     @@@QName: xp.element.type.match.4.test
6684     @@@DEnt:
6685     @@@@test:value:
6686     <a:p xmlns:a="about:1"></p>(err)
6687     @@@c:erred: <[[xp|wf-element-type-match]]> { (1, 24)..(1, 27); }
6688     @@@c:erred: <[[xp|wf-syntax-error]]> { }
6689     @@XMLTest:
6690     @@@QName: xp.element.type.match.5.test
6691     @@@DEnt:
6692     @@@@test:value:
6693     <a:p xmlns:a="about:1" xmlns:b="about:1"></b:p>(err)
6694     @@@c:erred: <[[xp|wf-element-type-match]]> { (1, 42)..(1, 47); }
6695     @@@c:erred: <[[xp|wf-syntax-error]]> { }
6696    
6697     @@XMLTest:
6698     @@@QName: xp.stag.stago.name.etago.test
6699     @@@DEnt:
6700     @@@@test:value:
6701     <a</a>
6702     @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 3); }
6703     @@XMLTest:
6704     @@@QName: xp.stag.stago.name.s.etago.test
6705     @@@DEnt:
6706     @@@@test:value:
6707     <a </a>
6708     @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 4); }
6709     @@XMLTest:
6710     @@@QName: xp.stag.stago.name.s.attr.etago.test
6711     @@@DEnt:
6712     @@@@test:value:
6713     <a a="b"</a>
6714     @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 9); }
6715     @@XMLTest:
6716     @@@QName: xp.stag.stago.name.s.attr.s.attr.etago.test
6717     @@@DEnt:
6718     @@@@test:value:
6719     <a a="b" c="d"</a>
6720     @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 15); }
6721     @@XMLTest:
6722     @@@QName: xp.stag.stago.name.s.attr.s.etago.test
6723     @@@DEnt:
6724     @@@@test:value:
6725     <a a="b" </a>
6726     @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 10); }
6727     @@XMLTest:
6728     @@@QName: xp.stag.etag.1.test
6729 wakaba 1.16 @@@DEnt:
6730     @@@@test:value:
6731 wakaba 1.18 <root><a></a></root>
6732 wakaba 1.16 @@@test:domTree:
6733     document {
6734 wakaba 1.18 element {
6735     element {
6736     node-name: 'a';
6737 wakaba 1.16 }
6738     }
6739 wakaba 1.18 }
6740     @@XMLTest:
6741     @@@QName: xp.stag.etag.2.test
6742     @@@DEnt:
6743     @@@@test:value:
6744     <root><ab></ab></root>
6745     @@@test:domTree:
6746     document {
6747 wakaba 1.16 element {
6748 wakaba 1.18 element {
6749     node-name: 'ab';
6750     }
6751 wakaba 1.16 }
6752 wakaba 1.18 }
6753 wakaba 1.16 @@XMLTest:
6754 wakaba 1.18 @@@QName: xp.stag.etag.s.1.test
6755 wakaba 1.16 @@@DEnt:
6756     @@@@test:value:
6757 wakaba 1.18 <root><a ></a ></root>
6758 wakaba 1.16 @@@test:domTree:
6759     document {
6760 wakaba 1.18 element {
6761     element {
6762     node-name: 'a';
6763 wakaba 1.16 }
6764     }
6765 wakaba 1.18 }
6766     @@XMLTest:
6767     @@@QName: xp.etag.1.test
6768     @@@DEnt:
6769     @@@@test:value:
6770     <root><a/></root>
6771     @@@test:domTree:
6772     document {
6773 wakaba 1.16 element {
6774 wakaba 1.18 element {
6775     node-name: 'a';
6776     }
6777 wakaba 1.16 }
6778 wakaba 1.18 }
6779 wakaba 1.16 @@XMLTest:
6780 wakaba 1.18 @@@QName: xp.etag.2.test
6781 wakaba 1.16 @@@DEnt:
6782     @@@@test:value:
6783 wakaba 1.18 <root><a /></root>
6784 wakaba 1.16 @@@test:domTree:
6785     document {
6786     element {
6787 wakaba 1.18 element {
6788     node-name: 'a';
6789     }
6790 wakaba 1.16 }
6791 wakaba 1.18 }
6792 wakaba 1.16 @@XMLTest:
6793 wakaba 1.18 @@@QName: xp.stag.etag.attr.1.test
6794 wakaba 1.16 @@@DEnt:
6795     @@@@test:value:
6796 wakaba 1.18 <root><a at="v"></a></root>
6797 wakaba 1.16 @@@test:domTree:
6798     document {
6799 wakaba 1.18 element {
6800     element {
6801     node-name: 'a';
6802     attribute {
6803     node-name: 'at';
6804     value: 'v';
6805     }
6806 wakaba 1.16 }
6807     }
6808 wakaba 1.18 }
6809     @@XMLTest:
6810     @@@QName: xp.stag.etag.attr.2.test
6811     @@@DEnt:
6812     @@@@test:value:
6813     <root><a at="v" ></a></root>
6814     @@@test:domTree:
6815     document {
6816 wakaba 1.16 element {
6817 wakaba 1.18 element {
6818     node-name: 'a';
6819     attribute {
6820     node-name: 'at';
6821     value: 'v';
6822 wakaba 1.16 }
6823     }
6824     }
6825 wakaba 1.18 }
6826 wakaba 1.16 @@XMLTest:
6827 wakaba 1.18 @@@QName: xp.stag.etag.attr.3.test
6828 wakaba 1.16 @@@DEnt:
6829     @@@@test:value:
6830 wakaba 1.18 <root><a at ="v"></a></root>
6831 wakaba 1.16 @@@test:domTree:
6832     document {
6833 wakaba 1.18 element {
6834     element {
6835     node-name: 'a';
6836     attribute {
6837     node-name: 'at';
6838     value: 'v';
6839     }
6840 wakaba 1.16 }
6841     }
6842 wakaba 1.18 }
6843     @@XMLTest:
6844     @@@QName: xp.stag.etag.attr.4.test
6845     @@@DEnt:
6846     @@@@test:value:
6847     <root><a at= "v"></a></root>
6848     @@@test:domTree:
6849     document {
6850 wakaba 1.16 element {
6851 wakaba 1.18 element {
6852     node-name: 'a';
6853     attribute {
6854     node-name: 'at';
6855     value: 'v';
6856 wakaba 1.16 }
6857     }
6858 wakaba 1.18 }
6859     }
6860     @@XMLTest:
6861     @@@QName: xp.stag.etag.attr.5.test
6862     @@@DEnt:
6863     @@@@test:value:
6864     <root><a at='v'></a></root>
6865     @@@test:domTree:
6866     document {
6867     element {
6868     element {
6869     node-name: 'a';
6870     attribute {
6871     node-name: 'at';
6872     value: 'v';
6873 wakaba 1.16 }
6874     }
6875     }
6876 wakaba 1.18 }
6877 wakaba 1.16 @@XMLTest:
6878 wakaba 1.18 @@@QName: xp.stag.etag.attr.6.test
6879 wakaba 1.16 @@@DEnt:
6880     @@@@test:value:
6881 wakaba 1.18 <root><a at= 'v' ></a></root>
6882 wakaba 1.6 @@@test:domTree:
6883     document {
6884 wakaba 1.18 element {
6885     element {
6886     node-name: 'a';
6887     attribute {
6888     node-name: 'at';
6889     value: 'v';
6890     }
6891 wakaba 1.11 }
6892 wakaba 1.6 }
6893 wakaba 1.18 }
6894     @@XMLTest:
6895     @@@QName: xp.stag.etag.attr.attr.1.test
6896     @@@DEnt:
6897     @@@@test:value:
6898     <root><a at="v" tr="w"></a></root>
6899     @@@test:domTree:
6900     document {
6901 wakaba 1.6 element {
6902 wakaba 1.18 element {
6903     node-name: 'a';
6904     attribute {
6905     node-name: 'at';
6906     value: 'v';
6907 wakaba 1.6 }
6908 wakaba 1.18 attribute {
6909     node-name: 'tr';
6910     value: 'w';
6911 wakaba 1.6 }
6912     }
6913     }
6914 wakaba 1.18 }
6915 wakaba 1.6 @@XMLTest:
6916 wakaba 1.18 @@@QName: xp.stag.etag.attr.attr.2.test
6917 wakaba 1.6 @@@DEnt:
6918     @@@@test:value:
6919 wakaba 1.18 <root><a tr="w" at="v"></a></root>
6920 wakaba 1.6 @@@test:domTree:
6921     document {
6922 wakaba 1.18 element {
6923     element {
6924     node-name: 'a';
6925     attribute {
6926     node-name: 'at';
6927     value: 'v';
6928     }
6929     attribute {
6930     node-name: 'tr';
6931     value: 'w';
6932 wakaba 1.11 }
6933     }
6934 wakaba 1.6 }
6935 wakaba 1.18 }
6936     @@XMLTest:
6937     @@@QName: xp.stag.etag.attr.no.s.attr.test
6938     @@@DEnt:
6939     @@@@test:value:
6940     <root><a at="v"tr="w"></a></root>
6941     @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 16)..(1, 17); }
6942     @@XMLTest:
6943     @@@QName: xp.etag.attr.1.test
6944     @@@DEnt:
6945     @@@@test:value:
6946     <root><a at="v" tr="w"></a b="c"></root>
6947     @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 28); }
6948     @@XMLTest:
6949     @@@QName: xp.etag.no.etagc.1.test
6950     @@@DEnt:
6951     @@@@test:value:
6952     <root><a at="v" tr="w"></a</root>
6953     @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 27)..(1, 28); }
6954     @@XMLTest:
6955     @@@QName: xp.etag.no.etagc.2.test
6956     @@@DEnt:
6957     @@@@test:value:
6958     <root><a at="v" tr="w"></a </root>
6959     @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 29)..(1, 30); }
6960     @@XMLTest:
6961     @@@QName: xp.mtag.attr.1.test
6962     @@@DEnt:
6963     @@@@test:value:
6964     <root><a b="c"/></root>
6965     @@@test:domTree:
6966     document {
6967 wakaba 1.6 element {
6968 wakaba 1.18 element {
6969     node-name: 'a';
6970     attribute {
6971     node-name: 'b';
6972     value: 'c';
6973 wakaba 1.6 }
6974     }
6975 wakaba 1.8 }
6976 wakaba 1.18 }
6977 wakaba 1.11 @@XMLTest:
6978 wakaba 1.18 @@@QName: xp.mtag.attr.2.test
6979 wakaba 1.11 @@@DEnt:
6980     @@@@test:value:
6981 wakaba 1.18 <root><a b="c" /></root>
6982 wakaba 1.11 @@@test:domTree:
6983     document {
6984 wakaba 1.18 element {
6985     element {
6986     node-name: 'a';
6987     attribute {
6988     node-name: 'b';
6989     value: 'c';
6990     }
6991 wakaba 1.11 }
6992     }
6993 wakaba 1.18 }
6994 wakaba 1.11 @@XMLTest:
6995 wakaba 1.18 @@@QName: xp.mtag.attr.3.test
6996 wakaba 1.11 @@@DEnt:
6997     @@@@test:value:
6998 wakaba 1.18 <root><a b='c'/></root>
6999 wakaba 1.11 @@@test:domTree:
7000     document {
7001     element {
7002 wakaba 1.18 element {
7003     node-name: 'a';
7004     attribute {
7005     node-name: 'b';
7006     value: 'c';
7007     }
7008     }
7009 wakaba 1.11 }
7010 wakaba 1.18 }
7011 wakaba 1.11 @@XMLTest:
7012 wakaba 1.18 @@@QName: xp.mtag.attr.4.test
7013 wakaba 1.11 @@@DEnt:
7014     @@@@test:value:
7015 wakaba 1.18 <root><a b="c" d="e"/></root>
7016 wakaba 1.11 @@@test:domTree:
7017     document {
7018     element {
7019 wakaba 1.18 element {
7020     node-name: 'a';
7021     attribute {
7022     node-name: 'b';
7023     value: 'c';
7024     }
7025     attribute {
7026     node-name: 'd';
7027     value: 'e';
7028     }
7029 wakaba 1.11 }
7030     }
7031 wakaba 1.18 }
7032    
7033     @@XMLTest:
7034     @@@QName: xp.attvalue.lt.1.test
7035     @@@DEnt:
7036     @@@@test:value:
7037     <a b="aa<dd"/>
7038     @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 9); }
7039     @@XMLTest:
7040     @@@QName: xp.attvalue.lt.2.test
7041     @@@DEnt:
7042     @@@@test:value:
7043     <a b='aa<dd'/>
7044     @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 9); }
7045     @@XMLTest:
7046     @@@QName: xp.attvalue.amp.1.test
7047     @@@DEnt:
7048     @@@@test:value:
7049     <a b="aa& dd"/>
7050     @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 9)..(1, 12); }
7051     @@XMLTest:
7052     @@@QName: xp.attvalue.amp.2.test
7053     @@@DEnt:
7054     @@@@test:value:
7055     <a b='aa& dd'/>
7056     @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 9)..(1, 12); }
7057     @@XMLTest:
7058     @@@QName: xp.attvalue.amp.3.test
7059     @@@DEnt:
7060     @@@@test:value:
7061     <a b="aa&# dd"/>
7062     @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 9)..(1, 13); }
7063     @@XMLTest:
7064     @@@QName: xp.attvalue.amp.4.test
7065     @@@DEnt:
7066     @@@@test:value:
7067     <a b="aa&#x dd"/>
7068     @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 9)..(1, 14); }
7069    
7070     @@XMLTest:
7071     @@@QName: xp.unique.att.spec.1.test
7072     @@@DEnt:
7073     @@@@test:value:
7074     <a b="c" b="d"/>
7075     @@@c:erred: <[[xp|wf-unique-att-spec]]> { (1, 4)..(1, 14); }
7076     @@XMLTest:
7077     @@@QName: xp.unique.att.spec.2.test
7078     @@@DEnt:
7079     @@@@test:value:
7080     <a d:b="c" d:b="d" xmlns:d="about:2"/>
7081     @@@c:erred: <[[xp|wf-unique-att-spec]]> { (1, 4)..(1, 18); }
7082    
7083     @@XMLTest:
7084     @@@QName: xp.no.external.entity.references.1.test
7085     @@@DEnt:
7086     @@@@test:value:
7087     <!DOCTYPE a [
7088     <!ENTITY ent SYSTEM "something">
7089     ]>
7090     <a b="c&ent;"/>
7091     @@@c:erred: <[[xp|wf-no-external-entity-references]]> { (4, 8)..(4, 12); }
7092     @@XMLTest:
7093     @@@QName: xp.no.external.entity.references.2.test
7094     @@@DEnt:
7095     @@@@test:value:
7096     <!DOCTYPE a [
7097     <!NOTATION n SYSTEM "notation">
7098     <!ENTITY ent SYSTEM "something" NDATA n>
7099     ]>
7100     <a b="c&ent;"/>
7101     @@@c:erred: <[[xp|wf-no-external-entity-references]]> { (5, 8)..(5, 12); }
7102     @@XMLTest:
7103     @@@QName: xp.no.external.entity.references.3.test
7104     @@@DEnt:
7105     @@@@test:value:
7106     <!DOCTYPE a [
7107     <!ENTITY ent SYSTEM "something">
7108     <!ENTITY ent2 "ddd&ent;">
7109     ]>
7110     <a b="c&ent2;"/>
7111     @@@c:erred: <[[xp|wf-no-external-entity-references]]> { (1, 4)..(1, 8); }
7112     @@XMLTest:
7113     @@@QName: xp.no.external.entity.references.4.test
7114     @@@DEnt:
7115     @@@@test:value:
7116     <!DOCTYPE a [
7117     <!NOTATION n SYSTEM "notation">
7118     <!ENTITY ent SYSTEM "something" NDATA n>
7119     <!ENTITY ent2 "ddd&ent;">
7120     ]>
7121     <a b="c&ent2;"/>
7122     @@@c:erred: <[[xp|wf-no-external-entity-references]]> { (1, 4)..(1, 8); }
7123     @@XMLTest:
7124     @@@QName: xp.no.lt.in.attr.value.1.test
7125     @@@DEnt:
7126     @@@@test:value:
7127     <!DOCTYPE a [
7128     <!ENTITY ent "aa<bb">
7129     ]>
7130     <a b="c&ent;"/>
7131     @@@c:erred: <[[xp|wf-no-lt-in-attribute-values]]> { (1, 3); }
7132 wakaba 1.20 @@@c:erred:
7133     @@@@@: <[[xp|wf-syntax-error]]> { (1, 3)..(1, 6); }
7134     @@@@enImplNote: When entity node is created.
7135 wakaba 1.18 @@XMLTest:
7136     @@@QName: xp.no.lt.in.attr.value.2.test
7137     @@@DEnt:
7138     @@@@test:value:
7139     <!DOCTYPE a [
7140     <!ENTITY ent "aa<bb">
7141     <!ENTITY ent2 "ccc&ent;">
7142     ]>
7143     <a b="c&ent2;"/>
7144     @@@c:erred: <[[xp|wf-no-lt-in-attribute-values]]> { (1, 3); }
7145 wakaba 1.20 @@@c:erred:
7146     @@@@@: <[[xp|wf-syntax-error]]> { (1, 3)..(1, 6); }
7147     @@@@enImplNote: When entity node is created.
7148 wakaba 1.18 @@XMLTest:
7149     @@@QName: xp.no.lt.in.attr.value.3.test
7150     @@@DEnt:
7151     @@@@test:value:
7152     <!DOCTYPE a [
7153     <!ENTITY ent "aa&#x3C;bb">
7154     ]>
7155     <a b="c&ent;"/>
7156     @@@c:erred: <[[xp|wf-no-lt-in-attribute-values]]> { (1, 3); }
7157 wakaba 1.20 @@@c:erred:
7158     @@@@@: <[[xp|wf-syntax-error]]> { (1, 3)..(1, 6); }
7159     @@@@enImplNote: When entity node is created.
7160 wakaba 1.18 @@XMLTest:
7161     @@@QName: xp.no.lt.in.attr.value.4.test
7162     @@@DEnt:
7163     @@@@test:value:
7164     <!DOCTYPE a [
7165     <!ENTITY ent "aa&#x3C;bb">
7166     <!ENTITY ent2 "ccc&ent;">
7167     ]>
7168     <a b="c&ent2;"/>
7169     @@@c:erred: <[[xp|wf-no-lt-in-attribute-values]]> { (1, 3); }
7170 wakaba 1.20 @@@c:erred:
7171     @@@@@: <[[xp|wf-syntax-error]]> { (1, 3)..(1, 6); }
7172     @@@@enImplNote: When entity node is created.
7173 wakaba 1.11 @@XMLTest:
7174 wakaba 1.18 @@@QName: xp.ger.lt.in.attr.value.1.test
7175 wakaba 1.11 @@@DEnt:
7176     @@@@test:value:
7177     <!DOCTYPE a [
7178 wakaba 1.18 <!ENTITY ent "aa&lt;bb">
7179 wakaba 1.11 ]>
7180 wakaba 1.18 <a b="c&ent;"/>
7181 wakaba 1.11 @@@test:domTree:
7182     document {
7183     document-type {
7184     general-entity {
7185     node-name: 'ent';
7186 wakaba 1.18 text-content: 'aa<bb';
7187 wakaba 1.11 }
7188     }
7189     element {
7190 wakaba 1.18 attribute {
7191     node-name: 'b';
7192     text { data: 'c'; }
7193     general-entity-reference {
7194 wakaba 1.19 is-expanded: true;
7195 wakaba 1.18 node-name: 'ent';
7196     text-content: 'aa<bb';
7197     }
7198     }
7199 wakaba 1.11 }
7200     }
7201     @@XMLTest:
7202 wakaba 1.18 @@@QName: xp.ger.lt.in.attr.value.2.test
7203 wakaba 1.11 @@@DEnt:
7204     @@@@test:value:
7205     <!DOCTYPE a [
7206 wakaba 1.18 <!ENTITY ent "aa&lt;bb">
7207     <!ENTITY ent2 "ccc&ent;">
7208 wakaba 1.11 ]>
7209 wakaba 1.18 <a b="c&ent2;"/>
7210 wakaba 1.11 @@@test:domTree:
7211     document {
7212     document-type {
7213     general-entity {
7214 wakaba 1.18 node-name: 'ent';
7215     text-content: 'aa<bb';
7216     }
7217     general-entity {
7218     node-name: 'ent2';
7219     text { data: 'ccc'; }
7220     general-entity-reference {
7221     node-name: 'ent';
7222     text-content: 'aa<bb';
7223 wakaba 1.19 is-expanded: true;
7224 wakaba 1.18 }
7225 wakaba 1.11 }
7226     }
7227     element {
7228 wakaba 1.18 attribute {
7229     node-name: 'b';
7230     text { data: 'c'; }
7231     general-entity-reference {
7232     node-name: 'ent2';
7233     text { data: 'ccc'; }
7234     general-entity-reference {
7235     node-name: 'ent';
7236     text-content: 'aa<bb';
7237 wakaba 1.19 is-expanded: true;
7238 wakaba 1.18 }
7239 wakaba 1.19 is-expanded: true;
7240 wakaba 1.18 }
7241     }
7242 wakaba 1.11 }
7243     }
7244    
7245 wakaba 1.8 @@XMLTest:
7246 wakaba 1.18 @@@QName: xp.doctype.intsubset.pi.test
7247 wakaba 1.8 @@@DEnt:
7248     @@@@test:value:
7249     <!DOCTYPE a [
7250 wakaba 1.18 <?pi data ?>
7251 wakaba 1.8 ]>
7252     <a></a>
7253     @@@test:domTree:
7254     document {
7255     xml-version: '1.0';
7256     xml-encoding: null;
7257     xml-standalone: false;
7258     document-type {
7259     node-name: 'a';
7260 wakaba 1.18 pi {
7261     target: 'pi';
7262     data: 'data ';
7263 wakaba 1.8 }
7264     }
7265     element {
7266     namespace-uri: null;
7267 wakaba 1.18 prefix: null;
7268 wakaba 1.8 local-name: 'a';
7269 wakaba 1.18 text-content: '';
7270 wakaba 1.8 }
7271     }
7272 wakaba 1.18 @@@enImplNote:
7273     A DOM PI node in doctype node is a manakai extension.
7274    
7275    
7276 wakaba 1.8 @@XMLTest:
7277 wakaba 1.18 @@@QName: xp.doctype.intsubset.entity.general.internal.test
7278 wakaba 1.8 @@@DEnt:
7279     @@@@test:value:
7280     <!DOCTYPE a [
7281 wakaba 1.18 <!ENTITY entity "entity value">
7282 wakaba 1.8 ]>
7283     <a></a>
7284     @@@test:domTree:
7285     document {
7286     xml-version: '1.0';
7287     xml-encoding: null;
7288     xml-standalone: false;
7289     document-type {
7290     node-name: 'a';
7291 wakaba 1.18 general-entity {
7292     node-name: 'entity';
7293     text-content: 'entity value';
7294     has-replacement-tree: true;
7295 wakaba 1.8 }
7296     }
7297     element {
7298     namespace-uri: null;
7299 wakaba 1.18 prefix: null;
7300 wakaba 1.8 local-name: 'a';
7301 wakaba 1.18 text-content: '';
7302 wakaba 1.8 }
7303     }
7304     @@XMLTest:
7305 wakaba 1.18 @@@QName: xp.doctype.intsubset.entity.parameter.internal.test
7306 wakaba 1.8 @@@DEnt:
7307     @@@@test:value:
7308     <!DOCTYPE a [
7309 wakaba 1.18 <!ENTITY % entity "entity value">
7310 wakaba 1.8 ]>
7311     <a></a>
7312     @@@test:domTree:
7313     document {
7314     xml-version: '1.0';
7315     xml-encoding: null;
7316     xml-standalone: false;
7317     document-type {
7318     node-name: 'a';
7319     }
7320     element {
7321     namespace-uri: null;
7322 wakaba 1.18 prefix: null;
7323 wakaba 1.8 local-name: 'a';
7324 wakaba 1.18 text-content: '';
7325 wakaba 1.8 }
7326     }
7327 wakaba 1.18
7328 wakaba 1.8 @@XMLTest:
7329 wakaba 1.18 @@@QName: xp.doctype.internal.entity.root.element.text.only.test
7330 wakaba 1.8 @@@DEnt:
7331     @@@@test:value:
7332     <!DOCTYPE a [
7333 wakaba 1.18 <!ENTITY entity "entity value">
7334 wakaba 1.8 ]>
7335 wakaba 1.18 <a>&entity;</a>
7336 wakaba 1.8 @@@test:domTree:
7337     document {
7338     xml-version: '1.0';
7339     xml-encoding: null;
7340     xml-standalone: false;
7341     document-type {
7342     node-name: 'a';
7343 wakaba 1.18 general-entity {
7344     node-name: 'entity';
7345     text-content: 'entity value';
7346     has-replacement-tree: true;
7347 wakaba 1.8 }
7348     }
7349     element {
7350     namespace-uri: null;
7351 wakaba 1.18 prefix: null;
7352 wakaba 1.8 local-name: 'a';
7353 wakaba 1.18 general-entity-reference {
7354     node-name: 'entity';
7355     text {
7356     data: 'entity value';
7357     }
7358 wakaba 1.19 is-expanded: true;
7359 wakaba 1.10 }
7360 wakaba 1.9 }
7361     }
7362     @@XMLTest:
7363 wakaba 1.18 @@@QName: xp.doctype.internal.entity.root.element.text.mult.test
7364 wakaba 1.9 @@@DEnt:
7365     @@@@test:value:
7366     <!DOCTYPE a [
7367 wakaba 1.18 <!ENTITY entity "entity value">
7368 wakaba 1.9 ]>
7369 wakaba 1.18 <a>&entity; and &entity;</a>
7370 wakaba 1.9 @@@test:domTree:
7371     document {
7372     xml-version: '1.0';
7373     xml-encoding: null;
7374     xml-standalone: false;
7375     document-type {
7376     node-name: 'a';
7377 wakaba 1.18 general-entity {
7378     node-name: 'entity';
7379     text-content: 'entity value';
7380     has-replacement-tree: true;
7381 wakaba 1.9 }
7382     }
7383     element {
7384     namespace-uri: null;
7385 wakaba 1.18 prefix: null;
7386 wakaba 1.9 local-name: 'a';
7387 wakaba 1.18 general-entity-reference {
7388     node-name: 'entity';
7389     text {
7390     data: 'entity value';
7391     }
7392 wakaba 1.19 is-expanded: true;
7393 wakaba 1.18 }
7394     text { data: ' and '; }
7395     general-entity-reference {
7396     node-name: 'entity';
7397     text {
7398     data: 'entity value';
7399     }
7400 wakaba 1.19 is-expanded: true;
7401 wakaba 1.10 }
7402 wakaba 1.9 }
7403     }
7404     @@XMLTest:
7405 wakaba 1.18 @@@QName: xp.doctype.internal.entity.root.element.text.element.test
7406 wakaba 1.9 @@@DEnt:
7407     @@@@test:value:
7408     <!DOCTYPE a [
7409 wakaba 1.18 <!ENTITY entity "entity <p>value</p> with <e>element</e> ">
7410 wakaba 1.9 ]>
7411 wakaba 1.18 <a>&entity;</a>
7412     @@@test:domTree:
7413     document {
7414     xml-version: '1.0';
7415     xml-encoding: null;
7416     xml-standalone: false;
7417     document-type {
7418     node-name: 'a';
7419     general-entity {
7420     node-name: 'entity';
7421     has-replacement-tree: true;
7422     text { data: 'entity '; }
7423     element {
7424     node-name: 'p';
7425     text-content: 'value';
7426     }
7427     text { data: ' with '; }
7428     element {
7429     node-name: 'e';
7430     text-content: 'element';
7431     }
7432 wakaba 1.20 text { data: ' '; }
7433 wakaba 1.18 }
7434     }
7435     element {
7436     namespace-uri: null;
7437     prefix: null;
7438     local-name: 'a';
7439     general-entity-reference {
7440     node-name: 'entity';
7441 wakaba 1.19 is-expanded: true;
7442 wakaba 1.18 text {
7443     data: 'entity ';
7444     }
7445     element {
7446     namespace-uri: null;
7447     prefix: null;
7448     local-name: 'p';
7449     text {
7450     data: 'value';
7451     }
7452     }
7453     text {
7454     data: ' with ';
7455     }
7456     element {
7457     namespace-uri: null;
7458     prefix: null;
7459     local-name: 'e';
7460     text {
7461     data: 'element';
7462     }
7463     }
7464     text {
7465     data: ' ';
7466     }
7467     }
7468     }
7469     }
7470     @@XMLTest:
7471     @@@QName: xp.doctype.internal.entity.root.element.text.in.ent.test
7472     @@@DEnt:
7473     @@@@test:value:
7474     <!DOCTYPE a [
7475     <!ENTITY entity1 "entity value">
7476     <!ENTITY entity2 "e&entity1;n">
7477     ]>
7478     <a>&entity2;</a>
7479     @@@test:domTree:
7480     document {
7481     xml-version: '1.0';
7482     xml-encoding: null;
7483     xml-standalone: false;
7484     document-type {
7485     node-name: 'a';
7486     general-entity {
7487     node-name: 'entity1';
7488     text-content: 'entity value';
7489     }
7490     general-entity {
7491     node-name: 'entity2';
7492     text { data: 'e'; }
7493     general-entity-reference {
7494     node-name: 'entity1';
7495     text-content: 'entity value';
7496     is-expanded: true;
7497     }
7498     text { data: 'n'; }
7499     }
7500     }
7501     element {
7502     namespace-uri: null;
7503     prefix: null;
7504     local-name: 'a';
7505     general-entity-reference {
7506     node-name: 'entity2';
7507     text { data: 'e'; }
7508 wakaba 1.19 is-expanded: true;
7509 wakaba 1.18 general-entity-reference {
7510     node-name: 'entity1';
7511     text {
7512     data: 'entity value';
7513     }
7514 wakaba 1.19 is-expanded: true;
7515 wakaba 1.18 }
7516     text { data: 'n'; }
7517     }
7518     }
7519     }
7520    
7521     @@XMLTest:
7522     @@@QName: xp.doctype.entity.value.charref.test
7523     @@@DEnt:
7524     @@@@test:value:
7525     <!DOCTYPE a [
7526     <!ENTITY entity1 "entity &#x21;value&#35;">
7527     <!ENTITY entity2 '&#x21;value&#35;'>
7528     ]>
7529     <a></a>
7530     @@@test:domTree:
7531     document {
7532     document-type {
7533     general-entity {
7534     node-name: 'entity1';
7535     text-content: 'entity !value#';
7536     has-replacement-tree: true;
7537     }
7538     general-entity {
7539     node-name: 'entity2';
7540     text-content: '!value#';
7541     has-replacement-tree: true;
7542     }
7543     }
7544     element { }
7545     }
7546    
7547     @@XMLTest:
7548     @@@QName: xp.predefined.in.content.test
7549     @@@DEnt:
7550     @@@@test:value:
7551     <a>_&lt;_&gt;_&quot;_&apos;_&amp;_</a>
7552     @@@test:domTree:
7553     document {
7554     element {
7555     text-content: '_<_>_"_' U+0027 '_&_';
7556     }
7557     }
7558     @@XMLTest:
7559     @@@QName: xp.predefined.in.attr.test
7560     @@@DEnt:
7561     @@@@test:value:
7562     <a at="_&lt;_&gt;_&quot;_&apos;_&amp;_"></a>
7563     @@@test:domTree:
7564     document {
7565     element {
7566     attribute {
7567     node-name: 'at';
7568     text-content: '_<_>_"_' U+0027 '_&_';
7569     }
7570     }
7571     }
7572     @@XMLTest:
7573     @@@QName: xp.predefined.in.content.in.entity.test
7574     @@@DEnt:
7575     @@@@test:value:
7576     <!DOCTYPE a [
7577     <!ENTITY ent "_&lt;_&gt;_&quot;_&apos;_&amp;_">
7578     ]>
7579     <a>&ent;</a>
7580     @@@test:domTree:
7581     document {
7582     document-type {
7583     general-entity {
7584     node-name: 'ent';
7585     text-content: '_<_>_"_' U+0027 '_&_';
7586     }
7587     }
7588     element {
7589     text-content: '_<_>_"_' U+0027 '_&_';
7590     }
7591     }
7592     @@XMLTest:
7593     @@@QName: xp.predefined.decl.ignore.test
7594     @@@DEnt:
7595     @@@@test:value:
7596     <!DOCTYPE a [
7597     <!ENTITY lt "&#x26;#x3C;">
7598     <!ENTITY gt "&#x3E;">
7599     <!ENTITY amp "&#x26;#x26;">
7600     <!ENTITY quot "&#x22;">
7601     <!ENTITY apos "&#x27;">
7602     <!ENTITY other "other">
7603     ]>
7604     <a>_&lt;_&gt;_&quot;_&apos;_&amp;_&other;_</a>
7605     @@@test:domTree:
7606     document {
7607     document-type {
7608     general-entity {
7609     node-name: 'other';
7610     text-content: 'other';
7611     }
7612     }
7613     element {
7614     text-content: '_<_>_"_' U+0027 '_&_other_';
7615     }
7616     }
7617    
7618     @@XMLTest:
7619     @@@QName: xp.doctype.internal.attr.empty.test
7620     @@@DEnt:
7621     @@@@test:value:
7622     <!DOCTYPE a [
7623     <!ATTLIST a>
7624     ]>
7625     <a></a>
7626     @@@test:domTree:
7627     document {
7628     xml-version: '1.0';
7629     xml-encoding: null;
7630     xml-standalone: false;
7631     document-type {
7632     node-name: 'a';
7633     element-type-definition {
7634     node-name: 'a';
7635     }
7636     }
7637     element {
7638     namespace-uri: null;
7639     local-name: 'a';
7640     }
7641     }
7642     @@XMLTest:
7643     @@@QName: xp.doctype.internal.attr.cdata.implied.test
7644     @@@DEnt:
7645     @@@@test:value:
7646     <!DOCTYPE a [
7647     <!ATTLIST a
7648     at CDATA #IMPLIED
7649     >
7650     ]>
7651     <a></a>
7652 wakaba 1.9 @@@test:domTree:
7653     document {
7654     xml-version: '1.0';
7655     xml-encoding: null;
7656     xml-standalone: false;
7657     document-type {
7658     node-name: 'a';
7659     element-type-definition {
7660     node-name: 'a';
7661     attribute-definition {
7662     node-name: 'at';
7663 wakaba 1.18 declared-type: const (CDATA_ATTR);
7664 wakaba 1.9 allowed-tokens: DOMStringList ();
7665 wakaba 1.18 default-type: const (IMPLIED_DEFAULT);
7666     text-content: '';
7667 wakaba 1.9 }
7668     }
7669     }
7670     element {
7671     namespace-uri: null;
7672     local-name: 'a';
7673 wakaba 1.18 }
7674     }
7675     @@XMLTest:
7676     @@@QName: xp.doctype.internal.attr.types.implied.test
7677     @@@DEnt:
7678     @@@@test:value:
7679     <!DOCTYPE a [
7680     <!ATTLIST a
7681     at1 ID #IMPLIED
7682     at2 IDREF #IMPLIED
7683     at3 IDREFS #IMPLIED
7684     at4 ENTITY #IMPLIED
7685     at5 ENTITIES #IMPLIED
7686     at6 NMTOKEN #IMPLIED
7687     at7 NMTOKENS #IMPLIED
7688     at8 NOTATION (n1 | n2|n3) #IMPLIED
7689     at9 (e1| e2| e3 ) #IMPLIED
7690     >
7691     ]>
7692     <a></a>
7693     @@@test:domTree:
7694     document {
7695     xml-version: '1.0';
7696     xml-encoding: null;
7697     xml-standalone: false;
7698     document-type {
7699     node-name: 'a';
7700     element-type-definition {
7701     node-name: 'a';
7702     attribute-definition {
7703     node-name: 'at1';
7704     declared-type: const (ID_ATTR);
7705     allowed-tokens: DOMStringList ();
7706     default-type: const (IMPLIED_DEFAULT);
7707     text-content: '';
7708     }
7709     attribute-definition {
7710     node-name: 'at2';
7711     declared-type: const (IDREF_ATTR);
7712     allowed-tokens: DOMStringList ();
7713     default-type: const (IMPLIED_DEFAULT);
7714     text-content: '';
7715     }
7716     attribute-definition {
7717     node-name: 'at3';
7718     declared-type: const (IDREFS_ATTR);
7719     allowed-tokens: DOMStringList ();
7720     default-type: const (IMPLIED_DEFAULT);
7721     text-content: '';
7722     }
7723     attribute-definition {
7724     node-name: 'at4';
7725     declared-type: const (ENTITY_ATTR);
7726     allowed-tokens: DOMStringList ();
7727     default-type: const (IMPLIED_DEFAULT);
7728     text-content: '';
7729     }
7730     attribute-definition {
7731     node-name: 'at5';
7732     declared-type: const (ENTITIES_ATTR);
7733     allowed-tokens: DOMStringList ();
7734     default-type: const (IMPLIED_DEFAULT);
7735     text-content: '';
7736     }
7737     attribute-definition {
7738     node-name: 'at6';
7739     declared-type: const (NMTOKEN_ATTR);
7740     allowed-tokens: DOMStringList ();
7741     default-type: const (IMPLIED_DEFAULT);
7742     text-content: '';
7743     }
7744     attribute-definition {
7745     node-name: 'at7';
7746     declared-type: const (NMTOKENS_ATTR);
7747     allowed-tokens: DOMStringList ();
7748     default-type: const (IMPLIED_DEFAULT);
7749     text-content: '';
7750     }
7751     attribute-definition {
7752     node-name: 'at8';
7753     declared-type: const (NOTATION_ATTR);
7754     allowed-tokens: DOMStringList ('n1', 'n2', 'n3');
7755     default-type: const (IMPLIED_DEFAULT);
7756     text-content: '';
7757     }
7758     attribute-definition {
7759     node-name: 'at9';
7760     declared-type: const (ENUMERATION_ATTR);
7761     allowed-tokens: DOMStringList ('e1', 'e2', 'e3');
7762     default-type: const (IMPLIED_DEFAULT);
7763     text-content: '';
7764     }
7765     }
7766     }
7767     element {
7768     namespace-uri: null;
7769     local-name: 'a';
7770     }
7771     }
7772     @@XMLTest:
7773     @@@QName: xp.doctype.internal.attr.cdata.defaults.test
7774     @@@DEnt:
7775     @@@@test:value:
7776     <!DOCTYPE a [
7777     <!ATTLIST a
7778     at1 CDATA #IMPLIED
7779     at2 CDATA #REQUIRED
7780     at3 CDATA #FIXED "value3"
7781     at4 CDATA "value4"
7782     at5 CDATA #FIXED 'value5'
7783     at6 CDATA 'value6'
7784     >
7785     ]>
7786     <a></a>
7787     @@@test:domTree:
7788     document {
7789     xml-version: '1.0';
7790     xml-encoding: null;
7791     xml-standalone: false;
7792     document-type {
7793     node-name: 'a';
7794     element-type-definition {
7795     node-name: 'a';
7796     attribute-definition {
7797     node-name: 'at1';
7798     declared-type: const (CDATA_ATTR);
7799     allowed-tokens: DOMStringList ();
7800     default-type: const (IMPLIED_DEFAULT);
7801     text-content: '';
7802     }
7803     attribute-definition {
7804     node-name: 'at2';
7805     declared-type: const (CDATA_ATTR);
7806     allowed-tokens: DOMStringList ();
7807     default-type: const (REQUIRED_DEFAULT);
7808     text-content: '';
7809     }
7810     attribute-definition {
7811     node-name: 'at3';
7812     declared-type: const (CDATA_ATTR);
7813     allowed-tokens: DOMStringList ();
7814     default-type: const (FIXED_DEFAULT);
7815     text-content: 'value3';
7816     }
7817     attribute-definition {
7818     node-name: 'at4';
7819     declared-type: const (CDATA_ATTR);
7820     allowed-tokens: DOMStringList ();
7821     default-type: const (EXPLICIT_DEFAULT);
7822     text-content: 'value4';
7823     }
7824     attribute-definition {
7825     node-name: 'at5';
7826     declared-type: const (CDATA_ATTR);
7827     allowed-tokens: DOMStringList ();
7828     default-type: const (FIXED_DEFAULT);
7829     text-content: 'value5';
7830     }
7831     attribute-definition {
7832     node-name: 'at6';
7833     declared-type: const (CDATA_ATTR);
7834     allowed-tokens: DOMStringList ();
7835     default-type: const (EXPLICIT_DEFAULT);
7836     text-content: 'value6';
7837     }
7838     }
7839     }
7840     element {
7841     namespace-uri: null;
7842     local-name: 'a';
7843     attribute {
7844     node-name: 'at3';
7845     text-content: 'value3';
7846     specified: false;
7847     }
7848     attribute {
7849     node-name: 'at4';
7850     text-content: 'value4';
7851     specified: false;
7852     }
7853     attribute {
7854     node-name: 'at5';
7855     text-content: 'value5';
7856     specified: false;
7857     }
7858     attribute {
7859     node-name: 'at6';
7860     text-content: 'value6';
7861     specified: false;
7862     }
7863     }
7864     }
7865    
7866     @@XMLTest:
7867     @@@QName: xp.doctype.internal.attr.cdata.default.normalize.test
7868     @@@DEnt:
7869     @@@@test:value:
7870     <!DOCTYPE a [
7871     <!ATTLIST a
7872     at CDATA " default &#x0A;value "
7873     >
7874     ]>
7875     <a></a>
7876     @@@test:domTree:
7877     document {
7878     xml-version: '1.0';
7879     xml-encoding: null;
7880     xml-standalone: false;
7881     document-type {
7882     node-name: 'a';
7883     element-type-definition {
7884     node-name: 'a';
7885     attribute-definition {
7886     node-name: 'at';
7887     declared-type: const (CDATA_ATTR);
7888     allowed-tokens: DOMStringList ();
7889     default-type: const (EXPLICIT_DEFAULT);
7890     text-content: ' default ' U+000A 'value ';
7891     }
7892     }
7893     }
7894     element {
7895     namespace-uri: null;
7896     local-name: 'a';
7897     attribute {
7898     node-name: 'at';
7899     text-content: ' default ' U+000A 'value ';
7900     specified: false;
7901     }
7902     }
7903     }
7904     @@XMLTest:
7905     @@@QName: xp.doctype.internal.attr.nmtoken.default.normalize.test
7906     @@@DEnt:
7907     @@@@test:value:
7908     <!DOCTYPE a [
7909     <!ATTLIST a
7910     at NMTOKEN " default &#x0A;value "
7911     >
7912     ]>
7913     <a></a>
7914     @@@test:domTree:
7915     document {
7916     xml-version: '1.0';
7917     xml-encoding: null;
7918     xml-standalone: false;
7919     document-type {
7920     node-name: 'a';
7921     element-type-definition {
7922     node-name: 'a';
7923     attribute-definition {
7924     node-name: 'at';
7925     declared-type: const (NMTOKEN_ATTR);
7926     allowed-tokens: DOMStringList ();
7927     default-type: const (EXPLICIT_DEFAULT);
7928     text-content: ' default ' U+000A 'value ';
7929     }
7930     }
7931     }
7932     element {
7933     namespace-uri: null;
7934     local-name: 'a';
7935     attribute {
7936     node-name: 'at';
7937     text-content: ' default ' U+000A 'value ';
7938     specified: false;
7939     }
7940     }
7941     }
7942    
7943     @@XMLTest:
7944     @@@QName: xp.doctype.attrtype.no-value.test
7945     @@@DEnt:
7946     @@@@test:value:
7947     <!DOCTYPE a>
7948     <a at=" at value "></a>
7949     @@@test:domTree:
7950     document {
7951     xml-version: '1.0';
7952     xml-encoding: null;
7953     xml-standalone: false;
7954     document-type { }
7955     element {
7956     namespace-uri: null;
7957     local-name: 'a';
7958     attribute {
7959     namespace-uri: null;
7960     local-name: 'at';
7961     value: ' at value ';
7962     text {
7963     data: ' at value ';
7964     }
7965     schema-type-info: TypeInfo (null, null);
7966     specified: true;
7967     }
7968     }
7969     }
7970     @@XMLTest:
7971     @@@QName: xp.doctype.attrtype.cdata.test
7972     @@@DEnt:
7973     @@@@test:value:
7974     <!DOCTYPE a [
7975     <!ATTLIST a
7976     at CDATA #IMPLIED
7977     >
7978     ]>
7979     <a at=" at value "></a>
7980     @@@test:domTree:
7981     document {
7982     xml-version: '1.0';
7983     xml-encoding: null;
7984     xml-standalone: false;
7985     document-type { }
7986     element {
7987     namespace-uri: null;
7988     local-name: 'a';
7989     attribute {
7990     namespace-uri: null;
7991     local-name: 'at';
7992     value: ' at value ';
7993     text {
7994     data: ' at value ';
7995     }
7996     schema-type-info:
7997     TypeInfo ('http://www.w3.org/TR/REC-xml', 'CDATA');
7998     specified: true;
7999     }
8000     }
8001     }
8002     @@XMLTest:
8003     @@@QName: xp.doctype.attrtype.nmtoken.test
8004     @@@DEnt:
8005     @@@@test:value:
8006     <!DOCTYPE a [
8007     <!ATTLIST a
8008     at NMTOKEN #IMPLIED
8009     >
8010     ]>
8011     <a at=" at value "></a>
8012     @@@test:domTree:
8013     document {
8014     xml-version: '1.0';
8015     xml-encoding: null;
8016     xml-standalone: false;
8017     document-type { }
8018     element {
8019     namespace-uri: null;
8020     local-name: 'a';
8021     attribute {
8022     namespace-uri: null;
8023     local-name: 'at';
8024     value: 'at value';
8025     text {
8026     data: ' at value ';
8027     }
8028     schema-type-info:
8029     TypeInfo ('http://www.w3.org/TR/REC-xml', 'NMTOKEN');
8030     specified: true;
8031     }
8032     }
8033     }
8034    
8035     @@XMLTest:
8036     @@@QName: xp.doctype.attr.normalization.1.test
8037     @@@DEnt:
8038     @@@@test:value:
8039     <a at=" at &#xA;value "></a>
8040     @@@test:domTree:
8041     document {
8042     element {
8043     attribute {
8044     node-name: 'at';
8045     value: ' at ' U+000A 'value ';
8046     schema-type-info: TypeInfo (null, null);
8047     specified: true;
8048     }
8049     }
8050     }
8051     @@XMLTest:
8052     @@@QName: xp.doctype.attr.normalization.2.test
8053     @@@DEnt:
8054     @@@@test:value:
8055     <a at=" at &#xD;value "></a>
8056     @@@test:domTree:
8057     document {
8058     element {
8059     attribute {
8060     value: ' at ' U+000D 'value ';
8061     schema-type-info: TypeInfo (null, null);
8062     specified: true;
8063     }
8064     }
8065     }
8066     @@XMLTest:
8067     @@@QName: xp.doctype.attr.normalization.3.test
8068     @@@DEnt:
8069     @@@@test:value:
8070     <a at=" at &#x9;value "></a>
8071     @@@test:domTree:
8072     document {
8073     element {
8074     attribute {
8075     node-name: 'at';
8076     value: ' at ' U+0009 'value ';
8077     schema-type-info: TypeInfo (null, null);
8078     specified: true;
8079     }
8080     }
8081     }
8082    
8083     @@XMLTest:
8084     @@@QName: xp.doctype.attr.specified.1.test
8085     @@@DEnt:
8086     @@@@test:value:
8087     <!DOCTYPE a [
8088     <!ATTLIST a
8089     at CDATA "default"
8090     >
8091     ]>
8092     <a></a>
8093     @@@test:domTree:
8094     document {
8095     document-type { }
8096     element {
8097     attribute {
8098     node-name: 'at';
8099     value: 'default';
8100     specified: false;
8101     }
8102     }
8103     }
8104     @@XMLTest:
8105     @@@QName: xp.doctype.attr.specified.2.test
8106     @@@DEnt:
8107     @@@@test:value:
8108     <!DOCTYPE a [
8109     <!ATTLIST a
8110     at CDATA "default"
8111     >
8112     ]>
8113     <a at2="specified"></a>
8114     @@@test:domTree:
8115     document {
8116     document-type { }
8117     element {
8118     attribute {
8119     node-name: 'at';
8120     value: 'default';
8121     specified: false;
8122     }
8123     attribute {
8124     node-name: 'at2';
8125     value: 'specified';
8126     specified: true;
8127     }
8128     }
8129     }
8130     @@XMLTest:
8131     @@@QName: xp.doctype.attr.specified.3.test
8132     @@@DEnt:
8133     @@@@test:value:
8134     <!DOCTYPE a [
8135     <!ATTLIST a
8136     at CDATA "default"
8137     >
8138     ]>
8139     <a at="specified"></a>
8140     @@@test:domTree:
8141     document {
8142     document-type { }
8143     element {
8144     attribute {
8145     node-name: 'at';
8146     value: 'specified';
8147     specified: true;
8148     }
8149     }
8150     }
8151    
8152     @@XMLTest:
8153     @@@QName: xp.attr.literal.charref.test
8154     @@@DEnt:
8155     @@@@test:value:
8156     <a at1 = "value&#33;_&#x25;value"
8157     at2 = 'value&#x25;_&#33;value'></a>
8158     @@@test:domTree:
8159     document {
8160     element {
8161     attribute {
8162     node-name: 'at1';
8163     text-content: 'value!_%value';
8164     }
8165     attribute {
8166     node-name: 'at2';
8167     text-content: 'value%_!value';
8168     }
8169     }
8170     }
8171     @@XMLTest:
8172     @@@QName: xp.attr.literal.entref.test
8173     @@@DEnt:
8174     @@@@test:value:
8175     <!DOCTYPE a [
8176     <!ENTITY ent "entity&#x26;#33;_&#x26;#x29;value">
8177     ]>
8178     <a at1 = "value&ent;value"
8179     at2 = 'value&ent;value'></a>
8180     @@@test:domTree:
8181     document {
8182     document-type {
8183     general-entity {
8184     node-name: 'ent';
8185     text-content: 'entity!_)value';
8186     }
8187     }
8188     element {
8189     attribute {
8190     node-name: 'at1';
8191     text-content: 'valueentity!_)valuevalue';
8192     }
8193     attribute {
8194     node-name: 'at2';
8195     text-content: 'valueentity!_)valuevalue';
8196     }
8197     }
8198     }
8199     @@XMLTest:
8200     @@@QName: xp.attr.literal.entref.nest.test
8201     @@@DEnt:
8202     @@@@test:value:
8203     <!DOCTYPE a [
8204     <!ENTITY ent1 "entity&#x26;#33;_&#x26;#x29;value">
8205     <!ENTITY ent2 "@&ent1;@">
8206     ]>
8207     <a at1 = "value&ent2;value"
8208     at2 = 'value&ent2;value'></a>
8209     @@@test:domTree:
8210     document {
8211     document-type {
8212     general-entity {
8213     node-name: 'ent1';
8214     text-content: 'entity!_)value';
8215     }
8216     general-entity {
8217     node-name: 'ent2';
8218     text-content: '@entity!_)value@';
8219     }
8220     }
8221     element {
8222     attribute {
8223     node-name: 'at1';
8224     text-content: 'value@entity!_)value@value';
8225     }
8226     attribute {
8227     node-name: 'at2';
8228     text-content: 'value@entity!_)value@value';
8229     }
8230     }
8231     }
8232    
8233     @@XMLTest:
8234     @@@QName: xp.element.content.ncr.1.test
8235     @@@DEnt:
8236     @@@@test:value:
8237     <e>&#33;</e>
8238     @@@test:domTree:
8239     document {
8240     element {
8241     text-content: '!';
8242     }
8243     }
8244     @@XMLTest:
8245     @@@QName: xp.element.content.ncr.2.test
8246     @@@DEnt:
8247     @@@@test:value:
8248     <e>aaaa&#33;bbbb</e>
8249     @@@test:domTree:
8250     document {
8251     element {
8252     text-content: 'aaaa!bbbb';
8253     }
8254     }
8255     @@XMLTest:
8256     @@@QName: xp.attrval.ncr.1.test
8257     @@@DEnt:
8258     @@@@test:value:
8259     <e a="&#33;"/>
8260     @@@test:domTree:
8261     document {
8262     element {
8263     attribute {
8264     node-name: 'a';
8265     text-content: '!';
8266     }
8267     }
8268     }
8269     @@XMLTest:
8270     @@@QName: xp.attrval.ncr.2.test
8271     @@@DEnt:
8272     @@@@test:value:
8273     <e a="aaaaa&#33;bbbbb"/>
8274     @@@test:domTree:
8275     document {
8276     element {
8277     attribute {
8278     node-name: 'a';
8279     text-content: 'aaaaa!bbbbb';
8280     }
8281     }
8282     }
8283     @@XMLTest:
8284     @@@QName: xp.attrval.ncr.3.test
8285     @@@DEnt:
8286     @@@@test:value:
8287     <e a='&#33;'/>
8288     @@@test:domTree:
8289     document {
8290     element {
8291     attribute {
8292     node-name: 'a';
8293     text-content: '!';
8294     }
8295     }
8296     }
8297     @@XMLTest:
8298     @@@QName: xp.attrval.ncr.4.test
8299     @@@DEnt:
8300     @@@@test:value:
8301     <e a='aaaaa&#33;bbbbb'/>
8302     @@@test:domTree:
8303     document {
8304     element {
8305     attribute {
8306     node-name: 'a';
8307     text-content: 'aaaaa!bbbbb';
8308     }
8309     }
8310     }
8311     @@XMLTest:
8312     @@@QName: xp.entval.ncr.1.test
8313     @@@DEnt:
8314     @@@@test:value:
8315     <!DOCTYPE e [
8316     <!ENTITY ent "&#33;">
8317     ]>
8318     <e/>
8319     @@@test:domTree:
8320     document {
8321     document-type {
8322     general-entity {
8323     node-name: 'ent';
8324     text-content: '!';
8325     }
8326     }
8327     element { }
8328     }
8329     @@XMLTest:
8330     @@@QName: xp.entval.ncr.2.test
8331     @@@DEnt:
8332     @@@@test:value:
8333     <!DOCTYPE e [
8334     <!ENTITY ent "aaaaa&#33;bbbbb">
8335     ]>
8336     <e/>
8337     @@@test:domTree:
8338     document {
8339     document-type {
8340     general-entity {
8341     node-name: 'ent';
8342     text-content: 'aaaaa!bbbbb';
8343     }
8344     }
8345     element { }
8346     }
8347     @@XMLTest:
8348     @@@QName: xp.element.content.reptxt.ncr.1.test
8349     @@@DEnt:
8350     @@@@test:value:
8351     <!DOCTYPE e [
8352     <!ENTITY ent "&#38;#33;">
8353     ]>
8354     <e>&ent;</e>
8355     @@@test:domTree:
8356     document {
8357     document-type { }
8358     element {
8359     general-entity-reference {
8360     node-name: 'ent';
8361     text-content: '!';
8362 wakaba 1.19 is-expanded: true;
8363 wakaba 1.18 }
8364     }
8365     }
8366     @@XMLTest:
8367     @@@QName: xp.element.content.reptxt.ncr.2.test
8368     @@@DEnt:
8369     @@@@test:value:
8370     <!DOCTYPE e [
8371     <!ENTITY ent "aaaaa&#38;#33;bbbbb">
8372     ]>
8373     <e>&ent;</e>
8374     @@@test:domTree:
8375     document {
8376     document-type { }
8377     element {
8378     general-entity-reference {
8379     node-name: 'ent';
8380     text-content: 'aaaaa!bbbbb';
8381 wakaba 1.19 is-expanded: true;
8382 wakaba 1.18 }
8383     }
8384     }
8385     @@XMLTest:
8386     @@@QName: xp.element.content.reptxt.reptxt.ncr.1.test
8387     @@@DEnt:
8388     @@@@test:value:
8389     <!DOCTYPE e [
8390     <!ENTITY ent "&#38;#33;">
8391     <!ENTITY ent2 "&ent;">
8392     ]>
8393     <e>&ent2;</e>
8394     @@@test:domTree:
8395     document {
8396     document-type { }
8397     element {
8398     general-entity-reference {
8399     node-name: 'ent2';
8400     general-entity-reference {
8401     node-name: 'ent';
8402     text-content: '!';
8403 wakaba 1.19 is-expanded: true;
8404 wakaba 1.18 }
8405 wakaba 1.19 is-expanded: true;
8406 wakaba 1.18 }
8407     }
8408     }
8409     @@XMLTest:
8410     @@@QName: xp.element.content.reptxt.reptxt.ncr.2.test
8411     @@@DEnt:
8412     @@@@test:value:
8413     <!DOCTYPE e [
8414     <!ENTITY ent "aa&#38;#33;bb">
8415     <!ENTITY ent2 "&ent;">
8416     ]>
8417     <e>&ent2;</e>
8418     @@@test:domTree:
8419     document {
8420     document-type { }
8421     element {
8422     general-entity-reference {
8423     node-name: 'ent2';
8424     general-entity-reference {
8425     node-name: 'ent';
8426     text-content: 'aa!bb';
8427 wakaba 1.19 is-expanded: true;
8428 wakaba 1.18 }
8429 wakaba 1.19 is-expanded: true;
8430 wakaba 1.18 }
8431     }
8432     }
8433     @@XMLTest:
8434     @@@QName: xp.attval.reptxt.ncr.1.test
8435     @@@DEnt:
8436     @@@@test:value:
8437     <!DOCTYPE e [
8438     <!ENTITY ent "&#38;#33;">
8439     ]>
8440     <e a="&ent;"/>
8441     @@@test:domTree:
8442     document {
8443     document-type { }
8444     element {
8445     attribute {
8446     node-name: 'a';
8447     general-entity-reference {
8448     node-name: 'ent';
8449     text-content: '!';
8450 wakaba 1.19 is-expanded: true;
8451 wakaba 1.18 }
8452     }
8453     }
8454     }
8455     @@XMLTest:
8456     @@@QName: xp.attval.reptxt.ncr.2.test
8457     @@@DEnt:
8458     @@@@test:value:
8459     <!DOCTYPE e [
8460     <!ENTITY ent "aaaaa&#38;#33;bbbbb">
8461     ]>
8462     <e a="&ent;"/>
8463     @@@test:domTree:
8464     document {
8465     document-type { }
8466     element {
8467     attribute {
8468     node-name: 'a';
8469     general-entity-reference {
8470     node-name: 'ent';
8471     text-content: 'aaaaa!bbbbb';
8472 wakaba 1.19 is-expanded: true;
8473 wakaba 1.18 }
8474     }
8475     }
8476     }
8477     @@XMLTest:
8478     @@@QName: xp.attval.reptxt.reptxt.ncr.1.test
8479     @@@DEnt:
8480     @@@@test:value:
8481     <!DOCTYPE e [
8482     <!ENTITY ent "&#38;#33;">
8483     <!ENTITY ent2 "&ent;">
8484     ]>
8485     <e a="&ent2;"/>
8486     @@@test:domTree:
8487     document {
8488     document-type { }
8489     element {
8490     attribute {
8491     node-name: 'a';
8492     general-entity-reference {
8493     node-name: 'ent2';
8494 wakaba 1.19 is-expanded: true;
8495 wakaba 1.18 general-entity-reference {
8496     node-name: 'ent';
8497     text-content: '!';
8498 wakaba 1.19 is-expanded: true;
8499 wakaba 1.18 }
8500     }
8501     }
8502     }
8503     }
8504     @@XMLTest:
8505     @@@QName: xp.attval.reptxt.reptxt.ncr.2.test
8506     @@@DEnt:
8507     @@@@test:value:
8508     <!DOCTYPE e [
8509     <!ENTITY ent "aa&#38;#33;bb">
8510     <!ENTITY ent2 "&ent;">
8511     ]>
8512     <e a="&ent2;"/>
8513     @@@test:domTree:
8514     document {
8515     document-type { }
8516     element {
8517     attribute {
8518     node-name: 'a';
8519     general-entity-reference {
8520     node-name: 'ent2';
8521 wakaba 1.19 is-expanded: true;
8522 wakaba 1.18 general-entity-reference {
8523     node-name: 'ent';
8524     text-content: 'aa!bb';
8525 wakaba 1.19 is-expanded: true;
8526 wakaba 1.18 }
8527     }
8528     }
8529     }
8530     }
8531    
8532     @@XMLTest:
8533     @@@QName: xp.element.content.hcr.1.test
8534     @@@DEnt:
8535     @@@@test:value:
8536     <e>&#x21;</e>
8537     @@@test:domTree:
8538     document {
8539     element {
8540     text-content: '!';
8541     }
8542     }
8543     @@XMLTest:
8544     @@@QName: xp.element.content.hcr.2.test
8545     @@@DEnt:
8546     @@@@test:value:
8547     <e>aaaa&#x21;bbbb</e>
8548     @@@test:domTree:
8549     document {
8550     element {
8551     text-content: 'aaaa!bbbb';
8552     }
8553     }
8554     @@XMLTest:
8555     @@@QName: xp.attrval.hcr.1.test
8556     @@@DEnt:
8557     @@@@test:value:
8558     <e a="&#x21;"/>
8559     @@@test:domTree:
8560     document {
8561     element {
8562     attribute {
8563     node-name: 'a';
8564     text-content: '!';
8565     }
8566     }
8567     }
8568     @@XMLTest:
8569     @@@QName: xp.attrval.hcr.2.test
8570     @@@DEnt:
8571     @@@@test:value:
8572     <e a="aaaaa&#x21;bbbbb"/>
8573     @@@test:domTree:
8574     document {
8575     element {
8576     attribute {
8577     node-name: 'a';
8578     text-content: 'aaaaa!bbbbb';
8579     }
8580     }
8581     }
8582     @@XMLTest:
8583     @@@QName: xp.attrval.hcr.3.test
8584     @@@DEnt:
8585     @@@@test:value:
8586     <e a='&#x21;'/>
8587     @@@test:domTree:
8588     document {
8589     element {
8590     attribute {
8591     node-name: 'a';
8592     text-content: '!';
8593     }
8594     }
8595     }
8596     @@XMLTest:
8597     @@@QName: xp.attrval.hcr.4.test
8598     @@@DEnt:
8599     @@@@test:value:
8600     <e a='aaaaa&#x21;bbbbb'/>
8601     @@@test:domTree:
8602     document {
8603     element {
8604     attribute {
8605     node-name: 'a';
8606     text-content: 'aaaaa!bbbbb';
8607     }
8608     }
8609     }
8610     @@XMLTest:
8611     @@@QName: xp.entval.hcr.1.test
8612     @@@DEnt:
8613     @@@@test:value:
8614     <!DOCTYPE e [
8615     <!ENTITY ent "&#x21;">
8616     ]>
8617     <e/>
8618     @@@test:domTree:
8619     document {
8620     document-type {
8621     general-entity {
8622     node-name: 'ent';
8623     text-content: '!';
8624 wakaba 1.10 }
8625 wakaba 1.9 }
8626 wakaba 1.18 element { }
8627 wakaba 1.9 }
8628     @@XMLTest:
8629 wakaba 1.18 @@@QName: xp.entval.hcr.2.test
8630 wakaba 1.9 @@@DEnt:
8631     @@@@test:value:
8632 wakaba 1.18 <!DOCTYPE e [
8633     <!ENTITY ent "aaaaa&#x21;bbbbb">
8634     ]>
8635     <e/>
8636 wakaba 1.9 @@@test:domTree:
8637     document {
8638 wakaba 1.18 document-type {
8639     general-entity {
8640     node-name: 'ent';
8641     text-content: 'aaaaa!bbbbb';
8642 wakaba 1.9 }
8643     }
8644 wakaba 1.18 element { }
8645 wakaba 1.9 }
8646     @@XMLTest:
8647 wakaba 1.18 @@@QName: xp.element.content.reptxt.hcr.1.test
8648 wakaba 1.9 @@@DEnt:
8649     @@@@test:value:
8650 wakaba 1.18 <!DOCTYPE e [
8651     <!ENTITY ent "&#38;#x21;">
8652 wakaba 1.9 ]>
8653 wakaba 1.18 <e>&ent;</e>
8654 wakaba 1.9 @@@test:domTree:
8655     document {
8656     document-type { }
8657     element {
8658 wakaba 1.18 general-entity-reference {
8659     node-name: 'ent';
8660     text-content: '!';
8661 wakaba 1.19 is-expanded: true;
8662 wakaba 1.9 }
8663     }
8664     }
8665     @@XMLTest:
8666 wakaba 1.18 @@@QName: xp.element.content.reptxt.hcr.2.test
8667 wakaba 1.9 @@@DEnt:
8668     @@@@test:value:
8669 wakaba 1.18 <!DOCTYPE e [
8670     <!ENTITY ent "aaaaa&#38;#x21;bbbbb">
8671 wakaba 1.9 ]>
8672 wakaba 1.18 <e>&ent;</e>
8673 wakaba 1.9 @@@test:domTree:
8674     document {
8675     document-type { }
8676     element {
8677 wakaba 1.18 general-entity-reference {
8678     node-name: 'ent';
8679     text-content: 'aaaaa!bbbbb';
8680 wakaba 1.19 is-expanded: true;
8681 wakaba 1.9 }
8682     }
8683     }
8684     @@XMLTest:
8685 wakaba 1.18 @@@QName: xp.element.content.reptxt.reptxt.hcr.1.test
8686 wakaba 1.9 @@@DEnt:
8687     @@@@test:value:
8688 wakaba 1.18 <!DOCTYPE e [
8689     <!ENTITY ent "&#38;#x21;">
8690     <!ENTITY ent2 "&ent;">
8691     ]>
8692     <e>&ent2;</e>
8693 wakaba 1.9 @@@test:domTree:
8694     document {
8695 wakaba 1.18 document-type { }
8696 wakaba 1.9 element {
8697 wakaba 1.18 general-entity-reference {
8698     node-name: 'ent2';
8699 wakaba 1.19 is-expanded: true;
8700 wakaba 1.18 general-entity-reference {
8701     node-name: 'ent';
8702     text-content: '!';
8703 wakaba 1.19 is-expanded: true;
8704 wakaba 1.18 }
8705 wakaba 1.9 }
8706     }
8707     }
8708     @@XMLTest:
8709 wakaba 1.18 @@@QName: xp.element.content.reptxt.reptxt.hcr.2.test
8710 wakaba 1.9 @@@DEnt:
8711     @@@@test:value:
8712 wakaba 1.18 <!DOCTYPE e [
8713     <!ENTITY ent "aa&#38;#x21;bb">
8714     <!ENTITY ent2 "&ent;">
8715     ]>
8716     <e>&ent2;</e>
8717 wakaba 1.9 @@@test:domTree:
8718     document {
8719 wakaba 1.18 document-type { }
8720 wakaba 1.9 element {
8721 wakaba 1.18 general-entity-reference {
8722     node-name: 'ent2';
8723 wakaba 1.19 is-expanded: true;
8724 wakaba 1.18 general-entity-reference {
8725     node-name: 'ent';
8726 wakaba 1.19 is-expanded: true;
8727 wakaba 1.18 text-content: 'aa!bb';
8728     }
8729 wakaba 1.9 }
8730     }
8731     }
8732     @@XMLTest:
8733 wakaba 1.18 @@@QName: xp.attval.reptxt.hcr.1.test
8734 wakaba 1.9 @@@DEnt:
8735     @@@@test:value:
8736 wakaba 1.18 <!DOCTYPE e [
8737     <!ENTITY ent "&#38;#x21;">
8738     ]>
8739     <e a="&ent;"/>
8740 wakaba 1.9 @@@test:domTree:
8741     document {
8742 wakaba 1.18 document-type { }
8743 wakaba 1.9 element {
8744     attribute {
8745 wakaba 1.18 node-name: 'a';
8746     general-entity-reference {
8747     node-name: 'ent';
8748 wakaba 1.19 is-expanded: true;
8749 wakaba 1.18 text-content: '!';
8750     }
8751 wakaba 1.10 }
8752     }
8753     }
8754     @@XMLTest:
8755 wakaba 1.18 @@@QName: xp.attval.reptxt.hcr.2.test
8756 wakaba 1.10 @@@DEnt:
8757     @@@@test:value:
8758 wakaba 1.18 <!DOCTYPE e [
8759     <!ENTITY ent "aaaaa&#38;#x21;bbbbb">
8760 wakaba 1.10 ]>
8761 wakaba 1.18 <e a="&ent;"/>
8762 wakaba 1.10 @@@test:domTree:
8763     document {
8764     document-type { }
8765     element {
8766     attribute {
8767 wakaba 1.18 node-name: 'a';
8768     general-entity-reference {
8769     node-name: 'ent';
8770 wakaba 1.19 is-expanded: true;
8771 wakaba 1.18 text-content: 'aaaaa!bbbbb';
8772     }
8773 wakaba 1.10 }
8774     }
8775     }
8776     @@XMLTest:
8777 wakaba 1.18 @@@QName: xp.attval.reptxt.reptxt.hcr.1.test
8778 wakaba 1.10 @@@DEnt:
8779     @@@@test:value:
8780 wakaba 1.18 <!DOCTYPE e [
8781     <!ENTITY ent "&#38;#x21;">
8782     <!ENTITY ent2 "&ent;">
8783 wakaba 1.10 ]>
8784 wakaba 1.18 <e a="&ent2;"/>
8785 wakaba 1.10 @@@test:domTree:
8786     document {
8787     document-type { }
8788     element {
8789     attribute {
8790 wakaba 1.18 node-name: 'a';
8791     general-entity-reference {
8792     node-name: 'ent2';
8793 wakaba 1.19 is-expanded: true;
8794 wakaba 1.18 general-entity-reference {
8795     node-name: 'ent';
8796 wakaba 1.19 is-expanded: true;
8797 wakaba 1.18 text-content: '!';
8798     }
8799     }
8800 wakaba 1.10 }
8801     }
8802     }
8803     @@XMLTest:
8804 wakaba 1.18 @@@QName: xp.attval.reptxt.reptxt.hcr.2.test
8805 wakaba 1.10 @@@DEnt:
8806     @@@@test:value:
8807 wakaba 1.18 <!DOCTYPE e [
8808     <!ENTITY ent "aa&#38;#x21;bb">
8809     <!ENTITY ent2 "&ent;">
8810 wakaba 1.10 ]>
8811 wakaba 1.18 <e a="&ent2;"/>
8812 wakaba 1.10 @@@test:domTree:
8813     document {
8814     document-type { }
8815     element {
8816     attribute {
8817 wakaba 1.18 node-name: 'a';
8818     general-entity-reference {
8819     node-name: 'ent2';
8820 wakaba 1.19 is-expanded: true;
8821 wakaba 1.18 general-entity-reference {
8822     node-name: 'ent';
8823 wakaba 1.19 is-expanded: true;
8824 wakaba 1.18 text-content: 'aa!bb';
8825     }
8826     }
8827 wakaba 1.11 }
8828     }
8829     }
8830    
8831     @@XMLTest:
8832 wakaba 1.18 @@@QName: xp.element.content.ncr.legal.char.1.0.1.test
8833     @@@DEnt:
8834     @@@@test:value:
8835     <?xml version="1.0"?>
8836     <e>&#0;</e>
8837     @@@c:erred: <[[xp|wf-legal-character]]> { (2, 4)..(2, 7); }
8838     @@XMLTest:
8839     @@@QName: xp.element.content.ncr.legal.char.1.1.1.test
8840     @@@DEnt:
8841     @@@@test:value:
8842     <?xml version="1.1"?>
8843     <e>&#0;</e>
8844     @@@c:erred: <[[xp|wf-legal-character]]> { (2, 4)..(2, 7); }
8845     @@XMLTest:
8846     @@@QName: xp.element.content.ncr.legal.char.1.0.2.test
8847     @@@DEnt:
8848     @@@@test:value:
8849     <?xml version="1.0"?>
8850     <e>&#1;</e>
8851     @@@c:erred: <[[xp|wf-legal-character]]> { (2, 4)..(2, 7); }
8852     @@XMLTest:
8853     @@@QName: xp.element.content.ncr.legal.char.1.1.2.test
8854 wakaba 1.11 @@@DEnt:
8855     @@@@test:value:
8856 wakaba 1.18 <?xml version="1.1"?>
8857     <e>&#1;</e>
8858 wakaba 1.11 @@@test:domTree:
8859     document {
8860 wakaba 1.18 xml-version: '1.1';
8861 wakaba 1.11 element {
8862 wakaba 1.18 text-content: U+0001;
8863 wakaba 1.11 }
8864     }
8865     @@XMLTest:
8866 wakaba 1.18 @@@QName: xp.element.content.hcr.legal.char.1.0.1.test
8867     @@@DEnt:
8868     @@@@test:value:
8869     <?xml version="1.0"?>
8870     <e>&#x0;</e>
8871     @@@c:erred: <[[xp|wf-legal-character]]> { (2, 4)..(2, 8); }
8872     @@XMLTest:
8873     @@@QName: xp.element.content.hcr.legal.char.1.1.1.test
8874     @@@DEnt:
8875     @@@@test:value:
8876     <?xml version="1.1"?>
8877     <e>&#x0;</e>
8878     @@@c:erred: <[[xp|wf-legal-character]]> { (2, 4)..(2, 8); }
8879     @@XMLTest:
8880     @@@QName: xp.element.content.hcr.legal.char.1.0.2.test
8881 wakaba 1.11 @@@DEnt:
8882     @@@@test:value:
8883 wakaba 1.18 <?xml version="1.0"?>
8884     <e>&#x1;</e>
8885     @@@c:erred: <[[xp|wf-legal-character]]> { (2, 4)..(2, 8); }
8886 wakaba 1.11 @@XMLTest:
8887 wakaba 1.18 @@@QName: xp.element.content.hcr.legal.char.1.1.2.test
8888 wakaba 1.11 @@@DEnt:
8889     @@@@test:value:
8890 wakaba 1.18 <?xml version="1.1"?>
8891     <e>&#x1;</e>
8892 wakaba 1.11 @@@test:domTree:
8893     document {
8894 wakaba 1.18 xml-version: '1.1';
8895 wakaba 1.11 element {
8896 wakaba 1.18 text-content: U+0001;
8897 wakaba 1.6 }
8898     }
8899    
8900 wakaba 1.19 @@XMLTest:
8901     @@@QName: xp.element.content.ger.entity.declared.nodtd.1.test
8902     @@@DEnt:
8903     @@@@test:value:
8904     <p>&entity;</p>
8905     @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 4)..(1, 11); }
8906     @@XMLTest:
8907     @@@QName: xp.element.content.ger.entity.declared.nodtd.2.test
8908     @@@DEnt:
8909     @@@@test:value:
8910     <?xml version="1.0" standalone="yes"?>
8911     <p>&entity;</p>
8912     @@@c:erred: <[[xp|wf-entity-declared]]> { (2, 4)..(2, 11); }
8913     @@XMLTest:
8914     @@@QName: xp.element.content.ger.entity.declared.nodtd.3.test
8915     @@@DEnt:
8916     @@@@test:value:
8917     <?xml version="1.0" standalone="no"?>
8918     <p>&entity;</p>
8919     @@@c:erred: <[[xp|wf-entity-declared]]> { (2, 4)..(2, 11); }
8920     @@XMLTest:
8921     @@@QName: xp.element.content.ger.entity.declared.nodtd.-1.test
8922     @@@DEnt:
8923     @@@@test:value:
8924     <p>&lt;&gt;&amp;&quot;&apos;</p>
8925     @@@test:domTree:
8926     document {
8927     element {
8928     text-content: '<>&"' U+0027;
8929     }
8930     }
8931     @@XMLTest:
8932     @@@QName: xp.element.content.ger.entity.declared.nopref.1.test
8933     @@@DEnt:
8934     @@@@test:value:
8935     <!DOCTYPE p []>
8936     <p>&entity;</p>
8937     @@@c:erred: <[[xp|wf-entity-declared]]> { (2, 4)..(2, 11); }
8938     @@XMLTest:
8939     @@@QName: xp.element.content.ger.entity.declared.nopref.2.test
8940     @@@DEnt:
8941     @@@@test:value:
8942     <!DOCTYPE p [
8943     <!ENTITY other "aa">
8944     <!ENTITY % another "aa">
8945     ]>
8946     <p>&entity;</p>
8947     @@@c:erred: <[[xp|wf-entity-declared]]> { (5, 4)..(5, 11); }
8948     @@XMLTest:
8949     @@@QName: xp.element.content.ger.entity.declared.nopref.3.test
8950     @@@DEnt:
8951     @@@@test:value:
8952     <?xml version="1.0" standalone="yes"?>
8953     <!DOCTYPE p []>
8954     <p>&entity;</p>
8955     @@@c:erred: <[[xp|wf-entity-declared]]> { (3, 4)..(3, 11); }
8956     @@XMLTest:
8957     @@@QName: xp.element.content.ger.entity.declared.nopref.4.test
8958     @@@DEnt:
8959     @@@@test:value:
8960     <?xml version="1.0" standalone="no"?>
8961     <!DOCTYPE p []>
8962     <p>&entity;</p>
8963     @@@c:erred: <[[xp|wf-entity-declared]]> { (3, 4)..(3, 11); }
8964     @@XMLTest:
8965     @@@QName: xp.element.content.ger.entity.declared.nopref.5.test
8966     @@@DEnt:
8967     @@@@test:value:
8968     <?xml version="1.0" standalone="yes"?>
8969     <!DOCTYPE p [
8970     <!ENTITY other "aa">
8971     <!ENTITY % another "aa">
8972     ]>
8973     <p>&entity;</p>
8974     @@@c:erred: <[[xp|wf-entity-declared]]> { (6, 4)..(6, 11); }
8975     @@XMLTest:
8976     @@@QName: xp.element.content.ger.entity.declared.nopref.6.test
8977     @@@DEnt:
8978     @@@@test:value:
8979     <?xml version="1.0" standalone="no"?>
8980     <!DOCTYPE p [
8981     <!ENTITY other "aa">
8982     <!ENTITY % another "aa">
8983     ]>
8984     <p>&entity;</p>
8985     @@@c:erred: <[[xp|wf-entity-declared]]> { (6, 4)..(6, 11); }
8986     @@XMLTest:
8987     @@@QName: xp.element.content.ger.entity.declared.nopref.-1.test
8988     @@@DEnt:
8989     @@@@test:value:
8990     <!DOCTYPE p [
8991     <!ENTITY entity "value">
8992     ]>
8993     <p>&entity;</p>
8994     @@@test:domTree:
8995     document {
8996     document-type {
8997     general-entity {
8998     node-name: 'entity';
8999     text-content: 'value';
9000     }
9001     }
9002     element {
9003 wakaba 1.20 general-entity-reference {
9004 wakaba 1.19 node-name: 'entity';
9005 wakaba 1.20 is-expanded: true;
9006 wakaba 1.19 text-content: 'value';
9007     }
9008     }
9009     }
9010     @@XMLTest:
9011     @@@QName: xp.element.content.ger.entity.declared.nopref.-2.test
9012     @@@DEnt:
9013     @@@@test:value:
9014     <!DOCTYPE p [
9015     <!ENTITY entity "value">
9016     <!ENTITY another SYSTEM "another">
9017     ]>
9018     <p>&entity;</p>
9019     @@@test:domTree:
9020     document {
9021     document-type {
9022     general-entity {
9023     node-name: 'entity';
9024     text-content: 'value';
9025     }
9026 wakaba 1.20 general-entity {
9027     node-name: 'another';
9028     public-id: null;
9029     system-id: 'another';
9030     }
9031 wakaba 1.19 }
9032     element {
9033 wakaba 1.20 general-entity-reference {
9034 wakaba 1.19 node-name: 'entity';
9035 wakaba 1.20 is-expanded: true;
9036 wakaba 1.19 text-content: 'value';
9037     }
9038     }
9039     }
9040     @@XMLTest:
9041     @@@QName: xp.element.content.ger.entity.declared.standalone.1.test
9042     @@@DEnt:
9043     @@@@test:value:
9044     <?xml version="1.0" standalone="yes"?>
9045     <p>&entity;</p>
9046     @@@c:erred: <[[xp|wf-entity-declared]]> { (2, 4)..(2, 11); }
9047     @@XMLTest:
9048     @@@QName: xp.element.content.ger.entity.declared.standalone.2.test
9049     @@@DEnt:
9050     @@@@test:value:
9051     <?xml version="1.0" standalone="yes"?>
9052     <!DOCTYPE p []>
9053     <p>&entity;</p>
9054     @@@c:erred: <[[xp|wf-entity-declared]]> { (3, 4)..(3, 11); }
9055     @@XMLTest:
9056     @@@QName: xp.element.content.ger.entity.declared.standalone.3.test
9057     @@@DEnt:
9058     @@@@test:value:
9059     <?xml version="1.0" standalone="yes"?>
9060     <!DOCTYPE p [
9061     <!ENTITY % para "<!-- -->">
9062     %para;
9063     ]>
9064     <p>&entity;</p>
9065     @@@c:erred: <[[xp|wf-entity-declared]]> { (6, 4)..(6, 11); }
9066     @@XMLTest:
9067     @@@QName: xp.element.content.ger.entity.declared.standalone.-1.test
9068     @@@DEnt:
9069     @@@@test:value:
9070     <?xml version="1.0" standalone="no"?>
9071     <!DOCTYPE p [
9072     <!ENTITY % para "<!-- -->">
9073     %para;
9074     ]>
9075     <p>&entity;</p>
9076     @@@test:domTree:
9077     document {
9078     document-type { }
9079     element {
9080     general-entity-reference {
9081     is-expanded: false;
9082     }
9083     }
9084     }
9085     @@XMLTest:
9086     @@@QName: xp.element.content.ger.entity.declared.standalone.-2.test
9087     @@@DEnt:
9088     @@@@test:value:
9089     <!DOCTYPE p [
9090     <!ENTITY % para "<!-- -->">
9091     %para;
9092     ]>
9093     <p>&entity;</p>
9094     @@@test:domTree:
9095     document {
9096     document-type { }
9097     element {
9098     general-entity-reference {
9099     is-expanded: false;
9100     }
9101     }
9102     }
9103     @@XMLTest:
9104     @@@QName: xp.element.content.ger.entity.declared.standalone.4.test
9105     @@@DEnt:
9106     @@@@test:value:
9107     <?xml version="1.0" standalone="yes"?>
9108     <!DOCTYPE p [
9109     <!ENTITY % para SYSTEM "para">
9110     %para;
9111     ]>
9112     <p>&entity;</p>
9113     @@@c:erred: <[[xp|wf-entity-declared]]> { (6, 4)..(6, 11); }
9114     @@XMLTest:
9115     @@@QName: xp.element.content.ger.entity.declared.standalone.-3.test
9116     @@@DEnt:
9117     @@@@test:value:
9118     <?xml version="1.0" standalone="no"?>
9119     <!DOCTYPE p [
9120     <!ENTITY % para SYSTEM "para">
9121     %para;
9122     ]>
9123     <p>&entity;</p>
9124     @@@test:domTree:
9125     document {
9126     document-type { }
9127     element {
9128     general-entity-reference {
9129     is-expanded: false;
9130     }
9131     }
9132     }
9133     @@XMLTest:
9134     @@@QName: xp.element.content.ger.entity.declared.standalone.-4.test
9135     @@@DEnt:
9136     @@@@test:value:
9137     <!DOCTYPE p [
9138     <!ENTITY % para SYSTEM "para">
9139     %para;
9140     ]>
9141     <p>&entity;</p>
9142     @@@test:domTree:
9143     document {
9144     document-type { }
9145     element {
9146     general-entity-reference {
9147     is-expanded: false;
9148     }
9149     }
9150     }
9151     @@XMLTest:
9152     @@@QName: xp.element.content.ger.entity.declared.standalone.5.test
9153     @@@DEnt:
9154     @@@@test:value:
9155     <?xml version="1.0" standalone="yes"?>
9156     <!DOCTYPE p SYSTEM "dtd">
9157     <p>&entity;</p>
9158     @@@c:erred: <[[xp|wf-entity-declared]]> { (3, 4)..(3, 11); }
9159     @@XMLTest:
9160     @@@QName: xp.element.content.ger.entity.declared.standalone.-5.test
9161     @@@DEnt:
9162     @@@@test:value:
9163     <?xml version="1.0" standalone="no"?>
9164     <!DOCTYPE p SYSTEM "dtd">
9165     <p>&entity;</p>
9166     @@@test:domTree:
9167     document {
9168     document-type { }
9169     element {
9170     general-entity-reference {
9171     is-expanded: false;
9172     }
9173     }
9174     }
9175     @@XMLTest:
9176     @@@QName: xp.element.content.ger.entity.declared.standalone.-6.test
9177     @@@DEnt:
9178     @@@@test:value:
9179     <!DOCTYPE p SYSTEM "dtd">
9180     <p>&entity;</p>
9181     @@@test:domTree:
9182     document {
9183     document-type { }
9184     element {
9185     general-entity-reference {
9186     is-expanded: false;
9187     }
9188     }
9189     }
9190    
9191 wakaba 1.20 @@XMLTest:
9192     @@@QName: xp.reptxt.element.content.ger.entity.declared.nopref.1.test
9193     @@@DEnt:
9194     @@@@test:value:
9195     <!DOCTYPE p [
9196     <!ENTITY c "&entity;">
9197     ]>
9198     <p>&c;</p>
9199     @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
9200     @@XMLTest:
9201     @@@QName: xp.reptxt.element.content.ger.entity.declared.nopref.2.test
9202     @@@DEnt:
9203     @@@@test:value:
9204     <!DOCTYPE p [
9205     <!ENTITY other "aa">
9206     <!ENTITY % another "aa">
9207     <!ENTITY c "&entity;">
9208     ]>
9209     <p>&c;</p>
9210     @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
9211     @@XMLTest:
9212     @@@QName: xp.reptxt.element.content.ger.entity.declared.nopref.3.test
9213     @@@DEnt:
9214     @@@@test:value:
9215     <?xml version="1.0" standalone="yes"?>
9216     <!DOCTYPE p [
9217     <!ENTITY c "&entity;">
9218     ]>
9219     <p>&c;</p>
9220     @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
9221     @@XMLTest:
9222     @@@QName: xp.reptxt.element.content.ger.entity.declared.nopref.4.test
9223     @@@DEnt:
9224     @@@@test:value:
9225     <?xml version="1.0" standalone="no"?>
9226     <!DOCTYPE p [
9227     <!ENTITY c "&entity;">
9228     ]>
9229     <p>&c;</p>
9230     @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
9231     @@XMLTest:
9232     @@@QName: xp.reptxt.element.content.ger.entity.declared.nopref.5.test
9233     @@@DEnt:
9234     @@@@test:value:
9235     <?xml version="1.0" standalone="yes"?>
9236     <!DOCTYPE p [
9237     <!ENTITY other "aa">
9238     <!ENTITY % another "aa">
9239     <!ENTITY c "&entity;">
9240     ]>
9241     <p>&c;</p>
9242     @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
9243     @@XMLTest:
9244     @@@QName: xp.reptxt.element.content.ger.entity.declared.nopref.6.test
9245     @@@DEnt:
9246     @@@@test:value:
9247     <?xml version="1.0" standalone="no"?>
9248     <!DOCTYPE p [
9249     <!ENTITY other "aa">
9250     <!ENTITY % another "aa">
9251     <!ENTITY c "&entity;">
9252     ]>
9253     <p>&c;</p>
9254     @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
9255     @@XMLTest:
9256     @@@QName: xp.reptxt.element.content.ger.entity.declared.nopref.-1.test
9257     @@@DEnt:
9258     @@@@test:value:
9259     <!DOCTYPE p [
9260     <!ENTITY entity "value">
9261     <!ENTITY c "&entity;">
9262     ]>
9263     <p>&c;</p>
9264     @@@test:domTree:
9265     document {
9266     document-type {
9267     general-entity {
9268     node-name: 'entity';
9269     text-content: 'value';
9270     }
9271     general-entity {
9272     node-name: 'c';
9273     general-entity-reference {
9274     node-name: 'entity';
9275     text-content: 'value';
9276     }
9277     }
9278     }
9279     element {
9280     general-entity-reference {
9281     node-name: 'c';
9282     general-entity-reference {
9283     node-name: 'entity';
9284     text-content: 'value';
9285     }
9286     }
9287     }
9288     }
9289     @@XMLTest:
9290     @@@QName: xp.reptxt.element.content.ger.entity.declared.nopref.-2.test
9291     @@@DEnt:
9292     @@@@test:value:
9293     <!DOCTYPE p [
9294     <!ENTITY entity "value">
9295     <!ENTITY another SYSTEM "another">
9296     <!ENTITY c "&entity;">
9297     ]>
9298     <p>&c;</p>
9299     @@@test:domTree:
9300     document {
9301     document-type {
9302     general-entity {
9303     node-name: 'entity';
9304     text-content: 'value';
9305     }
9306     general-entity {
9307     node-name: 'c';
9308     general-entity-reference {
9309     node-name: 'entity';
9310     text-content: 'value';
9311     }
9312     }
9313     general-entity {
9314     node-name: 'another';
9315     public-id: null;
9316     system-id: 'another';
9317     has-replacement-tree: false;
9318     }
9319     }
9320     element {
9321     general-entity-reference {
9322     node-name: 'c';
9323     general-entity-reference {
9324     node-name: 'entity';
9325     text-content: 'value';
9326     }
9327     }
9328     }
9329     }
9330     @@XMLTest:
9331     @@@QName: xp.reptxt.element.content.ger.entity.declared.standalone.2.test
9332     @@@DEnt:
9333     @@@@test:value:
9334     <?xml version="1.0" standalone="yes"?>
9335     <!DOCTYPE p [
9336     <!ENTITY c "&entity;">
9337     ]>
9338     <p>&c;</p>
9339     @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
9340     @@XMLTest:
9341     @@@QName: xp.reptxt.element.content.ger.entity.declared.standalone.3.test
9342     @@@DEnt:
9343     @@@@test:value:
9344     <?xml version="1.0" standalone="yes"?>
9345     <!DOCTYPE p [
9346     <!ENTITY % para "<!-- -->">
9347     %para;
9348     <!ENTITY c "&entity;">
9349     ]>
9350     <p>&c;</p>
9351     @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
9352     @@XMLTest:
9353     @@@QName: xp.reptxt.element.content.ger.entity.declared.standalone.-1.test
9354     @@@DEnt:
9355     @@@@test:value:
9356     <?xml version="1.0" standalone="no"?>
9357     <!DOCTYPE p [
9358     <!ENTITY c "&entity;">
9359     <!ENTITY % para "<!-- -->">
9360     %para;
9361     ]>
9362     <p>&c;</p>
9363     @@@test:domTree:
9364     document {
9365     document-type {
9366     general-entity {
9367     node-name: 'c';
9368     general-entity-reference {
9369     node-name: 'entity';
9370     is-expanded: false;
9371     }
9372     }
9373     }
9374     element {
9375     general-entity-reference {
9376     node-name: 'c';
9377     general-entity-reference {
9378     node-name: 'entity';
9379     is-expanded: false;
9380     }
9381     }
9382     }
9383     }
9384     @@XMLTest:
9385     @@@QName:
9386     xp.reptxt.element.content.ger.entity.declared.standalone.-1.2.test
9387     @@@DEnt:
9388     @@@@test:value:
9389     <?xml version="1.0" standalone="no"?>
9390     <!DOCTYPE p [
9391     <!ENTITY % para "<!-- -->">
9392     %para;
9393     <!ENTITY c "&entity;">
9394     ]>
9395     <p>&c;</p>
9396     @@@test:domTree:
9397     document {
9398     document-type { }
9399     element {
9400     general-entity-reference {
9401     node-name: 'c';
9402     is-expanded: false;
9403     }
9404     }
9405     }
9406     @@XMLTest:
9407     @@@QName: xp.reptxt.element.content.ger.entity.declared.standalone.-2.test
9408     @@@DEnt:
9409     @@@@test:value:
9410     <!DOCTYPE p [
9411     <!ENTITY c "&entity;">
9412     <!ENTITY % para "<!-- -->">
9413     %para;
9414     ]>
9415     <p>&c;</p>
9416     @@@test:domTree:
9417     document {
9418     document-type { }
9419     element {
9420     general-entity-reference {
9421     node-name: 'c';
9422     is-expanded: true;
9423     general-entity-reference {
9424     node-name: 'entity';
9425     is-expanded: false;
9426     }
9427     }
9428     }
9429     }
9430     @@XMLTest:
9431     @@@QName:
9432     xp.reptxt.element.content.ger.entity.declared.standalone.-2.2.test
9433     @@@DEnt:
9434     @@@@test:value:
9435     <!DOCTYPE p [
9436     <!ENTITY % para "<!-- -->">
9437     %para;
9438     <!ENTITY c "&entity;">
9439     ]>
9440     <p>&c;</p>
9441     @@@test:domTree:
9442     document {
9443     document-type { }
9444     element {
9445     general-entity-reference {
9446     node-name: 'c';
9447     is-expanded: false;
9448     }
9449     }
9450     }
9451     @@XMLTest:
9452     @@@QName: xp.reptxt.element.content.ger.entity.declared.standalone.4.test
9453     @@@DEnt:
9454     @@@@test:value:
9455     <?xml version="1.0" standalone="yes"?>
9456     <!DOCTYPE p [
9457     <!ENTITY % para SYSTEM "para">
9458     %para;
9459     <!ENTITY c "&entity;">
9460     ]>
9461     <p>&c;</p>
9462     @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
9463     @@XMLTest:
9464     @@@QName: xp.reptxt.element.content.ger.entity.declared.standalone.-3.test
9465     @@@DEnt:
9466     @@@@test:value:
9467     <?xml version="1.0" standalone="no"?>
9468     <!DOCTYPE p [
9469     <!ENTITY c "&entity;">
9470     <!ENTITY % para SYSTEM "para">
9471     %para;
9472     ]>
9473     <p>&c;</p>
9474     @@@test:domTree:
9475     document {
9476     document-type { }
9477     element {
9478     general-entity-reference {
9479     node-name: 'c';
9480     is-expanded: true;
9481     general-entity-reference {
9482     node-name: 'entity';
9483     is-expanded: false;
9484     }
9485     }
9486     }
9487     }
9488     @@XMLTest:
9489     @@@QName:
9490     xp.reptxt.element.content.ger.entity.declared.standalone.-3.2.test
9491     @@@DEnt:
9492     @@@@test:value:
9493     <?xml version="1.0" standalone="no"?>
9494     <!DOCTYPE p [
9495     <!ENTITY % para SYSTEM "para">
9496     %para;
9497     <!ENTITY c "&entity;">
9498     ]>
9499     <p>&c;</p>
9500     @@@test:domTree:
9501     document {
9502     document-type { }
9503     element {
9504     general-entity-reference {
9505     node-name: 'c';
9506     is-expanded: false;
9507     }
9508     }
9509     }
9510     @@XMLTest:
9511     @@@QName: xp.reptxt.element.content.ger.entity.declared.standalone.-4.test
9512     @@@DEnt:
9513     @@@@test:value:
9514     <!DOCTYPE p [
9515     <!ENTITY c "&entity;">
9516     <!ENTITY % para SYSTEM "para">
9517     %para;
9518     ]>
9519     <p>&c;</p>
9520     @@@test:domTree:
9521     document {
9522     document-type { }
9523     element {
9524     general-entity-reference {
9525     node-name: 'c';
9526     is-expanded: true;
9527     general-entity-reference {
9528     node-name: 'entity';
9529     is-expanded: false;
9530     }
9531     }
9532     }
9533     }
9534     @@XMLTest:
9535     @@@QName:
9536     xp.reptxt.element.content.ger.entity.declared.standalone.-4.2.test
9537     @@@DEnt:
9538     @@@@test:value:
9539     <!DOCTYPE p [
9540     <!ENTITY % para SYSTEM "para">
9541     %para;
9542     <!ENTITY c "&entity;">
9543     ]>
9544     <p>&c;</p>
9545     @@@test:domTree:
9546     document {
9547     document-type { }
9548     element {
9549     general-entity-reference {
9550     node-name: 'c';
9551     is-expanded: false;
9552     }
9553     }
9554     }
9555     @@XMLTest:
9556     @@@QName: xp.reptxt.element.content.ger.entity.declared.standalone.5.test
9557     @@@DEnt:
9558     @@@@test:value:
9559     <?xml version="1.0" standalone="yes"?>
9560     <!DOCTYPE p SYSTEM "dtd" [
9561     <!ENTITY c "&entity;">
9562     ]>
9563     <p>&c;</p>
9564     @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
9565     @@XMLTest:
9566     @@@QName: xp.reptxt.element.content.ger.entity.declared.standalone.-5.test
9567     @@@DEnt:
9568     @@@@test:value:
9569     <?xml version="1.0" standalone="no"?>
9570     <!DOCTYPE p SYSTEM "dtd" [
9571     <!ENTITY c "&entity;">
9572     ]>
9573     <p>&c;</p>
9574     @@@test:domTree:
9575     document {
9576     document-type { }
9577     element {
9578     general-entity-reference {
9579     node-name: 'c';
9580     is-expanded: true;
9581     general-entity-reference {
9582     node-name: 'entity';
9583     is-expanded: false;
9584     }
9585     }
9586     }
9587     }
9588     @@XMLTest:
9589     @@@QName: xp.reptxt.element.content.ger.entity.declared.standalone.-6.test
9590     @@@DEnt:
9591     @@@@test:value:
9592     <!DOCTYPE p SYSTEM "dtd" [<!ENTITY c "&entity;">]>
9593     <p>&c;</p>
9594     @@@test:domTree:
9595     document {
9596     document-type { }
9597     element {
9598     general-entity-reference {
9599     node-name: 'c';
9600     is-expanded: true;
9601     general-entity-reference {
9602     node-name: 'entity';
9603     is-expanded: false;
9604     }
9605     }
9606     }
9607     }
9608    
9609     @@XMLTest:
9610     @@@QName: xp.attval.ger.entity.declared.nodtd.1.test
9611     @@@DEnt:
9612     @@@@test:value:
9613     <p a="&entity;"/>
9614     @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 7)..(1, 14); }
9615     @@XMLTest:
9616     @@@QName: xp.attval.ger.entity.declared.nodtd.2.test
9617     @@@DEnt:
9618     @@@@test:value:
9619     <?xml version="1.0" standalone="yes"?>
9620     <p a="&entity;"/>
9621     @@@c:erred: <[[xp|wf-entity-declared]]> { (2, 7)..(2, 14); }
9622     @@XMLTest:
9623     @@@QName: xp.attval.ger.entity.declared.nodtd.3.test
9624     @@@DEnt:
9625     @@@@test:value:
9626     <?xml version="1.0" standalone="no"?>
9627     <p a="&entity;"/>
9628     @@@c:erred: <[[xp|wf-entity-declared]]> { (2, 7)..(2, 14); }
9629     @@XMLTest:
9630     @@@QName: xp.attval.ger.entity.declared.nodtd.-1.test
9631     @@@DEnt:
9632     @@@@test:value:
9633     <p a="&lt;&gt;&amp;&quot;&apos;"/>
9634     @@@test:domTree:
9635     document {
9636     element {
9637     attribute {
9638     node-name: 'a';
9639     text-content: '<>&"' U+0027;
9640     }
9641     }
9642     }
9643     @@XMLTest:
9644     @@@QName: xp.attval.ger.entity.declared.nopref.1.test
9645     @@@DEnt:
9646     @@@@test:value:
9647     <!DOCTYPE p []>
9648     <p a="&entity;"/>
9649     @@@c:erred: <[[xp|wf-entity-declared]]> { (2, 7)..(2, 14); }
9650     @@XMLTest:
9651     @@@QName: xp.attval.ger.entity.declared.nopref.2.test
9652     @@@DEnt:
9653     @@@@test:value:
9654     <!DOCTYPE p [
9655     <!ENTITY other "aa">
9656     <!ENTITY % another "aa">
9657     ]>
9658     <p a="&entity;"/>
9659     @@@c:erred: <[[xp|wf-entity-declared]]> { (5, 7)..(5, 14); }
9660     @@XMLTest:
9661     @@@QName: xp.attval.ger.entity.declared.nopref.3.test
9662     @@@DEnt:
9663     @@@@test:value:
9664     <?xml version="1.0" standalone="yes"?>
9665     <!DOCTYPE p []>
9666     <p a="&entity;"/>
9667     @@@c:erred: <[[xp|wf-entity-declared]]> { (3, 7)..(3, 14); }
9668     @@XMLTest:
9669     @@@QName: xp.attval.ger.entity.declared.nopref.4.test
9670     @@@DEnt:
9671     @@@@test:value:
9672     <?xml version="1.0" standalone="no"?>
9673     <!DOCTYPE p []>
9674     <p a="&entity;"/>
9675     @@@c:erred: <[[xp|wf-entity-declared]]> { (3, 7)..(3, 14); }
9676     @@XMLTest:
9677     @@@QName: xp.attval.ger.entity.declared.nopref.5.test
9678     @@@DEnt:
9679     @@@@test:value:
9680     <?xml version="1.0" standalone="yes"?>
9681     <!DOCTYPE p [
9682     <!ENTITY other "aa">
9683     <!ENTITY % another "aa">
9684     ]>
9685     <p a="&entity;"/>
9686     @@@c:erred: <[[xp|wf-entity-declared]]> { (6, 7)..(6, 14); }
9687     @@XMLTest:
9688     @@@QName: xp.attval.ger.entity.declared.nopref.6.test
9689     @@@DEnt:
9690     @@@@test:value:
9691     <?xml version="1.0" standalone="no"?>
9692     <!DOCTYPE p [
9693     <!ENTITY other "aa">
9694     <!ENTITY % another "aa">
9695     ]>
9696     <p a="&entity;"/>
9697     @@@c:erred: <[[xp|wf-entity-declared]]> { (6, 7)..(6, 14); }
9698     @@XMLTest:
9699     @@@QName: xp.attval.ger.entity.declared.nopref.-1.test
9700     @@@DEnt:
9701     @@@@test:value:
9702     <!DOCTYPE p [
9703     <!ENTITY entity "value">
9704     ]>
9705     <p a="&entity;"/>
9706     @@@test:domTree:
9707     document {
9708     document-type {
9709     general-entity {
9710     node-name: 'entity';
9711     text-content: 'value';
9712     }
9713     }
9714     element {
9715     attribute {
9716     node-name: 'a';
9717     general-entity-reference {
9718     node-name: 'entity';
9719     is-expanded: true;
9720     text-content: 'value';
9721     }
9722     }
9723     }
9724     }
9725     @@XMLTest:
9726     @@@QName: xp.attval.ger.entity.declared.nopref.-2.test
9727     @@@DEnt:
9728     @@@@test:value:
9729     <!DOCTYPE p [
9730     <!ENTITY entity "value">
9731     <!ENTITY another SYSTEM "another">
9732     ]>
9733     <p a="&entity;"/>
9734     @@@test:domTree:
9735     document {
9736     document-type {
9737     general-entity {
9738     node-name: 'entity';
9739     text-content: 'value';
9740     has-replacement-tree: true;
9741     }
9742     general-entity {
9743     node-name: 'another';
9744     public-id: null;
9745     system-id: 'another';
9746     has-replacement-tree: false;
9747     }
9748     }
9749     element {
9750     attribute {
9751     node-name: 'a';
9752     general-entity-reference {
9753     node-name: 'entity';
9754     is-expanded: true;
9755     text-content: 'value';
9756     }
9757     }
9758     }
9759     }
9760     @@XMLTest:
9761     @@@QName: xp.attval.ger.entity.declared.standalone.1.test
9762     @@@DEnt:
9763     @@@@test:value:
9764     <?xml version="1.0" standalone="yes"?>
9765     <p a="&entity;"/>
9766     @@@c:erred: <[[xp|wf-entity-declared]]> { (2, 7)..(2, 14); }
9767     @@XMLTest:
9768     @@@QName: xp.attval.ger.entity.declared.standalone.2.test
9769     @@@DEnt:
9770     @@@@test:value:
9771     <?xml version="1.0" standalone="yes"?>
9772     <!DOCTYPE p []>
9773     <p a="&entity;"/>
9774     @@@c:erred: <[[xp|wf-entity-declared]]> { (3, 7)..(3, 14); }
9775     @@XMLTest:
9776     @@@QName: xp.attval.ger.entity.declared.standalone.3.test
9777     @@@DEnt:
9778     @@@@test:value:
9779     <?xml version="1.0" standalone="yes"?>
9780     <!DOCTYPE p [
9781     <!ENTITY % para "<!-- -->">
9782     %para;
9783     ]>
9784     <p a="&entity;"/>
9785     @@@c:erred: <[[xp|wf-entity-declared]]> { (6, 7)..(6, 14); }
9786     @@XMLTest:
9787     @@@QName: xp.attval.ger.entity.declared.standalone.-1.test
9788     @@@DEnt:
9789     @@@@test:value:
9790     <?xml version="1.0" standalone="no"?>
9791     <!DOCTYPE p [
9792     <!ENTITY % para "<!-- -->">
9793     %para;
9794     ]>
9795     <p a="&entity;"/>
9796     @@@test:domTree:
9797     document {
9798     document-type { }
9799     element {
9800     attribute {
9801     node-name: 'a';
9802     general-entity-reference {
9803     is-expanded: false;
9804     }
9805     }
9806     }
9807     }
9808     @@XMLTest:
9809     @@@QName: xp.attval.ger.entity.declared.standalone.-2.test
9810     @@@DEnt:
9811     @@@@test:value:
9812     <!DOCTYPE p [
9813     <!ENTITY % para "<!-- -->">
9814     %para;
9815     ]>
9816     <p a="&entity;"/>
9817     @@@test:domTree:
9818     document {
9819     document-type { }
9820     element {
9821     attribute {
9822     node-name: 'a';
9823     general-entity-reference {
9824     is-expanded: false;
9825     }
9826     }
9827     }
9828     }
9829     @@XMLTest:
9830     @@@QName: xp.attval.ger.entity.declared.standalone.4.test
9831     @@@DEnt:
9832     @@@@test:value:
9833     <?xml version="1.0" standalone="yes"?>
9834     <!DOCTYPE p [
9835     <!ENTITY % para SYSTEM "para">
9836     %para;
9837     ]>
9838     <p a="&entity;"/>
9839     @@@c:erred: <[[xp|wf-entity-declared]]> { (6, 7)..(6, 14); }
9840     @@XMLTest:
9841     @@@QName: xp.attval.ger.entity.declared.standalone.-3.test
9842     @@@DEnt:
9843     @@@@test:value:
9844     <?xml version="1.0" standalone="no"?>
9845     <!DOCTYPE p [
9846     <!ENTITY % para SYSTEM "para">
9847     %para;
9848     ]>
9849     <p a="&entity;"/>
9850     @@@test:domTree:
9851     document {
9852     document-type { }
9853     element {
9854     attribute {
9855     node-name: 'a';
9856     general-entity-reference {
9857     is-expanded: false;
9858     }
9859     }
9860     }
9861     }
9862     @@XMLTest:
9863     @@@QName: xp.attval.ger.entity.declared.standalone.-4.test
9864     @@@DEnt:
9865     @@@@test:value:
9866     <!DOCTYPE p [
9867     <!ENTITY % para SYSTEM "para">
9868     %para;
9869     ]>
9870     <p a="&entity;"/>
9871     @@@test:domTree:
9872     document {
9873     document-type { }
9874     element {
9875     attribute {
9876     node-name: 'a';
9877     general-entity-reference {
9878     is-expanded: false;
9879     }
9880     }
9881     }
9882     }
9883     @@XMLTest:
9884     @@@QName: xp.attval.ger.entity.declared.standalone.5.test
9885     @@@DEnt:
9886     @@@@test:value:
9887     <?xml version="1.0" standalone="yes"?>
9888     <!DOCTYPE p SYSTEM "dtd">
9889     <p a="&entity;"/>
9890     @@@c:erred: <[[xp|wf-entity-declared]]> { (3, 7)..(3, 14); }
9891     @@XMLTest:
9892     @@@QName: xp.attval.ger.entity.declared.standalone.-5.test
9893     @@@DEnt:
9894     @@@@test:value:
9895     <?xml version="1.0" standalone="no"?>
9896     <!DOCTYPE p SYSTEM "dtd">
9897     <p a="&entity;"/>
9898     @@@test:domTree:
9899     document {
9900     document-type { }
9901     element {
9902     attribute {
9903     node-name: 'a';
9904     general-entity-reference {
9905     is-expanded: false;
9906     }
9907     }
9908     }
9909     }
9910     @@XMLTest:
9911     @@@QName: xp.attval.ger.entity.declared.standalone.-6.test
9912     @@@DEnt:
9913     @@@@test:value:
9914     <!DOCTYPE p SYSTEM "dtd">
9915     <p a="&entity;"/>
9916     @@@test:domTree:
9917     document {
9918     document-type { }
9919     element {
9920     attribute {
9921     node-name: 'a';
9922     general-entity-reference {
9923     is-expanded: false;
9924     }
9925     }
9926     }
9927     }
9928    
9929 wakaba 1.21 @@XMLTest:
9930 wakaba 1.22 @@@QName: xp.reptxt.attval.ger.entity.declared.nopref.1.test
9931 wakaba 1.21 @@@DEnt:
9932     @@@@test:value:
9933     <!DOCTYPE p [
9934 wakaba 1.22 <!ENTITY c "&entity;">
9935 wakaba 1.21 ]>
9936 wakaba 1.22 <p a="&c;"/>
9937     @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
9938 wakaba 1.21 @@XMLTest:
9939 wakaba 1.22 @@@QName: xp.reptxt.attval.ger.entity.declared.nopref.2.test
9940 wakaba 1.21 @@@DEnt:
9941     @@@@test:value:
9942     <!DOCTYPE p [
9943     <!ENTITY other "aa">
9944     <!ENTITY % another "aa">
9945 wakaba 1.22 <!ENTITY c "&entity;">
9946 wakaba 1.21 ]>
9947 wakaba 1.22 <p a="&c;"/>
9948     @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
9949 wakaba 1.21 @@XMLTest:
9950 wakaba 1.22 @@@QName: xp.reptxt.attval.ger.entity.declared.nopref.3.test
9951 wakaba 1.21 @@@DEnt:
9952     @@@@test:value:
9953     <?xml version="1.0" standalone="yes"?>
9954     <!DOCTYPE p [
9955 wakaba 1.22 <!ENTITY c "&entity;">
9956 wakaba 1.21 ]>
9957 wakaba 1.22 <p a="&c;"/>
9958     @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
9959 wakaba 1.21 @@XMLTest:
9960 wakaba 1.22 @@@QName: xp.reptxt.attval.ger.entity.declared.nopref.4.test
9961 wakaba 1.21 @@@DEnt:
9962     @@@@test:value:
9963     <?xml version="1.0" standalone="no"?>
9964     <!DOCTYPE p [
9965 wakaba 1.22 <!ENTITY c "&entity;">
9966 wakaba 1.21 ]>
9967 wakaba 1.22 <p a="&c;"/>
9968     @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
9969 wakaba 1.21 @@XMLTest:
9970 wakaba 1.22 @@@QName: xp.reptxt.attval.ger.entity.declared.nopref.5.test
9971 wakaba 1.21 @@@DEnt:
9972     @@@@test:value:
9973     <?xml version="1.0" standalone="yes"?>
9974     <!DOCTYPE p [
9975     <!ENTITY other "aa">
9976     <!ENTITY % another "aa">
9977 wakaba 1.22 <!ENTITY c "&entity;">
9978 wakaba 1.21 ]>
9979 wakaba 1.22 <p a="&c;"/>
9980     @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
9981 wakaba 1.21 @@XMLTest:
9982 wakaba 1.22 @@@QName: xp.reptxt.attval.ger.entity.declared.nopref.6.test
9983 wakaba 1.21 @@@DEnt:
9984     @@@@test:value:
9985     <?xml version="1.0" standalone="no"?>
9986     <!DOCTYPE p [
9987     <!ENTITY other "aa">
9988     <!ENTITY % another "aa">
9989 wakaba 1.22 <!ENTITY c "&entity;">
9990 wakaba 1.21 ]>
9991 wakaba 1.22 <p a="&c;"/>
9992     @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
9993 wakaba 1.21 @@XMLTest:
9994 wakaba 1.22 @@@QName: xp.reptxt.attval.ger.entity.declared.nopref.-1.test
9995 wakaba 1.21 @@@DEnt:
9996     @@@@test:value:
9997     <!DOCTYPE p [
9998     <!ENTITY entity "value">
9999 wakaba 1.22 <!ENTITY c "&entity;">
10000 wakaba 1.21 ]>
10001 wakaba 1.22 <p a="&c;"/>
10002 wakaba 1.21 @@@test:domTree:
10003     document {
10004     document-type {
10005     general-entity {
10006     node-name: 'entity';
10007     text-content: 'value';
10008     }
10009 wakaba 1.22 general-entity {
10010     node-name: 'c';
10011     general-entity-reference {
10012     node-name: 'entity';
10013     text-content: 'value';
10014 wakaba 1.21 }
10015     }
10016     }
10017     element {
10018     attribute {
10019     node-name: 'a';
10020     general-entity-reference {
10021 wakaba 1.22 node-name: 'c';
10022     general-entity-reference {
10023     node-name: 'entity';
10024     text-content: 'value';
10025     }
10026 wakaba 1.21 }
10027     }
10028     }
10029     }
10030     @@XMLTest:
10031 wakaba 1.22 @@@QName: xp.reptxt.attval.ger.entity.declared.nopref.-2.test
10032 wakaba 1.21 @@@DEnt:
10033     @@@@test:value:
10034     <!DOCTYPE p [
10035     <!ENTITY entity "value">
10036     <!ENTITY another SYSTEM "another">
10037 wakaba 1.22 <!ENTITY c "&entity;">
10038 wakaba 1.21 ]>
10039 wakaba 1.22 <p a="&c;"/>
10040 wakaba 1.21 @@@test:domTree:
10041     document {
10042     document-type {
10043     general-entity {
10044     node-name: 'entity';
10045     text-content: 'value';
10046 wakaba 1.22 }
10047     general-entity {
10048     node-name: 'c';
10049     general-entity-reference {
10050     node-name: 'entity';
10051     text-content: 'value';
10052     }
10053 wakaba 1.21 }
10054     general-entity {
10055     node-name: 'another';
10056     public-id: null;
10057     system-id: 'another';
10058     has-replacement-tree: false;
10059     }
10060     }
10061     element {
10062     attribute {
10063     node-name: 'a';
10064     general-entity-reference {
10065 wakaba 1.22 node-name: 'c';
10066     general-entity-reference {
10067     node-name: 'entity';
10068     text-content: 'value';
10069     }
10070 wakaba 1.21 }
10071     }
10072     }
10073     }
10074     @@XMLTest:
10075 wakaba 1.22 @@@QName: xp.reptxt.attval.ger.entity.declared.standalone.2.test
10076 wakaba 1.21 @@@DEnt:
10077     @@@@test:value:
10078     <?xml version="1.0" standalone="yes"?>
10079     <!DOCTYPE p [
10080 wakaba 1.22 <!ENTITY c "&entity;">
10081 wakaba 1.21 ]>
10082 wakaba 1.22 <p a="&c;"/>
10083     @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
10084 wakaba 1.21 @@XMLTest:
10085 wakaba 1.22 @@@QName: xp.reptxt.attval.ger.entity.declared.standalone.3.test
10086 wakaba 1.21 @@@DEnt:
10087     @@@@test:value:
10088     <?xml version="1.0" standalone="yes"?>
10089     <!DOCTYPE p [
10090     <!ENTITY % para "<!-- -->">
10091     %para;
10092 wakaba 1.22 <!ENTITY c "&entity;">
10093 wakaba 1.21 ]>
10094 wakaba 1.22 <p a="&c;"/>
10095     @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
10096 wakaba 1.21 @@XMLTest:
10097 wakaba 1.22 @@@QName: xp.reptxt.attval.ger.entity.declared.standalone.-1.test
10098 wakaba 1.21 @@@DEnt:
10099     @@@@test:value:
10100 wakaba 1.22 <?xml version="1.0" standalone="no"?>
10101 wakaba 1.21 <!DOCTYPE p [
10102 wakaba 1.22 <!ENTITY c "&entity;">
10103 wakaba 1.21 <!ENTITY % para "<!-- -->">
10104     %para;
10105     ]>
10106 wakaba 1.22 <p a="&c;"/>
10107     @@@test:domTree:
10108     document {
10109     document-type {
10110     general-entity {
10111     node-name: 'c';
10112     general-entity-reference {
10113     node-name: 'entity';
10114     is-expanded: false;
10115     }
10116     }
10117     }
10118     element {
10119     attribute {
10120     node-name: 'a';
10121     general-entity-reference {
10122     node-name: 'c';
10123     general-entity-reference {
10124     node-name: 'entity';
10125     is-expanded: false;
10126     }
10127     }
10128     }
10129     }
10130     }
10131 wakaba 1.21 @@XMLTest:
10132 wakaba 1.22 @@@QName:
10133     xp.reptxt.attval.ger.entity.declared.standalone.-1.2.test
10134 wakaba 1.21 @@@DEnt:
10135     @@@@test:value:
10136     <?xml version="1.0" standalone="no"?>
10137     <!DOCTYPE p [
10138     <!ENTITY % para "<!-- -->">
10139     %para;
10140 wakaba 1.22 <!ENTITY c "&entity;">
10141 wakaba 1.21 ]>
10142 wakaba 1.22 <p a="&c;"/>
10143     @@@test:domTree:
10144     document {
10145     document-type { }
10146     element {
10147     attribute {
10148     node-name: 'a';
10149     general-entity-reference {
10150     node-name: 'c';
10151     is-expanded: false;
10152     }
10153     }
10154     }
10155     }
10156 wakaba 1.21 @@XMLTest:
10157 wakaba 1.22 @@@QName: xp.reptxt.attval.ger.entity.declared.standalone.-2.test
10158 wakaba 1.21 @@@DEnt:
10159     @@@@test:value:
10160     <!DOCTYPE p [
10161 wakaba 1.22 <!ENTITY c "&entity;">
10162     <!ENTITY % para "<!-- -->">
10163     %para;
10164     ]>
10165     <p a="&c;"/>
10166     @@@test:domTree:
10167     document {
10168     document-type { }
10169     element {
10170     attribute {
10171     node-name: 'a';
10172     general-entity-reference {
10173     node-name: 'c';
10174     is-expanded: true;
10175     general-entity-reference {
10176     node-name: 'entity';
10177     is-expanded: false;
10178     }
10179     }
10180     }
10181     }
10182     }
10183     @@XMLTest:
10184     @@@QName:
10185     xp.reptxt.attval.ger.entity.declared.standalone.-2.2.test
10186     @@@DEnt:
10187     @@@@test:value:
10188     <!DOCTYPE p [
10189     <!ENTITY % para "<!-- -->">
10190     %para;
10191     <!ENTITY c "&entity;">
10192     ]>
10193     <p a="&c;"/>
10194     @@@test:domTree:
10195     document {
10196     document-type { }
10197     element {
10198     attribute {
10199     node-name: 'a';
10200     general-entity-reference {
10201     node-name: 'c';
10202     is-expanded: false;
10203     }
10204     }
10205     }
10206     }
10207     @@XMLTest:
10208     @@@QName: xp.reptxt.attval.ger.entity.declared.standalone.4.test
10209     @@@DEnt:
10210     @@@@test:value:
10211     <?xml version="1.0" standalone="yes"?>
10212     <!DOCTYPE p [
10213     <!ENTITY % para SYSTEM "para">
10214     %para;
10215     <!ENTITY c "&entity;">
10216     ]>
10217     <p a="&c;"/>
10218     @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
10219     @@XMLTest:
10220     @@@QName: xp.reptxt.attval.ger.entity.declared.standalone.-3.test
10221     @@@DEnt:
10222     @@@@test:value:
10223     <?xml version="1.0" standalone="no"?>
10224     <!DOCTYPE p [
10225     <!ENTITY c "&entity;">
10226     <!ENTITY % para SYSTEM "para">
10227     %para;
10228     ]>
10229     <p a="&c;"/>
10230     @@@test:domTree:
10231     document {
10232     document-type { }
10233     element {
10234     attribute {
10235     node-name: 'a';
10236     general-entity-reference {
10237     node-name: 'c';
10238     is-expanded: true;
10239     general-entity-reference {
10240     node-name: 'entity';
10241     is-expanded: false;
10242     }
10243     }
10244     }
10245     }
10246     }
10247     @@XMLTest:
10248     @@@QName:
10249     xp.reptxt.attval.ger.entity.declared.standalone.-3.2.test
10250     @@@DEnt:
10251     @@@@test:value:
10252     <?xml version="1.0" standalone="no"?>
10253     <!DOCTYPE p [
10254     <!ENTITY % para SYSTEM "para">
10255     %para;
10256     <!ENTITY c "&entity;">
10257     ]>
10258     <p a="&c;"/>
10259     @@@test:domTree:
10260     document {
10261     document-type { }
10262     element {
10263     attribute {
10264     node-name: 'a';
10265     general-entity-reference {
10266     node-name: 'c';
10267     is-expanded: false;
10268     }
10269     }
10270     }
10271     }
10272     @@XMLTest:
10273     @@@QName: xp.reptxt.attval.ger.entity.declared.standalone.-4.test
10274     @@@DEnt:
10275     @@@@test:value:
10276     <!DOCTYPE p [
10277     <!ENTITY c "&entity;">
10278     <!ENTITY % para SYSTEM "para">
10279     %para;
10280     ]>
10281     <p a="&c;"/>
10282     @@@test:domTree:
10283     document {
10284     document-type { }
10285     element {
10286     attribute {
10287     node-name: 'a';
10288     general-entity-reference {
10289     node-name: 'c';
10290     is-expanded: true;
10291     general-entity-reference {
10292     node-name: 'entity';
10293     is-expanded: false;
10294     }
10295     }
10296     }
10297     }
10298     }
10299     @@XMLTest:
10300     @@@QName:
10301     xp.reptxt.attval.ger.entity.declared.standalone.-4.2.test
10302     @@@DEnt:
10303     @@@@test:value:
10304     <!DOCTYPE p [
10305     <!ENTITY % para SYSTEM "para">
10306     %para;
10307     <!ENTITY c "&entity;">
10308     ]>
10309     <p a="&c;"/>
10310     @@@test:domTree:
10311     document {
10312     document-type { }
10313     element {
10314     attribute {
10315     node-name: 'a';
10316     general-entity-reference {
10317     node-name: 'c';
10318     is-expanded: false;
10319     }
10320     }
10321     }
10322     }
10323     @@XMLTest:
10324     @@@QName: xp.reptxt.attval.ger.entity.declared.standalone.5.test
10325     @@@DEnt:
10326     @@@@test:value:
10327     <?xml version="1.0" standalone="yes"?>
10328     <!DOCTYPE p SYSTEM "dtd" [
10329     <!ENTITY c "&entity;">
10330     ]>
10331     <p a="&c;"/>
10332     @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
10333     @@XMLTest:
10334     @@@QName: xp.reptxt.attval.ger.entity.declared.standalone.-5.test
10335     @@@DEnt:
10336     @@@@test:value:
10337     <?xml version="1.0" standalone="no"?>
10338     <!DOCTYPE p SYSTEM "dtd" [
10339     <!ENTITY c "&entity;">
10340     ]>
10341     <p a="&c;"/>
10342     @@@test:domTree:
10343     document {
10344     document-type { }
10345     element {
10346     attribute {
10347     node-name: 'a';
10348     general-entity-reference {
10349     node-name: 'c';
10350     is-expanded: true;
10351     general-entity-reference {
10352     node-name: 'entity';
10353     is-expanded: false;
10354     }
10355     }
10356     }
10357     }
10358     }
10359     @@XMLTest:
10360     @@@QName: xp.reptxt.attval.ger.entity.declared.standalone.-6.test
10361     @@@DEnt:
10362     @@@@test:value:
10363     <!DOCTYPE p SYSTEM "dtd" [<!ENTITY c "&entity;">]>
10364     <p a="&c;"/>
10365     @@@test:domTree:
10366     document {
10367     document-type { }
10368     element {
10369     attribute {
10370     node-name: 'a';
10371     general-entity-reference {
10372     node-name: 'c';
10373     is-expanded: true;
10374     general-entity-reference {
10375     node-name: 'entity';
10376     is-expanded: false;
10377     }
10378     }
10379     }
10380     }
10381     }
10382    
10383     @@XMLTest:
10384     @@@QName: xp.attlist.dup.entity.declared.1.test
10385     @@@DEnt:
10386     @@@@test:value:
10387     <!DOCTYPE p [
10388     <!ATTLIST p a CDATA "no-entity">
10389     <!ATTLIST p a CDATA "&entity;">
10390     ]>
10391     <p/>
10392     @@@c:erred: <[[xp|wf-entity-declared]]> { (3, 21)..(3, 29); }
10393     @@XMLTest:
10394     @@@QName: xp.attlist.dup.entity.declared.2.test
10395     @@@DEnt:
10396     @@@@test:value:
10397     <!DOCTYPE p [
10398     <!ATTLIST p a CDATA "no-entity"
10399     a CDATA "&entity;">
10400     ]>
10401     <p/>
10402     @@@c:erred: <[[xp|wf-entity-declared]]> { (3, 21)..(3, 29); }
10403     @@XMLTest:
10404     @@@QName: xp.attlist.unused.entity.declared.1.test
10405     @@@DEnt:
10406     @@@@test:value:
10407     <!DOCTYPE p [
10408     <!ATTLIST q a CDATA "&entity;">
10409     ]>
10410     <p/>
10411     @@@c:erred: <[[xp|wf-entity-declared]]> { (2, 21)..(2, 29); }
10412     @@XMLTest:
10413     @@@QName: xp.attlist.unused.entity.declared.2.test
10414     @@@DEnt:
10415     @@@@test:value:
10416     <!DOCTYPE p [
10417     <!ATTLIST p a CDATA "&entity;">
10418     ]>
10419     <p a="bb"/>
10420     @@@c:erred: <[[xp|wf-entity-declared]]> { (2, 21)..(2, 29); }
10421    
10422     @@XMLTest:
10423     @@@QName: xp.reptxt.attlist.attval.ger.entity.declared.nopref.1.test
10424     @@@DEnt:
10425     @@@@test:value:
10426     <!DOCTYPE p [
10427     <!ENTITY c "&entity;">
10428     <!ATTLIST p a CDATA "&c;">
10429     ]>
10430     <p/>
10431     @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
10432     @@XMLTest:
10433     @@@QName: xp.reptxt.attlist.attval.ger.entity.declared.nopref.2.test
10434     @@@DEnt:
10435     @@@@test:value:
10436     <!DOCTYPE p [
10437     <!ENTITY other "aa">
10438     <!ENTITY % another "aa">
10439     <!ENTITY c "&entity;">
10440     <!ATTLIST p a CDATA "&c;">
10441     ]>
10442     <p/>
10443     @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
10444     @@XMLTest:
10445     @@@QName: xp.reptxt.attlist.attval.ger.entity.declared.nopref.3.test
10446     @@@DEnt:
10447     @@@@test:value:
10448     <?xml version="1.0" standalone="yes"?>
10449     <!DOCTYPE p [
10450     <!ENTITY c "&entity;">
10451     <!ATTLIST p a CDATA "&c;">
10452     ]>
10453     <p/>
10454     @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
10455     @@XMLTest:
10456     @@@QName: xp.reptxt.attlist.attval.ger.entity.declared.nopref.4.test
10457     @@@DEnt:
10458     @@@@test:value:
10459     <?xml version="1.0" standalone="no"?>
10460     <!DOCTYPE p [
10461     <!ENTITY c "&entity;">
10462     <!ATTLIST p a CDATA "&c;">
10463     ]>
10464     <p/>
10465     @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
10466     @@XMLTest:
10467     @@@QName: xp.reptxt.attlist.attval.ger.entity.declared.nopref.5.test
10468     @@@DEnt:
10469     @@@@test:value:
10470     <?xml version="1.0" standalone="yes"?>
10471     <!DOCTYPE p [
10472     <!ENTITY other "aa">
10473     <!ENTITY % another "aa">
10474     <!ENTITY c "&entity;">
10475     <!ATTLIST p a CDATA "&c;">
10476     ]>
10477     <p/>
10478     @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
10479     @@XMLTest:
10480     @@@QName: xp.reptxt.attlist.attval.ger.entity.declared.nopref.6.test
10481     @@@DEnt:
10482     @@@@test:value:
10483     <?xml version="1.0" standalone="no"?>
10484     <!DOCTYPE p [
10485     <!ENTITY other "aa">
10486     <!ENTITY % another "aa">
10487     <!ENTITY c "&entity;">
10488     <!ATTLIST p a CDATA "&c;">
10489     ]>
10490     <p/>
10491     @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
10492     @@XMLTest:
10493     @@@QName: xp.reptxt.attlist.attval.ger.entity.declared.nopref.-1.test
10494     @@@DEnt:
10495     @@@@test:value:
10496     <!DOCTYPE p [
10497     <!ENTITY entity "value">
10498     <!ENTITY c "&entity;">
10499     <!ATTLIST p a CDATA "&c;">
10500     ]>
10501     <p/>
10502     @@@test:domTree:
10503     document {
10504     document-type {
10505     general-entity {
10506     node-name: 'entity';
10507     text-content: 'value';
10508     }
10509     general-entity {
10510     node-name: 'c';
10511     general-entity-reference {
10512     node-name: 'entity';
10513     is-expanded: true;
10514     text-content: 'value';
10515     }
10516     }
10517     element-type-definition {
10518     node-name: 'p';
10519     attribute-definition {
10520     node-name: 'a';
10521     general-entity-reference {
10522     node-name: 'c';
10523     is-expanded: true;
10524     general-entity-reference {
10525     node-name: 'entity';
10526     is-expanded: true;
10527     text-content: 'value';
10528     }
10529     }
10530     }
10531     }
10532     }
10533     element {
10534     attribute {
10535     node-name: 'a';
10536     specified: false;
10537     general-entity-reference {
10538     node-name: 'c';
10539     general-entity-reference {
10540     node-name: 'entity';
10541     text-content: 'value';
10542     }
10543     }
10544     }
10545     }
10546     }
10547     @@XMLTest:
10548     @@@QName: xp.reptxt.attlist.attval.ger.entity.declared.nopref.-2.test
10549     @@@DEnt:
10550     @@@@test:value:
10551     <!DOCTYPE p [
10552     <!ENTITY entity "value">
10553     <!ENTITY another SYSTEM "another">
10554     <!ENTITY c "&entity;">
10555     <!ATTLIST p a CDATA "&c;">
10556     ]>
10557     <p/>
10558     @@@test:domTree:
10559     document {
10560     document-type {
10561     general-entity {
10562     node-name: 'entity';
10563     text-content: 'value';
10564     }
10565     general-entity {
10566     node-name: 'c';
10567     general-entity-reference {
10568     node-name: 'entity';
10569     text-content: 'value';
10570     }
10571     }
10572     general-entity {
10573     node-name: 'another';
10574     public-id: null;
10575     system-id: 'another';
10576     has-replacement-tree: false;
10577     }
10578     element-type-definition {
10579     node-name: 'p';
10580     attribute-definition {
10581     node-name: 'a';
10582     general-entity-reference {
10583     node-name: 'c';
10584     is-expanded: true;
10585     general-entity-reference {
10586     node-name: 'entity';
10587     is-expanded: true;
10588     text-content: 'value';
10589     }
10590     }
10591     }
10592     }
10593     }
10594     element {
10595     attribute {
10596     node-name: 'a';
10597     specified: false;
10598     general-entity-reference {
10599     node-name: 'c';
10600     general-entity-reference {
10601     node-name: 'entity';
10602     text-content: 'value';
10603     }
10604     }
10605     }
10606     }
10607     }
10608     @@XMLTest:
10609     @@@QName: xp.reptxt.attlist.attval.ger.entity.declared.standalone.2.test
10610     @@@DEnt:
10611     @@@@test:value:
10612     <?xml version="1.0" standalone="yes"?>
10613     <!DOCTYPE p [
10614     <!ENTITY c "&entity;">
10615     <!ATTLIST p a CDATA "&c;">
10616     ]>
10617     <p/>
10618     @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
10619     @@XMLTest:
10620     @@@QName: xp.reptxt.attlist.attval.ger.entity.declared.standalone.3.test
10621     @@@DEnt:
10622     @@@@test:value:
10623     <?xml version="1.0" standalone="yes"?>
10624     <!DOCTYPE p [
10625     <!ENTITY % para "<!-- -->">
10626     %para;
10627     <!ENTITY c "&entity;">
10628     <!ATTLIST p a CDATA "&c;">
10629     ]>
10630     <p/>
10631     @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
10632     @@XMLTest:
10633     @@@QName: xp.reptxt.attlist.attval.ger.entity.declared.standalone.-1.test
10634     @@@DEnt:
10635     @@@@test:value:
10636     <?xml version="1.0" standalone="no"?>
10637     <!DOCTYPE p [
10638     <!ENTITY c "&entity;">
10639     <!ATTLIST p a CDATA "&c;">
10640     <!ENTITY % para "<!-- -->">
10641     %para;
10642     ]>
10643     <p/>
10644     @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
10645     @@XMLTest:
10646     @@@QName:
10647     xp.reptxt.attlist.attval.ger.entity.declared.standalone.-1.2.test
10648     @@@DEnt:
10649     @@@@test:value:
10650     <?xml version="1.0" standalone="no"?>
10651     <!DOCTYPE p [
10652     <!ENTITY % para "<!-- -->">
10653     %para;
10654     <!ENTITY c "&entity;">
10655     <!ATTLIST p a CDATA "&c;">
10656     ]>
10657     <p g="h"/>
10658     @@@test:domTree:
10659     document {
10660     document-type { }
10661     element {
10662     attribute {
10663     node-name: 'g';
10664     text-content: 'h';
10665     }
10666     }
10667     }
10668     @@XMLTest:
10669     @@@QName: xp.reptxt.attlist.attval.ger.entity.declared.standalone.-2.test
10670     @@@DEnt:
10671     @@@@test:value:
10672     <!DOCTYPE p [
10673     <!ENTITY c "&entity;">
10674     <!ATTLIST p a CDATA "&c;">
10675     <!ENTITY % para "<!-- -->">
10676     %para;
10677     ]>
10678     <p/>
10679     @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
10680     @@XMLTest:
10681     @@@QName:
10682     xp.reptxt.attlist.attval.ger.entity.declared.standalone.-2.2.test
10683     @@@DEnt:
10684     @@@@test:value:
10685     <!DOCTYPE p [
10686     <!ENTITY % para "<!-- -->">
10687     %para;
10688     <!ENTITY c "&entity;">
10689     <!ATTLIST p a CDATA "&c;">
10690     ]>
10691     <p g="h"/>
10692     @@@test:domTree:
10693     document {
10694     document-type { }
10695     element {
10696     attribute {
10697     node-name: 'g';
10698     text-content: 'h';
10699     }
10700     }
10701     }
10702     @@XMLTest:
10703     @@@QName: xp.reptxt.attlist.attval.ger.entity.declared.standalone.4.test
10704     @@@DEnt:
10705     @@@@test:value:
10706     <?xml version="1.0" standalone="yes"?>
10707     <!DOCTYPE p [
10708     <!ENTITY % para SYSTEM "para">
10709     %para;
10710     <!ENTITY c "&entity;">
10711     <!ATTLIST p a CDATA "&c;">
10712     ]>
10713     <p/>
10714     @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
10715     @@XMLTest:
10716     @@@QName: xp.reptxt.attlist.attval.ger.entity.declared.standalone.-3.test
10717     @@@DEnt:
10718     @@@@test:value:
10719     <?xml version="1.0" standalone="no"?>
10720     <!DOCTYPE p [
10721     <!ENTITY c "&entity;">
10722     <!ATTLIST p a CDATA "&c;">
10723     <!ENTITY % para SYSTEM "para">
10724     %para;
10725     ]>
10726     <p/>
10727     @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
10728     @@XMLTest:
10729     @@@QName:
10730     xp.reptxt.attlist.attval.ger.entity.declared.standalone.-3.2.test
10731     @@@DEnt:
10732     @@@@test:value:
10733     <?xml version="1.0" standalone="no"?>
10734     <!DOCTYPE p [
10735     <!ENTITY % para SYSTEM "para">
10736     %para;
10737     <!ENTITY c "&entity;">
10738     <!ATTLIST p a CDATA "&c;">
10739     ]>
10740     <p g="h"/>
10741     @@@test:domTree:
10742     document {
10743     document-type { }
10744     element {
10745     attribute {
10746     node-name: 'g';
10747     text-content: 'h';
10748     }
10749     }
10750     }
10751     @@XMLTest:
10752     @@@QName: xp.reptxt.attlist.attval.ger.entity.declared.standalone.-4.test
10753     @@@DEnt:
10754     @@@@test:value:
10755     <!DOCTYPE p [
10756     <!ENTITY c "&entity;">
10757     <!ATTLIST p a CDATA "&c;">
10758     <!ENTITY % para SYSTEM "para">
10759     %para;
10760     ]>
10761     <p/>
10762     @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
10763     @@XMLTest:
10764     @@@QName:
10765     xp.reptxt.attlist.attval.ger.entity.declared.standalone.-4.2.test
10766     @@@DEnt:
10767     @@@@test:value:
10768     <!DOCTYPE p [
10769     <!ENTITY % para SYSTEM "para">
10770     %para;
10771     <!ENTITY c "&entity;">
10772     <!ATTLIST p a CDATA "&c;">
10773     ]>
10774     <p g="h"/>
10775     @@@test:domTree:
10776     document {
10777     document-type { }
10778     element {
10779     attribute {
10780     node-name: 'g';
10781     text-content: 'h';
10782     }
10783     }
10784     }
10785     @@XMLTest:
10786     @@@QName: xp.reptxt.attlist.attval.ger.entity.declared.standalone.5.test
10787     @@@DEnt:
10788     @@@@test:value:
10789     <?xml version="1.0" standalone="yes"?>
10790     <!DOCTYPE p SYSTEM "dtd" [
10791     <!ENTITY c "&entity;">
10792     <!ATTLIST p a CDATA "&c;">
10793     ]>
10794     <p/>
10795     @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
10796     @@XMLTest:
10797     @@@QName: xp.reptxt.attlist.attval.ger.entity.declared.standalone.-5.test
10798     @@@DEnt:
10799     @@@@test:value:
10800     <?xml version="1.0" standalone="no"?>
10801     <!DOCTYPE p SYSTEM "dtd" [
10802     <!ENTITY c "&entity;">
10803     <!ATTLIST p a CDATA "&c;">
10804     ]>
10805     <p/>
10806     @@@test:domTree:
10807     document {
10808     document-type { }
10809     element {
10810     attribute {
10811     node-name: 'a';
10812     specified: false;
10813     general-entity-reference {
10814     node-name: 'c';
10815     is-expanded: true;
10816     general-entity-reference {
10817     node-name: 'entity';
10818     is-expanded: false;
10819     }
10820     }
10821     }
10822     }
10823     }
10824     @@XMLTest:
10825     @@@QName: xp.reptxt.attlist.attval.ger.entity.declared.standalone.-6.test
10826     @@@DEnt:
10827     @@@@test:value:
10828     <!DOCTYPE p SYSTEM "dtd" [<!ENTITY c "&entity;">
10829     <!ATTLIST p a CDATA "&c;">
10830     ]>
10831     <p/>
10832     @@@test:domTree:
10833     document {
10834     document-type { }
10835     element {
10836     attribute {
10837     node-name: 'a';
10838     specified: false;
10839     general-entity-reference {
10840     node-name: 'c';
10841     is-expanded: true;
10842     general-entity-reference {
10843     node-name: 'entity';
10844     is-expanded: false;
10845     }
10846     }
10847     }
10848     }
10849     }
10850    
10851     @@XMLTest:
10852     @@@QName: xp.attlist.attval.ger.entity.declared.nopref.1.test
10853     @@@DEnt:
10854     @@@@test:value:
10855     <!DOCTYPE p [
10856     <!ATTLIST p a CDATA "&entity;">
10857     ]>
10858     <p/>
10859     @@@c:erred: <[[xp|wf-entity-declared]]> { (2, 22)..(2, 29); }
10860     @@XMLTest:
10861     @@@QName: xp.attlist.attval.ger.entity.declared.nopref.2.test
10862     @@@DEnt:
10863     @@@@test:value:
10864     <!DOCTYPE p [
10865     <!ENTITY other "aa">
10866     <!ENTITY % another "aa">
10867     <!ATTLIST p a CDATA "&entity;">
10868     ]>
10869     <p/>
10870     @@@c:erred: <[[xp|wf-entity-declared]]> { (4, 22)..(4, 29); }
10871     @@XMLTest:
10872     @@@QName: xp.attlist.attval.ger.entity.declared.nopref.3.test
10873     @@@DEnt:
10874     @@@@test:value:
10875     <?xml version="1.0" standalone="yes"?>
10876     <!DOCTYPE p [
10877     <!ATTLIST p a CDATA "&entity;">
10878     ]>
10879     <p/>
10880     @@@c:erred: <[[xp|wf-entity-declared]]> { (3, 22)..(3, 29); }
10881     @@XMLTest:
10882     @@@QName: xp.attlist.attval.ger.entity.declared.nopref.4.test
10883     @@@DEnt:
10884     @@@@test:value:
10885     <?xml version="1.0" standalone="no"?>
10886     <!DOCTYPE p [
10887     <!ATTLIST p a CDATA "&entity;">
10888     ]>
10889     <p/>
10890     @@@c:erred: <[[xp|wf-entity-declared]]> { (3, 22)..(3, 29); }
10891     @@XMLTest:
10892     @@@QName: xp.attlist.attval.ger.entity.declared.nopref.5.test
10893     @@@DEnt:
10894     @@@@test:value:
10895     <?xml version="1.0" standalone="yes"?>
10896     <!DOCTYPE p [
10897     <!ENTITY other "aa">
10898     <!ENTITY % another "aa">
10899     <!ATTLIST p a CDATA "&entity;">
10900     ]>
10901     <p/>
10902     @@@c:erred: <[[xp|wf-entity-declared]]> { (5, 22)..(5, 29); }
10903     @@XMLTest:
10904     @@@QName: xp.attlist.attval.ger.entity.declared.nopref.6.test
10905     @@@DEnt:
10906     @@@@test:value:
10907     <?xml version="1.0" standalone="no"?>
10908     <!DOCTYPE p [
10909     <!ENTITY other "aa">
10910     <!ENTITY % another "aa">
10911     <!ATTLIST p a CDATA "&entity;">
10912     ]>
10913     <p/>
10914     @@@c:erred: <[[xp|wf-entity-declared]]> { (5, 22)..(5, 29); }
10915     @@XMLTest:
10916     @@@QName: xp.attlist.attval.ger.entity.declared.nopref.-1.test
10917     @@@DEnt:
10918     @@@@test:value:
10919     <!DOCTYPE p [
10920     <!ENTITY entity "value">
10921     <!ATTLIST p a CDATA "&entity;">
10922     ]>
10923     <p/>
10924     @@@test:domTree:
10925     document {
10926     document-type {
10927     general-entity {
10928     node-name: 'entity';
10929     text-content: 'value';
10930     }
10931     element-type-definition {
10932     node-name: 'p';
10933     attribute-definition {
10934     node-name: 'a';
10935     general-entity-reference {
10936     node-name: 'entity';
10937     is-expanded: true;
10938     text-content: 'value';
10939     }
10940     }
10941     }
10942     }
10943     element {
10944     attribute {
10945     node-name: 'a';
10946     specified: false;
10947     general-entity-reference {
10948     node-name: 'entity';
10949     is-expanded: true;
10950     text-content: 'value';
10951     }
10952     }
10953     }
10954     }
10955     @@XMLTest:
10956     @@@QName: xp.attlist.attval.ger.entity.declared.nopref.-1.2.test
10957     @@@DEnt:
10958     @@@@test:value:
10959     <!DOCTYPE p [
10960     <!ATTLIST p a CDATA "&entity;">
10961     <!ENTITY entity "value">
10962     ]>
10963     <p/>
10964     @@@c:erred: <[[xp|wf-entity-declared]]> { (2, 22)..(2, 29); }
10965     @@XMLTest:
10966     @@@QName: xp.attlist.attval.ger.entity.declared.nopref.-2.test
10967     @@@DEnt:
10968     @@@@test:value:
10969     <!DOCTYPE p [
10970     <!ENTITY entity "value">
10971     <!ENTITY another SYSTEM "another">
10972     <!ATTLIST p a CDATA "&entity;">
10973     ]>
10974     <p/>
10975     @@@test:domTree:
10976     document {
10977     document-type {
10978     element-type-definition {
10979     node-name: 'p';
10980     attribute-definition {
10981     node-name: 'a';
10982     general-entity-reference {
10983     node-name: 'entity';
10984     is-expanded: true;
10985     text-content: 'value';
10986     }
10987     }
10988     }
10989     general-entity {
10990     node-name: 'entity';
10991     text-content: 'value';
10992     has-replacement-tree: true;
10993     }
10994     general-entity {
10995     node-name: 'another';
10996     public-id: null;
10997     system-id: 'another';
10998     has-replacement-tree: false;
10999     }
11000     }
11001     element {
11002     attribute {
11003     node-name: 'a';
11004     specified: false;
11005     general-entity-reference {
11006     node-name: 'entity';
11007     is-expanded: true;
11008     text-content: 'value';
11009     }
11010     }
11011     }
11012     }
11013     @@XMLTest:
11014     @@@QName: xp.attlist.attval.ger.entity.declared.nopref.-2.2.test
11015     @@@DEnt:
11016     @@@@test:value:
11017     <!DOCTYPE p [
11018     <!ATTLIST p a CDATA "&entity;">
11019     <!ENTITY entity "value">
11020     <!ENTITY another SYSTEM "another">
11021     ]>
11022     <p/>
11023     @@@c:erred: <[[xp|wf-entity-declared]]> { (2, 22)..(2, 29); }
11024     @@XMLTest:
11025     @@@QName: xp.attlist.attval.ger.entity.declared.standalone.2.test
11026     @@@DEnt:
11027     @@@@test:value:
11028     <?xml version="1.0" standalone="yes"?>
11029     <!DOCTYPE p [
11030     <!ATTLIST p a CDATA "&entity;">
11031     ]>
11032     <p/>
11033     @@@c:erred: <[[xp|wf-entity-declared]]> { (3, 22)..(3, 29); }
11034     @@XMLTest:
11035     @@@QName: xp.attlist.attval.ger.entity.declared.standalone.3.test
11036     @@@DEnt:
11037     @@@@test:value:
11038     <?xml version="1.0" standalone="yes"?>
11039     <!DOCTYPE p [
11040     <!ATTLIST p a CDATA "&entity;">
11041     <!ENTITY % para "<!-- -->">
11042     %para;
11043     ]>
11044     <p/>
11045     @@@c:erred: <[[xp|wf-entity-declared]]> { (3, 22)..(3, 29); }
11046     @@XMLTest:
11047     @@@QName: xp.attlist.attval.ger.entity.declared.standalone.3.2.test
11048     @@@DEnt:
11049     @@@@test:value:
11050     <?xml version="1.0" standalone="yes"?>
11051     <!DOCTYPE p [
11052     <!ENTITY % para "<!-- -->">
11053     %para;
11054     <!ATTLIST p a CDATA "&entity;">
11055     ]>
11056     <p/>
11057     @@@c:erred: <[[xp|wf-entity-declared]]> { (5, 22)..(5, 29); }
11058     @@@enImplNote:
11059     The <XML::ATTLIST> declaration is processed since
11060     it is a <XA::standalone> document.
11061     @@XMLTest:
11062     @@@QName: xp.attlist.attval.ger.entity.declared.standalone.-1.test
11063     @@@DEnt:
11064     @@@@test:value:
11065     <?xml version="1.0" standalone="no"?>
11066     <!DOCTYPE p [
11067     <!ATTLIST p a CDATA "&entity;">
11068     <!ENTITY % para "<!-- -->">
11069     %para;
11070     ]>
11071     <p/>
11072     @@@c:erred: <[[xp|wf-entity-declared]]> { (3, 22)..(3, 29); }
11073     @@XMLTest:
11074     @@@QName: xp.attlist.attval.ger.entity.declared.standalone.-1.2.test
11075     @@@DEnt:
11076     @@@@test:value:
11077     <?xml version="1.0" standalone="no"?>
11078     <!DOCTYPE p [
11079     <!ATTLIST q b CDATA #IMPLIED>
11080 wakaba 1.21 <!ENTITY % para "<!-- -->">
11081     %para;
11082     <!ATTLIST p a CDATA "&entity;">
11083     ]>
11084     <p c="d"/>
11085     @@@test:domTree:
11086     document {
11087     document-type {
11088     element-type-definition {
11089     node-name: 'q';
11090     attribute-definition {
11091     node-name: 'b';
11092     }
11093     }
11094     }
11095     element {
11096     attribute {
11097     node-name: 'c';
11098     text-content: 'd';
11099     }
11100     }
11101     }
11102     @@@enImplNote:
11103     The second <XML::ATTLIST> declaration is read but not processed
11104     and its <XML::&entity;> general entity reference violates
11105     entity declared validty constraint rather than well-formedness
11106     constraint.
11107     @@XMLTest:
11108     @@@QName: xp.attlist.attval.ger.entity.declared.standalone.-2.test
11109     @@@DEnt:
11110     @@@@test:value:
11111     <!DOCTYPE p [
11112     <!ATTLIST p a CDATA "&entity;">
11113     <!ENTITY % para "<!-- -->">
11114     %para;
11115     ]>
11116     <p/>
11117     @@@c:erred: <[[xp|wf-entity-declared]]> { (2, 22)..(2, 29); }
11118     @@XMLTest:
11119     @@@QName: xp.attlist.attval.ger.entity.declared.standalone.-2.2.test
11120     @@@DEnt:
11121     @@@@test:value:
11122     <!DOCTYPE p [
11123     <!ATTLIST q b CDATA #IMPLIED>
11124     <!ENTITY % para "<!-- -->">
11125     %para;
11126     <!ATTLIST p a CDATA "&entity;">
11127     ]>
11128     <p c="d"/>
11129     @@@test:domTree:
11130     document {
11131     document-type {
11132     element-type-definition {
11133     node-name: 'q';
11134     attribute-definition {
11135     node-name: 'b';
11136     }
11137     }
11138     }
11139     element {
11140     attribute {
11141     node-name: 'c';
11142     text-content: 'd';
11143     }
11144     }
11145     }
11146     @@XMLTest:
11147     @@@QName: xp.attlist.attval.ger.entity.declared.standalone.4.test
11148     @@@DEnt:
11149     @@@@test:value:
11150     <?xml version="1.0" standalone="yes"?>
11151     <!DOCTYPE p [
11152     <!ATTLIST p a CDATA "&entity;">
11153     <!ENTITY % para SYSTEM "p">
11154     %para;
11155     ]>
11156     <p/>
11157     @@@c:erred: <[[xp|wf-entity-declared]]> { (3, 22)..(3, 29); }
11158     @@XMLTest:
11159     @@@QName: xp.attlist.attval.ger.entity.declared.standalone.4.2.test
11160     @@@DEnt:
11161     @@@@test:value:
11162     <?xml version="1.0" standalone="yes"?>
11163     <!DOCTYPE p [
11164     <!ENTITY % para SYSTEM "p">
11165     %para;
11166     <!ATTLIST p a CDATA "&entity;">
11167     ]>
11168     <p/>
11169     @@@c:erred: <[[xp|wf-entity-declared]]> { (5, 22)..(5, 29); }
11170     @@@enImplNote:
11171     The <XML::ATTLIST> declaration is processed since
11172     it is a <XA::standalone> document.
11173     @@XMLTest:
11174     @@@QName: xp.attlist.attval.ger.entity.declared.standalone.-3.test
11175     @@@DEnt:
11176     @@@@test:value:
11177     <?xml version="1.0" standalone="no"?>
11178     <!DOCTYPE p [
11179     <!ATTLIST p a CDATA "&entity;">
11180     <!ENTITY % para SYSTEM "p">
11181     %para;
11182     ]>
11183     <p/>
11184     @@@c:erred: <[[xp|wf-entity-declared]]> { (3, 22)..(3, 29); }
11185     @@@enImplNote:
11186     Is this well-formed? It has a parameter entity reference,
11187     therefore, it does not violates Entity Declared WFC, isn't it?
11188    
11189     Note that Firefox 1.5 and Opera 9 TP1 reports that this document has a
11190     fatal error (also note that they does not support unexpanded).
11191    
11192     See also:
11193     <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>
11194     @@XMLTest:
11195     @@@QName: xp.attlist.attval.ger.entity.declared.standalone.-3.2.test
11196     @@@DEnt:
11197     @@@@test:value:
11198     <?xml version="1.0" standalone="no"?>
11199     <!DOCTYPE p [
11200     <!ATTLIST q b CDATA #IMPLIED>
11201     <!ENTITY % para SYSTEM "p">
11202     %para;
11203     <!ATTLIST p a CDATA "&entity;">
11204     ]>
11205     <p c="d"/>
11206     @@@test:domTree:
11207     document {
11208     document-type {
11209     element-type-definition {
11210     node-name: 'q';
11211     attribute-definition {
11212     node-name: 'b';
11213     }
11214     }
11215     }
11216     element {
11217     attribute {
11218     node-name: 'c';
11219     text-content: 'd';
11220     }
11221     }
11222     }
11223     @@@enImplNote:
11224     The second <XML::ATTLIST> declaration is read but not processed
11225     and its <XML::&entity;> general entity reference violates
11226     entity declared validty constraint rather than well-formedness
11227     constraint.
11228     @@XMLTest:
11229     @@@QName: xp.attlist.attval.ger.entity.declared.standalone.-4.test
11230     @@@DEnt:
11231     @@@@test:value:
11232     <!DOCTYPE p [
11233     <!ATTLIST p a CDATA "&entity;">
11234     <!ENTITY % para SYSTEM "p">
11235     %para;
11236     ]>
11237     <p/>
11238     @@@c:erred: <[[xp|wf-entity-declared]]> { (2, 22)..(2, 29); }
11239     @@XMLTest:
11240     @@@QName: xp.attlist.attval.ger.entity.declared.standalone.-4.2.test
11241     @@@DEnt:
11242     @@@@test:value:
11243     <!DOCTYPE p [
11244     <!ATTLIST q b CDATA #IMPLIED>
11245     <!ENTITY % para SYSTEM "p">
11246     %para;
11247     <!ATTLIST p a CDATA "&entity;">
11248     ]>
11249     <p c="d"/>
11250     @@@test:domTree:
11251     document {
11252     document-type {
11253     element-type-definition {
11254     node-name: 'q';
11255     attribute-definition {
11256     node-name: 'b';
11257     }
11258     }
11259     }
11260     element {
11261     attribute {
11262     node-name: 'c';
11263     text-content: 'd';
11264     }
11265     }
11266     }
11267     @@XMLTest:
11268     @@@QName: xp.attlist.attval.ger.entity.declared.standalone.5.test
11269     @@@DEnt:
11270     @@@@test:value:
11271     <?xml version="1.0" standalone="yes"?>
11272     <!DOCTYPE p SYSTEM "dtd" [
11273     <!ATTLIST p a CDATA "&entity;">
11274     ]>
11275     <p/>
11276     @@@c:erred: <[[xp|wf-entity-declared]]> { (3, 22)..(3, 29); }
11277     @@@enImplNote:
11278     This document has an error - result is implementation dependent.
11279     @@XMLTest:
11280     @@@QName: xp.attlist.attval.ger.entity.declared.standalone.-5.test
11281     @@@DEnt:
11282     @@@@test:value:
11283     <?xml version="1.0" standalone="no"?>
11284     <!DOCTYPE p SYSTEM "dtd" [
11285     <!ATTLIST p a CDATA "&entity;">
11286     ]>
11287     <p/>
11288     @@@test:domTree:
11289     document {
11290     document-type {
11291     element-type-definition {
11292     node-name: 'p';
11293     attribute-definition {
11294     node-name: 'a';
11295     general-entity-reference {
11296     node-name: 'entity';
11297     is-expanded: false;
11298     }
11299     }
11300     }
11301     }
11302     element {
11303     attribute {
11304     node-name: 'a';
11305     specified: false;
11306     general-entity-reference {
11307     node-name: 'entity';
11308     is-expanded: false;
11309     }
11310     }
11311     }
11312     }
11313     @@@enImplNote:
11314     This document has an error - result is implementation dependent.
11315     @@XMLTest:
11316     @@@QName: xp.attlist.attval.ger.entity.declared.standalone.-6.test
11317     @@@DEnt:
11318     @@@@test:value:
11319     <!DOCTYPE p SYSTEM "dtd" [
11320     <!ATTLIST p a CDATA "&entity;">
11321     ]>
11322     <p/>
11323     @@@test:domTree:
11324     document {
11325     document-type {
11326     element-type-definition {
11327     node-name: 'p';
11328     attribute-definition {
11329     node-name: 'a';
11330     general-entity-reference {
11331     node-name: 'entity';
11332     is-expanded: false;
11333     }
11334     }
11335     }
11336     }
11337     element {
11338     attribute {
11339     node-name: 'a';
11340     specified: false;
11341     general-entity-reference {
11342     node-name: 'entity';
11343     is-expanded: false;
11344     }
11345     }
11346     }
11347     }
11348     @@@enImplNote:
11349     This document has an error - result is implementation dependent.
11350    
11351 wakaba 1.19 @@enImplNote:
11352     {TODO:: Entity declared WFC for
11353 wakaba 1.20
11354     - General entity references in entity value??
11355 wakaba 1.19
11356     }
11357    
11358 wakaba 1.5 @@PerlDef:
11359     my $impl = $Message::DOM::ImplementationRegistry->get_implementation ({
11360     'Core' => '3.0',
11361     'XML' => '3.0',
11362     'XMLVersion' => ['1.0', '1.1'],
11363     });
11364     my $parser = <Class::ManakaiXMLParser>->new ($impl);
11365    
11366     for my $test_data (@$TestData) {
11367     $test->start_new_test ($test_data->{uri});
11368     my $doc_ent = $test_data->{entity}->{$test_data->{root_uri}};
11369 wakaba 1.14 my $not_ok;
11370 wakaba 1.12
11371     $parser->dom_config->set_parameter ('error-handler' => sub ($$) {
11372     my (undef, $err) = @_;
11373     my $err_type = $err->type;
11374     if ($test_data->{dom_error}->{$err_type}) {
11375     $test->assert_error_equals
11376     (actual_value => $err,
11377 wakaba 1.15 expected_hash => shift @{$test_data->{dom_error}
11378     ->{$err_type}});
11379 wakaba 1.12 } else { # Uncatched error
11380     warn $err;
11381 wakaba 1.14 unless ($err->severity == <C::c|DOMError.SEVERITY_WARNING>) {
11382     $test->failure_comment ('Unexpected error |'.$err->type.'|');
11383     $not_ok = true;
11384     }
11385 wakaba 1.12 }
11386     return true; # continue as far as possible
11387     });
11388    
11389     if ($test_data->{dom_tree}) { # Successful test
11390     try {
11391     my $doc = $parser->parse_string ($doc_ent->{<H::test:value>});
11392     $test->assert_dom_tree_equals
11393     (actual_value => $doc,
11394     expected_hash => $test_data->{dom_tree});
11395     for (values %{$test_data->{dom_error}||{}}) {
11396     if (@$_) {
11397     $test->failure_comment
11398     (@$_.' |DOMError|s of type |'.
11399 wakaba 1.13 $_->[0]->{type}->{value}.'| are not reported');
11400 wakaba 1.14 $not_ok = true;
11401 wakaba 1.12 }
11402     }
11403 wakaba 1.14 $not_ok ? $test->not_ok : $test->ok;
11404 wakaba 1.12 } catch Message::Util::IF::DTException with {
11405     #
11406     } catch Message::DOM::IF::LSException with {
11407 wakaba 1.14 # not_ok
11408     } otherwise {
11409     my $err = shift;
11410     warn $err;
11411     $test->not_ok;
11412 wakaba 1.12 };
11413     } else {
11414     try {
11415     my $doc = $parser->parse_string ($doc_ent->{<H::test:value>});
11416     } catch Message::Util::IF::DTException with {
11417     #
11418     } catch Message::DOM::IF::LSException with {
11419     #
11420 wakaba 1.14 } otherwise {
11421     my $err = shift;
11422     warn $err;
11423     $test->not_ok;
11424 wakaba 1.12 };
11425     for (values %{$test_data->{dom_error}||{}}) {
11426     if (@$_) {
11427     $test->failure_comment
11428     (@$_.' |DOMError|s of type |'.
11429 wakaba 1.13 $_->[0]->{type}->{value}.'| are not reported');
11430 wakaba 1.14 $not_ok = true;
11431 wakaba 1.12 }
11432     }
11433 wakaba 1.14 $not_ok ? $test->not_ok : $test->ok;
11434 wakaba 1.12 }
11435 wakaba 1.5 }
11436 wakaba 1.6
11437     @ResourceDef:
11438 wakaba 1.19 @@QName: getEmptyEntityState
11439     @@rdf:type: DISPerl|InlineCode
11440     @@ForCheck: ManakaiDOM|ForClass
11441     @@PerlDef:
11442     {reptxt => \'', line => 1, column => 1, pos => 0,
11443     is_externally_declared => true}
11444    
11445     @ResourceDef:
11446 wakaba 1.6 @@QName: getCopyOfEntityState
11447     @@rdf:type: DISPerl|InlineCode
11448     @@ForCheck: ManakaiDOM|ForClass
11449     @@PerlDef:
11450     {%{$self->{$entity_type}->{$entity_name}},
11451     line => 1, column => 1, pos => 0}
11452 wakaba 1.1 ##ManakaiXMLParser
11453 wakaba 1.5
11454     ElementTypeBinding:
11455     @Name: XMLTests
11456     @ElementType:
11457     dis:ResourceDef
11458     @ShadowContent:
11459     @@ForCheck: ManakaiDOM|ForClass
11460     @@rdf:type: test|ParserTestSet
11461    
11462     ElementTypeBinding:
11463     @Name: XMLTest
11464     @ElementType:
11465     dis:ResourceDef
11466     @ShadowContent:
11467     @@ForCheck: ManakaiDOM|ForClass
11468     @@rdf:type: test|ParserTest
11469    
11470     ElementTypeBinding:
11471     @Name: DEnt
11472     @ElementType:
11473     dis:ResourceDef
11474     @ShadowContent:
11475     @@rdf:type: test|RootEntity
11476    
11477     ElementTypeBinding:
11478     @Name: Ent
11479     @ElementType:
11480     dis:ResourceDef
11481     @ShadowContent:
11482     @@rdf:type: test|Entity
11483 wakaba 1.1
11484 wakaba 1.3 ResourceDef:
11485     @QName: xp|get-location-from-token
11486     @rdf:type: DISPerl|BlockCode
11487     @enDesc:
11488     Creates a <IF::DOMCore:DOMLocator> object from a token.
11489     @PerlDef:
11490 wakaba 1.14 my $__d = $token->{type} ne '#EOF'
11491     ? $token->{location}->{char_d}
11492     : 0;
11493 wakaba 1.15 $__d -= $token->{location_d} if $token->{location_d};
11494 wakaba 1.3 $result = {
11495 wakaba 1.14 utf32_offset => $token->{location}->{pos} - $__d,
11496     line_number => $token->{location}->{line},
11497     column_number => $token->{location}->{column} - $__d,
11498 wakaba 1.3 };
11499 wakaba 1.14 $result->{utf32_offset} = 0 if $result->{utf32_offset} < 0;
11500     $result->{column_number} = 0 if $result->{column_number} < 0;
11501     ## 0 or 1, which should be?
11502 wakaba 1.3 @For: ManakaiDOM|ManakaiDOM3
11503 wakaba 1.1
11504     ElementTypeBinding:
11505     @Name: RuleDef
11506     @ElementType:
11507     dis:ResourceDef
11508     @ShadowContent:
11509     @@ForCheck: ManakaiDOM|ForClass
11510     @@rdf:type: Muf2003|RuleDefClass
11511    
11512     ElementTypeBinding:
11513     @Name: RuleParam
11514     @ElementType:
11515     dis:ResourceDef
11516     @ShadowContent:
11517     @@rdf:type: Muf2003|RuleParameter
11518    
11519     ElementTypeBinding:
11520     @Name: enImplNote
11521     @ElementType:
11522     dis:ImplNote
11523     @ShadowContent:
11524     @@lang:en
11525    
11526     ElementTypeBinding:
11527     @Name: ErrDef
11528     @ElementType:
11529     dis:ResourceDef
11530     @ShadowContent:
11531     @@rdf:type: DOMCore|DOMErrorType
11532     @@For: ManakaiDOM|DOM3
11533     @@ecore:textFormatter: ManakaiXMLParserExceptionFormatter
11534    
11535 wakaba 1.3 ElementTypeBinding:
11536     @Name: WFErrDef
11537     @ElementType:
11538     dis:ResourceDef
11539     @ShadowContent:
11540     @@rdf:type: DOMCore|DOMErrorType
11541     @@For: ManakaiDOM|DOM3
11542     @@ecore:textFormatter: ManakaiXMLParserExceptionFormatter
11543    
11544 wakaba 1.16 ElementTypeBinding:
11545     @Name: FatalErrDef
11546     @ElementType:
11547     dis:ResourceDef
11548     @ShadowContent:
11549     @@rdf:type: DOMCore|DOMErrorType
11550     @@For: ManakaiDOM|DOM3
11551     @@ecore:textFormatter: ManakaiXMLParserExceptionFormatter
11552    
11553 wakaba 1.3 WFErrDef:
11554     @QName: xp|wf-syntax-error
11555     @enDesc:
11556     The entity does not match to the production rule; it is not
11557     well-formed.
11558     @DOMCore:severity: DOMCore|SEVERITY_FATAL_ERROR
11559     @enMufDef:
11560     |%xp-error-token-type;|%xp-error-token-value
11561     (prefix => { (|}, suffix => {|)}); is not
11562     allowed%xp-error-lines (prefix => { (|}, suffix => {|)});
11563     @ecore:hasParameter:
11564     @@@: xp|error-token
11565     @@enDesc:
11566     The token that is not allowed.
11567    
11568     WFErrDef:
11569     @QName: xp|wf-pi-target-is-xml
11570     @enDesc:
11571     A processing instruction has its <CODE::PITarget> of
11572     <XML::xml> (in any case) which is not allowed.
11573     @DOMCore:severity: DOMCore|SEVERITY_ERROR
11574     @enMufDef:
11575     Processing instruction target name cannot be |%p
11576     (name => {<Q::xp|name>});|
11577     @ecore:hasParameter:
11578     @@@: xp|error-token
11579     @@enDesc:
11580     The token that contains the name.
11581     @ecore:hasParameter:
11582     @@@: xp|name
11583     @@enDesc:
11584     A string that is specified as target name of the
11585     processing instruction.
11586     @ecore:hasParameter: xp|parent
11587    
11588     WFErrDef:
11589     @QName: xp|wf-no-end-tag
11590     @DOMCore:severity: DOMCore|SEVERITY_ERROR
11591     @enDesc:
11592     An end-tag is not found.
11593     @enMufDef:
11594     End-tag |</%p (name => {<Q::xp|expected-element-type>});>| is required
11595     @ecore:hasParameter: xp|error-token
11596     @ecore:hasParameter:
11597     @@@: xp|node
11598     @@enDesc:
11599     The element node that is not closed.
11600     @ecore:hasParameter:
11601     @@@: xp|expected-element-type
11602     @@enDesc:
11603     The element type name of the element that is not closed.
11604    
11605     WFErrDef:
11606     @QName: xp|wf-unsupported-xml-version
11607     @DOMCore:severity: DOMCore|SEVERITY_ERROR
11608     @enDesc:
11609     The XML version specified in the version declaration is not supported.
11610     @enMufDef:
11611     XML version |%p (name => {<Q::infoset|version>});| is not supported
11612     @ecore:hasParameter: xp|bad-token
11613     @ecore:hasParameter:
11614     @@@: xp|parent
11615     @@enDesc:
11616     The document node.
11617     @ecore:hasParameter:
11618     @@@: infoset|version
11619     @@enDesc:
11620     The specified XML version.
11621    
11622     WFErrDef:
11623     @QName: xp|wf-malformed-enc-name
11624     @DOMCore:severity: DOMCore|SEVERITY_ERROR
11625     @enDesc:
11626     An <XA::encoding> pseudo-attribute value does not match
11627     to the procduction rule <CODE::EncName>.
11628     @enMufDef:
11629     Encoding name |%p (name => {<Q::xp|name>});| is not allowed
11630     @ecore:hasParameter: xp|error-token
11631     @ecore:hasParameter:
11632     @@@: xp|parent
11633     @@enDesc: The document node.
11634     @ecore:hasParameter:
11635     @@@: xp|name
11636     @@enDesc:
11637     The <XA::encoding> value.
11638    
11639     WFErrDef:
11640     @QName: xp|wf-malformed-xml-standalone
11641     @DOMCore:severity: DOMCore|SEVERITY_ERROR
11642     @enDesc:
11643     An <XA::standalone> pseudo-attribute value is neither <XML::yes>
11644     or <XML::no>.
11645     @enMufDef:
11646     |standalone| pseudo-attribute value |%p (name => {<Q::xp|name>});|
11647     is not allowed
11648     @ecore:hasParameter: xp|error-token
11649     @ecore:hasParameter:
11650     @@@: xp|parent
11651     @@enDesc: The document node.
11652     @ecore:hasParameter:
11653     @@@: xp|name
11654     @@enDesc:
11655     The <XA::standalone> value.
11656    
11657     WFErrDef:
11658     @QName: xp|wf-legal-literal-character
11659     @DOMCore:severity: DOMCore|SEVERITY_ERROR
11660     @enDesc:
11661     Each character in XML entity must match to the production
11662     rule <CODE::Char - RestrictedChar>.
11663     @enMufDef:
11664     Character %character-code-point
11665     (v => {<Q::xp|character-number>}); is not allowed
11666     @ecore:hasParameter:
11667     @@@: xp|character-number
11668     @@enDesc:
11669     The code position of the character being referred.
11670    
11671     WFErrDef:
11672     @QName: xp|wf-element-type-match
11673     @DOMCore:severity: DOMCore|SEVERITY_FATAL_ERROR
11674 wakaba 1.1 @enDesc:
11675 wakaba 1.3 The <CODE::Name> in an element's end-tag must match the element type
11676     in the start-tag.
11677     @enMufDef:
11678     End-tag |</%p (name => {<Q::xp|actual-element-type>});>| does
11679     not match to start-tag |<%p (name => {<Q::xp|expected-element-type>});>|
11680     @ecore:hasParameter: xp|error-token
11681     @ecore:hasParameter:
11682     @@@: xp|node
11683     @@enDesc:
11684     The current opening element node.
11685     @ecore:hasParameter:
11686     @@@: xp|expected-element-type
11687     @@enDesc:
11688     The element type name of the current element.
11689     @ecore:hasParameter:
11690     @@@: xp|actual-element-type
11691     @@enDesc:
11692     The <CODE::Name> occurs in the end-tag.
11693    
11694     WFErrDef:
11695     @QName: xp|wf-unique-att-spec
11696 wakaba 1.1 @DOMCore:severity: DOMCore|SEVERITY_ERROR
11697 wakaba 1.3 @enDesc:
11698     An attribute name <kwd:MUST-NOT> appear more than once in
11699     the same start-tag or empty-element tag.
11700 wakaba 1.1 @enMufDef:
11701 wakaba 1.3 Attribute |%p (name => {<Q::xp|name>});| is specified more
11702     than once in the same tag
11703     @ecore:hasParameter: xp|error-token
11704     @ecore:hasParameter:
11705     @@@: xp|name
11706     @@enDesc:
11707     The name of the attribute.
11708 wakaba 1.18
11709     WFErrDef:
11710     @QName: xp|wf-no-external-entity-references
11711     @c:severity: c|SEVERITY_ERROR
11712     @enDesc:
11713     Attribute values <kwd:MUST-NOT> contain direct or indirect
11714     entity references to external entities.
11715     @enMufDef:
11716     External entity |%p (name => {<Q::xp|name>});| is referenced
11717     in an attribute value literal
11718     @ecore:hasParameter: xp|error-token
11719     @ecore:hasParameter:
11720     @@@: xp|name
11721     @@enDesc:
11722     The name of the entity.
11723    
11724     WFErrDef:
11725     @QName: xp|wf-no-lt-in-attribute-values
11726     @c:severity: c|SEVERITY_ERROR
11727     @enDesc:
11728     The replacement text of any entity referred to directly or indirectly
11729     in an attribute value literal <kwd:MUST-NOT> contain a
11730     <CHAR::LESS-THAN SIGN>.
11731     @enMufDef:
11732     Entity replacement text cannot contain a
11733     |LESS-THAN SIGN| since it is referenced from an attribute
11734     value literal
11735     @ecore:hasParameter: xp|error-token
11736 wakaba 1.3
11737     WFErrDef:
11738     @QName: xp|wf-legal-character
11739     @DOMCore:severity: DOMCore|SEVERITY_ERROR
11740     @enDesc:
11741     Characters referred to using character references <kwd:MUST>
11742     match the production for <CODE::Char>.
11743     @enMufDef:
11744     Reference to character %character-code-point
11745     (v => {<Q::xp|character-number>}); is not allowed
11746     @ecore:hasParameter: xp|error-token
11747     @ecore:hasParameter:
11748     @@@: xp|character-number
11749     @@enDesc:
11750     The code position of the character being referred.
11751     @ecore:hasParameter:
11752     @@@: xp|parent
11753     @@enDesc:
11754     The parent node in which the character reference has
11755     occurred, if available.
11756 wakaba 1.19
11757     WFErrDef:
11758     @QName: xp|wf-entity-declared
11759     @c:severity: c|SEVERITY_ERROR
11760     @enDesc:
11761     {P:: In a document
11762    
11763     - without any DTD,
11764    
11765     - with only an internal DTD subset that contains no parameter
11766     entity references, or
11767    
11768     - with <XML::standalone="yes">,
11769    
11770     for an entity reference that does not occur within the external
11771     subset or a parameter entity, the <CODE::Name> given in the
11772     entity reference <kwd:MUST> match the <CODE::Name> does not
11773     occur within the external subset or a parameter entity,
11774     except that five predefined character entities need not
11775     be declared. The declaration of a general entity <kwd:MUST>
11776     precede any reference to it which appears in a default value
11777     in an attribute list declaration.
11778     @enMufDef:
11779     Entity |%p (name => {<Q::xp|name>});| must be declared
11780     in the internal subset
11781     @ecore:hasParameter: xp|error-token
11782     @ecore:hasParameter:
11783     @@@: xp|name
11784     @@enDesc:
11785     The name of the entity.
11786 wakaba 1.16
11787     FatalErrDef:
11788     @QName: xp|fatal-xml11-end-of-line-in-xml-declaration
11789     @DOMCore:severity: DOMCore|SEVERITY_ERROR
11790     @enDesc:
11791     An end-of-line character <CODE::U+0085> or <CODE::U+2028> is appeared
11792     within an XML declaration or text declaration.
11793     @enMufDef:
11794     End-of-line character %character-code-point
11795     (v => {<Q::xp|character-number>}); cannot be used within the
11796     XML or text declaration
11797     @ecore:hasParameter:
11798     @@@: xp|character-number
11799     @@enDesc:
11800     The code position of the end-of-line character.
11801 wakaba 1.1
11802 wakaba 1.3 XWParam:
11803 wakaba 1.1 @QName: xp|error-token
11804     @enDesc:
11805     The token where the parser found an error.
11806    
11807 wakaba 1.3 XWParam:
11808     @QName: xp|name
11809     @enDesc:
11810     A name.
11811    
11812     XWParam:
11813     @QName: xp|parent
11814     @enDesc:
11815     The parent node in which the error occurs.
11816    
11817     XWParam:
11818     @QName: xp|node
11819     @enDesc:
11820     The current node.
11821    
11822     XWParam:
11823     @QName: xp|actual-element-type
11824     @enDesc:
11825     The actual element type name occured in the source.
11826    
11827     XWParam:
11828     @QName: xp|expected-element-type
11829 wakaba 1.1 @enDesc:
11830 wakaba 1.3 The element type name expected.
11831    
11832     XWParam:
11833     @QName: xp|character-number
11834     @enDesc:
11835     The character code position.
11836    
11837     ElementTypeBinding:
11838     @Name: XWParam
11839     @ElementType:
11840     dis:ResourceDef
11841     @ShadowContent:
11842     @@For: =ManakaiDOM|all
11843     @@rdf:type: ecore|Parameter
11844 wakaba 1.1
11845     ElementTypeBinding:
11846     @Name:enMufDef
11847     @ElementType:
11848     ecore:defaultMessage
11849     @ShadowContent:
11850     @@lang:en
11851     @@ContentType:
11852     lang:muf
11853    
11854     ResourceDef:
11855     @QName: DOMImpl
11856     @AliasFor: DOMCore|DOMImplementation
11857     @For: ManakaiDOM|DOM
11858    
11859     ElementTypeBinding:
11860     @Name: Attr
11861     @ElementType:
11862     dis:ResourceDef
11863     @ShadowContent:
11864     @@rdf:type: DISLang|Attribute
11865     @@ForCheck: !=ManakaiDOM|ManakaiDOM
11866    
11867     ElementTypeBinding:
11868     @Name: Get
11869     @ElementType:
11870     dis:ResourceDef
11871     @ShadowContent:
11872     @@rdf:type: DISLang|AttributeGet
11873    
11874     ElementTypeBinding:
11875     @Name: Set
11876     @ElementType:
11877     dis:ResourceDef
11878     @ShadowContent:
11879     @@rdf:type: DISLang|AttributeSet
11880    
11881     ElementTypeBinding:
11882     @Name: enDesc
11883     @ElementType:
11884     dis:Description
11885     @ShadowContent:
11886     @@lang:en
11887    
11888     ElementTypeBinding:
11889     @Name: Method
11890     @ElementType:
11891     dis:ResourceDef
11892     @ShadowContent:
11893     @@rdf:type: DISLang|Method
11894     @@For: !=ManakaiDOM|ManakaiDOM
11895    
11896     ElementTypeBinding:
11897     @Name: Return
11898     @ElementType:
11899     dis:ResourceDef
11900     @ShadowContent:
11901     @@rdf:type: DISLang|MethodReturn
11902    
11903     ElementTypeBinding:
11904     @Name: Param
11905     @ElementType:
11906     dis:ResourceDef
11907     @ShadowContent:
11908     @@rdf:type: DISLang|MethodParameter
11909    
11910     ElementTypeBinding:
11911     @Name: PerlDef
11912     @ElementType:
11913     dis:Def
11914     @ShadowContent:
11915     @@ContentType: lang|Perl
11916    
11917     ElementTypeBinding:
11918     @Name: PropDef
11919     @ElementType:
11920     dis:ResourceDef
11921     @ShadowContent:
11922     @@rdf:type: rdf|Property
11923    
11924     ClsDef:
11925     @ClsQName: ManakaiXMLParserExceptionFormatter
11926    
11927     @ClsISA: ecore|MUErrorFormatter||ManakaiDOM|Perl
11928    
11929     @RuleDef:
11930     @@Name: xp-error-token-type
11931     @@enDesc:
11932     The type of the token the parser is encountered.
11933    
11934     @@Method:
11935     @@@Name: after
11936     @@@Param:
11937     @@@@Name: name
11938     @@@@Type: DOMString
11939     @@@@enDesc: The name of the method.
11940     @@@Param:
11941     @@@@Name: p
11942     @@@@Type: DISPerl|HASH
11943     @@@@enDesc: The set of the parameters to the method.
11944     @@@Param:
11945     @@@@Name: o
11946     @@@@Type: DISPerl|HASH
11947     @@@@enDesc: The option value.
11948     @@@Return:
11949     @@@@PerlDef:
11950     $p->{-result} = $o->{<H::xp|error-token>}->{type}
11951     if defined $o->{<H::xp|error-token>}->{type};
11952    
11953     @RuleDef:
11954     @@Name: xp-error-token-value
11955     @@enDesc:
11956     The value of the token the parser is encountered, if any.
11957    
11958     @@Method:
11959     @@@Name: after
11960     @@@Param:
11961     @@@@Name: name
11962     @@@@Type: DOMString
11963     @@@@enDesc: The name of the method.
11964     @@@Param:
11965     @@@@Name: p
11966     @@@@Type: DISPerl|HASH
11967     @@@@enDesc: The set of the parameters to the method.
11968     @@@Param:
11969     @@@@Name: o
11970     @@@@Type: DISPerl|HASH
11971     @@@@enDesc: The option value.
11972     @@@Return:
11973     @@@@PerlDef:
11974     $p->{-result} = $o->{<H::xp|error-token>}->{value}
11975     if defined $o->{<H::xp|error-token>}->{value};
11976    
11977     @RuleDef:
11978     @@Name: xp-error-lines
11979     @@enDesc:
11980     A copy of fragment of the source text that contains the line
11981     where the error occurred, if available.
11982    
11983     @@Method:
11984     @@@Name: after
11985     @@@Param:
11986     @@@@Name: name
11987     @@@@Type: DOMString
11988     @@@@enDesc: The name of the method.
11989     @@@Param:
11990     @@@@Name: p
11991     @@@@Type: DISPerl|HASH
11992     @@@@enDesc: The set of the parameters to the method.
11993     @@@Param:
11994     @@@@Name: o
11995     @@@@Type: DISPerl|HASH
11996     @@@@enDesc: The option value.
11997     @@@Return:
11998     @@@@PerlDef:
11999     my $pos = $o-><AG::DOMCore|DOMError.location>
12000     -><AG::DOMCore|DOMLocator.utf32Offset>;
12001     if ($pos > -1) {
12002 wakaba 1.6 my $src = $o->{<H::ecore|object>}->{entity}->[-1]->{reptxt};
12003 wakaba 1.1 my $start = $pos;
12004     $start = rindex ($$src, "\x0A", $start - 1) for 0..2;
12005     $start++;
12006     my $end = $pos;
12007     $end = index ($$src, "\x0A", $end + 1) for 0..2;
12008     $end = length $$src if $end < 0;
12009     $p->{-result} = substr $$src, $start, $end - $start;
12010     }
12011 wakaba 1.3
12012     @RuleDef:
12013     @@Name: character-code-point
12014     @@enDesc:
12015     The character code position, in <CODE::U+<VAR::HHHH>> notation.
12016    
12017     @@Method:
12018     @@@Name: after
12019     @@@Param:
12020     @@@@Name: name
12021     @@@@Type: DOMString
12022     @@@@enDesc: The name of the method.
12023     @@@Param:
12024     @@@@Name: p
12025     @@@@Type: DISPerl|HASH
12026     @@@@enDesc: The set of the parameters to the method.
12027     @@@Param:
12028     @@@@Name: o
12029     @@@@Type: DISPerl|HASH
12030     @@@@enDesc: The option value.
12031     @@@RuleParam:
12032     @@@@Name: v
12033     @@@@Type: DISPerl|Number
12034     @@@@enDesc:
12035     The name of the error parameter that contains the character code.
12036     @@@Return:
12037     @@@@PerlDef:
12038     $p->{-result} = sprintf 'U+%04X', $o->{$p->{v}};
12039 wakaba 1.1 ##XMLParserExceptionFormatter

admin@suikawiki.org
ViewVC Help
Powered by ViewVC 1.1.24