/[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.26 - (hide annotations) (download)
Thu Feb 16 20:03:20 2006 UTC (18 years, 9 months ago) by wakaba
Branch: MAIN
Changes since 1.25: +2299 -133 lines
++ manakai/lib/Message/Util/DIS/ChangeLog	16 Feb 2006 20:02:19 -0000
2006-02-16  Wakaba  <wakaba@suika.fam.cx>

	* Test.dis (assertDOMTreeEquals): The |notations| attribute
	support is added.

++ manakai/lib/Message/DOM/ChangeLog	16 Feb 2006 20:01:21 -0000
2006-02-17  Wakaba  <wakaba@suika.fam.cx>

	* XMLParser.dis: Default attribute are now namespace aware.
	(parseString): Don't output |Document| warnings
	during tree construction to standard error output.

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

	* XMLParser.dis: Name check for XML 1.0, XML Namespace 1.0, and
	XML Namespace 1.1 is implemented.  Namespace well-formedness
	error detection is implemented.  Generates |Notation| nodes
	from notation declarations.
	(checkNCName, checkQName): New code fragments.

	* XDoctype.dis (DocumentXDoctype): Factory methods
	don't check |MDOMX:MDOM_BAD_NAME| if |Document.strictErrorChecking|
	is |false|.

	* DOMCore.dis (wf-invalid-character-in-node-name,
	wf-invalid-character): Removed (moved to |MDOM:Tree| module).

	* Tree.dis '(wf-invalid-character-in-node-name,
        wf-invalid-character): New errors (from |MDOM:DOMCore| module).
	(Attr.specified): Setter added.
	(cfg:dtd-default-attributes): New configuration parameter.
	(Document.createEntityReference): Don't check |MDOMX:MDOM_BAD_NAME|
	if |Document.strictErrorChecking| is |false|.

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.26 $Date: 2006/02/15 15:36:16 $
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.25 $self->{dont_process} = false;
302     ## Don't process |ENTITY| and |ATTLIST| declarations.
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.26 $self->{doc_cfg}-><M::c|DOMConfiguration.setParameter>
331     (<Q::cfg|dtd-default-attributes> => false);
332     ## NOTE: Don't create DTD default attributes by
333     ## |createElementNS| method.
334     $self->{doc_cfg}-><M::c|DOMConfiguration.setParameter>
335     ('error-handler' => sub {
336     my (undef, $err) = @_;
337     return ($err-><AG::c|DOMError.severity> !=
338     <C::c|DOMError.SEVERITY_FATAL_ERROR>);
339     })
340     unless $Message::DOM::XMLParser::DEBUG;
341     ## NOTE: The default error handler in manakai |wanr|s error
342     ## description.
343 wakaba 1.11
344     ## Document entity -> |Document| node
345     $self->_parse_DocumentEntity;
346    
347     ## Replacement tree for general |Entity| nodes
348 wakaba 1.20 my @ent = values %{$self->{general_entity}};
349     for my $ent (@ent) {
350     if (exists $ent->{has_replacement_text}) {
351 wakaba 1.11 my $ent_name = $ent->{name};
352     $self->{entity} = [<Code::getCopyOfEntityState::
353     $entity_type = 'general_entity',
354     $entity_name = $ent_name>];
355 wakaba 1.14 $self->{location} = $self->{entity}->[-1];
356 wakaba 1.11 $self->{token} = [];
357     $self->{char} = [];
358 wakaba 1.23 local $ent->{is_opened} = true;
359 wakaba 1.11 ## TODO: External entity support
360     $self->_parse_InternalGeneralParsedEntity ($ent->{node});
361     $ent->{node}-><AS::x|Entity.hasReplacementTree> (true);
362 wakaba 1.21 ## ISSUE: Should errors detected by this phase result
363     ## in |DOMLS:PARSE_ERR| exception thrown?
364 wakaba 1.20 }
365 wakaba 1.11 ## TODO: Read-only if configuration (for all entities)
366     }
367    
368 wakaba 1.21 ## Turns flags to their default value
369     $self->{doc_cfg}-><M::c|DOMConfiguration.setParameter>
370     (<Q::cfg|entity-reference-read-only> => null);
371     $self->{doc_cfg}-><M::c|DOMConfiguration.setParameter>
372     (<Q::cfg|clone-entity-reference-subtree> => null);
373 wakaba 1.26 $self->{doc_cfg}-><M::c|DOMConfiguration.setParameter>
374     (<Q::cfg|dtd-default-attributes> => null);
375     $self->{doc_cfg}-><M::c|DOMConfiguration.setParameter>
376     ('error-handler' => null);
377 wakaba 1.11 $r-><AS::Document.strictErrorChecking> (true);
378 wakaba 1.1 }__;
379    
380     @Method:
381     @@Name: shiftChar
382     @@ManakaiDOM:isForInternal:1
383     @@ForCheck: ManakaiDOM|ForClass
384     @@enDesc:
385     Returns the next character.
386     @@Return:
387     @@@Type: idl|long||ManakaiDOM|all
388     @@@enDesc:
389     The code position number of the next character, if any,
390 wakaba 1.6 or <CODE::-1>.
391 wakaba 1.1 @@@PerlDef:
392     if (@{$self->{char}}) {
393     $r = shift @{$self->{char}};
394     } else {
395 wakaba 1.7 no warnings 'substr';
396     ## substr outside length warnings at the end of the string
397 wakaba 1.6 GETCHAR: {
398     my $char = substr (${$self->{entity}->[-1]->{reptxt}},
399     $self->{entity}->[-1]->{pos}, 1);
400    
401 wakaba 1.7 if (defined $char and length $char) {
402 wakaba 1.13 $self->{entity}->[-1]->{pos}++;
403 wakaba 1.6 $r = ord $char;
404     if ($r == 0x000A) {
405     $self->{entity}->[-1]->{line}++;
406     $self->{entity}->[-1]->{column} = 1;
407     } elsif ($r == 0x000D) {
408     my $next_char = substr (${$self->{entity}->[-1]->{reptxt}},
409     $self->{entity}->[-1]->{pos}, 1);
410     if ($next_char eq "\x0A") {
411     $self->{entity}->[-1]->{pos}++;
412 wakaba 1.13 $self->{entity}->[-1]->{line}++;
413 wakaba 1.6 $self->{entity}->[-1]->{column} = 1;
414     } elsif ($next_char eq "\x85") {
415     if ($self->{xml_version} eq '1.1') {
416 wakaba 1.16 if ($self->{entity}->[-1]->{no_xml11_eol}) {
417     my $location = {
418     utf32_offset => $self->{entity}->[-1]->{pos} - 1,
419     line_number => $self->{entity}->[-1]->{line},
420     column_number => $self->{entity}->[-1]->{column},
421     };
422     my $continue = __DOMCore:ERROR{
423     xp|fatal-xml11-end-of-line-in-xml-declaration::
424     DOMCore|location => {$location},
425     xp|character-number => {$r},
426     }__;
427     unless ($continue) {
428     __EXCEPTION{DOMLS|PARSE_ERR}__;
429     }
430     } # no_xml11_eol
431 wakaba 1.6 $self->{entity}->[-1]->{pos}++;
432 wakaba 1.13 $self->{entity}->[-1]->{line}++;
433 wakaba 1.6 $self->{entity}->[-1]->{column} = 1;
434     } else {
435 wakaba 1.16 ## |no_xml11_eol| will be tested later.
436 wakaba 1.13 $self->{entity}->[-1]->{column}++;
437     ## Line number will be increased by next |shiftChar| call.
438 wakaba 1.6 }
439 wakaba 1.3 } else {
440 wakaba 1.13 $self->{entity}->[-1]->{line}++;
441 wakaba 1.6 $self->{entity}->[-1]->{column} = 1;
442     }
443     $r = 0x000A;
444     } elsif (
445     not ((0x0020 <= $r and $r <= 0x007E) or
446     (0x00A0 <= $r and $r <= 0xD7FF) or
447     (0xE000 <= $r and $r <= 0xFFFD) or
448     (0x10000 <= $r and $r <= 0x10FFFF)) and
449     $r != 0x0009 and $r != 0x0085 and
450     not ($self->{xml_version} eq '1.0' and
451     (0x007F <= $r and $r <= 0x009F))
452     ) {
453     my $location = {
454 wakaba 1.13 utf32_offset => $self->{entity}->[-1]->{pos} - 1,
455 wakaba 1.6 line_number => $self->{entity}->[-1]->{line},
456     column_number => $self->{entity}->[-1]->{column},
457     };
458     my $continue = __DOMCore:ERROR{xp|wf-legal-literal-character::
459     DOMCore|location => {$location},
460     xp|character-number => {$r},
461     }__;
462     unless ($continue) {
463     __EXCEPTION{DOMLS|PARSE_ERR}__;
464 wakaba 1.3 }
465 wakaba 1.6 $self->{entity}->[-1]->{column}++;
466     } elsif ($r == 0x0085 or $r == 0x2028) {
467 wakaba 1.16 if ($self->{entity}->[-1]->{no_xml11_eol}) {
468     my $location = {
469     utf32_offset => $self->{entity}->[-1]->{pos} - 1,
470     line_number => $self->{entity}->[-1]->{line},
471     column_number => $self->{entity}->[-1]->{column},
472     };
473     my $continue = __DOMCore:ERROR{
474     xp|fatal-xml11-end-of-line-in-xml-declaration::
475     DOMCore|location => {$location},
476     xp|character-number => {$r},
477     }__;
478     unless ($continue) {
479     __EXCEPTION{DOMLS|PARSE_ERR}__;
480     }
481     } # no_xml11_eol
482 wakaba 1.6 $r = 0x000A if $self->{xml_version} eq '1.1';
483 wakaba 1.13 ## Even in XML 1.0 it increases the line number.
484 wakaba 1.6 $self->{entity}->[-1]->{line}++;
485     $self->{entity}->[-1]->{column} = 1;
486 wakaba 1.3 } else {
487 wakaba 1.6 $self->{entity}->[-1]->{column}++;
488 wakaba 1.3 }
489     } else {
490 wakaba 1.6 $r = -1;
491 wakaba 1.3 }
492 wakaba 1.6 } # GETCHAR
493 wakaba 1.1 }
494    
495     @Method:
496     @@ManakaiDOM:isForInternal: 1
497     @@Operator: ManakaiDOM|MUErrorHandler
498     @@enDesc:
499     When a <IF::ecore|ErrorInterface||ManakaiDOM|Perl> is <Perl::report>ed,
500     then this method is invoked.
501    
502     The method calls the <cfg::DOMCore|error-handler> if the error is of
503     <IF::DOMCore|DOMError>. Otherwise, the error is re-thrown so that
504     corresponding <Perl::catch> clause, if any, can catch the error.
505     @@Param:
506     @@@Name: err
507     @@@Type: ecore|ErrorInterface||ManakaiDOM|Perl
508     @@@enDesc:
509     The reported error object.
510     @@Return:
511     @@@Type: DISPerl|Any
512     @@@enDesc:
513     If the <P::err> is a <IF::DOMCore|DOMError>, then the return value
514     of the error handler.
515    
516     {NOTE:: If the error is thrown, the method never returns.
517     }
518     @@@nullCase:
519     @@@@enDesc:
520     No error handler.
521     @@@PerlDef:
522     if ($err->isa (<IFName::DOMCore|DOMError||ManakaiDOM|ManakaiDOM>)) {
523     __DEEP{
524     A: {
525     my $cfg = $self-><AG::LSParser.domConfig>;
526     my $h = $cfg-><M::DOMCore|DOMConfiguration.getParameter>
527     ('error-handler');
528     $r = $h-><M::DOMCore|DOMErrorHandler.handleError> ($err);
529     } # A
530     }__;
531     } else {
532     $err-><M::ecore|ErrorInterface||ManakaiDOM|Perl.throw>;
533     }
534    
535     @DISPerl:dpgDef:
536    
537     /*
538     XML Document Entity
539    
540     document := prolog element *Misc
541     - *Char RestrictedChar *Char ;; [1]
542     */
543 wakaba 1.11 rule DocumentEntity : standalone {
544 wakaba 1.1 /*
545     prolog := XMLDecl? *Misc [doctypedecl *Misc] ;; [22]
546     */
547 wakaba 1.16 ?lexmode DocumentStart;
548 wakaba 1.11
549     my $doc;
550     lang:Perl {
551     $doc = $self->{doc};
552     }
553 wakaba 1.1
554 wakaba 1.3 ~? (XDO) {
555 wakaba 1.16 ?lexmode XMLDeclarationOrPI;
556     lang:Perl {
557     $self->{entity}->[-1]->{no_xml11_eol} = true;
558     }
559     ~ (S) { // XML declaration
560     &_XMLDeclaration_ ($doc => $doc);
561     ~ (PIC2) {
562     ?lexmode DocumentProlog;
563     } else {
564     ?lexmode DocumentProlog;
565     }
566     } (NameChar) { // Processing instruction whose target begins with |xml|
567     my $target_token;
568     lang:Perl ($v => $token.value) {
569     $target_token = $token;
570     $target_token->{value} = 'xml'.$target_token->{value};
571     $self->{entity}->[-1]->{no_xml11_eol} = false;
572     }
573     ?lexmode PINmtoken;
574     ~? (Nmtoken) {
575     lang:Perl ($v => $token.value) {
576     $target_token->{value} .= $v;
577     }
578     ?lexmode PIName;
579     }
580     lang:Perl {
581     $target_token->{type} = 'Name';
582     $target_token->{location_d} += 3; # 'xml'
583     unshift @{$self->{token}}, $token;
584     $token = $target_token;
585     }
586     &_ProcessingInstruction_ ($doc => $doc, $parent => $doc);
587     ~ (PIC) {
588     ?lexmode DocumentProlog;
589     } else {
590     ?lexmode DocumentProlog;
591     }
592 wakaba 1.3 } else {
593 wakaba 1.16 lang:Perl {
594     $self->{entity}->[-1]->{no_xml11_eol} = false;
595     }
596 wakaba 1.3 }
597     } else {
598     ?lexmode 'DocumentProlog';
599     }
600 wakaba 1.1
601     // *Misc
602 wakaba 1.2 ~* (CDO) {
603 wakaba 1.1 &_CommentDeclaration_ ($doc => $doc, $parent => $doc);
604    
605     ~ (MDC) {
606     ?lexmode DocumentProlog;
607     } else {
608     ?lexmode DocumentProlog;
609     }
610     } (PIO) {
611     &_ProcessingInstruction_ ($doc => $doc, $parent => $doc);
612    
613     ~ (PIC) {
614     ?lexmode 'DocumentProlog';
615     } else {
616     ?lexmode DocumentProlog;
617     }
618     } (S) {
619     //
620     }
621    
622     // doctypedecl
623     ~? (MDO) {
624     &_DocumentTypeDeclaration_ ($doc => $doc);
625    
626 wakaba 1.3 ~ (MDC) {
627     ?lexmode DocumentMisc;
628     } else {
629     ?lexmode DocumentMisc;
630     }
631     } else {
632     ?lexmode DocumentMisc;
633 wakaba 1.1 }
634 wakaba 1.25
635     lang:Perl {
636     $self->{doc}-><AS::Document.allDeclarationsProcessed> (true)
637     unless $self->{dont_process};
638     }
639 wakaba 1.1
640     // *Misc
641 wakaba 1.2 ~* (CDO) {
642 wakaba 1.1 &_CommentDeclaration_ ($doc => $doc, $parent => $doc);
643    
644     ~ (MDC) {
645     ?lexmode DocumentMisc;
646     } else {
647     ?lexmode DocumentMisc;
648     }
649     } (PIO) {
650     &_ProcessingInstruction_ ($doc => $doc, $parent => $doc);
651    
652     ~ (PIC) {
653     ?lexmode 'DocumentMisc';
654     } else {
655     ?lexmode DocumentMisc;
656     }
657     } (S) {
658     //
659     }
660    
661     // Document element
662     ~ (STAGO) {
663     &Element_ ($doc => $doc, $parent => $doc)
664     : unshift-current-token;
665     ~ (TAGC) {
666     ?lexmode DocumentEnd;
667     } else {
668     ?lexmode DocumentEnd;
669     }
670     } else {
671     ?lexmode 'DocumentEnd';
672     }
673    
674     // *Misc
675 wakaba 1.2 ~* (CDO) {
676 wakaba 1.1 &_CommentDeclaration_ ($doc => $doc, $parent => $doc);
677    
678     ~ (MDC) {
679     ?lexmode DocumentEnd;
680     } else {
681     ?lexmode DocumentEnd;
682     }
683     } (PIO) {
684     &_ProcessingInstruction_ ($doc => $doc, $parent => $doc);
685     ~ (PIC) {
686     ?lexmode 'DocumentEnd';
687     } else {
688     ?lexmode DocumentEnd;
689     }
690     } (S) {
691     //
692     }
693    
694     ~ (#EOF) { }
695     } // DocumentEntity
696 wakaba 1.11
697     /*
698     Internal General Parsed Entity
699    
700     An internal general parsed entity is well-formed if its
701     replacement text matches the production labeled |content|.
702     */
703     rule InternalGeneralParsedEntity ($ent) : standalone {
704     ?lexmode ElementContent;
705    
706     my $ns;
707     lang:Perl {
708     $ns = {
709     xml => <Q::xml:>,
710     xmlns => <Q::xmlns:>,
711     };
712     }
713    
714     &content ($parent => $ent, $ns => $ns);
715    
716     ~ (#EOF) { }
717     } // InternalGeneralParsedEntity
718    
719 wakaba 1.1 /*
720     XML Declaration
721    
722     XMLDecl := '<?xml' VersionInfo
723     [EncodingDecl]
724     [SDDecl]
725     [S] '?>' ;; [23]
726    
727     NOTE: XML declaration is optional in XML 1.0
728     while it is required in XML 1.1.
729     */
730 wakaba 1.16 rule _XMLDeclaration_ {
731     // ~ (XDO) { }
732 wakaba 1.3 ?lexmode XMLDeclaration;
733 wakaba 1.16 //lang:Perl {
734     // $self->{entity}->[-1]->{no_xml11_eol} = true;
735     //}
736     //~ (S) { }
737 wakaba 1.3
738     ~ (Name == 'version') {
739     ~? (S) { }
740     ~ (VI) { }
741     ~? (S) { }
742 wakaba 1.1
743 wakaba 1.3 my $ver;
744     my $bad_token;
745    
746     ~ (LIT) {
747     ?lexmode AttributeValueLiteral;
748    
749     ~ (STRING) {
750     lang:Perl ($version => $token.value) {
751     $ver = $version;
752     $bad_token = $token;
753     }
754     }
755    
756     ~ (LIT) {
757     ?lexmode XMLDeclaration;
758     }
759     } (LITA) {
760     ?lexmode AttributeValueLiteralA;
761    
762     ~ (STRING) {
763     lang:Perl ($version => $token.value) {
764     $ver = $version;
765     $bad_token = $token;
766     }
767     }
768    
769     ~ (LITA) {
770     ?lexmode XMLDeclaration;
771     }
772     }
773    
774     lang:Perl : has-error {
775     unless ($ver eq '1.0' or $ver eq '1.1') {
776     my $location;
777     __CODE{xp|get-location-from-token::
778     $token => {$bad_token},
779     $result => {$location},
780     }__;
781     my $continue = __DOMCore:ERROR{xp|wf-unsupported-xml-version::
782     DOMCore|location => {$location},
783 wakaba 1.16 xp|parent => {$self->{doc}},
784 wakaba 1.3 infoset|version => {$ver},
785     xp|error-token => {$bad_token},
786     }__;
787     unless ($continue) {
788     __EXCEPTION{DOMLS|PARSE_ERR}__;
789     }
790     }
791 wakaba 1.16 $self->{doc}-><AS::Document.xmlVersion> ($ver);
792 wakaba 1.3 $self->{xml_version} = $ver;
793     }
794    
795     ~? (S) { }
796 wakaba 1.1 }
797    
798 wakaba 1.3 ~? (Name == 'encoding') {
799     ~? (S) { }
800     ~ (VI) { }
801     ~? (S) { }
802    
803     my $ver;
804     my $bad_token;
805    
806     ~ (LIT) {
807     ?lexmode AttributeValueLiteral;
808    
809     ~ (STRING) {
810     lang:Perl ($version => $token.value) {
811     $ver = $version;
812     $bad_token = $token;
813     }
814     }
815    
816     ~ (LIT) {
817     ?lexmode XMLDeclaration;
818     }
819     } (LITA) {
820     ?lexmode AttributeValueLiteralA;
821    
822     ~ (STRING) {
823     lang:Perl ($version => $token.value) {
824     $ver = $version;
825     $bad_token = $token;
826     }
827     }
828    
829     ~ (LITA) {
830     ?lexmode XMLDeclaration;
831     }
832     }
833    
834     lang:Perl : has-error {
835     unless ($ver =~ /\A[A-Za-z][A-Za-z0-9._-]*\z/) {
836     my $location;
837     __CODE{xp|get-location-from-token::
838     $token => {$bad_token},
839     $result => {$location},
840     }__;
841     my $continue = __DOMCore:ERROR{xp|wf-malformed-enc-name::
842     DOMCore|location => {$location},
843 wakaba 1.16 xp|parent => {$self->{doc}},
844 wakaba 1.3 xp|name => {$ver},
845     xp|error-token => {$bad_token},
846     }__;
847     unless ($continue) {
848     __EXCEPTION{DOMLS|PARSE_ERR}__;
849     }
850     }
851 wakaba 1.16 $self->{doc}-><AS::Document.xmlEncoding> ($ver);
852 wakaba 1.3 }
853    
854     ~? (S) { }
855 wakaba 1.1 }
856 wakaba 1.3
857     ~? (Name == 'standalone') {
858     ~? (S) { }
859     ~ (VI) { }
860     ~? (S) { }
861    
862     my $ver;
863     my $bad_token;
864    
865     ~ (LIT) {
866     ?lexmode AttributeValueLiteral;
867    
868     ~ (STRING) {
869     lang:Perl ($version => $token.value) {
870     $ver = $version;
871     $bad_token = $token;
872     }
873     }
874    
875     ~ (LIT) {
876     ?lexmode XMLDeclaration;
877     }
878     } (LITA) {
879     ?lexmode AttributeValueLiteralA;
880    
881     ~ (STRING) {
882     lang:Perl ($version => $token.value) {
883     $ver = $version;
884     $bad_token = $token;
885     }
886     }
887 wakaba 1.1
888 wakaba 1.3 ~ (LITA) {
889     ?lexmode XMLDeclaration;
890     }
891     }
892    
893     lang:Perl : has-error {
894     unless ($ver eq 'yes' or $ver eq 'no') {
895     my $location;
896     __CODE{xp|get-location-from-token::
897     $token => {$bad_token},
898     $result => {$location},
899     }__;
900     my $continue = __DOMCore:ERROR{xp|wf-malformed-xml-standalone::
901     DOMCore|location => {$location},
902 wakaba 1.16 xp|parent => {$self->{doc}},
903 wakaba 1.3 xp|name => {$ver},
904     xp|error-token => {$bad_token},
905     }__;
906     unless ($continue) {
907     __EXCEPTION{DOMLS|PARSE_ERR}__;
908     }
909     }
910 wakaba 1.13 if ($ver eq 'yes') {
911 wakaba 1.16 $self->{doc}-><AS::Document.xmlStandalone> (true);
912 wakaba 1.13 $self->{standalone} = true;
913     }
914 wakaba 1.3 }
915    
916     ~? (S) { }
917     }
918    
919 wakaba 1.16 ~ (PIC1) {
920     lang:Perl {
921     $self->{entity}->[-1]->{no_xml11_eol} = false;
922     }
923     } else {
924     lang:Perl {
925     $self->{entity}->[-1]->{no_xml11_eol} = false;
926     }
927     }
928    
929     // ~ (PIC2) { }
930 wakaba 1.3 } // _XMLDeclaration_
931 wakaba 1.1
932     /*
933     Comment Declaration
934    
935     Comment := '<!--' *(Char - '-' / '-' (Char - '-'))
936     '-->' ;; [15]
937 wakaba 1.4 */
938 wakaba 1.1 rule _CommentDeclaration_ ($doc, $parent) {
939     ?lexmode 'CommentDeclaration';
940    
941     ~? (STRING) {
942     lang:Perl ($data => $token.value) {
943     my $com = $doc-><M::Document.createComment> ($data);
944     $parent-><M::Node.appendChild> ($com);
945     }
946     } else {
947     lang:Perl {
948     my $com = $doc-><M::Document.createComment> ('');
949     $parent-><M::Node.appendChild> ($com);
950     }
951     }
952    
953     ~ (COM) {
954     ?lexmode MarkupDeclaration;
955     } else {
956     ?lexmode MarkupDeclaration;
957     }
958    
959     // ~ (MDC) { }
960 wakaba 1.4 } // _CommentDeclaration
961 wakaba 1.15
962     rule _CommentDeclarationDTD {
963     ?lexmode CommentDeclaration;
964 wakaba 1.4
965     ~? (STRING) {
966     //
967     }
968    
969     ~ (COM) {
970     ?lexmode MarkupDeclaration;
971     } else {
972     ?lexmode MarkupDeclaration;
973     }
974    
975     ~ (MDC) {
976     ?lexmode DTD;
977     } else {
978     ?lexmode DTD;
979     }
980     } // _CommentDeclarationDTD
981    
982 wakaba 1.1 /*
983     Processing Instruction
984    
985     PI := '<?' PITarget [S *Char - *Char '?>' *Char]
986     '?>' ;; [16]
987     */
988     rule _ProcessingInstruction_ ($doc, $parent) {
989     ?lexmode 'PIName';
990    
991     my $pi;
992    
993     ~ (Name) {
994 wakaba 1.3 lang:Perl ($name => $token.value) : has-error {
995 wakaba 1.1 if (lc $name eq 'xml') {
996 wakaba 1.3 my $location;
997     __CODE{xp|get-location-from-token::
998     $token => {$token},
999     $result => {$location},
1000     }__;
1001     my $continue = __DOMCore:ERROR{xp|wf-pi-target-is-xml::
1002     xp|name => {$name},
1003     DOMCore|location => {$location},
1004     xp|parent => {$parent},
1005     }__;
1006     unless ($continue) {
1007     __EXCEPTION{DOMLS|PARSE_ERR::
1008     }__;
1009     }
1010 wakaba 1.1 }
1011 wakaba 1.26 __CODE{checkNCName:: $name => $name}__;
1012    
1013 wakaba 1.1 $pi = $doc-><M::Document.createProcessingInstruction>
1014     ($name);
1015     }
1016 wakaba 1.14 } else {
1017     lang:Perl {
1018     $pi = $doc-><M::Document.createProcessingInstruction> ('#INVALID');
1019     }
1020 wakaba 1.1 }
1021    
1022 wakaba 1.14 ~? (S) {
1023 wakaba 1.1 ?lexmode 'PIData';
1024    
1025     my $tdata;
1026    
1027     ~? (DATA) {
1028     lang:Perl ($data => $token.value) {
1029     $tdata = $data;
1030     }
1031     } else {
1032     lang:Perl {
1033     $tdata = '';
1034     }
1035     }
1036    
1037     lang:Perl {
1038     $pi-><AS::Node.nodeValue> ($tdata);
1039     }
1040     }
1041    
1042     lang:Perl {
1043     $parent-><M::Node.appendChild> ($pi);
1044     }
1045    
1046     // ~ (PIC) { }
1047     } // _ProcessingInstruction_
1048 wakaba 1.4
1049 wakaba 1.6 /*
1050     Processing instruction in DTD
1051     */
1052     rule _ProcessingInstructionDTD ($doc, $doctype) {
1053 wakaba 1.4 ?lexmode 'PIName';
1054 wakaba 1.6
1055     my $pi;
1056 wakaba 1.4
1057     ~ (Name) {
1058 wakaba 1.6 lang:Perl ($name => $token.value) : has-error {
1059     if (lc $name eq 'xml') {
1060     my $location;
1061     __CODE{xp|get-location-from-token::
1062     $token => {$token},
1063     $result => {$location},
1064     }__;
1065     my $continue = __DOMCore:ERROR{xp|wf-pi-target-is-xml::
1066     xp|name => {$name},
1067     DOMCore|location => {$location},
1068     xp|parent => {$doctype},
1069     }__;
1070     unless ($continue) {
1071     __EXCEPTION{DOMLS|PARSE_ERR::
1072     }__;
1073     }
1074     }
1075 wakaba 1.26 __CODE{checkNCName:: $name => $name}__;
1076    
1077 wakaba 1.6 $pi = $doc-><M::Document.createProcessingInstruction>
1078     ($name);
1079     }
1080 wakaba 1.14 } else {
1081     lang:Perl {
1082     $pi = $doc-><M::Document.createProcessingInstruction> ('#INVALID');
1083     }
1084 wakaba 1.4 }
1085    
1086 wakaba 1.14 ~? (S) {
1087 wakaba 1.4 ?lexmode 'PIData';
1088    
1089 wakaba 1.6 my $tdata;
1090    
1091 wakaba 1.4 ~? (DATA) {
1092 wakaba 1.6 lang:Perl ($data => $token.value) {
1093     $tdata = $data;
1094     }
1095     } else {
1096     lang:Perl {
1097     $tdata = '';
1098     }
1099     }
1100    
1101     lang:Perl {
1102     $pi-><AS::Node.nodeValue> ($tdata);
1103 wakaba 1.4 }
1104     }
1105    
1106 wakaba 1.6 lang:Perl {
1107     $doctype-><M::Node.appendChild> ($pi);
1108     }
1109    
1110 wakaba 1.4 ~ (PIC) {
1111     ?lexmode DTD;
1112     } else {
1113     ?lexmode DTD;
1114     }
1115     } // _ProcessingInstructionDTD
1116 wakaba 1.1
1117     /*
1118     Element content parsing mode
1119    
1120     element := EmptyElemTag /
1121     STag content ETag ;; [39]
1122     content := (CharData / element / Reference / CDSect /
1123     PI / Comment) ;; [43]
1124     */
1125 wakaba 1.6 rule Element_ ($doc, $parent, $ns) : standalone {
1126 wakaba 1.1 ?lexmode 'ElementContent';
1127    
1128     my $node; // Current "parent" node
1129     my $nodes; // Node stack (w/o $current_node)
1130     my $type; // Current "parent" element type QName
1131     my $types; // Element type stack (w/o $current_type)
1132 wakaba 1.6 //my $ns; // Current in-scope namespace bindings
1133 wakaba 1.1 my $nses; // Namespace binding stack (w/o $current_ns)
1134    
1135     lang:Perl {
1136     $node = $parent;
1137     $nodes = [];
1138     $type = '';
1139     $types = [];
1140 wakaba 1.6 $ns ||= {
1141 wakaba 1.1 xml => <Q::xml:>,
1142     xmlns => <Q::xmlns:>,
1143     };
1144     $nses = [];
1145     }
1146    
1147     ~* : name => CONTENT
1148     (CharData) {
1149     // Character data
1150     lang:Perl ($data => $token.value) {
1151     $node-><M::Node.appendChild>
1152     ($doc-><M::Document.createTextNode> ($data));
1153     }
1154     } (STAGO) {
1155     // Start tag or empty element tag
1156    
1157     ?lexmode 'StartTag';
1158    
1159     ~ (Name) {
1160     my $attrs;
1161 wakaba 1.26 lang:Perl ($name => $token.value) : has-error {
1162     __CODE{checkQName:: $name => $name}__;
1163 wakaba 1.1 push @{$types}, $type;
1164     $type = $name;
1165     $attrs = {};
1166     }
1167    
1168     ~? (S) {
1169     &AttributeSpecificationList
1170     ($doc => $doc, $attrs => $attrs);
1171     }
1172    
1173     my $el;
1174 wakaba 1.9
1175     /*
1176     Note that this implementation does not perform
1177     attribute value tokenization (but does white space
1178     normalization common to attribute types) and
1179     construct the tree as is. DOM Level 3 Core spec
1180     is unclear on this point. With tokenization,
1181     entity references cannot be preserved.
1182    
1183     The manakai Node.nodeValue and Attr.value attributes
1184     do tokenization according to attribute types.
1185     */
1186    
1187     /*
1188     ISSUE: Should |xml:id| attribute be typed?
1189     */
1190 wakaba 1.1
1191     lang:Perl {
1192     push @{$nses}, $ns;
1193     $ns = {%$ns};
1194 wakaba 1.26
1195     ## Default attributes
1196     DA: for my $atqname (%{$self->{attr}->{$type}}) {
1197     next DA unless $self->{attr}->{$type}->{$atqname};
1198     next DA if exists $attrs->{$atqname}; # specified
1199     my $dtype = $self->{attr}->{$type}->{$atqname}
1200     -><AG::ATDef.defaultType>;
1201     next DA unless $dtype == <C::ATDef.EXPLICIT_DEFAULT> or
1202     $dtype == <C::ATDef.FIXED_DEFAULT>;
1203     $attrs->{$atqname} = {is_default => true, nodes => []};
1204     for (@{$self->{attr}->{$type}->{$atqname}
1205     -><AG::Node.childNodes>}) {
1206     push @{$attrs->{$atqname}->{nodes}},
1207     $_-><M::Node.cloneNode> (true);
1208     }
1209     }
1210 wakaba 1.1
1211     my %gattr;
1212     my %lattr;
1213     for my $atqname (keys %$attrs) {
1214     my ($pfx, $lname) = split /:/, $atqname;
1215 wakaba 1.9 $attrs->{$atqname}->{def} = $self->{attr}->{$type}->{$atqname};
1216 wakaba 1.1 if (defined $lname) { ## Global attribute
1217     if ($pfx eq 'xmlns') {
1218 wakaba 1.26 my $nsuri = $attrs->{$atqname}->{is_default}
1219     ? $attrs->{$atqname}->{def}-><AG::Node.nodeValue>
1220     : $attrs->{$atqname}->{value};
1221     if (not $attrs->{$atqname}->{is_default} and
1222     $attrs->{$atqname}->{def}) {
1223 wakaba 1.9 my $dt = $attrs->{$atqname}->{def}-><AG::ATDef.declaredType>;
1224     if ({
1225     <C::ATDef.ID_ATTR> => true,
1226     <C::ATDef.IDREF_ATTR> => true,
1227     <C::ATDef.IDREFS_ATTR> => true,
1228     <C::ATDef.ENTITY_ATTR> => true,
1229     <C::ATDef.ENTITIES_ATTR> => true,
1230     <C::ATDef.NMTOKEN_ATTR> => true,
1231     <C::ATDef.NMTOKENS_ATTR> => true,
1232     <C::ATDef.NOTATION_ATTR> => true,
1233     <C::ATDef.ENUMERATION_ATTR> => true,
1234     }->{$dt}) {
1235     ## Tokenization (XML 1 3.3.3)
1236 wakaba 1.26 for ($nsuri) {
1237 wakaba 1.9 s/^\x20+//;
1238     s/\x20+\z//;
1239     s/\x20+/ /g;
1240     }
1241     }
1242     }
1243 wakaba 1.26 if ($lname eq 'xml' and
1244     $nsuri ne <Q::xml:>) {
1245     my $location;
1246     __CODE{xp|get-location-from-token::
1247     $token => $token,
1248     $result => $location,
1249     }__;
1250     my $continue = __c|ERROR{xp|nsc-reserved-prefix-xml::
1251     c|location => {$location},
1252     xp|token => {$token},
1253     infoset|prefix => {$lname},
1254     infoset|namespaceName => {$nsuri},
1255     }__;
1256     unless ($continue) {
1257     __EXCEPTION{DOMLS|PARSE_ERR}__;
1258     }
1259     } elsif ($lname eq 'xmlns') {
1260     my $location;
1261     __CODE{xp|get-location-from-token::
1262     $token => $token,
1263     $result => $location,
1264     }__;
1265     my $continue = __c|ERROR{xp|nsc-reserved-prefix-xmlns::
1266     c|location => {$location},
1267     xp|token => {$token},
1268     infoset|prefix => {$lname},
1269     infoset|namespaceName => {$nsuri},
1270     }__;
1271     unless ($continue) {
1272     __EXCEPTION{DOMLS|PARSE_ERR}__;
1273     }
1274     }
1275     if ($nsuri eq '') {
1276     if ($self->{xml_version} eq '1.0') {
1277     my $location;
1278     __CODE{xp|get-location-from-token::
1279     $token => $token,
1280     $result => $location,
1281     }__;
1282     my $continue = __c|ERROR{xp|nswf-empty-namespace-name::
1283     c|location => {$location},
1284     xp|token => {$token},
1285     infoset|namespaceName => {$nsuri},
1286     infoset|prefix => {$lname},
1287     }__;
1288     unless ($continue) {
1289     __EXCEPTION{DOMLS|PARSE_ERR}__;
1290     }
1291     }
1292     } elsif ($nsuri eq <Q::xml:> and
1293     $lname ne 'xml') {
1294     my $location;
1295     __CODE{xp|get-location-from-token::
1296     $token => $token,
1297     $result => $location,
1298     }__;
1299     my $continue = __c|ERROR{
1300     xp|nsc-reserved-namespace-name-xml::
1301     c|location => {$location},
1302     xp|token => {$token},
1303     infoset|prefix => {$lname},
1304     infoset|namespaceName => {$nsuri},
1305     }__;
1306     unless ($continue) {
1307     __EXCEPTION{DOMLS|PARSE_ERR}__;
1308     }
1309     } elsif ($nsuri eq <Q::xmlns:>) {
1310     my $location;
1311     __CODE{xp|get-location-from-token::
1312     $token => $token,
1313     $result => $location,
1314     }__;
1315     my $continue = __c|ERROR{
1316     xp|nsc-reserved-namespace-name-xmlns::
1317     c|location => {$location},
1318     xp|token => {$token},
1319     infoset|prefix => {$lname},
1320     infoset|namespaceName => {$nsuri},
1321     }__;
1322     unless ($continue) {
1323     __EXCEPTION{DOMLS|PARSE_ERR}__;
1324     }
1325     }
1326     $ns->{$lname} = $nsuri;
1327 wakaba 1.1 delete $ns->{$lname} unless length $ns->{$lname};
1328     }
1329     $gattr{$pfx}->{$lname} = $attrs->{$atqname};
1330     } else { ## Local attribute
1331     if ($pfx eq 'xmlns') {
1332 wakaba 1.26 $ns->{''} = $attrs->{xmlns}->{is_default}
1333     ? $attrs->{xmlns}->{def}-><AG::Node.nodeValue>
1334     : $attrs->{xmlns}->{value};
1335     if (not $attrs->{$atqname}->{is_default} and
1336     $attrs->{$atqname}->{def}) {
1337 wakaba 1.9 my $dt = $attrs->{$atqname}->{def}-><AG::ATDef.declaredType>;
1338     if ({
1339     <C::ATDef.ID_ATTR> => true,
1340     <C::ATDef.IDREF_ATTR> => true,
1341     <C::ATDef.IDREFS_ATTR> => true,
1342     <C::ATDef.ENTITY_ATTR> => true,
1343     <C::ATDef.ENTITIES_ATTR> => true,
1344     <C::ATDef.NMTOKEN_ATTR> => true,
1345     <C::ATDef.NMTOKENS_ATTR> => true,
1346     <C::ATDef.NOTATION_ATTR> => true,
1347     <C::ATDef.ENUMERATION_ATTR> => true,
1348     }->{$dt}) {
1349     ## Tokenization (XML 1 3.3.3)
1350     for ($ns->{''}) {
1351     s/^\x20+//;
1352     s/\x20+\z//;
1353     s/\x20+/ /g;
1354     }
1355     }
1356     }
1357 wakaba 1.26 unless ($ns->{''}) {
1358     delete $ns->{''};
1359     } elsif ($ns->{''} eq <Q::xml:>) {
1360     my $location;
1361     __CODE{xp|get-location-from-token::
1362     $token => $token,
1363     $result => $location,
1364     }__;
1365     my $continue = __c|ERROR{
1366     xp|nsc-reserved-namespace-name-xml::
1367     c|location => {$location},
1368     xp|token => {$token},
1369     infoset|prefix => {null},
1370     infoset|namespaceName => {<Q::xml:>},
1371     }__;
1372     unless ($continue) {
1373     __EXCEPTION{DOMLS|PARSE_ERR}__;
1374     }
1375     } elsif ($ns->{''} eq <Q::xmlns:>) {
1376     my $location;
1377     __CODE{xp|get-location-from-token::
1378     $token => $token,
1379     $result => $location,
1380     }__;
1381     my $continue = __c|ERROR{
1382     xp|nsc-reserved-namespace-name-xmlns::
1383     c|location => {$location},
1384     xp|token => {$token},
1385     infoset|prefix => {null},
1386     infoset|namespaceName => {<Q::xmlns:>},
1387     }__;
1388     unless ($continue) {
1389     __EXCEPTION{DOMLS|PARSE_ERR}__;
1390     }
1391     }
1392 wakaba 1.1 } else {
1393     $lattr{$pfx} = $attrs->{$atqname};
1394     }
1395     }
1396     }
1397    
1398     my ($pfx, $lname) = split /:/, $type;
1399     my $nsuri;
1400     if (defined $lname) { ## Prefixed namespace
1401     if (defined $ns->{$pfx}) {
1402     $nsuri = $ns->{$pfx};
1403     } else {
1404 wakaba 1.26 my $location;
1405     __CODE{xp|get-location-from-token::
1406     $token => $token,
1407     $result => $location,
1408     }__;
1409     my $continue = __c|ERROR{xp|nsc-prefix-declared::
1410     c|location => {$location},
1411     xp|token => {$token},
1412     infoset|prefix => {$pfx},
1413     xp|name => {$type},
1414     }__;
1415     unless ($continue) {
1416     __EXCEPTION{DOMLS|PARSE_ERR}__;
1417     }
1418 wakaba 1.1 }
1419     } else { ## Default namespace
1420     $nsuri = $ns->{''};
1421     }
1422    
1423     $el = $doc-><M::Document.createElementNS>
1424     ($nsuri, $type);
1425    
1426     if ($attrs->{xmlns}) {
1427     my $attr = $doc-><M::Document.createAttributeNS>
1428     (<Q::xmlns:>, 'xmlns');
1429     for (@{$attrs->{xmlns}->{nodes}}) {
1430     $attr-><M::Node.appendChild> ($_);
1431     }
1432 wakaba 1.9 if ($attrs->{xmlns}->{def}) {
1433     __CODE{t|setAttrType::
1434     $attr => $attr,
1435     $type => {$attrs->{xmlns}->{def}-><AG::ATDef.declaredType>},
1436     }__;
1437     }
1438 wakaba 1.1 $el-><M::Element.setAttributeNodeNS> ($attr);
1439 wakaba 1.26 $attr-><AS::t|Attr.specified> (false)
1440     if $attrs->{xmlns}->{is_default};
1441 wakaba 1.1 }
1442    
1443     for my $lname (keys %lattr) {
1444     my $attr = $doc-><M::Document.createAttributeNS>
1445     (null, $lname);
1446     for (@{$lattr{$lname}->{nodes}}) {
1447     $attr-><M::Node.appendChild> ($_);
1448     }
1449 wakaba 1.9 if ($attrs->{$lname}->{def}) {
1450     __CODE{t|setAttrType::
1451     $attr => $attr,
1452     $type => {$attrs->{$lname}->{def}-><AG::ATDef.declaredType>},
1453     }__;
1454     }
1455 wakaba 1.1 $el-><M::Element.setAttributeNodeNS> ($attr);
1456 wakaba 1.26 $attr-><AS::t|Attr.specified> (false)
1457     if $attrs->{$lname}->{is_default};
1458 wakaba 1.1 }
1459    
1460     for my $pfx (keys %gattr) {
1461 wakaba 1.26 LN: for my $lname (keys %{$gattr{$pfx}}) {
1462     my $name = $pfx.':'.$lname;
1463     unless (defined $ns->{$pfx}) {
1464     my $location;
1465     __CODE{xp|get-location-from-token::
1466     $token => $token,
1467     $result => $location,
1468     }__;
1469     my $continue = __c|ERROR{xp|nsc-prefix-declared::
1470     c|location => {$location},
1471     xp|token => {$token},
1472     xp|name => {$name},
1473     infoset|prefix => {$pfx},
1474     }__;
1475     unless ($continue) {
1476     __EXCEPTION{DOMLS|PARSE_ERR}__;
1477     }
1478     }
1479     my $attr = $el-><M::Element.getAttributeNodeNS>
1480     ($ns->{$pfx}, $lname);
1481     if ($attr) {
1482     my $another_name = $attr-><AG::Node.nodeName>;
1483     if ($name ne $another_name) {
1484     my $location;
1485     __CODE{xp|get-location-from-token::
1486     $token => $token,
1487     $result => $location,
1488     }__;
1489     my $continue = __c|ERROR{
1490     xp|nswf-unique-att-spec-expanded-name::
1491     c|location => {$location},
1492     xp|token => {$token},
1493     xp|another-attribute-name => {$another_name},
1494     xp|name => {$name},
1495     infoset|namespaceName => {$ns->{$pfx}},
1496     infoset|localName => {$lname},
1497     }__;
1498     unless ($continue) {
1499     __EXCEPTION{DOMLS|PARSE_ERR}__;
1500     }
1501     unless ($attr-><AG::t|Attr.specified>) {
1502     ## It is a default attribute
1503     $attr = $doc-><M::Document.createAttributeNS>
1504     ($ns->{$pfx}, $name);
1505     } else {
1506     ## It is a specified attribute
1507     next LN;
1508     }
1509     } else { ## There is default attribute
1510     $attr = $doc-><M::Document.createAttributeNS>
1511     ($ns->{$pfx}, $name);
1512     }
1513     } else {
1514     $attr = $doc-><M::Document.createAttributeNS>
1515     ($ns->{$pfx}, $name);
1516     }
1517 wakaba 1.1 for (@{$gattr{$pfx}->{$lname}->{nodes}}) {
1518     $attr-><M::Node.appendChild> ($_);
1519     }
1520 wakaba 1.26 if ($gattr{$pfx}->{$lname}->{def}) {
1521 wakaba 1.9 __CODE{t|setAttrType::
1522     $attr => $attr,
1523 wakaba 1.26 $type => {$gattr{$pfx}->{$lname}
1524 wakaba 1.9 ->{def}-><AG::ATDef.declaredType>},
1525     }__;
1526     }
1527 wakaba 1.1 $el-><M::Element.setAttributeNodeNS> ($attr);
1528 wakaba 1.26 $attr-><AS::t|Attr.specified> (false)
1529     if $gattr{$pfx}->{$lname}->{is_default};
1530     } # PFX
1531 wakaba 1.1 }
1532    
1533     $node-><M::Node.appendChild> ($el);
1534     }
1535    
1536     ~ (TAGC) {
1537     lang:Perl {
1538     push @{$nodes}, $node;
1539     $node = $el;
1540     }
1541     ?lexmode ElementContent;
1542 wakaba 1.6 } (NESTC) {
1543     my $is_docel;
1544 wakaba 1.1 lang:Perl {
1545     $ns = pop @{$nses};
1546     $type = pop @{$types};
1547 wakaba 1.6 $is_docel = (@{$types} == 0);
1548     }
1549    
1550     if-true ($is_docel) {
1551     return;
1552     }
1553    
1554     ~ (TAGC) {
1555     ?lexmode ElementContent;
1556     } else {
1557     ?lexmode ElementContent;
1558 wakaba 1.1 }
1559     } else {
1560     ?lexmode ElementContent;
1561     }
1562     } else {
1563     ?lexmode ElementContent;
1564     }
1565    
1566     } (ETAGO) {
1567     // End tag
1568    
1569     ?lexmode 'EndTag';
1570    
1571     my $is_docel;
1572    
1573     ~ (Name) {
1574 wakaba 1.26 // No NCName & QName check (it must match to start-tag)
1575 wakaba 1.3 lang:Perl ($name => $token.value) : has-error {
1576 wakaba 1.1 if ($name eq $type) {
1577     $type = pop @{$types};
1578     if ($type eq '') {
1579     $is_docel = true;
1580     }
1581     $node = pop @{$nodes};
1582     $ns = pop @{$nses};
1583     } else {
1584 wakaba 1.3 my $location;
1585     __CODE{xp|get-location-from-token::
1586     $token => $token,
1587     $result => $location,
1588     }__;
1589     my $continue = __DOMCore:ERROR{xp|wf-element-type-match::
1590     DOMCore:location => {$location},
1591     xp|token => {$token},
1592     xp|expected-element-type => {$type},
1593     xp|actual-element-type => {$name},
1594     xp|node => {$node},
1595     }__;
1596     unless ($continue) {
1597     __EXCEPTION{DOMLS|PARSE_ERR}__;
1598     }
1599 wakaba 1.1 }
1600     }
1601     }
1602    
1603     ~? (S) { }
1604    
1605     if-true ($is_docel) {
1606 wakaba 1.3 lang:Perl : has-error {
1607 wakaba 1.1 if (@{$types}) {
1608 wakaba 1.3 my $location;
1609     __CODE{xp|get-location-from-token::
1610     $token => $token,
1611     $result => $location,
1612     }__;
1613     for my $type (reverse @{$types}) {
1614     my $continue = __DOMCore:ERROR{xp|wf-no-end-tag::
1615     DOMCore:location => {$location},
1616     xp|token => {$token},
1617     xp|expected-element-type => {$type},
1618     xp|node => {$node},
1619     }__;
1620     unless ($continue) {
1621     __EXCEPTION{DOMLS|PARSE_ERR}__;
1622     }
1623     $node = shift @{$nodes};
1624     }
1625 wakaba 1.1 }
1626     }
1627     return;
1628     }
1629    
1630     ~ (TAGC) {
1631     ?lexmode ElementContent;
1632     } else {
1633     ?lexmode 'ElementContent';
1634     }
1635    
1636     } (HCRO) {
1637     &_HexadecimalCharacterReference_
1638     ($doc => $doc, $parent => $node);
1639    
1640     ~ (REFC) {
1641     ?lexmode 'ElementContent';
1642     } else {
1643     ?lexmode ElementContent;
1644     }
1645     } (CRO) {
1646     &_NumericCharacterReference_
1647     ($doc => $doc, $parent => $node);
1648    
1649     ~ (REFC) {
1650     ?lexmode 'ElementContent';
1651     } else {
1652     ?lexmode ElementContent;
1653     }
1654     } (ERO) {
1655 wakaba 1.6 &_GeneralEntityReferenceEC
1656     ($doc => $doc, $parent => $node, $ns => $ns);
1657 wakaba 1.1 } (CDO) {
1658     &_CommentDeclaration_ ($doc => $doc, $parent => $node);
1659    
1660     ~ (MDC) {
1661     ?lexmode ElementContent;
1662     } else {
1663     ?lexmode ElementContent;
1664     }
1665     } (CDSO) {
1666     &_CDATASection_ ($doc => $doc, $parent => $node);
1667    
1668     ~ (MSE) {
1669     ?lexmode 'ElementContent';
1670     } else {
1671     ?lexmode ElementContent;
1672     }
1673     } (PIO) {
1674     &_ProcessingInstruction_ ($doc => $doc, $parent => $node);
1675    
1676     ~ (PIC) {
1677     ?lexmode 'ElementContent';
1678     } else {
1679     ?lexmode ElementContent;
1680     }
1681     }
1682 wakaba 1.3
1683     ~ (#NONE) { }
1684 wakaba 1.1 } // Element_
1685 wakaba 1.11
1686     /*
1687     content := [CharData]
1688     *((element / Reference / CDSect / PI / Comment) [CharData])
1689     */
1690     rule content ($parent, $ns) {
1691     // ?lexmode ElementContent;
1692    
1693     my $doc;
1694     lang:Perl {
1695     $doc = $self->{doc};
1696     }
1697    
1698     ~* (CharData) {
1699     lang:Perl ($data => $token.value) {
1700     $parent-><M::Node.appendChild>
1701     ($self->{doc}-><M::Document.createTextNode> ($data));
1702     }
1703     } (STAGO) {
1704     &Element_ ($doc => $doc, $parent => $parent, $ns => $ns)
1705     : unshift-current-token;
1706     ~ (TAGC) {
1707     ?lexmode ElementContent;
1708     } else {
1709     ?lexmode ElementContent;
1710     }
1711     } (HCRO) {
1712     &_HexadecimalCharacterReference_
1713     ($doc => $doc, $parent => $parent);
1714    
1715     ~ (REFC) {
1716     ?lexmode 'ElementContent';
1717     } else {
1718     ?lexmode ElementContent;
1719     }
1720     } (CRO) {
1721     &_NumericCharacterReference_
1722     ($doc => $doc, $parent => $parent);
1723    
1724     ~ (REFC) {
1725     ?lexmode 'ElementContent';
1726     } else {
1727     ?lexmode ElementContent;
1728     }
1729     } (ERO) {
1730     &_GeneralEntityReferenceEC
1731     ($doc => $doc, $parent => $parent, $ns => $ns);
1732     } (CDO) {
1733     &_CommentDeclaration_ ($doc => $doc, $parent => $parent);
1734    
1735     ~ (MDC) {
1736     ?lexmode ElementContent;
1737     } else {
1738     ?lexmode ElementContent;
1739     }
1740     } (CDSO) {
1741     &_CDATASection_ ($doc => $doc, $parent => $parent);
1742    
1743     ~ (MSE) {
1744     ?lexmode 'ElementContent';
1745     } else {
1746     ?lexmode ElementContent;
1747     }
1748     } (PIO) {
1749     &_ProcessingInstruction_ ($doc => $doc, $parent => $parent);
1750    
1751     ~ (PIC) {
1752     ?lexmode 'ElementContent';
1753     } else {
1754     ?lexmode ElementContent;
1755     }
1756     }
1757     } // content
1758 wakaba 1.1
1759     rule AttributeSpecificationList ($doc, $attrs)
1760     : standalone
1761     {
1762     ?lexmode 'StartTag';
1763    
1764     my $i;
1765     lang:Perl {
1766     $i = 0;
1767     }
1768    
1769     ~* (Name) {
1770     my $atqname;
1771 wakaba 1.26 lang:Perl ($name => $token.value) : has-error {
1772     __CODE{checkQName:: $name => $name}__;
1773 wakaba 1.1 $atqname = $name;
1774     }
1775    
1776     my $vals;
1777 wakaba 1.18 lang:Perl : has-error {
1778 wakaba 1.1 if ($attrs->{$atqname}) {
1779 wakaba 1.3 my $location;
1780     __CODE{xp|get-location-from-token::
1781     $token => $token,
1782     $result => $location,
1783     }__;
1784     my $continue = __DOMCore:ERROR{xp|wf-unique-att-spec::
1785     DOMCore:location => {$location},
1786     xp|token => {$token},
1787     xp|name => {$atqname},
1788     }__;
1789     unless ($continue) {
1790     __EXCEPTION{DOMLS|PARSE_ERR}__;
1791     }
1792 wakaba 1.1 }
1793    
1794     $vals = $attrs->{$atqname} = {
1795     nodes => [],
1796     value => '',
1797     index => $i++,
1798     };
1799     }
1800 wakaba 1.3
1801     ~? (S) { }
1802     ~ (VI) { }
1803     ~? (S) { }
1804 wakaba 1.1
1805     ~ (LIT) {
1806     &_AttributeValueSpecification_
1807     ($doc => $doc, $vals => $vals);
1808    
1809     ~ (LIT) {
1810     ?lexmode StartTag;
1811     } else {
1812     ?lexmode StartTag;
1813     }
1814     } (LITA) {
1815     &_AttributeValueSpecificationA_
1816     ($doc => $doc, $vals => $vals);
1817    
1818     ~ (LITA) {
1819     ?lexmode StartTag;
1820     } else {
1821     ?lexmode StartTag;
1822     }
1823     }
1824     } (S) : separator : terminator? { }
1825     } // AttributeSpecificationList
1826    
1827     rule _AttributeValueSpecification_ ($doc, $vals) {
1828     // ~ (LIT) { }
1829     ?lexmode 'AttributeValueLiteral';
1830    
1831     ~* (STRING) {
1832     lang:Perl ($value => $token.value) {
1833     $value =~ s/[\x09\x0A\x0D]/ /g;
1834     my $text = $doc-><M::Document.createTextNode> ($value);
1835     push @{$vals->{nodes}}, $text;
1836     $vals->{value} .= $value;
1837     }
1838     } (HCRO) {
1839     &_HexadecimalCharacterReferenceV_
1840     ($doc => $doc, $vals => $vals);
1841    
1842     ~ (REFC) {
1843     ?lexmode AttributeValueLiteral;
1844     } else {
1845     ?lexmode AttributeValueLiteral;
1846     }
1847     } (CRO) {
1848     &_NumericCharacterReferenceV_
1849     ($doc => $doc, $vals => $vals);
1850    
1851     ~ (REFC) {
1852     ?lexmode AttributeValueLiteral;
1853     } else {
1854     ?lexmode AttributeValueLiteral;
1855     }
1856     } (ERO) {
1857     // TODO: Attribute value normalization
1858     &_GeneralEntityReferenceV_
1859     ($doc => $doc, $vals => $vals);
1860    
1861     ~ (REFC) {
1862     ?lexmode AttributeValueLiteral;
1863     } else {
1864     ?lexmode AttributeValueLiteral;
1865     }
1866     }
1867    
1868     // ~ (LIT) { } (LITA) { }
1869     } // _AttributeValueSpecification_
1870    
1871     rule _AttributeValueSpecificationA_ ($doc, $vals) {
1872     // ~ (LITA) { }
1873     ?lexmode 'AttributeValueLiteralA';
1874    
1875     ~* (STRING) {
1876     lang:Perl ($value => $token.value) {
1877     $value =~ s/[\x09\x0A\x0D]/ /g;
1878     my $text = $doc-><M::Document.createTextNode> ($value);
1879     push @{$vals->{nodes}}, $text;
1880     $vals->{value} .= $value;
1881     }
1882     } (HCRO) {
1883     &_HexadecimalCharacterReferenceV_
1884     ($doc => $doc, $vals => $vals);
1885    
1886     ~ (REFC) {
1887     ?lexmode AttributeValueLiteralA;
1888     } else {
1889     ?lexmode AttributeValueLiteralA;
1890     }
1891     } (CRO) {
1892     &_NumericCharacterReferenceV_
1893     ($doc => $doc, $vals => $vals);
1894    
1895     ~ (REFC) {
1896     ?lexmode AttributeValueLiteralA;
1897     } else {
1898     ?lexmode AttributeValueLiteralA;
1899     }
1900     } (ERO) {
1901     // TODO: Attribute value normalization
1902     &_GeneralEntityReferenceV_
1903     ($doc => $doc, $vals => $vals);
1904    
1905     ~ (REFC) {
1906     ?lexmode AttributeValueLiteralA;
1907     } else {
1908     ?lexmode AttributeValueLiteralA;
1909     }
1910     }
1911    
1912     // ~ (LITA) { }
1913     } // _AttributeValueSpecificationA_
1914    
1915     /*
1916 wakaba 1.11 Parsing replacement text of an entity referenced in
1917     an attribute value specification.
1918     */
1919     rule AttributeValueLiteralE_ ($parent, $vals)
1920     : recursive
1921     {
1922     // ?lexmode AttributeValueLiteralE;
1923    
1924     ~* (STRING) {
1925     lang:Perl ($value => $token.value) {
1926     $value =~ s/[\x09\x0A\x0D]/ /g;
1927     my $text = $self->{doc}-><M::Document.createTextNode> ($value);
1928     $parent-><M::Node.appendChild> ($text);
1929     $vals->{value} .= $value;
1930     }
1931     } (HCRO) {
1932     &_HexadecimalCharacterReferenceAE_
1933     ($parent => $parent, $vals => $vals);
1934    
1935     ~ (REFC) {
1936     ?lexmode AttributeValueLiteralE;
1937     } else {
1938     ?lexmode AttributeValueLiteralE;
1939     }
1940     } (CRO) {
1941     &_NumericCharacterReferenceAE_
1942     ($parent => $parent, $vals => $vals);
1943    
1944     ~ (REFC) {
1945     ?lexmode AttributeValueLiteralE;
1946     } else {
1947     ?lexmode AttributeValueLiteralE;
1948     }
1949     } (ERO) {
1950     &_GeneralEntityReferenceAE_ ($parent => $parent, $vals => $vals);
1951    
1952     ~ (REFC) {
1953     ?lexmode AttributeValueLiteralE;
1954     } else {
1955     ?lexmode AttributeValueLiteralE;
1956     }
1957 wakaba 1.18 } (#INVALID == '<') {
1958     lang:Perl : has-error {
1959     my $location;
1960     __CODE{xp|get-location-from-token::
1961     $token => $token,
1962     $result => $location,
1963     }__;
1964     my $continue = __DOMCore:ERROR{xp|wf-no-lt-in-attribute-values::
1965     c|location => {$location},
1966     xp|token => {$token},
1967     }__;
1968     unless ($continue) {
1969     __EXCEPTION{DOMLS|PARSE_ERR}__;
1970     }
1971    
1972     my $text = $self->{doc}-><M::Document.createTextNode> ('<');
1973     $parent-><M::Node.appendChild> ($text);
1974     $vals->{value} .= '<';
1975     }
1976 wakaba 1.11 }
1977    
1978     // ~ (#EOF) { }
1979     } // AttributeValueLiteralE_
1980    
1981     /*
1982 wakaba 1.1 CDATA Section Content Parsing Mode
1983     */
1984     rule _CDATASection_ ($doc, $parent) {
1985     ?lexmode 'CDATASectionContent';
1986    
1987     my $cdata;
1988    
1989 wakaba 1.2 ~? (CData) {
1990 wakaba 1.1 lang:Perl ($data => $token.value) {
1991     $cdata = $data;
1992     }
1993     } else {
1994     lang:Perl {
1995     $cdata = '';
1996     }
1997     }
1998    
1999     lang:Perl {
2000     my $cdsect = $doc-><M::Document.createCDATASection>
2001     ($cdata);
2002     $parent-><M::Node.appendChild> ($cdsect);
2003     }
2004    
2005     // ~ (MSE) { }
2006     } // _CDATASection_
2007    
2008     rule _NumericCharacterReference_ ($doc, $parent) {
2009     ?lexmode 'NumericCharacterReference';
2010    
2011     ~ (NUMBER) {
2012 wakaba 1.3 lang:Perl ($num => $token.value) : has-error {
2013     $num += 0;
2014     unless (
2015     ($self->{xml_version} eq '1.0' and
2016     ((0x0020 <= $num and $num <= 0xD7FF) or
2017     (0xE000 <= $num and $num <= 0xFFFD) or
2018     (0x10000 <= $num and $num <= 0x10FFFF) or
2019     $num == 0x9 or $num == 0xA or $num == 0xD)) or
2020     ($self->{xml_version} eq '1.1' and
2021     ((0x0001 <= $num and $num <= 0xD7FF) or
2022     (0xE000 <= $num and $num <= 0xFFFD) or
2023     (0x10000 <= $num and $num <= 0x10FFFF)))
2024     ) {
2025     my $location;
2026     __CODE{xp|get-location-from-token::
2027     $token => $token,
2028     $result => $location,
2029     }__;
2030     my $continue = __DOMCore:ERROR{xp|wf-legal-character::
2031     DOMCore:location => {$location},
2032     xp|token => {$token},
2033     xp|character-number => {$num},
2034     xp|parent => {$parent},
2035     }__;
2036     unless ($continue) {
2037     __EXCEPTION{DOMLS|PARSE_ERR}__;
2038     }
2039     }
2040     my $ncr = $doc-><M::Document.createTextNode> (chr $num);
2041 wakaba 1.1 $parent-><M::Node.appendChild> ($ncr);
2042     }
2043     }
2044    
2045     // ~ (REFC) { }
2046     } // _NumericCharacterReference_
2047    
2048     rule _NumericCharacterReferenceV_ ($doc, $vals) {
2049     ?lexmode 'NumericCharacterReference';
2050    
2051     ~ (NUMBER) {
2052 wakaba 1.3 lang:Perl ($num => $token.value) : has-error {
2053     $num += 0;
2054     unless (
2055     ($self->{xml_version} eq '1.0' and
2056     ((0x0020 <= $num and $num <= 0xD7FF) or
2057     (0xE000 <= $num and $num <= 0xFFFD) or
2058     (0x10000 <= $num and $num <= 0x10FFFF) or
2059     $num == 0x9 or $num == 0xA or $num == 0xD)) or
2060     ($self->{xml_version} eq '1.1' and
2061     ((0x0001 <= $num and $num <= 0xD7FF) or
2062     (0xE000 <= $num and $num <= 0xFFFD) or
2063     (0x10000 <= $num and $num <= 0x10FFFF)))
2064     ) {
2065     my $location;
2066     __CODE{xp|get-location-from-token::
2067     $token => $token,
2068     $result => $location,
2069     }__;
2070     my $continue = __DOMCore:ERROR{xp|wf-legal-character::
2071     DOMCore:location => {$location},
2072     xp|token => {$token},
2073     xp|character-number => {$num},
2074     }__;
2075     unless ($continue) {
2076     __EXCEPTION{DOMLS|PARSE_ERR}__;
2077     }
2078     }
2079 wakaba 1.1 my $ncr = $doc-><M::Document.createTextNode>
2080 wakaba 1.9 (my $char = chr $num);
2081 wakaba 1.1 push @{$vals->{nodes}}, $ncr;
2082     $vals->{value} .= $char;
2083     }
2084     }
2085    
2086     // ~ (REFC) { }
2087     } // _NumericCharacterReferenceV_
2088    
2089 wakaba 1.11 /*
2090     Numeric character reference in the replacement text
2091     of the entity referenced in an attribute value specification
2092     */
2093     rule _NumericCharacterReferenceAE_ ($parent, $vals)
2094     {
2095     ?lexmode NumericCharacterReference;
2096    
2097     ~ (NUMBER) {
2098     lang:Perl ($num => $token.value) : has-error {
2099     $num += 0;
2100     unless (
2101     ($self->{xml_version} eq '1.0' and
2102     ((0x0020 <= $num and $num <= 0xD7FF) or
2103     (0xE000 <= $num and $num <= 0xFFFD) or
2104     (0x10000 <= $num and $num <= 0x10FFFF) or
2105     $num == 0x9 or $num == 0xA or $num == 0xD)) or
2106     ($self->{xml_version} eq '1.1' and
2107     ((0x0001 <= $num and $num <= 0xD7FF) or
2108     (0xE000 <= $num and $num <= 0xFFFD) or
2109     (0x10000 <= $num and $num <= 0x10FFFF)))
2110     ) {
2111     my $location;
2112     __CODE{xp|get-location-from-token::
2113     $token => $token,
2114     $result => $location,
2115     }__;
2116     my $continue = __DOMCore:ERROR{xp|wf-legal-character::
2117     DOMCore:location => {$location},
2118     xp|token => {$token},
2119     xp|character-number => {$num},
2120     }__;
2121     unless ($continue) {
2122     __EXCEPTION{DOMLS|PARSE_ERR}__;
2123     }
2124     }
2125     my $ncr = $self->{doc}-><M::Document.createTextNode>
2126     (my $char = chr $num);
2127     $parent-><M::Node.appendChild> ($ncr);
2128     $vals->{value} .= $char;
2129     }
2130     }
2131    
2132     // ~ (REFC) { }
2133     } // _NumericCharacterReferenceAE_
2134    
2135     rule _NumericCharacterReferenceEV_ ($vals)
2136     {
2137     ?lexmode 'NumericCharacterReference';
2138    
2139     ~ (NUMBER) {
2140     lang:Perl ($num => $token.value) : has-error {
2141     $num += 0;
2142     unless (
2143     ($self->{xml_version} eq '1.0' and
2144     ((0x0020 <= $num and $num <= 0xD7FF) or
2145     (0xE000 <= $num and $num <= 0xFFFD) or
2146     (0x10000 <= $num and $num <= 0x10FFFF) or
2147     $num == 0x9 or $num == 0xA or $num == 0xD)) or
2148     ($self->{xml_version} eq '1.1' and
2149     ((0x0001 <= $num and $num <= 0xD7FF) or
2150     (0xE000 <= $num and $num <= 0xFFFD) or
2151     (0x10000 <= $num and $num <= 0x10FFFF)))
2152     ) {
2153     my $location;
2154     __CODE{xp|get-location-from-token::
2155     $token => $token,
2156     $result => $location,
2157     }__;
2158     my $continue = __DOMCore:ERROR{xp|wf-legal-character::
2159     DOMCore:location => {$location},
2160     xp|token => {$token},
2161     xp|character-number => {$num},
2162     }__;
2163     unless ($continue) {
2164     __EXCEPTION{DOMLS|PARSE_ERR}__;
2165     }
2166     }
2167     push @{$vals}, chr $num;
2168     }
2169     }
2170    
2171     // ~ (REFC) { }
2172     } // _NumericCharacterReferenceEV_
2173    
2174 wakaba 1.1 rule _HexadecimalCharacterReference_ ($doc, $parent) {
2175     ?lexmode 'HexadecimalCharacterReference';
2176    
2177     ~ (Hex) {
2178 wakaba 1.9 lang:Perl ($v => $token.value) : has-error {
2179     my $num = hex $v;
2180 wakaba 1.3 unless (
2181     ($self->{xml_version} eq '1.0' and
2182     ((0x0020 <= $num and $num <= 0xD7FF) or
2183     (0xE000 <= $num and $num <= 0xFFFD) or
2184     (0x10000 <= $num and $num <= 0x10FFFF) or
2185     $num == 0x9 or $num == 0xA or $num == 0xD)) or
2186     ($self->{xml_version} eq '1.1' and
2187     ((0x0001 <= $num and $num <= 0xD7FF) or
2188     (0xE000 <= $num and $num <= 0xFFFD) or
2189     (0x10000 <= $num and $num <= 0x10FFFF)))
2190     ) {
2191     my $location;
2192     __CODE{xp|get-location-from-token::
2193     $token => $token,
2194     $result => $location,
2195     }__;
2196     my $continue = __DOMCore:ERROR{xp|wf-legal-character::
2197     DOMCore:location => {$location},
2198     xp|token => {$token},
2199     xp|character-number => {$num},
2200     xp|parent => {$parent},
2201     }__;
2202     unless ($continue) {
2203     __EXCEPTION{DOMLS|PARSE_ERR}__;
2204     }
2205     }
2206 wakaba 1.1 my $ncr = $doc-><M::Document.createTextNode>
2207 wakaba 1.9 (chr $num);
2208 wakaba 1.1 $parent-><M::Node.appendChild> ($ncr);
2209     }
2210     }
2211    
2212     // ~ (REFC) { }
2213     } // _HexadecimalCharacterReference_
2214    
2215 wakaba 1.3 rule _HexadecimalCharacterReferenceV_ ($doc, $vals) {
2216 wakaba 1.1 ?lexmode 'HexadecimalCharacterReference';
2217    
2218     ~ (Hex) {
2219 wakaba 1.9 lang:Perl ($v => $token.value) : has-error {
2220     my $num = hex $v;
2221 wakaba 1.3 unless (
2222     ($self->{xml_version} eq '1.0' and
2223     ((0x0020 <= $num and $num <= 0xD7FF) or
2224     (0xE000 <= $num and $num <= 0xFFFD) or
2225     (0x10000 <= $num and $num <= 0x10FFFF) or
2226     $num == 0x9 or $num == 0xA or $num == 0xD)) or
2227     ($self->{xml_version} eq '1.1' and
2228     ((0x0001 <= $num and $num <= 0xD7FF) or
2229     (0xE000 <= $num and $num <= 0xFFFD) or
2230     (0x10000 <= $num and $num <= 0x10FFFF)))
2231     ) {
2232     my $location;
2233     __CODE{xp|get-location-from-token::
2234     $token => $token,
2235     $result => $location,
2236     }__;
2237     my $continue = __DOMCore:ERROR{xp|wf-legal-character::
2238     DOMCore:location => {$location},
2239     xp|token => {$token},
2240     xp|character-number => {$num},
2241     }__;
2242     unless ($continue) {
2243     __EXCEPTION{DOMLS|PARSE_ERR}__;
2244     }
2245     }
2246 wakaba 1.1 my $ncr = $doc-><M::Document.createTextNode>
2247 wakaba 1.9 (my $char = chr $num);
2248 wakaba 1.1 push @{$vals->{nodes}}, $ncr;
2249     $vals->{value} .= $char;
2250     }
2251     }
2252    
2253     // ~ (REFC) { }
2254 wakaba 1.11 } // _HexadecimalCharacterReferenceV_
2255    
2256     /*
2257     Hexadecimal character reference in the replacement text
2258     of the entity referenced in an attribute value literal
2259     */
2260     rule _HexadecimalCharacterReferenceAE_ ($parent, $vals)
2261     {
2262     ?lexmode HexadecimalCharacterReference;
2263    
2264     ~ (Hex) {
2265     lang:Perl ($v => $token.value) : has-error {
2266     my $num = hex $v;
2267     unless (
2268     ($self->{xml_version} eq '1.0' and
2269     ((0x0020 <= $num and $num <= 0xD7FF) or
2270     (0xE000 <= $num and $num <= 0xFFFD) or
2271     (0x10000 <= $num and $num <= 0x10FFFF) or
2272     $num == 0x9 or $num == 0xA or $num == 0xD)) or
2273     ($self->{xml_version} eq '1.1' and
2274     ((0x0001 <= $num and $num <= 0xD7FF) or
2275     (0xE000 <= $num and $num <= 0xFFFD) or
2276     (0x10000 <= $num and $num <= 0x10FFFF)))
2277     ) {
2278     my $location;
2279     __CODE{xp|get-location-from-token::
2280     $token => $token,
2281     $result => $location,
2282     }__;
2283     my $continue = __DOMCore:ERROR{xp|wf-legal-character::
2284     DOMCore:location => {$location},
2285     xp|token => {$token},
2286     xp|character-number => {$num},
2287     }__;
2288     unless ($continue) {
2289     __EXCEPTION{DOMLS|PARSE_ERR}__;
2290     }
2291     }
2292     my $ncr = $self->{doc}-><M::Document.createTextNode>
2293     (my $char = chr $num);
2294     $parent-><M::Node.appendChild> ($ncr);
2295     $vals->{value} .= $char;
2296     }
2297     }
2298    
2299     // ~ (REFC) { }
2300     } // _HexadecimalCharacterReferenceAE_
2301    
2302     rule _HexadecimalCharacterReferenceEV_ ($vals) {
2303     ?lexmode HexadecimalCharacterReference;
2304    
2305     ~ (Hex) {
2306     lang:Perl ($v => $token.value) : has-error {
2307     my $num = hex $v;
2308     unless (
2309     ($self->{xml_version} eq '1.0' and
2310     ((0x0020 <= $num and $num <= 0xD7FF) or
2311     (0xE000 <= $num and $num <= 0xFFFD) or
2312     (0x10000 <= $num and $num <= 0x10FFFF) or
2313     $num == 0x9 or $num == 0xA or $num == 0xD)) or
2314     ($self->{xml_version} eq '1.1' and
2315     ((0x0001 <= $num and $num <= 0xD7FF) or
2316     (0xE000 <= $num and $num <= 0xFFFD) or
2317     (0x10000 <= $num and $num <= 0x10FFFF)))
2318     ) {
2319     my $location;
2320     __CODE{xp|get-location-from-token::
2321     $token => $token,
2322     $result => $location,
2323     }__;
2324     my $continue = __DOMCore:ERROR{xp|wf-legal-character::
2325     DOMCore:location => {$location},
2326     xp|token => {$token},
2327     xp|character-number => {$num},
2328     }__;
2329     unless ($continue) {
2330     __EXCEPTION{DOMLS|PARSE_ERR}__;
2331     }
2332     }
2333     push @{$vals}, chr $num;
2334     }
2335     }
2336    
2337     // ~ (REFC) { }
2338     } // _HexadecimalCharacterReferenceEV_
2339    
2340     /*
2341     General entity reference in element's content
2342     */
2343     rule _GeneralEntityReferenceEC ($doc, $parent, $ns)
2344     : recursive
2345     {
2346     ?lexmode 'EntityReference';
2347    
2348     ~ (Name == 'lt') {
2349     lang:Perl {
2350     $parent-><M::Node.appendChild>
2351     ($self->{doc}-><M::Document.createTextNode> ('<'));
2352     }
2353     } (Name == 'gt') {
2354     lang:Perl {
2355     $parent-><M::Node.appendChild>
2356     ($self->{doc}-><M::Document.createTextNode> ('>'));
2357     }
2358     } (Name == 'amp') {
2359     lang:Perl {
2360     $parent-><M::Node.appendChild>
2361     ($self->{doc}-><M::Document.createTextNode> ('&'));
2362     }
2363     } (Name == 'quot') {
2364     lang:Perl {
2365     $parent-><M::Node.appendChild>
2366     ($self->{doc}-><M::Document.createTextNode> ('"'));
2367     }
2368     } (Name == 'apos') {
2369     lang:Perl {
2370     $parent-><M::Node.appendChild>
2371     ($self->{doc}-><M::Document.createTextNode> ("'"));
2372     }
2373     } (Name) {
2374     my $er;
2375 wakaba 1.19 lang:Perl ($name => $token.value) : has-error {
2376 wakaba 1.26 __CODE{checkNCName:: $name => $name}__;
2377    
2378 wakaba 1.11 $er = $doc-><M::Document.createEntityReference>
2379     ($name);
2380 wakaba 1.20 $er-><AS::Node.textContent> ('');
2381     ## NOTE: When document entity (and entities referenced directly
2382     ## or indirectly from it) is parsed, no general entity
2383     ## node have its replacement tree. During general
2384     ## entity node collection construction, however,
2385     ## some entity node has replacement tree.
2386 wakaba 1.11 $parent-><M::Node.appendChild> ($er);
2387 wakaba 1.19
2388     my $ent = $self->{general_entity}->{$name};
2389     if (not $ent) { # no entity declaration
2390     if ($self->{standalone} or not $self->{has_xref}) { # WFC error
2391     my $location;
2392     __CODE{xp|get-location-from-token::
2393     $token => {$token},
2394     $result => {$location},
2395     }__;
2396     my $continue = __DOMCore:ERROR{xp|wf-entity-declared::
2397     xp|error-token => {$token},
2398     c|location => {$location},
2399     xp|name => {$name},
2400     }__;
2401     unless ($continue) {
2402     __EXCEPTION{DOMLS|PARSE_ERR}__;
2403     }
2404     } # Otherwise VC error
2405 wakaba 1.23 push @{$self->{entity}}, <Code::getEmptyEntityState::
2406     $name = $name>;
2407 wakaba 1.20 $er-><AS::x|EntityReference.isExpanded> (false);
2408 wakaba 1.19
2409     } else { # there IS entity declaration
2410     if (($self->{standalone} or not $self->{has_xref}) and
2411     $ent->{is_externally_declared} and
2412     not $self->{entity}->[-1]->{is_externally_declared}) {
2413     my $location;
2414     __CODE{xp|get-location-from-token::
2415     $token => {$token},
2416     $result => {$location},
2417     }__;
2418     my $continue = __DOMCore:ERROR{xp|wf-entity-declared::
2419     xp|error-token => {$token},
2420     c|location => {$location},
2421     xp|name => {$name},
2422     }__;
2423     unless ($continue) {
2424     __EXCEPTION{DOMLS|PARSE_ERR}__;
2425     }
2426     }
2427     $er-><AS::x|EntityReference.isExpanded>
2428     ($ent->{has_replacement_text});
2429     push @{$self->{entity}}, <Code::getCopyOfEntityState::
2430 wakaba 1.11 $entity_type = 'general_entity',
2431     $entity_name = $name>;
2432 wakaba 1.23
2433     if (defined $ent->{notation}) {
2434     my $location;
2435     __CODE{xp|get-location-from-token::
2436     $token => {$token},
2437     $result => {$location},
2438     }__;
2439     my $continue = __c|ERROR{xp|wf-parsed-entity::
2440     xp|error-token => {$token},
2441     c|location => {$location},
2442     xp|name => {$name},
2443     }__;
2444     unless ($continue) {
2445     __EXCEPTION{DOMLS|PARSE_ERR::
2446     }__;
2447     }
2448     } # if unparsed entity
2449    
2450     if ($ent->{is_opened}) {
2451     my $location;
2452     __CODE{xp|get-location-from-token::
2453     $token => {$token},
2454     $result => {$location},
2455     }__;
2456     my $continue = __c|ERROR{xp|wf-no-recursion::
2457     xp|error-token => {$token},
2458     c|location => {$location},
2459     xp|name => {$name},
2460     }__;
2461     unless ($continue) {
2462     __EXCEPTION{DOMLS|PARSE_ERR::
2463     }__;
2464     }
2465     $self->{entity}->[-1]->{reptxt} = \'';
2466     $er-><AS::x|EntityReference.isExpanded> (false);
2467     } # recursive
2468     $ent->{is_opened} = true;
2469     } # entity declared
2470 wakaba 1.14 $self->{location} = $self->{entity}->[-1];
2471 wakaba 1.11 push @{$self->{entity_token}}, $self->{token};
2472     $self->{token} = [];
2473     push @{$self->{entity_char}}, $self->{char};
2474     $self->{char} = [];
2475     }
2476    
2477     ?lexmode ElementContent;
2478     &content ($doc => $doc, $parent => $er, $ns => $ns);
2479     ~ (#EOF) { }
2480     lang:Perl {
2481 wakaba 1.23 $self->{general_entity}->{$self->{entity}->[-1]->{name}}
2482     ->{is_opened} = false
2483     if $self->{general_entity}->{$self->{entity}->[-1]->{name}};
2484 wakaba 1.11 $self->{token} = pop @{$self->{entity_token}};
2485     $self->{char} = pop @{$self->{entity_char}};
2486     pop @{$self->{entity}};
2487 wakaba 1.14 $self->{location} = $self->{entity}->[-1];
2488 wakaba 1.11 }
2489    
2490     // TODO: Set read-only flag
2491    
2492     ?lexmode EntityReference;
2493     ?requires-next-token;
2494     }
2495    
2496     ~ (REFC) {
2497     ?lexmode ElementContent;
2498     } else {
2499     ?lexmode ElementContent;
2500     }
2501     } // _GeneralEntityReferenceEC
2502    
2503     /*
2504     General entity reference in an attribute value literal
2505     */
2506     rule _GeneralEntityReferenceV_ ($vals) {
2507     ?lexmode EntityReference;
2508    
2509     ~ (Name == 'lt') {
2510     lang:Perl {
2511     push @{$vals->{nodes}}, $self->{doc}-><M::Document.createTextNode>
2512     ('<');
2513     $vals->{value} .= '<';
2514     }
2515     } (Name == 'gt') {
2516     lang:Perl {
2517     push @{$vals->{nodes}}, $self->{doc}-><M::Document.createTextNode>
2518     ('>');
2519     $vals->{value} .= '>';
2520     }
2521     } (Name == 'amp') {
2522     lang:Perl {
2523     push @{$vals->{nodes}}, $self->{doc}-><M::Document.createTextNode>
2524     ('&');
2525     $vals->{value} .= '&';
2526     }
2527     } (Name == 'quot') {
2528     lang:Perl {
2529     push @{$vals->{nodes}}, $self->{doc}-><M::Document.createTextNode>
2530     ('"');
2531     $vals->{value} .= '"';
2532     }
2533     } (Name == 'apos') {
2534     lang:Perl {
2535     push @{$vals->{nodes}}, $self->{doc}-><M::Document.createTextNode>
2536     ("'");
2537     $vals->{value} .= "'";
2538     }
2539     } (Name) {
2540     my $er;
2541 wakaba 1.18 lang:Perl ($name => $token.value) : has-error {
2542 wakaba 1.26 __CODE{checkNCName:: $name => $name}__;
2543 wakaba 1.18
2544 wakaba 1.11 $er = $self->{doc}-><M::Document.createEntityReference> ($name);
2545 wakaba 1.20 $er-><AS::Node.textContent> ('');
2546     ## NOTE: When document entity (and entities referenced directly
2547     ## or indirectly from it) is parsed, no general entity
2548     ## node have its replacement tree. During general
2549     ## entity node collection construction, however,
2550     ## some entity node has replacement tree.
2551 wakaba 1.19 my $ent = $self->{general_entity}->{$name};
2552 wakaba 1.20 if (not $ent) { # no entity declaration
2553     if ($self->{standalone} or not $self->{has_xref}) { # WFC error
2554     my $location;
2555     __CODE{xp|get-location-from-token::
2556     $token => {$token},
2557     $result => {$location},
2558     }__;
2559     my $continue = __DOMCore:ERROR{xp|wf-entity-declared::
2560     xp|error-token => {$token},
2561     c|location => {$location},
2562     xp|name => {$name},
2563     }__;
2564     unless ($continue) {
2565     __EXCEPTION{DOMLS|PARSE_ERR}__;
2566     }
2567     } # Otherwise VC error
2568 wakaba 1.23 push @{$self->{entity}}, <Code::getEmptyEntityState::
2569     $name = $name>;
2570 wakaba 1.20 $er-><AS::x|EntityReference.isExpanded> (false);
2571    
2572     } else { # there IS entity declaration
2573     if (($self->{standalone} or not $self->{has_xref}) and
2574     $ent->{is_externally_declared} and
2575     not $self->{entity}->[-1]->{is_externally_declared}) {
2576     my $location;
2577     __CODE{xp|get-location-from-token::
2578     $token => {$token},
2579     $result => {$location},
2580     }__;
2581     my $continue = __DOMCore:ERROR{xp|wf-entity-declared::
2582     xp|error-token => {$token},
2583     c|location => {$location},
2584     xp|name => {$name},
2585     }__;
2586     unless ($continue) {
2587     __EXCEPTION{DOMLS|PARSE_ERR}__;
2588     }
2589     }
2590    
2591     if ($ent->{is_external_entity}) {
2592     my $location;
2593     __CODE{xp|get-location-from-token::
2594     $token => {$token},
2595     $result => {$location},
2596     }__;
2597     my $continue = __c|ERROR{xp|wf-no-external-entity-references::
2598     xp|error-token => {$token},
2599     c|location => {$location},
2600     xp|name => {$name},
2601     }__;
2602     unless ($continue) {
2603     __EXCEPTION{DOMLS|PARSE_ERR::
2604     }__;
2605     }
2606 wakaba 1.23 ## NOTE: |xp:wf-parsed-entity| is not checked
2607 wakaba 1.20 } # if external entity
2608    
2609     $er-><AS::x|EntityReference.isExpanded>
2610 wakaba 1.19 ($ent->{has_replacement_text});
2611 wakaba 1.20 push @{$self->{entity}}, <Code::getCopyOfEntityState::
2612 wakaba 1.11 $entity_type = 'general_entity',
2613     $entity_name = $name>;
2614 wakaba 1.23
2615     if ($ent->{is_opened}) {
2616     my $location;
2617     __CODE{xp|get-location-from-token::
2618     $token => {$token},
2619     $result => {$location},
2620     }__;
2621     my $continue = __c|ERROR{xp|wf-no-recursion::
2622     xp|error-token => {$token},
2623     c|location => {$location},
2624     xp|name => {$name},
2625     }__;
2626     unless ($continue) {
2627     __EXCEPTION{DOMLS|PARSE_ERR::
2628     }__;
2629     }
2630     $self->{entity}->[-1]->{reptxt} = \'';
2631     $er-><AS::x|EntityReference.isExpanded> (false);
2632     } # recursive
2633     $ent->{is_opened} = true;
2634 wakaba 1.20 }
2635     push @{$vals->{nodes}}, $er;
2636 wakaba 1.14 $self->{location} = $self->{entity}->[-1];
2637 wakaba 1.11 push @{$self->{entity_token}}, $self->{token};
2638     $self->{token} = [];
2639     push @{$self->{entity_char}}, $self->{char};
2640     $self->{char} = [];
2641     }
2642    
2643     ?lexmode AttributeValueLiteralE;
2644     &AttributeValueLiteralE_ ($parent => $er, $vals => $vals);
2645     ~ (#EOF) { }
2646     lang:Perl {
2647 wakaba 1.23 $self->{general_entity}->{$self->{entity}->[-1]->{name}}
2648     ->{is_opened} = false
2649     if $self->{general_entity}->{$self->{entity}->[-1]->{name}};
2650 wakaba 1.11 $self->{token} = pop @{$self->{entity_token}};
2651     $self->{char} = pop @{$self->{entity_char}};
2652     pop @{$self->{entity}};
2653 wakaba 1.14 $self->{location} = $self->{entity}->[-1];
2654 wakaba 1.11 }
2655    
2656     // TODO: Set read-only flag
2657    
2658     ?lexmode EntityReference;
2659     ?requires-next-token;
2660     }
2661    
2662     // ~ (REFC) { }
2663     } // _GeneralEntityReferenceV_
2664 wakaba 1.1
2665 wakaba 1.6 /*
2666 wakaba 1.11 General entity reference in the replacement text
2667     of the entity referenced in an attribute value literal
2668 wakaba 1.6 */
2669 wakaba 1.11 rule _GeneralEntityReferenceAE_ ($parent, $vals)
2670 wakaba 1.6 {
2671 wakaba 1.11 ?lexmode EntityReference;
2672 wakaba 1.1
2673 wakaba 1.11 ~ (Name == 'lt') {
2674     lang:Perl {
2675     $parent-><M::Node.appendChild>
2676     ($self->{doc}-><M::Document.createTextNode> ('<'));
2677     $vals->{value} .= '<';
2678     }
2679     } (Name == 'gt') {
2680     lang:Perl {
2681     $parent-><M::Node.appendChild>
2682     ($self->{doc}-><M::Document.createTextNode> ('>'));
2683     $vals->{value} .= '>';
2684     }
2685     } (Name == 'amp') {
2686     lang:Perl {
2687     $parent-><M::Node.appendChild>
2688     ($self->{doc}-><M::Document.createTextNode> ('&'));
2689     $vals->{value} .= '&';
2690     }
2691     } (Name == 'quot') {
2692     lang:Perl {
2693     $parent-><M::Node.appendChild>
2694     ($self->{doc}-><M::Document.createTextNode> ('"'));
2695     $vals->{value} .= '"';
2696     }
2697     } (Name == 'apos') {
2698     lang:Perl {
2699     $parent-><M::Node.appendChild>
2700     ($self->{doc}-><M::Document.createTextNode> ("'"));
2701     $vals->{value} .= "'";
2702     }
2703     } (Name) {
2704 wakaba 1.6 my $er;
2705 wakaba 1.26 lang:Perl ($name => $token.value) : has-error {
2706     __CODE{checkNCName:: $name => $name}__;
2707 wakaba 1.18
2708 wakaba 1.11 $er = $self->{doc}-><M::Document.createEntityReference> ($name);
2709 wakaba 1.20 $er-><AS::Node.textContent> ('');
2710     ## NOTE: When document entity (and entities referenced directly
2711     ## or indirectly from it) is parsed, no general entity
2712     ## node have its replacement tree. During general
2713     ## entity node collection construction, however,
2714     ## some entity node has replacement tree.
2715 wakaba 1.19 my $ent = $self->{general_entity}->{$name};
2716 wakaba 1.22 if (not $ent) { # no entity declaration
2717     if ($self->{standalone} or not $self->{has_xref}) { # WFC error
2718     my $location;
2719     __CODE{xp|get-location-from-token::
2720     $token => {$token},
2721     $result => {$location},
2722     }__;
2723     my $continue = __DOMCore:ERROR{xp|wf-entity-declared::
2724     xp|error-token => {$token},
2725     c|location => {$location},
2726     xp|name => {$name},
2727     }__;
2728     unless ($continue) {
2729     __EXCEPTION{DOMLS|PARSE_ERR}__;
2730     }
2731     } # Otherwise VC error
2732 wakaba 1.23 push @{$self->{entity}}, <Code::getEmptyEntityState::
2733     $name = $name>;
2734 wakaba 1.22 $er-><AS::x|EntityReference.isExpanded> (false);
2735    
2736     } else { # there IS entity declaration
2737     if (($self->{standalone} or not $self->{has_xref}) and
2738     $ent->{is_externally_declared} and
2739     not $self->{entity}->[-1]->{is_externally_declared}) {
2740     my $location;
2741     __CODE{xp|get-location-from-token::
2742     $token => {$token},
2743     $result => {$location},
2744     }__;
2745     my $continue = __DOMCore:ERROR{xp|wf-entity-declared::
2746     xp|error-token => {$token},
2747     c|location => {$location},
2748     xp|name => {$name},
2749     }__;
2750     unless ($continue) {
2751     __EXCEPTION{DOMLS|PARSE_ERR}__;
2752     }
2753     }
2754    
2755     if ($ent->{is_external_entity}) {
2756     my $location;
2757     __CODE{xp|get-location-from-token::
2758     $token => {$token},
2759     $result => {$location},
2760     }__;
2761     my $continue = __c|ERROR{xp|wf-no-external-entity-references::
2762     xp|error-token => {$token},
2763     c|location => {$location},
2764     xp|name => {$name},
2765     }__;
2766     unless ($continue) {
2767     __EXCEPTION{DOMLS|PARSE_ERR::
2768     }__;
2769     }
2770 wakaba 1.23 ## NOTE: |xp:wf-parsed-entity| is not checked
2771 wakaba 1.22 } # if external entity
2772    
2773     $er-><AS::x|EntityReference.isExpanded>
2774 wakaba 1.19 ($ent->{has_replacement_text});
2775 wakaba 1.22 push @{$self->{entity}}, <Code::getCopyOfEntityState::
2776 wakaba 1.6 $entity_type = 'general_entity',
2777     $entity_name = $name>;
2778 wakaba 1.23
2779     if ($ent->{is_opened}) {
2780     my $location;
2781     __CODE{xp|get-location-from-token::
2782     $token => {$token},
2783     $result => {$location},
2784     }__;
2785     my $continue = __c|ERROR{xp|wf-no-recursion::
2786     xp|error-token => {$token},
2787     c|location => {$location},
2788     xp|name => {$name},
2789     }__;
2790     unless ($continue) {
2791     __EXCEPTION{DOMLS|PARSE_ERR::
2792     }__;
2793     }
2794     $self->{entity}->[-1]->{reptxt} = \'';
2795     $er-><AS::x|EntityReference.isExpanded> (false);
2796     } # recursive
2797     $ent->{is_opened} = true;
2798 wakaba 1.22 }
2799     $parent-><M::Node.appendChild> ($er);
2800 wakaba 1.14 $self->{location} = $self->{entity}->[-1];
2801 wakaba 1.6 push @{$self->{entity_token}}, $self->{token};
2802     $self->{token} = [];
2803     push @{$self->{entity_char}}, $self->{char};
2804     $self->{char} = [];
2805     }
2806    
2807 wakaba 1.11 ?lexmode AttributeValueLiteralE;
2808     &AttributeValueLiteralE_ ($parent => $er, $vals => $vals);
2809 wakaba 1.6 ~ (#EOF) { }
2810     lang:Perl {
2811 wakaba 1.23 $self->{general_entity}->{$self->{entity}->[-1]->{name}}
2812     ->{is_opened} = false
2813     if $self->{general_entity}->{$self->{entity}->[-1]->{name}};
2814 wakaba 1.6 $self->{token} = pop @{$self->{entity_token}};
2815     $self->{char} = pop @{$self->{entity_char}};
2816     pop @{$self->{entity}};
2817 wakaba 1.14 $self->{location} = $self->{entity}->[-1];
2818 wakaba 1.6 }
2819    
2820 wakaba 1.11 // TODO: Set read-only flag
2821    
2822 wakaba 1.6 ?lexmode EntityReference;
2823     ?requires-next-token;
2824 wakaba 1.1 }
2825    
2826     // ~ (REFC) { }
2827 wakaba 1.11 } // _GeneralEntityReferenceAE_
2828 wakaba 1.6
2829     /*
2830 wakaba 1.24 General Entity Reference in Literal Entity Value in Entity Declaration
2831 wakaba 1.6 */
2832 wakaba 1.11 rule _GeneralEntityReferenceEV_ ($vals) {
2833 wakaba 1.6 ?lexmode 'EntityReference';
2834    
2835     ~ (Name) {
2836     lang:Perl ($name => $token.value) {
2837 wakaba 1.26 __CODE{checkNCName:: $name => $name}__;
2838 wakaba 1.6 push @$vals, $name;
2839     }
2840 wakaba 1.24 /*
2841     WFCs such as Entity Declared are not checked
2842     <http://www.w3.org/TR/xml11/#bypass>
2843    
2844     Note that violation to the Parsed Entity WFC is an error
2845     rather than fatal error here.
2846     */
2847 wakaba 1.6 }
2848 wakaba 1.11
2849     // No expansion
2850 wakaba 1.6
2851     // ~ (REFC) { }
2852     } // _GeneralEntityReferenceEV_
2853 wakaba 1.1
2854     /*
2855 wakaba 1.4 Document Type Declaration
2856 wakaba 1.1 */
2857 wakaba 1.4 rule _DocumentTypeDeclaration_ ($doc) {
2858     ?lexmode MarkupDeclaration;
2859    
2860     ~ (Name == 'DOCTYPE') { }
2861    
2862     ~ (S) { }
2863    
2864     // Document type name
2865 wakaba 1.6 my $name;
2866 wakaba 1.4 ~ (Name) {
2867 wakaba 1.6 lang:Perl ($v => $token.value) {
2868 wakaba 1.26 __CODE{checkQName:: $name => $v}__;
2869 wakaba 1.6 $name = $v;
2870     }
2871     }
2872 wakaba 1.17
2873     my $node;
2874     my $decl;
2875 wakaba 1.6 lang:Perl {
2876 wakaba 1.11 $self->{docx} = $self->{doc}
2877     -><M::Node.getFeature> (<Q::fe:XDoctype>, '3.0');
2878     $node = $self->{docx}-><M::DocumentXDoctype.createDocumentTypeDefinition>
2879     ($name);
2880 wakaba 1.17 $decl = $self->{dtdecl} = $node-><M::Node.getFeature>
2881     (<Q::fe:XDoctypeDeclaration>, '3.0');
2882 wakaba 1.4 }
2883    
2884 wakaba 1.25 my $has_extid;
2885 wakaba 1.4 ~? (S) {
2886     ~? (Name == 'PUBLIC') {
2887     ~ (S) { }
2888    
2889 wakaba 1.17 &PubidLiteral ($decl => $decl);
2890 wakaba 1.4
2891     ~ (S) { }
2892    
2893 wakaba 1.17 &SystemLiteral ($decl => $decl);
2894 wakaba 1.4
2895     ~? (S) { }
2896 wakaba 1.19
2897     lang:Perl {
2898     $self->{has_xref} = true;
2899 wakaba 1.25 $has_extid = true;
2900 wakaba 1.19 }
2901 wakaba 1.4 } (Name == 'SYSTEM') {
2902     ~ (S) { }
2903    
2904 wakaba 1.17 &SystemLiteral ($decl => $decl);
2905 wakaba 1.4
2906     ~? (S) { }
2907 wakaba 1.19
2908     lang:Perl {
2909     $self->{has_xref} = true;
2910 wakaba 1.25 $has_extid = true;
2911 wakaba 1.19 }
2912 wakaba 1.4 }
2913     }
2914 wakaba 1.17
2915 wakaba 1.11 lang:Perl {
2916     $self->{dtdef} = $node;
2917 wakaba 1.21 $self->{doc}-><M::Node.appendChild> ($node);
2918     $self->{doc_cfg}-><M::c|DOMConfiguration.setParameter>
2919     ('schema-type' => <Q::xml-dtd:>);
2920     ## ISSUE: Should default schema language information be
2921     ## preserved by some other flag?
2922 wakaba 1.11 }
2923    
2924 wakaba 1.4 ~? (DSO) {
2925 wakaba 1.6 &InternalSubset ($doc => $doc, $doctype => $node);
2926 wakaba 1.4
2927     ~ (DSC) {
2928     ?lexmode MarkupDeclaration;
2929     } else {
2930     ?lexmode MarkupDeclaration;
2931     }
2932    
2933     ~? (S) { }
2934     }
2935    
2936 wakaba 1.25 // TODO: Read and process external subset if any.
2937     lang:Perl {
2938     $self->{dont_process} = true if $has_extid;
2939     }
2940    
2941 wakaba 1.4 // ~ (MDC) { }
2942     } // _DocumentTypeDeclaration_
2943    
2944 wakaba 1.17 /*
2945     Public Identifier Literal
2946     */
2947     rule PubidLiteral ($decl) {
2948     my $pubid;
2949     my $pubid_token;
2950 wakaba 1.4 ~ (LIT) {
2951     ?lexmode SystemLiteral;
2952    
2953     ~? (STRING) {
2954 wakaba 1.17 lang:Perl ($v => $token.value) {
2955     $pubid = $v;
2956     $pubid_token = $token;
2957     }
2958 wakaba 1.4 }
2959    
2960     ~ (LIT) {
2961     ?lexmode MarkupDeclaration;
2962     } else {
2963     ?lexmode MarkupDeclaration;
2964     }
2965     } (LITA) {
2966     ?lexmode SystemLiteralA;
2967    
2968     ~? (STRING) {
2969 wakaba 1.17 lang:Perl ($v => $token.value) {
2970     $pubid = $v;
2971     $pubid_token = $token;
2972     }
2973 wakaba 1.4 }
2974    
2975     ~ (LITA) {
2976     ?lexmode MarkupDeclaration;
2977     } else {
2978     ?lexmode MarkupDeclaration;
2979     }
2980     }
2981 wakaba 1.17
2982     if-true ($pubid_token) {
2983     lang:Perl : has-error {
2984     if ($pubid =~ m{[^\x20\x0D\x0Aa-zA-Z0-9'()+,./:=?;!*#\@\$_%-]}s) {
2985     my $location;
2986     __CODE{xp|get-location-from-token::
2987     $token => {$pubid_token},
2988     $result => {$location},
2989     }__;
2990     ## Should this be other (new) error type?
2991     my $continue = __DOMCore:ERROR{xp|wf-syntax-error::
2992     xp|error-token => {$token},
2993     c|location => {$location},
2994     }__;
2995     unless ($continue) {
2996     __EXCEPTION{DOMLS|PARSE_ERR::
2997     }__;
2998     }
2999     }
3000    
3001     ## NOTE: U+0009 is syntactically illegal.
3002 wakaba 1.23 $pubid =~ s/[\x09\x0A\x0D\x20]+/\x20/gs;
3003 wakaba 1.17 $pubid =~ s/\A\x20//s;
3004     $pubid =~ s/\x20\z//s;
3005     ## NOTE: Bare attribute name is written.
3006     $decl->public_id ($pubid);
3007     }
3008     }
3009 wakaba 1.4 } // PubidLiteral
3010    
3011 wakaba 1.17 /*
3012     System Identifier Literal
3013     */
3014     rule SystemLiteral ($decl) {
3015 wakaba 1.4 ~ (LIT) {
3016     ?lexmode SystemLiteral;
3017 wakaba 1.17 &_SystemLiteral ($decl => $decl);
3018 wakaba 1.4 } (LITA) {
3019     ?lexmode SystemLiteralA;
3020 wakaba 1.17 &_SystemLiteral ($decl => $decl);
3021 wakaba 1.4 }
3022     } // SystemLiteral
3023    
3024 wakaba 1.17 /*
3025     System Identifier Literal Content
3026     */
3027     rule _SystemLiteral ($decl) {
3028     // LIT or LITA
3029    
3030 wakaba 1.4 ~? (STRING) {
3031 wakaba 1.17 lang:Perl ($v => $token.value) {
3032     ## NOTE: Bare attribute name is written.
3033     $decl->system_id ($v);
3034     }
3035 wakaba 1.4 }
3036    
3037     ~ (LIT) {
3038     ?lexmode MarkupDeclaration;
3039     } (LITA) {
3040     ?lexmode MarkupDeclaration;
3041     } else {
3042     ?lexmode MarkupDeclaration;
3043     }
3044     } // _SystemLiteral
3045    
3046     /*
3047     DTD Internal Subset
3048    
3049     intSubset := *(markupdecl / DeclSep) ;; [28b]
3050     */
3051 wakaba 1.6 rule InternalSubset ($doc, $doctype) {
3052 wakaba 1.4 ?lexmode DTD;
3053    
3054     ~* (MDO) {
3055     ?lexmode MarkupDeclaration;
3056    
3057     ~ (Name == 'ELEMENT') {
3058     &_ElementDeclaration ($doc => $doc);
3059     } (Name == 'ATTLIST') {
3060 wakaba 1.8 &_AttlistDeclaration ($doc => $doc, $doctype => $doctype);
3061 wakaba 1.4 } (Name == 'ENTITY') {
3062     &_EntityDeclaration ($doc => $doc);
3063     } (Name == 'NOTATION') {
3064     &_NotationDeclaration ($doc => $doc);
3065     }
3066     } (S) {
3067     //
3068     } (CDO) {
3069     &_CommentDeclarationDTD ($doc => $doc);
3070     } (PIO) {
3071 wakaba 1.6 &_ProcessingInstructionDTD ($doc => $doc, $doctype => $doctype);
3072 wakaba 1.4 } (PERO) {
3073     ?lexmode EntityReference;
3074    
3075 wakaba 1.19 lang:Perl {
3076     $self->{has_xref} = true;
3077 wakaba 1.25 $self->{dont_process} = true;
3078 wakaba 1.19 }
3079    
3080 wakaba 1.4 ~ (Name) {
3081 wakaba 1.26 // TODO: __CODE{checkNCName:: $name => $name}__;
3082 wakaba 1.4
3083     }
3084    
3085     ~ (REFC) {
3086     ?lexmode DTD;
3087     } else {
3088     ?lexmode DTD;
3089     }
3090     }
3091     } // InternalSubset
3092    
3093     rule _ElementDeclaration ($doc) {
3094     // ~ (MDO) { }
3095     // ?lexmode MarkupDeclaration
3096     // ~ (Name == 'Element') { }
3097    
3098     ~ (S) { }
3099    
3100     ~ (Name) {
3101 wakaba 1.26 // TODO: __CODE{checkQName:: $name => $name}__;
3102 wakaba 1.4
3103     }
3104    
3105     ?lexmode ElementDeclaration;
3106    
3107     ~ (S) { }
3108    
3109     // contentspec
3110     ~ (MGO) {
3111     &_ContentModel ($doc => $doc);
3112     } (Name == 'EMPTY') {
3113    
3114     } (Name == 'ANY') {
3115    
3116     }
3117    
3118     ~? (S) { }
3119    
3120     ~ (MDC) {
3121     ?lexmode DTD;
3122     } else {
3123     ?lexmode DTD;
3124     }
3125     } // _ElementDeclaration
3126    
3127     rule _ContentModel ($doc) {
3128     // ~ (MGO) { }
3129    
3130     ~? (S) { }
3131    
3132     ~ (Name) {
3133     // Element content model
3134     &_ModelGroup ($doc => $doc)
3135     : unshift-current-token;
3136    
3137     ~? (OPT) {
3138    
3139     } (REP) {
3140    
3141     } (PLUS) {
3142    
3143     }
3144    
3145     } (MDO) {
3146     &_ModelGroup ($doc => $doc)
3147     : unshift-current-token;
3148    
3149     ~? (OPT) {
3150    
3151     } (REP) {
3152    
3153     } (PLUS) {
3154    
3155     }
3156    
3157     } (PCDATA) {
3158     // Mixed content declaration
3159     ~? (S) { }
3160    
3161     ~* (OR) {
3162     ~? (S) { }
3163    
3164     ~ (Name) {
3165 wakaba 1.26 // TODO: Name & QName check
3166 wakaba 1.4
3167     }
3168    
3169     ~? (S) { }
3170     }
3171    
3172     ~ (MGC) { }
3173    
3174     ~? (REP) {
3175    
3176     } else {
3177     // TODO: error if |Name|
3178     }
3179    
3180    
3181     }
3182     } // _ContentModel
3183    
3184     rule _ModelGroup ($doc)
3185     : standalone
3186     : recursive
3187     {
3188     // ~ (MGO) { }
3189     // ~? (S) { }
3190    
3191     &ContentParticle ($doc => $doc);
3192    
3193     ~? (S) { }
3194    
3195     ~? (OR) {
3196     ~? (S) { }
3197    
3198     &ContentParticle ($doc => $doc);
3199    
3200     ~? (S) { }
3201    
3202     ~* (OR) {
3203     ~? (S) { }
3204    
3205     &ContentParticle ($doc => $doc);
3206    
3207     ~? (S) { }
3208     }
3209    
3210     } (SEQ) {
3211     ~? (S) { }
3212    
3213     &ContentParticle ($doc => $doc);
3214    
3215     ~? (S) { }
3216    
3217     ~* (SEQ) {
3218     ~? (S) { }
3219    
3220     &ContentParticle ($doc => $doc);
3221    
3222     ~? (S) { }
3223     }
3224    
3225     }
3226    
3227     ~ (MGC) { }
3228     } // _ModelGroup
3229    
3230     rule ContentParticle ($doc) {
3231     ~ (Name) {
3232 wakaba 1.26 // TODO: Name & QName check
3233 wakaba 1.4
3234     } (MGO) {
3235     ~? (S) { }
3236    
3237     &_ModelGroup ($doc => $doc);
3238     }
3239    
3240     ~? (OPT) {
3241    
3242     } (REP) {
3243    
3244     } (PLUS) {
3245    
3246     }
3247     } // ContentParticle
3248    
3249 wakaba 1.8 /*
3250     Attribute list declaration
3251     */
3252     rule _AttlistDeclaration ($doc, $doctype) {
3253 wakaba 1.4 // ~ (MDO) { }
3254     // ~ (Name == 'ATTLIST') { }
3255    
3256     ?lexmode AttlistDeclaration;
3257    
3258     ~ (S) { }
3259    
3260 wakaba 1.8 my $name;
3261 wakaba 1.4 ~ (Name) {
3262 wakaba 1.8 lang:Perl ($v => $token.value) {
3263 wakaba 1.26 __CODE{checkQName:: $name => $v}__;
3264 wakaba 1.8 $name = $v;
3265     }
3266     } else {
3267     lang:Perl { $name = '#ILLEGAL' }
3268     }
3269 wakaba 1.4
3270 wakaba 1.8 my $docxd;
3271     my $et;
3272     lang:Perl {
3273     $et = $doctype-><M::DTDef.getElementTypeDefinitionNode> ($name);
3274     unless ($et) {
3275 wakaba 1.11 $docxd = $doc-><M::Node.getFeature> (<Q::fe:XDoctype>, '3.0');
3276 wakaba 1.8 $et = $docxd-><M::DocumentXDoctype.createElementTypeDefinition>
3277     ($name);
3278     $doctype-><M::DTDef.setElementTypeDefinitionNode> ($et)
3279     unless $name eq '#ILLEGAL';
3280     }
3281 wakaba 1.4 }
3282    
3283     ~? (S) { }
3284    
3285     ~* (Name) {
3286 wakaba 1.8 my $at;
3287 wakaba 1.25 lang:Perl ($v => $token.value) : has-error {
3288 wakaba 1.26 __CODE{checkQName:: $name => $v}__;
3289 wakaba 1.8 $docxd ||= $doc-><M::Node.getFeature>
3290 wakaba 1.11 (<Q::fe:XDoctype>, '3.0');
3291 wakaba 1.8 $at = $docxd-><M::DocumentXDoctype.createAttributeDefinition> ($v);
3292 wakaba 1.25 if (exists $et-><AG::ETDef.attributeDefinitions>->{$v}) {
3293     my $location;
3294     __CODE{xp|get-location-from-token::
3295     $token => {$token},
3296     $result => {$location},
3297     }__;
3298     my $continue = __c|ERROR{xp|warning-attribute-definition-ignored::
3299     xp|error-token => {$token},
3300     c|location => {$location},
3301     xp|name => {$v},
3302     }__;
3303     unless ($continue) {
3304     __EXCEPTION{DOMLS|PARSE_ERR::
3305     }__;
3306     }
3307     } elsif ($self->{dont_process} and not $self->{standalone}) {
3308     my $location;
3309     __CODE{xp|get-location-from-token::
3310     $token => {$token},
3311     $result => {$location},
3312     }__;
3313     my $continue = __c|ERROR{
3314     xp|warning-attribute-definition-not-processed::
3315     xp|error-token => {$token},
3316     c|location => {$location},
3317     xp|name => {$v},
3318     }__;
3319     unless ($continue) {
3320     __EXCEPTION{DOMLS|PARSE_ERR::
3321     }__;
3322     }
3323     } else {
3324 wakaba 1.9 $et-><M::ETDef.setAttributeDefinitionNode> ($at);
3325     $self->{attr}->{$name}->{$v} = $at;
3326     }
3327 wakaba 1.8 }
3328 wakaba 1.4
3329     ~ (S) { }
3330    
3331     // AttType
3332     ~ (Name == 'NOTATION') {
3333     ~ (S) { }
3334    
3335 wakaba 1.8 my $kwd;
3336     lang:Perl {
3337     $at-><AS::ATDef.declaredType> (<C::ATDef.NOTATION_ATTR>);
3338     $kwd = $at-><AG::ATDef.allowedTokens>;
3339     }
3340    
3341 wakaba 1.4 ~ (EGO) {
3342     ~? (S) { }
3343    
3344 wakaba 1.8 ~+ (Name) {
3345 wakaba 1.26 lang:Perl ($v => $token.value) : has-error {
3346     __CODE{checkNCName:: $name => $v}__;
3347 wakaba 1.8 push @$kwd, $v;
3348     }
3349 wakaba 1.4
3350     ~? (S) { }
3351     } (OR) : separator {
3352     ~? (S) { }
3353     }
3354    
3355     ~ (EGC) { }
3356     }
3357 wakaba 1.8
3358 wakaba 1.4 } (Name) {
3359 wakaba 1.8 my $type;
3360     lang:Perl ($v => $token.value) : has-error {
3361     my $map = {
3362     CDATA => <C::ATDef.CDATA_ATTR>,
3363     ID => <C::ATDef.ID_ATTR>,
3364     IDREF => <C::ATDef.IDREF_ATTR>,
3365     IDREFS => <C::ATDef.IDREFS_ATTR>,
3366     ENTITY => <C::ATDef.ENTITY_ATTR>,
3367     ENTITIES => <C::ATDef.ENTITIES_ATTR>,
3368     NMTOKEN => <C::ATDef.NMTOKEN_ATTR>,
3369     NMTOKENS => <C::ATDef.NMTOKENS_ATTR>,
3370     };
3371     if ($map->{$v}) {
3372     $at-><AS::ATDef.declaredType> ($map->{$v});
3373     } else {
3374     ## TODO: Exception
3375     }
3376     }
3377 wakaba 1.4
3378     } (EGO) {
3379     ?lexmode Enumeration;
3380    
3381     ~? (S) { }
3382    
3383 wakaba 1.8 my $kwd;
3384     lang:Perl {
3385     $at-><AS::ATDef.declaredType> (<C::ATDef.ENUMERATION_ATTR>);
3386     $kwd = $at-><AG::ATDef.allowedTokens>;
3387     }
3388    
3389     ~+ (Nmtoken) {
3390     lang:Perl ($v => $token.value) {
3391     push @$kwd, $v;
3392     }
3393 wakaba 1.4
3394     ~? (S) { }
3395     } (OR) : separator {
3396     ~? (S) { }
3397     }
3398    
3399     ~ (EGC) {
3400     ?lexmode AttlistDeclaration;
3401     } else {
3402     ?lexmode AttlistDeclaration;
3403     }
3404    
3405     }
3406    
3407     ~ (S) { }
3408    
3409     // DefaultDecl
3410     ~ (RNI) {
3411     ~ (Name == 'REQUIRED') {
3412 wakaba 1.8 lang:Perl {
3413     $at-><AS::ATDef.defaultType> (<C::ATDef.REQUIRED_DEFAULT>);
3414     }
3415 wakaba 1.4 } (Name == 'IMPLIED') {
3416 wakaba 1.8 lang:Perl {
3417     $at-><AS::ATDef.defaultType> (<C::ATDef.IMPLIED_DEFAULT>);
3418     }
3419 wakaba 1.4 } (Name == 'FIXED') {
3420     ~ (S) { }
3421 wakaba 1.8
3422     lang:Perl {
3423     $at-><AS::ATDef.defaultType> (<C::ATDef.FIXED_DEFAULT>);
3424     }
3425 wakaba 1.4
3426     ~ (LIT) {
3427     my $vals;
3428     lang:Perl {
3429 wakaba 1.8 $vals = {nodes => [], value => ''};
3430 wakaba 1.4 }
3431    
3432     &_AttributeValueSpecification_ ($doc => $doc, $vals => $vals);
3433    
3434 wakaba 1.8 lang:Perl {
3435     for (@{$vals->{nodes}}) {
3436     $at-><M::Node.appendChild> ($_);
3437     }
3438     }
3439    
3440 wakaba 1.4 ~ (LIT) {
3441     ?lexmode AttlistDeclaration;
3442     } else {
3443     ?lexmode AttlistDeclaration;
3444     }
3445     } (LITA) {
3446     my $vals;
3447     lang:Perl {
3448 wakaba 1.8 $vals = {nodes => [], value => ''};
3449 wakaba 1.4 }
3450    
3451     &_AttributeValueSpecificationA_ ($doc => $doc, $vals => $vals);
3452    
3453 wakaba 1.8 lang:Perl {
3454     for (@{$vals->{nodes}}) {
3455     $at-><M::Node.appendChild> ($_);
3456     }
3457     }
3458    
3459     ~ (LITA) {
3460 wakaba 1.4 ?lexmode AttlistDeclaration;
3461     } else {
3462     ?lexmode AttlistDeclaration;
3463     }
3464     }
3465     }
3466    
3467     } (LIT) {
3468     my $vals;
3469     lang:Perl {
3470 wakaba 1.8 $at-><AS::ATDef.defaultType> (<C::ATDef.EXPLICIT_DEFAULT>);
3471     $vals = {nodes => [], value => ''};
3472 wakaba 1.4 }
3473    
3474     &_AttributeValueSpecification_ ($doc => $doc, $vals => $vals);
3475    
3476 wakaba 1.8 lang:Perl {
3477     for (@{$vals->{nodes}}) {
3478     $at-><M::Node.appendChild> ($_);
3479     }
3480     }
3481    
3482 wakaba 1.4 ~ (LIT) {
3483     ?lexmode AttlistDeclaration;
3484     } else {
3485     ?lexmode AttlistDeclaration;
3486     }
3487     } (LITA) {
3488     my $vals;
3489     lang:Perl {
3490 wakaba 1.8 $at-><AS::ATDef.defaultType> (<C::ATDef.EXPLICIT_DEFAULT>);
3491     $vals = {nodes => [], value => ''};
3492 wakaba 1.4 }
3493    
3494     &_AttributeValueSpecificationA_ ($doc => $doc, $vals => $vals);
3495    
3496 wakaba 1.8 lang:Perl {
3497     for (@{$vals->{nodes}}) {
3498     $at-><M::Node.appendChild> ($_);
3499     }
3500     }
3501    
3502 wakaba 1.4 ~ (LITA) {
3503     ?lexmode AttlistDeclaration;
3504     } else {
3505     ?lexmode AttlistDeclaration;
3506     }
3507     }
3508    
3509     } (S) : separator : terminator? {
3510     //
3511     }
3512    
3513     ~ (MDC) {
3514     ?lexmode DTD;
3515     } else {
3516     ?lexmode DTD;
3517     }
3518     } // _AttlistDeclaration
3519    
3520 wakaba 1.11 /*
3521 wakaba 1.26 Entity Declaration
3522 wakaba 1.11 */
3523 wakaba 1.4 rule _EntityDeclaration ($doc) {
3524     // ~ (MDO) { }
3525     // ~ (Name == ENTITY) { }
3526    
3527     ~ (S) { }
3528    
3529 wakaba 1.23 my $is_param_entity;
3530 wakaba 1.6 my $decl;
3531 wakaba 1.18 lang:Perl { $decl = { name => '#ILLEGAL', reptxt => \'' }; }
3532 wakaba 1.6
3533 wakaba 1.4 ~? (PERO) {
3534     ~ (S) { }
3535 wakaba 1.6 lang:Perl {
3536 wakaba 1.23 $is_param_entity = $decl->{is_param_entity} = true;
3537 wakaba 1.6 }
3538 wakaba 1.4 }
3539    
3540 wakaba 1.19 /*
3541     TODO: Set |$decl->{is_externally_declared}| flag
3542     and |Entity.isExternallyDeclared| attribute
3543     for entity declarations in external subset or
3544     in parameter entity.
3545     */
3546    
3547 wakaba 1.4 ~ (Name) {
3548 wakaba 1.6 lang:Perl ($v => $token.value) {
3549 wakaba 1.26 __CODE{checkNCName:: $name => $v}__;
3550 wakaba 1.6 $decl->{name} = $v;
3551     }
3552 wakaba 1.4 }
3553    
3554 wakaba 1.18 my $node;
3555 wakaba 1.11 lang:Perl {
3556 wakaba 1.18 $node =
3557 wakaba 1.11 $decl->{node} = $self->{docx}-><M::DocumentXDoctype.createGeneralEntity>
3558     ($decl->{name});
3559     ## TODO: Parameter entity...
3560     }
3561    
3562 wakaba 1.4 ~ (S) { }
3563    
3564     ~ (LIT) {
3565 wakaba 1.6 &_EntityValue ($doc => $doc, $decl => $decl);
3566 wakaba 1.4 } (LITA) {
3567 wakaba 1.6 &_EntityValueA ($doc => $doc, $decl => $decl);
3568 wakaba 1.4 } (Name == 'PUBLIC') {
3569     ~ (S) { }
3570    
3571 wakaba 1.18 &PubidLiteral ($decl => $node);
3572 wakaba 1.4
3573     ~ (S) { }
3574    
3575 wakaba 1.18 &SystemLiteral ($decl => $node);
3576    
3577     lang:Perl {
3578     $decl->{is_external_entity} = true;
3579     }
3580 wakaba 1.4 } (Name == 'SYSTEM') {
3581     ~ (S) { }
3582    
3583 wakaba 1.18 &SystemLiteral ($decl => $node);
3584    
3585     lang:Perl {
3586     $decl->{is_external_entity} = true;
3587     }
3588 wakaba 1.4 }
3589    
3590     ~? (S) {
3591     ~? (Name == 'NDATA') {
3592 wakaba 1.23 if-true ($is_param_entity) {
3593     lang:Perl : has-error {
3594     my $location;
3595     __CODE{xp|get-location-from-token::
3596     $token => {$token},
3597     $result => {$location},
3598     }__;
3599     my $continue = __DOMCore:ERROR{xp|wf-syntax-error::
3600     xp|error-token => {$token},
3601     c|location => {$location},
3602     }__;
3603     unless ($continue) {
3604     __EXCEPTION{DOMLS|PARSE_ERR::
3605     }__;
3606     }
3607     }
3608     }
3609 wakaba 1.4
3610     ~ (S) { }
3611    
3612     ~ (Name) {
3613 wakaba 1.26 lang:Perl ($v => $token.value) : has-error {
3614     __CODE{checkNCName:: $name => $v}__;
3615 wakaba 1.6 $decl->{notation} = $v;
3616 wakaba 1.11 $decl->{node}-><AG::x|Entity.notationName> ($v);
3617 wakaba 1.6 }
3618 wakaba 1.4 }
3619    
3620     ~? (S) { }
3621     }
3622     }
3623    
3624 wakaba 1.24 lang:Perl : has-error {
3625 wakaba 1.6 if ($self->{$decl->{is_param_entity} ? 'param_entity' : 'general_entity'}
3626     ->{$decl->{name}}) {
3627 wakaba 1.24 ## Predefined entity
3628     if (not $decl->{is_param_entity} and
3629     {lt => true, gt => true, amp => true,
3630     quot => true, apos => true}->{$decl->{name}}) {
3631     if ($decl->{is_external_entity}) {
3632     my $location;
3633     __CODE{xp|get-location-from-token::
3634     $token => {$token},
3635     $result => {$location},
3636     }__;
3637     my $continue = __c|ERROR{xp|error-internal-predefined-entity::
3638     xp|error-token => {$token},
3639     c|location => {$location},
3640     xp|name => {$decl->{name}},
3641     }__;
3642     unless ($continue) {
3643     __EXCEPTION{DOMLS|PARSE_ERR::
3644     }__;
3645     }
3646     } elsif (
3647     not ({gt => true, apos => true, quot => true}->{$decl->{name}} and
3648     ${$decl->{reptxt}} eq {
3649     gt => '>', apos => "'", quot => '"',
3650     }->{$decl->{name}}) and
3651     not (${$decl->{reptxt}} =~ /\A&#0*@{[{
3652     lt => '60', gt => '62', amp => '38',
3653     apos => '39', quot => '34',
3654     }->{$decl->{name}}]};\z/) and
3655     not (${$decl->{reptxt}} =~ /\A&#x0*(?:(?i)@{[{
3656     lt => '3C', gt => '3E', amp => '26',
3657     apos => '27', quot => '22',
3658     }->{$decl->{name}}]});\z/)
3659     ) {
3660     ## NOTE: See "SuikaWiki - Predefined Entities"
3661     ## "http://suika.fam.cx/gate/2005/sw/%E5%AE%9A%E7%BE%A9%E6%B8%88%E5%AE%9F%E4%BD%93".
3662     my $location;
3663     __CODE{xp|get-location-from-token::
3664     $token => {$token},
3665     $result => {$location},
3666     }__;
3667     my $continue = __c|ERROR{xp|error-malformed-predefined-entity::
3668     xp|error-token => {$token},
3669     c|location => {$location},
3670     xp|name => {$decl->{name}},
3671     xp|replacement-text => {${$decl->{reptxt}}},
3672     }__;
3673     unless ($continue) {
3674     __EXCEPTION{DOMLS|PARSE_ERR::
3675     }__;
3676     }
3677     }
3678 wakaba 1.25 $self->{dtdecl}->{<H::mn:node>}->{{
3679     lt => <H::d|hasLtDeclaration>,
3680     gt => <H::d|hasGtDeclaration>,
3681     amp => <H::d|hasAmpDeclaration>,
3682     apos => <H::d|hasAposDeclaration>,
3683     quot => <H::d|hasQuotDeclaration>,
3684     }->{$decl->{name}}} = true;
3685 wakaba 1.24 } else { ## Dupulicating declaration
3686     my $location;
3687     __CODE{xp|get-location-from-token::
3688     $token => {$token},
3689     $result => {$location},
3690     }__;
3691     my $continue = __c|ERROR{xp|warning-entity-declaration-ignored::
3692     xp|error-token => {$token},
3693     c|location => {$location},
3694     xp|name => {$decl->{name}},
3695     }__;
3696     unless ($continue) {
3697     __EXCEPTION{DOMLS|PARSE_ERR::
3698     }__;
3699     }
3700     }
3701 wakaba 1.25 } elsif ($self->{dont_process} and not $self->{standalone}) {
3702     ## TODO: |standalone| and parameter entities??
3703     my $location;
3704     __CODE{xp|get-location-from-token::
3705     $token => {$token},
3706     $result => {$location},
3707     }__;
3708     my $continue = __c|ERROR{xp|warning-entity-declaration-not-processed::
3709     xp|error-token => {$token},
3710     c|location => {$location},
3711     xp|name => {$decl->{name}},
3712     }__;
3713     unless ($continue) {
3714     __EXCEPTION{DOMLS|PARSE_ERR::
3715     }__;
3716     }
3717 wakaba 1.6 } else {
3718     $self->{$decl->{is_param_entity} ? 'param_entity' : 'general_entity'}
3719     ->{$decl->{name}} = $decl;
3720 wakaba 1.11 $self->{dtdef}-><M::DTDef.setGeneralEntityNode> ($decl->{node})
3721     unless $decl->{is_param_entity};
3722 wakaba 1.6 }
3723     }
3724    
3725 wakaba 1.4 ~ (MDC) {
3726     ?lexmode DTD;
3727     } else {
3728     ?lexmode DTD;
3729     }
3730     } // _EntityDeclaration
3731    
3732 wakaba 1.26 /*
3733     Notation Declaration
3734     */
3735     rule _NotationDeclaration {
3736 wakaba 1.4 // ~ (MDO) { }
3737     // ~ (Name == NOTATION) { }
3738    
3739     ~ (S) { }
3740    
3741 wakaba 1.26 my $name;
3742 wakaba 1.4 ~ (Name) {
3743 wakaba 1.26 lang:Perl ($v => $token.value) : has-error {
3744     __CODE{checkNCName:: $name => $v}__;
3745     $name = $v;
3746     }
3747     } else {
3748     lang:Perl {
3749     $name = '#INVALID';
3750     }
3751     }
3752 wakaba 1.4
3753     ~ (S) { }
3754    
3755 wakaba 1.17 lang:Perl {
3756 wakaba 1.26 $decl = $self->{docx}-><M::DocumentXDoctype.createNotation> ($name);
3757 wakaba 1.17 }
3758    
3759 wakaba 1.4 ~ (Name == 'PUBLIC') {
3760     ~ (S) { }
3761    
3762 wakaba 1.17 &PubidLiteral ($decl => $decl);
3763 wakaba 1.4
3764     ~? (S) {
3765     ~? (LIT) {
3766     ?lexmode SystemLiteral;
3767 wakaba 1.17 &_SystemLiteral ($decl => $decl);
3768 wakaba 1.4
3769     ~? (S) { }
3770     } (LITA) {
3771     ?lexmode SystemLiteralA;
3772 wakaba 1.17 &_SystemLiteral ($decl => $decl);
3773 wakaba 1.4
3774     ~? (S) { }
3775     }
3776     }
3777     } (Name == 'SYSTEM') {
3778     ~ (S) { }
3779    
3780 wakaba 1.17 &SystemLiteral ($decl => $decl);
3781 wakaba 1.4
3782     ~? (S) { }
3783     }
3784    
3785 wakaba 1.26 lang:Perl : has-error {
3786     if ($self->{dtdef}-><M::DTDef.getNotationNode> ($name)) {
3787     ## Dupulication
3788     my $location;
3789     __CODE{xp|get-location-from-token::
3790     $token => {$token},
3791     $result => {$location},
3792     }__;
3793     my $continue = __c|ERROR{xp|vc-unique-notation-name::
3794     xp|error-token => {$token},
3795     c|location => {$location},
3796     xp|name => {$name},
3797     }__;
3798     unless ($continue) {
3799     __EXCEPTION{DOMLS|PARSE_ERR::
3800     }__;
3801     }
3802     } else {
3803     $self->{dtdef}-><M::DTDef.setNotationNode> ($decl);
3804     }
3805     }
3806    
3807 wakaba 1.4 ~ (MDC) {
3808     ?lexmode DTD;
3809     } else {
3810     ?lexmode DTD;
3811     }
3812     } // _NotationDeclaration
3813    
3814 wakaba 1.11 rule _EntityValue ($decl) {
3815 wakaba 1.4 ?lexmode EntityValue;
3816    
3817     my $vals;
3818 wakaba 1.6 my $reptxt;
3819 wakaba 1.4 lang:Perl {
3820     $vals = [];
3821 wakaba 1.6 $reptxt = '';
3822 wakaba 1.4 }
3823    
3824     ~* (STRING) {
3825 wakaba 1.6 lang:Perl ($v => $token.value) {
3826     $reptxt .= $v;
3827     }
3828 wakaba 1.4 } (PERO) {
3829 wakaba 1.25 ?lexmode EntityReference;
3830 wakaba 1.19
3831     lang:Perl {
3832     $self->{has_xref} = true;
3833 wakaba 1.25 $self->{dont_process} = true;
3834 wakaba 1.19 }
3835 wakaba 1.6
3836     // TODO: Expand or wferror if internal subset
3837 wakaba 1.4
3838     ~ (Name) {
3839    
3840 wakaba 1.25 // Note that external subset and parameter entities are not supported
3841     lang:Perl ($name => $token.value) : has-error {
3842 wakaba 1.26 __CODE{checkNCName:: $name => $name}__;
3843 wakaba 1.25 my $location;
3844     __CODE{xp|get-location-from-token::
3845     $token => {$token},
3846     $result => {$location},
3847     }__;
3848     my $continue = __c|ERROR{xp|wf-pes-in-internal-subset::
3849     xp|error-token => {$token},
3850     c|location => {$location},
3851     xp|name => {$name},
3852     }__;
3853     unless ($continue) {
3854     __EXCEPTION{DOMLS|PARSE_ERR::
3855     }__;
3856     }
3857     }
3858 wakaba 1.4 }
3859    
3860     ~ (REFC) {
3861     ?lexmode EntityValue;
3862     } else {
3863     ?lexmode EntityValue;
3864     }
3865     } (HCRO) {
3866 wakaba 1.11 &_HexadecimalCharacterReferenceEV_ ($vals => $vals);
3867 wakaba 1.4
3868 wakaba 1.6 lang:Perl {
3869 wakaba 1.11 $reptxt .= $vals->[-1];
3870 wakaba 1.6 }
3871    
3872 wakaba 1.4 ~ (REFC) {
3873     ?lexmode EntityValue;
3874     } else {
3875     ?lexmode EntityValue;
3876     }
3877     } (CRO) {
3878 wakaba 1.11 &_NumericCharacterReferenceEV_ ($vals => $vals);
3879 wakaba 1.6
3880     lang:Perl {
3881 wakaba 1.11 $reptxt .= $vals->[-1];
3882 wakaba 1.6 }
3883 wakaba 1.4
3884     ~ (REFC) {
3885     ?lexmode EntityValue;
3886     } else {
3887     ?lexmode EntityValue;
3888     }
3889     } (ERO) {
3890 wakaba 1.11 &_GeneralEntityReferenceEV_ ($vals => $vals);
3891 wakaba 1.4
3892 wakaba 1.6 lang:Perl {
3893 wakaba 1.11 $reptxt .= '&' . $vals->[-1] . ';';
3894 wakaba 1.6 }
3895    
3896 wakaba 1.4 ~ (REFC) {
3897     ?lexmode EntityValue;
3898     } else {
3899     ?lexmode EntityValue;
3900     }
3901     }
3902    
3903     ~ (LIT) {
3904     ?lexmode MarkupDeclaration;
3905     } (LITA) {
3906     ?lexmode MarkupDeclaration;
3907     } else {
3908     ?lexmode MarkupDeclaration;
3909     }
3910 wakaba 1.6
3911     lang:Perl {
3912     $decl->{reptxt} = \$reptxt;
3913 wakaba 1.19 $decl->{has_replacement_text} = true;
3914 wakaba 1.6 }
3915 wakaba 1.4 } // _EntityValue
3916    
3917 wakaba 1.11 rule _EntityValueA ($decl) {
3918 wakaba 1.4 ?lexmode EntityValueA;
3919    
3920     my $vals;
3921 wakaba 1.6 my $reptxt;
3922 wakaba 1.4 lang:Perl {
3923     $vals = [];
3924 wakaba 1.6 $reptxt = '';
3925 wakaba 1.4 }
3926    
3927     ~* (STRING) {
3928 wakaba 1.6 lang:Perl ($v => $token.value) {
3929     $reptxt .= $v;
3930     }
3931 wakaba 1.4 } (PERO) {
3932 wakaba 1.25 ?lexmode EntityReference;
3933 wakaba 1.4
3934 wakaba 1.19 lang:Perl {
3935     $self->{has_xref} = true;
3936 wakaba 1.25 $self->{dont_process} = true;
3937 wakaba 1.19 }
3938    
3939 wakaba 1.6 // TODO: implement this
3940 wakaba 1.4 ~ (Name) {
3941    
3942 wakaba 1.25 // Note that external subset and parameter entities are not supported
3943     lang:Perl ($name => $token.value) : has-error {
3944 wakaba 1.26 __CODE{checkNCName:: $name => $name}__;
3945 wakaba 1.25 my $location;
3946     __CODE{xp|get-location-from-token::
3947     $token => {$token},
3948     $result => {$location},
3949     }__;
3950     my $continue = __c|ERROR{xp|wf-pes-in-internal-subset::
3951     xp|error-token => {$token},
3952     c|location => {$location},
3953     xp|name => {$name},
3954     }__;
3955     unless ($continue) {
3956     __EXCEPTION{DOMLS|PARSE_ERR::
3957     }__;
3958     }
3959     }
3960 wakaba 1.4 }
3961    
3962     ~ (REFC) {
3963     ?lexmode EntityValueA;
3964     } else {
3965     ?lexmode EntityValueA;
3966     }
3967     } (HCRO) {
3968 wakaba 1.11 &_HexadecimalCharacterReferenceEV_ ($vals => $vals);
3969 wakaba 1.4
3970 wakaba 1.6 lang:Perl {
3971 wakaba 1.11 $reptxt .= $vals->[-1];
3972 wakaba 1.6 }
3973    
3974    
3975 wakaba 1.4 ~ (REFC) {
3976     ?lexmode EntityValueA;
3977     } else {
3978     ?lexmode EntityValueA;
3979     }
3980     } (CRO) {
3981 wakaba 1.11 &_NumericCharacterReferenceEV_ ($vals => $vals);
3982 wakaba 1.4
3983 wakaba 1.6 lang:Perl {
3984 wakaba 1.11 $reptxt .= $vals->[-1];
3985 wakaba 1.6 }
3986    
3987 wakaba 1.4 ~ (REFC) {
3988     ?lexmode EntityValueA;
3989     } else {
3990     ?lexmode EntityValueA;
3991     }
3992     } (ERO) {
3993 wakaba 1.11 &_GeneralEntityReferenceEV_ ($vals => $vals);
3994 wakaba 1.4
3995 wakaba 1.6 lang:Perl {
3996 wakaba 1.11 $reptxt .= '&' . $vals->[-1] . ';';
3997 wakaba 1.6 }
3998    
3999 wakaba 1.4 ~ (REFC) {
4000     ?lexmode EntityValueA;
4001     } else {
4002     ?lexmode EntityValueA;
4003     }
4004     }
4005    
4006     ~ (LITA) {
4007     ?lexmode MarkupDeclaration;
4008     } else {
4009     ?lexmode MarkupDeclaration;
4010     }
4011 wakaba 1.6
4012     lang:Perl {
4013     $decl->{reptxt} = \$reptxt;
4014 wakaba 1.19 $decl->{has_replacement_text} = true;
4015 wakaba 1.6 }
4016 wakaba 1.4 } // _EntityValueA
4017    
4018    
4019     /*
4020     XML Name
4021     */
4022     lexmode NameChar {
4023     $NameStartChar10 := [
4024     '_' ':'
4025     // Letter
4026     // BaseChar
4027     U+0041..U+005A U+0061..U+007A U+00C0..U+00D6
4028     U+00D8..U+00F6 U+00F8..U+00FF U+0100..U+0131
4029     U+0134..U+013E U+0141..U+0148 U+014A..U+017E
4030     U+0180..U+01C3 U+01CD..U+01F0 U+01F4..U+01F5
4031     U+01FA..U+0217 U+0250..U+02A8 U+02BB..U+02C1
4032     U+0386 U+0388..U+038A U+038C U+038E..U+03A1
4033     U+03A3..U+03CE U+03D0..U+03D6 U+03DA U+03DC
4034     U+03DE U+03E0 U+03E2..U+03F3 U+0401..U+040C
4035     U+040E..U+044F U+0451..U+045C U+045E..U+0481
4036     U+0490..U+04C4 U+04C7..U+04C8 U+04CB..U+04CC
4037     U+04D0..U+04EB U+04EE..U+04F5 U+04F8..U+04F9
4038     U+0531..U+0556 U+0559 U+0561..U+0586
4039     U+05D0..U+05EA U+05F0..U+05F2 U+0621..U+063A
4040     U+0641..U+064A U+0671..U+06B7 U+06BA..U+06BE
4041     U+06C0..U+06CE U+06D0..U+06D3 U+06D5
4042     U+06E5..U+06E6 U+0905..U+0939 U+093D
4043     U+0958..U+0961 U+0985..U+098C U+098F..U+0990
4044     U+0993..U+09A8 U+09AA..U+09B0 U+09B2
4045     U+09B6..U+09B9 U+09DC..U+09DD U+09DF..U+09E1
4046     U+09F0..U+09F1 U+0A05..U+0A0A U+0A0F..U+0A10
4047     U+0A13..U+0A28 U+0A2A..U+0A30 U+0A32..U+0A33
4048     U+0A35..U+0A36 U+0A38..U+0A39 U+0A59..U+0A5C
4049     U+0A5E U+0A72..U+0A74 U+0A85..U+0A8B U+0A8D
4050     U+0A8F..U+0A91 U+0A93..U+0AA8 U+0AAA..U+0AB0
4051     U+0AB2..U+0AB3 U+0AB5..U+0AB9 U+0ABD U+0AE0
4052     U+0B05..U+0B0C U+0B0F..U+0B10 U+0B13..U+0B28
4053     U+0B2A..U+0B30 U+0B32..U+0B33 U+0B36..U+0B39
4054     U+0B3D U+0B5C..U+0B5D U+0B5F..U+0B61
4055     U+0B85..U+0B8A U+0B8E..U+0B90 U+0B92..U+0B95
4056     U+0B99..U+0B9A U+0B9C U+0B9E..U+0B9F
4057     U+0BA3..U+0BA4 U+0BA8..U+0BAA U+0BAE..U+0BB5
4058     U+0BB7..U+0BB9 U+0C05..U+0C0C U+0C0E..U+0C10
4059     U+0C12..U+0C28 U+0C2A..U+0C33 U+0C35..U+0C39
4060     U+0C60..U+0C61 U+0C85..U+0C8C U+0C8E..U+0C90
4061     U+0C92..U+0CA8 U+0CAA..U+0CB3 U+0CB5..U+0CB9
4062     U+0CDE U+0CE0..U+0CE1 U+0D05..U+0D0C
4063     U+0D0E..U+0D10 U+0D12..U+0D28 U+0D2A..U+0D39
4064     U+0D60..U+0D61 U+0E01..U+0E2E U+0E30
4065     U+0E32..U+0E33 U+0E40..U+0E45 U+0E81..U+0E82
4066     U+0E84 U+0E87..U+0E88 U+0E8A U+0E8D
4067     U+0E94..U+0E97 U+0E99..U+0E9F U+0EA1..U+0EA3
4068     U+0EA5 U+0EA7 U+0EAA..U+0EAB U+0EAD..U+0EAE
4069     U+0EB0 U+0EB2..U+0EB3 U+0EBD U+0EC0..U+0EC4
4070     U+0F40..U+0F47 U+0F49..U+0F69 U+10A0..U+10C5
4071     U+10D0..U+10F6 U+1100 U+1102..U+1103
4072     U+1105..U+1107 U+1109 U+110B..U+110C
4073     U+110E..U+1112 U+113C U+113E U+1140 U+114C
4074     U+114E U+1150 U+1154..U+1155 U+1159
4075     U+115F..U+1161 U+1163 U+1165 U+1167 U+1169
4076     U+116D..U+116E U+1172..U+1173 U+1175 U+119E
4077     U+11A8 U+11AB U+11AE..U+11AF U+11B7..U+11B8
4078     U+11BA U+11BC..U+11C2 U+11EB U+11F0 U+11F9
4079     U+1E00..U+1E9B U+1EA0..U+1EF9 U+1F00..U+1F15
4080     U+1F18..U+1F1D U+1F20..U+1F45 U+1F48..U+1F4D
4081     U+1F50..U+1F57 U+1F59 U+1F5B U+1F5D
4082     U+1F5F..U+1F7D U+1F80..U+1FB4 U+1FB6..U+1FBC
4083     U+1FBE U+1FC2..U+1FC4 U+1FC6..U+1FCC
4084     U+1FD0..U+1FD3 U+1FD6..U+1FDB U+1FE0..U+1FEC
4085     U+1FF2..U+1FF4 U+1FF6..U+1FFC U+2126
4086     U+212A..U+212B U+212E U+2180..U+2182
4087     U+3041..U+3094 U+30A1..U+30FA U+3105..U+312C
4088     U+AC00..U+D7A3
4089     // Ideographic
4090     U+4E00..U+9FA5 U+3007 U+3021..U+3029
4091     ];
4092     $NameChar10 := [
4093     '.' '-' '_' ':'
4094     // Letter
4095     // BaseChar
4096     U+0041..U+005A U+0061..U+007A U+00C0..U+00D6
4097     U+00D8..U+00F6 U+00F8..U+00FF U+0100..U+0131
4098     U+0134..U+013E U+0141..U+0148 U+014A..U+017E
4099     U+0180..U+01C3 U+01CD..U+01F0 U+01F4..U+01F5
4100     U+01FA..U+0217 U+0250..U+02A8 U+02BB..U+02C1
4101     U+0386 U+0388..U+038A U+038C U+038E..U+03A1
4102     U+03A3..U+03CE U+03D0..U+03D6 U+03DA U+03DC
4103     U+03DE U+03E0 U+03E2..U+03F3 U+0401..U+040C
4104     U+040E..U+044F U+0451..U+045C U+045E..U+0481
4105     U+0490..U+04C4 U+04C7..U+04C8 U+04CB..U+04CC
4106     U+04D0..U+04EB U+04EE..U+04F5 U+04F8..U+04F9
4107     U+0531..U+0556 U+0559 U+0561..U+0586
4108     U+05D0..U+05EA U+05F0..U+05F2 U+0621..U+063A
4109     U+0641..U+064A U+0671..U+06B7 U+06BA..U+06BE
4110     U+06C0..U+06CE U+06D0..U+06D3 U+06D5
4111     U+06E5..U+06E6 U+0905..U+0939 U+093D
4112     U+0958..U+0961 U+0985..U+098C U+098F..U+0990
4113     U+0993..U+09A8 U+09AA..U+09B0 U+09B2
4114     U+09B6..U+09B9 U+09DC..U+09DD U+09DF..U+09E1
4115     U+09F0..U+09F1 U+0A05..U+0A0A U+0A0F..U+0A10
4116     U+0A13..U+0A28 U+0A2A..U+0A30 U+0A32..U+0A33
4117     U+0A35..U+0A36 U+0A38..U+0A39 U+0A59..U+0A5C
4118     U+0A5E U+0A72..U+0A74 U+0A85..U+0A8B U+0A8D
4119     U+0A8F..U+0A91 U+0A93..U+0AA8 U+0AAA..U+0AB0
4120     U+0AB2..U+0AB3 U+0AB5..U+0AB9 U+0ABD U+0AE0
4121     U+0B05..U+0B0C U+0B0F..U+0B10 U+0B13..U+0B28
4122     U+0B2A..U+0B30 U+0B32..U+0B33 U+0B36..U+0B39
4123     U+0B3D U+0B5C..U+0B5D U+0B5F..U+0B61
4124     U+0B85..U+0B8A U+0B8E..U+0B90 U+0B92..U+0B95
4125     U+0B99..U+0B9A U+0B9C U+0B9E..U+0B9F
4126     U+0BA3..U+0BA4 U+0BA8..U+0BAA U+0BAE..U+0BB5
4127     U+0BB7..U+0BB9 U+0C05..U+0C0C U+0C0E..U+0C10
4128     U+0C12..U+0C28 U+0C2A..U+0C33 U+0C35..U+0C39
4129     U+0C60..U+0C61 U+0C85..U+0C8C U+0C8E..U+0C90
4130     U+0C92..U+0CA8 U+0CAA..U+0CB3 U+0CB5..U+0CB9
4131     U+0CDE U+0CE0..U+0CE1 U+0D05..U+0D0C
4132     U+0D0E..U+0D10 U+0D12..U+0D28 U+0D2A..U+0D39
4133     U+0D60..U+0D61 U+0E01..U+0E2E U+0E30
4134     U+0E32..U+0E33 U+0E40..U+0E45 U+0E81..U+0E82
4135     U+0E84 U+0E87..U+0E88 U+0E8A U+0E8D
4136     U+0E94..U+0E97 U+0E99..U+0E9F U+0EA1..U+0EA3
4137     U+0EA5 U+0EA7 U+0EAA..U+0EAB U+0EAD..U+0EAE
4138     U+0EB0 U+0EB2..U+0EB3 U+0EBD U+0EC0..U+0EC4
4139     U+0F40..U+0F47 U+0F49..U+0F69 U+10A0..U+10C5
4140     U+10D0..U+10F6 U+1100 U+1102..U+1103
4141     U+1105..U+1107 U+1109 U+110B..U+110C
4142     U+110E..U+1112 U+113C U+113E U+1140 U+114C
4143     U+114E U+1150 U+1154..U+1155 U+1159
4144     U+115F..U+1161 U+1163 U+1165 U+1167 U+1169
4145     U+116D..U+116E U+1172..U+1173 U+1175 U+119E
4146     U+11A8 U+11AB U+11AE..U+11AF U+11B7..U+11B8
4147     U+11BA U+11BC..U+11C2 U+11EB U+11F0 U+11F9
4148     U+1E00..U+1E9B U+1EA0..U+1EF9 U+1F00..U+1F15
4149     U+1F18..U+1F1D U+1F20..U+1F45 U+1F48..U+1F4D
4150     U+1F50..U+1F57 U+1F59 U+1F5B U+1F5D
4151     U+1F5F..U+1F7D U+1F80..U+1FB4 U+1FB6..U+1FBC
4152     U+1FBE U+1FC2..U+1FC4 U+1FC6..U+1FCC
4153     U+1FD0..U+1FD3 U+1FD6..U+1FDB U+1FE0..U+1FEC
4154     U+1FF2..U+1FF4 U+1FF6..U+1FFC U+2126
4155     U+212A..U+212B U+212E U+2180..U+2182
4156     U+3041..U+3094 U+30A1..U+30FA U+3105..U+312C
4157     U+AC00..U+D7A3
4158     // Ideographic
4159     U+4E00..U+9FA5 U+3007 U+3021..U+3029
4160     // Digit
4161     U+0030..U+0039 U+0660..U+0669 U+06F0..U+06F9
4162     U+0966..U+096F U+09E6..U+09EF U+0A66..U+0A6F
4163     U+0AE6..U+0AEF U+0B66..U+0B6F U+0BE7..U+0BEF
4164     U+0C66..U+0C6F U+0CE6..U+0CEF U+0D66..U+0D6F
4165     U+0E50..U+0E59 U+0ED0..U+0ED9 U+0F20..U+0F29
4166     // CombiningChar
4167     U+0300..U+0345 U+0360..U+0361 U+0483..U+0486
4168     U+0591..U+05A1 U+05A3..U+05B9 U+05BB..U+05BD
4169     U+05BF U+05C1..U+05C2 U+05C4 U+064B..U+0652
4170     U+0670 U+06D6..U+06DC U+06DD..U+06DF
4171     U+06E0..U+06E4 U+06E7..U+06E8 U+06EA..U+06ED
4172     U+0901..U+0903 U+093C U+093E..U+094C U+094D
4173     U+0951..U+0954 U+0962..U+0963 U+0981..U+0983
4174     U+09BC U+09BE U+09BF U+09C0..U+09C4
4175     U+09C7..U+09C8 U+09CB..U+09CD U+09D7
4176     U+09E2..U+09E3 U+0A02 U+0A3C U+0A3E U+0A3F
4177     U+0A40..U+0A42 U+0A47..U+0A48 U+0A4B..U+0A4D
4178     U+0A70..U+0A71 U+0A81..U+0A83 U+0ABC
4179     U+0ABE..U+0AC5 U+0AC7..U+0AC9 U+0ACB..U+0ACD
4180     U+0B01..U+0B03 U+0B3C U+0B3E..U+0B43
4181     U+0B47..U+0B48 U+0B4B..U+0B4D U+0B56..U+0B57
4182     U+0B82..U+0B83 U+0BBE..U+0BC2 U+0BC6..U+0BC8
4183     U+0BCA..U+0BCD U+0BD7 U+0C01..U+0C03
4184     U+0C3E..U+0C44 U+0C46..U+0C48 U+0C4A..U+0C4D
4185     U+0C55..U+0C56 U+0C82..U+0C83 U+0CBE..U+0CC4
4186     U+0CC6..U+0CC8 U+0CCA..U+0CCD U+0CD5..U+0CD6
4187     U+0D02..U+0D03 U+0D3E..U+0D43 U+0D46..U+0D48
4188     U+0D4A..U+0D4D U+0D57 U+0E31 U+0E34..U+0E3A
4189     U+0E47..U+0E4E U+0EB1 U+0EB4..U+0EB9
4190     U+0EBB..U+0EBC U+0EC8..U+0ECD U+0F18..U+0F19
4191     U+0F35 U+0F37 U+0F39 U+0F3E U+0F3F
4192     U+0F71..U+0F84 U+0F86..U+0F8B U+0F90..U+0F95
4193     U+0F97 U+0F99..U+0FAD U+0FB1..U+0FB7 U+0FB9
4194     U+20D0..U+20DC U+20E1 U+302A..U+302F U+3099
4195     U+309A
4196     // Extender
4197     U+00B7 U+02D0 U+02D1 U+0387 U+0640 U+0E46
4198     U+0EC6 U+3005 U+3031..U+3035 U+309D..U+309E
4199     U+30FC..U+30FE
4200     ];
4201 wakaba 1.1
4202     $NameStartChar11 := [
4203     ':' '_'
4204     'A' 'B' 'C' 'D' 'E' 'F' 'G' 'H' 'I' 'J' 'K' 'L' 'M'
4205     'N' 'O' 'P' 'Q' 'R' 'S' 'T' 'U' 'V' 'W' 'X' 'Y' 'Z'
4206     'a' 'b' 'c' 'd' 'e' 'f' 'g' 'h' 'i' 'j' 'k' 'l' 'm'
4207     'n' 'o' 'p' 'q' 'r' 's' 't' 'u' 'v' 'w' 'x' 'y' 'z'
4208     U+00C0..U+00D6 U+00D8..U+00F6 U+00F8..U+02FF
4209     U+0370..U+037D U+037F..U+1FFF U+200C..U+200D
4210     U+2070..U+218F U+2C00..U+2FEF U+3001..U+D7FF
4211     U+F900..U+FDCF U+FDF0..U+FFFD U+10000..U+EFFFF
4212     ];
4213     $NameChar11 := [
4214     '-' '.' '0' '1' '2' '3' '4' '5' '6' '7' '8' '9'
4215     U+00B7 U+0300..U+036F U+203F..U+2040
4216     // NameStartChar
4217     ':' '_'
4218     'A' 'B' 'C' 'D' 'E' 'F' 'G' 'H' 'I' 'J' 'K' 'L' 'M'
4219     'N' 'O' 'P' 'Q' 'R' 'S' 'T' 'U' 'V' 'W' 'X' 'Y' 'Z'
4220     'a' 'b' 'c' 'd' 'e' 'f' 'g' 'h' 'i' 'j' 'k' 'l' 'm'
4221     'n' 'o' 'p' 'q' 'r' 's' 't' 'u' 'v' 'w' 'x' 'y' 'z'
4222     U+00C0..U+00D6 U+00D8..U+00F6 U+00F8..U+02FF
4223     U+0370..U+037D U+037F..U+1FFF U+200C..U+200D
4224     U+2070..U+218F U+2C00..U+2FEF U+3001..U+D7FF
4225     U+F900..U+FDCF U+FDF0..U+FFFD U+10000..U+EFFFF
4226     ];
4227 wakaba 1.4 } // NameChar
4228    
4229     lexmode Name
4230     : extends => 'NameChar'
4231     {
4232 wakaba 1.1 Name : value := $NameStartChar11 $NameChar11*;
4233     } // Name
4234 wakaba 1.4
4235     lexmode Nmtoken
4236     : extends => 'NameChar'
4237     {
4238     Nmtoken : value := $NameChar11*;
4239     } // Nmtoken
4240 wakaba 1.1
4241     /*
4242 wakaba 1.14 S
4243 wakaba 1.1 */
4244     lexmode S {
4245 wakaba 1.14 $s := [U+0009 U+000A U+000D U+0020];
4246     S := $s+;
4247 wakaba 1.1 } // S
4248    
4249     /*
4250     Document end scanning mode
4251     */
4252     lexmode DocumentEnd
4253     : standalone
4254     : extends => 'S'
4255     {
4256     /*
4257     Processing instruction
4258     */
4259     PIO := ['<'] ['?'];
4260    
4261     /*
4262     Comment declaration
4263     */
4264     CDO := ['<'] ['!'] ['-'] ['-'];
4265     } // DocumentEnd
4266    
4267     /*
4268     Document misc scanning mode
4269    
4270     This mode scans |Misc| constructions as well
4271     as document element's start tag.
4272     */
4273     lexmode DocumentMisc
4274     : standalone
4275     : extends => 'DocumentEnd'
4276     {
4277     /*
4278     Document element start tag
4279     */
4280     STAGO := ['<'];
4281     } // DocumentMisc
4282    
4283     /*
4284     Document prolog scanning mode
4285     */
4286     lexmode DocumentProlog
4287     : standalone
4288     : extends => 'DocumentMisc'
4289     {
4290     /*
4291     |DOCTYPE| declaration
4292     */
4293     MDO := ['<'] ['!'];
4294     } // DocumentProlog
4295 wakaba 1.16
4296 wakaba 1.1 /*
4297 wakaba 1.16 Document Start Scanning Mode
4298 wakaba 1.1 */
4299     lexmode DocumentStart
4300     : standalone
4301     : extends => 'DocumentProlog'
4302     {
4303     /*
4304     XML declaration
4305     */
4306 wakaba 1.16 XDO := ['<'] ['?'] ['x'] ['m'] ['l'];
4307 wakaba 1.1 } // DocumentStart
4308    
4309     /*
4310     Comment declaration scanning mode
4311     */
4312     lexmode CommentDeclaration
4313     : standalone
4314     {
4315     /*
4316     Comment close
4317     */
4318     COM := ['-'] ['-'];
4319    
4320     /*
4321     Comment data
4322     */
4323 wakaba 1.15 ?default-token STRING : value;
4324 wakaba 1.1 } // CommentDeclaration
4325    
4326     /*
4327     Processing instruction name and |S| scanning mode
4328     */
4329     lexmode PIName
4330     : standalone
4331     : extends => 'Name'
4332     : extends => 'S'
4333     {
4334     /*
4335     Processing instruction close
4336     */
4337     PIC := ['?'] ['>'];
4338     } // PIName
4339    
4340     /*
4341 wakaba 1.16 Processing instruction name and |S| scanning mode
4342     */
4343     lexmode PINmtoken
4344     : standalone
4345     : extends => 'Nmtoken'
4346     : extends => 'S'
4347     {
4348     /*
4349     Processing instruction close
4350     */
4351     PIC := ['?'] ['>'];
4352     } // PINmtoken
4353    
4354     /*
4355 wakaba 1.1 Processing instruction data scanning mode
4356     */
4357     lexmode PIData
4358     : standalone
4359     {
4360     /*
4361     Processing instruction close
4362     */
4363     PIC := ['?'] ['>'];
4364    
4365     /*
4366     Processing instruction target data
4367     */
4368 wakaba 1.2 ?default-token DATA : value;
4369 wakaba 1.1 } // PIData
4370    
4371     /*
4372     Content of element scanning mode
4373     */
4374     lexmode ElementContent
4375     : standalone
4376     {
4377     /*
4378     Start tag open
4379     */
4380     STAGO := ['<'];
4381    
4382     /*
4383     End tag open
4384     */
4385     ETAGO := ['<'] ['/'];
4386    
4387     /*
4388     Hexadecimal character reference open
4389     */
4390     HCRO := ['&'] ['#'] ['x'];
4391    
4392     /*
4393     Numeric character reference open
4394     */
4395     CRO := ['&'] ['#'];
4396    
4397     /*
4398     General entity reference open
4399     */
4400     ERO := ['&'];
4401    
4402     /*
4403     Comment declaration open
4404     */
4405     CDO := ['<'] ['!'] ['-'] ['-'];
4406    
4407     /*
4408     CDATA section open
4409     */
4410     CDSO := ['<'] ['!'] ['[']
4411     ['C'] ['D'] ['A'] ['T'] ['A'] ['['];
4412    
4413     /*
4414     Processing instruction open
4415     */
4416     PIO := ['<'] ['?'];
4417 wakaba 1.2
4418     /*
4419     Markup section end
4420     */
4421     MSE := [']'] [']'] ['>'];
4422    
4423     /*
4424     Character data
4425     */
4426     /*
4427     Character data and/or |MSE|
4428     */
4429     ?default-token CharData : value;
4430 wakaba 1.1 } // ElementContent
4431    
4432     /*
4433     CDATA section content scanning mode
4434     */
4435     lexmode CDATASectionContent
4436     : standalone
4437     {
4438     /*
4439     Markup section end
4440     */
4441     MSE := [']'] [']'] ['>'];
4442    
4443     /*
4444     Character data
4445 wakaba 1.2 */
4446     ?default-token CData : value;
4447 wakaba 1.1 } // CDATASectionContent
4448    
4449     lexmode EntityReference
4450     : standalone
4451     : extends => 'Name'
4452     {
4453     /*
4454     Reference close
4455     */
4456     REFC := [';'];
4457     } // EntityReference
4458    
4459     lexmode NumericCharacterReference
4460     : standalone
4461     {
4462     /*
4463     Decimal number
4464     */
4465     $digit := ['0' '1' '2' '3' '4' '5' '6' '7' '8' '9'];
4466     NUMBER : value := $digit+;
4467    
4468     /*
4469     Reference close
4470     */
4471     REFC := [';'];
4472     } // NumericCharacterReference
4473    
4474     lexmode HexadecimalCharacterReference
4475     : standalone
4476     {
4477     /*
4478     Hexadecimal number
4479     */
4480     $hexdigit := ['0' '1' '2' '3' '4' '5' '6' '7' '8' '9'
4481     'A' 'B' 'C' 'D' 'E' 'F'
4482     'a' 'b' 'c' 'd' 'e' 'f'];
4483     Hex : value := $hexdigit+;
4484    
4485     /*
4486     Reference close
4487     */
4488     REFC := [';'];
4489     } // HexadecimalCharacterReference
4490    
4491 wakaba 1.16 /*
4492     The XML Declaration and Text Declaration Scanning Mode
4493     */
4494 wakaba 1.3 lexmode XMLDeclaration
4495     : standalone
4496     : extends => 'Name'
4497     : extends => 'S'
4498     {
4499    
4500     /*
4501     Value indicator
4502     */
4503     VI := ['='];
4504    
4505     /*
4506     Literal open
4507     */
4508     LIT := ['"'];
4509     LITA := [U+0027];
4510    
4511     /*
4512     Processing instruction close
4513 wakaba 1.16
4514     The |PIC|, i.e. |?>|, is split into two tokens |PIC1| and |PIC2|
4515     in this scanning mode to set |no_xml11_eol| flag in the
4516     |_XMLDeclaration_| |rule|.
4517 wakaba 1.3 */
4518 wakaba 1.16 PIC1 := ['?'];
4519     PIC2 := ['>'];
4520 wakaba 1.3 } // XMLDeclaration
4521 wakaba 1.16
4522     /*
4523     The XML Declaration or Processing Instruction Scanning Mode
4524    
4525     '<?xml' S ...
4526     (DocumentStart) (XMLDeclarationOrPI) (XMLDeclaration)
4527     '<?xml' '1' S ...
4528     (DocumentStart) (XMLDeclarationOrPI) (PINmtoken)(PIName) (PITarget)
4529     '<?xml' '-' 'stylesheet' S ...
4530     (DocumentStart) (XMLDeclarationOrPI) (PINmtoken) (PIName) (PITarget)
4531     */
4532     lexmode XMLDeclarationOrPI
4533     : standalone
4534     : extends => 'NameChar'
4535     : extends => 'S'
4536     {
4537     NameChar : value := $NameChar11;
4538     } // XMLDeclarationOrPI
4539 wakaba 1.3
4540 wakaba 1.1 lexmode StartTag
4541     : standalone
4542     : extends => 'Name'
4543     : extends => 'S'
4544     {
4545    
4546     /*
4547     Value indicator
4548     */
4549     VI := ['='];
4550    
4551     /*
4552     Literal open
4553     */
4554     LIT := ['"'];
4555     LITA := [U+0027];
4556    
4557     /*
4558     Tag close
4559     */
4560     TAGC := ['>'];
4561    
4562     /*
4563 wakaba 1.6 Null end-tag enabled start-tag close
4564 wakaba 1.1 */
4565 wakaba 1.6 NESTC := ['/'];
4566 wakaba 1.1 } // StartTag
4567    
4568     lexmode EndTag
4569     : standalone
4570     : extends => 'Name'
4571     : extends => 'S'
4572     {
4573     /*
4574     Tag close
4575     */
4576     TAGC := ['>'];
4577     } // EndTag
4578    
4579     lexmode AttributeValueLiteral_ {
4580     ERO := ['&'];
4581     CRO := ['&'] ['#'];
4582     HCRO := ['&'] ['#'] ['x'];
4583     } // AttributeValueLiteral_
4584    
4585     lexmode AttributeValueLiteral
4586     : standalone
4587     : extends => 'AttributeValueLiteral_'
4588     {
4589     LIT := ['"'];
4590 wakaba 1.3 STRING : value := [^'"' '&' '<']+;
4591 wakaba 1.1 } // AttributeValueLiteral
4592    
4593     lexmode AttributeValueLiteralA
4594     : standalone
4595     : extends => 'AttributeValueLiteral_'
4596     {
4597 wakaba 1.4 LITA := [U+0027];
4598 wakaba 1.3 STRING : value := [^U+0027 '&' '<']+;
4599 wakaba 1.1 } // AttributeValueLiteralA
4600 wakaba 1.11
4601     lexmode AttributeValueLiteralE
4602     : standalone
4603     : extends => 'AttributeValueLiteral_'
4604     {
4605     STRING : value := [^'&' '<']+;
4606     } // AttributeValueLiteralE
4607 wakaba 1.4
4608     lexmode EntityValue_ {
4609     PERO := ['%'];
4610     ERO := ['&'];
4611     CRO := ['&'] ['#'];
4612     HCRO := ['&'] ['#'] ['x'];
4613     } // EntityValue_
4614    
4615     lexmode EntityValue
4616     : standalone
4617     : extends => 'EntityValue_'
4618     {
4619     LIT := ['"'];
4620     STRING : value := [^'"' '&' '%']+;
4621     } // EntityValue
4622    
4623     lexmode EntityValueA
4624     : standalone
4625     : extends => 'EntityValue_'
4626     {
4627     LITA := [U+0027];
4628     STRING : value := [^U+0027 '&' '%']+;
4629     } // EntityValueA
4630    
4631     lexmode SystemLiteral
4632     : standalone
4633     {
4634     LIT := ['"'];
4635     ?default-token STRING : value;
4636     } // SystemLiteral
4637    
4638     lexmode SystemLiteralA
4639     : standalone
4640     {
4641     LITA := [U+0027];
4642     ?default-token STRING : value;
4643     } // SystemLiteralA
4644    
4645     lexmode DTD
4646     : standalone
4647     : extends => 'S'
4648     {
4649     /*
4650     Markup declaration open
4651     */
4652     MDO := ['<'] ['!'];
4653    
4654     /*
4655     Comment declaration open
4656     */
4657     CDO := ['<'] ['!'] ['-'] ['-'];
4658    
4659     /*
4660     Processing instruction open
4661     */
4662     PIO := ['<'] ['?'];
4663    
4664     /*
4665     Parameter entity reference open
4666     */
4667     PERO := ['%'];
4668    
4669     /*
4670     Declaration subset close
4671     */
4672     DSC := [']'];
4673    
4674     /*
4675     Contition section open
4676     */
4677     CSO := ['<'] ['!'] ['['];
4678     } // DTD
4679    
4680     /*
4681     Markup declaration scanning mode
4682    
4683     This mode is used to recognize |MDC| that terminates
4684     a comment declaration as well as the base |lexmode|
4685     for e.g. document type declaration scanning mode.
4686     */
4687     lexmode MarkupDeclaration
4688     : standalone
4689     : extends => 'Name'
4690     : extends => 'S'
4691     {
4692     /*
4693     Markup declaration close
4694     */
4695     MDC := ['>'];
4696    
4697     /*
4698     Literal open
4699     */
4700     LIT := ['"'];
4701    
4702     /*
4703     Alternative literal open
4704     */
4705     LITA := [U+0027];
4706    
4707     /*
4708     Parameter entity reference open
4709     */
4710     PERO := ['%'];
4711    
4712     /*
4713     Declaration subset open
4714     */
4715     DSO := ['['];
4716     } // MarkupDeclaration
4717    
4718     lexmode ElementDeclaration
4719     : standalone
4720     : extends => 'MarkupDeclaration'
4721     {
4722     /*
4723     Model group open
4724     */
4725     MGO := ['('];
4726    
4727     /*
4728     Model group close
4729     */
4730     MGC := [')'];
4731    
4732     /*
4733     Reserved name indicator
4734     */
4735     RNI := ['#'];
4736    
4737     /*
4738     Occurence indicators
4739     */
4740     OPT := ['?'];
4741     REP := ['*'];
4742     PLUS := ['+'];
4743    
4744     /*
4745     Connectors
4746     */
4747     OR := ['|'];
4748     SEQ := [','];
4749     } // ElementDeclaration
4750    
4751     lexmode AttlistDeclaration
4752     : standalone
4753     : extends => 'MarkupDeclaration'
4754     {
4755     /*
4756     Enumeration group open
4757     */
4758     EGO := ['('];
4759    
4760     /*
4761     Enumeration group close
4762     */
4763     EGC := [')'];
4764    
4765     /*
4766     Enumeration choice delimiter
4767     */
4768     OR := ['|'];
4769    
4770     /*
4771     Reserved name indicator
4772     */
4773     RNI := ['#'];
4774     } // AttlistDeclaration
4775    
4776     lexmode Enumeration
4777     : standalone
4778     : extends => 'Nmtoken'
4779     : extends => 'S'
4780     {
4781     /*
4782     Enumeration group close
4783     */
4784     EGC := [')'];
4785    
4786     /*
4787     Enumeration choice delimiter
4788     */
4789     OR := ['|'];
4790     } // Enumeration
4791    
4792 wakaba 1.1
4793     token-error default : default {
4794     lang:Perl {
4795 wakaba 1.3 my $location;
4796     __CODE{xp|get-location-from-token::
4797     $token => {$token},
4798     $result => {$location},
4799     }__;
4800     my $continue = __DOMCore:ERROR{xp|wf-syntax-error::
4801 wakaba 1.1 xp|error-token => {$token},
4802     DOMCore|location => {$location},
4803     }__;
4804     unless ($continue) {
4805     __EXCEPTION{DOMLS|PARSE_ERR::
4806     }__;
4807     }
4808     }
4809     } // default
4810 wakaba 1.5
4811 wakaba 1.26 @ResourceDef:
4812     @@ForCheck: ManakaiDOM|ForClass
4813     @@QName: checkNCName
4814     @@rdf:type: DISPerl|BlockCode
4815     @@PerlDef:
4816     if (($self->{xml_version} eq '1.0' and
4817     not <Code::DOMMain|testXML10Name:: $INPUT = $name>) or
4818     ($self->{xml_version} eq '1.1' and
4819     not <Code::DOMMain|testXML11Name:: $INPUT = $name>)) {
4820     my $__location;
4821     __CODE{xp|get-location-from-token::
4822     $token => {$token},
4823     $result => {$__location},
4824     }__;
4825     my $__continue = __c|ERROR{xp|wf-invalid-character-in-node-name::
4826     xp|error-token => {$token},
4827     c|location => {$__location},
4828     xp|name => {$name},
4829     infoset|version => {$self->{xml_version}},
4830     }__;
4831     unless ($__continue) {
4832     __EXCEPTION{DOMLS|PARSE_ERR::
4833     }__;
4834     }
4835     } elsif (index ($name, ':') > -1) {
4836     my $__location;
4837     __CODE{xp|get-location-from-token::
4838     $token => {$token},
4839     $result => {$__location},
4840     }__;
4841     my $__continue = __c|ERROR{xp|nswf-legal-ncname::
4842     xp|error-token => {$token},
4843     c|location => {$__location},
4844     xp|name => {$name},
4845     infoset|version => {$self->{xml_version}},
4846     }__;
4847     unless ($__continue) {
4848     __EXCEPTION{DOMLS|PARSE_ERR::
4849     }__;
4850     }
4851     }
4852    
4853     @ResourceDef:
4854     @@ForCheck: ManakaiDOM|ForClass
4855     @@QName: checkQName
4856     @@rdf:type: DISPerl|BlockCode
4857     @@PerlDef:
4858     if (($self->{xml_version} eq '1.0' and
4859     not <Code::DOMMain|testXML10Name:: $INPUT = $name>) or
4860     ($self->{xml_version} eq '1.1' and
4861     not <Code::DOMMain|testXML11Name:: $INPUT = $name>)) {
4862     my $__location;
4863     __CODE{xp|get-location-from-token::
4864     $token => {$token},
4865     $result => {$__location},
4866     }__;
4867     my $__continue = __c|ERROR{xp|wf-invalid-character-in-node-name::
4868     xp|error-token => {$token},
4869     c|location => {$__location},
4870     xp|name => {$name},
4871     infoset|version => {$self->{xml_version}},
4872     }__;
4873     unless ($__continue) {
4874     __EXCEPTION{DOMLS|PARSE_ERR::
4875     }__;
4876     }
4877     } elsif (($self->{xml_version} eq '1.0' and
4878     not <Code::DOMMain|testXML10QName:: $INPUT = $name>) or
4879     ($self->{xml_version} eq '1.1' and
4880     not <Code::DOMMain|testXML11QName:: $INPUT = $name>)) {
4881     my $__location;
4882     __CODE{xp|get-location-from-token::
4883     $token => {$token},
4884     $result => {$__location},
4885     }__;
4886     my $__continue = __c|ERROR{xp|nswf-legal-qname::
4887     xp|error-token => {$token},
4888     c|location => {$__location},
4889     xp|name => {$name},
4890     infoset|version => {$self->{xml_version}},
4891     }__;
4892     unless ($__continue) {
4893     __EXCEPTION{DOMLS|PARSE_ERR::
4894     }__;
4895     }
4896     }
4897    
4898    
4899 wakaba 1.5 @XMLTests:
4900     @@XMLTest:
4901 wakaba 1.15 @@@QName: xp.char.xml10.test
4902     @@@DEnt:
4903     @@@@test:value:
4904     <?xml version="1.0"?>
4905     <p>$u0009$u000A$u000D$u0020$uD7FF$uE000$uFFFD$U00010000$U0010FFFF</p>
4906     @@@test:domTree:
4907     document {
4908     xml-version: '1.0';
4909     element {
4910     text-content: U+0009 U+000A U+000A U+0020 U+D7FF
4911     U+E000 U+FFFD U+10000 U+10FFFF;
4912     }
4913     }
4914     @@XMLTest:
4915     @@@QName: xp.char.xml11.test
4916     @@@DEnt:
4917     @@@@test:value:
4918     <?xml version="1.1"?>
4919     <p>$u0009$u000A$u000D$u0020$uD7FF$uE000$uFFFD$U00010000$U0010FFFF</p>
4920     @@@test:domTree:
4921     document {
4922     xml-version: '1.1';
4923     element {
4924     text-content: U+0009 U+000A U+000A U+0020 U+D7FF
4925     U+E000 U+FFFD U+10000 U+10FFFF;
4926     }
4927     }
4928     @@XMLTest:
4929     @@@QName: xp.char.xml10.c0.test
4930     @@@DEnt:
4931     @@@@test:value:
4932     <?xml version="1.0"?>
4933     <p>$u0000$u0001$u0002$u0003$u0004$u0005$u0006$u0007$u0008$u000B$
4934     $u000C$u000E$u000F$u0010$u0011$u0012$u0013$u0014$u0015$u0016$
4935     $u0017$u0018$u0019$u001A$u001B$u001C$u001D$u001E$u001F</p>
4936     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 4); } /* U+0000 */
4937     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 5); } /* U+0001 */
4938     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 6); } /* U+0002 */
4939     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 7); } /* U+0003 */
4940     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 8); } /* U+0004 */
4941     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 9); } /* U+0005 */
4942     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 10); } /* U+0006 */
4943     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 11); } /* U+0007 */
4944     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 12); } /* U+0008 */
4945     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 13); } /* U+000B */
4946     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 14); } /* U+000C */
4947     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 15); } /* U+000E */
4948     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 16); } /* U+000F */
4949     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 17); } /* U+0010 */
4950     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 18); } /* U+0011 */
4951     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 19); } /* U+0012 */
4952     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 20); } /* U+0013 */
4953     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 21); } /* U+0014 */
4954     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 22); } /* U+0015 */
4955     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 23); } /* U+0016 */
4956     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 24); } /* U+0017 */
4957     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 25); } /* U+0018 */
4958     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 26); } /* U+0019 */
4959     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 27); } /* U+001A */
4960     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 28); } /* U+001B */
4961     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 29); } /* U+001C */
4962     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 30); } /* U+001D */
4963     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 31); } /* U+001E */
4964     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 32); } /* U+001F */
4965     @@XMLTest:
4966     @@@QName: xp.char.xml11.c0.test
4967     @@@DEnt:
4968     @@@@test:value:
4969     <?xml version="1.1"?>
4970     <p>$u0000$u0001$u0002$u0003$u0004$u0005$u0006$u0007$u0008$u000B$
4971     $u000C$u000E$u000F$u0010$u0011$u0012$u0013$u0014$u0015$u0016$
4972     $u0017$u0018$u0019$u001A$u001B$u001C$u001D$u001E$u001F</p>
4973     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 4); } /* U+0000 */
4974     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 5); } /* U+0001 */
4975     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 6); } /* U+0002 */
4976     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 7); } /* U+0003 */
4977     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 8); } /* U+0004 */
4978     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 9); } /* U+0005 */
4979     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 10); } /* U+0006 */
4980     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 11); } /* U+0007 */
4981     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 12); } /* U+0008 */
4982     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 13); } /* U+000B */
4983     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 14); } /* U+000C */
4984     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 15); } /* U+000E */
4985     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 16); } /* U+000F */
4986     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 17); } /* U+0010 */
4987     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 18); } /* U+0011 */
4988     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 19); } /* U+0012 */
4989     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 20); } /* U+0013 */
4990     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 21); } /* U+0014 */
4991     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 22); } /* U+0015 */
4992     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 23); } /* U+0016 */
4993     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 24); } /* U+0017 */
4994     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 25); } /* U+0018 */
4995     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 26); } /* U+0019 */
4996     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 27); } /* U+001A */
4997     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 28); } /* U+001B */
4998     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 29); } /* U+001C */
4999     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 30); } /* U+001D */
5000     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 31); } /* U+001E */
5001     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 32); } /* U+001F */
5002     @@XMLTest:
5003     @@@QName: xp.char.xml10.c1.test
5004     @@@DEnt:
5005     @@@@test:value:
5006     <?xml version="1.0"?>
5007     <p>$u007F$u0080$u0081$u0082$u0083$u0084$u0086$u0087$u0088$
5008     $u0089$u008A$u008B$u008C$
5009     $u008D$u008E$u008F$u0090$u0091$u0092$u0093$u0094$u0095$u0096$
5010     $u0097$u0098$u0099$u009A$u009B$u009C$u009D$u009E$u009F$u0085</p>
5011     @@@test:domTree:
5012     document {
5013     xml-version: '1.0';
5014     element {
5015     text-content: U+007F U+0080 U+0081 U+0082 U+0083 U+0084 U+0086
5016     U+0087 U+0088 U+0089 U+008A U+008B U+008C U+008D
5017     U+008E U+008F U+0090 U+0091 U+0092 U+0093 U+0094
5018     U+0095 U+0096 U+0097 U+0098 U+0099 U+009A U+009B
5019     U+009C U+009D U+009E U+009F U+0085;
5020     }
5021     }
5022     @@XMLTest:
5023     @@@QName: xp.char.xml11.c1.test
5024     @@@DEnt:
5025     @@@@test:value:
5026     <?xml version="1.1"?>
5027     <p>$u007F$u0080$u0081$u0082$u0083$u0084$u0086$u0087$u0088$
5028     $u0089$u008A$u008B$u008C$
5029     $u008D$u008E$u008F$u0090$u0091$u0092$u0093$u0094$u0095$u0096$
5030     $u0097$u0098$u0099$u009A$u009B$u009C$u009D$u009E$u009F$u0085</p>
5031     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 4); } /* U+007F */
5032     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 5); } /* U+0080 */
5033     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 6); } /* U+0081 */
5034     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 7); } /* U+0082 */
5035     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 8); } /* U+0083 */
5036     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 9); } /* U+0084 */
5037     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 10); } /* U+0086 */
5038     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 11); } /* U+0087 */
5039     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 12); } /* U+0088 */
5040     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 13); } /* U+0089 */
5041     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 14); } /* U+008A */
5042     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 15); } /* U+008B */
5043     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 16); } /* U+008C */
5044     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 17); } /* U+008D */
5045     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 18); } /* U+008E */
5046     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 19); } /* U+008F */
5047     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 20); } /* U+0090 */
5048     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 21); } /* U+0091 */
5049     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 22); } /* U+0092 */
5050     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 23); } /* U+0093 */
5051     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 24); } /* U+0094 */
5052     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 25); } /* U+0095 */
5053     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 26); } /* U+0096 */
5054     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 27); } /* U+0097 */
5055     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 28); } /* U+0098 */
5056     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 29); } /* U+0099 */
5057     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 30); } /* U+009A */
5058     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 31); } /* U+009B */
5059     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 32); } /* U+009C */
5060     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 33); } /* U+009D */
5061     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 34); } /* U+009E */
5062     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 35); } /* U+009F */
5063    
5064     @@XMLTest:
5065 wakaba 1.12 @@@QName: xp.syntax.empty.test
5066     @@@DEnt:
5067     @@@@test:value: \
5068     @@@c:erred:
5069     <[[xp:wf-syntax-error]]> { (1, 1); }
5070     @@XMLTest:
5071     @@@QName: xp.syntax.space.test
5072     @@@DEnt:
5073 wakaba 1.13 @@@@test:value: \
5074 wakaba 1.12 @@@c:erred:
5075     <[[xp:wf-syntax-error]]> { (1, 4); }
5076     @@XMLTest:
5077     @@@QName: xp.syntax.newlines.test
5078     @@@DEnt:
5079     @@@@test:value:
5080     \
5081     \
5082     \
5083     @@@c:erred:
5084     <[[xp:wf-syntax-error]]> { (3, 1); }
5085    
5086     @@XMLTest:
5087 wakaba 1.6 @@@QName: xp.only.docel.test
5088 wakaba 1.5 @@@DEnt:
5089     @@@@test:value:
5090     <p></p>
5091     @@@test:domTree:
5092     document {
5093     xml-version: '1.0';
5094 wakaba 1.6 xml-encoding: null;
5095     xml-standalone: false;
5096     element {
5097     namespace-uri: null;
5098     prefix: null;
5099     local-name: 'p';
5100     text-content: '';
5101     }
5102     }
5103     @@XMLTest:
5104     @@@QName: xp.only.docel.emptyelemtag.test
5105     @@@DEnt:
5106     @@@@test:value:
5107     <p/>
5108     @@@test:domTree:
5109     document {
5110     xml-version: '1.0';
5111     xml-encoding: null;
5112     xml-standalone: false;
5113 wakaba 1.5 element {
5114     namespace-uri: null;
5115     prefix: null;
5116     local-name: 'p';
5117     text-content: '';
5118     }
5119     }
5120 wakaba 1.15 @@XMLTest:
5121     @@@QName: xp.root.s.1.test
5122     @@@DEnt:
5123     @@@@test:value:
5124     <?xml version="1.0"?>$u0020$u000D$u000A$u0009
5125     <p></p>
5126     @@@test:domTree:
5127     document {
5128     element { }
5129     }
5130    
5131     @@XMLTest:
5132     @@@QName: xp.Name.1.test
5133     @@@DEnt:
5134     @@@@test:value: <name/>
5135     @@@test:domTree:
5136     document {
5137     element {
5138     node-name: 'name';
5139     }
5140     }
5141     @@XMLTest:
5142     @@@QName: xp.Name.2.test
5143     @@@DEnt:
5144     @@@@test:value: <name0/>
5145     @@@test:domTree:
5146     document {
5147     element {
5148     node-name: 'name0';
5149     }
5150     }
5151     @@enImplNote:
5152     @@@ddid: xml11name
5153     @@@@:
5154     {TODO:: XML 1.1 Name tests required
5155     }
5156    
5157     @@XMLTest:
5158     @@@QName: xp.content.mse.1.test
5159     @@@DEnt:
5160     @@@@test:value:
5161     <p>]]></p>
5162     @@@c:erred:
5163     <[[xp|wf-syntax-error]]> { (1, 4)..(1, 6); }
5164     @@XMLTest:
5165     @@@QName: xp.content.mse.2.test
5166     @@@DEnt:
5167     @@@@test:value:
5168     <p>aaa]]>bbb</p>
5169     @@@c:erred:
5170     <[[xp|wf-syntax-error]]> { (1, 7)..(1, 9); }
5171    
5172     @@XMLTest:
5173     @@@QName: xp.root.comment.1.test
5174     @@@DEnt:
5175     @@@@test:value:
5176     <!--comment data-->
5177     <p/>
5178     @@@test:domTree:
5179     document {
5180     comment {
5181     data: 'comment data';
5182     }
5183     element { }
5184     }
5185     @@XMLTest:
5186     @@@QName: xp.root.comment.2.test
5187     @@@DEnt:
5188     @@@@test:value:
5189     <!---->
5190     <p/>
5191     @@@test:domTree:
5192     document {
5193     comment {
5194     data: '';
5195     }
5196     element { }
5197     }
5198     @@XMLTest:
5199     @@@QName: xp.root.after.pi.comment.1.test
5200     @@@DEnt:
5201     @@@@test:value:
5202     <?pi?>
5203     <!--comment data-->
5204     <p/>
5205     @@@test:domTree:
5206     document {
5207     pi { }
5208     comment {
5209     data: 'comment data';
5210     }
5211     element { }
5212     }
5213     @@XMLTest:
5214     @@@QName: xp.root.after.pi.comment.2.test
5215     @@@DEnt:
5216     @@@@test:value:
5217     <?pi?>
5218     <!---->
5219     <p/>
5220     @@@test:domTree:
5221     document {
5222     pi { }
5223     comment {
5224     data: '';
5225     }
5226     element { }
5227     }
5228     @@XMLTest:
5229     @@@QName: xp.root.after.element.comment.1.test
5230     @@@DEnt:
5231     @@@@test:value:
5232     <p/>
5233     <!--comment data-->
5234     @@@test:domTree:
5235     document {
5236     element { }
5237     comment {
5238     data: 'comment data';
5239     }
5240     }
5241     @@XMLTest:
5242     @@@QName: xp.root.after.element.comment.2.test
5243     @@@DEnt:
5244     @@@@test:value:
5245     <p/>
5246     <!---->
5247     @@@test:domTree:
5248     document {
5249     element { }
5250     comment {
5251     data: '';
5252     }
5253     }
5254     @@XMLTest:
5255     @@@QName: xp.doctype.intsubset.comment.1.test
5256     @@@DEnt:
5257     @@@@test:value:
5258     <!DOCTYPE a [
5259     <!--comment data-->
5260     ]>
5261     <p/>
5262     @@@test:domTree:
5263     document {
5264     document-type { }
5265     element { }
5266     }
5267     @@XMLTest:
5268     @@@QName: xp.doctype.intsubset.comment.2.test
5269     @@@DEnt:
5270     @@@@test:value:
5271     <!DOCTYPE a [
5272     <!---->
5273     ]>
5274     <p/>
5275     @@@test:domTree:
5276     document {
5277     document-type { }
5278     element { }
5279     }
5280     @@XMLTest:
5281     @@@QName: xp.doctype.intsubset.comment.3.test
5282     @@@DEnt:
5283     @@@@test:value:
5284     <!DOCTYPE a [
5285     <?pi?>
5286     <!---->
5287     ]>
5288     <p/>
5289     @@@test:domTree:
5290     document {
5291     document-type {
5292     pi { }
5293     }
5294     element { }
5295     }
5296     @@XMLTest:
5297     @@@QName: xp.content.comment.1.test
5298     @@@DEnt:
5299     @@@@test:value:
5300     <p><!--comment data--></p>
5301     @@@test:domTree:
5302     document {
5303     element {
5304     comment {
5305     data: 'comment data';
5306     }
5307     }
5308     }
5309     @@XMLTest:
5310     @@@QName: xp.content.comment.2.test
5311     @@@DEnt:
5312     @@@@test:value:
5313     <p><!----></p>
5314     @@@test:domTree:
5315     document {
5316     element {
5317     comment {
5318     data: '';
5319     }
5320     }
5321     }
5322     @@XMLTest:
5323     @@@QName: xp.content.comment.3.test
5324     @@@DEnt:
5325     @@@@test:value:
5326     <p>aaaaa<!---->bbbbb</p>
5327     @@@test:domTree:
5328     document {
5329     element {
5330     text {
5331     data: 'aaaaa';
5332     }
5333     comment {
5334     data: '';
5335     }
5336     text {
5337     data: 'bbbbb';
5338     }
5339     }
5340     }
5341     @@XMLTest:
5342     @@@QName: xp.content.comment.--.1.test
5343     @@@DEnt:
5344     @@@@test:value:
5345     <p><!--data--data--></p>
5346     @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 12)..(1, 17); }
5347     @@XMLTest:
5348     @@@QName: xp.content.comment.---gt.test
5349     @@@DEnt:
5350     @@@@test:value:
5351     <p><!--data---></p>
5352     @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 12)..(1, 15); }
5353 wakaba 1.13
5354     @@XMLTest:
5355     @@@QName: xp.xmldecl.version.1.0.test
5356     @@@DEnt:
5357     @@@@test:value:
5358     <?xml version="1.0"?>
5359     <p></p>
5360     @@@test:domTree:
5361     document {
5362     xml-version: '1.0';
5363     xml-encoding: null;
5364     xml-standalone: false;
5365     element { }
5366     }
5367     @@XMLTest:
5368     @@@QName: xp.xmldecl.version.1.0.lita.test
5369     @@@DEnt:
5370     @@@@test:value:
5371     <?xml version='1.0'?>
5372     <p></p>
5373     @@@test:domTree:
5374     document {
5375     xml-version: '1.0';
5376     xml-encoding: null;
5377     xml-standalone: false;
5378     element { }
5379     }
5380     @@XMLTest:
5381     @@@QName: xp.xmldecl.version.1.0.s.test
5382     @@@DEnt:
5383     @@@@test:value:
5384     <?xml version = "1.0" ?>
5385     <p></p>
5386     @@@test:domTree:
5387     document {
5388     xml-version: '1.0';
5389     xml-encoding: null;
5390     xml-standalone: false;
5391     element { }
5392     }
5393     @@XMLTest:
5394     @@@QName: xp.xmldecl.version.1.1.test
5395     @@@DEnt:
5396     @@@@test:value:
5397     <?xml version="1.1"?>
5398     <p></p>
5399     @@@test:domTree:
5400     document {
5401     xml-version: '1.1';
5402     xml-encoding: null;
5403     xml-standalone: false;
5404     element { }
5405     }
5406    
5407     @@XMLTest:
5408     @@@QName: xp.xmldecl.version.1.0.encoding.usascii.test
5409     @@@DEnt:
5410     @@@@test:value:
5411     <?xml version="1.0" encoding="US-ascii"?>
5412     <p></p>
5413     @@@test:domTree:
5414     document {
5415     xml-version: '1.0';
5416     xml-encoding: 'US-ascii';
5417     xml-standalone: false;
5418     element { }
5419     }
5420     @@XMLTest:
5421     @@@QName: xp.xmldecl.version.1.0.encoding.usascii.lita.test
5422     @@@DEnt:
5423     @@@@test:value:
5424     <?xml version="1.0" encoding='US-ascii'?>
5425     <p></p>
5426     @@@test:domTree:
5427     document {
5428     xml-version: '1.0';
5429     xml-encoding: 'US-ascii';
5430     xml-standalone: false;
5431     element { }
5432     }
5433     @@XMLTest:
5434     @@@QName: xp.xmldecl.version.1.0.encoding.usascii.s.test
5435     @@@DEnt:
5436     @@@@test:value:
5437     <?xml version="1.0" encoding = "US-ascii" ?>
5438     <p></p>
5439     @@@test:domTree:
5440     document {
5441     xml-version: '1.0';
5442     xml-encoding: 'US-ascii';
5443     xml-standalone: false;
5444     element { }
5445     }
5446    
5447     @@XMLTest:
5448     @@@QName: xp.xmldecl.version.1.0.encoding.usascii.standalone.yes.test
5449     @@@DEnt:
5450     @@@@test:value:
5451     <?xml version="1.0" encoding="us-ascii" standalone="yes"?>
5452     <p></p>
5453     @@@test:domTree:
5454     document {
5455     xml-version: '1.0';
5456     xml-encoding: 'us-ascii';
5457     xml-standalone: true;
5458     element { }
5459     }
5460     @@XMLTest:
5461     @@@QName: xp.xmldecl.version.1.0.encoding.usascii.standalone.no.test
5462     @@@DEnt:
5463     @@@@test:value:
5464     <?xml version="1.0" encoding="us-ascii" standalone="no"?>
5465     <p></p>
5466     @@@test:domTree:
5467     document {
5468     xml-version: '1.0';
5469     xml-encoding: 'us-ascii';
5470     xml-standalone: false;
5471     element { }
5472     }
5473     @@XMLTest:
5474     @@@QName: xp.xmldecl.version.1.0.encoding.usascii.standalone.yes.lita.test
5475     @@@DEnt:
5476     @@@@test:value:
5477     <?xml version="1.0" encoding="us-ascii" standalone='yes'?>
5478     <p></p>
5479     @@@test:domTree:
5480     document {
5481     xml-version: '1.0';
5482     xml-encoding: 'us-ascii';
5483     xml-standalone: true;
5484     element { }
5485     }
5486     @@XMLTest:
5487     @@@QName: xp.xmldecl.version.1.0.encoding.usascii.standalone.yes.s.test
5488     @@@DEnt:
5489     @@@@test:value:
5490     <?xml version="1.0" encoding="us-ascii" standalone = "yes" ?>
5491     <p></p>
5492     @@@test:domTree:
5493     document {
5494     xml-version: '1.0';
5495     xml-encoding: 'us-ascii';
5496     xml-standalone: true;
5497     element { }
5498     }
5499 wakaba 1.14 @@XMLTest:
5500     @@@QName: xp.xmldecl.no.encoding.but.standalone.attr.test
5501     @@@DEnt:
5502     @@@@test:value:
5503     <?xml version="1.0" standalone="yes"?>
5504     <p></p>
5505     @@@test:domTree:
5506     document {
5507     xml-version: '1.0';
5508     xml-encoding: null;
5509     xml-standalone: true;
5510     element { }
5511     }
5512     @@XMLTest:
5513     @@@QName: xp.xmldecl.encoding.encname.test
5514     @@@DEnt:
5515     @@@@test:value:
5516     <?xml version="1.0" encoding="a-._01-"?>
5517     <p></p>
5518     @@@test:domTree:
5519     document {
5520     xml-version: '1.0';
5521     xml-encoding: 'a-._01-';
5522     xml-standalone: false;
5523     element { }
5524     }
5525    
5526     @@XMLTest:
5527     @@@QName: xp.xmldecl.no.s.no.attr.test
5528     @@@DEnt:
5529     @@@@test:value:
5530     <?xml?>
5531     <p></p>
5532     @@@c:erred:
5533 wakaba 1.16 <[[xp:wf-syntax-error]]> { (1, 1)..(1, 7); }
5534 wakaba 1.14 @@XMLTest:
5535     @@@QName: xp.xmldecl.s.no.attr.test
5536     @@@DEnt:
5537     @@@@test:value:
5538     <?xml ?>
5539     <p></p>
5540     @@@c:erred:
5541     <[[xp:wf-syntax-error]]> { (1, 8)..(1, 9); }
5542     @@XMLTest:
5543     @@@QName: xp.xmldecl.unknown.attr.test
5544     @@@DEnt:
5545     @@@@test:value:
5546     <?xml unknown="value"?>
5547     <p></p>
5548     @@@c:erred:
5549     <[[xp:wf-syntax-error]]> { (1, 8)..(1, 22); }
5550     @@XMLTest:
5551     @@@QName: xp.xmldecl.version.unknown.attr.test
5552     @@@DEnt:
5553     @@@@test:value:
5554     <?xml version="1.0" unknown="value"?>
5555     <p></p>
5556     @@@c:erred:
5557     <[[xp:wf-syntax-error]]> { (1, 21)..(1, 35); }
5558     @@XMLTest:
5559     @@@QName: xp.xmldecl.version.encoding.unknown.attr.test
5560     @@@DEnt:
5561     @@@@test:value:
5562     <?xml version="1.0" encoding="us-ascii" unknown="value"?>
5563     <p></p>
5564     @@@c:erred:
5565     <[[xp:wf-syntax-error]]> { (1, 41)..(1, 55); }
5566     @@XMLTest:
5567     @@@QName: xp.xmldecl.version.encoding.standalone.unknown.attr.test
5568     @@@DEnt:
5569     @@@@test:value:
5570     <?xml version="1.0" encoding="us-ascii" standalone="yes"
5571     unknown="value"?>
5572     <p></p>
5573     @@@c:erred:
5574     <[[xp:wf-syntax-error]]> { (2, 1)..(2, 15); }
5575     @@XMLTest:
5576     @@@QName: xp.xmldecl.no.version.but.encoding.attr.test
5577     @@@DEnt:
5578     @@@@test:value:
5579     <?xml encoding="us-ascii"?>
5580     <p></p>
5581     @@@c:erred:
5582     <[[xp:wf-syntax-error]]> { (1, 7)..(1, 25); }
5583     @@XMLTest:
5584     @@@QName: xp.xmldecl.no.version.but.standalone.attr.test
5585     @@@DEnt:
5586     @@@@test:value:
5587     <?xml standalone="yes"?>
5588     <p></p>
5589     @@@c:erred:
5590     <[[xp:wf-syntax-error]]> { (1, 7)..(1, 24); }
5591     @@XMLTest:
5592     @@@QName: xp.xmldecl.version.unsupported.test
5593     @@@DEnt:
5594     @@@@test:value:
5595     <?xml version="1.2"?>
5596     <p></p>
5597     @@@c:erred:
5598     <[[xp:wf-unsupported-xml-version]]> { (1, 7)..(1, 19); }
5599     @@XMLTest:
5600     @@@QName: xp.xmldecl.version.unsupported.2.test
5601     @@@DEnt:
5602     @@@@test:value:
5603     <?xml version=" 1.0 "?>
5604     <p></p>
5605     @@@c:erred:
5606     <[[xp:wf-unsupported-xml-version]]> { (1, 7)..(1, 21); }
5607     @@XMLTest:
5608     @@@QName: xp.xmldecl.version.unsupported.3.test
5609     @@@DEnt:
5610     @@@@test:value:
5611     <?xml version="01.00"?>
5612     <p></p>
5613     @@@c:erred:
5614     <[[xp:wf-unsupported-xml-version]]> { (1, 7)..(1, 21); }
5615     @@XMLTest:
5616     @@@QName: xp.xmldecl.encoding.malformed.1.test
5617     @@@DEnt:
5618     @@@@test:value:
5619     <?xml version="1.0" encoding="0088"?>
5620     <p></p>
5621     @@@c:erred:
5622     <[[xp:wf-malformed-enc-name]]> { (1, 21)..(1, 35); }
5623     @@XMLTest:
5624     @@@QName: xp.xmldecl.encoding.malformed.2.test
5625     @@@DEnt:
5626     @@@@test:value:
5627     <?xml version="1.0" encoding="D.V.D!"?>
5628     <p></p>
5629     @@@c:erred:
5630     <[[xp:wf-malformed-enc-name]]> { (1, 21)..(1, 38); }
5631     @@XMLTest:
5632     @@@QName: xp.xmldecl.standalone.malformed.1.test
5633     @@@DEnt:
5634     @@@@test:value:
5635     <?xml version="1.0" standalone="true"?>
5636     <p></p>
5637     @@@c:erred:
5638     <[[xp:wf-malformed-xml-standalone]]> { (1, 21)..(1, 38); }
5639     @@XMLTest:
5640     @@@QName: xp.xmldecl.standalone.malformed.2.test
5641     @@@DEnt:
5642     @@@@test:value:
5643     <?xml version="1.0" standalone="YES"?>
5644     <p></p>
5645     @@@c:erred:
5646     <[[xp:wf-malformed-xml-standalone]]> { (1, 21)..(1, 37); }
5647     @@XMLTest:
5648     @@@QName: xp.xmldecl.standalone.malformed.3.test
5649     @@@DEnt:
5650     @@@@test:value:
5651     <?xml version="1.0" standalone="no "?>
5652     <p></p>
5653     @@@c:erred:
5654     <[[xp:wf-malformed-xml-standalone]]> { (1, 21)..(1, 38); }
5655 wakaba 1.6
5656     @@XMLTest:
5657 wakaba 1.14 @@@QName: xp.no-xmldecl.xml...-pi.test
5658     @@@DEnt:
5659     @@@@test:value:
5660     <?xmldeclaration?>
5661     <a></a>
5662     @@@test:domTree:
5663     document {
5664     pi {
5665     node-name: 'xmldeclaration';
5666     node-value: '';
5667     }
5668     element { }
5669     }
5670     @@XMLTest:
5671     @@@QName: xp.no-xmldecl.xml...-pi.after.document.element.test
5672     @@@DEnt:
5673     @@@@test:value:
5674     <a></a>
5675     <?xmldeclaration?>
5676     @@@test:domTree:
5677     document {
5678     element { }
5679     pi {
5680     node-name: 'xmldeclaration';
5681     node-value: '';
5682     }
5683     }
5684     @@XMLTest:
5685     @@@QName: xp.no-xmldecl.xml...-pi.in.document.element.test
5686     @@@DEnt:
5687     @@@@test:value:
5688     <a>
5689     <?xmldeclaration?>
5690     </a>
5691     @@@test:domTree:
5692     document {
5693     element {
5694     text { }
5695     pi {
5696     node-name: 'xmldeclaration';
5697     node-value: '';
5698     }
5699     text { }
5700     }
5701     }
5702     @@XMLTest:
5703     @@@QName: xp.no-xmldecl.xml...-pi.in.doctype.test
5704     @@@DEnt:
5705     @@@@test:value:
5706     <!DOCTYPE a [
5707     <?xmldeclaration?>
5708     ]>
5709     <a></a>
5710     @@@test:domTree:
5711     document {
5712     document-type {
5713     pi {
5714     node-name: 'xmldeclaration';
5715     node-value: '';
5716     }
5717     }
5718     element { }
5719     }
5720    
5721     @@XMLTest:
5722     @@@QName: xp.XMLdecl.test
5723     @@@DEnt:
5724     @@@@test:value:
5725     <?XML version="1.0"?>
5726     <p></p>
5727     @@@c:erred:
5728     <[[xp:wf-pi-target-is-xml]]> { (1, 1)..(1, 5); }
5729     @@XMLTest:
5730     @@@QName: xp.Xmldecl.test
5731     @@@DEnt:
5732     @@@@test:value:
5733     <?Xml version="1.0"?>
5734     <p></p>
5735     @@@c:erred:
5736     <[[xp:wf-pi-target-is-xml]]> { (1, 1)..(1, 5); }
5737     @@XMLTest:
5738     @@@QName: xp.xmldecl.after.document.element.empty.test
5739     @@@DEnt:
5740     @@@@test:value:
5741     <p></p>
5742     <?xml?>
5743     @@@c:erred:
5744     <[[xp:wf-pi-target-is-xml]]> { (2, 1)..(2, 5); }
5745     @@XMLTest:
5746     @@@QName: xp.xmldecl.after.document.element.test
5747     @@@DEnt:
5748     @@@@test:value:
5749     <p></p>
5750     <?xml version="1.0"?>
5751     @@@c:erred:
5752     <[[xp:wf-pi-target-is-xml]]> { (2, 1)..(2, 5); }
5753     @@XMLTest:
5754     @@@QName: xp.xmldecl.in.element.empty.test
5755     @@@DEnt:
5756     @@@@test:value:
5757     <p>
5758     <?xml?>
5759     </p>
5760     @@@c:erred:
5761     <[[xp:wf-pi-target-is-xml]]> { (2, 1)..(2, 5); }
5762     @@XMLTest:
5763     @@@QName: xp.xmldecl.in.element.test
5764     @@@DEnt:
5765     @@@@test:value:
5766     <p>
5767     <?xml version="1.0"?>
5768     </p>
5769     @@@c:erred:
5770     <[[xp:wf-pi-target-is-xml]]> { (2, 1)..(2, 5); }
5771     @@XMLTest:
5772     @@@QName: xp.xmldecl.after.comment.test
5773     @@@DEnt:
5774     @@@@test:value:
5775     <!---->
5776     <?xml version="1.0"?>
5777     <p></p>
5778     @@@c:erred:
5779     <[[xp:wf-pi-target-is-xml]]> { (2, 1)..(2, 5); }
5780     @@XMLTest:
5781     @@@QName: xp.xmldecl.after.comment.empty.test
5782     @@@DEnt:
5783     @@@@test:value:
5784     <!---->
5785     <?xml?>
5786     <p></p>
5787     @@@c:erred:
5788     <[[xp:wf-pi-target-is-xml]]> { (2, 1)..(2, 5); }
5789     @@XMLTest:
5790     @@@QName: xp.xmldecl.after.pi.test
5791     @@@DEnt:
5792     @@@@test:value:
5793     <?xml-declaration?>
5794     <?xml version="1.0"?>
5795     <p></p>
5796     @@@c:erred:
5797     <[[xp:wf-pi-target-is-xml]]> { (2, 1)..(2, 5); }
5798     @@XMLTest:
5799     @@@QName: xp.xmldecl.after.pi.empty.test
5800     @@@DEnt:
5801     @@@@test:value:
5802     <?xml-declaration?>
5803     <?xml?>
5804     <p></p>
5805     @@@c:erred:
5806     <[[xp:wf-pi-target-is-xml]]> { (2, 1)..(2, 5); }
5807     @@XMLTest:
5808 wakaba 1.16 @@@QName: xp.xmldecl.after.pi.2.test
5809     @@@DEnt:
5810     @@@@test:value:
5811     <?declaration?>
5812     <?xml version="1.0"?>
5813     <p></p>
5814     @@@c:erred:
5815     <[[xp:wf-pi-target-is-xml]]> { (2, 1)..(2, 5); }
5816     @@XMLTest:
5817     @@@QName: xp.xmldecl.after.pi.empty.2.test
5818     @@@DEnt:
5819     @@@@test:value:
5820     <?declaration?>
5821     <?xml?>
5822     <p></p>
5823     @@@c:erred:
5824     <[[xp:wf-pi-target-is-xml]]> { (2, 1)..(2, 5); }
5825     @@XMLTest:
5826 wakaba 1.14 @@@QName: xp.xmldecl.after.doctype.test
5827     @@@DEnt:
5828     @@@@test:value:
5829     <!DOCTYPE a>
5830     <?xml version="1.0"?>
5831     <p></p>
5832     @@@c:erred:
5833     <[[xp:wf-pi-target-is-xml]]> { (2, 1)..(2, 5); }
5834     @@XMLTest:
5835     @@@QName: xp.xmldecl.after.doctype.empty.test
5836     @@@DEnt:
5837     @@@@test:value:
5838     <!DOCTYPE a>
5839     <?xml?>
5840     <p></p>
5841     @@@c:erred:
5842     <[[xp:wf-pi-target-is-xml]]> { (2, 1)..(2, 5); }
5843     @@XMLTest:
5844     @@@QName: xp.xmldecl.in.doctype.test
5845     @@@DEnt:
5846     @@@@test:value:
5847     <!DOCTYPE a [
5848     <?xml version="1.0"?>
5849     ]>
5850     <p></p>
5851     @@@c:erred:
5852     <[[xp:wf-pi-target-is-xml]]> { (2, 1)..(2, 5); }
5853     @@XMLTest:
5854     @@@QName: xp.xmldecl.in.doctype.empty.test
5855     @@@DEnt:
5856     @@@@test:value:
5857     <!DOCTYPE a [
5858     <?xml?>
5859     ]>
5860     <p></p>
5861     @@@c:erred:
5862     <[[xp:wf-pi-target-is-xml]]> { (2, 1)..(2, 5); }
5863    
5864     @@XMLTest:
5865     @@@QName: xp.pi.before.element.empty.test
5866     @@@DEnt:
5867     @@@@test:value:
5868     <?target?>
5869     <a></a>
5870     @@@test:domTree:
5871     document {
5872     pi {
5873     node-name: 'target';
5874     node-value: '';
5875     }
5876     element { }
5877     }
5878     @@XMLTest:
5879     @@@QName: xp.pi.before.element.s.test
5880     @@@DEnt:
5881     @@@@test:value:
5882     <?target ?>
5883     <a></a>
5884     @@@test:domTree:
5885     document {
5886     pi {
5887     node-name: 'target';
5888     node-value: '';
5889     }
5890     element { }
5891     }
5892     @@XMLTest:
5893     @@@QName: xp.pi.before.element.string.test
5894     @@@DEnt:
5895     @@@@test:value:
5896     <?target string?>
5897     <a></a>
5898     @@@test:domTree:
5899     document {
5900     pi {
5901     node-name: 'target';
5902     node-value: 'string';
5903     }
5904     element { }
5905     }
5906     @@XMLTest:
5907     @@@QName: xp.pi.before.element.string.s.test
5908     @@@DEnt:
5909     @@@@test:value:
5910     <?target string ?>
5911     <a></a>
5912     @@@test:domTree:
5913     document {
5914     pi {
5915     node-name: 'target';
5916     node-value: 'string ';
5917     }
5918     element { }
5919     }
5920     @@XMLTest:
5921     @@@QName: xp.pi.before.element.gt.test
5922     @@@DEnt:
5923     @@@@test:value:
5924     <?target string>string?>
5925     <a></a>
5926     @@@test:domTree:
5927     document {
5928     pi {
5929     node-name: 'target';
5930     node-value: 'string>string';
5931     }
5932     element { }
5933     }
5934     @@XMLTest:
5935     @@@QName: xp.pi.doctype.empty.test
5936     @@@DEnt:
5937     @@@@test:value:
5938     <!DOCTYPE a [
5939     <?target?>
5940     ]>
5941     <a></a>
5942     @@@test:domTree:
5943     document {
5944     document-type {
5945     pi {
5946     node-name: 'target';
5947     node-value: '';
5948     }
5949     }
5950     element { }
5951     }
5952    
5953     @@XMLTest:
5954     @@@QName: xp.pi.no.target.test
5955     @@@DEnt:
5956     @@@@test:value:
5957     <??>
5958     <p></p>
5959     @@@c:erred:
5960     <[[xp:wf-syntax-error]]> { (1, 3)..(1, 4); }
5961     @@XMLTest:
5962     @@@QName: xp.pi.no.target.2.test
5963     @@@DEnt:
5964     @@@@test:value:
5965     <? ?>
5966     <p></p>
5967     @@@c:erred:
5968     <[[xp:wf-syntax-error]]> { (1, 3)..(1, 4); }
5969     @@XMLTest:
5970     @@@QName: xp.pi.bad.target.1.test
5971     @@@DEnt:
5972     @@@@test:value:
5973     <?target! ?>
5974     <p></p>
5975     @@@c:erred:
5976     <[[xp:wf-syntax-error]]> { (1, 9)..(1, 9); }
5977     @@XMLTest:
5978     @@@QName: xp.pi.bad.target.2.test
5979     @@@DEnt:
5980     @@@@test:value:
5981     <?0target ?>
5982     <p></p>
5983     @@@c:erred:
5984     <[[xp:wf-syntax-error]]> { (1, 3)..(1, 3); }
5985    
5986     @@XMLTest:
5987 wakaba 1.15 @@@QName: xp.cdatasection.empty.1.test
5988     @@@DEnt:
5989     @@@@test:value:
5990     <p><![CDATA[]]></p>
5991     @@@test:domTree:
5992     document {
5993     element {
5994     cdata-section {
5995     data: '';
5996     }
5997     }
5998     }
5999     @@XMLTest:
6000     @@@QName: xp.cdatasection.empty.2.test
6001     @@@DEnt:
6002     @@@@test:value:
6003     <p>aa<![CDATA[]]>bb</p>
6004     @@@test:domTree:
6005     document {
6006     element {
6007     text { data: 'aa'; }
6008     cdata-section {
6009     data: '';
6010     }
6011     text { data: 'bb'; }
6012     }
6013     }
6014     @@XMLTest:
6015     @@@QName: xp.cdatasection.1.test
6016     @@@DEnt:
6017     @@@@test:value:
6018     <p><![CDATA[abcdefg]]></p>
6019     @@@test:domTree:
6020     document {
6021     element {
6022     cdata-section {
6023     data: 'abcdefg';
6024     }
6025     }
6026     }
6027     @@XMLTest:
6028     @@@QName: xp.cdatasection.2.test
6029     @@@DEnt:
6030     @@@@test:value:
6031     <p>aa<![CDATA[abcdefg]]>bb</p>
6032     @@@test:domTree:
6033     document {
6034     element {
6035     text { data: 'aa'; }
6036     cdata-section {
6037     data: 'abcdefg';
6038     }
6039     text { data: 'bb'; }
6040     }
6041     }
6042     @@XMLTest:
6043     @@@QName: xp.cdatasection.ref.1.test
6044     @@@DEnt:
6045     @@@@test:value:
6046     <p><![CDATA[a&amp;&#x32;&#32;%abc;&def;]]&gt;b]]></p>
6047     @@@test:domTree:
6048     document {
6049     element {
6050     cdata-section {
6051     data: 'a&amp;&#x32;&#32;%abc;&def;]]&gt;b';
6052     }
6053     }
6054     }
6055     @@XMLTest:
6056     @@@QName: xp.cdatasection.in.general.entity.test
6057     @@@DEnt:
6058     @@@@test:value:
6059     <!DOCTYPE p [
6060     <!ENTITY cdata "<![CDATA[text]]>">
6061     ]>
6062     <p>&cdata;</p>
6063     @@@test:domTree:
6064     document {
6065     document-type {
6066     general-entity {
6067     node-name: 'cdata';
6068     cdata-section {
6069     data: 'text';
6070     }
6071     }
6072     }
6073     element {
6074     general-entity-reference {
6075 wakaba 1.23 node-name: 'cdata';
6076 wakaba 1.19 is-expanded: true;
6077 wakaba 1.15 cdata-section {
6078     data: 'text';
6079     }
6080     }
6081     }
6082     }
6083     @@XMLTest:
6084     @@@QName: xp.cdatasection.no.mse.test
6085     @@@DEnt:
6086     @@@@test:value:
6087     <p><![CDATA[text</p>
6088     @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 21); }
6089     @@XMLTest:
6090     @@@QName: xp.cdatasection.nest.test
6091     @@@DEnt:
6092     @@@@test:value:
6093     <p><![CDATA[text01<![CDATA[txt2]]>text3]]></p>
6094     @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 40)..(1, 42); }
6095    
6096     @@XMLTest:
6097 wakaba 1.6 @@@QName: xp.doctype.empty.test
6098     @@@DEnt:
6099     @@@@test:value:
6100     <!DOCTYPE a>
6101     <a></a>
6102     @@@test:domTree:
6103     document {
6104     xml-version: '1.0';
6105     xml-encoding: null;
6106     xml-standalone: false;
6107     document-type {
6108     node-name: 'a';
6109 wakaba 1.17 public-id: null;
6110     system-id: null;
6111 wakaba 1.6 }
6112     element {
6113     namespace-uri: null;
6114     prefix: null;
6115     local-name: 'a';
6116     text-content: '';
6117     }
6118     }
6119 wakaba 1.15 @@XMLTest:
6120     @@@QName: xp.doctype.empty.after.document.element.test
6121     @@@DEnt:
6122     @@@@test:value:
6123     <a></a>
6124     <!DOCTYPE a>
6125     @@@c:erred: <[[xp|wf-syntax-error]]> { (2, 1)..(2, 12); }
6126     @@XMLTest:
6127     @@@QName: xp.doctype.empty.in.element.test
6128     @@@DEnt:
6129     @@@@test:value:
6130     <a>
6131     <!DOCTYPE a>
6132     </a>
6133     @@@c:erred: <[[xp|wf-syntax-error]]> { (2, 1)..(2, 12); }
6134     @@XMLTest:
6135     @@@QName: xp.doctype.empty.dup.test
6136     @@@DEnt:
6137     @@@@test:value:
6138     <!DOCTYPE a>
6139     <!DOCTYPE a>
6140     <a></a>
6141     @@@c:erred: <[[xp|wf-syntax-error]]> { (2, 1)..(2, 12); }
6142     @@XMLTest:
6143     @@@QName: xp.doctype.empty.in.intsubset.test
6144     @@@DEnt:
6145     @@@@test:value:
6146     <!DOCTYPE a [
6147     <!DOCTYPE a>
6148     ]>
6149     <a></a>
6150     @@@c:erred: <[[xp|wf-syntax-error]]> { (2, 1)..(2, 12); }
6151 wakaba 1.16 @@XMLTest:
6152     @@@QName: xp.doctype.no.s.no.name.test
6153     @@@DEnt:
6154     @@@@test:value:
6155     <!DOCTYPE>
6156     <a></a>
6157     @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 10); }
6158     @@XMLTest:
6159     @@@QName: xp.doctype.no.name.test
6160     @@@DEnt:
6161     @@@@test:value:
6162     <!DOCTYPE >
6163     <a></a>
6164     @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 11); }
6165     @@XMLTest:
6166     @@@QName: xp.doctype.name.s.test
6167     @@@DEnt:
6168     @@@@test:value:
6169     <!DOCTYPE aa >
6170     <aa></aa>
6171     @@@test:domTree:
6172     document {
6173     document-type {
6174     node-name: 'aa';
6175 wakaba 1.17 public-id: null;
6176     system-id: null;
6177 wakaba 1.16 }
6178     element { }
6179     }
6180     @@XMLTest:
6181     @@@QName: xp.doctype.no.mdc.test
6182     @@@DEnt:
6183     @@@@test:value:
6184     <!DOCTYPE aa
6185     <aa></aa>
6186     @@@c:erred: <[[xp|wf-syntax-error]]> { (2, 1); }
6187 wakaba 1.6
6188     @@XMLTest:
6189 wakaba 1.16 @@@QName: xp.doctype.intsubset.empty.1.test
6190 wakaba 1.6 @@@DEnt:
6191     @@@@test:value:
6192 wakaba 1.16 <!DOCTYPE a []>
6193 wakaba 1.6 <a></a>
6194     @@@test:domTree:
6195     document {
6196     xml-version: '1.0';
6197     xml-encoding: null;
6198     xml-standalone: false;
6199     document-type {
6200     node-name: 'a';
6201 wakaba 1.17 public-id: null;
6202     system-id: null;
6203 wakaba 1.6 }
6204     element {
6205     namespace-uri: null;
6206     prefix: null;
6207     local-name: 'a';
6208     text-content: '';
6209     }
6210     }
6211     @@XMLTest:
6212 wakaba 1.16 @@@QName: xp.doctype.intsubset.empty.2.test
6213 wakaba 1.6 @@@DEnt:
6214     @@@@test:value:
6215     <!DOCTYPE a [
6216 wakaba 1.16
6217 wakaba 1.6 ]>
6218     <a></a>
6219     @@@test:domTree:
6220     document {
6221     xml-version: '1.0';
6222     xml-encoding: null;
6223     xml-standalone: false;
6224     document-type {
6225     node-name: 'a';
6226 wakaba 1.17 public-id: null;
6227     system-id: null;
6228 wakaba 1.6 }
6229     element {
6230     namespace-uri: null;
6231     prefix: null;
6232     local-name: 'a';
6233     text-content: '';
6234     }
6235     }
6236     @@XMLTest:
6237 wakaba 1.16 @@@QName: xp.doctype.intsubset.empty.3.test
6238 wakaba 1.6 @@@DEnt:
6239     @@@@test:value:
6240 wakaba 1.16 <!DOCTYPE a[]>
6241 wakaba 1.6 <a></a>
6242     @@@test:domTree:
6243     document {
6244     document-type {
6245     node-name: 'a';
6246 wakaba 1.17 public-id: null;
6247     system-id: null;
6248 wakaba 1.6 }
6249 wakaba 1.16 element { }
6250     }
6251     @@XMLTest:
6252     @@@QName: xp.doctype.intsubset.empty.4.test
6253     @@@DEnt:
6254     @@@@test:value:
6255     <!DOCTYPE a[] >
6256     <a></a>
6257     @@@test:domTree:
6258     document {
6259     document-type {
6260     node-name: 'a';
6261 wakaba 1.17 public-id: null;
6262     system-id: null;
6263 wakaba 1.6 }
6264 wakaba 1.16 element { }
6265 wakaba 1.6 }
6266     @@XMLTest:
6267 wakaba 1.16 @@@QName: xp.doctype.intsubset.no.dsc.1.test
6268     @@@DEnt:
6269     @@@@test:value:
6270     <!DOCTYPE a [>
6271     <a></a>
6272     @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 14); }
6273     @@XMLTest:
6274     @@@QName: xp.doctype.intsubset.no.dsc.2.test
6275 wakaba 1.6 @@@DEnt:
6276     @@@@test:value:
6277     <!DOCTYPE a [
6278     <a></a>
6279 wakaba 1.16 @@@c:erred: <[[xp|wf-syntax-error]]> { (2, 1); }
6280     @@XMLTest:
6281     @@@QName: xp.doctype.intsubset.no.dsc.3.test
6282     @@@DEnt:
6283     @@@@test:value:
6284     <!DOCTYPE a [
6285     @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 14); }
6286     @@XMLTest:
6287     @@@QName: xp.doctype.intsubset.no.mdc.1.test
6288     @@@DEnt:
6289     @@@@test:value:
6290     <!DOCTYPE a []
6291     <a/>
6292     @@@c:erred: <[[xp|wf-syntax-error]]> { (2, 1); }
6293     @@XMLTest:
6294     @@@QName: xp.doctype.intsubset.no.mdc.2.test
6295     @@@DEnt:
6296     @@@@test:value:
6297     <!DOCTYPE a []]>
6298     <a/>
6299     @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 15); }
6300 wakaba 1.17 @@XMLTest:
6301     @@@QName: xp.doctype.pubid.sysid.1.test
6302     @@@DEnt:
6303     @@@@test:value:
6304     <!DOCTYPE a PUBLIC "pubid" "sysid">
6305     <a/>
6306     @@@test:domTree:
6307     document {
6308     document-type {
6309     node-name: 'a';
6310     public-id: 'pubid';
6311     system-id: 'sysid';
6312     }
6313     element { }
6314     }
6315     @@XMLTest:
6316     @@@QName: xp.doctype.pubid.sysid.2.test
6317     @@@DEnt:
6318     @@@@test:value:
6319     <!DOCTYPE a PUBLIC 'pubid' "sysid">
6320     <a/>
6321     @@@test:domTree:
6322     document {
6323     document-type {
6324     node-name: 'a';
6325     public-id: 'pubid';
6326     system-id: 'sysid';
6327     }
6328     element { }
6329     }
6330     @@XMLTest:
6331     @@@QName: xp.doctype.pubid.sysid.3.test
6332     @@@DEnt:
6333     @@@@test:value:
6334     <!DOCTYPE a PUBLIC "pubid" 'sysid'>
6335     <a/>
6336     @@@test:domTree:
6337     document {
6338     document-type {
6339     node-name: 'a';
6340     public-id: 'pubid';
6341     system-id: 'sysid';
6342     }
6343     element { }
6344     }
6345     @@XMLTest:
6346     @@@QName: xp.doctype.pubid.sysid.4.test
6347     @@@DEnt:
6348     @@@@test:value:
6349     <!DOCTYPE a PUBLIC 'pubid' 'sysid'>
6350     <a/>
6351     @@@test:domTree:
6352     document {
6353     document-type {
6354     node-name: 'a';
6355     public-id: 'pubid';
6356     system-id: 'sysid';
6357     }
6358     element { }
6359     }
6360     @@XMLTest:
6361     @@@QName: xp.doctype.pubid.sysid.5.test
6362     @@@DEnt:
6363     @@@@test:value:
6364     <!DOCTYPE a PUBLIC "pubid" "sysid" >
6365     <a/>
6366     @@@test:domTree:
6367     document {
6368     document-type {
6369     node-name: 'a';
6370     public-id: 'pubid';
6371     system-id: 'sysid';
6372     }
6373     element { }
6374     }
6375     @@XMLTest:
6376     @@@QName: xp.doctype.pubid.sysid.6.test
6377     @@@DEnt:
6378     @@@@test:value:
6379     <!DOCTYPE a PUBLIC 'pubid' 'sysid' >
6380     <a/>
6381     @@@test:domTree:
6382     document {
6383     document-type {
6384     node-name: 'a';
6385     public-id: 'pubid';
6386     system-id: 'sysid';
6387     }
6388     element { }
6389     }
6390     @@XMLTest:
6391     @@@QName: xp.doctype.pubid.sysid.intsubset.1.test
6392     @@@DEnt:
6393     @@@@test:value:
6394     <!DOCTYPE a PUBLIC "pubid" "sysid"[]>
6395     <a/>
6396     @@@test:domTree:
6397     document {
6398     document-type {
6399     node-name: 'a';
6400     public-id: 'pubid';
6401     system-id: 'sysid';
6402     }
6403     element { }
6404     }
6405     @@XMLTest:
6406     @@@QName: xp.doctype.pubid.sysid.intsubset.2.test
6407     @@@DEnt:
6408     @@@@test:value:
6409     <!DOCTYPE a PUBLIC "pubid" "sysid" []>
6410     <a/>
6411     @@@test:domTree:
6412     document {
6413     document-type {
6414     node-name: 'a';
6415     public-id: 'pubid';
6416     system-id: 'sysid';
6417     }
6418     element { }
6419     }
6420     @@XMLTest:
6421     @@@QName: xp.doctype.pubid.sysid.intsubset.3.test
6422     @@@DEnt:
6423     @@@@test:value:
6424     <!DOCTYPE a PUBLIC 'pubid' 'sysid'[]>
6425     <a/>
6426     @@@test:domTree:
6427     document {
6428     document-type {
6429     node-name: 'a';
6430     public-id: 'pubid';
6431     system-id: 'sysid';
6432     }
6433     element { }
6434     }
6435     @@XMLTest:
6436     @@@QName: xp.doctype.pubid.sysid.intsubset.4.test
6437     @@@DEnt:
6438     @@@@test:value:
6439     <!DOCTYPE a PUBLIC 'pubid' 'sysid' []>
6440     <a/>
6441     @@@test:domTree:
6442     document {
6443     document-type {
6444     node-name: 'a';
6445     public-id: 'pubid';
6446     system-id: 'sysid';
6447     }
6448     element { }
6449     }
6450     @@XMLTest:
6451     @@@QName: xp.doctype.sysid.1.test
6452     @@@DEnt:
6453     @@@@test:value:
6454     <!DOCTYPE a SYSTEM "sysid">
6455     <a/>
6456     @@@test:domTree:
6457     document {
6458     document-type {
6459     node-name: 'a';
6460     public-id: null;
6461     system-id: 'sysid';
6462     }
6463     element { }
6464     }
6465     @@XMLTest:
6466     @@@QName: xp.doctype.sysid.2.test
6467     @@@DEnt:
6468     @@@@test:value:
6469     <!DOCTYPE a SYSTEM 'sysid'>
6470     <a/>
6471     @@@test:domTree:
6472     document {
6473     document-type {
6474     node-name: 'a';
6475     public-id: null;
6476     system-id: 'sysid';
6477     }
6478     element { }
6479     }
6480     @@XMLTest:
6481     @@@QName: xp.doctype.sysid.3.test
6482     @@@DEnt:
6483     @@@@test:value:
6484     <!DOCTYPE a SYSTEM "sysid" >
6485     <a/>
6486     @@@test:domTree:
6487     document {
6488     document-type {
6489     node-name: 'a';
6490     public-id: null;
6491     system-id: 'sysid';
6492     }
6493     element { }
6494     }
6495     @@XMLTest:
6496     @@@QName: xp.doctype.sysid.4.test
6497     @@@DEnt:
6498     @@@@test:value:
6499     <!DOCTYPE a SYSTEM 'sysid' >
6500     <a/>
6501     @@@test:domTree:
6502     document {
6503     document-type {
6504     node-name: 'a';
6505     public-id: null;
6506     system-id: 'sysid';
6507     }
6508     element { }
6509     }
6510     @@XMLTest:
6511     @@@QName: xp.doctype.sysid.intsubset.1.test
6512     @@@DEnt:
6513     @@@@test:value:
6514     <!DOCTYPE a SYSTEM "sysid"[]>
6515     <a/>
6516     @@@test:domTree:
6517     document {
6518     document-type {
6519     node-name: 'a';
6520     public-id: null;
6521     system-id: 'sysid';
6522     }
6523     element { }
6524     }
6525     @@XMLTest:
6526     @@@QName: xp.doctype.sysid.intsubset.2.test
6527     @@@DEnt:
6528     @@@@test:value:
6529     <!DOCTYPE a SYSTEM "sysid" []>
6530     <a/>
6531     @@@test:domTree:
6532     document {
6533     document-type {
6534     node-name: 'a';
6535     public-id: null;
6536     system-id: 'sysid';
6537     }
6538     element { }
6539     }
6540     @@XMLTest:
6541     @@@QName: xp.doctype.sysid.intsubset.3.test
6542     @@@DEnt:
6543     @@@@test:value:
6544     <!DOCTYPE a SYSTEM 'sysid'[]>
6545     <a/>
6546     @@@test:domTree:
6547     document {
6548     document-type {
6549     node-name: 'a';
6550     public-id: null;
6551     system-id: 'sysid';
6552     }
6553     element { }
6554     }
6555     @@XMLTest:
6556     @@@QName: xp.doctype.sysid.intsubset.4.test
6557     @@@DEnt:
6558     @@@@test:value:
6559     <!DOCTYPE a SYSTEM 'sysid' []>
6560     <a/>
6561     @@@test:domTree:
6562     document {
6563     document-type {
6564     node-name: 'a';
6565     public-id: null;
6566     system-id: 'sysid';
6567     }
6568     element { }
6569     }
6570     @@XMLTest:
6571     @@@QName: xp.doctype.public.stago.test
6572     @@@DEnt:
6573     @@@@test:value:
6574     <!DOCTYPE a PUBLIC<a/>
6575     @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 19); }
6576     @@XMLTest:
6577     @@@QName: xp.doctype.public.mdc.test
6578     @@@DEnt:
6579     @@@@test:value:
6580     <!DOCTYPE a PUBLIC>
6581     <a/>
6582     @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 19); }
6583     @@XMLTest:
6584     @@@QName: xp.doctype.public.s.stago.test
6585     @@@DEnt:
6586     @@@@test:value:
6587     <!DOCTYPE a PUBLIC <a/>
6588     @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 20); }
6589     @@XMLTest:
6590     @@@QName: xp.doctype.public.s.mdc.test
6591     @@@DEnt:
6592     @@@@test:value:
6593     <!DOCTYPE a PUBLIC >
6594     <a/>
6595     @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 20); }
6596     @@XMLTest:
6597     @@@QName: xp.doctype.public.lit.test
6598     @@@DEnt:
6599     @@@@test:value:
6600     <!DOCTYPE a PUBLIC"p" "s">
6601     <a/>
6602     @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 19); }
6603     @@XMLTest:
6604     @@@QName: xp.doctype.public.lita.test
6605     @@@DEnt:
6606     @@@@test:value:
6607     <!DOCTYPE a PUBLIC'p' "s">
6608     <a/>
6609     @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 19); }
6610     @@XMLTest:
6611     @@@QName: xp.doctype.pubid.lit.lita.unmatched.1.test
6612     @@@DEnt:
6613     @@@@test:value:
6614     <!DOCTYPE a PUBLIC "p' "s">
6615     <a/>
6616     @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 25); }
6617     @@XMLTest:
6618     @@@QName: xp.doctype.pubid.lit.lita.unmatched.2.test
6619     @@@DEnt:
6620     @@@@test:value:
6621     <!DOCTYPE a PUBLIC "p' 's'><a/>
6622     @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 32); }
6623     @@XMLTest:
6624     @@@QName: xp.doctype.pubid.lita.lit.unmatched.1.test
6625     @@@DEnt:
6626     @@@@test:value:
6627     <!DOCTYPE a PUBLIC 'p" "s"><a/>
6628     @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 32); }
6629     @@XMLTest:
6630     @@@QName: xp.doctype.pubid.lita.lit.unmatched.2.test
6631     @@@DEnt:
6632     @@@@test:value:
6633     <!DOCTYPE a PUBLIC 'p" 's'>
6634     <a/>
6635     @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 21)..(1, 25); }
6636     @@XMLTest:
6637     @@@QName: xp.doctype.public.s.lit.mdc.test
6638     @@@DEnt:
6639     @@@@test:value:
6640     <!DOCTYPE a PUBLIC "><a/>
6641     @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 26); }
6642     @@XMLTest:
6643     @@@QName: xp.doctype.public.s.lita.mdc.test
6644     @@@DEnt:
6645     @@@@test:value:
6646     <!DOCTYPE a PUBLIC '><a/>
6647     @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 26); }
6648     @@XMLTest:
6649     @@@QName: xp.doctype.public.lit.pubid.lit.mdc.test
6650     @@@DEnt:
6651     @@@@test:value:
6652     <!DOCTYPE a PUBLIC "p">
6653     <a/>
6654     @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 23); }
6655     @@XMLTest:
6656     @@@QName: xp.doctype.public.lita.pubid.lita.mdc.test
6657     @@@DEnt:
6658     @@@@test:value:
6659     <!DOCTYPE a PUBLIC 'p'>
6660     <a/>
6661     @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 23); }
6662     @@XMLTest:
6663     @@@QName: xp.doctype.public.lit.pubid.lit.s.mdc.test
6664     @@@DEnt:
6665     @@@@test:value:
6666     <!DOCTYPE a PUBLIC "p" >
6667     <a/>
6668     @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 24); }
6669     @@XMLTest:
6670     @@@QName: xp.doctype.public.lita.pubid.lita.s.mdc.test
6671     @@@DEnt:
6672     @@@@test:value:
6673     <!DOCTYPE a PUBLIC 'p' >
6674     <a/>
6675     @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 24); }
6676     @@XMLTest:
6677     @@@QName: xp.doctype.public.lit.pubid.lit.s.lit.mdc.test
6678     @@@DEnt:
6679     @@@@test:value:
6680     <!DOCTYPE a PUBLIC "p" "><a/>
6681     @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 30); }
6682     @@XMLTest:
6683     @@@QName: xp.doctype.public.lit.pubid.lit.s.lita.mdc.test
6684     @@@DEnt:
6685     @@@@test:value:
6686     <!DOCTYPE a PUBLIC "p" '><a/>
6687     @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 30); }
6688     @@XMLTest:
6689     @@@QName: xp.doctype.public.lita.pubid.lita.s.lit.mdc.test
6690     @@@DEnt:
6691     @@@@test:value:
6692     <!DOCTYPE a PUBLIC 'p' "><a/>
6693     @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 30); }
6694     @@XMLTest:
6695     @@@QName: xp.doctype.public.lita.pubid.lita.s.lita.mdc.test
6696     @@@DEnt:
6697     @@@@test:value:
6698     <!DOCTYPE a PUBLIC 'p' '><a/>
6699     @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 30); }
6700     @@XMLTest:
6701     @@@QName: xp.doctype.public.lit.pubid.lit.lit.lita.unmatched.mdc.test
6702     @@@DEnt:
6703     @@@@test:value:
6704     <!DOCTYPE a PUBLIC "p" "s'><a/>
6705     @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 32); }
6706     @@XMLTest:
6707     @@@QName: xp.doctype.public.lita.pubid.lita.lita.lit.unmatched.mdc.test
6708     @@@DEnt:
6709     @@@@test:value:
6710     <!DOCTYPE a PUBLIC 'p' 's"><a/>
6711     @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 32); }
6712     @@XMLTest:
6713     @@@QName: xp.doctype.pubid.sysid.stago.1.test
6714     @@@DEnt:
6715     @@@@test:value:
6716     <!DOCTYPE a PUBLIC "p" "s"<a/>
6717     @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 27); }
6718     @@XMLTest:
6719     @@@QName: xp.doctype.pubid.sysid.stago.2.test
6720     @@@DEnt:
6721     @@@@test:value:
6722     <!DOCTYPE a PUBLIC "p" 's'<a/>
6723     @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 27); }
6724     @@XMLTest:
6725     @@@QName: xp.doctype.pubid.sysid.stago.s.1.test
6726     @@@DEnt:
6727     @@@@test:value:
6728     <!DOCTYPE a PUBLIC "p" "s" <a/>
6729     @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 28); }
6730     @@XMLTest:
6731     @@@QName: xp.doctype.pubid.sysid.stago.s.2.test
6732     @@@DEnt:
6733     @@@@test:value:
6734     <!DOCTYPE a PUBLIC "p" 's' <a/>
6735     @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 28); }
6736 wakaba 1.16
6737     @@XMLTest:
6738     @@@QName: xp.endofline.1.0.crlf.test
6739     @@@DEnt:
6740     @@@@test:value:
6741     <?xml version="1.0"?>
6742     <p>aaa$u000D$u000Abbb</p>
6743 wakaba 1.6 @@@test:domTree:
6744     document {
6745     xml-version: '1.0';
6746 wakaba 1.16 element {
6747     text-content: 'aaa' U+000A 'bbb';
6748 wakaba 1.6 }
6749 wakaba 1.16 }
6750     @@XMLTest:
6751     @@@QName: xp.endofline.1.1.crlf.test
6752     @@@DEnt:
6753     @@@@test:value:
6754     <?xml version="1.1"?>
6755     <p>aaa$u000D$u000Abbb</p>
6756     @@@test:domTree:
6757     document {
6758     xml-version: '1.1';
6759 wakaba 1.6 element {
6760 wakaba 1.16 text-content: 'aaa' U+000A 'bbb';
6761 wakaba 1.6 }
6762     }
6763     @@XMLTest:
6764 wakaba 1.16 @@@QName: xp.endofline.1.0.crnl.test
6765 wakaba 1.6 @@@DEnt:
6766     @@@@test:value:
6767 wakaba 1.16 <?xml version="1.0"?>
6768     <p>aaa$u000D$u0085bbb</p>
6769 wakaba 1.6 @@@test:domTree:
6770     document {
6771     xml-version: '1.0';
6772 wakaba 1.16 element {
6773     text-content: 'aaa' U+000A U+0085 'bbb';
6774 wakaba 1.6 }
6775 wakaba 1.16 }
6776     @@XMLTest:
6777     @@@QName: xp.endofline.1.1.crnl.test
6778     @@@DEnt:
6779     @@@@test:value:
6780     <?xml version="1.1"?>
6781     <p>aaa$u000D$u0085bbb</p>
6782     @@@test:domTree:
6783     document {
6784     xml-version: '1.1';
6785 wakaba 1.6 element {
6786 wakaba 1.16 text-content: 'aaa' U+000A 'bbb';
6787 wakaba 1.6 }
6788     }
6789     @@XMLTest:
6790 wakaba 1.16 @@@QName: xp.endofline.1.0.nl.test
6791 wakaba 1.6 @@@DEnt:
6792     @@@@test:value:
6793 wakaba 1.16 <?xml version="1.0"?>
6794     <p>aaa$u0085bbb</p>
6795 wakaba 1.6 @@@test:domTree:
6796     document {
6797     xml-version: '1.0';
6798     element {
6799 wakaba 1.16 text-content: 'aaa' U+0085 'bbb';
6800 wakaba 1.6 }
6801     }
6802     @@XMLTest:
6803 wakaba 1.16 @@@QName: xp.endofline.1.1.nl.test
6804 wakaba 1.6 @@@DEnt:
6805     @@@@test:value:
6806 wakaba 1.16 <?xml version="1.1"?>
6807     <p>aaa$u0085bbb</p>
6808     @@@test:domTree:
6809     document {
6810     xml-version: '1.1';
6811     element {
6812     text-content: 'aaa' U+000A 'bbb';
6813     }
6814     }
6815     @@XMLTest:
6816     @@@QName: xp.endofline.1.0.ls.test
6817     @@@DEnt:
6818     @@@@test:value:
6819     <?xml version="1.0"?>
6820     <p>aaa$u2028bbb</p>
6821     @@@test:domTree:
6822     document {
6823     xml-version: '1.0';
6824     element {
6825     text-content: 'aaa' U+2028 'bbb';
6826     }
6827     }
6828     @@XMLTest:
6829     @@@QName: xp.endofline.1.1.ls.test
6830     @@@DEnt:
6831     @@@@test:value:
6832     <?xml version="1.1"?>
6833     <p>aaa$u2028bbb</p>
6834     @@@test:domTree:
6835     document {
6836     xml-version: '1.1';
6837     element {
6838     text-content: 'aaa' U+000A 'bbb';
6839     }
6840     }
6841     @@XMLTest:
6842     @@@QName: xp.endofline.1.0.cr.test
6843     @@@DEnt:
6844     @@@@test:value:
6845     <?xml version="1.0"?>
6846     <p>aaa$u000Dbbb</p>
6847     @@@test:domTree:
6848     document {
6849     xml-version: '1.0';
6850     element {
6851     text-content: 'aaa' U+000A 'bbb';
6852     }
6853     }
6854     @@XMLTest:
6855     @@@QName: xp.endofline.1.1.cr.test
6856     @@@DEnt:
6857     @@@@test:value:
6858     <?xml version="1.1"?>
6859     <p>aaa$u000Dbbb</p>
6860     @@@test:domTree:
6861     document {
6862     xml-version: '1.1';
6863     element {
6864     text-content: 'aaa' U+000A 'bbb';
6865     }
6866     }
6867     @@XMLTest:
6868     @@@QName: xp.endofline.1.0.lf.test
6869     @@@DEnt:
6870     @@@@test:value:
6871     <?xml version="1.0"?>
6872     <p>aaa$u000Abbb</p>
6873     @@@test:domTree:
6874     document {
6875     xml-version: '1.0';
6876     element {
6877     text-content: 'aaa' U+000A 'bbb';
6878     }
6879     }
6880     @@XMLTest:
6881     @@@QName: xp.endofline.1.1.lf.test
6882     @@@DEnt:
6883     @@@@test:value:
6884     <?xml version="1.1"?>
6885     <p>aaa$u000Abbb</p>
6886     @@@test:domTree:
6887     document {
6888     xml-version: '1.1';
6889     element {
6890     text-content: 'aaa' U+000A 'bbb';
6891     }
6892     }
6893     @@XMLTest:
6894     @@@QName: xp.xml10.endofline.nl.in.xmldecl.1.test
6895     @@@DEnt:
6896     @@@@test:value:
6897     <?xml$u0085version="1.0"?>
6898     <p/>
6899     @@@c:erred:
6900     <[[xp|fatal-xml11-end-of-line-in-xml-declaration]]> { (1, 6)..(2, 0); }
6901     @@@c:erred: <[[xp|wf-syntax-error]]> { }
6902     @@XMLTest:
6903     @@@QName: xp.xml11.endofline.nl.in.xmldecl.1.test
6904     @@@DEnt:
6905     @@@@test:value:
6906     <?xml$u0085version="1.1"?>
6907     (err)<p/>
6908     @@@c:erred:
6909     <[[xp|fatal-xml11-end-of-line-in-xml-declaration]]> { (1, 6)..(2, 0); }
6910     @@@c:erred: <[[xp|wf-syntax-error]]> { }
6911     @@XMLTest:
6912     @@@QName: xp.xml10.endofline.crnl.in.xmldecl.1.test
6913     @@@DEnt:
6914     @@@@test:value:
6915     <?xml$u000D$u0085version="1.0"?>
6916     <p/>
6917     @@@c:erred:
6918     <[[xp|fatal-xml11-end-of-line-in-xml-declaration]]> { (1, 6)..(2, 0); }
6919     @@@c:erred: <[[xp|wf-syntax-error]]> { }
6920     @@XMLTest:
6921     @@@QName: xp.xml11.endofline.crnl.in.xmldecl.1.test
6922     @@@DEnt:
6923     @@@@test:value:
6924     <?xml$u000D$u0085version="1.1"?>
6925     (err)<p/>
6926     @@@c:erred:
6927     <[[xp|fatal-xml11-end-of-line-in-xml-declaration]]> { (1, 6)..(2, 0); }
6928     @@@c:erred: <[[xp|wf-syntax-error]]> { }
6929     @@XMLTest:
6930     @@@QName: xp.xml10.endofline.ls.in.xmldecl.1.test
6931     @@@DEnt:
6932     @@@@test:value:
6933     <?xml$u2028version="1.0"?>
6934     <p/>
6935     @@@c:erred:
6936     <[[xp|fatal-xml11-end-of-line-in-xml-declaration]]> { (1, 6)..(2, 0); }
6937     @@@c:erred: <[[xp|wf-syntax-error]]> { }
6938     @@XMLTest:
6939     @@@QName: xp.xml11.endofline.ls.in.xmldecl.1.test
6940     @@@DEnt:
6941     @@@@test:value:
6942     <?xml$u2028version="1.1"?>
6943     (err)<p/>
6944     @@@c:erred:
6945     <[[xp|fatal-xml11-end-of-line-in-xml-declaration]]> { (1, 6)..(2, 0); }
6946     @@@c:erred: <[[xp|wf-syntax-error]]> { }
6947     @@XMLTest:
6948     @@@QName: xp.xml10.endofline.nl.in.xmldecl.2.test
6949     @@@DEnt:
6950     @@@@test:value:
6951     <?xml version="1.0"$u0085?>
6952     <p/>
6953     @@@c:erred:
6954     <[[xp|fatal-xml11-end-of-line-in-xml-declaration]]> { (1, 20)..(2, 0); }
6955     @@@c:erred: <[[xp|wf-syntax-error]]> { }
6956     @@XMLTest:
6957     @@@QName: xp.xml11.endofline.nl.in.xmldecl.2.test
6958     @@@DEnt:
6959     @@@@test:value:
6960     <?xml version="1.1"$u0085?>
6961     (err)<p/>
6962     @@@c:erred:
6963     <[[xp|fatal-xml11-end-of-line-in-xml-declaration]]> { (1, 20)..(2, 0); }
6964     @@@c:erred: <[[xp|wf-syntax-error]]> { }
6965     @@XMLTest:
6966     @@@QName: xp.xml10.endofline.crnl.in.xmldecl.2.test
6967     @@@DEnt:
6968     @@@@test:value:
6969     <?xml version="1.0"$u000D$u0085?>
6970     <p/>
6971     @@@c:erred:
6972     <[[xp|fatal-xml11-end-of-line-in-xml-declaration]]> { (1, 20)..(2, 0); }
6973     @@@c:erred: <[[xp|wf-syntax-error]]> { }
6974     @@XMLTest:
6975     @@@QName: xp.xml11.endofline.crnl.in.xmldecl.2.test
6976     @@@DEnt:
6977     @@@@test:value:
6978     <?xml version="1.1"$u000D$u0085?>
6979     (err)<p/>
6980     @@@c:erred:
6981     <[[xp|fatal-xml11-end-of-line-in-xml-declaration]]> { (1, 20)..(2, 0); }
6982     @@@c:erred: <[[xp|wf-syntax-error]]> { }
6983     @@XMLTest:
6984     @@@QName: xp.xml10.endofline.ls.in.xmldecl.2.test
6985     @@@DEnt:
6986     @@@@test:value:
6987     <?xml version="1.0"$u2028?>
6988     <p/>
6989     @@@c:erred:
6990     <[[xp|fatal-xml11-end-of-line-in-xml-declaration]]> { (1, 20)..(2, 0); }
6991     @@@c:erred: <[[xp|wf-syntax-error]]> { }
6992     @@XMLTest:
6993     @@@QName: xp.xml11.endofline.ls.in.xmldecl.2.test
6994     @@@DEnt:
6995     @@@@test:value:
6996     <?xml version="1.1"$u2028?>
6997     (err)<p/>
6998     @@@c:erred:
6999     <[[xp|fatal-xml11-end-of-line-in-xml-declaration]]> { (1, 20)..(2, 0); }
7000     @@@c:erred: <[[xp|wf-syntax-error]]> { }
7001     @@XMLTest:
7002     @@@QName: xp.xml10.endofline.nl.in.xmldecl.3.test
7003     @@@DEnt:
7004     @@@@test:value:
7005     <?xml $u0085version="1.0"?>
7006     <p/>
7007     @@@c:erred:
7008     <[[xp|fatal-xml11-end-of-line-in-xml-declaration]]> { (1, 7)..(2, 0); }
7009     @@@c:erred: <[[xp|wf-syntax-error]]> { }
7010     @@XMLTest:
7011     @@@QName: xp.xml11.endofline.nl.in.xmldecl.3.test
7012     @@@DEnt:
7013     @@@@test:value:
7014     <?xml $u0085version="1.1"?>
7015     (err)<p/>
7016     @@@c:erred:
7017     <[[xp|fatal-xml11-end-of-line-in-xml-declaration]]> { (1, 7)..(2, 0); }
7018     @@@c:erred: <[[xp|wf-syntax-error]]> { }
7019     @@XMLTest:
7020     @@@QName: xp.xml10.endofline.crnl.in.xmldecl.3.test
7021     @@@DEnt:
7022     @@@@test:value:
7023     <?xml $u000D$u0085version="1.0"?>
7024     <p/>
7025     @@@c:erred:
7026     <[[xp|fatal-xml11-end-of-line-in-xml-declaration]]> { (1, 7)..(2, 0); }
7027     @@@c:erred: <[[xp|wf-syntax-error]]> { }
7028     @@XMLTest:
7029     @@@QName: xp.xml11.endofline.crnl.in.xmldecl.3.test
7030     @@@DEnt:
7031     @@@@test:value:
7032     <?xml $u000D$u0085version="1.1"?>
7033     (err)<p/>
7034     @@@c:erred:
7035     <[[xp|fatal-xml11-end-of-line-in-xml-declaration]]> { (1, 7)..(2, 0); }
7036     @@@c:erred: <[[xp|wf-syntax-error]]> { }
7037     @@XMLTest:
7038     @@@QName: xp.xml10.endofline.ls.in.xmldecl.3.test
7039     @@@DEnt:
7040     @@@@test:value:
7041     <?xml $u2028version="1.0"?>
7042     <p/>
7043     @@@c:erred:
7044     <[[xp|fatal-xml11-end-of-line-in-xml-declaration]]> { (1, 7)..(2, 0); }
7045     @@@c:erred: <[[xp|wf-syntax-error]]> { }
7046     @@XMLTest:
7047     @@@QName: xp.xml11.endofline.ls.in.xmldecl.3.test
7048     @@@DEnt:
7049     @@@@test:value:
7050     <?xml $u2028version="1.1"?>
7051     (err)<p/>
7052     @@@c:erred:
7053     <[[xp|fatal-xml11-end-of-line-in-xml-declaration]]> { (1, 7)..(2, 0); }
7054     @@@c:erred: <[[xp|wf-syntax-error]]> { }
7055     @@XMLTest:
7056     @@@QName: xp.xml10implied.endofline.nl.in.pi.1.test
7057     @@@DEnt:
7058     @@@@test:value:
7059     <?xml-$u0085?>
7060     <p/>
7061     @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 7)..(2, 0); }
7062     @@XMLTest:
7063     @@@QName: xp.xml10.endofline.nl.in.pi.1.test
7064     @@@DEnt:
7065     @@@@test:value:
7066     <?xml version="1.0"?>
7067     <?xml-$u0085?>
7068     <p/>
7069     @@@c:erred: <[[xp|wf-syntax-error]]> { (2, 7)..(3, 0); }
7070     @@XMLTest:
7071     @@@QName: xp.xml11.endofline.nl.in.pi.1.test
7072     @@@DEnt:
7073     @@@@test:value:
7074     <?xml version="1.1"?>
7075     <?xml-$u0085?>
7076     <p/>
7077     @@@test:domTree:
7078     document {
7079     xml-version: '1.1';
7080     pi {
7081     node-name: 'xml-';
7082     node-value: '';
7083     }
7084     element { }
7085     }
7086     @@XMLTest:
7087     @@@QName: xp.xml10implied.endofline.crnl.in.pi.1.test
7088     @@@DEnt:
7089     @@@@test:value:
7090     <?xml-$u000D$u0085?>
7091     <p/>
7092     @@@test:domTree:
7093     document {
7094     xml-version: '1.0';
7095     pi {
7096     node-name: 'xml-';
7097     node-value: U+0085;
7098     }
7099     element { }
7100     }
7101     @@XMLTest:
7102     @@@QName: xp.xml10.endofline.crnl.in.pi.1.test
7103     @@@DEnt:
7104     @@@@test:value:
7105     <?xml version="1.0"?>
7106     <?xml-$u000D$u0085?>
7107     <p/>
7108     @@@test:domTree:
7109     document {
7110     xml-version: '1.0';
7111     pi {
7112     node-name: 'xml-';
7113     node-value: U+0085;
7114     }
7115     element { }
7116     }
7117     @@XMLTest:
7118     @@@QName: xp.xml11.endofline.crnl.in.pi.1.test
7119     @@@DEnt:
7120     @@@@test:value:
7121     <?xml version="1.1"?>
7122     <?xml-$u000D$u0085?>
7123     <p/>
7124     @@@test:domTree:
7125     document {
7126     xml-version: '1.1';
7127     pi {
7128     node-name: 'xml-';
7129     node-value: '';
7130     }
7131     element { }
7132     }
7133     @@XMLTest:
7134     @@@QName: xp.xml10implied.endofline.ls.in.pi.1.test
7135     @@@DEnt:
7136     @@@@test:value:
7137     <?xml-$u2028?>
7138     <p/>
7139     @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 7)..(2, 0); }
7140     @@XMLTest:
7141     @@@QName: xp.xml10.endofline.ls.in.pi.1.test
7142     @@@DEnt:
7143     @@@@test:value:
7144     <?xml version="1.0"?>
7145     <?xml-$u2028?>
7146     <p/>
7147     @@@c:erred: <[[xp|wf-syntax-error]]> { (2, 7)..(3, 0); }
7148     @@XMLTest:
7149     @@@QName: xp.xml11.endofline.ls.in.pi.1.test
7150     @@@DEnt:
7151     @@@@test:value:
7152     <?xml version="1.1"?>
7153     <?xml-$u2028?>
7154     <p/>
7155     @@@test:domTree:
7156     document {
7157     xml-version: '1.1';
7158     pi {
7159     node-name: 'xml-';
7160     node-value: '';
7161     }
7162     element { }
7163     }
7164     @@XMLTest:
7165     @@@QName: xp.noxmldecl.pi.pi.test
7166     @@@DEnt:
7167     @@@@test:value:
7168     <?noxml 1?><?noxml 2?><p/>
7169     @@@test:domTree:
7170     document {
7171     xml-version: '1.0';
7172     pi {
7173     node-name: 'noxml';
7174     node-value: '1';
7175     }
7176     pi {
7177     node-name: 'noxml';
7178     node-value: '2';
7179     }
7180     element { }
7181     }
7182     @@XMLTest:
7183     @@@QName: xp.noxmldecl.pi.pi.2.test
7184     @@@DEnt:
7185     @@@@test:value:
7186     <?xmlno 1?><?xmlno 2?><p/>
7187     @@@test:domTree:
7188     document {
7189     xml-version: '1.0';
7190     pi {
7191     node-name: 'xmlno';
7192     node-value: '1';
7193     }
7194     pi {
7195     node-name: 'xmlno';
7196     node-value: '2';
7197     }
7198     element { }
7199     }
7200     @@XMLTest:
7201     @@@QName: xp.noxmldecl.pi.pi.3.test
7202     @@@DEnt:
7203     @@@@test:value:
7204     <?xmln 1?><?xmln 2?><p/>
7205     @@@test:domTree:
7206     document {
7207     xml-version: '1.0';
7208     pi {
7209     node-name: 'xmln';
7210     node-value: '1';
7211     }
7212     pi {
7213     node-name: 'xmln';
7214     node-value: '2';
7215     }
7216     element { }
7217     }
7218     @@XMLTest:
7219     @@@QName: xp.noxml.s.nl.test
7220     @@@DEnt:
7221     @@@@test:value:
7222     $u0085<p/>
7223     @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 1)..(2, 0); }
7224     @@XMLTest:
7225     @@@QName: xp.noxml.s.crnl.test
7226     @@@DEnt:
7227     @@@@test:value:
7228     $u000D$u0085<p/>
7229     @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 1)..(2, 0); }
7230     @@XMLTest:
7231     @@@QName: xp.noxml.s.ls.test
7232     @@@DEnt:
7233     @@@@test:value:
7234     $u2028<p/>
7235     @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 1)..(2, 0); }
7236     @@XMLTest:
7237     @@@QName: xp.xml10.decl.s.nl.test
7238     @@@DEnt:
7239     @@@@test:value:
7240     <?xml version="1.0"?>$u0085<p/>
7241     @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 22)..(2, 0); }
7242     @@XMLTest:
7243     @@@QName: xp.xml10.decl.s.crnl.test
7244     @@@DEnt:
7245     @@@@test:value:
7246     <?xml version="1.0"?>$u000D$u0085<p/>
7247     @@@c:erred: <[[xp|wf-syntax-error]]> { (2, 0)..(3, 0); }
7248     @@XMLTest:
7249     @@@QName: xp.xml10.decl.s.ls.test
7250     @@@DEnt:
7251     @@@@test:value:
7252     <?xml version="1.0"?>$u2028<p/>
7253     @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 22)..(2, 0); }
7254     @@XMLTest:
7255     @@@QName: xp.xml11.decl.s.nl.test
7256     @@@DEnt:
7257     @@@@test:value:
7258     <?xml version="1.1"?>$u0085<p/>
7259     @@@test:domTree:
7260     document {
7261     xml-version: '1.1';
7262     element { }
7263     }
7264     @@XMLTest:
7265     @@@QName: xp.xml11.decl.s.crnl.test
7266     @@@DEnt:
7267     @@@@test:value:
7268     <?xml version="1.1"?>$u000D$u0085<p/>
7269     @@@test:domTree:
7270     document {
7271     xml-version: '1.1';
7272     element { }
7273     }
7274     @@XMLTest:
7275     @@@QName: xp.xml11.decl.s.ls.test
7276     @@@DEnt:
7277     @@@@test:value:
7278     <?xml version="1.1"?>$u2028<p/>
7279     @@@test:domTree:
7280     document {
7281     xml-version: '1.1';
7282     element { }
7283     }
7284    
7285     @@XMLTest:
7286 wakaba 1.18 @@@QName: xp.element.type.match.1.test
7287     @@@DEnt:
7288     @@@@test:value:
7289     <p></pa>(err)
7290     @@@c:erred: <[[xp|wf-element-type-match]]> { (1, 4)..(1, 8); }
7291     @@@c:erred: <[[xp|wf-syntax-error]]> { }
7292     @@XMLTest:
7293     @@@QName: xp.element.type.match.2.test
7294     @@@DEnt:
7295     @@@@test:value:
7296     <p><pa></pa></pa>(err)
7297     @@@c:erred: <[[xp|wf-element-type-match]]> { (1, 13)..(1, 17); }
7298     @@@c:erred: <[[xp|wf-syntax-error]]> { }
7299     @@XMLTest:
7300     @@@QName: xp.element.type.match.3.test
7301     @@@DEnt:
7302     @@@@test:value:
7303     <p><pa></p></p>(err)
7304     @@@c:erred: <[[xp|wf-element-type-match]]> { (1, 8)..(1, 11); }
7305     @@@c:erred: <[[xp|wf-syntax-error]]> { }
7306     @@XMLTest:
7307     @@@QName: xp.element.type.match.4.test
7308     @@@DEnt:
7309     @@@@test:value:
7310     <a:p xmlns:a="about:1"></p>(err)
7311     @@@c:erred: <[[xp|wf-element-type-match]]> { (1, 24)..(1, 27); }
7312     @@@c:erred: <[[xp|wf-syntax-error]]> { }
7313     @@XMLTest:
7314     @@@QName: xp.element.type.match.5.test
7315     @@@DEnt:
7316     @@@@test:value:
7317     <a:p xmlns:a="about:1" xmlns:b="about:1"></b:p>(err)
7318     @@@c:erred: <[[xp|wf-element-type-match]]> { (1, 42)..(1, 47); }
7319     @@@c:erred: <[[xp|wf-syntax-error]]> { }
7320    
7321     @@XMLTest:
7322     @@@QName: xp.stag.stago.name.etago.test
7323     @@@DEnt:
7324     @@@@test:value:
7325     <a</a>
7326     @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 3); }
7327     @@XMLTest:
7328     @@@QName: xp.stag.stago.name.s.etago.test
7329     @@@DEnt:
7330     @@@@test:value:
7331     <a </a>
7332     @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 4); }
7333     @@XMLTest:
7334     @@@QName: xp.stag.stago.name.s.attr.etago.test
7335     @@@DEnt:
7336     @@@@test:value:
7337     <a a="b"</a>
7338     @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 9); }
7339     @@XMLTest:
7340     @@@QName: xp.stag.stago.name.s.attr.s.attr.etago.test
7341     @@@DEnt:
7342     @@@@test:value:
7343     <a a="b" c="d"</a>
7344     @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 15); }
7345     @@XMLTest:
7346     @@@QName: xp.stag.stago.name.s.attr.s.etago.test
7347     @@@DEnt:
7348     @@@@test:value:
7349     <a a="b" </a>
7350     @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 10); }
7351     @@XMLTest:
7352     @@@QName: xp.stag.etag.1.test
7353 wakaba 1.16 @@@DEnt:
7354     @@@@test:value:
7355 wakaba 1.18 <root><a></a></root>
7356 wakaba 1.16 @@@test:domTree:
7357     document {
7358 wakaba 1.18 element {
7359     element {
7360     node-name: 'a';
7361 wakaba 1.16 }
7362     }
7363 wakaba 1.18 }
7364     @@XMLTest:
7365     @@@QName: xp.stag.etag.2.test
7366     @@@DEnt:
7367     @@@@test:value:
7368     <root><ab></ab></root>
7369     @@@test:domTree:
7370     document {
7371 wakaba 1.16 element {
7372 wakaba 1.18 element {
7373     node-name: 'ab';
7374     }
7375 wakaba 1.16 }
7376 wakaba 1.18 }
7377 wakaba 1.16 @@XMLTest:
7378 wakaba 1.18 @@@QName: xp.stag.etag.s.1.test
7379 wakaba 1.16 @@@DEnt:
7380     @@@@test:value:
7381 wakaba 1.18 <root><a ></a ></root>
7382 wakaba 1.16 @@@test:domTree:
7383     document {
7384 wakaba 1.18 element {
7385     element {
7386     node-name: 'a';
7387 wakaba 1.16 }
7388     }
7389 wakaba 1.18 }
7390     @@XMLTest:
7391     @@@QName: xp.etag.1.test
7392     @@@DEnt:
7393     @@@@test:value:
7394     <root><a/></root>
7395     @@@test:domTree:
7396     document {
7397 wakaba 1.16 element {
7398 wakaba 1.18 element {
7399     node-name: 'a';
7400     }
7401 wakaba 1.16 }
7402 wakaba 1.18 }
7403 wakaba 1.16 @@XMLTest:
7404 wakaba 1.18 @@@QName: xp.etag.2.test
7405 wakaba 1.16 @@@DEnt:
7406     @@@@test:value:
7407 wakaba 1.18 <root><a /></root>
7408 wakaba 1.16 @@@test:domTree:
7409     document {
7410     element {
7411 wakaba 1.18 element {
7412     node-name: 'a';
7413     }
7414 wakaba 1.16 }
7415 wakaba 1.18 }
7416 wakaba 1.16 @@XMLTest:
7417 wakaba 1.18 @@@QName: xp.stag.etag.attr.1.test
7418 wakaba 1.16 @@@DEnt:
7419     @@@@test:value:
7420 wakaba 1.18 <root><a at="v"></a></root>
7421 wakaba 1.16 @@@test:domTree:
7422     document {
7423 wakaba 1.18 element {
7424     element {
7425     node-name: 'a';
7426     attribute {
7427     node-name: 'at';
7428     value: 'v';
7429     }
7430 wakaba 1.16 }
7431     }
7432 wakaba 1.18 }
7433     @@XMLTest:
7434     @@@QName: xp.stag.etag.attr.2.test
7435     @@@DEnt:
7436     @@@@test:value:
7437     <root><a at="v" ></a></root>
7438     @@@test:domTree:
7439     document {
7440 wakaba 1.16 element {
7441 wakaba 1.18 element {
7442     node-name: 'a';
7443     attribute {
7444     node-name: 'at';
7445     value: 'v';
7446 wakaba 1.16 }
7447     }
7448     }
7449 wakaba 1.18 }
7450 wakaba 1.16 @@XMLTest:
7451 wakaba 1.18 @@@QName: xp.stag.etag.attr.3.test
7452 wakaba 1.16 @@@DEnt:
7453     @@@@test:value:
7454 wakaba 1.18 <root><a at ="v"></a></root>
7455 wakaba 1.16 @@@test:domTree:
7456     document {
7457 wakaba 1.18 element {
7458     element {
7459     node-name: 'a';
7460     attribute {
7461     node-name: 'at';
7462     value: 'v';
7463     }
7464 wakaba 1.16 }
7465     }
7466 wakaba 1.18 }
7467     @@XMLTest:
7468     @@@QName: xp.stag.etag.attr.4.test
7469     @@@DEnt:
7470     @@@@test:value:
7471     <root><a at= "v"></a></root>
7472     @@@test:domTree:
7473     document {
7474 wakaba 1.16 element {
7475 wakaba 1.18 element {
7476     node-name: 'a';
7477     attribute {
7478     node-name: 'at';
7479     value: 'v';
7480 wakaba 1.16 }
7481     }
7482 wakaba 1.18 }
7483     }
7484     @@XMLTest:
7485     @@@QName: xp.stag.etag.attr.5.test
7486     @@@DEnt:
7487     @@@@test:value:
7488     <root><a at='v'></a></root>
7489     @@@test:domTree:
7490     document {
7491     element {
7492     element {
7493     node-name: 'a';
7494     attribute {
7495     node-name: 'at';
7496     value: 'v';
7497 wakaba 1.16 }
7498     }
7499     }
7500 wakaba 1.18 }
7501 wakaba 1.16 @@XMLTest:
7502 wakaba 1.18 @@@QName: xp.stag.etag.attr.6.test
7503 wakaba 1.16 @@@DEnt:
7504     @@@@test:value:
7505 wakaba 1.18 <root><a at= 'v' ></a></root>
7506 wakaba 1.6 @@@test:domTree:
7507     document {
7508 wakaba 1.18 element {
7509     element {
7510     node-name: 'a';
7511     attribute {
7512     node-name: 'at';
7513     value: 'v';
7514     }
7515 wakaba 1.11 }
7516 wakaba 1.6 }
7517 wakaba 1.18 }
7518     @@XMLTest:
7519     @@@QName: xp.stag.etag.attr.attr.1.test
7520     @@@DEnt:
7521     @@@@test:value:
7522     <root><a at="v" tr="w"></a></root>
7523     @@@test:domTree:
7524     document {
7525 wakaba 1.6 element {
7526 wakaba 1.18 element {
7527     node-name: 'a';
7528     attribute {
7529     node-name: 'at';
7530     value: 'v';
7531 wakaba 1.6 }
7532 wakaba 1.18 attribute {
7533     node-name: 'tr';
7534     value: 'w';
7535 wakaba 1.6 }
7536     }
7537     }
7538 wakaba 1.18 }
7539 wakaba 1.6 @@XMLTest:
7540 wakaba 1.18 @@@QName: xp.stag.etag.attr.attr.2.test
7541 wakaba 1.6 @@@DEnt:
7542     @@@@test:value:
7543 wakaba 1.18 <root><a tr="w" at="v"></a></root>
7544 wakaba 1.6 @@@test:domTree:
7545     document {
7546 wakaba 1.18 element {
7547     element {
7548     node-name: 'a';
7549     attribute {
7550     node-name: 'at';
7551     value: 'v';
7552     }
7553     attribute {
7554     node-name: 'tr';
7555     value: 'w';
7556 wakaba 1.11 }
7557     }
7558 wakaba 1.6 }
7559 wakaba 1.18 }
7560     @@XMLTest:
7561     @@@QName: xp.stag.etag.attr.no.s.attr.test
7562     @@@DEnt:
7563     @@@@test:value:
7564     <root><a at="v"tr="w"></a></root>
7565     @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 16)..(1, 17); }
7566     @@XMLTest:
7567     @@@QName: xp.etag.attr.1.test
7568     @@@DEnt:
7569     @@@@test:value:
7570     <root><a at="v" tr="w"></a b="c"></root>
7571     @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 28); }
7572     @@XMLTest:
7573     @@@QName: xp.etag.no.etagc.1.test
7574     @@@DEnt:
7575     @@@@test:value:
7576     <root><a at="v" tr="w"></a</root>
7577     @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 27)..(1, 28); }
7578     @@XMLTest:
7579     @@@QName: xp.etag.no.etagc.2.test
7580     @@@DEnt:
7581     @@@@test:value:
7582     <root><a at="v" tr="w"></a </root>
7583     @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 29)..(1, 30); }
7584     @@XMLTest:
7585     @@@QName: xp.mtag.attr.1.test
7586     @@@DEnt:
7587     @@@@test:value:
7588     <root><a b="c"/></root>
7589     @@@test:domTree:
7590     document {
7591 wakaba 1.6 element {
7592 wakaba 1.18 element {
7593     node-name: 'a';
7594     attribute {
7595     node-name: 'b';
7596     value: 'c';
7597 wakaba 1.6 }
7598     }
7599 wakaba 1.8 }
7600 wakaba 1.18 }
7601 wakaba 1.11 @@XMLTest:
7602 wakaba 1.18 @@@QName: xp.mtag.attr.2.test
7603 wakaba 1.11 @@@DEnt:
7604     @@@@test:value:
7605 wakaba 1.18 <root><a b="c" /></root>
7606 wakaba 1.11 @@@test:domTree:
7607     document {
7608 wakaba 1.18 element {
7609     element {
7610     node-name: 'a';
7611     attribute {
7612     node-name: 'b';
7613     value: 'c';
7614     }
7615 wakaba 1.11 }
7616     }
7617 wakaba 1.18 }
7618 wakaba 1.11 @@XMLTest:
7619 wakaba 1.18 @@@QName: xp.mtag.attr.3.test
7620 wakaba 1.11 @@@DEnt:
7621     @@@@test:value:
7622 wakaba 1.18 <root><a b='c'/></root>
7623 wakaba 1.11 @@@test:domTree:
7624     document {
7625     element {
7626 wakaba 1.18 element {
7627     node-name: 'a';
7628     attribute {
7629     node-name: 'b';
7630     value: 'c';
7631     }
7632     }
7633 wakaba 1.11 }
7634 wakaba 1.18 }
7635 wakaba 1.11 @@XMLTest:
7636 wakaba 1.18 @@@QName: xp.mtag.attr.4.test
7637 wakaba 1.11 @@@DEnt:
7638     @@@@test:value:
7639 wakaba 1.18 <root><a b="c" d="e"/></root>
7640 wakaba 1.11 @@@test:domTree:
7641     document {
7642     element {
7643 wakaba 1.18 element {
7644     node-name: 'a';
7645     attribute {
7646     node-name: 'b';
7647     value: 'c';
7648     }
7649     attribute {
7650     node-name: 'd';
7651     value: 'e';
7652     }
7653 wakaba 1.11 }
7654     }
7655 wakaba 1.18 }
7656    
7657     @@XMLTest:
7658     @@@QName: xp.attvalue.lt.1.test
7659     @@@DEnt:
7660     @@@@test:value:
7661     <a b="aa<dd"/>
7662     @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 9); }
7663     @@XMLTest:
7664     @@@QName: xp.attvalue.lt.2.test
7665     @@@DEnt:
7666     @@@@test:value:
7667     <a b='aa<dd'/>
7668     @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 9); }
7669     @@XMLTest:
7670     @@@QName: xp.attvalue.amp.1.test
7671     @@@DEnt:
7672     @@@@test:value:
7673     <a b="aa& dd"/>
7674     @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 9)..(1, 12); }
7675     @@XMLTest:
7676     @@@QName: xp.attvalue.amp.2.test
7677     @@@DEnt:
7678     @@@@test:value:
7679     <a b='aa& dd'/>
7680     @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 9)..(1, 12); }
7681     @@XMLTest:
7682     @@@QName: xp.attvalue.amp.3.test
7683     @@@DEnt:
7684     @@@@test:value:
7685     <a b="aa&# dd"/>
7686     @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 9)..(1, 13); }
7687     @@XMLTest:
7688     @@@QName: xp.attvalue.amp.4.test
7689     @@@DEnt:
7690     @@@@test:value:
7691     <a b="aa&#x dd"/>
7692     @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 9)..(1, 14); }
7693    
7694     @@XMLTest:
7695     @@@QName: xp.unique.att.spec.1.test
7696     @@@DEnt:
7697     @@@@test:value:
7698     <a b="c" b="d"/>
7699     @@@c:erred: <[[xp|wf-unique-att-spec]]> { (1, 4)..(1, 14); }
7700     @@XMLTest:
7701     @@@QName: xp.unique.att.spec.2.test
7702     @@@DEnt:
7703     @@@@test:value:
7704     <a d:b="c" d:b="d" xmlns:d="about:2"/>
7705     @@@c:erred: <[[xp|wf-unique-att-spec]]> { (1, 4)..(1, 18); }
7706    
7707     @@XMLTest:
7708     @@@QName: xp.no.external.entity.references.1.test
7709     @@@DEnt:
7710     @@@@test:value:
7711     <!DOCTYPE a [
7712     <!ENTITY ent SYSTEM "something">
7713     ]>
7714     <a b="c&ent;"/>
7715     @@@c:erred: <[[xp|wf-no-external-entity-references]]> { (4, 8)..(4, 12); }
7716     @@XMLTest:
7717     @@@QName: xp.no.external.entity.references.2.test
7718     @@@DEnt:
7719     @@@@test:value:
7720     <!DOCTYPE a [
7721     <!NOTATION n SYSTEM "notation">
7722     <!ENTITY ent SYSTEM "something" NDATA n>
7723     ]>
7724     <a b="c&ent;"/>
7725     @@@c:erred: <[[xp|wf-no-external-entity-references]]> { (5, 8)..(5, 12); }
7726     @@XMLTest:
7727     @@@QName: xp.no.external.entity.references.3.test
7728     @@@DEnt:
7729     @@@@test:value:
7730     <!DOCTYPE a [
7731     <!ENTITY ent SYSTEM "something">
7732     <!ENTITY ent2 "ddd&ent;">
7733     ]>
7734     <a b="c&ent2;"/>
7735     @@@c:erred: <[[xp|wf-no-external-entity-references]]> { (1, 4)..(1, 8); }
7736     @@XMLTest:
7737     @@@QName: xp.no.external.entity.references.4.test
7738     @@@DEnt:
7739     @@@@test:value:
7740     <!DOCTYPE a [
7741     <!NOTATION n SYSTEM "notation">
7742     <!ENTITY ent SYSTEM "something" NDATA n>
7743     <!ENTITY ent2 "ddd&ent;">
7744     ]>
7745     <a b="c&ent2;"/>
7746     @@@c:erred: <[[xp|wf-no-external-entity-references]]> { (1, 4)..(1, 8); }
7747 wakaba 1.23 @@@c:erred: <[[xp|wf-parsed-entity]]> { }
7748 wakaba 1.18 @@XMLTest:
7749     @@@QName: xp.no.lt.in.attr.value.1.test
7750     @@@DEnt:
7751     @@@@test:value:
7752     <!DOCTYPE a [
7753     <!ENTITY ent "aa<bb">
7754     ]>
7755     <a b="c&ent;"/>
7756     @@@c:erred: <[[xp|wf-no-lt-in-attribute-values]]> { (1, 3); }
7757 wakaba 1.20 @@@c:erred:
7758     @@@@@: <[[xp|wf-syntax-error]]> { (1, 3)..(1, 6); }
7759     @@@@enImplNote: When entity node is created.
7760 wakaba 1.18 @@XMLTest:
7761     @@@QName: xp.no.lt.in.attr.value.2.test
7762     @@@DEnt:
7763     @@@@test:value:
7764     <!DOCTYPE a [
7765     <!ENTITY ent "aa<bb">
7766     <!ENTITY ent2 "ccc&ent;">
7767     ]>
7768     <a b="c&ent2;"/>
7769     @@@c:erred: <[[xp|wf-no-lt-in-attribute-values]]> { (1, 3); }
7770 wakaba 1.20 @@@c:erred:
7771     @@@@@: <[[xp|wf-syntax-error]]> { (1, 3)..(1, 6); }
7772     @@@@enImplNote: When entity node is created.
7773 wakaba 1.18 @@XMLTest:
7774     @@@QName: xp.no.lt.in.attr.value.3.test
7775     @@@DEnt:
7776     @@@@test:value:
7777     <!DOCTYPE a [
7778     <!ENTITY ent "aa&#x3C;bb">
7779     ]>
7780     <a b="c&ent;"/>
7781     @@@c:erred: <[[xp|wf-no-lt-in-attribute-values]]> { (1, 3); }
7782 wakaba 1.20 @@@c:erred:
7783     @@@@@: <[[xp|wf-syntax-error]]> { (1, 3)..(1, 6); }
7784     @@@@enImplNote: When entity node is created.
7785 wakaba 1.18 @@XMLTest:
7786     @@@QName: xp.no.lt.in.attr.value.4.test
7787     @@@DEnt:
7788     @@@@test:value:
7789     <!DOCTYPE a [
7790     <!ENTITY ent "aa&#x3C;bb">
7791     <!ENTITY ent2 "ccc&ent;">
7792     ]>
7793     <a b="c&ent2;"/>
7794     @@@c:erred: <[[xp|wf-no-lt-in-attribute-values]]> { (1, 3); }
7795 wakaba 1.20 @@@c:erred:
7796     @@@@@: <[[xp|wf-syntax-error]]> { (1, 3)..(1, 6); }
7797     @@@@enImplNote: When entity node is created.
7798 wakaba 1.11 @@XMLTest:
7799 wakaba 1.18 @@@QName: xp.ger.lt.in.attr.value.1.test
7800 wakaba 1.11 @@@DEnt:
7801     @@@@test:value:
7802     <!DOCTYPE a [
7803 wakaba 1.18 <!ENTITY ent "aa&lt;bb">
7804 wakaba 1.11 ]>
7805 wakaba 1.18 <a b="c&ent;"/>
7806 wakaba 1.11 @@@test:domTree:
7807     document {
7808     document-type {
7809     general-entity {
7810     node-name: 'ent';
7811 wakaba 1.18 text-content: 'aa<bb';
7812 wakaba 1.11 }
7813     }
7814     element {
7815 wakaba 1.18 attribute {
7816     node-name: 'b';
7817     text { data: 'c'; }
7818     general-entity-reference {
7819 wakaba 1.19 is-expanded: true;
7820 wakaba 1.18 node-name: 'ent';
7821     text-content: 'aa<bb';
7822     }
7823     }
7824 wakaba 1.11 }
7825     }
7826     @@XMLTest:
7827 wakaba 1.18 @@@QName: xp.ger.lt.in.attr.value.2.test
7828 wakaba 1.11 @@@DEnt:
7829     @@@@test:value:
7830     <!DOCTYPE a [
7831 wakaba 1.18 <!ENTITY ent "aa&lt;bb">
7832     <!ENTITY ent2 "ccc&ent;">
7833 wakaba 1.11 ]>
7834 wakaba 1.18 <a b="c&ent2;"/>
7835 wakaba 1.11 @@@test:domTree:
7836     document {
7837     document-type {
7838     general-entity {
7839 wakaba 1.18 node-name: 'ent';
7840     text-content: 'aa<bb';
7841     }
7842     general-entity {
7843     node-name: 'ent2';
7844     text { data: 'ccc'; }
7845     general-entity-reference {
7846     node-name: 'ent';
7847     text-content: 'aa<bb';
7848 wakaba 1.19 is-expanded: true;
7849 wakaba 1.18 }
7850 wakaba 1.11 }
7851     }
7852     element {
7853 wakaba 1.18 attribute {
7854     node-name: 'b';
7855     text { data: 'c'; }
7856     general-entity-reference {
7857     node-name: 'ent2';
7858     text { data: 'ccc'; }
7859     general-entity-reference {
7860     node-name: 'ent';
7861     text-content: 'aa<bb';
7862 wakaba 1.19 is-expanded: true;
7863 wakaba 1.18 }
7864 wakaba 1.19 is-expanded: true;
7865 wakaba 1.18 }
7866     }
7867 wakaba 1.11 }
7868     }
7869    
7870 wakaba 1.8 @@XMLTest:
7871 wakaba 1.18 @@@QName: xp.doctype.intsubset.pi.test
7872 wakaba 1.8 @@@DEnt:
7873     @@@@test:value:
7874     <!DOCTYPE a [
7875 wakaba 1.18 <?pi data ?>
7876 wakaba 1.8 ]>
7877     <a></a>
7878     @@@test:domTree:
7879     document {
7880     xml-version: '1.0';
7881     xml-encoding: null;
7882     xml-standalone: false;
7883     document-type {
7884     node-name: 'a';
7885 wakaba 1.18 pi {
7886     target: 'pi';
7887     data: 'data ';
7888 wakaba 1.8 }
7889     }
7890     element {
7891     namespace-uri: null;
7892 wakaba 1.18 prefix: null;
7893 wakaba 1.8 local-name: 'a';
7894 wakaba 1.18 text-content: '';
7895 wakaba 1.8 }
7896     }
7897 wakaba 1.18 @@@enImplNote:
7898     A DOM PI node in doctype node is a manakai extension.
7899    
7900    
7901 wakaba 1.8 @@XMLTest:
7902 wakaba 1.18 @@@QName: xp.doctype.intsubset.entity.general.internal.test
7903 wakaba 1.8 @@@DEnt:
7904     @@@@test:value:
7905     <!DOCTYPE a [
7906 wakaba 1.18 <!ENTITY entity "entity value">
7907 wakaba 1.8 ]>
7908     <a></a>
7909     @@@test:domTree:
7910     document {
7911     xml-version: '1.0';
7912     xml-encoding: null;
7913     xml-standalone: false;
7914     document-type {
7915     node-name: 'a';
7916 wakaba 1.18 general-entity {
7917     node-name: 'entity';
7918     text-content: 'entity value';
7919     has-replacement-tree: true;
7920 wakaba 1.8 }
7921     }
7922     element {
7923     namespace-uri: null;
7924 wakaba 1.18 prefix: null;
7925 wakaba 1.8 local-name: 'a';
7926 wakaba 1.18 text-content: '';
7927 wakaba 1.8 }
7928     }
7929     @@XMLTest:
7930 wakaba 1.18 @@@QName: xp.doctype.intsubset.entity.parameter.internal.test
7931 wakaba 1.8 @@@DEnt:
7932     @@@@test:value:
7933     <!DOCTYPE a [
7934 wakaba 1.18 <!ENTITY % entity "entity value">
7935 wakaba 1.8 ]>
7936     <a></a>
7937     @@@test:domTree:
7938     document {
7939     xml-version: '1.0';
7940     xml-encoding: null;
7941     xml-standalone: false;
7942     document-type {
7943     node-name: 'a';
7944     }
7945     element {
7946     namespace-uri: null;
7947 wakaba 1.18 prefix: null;
7948 wakaba 1.8 local-name: 'a';
7949 wakaba 1.18 text-content: '';
7950 wakaba 1.8 }
7951     }
7952 wakaba 1.18
7953 wakaba 1.8 @@XMLTest:
7954 wakaba 1.18 @@@QName: xp.doctype.internal.entity.root.element.text.only.test
7955 wakaba 1.8 @@@DEnt:
7956     @@@@test:value:
7957     <!DOCTYPE a [
7958 wakaba 1.18 <!ENTITY entity "entity value">
7959 wakaba 1.8 ]>
7960 wakaba 1.18 <a>&entity;</a>
7961 wakaba 1.8 @@@test:domTree:
7962     document {
7963     xml-version: '1.0';
7964     xml-encoding: null;
7965     xml-standalone: false;
7966     document-type {
7967     node-name: 'a';
7968 wakaba 1.18 general-entity {
7969     node-name: 'entity';
7970     text-content: 'entity value';
7971     has-replacement-tree: true;
7972 wakaba 1.8 }
7973     }
7974     element {
7975     namespace-uri: null;
7976 wakaba 1.18 prefix: null;
7977 wakaba 1.8 local-name: 'a';
7978 wakaba 1.18 general-entity-reference {
7979     node-name: 'entity';
7980     text {
7981     data: 'entity value';
7982     }
7983 wakaba 1.19 is-expanded: true;
7984 wakaba 1.10 }
7985 wakaba 1.9 }
7986     }
7987     @@XMLTest:
7988 wakaba 1.18 @@@QName: xp.doctype.internal.entity.root.element.text.mult.test
7989 wakaba 1.9 @@@DEnt:
7990     @@@@test:value:
7991     <!DOCTYPE a [
7992 wakaba 1.18 <!ENTITY entity "entity value">
7993 wakaba 1.9 ]>
7994 wakaba 1.18 <a>&entity; and &entity;</a>
7995 wakaba 1.9 @@@test:domTree:
7996     document {
7997     xml-version: '1.0';
7998     xml-encoding: null;
7999     xml-standalone: false;
8000     document-type {
8001     node-name: 'a';
8002 wakaba 1.18 general-entity {
8003     node-name: 'entity';
8004     text-content: 'entity value';
8005     has-replacement-tree: true;
8006 wakaba 1.9 }
8007     }
8008     element {
8009     namespace-uri: null;
8010 wakaba 1.18 prefix: null;
8011 wakaba 1.9 local-name: 'a';
8012 wakaba 1.18 general-entity-reference {
8013     node-name: 'entity';
8014     text {
8015     data: 'entity value';
8016     }
8017 wakaba 1.19 is-expanded: true;
8018 wakaba 1.18 }
8019     text { data: ' and '; }
8020     general-entity-reference {
8021     node-name: 'entity';
8022     text {
8023     data: 'entity value';
8024     }
8025 wakaba 1.19 is-expanded: true;
8026 wakaba 1.10 }
8027 wakaba 1.9 }
8028     }
8029     @@XMLTest:
8030 wakaba 1.18 @@@QName: xp.doctype.internal.entity.root.element.text.element.test
8031 wakaba 1.9 @@@DEnt:
8032     @@@@test:value:
8033     <!DOCTYPE a [
8034 wakaba 1.18 <!ENTITY entity "entity <p>value</p> with <e>element</e> ">
8035 wakaba 1.9 ]>
8036 wakaba 1.18 <a>&entity;</a>
8037     @@@test:domTree:
8038     document {
8039     xml-version: '1.0';
8040     xml-encoding: null;
8041     xml-standalone: false;
8042     document-type {
8043     node-name: 'a';
8044     general-entity {
8045     node-name: 'entity';
8046     has-replacement-tree: true;
8047     text { data: 'entity '; }
8048     element {
8049     node-name: 'p';
8050     text-content: 'value';
8051     }
8052     text { data: ' with '; }
8053     element {
8054     node-name: 'e';
8055     text-content: 'element';
8056     }
8057 wakaba 1.20 text { data: ' '; }
8058 wakaba 1.18 }
8059     }
8060     element {
8061     namespace-uri: null;
8062     prefix: null;
8063     local-name: 'a';
8064     general-entity-reference {
8065     node-name: 'entity';
8066 wakaba 1.19 is-expanded: true;
8067 wakaba 1.18 text {
8068     data: 'entity ';
8069     }
8070     element {
8071     namespace-uri: null;
8072     prefix: null;
8073     local-name: 'p';
8074     text {
8075     data: 'value';
8076     }
8077     }
8078     text {
8079     data: ' with ';
8080     }
8081     element {
8082     namespace-uri: null;
8083     prefix: null;
8084     local-name: 'e';
8085     text {
8086     data: 'element';
8087     }
8088     }
8089     text {
8090     data: ' ';
8091     }
8092     }
8093     }
8094     }
8095     @@XMLTest:
8096     @@@QName: xp.doctype.internal.entity.root.element.text.in.ent.test
8097     @@@DEnt:
8098     @@@@test:value:
8099     <!DOCTYPE a [
8100     <!ENTITY entity1 "entity value">
8101     <!ENTITY entity2 "e&entity1;n">
8102     ]>
8103     <a>&entity2;</a>
8104     @@@test:domTree:
8105     document {
8106     xml-version: '1.0';
8107     xml-encoding: null;
8108     xml-standalone: false;
8109     document-type {
8110     node-name: 'a';
8111     general-entity {
8112     node-name: 'entity1';
8113     text-content: 'entity value';
8114     }
8115     general-entity {
8116     node-name: 'entity2';
8117     text { data: 'e'; }
8118     general-entity-reference {
8119     node-name: 'entity1';
8120     text-content: 'entity value';
8121     is-expanded: true;
8122     }
8123     text { data: 'n'; }
8124     }
8125     }
8126     element {
8127     namespace-uri: null;
8128     prefix: null;
8129     local-name: 'a';
8130     general-entity-reference {
8131     node-name: 'entity2';
8132     text { data: 'e'; }
8133 wakaba 1.19 is-expanded: true;
8134 wakaba 1.18 general-entity-reference {
8135     node-name: 'entity1';
8136     text {
8137     data: 'entity value';
8138     }
8139 wakaba 1.19 is-expanded: true;
8140 wakaba 1.18 }
8141     text { data: 'n'; }
8142     }
8143     }
8144     }
8145    
8146     @@XMLTest:
8147     @@@QName: xp.doctype.entity.value.charref.test
8148     @@@DEnt:
8149     @@@@test:value:
8150     <!DOCTYPE a [
8151     <!ENTITY entity1 "entity &#x21;value&#35;">
8152     <!ENTITY entity2 '&#x21;value&#35;'>
8153     ]>
8154     <a></a>
8155     @@@test:domTree:
8156     document {
8157     document-type {
8158     general-entity {
8159     node-name: 'entity1';
8160     text-content: 'entity !value#';
8161     has-replacement-tree: true;
8162     }
8163     general-entity {
8164     node-name: 'entity2';
8165     text-content: '!value#';
8166     has-replacement-tree: true;
8167     }
8168     }
8169     element { }
8170     }
8171    
8172     @@XMLTest:
8173     @@@QName: xp.predefined.in.content.test
8174     @@@DEnt:
8175     @@@@test:value:
8176     <a>_&lt;_&gt;_&quot;_&apos;_&amp;_</a>
8177     @@@test:domTree:
8178     document {
8179     element {
8180     text-content: '_<_>_"_' U+0027 '_&_';
8181     }
8182     }
8183     @@XMLTest:
8184     @@@QName: xp.predefined.in.attr.test
8185     @@@DEnt:
8186     @@@@test:value:
8187     <a at="_&lt;_&gt;_&quot;_&apos;_&amp;_"></a>
8188     @@@test:domTree:
8189     document {
8190     element {
8191     attribute {
8192     node-name: 'at';
8193     text-content: '_<_>_"_' U+0027 '_&_';
8194     }
8195     }
8196     }
8197     @@XMLTest:
8198     @@@QName: xp.predefined.in.content.in.entity.test
8199     @@@DEnt:
8200     @@@@test:value:
8201     <!DOCTYPE a [
8202     <!ENTITY ent "_&lt;_&gt;_&quot;_&apos;_&amp;_">
8203     ]>
8204     <a>&ent;</a>
8205     @@@test:domTree:
8206     document {
8207     document-type {
8208     general-entity {
8209     node-name: 'ent';
8210     text-content: '_<_>_"_' U+0027 '_&_';
8211     }
8212     }
8213     element {
8214     text-content: '_<_>_"_' U+0027 '_&_';
8215     }
8216     }
8217     @@XMLTest:
8218     @@@QName: xp.predefined.decl.ignore.test
8219     @@@DEnt:
8220     @@@@test:value:
8221     <!DOCTYPE a [
8222     <!ENTITY lt "&#x26;#x3C;">
8223     <!ENTITY gt "&#x3E;">
8224     <!ENTITY amp "&#x26;#x26;">
8225     <!ENTITY quot "&#x22;">
8226     <!ENTITY apos "&#x27;">
8227     <!ENTITY other "other">
8228     ]>
8229     <a>_&lt;_&gt;_&quot;_&apos;_&amp;_&other;_</a>
8230     @@@test:domTree:
8231     document {
8232     document-type {
8233     general-entity {
8234     node-name: 'other';
8235     text-content: 'other';
8236     }
8237     }
8238     element {
8239     text-content: '_<_>_"_' U+0027 '_&_other_';
8240     }
8241     }
8242    
8243     @@XMLTest:
8244     @@@QName: xp.doctype.internal.attr.empty.test
8245     @@@DEnt:
8246     @@@@test:value:
8247     <!DOCTYPE a [
8248     <!ATTLIST a>
8249     ]>
8250     <a></a>
8251     @@@test:domTree:
8252     document {
8253     xml-version: '1.0';
8254     xml-encoding: null;
8255     xml-standalone: false;
8256     document-type {
8257     node-name: 'a';
8258     element-type-definition {
8259     node-name: 'a';
8260     }
8261     }
8262     element {
8263     namespace-uri: null;
8264     local-name: 'a';
8265     }
8266     }
8267     @@XMLTest:
8268     @@@QName: xp.doctype.internal.attr.cdata.implied.test
8269     @@@DEnt:
8270     @@@@test:value:
8271     <!DOCTYPE a [
8272     <!ATTLIST a
8273     at CDATA #IMPLIED
8274     >
8275     ]>
8276     <a></a>
8277 wakaba 1.9 @@@test:domTree:
8278     document {
8279     xml-version: '1.0';
8280     xml-encoding: null;
8281     xml-standalone: false;
8282     document-type {
8283     node-name: 'a';
8284     element-type-definition {
8285     node-name: 'a';
8286     attribute-definition {
8287     node-name: 'at';
8288 wakaba 1.18 declared-type: const (CDATA_ATTR);
8289 wakaba 1.9 allowed-tokens: DOMStringList ();
8290 wakaba 1.18 default-type: const (IMPLIED_DEFAULT);
8291     text-content: '';
8292 wakaba 1.9 }
8293     }
8294     }
8295     element {
8296     namespace-uri: null;
8297     local-name: 'a';
8298 wakaba 1.18 }
8299     }
8300     @@XMLTest:
8301     @@@QName: xp.doctype.internal.attr.types.implied.test
8302     @@@DEnt:
8303     @@@@test:value:
8304     <!DOCTYPE a [
8305     <!ATTLIST a
8306     at1 ID #IMPLIED
8307     at2 IDREF #IMPLIED
8308     at3 IDREFS #IMPLIED
8309     at4 ENTITY #IMPLIED
8310     at5 ENTITIES #IMPLIED
8311     at6 NMTOKEN #IMPLIED
8312     at7 NMTOKENS #IMPLIED
8313     at8 NOTATION (n1 | n2|n3) #IMPLIED
8314     at9 (e1| e2| e3 ) #IMPLIED
8315     >
8316     ]>
8317     <a></a>
8318     @@@test:domTree:
8319     document {
8320     xml-version: '1.0';
8321     xml-encoding: null;
8322     xml-standalone: false;
8323     document-type {
8324     node-name: 'a';
8325     element-type-definition {
8326     node-name: 'a';
8327     attribute-definition {
8328     node-name: 'at1';
8329     declared-type: const (ID_ATTR);
8330     allowed-tokens: DOMStringList ();
8331     default-type: const (IMPLIED_DEFAULT);
8332     text-content: '';
8333     }
8334     attribute-definition {
8335     node-name: 'at2';
8336     declared-type: const (IDREF_ATTR);
8337     allowed-tokens: DOMStringList ();
8338     default-type: const (IMPLIED_DEFAULT);
8339     text-content: '';
8340     }
8341     attribute-definition {
8342     node-name: 'at3';
8343     declared-type: const (IDREFS_ATTR);
8344     allowed-tokens: DOMStringList ();
8345     default-type: const (IMPLIED_DEFAULT);
8346     text-content: '';
8347     }
8348     attribute-definition {
8349     node-name: 'at4';
8350     declared-type: const (ENTITY_ATTR);
8351     allowed-tokens: DOMStringList ();
8352     default-type: const (IMPLIED_DEFAULT);
8353     text-content: '';
8354     }
8355     attribute-definition {
8356     node-name: 'at5';
8357     declared-type: const (ENTITIES_ATTR);
8358     allowed-tokens: DOMStringList ();
8359     default-type: const (IMPLIED_DEFAULT);
8360     text-content: '';
8361     }
8362     attribute-definition {
8363     node-name: 'at6';
8364     declared-type: const (NMTOKEN_ATTR);
8365     allowed-tokens: DOMStringList ();
8366     default-type: const (IMPLIED_DEFAULT);
8367     text-content: '';
8368     }
8369     attribute-definition {
8370     node-name: 'at7';
8371     declared-type: const (NMTOKENS_ATTR);
8372     allowed-tokens: DOMStringList ();
8373     default-type: const (IMPLIED_DEFAULT);
8374     text-content: '';
8375     }
8376     attribute-definition {
8377     node-name: 'at8';
8378     declared-type: const (NOTATION_ATTR);
8379     allowed-tokens: DOMStringList ('n1', 'n2', 'n3');
8380     default-type: const (IMPLIED_DEFAULT);
8381     text-content: '';
8382     }
8383     attribute-definition {
8384     node-name: 'at9';
8385     declared-type: const (ENUMERATION_ATTR);
8386     allowed-tokens: DOMStringList ('e1', 'e2', 'e3');
8387     default-type: const (IMPLIED_DEFAULT);
8388     text-content: '';
8389     }
8390     }
8391     }
8392     element {
8393     namespace-uri: null;
8394     local-name: 'a';
8395     }
8396     }
8397     @@XMLTest:
8398     @@@QName: xp.doctype.internal.attr.cdata.defaults.test
8399     @@@DEnt:
8400     @@@@test:value:
8401     <!DOCTYPE a [
8402     <!ATTLIST a
8403     at1 CDATA #IMPLIED
8404     at2 CDATA #REQUIRED
8405     at3 CDATA #FIXED "value3"
8406     at4 CDATA "value4"
8407     at5 CDATA #FIXED 'value5'
8408     at6 CDATA 'value6'
8409     >
8410     ]>
8411     <a></a>
8412     @@@test:domTree:
8413     document {
8414     xml-version: '1.0';
8415     xml-encoding: null;
8416     xml-standalone: false;
8417     document-type {
8418     node-name: 'a';
8419     element-type-definition {
8420     node-name: 'a';
8421     attribute-definition {
8422     node-name: 'at1';
8423     declared-type: const (CDATA_ATTR);
8424     allowed-tokens: DOMStringList ();
8425     default-type: const (IMPLIED_DEFAULT);
8426     text-content: '';
8427     }
8428     attribute-definition {
8429     node-name: 'at2';
8430     declared-type: const (CDATA_ATTR);
8431     allowed-tokens: DOMStringList ();
8432     default-type: const (REQUIRED_DEFAULT);
8433     text-content: '';
8434     }
8435     attribute-definition {
8436     node-name: 'at3';
8437     declared-type: const (CDATA_ATTR);
8438     allowed-tokens: DOMStringList ();
8439     default-type: const (FIXED_DEFAULT);
8440     text-content: 'value3';
8441     }
8442     attribute-definition {
8443     node-name: 'at4';
8444     declared-type: const (CDATA_ATTR);
8445     allowed-tokens: DOMStringList ();
8446     default-type: const (EXPLICIT_DEFAULT);
8447     text-content: 'value4';
8448     }
8449     attribute-definition {
8450     node-name: 'at5';
8451     declared-type: const (CDATA_ATTR);
8452     allowed-tokens: DOMStringList ();
8453     default-type: const (FIXED_DEFAULT);
8454     text-content: 'value5';
8455     }
8456     attribute-definition {
8457     node-name: 'at6';
8458     declared-type: const (CDATA_ATTR);
8459     allowed-tokens: DOMStringList ();
8460     default-type: const (EXPLICIT_DEFAULT);
8461     text-content: 'value6';
8462     }
8463     }
8464     }
8465     element {
8466     namespace-uri: null;
8467     local-name: 'a';
8468     attribute {
8469     node-name: 'at3';
8470     text-content: 'value3';
8471     specified: false;
8472     }
8473     attribute {
8474     node-name: 'at4';
8475     text-content: 'value4';
8476     specified: false;
8477     }
8478     attribute {
8479     node-name: 'at5';
8480     text-content: 'value5';
8481     specified: false;
8482     }
8483     attribute {
8484     node-name: 'at6';
8485     text-content: 'value6';
8486     specified: false;
8487     }
8488     }
8489     }
8490    
8491     @@XMLTest:
8492     @@@QName: xp.doctype.internal.attr.cdata.default.normalize.test
8493     @@@DEnt:
8494     @@@@test:value:
8495     <!DOCTYPE a [
8496     <!ATTLIST a
8497     at CDATA " default &#x0A;value "
8498     >
8499     ]>
8500     <a></a>
8501     @@@test:domTree:
8502     document {
8503     xml-version: '1.0';
8504     xml-encoding: null;
8505     xml-standalone: false;
8506     document-type {
8507     node-name: 'a';
8508     element-type-definition {
8509     node-name: 'a';
8510     attribute-definition {
8511     node-name: 'at';
8512     declared-type: const (CDATA_ATTR);
8513     allowed-tokens: DOMStringList ();
8514     default-type: const (EXPLICIT_DEFAULT);
8515     text-content: ' default ' U+000A 'value ';
8516     }
8517     }
8518     }
8519     element {
8520     namespace-uri: null;
8521     local-name: 'a';
8522     attribute {
8523     node-name: 'at';
8524     text-content: ' default ' U+000A 'value ';
8525     specified: false;
8526     }
8527     }
8528     }
8529     @@XMLTest:
8530     @@@QName: xp.doctype.internal.attr.nmtoken.default.normalize.test
8531     @@@DEnt:
8532     @@@@test:value:
8533     <!DOCTYPE a [
8534     <!ATTLIST a
8535     at NMTOKEN " default &#x0A;value "
8536     >
8537     ]>
8538     <a></a>
8539     @@@test:domTree:
8540     document {
8541     xml-version: '1.0';
8542     xml-encoding: null;
8543     xml-standalone: false;
8544     document-type {
8545     node-name: 'a';
8546     element-type-definition {
8547     node-name: 'a';
8548     attribute-definition {
8549     node-name: 'at';
8550     declared-type: const (NMTOKEN_ATTR);
8551     allowed-tokens: DOMStringList ();
8552     default-type: const (EXPLICIT_DEFAULT);
8553     text-content: ' default ' U+000A 'value ';
8554     }
8555     }
8556     }
8557     element {
8558     namespace-uri: null;
8559     local-name: 'a';
8560     attribute {
8561     node-name: 'at';
8562     text-content: ' default ' U+000A 'value ';
8563     specified: false;
8564     }
8565     }
8566     }
8567    
8568     @@XMLTest:
8569     @@@QName: xp.doctype.attrtype.no-value.test
8570     @@@DEnt:
8571     @@@@test:value:
8572     <!DOCTYPE a>
8573     <a at=" at value "></a>
8574     @@@test:domTree:
8575     document {
8576     xml-version: '1.0';
8577     xml-encoding: null;
8578     xml-standalone: false;
8579     document-type { }
8580     element {
8581     namespace-uri: null;
8582     local-name: 'a';
8583     attribute {
8584     namespace-uri: null;
8585     local-name: 'at';
8586     value: ' at value ';
8587     text {
8588     data: ' at value ';
8589     }
8590     schema-type-info: TypeInfo (null, null);
8591     specified: true;
8592     }
8593     }
8594     }
8595     @@XMLTest:
8596     @@@QName: xp.doctype.attrtype.cdata.test
8597     @@@DEnt:
8598     @@@@test:value:
8599     <!DOCTYPE a [
8600     <!ATTLIST a
8601     at CDATA #IMPLIED
8602     >
8603     ]>
8604     <a at=" at value "></a>
8605     @@@test:domTree:
8606     document {
8607     xml-version: '1.0';
8608     xml-encoding: null;
8609     xml-standalone: false;
8610     document-type { }
8611     element {
8612     namespace-uri: null;
8613     local-name: 'a';
8614     attribute {
8615     namespace-uri: null;
8616     local-name: 'at';
8617     value: ' at value ';
8618     text {
8619     data: ' at value ';
8620     }
8621     schema-type-info:
8622     TypeInfo ('http://www.w3.org/TR/REC-xml', 'CDATA');
8623     specified: true;
8624     }
8625     }
8626     }
8627     @@XMLTest:
8628     @@@QName: xp.doctype.attrtype.nmtoken.test
8629     @@@DEnt:
8630     @@@@test:value:
8631     <!DOCTYPE a [
8632     <!ATTLIST a
8633     at NMTOKEN #IMPLIED
8634     >
8635     ]>
8636     <a at=" at value "></a>
8637     @@@test:domTree:
8638     document {
8639     xml-version: '1.0';
8640     xml-encoding: null;
8641     xml-standalone: false;
8642     document-type { }
8643     element {
8644     namespace-uri: null;
8645     local-name: 'a';
8646     attribute {
8647     namespace-uri: null;
8648     local-name: 'at';
8649     value: 'at value';
8650     text {
8651     data: ' at value ';
8652     }
8653     schema-type-info:
8654     TypeInfo ('http://www.w3.org/TR/REC-xml', 'NMTOKEN');
8655     specified: true;
8656     }
8657     }
8658     }
8659    
8660     @@XMLTest:
8661     @@@QName: xp.doctype.attr.normalization.1.test
8662     @@@DEnt:
8663     @@@@test:value:
8664     <a at=" at &#xA;value "></a>
8665     @@@test:domTree:
8666     document {
8667     element {
8668     attribute {
8669     node-name: 'at';
8670     value: ' at ' U+000A 'value ';
8671     schema-type-info: TypeInfo (null, null);
8672     specified: true;
8673     }
8674     }
8675     }
8676     @@XMLTest:
8677     @@@QName: xp.doctype.attr.normalization.2.test
8678     @@@DEnt:
8679     @@@@test:value:
8680     <a at=" at &#xD;value "></a>
8681     @@@test:domTree:
8682     document {
8683     element {
8684     attribute {
8685     value: ' at ' U+000D 'value ';
8686     schema-type-info: TypeInfo (null, null);
8687     specified: true;
8688     }
8689     }
8690     }
8691     @@XMLTest:
8692     @@@QName: xp.doctype.attr.normalization.3.test
8693     @@@DEnt:
8694     @@@@test:value:
8695     <a at=" at &#x9;value "></a>
8696     @@@test:domTree:
8697     document {
8698     element {
8699     attribute {
8700     node-name: 'at';
8701     value: ' at ' U+0009 'value ';
8702     schema-type-info: TypeInfo (null, null);
8703     specified: true;
8704     }
8705     }
8706     }
8707    
8708     @@XMLTest:
8709     @@@QName: xp.doctype.attr.specified.1.test
8710     @@@DEnt:
8711     @@@@test:value:
8712     <!DOCTYPE a [
8713     <!ATTLIST a
8714     at CDATA "default"
8715     >
8716     ]>
8717     <a></a>
8718     @@@test:domTree:
8719     document {
8720     document-type { }
8721     element {
8722     attribute {
8723     node-name: 'at';
8724     value: 'default';
8725     specified: false;
8726     }
8727     }
8728     }
8729     @@XMLTest:
8730     @@@QName: xp.doctype.attr.specified.2.test
8731     @@@DEnt:
8732     @@@@test:value:
8733     <!DOCTYPE a [
8734     <!ATTLIST a
8735     at CDATA "default"
8736     >
8737     ]>
8738     <a at2="specified"></a>
8739     @@@test:domTree:
8740     document {
8741     document-type { }
8742     element {
8743     attribute {
8744     node-name: 'at';
8745     value: 'default';
8746     specified: false;
8747     }
8748     attribute {
8749     node-name: 'at2';
8750     value: 'specified';
8751     specified: true;
8752     }
8753     }
8754     }
8755     @@XMLTest:
8756     @@@QName: xp.doctype.attr.specified.3.test
8757     @@@DEnt:
8758     @@@@test:value:
8759     <!DOCTYPE a [
8760     <!ATTLIST a
8761     at CDATA "default"
8762     >
8763     ]>
8764     <a at="specified"></a>
8765     @@@test:domTree:
8766     document {
8767     document-type { }
8768     element {
8769     attribute {
8770     node-name: 'at';
8771     value: 'specified';
8772     specified: true;
8773     }
8774     }
8775     }
8776    
8777     @@XMLTest:
8778     @@@QName: xp.attr.literal.charref.test
8779     @@@DEnt:
8780     @@@@test:value:
8781     <a at1 = "value&#33;_&#x25;value"
8782     at2 = 'value&#x25;_&#33;value'></a>
8783     @@@test:domTree:
8784     document {
8785     element {
8786     attribute {
8787     node-name: 'at1';
8788     text-content: 'value!_%value';
8789     }
8790     attribute {
8791     node-name: 'at2';
8792     text-content: 'value%_!value';
8793     }
8794     }
8795     }
8796     @@XMLTest:
8797     @@@QName: xp.attr.literal.entref.test
8798     @@@DEnt:
8799     @@@@test:value:
8800     <!DOCTYPE a [
8801     <!ENTITY ent "entity&#x26;#33;_&#x26;#x29;value">
8802     ]>
8803     <a at1 = "value&ent;value"
8804     at2 = 'value&ent;value'></a>
8805     @@@test:domTree:
8806     document {
8807     document-type {
8808     general-entity {
8809     node-name: 'ent';
8810     text-content: 'entity!_)value';
8811     }
8812     }
8813     element {
8814     attribute {
8815     node-name: 'at1';
8816     text-content: 'valueentity!_)valuevalue';
8817     }
8818     attribute {
8819     node-name: 'at2';
8820     text-content: 'valueentity!_)valuevalue';
8821     }
8822     }
8823     }
8824     @@XMLTest:
8825     @@@QName: xp.attr.literal.entref.nest.test
8826     @@@DEnt:
8827     @@@@test:value:
8828     <!DOCTYPE a [
8829     <!ENTITY ent1 "entity&#x26;#33;_&#x26;#x29;value">
8830     <!ENTITY ent2 "@&ent1;@">
8831     ]>
8832     <a at1 = "value&ent2;value"
8833     at2 = 'value&ent2;value'></a>
8834     @@@test:domTree:
8835     document {
8836     document-type {
8837     general-entity {
8838     node-name: 'ent1';
8839     text-content: 'entity!_)value';
8840     }
8841     general-entity {
8842     node-name: 'ent2';
8843     text-content: '@entity!_)value@';
8844     }
8845     }
8846     element {
8847     attribute {
8848     node-name: 'at1';
8849     text-content: 'value@entity!_)value@value';
8850     }
8851     attribute {
8852     node-name: 'at2';
8853     text-content: 'value@entity!_)value@value';
8854     }
8855     }
8856     }
8857    
8858     @@XMLTest:
8859     @@@QName: xp.element.content.ncr.1.test
8860     @@@DEnt:
8861     @@@@test:value:
8862     <e>&#33;</e>
8863     @@@test:domTree:
8864     document {
8865     element {
8866     text-content: '!';
8867     }
8868     }
8869     @@XMLTest:
8870     @@@QName: xp.element.content.ncr.2.test
8871     @@@DEnt:
8872     @@@@test:value:
8873     <e>aaaa&#33;bbbb</e>
8874     @@@test:domTree:
8875     document {
8876     element {
8877     text-content: 'aaaa!bbbb';
8878     }
8879     }
8880     @@XMLTest:
8881     @@@QName: xp.attrval.ncr.1.test
8882     @@@DEnt:
8883     @@@@test:value:
8884     <e a="&#33;"/>
8885     @@@test:domTree:
8886     document {
8887     element {
8888     attribute {
8889     node-name: 'a';
8890     text-content: '!';
8891     }
8892     }
8893     }
8894     @@XMLTest:
8895     @@@QName: xp.attrval.ncr.2.test
8896     @@@DEnt:
8897     @@@@test:value:
8898     <e a="aaaaa&#33;bbbbb"/>
8899     @@@test:domTree:
8900     document {
8901     element {
8902     attribute {
8903     node-name: 'a';
8904     text-content: 'aaaaa!bbbbb';
8905     }
8906     }
8907     }
8908     @@XMLTest:
8909     @@@QName: xp.attrval.ncr.3.test
8910     @@@DEnt:
8911     @@@@test:value:
8912     <e a='&#33;'/>
8913     @@@test:domTree:
8914     document {
8915     element {
8916     attribute {
8917     node-name: 'a';
8918     text-content: '!';
8919     }
8920     }
8921     }
8922     @@XMLTest:
8923     @@@QName: xp.attrval.ncr.4.test
8924     @@@DEnt:
8925     @@@@test:value:
8926     <e a='aaaaa&#33;bbbbb'/>
8927     @@@test:domTree:
8928     document {
8929     element {
8930     attribute {
8931     node-name: 'a';
8932     text-content: 'aaaaa!bbbbb';
8933     }
8934     }
8935     }
8936     @@XMLTest:
8937     @@@QName: xp.entval.ncr.1.test
8938     @@@DEnt:
8939     @@@@test:value:
8940     <!DOCTYPE e [
8941     <!ENTITY ent "&#33;">
8942     ]>
8943     <e/>
8944     @@@test:domTree:
8945     document {
8946     document-type {
8947     general-entity {
8948     node-name: 'ent';
8949     text-content: '!';
8950     }
8951     }
8952     element { }
8953     }
8954     @@XMLTest:
8955     @@@QName: xp.entval.ncr.2.test
8956     @@@DEnt:
8957     @@@@test:value:
8958     <!DOCTYPE e [
8959     <!ENTITY ent "aaaaa&#33;bbbbb">
8960     ]>
8961     <e/>
8962     @@@test:domTree:
8963     document {
8964     document-type {
8965     general-entity {
8966     node-name: 'ent';
8967     text-content: 'aaaaa!bbbbb';
8968     }
8969     }
8970     element { }
8971     }
8972     @@XMLTest:
8973     @@@QName: xp.element.content.reptxt.ncr.1.test
8974     @@@DEnt:
8975     @@@@test:value:
8976     <!DOCTYPE e [
8977     <!ENTITY ent "&#38;#33;">
8978     ]>
8979     <e>&ent;</e>
8980     @@@test:domTree:
8981     document {
8982     document-type { }
8983     element {
8984     general-entity-reference {
8985     node-name: 'ent';
8986     text-content: '!';
8987 wakaba 1.19 is-expanded: true;
8988 wakaba 1.18 }
8989     }
8990     }
8991     @@XMLTest:
8992     @@@QName: xp.element.content.reptxt.ncr.2.test
8993     @@@DEnt:
8994     @@@@test:value:
8995     <!DOCTYPE e [
8996     <!ENTITY ent "aaaaa&#38;#33;bbbbb">
8997     ]>
8998     <e>&ent;</e>
8999     @@@test:domTree:
9000     document {
9001     document-type { }
9002     element {
9003     general-entity-reference {
9004     node-name: 'ent';
9005     text-content: 'aaaaa!bbbbb';
9006 wakaba 1.19 is-expanded: true;
9007 wakaba 1.18 }
9008     }
9009     }
9010     @@XMLTest:
9011     @@@QName: xp.element.content.reptxt.reptxt.ncr.1.test
9012     @@@DEnt:
9013     @@@@test:value:
9014     <!DOCTYPE e [
9015     <!ENTITY ent "&#38;#33;">
9016     <!ENTITY ent2 "&ent;">
9017     ]>
9018     <e>&ent2;</e>
9019     @@@test:domTree:
9020     document {
9021     document-type { }
9022     element {
9023     general-entity-reference {
9024     node-name: 'ent2';
9025     general-entity-reference {
9026     node-name: 'ent';
9027     text-content: '!';
9028 wakaba 1.19 is-expanded: true;
9029 wakaba 1.18 }
9030 wakaba 1.19 is-expanded: true;
9031 wakaba 1.18 }
9032     }
9033     }
9034     @@XMLTest:
9035     @@@QName: xp.element.content.reptxt.reptxt.ncr.2.test
9036     @@@DEnt:
9037     @@@@test:value:
9038     <!DOCTYPE e [
9039     <!ENTITY ent "aa&#38;#33;bb">
9040     <!ENTITY ent2 "&ent;">
9041     ]>
9042     <e>&ent2;</e>
9043     @@@test:domTree:
9044     document {
9045     document-type { }
9046     element {
9047     general-entity-reference {
9048     node-name: 'ent2';
9049     general-entity-reference {
9050     node-name: 'ent';
9051     text-content: 'aa!bb';
9052 wakaba 1.19 is-expanded: true;
9053 wakaba 1.18 }
9054 wakaba 1.19 is-expanded: true;
9055 wakaba 1.18 }
9056     }
9057     }
9058     @@XMLTest:
9059     @@@QName: xp.attval.reptxt.ncr.1.test
9060     @@@DEnt:
9061     @@@@test:value:
9062     <!DOCTYPE e [
9063     <!ENTITY ent "&#38;#33;">
9064     ]>
9065     <e a="&ent;"/>
9066     @@@test:domTree:
9067     document {
9068     document-type { }
9069     element {
9070     attribute {
9071     node-name: 'a';
9072     general-entity-reference {
9073     node-name: 'ent';
9074     text-content: '!';
9075 wakaba 1.19 is-expanded: true;
9076 wakaba 1.18 }
9077     }
9078     }
9079     }
9080     @@XMLTest:
9081     @@@QName: xp.attval.reptxt.ncr.2.test
9082     @@@DEnt:
9083     @@@@test:value:
9084     <!DOCTYPE e [
9085     <!ENTITY ent "aaaaa&#38;#33;bbbbb">
9086     ]>
9087     <e a="&ent;"/>
9088     @@@test:domTree:
9089     document {
9090     document-type { }
9091     element {
9092     attribute {
9093     node-name: 'a';
9094     general-entity-reference {
9095     node-name: 'ent';
9096     text-content: 'aaaaa!bbbbb';
9097 wakaba 1.19 is-expanded: true;
9098 wakaba 1.18 }
9099     }
9100     }
9101     }
9102     @@XMLTest:
9103     @@@QName: xp.attval.reptxt.reptxt.ncr.1.test
9104     @@@DEnt:
9105     @@@@test:value:
9106     <!DOCTYPE e [
9107     <!ENTITY ent "&#38;#33;">
9108     <!ENTITY ent2 "&ent;">
9109     ]>
9110     <e a="&ent2;"/>
9111     @@@test:domTree:
9112     document {
9113     document-type { }
9114     element {
9115     attribute {
9116     node-name: 'a';
9117     general-entity-reference {
9118     node-name: 'ent2';
9119 wakaba 1.19 is-expanded: true;
9120 wakaba 1.18 general-entity-reference {
9121     node-name: 'ent';
9122     text-content: '!';
9123 wakaba 1.19 is-expanded: true;
9124 wakaba 1.18 }
9125     }
9126     }
9127     }
9128     }
9129     @@XMLTest:
9130     @@@QName: xp.attval.reptxt.reptxt.ncr.2.test
9131     @@@DEnt:
9132     @@@@test:value:
9133     <!DOCTYPE e [
9134     <!ENTITY ent "aa&#38;#33;bb">
9135     <!ENTITY ent2 "&ent;">
9136     ]>
9137     <e a="&ent2;"/>
9138     @@@test:domTree:
9139     document {
9140     document-type { }
9141     element {
9142     attribute {
9143     node-name: 'a';
9144     general-entity-reference {
9145     node-name: 'ent2';
9146 wakaba 1.19 is-expanded: true;
9147 wakaba 1.18 general-entity-reference {
9148     node-name: 'ent';
9149     text-content: 'aa!bb';
9150 wakaba 1.19 is-expanded: true;
9151 wakaba 1.18 }
9152     }
9153     }
9154     }
9155     }
9156    
9157     @@XMLTest:
9158     @@@QName: xp.element.content.hcr.1.test
9159     @@@DEnt:
9160     @@@@test:value:
9161     <e>&#x21;</e>
9162     @@@test:domTree:
9163     document {
9164     element {
9165     text-content: '!';
9166     }
9167     }
9168     @@XMLTest:
9169     @@@QName: xp.element.content.hcr.2.test
9170     @@@DEnt:
9171     @@@@test:value:
9172     <e>aaaa&#x21;bbbb</e>
9173     @@@test:domTree:
9174     document {
9175     element {
9176     text-content: 'aaaa!bbbb';
9177     }
9178     }
9179     @@XMLTest:
9180     @@@QName: xp.attrval.hcr.1.test
9181     @@@DEnt:
9182     @@@@test:value:
9183     <e a="&#x21;"/>
9184     @@@test:domTree:
9185     document {
9186     element {
9187     attribute {
9188     node-name: 'a';
9189     text-content: '!';
9190     }
9191     }
9192     }
9193     @@XMLTest:
9194     @@@QName: xp.attrval.hcr.2.test
9195     @@@DEnt:
9196     @@@@test:value:
9197     <e a="aaaaa&#x21;bbbbb"/>
9198     @@@test:domTree:
9199     document {
9200     element {
9201     attribute {
9202     node-name: 'a';
9203     text-content: 'aaaaa!bbbbb';
9204     }
9205     }
9206     }
9207     @@XMLTest:
9208     @@@QName: xp.attrval.hcr.3.test
9209     @@@DEnt:
9210     @@@@test:value:
9211     <e a='&#x21;'/>
9212     @@@test:domTree:
9213     document {
9214     element {
9215     attribute {
9216     node-name: 'a';
9217     text-content: '!';
9218     }
9219     }
9220     }
9221     @@XMLTest:
9222     @@@QName: xp.attrval.hcr.4.test
9223     @@@DEnt:
9224     @@@@test:value:
9225     <e a='aaaaa&#x21;bbbbb'/>
9226     @@@test:domTree:
9227     document {
9228     element {
9229     attribute {
9230     node-name: 'a';
9231     text-content: 'aaaaa!bbbbb';
9232     }
9233     }
9234     }
9235     @@XMLTest:
9236     @@@QName: xp.entval.hcr.1.test
9237     @@@DEnt:
9238     @@@@test:value:
9239     <!DOCTYPE e [
9240     <!ENTITY ent "&#x21;">
9241     ]>
9242     <e/>
9243     @@@test:domTree:
9244     document {
9245     document-type {
9246     general-entity {
9247     node-name: 'ent';
9248     text-content: '!';
9249 wakaba 1.10 }
9250 wakaba 1.9 }
9251 wakaba 1.18 element { }
9252 wakaba 1.9 }
9253     @@XMLTest:
9254 wakaba 1.18 @@@QName: xp.entval.hcr.2.test
9255 wakaba 1.9 @@@DEnt:
9256     @@@@test:value:
9257 wakaba 1.18 <!DOCTYPE e [
9258     <!ENTITY ent "aaaaa&#x21;bbbbb">
9259     ]>
9260     <e/>
9261 wakaba 1.9 @@@test:domTree:
9262     document {
9263 wakaba 1.18 document-type {
9264     general-entity {
9265     node-name: 'ent';
9266     text-content: 'aaaaa!bbbbb';
9267 wakaba 1.9 }
9268     }
9269 wakaba 1.18 element { }
9270 wakaba 1.9 }
9271     @@XMLTest:
9272 wakaba 1.18 @@@QName: xp.element.content.reptxt.hcr.1.test
9273 wakaba 1.9 @@@DEnt:
9274     @@@@test:value:
9275 wakaba 1.18 <!DOCTYPE e [
9276     <!ENTITY ent "&#38;#x21;">
9277 wakaba 1.9 ]>
9278 wakaba 1.18 <e>&ent;</e>
9279 wakaba 1.9 @@@test:domTree:
9280     document {
9281     document-type { }
9282     element {
9283 wakaba 1.18 general-entity-reference {
9284     node-name: 'ent';
9285     text-content: '!';
9286 wakaba 1.19 is-expanded: true;
9287 wakaba 1.9 }
9288     }
9289     }
9290     @@XMLTest:
9291 wakaba 1.18 @@@QName: xp.element.content.reptxt.hcr.2.test
9292 wakaba 1.9 @@@DEnt:
9293     @@@@test:value:
9294 wakaba 1.18 <!DOCTYPE e [
9295     <!ENTITY ent "aaaaa&#38;#x21;bbbbb">
9296 wakaba 1.9 ]>
9297 wakaba 1.18 <e>&ent;</e>
9298 wakaba 1.9 @@@test:domTree:
9299     document {
9300     document-type { }
9301     element {
9302 wakaba 1.18 general-entity-reference {
9303     node-name: 'ent';
9304     text-content: 'aaaaa!bbbbb';
9305 wakaba 1.19 is-expanded: true;
9306 wakaba 1.9 }
9307     }
9308     }
9309     @@XMLTest:
9310 wakaba 1.18 @@@QName: xp.element.content.reptxt.reptxt.hcr.1.test
9311 wakaba 1.9 @@@DEnt:
9312     @@@@test:value:
9313 wakaba 1.18 <!DOCTYPE e [
9314     <!ENTITY ent "&#38;#x21;">
9315     <!ENTITY ent2 "&ent;">
9316     ]>
9317     <e>&ent2;</e>
9318 wakaba 1.9 @@@test:domTree:
9319     document {
9320 wakaba 1.18 document-type { }
9321 wakaba 1.9 element {
9322 wakaba 1.18 general-entity-reference {
9323     node-name: 'ent2';
9324 wakaba 1.19 is-expanded: true;
9325 wakaba 1.18 general-entity-reference {
9326     node-name: 'ent';
9327     text-content: '!';
9328 wakaba 1.19 is-expanded: true;
9329 wakaba 1.18 }
9330 wakaba 1.9 }
9331     }
9332     }
9333     @@XMLTest:
9334 wakaba 1.18 @@@QName: xp.element.content.reptxt.reptxt.hcr.2.test
9335 wakaba 1.9 @@@DEnt:
9336     @@@@test:value:
9337 wakaba 1.18 <!DOCTYPE e [
9338     <!ENTITY ent "aa&#38;#x21;bb">
9339     <!ENTITY ent2 "&ent;">
9340     ]>
9341     <e>&ent2;</e>
9342 wakaba 1.9 @@@test:domTree:
9343     document {
9344 wakaba 1.18 document-type { }
9345 wakaba 1.9 element {
9346 wakaba 1.18 general-entity-reference {
9347     node-name: 'ent2';
9348 wakaba 1.19 is-expanded: true;
9349 wakaba 1.18 general-entity-reference {
9350     node-name: 'ent';
9351 wakaba 1.19 is-expanded: true;
9352 wakaba 1.18 text-content: 'aa!bb';
9353     }
9354 wakaba 1.9 }
9355     }
9356     }
9357     @@XMLTest:
9358 wakaba 1.18 @@@QName: xp.attval.reptxt.hcr.1.test
9359 wakaba 1.9 @@@DEnt:
9360     @@@@test:value:
9361 wakaba 1.18 <!DOCTYPE e [
9362     <!ENTITY ent "&#38;#x21;">
9363     ]>
9364     <e a="&ent;"/>
9365 wakaba 1.9 @@@test:domTree:
9366     document {
9367 wakaba 1.18 document-type { }
9368 wakaba 1.9 element {
9369     attribute {
9370 wakaba 1.18 node-name: 'a';
9371     general-entity-reference {
9372     node-name: 'ent';
9373 wakaba 1.19 is-expanded: true;
9374 wakaba 1.18 text-content: '!';
9375     }
9376 wakaba 1.10 }
9377     }
9378     }
9379     @@XMLTest:
9380 wakaba 1.18 @@@QName: xp.attval.reptxt.hcr.2.test
9381 wakaba 1.10 @@@DEnt:
9382     @@@@test:value:
9383 wakaba 1.18 <!DOCTYPE e [
9384     <!ENTITY ent "aaaaa&#38;#x21;bbbbb">
9385 wakaba 1.10 ]>
9386 wakaba 1.18 <e a="&ent;"/>
9387 wakaba 1.10 @@@test:domTree:
9388     document {
9389     document-type { }
9390     element {
9391     attribute {
9392 wakaba 1.18 node-name: 'a';
9393     general-entity-reference {
9394     node-name: 'ent';
9395 wakaba 1.19 is-expanded: true;
9396 wakaba 1.18 text-content: 'aaaaa!bbbbb';
9397     }
9398 wakaba 1.10 }
9399     }
9400     }
9401     @@XMLTest:
9402 wakaba 1.18 @@@QName: xp.attval.reptxt.reptxt.hcr.1.test
9403 wakaba 1.10 @@@DEnt:
9404     @@@@test:value:
9405 wakaba 1.18 <!DOCTYPE e [
9406     <!ENTITY ent "&#38;#x21;">
9407     <!ENTITY ent2 "&ent;">
9408 wakaba 1.10 ]>
9409 wakaba 1.18 <e a="&ent2;"/>
9410 wakaba 1.10 @@@test:domTree:
9411     document {
9412     document-type { }
9413     element {
9414     attribute {
9415 wakaba 1.18 node-name: 'a';
9416     general-entity-reference {
9417     node-name: 'ent2';
9418 wakaba 1.19 is-expanded: true;
9419 wakaba 1.18 general-entity-reference {
9420     node-name: 'ent';
9421 wakaba 1.19 is-expanded: true;
9422 wakaba 1.18 text-content: '!';
9423     }
9424     }
9425 wakaba 1.10 }
9426     }
9427     }
9428     @@XMLTest:
9429 wakaba 1.18 @@@QName: xp.attval.reptxt.reptxt.hcr.2.test
9430 wakaba 1.10 @@@DEnt:
9431     @@@@test:value:
9432 wakaba 1.18 <!DOCTYPE e [
9433     <!ENTITY ent "aa&#38;#x21;bb">
9434     <!ENTITY ent2 "&ent;">
9435 wakaba 1.10 ]>
9436 wakaba 1.18 <e a="&ent2;"/>
9437 wakaba 1.10 @@@test:domTree:
9438     document {
9439     document-type { }
9440     element {
9441     attribute {
9442 wakaba 1.18 node-name: 'a';
9443     general-entity-reference {
9444     node-name: 'ent2';
9445 wakaba 1.19 is-expanded: true;
9446 wakaba 1.18 general-entity-reference {
9447     node-name: 'ent';
9448 wakaba 1.19 is-expanded: true;
9449 wakaba 1.18 text-content: 'aa!bb';
9450     }
9451     }
9452 wakaba 1.11 }
9453     }
9454     }
9455    
9456     @@XMLTest:
9457 wakaba 1.18 @@@QName: xp.element.content.ncr.legal.char.1.0.1.test
9458     @@@DEnt:
9459     @@@@test:value:
9460     <?xml version="1.0"?>
9461     <e>&#0;</e>
9462     @@@c:erred: <[[xp|wf-legal-character]]> { (2, 4)..(2, 7); }
9463     @@XMLTest:
9464     @@@QName: xp.element.content.ncr.legal.char.1.1.1.test
9465     @@@DEnt:
9466     @@@@test:value:
9467     <?xml version="1.1"?>
9468     <e>&#0;</e>
9469     @@@c:erred: <[[xp|wf-legal-character]]> { (2, 4)..(2, 7); }
9470     @@XMLTest:
9471     @@@QName: xp.element.content.ncr.legal.char.1.0.2.test
9472     @@@DEnt:
9473     @@@@test:value:
9474     <?xml version="1.0"?>
9475     <e>&#1;</e>
9476     @@@c:erred: <[[xp|wf-legal-character]]> { (2, 4)..(2, 7); }
9477     @@XMLTest:
9478     @@@QName: xp.element.content.ncr.legal.char.1.1.2.test
9479 wakaba 1.11 @@@DEnt:
9480     @@@@test:value:
9481 wakaba 1.18 <?xml version="1.1"?>
9482     <e>&#1;</e>
9483 wakaba 1.11 @@@test:domTree:
9484     document {
9485 wakaba 1.18 xml-version: '1.1';
9486 wakaba 1.11 element {
9487 wakaba 1.18 text-content: U+0001;
9488 wakaba 1.11 }
9489     }
9490     @@XMLTest:
9491 wakaba 1.18 @@@QName: xp.element.content.hcr.legal.char.1.0.1.test
9492     @@@DEnt:
9493     @@@@test:value:
9494     <?xml version="1.0"?>
9495     <e>&#x0;</e>
9496     @@@c:erred: <[[xp|wf-legal-character]]> { (2, 4)..(2, 8); }
9497     @@XMLTest:
9498     @@@QName: xp.element.content.hcr.legal.char.1.1.1.test
9499     @@@DEnt:
9500     @@@@test:value:
9501     <?xml version="1.1"?>
9502     <e>&#x0;</e>
9503     @@@c:erred: <[[xp|wf-legal-character]]> { (2, 4)..(2, 8); }
9504     @@XMLTest:
9505     @@@QName: xp.element.content.hcr.legal.char.1.0.2.test
9506 wakaba 1.11 @@@DEnt:
9507     @@@@test:value:
9508 wakaba 1.18 <?xml version="1.0"?>
9509     <e>&#x1;</e>
9510     @@@c:erred: <[[xp|wf-legal-character]]> { (2, 4)..(2, 8); }
9511 wakaba 1.11 @@XMLTest:
9512 wakaba 1.18 @@@QName: xp.element.content.hcr.legal.char.1.1.2.test
9513 wakaba 1.11 @@@DEnt:
9514     @@@@test:value:
9515 wakaba 1.18 <?xml version="1.1"?>
9516     <e>&#x1;</e>
9517 wakaba 1.11 @@@test:domTree:
9518     document {
9519 wakaba 1.18 xml-version: '1.1';
9520 wakaba 1.11 element {
9521 wakaba 1.18 text-content: U+0001;
9522 wakaba 1.6 }
9523     }
9524    
9525 wakaba 1.19 @@XMLTest:
9526     @@@QName: xp.element.content.ger.entity.declared.nodtd.1.test
9527     @@@DEnt:
9528     @@@@test:value:
9529     <p>&entity;</p>
9530     @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 4)..(1, 11); }
9531     @@XMLTest:
9532     @@@QName: xp.element.content.ger.entity.declared.nodtd.2.test
9533     @@@DEnt:
9534     @@@@test:value:
9535     <?xml version="1.0" standalone="yes"?>
9536     <p>&entity;</p>
9537     @@@c:erred: <[[xp|wf-entity-declared]]> { (2, 4)..(2, 11); }
9538     @@XMLTest:
9539     @@@QName: xp.element.content.ger.entity.declared.nodtd.3.test
9540     @@@DEnt:
9541     @@@@test:value:
9542     <?xml version="1.0" standalone="no"?>
9543     <p>&entity;</p>
9544     @@@c:erred: <[[xp|wf-entity-declared]]> { (2, 4)..(2, 11); }
9545     @@XMLTest:
9546     @@@QName: xp.element.content.ger.entity.declared.nodtd.-1.test
9547     @@@DEnt:
9548     @@@@test:value:
9549     <p>&lt;&gt;&amp;&quot;&apos;</p>
9550     @@@test:domTree:
9551     document {
9552     element {
9553     text-content: '<>&"' U+0027;
9554     }
9555     }
9556     @@XMLTest:
9557     @@@QName: xp.element.content.ger.entity.declared.nopref.1.test
9558     @@@DEnt:
9559     @@@@test:value:
9560     <!DOCTYPE p []>
9561     <p>&entity;</p>
9562     @@@c:erred: <[[xp|wf-entity-declared]]> { (2, 4)..(2, 11); }
9563     @@XMLTest:
9564     @@@QName: xp.element.content.ger.entity.declared.nopref.2.test
9565     @@@DEnt:
9566     @@@@test:value:
9567     <!DOCTYPE p [
9568     <!ENTITY other "aa">
9569     <!ENTITY % another "aa">
9570     ]>
9571     <p>&entity;</p>
9572     @@@c:erred: <[[xp|wf-entity-declared]]> { (5, 4)..(5, 11); }
9573     @@XMLTest:
9574     @@@QName: xp.element.content.ger.entity.declared.nopref.3.test
9575     @@@DEnt:
9576     @@@@test:value:
9577     <?xml version="1.0" standalone="yes"?>
9578     <!DOCTYPE p []>
9579     <p>&entity;</p>
9580     @@@c:erred: <[[xp|wf-entity-declared]]> { (3, 4)..(3, 11); }
9581     @@XMLTest:
9582     @@@QName: xp.element.content.ger.entity.declared.nopref.4.test
9583     @@@DEnt:
9584     @@@@test:value:
9585     <?xml version="1.0" standalone="no"?>
9586     <!DOCTYPE p []>
9587     <p>&entity;</p>
9588     @@@c:erred: <[[xp|wf-entity-declared]]> { (3, 4)..(3, 11); }
9589     @@XMLTest:
9590     @@@QName: xp.element.content.ger.entity.declared.nopref.5.test
9591     @@@DEnt:
9592     @@@@test:value:
9593     <?xml version="1.0" standalone="yes"?>
9594     <!DOCTYPE p [
9595     <!ENTITY other "aa">
9596     <!ENTITY % another "aa">
9597     ]>
9598     <p>&entity;</p>
9599     @@@c:erred: <[[xp|wf-entity-declared]]> { (6, 4)..(6, 11); }
9600     @@XMLTest:
9601     @@@QName: xp.element.content.ger.entity.declared.nopref.6.test
9602     @@@DEnt:
9603     @@@@test:value:
9604     <?xml version="1.0" standalone="no"?>
9605     <!DOCTYPE p [
9606     <!ENTITY other "aa">
9607     <!ENTITY % another "aa">
9608     ]>
9609     <p>&entity;</p>
9610     @@@c:erred: <[[xp|wf-entity-declared]]> { (6, 4)..(6, 11); }
9611     @@XMLTest:
9612     @@@QName: xp.element.content.ger.entity.declared.nopref.-1.test
9613     @@@DEnt:
9614     @@@@test:value:
9615     <!DOCTYPE p [
9616     <!ENTITY entity "value">
9617     ]>
9618     <p>&entity;</p>
9619     @@@test:domTree:
9620     document {
9621     document-type {
9622     general-entity {
9623     node-name: 'entity';
9624     text-content: 'value';
9625     }
9626     }
9627     element {
9628 wakaba 1.20 general-entity-reference {
9629 wakaba 1.19 node-name: 'entity';
9630 wakaba 1.20 is-expanded: true;
9631 wakaba 1.19 text-content: 'value';
9632     }
9633     }
9634     }
9635     @@XMLTest:
9636     @@@QName: xp.element.content.ger.entity.declared.nopref.-2.test
9637     @@@DEnt:
9638     @@@@test:value:
9639     <!DOCTYPE p [
9640     <!ENTITY entity "value">
9641     <!ENTITY another SYSTEM "another">
9642     ]>
9643     <p>&entity;</p>
9644     @@@test:domTree:
9645     document {
9646     document-type {
9647     general-entity {
9648     node-name: 'entity';
9649     text-content: 'value';
9650     }
9651 wakaba 1.20 general-entity {
9652     node-name: 'another';
9653     public-id: null;
9654     system-id: 'another';
9655     }
9656 wakaba 1.19 }
9657     element {
9658 wakaba 1.20 general-entity-reference {
9659 wakaba 1.19 node-name: 'entity';
9660 wakaba 1.20 is-expanded: true;
9661 wakaba 1.19 text-content: 'value';
9662     }
9663     }
9664     }
9665     @@XMLTest:
9666     @@@QName: xp.element.content.ger.entity.declared.standalone.1.test
9667     @@@DEnt:
9668     @@@@test:value:
9669     <?xml version="1.0" standalone="yes"?>
9670     <p>&entity;</p>
9671     @@@c:erred: <[[xp|wf-entity-declared]]> { (2, 4)..(2, 11); }
9672     @@XMLTest:
9673     @@@QName: xp.element.content.ger.entity.declared.standalone.2.test
9674     @@@DEnt:
9675     @@@@test:value:
9676     <?xml version="1.0" standalone="yes"?>
9677     <!DOCTYPE p []>
9678     <p>&entity;</p>
9679     @@@c:erred: <[[xp|wf-entity-declared]]> { (3, 4)..(3, 11); }
9680     @@XMLTest:
9681     @@@QName: xp.element.content.ger.entity.declared.standalone.3.test
9682     @@@DEnt:
9683     @@@@test:value:
9684     <?xml version="1.0" standalone="yes"?>
9685     <!DOCTYPE p [
9686     <!ENTITY % para "<!-- -->">
9687     %para;
9688     ]>
9689     <p>&entity;</p>
9690     @@@c:erred: <[[xp|wf-entity-declared]]> { (6, 4)..(6, 11); }
9691     @@XMLTest:
9692     @@@QName: xp.element.content.ger.entity.declared.standalone.-1.test
9693     @@@DEnt:
9694     @@@@test:value:
9695     <?xml version="1.0" standalone="no"?>
9696     <!DOCTYPE p [
9697     <!ENTITY % para "<!-- -->">
9698     %para;
9699     ]>
9700     <p>&entity;</p>
9701     @@@test:domTree:
9702     document {
9703     document-type { }
9704     element {
9705     general-entity-reference {
9706     is-expanded: false;
9707     }
9708     }
9709     }
9710     @@XMLTest:
9711     @@@QName: xp.element.content.ger.entity.declared.standalone.-2.test
9712     @@@DEnt:
9713     @@@@test:value:
9714     <!DOCTYPE p [
9715     <!ENTITY % para "<!-- -->">
9716     %para;
9717     ]>
9718     <p>&entity;</p>
9719     @@@test:domTree:
9720     document {
9721     document-type { }
9722     element {
9723     general-entity-reference {
9724     is-expanded: false;
9725     }
9726     }
9727     }
9728     @@XMLTest:
9729     @@@QName: xp.element.content.ger.entity.declared.standalone.4.test
9730     @@@DEnt:
9731     @@@@test:value:
9732     <?xml version="1.0" standalone="yes"?>
9733     <!DOCTYPE p [
9734     <!ENTITY % para SYSTEM "para">
9735     %para;
9736     ]>
9737     <p>&entity;</p>
9738     @@@c:erred: <[[xp|wf-entity-declared]]> { (6, 4)..(6, 11); }
9739     @@XMLTest:
9740     @@@QName: xp.element.content.ger.entity.declared.standalone.-3.test
9741     @@@DEnt:
9742     @@@@test:value:
9743     <?xml version="1.0" standalone="no"?>
9744     <!DOCTYPE p [
9745     <!ENTITY % para SYSTEM "para">
9746     %para;
9747     ]>
9748     <p>&entity;</p>
9749     @@@test:domTree:
9750     document {
9751     document-type { }
9752     element {
9753     general-entity-reference {
9754     is-expanded: false;
9755     }
9756     }
9757     }
9758     @@XMLTest:
9759     @@@QName: xp.element.content.ger.entity.declared.standalone.-4.test
9760     @@@DEnt:
9761     @@@@test:value:
9762     <!DOCTYPE p [
9763     <!ENTITY % para SYSTEM "para">
9764     %para;
9765     ]>
9766     <p>&entity;</p>
9767     @@@test:domTree:
9768     document {
9769     document-type { }
9770     element {
9771     general-entity-reference {
9772     is-expanded: false;
9773     }
9774     }
9775     }
9776     @@XMLTest:
9777     @@@QName: xp.element.content.ger.entity.declared.standalone.5.test
9778     @@@DEnt:
9779     @@@@test:value:
9780     <?xml version="1.0" standalone="yes"?>
9781     <!DOCTYPE p SYSTEM "dtd">
9782     <p>&entity;</p>
9783     @@@c:erred: <[[xp|wf-entity-declared]]> { (3, 4)..(3, 11); }
9784     @@XMLTest:
9785     @@@QName: xp.element.content.ger.entity.declared.standalone.-5.test
9786     @@@DEnt:
9787     @@@@test:value:
9788     <?xml version="1.0" standalone="no"?>
9789     <!DOCTYPE p SYSTEM "dtd">
9790     <p>&entity;</p>
9791     @@@test:domTree:
9792     document {
9793     document-type { }
9794     element {
9795     general-entity-reference {
9796     is-expanded: false;
9797     }
9798     }
9799     }
9800     @@XMLTest:
9801     @@@QName: xp.element.content.ger.entity.declared.standalone.-6.test
9802     @@@DEnt:
9803     @@@@test:value:
9804     <!DOCTYPE p SYSTEM "dtd">
9805     <p>&entity;</p>
9806     @@@test:domTree:
9807     document {
9808     document-type { }
9809     element {
9810     general-entity-reference {
9811     is-expanded: false;
9812     }
9813     }
9814     }
9815    
9816 wakaba 1.20 @@XMLTest:
9817     @@@QName: xp.reptxt.element.content.ger.entity.declared.nopref.1.test
9818     @@@DEnt:
9819     @@@@test:value:
9820     <!DOCTYPE p [
9821     <!ENTITY c "&entity;">
9822     ]>
9823     <p>&c;</p>
9824     @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
9825     @@XMLTest:
9826     @@@QName: xp.reptxt.element.content.ger.entity.declared.nopref.2.test
9827     @@@DEnt:
9828     @@@@test:value:
9829     <!DOCTYPE p [
9830     <!ENTITY other "aa">
9831     <!ENTITY % another "aa">
9832     <!ENTITY c "&entity;">
9833     ]>
9834     <p>&c;</p>
9835     @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
9836     @@XMLTest:
9837     @@@QName: xp.reptxt.element.content.ger.entity.declared.nopref.3.test
9838     @@@DEnt:
9839     @@@@test:value:
9840     <?xml version="1.0" standalone="yes"?>
9841     <!DOCTYPE p [
9842     <!ENTITY c "&entity;">
9843     ]>
9844     <p>&c;</p>
9845     @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
9846     @@XMLTest:
9847     @@@QName: xp.reptxt.element.content.ger.entity.declared.nopref.4.test
9848     @@@DEnt:
9849     @@@@test:value:
9850     <?xml version="1.0" standalone="no"?>
9851     <!DOCTYPE p [
9852     <!ENTITY c "&entity;">
9853     ]>
9854     <p>&c;</p>
9855     @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
9856     @@XMLTest:
9857     @@@QName: xp.reptxt.element.content.ger.entity.declared.nopref.5.test
9858     @@@DEnt:
9859     @@@@test:value:
9860     <?xml version="1.0" standalone="yes"?>
9861     <!DOCTYPE p [
9862     <!ENTITY other "aa">
9863     <!ENTITY % another "aa">
9864     <!ENTITY c "&entity;">
9865     ]>
9866     <p>&c;</p>
9867     @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
9868     @@XMLTest:
9869     @@@QName: xp.reptxt.element.content.ger.entity.declared.nopref.6.test
9870     @@@DEnt:
9871     @@@@test:value:
9872     <?xml version="1.0" standalone="no"?>
9873     <!DOCTYPE p [
9874     <!ENTITY other "aa">
9875     <!ENTITY % another "aa">
9876     <!ENTITY c "&entity;">
9877     ]>
9878     <p>&c;</p>
9879     @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
9880     @@XMLTest:
9881     @@@QName: xp.reptxt.element.content.ger.entity.declared.nopref.-1.test
9882     @@@DEnt:
9883     @@@@test:value:
9884     <!DOCTYPE p [
9885     <!ENTITY entity "value">
9886     <!ENTITY c "&entity;">
9887     ]>
9888     <p>&c;</p>
9889     @@@test:domTree:
9890     document {
9891     document-type {
9892     general-entity {
9893     node-name: 'entity';
9894     text-content: 'value';
9895     }
9896     general-entity {
9897     node-name: 'c';
9898     general-entity-reference {
9899     node-name: 'entity';
9900     text-content: 'value';
9901     }
9902     }
9903     }
9904     element {
9905     general-entity-reference {
9906     node-name: 'c';
9907     general-entity-reference {
9908     node-name: 'entity';
9909     text-content: 'value';
9910     }
9911     }
9912     }
9913     }
9914     @@XMLTest:
9915     @@@QName: xp.reptxt.element.content.ger.entity.declared.nopref.-2.test
9916     @@@DEnt:
9917     @@@@test:value:
9918     <!DOCTYPE p [
9919     <!ENTITY entity "value">
9920     <!ENTITY another SYSTEM "another">
9921     <!ENTITY c "&entity;">
9922     ]>
9923     <p>&c;</p>
9924     @@@test:domTree:
9925     document {
9926     document-type {
9927     general-entity {
9928     node-name: 'entity';
9929     text-content: 'value';
9930     }
9931     general-entity {
9932     node-name: 'c';
9933     general-entity-reference {
9934     node-name: 'entity';
9935 wakaba 1.23 is-expanded: true;
9936 wakaba 1.20 text-content: 'value';
9937     }
9938     }
9939     general-entity {
9940     node-name: 'another';
9941     public-id: null;
9942     system-id: 'another';
9943     has-replacement-tree: false;
9944     }
9945     }
9946     element {
9947     general-entity-reference {
9948     node-name: 'c';
9949 wakaba 1.23 is-expanded: true;
9950 wakaba 1.20 general-entity-reference {
9951     node-name: 'entity';
9952 wakaba 1.23 is-expanded: true;
9953 wakaba 1.20 text-content: 'value';
9954     }
9955     }
9956     }
9957     }
9958     @@XMLTest:
9959     @@@QName: xp.reptxt.element.content.ger.entity.declared.standalone.2.test
9960     @@@DEnt:
9961     @@@@test:value:
9962     <?xml version="1.0" standalone="yes"?>
9963     <!DOCTYPE p [
9964     <!ENTITY c "&entity;">
9965     ]>
9966     <p>&c;</p>
9967     @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
9968     @@XMLTest:
9969     @@@QName: xp.reptxt.element.content.ger.entity.declared.standalone.3.test
9970     @@@DEnt:
9971     @@@@test:value:
9972     <?xml version="1.0" standalone="yes"?>
9973     <!DOCTYPE p [
9974     <!ENTITY % para "<!-- -->">
9975     %para;
9976     <!ENTITY c "&entity;">
9977     ]>
9978     <p>&c;</p>
9979     @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
9980     @@XMLTest:
9981     @@@QName: xp.reptxt.element.content.ger.entity.declared.standalone.-1.test
9982     @@@DEnt:
9983     @@@@test:value:
9984     <?xml version="1.0" standalone="no"?>
9985     <!DOCTYPE p [
9986     <!ENTITY c "&entity;">
9987     <!ENTITY % para "<!-- -->">
9988     %para;
9989     ]>
9990     <p>&c;</p>
9991     @@@test:domTree:
9992     document {
9993     document-type {
9994     general-entity {
9995     node-name: 'c';
9996     general-entity-reference {
9997     node-name: 'entity';
9998     is-expanded: false;
9999     }
10000     }
10001     }
10002     element {
10003     general-entity-reference {
10004     node-name: 'c';
10005     general-entity-reference {
10006     node-name: 'entity';
10007     is-expanded: false;
10008     }
10009     }
10010     }
10011     }
10012     @@XMLTest:
10013     @@@QName:
10014     xp.reptxt.element.content.ger.entity.declared.standalone.-1.2.test
10015     @@@DEnt:
10016     @@@@test:value:
10017     <?xml version="1.0" standalone="no"?>
10018     <!DOCTYPE p [
10019     <!ENTITY % para "<!-- -->">
10020     %para;
10021     <!ENTITY c "&entity;">
10022     ]>
10023     <p>&c;</p>
10024     @@@test:domTree:
10025     document {
10026     document-type { }
10027     element {
10028     general-entity-reference {
10029     node-name: 'c';
10030     is-expanded: false;
10031     }
10032     }
10033     }
10034     @@XMLTest:
10035     @@@QName: xp.reptxt.element.content.ger.entity.declared.standalone.-2.test
10036     @@@DEnt:
10037     @@@@test:value:
10038     <!DOCTYPE p [
10039     <!ENTITY c "&entity;">
10040     <!ENTITY % para "<!-- -->">
10041     %para;
10042     ]>
10043     <p>&c;</p>
10044     @@@test:domTree:
10045     document {
10046     document-type { }
10047     element {
10048     general-entity-reference {
10049     node-name: 'c';
10050     is-expanded: true;
10051     general-entity-reference {
10052     node-name: 'entity';
10053     is-expanded: false;
10054     }
10055     }
10056     }
10057     }
10058     @@XMLTest:
10059     @@@QName:
10060     xp.reptxt.element.content.ger.entity.declared.standalone.-2.2.test
10061     @@@DEnt:
10062     @@@@test:value:
10063     <!DOCTYPE p [
10064     <!ENTITY % para "<!-- -->">
10065     %para;
10066     <!ENTITY c "&entity;">
10067     ]>
10068     <p>&c;</p>
10069     @@@test:domTree:
10070     document {
10071     document-type { }
10072     element {
10073     general-entity-reference {
10074     node-name: 'c';
10075     is-expanded: false;
10076     }
10077     }
10078     }
10079     @@XMLTest:
10080     @@@QName: xp.reptxt.element.content.ger.entity.declared.standalone.4.test
10081     @@@DEnt:
10082     @@@@test:value:
10083     <?xml version="1.0" standalone="yes"?>
10084     <!DOCTYPE p [
10085     <!ENTITY % para SYSTEM "para">
10086     %para;
10087     <!ENTITY c "&entity;">
10088     ]>
10089     <p>&c;</p>
10090     @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
10091     @@XMLTest:
10092     @@@QName: xp.reptxt.element.content.ger.entity.declared.standalone.-3.test
10093     @@@DEnt:
10094     @@@@test:value:
10095     <?xml version="1.0" standalone="no"?>
10096     <!DOCTYPE p [
10097     <!ENTITY c "&entity;">
10098     <!ENTITY % para SYSTEM "para">
10099     %para;
10100     ]>
10101     <p>&c;</p>
10102     @@@test:domTree:
10103     document {
10104     document-type { }
10105     element {
10106     general-entity-reference {
10107     node-name: 'c';
10108     is-expanded: true;
10109     general-entity-reference {
10110     node-name: 'entity';
10111     is-expanded: false;
10112     }
10113     }
10114     }
10115     }
10116     @@XMLTest:
10117     @@@QName:
10118     xp.reptxt.element.content.ger.entity.declared.standalone.-3.2.test
10119     @@@DEnt:
10120     @@@@test:value:
10121     <?xml version="1.0" standalone="no"?>
10122     <!DOCTYPE p [
10123     <!ENTITY % para SYSTEM "para">
10124     %para;
10125     <!ENTITY c "&entity;">
10126     ]>
10127     <p>&c;</p>
10128     @@@test:domTree:
10129     document {
10130     document-type { }
10131     element {
10132     general-entity-reference {
10133     node-name: 'c';
10134     is-expanded: false;
10135     }
10136     }
10137     }
10138     @@XMLTest:
10139     @@@QName: xp.reptxt.element.content.ger.entity.declared.standalone.-4.test
10140     @@@DEnt:
10141     @@@@test:value:
10142     <!DOCTYPE p [
10143     <!ENTITY c "&entity;">
10144     <!ENTITY % para SYSTEM "para">
10145     %para;
10146     ]>
10147     <p>&c;</p>
10148     @@@test:domTree:
10149     document {
10150     document-type { }
10151     element {
10152     general-entity-reference {
10153     node-name: 'c';
10154     is-expanded: true;
10155     general-entity-reference {
10156     node-name: 'entity';
10157     is-expanded: false;
10158     }
10159     }
10160     }
10161     }
10162     @@XMLTest:
10163     @@@QName:
10164     xp.reptxt.element.content.ger.entity.declared.standalone.-4.2.test
10165     @@@DEnt:
10166     @@@@test:value:
10167     <!DOCTYPE p [
10168     <!ENTITY % para SYSTEM "para">
10169     %para;
10170     <!ENTITY c "&entity;">
10171     ]>
10172     <p>&c;</p>
10173     @@@test:domTree:
10174     document {
10175     document-type { }
10176     element {
10177     general-entity-reference {
10178     node-name: 'c';
10179     is-expanded: false;
10180     }
10181     }
10182     }
10183     @@XMLTest:
10184     @@@QName: xp.reptxt.element.content.ger.entity.declared.standalone.5.test
10185     @@@DEnt:
10186     @@@@test:value:
10187     <?xml version="1.0" standalone="yes"?>
10188     <!DOCTYPE p SYSTEM "dtd" [
10189     <!ENTITY c "&entity;">
10190     ]>
10191     <p>&c;</p>
10192     @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
10193     @@XMLTest:
10194     @@@QName: xp.reptxt.element.content.ger.entity.declared.standalone.-5.test
10195     @@@DEnt:
10196     @@@@test:value:
10197     <?xml version="1.0" standalone="no"?>
10198     <!DOCTYPE p SYSTEM "dtd" [
10199     <!ENTITY c "&entity;">
10200     ]>
10201     <p>&c;</p>
10202     @@@test:domTree:
10203     document {
10204     document-type { }
10205     element {
10206     general-entity-reference {
10207     node-name: 'c';
10208     is-expanded: true;
10209     general-entity-reference {
10210     node-name: 'entity';
10211     is-expanded: false;
10212     }
10213     }
10214     }
10215     }
10216     @@XMLTest:
10217     @@@QName: xp.reptxt.element.content.ger.entity.declared.standalone.-6.test
10218     @@@DEnt:
10219     @@@@test:value:
10220     <!DOCTYPE p SYSTEM "dtd" [<!ENTITY c "&entity;">]>
10221     <p>&c;</p>
10222     @@@test:domTree:
10223     document {
10224     document-type { }
10225     element {
10226     general-entity-reference {
10227     node-name: 'c';
10228     is-expanded: true;
10229     general-entity-reference {
10230     node-name: 'entity';
10231     is-expanded: false;
10232     }
10233     }
10234     }
10235     }
10236    
10237     @@XMLTest:
10238     @@@QName: xp.attval.ger.entity.declared.nodtd.1.test
10239     @@@DEnt:
10240     @@@@test:value:
10241     <p a="&entity;"/>
10242     @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 7)..(1, 14); }
10243     @@XMLTest:
10244     @@@QName: xp.attval.ger.entity.declared.nodtd.2.test
10245     @@@DEnt:
10246     @@@@test:value:
10247     <?xml version="1.0" standalone="yes"?>
10248     <p a="&entity;"/>
10249     @@@c:erred: <[[xp|wf-entity-declared]]> { (2, 7)..(2, 14); }
10250     @@XMLTest:
10251     @@@QName: xp.attval.ger.entity.declared.nodtd.3.test
10252     @@@DEnt:
10253     @@@@test:value:
10254     <?xml version="1.0" standalone="no"?>
10255     <p a="&entity;"/>
10256     @@@c:erred: <[[xp|wf-entity-declared]]> { (2, 7)..(2, 14); }
10257     @@XMLTest:
10258     @@@QName: xp.attval.ger.entity.declared.nodtd.-1.test
10259     @@@DEnt:
10260     @@@@test:value:
10261     <p a="&lt;&gt;&amp;&quot;&apos;"/>
10262     @@@test:domTree:
10263     document {
10264     element {
10265     attribute {
10266     node-name: 'a';
10267     text-content: '<>&"' U+0027;
10268     }
10269     }
10270     }
10271     @@XMLTest:
10272     @@@QName: xp.attval.ger.entity.declared.nopref.1.test
10273     @@@DEnt:
10274     @@@@test:value:
10275     <!DOCTYPE p []>
10276     <p a="&entity;"/>
10277     @@@c:erred: <[[xp|wf-entity-declared]]> { (2, 7)..(2, 14); }
10278     @@XMLTest:
10279     @@@QName: xp.attval.ger.entity.declared.nopref.2.test
10280     @@@DEnt:
10281     @@@@test:value:
10282     <!DOCTYPE p [
10283     <!ENTITY other "aa">
10284     <!ENTITY % another "aa">
10285     ]>
10286     <p a="&entity;"/>
10287     @@@c:erred: <[[xp|wf-entity-declared]]> { (5, 7)..(5, 14); }
10288     @@XMLTest:
10289     @@@QName: xp.attval.ger.entity.declared.nopref.3.test
10290     @@@DEnt:
10291     @@@@test:value:
10292     <?xml version="1.0" standalone="yes"?>
10293     <!DOCTYPE p []>
10294     <p a="&entity;"/>
10295     @@@c:erred: <[[xp|wf-entity-declared]]> { (3, 7)..(3, 14); }
10296     @@XMLTest:
10297     @@@QName: xp.attval.ger.entity.declared.nopref.4.test
10298     @@@DEnt:
10299     @@@@test:value:
10300     <?xml version="1.0" standalone="no"?>
10301     <!DOCTYPE p []>
10302     <p a="&entity;"/>
10303     @@@c:erred: <[[xp|wf-entity-declared]]> { (3, 7)..(3, 14); }
10304     @@XMLTest:
10305     @@@QName: xp.attval.ger.entity.declared.nopref.5.test
10306     @@@DEnt:
10307     @@@@test:value:
10308     <?xml version="1.0" standalone="yes"?>
10309     <!DOCTYPE p [
10310     <!ENTITY other "aa">
10311     <!ENTITY % another "aa">
10312     ]>
10313     <p a="&entity;"/>
10314     @@@c:erred: <[[xp|wf-entity-declared]]> { (6, 7)..(6, 14); }
10315     @@XMLTest:
10316     @@@QName: xp.attval.ger.entity.declared.nopref.6.test
10317     @@@DEnt:
10318     @@@@test:value:
10319     <?xml version="1.0" standalone="no"?>
10320     <!DOCTYPE p [
10321     <!ENTITY other "aa">
10322     <!ENTITY % another "aa">
10323     ]>
10324     <p a="&entity;"/>
10325     @@@c:erred: <[[xp|wf-entity-declared]]> { (6, 7)..(6, 14); }
10326     @@XMLTest:
10327     @@@QName: xp.attval.ger.entity.declared.nopref.-1.test
10328     @@@DEnt:
10329     @@@@test:value:
10330     <!DOCTYPE p [
10331     <!ENTITY entity "value">
10332     ]>
10333     <p a="&entity;"/>
10334     @@@test:domTree:
10335     document {
10336     document-type {
10337     general-entity {
10338     node-name: 'entity';
10339     text-content: 'value';
10340     }
10341     }
10342     element {
10343     attribute {
10344     node-name: 'a';
10345     general-entity-reference {
10346     node-name: 'entity';
10347     is-expanded: true;
10348     text-content: 'value';
10349     }
10350     }
10351     }
10352     }
10353     @@XMLTest:
10354     @@@QName: xp.attval.ger.entity.declared.nopref.-2.test
10355     @@@DEnt:
10356     @@@@test:value:
10357     <!DOCTYPE p [
10358     <!ENTITY entity "value">
10359     <!ENTITY another SYSTEM "another">
10360     ]>
10361     <p a="&entity;"/>
10362     @@@test:domTree:
10363     document {
10364     document-type {
10365     general-entity {
10366     node-name: 'entity';
10367     text-content: 'value';
10368     has-replacement-tree: true;
10369     }
10370     general-entity {
10371     node-name: 'another';
10372     public-id: null;
10373     system-id: 'another';
10374     has-replacement-tree: false;
10375     }
10376     }
10377     element {
10378     attribute {
10379     node-name: 'a';
10380     general-entity-reference {
10381     node-name: 'entity';
10382     is-expanded: true;
10383     text-content: 'value';
10384     }
10385     }
10386     }
10387     }
10388     @@XMLTest:
10389     @@@QName: xp.attval.ger.entity.declared.standalone.1.test
10390     @@@DEnt:
10391     @@@@test:value:
10392     <?xml version="1.0" standalone="yes"?>
10393     <p a="&entity;"/>
10394     @@@c:erred: <[[xp|wf-entity-declared]]> { (2, 7)..(2, 14); }
10395     @@XMLTest:
10396     @@@QName: xp.attval.ger.entity.declared.standalone.2.test
10397     @@@DEnt:
10398     @@@@test:value:
10399     <?xml version="1.0" standalone="yes"?>
10400     <!DOCTYPE p []>
10401     <p a="&entity;"/>
10402     @@@c:erred: <[[xp|wf-entity-declared]]> { (3, 7)..(3, 14); }
10403     @@XMLTest:
10404     @@@QName: xp.attval.ger.entity.declared.standalone.3.test
10405     @@@DEnt:
10406     @@@@test:value:
10407     <?xml version="1.0" standalone="yes"?>
10408     <!DOCTYPE p [
10409     <!ENTITY % para "<!-- -->">
10410     %para;
10411     ]>
10412     <p a="&entity;"/>
10413     @@@c:erred: <[[xp|wf-entity-declared]]> { (6, 7)..(6, 14); }
10414     @@XMLTest:
10415     @@@QName: xp.attval.ger.entity.declared.standalone.-1.test
10416     @@@DEnt:
10417     @@@@test:value:
10418     <?xml version="1.0" standalone="no"?>
10419     <!DOCTYPE p [
10420     <!ENTITY % para "<!-- -->">
10421     %para;
10422     ]>
10423     <p a="&entity;"/>
10424     @@@test:domTree:
10425     document {
10426     document-type { }
10427     element {
10428     attribute {
10429     node-name: 'a';
10430     general-entity-reference {
10431     is-expanded: false;
10432     }
10433     }
10434     }
10435     }
10436     @@XMLTest:
10437     @@@QName: xp.attval.ger.entity.declared.standalone.-2.test
10438     @@@DEnt:
10439     @@@@test:value:
10440     <!DOCTYPE p [
10441     <!ENTITY % para "<!-- -->">
10442     %para;
10443     ]>
10444     <p a="&entity;"/>
10445     @@@test:domTree:
10446     document {
10447     document-type { }
10448     element {
10449     attribute {
10450     node-name: 'a';
10451     general-entity-reference {
10452     is-expanded: false;
10453     }
10454     }
10455     }
10456     }
10457     @@XMLTest:
10458     @@@QName: xp.attval.ger.entity.declared.standalone.4.test
10459     @@@DEnt:
10460     @@@@test:value:
10461     <?xml version="1.0" standalone="yes"?>
10462     <!DOCTYPE p [
10463     <!ENTITY % para SYSTEM "para">
10464     %para;
10465     ]>
10466     <p a="&entity;"/>
10467     @@@c:erred: <[[xp|wf-entity-declared]]> { (6, 7)..(6, 14); }
10468     @@XMLTest:
10469     @@@QName: xp.attval.ger.entity.declared.standalone.-3.test
10470     @@@DEnt:
10471     @@@@test:value:
10472     <?xml version="1.0" standalone="no"?>
10473     <!DOCTYPE p [
10474     <!ENTITY % para SYSTEM "para">
10475     %para;
10476     ]>
10477     <p a="&entity;"/>
10478     @@@test:domTree:
10479     document {
10480     document-type { }
10481     element {
10482     attribute {
10483     node-name: 'a';
10484     general-entity-reference {
10485     is-expanded: false;
10486     }
10487     }
10488     }
10489     }
10490     @@XMLTest:
10491     @@@QName: xp.attval.ger.entity.declared.standalone.-4.test
10492     @@@DEnt:
10493     @@@@test:value:
10494     <!DOCTYPE p [
10495     <!ENTITY % para SYSTEM "para">
10496     %para;
10497     ]>
10498     <p a="&entity;"/>
10499     @@@test:domTree:
10500     document {
10501     document-type { }
10502     element {
10503     attribute {
10504     node-name: 'a';
10505     general-entity-reference {
10506     is-expanded: false;
10507     }
10508     }
10509     }
10510     }
10511     @@XMLTest:
10512     @@@QName: xp.attval.ger.entity.declared.standalone.5.test
10513     @@@DEnt:
10514     @@@@test:value:
10515     <?xml version="1.0" standalone="yes"?>
10516     <!DOCTYPE p SYSTEM "dtd">
10517     <p a="&entity;"/>
10518     @@@c:erred: <[[xp|wf-entity-declared]]> { (3, 7)..(3, 14); }
10519     @@XMLTest:
10520     @@@QName: xp.attval.ger.entity.declared.standalone.-5.test
10521     @@@DEnt:
10522     @@@@test:value:
10523     <?xml version="1.0" standalone="no"?>
10524     <!DOCTYPE p SYSTEM "dtd">
10525     <p a="&entity;"/>
10526     @@@test:domTree:
10527     document {
10528     document-type { }
10529     element {
10530     attribute {
10531     node-name: 'a';
10532     general-entity-reference {
10533     is-expanded: false;
10534     }
10535     }
10536     }
10537     }
10538     @@XMLTest:
10539     @@@QName: xp.attval.ger.entity.declared.standalone.-6.test
10540     @@@DEnt:
10541     @@@@test:value:
10542     <!DOCTYPE p SYSTEM "dtd">
10543     <p a="&entity;"/>
10544     @@@test:domTree:
10545     document {
10546     document-type { }
10547     element {
10548     attribute {
10549     node-name: 'a';
10550     general-entity-reference {
10551     is-expanded: false;
10552     }
10553     }
10554     }
10555     }
10556    
10557 wakaba 1.21 @@XMLTest:
10558 wakaba 1.22 @@@QName: xp.reptxt.attval.ger.entity.declared.nopref.1.test
10559 wakaba 1.21 @@@DEnt:
10560     @@@@test:value:
10561     <!DOCTYPE p [
10562 wakaba 1.22 <!ENTITY c "&entity;">
10563 wakaba 1.21 ]>
10564 wakaba 1.22 <p a="&c;"/>
10565     @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
10566 wakaba 1.21 @@XMLTest:
10567 wakaba 1.22 @@@QName: xp.reptxt.attval.ger.entity.declared.nopref.2.test
10568 wakaba 1.21 @@@DEnt:
10569     @@@@test:value:
10570     <!DOCTYPE p [
10571     <!ENTITY other "aa">
10572     <!ENTITY % another "aa">
10573 wakaba 1.22 <!ENTITY c "&entity;">
10574 wakaba 1.21 ]>
10575 wakaba 1.22 <p a="&c;"/>
10576     @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
10577 wakaba 1.21 @@XMLTest:
10578 wakaba 1.22 @@@QName: xp.reptxt.attval.ger.entity.declared.nopref.3.test
10579 wakaba 1.21 @@@DEnt:
10580     @@@@test:value:
10581     <?xml version="1.0" standalone="yes"?>
10582     <!DOCTYPE p [
10583 wakaba 1.22 <!ENTITY c "&entity;">
10584 wakaba 1.21 ]>
10585 wakaba 1.22 <p a="&c;"/>
10586     @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
10587 wakaba 1.21 @@XMLTest:
10588 wakaba 1.22 @@@QName: xp.reptxt.attval.ger.entity.declared.nopref.4.test
10589 wakaba 1.21 @@@DEnt:
10590     @@@@test:value:
10591     <?xml version="1.0" standalone="no"?>
10592     <!DOCTYPE p [
10593 wakaba 1.22 <!ENTITY c "&entity;">
10594 wakaba 1.21 ]>
10595 wakaba 1.22 <p a="&c;"/>
10596     @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
10597 wakaba 1.21 @@XMLTest:
10598 wakaba 1.22 @@@QName: xp.reptxt.attval.ger.entity.declared.nopref.5.test
10599 wakaba 1.21 @@@DEnt:
10600     @@@@test:value:
10601     <?xml version="1.0" standalone="yes"?>
10602     <!DOCTYPE p [
10603     <!ENTITY other "aa">
10604     <!ENTITY % another "aa">
10605 wakaba 1.22 <!ENTITY c "&entity;">
10606 wakaba 1.21 ]>
10607 wakaba 1.22 <p a="&c;"/>
10608     @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
10609 wakaba 1.21 @@XMLTest:
10610 wakaba 1.22 @@@QName: xp.reptxt.attval.ger.entity.declared.nopref.6.test
10611 wakaba 1.21 @@@DEnt:
10612     @@@@test:value:
10613     <?xml version="1.0" standalone="no"?>
10614     <!DOCTYPE p [
10615     <!ENTITY other "aa">
10616     <!ENTITY % another "aa">
10617 wakaba 1.22 <!ENTITY c "&entity;">
10618 wakaba 1.21 ]>
10619 wakaba 1.22 <p a="&c;"/>
10620     @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
10621 wakaba 1.21 @@XMLTest:
10622 wakaba 1.22 @@@QName: xp.reptxt.attval.ger.entity.declared.nopref.-1.test
10623 wakaba 1.21 @@@DEnt:
10624     @@@@test:value:
10625     <!DOCTYPE p [
10626     <!ENTITY entity "value">
10627 wakaba 1.22 <!ENTITY c "&entity;">
10628 wakaba 1.21 ]>
10629 wakaba 1.22 <p a="&c;"/>
10630 wakaba 1.21 @@@test:domTree:
10631     document {
10632     document-type {
10633     general-entity {
10634     node-name: 'entity';
10635     text-content: 'value';
10636     }
10637 wakaba 1.22 general-entity {
10638     node-name: 'c';
10639     general-entity-reference {
10640     node-name: 'entity';
10641     text-content: 'value';
10642 wakaba 1.21 }
10643     }
10644     }
10645     element {
10646     attribute {
10647     node-name: 'a';
10648     general-entity-reference {
10649 wakaba 1.22 node-name: 'c';
10650     general-entity-reference {
10651     node-name: 'entity';
10652     text-content: 'value';
10653     }
10654 wakaba 1.21 }
10655     }
10656     }
10657     }
10658     @@XMLTest:
10659 wakaba 1.22 @@@QName: xp.reptxt.attval.ger.entity.declared.nopref.-2.test
10660 wakaba 1.21 @@@DEnt:
10661     @@@@test:value:
10662     <!DOCTYPE p [
10663     <!ENTITY entity "value">
10664     <!ENTITY another SYSTEM "another">
10665 wakaba 1.22 <!ENTITY c "&entity;">
10666 wakaba 1.21 ]>
10667 wakaba 1.22 <p a="&c;"/>
10668 wakaba 1.21 @@@test:domTree:
10669     document {
10670     document-type {
10671     general-entity {
10672     node-name: 'entity';
10673     text-content: 'value';
10674 wakaba 1.22 }
10675     general-entity {
10676     node-name: 'c';
10677     general-entity-reference {
10678     node-name: 'entity';
10679     text-content: 'value';
10680     }
10681 wakaba 1.21 }
10682     general-entity {
10683     node-name: 'another';
10684     public-id: null;
10685     system-id: 'another';
10686     has-replacement-tree: false;
10687     }
10688     }
10689     element {
10690     attribute {
10691     node-name: 'a';
10692     general-entity-reference {
10693 wakaba 1.22 node-name: 'c';
10694     general-entity-reference {
10695     node-name: 'entity';
10696     text-content: 'value';
10697     }
10698 wakaba 1.21 }
10699     }
10700     }
10701     }
10702     @@XMLTest:
10703 wakaba 1.22 @@@QName: xp.reptxt.attval.ger.entity.declared.standalone.2.test
10704 wakaba 1.21 @@@DEnt:
10705     @@@@test:value:
10706     <?xml version="1.0" standalone="yes"?>
10707     <!DOCTYPE p [
10708 wakaba 1.22 <!ENTITY c "&entity;">
10709 wakaba 1.21 ]>
10710 wakaba 1.22 <p a="&c;"/>
10711     @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
10712 wakaba 1.21 @@XMLTest:
10713 wakaba 1.22 @@@QName: xp.reptxt.attval.ger.entity.declared.standalone.3.test
10714 wakaba 1.21 @@@DEnt:
10715     @@@@test:value:
10716     <?xml version="1.0" standalone="yes"?>
10717     <!DOCTYPE p [
10718     <!ENTITY % para "<!-- -->">
10719     %para;
10720 wakaba 1.22 <!ENTITY c "&entity;">
10721 wakaba 1.21 ]>
10722 wakaba 1.22 <p a="&c;"/>
10723     @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
10724 wakaba 1.21 @@XMLTest:
10725 wakaba 1.22 @@@QName: xp.reptxt.attval.ger.entity.declared.standalone.-1.test
10726 wakaba 1.21 @@@DEnt:
10727     @@@@test:value:
10728 wakaba 1.22 <?xml version="1.0" standalone="no"?>
10729 wakaba 1.21 <!DOCTYPE p [
10730 wakaba 1.22 <!ENTITY c "&entity;">
10731 wakaba 1.21 <!ENTITY % para "<!-- -->">
10732     %para;
10733     ]>
10734 wakaba 1.22 <p a="&c;"/>
10735     @@@test:domTree:
10736     document {
10737     document-type {
10738     general-entity {
10739     node-name: 'c';
10740     general-entity-reference {
10741     node-name: 'entity';
10742     is-expanded: false;
10743     }
10744     }
10745     }
10746     element {
10747     attribute {
10748     node-name: 'a';
10749     general-entity-reference {
10750     node-name: 'c';
10751     general-entity-reference {
10752     node-name: 'entity';
10753     is-expanded: false;
10754     }
10755     }
10756     }
10757     }
10758     }
10759 wakaba 1.21 @@XMLTest:
10760 wakaba 1.22 @@@QName:
10761     xp.reptxt.attval.ger.entity.declared.standalone.-1.2.test
10762 wakaba 1.21 @@@DEnt:
10763     @@@@test:value:
10764     <?xml version="1.0" standalone="no"?>
10765     <!DOCTYPE p [
10766     <!ENTITY % para "<!-- -->">
10767     %para;
10768 wakaba 1.22 <!ENTITY c "&entity;">
10769 wakaba 1.21 ]>
10770 wakaba 1.22 <p a="&c;"/>
10771     @@@test:domTree:
10772     document {
10773     document-type { }
10774     element {
10775     attribute {
10776     node-name: 'a';
10777     general-entity-reference {
10778     node-name: 'c';
10779     is-expanded: false;
10780     }
10781     }
10782     }
10783     }
10784 wakaba 1.21 @@XMLTest:
10785 wakaba 1.22 @@@QName: xp.reptxt.attval.ger.entity.declared.standalone.-2.test
10786 wakaba 1.21 @@@DEnt:
10787     @@@@test:value:
10788     <!DOCTYPE p [
10789 wakaba 1.22 <!ENTITY c "&entity;">
10790     <!ENTITY % para "<!-- -->">
10791     %para;
10792     ]>
10793     <p a="&c;"/>
10794     @@@test:domTree:
10795     document {
10796     document-type { }
10797     element {
10798     attribute {
10799     node-name: 'a';
10800     general-entity-reference {
10801     node-name: 'c';
10802     is-expanded: true;
10803     general-entity-reference {
10804     node-name: 'entity';
10805     is-expanded: false;
10806     }
10807     }
10808     }
10809     }
10810     }
10811     @@XMLTest:
10812     @@@QName:
10813     xp.reptxt.attval.ger.entity.declared.standalone.-2.2.test
10814     @@@DEnt:
10815     @@@@test:value:
10816     <!DOCTYPE p [
10817     <!ENTITY % para "<!-- -->">
10818     %para;
10819     <!ENTITY c "&entity;">
10820     ]>
10821     <p a="&c;"/>
10822     @@@test:domTree:
10823     document {
10824     document-type { }
10825     element {
10826     attribute {
10827     node-name: 'a';
10828     general-entity-reference {
10829     node-name: 'c';
10830     is-expanded: false;
10831     }
10832     }
10833     }
10834     }
10835     @@XMLTest:
10836     @@@QName: xp.reptxt.attval.ger.entity.declared.standalone.4.test
10837     @@@DEnt:
10838     @@@@test:value:
10839     <?xml version="1.0" standalone="yes"?>
10840     <!DOCTYPE p [
10841     <!ENTITY % para SYSTEM "para">
10842     %para;
10843     <!ENTITY c "&entity;">
10844     ]>
10845     <p a="&c;"/>
10846     @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
10847     @@XMLTest:
10848     @@@QName: xp.reptxt.attval.ger.entity.declared.standalone.-3.test
10849     @@@DEnt:
10850     @@@@test:value:
10851     <?xml version="1.0" standalone="no"?>
10852     <!DOCTYPE p [
10853     <!ENTITY c "&entity;">
10854     <!ENTITY % para SYSTEM "para">
10855     %para;
10856     ]>
10857     <p a="&c;"/>
10858     @@@test:domTree:
10859     document {
10860     document-type { }
10861     element {
10862     attribute {
10863     node-name: 'a';
10864     general-entity-reference {
10865     node-name: 'c';
10866     is-expanded: true;
10867     general-entity-reference {
10868     node-name: 'entity';
10869     is-expanded: false;
10870     }
10871     }
10872     }
10873     }
10874     }
10875     @@XMLTest:
10876     @@@QName:
10877     xp.reptxt.attval.ger.entity.declared.standalone.-3.2.test
10878     @@@DEnt:
10879     @@@@test:value:
10880     <?xml version="1.0" standalone="no"?>
10881     <!DOCTYPE p [
10882     <!ENTITY % para SYSTEM "para">
10883     %para;
10884     <!ENTITY c "&entity;">
10885     ]>
10886     <p a="&c;"/>
10887     @@@test:domTree:
10888     document {
10889     document-type { }
10890     element {
10891     attribute {
10892     node-name: 'a';
10893     general-entity-reference {
10894     node-name: 'c';
10895     is-expanded: false;
10896     }
10897     }
10898     }
10899     }
10900     @@XMLTest:
10901     @@@QName: xp.reptxt.attval.ger.entity.declared.standalone.-4.test
10902     @@@DEnt:
10903     @@@@test:value:
10904     <!DOCTYPE p [
10905     <!ENTITY c "&entity;">
10906     <!ENTITY % para SYSTEM "para">
10907     %para;
10908     ]>
10909     <p a="&c;"/>
10910     @@@test:domTree:
10911     document {
10912     document-type { }
10913     element {
10914     attribute {
10915     node-name: 'a';
10916     general-entity-reference {
10917     node-name: 'c';
10918     is-expanded: true;
10919     general-entity-reference {
10920     node-name: 'entity';
10921     is-expanded: false;
10922     }
10923     }
10924     }
10925     }
10926     }
10927     @@XMLTest:
10928     @@@QName:
10929     xp.reptxt.attval.ger.entity.declared.standalone.-4.2.test
10930     @@@DEnt:
10931     @@@@test:value:
10932     <!DOCTYPE p [
10933     <!ENTITY % para SYSTEM "para">
10934     %para;
10935     <!ENTITY c "&entity;">
10936     ]>
10937     <p a="&c;"/>
10938     @@@test:domTree:
10939     document {
10940     document-type { }
10941     element {
10942     attribute {
10943     node-name: 'a';
10944     general-entity-reference {
10945     node-name: 'c';
10946     is-expanded: false;
10947     }
10948     }
10949     }
10950     }
10951     @@XMLTest:
10952     @@@QName: xp.reptxt.attval.ger.entity.declared.standalone.5.test
10953     @@@DEnt:
10954     @@@@test:value:
10955     <?xml version="1.0" standalone="yes"?>
10956     <!DOCTYPE p SYSTEM "dtd" [
10957     <!ENTITY c "&entity;">
10958     ]>
10959     <p a="&c;"/>
10960     @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
10961     @@XMLTest:
10962     @@@QName: xp.reptxt.attval.ger.entity.declared.standalone.-5.test
10963     @@@DEnt:
10964     @@@@test:value:
10965     <?xml version="1.0" standalone="no"?>
10966     <!DOCTYPE p SYSTEM "dtd" [
10967     <!ENTITY c "&entity;">
10968     ]>
10969     <p a="&c;"/>
10970     @@@test:domTree:
10971     document {
10972     document-type { }
10973     element {
10974     attribute {
10975     node-name: 'a';
10976     general-entity-reference {
10977     node-name: 'c';
10978     is-expanded: true;
10979     general-entity-reference {
10980     node-name: 'entity';
10981     is-expanded: false;
10982     }
10983     }
10984     }
10985     }
10986     }
10987     @@XMLTest:
10988     @@@QName: xp.reptxt.attval.ger.entity.declared.standalone.-6.test
10989     @@@DEnt:
10990     @@@@test:value:
10991     <!DOCTYPE p SYSTEM "dtd" [<!ENTITY c "&entity;">]>
10992     <p a="&c;"/>
10993     @@@test:domTree:
10994     document {
10995     document-type { }
10996     element {
10997     attribute {
10998     node-name: 'a';
10999     general-entity-reference {
11000     node-name: 'c';
11001     is-expanded: true;
11002     general-entity-reference {
11003     node-name: 'entity';
11004     is-expanded: false;
11005     }
11006     }
11007     }
11008     }
11009     }
11010    
11011     @@XMLTest:
11012     @@@QName: xp.attlist.dup.entity.declared.1.test
11013     @@@DEnt:
11014     @@@@test:value:
11015     <!DOCTYPE p [
11016     <!ATTLIST p a CDATA "no-entity">
11017     <!ATTLIST p a CDATA "&entity;">
11018     ]>
11019     <p/>
11020     @@@c:erred: <[[xp|wf-entity-declared]]> { (3, 21)..(3, 29); }
11021     @@XMLTest:
11022     @@@QName: xp.attlist.dup.entity.declared.2.test
11023     @@@DEnt:
11024     @@@@test:value:
11025     <!DOCTYPE p [
11026     <!ATTLIST p a CDATA "no-entity"
11027     a CDATA "&entity;">
11028     ]>
11029     <p/>
11030     @@@c:erred: <[[xp|wf-entity-declared]]> { (3, 21)..(3, 29); }
11031     @@XMLTest:
11032     @@@QName: xp.attlist.unused.entity.declared.1.test
11033     @@@DEnt:
11034     @@@@test:value:
11035     <!DOCTYPE p [
11036     <!ATTLIST q a CDATA "&entity;">
11037     ]>
11038     <p/>
11039     @@@c:erred: <[[xp|wf-entity-declared]]> { (2, 21)..(2, 29); }
11040     @@XMLTest:
11041     @@@QName: xp.attlist.unused.entity.declared.2.test
11042     @@@DEnt:
11043     @@@@test:value:
11044     <!DOCTYPE p [
11045     <!ATTLIST p a CDATA "&entity;">
11046     ]>
11047     <p a="bb"/>
11048     @@@c:erred: <[[xp|wf-entity-declared]]> { (2, 21)..(2, 29); }
11049    
11050     @@XMLTest:
11051     @@@QName: xp.reptxt.attlist.attval.ger.entity.declared.nopref.1.test
11052     @@@DEnt:
11053     @@@@test:value:
11054     <!DOCTYPE p [
11055     <!ENTITY c "&entity;">
11056     <!ATTLIST p a CDATA "&c;">
11057     ]>
11058     <p/>
11059     @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
11060     @@XMLTest:
11061     @@@QName: xp.reptxt.attlist.attval.ger.entity.declared.nopref.2.test
11062     @@@DEnt:
11063     @@@@test:value:
11064     <!DOCTYPE p [
11065     <!ENTITY other "aa">
11066     <!ENTITY % another "aa">
11067     <!ENTITY c "&entity;">
11068     <!ATTLIST p a CDATA "&c;">
11069     ]>
11070     <p/>
11071     @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
11072     @@XMLTest:
11073     @@@QName: xp.reptxt.attlist.attval.ger.entity.declared.nopref.3.test
11074     @@@DEnt:
11075     @@@@test:value:
11076     <?xml version="1.0" standalone="yes"?>
11077     <!DOCTYPE p [
11078     <!ENTITY c "&entity;">
11079     <!ATTLIST p a CDATA "&c;">
11080     ]>
11081     <p/>
11082     @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
11083     @@XMLTest:
11084     @@@QName: xp.reptxt.attlist.attval.ger.entity.declared.nopref.4.test
11085     @@@DEnt:
11086     @@@@test:value:
11087     <?xml version="1.0" standalone="no"?>
11088     <!DOCTYPE p [
11089     <!ENTITY c "&entity;">
11090     <!ATTLIST p a CDATA "&c;">
11091     ]>
11092     <p/>
11093     @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
11094     @@XMLTest:
11095     @@@QName: xp.reptxt.attlist.attval.ger.entity.declared.nopref.5.test
11096     @@@DEnt:
11097     @@@@test:value:
11098     <?xml version="1.0" standalone="yes"?>
11099     <!DOCTYPE p [
11100     <!ENTITY other "aa">
11101     <!ENTITY % another "aa">
11102     <!ENTITY c "&entity;">
11103     <!ATTLIST p a CDATA "&c;">
11104     ]>
11105     <p/>
11106     @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
11107     @@XMLTest:
11108     @@@QName: xp.reptxt.attlist.attval.ger.entity.declared.nopref.6.test
11109     @@@DEnt:
11110     @@@@test:value:
11111     <?xml version="1.0" standalone="no"?>
11112     <!DOCTYPE p [
11113     <!ENTITY other "aa">
11114     <!ENTITY % another "aa">
11115     <!ENTITY c "&entity;">
11116     <!ATTLIST p a CDATA "&c;">
11117     ]>
11118     <p/>
11119     @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
11120     @@XMLTest:
11121     @@@QName: xp.reptxt.attlist.attval.ger.entity.declared.nopref.-1.test
11122     @@@DEnt:
11123     @@@@test:value:
11124     <!DOCTYPE p [
11125     <!ENTITY entity "value">
11126     <!ENTITY c "&entity;">
11127     <!ATTLIST p a CDATA "&c;">
11128     ]>
11129     <p/>
11130     @@@test:domTree:
11131     document {
11132     document-type {
11133     general-entity {
11134     node-name: 'entity';
11135     text-content: 'value';
11136     }
11137     general-entity {
11138     node-name: 'c';
11139     general-entity-reference {
11140     node-name: 'entity';
11141     is-expanded: true;
11142     text-content: 'value';
11143     }
11144     }
11145     element-type-definition {
11146     node-name: 'p';
11147     attribute-definition {
11148     node-name: 'a';
11149     general-entity-reference {
11150     node-name: 'c';
11151     is-expanded: true;
11152     general-entity-reference {
11153     node-name: 'entity';
11154     is-expanded: true;
11155     text-content: 'value';
11156     }
11157     }
11158     }
11159     }
11160     }
11161     element {
11162     attribute {
11163     node-name: 'a';
11164     specified: false;
11165     general-entity-reference {
11166     node-name: 'c';
11167     general-entity-reference {
11168     node-name: 'entity';
11169     text-content: 'value';
11170     }
11171     }
11172     }
11173     }
11174     }
11175     @@XMLTest:
11176     @@@QName: xp.reptxt.attlist.attval.ger.entity.declared.nopref.-2.test
11177     @@@DEnt:
11178     @@@@test:value:
11179     <!DOCTYPE p [
11180     <!ENTITY entity "value">
11181     <!ENTITY another SYSTEM "another">
11182     <!ENTITY c "&entity;">
11183     <!ATTLIST p a CDATA "&c;">
11184     ]>
11185     <p/>
11186     @@@test:domTree:
11187     document {
11188     document-type {
11189     general-entity {
11190     node-name: 'entity';
11191     text-content: 'value';
11192     }
11193     general-entity {
11194     node-name: 'c';
11195     general-entity-reference {
11196     node-name: 'entity';
11197     text-content: 'value';
11198     }
11199     }
11200     general-entity {
11201     node-name: 'another';
11202     public-id: null;
11203     system-id: 'another';
11204     has-replacement-tree: false;
11205     }
11206     element-type-definition {
11207     node-name: 'p';
11208     attribute-definition {
11209     node-name: 'a';
11210     general-entity-reference {
11211     node-name: 'c';
11212     is-expanded: true;
11213     general-entity-reference {
11214     node-name: 'entity';
11215     is-expanded: true;
11216     text-content: 'value';
11217     }
11218     }
11219     }
11220     }
11221     }
11222     element {
11223     attribute {
11224     node-name: 'a';
11225     specified: false;
11226     general-entity-reference {
11227     node-name: 'c';
11228     general-entity-reference {
11229     node-name: 'entity';
11230     text-content: 'value';
11231     }
11232     }
11233     }
11234     }
11235     }
11236     @@XMLTest:
11237     @@@QName: xp.reptxt.attlist.attval.ger.entity.declared.standalone.2.test
11238     @@@DEnt:
11239     @@@@test:value:
11240     <?xml version="1.0" standalone="yes"?>
11241     <!DOCTYPE p [
11242     <!ENTITY c "&entity;">
11243     <!ATTLIST p a CDATA "&c;">
11244     ]>
11245     <p/>
11246     @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
11247     @@XMLTest:
11248     @@@QName: xp.reptxt.attlist.attval.ger.entity.declared.standalone.3.test
11249     @@@DEnt:
11250     @@@@test:value:
11251     <?xml version="1.0" standalone="yes"?>
11252     <!DOCTYPE p [
11253     <!ENTITY % para "<!-- -->">
11254     %para;
11255     <!ENTITY c "&entity;">
11256     <!ATTLIST p a CDATA "&c;">
11257     ]>
11258     <p/>
11259     @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
11260     @@XMLTest:
11261     @@@QName: xp.reptxt.attlist.attval.ger.entity.declared.standalone.-1.test
11262     @@@DEnt:
11263     @@@@test:value:
11264     <?xml version="1.0" standalone="no"?>
11265     <!DOCTYPE p [
11266     <!ENTITY c "&entity;">
11267     <!ATTLIST p a CDATA "&c;">
11268     <!ENTITY % para "<!-- -->">
11269     %para;
11270     ]>
11271     <p/>
11272     @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
11273     @@XMLTest:
11274     @@@QName:
11275     xp.reptxt.attlist.attval.ger.entity.declared.standalone.-1.2.test
11276     @@@DEnt:
11277     @@@@test:value:
11278     <?xml version="1.0" standalone="no"?>
11279     <!DOCTYPE p [
11280     <!ENTITY % para "<!-- -->">
11281     %para;
11282     <!ENTITY c "&entity;">
11283     <!ATTLIST p a CDATA "&c;">
11284     ]>
11285     <p g="h"/>
11286     @@@test:domTree:
11287     document {
11288     document-type { }
11289     element {
11290     attribute {
11291     node-name: 'g';
11292     text-content: 'h';
11293     }
11294     }
11295     }
11296     @@XMLTest:
11297     @@@QName: xp.reptxt.attlist.attval.ger.entity.declared.standalone.-2.test
11298     @@@DEnt:
11299     @@@@test:value:
11300     <!DOCTYPE p [
11301     <!ENTITY c "&entity;">
11302     <!ATTLIST p a CDATA "&c;">
11303     <!ENTITY % para "<!-- -->">
11304     %para;
11305     ]>
11306     <p/>
11307     @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
11308     @@XMLTest:
11309     @@@QName:
11310     xp.reptxt.attlist.attval.ger.entity.declared.standalone.-2.2.test
11311     @@@DEnt:
11312     @@@@test:value:
11313     <!DOCTYPE p [
11314     <!ENTITY % para "<!-- -->">
11315     %para;
11316     <!ENTITY c "&entity;">
11317     <!ATTLIST p a CDATA "&c;">
11318     ]>
11319     <p g="h"/>
11320     @@@test:domTree:
11321     document {
11322     document-type { }
11323     element {
11324     attribute {
11325     node-name: 'g';
11326     text-content: 'h';
11327     }
11328     }
11329     }
11330     @@XMLTest:
11331     @@@QName: xp.reptxt.attlist.attval.ger.entity.declared.standalone.4.test
11332     @@@DEnt:
11333     @@@@test:value:
11334     <?xml version="1.0" standalone="yes"?>
11335     <!DOCTYPE p [
11336     <!ENTITY % para SYSTEM "para">
11337     %para;
11338     <!ENTITY c "&entity;">
11339     <!ATTLIST p a CDATA "&c;">
11340     ]>
11341     <p/>
11342     @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
11343     @@XMLTest:
11344     @@@QName: xp.reptxt.attlist.attval.ger.entity.declared.standalone.-3.test
11345     @@@DEnt:
11346     @@@@test:value:
11347     <?xml version="1.0" standalone="no"?>
11348     <!DOCTYPE p [
11349     <!ENTITY c "&entity;">
11350     <!ATTLIST p a CDATA "&c;">
11351     <!ENTITY % para SYSTEM "para">
11352     %para;
11353     ]>
11354     <p/>
11355     @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
11356     @@XMLTest:
11357     @@@QName:
11358     xp.reptxt.attlist.attval.ger.entity.declared.standalone.-3.2.test
11359     @@@DEnt:
11360     @@@@test:value:
11361     <?xml version="1.0" standalone="no"?>
11362     <!DOCTYPE p [
11363     <!ENTITY % para SYSTEM "para">
11364     %para;
11365     <!ENTITY c "&entity;">
11366     <!ATTLIST p a CDATA "&c;">
11367     ]>
11368     <p g="h"/>
11369     @@@test:domTree:
11370     document {
11371     document-type { }
11372     element {
11373     attribute {
11374     node-name: 'g';
11375     text-content: 'h';
11376     }
11377     }
11378     }
11379     @@XMLTest:
11380     @@@QName: xp.reptxt.attlist.attval.ger.entity.declared.standalone.-4.test
11381     @@@DEnt:
11382     @@@@test:value:
11383     <!DOCTYPE p [
11384     <!ENTITY c "&entity;">
11385     <!ATTLIST p a CDATA "&c;">
11386     <!ENTITY % para SYSTEM "para">
11387     %para;
11388     ]>
11389     <p/>
11390     @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
11391     @@XMLTest:
11392     @@@QName:
11393     xp.reptxt.attlist.attval.ger.entity.declared.standalone.-4.2.test
11394     @@@DEnt:
11395     @@@@test:value:
11396     <!DOCTYPE p [
11397     <!ENTITY % para SYSTEM "para">
11398     %para;
11399     <!ENTITY c "&entity;">
11400     <!ATTLIST p a CDATA "&c;">
11401     ]>
11402     <p g="h"/>
11403     @@@test:domTree:
11404     document {
11405     document-type { }
11406     element {
11407     attribute {
11408     node-name: 'g';
11409     text-content: 'h';
11410     }
11411     }
11412     }
11413     @@XMLTest:
11414     @@@QName: xp.reptxt.attlist.attval.ger.entity.declared.standalone.5.test
11415     @@@DEnt:
11416     @@@@test:value:
11417     <?xml version="1.0" standalone="yes"?>
11418     <!DOCTYPE p SYSTEM "dtd" [
11419     <!ENTITY c "&entity;">
11420     <!ATTLIST p a CDATA "&c;">
11421     ]>
11422     <p/>
11423     @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
11424     @@XMLTest:
11425     @@@QName: xp.reptxt.attlist.attval.ger.entity.declared.standalone.-5.test
11426     @@@DEnt:
11427     @@@@test:value:
11428     <?xml version="1.0" standalone="no"?>
11429     <!DOCTYPE p SYSTEM "dtd" [
11430     <!ENTITY c "&entity;">
11431     <!ATTLIST p a CDATA "&c;">
11432     ]>
11433     <p/>
11434     @@@test:domTree:
11435     document {
11436     document-type { }
11437     element {
11438     attribute {
11439     node-name: 'a';
11440     specified: false;
11441     general-entity-reference {
11442     node-name: 'c';
11443     is-expanded: true;
11444     general-entity-reference {
11445     node-name: 'entity';
11446     is-expanded: false;
11447     }
11448     }
11449     }
11450     }
11451     }
11452     @@XMLTest:
11453     @@@QName: xp.reptxt.attlist.attval.ger.entity.declared.standalone.-6.test
11454     @@@DEnt:
11455     @@@@test:value:
11456     <!DOCTYPE p SYSTEM "dtd" [<!ENTITY c "&entity;">
11457     <!ATTLIST p a CDATA "&c;">
11458     ]>
11459     <p/>
11460     @@@test:domTree:
11461     document {
11462     document-type { }
11463     element {
11464     attribute {
11465     node-name: 'a';
11466     specified: false;
11467     general-entity-reference {
11468     node-name: 'c';
11469     is-expanded: true;
11470     general-entity-reference {
11471     node-name: 'entity';
11472     is-expanded: false;
11473     }
11474     }
11475     }
11476     }
11477     }
11478    
11479     @@XMLTest:
11480     @@@QName: xp.attlist.attval.ger.entity.declared.nopref.1.test
11481     @@@DEnt:
11482     @@@@test:value:
11483     <!DOCTYPE p [
11484     <!ATTLIST p a CDATA "&entity;">
11485     ]>
11486     <p/>
11487     @@@c:erred: <[[xp|wf-entity-declared]]> { (2, 22)..(2, 29); }
11488     @@XMLTest:
11489     @@@QName: xp.attlist.attval.ger.entity.declared.nopref.2.test
11490     @@@DEnt:
11491     @@@@test:value:
11492     <!DOCTYPE p [
11493     <!ENTITY other "aa">
11494     <!ENTITY % another "aa">
11495     <!ATTLIST p a CDATA "&entity;">
11496     ]>
11497     <p/>
11498     @@@c:erred: <[[xp|wf-entity-declared]]> { (4, 22)..(4, 29); }
11499     @@XMLTest:
11500     @@@QName: xp.attlist.attval.ger.entity.declared.nopref.3.test
11501     @@@DEnt:
11502     @@@@test:value:
11503     <?xml version="1.0" standalone="yes"?>
11504     <!DOCTYPE p [
11505     <!ATTLIST p a CDATA "&entity;">
11506     ]>
11507     <p/>
11508     @@@c:erred: <[[xp|wf-entity-declared]]> { (3, 22)..(3, 29); }
11509     @@XMLTest:
11510     @@@QName: xp.attlist.attval.ger.entity.declared.nopref.4.test
11511     @@@DEnt:
11512     @@@@test:value:
11513     <?xml version="1.0" standalone="no"?>
11514     <!DOCTYPE p [
11515     <!ATTLIST p a CDATA "&entity;">
11516     ]>
11517     <p/>
11518     @@@c:erred: <[[xp|wf-entity-declared]]> { (3, 22)..(3, 29); }
11519     @@XMLTest:
11520     @@@QName: xp.attlist.attval.ger.entity.declared.nopref.5.test
11521     @@@DEnt:
11522     @@@@test:value:
11523     <?xml version="1.0" standalone="yes"?>
11524     <!DOCTYPE p [
11525     <!ENTITY other "aa">
11526     <!ENTITY % another "aa">
11527     <!ATTLIST p a CDATA "&entity;">
11528     ]>
11529     <p/>
11530     @@@c:erred: <[[xp|wf-entity-declared]]> { (5, 22)..(5, 29); }
11531     @@XMLTest:
11532     @@@QName: xp.attlist.attval.ger.entity.declared.nopref.6.test
11533     @@@DEnt:
11534     @@@@test:value:
11535     <?xml version="1.0" standalone="no"?>
11536     <!DOCTYPE p [
11537     <!ENTITY other "aa">
11538     <!ENTITY % another "aa">
11539     <!ATTLIST p a CDATA "&entity;">
11540     ]>
11541     <p/>
11542     @@@c:erred: <[[xp|wf-entity-declared]]> { (5, 22)..(5, 29); }
11543     @@XMLTest:
11544     @@@QName: xp.attlist.attval.ger.entity.declared.nopref.-1.test
11545     @@@DEnt:
11546     @@@@test:value:
11547     <!DOCTYPE p [
11548     <!ENTITY entity "value">
11549     <!ATTLIST p a CDATA "&entity;">
11550     ]>
11551     <p/>
11552     @@@test:domTree:
11553     document {
11554     document-type {
11555     general-entity {
11556     node-name: 'entity';
11557     text-content: 'value';
11558     }
11559     element-type-definition {
11560     node-name: 'p';
11561     attribute-definition {
11562     node-name: 'a';
11563     general-entity-reference {
11564     node-name: 'entity';
11565     is-expanded: true;
11566     text-content: 'value';
11567     }
11568     }
11569     }
11570     }
11571     element {
11572     attribute {
11573     node-name: 'a';
11574     specified: false;
11575     general-entity-reference {
11576     node-name: 'entity';
11577     is-expanded: true;
11578     text-content: 'value';
11579     }
11580     }
11581     }
11582     }
11583     @@XMLTest:
11584     @@@QName: xp.attlist.attval.ger.entity.declared.nopref.-1.2.test
11585     @@@DEnt:
11586     @@@@test:value:
11587     <!DOCTYPE p [
11588     <!ATTLIST p a CDATA "&entity;">
11589     <!ENTITY entity "value">
11590     ]>
11591     <p/>
11592     @@@c:erred: <[[xp|wf-entity-declared]]> { (2, 22)..(2, 29); }
11593     @@XMLTest:
11594     @@@QName: xp.attlist.attval.ger.entity.declared.nopref.-2.test
11595     @@@DEnt:
11596     @@@@test:value:
11597     <!DOCTYPE p [
11598     <!ENTITY entity "value">
11599     <!ENTITY another SYSTEM "another">
11600     <!ATTLIST p a CDATA "&entity;">
11601     ]>
11602     <p/>
11603     @@@test:domTree:
11604     document {
11605     document-type {
11606     element-type-definition {
11607     node-name: 'p';
11608     attribute-definition {
11609     node-name: 'a';
11610     general-entity-reference {
11611     node-name: 'entity';
11612     is-expanded: true;
11613     text-content: 'value';
11614     }
11615     }
11616     }
11617     general-entity {
11618     node-name: 'entity';
11619     text-content: 'value';
11620     has-replacement-tree: true;
11621     }
11622     general-entity {
11623     node-name: 'another';
11624     public-id: null;
11625     system-id: 'another';
11626     has-replacement-tree: false;
11627     }
11628     }
11629     element {
11630     attribute {
11631     node-name: 'a';
11632     specified: false;
11633     general-entity-reference {
11634     node-name: 'entity';
11635     is-expanded: true;
11636     text-content: 'value';
11637     }
11638     }
11639     }
11640     }
11641     @@XMLTest:
11642     @@@QName: xp.attlist.attval.ger.entity.declared.nopref.-2.2.test
11643     @@@DEnt:
11644     @@@@test:value:
11645     <!DOCTYPE p [
11646     <!ATTLIST p a CDATA "&entity;">
11647     <!ENTITY entity "value">
11648     <!ENTITY another SYSTEM "another">
11649     ]>
11650     <p/>
11651     @@@c:erred: <[[xp|wf-entity-declared]]> { (2, 22)..(2, 29); }
11652     @@XMLTest:
11653     @@@QName: xp.attlist.attval.ger.entity.declared.standalone.2.test
11654     @@@DEnt:
11655     @@@@test:value:
11656     <?xml version="1.0" standalone="yes"?>
11657     <!DOCTYPE p [
11658     <!ATTLIST p a CDATA "&entity;">
11659     ]>
11660     <p/>
11661     @@@c:erred: <[[xp|wf-entity-declared]]> { (3, 22)..(3, 29); }
11662     @@XMLTest:
11663     @@@QName: xp.attlist.attval.ger.entity.declared.standalone.3.test
11664     @@@DEnt:
11665     @@@@test:value:
11666     <?xml version="1.0" standalone="yes"?>
11667     <!DOCTYPE p [
11668     <!ATTLIST p a CDATA "&entity;">
11669     <!ENTITY % para "<!-- -->">
11670     %para;
11671     ]>
11672     <p/>
11673     @@@c:erred: <[[xp|wf-entity-declared]]> { (3, 22)..(3, 29); }
11674     @@XMLTest:
11675     @@@QName: xp.attlist.attval.ger.entity.declared.standalone.3.2.test
11676     @@@DEnt:
11677     @@@@test:value:
11678     <?xml version="1.0" standalone="yes"?>
11679     <!DOCTYPE p [
11680     <!ENTITY % para "<!-- -->">
11681     %para;
11682     <!ATTLIST p a CDATA "&entity;">
11683     ]>
11684     <p/>
11685     @@@c:erred: <[[xp|wf-entity-declared]]> { (5, 22)..(5, 29); }
11686     @@@enImplNote:
11687     The <XML::ATTLIST> declaration is processed since
11688     it is a <XA::standalone> document.
11689     @@XMLTest:
11690     @@@QName: xp.attlist.attval.ger.entity.declared.standalone.-1.test
11691     @@@DEnt:
11692     @@@@test:value:
11693     <?xml version="1.0" standalone="no"?>
11694     <!DOCTYPE p [
11695     <!ATTLIST p a CDATA "&entity;">
11696     <!ENTITY % para "<!-- -->">
11697     %para;
11698     ]>
11699     <p/>
11700     @@@c:erred: <[[xp|wf-entity-declared]]> { (3, 22)..(3, 29); }
11701     @@XMLTest:
11702     @@@QName: xp.attlist.attval.ger.entity.declared.standalone.-1.2.test
11703     @@@DEnt:
11704     @@@@test:value:
11705     <?xml version="1.0" standalone="no"?>
11706     <!DOCTYPE p [
11707 wakaba 1.25 <!ATTLIST p b CDATA #IMPLIED>
11708 wakaba 1.21 <!ENTITY % para "<!-- -->">
11709     %para;
11710     <!ATTLIST p a CDATA "&entity;">
11711     ]>
11712     <p c="d"/>
11713 wakaba 1.25 @@@c:erred:
11714     <[[xp|warning-attribute-definition-not-processed]]> { (6, 13)..(6, 30); }
11715 wakaba 1.21 @@@test:domTree:
11716     document {
11717     document-type {
11718     element-type-definition {
11719 wakaba 1.25 node-name: 'p';
11720 wakaba 1.21 attribute-definition {
11721     node-name: 'b';
11722     }
11723     }
11724     }
11725     element {
11726     attribute {
11727     node-name: 'c';
11728     text-content: 'd';
11729     }
11730     }
11731     }
11732     @@@enImplNote:
11733     The second <XML::ATTLIST> declaration is read but not processed
11734     and its <XML::&entity;> general entity reference violates
11735     entity declared validty constraint rather than well-formedness
11736     constraint.
11737     @@XMLTest:
11738     @@@QName: xp.attlist.attval.ger.entity.declared.standalone.-2.test
11739     @@@DEnt:
11740     @@@@test:value:
11741     <!DOCTYPE p [
11742     <!ATTLIST p a CDATA "&entity;">
11743     <!ENTITY % para "<!-- -->">
11744     %para;
11745     ]>
11746     <p/>
11747     @@@c:erred: <[[xp|wf-entity-declared]]> { (2, 22)..(2, 29); }
11748     @@XMLTest:
11749     @@@QName: xp.attlist.attval.ger.entity.declared.standalone.-2.2.test
11750     @@@DEnt:
11751     @@@@test:value:
11752     <!DOCTYPE p [
11753 wakaba 1.25 <!ATTLIST p b CDATA #IMPLIED>
11754 wakaba 1.21 <!ENTITY % para "<!-- -->">
11755     %para;
11756     <!ATTLIST p a CDATA "&entity;">
11757     ]>
11758     <p c="d"/>
11759 wakaba 1.25 @@@c:erred:
11760     <[[xp|warning-attribute-definition-not-processed]]> { (5, 13)..(5, 30); }
11761 wakaba 1.21 @@@test:domTree:
11762     document {
11763     document-type {
11764     element-type-definition {
11765 wakaba 1.25 node-name: 'p';
11766 wakaba 1.21 attribute-definition {
11767     node-name: 'b';
11768     }
11769     }
11770     }
11771     element {
11772     attribute {
11773     node-name: 'c';
11774     text-content: 'd';
11775     }
11776     }
11777     }
11778     @@XMLTest:
11779     @@@QName: xp.attlist.attval.ger.entity.declared.standalone.4.test
11780     @@@DEnt:
11781     @@@@test:value:
11782     <?xml version="1.0" standalone="yes"?>
11783     <!DOCTYPE p [
11784     <!ATTLIST p a CDATA "&entity;">
11785     <!ENTITY % para SYSTEM "p">
11786     %para;
11787     ]>
11788     <p/>
11789     @@@c:erred: <[[xp|wf-entity-declared]]> { (3, 22)..(3, 29); }
11790     @@XMLTest:
11791     @@@QName: xp.attlist.attval.ger.entity.declared.standalone.4.2.test
11792     @@@DEnt:
11793     @@@@test:value:
11794     <?xml version="1.0" standalone="yes"?>
11795     <!DOCTYPE p [
11796     <!ENTITY % para SYSTEM "p">
11797     %para;
11798     <!ATTLIST p a CDATA "&entity;">
11799     ]>
11800     <p/>
11801     @@@c:erred: <[[xp|wf-entity-declared]]> { (5, 22)..(5, 29); }
11802     @@@enImplNote:
11803     The <XML::ATTLIST> declaration is processed since
11804     it is a <XA::standalone> document.
11805     @@XMLTest:
11806     @@@QName: xp.attlist.attval.ger.entity.declared.standalone.-3.test
11807     @@@DEnt:
11808     @@@@test:value:
11809     <?xml version="1.0" standalone="no"?>
11810     <!DOCTYPE p [
11811     <!ATTLIST p a CDATA "&entity;">
11812     <!ENTITY % para SYSTEM "p">
11813     %para;
11814     ]>
11815     <p/>
11816     @@@c:erred: <[[xp|wf-entity-declared]]> { (3, 22)..(3, 29); }
11817     @@@enImplNote:
11818     Is this well-formed? It has a parameter entity reference,
11819     therefore, it does not violates Entity Declared WFC, isn't it?
11820    
11821     Note that Firefox 1.5 and Opera 9 TP1 reports that this document has a
11822     fatal error (also note that they does not support unexpanded).
11823    
11824     See also:
11825     <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>
11826     @@XMLTest:
11827     @@@QName: xp.attlist.attval.ger.entity.declared.standalone.-3.2.test
11828     @@@DEnt:
11829     @@@@test:value:
11830     <?xml version="1.0" standalone="no"?>
11831     <!DOCTYPE p [
11832 wakaba 1.25 <!ATTLIST p b CDATA #IMPLIED>
11833 wakaba 1.21 <!ENTITY % para SYSTEM "p">
11834     %para;
11835     <!ATTLIST p a CDATA "&entity;">
11836     ]>
11837     <p c="d"/>
11838 wakaba 1.25 @@@c:erred:
11839     <[[xp|warning-attribute-definition-not-processed]]> { (6, 13)..(6, 30); }
11840 wakaba 1.21 @@@test:domTree:
11841     document {
11842     document-type {
11843     element-type-definition {
11844 wakaba 1.25 node-name: 'p';
11845 wakaba 1.21 attribute-definition {
11846     node-name: 'b';
11847     }
11848     }
11849     }
11850     element {
11851     attribute {
11852     node-name: 'c';
11853     text-content: 'd';
11854     }
11855     }
11856     }
11857     @@@enImplNote:
11858     The second <XML::ATTLIST> declaration is read but not processed
11859     and its <XML::&entity;> general entity reference violates
11860     entity declared validty constraint rather than well-formedness
11861     constraint.
11862     @@XMLTest:
11863     @@@QName: xp.attlist.attval.ger.entity.declared.standalone.-4.test
11864     @@@DEnt:
11865     @@@@test:value:
11866     <!DOCTYPE p [
11867     <!ATTLIST p a CDATA "&entity;">
11868     <!ENTITY % para SYSTEM "p">
11869     %para;
11870     ]>
11871     <p/>
11872     @@@c:erred: <[[xp|wf-entity-declared]]> { (2, 22)..(2, 29); }
11873     @@XMLTest:
11874     @@@QName: xp.attlist.attval.ger.entity.declared.standalone.-4.2.test
11875     @@@DEnt:
11876     @@@@test:value:
11877     <!DOCTYPE p [
11878 wakaba 1.25 <!ATTLIST p b CDATA #IMPLIED>
11879 wakaba 1.21 <!ENTITY % para SYSTEM "p">
11880     %para;
11881     <!ATTLIST p a CDATA "&entity;">
11882     ]>
11883     <p c="d"/>
11884 wakaba 1.25 @@@c:erred:
11885     <[[xp|warning-attribute-definition-not-processed]]> { (5, 13)..(5, 30); }
11886 wakaba 1.21 @@@test:domTree:
11887     document {
11888     document-type {
11889     element-type-definition {
11890 wakaba 1.25 node-name: 'p';
11891 wakaba 1.21 attribute-definition {
11892     node-name: 'b';
11893     }
11894     }
11895     }
11896     element {
11897     attribute {
11898     node-name: 'c';
11899     text-content: 'd';
11900     }
11901     }
11902     }
11903     @@XMLTest:
11904     @@@QName: xp.attlist.attval.ger.entity.declared.standalone.5.test
11905     @@@DEnt:
11906     @@@@test:value:
11907     <?xml version="1.0" standalone="yes"?>
11908     <!DOCTYPE p SYSTEM "dtd" [
11909     <!ATTLIST p a CDATA "&entity;">
11910     ]>
11911     <p/>
11912     @@@c:erred: <[[xp|wf-entity-declared]]> { (3, 22)..(3, 29); }
11913     @@@enImplNote:
11914     This document has an error - result is implementation dependent.
11915     @@XMLTest:
11916     @@@QName: xp.attlist.attval.ger.entity.declared.standalone.-5.test
11917     @@@DEnt:
11918     @@@@test:value:
11919     <?xml version="1.0" standalone="no"?>
11920     <!DOCTYPE p SYSTEM "dtd" [
11921     <!ATTLIST p a CDATA "&entity;">
11922     ]>
11923     <p/>
11924     @@@test:domTree:
11925     document {
11926     document-type {
11927     element-type-definition {
11928     node-name: 'p';
11929     attribute-definition {
11930     node-name: 'a';
11931     general-entity-reference {
11932     node-name: 'entity';
11933     is-expanded: false;
11934     }
11935     }
11936     }
11937     }
11938     element {
11939     attribute {
11940     node-name: 'a';
11941     specified: false;
11942     general-entity-reference {
11943     node-name: 'entity';
11944     is-expanded: false;
11945     }
11946     }
11947     }
11948     }
11949     @@@enImplNote:
11950     This document has an error - result is implementation dependent.
11951     @@XMLTest:
11952     @@@QName: xp.attlist.attval.ger.entity.declared.standalone.-6.test
11953     @@@DEnt:
11954     @@@@test:value:
11955     <!DOCTYPE p SYSTEM "dtd" [
11956     <!ATTLIST p a CDATA "&entity;">
11957     ]>
11958     <p/>
11959     @@@test:domTree:
11960     document {
11961     document-type {
11962     element-type-definition {
11963     node-name: 'p';
11964     attribute-definition {
11965     node-name: 'a';
11966     general-entity-reference {
11967     node-name: 'entity';
11968     is-expanded: false;
11969     }
11970     }
11971     }
11972     }
11973     element {
11974     attribute {
11975     node-name: 'a';
11976     specified: false;
11977     general-entity-reference {
11978     node-name: 'entity';
11979     is-expanded: false;
11980     }
11981     }
11982     }
11983     }
11984     @@@enImplNote:
11985     This document has an error - result is implementation dependent.
11986    
11987 wakaba 1.19 @@enImplNote:
11988     {TODO:: Entity declared WFC for
11989 wakaba 1.20
11990     - General entity references in entity value??
11991 wakaba 1.19
11992     }
11993    
11994 wakaba 1.23 @@XMLTest:
11995     @@@QName: xp.element.content.parsed.entity.reference.test
11996     @@@DEnt:
11997     @@@@test:value:
11998     <!DOCTYPE p [
11999     <!NOTATION n SYSTEM "notation">
12000     <!ENTITY ext SYSTEM "system" NDATA n>
12001     ]>
12002     <p>&ext;</p>
12003     @@@c:erred: <[[xp|wf-parsed-entity]]> { (5, 4)..(5, 8); }
12004     @@XMLTest:
12005     @@@QName: xp.attval.parsed.entity.reference.test
12006     @@@DEnt:
12007     @@@@test:value:
12008     <!DOCTYPE p [
12009     <!NOTATION n SYSTEM "notation">
12010     <!ENTITY ext SYSTEM "system" NDATA n>
12011     ]>
12012     <p a="&ext;"/>
12013     # @@@c:erred: <[[xp|wf-parsed-entity]]> { (5, 7)..(5, 11); }
12014     @@@c:erred: <[[xp|wf-no-external-entity-references]]> { (5, 7)..(5, 11); }
12015     @@XMLTest:
12016     @@@QName: xp.element.content.reptxt.parsed.entity.reference.test
12017     @@@DEnt:
12018     @@@@test:value:
12019     <!DOCTYPE p [
12020     <!NOTATION n SYSTEM "notation">
12021     <!ENTITY ext SYSTEM "system" NDATA n>
12022     <!ENTITY c "&#x26;ext;">
12023     ]>
12024     <p>&c;</p>
12025     @@@c:erred: <[[xp|wf-parsed-entity]]> { (1, 1)..(1, 5); }
12026     @@XMLTest:
12027     @@@QName: xp.attval.reptxt.parsed.entity.reference.test
12028     @@@DEnt:
12029     @@@@test:value:
12030     <!DOCTYPE p [
12031     <!NOTATION n SYSTEM "notation">
12032     <!ENTITY ext SYSTEM "system" NDATA n>
12033     <!ENTITY c "&#x26;ext;">
12034     ]>
12035     <p a="&c;"/>
12036     @@@c:erred: <[[xp|wf-no-external-entity-references]]> { (1, 1)..(1, 5); }
12037     @@@c:erred:
12038     @@@@@: <[[xp|wf-parsed-entity]]> { }
12039     @@@@enImplNote: During entity node construction.
12040     @@XMLTest:
12041     @@@QName: xp.element.content.entval.parsed.entity.reference.test
12042     @@@DEnt:
12043     @@@@test:value:
12044     <!DOCTYPE p [
12045     <!NOTATION n SYSTEM "notation">
12046     <!ENTITY ext SYSTEM "system" NDATA n>
12047     <!ENTITY c "&ext;">
12048     ]>
12049     <p>&c;</p>
12050     @@@c:erred: <[[xp|wf-parsed-entity]]> { }
12051     @@XMLTest:
12052     @@@QName: xp.attval.entval.parsed.entity.reference.test
12053     @@@DEnt:
12054     @@@@test:value:
12055     <!DOCTYPE p [
12056     <!NOTATION n SYSTEM "notation">
12057     <!ENTITY ext SYSTEM "system" NDATA n>
12058     <!ENTITY c "&ext;">
12059     ]>
12060     <p a="&c;"/>
12061     @@@c:erred: <[[xp|wf-no-external-entity-references]]> { }
12062     @@@c:erred: <[[xp|wf-parsed-entity]]> { }
12063    
12064     @@XMLTest:
12065     @@@QName: xp.element.content.no.recursion.direct.test
12066     @@@DEnt:
12067     @@@@test:value:
12068     <!DOCTYPE p [
12069     <!ENTITY c "&c;">
12070     ]>
12071     <p>&c;</p>
12072     @@@c:erred: <[[xp|wf-no-recursion]]> { (1, 1)..(1, 3); }
12073     @@XMLTest:
12074     @@@QName: xp.element.content.no.recursion.indirect.test
12075     @@@DEnt:
12076     @@@@test:value:
12077     <!DOCTYPE p [
12078     <!ENTITY d "&c;">
12079     <!ENTITY c "&d;">
12080     ]>
12081     <p>&c;</p>
12082     @@@c:erred: <[[xp|wf-no-recursion]]> { /* |d| */ (1, 1)..(1, 3); }
12083     @@XMLTest:
12084     @@@QName: xp.attval.no.recursion.direct.test
12085     @@@DEnt:
12086     @@@@test:value:
12087     <!DOCTYPE p [
12088     <!ENTITY c "&c;">
12089     ]>
12090     <p a="&c;"/>
12091     @@@c:erred: <[[xp|wf-no-recursion]]> { (1, 1)..(1, 3); }
12092     @@XMLTest:
12093     @@@QName: xp.attval.no.recursion.indirect.test
12094     @@@DEnt:
12095     @@@@test:value:
12096     <!DOCTYPE p [
12097     <!ENTITY d "&c;">
12098     <!ENTITY c "&d;">
12099     ]>
12100     <p a="&c;"/>
12101     @@@c:erred: <[[xp|wf-no-recursion]]> { /* |d| */ (1, 1)..(1, 3); }
12102     @@XMLTest:
12103     @@@QName: xp.reptxt.element.content.no.recursion.direct.test
12104     @@@DEnt:
12105     @@@@test:value:
12106     <!DOCTYPE p [
12107     <!ENTITY c "&c;">
12108     <!ENTITY e "&#x26;c;">
12109     ]>
12110     <p>&e;</p>
12111     @@@c:erred: <[[xp|wf-no-recursion]]> { /* |e| */ (1, 1)..(1, 3); }
12112     @@XMLTest:
12113     @@@QName: xp.reptxt.element.content.no.recursion.indirect.test
12114     @@@DEnt:
12115     @@@@test:value:
12116     <!DOCTYPE p [
12117     <!ENTITY d "&c;">
12118     <!ENTITY c "&d;">
12119     <!ENTITY e "&#x26;c;">
12120     ]>
12121     <p>&e;</p>
12122     @@@c:erred: <[[xp|wf-no-recursion]]> { /* |d| */ (1, 1)..(1, 3); }
12123     @@XMLTest:
12124     @@@QName: xp.reptxt.attval.no.recursion.direct.test
12125     @@@DEnt:
12126     @@@@test:value:
12127     <!DOCTYPE p [
12128     <!ENTITY c "&c;">
12129     <!ENTITY e "&#x26;c;">
12130     ]>
12131     <p a="&e;"/>
12132     @@@c:erred: <[[xp|wf-no-recursion]]> { /* |e| */ (1, 1)..(1, 3); }
12133     @@XMLTest:
12134     @@@QName: xp.reptxt.attval.no.recursion.indirect.test
12135     @@@DEnt:
12136     @@@@test:value:
12137     <!DOCTYPE p [
12138     <!ENTITY d "&c;">
12139     <!ENTITY c "&d;">
12140     <!ENTITY e "&#x26;c;">
12141     ]>
12142     <p a="&e;"/>
12143     @@@c:erred: <[[xp|wf-no-recursion]]> { /* |d| */ (1, 1)..(1, 3); }
12144    
12145     @@XMLTest:
12146     @@@QName: xp.ENTITY.system.ndata.name.test
12147     @@@DEnt:
12148     @@@@test:value:
12149     <!DOCTYPE a [
12150     <!NOTATION n SYSTEM "n">
12151     <!ENTITY % e SYSTEM "sys" NDATA n>
12152     ]><a/>
12153     @@@c:erred: <[[xp|wf-syntax-error]]> { (3, 26)..(3, 30); }
12154     @@XMLTest:
12155     @@@QName: xp.ENTITY.public.ndata.name.test
12156     @@@DEnt:
12157     @@@@test:value:
12158     <!DOCTYPE a [
12159     <!NOTATION n SYSTEM "n">
12160     <!ENTITY % e PUBLIC "pub" "sys" NDATA n>
12161     ]><a/>
12162     @@@c:erred: <[[xp|wf-syntax-error]]> { (3, 33)..(3, 37); }
12163     @@XMLTest:
12164     @@@QName: xp.ENTITY.public.ndata.name.-1.test
12165     @@@DEnt:
12166     @@@@test:value:
12167     <!DOCTYPE a [
12168     <!NOTATION n SYSTEM "n">
12169     <!ENTITY % e PUBLIC "pub" "sys" >
12170     ]><a/>
12171     @@@test:domTree:
12172     document { }
12173    
12174     @@XMLTest:
12175     @@@QName: xp.ENTITY.pubid.1.test
12176     @@@DEnt:
12177     @@@@test:value:
12178     <!DOCTYPE a [
12179     <!ENTITY e PUBLIC "p" "s">
12180     ]><a/>
12181     @@@test:domTree:
12182     document {
12183     document-type {
12184     general-entity {
12185     node-name: 'e';
12186     public-id: 'p';
12187     system-id: 's';
12188     }
12189     }
12190     element { }
12191     }
12192     @@XMLTest:
12193     @@@QName: xp.ENTITY.pubid.2.test
12194     @@@DEnt:
12195     @@@@test:value:
12196     <!DOCTYPE a [
12197     <!ENTITY e PUBLIC " p " "s">
12198     ]><a/>
12199     @@@test:domTree:
12200     document {
12201     document-type {
12202     general-entity {
12203     node-name: 'e';
12204     public-id: 'p';
12205     system-id: 's';
12206     }
12207     }
12208     element { }
12209     }
12210     @@XMLTest:
12211     @@@QName: xp.ENTITY.pubid.3.test
12212     @@@DEnt:
12213     @@@@test:value:
12214     <!DOCTYPE a [
12215     <!ENTITY e PUBLIC " p $u000Aq$u000A " "s">
12216     ]><a/>
12217     @@@test:domTree:
12218     document {
12219     document-type {
12220     general-entity {
12221     node-name: 'e';
12222     public-id: 'p q';
12223     system-id: 's';
12224     }
12225     }
12226     element { }
12227     }
12228     @@XMLTest:
12229     @@@QName: xp.ENTITY.pubid.4.test
12230     @@@DEnt:
12231     @@@@test:value:
12232     <!DOCTYPE a [
12233     <!ENTITY e PUBLIC " p $u000D$u000Aq" "s">
12234     ]><a/>
12235     @@@test:domTree:
12236     document {
12237     document-type {
12238     general-entity {
12239     node-name: 'e';
12240     public-id: 'p q';
12241     system-id: 's';
12242     }
12243     }
12244     element { }
12245     }
12246     @@XMLTest:
12247     @@@QName: xp.ENTITY.pubid.5.test
12248     @@@DEnt:
12249     @@@@test:value:
12250     <?xml version="1.1"?>
12251     <!DOCTYPE a [
12252     <!ENTITY e PUBLIC " p $u0085$u000Aq" "s">
12253     ]><a/>
12254     @@@test:domTree:
12255     document {
12256     document-type {
12257     general-entity {
12258     node-name: 'e';
12259     public-id: 'p q';
12260     system-id: 's';
12261     }
12262     }
12263     element { }
12264     }
12265    
12266 wakaba 1.24 @@XMLTest:
12267     @@@QName: xp.ENTITY.ignored.test
12268     @@@DEnt:
12269     @@@@test:value:
12270     <!DOCTYPE a [
12271     <!ENTITY e "a">
12272     <!ENTITY e "b">
12273     ]><a/>
12274     @@@test:domTree:
12275     document {
12276     document-type {
12277     general-entity {
12278     node-name: 'e';
12279     text-content: 'a';
12280     }
12281     }
12282     element { }
12283     }
12284     @@@c:erred:
12285     <[[xp|warning-entity-declaration-ignored]]> { (3, 1)..(3, 15); }
12286     @@XMLTest:
12287     @@@QName: xp.ENTITY.ignored.2.test
12288     @@@DEnt:
12289     @@@@test:value:
12290     <!DOCTYPE a [
12291     <!ENTITY % e "a">
12292     <!ENTITY % e "b">
12293     ]><a/>
12294     @@@test:domTree:
12295     document { }
12296     @@@c:erred:
12297     <[[xp|warning-entity-declaration-ignored]]> { (3, 1)..(3, 17); }
12298    
12299     @@XMLTest:
12300     @@@QName: xp.ENTITY.predefined.1.test
12301     @@@DEnt:
12302     @@@@test:value:
12303     <!DOCTYPE a [
12304     <!ENTITY lt "&#38;#60;">
12305     <!ENTITY gt "&#62;">
12306     <!ENTITY amp "&#38;#38;">
12307     <!ENTITY apos "&#39;">
12308     <!ENTITY quot "&#34;">
12309     <!ENTITY e "f">
12310     ]><a>&lt;&gt;&amp;&apos;&quot;</a>
12311     @@@test:domTree:
12312     document {
12313     document-type {
12314     general-entity {
12315     node-name: 'e';
12316     text-content: 'f';
12317     }
12318     }
12319     element {
12320     text-content: '<>&' U+0027 '"';
12321     }
12322     }
12323     @@XMLTest:
12324     @@@QName: xp.ENTITY.predefined.2.test
12325     @@@DEnt:
12326     @@@@test:value:
12327     <!DOCTYPE a [
12328     <!ENTITY lt "&#38;#60;">
12329     <!ENTITY gt "&#x26;#62;">
12330     <!ENTITY amp "&#38;#38;">
12331     <!ENTITY apos "&#x26;#39;">
12332     <!ENTITY quot "&#x26;#34;">
12333     <!ENTITY e "f">
12334     ]><a>&lt;&gt;&amp;&apos;&quot;</a>
12335     @@@test:domTree:
12336     document {
12337     document-type {
12338     general-entity {
12339     node-name: 'e';
12340     text-content: 'f';
12341     }
12342     }
12343     element {
12344     text-content: '<>&' U+0027 '"';
12345     }
12346     }
12347     @@XMLTest:
12348     @@@QName: xp.ENTITY.predefined.3.test
12349     @@@DEnt:
12350     @@@@test:value:
12351     <!DOCTYPE a [
12352     <!ENTITY lt "&#60;">
12353     <!ENTITY gt "&#62;">
12354     <!ENTITY amp "&#38;">
12355     <!ENTITY apos "&#39;">
12356     <!ENTITY quot "&#34;">
12357     <!ENTITY e "f">
12358     ]><a>&lt;&gt;&amp;&apos;&quot;</a>
12359     @@@c:erred: <[[xp|error-malformed-predefined-entity]]> { (2, 1)..(2, 24); }
12360     @@@c:erred: <[[xp|error-malformed-predefined-entity]]> { (4, 1)..(4, 24); }
12361     @@@test:domTree:
12362     document {
12363     document-type {
12364     general-entity {
12365     node-name: 'e';
12366     text-content: 'f';
12367     }
12368     }
12369     element {
12370     text-content: '<>&' U+0027 '"';
12371     }
12372     }
12373     @@XMLTest:
12374     @@@QName: xp.ENTITY.predefined.4.test
12375     @@@DEnt:
12376     @@@@test:value:
12377     <!DOCTYPE a [
12378     <!ENTITY lt "1">
12379     <!ENTITY gt "2">
12380     <!ENTITY amp "3">
12381     <!ENTITY apos "4">
12382     <!ENTITY quot "5">
12383     <!ENTITY e "f">
12384     ]><a>&lt;&gt;&amp;&apos;&quot;</a>
12385     @@@c:erred: <[[xp|error-malformed-predefined-entity]]> { (2, 1)..(2, 24); }
12386     @@@c:erred: <[[xp|error-malformed-predefined-entity]]> { (3, 1)..(3, 24); }
12387     @@@c:erred: <[[xp|error-malformed-predefined-entity]]> { (4, 1)..(4, 24); }
12388     @@@c:erred: <[[xp|error-malformed-predefined-entity]]> { (5, 1)..(5, 24); }
12389     @@@c:erred: <[[xp|error-malformed-predefined-entity]]> { (6, 1)..(6, 24); }
12390     @@@test:domTree:
12391     document {
12392     document-type {
12393     general-entity {
12394     node-name: 'e';
12395     text-content: 'f';
12396     }
12397     }
12398     element {
12399     text-content: '<>&' U+0027 '"';
12400     }
12401     }
12402     @@XMLTest:
12403     @@@QName: xp.ENTITY.predefined.5.test
12404     @@@DEnt:
12405     @@@@test:value:
12406     <!DOCTYPE a [
12407     <!ENTITY lt SYSTEM "1">
12408     <!ENTITY gt SYSTEM "2">
12409     <!ENTITY amp SYSTEM "3">
12410     <!ENTITY apos SYSTEM "4">
12411     <!ENTITY quot SYSTEM "5">
12412     <!ENTITY e "f">
12413     ]><a>&lt;&gt;&amp;&apos;&quot;</a>
12414     @@@c:erred: <[[xp|error-internal-predefined-entity]]> { (2, 1)..(2, 27); }
12415     @@@c:erred: <[[xp|error-internal-predefined-entity]]> { (3, 1)..(3, 27); }
12416     @@@c:erred: <[[xp|error-internal-predefined-entity]]> { (4, 1)..(4, 27); }
12417     @@@c:erred: <[[xp|error-internal-predefined-entity]]> { (5, 1)..(5, 27); }
12418     @@@c:erred: <[[xp|error-internal-predefined-entity]]> { (6, 1)..(6, 27); }
12419     @@@test:domTree:
12420     document {
12421     document-type {
12422     general-entity {
12423     node-name: 'e';
12424     text-content: 'f';
12425     }
12426     }
12427     element {
12428     text-content: '<>&' U+0027 '"';
12429     }
12430     }
12431     @@XMLTest:
12432     @@@QName: xp.ENTITY.predefined.6.test
12433     @@@DEnt:
12434     @@@@test:value:
12435     <!DOCTYPE a [
12436     <!ENTITY % lt SYSTEM "1">
12437     <!ENTITY % gt SYSTEM "2">
12438     <!ENTITY % amp SYSTEM "3">
12439     <!ENTITY % apos SYSTEM "4">
12440     <!ENTITY % quot SYSTEM "5">
12441     <!ENTITY e "f">
12442     ]><a>&lt;&gt;&amp;&apos;&quot;</a>
12443     @@@test:domTree:
12444     document {
12445     document-type {
12446     general-entity {
12447     node-name: 'e';
12448     text-content: 'f';
12449     }
12450     }
12451     element {
12452     text-content: '<>&' U+0027 '"';
12453     }
12454     }
12455     @@XMLTest:
12456     @@@QName: xp.ENTITY.predefined.7.test
12457     @@@DEnt:
12458     @@@@test:value:
12459     <!DOCTYPE a [
12460     <!ENTITY lt "&#38;#x3C;">
12461     <!ENTITY gt "&#x3E;">
12462     <!ENTITY amp "&#38;#x26;">
12463     <!ENTITY apos "&#x27;">
12464     <!ENTITY quot "&#x22;">
12465     <!ENTITY e "f">
12466     ]><a>&lt;&gt;&amp;&apos;&quot;</a>
12467     @@@test:domTree:
12468     document {
12469     document-type {
12470     general-entity {
12471     node-name: 'e';
12472     text-content: 'f';
12473     }
12474     }
12475     element {
12476     text-content: '<>&' U+0027 '"';
12477     }
12478     }
12479     @@XMLTest:
12480     @@@QName: xp.ENTITY.predefined.8.test
12481     @@@DEnt:
12482     @@@@test:value:
12483     <!DOCTYPE a [
12484     <!ENTITY lt "&#38;#x3c;">
12485     <!ENTITY gt "&#x3e;">
12486     <!ENTITY amp "&#38;#x26;">
12487     <!ENTITY apos "&#x27;">
12488     <!ENTITY quot "&#x22;">
12489     <!ENTITY e "f">
12490     ]><a>&lt;&gt;&amp;&apos;&quot;</a>
12491     @@@test:domTree:
12492     document {
12493     document-type {
12494     general-entity {
12495     node-name: 'e';
12496     text-content: 'f';
12497     }
12498     }
12499     element {
12500     text-content: '<>&' U+0027 '"';
12501     }
12502     }
12503     @@XMLTest:
12504     @@@QName: xp.ENTITY.predefined.9.test
12505     @@@DEnt:
12506     @@@@test:value:
12507     <!DOCTYPE a [
12508     <!ENTITY lt "&#38;#x00003C;">
12509     <!ENTITY gt "&#x0003E;">
12510     <!ENTITY amp "&#38;#x026;">
12511     <!ENTITY apos "&#x000027;">
12512     <!ENTITY quot "&#x0022;">
12513     <!ENTITY e "f">
12514     ]><a>&lt;&gt;&amp;&apos;&quot;</a>
12515     @@@test:domTree:
12516     document {
12517     document-type {
12518     general-entity {
12519     node-name: 'e';
12520     text-content: 'f';
12521     }
12522     }
12523     element {
12524     text-content: '<>&' U+0027 '"';
12525     }
12526     }
12527     @@XMLTest:
12528     @@@QName: xp.ENTITY.predefined.10.test
12529     @@@DEnt:
12530     @@@@test:value:
12531     <!DOCTYPE a [
12532     <!ENTITY lt "&#38;#00060;">
12533     <!ENTITY gt "&#062;">
12534     <!ENTITY amp "&#38;#000038;">
12535     <!ENTITY apos "&#0000039;">
12536     <!ENTITY quot "&#0034;">
12537     <!ENTITY e "f">
12538     ]><a>&lt;&gt;&amp;&apos;&quot;</a>
12539     @@@test:domTree:
12540     document {
12541     document-type {
12542     general-entity {
12543     node-name: 'e';
12544     text-content: 'f';
12545     }
12546     }
12547     element {
12548     text-content: '<>&' U+0027 '"';
12549     }
12550     }
12551    
12552 wakaba 1.25 @@XMLTest:
12553     @@@QName: xp.processed.1.test
12554     @@@DEnt:
12555     @@@@test:value:
12556     <a/>
12557     @@@test:domTree:
12558     document {
12559     all-declarations-processed: true;
12560     element { }
12561     }
12562     @@XMLTest:
12563     @@@QName: xp.processed.2.test
12564     @@@DEnt:
12565     @@@@test:value:
12566     <!DOCTYPE a [
12567     <!ENTITY e "f">
12568     <!ATTLIST a b NMTOKEN " c ">
12569     ]><a>&e;</a>
12570     @@@test:domTree:
12571     document {
12572     document-type {
12573     general-entity {
12574     node-name: 'e';
12575     }
12576     element-type-definition {
12577     node-name: 'a';
12578     attribute-definition {
12579     node-name: 'b';
12580     }
12581     }
12582     }
12583     all-declarations-processed: true;
12584     element {
12585     attribute {
12586     node-name: 'b';
12587     node-value: 'c';
12588     }
12589     text-content: 'f';
12590     }
12591     }
12592     @@XMLTest:
12593     @@@QName: xp.processed.3.test
12594     @@@DEnt:
12595     @@@@test:value:
12596     <!DOCTYPE a [
12597     <!ENTITY % p SYSTEM "p">
12598     %p;
12599     <!ENTITY e "f">
12600     <!ATTLIST a b NMTOKEN " c ">
12601     ]><a d="e">&e;</a>
12602     @@@test:domTree:
12603     document {
12604     document-type { }
12605     all-declarations-processed: false;
12606     element {
12607     attribute {
12608     node-name: 'd';
12609     node-value: 'e';
12610     }
12611     general-entity-reference {
12612     node-name: 'e';
12613     is-expanded: false;
12614     }
12615     }
12616     }
12617     @@@c:erred:
12618     <[[xp|warning-entity-declaration-not-processed]]> { (4, 1)..(4, 20); }
12619     @@@c:erred:
12620     <[[xp|warning-attribute-definition-not-processed]]> { (5, 13)..(5, 31); }
12621     @@XMLTest:
12622     @@@QName: xp.processed.4.test
12623     @@@DEnt:
12624     @@@@test:value:
12625     <?xml version="1.1" standalone="yes"?>
12626     <!DOCTYPE a [
12627     <!ENTITY % p SYSTEM "p">
12628     %p;
12629     <!ENTITY e "f">
12630     <!ATTLIST a b NMTOKEN " c ">
12631     ]><a>&e;</a>
12632     @@@test:domTree:
12633     document {
12634     document-type {
12635     general-entity {
12636     node-name: 'e';
12637     }
12638     element-type-definition {
12639     node-name: 'a';
12640     attribute-definition {
12641     node-name: 'b';
12642     }
12643     }
12644     }
12645     all-declarations-processed: false;
12646     element {
12647     attribute {
12648     node-name: 'b';
12649     node-value: 'c';
12650     }
12651     text-content: 'f';
12652     }
12653     }
12654     @@XMLTest:
12655     @@@QName: xp.processed.5.test
12656     @@@DEnt:
12657     @@@@test:value:
12658     <!DOCTYPE a SYSTEM "p" [
12659     <!ENTITY e "f">
12660     <!ATTLIST a b NMTOKEN " c ">
12661     ]><a>&e;</a>
12662     @@@test:domTree:
12663     document {
12664     document-type {
12665     general-entity {
12666     node-name: 'e';
12667     }
12668     element-type-definition {
12669     node-name: 'a';
12670     attribute-definition {
12671     node-name: 'b';
12672     }
12673     }
12674     }
12675     all-declarations-processed: false;
12676     element {
12677     attribute {
12678     node-name: 'b';
12679     node-value: 'c';
12680     }
12681     text-content: 'f';
12682     }
12683     }
12684    
12685     @@XMLTest:
12686     @@@QName: xp.PEs.in.internal.subset.1.test
12687     @@@DEnt:
12688     @@@@test:value:
12689     <!DOCTYPE a [
12690     <!ENTITY % p " ">
12691 wakaba 1.26 <!ENTITY % q "%p;">
12692 wakaba 1.25 ]><a/>
12693     @@@c:erred: <[[xp|wf-pes-in-internal-subset]]> { (3, 15)..(3, 17); }
12694     @@XMLTest:
12695     @@@QName: xp.PEs.in.internal.subset.2.test
12696     @@@DEnt:
12697     @@@@test:value:
12698     <!DOCTYPE a [
12699     <!ENTITY % p " ">
12700 wakaba 1.26 <!ENTITY % q '%p;'>
12701 wakaba 1.25 ]><a/>
12702     @@@c:erred: <[[xp|wf-pes-in-internal-subset]]> { (3, 15)..(3, 17); }
12703    
12704 wakaba 1.26 @@XMLTest:
12705     @@@QName: xp.name.pitarget.content.1.0.2.test
12706     @@@DEnt:
12707     @@@@test:value:
12708     <?xml version="1.0"?>
12709     <p>
12710     <?$u3001$u3002?>
12711     </p>
12712     @@@c:erred: <[[xp|wf-invalid-character-in-node-name]]> { (3, 3)..(3, 4); }
12713     @@XMLTest:
12714     @@@QName: xp.name.pitarget.content.1.1.2.test
12715     @@@DEnt:
12716     @@@@test:value:
12717     <?xml version="1.1"?>
12718     <p>$
12719     <?$u3001$u3002?>$
12720     </p>
12721     @@@test:domTree:
12722     document {
12723     xml-version: '1.1';
12724     element {
12725     pi {
12726     node-name: U+3001 U+3002;
12727 wakaba 1.14 }
12728 wakaba 1.12 }
12729 wakaba 1.26 }
12730     @@XMLTest:
12731     @@@QName: xp.name.pitarget.content.1.0.3.test
12732     @@@DEnt:
12733     @@@@test:value:
12734     <?xml version="1.0"?>
12735     <p>
12736     <?$u3005b?>
12737     </p>
12738     @@@c:erred: <[[xp|wf-invalid-character-in-node-name]]> { (3, 3)..(3, 4); }
12739     @@XMLTest:
12740     @@@QName: xp.name.pitarget.content.1.1.3.test
12741     @@@DEnt:
12742     @@@@test:value:
12743     <?xml version="1.1"?>
12744     <p>$
12745     <?$u3005b?>$
12746     </p>
12747     @@@test:domTree:
12748     document {
12749     xml-version: '1.1';
12750     element {
12751     pi {
12752     node-name: U+3005 'b';
12753 wakaba 1.12 }
12754     }
12755 wakaba 1.26 }
12756     @@XMLTest:
12757     @@@QName: xp.name.pitarget.content.names.1.0.1.test
12758     @@@DEnt:
12759     @@@@test:value:
12760     <?xml version="1.0"?>
12761     <p>
12762     <?a:b?>
12763     </p>
12764     @@@c:erred: <[[xp|nswf-legal-ncname]]> { (3, 3)..(3, 5); }
12765     @@XMLTest:
12766     @@@QName: xp.name.pitarget.content.names.1.1.1.test
12767     @@@DEnt:
12768     @@@@test:value:
12769     <?xml version="1.1"?>
12770     <p>
12771     <?a:b?>
12772     </p>
12773     @@@c:erred: <[[xp|nswf-legal-ncname]]> { (3, 3)..(3, 5); }
12774     @@XMLTest:
12775     @@@QName: xp.name.pitarget.intsubset.1.0.2.test
12776     @@@DEnt:
12777     @@@@test:value:
12778     <?xml version="1.0"?>
12779     <!DOCTYPE p [
12780     <?$u3001$u3002?>
12781     ]><p/>
12782     @@@c:erred: <[[xp|wf-invalid-character-in-node-name]]> { (3, 3)..(3, 4); }
12783     @@XMLTest:
12784     @@@QName: xp.name.pitarget.intsubset.1.1.2.test
12785     @@@DEnt:
12786     @@@@test:value:
12787     <?xml version="1.1"?>
12788     <!DOCTYPE p [
12789     <?$u3001$u3002?>
12790     ]><p/>
12791     @@@test:domTree:
12792     document {
12793     xml-version: '1.1';
12794     document-type {
12795     pi {
12796     node-name: U+3001 U+3002;
12797     }
12798     }
12799     element { }
12800     }
12801     @@XMLTest:
12802     @@@QName: xp.name.pitarget.intsubset.1.0.3.test
12803     @@@DEnt:
12804     @@@@test:value:
12805     <?xml version="1.0"?>
12806     <!DOCTYPE p [
12807     <?$u3005b?>
12808     ]><p/>
12809     @@@c:erred: <[[xp|wf-invalid-character-in-node-name]]> { (3, 3)..(3, 4); }
12810     @@XMLTest:
12811     @@@QName: xp.name.pitarget.intsubset.1.1.3.test
12812     @@@DEnt:
12813     @@@@test:value:
12814     <?xml version="1.1"?>
12815     <!DOCTYPE p [
12816     <?$u3005b?>
12817     ]><p/>
12818     @@@test:domTree:
12819     document {
12820     xml-version: '1.1';
12821     document-type {
12822     pi {
12823     node-name: U+3005 'b';
12824     }
12825     }
12826     element { }
12827     }
12828     @@XMLTest:
12829     @@@QName: xp.name.pitarget.intsubset.names.1.0.1.test
12830     @@@DEnt:
12831     @@@@test:value:
12832     <?xml version="1.0"?>
12833     <!DOCTYPE p [
12834     <?a:b?>
12835     ]><p/>
12836     @@@c:erred: <[[xp|nswf-legal-ncname]]> { (3, 3)..(3, 5); }
12837     @@XMLTest:
12838     @@@QName: xp.name.pitarget.intsubset.names.1.1.1.test
12839     @@@DEnt:
12840     @@@@test:value:
12841     <?xml version="1.1"?>
12842     <!DOCTYPE p [
12843     <?a:b?>
12844     ]><p/>
12845     @@@c:erred: <[[xp|nswf-legal-ncname]]> { (3, 3)..(3, 5); }
12846     @@XMLTest:
12847     @@@QName: xp.name.doctypedecl.stag.etag.1.0.2.test
12848     @@@DEnt:
12849     @@@@test:value:
12850     <?xml version="1.0"?>
12851     <!DOCTYPE $u3001$u3002>
12852     <$u3001$u3002>
12853     </$u3001$u3002>
12854     @@@c:erred: <[[xp|wf-invalid-character-in-node-name]]>{ (2, 11)..(2, 12); }
12855     @@@c:erred: <[[xp|wf-invalid-character-in-node-name]]>{ (3, 2)..(3, 3); }
12856     # @@@c:erred: <[[xp|wf-invalid-character-in-node-name]]>{ (4, 3)..(4, 4); }
12857     @@XMLTest:
12858     @@@QName: xp.name.doctypedecl.stag.etag.1.1.2.test
12859     @@@DEnt:
12860     @@@@test:value:
12861     <?xml version="1.1"?>
12862     <!DOCTYPE $u3001$u3002>
12863     <$u3001$u3002>
12864     </$u3001$u3002>
12865     @@@test:domTree:
12866     document {
12867     xml-version: '1.1';
12868     document-type {
12869     node-name: U+3001 U+3002;
12870     }
12871     element {
12872     node-name: U+3001 U+3002;
12873     }
12874     }
12875     @@XMLTest:
12876     @@@QName: xp.name.doctypedecl.stag.etag.1.0.3.test
12877     @@@DEnt:
12878     @@@@test:value:
12879     <?xml version="1.0"?>
12880     <!DOCTYPE $u3005b>
12881     <$u3005b>
12882     </$u3005b>
12883     @@@c:erred: <[[xp|wf-invalid-character-in-node-name]]>{ (2, 11)..(2, 12); }
12884     @@@c:erred: <[[xp|wf-invalid-character-in-node-name]]>{ (3, 2)..(3, 3); }
12885     # @@@c:erred: <[[xp|wf-invalid-character-in-node-name]]>{ (4, 3)..(4, 4); }
12886     @@XMLTest:
12887     @@@QName: xp.name.doctype.decl.stag.etag.1.1.3.test
12888     @@@DEnt:
12889     @@@@test:value:
12890     <?xml version="1.1"?>
12891     <!DOCTYPE $u3005b>
12892     <$u3005b>
12893     </$u3005b>
12894     @@@test:domTree:
12895     document {
12896     xml-version: '1.1';
12897     document-type {
12898     node-name: U+3005 'b';
12899     }
12900     element {
12901     node-name: U+3005 'b';
12902     }
12903     }
12904     @@XMLTest:
12905     @@@QName: xp.name.doctypedecl.stag.etag.names.1.0.1.test
12906     @@@DEnt:
12907     @@@@test:value:
12908     <?xml version="1.0"?>
12909     <!DOCTYPE a:b>
12910     <a:b xmlns:a="http://a.example/">
12911     </a:b>
12912     @@@test:domTree:
12913     document {
12914     xml-version: '1.0';
12915     document-type {
12916     node-name: 'a:b';
12917     }
12918     element {
12919     prefix: 'a';
12920     local-name: 'b';
12921     namespace-uri: 'http://a.example/';
12922     attribute {
12923     namespace-uri: 'http://www.w3.org/2000/xmlns/';
12924     prefix: 'xmlns';
12925     local-name: 'a';
12926     value: 'http://a.example/';
12927     specified: true;
12928     }
12929     }
12930     }
12931     @@XMLTest:
12932     @@@QName: xp.name.doctypedecl.stag.etag.names.1.1.1.test
12933     @@@DEnt:
12934     @@@@test:value:
12935     <?xml version="1.1"?>
12936     <!DOCTYPE a:b>
12937     <a:b xmlns:a="http://a.example/">
12938     </a:b>
12939     @@@test:domTree:
12940     document {
12941     xml-version: '1.1';
12942     document-type {
12943     node-name: 'a:b';
12944     }
12945     element {
12946     prefix: 'a';
12947     local-name: 'b';
12948     namespace-uri: 'http://a.example/';
12949     attribute {
12950     namespace-uri: 'http://www.w3.org/2000/xmlns/';
12951     prefix: 'xmlns';
12952     local-name: 'a';
12953     specified: true;
12954     }
12955     }
12956     }
12957     @@XMLTest:
12958     @@@QName: xp.name.doctypedecl.stag.etag.names.1.0.2.test
12959     @@@DEnt:
12960     @@@@test:value:
12961     <?xml version="1.0"?>
12962     <!DOCTYPE :ab>
12963     <:ab>
12964     </:ab>
12965     @@@c:erred: <[[xp|nswf-legal-qname]]> { (2, 11)..(2, 13); }
12966     @@@c:erred: <[[xp|nswf-legal-qname]]> { (3, 2)..(3, 4); }
12967     @@@c:erred: <[[xp|nsc-prefix-declared]]> { /* prefix || */ }
12968     @@XMLTest:
12969     @@@QName: xp.name.doctypedecl.stag.etag.names.1.1.2.test
12970     @@@DEnt:
12971     @@@@test:value:
12972     <?xml version="1.1"?>
12973     <!DOCTYPE :ab>
12974     <:ab>
12975     </:ab>
12976     @@@c:erred: <[[xp|nswf-legal-qname]]> { (2, 11)..(2, 13); }
12977     @@@c:erred: <[[xp|nswf-legal-qname]]> { (3, 2)..(3, 4); }
12978     @@@c:erred: <[[xp|nsc-prefix-declared]]> { /* prefix || */ }
12979     @@XMLTest:
12980     @@@QName: xp.name.doctypedecl.stag.etag.names.1.0.3.test
12981     @@@DEnt:
12982     @@@@test:value:
12983     <?xml version="1.0"?>
12984     <!DOCTYPE a:$u3005>
12985     <a:$u3005 xmlns:a="http://a.example/">
12986     </a:$u3005>
12987     @@@c:erred: <[[xp|nswf-legal-qname]]> { (2, 11)..(2, 13); }
12988     @@@c:erred: <[[xp|nswf-legal-qname]]> { (3, 2)..(3, 4); }
12989     @@XMLTest:
12990     @@@QName: xp.name.doctypedecl.stag.etag.names.1.1.3.test
12991     @@@DEnt:
12992     @@@@test:value:
12993     <?xml version="1.1"?>
12994     <!DOCTYPE a:$u3005>
12995     <a:$u3005 xmlns:a="http://a.example/">
12996     </a:$u3005>
12997     @@@test:domTree:
12998     document {
12999     xml-version: '1.1';
13000     document-type {
13001     node-name: 'a:' U+3005;
13002     }
13003     element {
13004     prefix: 'a';
13005     local-name: U+3005;
13006     namespace-uri: 'http://a.example/';
13007     attribute {
13008     namespace-uri: 'http://www.w3.org/2000/xmlns/';
13009     prefix: 'xmlns';
13010     local-name: 'a';
13011     value: 'http://a.example/';
13012     specified: true;
13013     }
13014     }
13015     }
13016     @@XMLTest:
13017     @@@QName: xp.name.doctypedecl.stag.etag.names.1.0.4.test
13018     @@@DEnt:
13019     @@@@test:value:
13020     <?xml version="1.0"?>
13021     <!DOCTYPE a:b>
13022     <a:b>
13023     </a:b>
13024     @@@c:erred: <[[xp|nsc-prefix-declared]]> { (3, 1)..(3, 5); }
13025     @@XMLTest:
13026     @@@QName: xp.name.doctypedecl.stag.etag.names.1.1.4.test
13027     @@@DEnt:
13028     @@@@test:value:
13029     <?xml version="1.1"?>
13030     <!DOCTYPE a:b>
13031     <a:b>
13032     </a:b>
13033     @@@c:erred: <[[xp|nsc-prefix-declared]]> { (3, 1)..(3, 5); }
13034     @@XMLTest:
13035     @@@QName: xp.name.emptyelemtag.1.0.2.test
13036     @@@DEnt:
13037     @@@@test:value:
13038     <?xml version="1.0"?>
13039     <$u3001$u3002/>
13040     @@@c:erred: <[[xp|wf-invalid-character-in-node-name]]>{ (2, 2)..(2, 3); }
13041     @@XMLTest:
13042     @@@QName: xp.name.emptyelemtag.1.1.2.test
13043     @@@DEnt:
13044     @@@@test:value:
13045     <?xml version="1.1"?>
13046     <$u3001$u3002/>
13047     @@@test:domTree:
13048     document {
13049     xml-version: '1.1';
13050     element {
13051     node-name: U+3001 U+3002;
13052     }
13053     }
13054     @@XMLTest:
13055     @@@QName: xp.name.emptyelemtag.1.0.3.test
13056     @@@DEnt:
13057     @@@@test:value:
13058     <?xml version="1.0"?>
13059     <$u3005b/>
13060     @@@c:erred: <[[xp|wf-invalid-character-in-node-name]]>{ (2, 2)..(2, 3); }
13061     @@XMLTest:
13062     @@@QName: xp.name.emptyelemtag.1.1.3.test
13063     @@@DEnt:
13064     @@@@test:value:
13065     <?xml version="1.1"?>
13066     <$u3005b/>
13067     @@@test:domTree:
13068     document {
13069     xml-version: '1.1';
13070     element {
13071     node-name: U+3005 'b';
13072     }
13073     }
13074     @@XMLTest:
13075     @@@QName: xp.name.emptyelemtag.names.1.0.1.test
13076     @@@DEnt:
13077     @@@@test:value:
13078     <?xml version="1.0"?>
13079     <a:b/>
13080     @@@c:erred: <[[xp|nsc-prefix-declared]]>{ (2, 1)..(2, 6); }
13081     @@XMLTest:
13082     @@@QName: xp.name.emptyelemtag.names.1.1.1.test
13083     @@@DEnt:
13084     @@@@test:value:
13085     <?xml version="1.1"?>
13086     <a:b/>
13087     @@@c:erred: <[[xp|nsc-prefix-declared]]>{ (2, 1)..(2, 6); }
13088     @@XMLTest:
13089     @@@QName: xp.name.attr.1.0.2.test
13090     @@@DEnt:
13091     @@@@test:value:
13092     <?xml version="1.0"?>
13093     <a $u3001$u3002=""/>
13094     @@@c:erred: <[[xp|wf-invalid-character-in-node-name]]>{ (2, 4)..(2, 5); }
13095     @@XMLTest:
13096     @@@QName: xp.name.attr.1.1.2.test
13097     @@@DEnt:
13098     @@@@test:value:
13099     <?xml version="1.1"?>
13100     <a $u3001$u3002=""/>
13101     @@@test:domTree:
13102     document {
13103     xml-version: '1.1';
13104     element {
13105     attribute {
13106     node-name: U+3001 U+3002;
13107     }
13108     }
13109     }
13110     @@XMLTest:
13111     @@@QName: xp.name.attr.1.0.3.test
13112     @@@DEnt:
13113     @@@@test:value:
13114     <?xml version="1.0"?>
13115     <a $u3005b=""/>
13116     @@@c:erred: <[[xp|wf-invalid-character-in-node-name]]>{ (2, 4)..(2, 5); }
13117     @@XMLTest:
13118     @@@QName: xp.name.attr.1.1.3.test
13119     @@@DEnt:
13120     @@@@test:value:
13121     <?xml version="1.1"?>
13122     <a $u3005b=""/>
13123     @@@test:domTree:
13124     document {
13125     xml-version: '1.1';
13126     element {
13127     attribute {
13128     node-name: U+3005 'b';
13129     }
13130     }
13131     }
13132     @@XMLTest:
13133     @@@QName: xp.name.attr.names.1.0.1.test
13134     @@@DEnt:
13135     @@@@test:value:
13136     <?xml version="1.0"?>
13137     <a a:b=""/>
13138     @@@c:erred: <[[xp|nsc-prefix-declared]]>{ (2, 1)..(2, 11); }
13139     @@XMLTest:
13140     @@@QName: xp.name.attr.names.1.1.1.test
13141     @@@DEnt:
13142     @@@@test:value:
13143     <?xml version="1.1"?>
13144     <a a:b=""/>
13145     @@@c:erred: <[[xp|nsc-prefix-declared]]>{ (2, 1)..(2, 11); }
13146     @@XMLTest:
13147     @@@QName: xp.name.attr.names.1.0.2.test
13148     @@@DEnt:
13149     @@@@test:value:
13150     <?xml version="1.0"?>
13151     <a :ab=""/>
13152     @@@c:erred: <[[xp|nswf-legal-qname]]>{ (2, 4)..(2, 6); }
13153     @@@c:erred: <[[xp|nsc-prefix-declared]]> { }
13154     @@XMLTest:
13155     @@@QName: xp.name.attr.names.1.1.2.test
13156     @@@DEnt:
13157     @@@@test:value:
13158     <?xml version="1.1"?>
13159     <a :ab=""/>
13160     @@@c:erred: <[[xp|nswf-legal-qname]]>{ (2, 4)..(2, 6); }
13161     @@@c:erred: <[[xp|nsc-prefix-declared]]> { }
13162     @@XMLTest:
13163     @@@QName: xp.name.attlist.1.0.2.test
13164     @@@DEnt:
13165     @@@@test:value:
13166     <?xml version="1.0"?>
13167     <!DOCTYPE p [
13168     <!NOTATION $u3001$u3002 SYSTEM "n">
13169     <!ATTLIST $u3001$u3002
13170     $u3001$u3002
13171     NOTATION
13172     ($u3001$u3002)
13173     #IMPLIED>
13174     ]><p/>
13175     @@@c:erred: <[[xp|wf-invalid-character-in-node-name]]>{ (3, 12)..(3, 13); }
13176     @@@c:erred: <[[xp|wf-invalid-character-in-node-name]]>{ (4, 11)..(4, 12); }
13177     @@@c:erred: <[[xp|wf-invalid-character-in-node-name]]>{ (5, 1)..(5, 2); }
13178     @@@c:erred: <[[xp|wf-invalid-character-in-node-name]]>{ (7, 2)..(7, 3); }
13179     @@XMLTest:
13180     @@@QName: xp.name.attlist.1.1.2.test
13181     @@@DEnt:
13182     @@@@test:value:
13183     <?xml version="1.1"?>
13184     <!DOCTYPE p [
13185     <!NOTATION $u3001$u3002 SYSTEM "n">
13186     <!ATTLIST $u3001$u3002
13187     $u3001$u3002
13188     NOTATION
13189     ($u3001$u3002)
13190     #IMPLIED>
13191     ]><p/>
13192     @@@test:domTree:
13193     document {
13194     xml-version: '1.1';
13195     document-type {
13196     notation {
13197     node-name: U+3001 U+3002;
13198     }
13199     element-type-definition {
13200     node-name: U+3001 U+3002;
13201     attribute-definition {
13202     node-name: U+3001 U+3002;
13203     allowed-tokens: DOMStringList (U+3001 U+3002);
13204     }
13205     }
13206     }
13207     element { }
13208     }
13209     @@XMLTest:
13210     @@@QName: xp.name.attlist.1.0.3.test
13211     @@@DEnt:
13212     @@@@test:value:
13213     <?xml version="1.0"?>
13214     <!DOCTYPE p [
13215     <!NOTATION $u3005b SYSTEM "n">
13216     <!ATTLIST $u3005b
13217     $u3005b
13218     NOTATION
13219     ($u3005b)
13220     #IMPLIED>
13221     ]><p/>
13222     @@@c:erred: <[[xp|wf-invalid-character-in-node-name]]>{ (3, 12)..(3, 13); }
13223     @@@c:erred: <[[xp|wf-invalid-character-in-node-name]]>{ (4, 11)..(4, 12); }
13224     @@@c:erred: <[[xp|wf-invalid-character-in-node-name]]>{ (5, 1)..(5, 2); }
13225     @@@c:erred: <[[xp|wf-invalid-character-in-node-name]]>{ (7, 2)..(7, 3); }
13226     @@XMLTest:
13227     @@@QName: xp.name.attlist.1.1.3.test
13228     @@@DEnt:
13229     @@@@test:value:
13230     <?xml version="1.1"?>
13231     <!DOCTYPE p [
13232     <!NOTATION $u3005b SYSTEM "n">
13233     <!ATTLIST $u3005b
13234     $u3005b
13235     NOTATION
13236     ($u3005b)
13237     #IMPLIED>
13238     ]><p/>
13239     @@@test:domTree:
13240     document {
13241     xml-version: '1.1';
13242     document-type {
13243     notation {
13244     node-name: U+3005 'b';
13245     }
13246     element-type-definition {
13247     node-name: U+3005 'b';
13248     attribute-definition {
13249     node-name: U+3005 'b';
13250     allowed-tokens: DOMStringList (U+3005 'b');
13251     }
13252     }
13253     }
13254     element { }
13255     }
13256     @@XMLTest:
13257     @@@QName: xp.name.attlist.names.1.0.1.test
13258     @@@DEnt:
13259     @@@@test:value:
13260     <?xml version="1.0"?>
13261     <!DOCTYPE p [
13262     <!NOTATION a:b SYSTEM "n">
13263     <!ATTLIST a:b
13264     a:b
13265     NOTATION
13266     (a:b)
13267     #IMPLIED>
13268     ]><p/>
13269     @@@c:erred: <[[xp|nswf-legal-ncname]]>{ (3, 12)..(3, 14); }
13270     @@@c:erred: <[[xp|nswf-legal-ncname]]>{ (7, 2)..(7, 4); }
13271     @@XMLTest:
13272     @@@QName: xp.name.attlist.names.1.1.1.test
13273     @@@DEnt:
13274     @@@@test:value:
13275     <?xml version="1.1"?>
13276     <!DOCTYPE p [
13277     <!NOTATION a:b SYSTEM "n">
13278     <!ATTLIST a:b
13279     a:b
13280     NOTATION
13281     (a:b)
13282     #IMPLIED>
13283     ]><p/>
13284     @@@c:erred: <[[xp|nswf-legal-ncname]]>{ (3, 12)..(3, 14); }
13285     @@@c:erred: <[[xp|nswf-legal-ncname]]>{ (7, 2)..(7, 4); }
13286     @@XMLTest:
13287     @@@QName: xp.name.attlist.names.1.0.2.test
13288     @@@DEnt:
13289     @@@@test:value:
13290     <?xml version="1.0"?>
13291     <!DOCTYPE p [
13292     <!NOTATION :ab SYSTEM "n">
13293     <!ATTLIST :ab
13294     :ab
13295     NOTATION
13296     (:ab)
13297     #IMPLIED>
13298     ]><p/>
13299     @@@c:erred: <[[xp|nswf-legal-ncname]]>{ (3, 12)..(3, 14); }
13300     @@@c:erred: <[[xp|nswf-legal-qname]]>{ (4, 11)..(4, 13); }
13301     @@@c:erred: <[[xp|nswf-legal-qname]]>{ (5, 1)..(5, 3); }
13302     @@@c:erred: <[[xp|nswf-legal-ncname]]>{ (7, 2)..(7, 4); }
13303     @@XMLTest:
13304     @@@QName: xp.name.attlist.names.1.1.2.test
13305     @@@DEnt:
13306     @@@@test:value:
13307     <?xml version="1.1"?>
13308     <!DOCTYPE p [
13309     <!NOTATION :ab SYSTEM "n">
13310     <!ATTLIST :ab
13311     :ab
13312     NOTATION
13313     (:ab)
13314     #IMPLIED>
13315     ]><p/>
13316     @@@c:erred: <[[xp|nswf-legal-ncname]]>{ (3, 12)..(3, 14); }
13317     @@@c:erred: <[[xp|nswf-legal-qname]]>{ (4, 11)..(4, 13); }
13318     @@@c:erred: <[[xp|nswf-legal-qname]]>{ (5, 1)..(5, 3); }
13319     @@@c:erred: <[[xp|nswf-legal-ncname]]>{ (7, 2)..(7, 4); }
13320     @@XMLTest:
13321     @@@QName: xp.name.gent.1.0.2.test
13322     @@@DEnt:
13323     @@@@test:value:
13324     <?xml version="1.0"?>
13325     <!DOCTYPE p [
13326     <!ENTITY $u3001$u3002 "n">
13327     ]>
13328     <p a="&$u3001$u3002;">
13329     &$u3001$u3002;
13330     </p>
13331     @@@c:erred: <[[xp|wf-invalid-character-in-node-name]]>{ (3, 10)..(3, 11); }
13332     @@@c:erred: <[[xp|wf-invalid-character-in-node-name]]>{ (5, 8)..(5, 9); }
13333     @@@c:erred: <[[xp|wf-invalid-character-in-node-name]]>{ (6, 2)..(6, 3); }
13334     @@XMLTest:
13335     @@@QName: xp.name.ger.1.1.2.test
13336     @@@DEnt:
13337     @@@@test:value:
13338     <?xml version="1.1"?>
13339     <!DOCTYPE p [
13340     <!ENTITY $u3001$u3002 "n">
13341     ]>
13342     <p a="&$u3001$u3002;">$
13343     &$u3001$u3002;$
13344     </p>
13345     @@@test:domTree:
13346     document {
13347     xml-version: '1.1';
13348     document-type {
13349     general-entity {
13350     node-name: U+3001 U+3002;
13351     }
13352     }
13353     element {
13354     attribute {
13355     node-name: 'a';
13356     general-entity-reference {
13357     node-name: U+3001 U+3002;
13358     }
13359     }
13360     general-entity-reference {
13361     node-name: U+3001 U+3002;
13362     }
13363     }
13364     }
13365     @@XMLTest:
13366     @@@QName: xp.name.ger.1.0.3.test
13367     @@@DEnt:
13368     @@@@test:value:
13369     <?xml version="1.0"?>
13370     <!DOCTYPE p [
13371     <!ENTITY $u3005b "n">
13372     ]>
13373     <p a="&$u3005b;">
13374     &$u3005b;
13375     </p>
13376     @@@c:erred: <[[xp|wf-invalid-character-in-node-name]]>{ (3, 10)..(3, 11); }
13377     @@@c:erred: <[[xp|wf-invalid-character-in-node-name]]>{ (5, 8)..(5, 9); }
13378     @@@c:erred: <[[xp|wf-invalid-character-in-node-name]]>{ (6, 2)..(6, 3); }
13379     @@XMLTest:
13380     @@@QName: xp.name.ger.1.1.3.test
13381     @@@DEnt:
13382     @@@@test:value:
13383     <?xml version="1.1"?>
13384     <!DOCTYPE p [
13385     <!ENTITY $u3005b "n">
13386     ]>
13387     <p a="&$u3005b;">$
13388     &$u3005b;$
13389     </p>
13390     @@@test:domTree:
13391     document {
13392     xml-version: '1.1';
13393     document-type {
13394     general-entity {
13395     node-name: U+3005 'b';
13396     }
13397     }
13398     element {
13399     attribute {
13400     node-name: 'a';
13401     general-entity-reference {
13402     node-name: U+3005 'b';
13403     }
13404     }
13405     general-entity-reference {
13406     node-name: U+3005 'b';
13407     }
13408     }
13409     }
13410     @@XMLTest:
13411     @@@QName: xp.name.ger.names.1.0.1.test
13412     @@@DEnt:
13413     @@@@test:value:
13414     <?xml version="1.0"?>
13415     <!DOCTYPE p [
13416     <!ENTITY a:b "n">
13417     ]>
13418     <p a="&a:b;">
13419     &a:b;
13420     </p>
13421     @@@c:erred: <[[xp|nswf-legal-ncname]]>{ (3, 10)..(3, 12); }
13422     @@@c:erred: <[[xp|nswf-legal-ncname]]>{ (5, 8)..(5, 10); }
13423     @@@c:erred: <[[xp|nswf-legal-ncname]]>{ (6, 2)..(6, 4); }
13424     @@XMLTest:
13425     @@@QName: xp.name.ger.names.1.1.1.test
13426     @@@DEnt:
13427     @@@@test:value:
13428     <?xml version="1.1"?>
13429     <!DOCTYPE p [
13430     <!ENTITY a:b "n">
13431     ]>
13432     <p a="&a:b;">
13433     &a:b;
13434     </p>
13435     @@@c:erred: <[[xp|nswf-legal-ncname]]>{ (3, 10)..(3, 12); }
13436     @@@c:erred: <[[xp|nswf-legal-ncname]]>{ (5, 8)..(5, 10); }
13437     @@@c:erred: <[[xp|nswf-legal-ncname]]>{ (6, 2)..(6, 4); }
13438     @@XMLTest:
13439     @@@QName: xp.name.ndata.1.0.2.test
13440     @@@DEnt:
13441     @@@@test:value:
13442     <?xml version="1.0"?>
13443     <!DOCTYPE p [
13444     <!NOTATION $u3001$u3002 SYSTEM "n">
13445     <!ENTITY e SYSTEM "s" NDATA $u3001$u3002>
13446     ]><p/>
13447     @@@c:erred: <[[xp|wf-invalid-character-in-node-name]]>{ (3, 12)..(3, 13); }
13448     @@@c:erred: <[[xp|wf-invalid-character-in-node-name]]>{ (4, 29)..(4, 30); }
13449     @@XMLTest:
13450     @@@QName: xp.name.ndata.1.1.2.test
13451     @@@DEnt:
13452     @@@@test:value:
13453     <?xml version="1.1"?>
13454     <!DOCTYPE p [
13455     <!NOTATION $u3001$u3002 SYSTEM "n">
13456     <!ENTITY e SYSTEM "s" NDATA $u3001$u3002>
13457     ]><p/>
13458     @@@test:domTree:
13459     document {
13460     xml-version: '1.1';
13461     document-type {
13462     notation {
13463     node-name: U+3001 U+3002;
13464     }
13465     general-entity {
13466     node-name: 'e';
13467     notation-name: U+3001 U+3002;
13468     }
13469     }
13470     element { }
13471     }
13472     @@XMLTest:
13473     @@@QName: xp.name.ndata.1.0.3.test
13474     @@@DEnt:
13475     @@@@test:value:
13476     <?xml version="1.0"?>
13477     <!DOCTYPE p [
13478     <!NOTATION $u3005b SYSTEM "n">
13479     <!ENTITY e SYSTEM "s" NDATA $u3005b>
13480     ]><p/>
13481     @@@c:erred: <[[xp|wf-invalid-character-in-node-name]]>{ (3, 12)..(3, 13); }
13482     @@@c:erred: <[[xp|wf-invalid-character-in-node-name]]>{ (4, 29)..(4, 30); }
13483     @@XMLTest:
13484     @@@QName: xp.name.ndata.1.1.3.test
13485     @@@DEnt:
13486     @@@@test:value:
13487     <?xml version="1.1"?>
13488     <!DOCTYPE p [
13489     <!NOTATION $u3005b SYSTEM "n">
13490     <!ENTITY e SYSTEM "s" NDATA $u3005b>
13491     ]><p/>
13492     @@@test:domTree:
13493     document {
13494     xml-version: '1.1';
13495     document-type {
13496     notation {
13497     node-name: U+3005 'b';
13498     }
13499     general-entity {
13500     node-name: 'e';
13501     notation-name: U+3005 'b';
13502     }
13503     }
13504     element { }
13505     }
13506     @@XMLTest:
13507     @@@QName: xp.name.ndata.names.1.0.1.test
13508     @@@DEnt:
13509     @@@@test:value:
13510     <?xml version="1.0"?>
13511     <!DOCTYPE p [
13512     <!NOTATION a:b SYSTEM "n">
13513     <!ENTITY e SYSTEM "s" NDATA a:b>
13514     ]><p/>
13515     @@@c:erred: <[[xp|nswf-legal-ncname]]>{ (3, 12)..(3, 14); }
13516     @@@c:erred: <[[xp|nswf-legal-ncname]]>{ (4, 29)..(4, 31); }
13517     @@XMLTest:
13518     @@@QName: xp.name.ndata.names.1.1.1.test
13519     @@@DEnt:
13520     @@@@test:value:
13521     <?xml version="1.1"?>
13522     <!DOCTYPE p [
13523     <!NOTATION a:b SYSTEM "n">
13524     <!ENTITY e SYSTEM "s" NDATA a:b>
13525     ]><p/>
13526     @@@c:erred: <[[xp|nswf-legal-ncname]]>{ (3, 12)..(3, 14); }
13527     @@@c:erred: <[[xp|nswf-legal-ncname]]>{ (4, 29)..(4, 31); }
13528    
13529     @@enImplNote:
13530     @@@ddid: wf-invalid-character-in-node-name
13531     @@@@:
13532     {ISSUE::
13533     {P:: Tests required for:
13534    
13535     - <CODE::Name> in element type declaration
13536    
13537     - <CODE::Name> in model group
13538    
13539     - <CODE::Name> in parameter entity declaration
13540    
13541     - <CODE::Name> in parameter entity reference
13542    
13543     }
13544     }
13545    
13546     @@XMLTest:
13547     @@@QName: xp.NOTATION.1.test
13548     @@@DEnt:
13549     @@@@test:value:
13550     <!DOCTYPE p [
13551     <!NOTATION n SYSTEM "m">
13552     ]><p/>
13553     @@@test:domTree:
13554     document {
13555     document-type {
13556     notation {
13557     node-name: 'n';
13558     public-id: null;
13559     system-id: 'm';
13560     }
13561     }
13562     element { }
13563     }
13564     @@XMLTest:
13565     @@@QName: xp.NOTATION.2.test
13566     @@@DEnt:
13567     @@@@test:value:
13568     <!DOCTYPE p [
13569     <!NOTATION n PUBLIC "m">
13570     ]><p/>
13571     @@@test:domTree:
13572     document {
13573     document-type {
13574     notation {
13575     node-name: 'n';
13576     system-id: null;
13577     public-id: 'm';
13578     }
13579     }
13580     element { }
13581     }
13582     @@XMLTest:
13583     @@@QName: xp.NOTATION.3.test
13584     @@@DEnt:
13585     @@@@test:value:
13586     <!DOCTYPE p [
13587     <!NOTATION n PUBLIC "m" "l">
13588     ]><p/>
13589     @@@test:domTree:
13590     document {
13591     document-type {
13592     notation {
13593     node-name: 'n';
13594     public-id: 'm';
13595     system-id: 'l';
13596     }
13597     }
13598     element { }
13599     }
13600     @@XMLTest:
13601     @@@QName: xp.NOTATION.4.test
13602     @@@DEnt:
13603     @@@@test:value:
13604     <!DOCTYPE p [
13605     <!NOTATION n SYSTEM "m">
13606     <!NOTATION n SYSTEM "l">
13607     ]><p/>
13608     @@@c:erred: <[[xp|vc-unique-notation-name]]> { (3, 1)..(3, 24); }
13609     @@@test:domTree:
13610     document {
13611     document-type {
13612     notation {
13613     node-name: 'n';
13614     system-id: 'm';
13615     }
13616     }
13617     element { }
13618     }
13619    
13620     @@XMLTest:
13621     @@@QName: xp.names.1.test
13622     @@@DEnt:
13623     @@@@test:value:
13624     <p xmlns="http://1.example/" a="b"/>
13625     @@@test:domTree:
13626     document {
13627     element {
13628     prefix: null;
13629     local-name: 'p';
13630     namespace-uri: 'http://1.example/';
13631     attribute {
13632     prefix: null;
13633     local-name: 'xmlns';
13634     namespace-uri: 'http://www.w3.org/2000/xmlns/';
13635     specified: true;
13636     }
13637     attribute {
13638     prefix: null;
13639     local-name: 'a';
13640     specified: true;
13641     }
13642     }
13643     }
13644     @@XMLTest:
13645     @@@QName: xp.names.2.test
13646     @@@DEnt:
13647     @@@@test:value:
13648     <p xmlns:a="http://1.example/" a="b" a:a="c"/>
13649     @@@test:domTree:
13650     document {
13651     element {
13652     prefix: null;
13653     local-name: 'p';
13654     namespace-uri: null;
13655     attribute {
13656     prefix: 'xmlns';
13657     local-name: 'a';
13658     namespace-uri: 'http://www.w3.org/2000/xmlns/';
13659     specified: true;
13660     }
13661     attribute {
13662     prefix: null;
13663     local-name: 'a';
13664     specified: true;
13665     }
13666     attribute {
13667     prefix: 'a';
13668     local-name: 'a';
13669     namespace-uri: 'http://1.example/';
13670     specified: true;
13671     }
13672     }
13673     }
13674     @@XMLTest:
13675     @@@QName: xp.names.3.test
13676     @@@DEnt:
13677     @@@@test:value:
13678     <a:p xmlns:a="http://1.example/" a="b" a:a="c"/>
13679     @@@test:domTree:
13680     document {
13681     element {
13682     prefix: 'a';
13683     local-name: 'p';
13684     namespace-uri: 'http://1.example/';
13685     attribute {
13686     prefix: 'xmlns';
13687     local-name: 'a';
13688     namespace-uri: 'http://www.w3.org/2000/xmlns/';
13689     specified: true;
13690     }
13691     attribute {
13692     prefix: null;
13693     local-name: 'a';
13694     specified: true;
13695     }
13696     attribute {
13697     prefix: 'a';
13698     local-name: 'a';
13699     namespace-uri: 'http://1.example/';
13700     specified: true;
13701     }
13702     }
13703     }
13704     @@XMLTest:
13705     @@@QName: xp.names.5.test
13706     @@@DEnt:
13707     @@@@test:value:
13708     <p xmlns:a="http://1.example/">$
13709     <a:q/>$
13710     </p>
13711     @@@test:domTree:
13712     document {
13713     element {
13714     prefix: null;
13715     local-name: 'p';
13716     namespace-uri: null;
13717     attribute {
13718     prefix: 'xmlns';
13719     local-name: 'a';
13720     namespace-uri: 'http://www.w3.org/2000/xmlns/';
13721     specified: true;
13722     }
13723     element {
13724     prefix: 'a';
13725     local-name: 'q';
13726     namespace-uri: 'http://1.example/';
13727     }
13728     }
13729     }
13730     @@XMLTest:
13731     @@@QName: xp.names.6.test
13732     @@@DEnt:
13733     @@@@test:value:
13734     <p xmlns:a="http://1.example/">$
13735     <q a:b="c"/>$
13736     </p>
13737     @@@test:domTree:
13738     document {
13739     element {
13740     prefix: null;
13741     local-name: 'p';
13742     namespace-uri: null;
13743     attribute {
13744     prefix: 'xmlns';
13745     local-name: 'a';
13746     namespace-uri: 'http://www.w3.org/2000/xmlns/';
13747     specified: true;
13748     }
13749     element {
13750     prefix: null;
13751     local-name: 'q';
13752     namespace-uri: null;
13753     attribute {
13754     prefix: 'a';
13755     local-name: 'b';
13756     namespace-uri: 'http://1.example/';
13757     specified: true;
13758     }
13759     }
13760     }
13761     }
13762     @@XMLTest:
13763     @@@QName: xp.names.7.test
13764     @@@DEnt:
13765     @@@@test:value:
13766     <p xmlns:a="http://1.example/">$
13767     <q a:b="c" xmlns:a="http://2.example/"/>$
13768     </p>
13769     @@@test:domTree:
13770     document {
13771     element {
13772     prefix: null;
13773     local-name: 'p';
13774     namespace-uri: null;
13775     attribute {
13776     prefix: 'xmlns';
13777     local-name: 'a';
13778     namespace-uri: 'http://www.w3.org/2000/xmlns/';
13779     specified: true;
13780     }
13781     element {
13782     prefix: null;
13783     local-name: 'q';
13784     namespace-uri: null;
13785     attribute {
13786     prefix: 'a';
13787     local-name: 'b';
13788     namespace-uri: 'http://2.example/';
13789     specified: true;
13790     }
13791     attribute {
13792     prefix: 'xmlns';
13793     local-name: 'a';
13794     namespace-uri: 'http://www.w3.org/2000/xmlns/';
13795     specified: true;
13796     }
13797     }
13798     }
13799     }
13800    
13801     @@XMLTest:
13802     @@@QName: xp.names.undeclare.1.test
13803     @@@DEnt:
13804     @@@@test:value:
13805     <p xmlns="http://1.example/">$
13806     <q xmlns="">$
13807     <r xmlns="http://2.example/"/>$
13808     </q>$
13809     </p>
13810     @@@test:domTree:
13811     document {
13812     element {
13813     prefix: null;
13814     local-name: 'p';
13815     namespace-uri: 'http://1.example/';
13816     attribute {
13817     prefix: null;
13818     local-name: 'xmlns';
13819     namespace-uri: 'http://www.w3.org/2000/xmlns/';
13820     specified: true;
13821     }
13822     element {
13823     prefix: null;
13824     local-name: 'q';
13825     namespace-uri: null;
13826     attribute {
13827     prefix: null;
13828     local-name: 'xmlns';
13829     namespace-uri: 'http://www.w3.org/2000/xmlns/';
13830     specified: true;
13831     }
13832     element {
13833     prefix: null;
13834     local-name: 'r';
13835     namespace-uri: 'http://2.example/';
13836     attribute {
13837     prefix: null;
13838     local-name: 'xmlns';
13839     namespace-uri: 'http://www.w3.org/2000/xmlns/';
13840     specified: true;
13841     }
13842     }
13843     }
13844     }
13845     }
13846    
13847     @@XMLTest:
13848     @@@QName: xp.names.undeclare.1.0.1.test
13849     @@@DEnt:
13850     @@@@test:value:
13851     <?xml version="1.0"?>
13852     <a:p xmlns:a="http://1.example/">$
13853     <q xmlns:a="">$
13854     <a:r xmlns:a="http://2.example/"/>$
13855     </q>$
13856     </a:p>
13857     @@@c:erred: <[[xp|nswf-empty-namespace-name]]> { (2, 34)..(2, 47); }
13858     @@XMLTest:
13859     @@@QName: xp.names.undeclare.1.1.1.test
13860     @@@DEnt:
13861     @@@@test:value:
13862     <?xml version="1.1"?>
13863     <a:p xmlns:a="http://1.example/">$
13864     <q xmlns:a="">$
13865     <a:r xmlns:a="http://2.example/"/>$
13866     </q>$
13867     </a:p>
13868     @@@test:domTree:
13869     document {
13870     element {
13871     prefix: 'a';
13872     local-name: 'p';
13873     namespace-uri: 'http://1.example/';
13874     attribute {
13875     prefix: 'xmlns';
13876     local-name: 'a';
13877     namespace-uri: 'http://www.w3.org/2000/xmlns/';
13878     specified: true;
13879     }
13880     element {
13881     prefix: null;
13882     local-name: 'q';
13883     namespace-uri: null;
13884     attribute {
13885     prefix: 'xmlns';
13886     local-name: 'a';
13887     namespace-uri: 'http://www.w3.org/2000/xmlns/';
13888     specified: true;
13889     }
13890     element {
13891     prefix: 'a';
13892     local-name: 'r';
13893     namespace-uri: 'http://2.example/';
13894     attribute {
13895     prefix: 'xmlns';
13896     local-name: 'a';
13897     namespace-uri: 'http://www.w3.org/2000/xmlns/';
13898     specified: true;
13899     }
13900     }
13901     }
13902     }
13903     }
13904     @@XMLTest:
13905     @@@QName: xp.names.undeclare.1.1.2.test
13906     @@@DEnt:
13907     @@@@test:value:
13908     <?xml version="1.1"?>
13909     <a:p xmlns:a="http://1.example/">$
13910     <q xmlns:a="">$
13911     <a:r/>$
13912     </q>$
13913     </a:p>
13914     @@@c:erred: <[[xp|nsc-prefix-declared]]> { (2, 48)..(2, 53); }
13915    
13916     @@XMLTest:
13917     @@@QName: xp.names.xml.prefix.1.test
13918     @@@DEnt:
13919     @@@@test:value:
13920     <a xmlns:xml="http://www.w3.org/XML/1998/namespace"/>
13921     @@@test:domTree:
13922     document {
13923     element {
13924     attribute {
13925     prefix: 'xmlns';
13926     local-name: 'xml';
13927     namespace-uri: 'http://www.w3.org/2000/xmlns/';
13928     }
13929     }
13930     }
13931     @@XMLTest:
13932     @@@QName: xp.names.xml.prefix.2.test
13933     @@@DEnt:
13934     @@@@test:value:
13935     <a xmlns:xml="a"/>
13936     @@@c:erred: <[[xp|nsc-reserved-prefix-xml]]> { (1, 1)..(1, 18); }
13937     @@XMLTest:
13938     @@@QName: xp.names.xml.prefix.3.test
13939     @@@DEnt:
13940     @@@@test:value:
13941     <a xmlns:a="http://www.w3.org/XML/1998/namespace"
13942     />
13943     @@@c:erred: <[[xp|nsc-reserved-namespace-name-xml]]> { (1, 1)..(2, 2); }
13944     @@XMLTest:
13945     @@@QName: xp.names.xml.prefix.4.test
13946     @@@DEnt:
13947     @@@@test:value:
13948     <a xml:lang="ja"/>
13949     @@@test:domTree:
13950     document {
13951     element {
13952     attribute {
13953     prefix: 'xml';
13954     local-name: 'lang';
13955     namespace-uri: 'http://www.w3.org/XML/1998/namespace';
13956     }
13957     }
13958     }
13959    
13960     @@XMLTest:
13961     @@@QName: xp.names.prefix.declared.1.test
13962     @@@DEnt:
13963     @@@@test:value:
13964     <!DOCTYPE a [
13965     <!ATTLIST a
13966     b:c CDATA "d"
13967     >
13968     ]>
13969     <a/>
13970     @@@c:erred: <[[xp|nsc-prefix-declared]]> { (6, 1)..(6, 4); }
13971    
13972     @@XMLTest:
13973     @@@QName: xp.names.xmlns.reserved.1.test
13974     @@@DEnt:
13975     @@@@test:value:
13976     <a xmlns:xmlns="http://www.w3.org/2000/xmlns/"
13977     />
13978     @@@c:erred: <[[xp|nsc-reserved-prefix-xmlns]]> { (1, 1)..(2, 2); }
13979     @@@c:erred: <[[xp|nsc-reserved-namespace-name-xmlns]]> { (1, 1)..(2, 2); }
13980     @@XMLTest:
13981     @@@QName: xp.names.xmlns.reserved.2.test
13982     @@@DEnt:
13983     @@@@test:value:
13984     <a xmlns:xmlns="a"
13985     />
13986     @@@c:erred: <[[xp|nsc-reserved-prefix-xmlns]]> { (1, 1)..(2, 2); }
13987     @@XMLTest:
13988     @@@QName: xp.names.xmlns.reserved.3.test
13989     @@@DEnt:
13990     @@@@test:value:
13991     <a xmlns:a="http://www.w3.org/2000/xmlns/"
13992     />
13993     @@@c:erred: <[[xp|nsc-reserved-namespace-name-xmlns]]> { (1, 1)..(2, 2); }
13994    
13995     @@XMLTest:
13996     @@@QName: xp.names.default.1.test
13997     @@@DEnt:
13998     @@@@test:value:
13999     <!DOCTYPE a [
14000     <!ATTLIST a
14001     xmlns CDATA "http://1.example/">
14002     ]>
14003     <a/>
14004     @@@test:domTree:
14005     document {
14006     document-type {
14007     element-type-definition {
14008     node-name: 'a';
14009     attribute-definition {
14010     node-name: 'xmlns';
14011     node-value: 'http://1.example/';
14012     }
14013     }
14014     }
14015     element {
14016     prefix: null;
14017     local-name: 'a';
14018     namespace-uri: 'http://1.example/';
14019     attribute {
14020     prefix: null;
14021     local-name: 'xmlns';
14022     namespace-uri: 'http://www.w3.org/2000/xmlns/';
14023     value: 'http://1.example/';
14024     specified: false;
14025     }
14026     }
14027     }
14028     @@XMLTest:
14029     @@@QName: xp.names.default.2.test
14030     @@@DEnt:
14031     @@@@test:value:
14032     <!DOCTYPE a [
14033     <!ATTLIST a
14034     xmlns CDATA "http://1.example/">
14035     ]>
14036     <a xmlns="http://2.example/"/>
14037     @@@test:domTree:
14038     document {
14039     document-type {
14040     element-type-definition {
14041     node-name: 'a';
14042     attribute-definition {
14043     node-name: 'xmlns';
14044     node-value: 'http://1.example/';
14045     }
14046     }
14047     }
14048     element {
14049     prefix: null;
14050     local-name: 'a';
14051     namespace-uri: 'http://2.example/';
14052     attribute {
14053     prefix: null;
14054     local-name: 'xmlns';
14055     namespace-uri: 'http://www.w3.org/2000/xmlns/';
14056     value: 'http://2.example/';
14057     specified: true;
14058     }
14059     }
14060     }
14061     @@XMLTest:
14062     @@@QName: xp.names.default.3.test
14063     @@@DEnt:
14064     @@@@test:value:
14065     <!DOCTYPE b:a [
14066     <!ATTLIST b:a
14067     xmlns:b CDATA "http://1.example/">
14068     ]>
14069     <b:a/>
14070     @@@test:domTree:
14071     document {
14072     document-type {
14073     element-type-definition {
14074     node-name: 'b:a';
14075     attribute-definition {
14076     node-name: 'xmlns:b';
14077     node-value: 'http://1.example/';
14078     }
14079     }
14080     }
14081     element {
14082     prefix: 'b';
14083     local-name: 'a';
14084     namespace-uri: 'http://1.example/';
14085     attribute {
14086     prefix: 'xmlns';
14087     local-name: 'b';
14088     namespace-uri: 'http://www.w3.org/2000/xmlns/';
14089     value: 'http://1.example/';
14090     specified: false;
14091     }
14092     }
14093     }
14094     @@XMLTest:
14095     @@@QName: xp.names.default.4.test
14096     @@@DEnt:
14097     @@@@test:value:
14098     <!DOCTYPE b:a [
14099     <!ATTLIST b:a
14100     xmlns:b CDATA "http://1.example/">
14101     ]>
14102     <b:a xmlns:b="http://2.example/"/>
14103     @@@test:domTree:
14104     document {
14105     document-type {
14106     element-type-definition {
14107     node-name: 'b:a';
14108     attribute-definition {
14109     node-name: 'xmlns:b';
14110     node-value: 'http://1.example/';
14111     }
14112     }
14113     }
14114     element {
14115     prefix: 'b';
14116     local-name: 'a';
14117     namespace-uri: 'http://2.example/';
14118     attribute {
14119     prefix: 'xmlns';
14120     local-name: 'b';
14121     namespace-uri: 'http://www.w3.org/2000/xmlns/';
14122     value: 'http://2.example/';
14123     specified: true;
14124     }
14125     }
14126     }
14127     @@XMLTest:
14128     @@@QName: xp.names.default.5.test
14129     @@@DEnt:
14130     @@@@test:value:
14131     <!DOCTYPE a [
14132     <!ATTLIST a
14133     xmlns:b CDATA "http://1.example/"
14134     b:c CDATA "http://1.example/">
14135     ]>
14136     <a xmlns:b="http://2.example/"/>
14137     @@@test:domTree:
14138     document {
14139     document-type {
14140     element-type-definition {
14141     node-name: 'a';
14142     attribute-definition {
14143     node-name: 'xmlns:b';
14144     text-content: 'http://1.example/';
14145     }
14146     attribute-definition {
14147     node-name: 'b:c';
14148     text-content: 'http://1.example/';
14149     }
14150     }
14151     }
14152     element {
14153     prefix: null;
14154     local-name: 'a';
14155     namespace-uri: null;
14156     attribute {
14157     prefix: 'xmlns';
14158     local-name: 'b';
14159     namespace-uri: 'http://www.w3.org/2000/xmlns/';
14160     value: 'http://2.example/';
14161     specified: true;
14162     }
14163     attribute {
14164     prefix: 'b';
14165     local-name: 'c';
14166     namespace-uri: 'http://2.example/';
14167     specified: false;
14168     }
14169     }
14170     }
14171    
14172     @@XMLTest:
14173     @@@QName: xp.names.unique.1.test
14174     @@@DEnt:
14175     @@@@test:value:
14176     <a
14177     xmlns:b="http://2.example/"
14178     xmlns:c="http://2.example/"
14179     b:d=""
14180     c:d=""
14181     />
14182     @@@c:erred: <[[xp|nswf-unique-att-spec-expanded-name]]> { (1, 1)..(6, 2); }
14183     @@XMLTest:
14184     @@@QName: xp.names.unique.2.test
14185     @@@DEnt:
14186     @@@@test:value:
14187     <!DOCTYPE a [
14188     <!ATTLIST a
14189     c:d CDATA ""
14190     >
14191     ]>
14192     <a
14193     xmlns:b="http://2.example/"
14194     xmlns:c="http://2.example/"
14195     b:d=""
14196     />
14197     @@@c:erred: <[[xp|nswf-unique-att-spec-expanded-name]]> { (6, 1)..(10, 2);}
14198     @@XMLTest:
14199     @@@QName: xp.names.unique.3.test
14200     @@@DEnt:
14201     @@@@test:value:
14202     <!DOCTYPE a [
14203     <!ATTLIST a
14204     c:d CDATA "value1"
14205     >
14206     ]>
14207     <a
14208     xmlns:c="http://2.example/"
14209     c:d="value2"
14210     />
14211     @@@test:domTree:
14212     document {
14213     document-type { }
14214     element {
14215     attribute {
14216     prefix: 'xmlns';
14217     local-name: 'c';
14218     namespace-uri: 'http://www.w3.org/2000/xmlns/';
14219     specified: true;
14220     }
14221     attribute {
14222     prefix: 'c';
14223     local-name: 'd';
14224     namespace-uri: 'http://2.example/';
14225     value: 'value2';
14226     specified: true;
14227     }
14228     }
14229     }
14230    
14231     @@XMLTest:
14232     @@@QName: xp.names.normalize.1.test
14233     @@@DEnt:
14234     @@@@test:value:
14235     <!DOCTYPE a [
14236     <!ATTLIST a
14237     xmlns NMTOKEN #IMPLIED
14238     >
14239     ]>
14240     <a xmlns=" "/>
14241     @@@test:domTree:
14242     document {
14243     document-type { }
14244     element {
14245     namespace-uri: null;
14246     prefix: null;
14247     local-name: 'a';
14248     }
14249     }
14250     @@XMLTest:
14251     @@@QName: xp.names.normalize.2.test
14252     @@@DEnt:
14253     @@@@test:value:
14254     <!DOCTYPE a [
14255     <!ATTLIST a
14256     xmlns NMTOKEN #IMPLIED
14257     >
14258     ]>
14259     <a xmlns=" about:blank "/>
14260     @@@test:domTree:
14261     document {
14262     document-type { }
14263     element {
14264     namespace-uri: 'about:blank';
14265     prefix: null;
14266     local-name: 'a';
14267     }
14268     }
14269     @@XMLTest:
14270     @@@QName: xp.names.normalize.3.test
14271     @@@DEnt:
14272     @@@@test:value:
14273     <!DOCTYPE a:a [
14274     <!ATTLIST a:a
14275     xmlns:a NMTOKEN #IMPLIED
14276     >
14277     ]>
14278     <a:a xmlns:a=" about:blank "/>
14279     @@@test:domTree:
14280     document {
14281     document-type { }
14282     element {
14283     namespace-uri: 'about:blank';
14284     prefix: 'a';
14285     local-name: 'a';
14286     }
14287     }
14288    
14289     @@PerlDef:
14290     my $impl = $Message::DOM::ImplementationRegistry->get_implementation ({
14291     'Core' => '3.0',
14292     'XML' => '3.0',
14293     'XMLVersion' => ['1.0', '1.1'],
14294     });
14295     my $parser = <Class::ManakaiXMLParser>->new ($impl);
14296    
14297     for my $test_data (@$TestData) {
14298     $test->start_new_test ($test_data->{uri});
14299     my $doc_ent = $test_data->{entity}->{$test_data->{root_uri}};
14300     my $not_ok;
14301    
14302     $parser->dom_config->set_parameter ('error-handler' => sub ($$) {
14303     my (undef, $err) = @_;
14304     my $err_type = $err->type;
14305     if ($test_data->{dom_error}->{$err_type}) {
14306     $test->assert_error_equals
14307     (actual_value => $err,
14308     expected_hash => shift @{$test_data->{dom_error}
14309     ->{$err_type}});
14310     } else { # Uncatched error
14311     warn $err;
14312     unless ($err->severity == <C::c|DOMError.SEVERITY_WARNING>) {
14313     $test->failure_comment ('Unexpected error |'.$err->type.'|');
14314     $not_ok = true;
14315     }
14316     }
14317     return true; # continue as far as possible
14318     });
14319    
14320     if ($test_data->{dom_tree}) { # Successful test
14321     try {
14322     my $doc = $parser->parse_string ($doc_ent->{<H::test:value>});
14323     $test->assert_dom_tree_equals
14324     (actual_value => $doc,
14325     expected_hash => $test_data->{dom_tree});
14326     for (values %{$test_data->{dom_error}||{}}) {
14327     if (@$_) {
14328     $test->failure_comment
14329     (@$_.' |DOMError|s of type |'.
14330     $_->[0]->{type}->{value}.'| are not reported');
14331     $not_ok = true;
14332     }
14333     }
14334     $not_ok ? $test->not_ok : $test->ok;
14335     } catch Message::Util::IF::DTException with {
14336     #
14337     } catch Message::DOM::IF::LSException with {
14338     # not_ok
14339     } otherwise {
14340     my $err = shift;
14341     warn $err;
14342     $test->not_ok;
14343     };
14344     } else {
14345     try {
14346     my $doc = $parser->parse_string ($doc_ent->{<H::test:value>});
14347     } catch Message::Util::IF::DTException with {
14348     #
14349     } catch Message::DOM::IF::LSException with {
14350     #
14351     } otherwise {
14352     my $err = shift;
14353     warn $err;
14354     $test->not_ok;
14355     };
14356     for (values %{$test_data->{dom_error}||{}}) {
14357     if (@$_) {
14358     $test->failure_comment
14359     (@$_.' |DOMError|s of type |'.
14360     $_->[0]->{type}->{value}.'| are not reported');
14361     $not_ok = true;
14362     }
14363     }
14364     $not_ok ? $test->not_ok : $test->ok;
14365 wakaba 1.12 }
14366 wakaba 1.5 }
14367 wakaba 1.6
14368     @ResourceDef:
14369 wakaba 1.19 @@QName: getEmptyEntityState
14370     @@rdf:type: DISPerl|InlineCode
14371     @@ForCheck: ManakaiDOM|ForClass
14372     @@PerlDef:
14373     {reptxt => \'', line => 1, column => 1, pos => 0,
14374 wakaba 1.23 is_externally_declared => true, name => $name}
14375 wakaba 1.19
14376     @ResourceDef:
14377 wakaba 1.6 @@QName: getCopyOfEntityState
14378     @@rdf:type: DISPerl|InlineCode
14379     @@ForCheck: ManakaiDOM|ForClass
14380     @@PerlDef:
14381     {%{$self->{$entity_type}->{$entity_name}},
14382     line => 1, column => 1, pos => 0}
14383 wakaba 1.1 ##ManakaiXMLParser
14384 wakaba 1.5
14385     ElementTypeBinding:
14386     @Name: XMLTests
14387     @ElementType:
14388     dis:ResourceDef
14389     @ShadowContent:
14390     @@ForCheck: ManakaiDOM|ForClass
14391     @@rdf:type: test|ParserTestSet
14392    
14393     ElementTypeBinding:
14394     @Name: XMLTest
14395     @ElementType:
14396     dis:ResourceDef
14397     @ShadowContent:
14398     @@ForCheck: ManakaiDOM|ForClass
14399     @@rdf:type: test|ParserTest
14400    
14401     ElementTypeBinding:
14402     @Name: DEnt
14403     @ElementType:
14404     dis:ResourceDef
14405     @ShadowContent:
14406     @@rdf:type: test|RootEntity
14407    
14408     ElementTypeBinding:
14409     @Name: Ent
14410     @ElementType:
14411     dis:ResourceDef
14412     @ShadowContent:
14413     @@rdf:type: test|Entity
14414 wakaba 1.1
14415 wakaba 1.3 ResourceDef:
14416     @QName: xp|get-location-from-token
14417     @rdf:type: DISPerl|BlockCode
14418     @enDesc:
14419     Creates a <IF::DOMCore:DOMLocator> object from a token.
14420     @PerlDef:
14421 wakaba 1.14 my $__d = $token->{type} ne '#EOF'
14422     ? $token->{location}->{char_d}
14423     : 0;
14424 wakaba 1.15 $__d -= $token->{location_d} if $token->{location_d};
14425 wakaba 1.3 $result = {
14426 wakaba 1.14 utf32_offset => $token->{location}->{pos} - $__d,
14427     line_number => $token->{location}->{line},
14428     column_number => $token->{location}->{column} - $__d,
14429 wakaba 1.3 };
14430 wakaba 1.14 $result->{utf32_offset} = 0 if $result->{utf32_offset} < 0;
14431     $result->{column_number} = 0 if $result->{column_number} < 0;
14432     ## 0 or 1, which should be?
14433 wakaba 1.3 @For: ManakaiDOM|ManakaiDOM3
14434 wakaba 1.1
14435     ElementTypeBinding:
14436     @Name: RuleDef
14437     @ElementType:
14438     dis:ResourceDef
14439     @ShadowContent:
14440     @@ForCheck: ManakaiDOM|ForClass
14441     @@rdf:type: Muf2003|RuleDefClass
14442    
14443     ElementTypeBinding:
14444     @Name: RuleParam
14445     @ElementType:
14446     dis:ResourceDef
14447     @ShadowContent:
14448     @@rdf:type: Muf2003|RuleParameter
14449    
14450     ElementTypeBinding:
14451     @Name: enImplNote
14452     @ElementType:
14453     dis:ImplNote
14454     @ShadowContent:
14455     @@lang:en
14456    
14457     ElementTypeBinding:
14458 wakaba 1.24 @Name: WFErrDef
14459 wakaba 1.1 @ElementType:
14460     dis:ResourceDef
14461     @ShadowContent:
14462     @@rdf:type: DOMCore|DOMErrorType
14463     @@For: ManakaiDOM|DOM3
14464     @@ecore:textFormatter: ManakaiXMLParserExceptionFormatter
14465 wakaba 1.24 @@c:severity: c|SEVERITY_FATAL_ERROR
14466 wakaba 1.1
14467 wakaba 1.3 ElementTypeBinding:
14468 wakaba 1.24 @Name: FatalErrDef
14469 wakaba 1.3 @ElementType:
14470     dis:ResourceDef
14471     @ShadowContent:
14472     @@rdf:type: DOMCore|DOMErrorType
14473     @@For: ManakaiDOM|DOM3
14474     @@ecore:textFormatter: ManakaiXMLParserExceptionFormatter
14475 wakaba 1.24 @@c:severity: c|SEVERITY_FATAL_ERROR
14476    
14477     ElementTypeBinding:
14478 wakaba 1.26 @Name: NSFatalErrDef
14479     @ElementType:
14480     dis:ResourceDef
14481     @ShadowContent:
14482     @@rdf:type: c|DOMErrorType
14483     @@For: ManakaiDOM|DOM3
14484     @@ecore:textFormatter: ManakaiXMLParserExceptionFormatter
14485     @@c:severity: c|SEVERITY_FATAL_ERROR
14486    
14487     ElementTypeBinding:
14488     @Name: NSCErrDef
14489     @ElementType:
14490     dis:ResourceDef
14491     @ShadowContent:
14492     @@rdf:type: c|DOMErrorType
14493     @@For: ManakaiDOM|DOM3
14494     @@ecore:textFormatter: ManakaiXMLParserExceptionFormatter
14495     @@c:severity: c|SEVERITY_FATAL_ERROR
14496    
14497     ElementTypeBinding:
14498 wakaba 1.24 @Name: VCErrDef
14499     @ElementType:
14500     dis:ResourceDef
14501     @ShadowContent:
14502     @@rdf:type: c|DOMErrorType
14503     @@For: ManakaiDOM|DOM3
14504     @@ecore:textFormatter: ManakaiXMLParserExceptionFormatter
14505     @@c:severity: c|SEVERITY_ERROR
14506    
14507     ElementTypeBinding:
14508     @Name: ErrDef
14509     @ElementType:
14510     dis:ResourceDef
14511     @ShadowContent:
14512     @@rdf:type: c|DOMErrorType
14513     @@For: ManakaiDOM|DOM3
14514     @@ecore:textFormatter: ManakaiXMLParserExceptionFormatter
14515     @@c:severity: c|SEVERITY_ERROR
14516 wakaba 1.3
14517 wakaba 1.16 ElementTypeBinding:
14518 wakaba 1.24 @Name: WarnDef
14519 wakaba 1.16 @ElementType:
14520     dis:ResourceDef
14521     @ShadowContent:
14522 wakaba 1.24 @@rdf:type: c|DOMErrorType
14523 wakaba 1.16 @@For: ManakaiDOM|DOM3
14524     @@ecore:textFormatter: ManakaiXMLParserExceptionFormatter
14525 wakaba 1.24 @@c:severity: c|SEVERITY_WARNING
14526 wakaba 1.16
14527 wakaba 1.3 WFErrDef:
14528     @QName: xp|wf-syntax-error
14529     @enDesc:
14530     The entity does not match to the production rule; it is not
14531     well-formed.
14532     @enMufDef:
14533     |%xp-error-token-type;|%xp-error-token-value
14534     (prefix => { (|}, suffix => {|)}); is not
14535     allowed%xp-error-lines (prefix => { (|}, suffix => {|)});
14536     @ecore:hasParameter:
14537     @@@: xp|error-token
14538     @@enDesc:
14539     The token that is not allowed.
14540    
14541     WFErrDef:
14542     @QName: xp|wf-pi-target-is-xml
14543     @enDesc:
14544     A processing instruction has its <CODE::PITarget> of
14545     <XML::xml> (in any case) which is not allowed.
14546     @enMufDef:
14547     Processing instruction target name cannot be |%p
14548     (name => {<Q::xp|name>});|
14549     @ecore:hasParameter:
14550     @@@: xp|error-token
14551     @@enDesc:
14552     The token that contains the name.
14553     @ecore:hasParameter:
14554     @@@: xp|name
14555     @@enDesc:
14556     A string that is specified as target name of the
14557     processing instruction.
14558     @ecore:hasParameter: xp|parent
14559    
14560     WFErrDef:
14561     @QName: xp|wf-no-end-tag
14562     @enDesc:
14563     An end-tag is not found.
14564     @enMufDef:
14565     End-tag |</%p (name => {<Q::xp|expected-element-type>});>| is required
14566     @ecore:hasParameter: xp|error-token
14567     @ecore:hasParameter:
14568     @@@: xp|node
14569     @@enDesc:
14570     The element node that is not closed.
14571     @ecore:hasParameter:
14572     @@@: xp|expected-element-type
14573     @@enDesc:
14574     The element type name of the element that is not closed.
14575    
14576     WFErrDef:
14577     @QName: xp|wf-unsupported-xml-version
14578     @enDesc:
14579     The XML version specified in the version declaration is not supported.
14580     @enMufDef:
14581     XML version |%p (name => {<Q::infoset|version>});| is not supported
14582     @ecore:hasParameter: xp|bad-token
14583     @ecore:hasParameter:
14584     @@@: xp|parent
14585     @@enDesc:
14586     The document node.
14587     @ecore:hasParameter:
14588     @@@: infoset|version
14589     @@enDesc:
14590     The specified XML version.
14591    
14592     WFErrDef:
14593     @QName: xp|wf-malformed-enc-name
14594     @enDesc:
14595     An <XA::encoding> pseudo-attribute value does not match
14596     to the procduction rule <CODE::EncName>.
14597     @enMufDef:
14598     Encoding name |%p (name => {<Q::xp|name>});| is not allowed
14599     @ecore:hasParameter: xp|error-token
14600     @ecore:hasParameter:
14601     @@@: xp|parent
14602     @@enDesc: The document node.
14603     @ecore:hasParameter:
14604     @@@: xp|name
14605     @@enDesc:
14606     The <XA::encoding> value.
14607    
14608     WFErrDef:
14609     @QName: xp|wf-malformed-xml-standalone
14610     @enDesc:
14611     An <XA::standalone> pseudo-attribute value is neither <XML::yes>
14612     or <XML::no>.
14613     @enMufDef:
14614     |standalone| pseudo-attribute value |%p (name => {<Q::xp|name>});|
14615     is not allowed
14616     @ecore:hasParameter: xp|error-token
14617     @ecore:hasParameter:
14618     @@@: xp|parent
14619     @@enDesc: The document node.
14620     @ecore:hasParameter:
14621     @@@: xp|name
14622     @@enDesc:
14623     The <XA::standalone> value.
14624    
14625     WFErrDef:
14626     @QName: xp|wf-legal-literal-character
14627     @enDesc:
14628     Each character in XML entity must match to the production
14629     rule <CODE::Char - RestrictedChar>.
14630     @enMufDef:
14631     Character %character-code-point
14632     (v => {<Q::xp|character-number>}); is not allowed
14633     @ecore:hasParameter:
14634     @@@: xp|character-number
14635     @@enDesc:
14636     The code position of the character being referred.
14637    
14638     WFErrDef:
14639 wakaba 1.26 @QName: xp|wf-invalid-character-in-node-name
14640     @c:errorType:
14641     @@@: wf-invalid-character-in-node-name
14642     @@ContentType: DISCore|String
14643     @enDesc:
14644     If a name contains a character that is not a name character
14645     in the XML version in use, or if the first character of a name
14646     is not a name start character in the XML version in use.
14647    
14648     {NOTE::
14649     When an invalid character is encountered in an entity
14650     where a <CODE::Name> is expected, what type of error
14651     is issued is implementation dependent: <Q::xp|wf-syntax-error>,
14652     <Q::xp|wf-pi-target-is-xml> or other error might be reported.
14653     }
14654    
14655     {NOTE::
14656     This error type is defined in DOM Level 3 Core and Load and Save
14657     modules and redefined herein for the purpose of XML parser.
14658     }
14659     @enMufDef:
14660     Character %character-code-point
14661     (v => {<Q::xp|character-number>}); is not allowed in name
14662     @ecore:hasParameter: xp|error-token
14663     @ecore:hasParameter:
14664     @@@: xp|character-number
14665     @@enDesc:
14666     The code position of the character being referred.
14667     @ecore:hasParameter:
14668     @@@: infoset|version
14669     @@enDesc:
14670     The version of XML in use.
14671    
14672     WFErrDef:
14673 wakaba 1.25 @QName: xp|wf-pes-in-internal-subset
14674     @enDesc:
14675     In the internal subset of the DTD, parameter entity references
14676     <kwd:MUST-NOT> occur within markup declarations.
14677     @enMufDef:
14678     Parameter entity reference |%percent;%param (name => {<Q::xp|name>});;|
14679     cannot occur within a markup declaration
14680     @ecore:hasParameter: xp|error-token
14681     @ecore:hasParameter:
14682     @@@: xp|name
14683     @@enDesc:
14684     The name of the parameter entity.
14685    
14686     WFErrDef:
14687 wakaba 1.3 @QName: xp|wf-element-type-match
14688 wakaba 1.1 @enDesc:
14689 wakaba 1.3 The <CODE::Name> in an element's end-tag must match the element type
14690     in the start-tag.
14691     @enMufDef:
14692     End-tag |</%p (name => {<Q::xp|actual-element-type>});>| does
14693     not match to start-tag |<%p (name => {<Q::xp|expected-element-type>});>|
14694     @ecore:hasParameter: xp|error-token
14695     @ecore:hasParameter:
14696     @@@: xp|node
14697     @@enDesc:
14698     The current opening element node.
14699     @ecore:hasParameter:
14700     @@@: xp|expected-element-type
14701     @@enDesc:
14702     The element type name of the current element.
14703     @ecore:hasParameter:
14704     @@@: xp|actual-element-type
14705     @@enDesc:
14706     The <CODE::Name> occurs in the end-tag.
14707    
14708     WFErrDef:
14709     @QName: xp|wf-unique-att-spec
14710     @enDesc:
14711     An attribute name <kwd:MUST-NOT> appear more than once in
14712     the same start-tag or empty-element tag.
14713 wakaba 1.1 @enMufDef:
14714 wakaba 1.3 Attribute |%p (name => {<Q::xp|name>});| is specified more
14715     than once in the same tag
14716     @ecore:hasParameter: xp|error-token
14717     @ecore:hasParameter:
14718     @@@: xp|name
14719     @@enDesc:
14720     The name of the attribute.
14721 wakaba 1.18
14722     WFErrDef:
14723     @QName: xp|wf-no-external-entity-references
14724     @enDesc:
14725     Attribute values <kwd:MUST-NOT> contain direct or indirect
14726     entity references to external entities.
14727     @enMufDef:
14728     External entity |%p (name => {<Q::xp|name>});| is referenced
14729     in an attribute value literal
14730     @ecore:hasParameter: xp|error-token
14731     @ecore:hasParameter:
14732     @@@: xp|name
14733     @@enDesc:
14734     The name of the entity.
14735    
14736     WFErrDef:
14737     @QName: xp|wf-no-lt-in-attribute-values
14738     @enDesc:
14739     The replacement text of any entity referred to directly or indirectly
14740     in an attribute value literal <kwd:MUST-NOT> contain a
14741     <CHAR::LESS-THAN SIGN>.
14742     @enMufDef:
14743     Entity replacement text cannot contain a
14744     |LESS-THAN SIGN| since it is referenced from an attribute
14745     value literal
14746     @ecore:hasParameter: xp|error-token
14747 wakaba 1.3
14748 wakaba 1.25 WarnDef:
14749     @QName: xp|warning-attribute-definition-ignored
14750     @enDesc:
14751     An attribute definition is ignored because the same attribute
14752     is declared before.
14753     @enMufDef:
14754     Attribute definition for |%p (name => {<Q::xp|name>});| is ignored
14755     @ecore:hasParameter: xp|error-token
14756     @ecore:hasParameter:
14757     @@@: xp|name
14758     @@enDesc:
14759     The name of the attribute.
14760    
14761 wakaba 1.3 WFErrDef:
14762     @QName: xp|wf-legal-character
14763     @enDesc:
14764     Characters referred to using character references <kwd:MUST>
14765     match the production for <CODE::Char>.
14766     @enMufDef:
14767     Reference to character %character-code-point
14768     (v => {<Q::xp|character-number>}); is not allowed
14769     @ecore:hasParameter: xp|error-token
14770     @ecore:hasParameter:
14771     @@@: xp|character-number
14772     @@enDesc:
14773     The code position of the character being referred.
14774     @ecore:hasParameter:
14775     @@@: xp|parent
14776     @@enDesc:
14777     The parent node in which the character reference has
14778     occurred, if available.
14779 wakaba 1.19
14780     WFErrDef:
14781     @QName: xp|wf-entity-declared
14782     @enDesc:
14783     {P:: In a document
14784    
14785     - without any DTD,
14786    
14787     - with only an internal DTD subset that contains no parameter
14788     entity references, or
14789    
14790     - with <XML::standalone="yes">,
14791    
14792     for an entity reference that does not occur within the external
14793     subset or a parameter entity, the <CODE::Name> given in the
14794     entity reference <kwd:MUST> match the <CODE::Name> does not
14795     occur within the external subset or a parameter entity,
14796     except that five predefined character entities need not
14797     be declared. The declaration of a general entity <kwd:MUST>
14798     precede any reference to it which appears in a default value
14799     in an attribute list declaration.
14800     @enMufDef:
14801     Entity |%p (name => {<Q::xp|name>});| must be declared
14802     in the internal subset
14803 wakaba 1.23 @ecore:hasParameter: xp|error-token
14804     @ecore:hasParameter:
14805     @@@: xp|name
14806     @@enDesc:
14807     The name of the entity.
14808    
14809     WFErrDef:
14810     @QName: xp|wf-parsed-entity
14811     @enDesc:
14812     An entity reference <kwd:MUST-NOT> contain the name of an
14813     unparsed entity.
14814     @enMufDef:
14815     Entity |%p (name => {<Q::xp|name>});| is an unparsed entity
14816     @ecore:hasParameter: xp|error-token
14817     @ecore:hasParameter:
14818     @@@: xp|name
14819     @@enDesc:
14820     The name of the entity.
14821    
14822     WFErrDef:
14823     @QName: xp|wf-no-recursion
14824     @enDesc:
14825     A parsed entity <kwd:MUST-NOT> contain a recursive reference
14826     to itself, either directly or indirectly.
14827     @enMufDef:
14828     Entity |%p (name => {<Q::xp|name>});| is recursively referenced
14829 wakaba 1.19 @ecore:hasParameter: xp|error-token
14830     @ecore:hasParameter:
14831     @@@: xp|name
14832     @@enDesc:
14833     The name of the entity.
14834 wakaba 1.16
14835     FatalErrDef:
14836     @QName: xp|fatal-xml11-end-of-line-in-xml-declaration
14837     @enDesc:
14838     An end-of-line character <CODE::U+0085> or <CODE::U+2028> is appeared
14839     within an XML declaration or text declaration.
14840     @enMufDef:
14841     End-of-line character %character-code-point
14842     (v => {<Q::xp|character-number>}); cannot be used within the
14843     XML or text declaration
14844     @ecore:hasParameter:
14845     @@@: xp|character-number
14846     @@enDesc:
14847     The code position of the end-of-line character.
14848 wakaba 1.24
14849     ErrDef:
14850     @QName: xp|error-internal-predefined-entity
14851     @enDesc:
14852     A general entity declaration whose <CODE::Name> equals to one
14853     of predefined entities <kwd:MUST> declare it as an internal entity.
14854     @enMufDef:
14855     Entity |%p (name => {<Q::xp|name>});| must be declared as an
14856     internal entity
14857     @ecore:hasParameter: xp|error-token
14858     @ecore:hasParameter:
14859     @@@: xp|name
14860     @@enDesc:
14861     The name of the entity.
14862    
14863     ErrDef:
14864     @QName: xp|error-malformed-predefined-entity
14865     @enDesc:
14866     A general entity declaration whose <CODE::Name> equals to one
14867     of predefined entities <kwd:MUST> declare it as a data
14868     character for the entity.
14869     @enMufDef:
14870     Entity declaration for |%p (name => {<Q::xp|name>});|
14871     (replacement text |%p (name => {<Q::xp|replacement-text>});|) is malformed
14872     @ecore:hasParameter: xp|error-token
14873     @ecore:hasParameter:
14874     @@@: xp|name
14875     @@enDesc:
14876     The name of the entity.
14877     @ecore:hasParameter:
14878     @@@: xp|replacement-text
14879     @@enDesc:
14880     The replacement text of the entity declaration.
14881    
14882     WarnDef:
14883     @QName: xp|warning-entity-declaration-ignored
14884     @enDesc:
14885     An entity declaration is ignored because the same entity
14886     is declared before.
14887     @enMufDef:
14888     Entity declaration for |%p (name => {<Q::xp|name>});| is ignored
14889     @ecore:hasParameter: xp|error-token
14890     @ecore:hasParameter:
14891     @@@: xp|name
14892     @@enDesc:
14893     The name of the entity.
14894    
14895     VCErrDef:
14896     @QName: xp|vc-unique-notation-name
14897     @enDesc:
14898     A <CODE::Name> <kwd:MUST-NOT> be declared in more than
14899     one notation declaration.
14900     @enMufDef:
14901     Notation |%p (name => {<Q::xp|name>});| is already declared
14902     @ecore:hasParameter: xp|error-token
14903     @ecore:hasParameter:
14904     @@@: xp|name
14905     @@enDesc:
14906     The name of the notation.
14907 wakaba 1.25
14908     WarnDef:
14909     @QName: xp|warning-entity-declaration-not-processed
14910     @enDesc:
14911     An entity declaration is not processed because there
14912     is a reference to parameter entity before the declaration
14913     and the entity is not read.
14914     @enMufDef:
14915     Entity declaration for |%p (name => {<Q::xp|name>});| is not processed
14916     @ecore:hasParameter: xp|error-token
14917     @ecore:hasParameter:
14918     @@@: xp|name
14919     @@enDesc:
14920     The name of the entity.
14921    
14922     WarnDef:
14923     @QName: xp|warning-attribute-definition-not-processed
14924     @enDesc:
14925     An attribute definition is not processed because there
14926     is a reference to parameter entity before the declaration
14927     and the entity is not read.
14928     @enMufDef:
14929     Attribute definition for |%p (name => {<Q::xp|name>});| is not processed
14930     @ecore:hasParameter: xp|error-token
14931     @ecore:hasParameter:
14932     @@@: xp|name
14933     @@enDesc:
14934     The name of the attribute.
14935 wakaba 1.26
14936     NSFatalErrDef:
14937     @QName: xp|nswf-legal-ncname
14938     @enDesc:
14939     <CODE::Name>s other than element type names and attribute names
14940     <kwd:MUST> be <CODE::NCName>s.
14941     @enMufDef:
14942     <CODE::Name> |%p (name => {<Q::xp|name>});| is not an <CODE::NCName>
14943     @ecore:hasParameter: xp|error-token
14944     @ecore:hasParameter:
14945     @@@: xp|name
14946     @@enDesc:
14947     The name.
14948     @ecore:hasParameter:
14949     @@@: infoset|version
14950     @@enDesc:
14951     The version of XML in use.
14952    
14953     NSFatalErrDef:
14954     @QName: xp|nswf-legal-qname
14955     @enDesc:
14956     An element type name or an attribute name <kwd:MUST> be a
14957     <CODE::QName>.
14958     @enMufDef:
14959     <CODE::Name> |%p (name => {<Q::xp|name>});| is not a <CODE::QName>
14960     @ecore:hasParameter: xp|error-token
14961     @ecore:hasParameter:
14962     @@@: xp|name
14963     @@enDesc:
14964     The name.
14965     @ecore:hasParameter:
14966     @@@: infoset|version
14967     @@enDesc:
14968     The version of XML in use.
14969    
14970     NSCErrDef:
14971     @QName: xp|nsc-reserved-prefix-xml
14972     @enDesc:
14973     The prefix <XML::xml> <kwd:MUST-NOT> be undeclared or bound
14974     to any namespace name other than <URI::http://www.w3.org/XML/1998/namespace>.
14975     @enMufDef:
14976     Namespace prefix |xml| cannot be bound to namespace
14977     name |%p (name => {<Q::infoset|namespaceName>});|
14978     @ecore:hasParameter: xp|error-token
14979     @ecore:hasParameter:
14980     @@@: infoset|prefix
14981     @@enDesc:
14982     The namespace prefix.
14983     @ecore:hasParameter:
14984     @@@: infoset|namespaceName
14985     @@enDesc:
14986     The namespace name bound to or an empty string for undeclaring.
14987    
14988     NSCErrDef:
14989     @QName: xp|nsc-reserved-namespace-name-xml
14990     @enDesc:
14991     Namespace prefixes other than <XML::xml> <kwd:MUST-NOT> be bound
14992     to the namespace name <URI::http://www.w3.org/XML/1998/namespace>.
14993     @enMufDef:
14994     Namespace prefix |%p (name => {<Q::infoset|prefix>});| cannot be
14995     bound to namespace name |http://www.w3.org/XML/1998/namespace|
14996     @enImplNote:
14997     The XMLNames spec does not prohibit the URI bound to
14998     the default namespace (!)
14999     @ecore:hasParameter: xp|error-token
15000     @ecore:hasParameter:
15001     @@@: infoset|prefix
15002     @@enDesc:
15003     The namespace prefix or <DOM::null> for default namespace.
15004     @ecore:hasParameter:
15005     @@@: infoset|namespaceName
15006     @@enDesc:
15007     The namespace name bound to.
15008    
15009     NSCErrDef:
15010     @QName: xp|nsc-reserved-prefix-xmlns
15011     @enDesc:
15012     The prefix <XML::xmlns> <kwd:MUST-NOT> be declared or undeclared.
15013     @enMufDef:
15014     Namespace prefix |xmlns| cannot be declared or undeclared
15015     @ecore:hasParameter: xp|error-token
15016     @ecore:hasParameter:
15017     @@@: infoset|prefix
15018     @@enDesc:
15019     The namespace prefix.
15020     @ecore:hasParameter:
15021     @@@: infoset|namespaceName
15022     @@enDesc:
15023     The namespace name bound to or an empty string for undeclaring.
15024    
15025     NSCErrDef:
15026     @QName: xp|nsc-reserved-namespace-name-xmlns
15027     @enDesc:
15028     Namespace prefixes <kwd:MUST-NOT> be bound
15029     to the namespace name <URI::http://www.w3.org/2000/xmlns/>.
15030     @enMufDef:
15031     Namespace prefix |%p (name => {<Q::infoset|prefix>});| cannot be
15032     bound to namespace name |http://www.w3.org/2000/xmlns/|
15033     @enImplNote:
15034     The XMLNames spec does not prohibit the URI bound to
15035     the default namespace (!)
15036     @ecore:hasParameter: xp|error-token
15037     @ecore:hasParameter:
15038     @@@: infoset|prefix
15039     @@enDesc:
15040     The namespace prefix or <DOM::null> for default namespace.
15041     @ecore:hasParameter:
15042     @@@: infoset|namespaceName
15043     @@enDesc:
15044     The namespace name bound to.
15045    
15046     NSCErrDef:
15047     @QName: xp|nsc-prefix-declared
15048     @enDesc:
15049     A namespace prefix other than <XML::xml> or <XML::xmlns>
15050     <kwd:MUST> have been declared in a namespace declaration
15051     attribute in either the start or empty element tag of the
15052     element where the prefix is used or in an ancestor
15053     element. Furthermore, the attribute value in the innermost
15054     such declaration <kwd:MUST-NOT> be an empty string.
15055     @enMufDef:
15056     Namespace prefix |%p (name => {<Q::infoset|prefix>});| in
15057     qualified name |%p (name => {<Q::xp|name>});| is not declared
15058     @ecore:hasParameter: xp|error-token
15059     @ecore:hasParameter:
15060     @@@: infoset|prefix
15061     @@enDesc:
15062     The namespace prefix.
15063     @ecore:hasParameter:
15064     @@@: xp|name
15065     @@enDesc:
15066     The qualified name.
15067    
15068     NSFatalErrDef:
15069     @QName: xp|nswf-empty-namespace-name
15070     @enDesc:
15071     If the XML version of the document is 1.0 and the
15072     normalized value of the prefixed namespace declaration attribute is empty.
15073     @enMufDef:
15074     Namespace |%p (name => {<Q::infoset|prefix>});| cannot be
15075     undeclared in XML 1.0
15076     @ecore:hasParameter: xp|error-token
15077     @ecore:hasParameter:
15078     @@@: infoset|prefix
15079     @@enDesc:
15080     The namespace prefix.
15081     @ecore:hasParameter:
15082     @@@: infoset|namespaceName
15083     @@enDesc:
15084     An empty string.
15085    
15086     NSFatalErrDef:
15087     @QName: xp|nswf-unique-att-spec-expanded-name
15088     @enDesc:
15089     No element may have two attributes that have qualified name
15090     with the same local part and with namespace prefixes
15091     that have been bound to namespace names that are identical.
15092     @enMufDef:
15093     Attribute |%p (name => {<Q::infoset|localName>});| in
15094     namespace |%p (name => {<Q::infoset|namespaceName>});| is
15095     attached to the same element more than once (as
15096     |%p (name => {<Q::xp|name>});| and
15097     |%p (name => {<Q::xp|another-attribute-name>});|)
15098     @enImplNote:
15099     The XMLNames spec doesn't mention default attributes
15100     for this constraint...
15101     @ecore:hasParameter: xp|error-token
15102     @ecore:hasParameter:
15103     @@@: infoset|localName
15104     @@enDesc:
15105     The local part of the attribute.
15106     @ecore:hasParameter:
15107     @@@: infoset|namespaceName
15108     @@enDesc:
15109     The namespace URI of the attribute.
15110     @ecore:hasParameter:
15111     @@@: xp|name
15112     @@enDesc:
15113     The name, i.e. a qualified name consist of <Q::infoset:localName>
15114     and <Q::infoset:namespaceName> parameter values.
15115     @ecore:hasParameter:
15116     @@@: xp|another-attribute-name
15117     @@enDesc:
15118     Another attribute qualified name expanded to the same expanded name
15119     as <Q::xp|name>.
15120    
15121     XWParam:
15122     @QName: xp|another-attribute-name
15123 wakaba 1.24
15124     XWParam:
15125     @QName: xp|replacement-text
15126     @enDesc:
15127     The replacement text.
15128 wakaba 1.1
15129 wakaba 1.3 XWParam:
15130 wakaba 1.1 @QName: xp|error-token
15131     @enDesc:
15132     The token where the parser found an error.
15133    
15134 wakaba 1.3 XWParam:
15135     @QName: xp|name
15136     @enDesc:
15137     A name.
15138    
15139     XWParam:
15140     @QName: xp|parent
15141     @enDesc:
15142     The parent node in which the error occurs.
15143    
15144     XWParam:
15145     @QName: xp|node
15146     @enDesc:
15147     The current node.
15148    
15149     XWParam:
15150     @QName: xp|actual-element-type
15151     @enDesc:
15152     The actual element type name occured in the source.
15153    
15154     XWParam:
15155     @QName: xp|expected-element-type
15156 wakaba 1.1 @enDesc:
15157 wakaba 1.3 The element type name expected.
15158    
15159     XWParam:
15160     @QName: xp|character-number
15161     @enDesc:
15162     The character code position.
15163    
15164     ElementTypeBinding:
15165     @Name: XWParam
15166     @ElementType:
15167     dis:ResourceDef
15168     @ShadowContent:
15169     @@For: =ManakaiDOM|all
15170     @@rdf:type: ecore|Parameter
15171 wakaba 1.1
15172     ElementTypeBinding:
15173     @Name:enMufDef
15174     @ElementType:
15175     ecore:defaultMessage
15176     @ShadowContent:
15177     @@lang:en
15178     @@ContentType:
15179     lang:muf
15180    
15181     ResourceDef:
15182     @QName: DOMImpl
15183     @AliasFor: DOMCore|DOMImplementation
15184     @For: ManakaiDOM|DOM
15185    
15186     ElementTypeBinding:
15187     @Name: Attr
15188     @ElementType:
15189     dis:ResourceDef
15190     @ShadowContent:
15191     @@rdf:type: DISLang|Attribute
15192     @@ForCheck: !=ManakaiDOM|ManakaiDOM
15193    
15194     ElementTypeBinding:
15195     @Name: Get
15196     @ElementType:
15197     dis:ResourceDef
15198     @ShadowContent:
15199     @@rdf:type: DISLang|AttributeGet
15200    
15201     ElementTypeBinding:
15202     @Name: Set
15203     @ElementType:
15204     dis:ResourceDef
15205     @ShadowContent:
15206     @@rdf:type: DISLang|AttributeSet
15207    
15208     ElementTypeBinding:
15209     @Name: enDesc
15210     @ElementType:
15211     dis:Description
15212     @ShadowContent:
15213     @@lang:en
15214    
15215     ElementTypeBinding:
15216     @Name: Method
15217     @ElementType:
15218     dis:ResourceDef
15219     @ShadowContent:
15220     @@rdf:type: DISLang|Method
15221     @@For: !=ManakaiDOM|ManakaiDOM
15222    
15223     ElementTypeBinding:
15224     @Name: Return
15225     @ElementType:
15226     dis:ResourceDef
15227     @ShadowContent:
15228     @@rdf:type: DISLang|MethodReturn
15229    
15230     ElementTypeBinding:
15231     @Name: Param
15232     @ElementType:
15233     dis:ResourceDef
15234     @ShadowContent:
15235     @@rdf:type: DISLang|MethodParameter
15236    
15237     ElementTypeBinding:
15238     @Name: PerlDef
15239     @ElementType:
15240     dis:Def
15241     @ShadowContent:
15242     @@ContentType: lang|Perl
15243    
15244     ElementTypeBinding:
15245     @Name: PropDef
15246     @ElementType:
15247     dis:ResourceDef
15248     @ShadowContent:
15249     @@rdf:type: rdf|Property
15250    
15251     ClsDef:
15252     @ClsQName: ManakaiXMLParserExceptionFormatter
15253    
15254     @ClsISA: ecore|MUErrorFormatter||ManakaiDOM|Perl
15255    
15256     @RuleDef:
15257     @@Name: xp-error-token-type
15258     @@enDesc:
15259     The type of the token the parser is encountered.
15260    
15261     @@Method:
15262     @@@Name: after
15263     @@@Param:
15264     @@@@Name: name
15265     @@@@Type: DOMString
15266     @@@@enDesc: The name of the method.
15267     @@@Param:
15268     @@@@Name: p
15269     @@@@Type: DISPerl|HASH
15270     @@@@enDesc: The set of the parameters to the method.
15271     @@@Param:
15272     @@@@Name: o
15273     @@@@Type: DISPerl|HASH
15274     @@@@enDesc: The option value.
15275     @@@Return:
15276     @@@@PerlDef:
15277     $p->{-result} = $o->{<H::xp|error-token>}->{type}
15278     if defined $o->{<H::xp|error-token>}->{type};
15279    
15280     @RuleDef:
15281     @@Name: xp-error-token-value
15282     @@enDesc:
15283     The value of the token the parser is encountered, if any.
15284    
15285     @@Method:
15286     @@@Name: after
15287     @@@Param:
15288     @@@@Name: name
15289     @@@@Type: DOMString
15290     @@@@enDesc: The name of the method.
15291     @@@Param:
15292     @@@@Name: p
15293     @@@@Type: DISPerl|HASH
15294     @@@@enDesc: The set of the parameters to the method.
15295     @@@Param:
15296     @@@@Name: o
15297     @@@@Type: DISPerl|HASH
15298     @@@@enDesc: The option value.
15299     @@@Return:
15300     @@@@PerlDef:
15301     $p->{-result} = $o->{<H::xp|error-token>}->{value}
15302     if defined $o->{<H::xp|error-token>}->{value};
15303    
15304     @RuleDef:
15305     @@Name: xp-error-lines
15306     @@enDesc:
15307     A copy of fragment of the source text that contains the line
15308     where the error occurred, if available.
15309    
15310     @@Method:
15311     @@@Name: after
15312     @@@Param:
15313     @@@@Name: name
15314     @@@@Type: DOMString
15315     @@@@enDesc: The name of the method.
15316     @@@Param:
15317     @@@@Name: p
15318     @@@@Type: DISPerl|HASH
15319     @@@@enDesc: The set of the parameters to the method.
15320     @@@Param:
15321     @@@@Name: o
15322     @@@@Type: DISPerl|HASH
15323     @@@@enDesc: The option value.
15324     @@@Return:
15325     @@@@PerlDef:
15326     my $pos = $o-><AG::DOMCore|DOMError.location>
15327     -><AG::DOMCore|DOMLocator.utf32Offset>;
15328     if ($pos > -1) {
15329 wakaba 1.6 my $src = $o->{<H::ecore|object>}->{entity}->[-1]->{reptxt};
15330 wakaba 1.1 my $start = $pos;
15331     $start = rindex ($$src, "\x0A", $start - 1) for 0..2;
15332     $start++;
15333     my $end = $pos;
15334     $end = index ($$src, "\x0A", $end + 1) for 0..2;
15335     $end = length $$src if $end < 0;
15336     $p->{-result} = substr $$src, $start, $end - $start;
15337     }
15338 wakaba 1.3
15339     @RuleDef:
15340     @@Name: character-code-point
15341     @@enDesc:
15342     The character code position, in <CODE::U+<VAR::HHHH>> notation.
15343    
15344     @@Method:
15345     @@@Name: after
15346     @@@Param:
15347     @@@@Name: name
15348     @@@@Type: DOMString
15349     @@@@enDesc: The name of the method.
15350     @@@Param:
15351     @@@@Name: p
15352     @@@@Type: DISPerl|HASH
15353     @@@@enDesc: The set of the parameters to the method.
15354     @@@Param:
15355     @@@@Name: o
15356     @@@@Type: DISPerl|HASH
15357     @@@@enDesc: The option value.
15358     @@@RuleParam:
15359     @@@@Name: v
15360     @@@@Type: DISPerl|Number
15361     @@@@enDesc:
15362     The name of the error parameter that contains the character code.
15363     @@@Return:
15364     @@@@PerlDef:
15365     $p->{-result} = sprintf 'U+%04X', $o->{$p->{v}};
15366 wakaba 1.1 ##XMLParserExceptionFormatter

admin@suikawiki.org
ViewVC Help
Powered by ViewVC 1.1.24