/[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.33 - (hide annotations) (download)
Wed Mar 15 13:45:00 2006 UTC (18 years, 8 months ago) by wakaba
Branch: MAIN
Changes since 1.32: +5 -2 lines
++ manakai/lib/Message/Util/ChangeLog	15 Mar 2006 13:43:14 -0000
2006-03-15  Wakaba  <wakaba@suika.fam.cx>

	* DIS.dis (getMethodForType): Parameter |$resource|
	is changed to |$type_resource|.
	(getDOMConfigurationParameterName): New method.

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

	* Value.dis (getPerlCode): New method.

	* Perl.dis (plValueCodeFragment): Deprecated.
	(getPerlCodeFromDVValue): New method.
	(plCodeFragment): The implementation for |dis:SetParam|
	properties was incorrect.

++ manakai/lib/Message/DOM/ChangeLog	15 Mar 2006 13:42:31 -0000
2006-03-15  Wakaba  <wakaba@suika.fam.cx>

	* DOMCore.dis (c:DOMConfigurationParameter): Now it is
	a |DISSource:ResourceProperty|.
	(c:anyDOMConfigurationParameter): New property.
	(CParam, boolCParam): Now they are all |dis:subsetOf|
	the |c:anyDOMConfigurationParameter| property.
	(ForDocument, ForParser, ForSerializer): Removed.

	* DOMLS.dis, XMLParser.dis: Likewise.

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.33 $Date: 2006/03/11 12:12:38 $
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.29 @urigen:
75     http://suika.fam.cx/~wakaba/archive/2005/manakai/URI/Generic/
76 wakaba 1.8 @x:
77     http://suika.fam.cx/~wakaba/archive/2004/dom/xml#
78 wakaba 1.1 @xml:
79     http://www.w3.org/XML/1998/namespace
80 wakaba 1.9 @xml-dtd:
81     http://www.w3.org/TR/REC-xml
82 wakaba 1.1 @xmlns:
83     http://www.w3.org/2000/xmlns/
84     @xp:
85     http://suika.fam.cx/~wakaba/archive/2004/dom/xml-parser#
86    
87     ## -- Features
88    
89     ElementTypeBinding:
90     @Name: FeatureDef
91     @ElementType:
92     dis:ResourceDef
93     @ShadowContent:
94     @@rdf:type: f|Feature
95     @@For: =ManakaiDOM|all
96    
97     ElementTypeBinding:
98     @Name: FeatureVerDef
99     @ElementType:
100     dis:ResourceDef
101     @ShadowContent:
102     @@rdf:type: f|Feature
103    
104     ElementTypeBinding:
105     @Name: featureQName
106     @ElementType:
107     f:name
108     @ShadowContent:
109     @@ContentType: DISCore|QName
110    
111     ResourceDef:
112     @QName: DOMString
113     @AliasFor: DOMMain|DOMString
114     @For: ManakaiDOM|DOM
115    
116     ResourceDef:
117     @QName: Node
118     @AliasFor: t|Node
119     @For: ManakaiDOM|DOM
120    
121     ResourceDef:
122     @QName: Element
123     @AliasFor: t|Element
124     @For: ManakaiDOM|DOM
125    
126     ResourceDef:
127     @QName: Document
128     @AliasFor: t|Document
129     @For: ManakaiDOM|DOM
130    
131 wakaba 1.6 ResourceDef:
132     @QName: DocumentXDoctype
133     @AliasFor: d|DocumentXDoctype
134     @For: ManakaiDOM|DOM
135    
136 wakaba 1.8 ResourceDef:
137     @QName: DTDef
138     @AliasFor: d|DocumentTypeDefinition
139     @For: ManakaiDOM|DOM
140    
141     ResourceDef:
142     @QName: ETDef
143     @AliasFor: d|ElementTypeDefinition
144     @For: ManakaiDOM|DOM
145    
146     ResourceDef:
147     @QName: ATDef
148     @AliasFor: d|AttributeDefinition
149     @For: ManakaiDOM|DOM
150    
151 wakaba 1.1 ElementTypeBinding:
152     @Name: ClsDef
153     @ElementType:
154     dis:ResourceDef
155     @ShadowContent:
156     @@rdf:type:
157     @@@@: dis|MultipleResource
158     @@@ForCheck: !ManakaiDOM|ForIF !ManakaiDOM|ForClass
159     @@resourceFor:
160     @@@@: ManakaiDOM|ForClass
161     @@@ForCheck: ManakaiDOM|ManakaiDOM !=ManakaiDOM|ManakaiDOM
162     @@For: ManakaiDOM|DOM3
163     @@For: =ManakaiDOM|ManakaiDOM
164    
165     @@rdf:type:
166     @@@@: DISLang|Class
167     @@@ForCheck: ManakaiDOM|ForClass
168    
169     ElementTypeBinding:
170     @Name: ClsQName
171     @ElementType:
172     dis:QName
173     @ShadowContent:
174     @@ForCheck: ManakaiDOM|ForClass
175    
176     ElementTypeBinding:
177     @Name: ClsISA
178     @ElementType:
179     dis:ISA
180     @ShadowContent:
181     @@ForCheck: ManakaiDOM|ForClass
182    
183     ElementTypeBinding:
184     @Name: nullCase
185     @ElementType:
186     dis:ResourceDef
187     @ShadowContent:
188     @@rdf:type: ManakaiDOM|InCase
189     @@Value:
190     @@@is-null:1
191    
192 wakaba 1.27 ElementTypeBinding:
193     @Name: TrueCase
194     @ElementType:
195     dis:ResourceDef
196     @ShadowContent:
197     @@rdf:type:
198     ManakaiDOM:InCase
199     @@Value:
200     @@@@: 1
201     @@@ContentType: DISCore|Boolean
202     @@Type: idl|boolean||ManakaiDOM|all
203    
204     ElementTypeBinding:
205     @Name: FalseCase
206     @ElementType:
207     dis:ResourceDef
208     @ShadowContent:
209     @@rdf:type:
210     ManakaiDOM:InCase
211     @@Value:
212     @@@@: 0
213     @@@ContentType: DISCore|Boolean
214     @@Type: idl|boolean||ManakaiDOM|all
215    
216 wakaba 1.1 ResourceDef:
217     @QName: LSParser
218     @AliasFor: DOMLS|LSParser
219     @For: ManakaiDOM|DOM3
220    
221     ClsDef:
222     @ClsQName: ManakaiXMLParser
223    
224     @Implement: DOMLS|LSParser
225    
226 wakaba 1.28 @f:implements: DOMLS|LSFeature30
227     @f:implements: DOMLS|ParseString10
228     @enImplNote:
229     @@ddid: dtdfeature
230     @@@:
231     {TODO::
232     Once DTD validation is implemented, add <Q::f:implements>
233     for XML-DTD-feature.
234     }
235 wakaba 1.1
236 wakaba 1.11 @DISLang:role: gls|ParserRole
237 wakaba 1.1
238 wakaba 1.3 @enDesc:
239     Note that the <Class::ManakaiXMLParser> reports any XML errors
240     (syntax errors and / or well-formedness constraint errors)
241     via the <IF::DOMCore:error-handler> registered to
242     the <A::DOMLS:LSParser.domConfig> object. Each error has
243     its <A::DOMCore:DOMError.severity>, either <C::DOMCore:SEVERITY_ERROR>
244     or <C::DOMCore:SEVERITY_FATAL_ERROR>. However, their semantics
245     are slight different from the ones of <QUOTE::error> and
246     <QUOTE::fatal error> in XML; in this implemenetation,
247     <C::DOMCore:SEVERITY_ERROR> implies that the parsing process
248     can effectively be continued to detect more errors while
249     <C::DOMCore:SEVERITY_FATAL_ERROR> implies that the error
250     is serious so that the result document tree and any errors
251     might be far from the ones obtained when the error would not
252     be found.
253 wakaba 1.28
254     @Test:
255     @@QName: GLSImpl.createGLSParser.LS.test
256     @@enDesc:
257     Since there is at least one implementation of the feature (i.e.
258     this class), the <M::gls|GLSImplementation.createGLSParser>
259     must not throw an exception.
260     @@PerlDef:
261     my $impl;
262     __CODE{DOMLS|createImplForTest:: $impl => $impl}__;
263    
264     my $p = $impl-><M::gls|GLSImplementation.createGLSParser>
265     ({LS => '3.0'});
266    
267     $test->assert_isa ($p, <IFName::LSParser>);
268     @Test:
269     @@QName: GLSImpl.createGLSParser.ParseXMLString.test
270     @@enDesc:
271     Since there is at least one implementation of the feature (i.e.
272     this class), the <M::gls|GLSImplementation.createGLSParser>
273     must not throw an exception.
274     @@PerlDef:
275     my $impl;
276     __CODE{DOMLS|createImplForTest:: $impl => $impl}__;
277    
278     my $p = $impl-><M::gls|GLSImplementation.createGLSParser>
279     ({<Q::fe|ParseXMLString> => '1.0'});
280    
281     $test->assert_not_null ($p);
282     @Test:
283     @@QName: GLSImpl.createGLSParser.LS.ParseXMLString.test
284     @@enDesc:
285     Since there is at least one implementation of the feature (i.e.
286     this class), the <M::gls|GLSImplementation.createGLSParser>
287     must not throw an exception.
288     @@PerlDef:
289     my $impl;
290     __CODE{DOMLS|createImplForTest:: $impl => $impl}__;
291    
292     my $p = $impl-><M::gls|GLSImplementation.createGLSParser>
293     ({LS => '3.0', <Q::fe|ParseXMLString> => '1.0'});
294    
295     $test->assert_isa ($p, <IFName::LSParser>);
296    
297     @Test:
298     @@QName: DOMImplLS.createLSParser.1.test
299     @@enDesc:
300     Since there is at least one implementation of the feature (i.e.
301     this class), the <M::gls|GLSImplementation.createGLSParser>
302     must not throw an exception.
303     @@PerlDef:
304     my $impl;
305     __CODE{DOMLS|createImplForTest:: $impl => $impl}__;
306    
307     my $p = $impl-><M::DOMLS|DOMImplementationLS.createLSParser>
308     (<C::DOMLS|DOMImplementationLS.MODE_SYNCHRONOUS>);
309     $test->assert_isa ($p, <IFName::LSParser>);
310     @enImplNote:
311     @@ddid: lsparsertext
312     @@@:
313     Future version should add test:
314     @@QName: DOMImplLS.createLSParser.2.test
315     @@enDesc:
316     Since there is at least one implementation of the feature (i.e.
317     this class), the <M::gls|GLSImplementation.createGLSParser>
318     must not throw an exception.
319     @@PerlDef:
320     my $impl;
321     __CODE{DOMLS|createImplForTest:: $impl => $impl}__;
322    
323     my $p = $impl-><M::DOMLS|DOMImplementationLS.createLSParser>
324     (<C::DOMLS|DOMImplementationLS.MODE_SYNCHRONOUS>,
325     <Q::xml-dtd:>);
326     $test->assert_isa ($p, <IFName::LSParser>);
327 wakaba 1.3
328 wakaba 1.27 @Test:
329     @@QName: Perl.open.utf8.strref.1.test
330     @@enDesc:
331     Does PerlIO works as intended?
332     @@PerlDef:
333     my $s = qq<\x{3001}\x0A\x{10001}>;
334     #open my $a, '<'.':utf8', \$s;
335     require IO::String;
336     my $a = IO::String->new ($s);
337     $test->assert_num_equals
338     (actual_value => ord getc $a,
339     expected_value => 0x3001);
340     $test->assert_num_equals
341     (actual_value => ord getc $a,
342     expected_value => 0x000A);
343     $test->assert_num_equals
344     (actual_value => ord getc $a,
345     expected_value => 0x10001);
346     $a->ungetc (0x10001);
347     $test->assert_num_equals
348     (actual_value => ord getc $a,
349     expected_value => 0x10001);
350     $test->assert_null (getc $a);
351     close $a;
352     @Test:
353     @@QName: Perl.open.8859.strref.2.test
354     @@enDesc:
355     Does PerlIO works as intended?
356     @@PerlDef:
357     my $s = qq<\x{0080}\x0A\x{00A9}>;
358     #open my $a, '<', \$s;
359     require IO::String;
360     my $a = IO::String->new ($s);
361     $test->assert_num_equals
362     (actual_value => ord getc $a,
363     expected_value => 0x0080);
364     $test->assert_num_equals
365     (actual_value => ord getc $a,
366     expected_value => 0x000A);
367     $test->assert_num_equals
368     (actual_value => ord getc $a,
369     expected_value => 0x00A9);
370     $a->ungetc (0x00A9);
371     $test->assert_num_equals
372     (actual_value => ord getc $a,
373     expected_value => 0x00A9);
374     $test->assert_null (getc $a);
375     close $a;
376    
377 wakaba 1.1 @Attr:
378     @@Name: domConfig
379     @@enDesc:
380     The configuration of the parser.
381    
382     @@Get:
383     @@@Type: DOMCore|DOMConfiguration
384     @@@enDesc: The DOM configuration object.
385     @@@PerlDef:
386     __CODE{DOMCore|getConfigObject::
387     $target => $self,
388     $targetHash => $self,
389 wakaba 1.27 $targetType => {<ClassName::xp|ManakaiXMLParser>},
390 wakaba 1.1 $result => $r,
391     }__;
392    
393 wakaba 1.27 @Attr:
394     @@ForCheck: ManakaiDOM|ForClass
395     @@Name: async
396     @@enDesc:
397     Whether the parser is asynchronous or not.
398     @@Type: idl|boolean||ManakaiDOM|all
399     @@Get:
400     @@@FalseCase:
401     @@@@enDesc:
402     The parser does not in asynchronous mode.
403     @@@PerlDef: \
404     @@Test:
405     @@@QName: XMLParser.async.test
406     @@@PerlDef:
407     my $xp;
408     __CODE{createParserForTest:: $xp => $xp}__;
409    
410     $test->assert_false ($xp-><AG::DOMLS|LSParser.async>);
411    
412     @Attr:
413     @@ForCheck: ManakaiDOM|ForClass
414     @@Name: busy
415     @@enDesc:
416     Whether the parser is currently busy loading a document or not.
417     @@Type: idl|boolean||ManakaiDOM|all
418     @@Get:
419     @@@TrueCase:
420     @@@@enDesc:
421     The parser is currently busy.
422     @@@FalseCase:
423     @@@@enDesc:
424     The parser is not busy.
425     @@@PerlDef:
426     $r = $self->{<H::DOMLS|busy>};
427    
428     @enImplNote:
429     @@ddid: abort
430     @@@:
431     {ISSUE::
432     LSParser.abort:
433    
434     Is it required to support even in synchronous mode?
435     }
436    
437     {TODO::
438     LSParser.filter
439     }
440    
441     @ResourceDef:
442     @@QName: createParserForTest
443     @@ForCheck: ManakaiDOM|ForClass
444     @@rdf:type: DISPerl|BlockCode
445     @@PerlDef:
446     require Message::DOM::GenericLS;
447     $xp = <Class::ManakaiXMLParser>
448     ->new (<Class::gls|ManakaiGLSImplementation>->_new, '');
449    
450 wakaba 1.1 @Method:
451     @@ManakaiDOM:isForInternal:1
452     @@ForCheck: ManakaiDOM|ForClass
453     @@Operator: DISPerl|NewMethod
454     @@enDesc:
455     Creates a new instance of the object.
456     @@Param:
457     @@@Name: impl
458 wakaba 1.11 @@@Type: gls|GLSImplementation
459 wakaba 1.1 @@@enDesc:
460     The implementation from which the parser is created.
461     @@Param:
462     @@@Name: features
463     @@@Type: DOMString
464     @@@dis:actualType: f|FeaturesString
465     @@@enDesc:
466     The set of features requested for the parser.
467     @@Return:
468     @@@Type: DOMMain|DOMObject
469     @@@dis:actualType: LSParser
470     @@@enDesc:
471     The newly created parser.
472     @@@PerlDef:
473     $r = bless {
474     <H::DOMCore:implementation> => $impl,
475     }, $self;
476    
477     @Method:
478 wakaba 1.27 @@Name: parseURI
479     @@enDesc:
480     Parses an XML document identified by a DOM URI.
481 wakaba 1.1
482 wakaba 1.27 It is equivalent to <M::.parse> method with its <P::input>
483     parameter set to a <IF::LSInput> object whose
484     <A::LSInput.systemId> set to <P::uri>.
485 wakaba 1.1 @@Param:
486 wakaba 1.27 @@@Name: uri
487 wakaba 1.1 @@@Type: DOMString
488 wakaba 1.27 @@@enDesc:
489     The DOM URI of the XML document to be read.
490 wakaba 1.1 @@Return:
491     @@@Type: Document
492 wakaba 1.27 @@@enDesc:
493     The newly created and populated <IF::Document> node.
494     @@@dx:raises:
495     @@@@@: ManakaiDOMLS|MDOMLS_BUSY
496     @@@@enDesc:
497     If <A::LSParser.busy> is <DOM::true>.
498     @@@dx:raises:
499     @@@@@: DOMLS|PARSE_ERR
500     @@@@enDesc:
501     If the <IF::LSParser> was unable to load the document.
502     @@@PerlDef:
503     __DEEP{
504     $r = $self-><M::LSParser.parse> ({system_id => $uri});
505     }__;
506    
507     @Method:
508     @@Name: parse
509     @@enDesc:
510     Parses an XML document from a resource identified
511     by a <IF::LSInput>.
512     @@Param:
513     @@@Name: input
514     @@@Type: LSInput
515     @@@enDesc:
516     The <IF::LSInput> from which the source of the document
517     is to be read.
518     @@Return:
519     @@@Type: Document
520     @@@enDesc:
521     The newly created and populated <IF::Document> node.
522     @@@dx:raises:
523     @@@@@: ManakaiDOMLS|MDOMLS_BUSY
524     @@@@enDesc:
525     If the <A::LSParser.busy> is <DOM::true>.
526     @@@dx:raises:
527     @@@@@: DOMLS|PARSE_ERR
528     @@@@enDesc:
529     If the <IF::LSParser> was unable to load the document.
530 wakaba 1.1 @@@PerlDef:
531 wakaba 1.27 if ($self->{<H::DOMLS|busy>}) {
532     __EXCEPTION{ManakaiDOMLS|MDOMLS_BUSY}__;
533     }
534     local $self->{<H::DOMLS|busy>} = true;
535    
536     my $in;
537     __DEEP{
538     $self->{parser_cfg} = $self-><AG::LSParser.domConfig>;
539     ## Parser's |domConfig| object.
540     $self->{in_in} = $self->{parser_cfg}
541     -><M::c|DOMConfiguration.getParameter>
542     (<Q::xp|ls-input-to-input-file>);
543     $in = $self->{in_in}-><M::ManakaiDOMLSInputToInputFile.resolveLSInput>
544     ($input,
545     $self->{parser_cfg}
546     -><M::c|DOMConfiguration.getParameter>
547     ('error-handler'));
548     }__;
549     unless (defined $in) {
550     __c|ERROR{DOMLS|no-input-specified::
551     MDOMX:param-name => 'input',
552     }__;
553     __CODE{ParseError}__;
554     }
555    
556     require IO::Handle;
557 wakaba 1.1
558     $self->{char} = [];
559     $self->{token} = [];
560 wakaba 1.6 $self->{entity} = [{
561 wakaba 1.27 fh => $in-><AG::ManakaiDOMInputFile.filehandle>,
562     base_uri => $in-><AG::ManakaiDOMInputFile.baseURI>,
563     doc_uri => $in-><AG::ManakaiDOMInputFile.documentURI>,
564 wakaba 1.6 line => 1,
565     column => 1,
566     pos => 0,
567 wakaba 1.27 close_file => sub { $in-><M::ManakaiDOMInputFile.close> },
568     reptxt => \'',
569     is_external_entity => true,
570 wakaba 1.6 }];
571 wakaba 1.27 ## Entity stack.
572 wakaba 1.14 $self->{location} = $self->{entity}->[-1];
573 wakaba 1.27 ## Parsing location object as required by DPG.
574     ## It must always be equal to |{entity}->[-1]|.
575 wakaba 1.6 $self->{entity_char} = [];
576 wakaba 1.27 ## Stack for |{char}| stacks analog to |{entity}| stack.
577 wakaba 1.6 $self->{entity_token} = [];
578 wakaba 1.27 ## Stack for |{token}| stacks analog to |{entity}| stack.
579 wakaba 1.3 $self->{xml_version} = '1.0';
580 wakaba 1.27 ## Document XML version: either |1.0| or |1.1|.
581 wakaba 1.3 $self->{standalone} = false;
582 wakaba 1.27 ## True iff |standalone=yes| is explicitly specified.
583 wakaba 1.19 $self->{has_xref} = false;
584 wakaba 1.27 ## There is an unread external entity.
585     $self->{dont_process} = false;
586     ## So, don't process |ENTITY| and |ATTLIST| declarations.
587 wakaba 1.11 $self->{general_entity} = {
588     lt => {is_predefined => true},
589     gt => {is_predefined => true},
590     amp => {is_predefined => true},
591     quot => {is_predefined => true},
592     apos => {is_predefined => true},
593     };
594 wakaba 1.27 ## Declared general entities.
595 wakaba 1.6 $self->{param_entity} = {};
596 wakaba 1.27 ## Declared parameter entities.
597 wakaba 1.9 $self->{attr} = {};
598     # $self->{attr}->{$element_type_name}->{$attr_name} = $attr_def
599 wakaba 1.27 ## Declared attributes.
600 wakaba 1.1
601     __DEEP{
602 wakaba 1.11 $r = $self->{<H::c|implementation>}-><M::DOMImpl.createDocument>;
603     $self->{doc} = $r;
604 wakaba 1.27 ## |Document| object.
605     CORE::delete $self->{docx};
606     ## |DocumentXDoctype| object (if necessary).
607 wakaba 1.21 $self->{doc_cfg} = $r-><AG::Document.domConfig>;
608 wakaba 1.27 ## |Document|'s configuration.
609 wakaba 1.11 CORE::delete $self->{dtdef};
610 wakaba 1.27 ## |DocumentTypeDefinition| object (if created).
611 wakaba 1.17 CORE::delete $self->{dtdecl};
612 wakaba 1.27 ## |DocumentTypeDeclaration| object (if created).
613 wakaba 1.21
614     $r-><AS::Document.strictErrorChecking> (false);
615     ## NOTE: Any checks such as |Name| validity done by
616     ## methods on DOM nodes are disabled. It might result
617     ## in creating an ill-formed DOM tree when parser
618     ## errors are traped by |error-handler|.
619     $self->{doc_cfg}-><M::c|DOMConfiguration.setParameter>
620     (<Q::cfg|entity-reference-read-only> => false);
621     ## NOTE: Turn this configuration parameter off is required
622     ## because entity reference subtree is created by
623     ## the parser rather than |createEntityReference|'s
624     ## cloning. Parser's |cfg:entity-reference-read-only|
625     ## configuration parameter controls whether generated
626     ## subtree is then marked as read-only or not.
627     $self->{doc_cfg}-><M::c|DOMConfiguration.setParameter>
628     (<Q::cfg|clone-entity-reference-subtree> => true);
629     ## NOTE: Turn this configuration parameter on makes
630     ## entity reference subtrees in attribute default values
631     ## cloned as is into default attribute node subtrees.
632 wakaba 1.26 $self->{doc_cfg}-><M::c|DOMConfiguration.setParameter>
633     (<Q::cfg|dtd-default-attributes> => false);
634     ## NOTE: Don't create DTD default attributes by
635     ## |createElementNS| method.
636     $self->{doc_cfg}-><M::c|DOMConfiguration.setParameter>
637 wakaba 1.30 (<Q::cfg|xml-id> => $self->{parser_cfg}
638     -><M::c|DOMConfiguration.getParameter>
639     (<Q::cfg|xml-id>));
640     $self->{doc_cfg}-><M::c|DOMConfiguration.setParameter>
641 wakaba 1.26 ('error-handler' => sub {
642     my (undef, $err) = @_;
643     return ($err-><AG::c|DOMError.severity> !=
644     <C::c|DOMError.SEVERITY_FATAL_ERROR>);
645     })
646     unless $Message::DOM::XMLParser::DEBUG;
647 wakaba 1.29 ## NOTE: The default error handler in manakai |warn|s error
648 wakaba 1.26 ## description.
649 wakaba 1.11
650 wakaba 1.29 ## Document entity's URI and base URI
651     $r-><AS::Document.documentURI> ($self->{entity}->[0]->{doc_uri});
652     $r-><AS::Document.manakaiEntityBaseURI>
653     ($self->{entity}->[0]->{base_uri});
654    
655 wakaba 1.11 ## Document entity -> |Document| node
656     $self->_parse_DocumentEntity;
657    
658 wakaba 1.27 for (@{$self->{entity}}) {
659     $_->{close_file}->();
660     ## NOTE: There should be only the document entity.
661     }
662    
663 wakaba 1.11 ## Replacement tree for general |Entity| nodes
664 wakaba 1.20 my @ent = values %{$self->{general_entity}};
665     for my $ent (@ent) {
666     if (exists $ent->{has_replacement_text}) {
667 wakaba 1.11 my $ent_name = $ent->{name};
668     $self->{entity} = [<Code::getCopyOfEntityState::
669     $entity_type = 'general_entity',
670     $entity_name = $ent_name>];
671 wakaba 1.14 $self->{location} = $self->{entity}->[-1];
672 wakaba 1.11 $self->{token} = [];
673     $self->{char} = [];
674 wakaba 1.23 local $ent->{is_opened} = true;
675 wakaba 1.11 ## TODO: External entity support
676     $self->_parse_InternalGeneralParsedEntity ($ent->{node});
677     $ent->{node}-><AS::x|Entity.hasReplacementTree> (true);
678 wakaba 1.27 $self->{entity}->[-1]->{close_file}->();
679 wakaba 1.21 ## ISSUE: Should errors detected by this phase result
680     ## in |DOMLS:PARSE_ERR| exception thrown?
681 wakaba 1.20 }
682 wakaba 1.11 ## TODO: Read-only if configuration (for all entities)
683     }
684    
685 wakaba 1.21 ## Turns flags to their default value
686     $self->{doc_cfg}-><M::c|DOMConfiguration.setParameter>
687     (<Q::cfg|entity-reference-read-only> => null);
688     $self->{doc_cfg}-><M::c|DOMConfiguration.setParameter>
689     (<Q::cfg|clone-entity-reference-subtree> => null);
690 wakaba 1.26 $self->{doc_cfg}-><M::c|DOMConfiguration.setParameter>
691     (<Q::cfg|dtd-default-attributes> => null);
692     $self->{doc_cfg}-><M::c|DOMConfiguration.setParameter>
693 wakaba 1.30 (<Q::cfg|xml-id> => null);
694     $self->{doc_cfg}-><M::c|DOMConfiguration.setParameter>
695 wakaba 1.26 ('error-handler' => null);
696 wakaba 1.11 $r-><AS::Document.strictErrorChecking> (true);
697 wakaba 1.1 }__;
698    
699     @Method:
700     @@Name: shiftChar
701     @@ManakaiDOM:isForInternal:1
702     @@ForCheck: ManakaiDOM|ForClass
703     @@enDesc:
704     Returns the next character.
705     @@Return:
706     @@@Type: idl|long||ManakaiDOM|all
707     @@@enDesc:
708     The code position number of the next character, if any,
709 wakaba 1.6 or <CODE::-1>.
710 wakaba 1.1 @@@PerlDef:
711     if (@{$self->{char}}) {
712     $r = shift @{$self->{char}};
713     } else {
714 wakaba 1.6 GETCHAR: {
715 wakaba 1.27 no warnings 'closed'; # getc() on closed filehandle warning
716     my $ent = $self->{entity}->[-1];
717 wakaba 1.32 my $char = $ent->{fh}->getc;
718 wakaba 1.6
719 wakaba 1.7 if (defined $char and length $char) {
720 wakaba 1.27 $ent->{pos}++;
721 wakaba 1.6 $r = ord $char;
722     if ($r == 0x000A) {
723 wakaba 1.27 $ent->{line}++;
724     $ent->{column} = 1;
725 wakaba 1.6 } elsif ($r == 0x000D) {
726 wakaba 1.32 my $next_char = $ent->{fh}->getc;
727 wakaba 1.6 if ($next_char eq "\x0A") {
728 wakaba 1.27 if ($ent->{is_external_entity}) {
729     $ent->{pos}++;
730     $ent->{line}++;
731     $ent->{column} = 1;
732     $r = 0x000A; # ^ U+000D U+000A -> U+000A ^
733     } else { # Internal entity
734     $ent->{column}++;
735     ## Line number will be increased by next |shiftChar|.
736     $ent->{fh}->ungetc (0x000A);
737     #$r = 0x000D; # ^ U+000D U+000A -> U+000D ^ U+000A
738     # no change
739     }
740 wakaba 1.6 } elsif ($next_char eq "\x85") {
741     if ($self->{xml_version} eq '1.1') {
742 wakaba 1.27 if ($ent->{is_external_entity}) {
743     if ($ent->{no_xml11_eol}) {
744     my $location = {
745     utf32_offset => $ent->{pos} - 1,
746     line_number => $ent->{line},
747     column_number => $ent->{column},
748     };
749     my $continue = __c|ERROR{
750     xp|fatal-xml11-end-of-line-in-xml-declaration::
751     c|location => {$location},
752     xp|character-number => {$r},
753     }__;
754     unless ($continue) {
755     __CODE{ParseError}__;
756     }
757     } # no_xml11_eol
758     $ent->{pos}++;
759     $ent->{line}++;
760     $ent->{column} = 1;
761     $r = 0x000A; # ^ U+000D U+0085 -> U+000A ^
762     } else { # internal entity
763     $ent->{column}++;
764     ## Line number will be increased by next |shiftChar|.
765     $ent->{fh}->ungetc (0x0085);
766     #$r = 0x000D; # ^ U+000D U+0085 -> U+000D ^ U+0085
767     # no change
768     }
769     } else { # XML 1.0
770 wakaba 1.16 ## |no_xml11_eol| will be tested later.
771 wakaba 1.27 $ent->{column}++;
772     ## Line number will be increased by next |shiftChar|.
773     $ent->{fh}->ungetc (0x0085);
774     $r = 0x000A if $ent->{is_external_entity};
775     # external: ^ U+000D U+0085 -> U+000A ^ U+0085
776     # internal: ^ U+000D U+0085 -> U+000D ^ U+0085 (as is)
777 wakaba 1.6 }
778 wakaba 1.27 } else { # neither U+000A nor U+0085
779     $ent->{line}++;
780     $ent->{column} = 1;
781     $ent->{fh}->ungetc (ord $next_char);
782     $r = 0x000A if $ent->{is_external_entity};
783     # external: ^ U+000D _ -> U+000A ^ _
784     # internal: ^ U+000D _ -> U+000D ^ _ (as is)
785 wakaba 1.6 }
786 wakaba 1.27 } elsif ($r == 0x0085 or $r == 0x2028) {
787     if ($ent->{no_xml11_eol}) {
788     my $location = {
789     utf32_offset => $ent->{pos} - 1,
790     line_number => $ent->{line},
791     column_number => $ent->{column},
792     };
793     my $continue = __c|ERROR{
794     xp|fatal-xml11-end-of-line-in-xml-declaration::
795     c|location => {$location},
796     xp|character-number => {$r},
797     }__;
798     unless ($continue) {
799     __CODE{ParseError}__;
800     }
801     } # no_xml11_eol
802     $r = 0x000A if $self->{xml_version} eq '1.1' and
803     $ent->{is_external_entity};
804     ## Even in XML 1.0 it increases the line number.
805     $ent->{line}++;
806     $ent->{column} = 1;
807 wakaba 1.6 } elsif (
808     not ((0x0020 <= $r and $r <= 0x007E) or
809     (0x00A0 <= $r and $r <= 0xD7FF) or
810     (0xE000 <= $r and $r <= 0xFFFD) or
811     (0x10000 <= $r and $r <= 0x10FFFF)) and
812 wakaba 1.27 $r != 0x0009 and
813     not (($self->{xml_version} eq '1.0' or
814     not $ent->{is_external_entity}) and
815     (0x007F <= $r and $r <= 0x009F)) and
816     not ($self->{xml_version} eq '1.1' and
817     not $ent->{is_external_entity} and
818     0x0001 <= $r and $r <= 0x001F)
819 wakaba 1.6 ) {
820     my $location = {
821 wakaba 1.27 utf32_offset => $ent->{pos} - 1,
822     line_number => $ent->{line},
823     column_number => $ent->{column},
824 wakaba 1.6 };
825 wakaba 1.27 my $continue = __c|ERROR{xp|wf-legal-literal-character::
826     c|location => {$location},
827 wakaba 1.6 xp|character-number => {$r},
828     }__;
829     unless ($continue) {
830 wakaba 1.27 __CODE{ParseError}__;
831 wakaba 1.3 }
832 wakaba 1.27 $ent->{column}++;
833     } else { # XML |Char|
834     $ent->{column}++;
835 wakaba 1.3 }
836     } else {
837 wakaba 1.6 $r = -1;
838 wakaba 1.3 }
839 wakaba 1.6 } # GETCHAR
840 wakaba 1.1 }
841    
842     @Method:
843     @@ManakaiDOM:isForInternal: 1
844     @@Operator: ManakaiDOM|MUErrorHandler
845     @@enDesc:
846     When a <IF::ecore|ErrorInterface||ManakaiDOM|Perl> is <Perl::report>ed,
847     then this method is invoked.
848    
849     The method calls the <cfg::DOMCore|error-handler> if the error is of
850     <IF::DOMCore|DOMError>. Otherwise, the error is re-thrown so that
851     corresponding <Perl::catch> clause, if any, can catch the error.
852     @@Param:
853     @@@Name: err
854     @@@Type: ecore|ErrorInterface||ManakaiDOM|Perl
855     @@@enDesc:
856     The reported error object.
857     @@Return:
858     @@@Type: DISPerl|Any
859     @@@enDesc:
860     If the <P::err> is a <IF::DOMCore|DOMError>, then the return value
861     of the error handler.
862    
863     {NOTE:: If the error is thrown, the method never returns.
864     }
865     @@@nullCase:
866     @@@@enDesc:
867     No error handler.
868     @@@PerlDef:
869     if ($err->isa (<IFName::DOMCore|DOMError||ManakaiDOM|ManakaiDOM>)) {
870     __DEEP{
871     A: {
872     my $cfg = $self-><AG::LSParser.domConfig>;
873     my $h = $cfg-><M::DOMCore|DOMConfiguration.getParameter>
874     ('error-handler');
875     $r = $h-><M::DOMCore|DOMErrorHandler.handleError> ($err);
876     } # A
877     }__;
878     } else {
879     $err-><M::ecore|ErrorInterface||ManakaiDOM|Perl.throw>;
880     }
881    
882     @DISPerl:dpgDef:
883    
884     /*
885     XML Document Entity
886    
887     document := prolog element *Misc
888     - *Char RestrictedChar *Char ;; [1]
889     */
890 wakaba 1.11 rule DocumentEntity : standalone {
891 wakaba 1.1 /*
892     prolog := XMLDecl? *Misc [doctypedecl *Misc] ;; [22]
893     */
894 wakaba 1.16 ?lexmode DocumentStart;
895 wakaba 1.11
896     my $doc;
897     lang:Perl {
898     $doc = $self->{doc};
899     }
900 wakaba 1.1
901 wakaba 1.3 ~? (XDO) {
902 wakaba 1.16 ?lexmode XMLDeclarationOrPI;
903     lang:Perl {
904     $self->{entity}->[-1]->{no_xml11_eol} = true;
905     }
906     ~ (S) { // XML declaration
907     &_XMLDeclaration_ ($doc => $doc);
908     ~ (PIC2) {
909     ?lexmode DocumentProlog;
910     } else {
911     ?lexmode DocumentProlog;
912     }
913     } (NameChar) { // Processing instruction whose target begins with |xml|
914     my $target_token;
915     lang:Perl ($v => $token.value) {
916     $target_token = $token;
917     $target_token->{value} = 'xml'.$target_token->{value};
918     $self->{entity}->[-1]->{no_xml11_eol} = false;
919     }
920     ?lexmode PINmtoken;
921     ~? (Nmtoken) {
922     lang:Perl ($v => $token.value) {
923     $target_token->{value} .= $v;
924     }
925     ?lexmode PIName;
926     }
927     lang:Perl {
928     $target_token->{type} = 'Name';
929     $target_token->{location_d} += 3; # 'xml'
930     unshift @{$self->{token}}, $token;
931     $token = $target_token;
932     }
933     &_ProcessingInstruction_ ($doc => $doc, $parent => $doc);
934     ~ (PIC) {
935     ?lexmode DocumentProlog;
936     } else {
937     ?lexmode DocumentProlog;
938     }
939 wakaba 1.3 } else {
940 wakaba 1.16 lang:Perl {
941     $self->{entity}->[-1]->{no_xml11_eol} = false;
942     }
943 wakaba 1.3 }
944     } else {
945     ?lexmode 'DocumentProlog';
946     }
947 wakaba 1.1
948     // *Misc
949 wakaba 1.2 ~* (CDO) {
950 wakaba 1.1 &_CommentDeclaration_ ($doc => $doc, $parent => $doc);
951    
952     ~ (MDC) {
953     ?lexmode DocumentProlog;
954     } else {
955     ?lexmode DocumentProlog;
956     }
957     } (PIO) {
958     &_ProcessingInstruction_ ($doc => $doc, $parent => $doc);
959    
960     ~ (PIC) {
961     ?lexmode 'DocumentProlog';
962     } else {
963     ?lexmode DocumentProlog;
964     }
965     } (S) {
966     //
967     }
968    
969     // doctypedecl
970     ~? (MDO) {
971     &_DocumentTypeDeclaration_ ($doc => $doc);
972    
973 wakaba 1.3 ~ (MDC) {
974     ?lexmode DocumentMisc;
975     } else {
976     ?lexmode DocumentMisc;
977     }
978     } else {
979     ?lexmode DocumentMisc;
980 wakaba 1.1 }
981 wakaba 1.25
982     lang:Perl {
983     $self->{doc}-><AS::Document.allDeclarationsProcessed> (true)
984     unless $self->{dont_process};
985     }
986 wakaba 1.1
987     // *Misc
988 wakaba 1.2 ~* (CDO) {
989 wakaba 1.1 &_CommentDeclaration_ ($doc => $doc, $parent => $doc);
990    
991     ~ (MDC) {
992     ?lexmode DocumentMisc;
993     } else {
994     ?lexmode DocumentMisc;
995     }
996     } (PIO) {
997     &_ProcessingInstruction_ ($doc => $doc, $parent => $doc);
998    
999     ~ (PIC) {
1000     ?lexmode 'DocumentMisc';
1001     } else {
1002     ?lexmode DocumentMisc;
1003     }
1004     } (S) {
1005     //
1006     }
1007    
1008     // Document element
1009     ~ (STAGO) {
1010     &Element_ ($doc => $doc, $parent => $doc)
1011     : unshift-current-token;
1012     ~ (TAGC) {
1013     ?lexmode DocumentEnd;
1014     } else {
1015     ?lexmode DocumentEnd;
1016     }
1017     } else {
1018     ?lexmode 'DocumentEnd';
1019     }
1020    
1021     // *Misc
1022 wakaba 1.2 ~* (CDO) {
1023 wakaba 1.1 &_CommentDeclaration_ ($doc => $doc, $parent => $doc);
1024    
1025     ~ (MDC) {
1026     ?lexmode DocumentEnd;
1027     } else {
1028     ?lexmode DocumentEnd;
1029     }
1030     } (PIO) {
1031     &_ProcessingInstruction_ ($doc => $doc, $parent => $doc);
1032     ~ (PIC) {
1033     ?lexmode 'DocumentEnd';
1034     } else {
1035     ?lexmode DocumentEnd;
1036     }
1037     } (S) {
1038     //
1039     }
1040    
1041     ~ (#EOF) { }
1042     } // DocumentEntity
1043 wakaba 1.11
1044     /*
1045     Internal General Parsed Entity
1046    
1047     An internal general parsed entity is well-formed if its
1048     replacement text matches the production labeled |content|.
1049     */
1050     rule InternalGeneralParsedEntity ($ent) : standalone {
1051     ?lexmode ElementContent;
1052    
1053     my $ns;
1054     lang:Perl {
1055     $ns = {
1056     xml => <Q::xml:>,
1057     xmlns => <Q::xmlns:>,
1058     };
1059     }
1060    
1061     &content ($parent => $ent, $ns => $ns);
1062    
1063     ~ (#EOF) { }
1064     } // InternalGeneralParsedEntity
1065    
1066 wakaba 1.1 /*
1067     XML Declaration
1068    
1069     XMLDecl := '<?xml' VersionInfo
1070     [EncodingDecl]
1071     [SDDecl]
1072     [S] '?>' ;; [23]
1073    
1074     NOTE: XML declaration is optional in XML 1.0
1075     while it is required in XML 1.1.
1076     */
1077 wakaba 1.16 rule _XMLDeclaration_ {
1078     // ~ (XDO) { }
1079 wakaba 1.3 ?lexmode XMLDeclaration;
1080 wakaba 1.16 //lang:Perl {
1081     // $self->{entity}->[-1]->{no_xml11_eol} = true;
1082     //}
1083     //~ (S) { }
1084 wakaba 1.3
1085     ~ (Name == 'version') {
1086     ~? (S) { }
1087     ~ (VI) { }
1088     ~? (S) { }
1089 wakaba 1.1
1090 wakaba 1.3 my $ver;
1091     my $bad_token;
1092    
1093     ~ (LIT) {
1094     ?lexmode AttributeValueLiteral;
1095    
1096     ~ (STRING) {
1097     lang:Perl ($version => $token.value) {
1098     $ver = $version;
1099     $bad_token = $token;
1100     }
1101     }
1102    
1103     ~ (LIT) {
1104     ?lexmode XMLDeclaration;
1105     }
1106     } (LITA) {
1107     ?lexmode AttributeValueLiteralA;
1108    
1109     ~ (STRING) {
1110     lang:Perl ($version => $token.value) {
1111     $ver = $version;
1112     $bad_token = $token;
1113     }
1114     }
1115    
1116     ~ (LITA) {
1117     ?lexmode XMLDeclaration;
1118     }
1119     }
1120    
1121     lang:Perl : has-error {
1122     unless ($ver eq '1.0' or $ver eq '1.1') {
1123     my $location;
1124     __CODE{xp|get-location-from-token::
1125     $token => {$bad_token},
1126     $result => {$location},
1127     }__;
1128     my $continue = __DOMCore:ERROR{xp|wf-unsupported-xml-version::
1129     DOMCore|location => {$location},
1130 wakaba 1.16 xp|parent => {$self->{doc}},
1131 wakaba 1.3 infoset|version => {$ver},
1132     xp|error-token => {$bad_token},
1133     }__;
1134     unless ($continue) {
1135 wakaba 1.27 __CODE{ParseError}__;
1136 wakaba 1.3 }
1137     }
1138 wakaba 1.16 $self->{doc}-><AS::Document.xmlVersion> ($ver);
1139 wakaba 1.3 $self->{xml_version} = $ver;
1140     }
1141    
1142     ~? (S) { }
1143 wakaba 1.1 }
1144    
1145 wakaba 1.3 ~? (Name == 'encoding') {
1146     ~? (S) { }
1147     ~ (VI) { }
1148     ~? (S) { }
1149    
1150     my $ver;
1151     my $bad_token;
1152    
1153     ~ (LIT) {
1154     ?lexmode AttributeValueLiteral;
1155    
1156     ~ (STRING) {
1157     lang:Perl ($version => $token.value) {
1158     $ver = $version;
1159     $bad_token = $token;
1160     }
1161     }
1162    
1163     ~ (LIT) {
1164     ?lexmode XMLDeclaration;
1165     }
1166     } (LITA) {
1167     ?lexmode AttributeValueLiteralA;
1168    
1169     ~ (STRING) {
1170     lang:Perl ($version => $token.value) {
1171     $ver = $version;
1172     $bad_token = $token;
1173     }
1174     }
1175    
1176     ~ (LITA) {
1177     ?lexmode XMLDeclaration;
1178     }
1179     }
1180    
1181     lang:Perl : has-error {
1182     unless ($ver =~ /\A[A-Za-z][A-Za-z0-9._-]*\z/) {
1183     my $location;
1184     __CODE{xp|get-location-from-token::
1185     $token => {$bad_token},
1186     $result => {$location},
1187     }__;
1188     my $continue = __DOMCore:ERROR{xp|wf-malformed-enc-name::
1189     DOMCore|location => {$location},
1190 wakaba 1.16 xp|parent => {$self->{doc}},
1191 wakaba 1.3 xp|name => {$ver},
1192     xp|error-token => {$bad_token},
1193     }__;
1194     unless ($continue) {
1195 wakaba 1.27 __CODE{ParseError}__;
1196 wakaba 1.3 }
1197     }
1198 wakaba 1.16 $self->{doc}-><AS::Document.xmlEncoding> ($ver);
1199 wakaba 1.3 }
1200    
1201     ~? (S) { }
1202 wakaba 1.1 }
1203 wakaba 1.3
1204     ~? (Name == 'standalone') {
1205     ~? (S) { }
1206     ~ (VI) { }
1207     ~? (S) { }
1208    
1209     my $ver;
1210     my $bad_token;
1211    
1212     ~ (LIT) {
1213     ?lexmode AttributeValueLiteral;
1214    
1215     ~ (STRING) {
1216     lang:Perl ($version => $token.value) {
1217     $ver = $version;
1218     $bad_token = $token;
1219     }
1220     }
1221    
1222     ~ (LIT) {
1223     ?lexmode XMLDeclaration;
1224     }
1225     } (LITA) {
1226     ?lexmode AttributeValueLiteralA;
1227    
1228     ~ (STRING) {
1229     lang:Perl ($version => $token.value) {
1230     $ver = $version;
1231     $bad_token = $token;
1232     }
1233     }
1234 wakaba 1.1
1235 wakaba 1.3 ~ (LITA) {
1236     ?lexmode XMLDeclaration;
1237     }
1238     }
1239    
1240     lang:Perl : has-error {
1241     unless ($ver eq 'yes' or $ver eq 'no') {
1242     my $location;
1243     __CODE{xp|get-location-from-token::
1244     $token => {$bad_token},
1245     $result => {$location},
1246     }__;
1247     my $continue = __DOMCore:ERROR{xp|wf-malformed-xml-standalone::
1248     DOMCore|location => {$location},
1249 wakaba 1.16 xp|parent => {$self->{doc}},
1250 wakaba 1.3 xp|name => {$ver},
1251     xp|error-token => {$bad_token},
1252     }__;
1253     unless ($continue) {
1254 wakaba 1.27 __CODE{ParseError}__;
1255 wakaba 1.3 }
1256     }
1257 wakaba 1.13 if ($ver eq 'yes') {
1258 wakaba 1.16 $self->{doc}-><AS::Document.xmlStandalone> (true);
1259 wakaba 1.13 $self->{standalone} = true;
1260     }
1261 wakaba 1.3 }
1262    
1263     ~? (S) { }
1264     }
1265    
1266 wakaba 1.16 ~ (PIC1) {
1267     lang:Perl {
1268     $self->{entity}->[-1]->{no_xml11_eol} = false;
1269     }
1270     } else {
1271     lang:Perl {
1272     $self->{entity}->[-1]->{no_xml11_eol} = false;
1273     }
1274     }
1275    
1276     // ~ (PIC2) { }
1277 wakaba 1.3 } // _XMLDeclaration_
1278 wakaba 1.1
1279     /*
1280     Comment Declaration
1281    
1282     Comment := '<!--' *(Char - '-' / '-' (Char - '-'))
1283     '-->' ;; [15]
1284 wakaba 1.4 */
1285 wakaba 1.1 rule _CommentDeclaration_ ($doc, $parent) {
1286     ?lexmode 'CommentDeclaration';
1287    
1288     ~? (STRING) {
1289     lang:Perl ($data => $token.value) {
1290     my $com = $doc-><M::Document.createComment> ($data);
1291     $parent-><M::Node.appendChild> ($com);
1292     }
1293     } else {
1294     lang:Perl {
1295     my $com = $doc-><M::Document.createComment> ('');
1296     $parent-><M::Node.appendChild> ($com);
1297     }
1298     }
1299    
1300     ~ (COM) {
1301     ?lexmode MarkupDeclaration;
1302     } else {
1303     ?lexmode MarkupDeclaration;
1304     }
1305    
1306     // ~ (MDC) { }
1307 wakaba 1.4 } // _CommentDeclaration
1308 wakaba 1.15
1309     rule _CommentDeclarationDTD {
1310     ?lexmode CommentDeclaration;
1311 wakaba 1.4
1312     ~? (STRING) {
1313     //
1314     }
1315    
1316     ~ (COM) {
1317     ?lexmode MarkupDeclaration;
1318     } else {
1319     ?lexmode MarkupDeclaration;
1320     }
1321    
1322     ~ (MDC) {
1323     ?lexmode DTD;
1324     } else {
1325     ?lexmode DTD;
1326     }
1327     } // _CommentDeclarationDTD
1328    
1329 wakaba 1.1 /*
1330     Processing Instruction
1331    
1332     PI := '<?' PITarget [S *Char - *Char '?>' *Char]
1333     '?>' ;; [16]
1334     */
1335     rule _ProcessingInstruction_ ($doc, $parent) {
1336     ?lexmode 'PIName';
1337    
1338     my $pi;
1339    
1340     ~ (Name) {
1341 wakaba 1.3 lang:Perl ($name => $token.value) : has-error {
1342 wakaba 1.1 if (lc $name eq 'xml') {
1343 wakaba 1.3 my $location;
1344     __CODE{xp|get-location-from-token::
1345     $token => {$token},
1346     $result => {$location},
1347     }__;
1348     my $continue = __DOMCore:ERROR{xp|wf-pi-target-is-xml::
1349     xp|name => {$name},
1350     DOMCore|location => {$location},
1351     xp|parent => {$parent},
1352     }__;
1353     unless ($continue) {
1354 wakaba 1.27 __CODE{ParseError}__;
1355 wakaba 1.3 }
1356 wakaba 1.1 }
1357 wakaba 1.26 __CODE{checkNCName:: $name => $name}__;
1358    
1359 wakaba 1.1 $pi = $doc-><M::Document.createProcessingInstruction>
1360     ($name);
1361     }
1362 wakaba 1.14 } else {
1363     lang:Perl {
1364     $pi = $doc-><M::Document.createProcessingInstruction> ('#INVALID');
1365     }
1366 wakaba 1.1 }
1367    
1368 wakaba 1.14 ~? (S) {
1369 wakaba 1.1 ?lexmode 'PIData';
1370    
1371     my $tdata;
1372    
1373     ~? (DATA) {
1374     lang:Perl ($data => $token.value) {
1375     $tdata = $data;
1376     }
1377     } else {
1378     lang:Perl {
1379     $tdata = '';
1380     }
1381     }
1382    
1383     lang:Perl {
1384     $pi-><AS::Node.nodeValue> ($tdata);
1385     }
1386     }
1387    
1388     lang:Perl {
1389     $parent-><M::Node.appendChild> ($pi);
1390     }
1391    
1392     // ~ (PIC) { }
1393     } // _ProcessingInstruction_
1394 wakaba 1.4
1395 wakaba 1.6 /*
1396     Processing instruction in DTD
1397     */
1398     rule _ProcessingInstructionDTD ($doc, $doctype) {
1399 wakaba 1.4 ?lexmode 'PIName';
1400 wakaba 1.6
1401     my $pi;
1402 wakaba 1.4
1403     ~ (Name) {
1404 wakaba 1.6 lang:Perl ($name => $token.value) : has-error {
1405     if (lc $name eq 'xml') {
1406     my $location;
1407     __CODE{xp|get-location-from-token::
1408     $token => {$token},
1409     $result => {$location},
1410     }__;
1411     my $continue = __DOMCore:ERROR{xp|wf-pi-target-is-xml::
1412     xp|name => {$name},
1413     DOMCore|location => {$location},
1414     xp|parent => {$doctype},
1415     }__;
1416     unless ($continue) {
1417 wakaba 1.27 __CODE{ParseError}__;
1418 wakaba 1.6 }
1419     }
1420 wakaba 1.26 __CODE{checkNCName:: $name => $name}__;
1421    
1422 wakaba 1.6 $pi = $doc-><M::Document.createProcessingInstruction>
1423     ($name);
1424 wakaba 1.29 $pi-><AS::x|ProcessingInstruction.manakaiBaseURI>
1425     ($self->{location}->{base_uri});
1426 wakaba 1.6 }
1427 wakaba 1.14 } else {
1428     lang:Perl {
1429     $pi = $doc-><M::Document.createProcessingInstruction> ('#INVALID');
1430     }
1431 wakaba 1.4 }
1432    
1433 wakaba 1.14 ~? (S) {
1434 wakaba 1.4 ?lexmode 'PIData';
1435    
1436 wakaba 1.6 my $tdata;
1437    
1438 wakaba 1.4 ~? (DATA) {
1439 wakaba 1.6 lang:Perl ($data => $token.value) {
1440     $tdata = $data;
1441     }
1442     } else {
1443     lang:Perl {
1444     $tdata = '';
1445     }
1446     }
1447    
1448     lang:Perl {
1449     $pi-><AS::Node.nodeValue> ($tdata);
1450 wakaba 1.4 }
1451     }
1452    
1453 wakaba 1.6 lang:Perl {
1454     $doctype-><M::Node.appendChild> ($pi);
1455     }
1456    
1457 wakaba 1.4 ~ (PIC) {
1458     ?lexmode DTD;
1459     } else {
1460     ?lexmode DTD;
1461     }
1462     } // _ProcessingInstructionDTD
1463 wakaba 1.1
1464     /*
1465     Element content parsing mode
1466    
1467     element := EmptyElemTag /
1468     STag content ETag ;; [39]
1469     content := (CharData / element / Reference / CDSect /
1470     PI / Comment) ;; [43]
1471     */
1472 wakaba 1.6 rule Element_ ($doc, $parent, $ns) : standalone {
1473 wakaba 1.1 ?lexmode 'ElementContent';
1474    
1475     my $node; // Current "parent" node
1476     my $nodes; // Node stack (w/o $current_node)
1477     my $type; // Current "parent" element type QName
1478     my $types; // Element type stack (w/o $current_type)
1479 wakaba 1.6 //my $ns; // Current in-scope namespace bindings
1480 wakaba 1.1 my $nses; // Namespace binding stack (w/o $current_ns)
1481    
1482     lang:Perl {
1483     $node = $parent;
1484     $nodes = [];
1485     $type = '';
1486     $types = [];
1487 wakaba 1.6 $ns ||= {
1488 wakaba 1.1 xml => <Q::xml:>,
1489     xmlns => <Q::xmlns:>,
1490     };
1491     $nses = [];
1492     }
1493    
1494     ~* : name => CONTENT
1495     (CharData) {
1496     // Character data
1497     lang:Perl ($data => $token.value) {
1498 wakaba 1.31 $node-><M::Node.manakaiAppendText> (\($data));
1499 wakaba 1.1 }
1500     } (STAGO) {
1501     // Start tag or empty element tag
1502    
1503     ?lexmode 'StartTag';
1504    
1505     ~ (Name) {
1506     my $attrs;
1507 wakaba 1.26 lang:Perl ($name => $token.value) : has-error {
1508     __CODE{checkQName:: $name => $name}__;
1509 wakaba 1.1 push @{$types}, $type;
1510     $type = $name;
1511     $attrs = {};
1512     }
1513    
1514     ~? (S) {
1515     &AttributeSpecificationList
1516     ($doc => $doc, $attrs => $attrs);
1517     }
1518    
1519     my $el;
1520 wakaba 1.9
1521     /*
1522     Note that this implementation does not perform
1523     attribute value tokenization (but does white space
1524     normalization common to attribute types) and
1525     construct the tree as is. DOM Level 3 Core spec
1526     is unclear on this point. With tokenization,
1527     entity references cannot be preserved.
1528    
1529     The manakai Node.nodeValue and Attr.value attributes
1530     do tokenization according to attribute types.
1531     */
1532    
1533     /*
1534     ISSUE: Should |xml:id| attribute be typed?
1535     */
1536 wakaba 1.1
1537     lang:Perl {
1538     push @{$nses}, $ns;
1539     $ns = {%$ns};
1540 wakaba 1.26
1541     ## Default attributes
1542     DA: for my $atqname (%{$self->{attr}->{$type}}) {
1543     next DA unless $self->{attr}->{$type}->{$atqname};
1544     next DA if exists $attrs->{$atqname}; # specified
1545     my $dtype = $self->{attr}->{$type}->{$atqname}
1546     -><AG::ATDef.defaultType>;
1547     next DA unless $dtype == <C::ATDef.EXPLICIT_DEFAULT> or
1548     $dtype == <C::ATDef.FIXED_DEFAULT>;
1549     $attrs->{$atqname} = {is_default => true, nodes => []};
1550     for (@{$self->{attr}->{$type}->{$atqname}
1551     -><AG::Node.childNodes>}) {
1552     push @{$attrs->{$atqname}->{nodes}},
1553     $_-><M::Node.cloneNode> (true);
1554     }
1555     }
1556 wakaba 1.1
1557     my %gattr;
1558     my %lattr;
1559     for my $atqname (keys %$attrs) {
1560     my ($pfx, $lname) = split /:/, $atqname;
1561 wakaba 1.9 $attrs->{$atqname}->{def} = $self->{attr}->{$type}->{$atqname};
1562 wakaba 1.1 if (defined $lname) { ## Global attribute
1563     if ($pfx eq 'xmlns') {
1564 wakaba 1.26 my $nsuri = $attrs->{$atqname}->{is_default}
1565     ? $attrs->{$atqname}->{def}-><AG::Node.nodeValue>
1566     : $attrs->{$atqname}->{value};
1567     if (not $attrs->{$atqname}->{is_default} and
1568     $attrs->{$atqname}->{def}) {
1569 wakaba 1.9 my $dt = $attrs->{$atqname}->{def}-><AG::ATDef.declaredType>;
1570     if ({
1571     <C::ATDef.ID_ATTR> => true,
1572     <C::ATDef.IDREF_ATTR> => true,
1573     <C::ATDef.IDREFS_ATTR> => true,
1574     <C::ATDef.ENTITY_ATTR> => true,
1575     <C::ATDef.ENTITIES_ATTR> => true,
1576     <C::ATDef.NMTOKEN_ATTR> => true,
1577     <C::ATDef.NMTOKENS_ATTR> => true,
1578     <C::ATDef.NOTATION_ATTR> => true,
1579     <C::ATDef.ENUMERATION_ATTR> => true,
1580     }->{$dt}) {
1581     ## Tokenization (XML 1 3.3.3)
1582 wakaba 1.26 for ($nsuri) {
1583 wakaba 1.9 s/^\x20+//;
1584     s/\x20+\z//;
1585     s/\x20+/ /g;
1586     }
1587     }
1588     }
1589 wakaba 1.26 if ($lname eq 'xml' and
1590     $nsuri ne <Q::xml:>) {
1591     my $location;
1592     __CODE{xp|get-location-from-token::
1593     $token => $token,
1594     $result => $location,
1595     }__;
1596     my $continue = __c|ERROR{xp|nsc-reserved-prefix-xml::
1597     c|location => {$location},
1598     xp|token => {$token},
1599     infoset|prefix => {$lname},
1600     infoset|namespaceName => {$nsuri},
1601     }__;
1602     unless ($continue) {
1603 wakaba 1.27 __CODE{ParseError}__;
1604 wakaba 1.26 }
1605     } elsif ($lname eq 'xmlns') {
1606     my $location;
1607     __CODE{xp|get-location-from-token::
1608     $token => $token,
1609     $result => $location,
1610     }__;
1611     my $continue = __c|ERROR{xp|nsc-reserved-prefix-xmlns::
1612     c|location => {$location},
1613     xp|token => {$token},
1614     infoset|prefix => {$lname},
1615     infoset|namespaceName => {$nsuri},
1616     }__;
1617     unless ($continue) {
1618 wakaba 1.27 __CODE{ParseError}__;
1619 wakaba 1.26 }
1620     }
1621     if ($nsuri eq '') {
1622     if ($self->{xml_version} eq '1.0') {
1623     my $location;
1624     __CODE{xp|get-location-from-token::
1625     $token => $token,
1626     $result => $location,
1627     }__;
1628     my $continue = __c|ERROR{xp|nswf-empty-namespace-name::
1629     c|location => {$location},
1630     xp|token => {$token},
1631     infoset|namespaceName => {$nsuri},
1632     infoset|prefix => {$lname},
1633     }__;
1634     unless ($continue) {
1635 wakaba 1.27 __CODE{ParseError}__;
1636 wakaba 1.26 }
1637     }
1638     } elsif ($nsuri eq <Q::xml:> and
1639     $lname ne 'xml') {
1640     my $location;
1641     __CODE{xp|get-location-from-token::
1642     $token => $token,
1643     $result => $location,
1644     }__;
1645     my $continue = __c|ERROR{
1646     xp|nsc-reserved-namespace-name-xml::
1647     c|location => {$location},
1648     xp|token => {$token},
1649     infoset|prefix => {$lname},
1650     infoset|namespaceName => {$nsuri},
1651     }__;
1652     unless ($continue) {
1653 wakaba 1.27 __CODE{ParseError}__;
1654 wakaba 1.26 }
1655     } elsif ($nsuri eq <Q::xmlns:>) {
1656     my $location;
1657     __CODE{xp|get-location-from-token::
1658     $token => $token,
1659     $result => $location,
1660     }__;
1661     my $continue = __c|ERROR{
1662     xp|nsc-reserved-namespace-name-xmlns::
1663     c|location => {$location},
1664     xp|token => {$token},
1665     infoset|prefix => {$lname},
1666     infoset|namespaceName => {$nsuri},
1667     }__;
1668     unless ($continue) {
1669 wakaba 1.27 __CODE{ParseError}__;
1670 wakaba 1.26 }
1671     }
1672     $ns->{$lname} = $nsuri;
1673 wakaba 1.1 delete $ns->{$lname} unless length $ns->{$lname};
1674     }
1675     $gattr{$pfx}->{$lname} = $attrs->{$atqname};
1676     } else { ## Local attribute
1677     if ($pfx eq 'xmlns') {
1678 wakaba 1.26 $ns->{''} = $attrs->{xmlns}->{is_default}
1679     ? $attrs->{xmlns}->{def}-><AG::Node.nodeValue>
1680     : $attrs->{xmlns}->{value};
1681     if (not $attrs->{$atqname}->{is_default} and
1682     $attrs->{$atqname}->{def}) {
1683 wakaba 1.9 my $dt = $attrs->{$atqname}->{def}-><AG::ATDef.declaredType>;
1684     if ({
1685     <C::ATDef.ID_ATTR> => true,
1686     <C::ATDef.IDREF_ATTR> => true,
1687     <C::ATDef.IDREFS_ATTR> => true,
1688     <C::ATDef.ENTITY_ATTR> => true,
1689     <C::ATDef.ENTITIES_ATTR> => true,
1690     <C::ATDef.NMTOKEN_ATTR> => true,
1691     <C::ATDef.NMTOKENS_ATTR> => true,
1692     <C::ATDef.NOTATION_ATTR> => true,
1693     <C::ATDef.ENUMERATION_ATTR> => true,
1694     }->{$dt}) {
1695     ## Tokenization (XML 1 3.3.3)
1696     for ($ns->{''}) {
1697     s/^\x20+//;
1698     s/\x20+\z//;
1699     s/\x20+/ /g;
1700     }
1701     }
1702     }
1703 wakaba 1.26 unless ($ns->{''}) {
1704     delete $ns->{''};
1705     } elsif ($ns->{''} eq <Q::xml:>) {
1706     my $location;
1707     __CODE{xp|get-location-from-token::
1708     $token => $token,
1709     $result => $location,
1710     }__;
1711     my $continue = __c|ERROR{
1712     xp|nsc-reserved-namespace-name-xml::
1713     c|location => {$location},
1714     xp|token => {$token},
1715     infoset|prefix => {null},
1716     infoset|namespaceName => {<Q::xml:>},
1717     }__;
1718     unless ($continue) {
1719 wakaba 1.27 __CODE{ParseError}__;
1720 wakaba 1.26 }
1721     } elsif ($ns->{''} eq <Q::xmlns:>) {
1722     my $location;
1723     __CODE{xp|get-location-from-token::
1724     $token => $token,
1725     $result => $location,
1726     }__;
1727     my $continue = __c|ERROR{
1728     xp|nsc-reserved-namespace-name-xmlns::
1729     c|location => {$location},
1730     xp|token => {$token},
1731     infoset|prefix => {null},
1732     infoset|namespaceName => {<Q::xmlns:>},
1733     }__;
1734     unless ($continue) {
1735 wakaba 1.27 __CODE{ParseError}__;
1736 wakaba 1.26 }
1737     }
1738 wakaba 1.1 } else {
1739     $lattr{$pfx} = $attrs->{$atqname};
1740     }
1741     }
1742     }
1743    
1744     my ($pfx, $lname) = split /:/, $type;
1745     my $nsuri;
1746     if (defined $lname) { ## Prefixed namespace
1747     if (defined $ns->{$pfx}) {
1748     $nsuri = $ns->{$pfx};
1749     } else {
1750 wakaba 1.26 my $location;
1751     __CODE{xp|get-location-from-token::
1752     $token => $token,
1753     $result => $location,
1754     }__;
1755     my $continue = __c|ERROR{xp|nsc-prefix-declared::
1756     c|location => {$location},
1757     xp|token => {$token},
1758     infoset|prefix => {$pfx},
1759     xp|name => {$type},
1760     }__;
1761     unless ($continue) {
1762 wakaba 1.27 __CODE{ParseError}__;
1763 wakaba 1.26 }
1764 wakaba 1.1 }
1765     } else { ## Default namespace
1766     $nsuri = $ns->{''};
1767     }
1768    
1769     $el = $doc-><M::Document.createElementNS>
1770     ($nsuri, $type);
1771    
1772     if ($attrs->{xmlns}) {
1773     my $attr = $doc-><M::Document.createAttributeNS>
1774     (<Q::xmlns:>, 'xmlns');
1775     for (@{$attrs->{xmlns}->{nodes}}) {
1776 wakaba 1.31 if ($_-><AG::Node.nodeType> == <C::Node.TEXT_NODE>) {
1777     $attr-><M::Node.manakaiAppendText>
1778     (\($_-><AG::Node.textContent>));
1779     } else {
1780     $attr-><M::Node.appendChild> ($_);
1781     }
1782 wakaba 1.1 }
1783 wakaba 1.9 if ($attrs->{xmlns}->{def}) {
1784     __CODE{t|setAttrType::
1785     $attr => $attr,
1786     $type => {$attrs->{xmlns}->{def}-><AG::ATDef.declaredType>},
1787     }__;
1788     }
1789 wakaba 1.1 $el-><M::Element.setAttributeNodeNS> ($attr);
1790 wakaba 1.26 $attr-><AS::t|Attr.specified> (false)
1791     if $attrs->{xmlns}->{is_default};
1792 wakaba 1.1 }
1793    
1794     for my $lname (keys %lattr) {
1795     my $attr = $doc-><M::Document.createAttributeNS>
1796     (null, $lname);
1797     for (@{$lattr{$lname}->{nodes}}) {
1798 wakaba 1.31 if ($_-><AG::Node.nodeType> == <C::Node.TEXT_NODE>) {
1799     $attr-><M::Node.manakaiAppendText>
1800     (\($_-><AG::Node.textContent>));
1801     } else {
1802     $attr-><M::Node.appendChild> ($_);
1803     }
1804 wakaba 1.1 }
1805 wakaba 1.9 if ($attrs->{$lname}->{def}) {
1806     __CODE{t|setAttrType::
1807     $attr => $attr,
1808     $type => {$attrs->{$lname}->{def}-><AG::ATDef.declaredType>},
1809     }__;
1810     }
1811 wakaba 1.1 $el-><M::Element.setAttributeNodeNS> ($attr);
1812 wakaba 1.26 $attr-><AS::t|Attr.specified> (false)
1813     if $attrs->{$lname}->{is_default};
1814 wakaba 1.1 }
1815    
1816     for my $pfx (keys %gattr) {
1817 wakaba 1.26 LN: for my $lname (keys %{$gattr{$pfx}}) {
1818     my $name = $pfx.':'.$lname;
1819     unless (defined $ns->{$pfx}) {
1820     my $location;
1821     __CODE{xp|get-location-from-token::
1822     $token => $token,
1823     $result => $location,
1824     }__;
1825     my $continue = __c|ERROR{xp|nsc-prefix-declared::
1826     c|location => {$location},
1827     xp|token => {$token},
1828     xp|name => {$name},
1829     infoset|prefix => {$pfx},
1830     }__;
1831     unless ($continue) {
1832 wakaba 1.27 __CODE{ParseError}__;
1833 wakaba 1.26 }
1834     }
1835     my $attr = $el-><M::Element.getAttributeNodeNS>
1836     ($ns->{$pfx}, $lname);
1837     if ($attr) {
1838     my $another_name = $attr-><AG::Node.nodeName>;
1839     if ($name ne $another_name) {
1840     my $location;
1841     __CODE{xp|get-location-from-token::
1842     $token => $token,
1843     $result => $location,
1844     }__;
1845     my $continue = __c|ERROR{
1846     xp|nswf-unique-att-spec-expanded-name::
1847     c|location => {$location},
1848     xp|token => {$token},
1849     xp|another-attribute-name => {$another_name},
1850     xp|name => {$name},
1851     infoset|namespaceName => {$ns->{$pfx}},
1852     infoset|localName => {$lname},
1853     }__;
1854     unless ($continue) {
1855 wakaba 1.27 __CODE{ParseError}__;
1856 wakaba 1.26 }
1857     unless ($attr-><AG::t|Attr.specified>) {
1858     ## It is a default attribute
1859     $attr = $doc-><M::Document.createAttributeNS>
1860     ($ns->{$pfx}, $name);
1861     } else {
1862     ## It is a specified attribute
1863     next LN;
1864     }
1865     } else { ## There is default attribute
1866     $attr = $doc-><M::Document.createAttributeNS>
1867     ($ns->{$pfx}, $name);
1868     }
1869     } else {
1870     $attr = $doc-><M::Document.createAttributeNS>
1871     ($ns->{$pfx}, $name);
1872     }
1873 wakaba 1.1 for (@{$gattr{$pfx}->{$lname}->{nodes}}) {
1874 wakaba 1.31 if ($_-><AG::Node.nodeType> == <C::Node.TEXT_NODE>) {
1875     $attr-><M::Node.manakaiAppendText>
1876     (\($_-><AG::Node.textContent>));
1877     } else {
1878     $attr-><M::Node.appendChild> ($_);
1879     }
1880 wakaba 1.1 }
1881 wakaba 1.26 if ($gattr{$pfx}->{$lname}->{def}) {
1882 wakaba 1.9 __CODE{t|setAttrType::
1883     $attr => $attr,
1884 wakaba 1.26 $type => {$gattr{$pfx}->{$lname}
1885 wakaba 1.9 ->{def}-><AG::ATDef.declaredType>},
1886     }__;
1887     }
1888 wakaba 1.1 $el-><M::Element.setAttributeNodeNS> ($attr);
1889 wakaba 1.26 $attr-><AS::t|Attr.specified> (false)
1890     if $gattr{$pfx}->{$lname}->{is_default};
1891     } # PFX
1892 wakaba 1.1 }
1893    
1894     $node-><M::Node.appendChild> ($el);
1895     }
1896    
1897     ~ (TAGC) {
1898     lang:Perl {
1899     push @{$nodes}, $node;
1900     $node = $el;
1901     }
1902     ?lexmode ElementContent;
1903 wakaba 1.6 } (NESTC) {
1904     my $is_docel;
1905 wakaba 1.1 lang:Perl {
1906     $ns = pop @{$nses};
1907     $type = pop @{$types};
1908 wakaba 1.6 $is_docel = (@{$types} == 0);
1909     }
1910    
1911     if-true ($is_docel) {
1912     return;
1913     }
1914    
1915     ~ (TAGC) {
1916     ?lexmode ElementContent;
1917     } else {
1918     ?lexmode ElementContent;
1919 wakaba 1.1 }
1920     } else {
1921     ?lexmode ElementContent;
1922     }
1923     } else {
1924     ?lexmode ElementContent;
1925     }
1926    
1927     } (ETAGO) {
1928     // End tag
1929    
1930     ?lexmode 'EndTag';
1931    
1932     my $is_docel;
1933    
1934     ~ (Name) {
1935 wakaba 1.26 // No NCName & QName check (it must match to start-tag)
1936 wakaba 1.3 lang:Perl ($name => $token.value) : has-error {
1937 wakaba 1.1 if ($name eq $type) {
1938     $type = pop @{$types};
1939     if ($type eq '') {
1940     $is_docel = true;
1941     }
1942     $node = pop @{$nodes};
1943     $ns = pop @{$nses};
1944     } else {
1945 wakaba 1.3 my $location;
1946     __CODE{xp|get-location-from-token::
1947     $token => $token,
1948     $result => $location,
1949     }__;
1950     my $continue = __DOMCore:ERROR{xp|wf-element-type-match::
1951     DOMCore:location => {$location},
1952     xp|token => {$token},
1953     xp|expected-element-type => {$type},
1954     xp|actual-element-type => {$name},
1955     xp|node => {$node},
1956     }__;
1957     unless ($continue) {
1958 wakaba 1.27 __CODE{ParseError}__;
1959 wakaba 1.3 }
1960 wakaba 1.1 }
1961     }
1962     }
1963    
1964     ~? (S) { }
1965    
1966     if-true ($is_docel) {
1967 wakaba 1.3 lang:Perl : has-error {
1968 wakaba 1.1 if (@{$types}) {
1969 wakaba 1.3 my $location;
1970     __CODE{xp|get-location-from-token::
1971     $token => $token,
1972     $result => $location,
1973     }__;
1974     for my $type (reverse @{$types}) {
1975     my $continue = __DOMCore:ERROR{xp|wf-no-end-tag::
1976     DOMCore:location => {$location},
1977     xp|token => {$token},
1978     xp|expected-element-type => {$type},
1979     xp|node => {$node},
1980     }__;
1981     unless ($continue) {
1982 wakaba 1.27 __CODE{ParseError}__;
1983 wakaba 1.3 }
1984     $node = shift @{$nodes};
1985     }
1986 wakaba 1.1 }
1987     }
1988     return;
1989     }
1990    
1991     ~ (TAGC) {
1992     ?lexmode ElementContent;
1993     } else {
1994     ?lexmode 'ElementContent';
1995     }
1996    
1997     } (HCRO) {
1998     &_HexadecimalCharacterReference_
1999     ($doc => $doc, $parent => $node);
2000    
2001     ~ (REFC) {
2002     ?lexmode 'ElementContent';
2003     } else {
2004     ?lexmode ElementContent;
2005     }
2006     } (CRO) {
2007     &_NumericCharacterReference_
2008     ($doc => $doc, $parent => $node);
2009    
2010     ~ (REFC) {
2011     ?lexmode 'ElementContent';
2012     } else {
2013     ?lexmode ElementContent;
2014     }
2015     } (ERO) {
2016 wakaba 1.6 &_GeneralEntityReferenceEC
2017     ($doc => $doc, $parent => $node, $ns => $ns);
2018 wakaba 1.1 } (CDO) {
2019     &_CommentDeclaration_ ($doc => $doc, $parent => $node);
2020    
2021     ~ (MDC) {
2022     ?lexmode ElementContent;
2023     } else {
2024     ?lexmode ElementContent;
2025     }
2026     } (CDSO) {
2027     &_CDATASection_ ($doc => $doc, $parent => $node);
2028    
2029     ~ (MSE) {
2030     ?lexmode 'ElementContent';
2031     } else {
2032     ?lexmode ElementContent;
2033     }
2034     } (PIO) {
2035     &_ProcessingInstruction_ ($doc => $doc, $parent => $node);
2036    
2037     ~ (PIC) {
2038     ?lexmode 'ElementContent';
2039     } else {
2040     ?lexmode ElementContent;
2041     }
2042     }
2043 wakaba 1.3
2044     ~ (#NONE) { }
2045 wakaba 1.1 } // Element_
2046 wakaba 1.11
2047     /*
2048     content := [CharData]
2049     *((element / Reference / CDSect / PI / Comment) [CharData])
2050     */
2051     rule content ($parent, $ns) {
2052     // ?lexmode ElementContent;
2053    
2054     my $doc;
2055     lang:Perl {
2056     $doc = $self->{doc};
2057     }
2058    
2059     ~* (CharData) {
2060     lang:Perl ($data => $token.value) {
2061 wakaba 1.31 $parent-><M::Node.manakaiAppendText> (\($data));
2062 wakaba 1.11 }
2063     } (STAGO) {
2064     &Element_ ($doc => $doc, $parent => $parent, $ns => $ns)
2065     : unshift-current-token;
2066     ~ (TAGC) {
2067     ?lexmode ElementContent;
2068     } else {
2069     ?lexmode ElementContent;
2070     }
2071     } (HCRO) {
2072 wakaba 1.31 &_HexadecimalCharacterReference_ ($parent => $parent);
2073 wakaba 1.11
2074     ~ (REFC) {
2075     ?lexmode 'ElementContent';
2076     } else {
2077     ?lexmode ElementContent;
2078     }
2079     } (CRO) {
2080 wakaba 1.31 &_NumericCharacterReference_ ($parent => $parent);
2081 wakaba 1.11
2082     ~ (REFC) {
2083     ?lexmode 'ElementContent';
2084     } else {
2085     ?lexmode ElementContent;
2086     }
2087     } (ERO) {
2088     &_GeneralEntityReferenceEC
2089     ($doc => $doc, $parent => $parent, $ns => $ns);
2090     } (CDO) {
2091     &_CommentDeclaration_ ($doc => $doc, $parent => $parent);
2092    
2093     ~ (MDC) {
2094     ?lexmode ElementContent;
2095     } else {
2096     ?lexmode ElementContent;
2097     }
2098     } (CDSO) {
2099     &_CDATASection_ ($doc => $doc, $parent => $parent);
2100    
2101     ~ (MSE) {
2102     ?lexmode 'ElementContent';
2103     } else {
2104     ?lexmode ElementContent;
2105     }
2106     } (PIO) {
2107     &_ProcessingInstruction_ ($doc => $doc, $parent => $parent);
2108    
2109     ~ (PIC) {
2110     ?lexmode 'ElementContent';
2111     } else {
2112     ?lexmode ElementContent;
2113     }
2114     }
2115     } // content
2116 wakaba 1.1
2117     rule AttributeSpecificationList ($doc, $attrs)
2118     : standalone
2119     {
2120     ?lexmode 'StartTag';
2121    
2122     my $i;
2123     lang:Perl {
2124     $i = 0;
2125     }
2126    
2127     ~* (Name) {
2128     my $atqname;
2129 wakaba 1.26 lang:Perl ($name => $token.value) : has-error {
2130     __CODE{checkQName:: $name => $name}__;
2131 wakaba 1.1 $atqname = $name;
2132     }
2133    
2134     my $vals;
2135 wakaba 1.18 lang:Perl : has-error {
2136 wakaba 1.1 if ($attrs->{$atqname}) {
2137 wakaba 1.3 my $location;
2138     __CODE{xp|get-location-from-token::
2139     $token => $token,
2140     $result => $location,
2141     }__;
2142     my $continue = __DOMCore:ERROR{xp|wf-unique-att-spec::
2143     DOMCore:location => {$location},
2144     xp|token => {$token},
2145     xp|name => {$atqname},
2146     }__;
2147     unless ($continue) {
2148 wakaba 1.27 __CODE{ParseError}__;
2149 wakaba 1.3 }
2150 wakaba 1.1 }
2151    
2152     $vals = $attrs->{$atqname} = {
2153     nodes => [],
2154     value => '',
2155     index => $i++,
2156     };
2157     }
2158 wakaba 1.3
2159     ~? (S) { }
2160     ~ (VI) { }
2161     ~? (S) { }
2162 wakaba 1.1
2163     ~ (LIT) {
2164     &_AttributeValueSpecification_
2165     ($doc => $doc, $vals => $vals);
2166    
2167     ~ (LIT) {
2168     ?lexmode StartTag;
2169     } else {
2170     ?lexmode StartTag;
2171     }
2172     } (LITA) {
2173     &_AttributeValueSpecificationA_
2174     ($doc => $doc, $vals => $vals);
2175    
2176     ~ (LITA) {
2177     ?lexmode StartTag;
2178     } else {
2179     ?lexmode StartTag;
2180     }
2181     }
2182     } (S) : separator : terminator? { }
2183     } // AttributeSpecificationList
2184    
2185     rule _AttributeValueSpecification_ ($doc, $vals) {
2186     // ~ (LIT) { }
2187     ?lexmode 'AttributeValueLiteral';
2188    
2189     ~* (STRING) {
2190     lang:Perl ($value => $token.value) {
2191     $value =~ s/[\x09\x0A\x0D]/ /g;
2192     my $text = $doc-><M::Document.createTextNode> ($value);
2193     push @{$vals->{nodes}}, $text;
2194     $vals->{value} .= $value;
2195     }
2196     } (HCRO) {
2197     &_HexadecimalCharacterReferenceV_
2198     ($doc => $doc, $vals => $vals);
2199    
2200     ~ (REFC) {
2201     ?lexmode AttributeValueLiteral;
2202     } else {
2203     ?lexmode AttributeValueLiteral;
2204     }
2205     } (CRO) {
2206     &_NumericCharacterReferenceV_
2207     ($doc => $doc, $vals => $vals);
2208    
2209     ~ (REFC) {
2210     ?lexmode AttributeValueLiteral;
2211     } else {
2212     ?lexmode AttributeValueLiteral;
2213     }
2214     } (ERO) {
2215     // TODO: Attribute value normalization
2216     &_GeneralEntityReferenceV_
2217     ($doc => $doc, $vals => $vals);
2218    
2219     ~ (REFC) {
2220     ?lexmode AttributeValueLiteral;
2221     } else {
2222     ?lexmode AttributeValueLiteral;
2223     }
2224     }
2225    
2226     // ~ (LIT) { } (LITA) { }
2227     } // _AttributeValueSpecification_
2228    
2229     rule _AttributeValueSpecificationA_ ($doc, $vals) {
2230     // ~ (LITA) { }
2231     ?lexmode 'AttributeValueLiteralA';
2232    
2233     ~* (STRING) {
2234     lang:Perl ($value => $token.value) {
2235     $value =~ s/[\x09\x0A\x0D]/ /g;
2236     my $text = $doc-><M::Document.createTextNode> ($value);
2237     push @{$vals->{nodes}}, $text;
2238     $vals->{value} .= $value;
2239     }
2240     } (HCRO) {
2241     &_HexadecimalCharacterReferenceV_
2242     ($doc => $doc, $vals => $vals);
2243    
2244     ~ (REFC) {
2245     ?lexmode AttributeValueLiteralA;
2246     } else {
2247     ?lexmode AttributeValueLiteralA;
2248     }
2249     } (CRO) {
2250     &_NumericCharacterReferenceV_
2251     ($doc => $doc, $vals => $vals);
2252    
2253     ~ (REFC) {
2254     ?lexmode AttributeValueLiteralA;
2255     } else {
2256     ?lexmode AttributeValueLiteralA;
2257     }
2258     } (ERO) {
2259     // TODO: Attribute value normalization
2260     &_GeneralEntityReferenceV_
2261     ($doc => $doc, $vals => $vals);
2262    
2263     ~ (REFC) {
2264     ?lexmode AttributeValueLiteralA;
2265     } else {
2266     ?lexmode AttributeValueLiteralA;
2267     }
2268     }
2269    
2270     // ~ (LITA) { }
2271     } // _AttributeValueSpecificationA_
2272    
2273     /*
2274 wakaba 1.11 Parsing replacement text of an entity referenced in
2275     an attribute value specification.
2276     */
2277     rule AttributeValueLiteralE_ ($parent, $vals)
2278     : recursive
2279     {
2280     // ?lexmode AttributeValueLiteralE;
2281    
2282     ~* (STRING) {
2283     lang:Perl ($value => $token.value) {
2284     $value =~ s/[\x09\x0A\x0D]/ /g;
2285 wakaba 1.31 $parent-><M::Node.manakaiAppendText> (\($value));
2286 wakaba 1.11 $vals->{value} .= $value;
2287     }
2288     } (HCRO) {
2289     &_HexadecimalCharacterReferenceAE_
2290     ($parent => $parent, $vals => $vals);
2291    
2292     ~ (REFC) {
2293     ?lexmode AttributeValueLiteralE;
2294     } else {
2295     ?lexmode AttributeValueLiteralE;
2296     }
2297     } (CRO) {
2298     &_NumericCharacterReferenceAE_
2299     ($parent => $parent, $vals => $vals);
2300    
2301     ~ (REFC) {
2302     ?lexmode AttributeValueLiteralE;
2303     } else {
2304     ?lexmode AttributeValueLiteralE;
2305     }
2306     } (ERO) {
2307     &_GeneralEntityReferenceAE_ ($parent => $parent, $vals => $vals);
2308    
2309     ~ (REFC) {
2310     ?lexmode AttributeValueLiteralE;
2311     } else {
2312     ?lexmode AttributeValueLiteralE;
2313     }
2314 wakaba 1.18 } (#INVALID == '<') {
2315     lang:Perl : has-error {
2316     my $location;
2317     __CODE{xp|get-location-from-token::
2318     $token => $token,
2319     $result => $location,
2320     }__;
2321     my $continue = __DOMCore:ERROR{xp|wf-no-lt-in-attribute-values::
2322     c|location => {$location},
2323     xp|token => {$token},
2324     }__;
2325     unless ($continue) {
2326 wakaba 1.27 __CODE{ParseError}__;
2327 wakaba 1.18 }
2328    
2329 wakaba 1.31 $parent-><M::Node.manakaiAppendText> ('<');
2330 wakaba 1.18 $vals->{value} .= '<';
2331     }
2332 wakaba 1.11 }
2333    
2334     // ~ (#EOF) { }
2335     } // AttributeValueLiteralE_
2336    
2337     /*
2338 wakaba 1.1 CDATA Section Content Parsing Mode
2339     */
2340     rule _CDATASection_ ($doc, $parent) {
2341     ?lexmode 'CDATASectionContent';
2342    
2343     my $cdata;
2344    
2345 wakaba 1.2 ~? (CData) {
2346 wakaba 1.1 lang:Perl ($data => $token.value) {
2347     $cdata = $data;
2348     }
2349     } else {
2350     lang:Perl {
2351     $cdata = '';
2352     }
2353     }
2354    
2355     lang:Perl {
2356     my $cdsect = $doc-><M::Document.createCDATASection>
2357     ($cdata);
2358     $parent-><M::Node.appendChild> ($cdsect);
2359     }
2360    
2361     // ~ (MSE) { }
2362     } // _CDATASection_
2363    
2364 wakaba 1.31 rule _NumericCharacterReference_ ($parent) {
2365 wakaba 1.1 ?lexmode 'NumericCharacterReference';
2366    
2367     ~ (NUMBER) {
2368 wakaba 1.3 lang:Perl ($num => $token.value) : has-error {
2369     $num += 0;
2370     unless (
2371     ($self->{xml_version} eq '1.0' and
2372     ((0x0020 <= $num and $num <= 0xD7FF) or
2373     (0xE000 <= $num and $num <= 0xFFFD) or
2374     (0x10000 <= $num and $num <= 0x10FFFF) or
2375     $num == 0x9 or $num == 0xA or $num == 0xD)) or
2376     ($self->{xml_version} eq '1.1' and
2377     ((0x0001 <= $num and $num <= 0xD7FF) or
2378     (0xE000 <= $num and $num <= 0xFFFD) or
2379     (0x10000 <= $num and $num <= 0x10FFFF)))
2380     ) {
2381     my $location;
2382     __CODE{xp|get-location-from-token::
2383     $token => $token,
2384     $result => $location,
2385     }__;
2386     my $continue = __DOMCore:ERROR{xp|wf-legal-character::
2387     DOMCore:location => {$location},
2388     xp|token => {$token},
2389     xp|character-number => {$num},
2390     xp|parent => {$parent},
2391     }__;
2392     unless ($continue) {
2393 wakaba 1.27 __CODE{ParseError}__;
2394 wakaba 1.3 }
2395     }
2396 wakaba 1.31 $parent-><M::Node.manakaiAppendText> (chr $num);
2397 wakaba 1.1 }
2398     }
2399    
2400     // ~ (REFC) { }
2401     } // _NumericCharacterReference_
2402    
2403     rule _NumericCharacterReferenceV_ ($doc, $vals) {
2404     ?lexmode 'NumericCharacterReference';
2405    
2406     ~ (NUMBER) {
2407 wakaba 1.3 lang:Perl ($num => $token.value) : has-error {
2408     $num += 0;
2409     unless (
2410     ($self->{xml_version} eq '1.0' and
2411     ((0x0020 <= $num and $num <= 0xD7FF) or
2412     (0xE000 <= $num and $num <= 0xFFFD) or
2413     (0x10000 <= $num and $num <= 0x10FFFF) or
2414     $num == 0x9 or $num == 0xA or $num == 0xD)) or
2415     ($self->{xml_version} eq '1.1' and
2416     ((0x0001 <= $num and $num <= 0xD7FF) or
2417     (0xE000 <= $num and $num <= 0xFFFD) or
2418     (0x10000 <= $num and $num <= 0x10FFFF)))
2419     ) {
2420     my $location;
2421     __CODE{xp|get-location-from-token::
2422     $token => $token,
2423     $result => $location,
2424     }__;
2425     my $continue = __DOMCore:ERROR{xp|wf-legal-character::
2426     DOMCore:location => {$location},
2427     xp|token => {$token},
2428     xp|character-number => {$num},
2429     }__;
2430     unless ($continue) {
2431 wakaba 1.27 __CODE{ParseError}__;
2432 wakaba 1.3 }
2433     }
2434 wakaba 1.1 my $ncr = $doc-><M::Document.createTextNode>
2435 wakaba 1.9 (my $char = chr $num);
2436 wakaba 1.1 push @{$vals->{nodes}}, $ncr;
2437     $vals->{value} .= $char;
2438     }
2439     }
2440    
2441     // ~ (REFC) { }
2442     } // _NumericCharacterReferenceV_
2443    
2444 wakaba 1.11 /*
2445     Numeric character reference in the replacement text
2446     of the entity referenced in an attribute value specification
2447     */
2448     rule _NumericCharacterReferenceAE_ ($parent, $vals)
2449     {
2450     ?lexmode NumericCharacterReference;
2451    
2452     ~ (NUMBER) {
2453     lang:Perl ($num => $token.value) : has-error {
2454     $num += 0;
2455     unless (
2456     ($self->{xml_version} eq '1.0' and
2457     ((0x0020 <= $num and $num <= 0xD7FF) or
2458     (0xE000 <= $num and $num <= 0xFFFD) or
2459     (0x10000 <= $num and $num <= 0x10FFFF) or
2460     $num == 0x9 or $num == 0xA or $num == 0xD)) or
2461     ($self->{xml_version} eq '1.1' and
2462     ((0x0001 <= $num and $num <= 0xD7FF) or
2463     (0xE000 <= $num and $num <= 0xFFFD) or
2464     (0x10000 <= $num and $num <= 0x10FFFF)))
2465     ) {
2466     my $location;
2467     __CODE{xp|get-location-from-token::
2468     $token => $token,
2469     $result => $location,
2470     }__;
2471     my $continue = __DOMCore:ERROR{xp|wf-legal-character::
2472     DOMCore:location => {$location},
2473     xp|token => {$token},
2474     xp|character-number => {$num},
2475     }__;
2476     unless ($continue) {
2477 wakaba 1.27 __CODE{ParseError}__;
2478 wakaba 1.11 }
2479     }
2480 wakaba 1.31 my $char = chr $num;
2481     $parent-><M::Node.manakaiAppendText> (\$char);
2482 wakaba 1.11 $vals->{value} .= $char;
2483     }
2484     }
2485    
2486     // ~ (REFC) { }
2487     } // _NumericCharacterReferenceAE_
2488    
2489     rule _NumericCharacterReferenceEV_ ($vals)
2490     {
2491     ?lexmode 'NumericCharacterReference';
2492    
2493     ~ (NUMBER) {
2494     lang:Perl ($num => $token.value) : has-error {
2495     $num += 0;
2496     unless (
2497     ($self->{xml_version} eq '1.0' and
2498     ((0x0020 <= $num and $num <= 0xD7FF) or
2499     (0xE000 <= $num and $num <= 0xFFFD) or
2500     (0x10000 <= $num and $num <= 0x10FFFF) or
2501     $num == 0x9 or $num == 0xA or $num == 0xD)) or
2502     ($self->{xml_version} eq '1.1' and
2503     ((0x0001 <= $num and $num <= 0xD7FF) or
2504     (0xE000 <= $num and $num <= 0xFFFD) or
2505     (0x10000 <= $num and $num <= 0x10FFFF)))
2506     ) {
2507     my $location;
2508     __CODE{xp|get-location-from-token::
2509     $token => $token,
2510     $result => $location,
2511     }__;
2512     my $continue = __DOMCore:ERROR{xp|wf-legal-character::
2513     DOMCore:location => {$location},
2514     xp|token => {$token},
2515     xp|character-number => {$num},
2516     }__;
2517     unless ($continue) {
2518 wakaba 1.27 __CODE{ParseError}__;
2519 wakaba 1.11 }
2520     }
2521     push @{$vals}, chr $num;
2522     }
2523     }
2524    
2525     // ~ (REFC) { }
2526     } // _NumericCharacterReferenceEV_
2527    
2528 wakaba 1.31 rule _HexadecimalCharacterReference_ ($parent) {
2529 wakaba 1.1 ?lexmode 'HexadecimalCharacterReference';
2530    
2531     ~ (Hex) {
2532 wakaba 1.9 lang:Perl ($v => $token.value) : has-error {
2533     my $num = hex $v;
2534 wakaba 1.3 unless (
2535     ($self->{xml_version} eq '1.0' and
2536     ((0x0020 <= $num and $num <= 0xD7FF) or
2537     (0xE000 <= $num and $num <= 0xFFFD) or
2538     (0x10000 <= $num and $num <= 0x10FFFF) or
2539     $num == 0x9 or $num == 0xA or $num == 0xD)) or
2540     ($self->{xml_version} eq '1.1' and
2541     ((0x0001 <= $num and $num <= 0xD7FF) or
2542     (0xE000 <= $num and $num <= 0xFFFD) or
2543     (0x10000 <= $num and $num <= 0x10FFFF)))
2544     ) {
2545     my $location;
2546     __CODE{xp|get-location-from-token::
2547     $token => $token,
2548     $result => $location,
2549     }__;
2550     my $continue = __DOMCore:ERROR{xp|wf-legal-character::
2551     DOMCore:location => {$location},
2552     xp|token => {$token},
2553     xp|character-number => {$num},
2554     xp|parent => {$parent},
2555     }__;
2556     unless ($continue) {
2557 wakaba 1.27 __CODE{ParseError}__;
2558 wakaba 1.3 }
2559     }
2560 wakaba 1.31 $parent-><M::Node.manakaiAppendText> (chr $num);
2561 wakaba 1.1 }
2562     }
2563    
2564     // ~ (REFC) { }
2565     } // _HexadecimalCharacterReference_
2566    
2567 wakaba 1.3 rule _HexadecimalCharacterReferenceV_ ($doc, $vals) {
2568 wakaba 1.1 ?lexmode 'HexadecimalCharacterReference';
2569    
2570     ~ (Hex) {
2571 wakaba 1.9 lang:Perl ($v => $token.value) : has-error {
2572     my $num = hex $v;
2573 wakaba 1.3 unless (
2574     ($self->{xml_version} eq '1.0' and
2575     ((0x0020 <= $num and $num <= 0xD7FF) or
2576     (0xE000 <= $num and $num <= 0xFFFD) or
2577     (0x10000 <= $num and $num <= 0x10FFFF) or
2578     $num == 0x9 or $num == 0xA or $num == 0xD)) or
2579     ($self->{xml_version} eq '1.1' and
2580     ((0x0001 <= $num and $num <= 0xD7FF) or
2581     (0xE000 <= $num and $num <= 0xFFFD) or
2582     (0x10000 <= $num and $num <= 0x10FFFF)))
2583     ) {
2584     my $location;
2585     __CODE{xp|get-location-from-token::
2586     $token => $token,
2587     $result => $location,
2588     }__;
2589     my $continue = __DOMCore:ERROR{xp|wf-legal-character::
2590     DOMCore:location => {$location},
2591     xp|token => {$token},
2592     xp|character-number => {$num},
2593     }__;
2594     unless ($continue) {
2595 wakaba 1.27 __CODE{ParseError}__;
2596 wakaba 1.3 }
2597     }
2598 wakaba 1.1 my $ncr = $doc-><M::Document.createTextNode>
2599 wakaba 1.9 (my $char = chr $num);
2600 wakaba 1.1 push @{$vals->{nodes}}, $ncr;
2601     $vals->{value} .= $char;
2602     }
2603     }
2604    
2605     // ~ (REFC) { }
2606 wakaba 1.11 } // _HexadecimalCharacterReferenceV_
2607    
2608     /*
2609     Hexadecimal character reference in the replacement text
2610     of the entity referenced in an attribute value literal
2611     */
2612     rule _HexadecimalCharacterReferenceAE_ ($parent, $vals)
2613     {
2614     ?lexmode HexadecimalCharacterReference;
2615    
2616     ~ (Hex) {
2617     lang:Perl ($v => $token.value) : has-error {
2618     my $num = hex $v;
2619     unless (
2620     ($self->{xml_version} eq '1.0' and
2621     ((0x0020 <= $num and $num <= 0xD7FF) or
2622     (0xE000 <= $num and $num <= 0xFFFD) or
2623     (0x10000 <= $num and $num <= 0x10FFFF) or
2624     $num == 0x9 or $num == 0xA or $num == 0xD)) or
2625     ($self->{xml_version} eq '1.1' and
2626     ((0x0001 <= $num and $num <= 0xD7FF) or
2627     (0xE000 <= $num and $num <= 0xFFFD) or
2628     (0x10000 <= $num and $num <= 0x10FFFF)))
2629     ) {
2630     my $location;
2631     __CODE{xp|get-location-from-token::
2632     $token => $token,
2633     $result => $location,
2634     }__;
2635     my $continue = __DOMCore:ERROR{xp|wf-legal-character::
2636     DOMCore:location => {$location},
2637     xp|token => {$token},
2638     xp|character-number => {$num},
2639     }__;
2640     unless ($continue) {
2641 wakaba 1.27 __CODE{ParseError}__;
2642 wakaba 1.11 }
2643     }
2644 wakaba 1.31 my $char = chr $num;
2645     $parent-><M::Node.manakaiAppendText> (\$char);
2646 wakaba 1.11 $vals->{value} .= $char;
2647     }
2648     }
2649    
2650     // ~ (REFC) { }
2651     } // _HexadecimalCharacterReferenceAE_
2652    
2653     rule _HexadecimalCharacterReferenceEV_ ($vals) {
2654     ?lexmode HexadecimalCharacterReference;
2655    
2656     ~ (Hex) {
2657     lang:Perl ($v => $token.value) : has-error {
2658     my $num = hex $v;
2659     unless (
2660     ($self->{xml_version} eq '1.0' and
2661     ((0x0020 <= $num and $num <= 0xD7FF) or
2662     (0xE000 <= $num and $num <= 0xFFFD) or
2663     (0x10000 <= $num and $num <= 0x10FFFF) or
2664     $num == 0x9 or $num == 0xA or $num == 0xD)) or
2665     ($self->{xml_version} eq '1.1' and
2666     ((0x0001 <= $num and $num <= 0xD7FF) or
2667     (0xE000 <= $num and $num <= 0xFFFD) or
2668     (0x10000 <= $num and $num <= 0x10FFFF)))
2669     ) {
2670     my $location;
2671     __CODE{xp|get-location-from-token::
2672     $token => $token,
2673     $result => $location,
2674     }__;
2675     my $continue = __DOMCore:ERROR{xp|wf-legal-character::
2676     DOMCore:location => {$location},
2677     xp|token => {$token},
2678     xp|character-number => {$num},
2679     }__;
2680     unless ($continue) {
2681 wakaba 1.27 __CODE{ParseError}__;
2682 wakaba 1.11 }
2683     }
2684     push @{$vals}, chr $num;
2685     }
2686     }
2687    
2688     // ~ (REFC) { }
2689     } // _HexadecimalCharacterReferenceEV_
2690    
2691     /*
2692     General entity reference in element's content
2693     */
2694     rule _GeneralEntityReferenceEC ($doc, $parent, $ns)
2695     : recursive
2696     {
2697     ?lexmode 'EntityReference';
2698    
2699     ~ (Name == 'lt') {
2700     lang:Perl {
2701 wakaba 1.31 $parent-><M::Node.manakaiAppendText> ('<');
2702 wakaba 1.11 }
2703     } (Name == 'gt') {
2704     lang:Perl {
2705 wakaba 1.31 $parent-><M::Node.manakaiAppendText> ('>');
2706 wakaba 1.11 }
2707     } (Name == 'amp') {
2708     lang:Perl {
2709 wakaba 1.31 $parent-><M::Node.manakaiAppendText> ('&');
2710 wakaba 1.11 }
2711     } (Name == 'quot') {
2712     lang:Perl {
2713 wakaba 1.31 $parent-><M::Node.manakaiAppendText> ('"');
2714 wakaba 1.11 }
2715     } (Name == 'apos') {
2716     lang:Perl {
2717 wakaba 1.31 $parent-><M::Node.manakaiAppendText> ("'");
2718 wakaba 1.11 }
2719     } (Name) {
2720     my $er;
2721 wakaba 1.19 lang:Perl ($name => $token.value) : has-error {
2722 wakaba 1.26 __CODE{checkNCName:: $name => $name}__;
2723    
2724 wakaba 1.11 $er = $doc-><M::Document.createEntityReference>
2725     ($name);
2726 wakaba 1.20 $er-><AS::Node.textContent> ('');
2727     ## NOTE: When document entity (and entities referenced directly
2728     ## or indirectly from it) is parsed, no general entity
2729     ## node have its replacement tree. During general
2730     ## entity node collection construction, however,
2731     ## some entity node has replacement tree.
2732 wakaba 1.11 $parent-><M::Node.appendChild> ($er);
2733 wakaba 1.19
2734     my $ent = $self->{general_entity}->{$name};
2735     if (not $ent) { # no entity declaration
2736     if ($self->{standalone} or not $self->{has_xref}) { # WFC error
2737     my $location;
2738     __CODE{xp|get-location-from-token::
2739     $token => {$token},
2740     $result => {$location},
2741     }__;
2742     my $continue = __DOMCore:ERROR{xp|wf-entity-declared::
2743     xp|error-token => {$token},
2744     c|location => {$location},
2745     xp|name => {$name},
2746     }__;
2747     unless ($continue) {
2748 wakaba 1.27 __CODE{ParseError}__;
2749 wakaba 1.19 }
2750     } # Otherwise VC error
2751 wakaba 1.23 push @{$self->{entity}}, <Code::getEmptyEntityState::
2752     $name = $name>;
2753 wakaba 1.20 $er-><AS::x|EntityReference.isExpanded> (false);
2754 wakaba 1.19
2755     } else { # there IS entity declaration
2756     if (($self->{standalone} or not $self->{has_xref}) and
2757     $ent->{is_externally_declared} and
2758     not $self->{entity}->[-1]->{is_externally_declared}) {
2759     my $location;
2760     __CODE{xp|get-location-from-token::
2761     $token => {$token},
2762     $result => {$location},
2763     }__;
2764     my $continue = __DOMCore:ERROR{xp|wf-entity-declared::
2765     xp|error-token => {$token},
2766     c|location => {$location},
2767     xp|name => {$name},
2768     }__;
2769     unless ($continue) {
2770 wakaba 1.27 __CODE{ParseError}__;
2771 wakaba 1.19 }
2772     }
2773     $er-><AS::x|EntityReference.isExpanded>
2774     ($ent->{has_replacement_text});
2775     push @{$self->{entity}}, <Code::getCopyOfEntityState::
2776 wakaba 1.11 $entity_type = 'general_entity',
2777     $entity_name = $name>;
2778 wakaba 1.23
2779     if (defined $ent->{notation}) {
2780     my $location;
2781     __CODE{xp|get-location-from-token::
2782     $token => {$token},
2783     $result => {$location},
2784     }__;
2785     my $continue = __c|ERROR{xp|wf-parsed-entity::
2786     xp|error-token => {$token},
2787     c|location => {$location},
2788     xp|name => {$name},
2789     }__;
2790     unless ($continue) {
2791 wakaba 1.27 __CODE{ParseError}__;
2792 wakaba 1.23 }
2793     } # if unparsed entity
2794    
2795     if ($ent->{is_opened}) {
2796     my $location;
2797     __CODE{xp|get-location-from-token::
2798     $token => {$token},
2799     $result => {$location},
2800     }__;
2801     my $continue = __c|ERROR{xp|wf-no-recursion::
2802     xp|error-token => {$token},
2803     c|location => {$location},
2804     xp|name => {$name},
2805     }__;
2806     unless ($continue) {
2807 wakaba 1.27 __CODE{ParseError}__;
2808 wakaba 1.23 }
2809 wakaba 1.27 open my $empty, '<', \'';
2810     $self->{entity}->[-1]->{fh} = $empty;
2811 wakaba 1.23 $er-><AS::x|EntityReference.isExpanded> (false);
2812     } # recursive
2813     $ent->{is_opened} = true;
2814     } # entity declared
2815 wakaba 1.14 $self->{location} = $self->{entity}->[-1];
2816 wakaba 1.11 push @{$self->{entity_token}}, $self->{token};
2817     $self->{token} = [];
2818     push @{$self->{entity_char}}, $self->{char};
2819     $self->{char} = [];
2820     }
2821    
2822     ?lexmode ElementContent;
2823     &content ($doc => $doc, $parent => $er, $ns => $ns);
2824     ~ (#EOF) { }
2825     lang:Perl {
2826 wakaba 1.23 $self->{general_entity}->{$self->{entity}->[-1]->{name}}
2827     ->{is_opened} = false
2828     if $self->{general_entity}->{$self->{entity}->[-1]->{name}};
2829 wakaba 1.11 $self->{token} = pop @{$self->{entity_token}};
2830     $self->{char} = pop @{$self->{entity_char}};
2831 wakaba 1.27 pop (@{$self->{entity}})->{close_file}->();
2832 wakaba 1.14 $self->{location} = $self->{entity}->[-1];
2833 wakaba 1.11 }
2834    
2835     // TODO: Set read-only flag
2836    
2837     ?lexmode EntityReference;
2838     ?requires-next-token;
2839     }
2840    
2841     ~ (REFC) {
2842     ?lexmode ElementContent;
2843     } else {
2844     ?lexmode ElementContent;
2845     }
2846     } // _GeneralEntityReferenceEC
2847    
2848     /*
2849     General entity reference in an attribute value literal
2850     */
2851     rule _GeneralEntityReferenceV_ ($vals) {
2852     ?lexmode EntityReference;
2853    
2854     ~ (Name == 'lt') {
2855     lang:Perl {
2856     push @{$vals->{nodes}}, $self->{doc}-><M::Document.createTextNode>
2857     ('<');
2858     $vals->{value} .= '<';
2859     }
2860     } (Name == 'gt') {
2861     lang:Perl {
2862     push @{$vals->{nodes}}, $self->{doc}-><M::Document.createTextNode>
2863     ('>');
2864     $vals->{value} .= '>';
2865     }
2866     } (Name == 'amp') {
2867     lang:Perl {
2868     push @{$vals->{nodes}}, $self->{doc}-><M::Document.createTextNode>
2869     ('&');
2870     $vals->{value} .= '&';
2871     }
2872     } (Name == 'quot') {
2873     lang:Perl {
2874     push @{$vals->{nodes}}, $self->{doc}-><M::Document.createTextNode>
2875     ('"');
2876     $vals->{value} .= '"';
2877     }
2878     } (Name == 'apos') {
2879     lang:Perl {
2880     push @{$vals->{nodes}}, $self->{doc}-><M::Document.createTextNode>
2881     ("'");
2882     $vals->{value} .= "'";
2883     }
2884     } (Name) {
2885     my $er;
2886 wakaba 1.18 lang:Perl ($name => $token.value) : has-error {
2887 wakaba 1.26 __CODE{checkNCName:: $name => $name}__;
2888 wakaba 1.18
2889 wakaba 1.11 $er = $self->{doc}-><M::Document.createEntityReference> ($name);
2890 wakaba 1.20 $er-><AS::Node.textContent> ('');
2891     ## NOTE: When document entity (and entities referenced directly
2892     ## or indirectly from it) is parsed, no general entity
2893     ## node have its replacement tree. During general
2894     ## entity node collection construction, however,
2895     ## some entity node has replacement tree.
2896 wakaba 1.19 my $ent = $self->{general_entity}->{$name};
2897 wakaba 1.20 if (not $ent) { # no entity declaration
2898     if ($self->{standalone} or not $self->{has_xref}) { # WFC error
2899     my $location;
2900     __CODE{xp|get-location-from-token::
2901     $token => {$token},
2902     $result => {$location},
2903     }__;
2904     my $continue = __DOMCore:ERROR{xp|wf-entity-declared::
2905     xp|error-token => {$token},
2906     c|location => {$location},
2907     xp|name => {$name},
2908     }__;
2909     unless ($continue) {
2910 wakaba 1.27 __CODE{ParseError}__;
2911 wakaba 1.20 }
2912     } # Otherwise VC error
2913 wakaba 1.23 push @{$self->{entity}}, <Code::getEmptyEntityState::
2914     $name = $name>;
2915 wakaba 1.20 $er-><AS::x|EntityReference.isExpanded> (false);
2916    
2917     } else { # there IS entity declaration
2918     if (($self->{standalone} or not $self->{has_xref}) and
2919     $ent->{is_externally_declared} and
2920     not $self->{entity}->[-1]->{is_externally_declared}) {
2921     my $location;
2922     __CODE{xp|get-location-from-token::
2923     $token => {$token},
2924     $result => {$location},
2925     }__;
2926     my $continue = __DOMCore:ERROR{xp|wf-entity-declared::
2927     xp|error-token => {$token},
2928     c|location => {$location},
2929     xp|name => {$name},
2930     }__;
2931     unless ($continue) {
2932 wakaba 1.27 __CODE{ParseError}__;
2933 wakaba 1.20 }
2934     }
2935    
2936     if ($ent->{is_external_entity}) {
2937     my $location;
2938     __CODE{xp|get-location-from-token::
2939     $token => {$token},
2940     $result => {$location},
2941     }__;
2942     my $continue = __c|ERROR{xp|wf-no-external-entity-references::
2943     xp|error-token => {$token},
2944     c|location => {$location},
2945     xp|name => {$name},
2946     }__;
2947     unless ($continue) {
2948 wakaba 1.27 __CODE{ParseError}__;
2949 wakaba 1.20 }
2950 wakaba 1.23 ## NOTE: |xp:wf-parsed-entity| is not checked
2951 wakaba 1.20 } # if external entity
2952    
2953     $er-><AS::x|EntityReference.isExpanded>
2954 wakaba 1.19 ($ent->{has_replacement_text});
2955 wakaba 1.20 push @{$self->{entity}}, <Code::getCopyOfEntityState::
2956 wakaba 1.11 $entity_type = 'general_entity',
2957     $entity_name = $name>;
2958 wakaba 1.23
2959     if ($ent->{is_opened}) {
2960     my $location;
2961     __CODE{xp|get-location-from-token::
2962     $token => {$token},
2963     $result => {$location},
2964     }__;
2965     my $continue = __c|ERROR{xp|wf-no-recursion::
2966     xp|error-token => {$token},
2967     c|location => {$location},
2968     xp|name => {$name},
2969     }__;
2970     unless ($continue) {
2971 wakaba 1.27 __CODE{ParseError}__;
2972 wakaba 1.23 }
2973 wakaba 1.27 open my $empty, '<', \'';
2974     $self->{entity}->[-1]->{fh} = $empty;
2975 wakaba 1.23 $er-><AS::x|EntityReference.isExpanded> (false);
2976     } # recursive
2977     $ent->{is_opened} = true;
2978 wakaba 1.20 }
2979     push @{$vals->{nodes}}, $er;
2980 wakaba 1.14 $self->{location} = $self->{entity}->[-1];
2981 wakaba 1.11 push @{$self->{entity_token}}, $self->{token};
2982     $self->{token} = [];
2983     push @{$self->{entity_char}}, $self->{char};
2984     $self->{char} = [];
2985     }
2986    
2987     ?lexmode AttributeValueLiteralE;
2988     &AttributeValueLiteralE_ ($parent => $er, $vals => $vals);
2989     ~ (#EOF) { }
2990     lang:Perl {
2991 wakaba 1.23 $self->{general_entity}->{$self->{entity}->[-1]->{name}}
2992     ->{is_opened} = false
2993     if $self->{general_entity}->{$self->{entity}->[-1]->{name}};
2994 wakaba 1.11 $self->{token} = pop @{$self->{entity_token}};
2995     $self->{char} = pop @{$self->{entity_char}};
2996 wakaba 1.27 pop (@{$self->{entity}})->{close_file}->();
2997 wakaba 1.14 $self->{location} = $self->{entity}->[-1];
2998 wakaba 1.11 }
2999    
3000     // TODO: Set read-only flag
3001    
3002     ?lexmode EntityReference;
3003     ?requires-next-token;
3004     }
3005    
3006     // ~ (REFC) { }
3007     } // _GeneralEntityReferenceV_
3008 wakaba 1.1
3009 wakaba 1.6 /*
3010 wakaba 1.11 General entity reference in the replacement text
3011     of the entity referenced in an attribute value literal
3012 wakaba 1.6 */
3013 wakaba 1.11 rule _GeneralEntityReferenceAE_ ($parent, $vals)
3014 wakaba 1.6 {
3015 wakaba 1.11 ?lexmode EntityReference;
3016 wakaba 1.1
3017 wakaba 1.11 ~ (Name == 'lt') {
3018     lang:Perl {
3019 wakaba 1.31 $parent-><M::Node.manakaiAppendText> ('<');
3020 wakaba 1.11 $vals->{value} .= '<';
3021     }
3022     } (Name == 'gt') {
3023     lang:Perl {
3024 wakaba 1.31 $parent-><M::Node.manakaiAppendText> ('>');
3025 wakaba 1.11 $vals->{value} .= '>';
3026     }
3027     } (Name == 'amp') {
3028     lang:Perl {
3029 wakaba 1.31 $parent-><M::Node.manakaiAppendText> ('&');
3030 wakaba 1.11 $vals->{value} .= '&';
3031     }
3032     } (Name == 'quot') {
3033     lang:Perl {
3034 wakaba 1.31 $parent-><M::Node.manakaiAppendText> ('"');
3035 wakaba 1.11 $vals->{value} .= '"';
3036     }
3037     } (Name == 'apos') {
3038     lang:Perl {
3039 wakaba 1.31 $parent-><M::Node.manakaiAppendText> ("'");
3040 wakaba 1.11 $vals->{value} .= "'";
3041     }
3042     } (Name) {
3043 wakaba 1.6 my $er;
3044 wakaba 1.26 lang:Perl ($name => $token.value) : has-error {
3045     __CODE{checkNCName:: $name => $name}__;
3046 wakaba 1.18
3047 wakaba 1.11 $er = $self->{doc}-><M::Document.createEntityReference> ($name);
3048 wakaba 1.20 $er-><AS::Node.textContent> ('');
3049     ## NOTE: When document entity (and entities referenced directly
3050     ## or indirectly from it) is parsed, no general entity
3051     ## node have its replacement tree. During general
3052     ## entity node collection construction, however,
3053     ## some entity node has replacement tree.
3054 wakaba 1.19 my $ent = $self->{general_entity}->{$name};
3055 wakaba 1.22 if (not $ent) { # no entity declaration
3056     if ($self->{standalone} or not $self->{has_xref}) { # WFC error
3057     my $location;
3058     __CODE{xp|get-location-from-token::
3059     $token => {$token},
3060     $result => {$location},
3061     }__;
3062     my $continue = __DOMCore:ERROR{xp|wf-entity-declared::
3063     xp|error-token => {$token},
3064     c|location => {$location},
3065     xp|name => {$name},
3066     }__;
3067     unless ($continue) {
3068 wakaba 1.27 __CODE{ParseError}__;
3069 wakaba 1.22 }
3070     } # Otherwise VC error
3071 wakaba 1.23 push @{$self->{entity}}, <Code::getEmptyEntityState::
3072     $name = $name>;
3073 wakaba 1.22 $er-><AS::x|EntityReference.isExpanded> (false);
3074    
3075     } else { # there IS entity declaration
3076     if (($self->{standalone} or not $self->{has_xref}) and
3077     $ent->{is_externally_declared} and
3078     not $self->{entity}->[-1]->{is_externally_declared}) {
3079     my $location;
3080     __CODE{xp|get-location-from-token::
3081     $token => {$token},
3082     $result => {$location},
3083     }__;
3084     my $continue = __DOMCore:ERROR{xp|wf-entity-declared::
3085     xp|error-token => {$token},
3086     c|location => {$location},
3087     xp|name => {$name},
3088     }__;
3089     unless ($continue) {
3090 wakaba 1.27 __CODE{ParseError}__;
3091 wakaba 1.22 }
3092     }
3093    
3094     if ($ent->{is_external_entity}) {
3095     my $location;
3096     __CODE{xp|get-location-from-token::
3097     $token => {$token},
3098     $result => {$location},
3099     }__;
3100     my $continue = __c|ERROR{xp|wf-no-external-entity-references::
3101     xp|error-token => {$token},
3102     c|location => {$location},
3103     xp|name => {$name},
3104     }__;
3105     unless ($continue) {
3106 wakaba 1.27 __CODE{ParseError}__;
3107 wakaba 1.22 }
3108 wakaba 1.23 ## NOTE: |xp:wf-parsed-entity| is not checked
3109 wakaba 1.22 } # if external entity
3110    
3111     $er-><AS::x|EntityReference.isExpanded>
3112 wakaba 1.19 ($ent->{has_replacement_text});
3113 wakaba 1.22 push @{$self->{entity}}, <Code::getCopyOfEntityState::
3114 wakaba 1.6 $entity_type = 'general_entity',
3115     $entity_name = $name>;
3116 wakaba 1.23
3117     if ($ent->{is_opened}) {
3118     my $location;
3119     __CODE{xp|get-location-from-token::
3120     $token => {$token},
3121     $result => {$location},
3122     }__;
3123     my $continue = __c|ERROR{xp|wf-no-recursion::
3124     xp|error-token => {$token},
3125     c|location => {$location},
3126     xp|name => {$name},
3127     }__;
3128     unless ($continue) {
3129 wakaba 1.27 __CODE{ParseError}__;
3130 wakaba 1.23 }
3131 wakaba 1.27 open my $empty, '<', \'';
3132     $self->{entity}->[-1]->{fh} = $empty;
3133 wakaba 1.23 $er-><AS::x|EntityReference.isExpanded> (false);
3134     } # recursive
3135     $ent->{is_opened} = true;
3136 wakaba 1.22 }
3137     $parent-><M::Node.appendChild> ($er);
3138 wakaba 1.14 $self->{location} = $self->{entity}->[-1];
3139 wakaba 1.6 push @{$self->{entity_token}}, $self->{token};
3140     $self->{token} = [];
3141     push @{$self->{entity_char}}, $self->{char};
3142     $self->{char} = [];
3143     }
3144    
3145 wakaba 1.11 ?lexmode AttributeValueLiteralE;
3146     &AttributeValueLiteralE_ ($parent => $er, $vals => $vals);
3147 wakaba 1.6 ~ (#EOF) { }
3148     lang:Perl {
3149 wakaba 1.23 $self->{general_entity}->{$self->{entity}->[-1]->{name}}
3150     ->{is_opened} = false
3151     if $self->{general_entity}->{$self->{entity}->[-1]->{name}};
3152 wakaba 1.6 $self->{token} = pop @{$self->{entity_token}};
3153     $self->{char} = pop @{$self->{entity_char}};
3154 wakaba 1.27 pop (@{$self->{entity}})->{close_file}->();
3155 wakaba 1.14 $self->{location} = $self->{entity}->[-1];
3156 wakaba 1.6 }
3157    
3158 wakaba 1.11 // TODO: Set read-only flag
3159    
3160 wakaba 1.6 ?lexmode EntityReference;
3161     ?requires-next-token;
3162 wakaba 1.1 }
3163    
3164     // ~ (REFC) { }
3165 wakaba 1.11 } // _GeneralEntityReferenceAE_
3166 wakaba 1.6
3167     /*
3168 wakaba 1.24 General Entity Reference in Literal Entity Value in Entity Declaration
3169 wakaba 1.6 */
3170 wakaba 1.11 rule _GeneralEntityReferenceEV_ ($vals) {
3171 wakaba 1.6 ?lexmode 'EntityReference';
3172    
3173     ~ (Name) {
3174     lang:Perl ($name => $token.value) {
3175 wakaba 1.26 __CODE{checkNCName:: $name => $name}__;
3176 wakaba 1.6 push @$vals, $name;
3177     }
3178 wakaba 1.24 /*
3179     WFCs such as Entity Declared are not checked
3180     <http://www.w3.org/TR/xml11/#bypass>
3181    
3182     Note that violation to the Parsed Entity WFC is an error
3183     rather than fatal error here.
3184     */
3185 wakaba 1.6 }
3186 wakaba 1.11
3187     // No expansion
3188 wakaba 1.6
3189     // ~ (REFC) { }
3190     } // _GeneralEntityReferenceEV_
3191 wakaba 1.1
3192     /*
3193 wakaba 1.4 Document Type Declaration
3194 wakaba 1.1 */
3195 wakaba 1.4 rule _DocumentTypeDeclaration_ ($doc) {
3196     ?lexmode MarkupDeclaration;
3197    
3198     ~ (Name == 'DOCTYPE') { }
3199    
3200     ~ (S) { }
3201    
3202     // Document type name
3203 wakaba 1.6 my $name;
3204 wakaba 1.4 ~ (Name) {
3205 wakaba 1.6 lang:Perl ($v => $token.value) {
3206 wakaba 1.26 __CODE{checkQName:: $name => $v}__;
3207 wakaba 1.6 $name = $v;
3208     }
3209     }
3210 wakaba 1.17
3211     my $node;
3212     my $decl;
3213 wakaba 1.6 lang:Perl {
3214 wakaba 1.11 $self->{docx} = $self->{doc}
3215     -><M::Node.getFeature> (<Q::fe:XDoctype>, '3.0');
3216     $node = $self->{docx}-><M::DocumentXDoctype.createDocumentTypeDefinition>
3217     ($name);
3218 wakaba 1.17 $decl = $self->{dtdecl} = $node-><M::Node.getFeature>
3219     (<Q::fe:XDoctypeDeclaration>, '3.0');
3220 wakaba 1.4 }
3221    
3222 wakaba 1.25 my $has_extid;
3223 wakaba 1.4 ~? (S) {
3224     ~? (Name == 'PUBLIC') {
3225     ~ (S) { }
3226    
3227 wakaba 1.17 &PubidLiteral ($decl => $decl);
3228 wakaba 1.4
3229     ~ (S) { }
3230    
3231 wakaba 1.17 &SystemLiteral ($decl => $decl);
3232 wakaba 1.4
3233     ~? (S) { }
3234 wakaba 1.19
3235     lang:Perl {
3236     $self->{has_xref} = true;
3237 wakaba 1.25 $has_extid = true;
3238 wakaba 1.19 }
3239 wakaba 1.4 } (Name == 'SYSTEM') {
3240     ~ (S) { }
3241    
3242 wakaba 1.17 &SystemLiteral ($decl => $decl);
3243 wakaba 1.4
3244     ~? (S) { }
3245 wakaba 1.19
3246     lang:Perl {
3247     $self->{has_xref} = true;
3248 wakaba 1.25 $has_extid = true;
3249 wakaba 1.19 }
3250 wakaba 1.4 }
3251     }
3252 wakaba 1.17
3253 wakaba 1.11 lang:Perl {
3254     $self->{dtdef} = $node;
3255 wakaba 1.21 $self->{doc}-><M::Node.appendChild> ($node);
3256     $self->{doc_cfg}-><M::c|DOMConfiguration.setParameter>
3257     ('schema-type' => <Q::xml-dtd:>);
3258     ## ISSUE: Should default schema language information be
3259     ## preserved by some other flag?
3260 wakaba 1.11 }
3261    
3262 wakaba 1.4 ~? (DSO) {
3263 wakaba 1.6 &InternalSubset ($doc => $doc, $doctype => $node);
3264 wakaba 1.4
3265     ~ (DSC) {
3266     ?lexmode MarkupDeclaration;
3267     } else {
3268     ?lexmode MarkupDeclaration;
3269     }
3270    
3271     ~? (S) { }
3272     }
3273    
3274 wakaba 1.25 // TODO: Read and process external subset if any.
3275     lang:Perl {
3276     $self->{dont_process} = true if $has_extid;
3277     }
3278    
3279 wakaba 1.4 // ~ (MDC) { }
3280     } // _DocumentTypeDeclaration_
3281    
3282 wakaba 1.17 /*
3283     Public Identifier Literal
3284     */
3285     rule PubidLiteral ($decl) {
3286     my $pubid;
3287     my $pubid_token;
3288 wakaba 1.4 ~ (LIT) {
3289     ?lexmode SystemLiteral;
3290    
3291     ~? (STRING) {
3292 wakaba 1.17 lang:Perl ($v => $token.value) {
3293     $pubid = $v;
3294     $pubid_token = $token;
3295     }
3296 wakaba 1.4 }
3297    
3298     ~ (LIT) {
3299     ?lexmode MarkupDeclaration;
3300     } else {
3301     ?lexmode MarkupDeclaration;
3302     }
3303     } (LITA) {
3304     ?lexmode SystemLiteralA;
3305    
3306     ~? (STRING) {
3307 wakaba 1.17 lang:Perl ($v => $token.value) {
3308     $pubid = $v;
3309     $pubid_token = $token;
3310     }
3311 wakaba 1.4 }
3312    
3313     ~ (LITA) {
3314     ?lexmode MarkupDeclaration;
3315     } else {
3316     ?lexmode MarkupDeclaration;
3317     }
3318     }
3319 wakaba 1.17
3320     if-true ($pubid_token) {
3321     lang:Perl : has-error {
3322     if ($pubid =~ m{[^\x20\x0D\x0Aa-zA-Z0-9'()+,./:=?;!*#\@\$_%-]}s) {
3323     my $location;
3324     __CODE{xp|get-location-from-token::
3325     $token => {$pubid_token},
3326     $result => {$location},
3327     }__;
3328     ## Should this be other (new) error type?
3329     my $continue = __DOMCore:ERROR{xp|wf-syntax-error::
3330     xp|error-token => {$token},
3331     c|location => {$location},
3332     }__;
3333     unless ($continue) {
3334 wakaba 1.27 __CODE{ParseError}__;
3335 wakaba 1.17 }
3336     }
3337    
3338     ## NOTE: U+0009 is syntactically illegal.
3339 wakaba 1.23 $pubid =~ s/[\x09\x0A\x0D\x20]+/\x20/gs;
3340 wakaba 1.17 $pubid =~ s/\A\x20//s;
3341     $pubid =~ s/\x20\z//s;
3342     ## NOTE: Bare attribute name is written.
3343     $decl->public_id ($pubid);
3344     }
3345     }
3346 wakaba 1.4 } // PubidLiteral
3347    
3348 wakaba 1.17 /*
3349     System Identifier Literal
3350     */
3351     rule SystemLiteral ($decl) {
3352 wakaba 1.4 ~ (LIT) {
3353     ?lexmode SystemLiteral;
3354 wakaba 1.17 &_SystemLiteral ($decl => $decl);
3355 wakaba 1.4 } (LITA) {
3356     ?lexmode SystemLiteralA;
3357 wakaba 1.17 &_SystemLiteral ($decl => $decl);
3358 wakaba 1.4 }
3359     } // SystemLiteral
3360    
3361 wakaba 1.17 /*
3362     System Identifier Literal Content
3363 wakaba 1.29
3364     Used in document type declaration, entity declaration,
3365     and notation declaration.
3366 wakaba 1.17 */
3367     rule _SystemLiteral ($decl) {
3368     // LIT or LITA
3369    
3370 wakaba 1.4 ~? (STRING) {
3371 wakaba 1.17 lang:Perl ($v => $token.value) {
3372 wakaba 1.29 $decl-><AS::x|Entity.systemId> ($v);
3373     $decl-><AS::x|Entity.manakaiDeclarationBaseURI>
3374     ($self->{location}->{base_uri});
3375 wakaba 1.17 }
3376 wakaba 1.4 }
3377    
3378     ~ (LIT) {
3379     ?lexmode MarkupDeclaration;
3380     } (LITA) {
3381     ?lexmode MarkupDeclaration;
3382     } else {
3383     ?lexmode MarkupDeclaration;
3384     }
3385     } // _SystemLiteral
3386    
3387     /*
3388     DTD Internal Subset
3389    
3390     intSubset := *(markupdecl / DeclSep) ;; [28b]
3391     */
3392 wakaba 1.6 rule InternalSubset ($doc, $doctype) {
3393 wakaba 1.4 ?lexmode DTD;
3394    
3395     ~* (MDO) {
3396     ?lexmode MarkupDeclaration;
3397    
3398     ~ (Name == 'ELEMENT') {
3399     &_ElementDeclaration ($doc => $doc);
3400     } (Name == 'ATTLIST') {
3401 wakaba 1.8 &_AttlistDeclaration ($doc => $doc, $doctype => $doctype);
3402 wakaba 1.4 } (Name == 'ENTITY') {
3403     &_EntityDeclaration ($doc => $doc);
3404     } (Name == 'NOTATION') {
3405     &_NotationDeclaration ($doc => $doc);
3406     }
3407     } (S) {
3408     //
3409     } (CDO) {
3410     &_CommentDeclarationDTD ($doc => $doc);
3411     } (PIO) {
3412 wakaba 1.6 &_ProcessingInstructionDTD ($doc => $doc, $doctype => $doctype);
3413 wakaba 1.4 } (PERO) {
3414     ?lexmode EntityReference;
3415    
3416 wakaba 1.19 lang:Perl {
3417     $self->{has_xref} = true;
3418 wakaba 1.25 $self->{dont_process} = true;
3419 wakaba 1.19 }
3420    
3421 wakaba 1.4 ~ (Name) {
3422 wakaba 1.26 // TODO: __CODE{checkNCName:: $name => $name}__;
3423 wakaba 1.4
3424     }
3425    
3426     ~ (REFC) {
3427     ?lexmode DTD;
3428     } else {
3429     ?lexmode DTD;
3430     }
3431     }
3432     } // InternalSubset
3433    
3434     rule _ElementDeclaration ($doc) {
3435     // ~ (MDO) { }
3436     // ?lexmode MarkupDeclaration
3437     // ~ (Name == 'Element') { }
3438    
3439     ~ (S) { }
3440    
3441     ~ (Name) {
3442 wakaba 1.26 // TODO: __CODE{checkQName:: $name => $name}__;
3443 wakaba 1.4
3444     }
3445    
3446     ?lexmode ElementDeclaration;
3447    
3448     ~ (S) { }
3449    
3450     // contentspec
3451     ~ (MGO) {
3452     &_ContentModel ($doc => $doc);
3453     } (Name == 'EMPTY') {
3454    
3455     } (Name == 'ANY') {
3456    
3457     }
3458    
3459     ~? (S) { }
3460    
3461     ~ (MDC) {
3462     ?lexmode DTD;
3463     } else {
3464     ?lexmode DTD;
3465     }
3466     } // _ElementDeclaration
3467    
3468     rule _ContentModel ($doc) {
3469     // ~ (MGO) { }
3470    
3471     ~? (S) { }
3472    
3473     ~ (Name) {
3474     // Element content model
3475     &_ModelGroup ($doc => $doc)
3476     : unshift-current-token;
3477    
3478     ~? (OPT) {
3479    
3480     } (REP) {
3481    
3482     } (PLUS) {
3483    
3484     }
3485    
3486     } (MDO) {
3487     &_ModelGroup ($doc => $doc)
3488     : unshift-current-token;
3489    
3490     ~? (OPT) {
3491    
3492     } (REP) {
3493    
3494     } (PLUS) {
3495    
3496     }
3497    
3498     } (PCDATA) {
3499     // Mixed content declaration
3500     ~? (S) { }
3501    
3502     ~* (OR) {
3503     ~? (S) { }
3504    
3505     ~ (Name) {
3506 wakaba 1.26 // TODO: Name & QName check
3507 wakaba 1.4
3508     }
3509    
3510     ~? (S) { }
3511     }
3512    
3513     ~ (MGC) { }
3514    
3515     ~? (REP) {
3516    
3517     } else {
3518     // TODO: error if |Name|
3519     }
3520    
3521    
3522     }
3523     } // _ContentModel
3524    
3525     rule _ModelGroup ($doc)
3526     : standalone
3527     : recursive
3528     {
3529     // ~ (MGO) { }
3530     // ~? (S) { }
3531    
3532     &ContentParticle ($doc => $doc);
3533    
3534     ~? (S) { }
3535    
3536     ~? (OR) {
3537     ~? (S) { }
3538    
3539     &ContentParticle ($doc => $doc);
3540    
3541     ~? (S) { }
3542    
3543     ~* (OR) {
3544     ~? (S) { }
3545    
3546     &ContentParticle ($doc => $doc);
3547    
3548     ~? (S) { }
3549     }
3550    
3551     } (SEQ) {
3552     ~? (S) { }
3553    
3554     &ContentParticle ($doc => $doc);
3555    
3556     ~? (S) { }
3557    
3558     ~* (SEQ) {
3559     ~? (S) { }
3560    
3561     &ContentParticle ($doc => $doc);
3562    
3563     ~? (S) { }
3564     }
3565    
3566     }
3567    
3568     ~ (MGC) { }
3569     } // _ModelGroup
3570    
3571     rule ContentParticle ($doc) {
3572     ~ (Name) {
3573 wakaba 1.26 // TODO: Name & QName check
3574 wakaba 1.4
3575     } (MGO) {
3576     ~? (S) { }
3577    
3578     &_ModelGroup ($doc => $doc);
3579     }
3580    
3581     ~? (OPT) {
3582    
3583     } (REP) {
3584    
3585     } (PLUS) {
3586    
3587     }
3588     } // ContentParticle
3589    
3590 wakaba 1.8 /*
3591     Attribute list declaration
3592     */
3593     rule _AttlistDeclaration ($doc, $doctype) {
3594 wakaba 1.4 // ~ (MDO) { }
3595     // ~ (Name == 'ATTLIST') { }
3596    
3597     ?lexmode AttlistDeclaration;
3598    
3599     ~ (S) { }
3600    
3601 wakaba 1.8 my $name;
3602 wakaba 1.4 ~ (Name) {
3603 wakaba 1.8 lang:Perl ($v => $token.value) {
3604 wakaba 1.26 __CODE{checkQName:: $name => $v}__;
3605 wakaba 1.8 $name = $v;
3606     }
3607     } else {
3608     lang:Perl { $name = '#ILLEGAL' }
3609     }
3610 wakaba 1.4
3611 wakaba 1.8 my $docxd;
3612     my $et;
3613     lang:Perl {
3614     $et = $doctype-><M::DTDef.getElementTypeDefinitionNode> ($name);
3615     unless ($et) {
3616 wakaba 1.11 $docxd = $doc-><M::Node.getFeature> (<Q::fe:XDoctype>, '3.0');
3617 wakaba 1.8 $et = $docxd-><M::DocumentXDoctype.createElementTypeDefinition>
3618     ($name);
3619     $doctype-><M::DTDef.setElementTypeDefinitionNode> ($et)
3620     unless $name eq '#ILLEGAL';
3621     }
3622 wakaba 1.4 }
3623    
3624     ~? (S) { }
3625    
3626     ~* (Name) {
3627 wakaba 1.8 my $at;
3628 wakaba 1.25 lang:Perl ($v => $token.value) : has-error {
3629 wakaba 1.26 __CODE{checkQName:: $name => $v}__;
3630 wakaba 1.8 $docxd ||= $doc-><M::Node.getFeature>
3631 wakaba 1.11 (<Q::fe:XDoctype>, '3.0');
3632 wakaba 1.8 $at = $docxd-><M::DocumentXDoctype.createAttributeDefinition> ($v);
3633 wakaba 1.25 if (exists $et-><AG::ETDef.attributeDefinitions>->{$v}) {
3634     my $location;
3635     __CODE{xp|get-location-from-token::
3636     $token => {$token},
3637     $result => {$location},
3638     }__;
3639     my $continue = __c|ERROR{xp|warning-attribute-definition-ignored::
3640     xp|error-token => {$token},
3641     c|location => {$location},
3642     xp|name => {$v},
3643     }__;
3644     unless ($continue) {
3645 wakaba 1.27 __CODE{ParseError}__;
3646 wakaba 1.25 }
3647     } elsif ($self->{dont_process} and not $self->{standalone}) {
3648     my $location;
3649     __CODE{xp|get-location-from-token::
3650     $token => {$token},
3651     $result => {$location},
3652     }__;
3653     my $continue = __c|ERROR{
3654     xp|warning-attribute-definition-not-processed::
3655     xp|error-token => {$token},
3656     c|location => {$location},
3657     xp|name => {$v},
3658     }__;
3659     unless ($continue) {
3660 wakaba 1.27 __CODE{ParseError}__;
3661 wakaba 1.25 }
3662     } else {
3663 wakaba 1.9 $et-><M::ETDef.setAttributeDefinitionNode> ($at);
3664     $self->{attr}->{$name}->{$v} = $at;
3665     }
3666 wakaba 1.8 }
3667 wakaba 1.4
3668     ~ (S) { }
3669    
3670     // AttType
3671     ~ (Name == 'NOTATION') {
3672     ~ (S) { }
3673    
3674 wakaba 1.8 my $kwd;
3675     lang:Perl {
3676     $at-><AS::ATDef.declaredType> (<C::ATDef.NOTATION_ATTR>);
3677     $kwd = $at-><AG::ATDef.allowedTokens>;
3678     }
3679    
3680 wakaba 1.4 ~ (EGO) {
3681     ~? (S) { }
3682    
3683 wakaba 1.8 ~+ (Name) {
3684 wakaba 1.26 lang:Perl ($v => $token.value) : has-error {
3685     __CODE{checkNCName:: $name => $v}__;
3686 wakaba 1.8 push @$kwd, $v;
3687     }
3688 wakaba 1.4
3689     ~? (S) { }
3690     } (OR) : separator {
3691     ~? (S) { }
3692     }
3693    
3694     ~ (EGC) { }
3695     }
3696 wakaba 1.8
3697 wakaba 1.4 } (Name) {
3698 wakaba 1.8 my $type;
3699     lang:Perl ($v => $token.value) : has-error {
3700     my $map = {
3701     CDATA => <C::ATDef.CDATA_ATTR>,
3702     ID => <C::ATDef.ID_ATTR>,
3703     IDREF => <C::ATDef.IDREF_ATTR>,
3704     IDREFS => <C::ATDef.IDREFS_ATTR>,
3705     ENTITY => <C::ATDef.ENTITY_ATTR>,
3706     ENTITIES => <C::ATDef.ENTITIES_ATTR>,
3707     NMTOKEN => <C::ATDef.NMTOKEN_ATTR>,
3708     NMTOKENS => <C::ATDef.NMTOKENS_ATTR>,
3709     };
3710     if ($map->{$v}) {
3711     $at-><AS::ATDef.declaredType> ($map->{$v});
3712     } else {
3713     ## TODO: Exception
3714     }
3715     }
3716 wakaba 1.4
3717     } (EGO) {
3718     ?lexmode Enumeration;
3719    
3720     ~? (S) { }
3721    
3722 wakaba 1.8 my $kwd;
3723     lang:Perl {
3724     $at-><AS::ATDef.declaredType> (<C::ATDef.ENUMERATION_ATTR>);
3725     $kwd = $at-><AG::ATDef.allowedTokens>;
3726     }
3727    
3728     ~+ (Nmtoken) {
3729     lang:Perl ($v => $token.value) {
3730     push @$kwd, $v;
3731     }
3732 wakaba 1.4
3733     ~? (S) { }
3734     } (OR) : separator {
3735     ~? (S) { }
3736     }
3737    
3738     ~ (EGC) {
3739     ?lexmode AttlistDeclaration;
3740     } else {
3741     ?lexmode AttlistDeclaration;
3742     }
3743    
3744     }
3745    
3746     ~ (S) { }
3747    
3748     // DefaultDecl
3749     ~ (RNI) {
3750     ~ (Name == 'REQUIRED') {
3751 wakaba 1.8 lang:Perl {
3752     $at-><AS::ATDef.defaultType> (<C::ATDef.REQUIRED_DEFAULT>);
3753     }
3754 wakaba 1.4 } (Name == 'IMPLIED') {
3755 wakaba 1.8 lang:Perl {
3756     $at-><AS::ATDef.defaultType> (<C::ATDef.IMPLIED_DEFAULT>);
3757     }
3758 wakaba 1.4 } (Name == 'FIXED') {
3759     ~ (S) { }
3760 wakaba 1.8
3761     lang:Perl {
3762     $at-><AS::ATDef.defaultType> (<C::ATDef.FIXED_DEFAULT>);
3763     }
3764 wakaba 1.4
3765     ~ (LIT) {
3766     my $vals;
3767     lang:Perl {
3768 wakaba 1.8 $vals = {nodes => [], value => ''};
3769 wakaba 1.4 }
3770    
3771     &_AttributeValueSpecification_ ($doc => $doc, $vals => $vals);
3772    
3773 wakaba 1.8 lang:Perl {
3774     for (@{$vals->{nodes}}) {
3775     $at-><M::Node.appendChild> ($_);
3776     }
3777     }
3778    
3779 wakaba 1.4 ~ (LIT) {
3780     ?lexmode AttlistDeclaration;
3781     } else {
3782     ?lexmode AttlistDeclaration;
3783     }
3784     } (LITA) {
3785     my $vals;
3786     lang:Perl {
3787 wakaba 1.8 $vals = {nodes => [], value => ''};
3788 wakaba 1.4 }
3789    
3790     &_AttributeValueSpecificationA_ ($doc => $doc, $vals => $vals);
3791    
3792 wakaba 1.8 lang:Perl {
3793     for (@{$vals->{nodes}}) {
3794     $at-><M::Node.appendChild> ($_);
3795     }
3796     }
3797    
3798     ~ (LITA) {
3799 wakaba 1.4 ?lexmode AttlistDeclaration;
3800     } else {
3801     ?lexmode AttlistDeclaration;
3802     }
3803     }
3804     }
3805    
3806     } (LIT) {
3807     my $vals;
3808     lang:Perl {
3809 wakaba 1.8 $at-><AS::ATDef.defaultType> (<C::ATDef.EXPLICIT_DEFAULT>);
3810     $vals = {nodes => [], value => ''};
3811 wakaba 1.4 }
3812    
3813     &_AttributeValueSpecification_ ($doc => $doc, $vals => $vals);
3814    
3815 wakaba 1.8 lang:Perl {
3816     for (@{$vals->{nodes}}) {
3817     $at-><M::Node.appendChild> ($_);
3818     }
3819     }
3820    
3821 wakaba 1.4 ~ (LIT) {
3822     ?lexmode AttlistDeclaration;
3823     } else {
3824     ?lexmode AttlistDeclaration;
3825     }
3826     } (LITA) {
3827     my $vals;
3828     lang:Perl {
3829 wakaba 1.8 $at-><AS::ATDef.defaultType> (<C::ATDef.EXPLICIT_DEFAULT>);
3830     $vals = {nodes => [], value => ''};
3831 wakaba 1.4 }
3832    
3833     &_AttributeValueSpecificationA_ ($doc => $doc, $vals => $vals);
3834    
3835 wakaba 1.8 lang:Perl {
3836     for (@{$vals->{nodes}}) {
3837     $at-><M::Node.appendChild> ($_);
3838     }
3839     }
3840    
3841 wakaba 1.4 ~ (LITA) {
3842     ?lexmode AttlistDeclaration;
3843     } else {
3844     ?lexmode AttlistDeclaration;
3845     }
3846     }
3847    
3848     } (S) : separator : terminator? {
3849     //
3850     }
3851    
3852     ~ (MDC) {
3853     ?lexmode DTD;
3854     } else {
3855     ?lexmode DTD;
3856     }
3857     } // _AttlistDeclaration
3858    
3859 wakaba 1.11 /*
3860 wakaba 1.26 Entity Declaration
3861 wakaba 1.11 */
3862 wakaba 1.4 rule _EntityDeclaration ($doc) {
3863     // ~ (MDO) { }
3864     // ~ (Name == ENTITY) { }
3865    
3866     ~ (S) { }
3867    
3868 wakaba 1.23 my $is_param_entity;
3869 wakaba 1.6 my $decl;
3870 wakaba 1.27 lang:Perl {
3871     $decl = {
3872     name => '#ILLEGAL',
3873     reptxt => \'',
3874     is_external_entity => false,
3875     document_uri => $self->{location}->{document_uri},
3876     base_uri => $self->{location}->{base_uri},
3877     };
3878     }
3879 wakaba 1.6
3880 wakaba 1.4 ~? (PERO) {
3881     ~ (S) { }
3882 wakaba 1.6 lang:Perl {
3883 wakaba 1.23 $is_param_entity = $decl->{is_param_entity} = true;
3884 wakaba 1.6 }
3885 wakaba 1.4 }
3886    
3887 wakaba 1.19 /*
3888     TODO: Set |$decl->{is_externally_declared}| flag
3889     and |Entity.isExternallyDeclared| attribute
3890     for entity declarations in external subset or
3891     in parameter entity.
3892     */
3893    
3894 wakaba 1.4 ~ (Name) {
3895 wakaba 1.6 lang:Perl ($v => $token.value) {
3896 wakaba 1.26 __CODE{checkNCName:: $name => $v}__;
3897 wakaba 1.6 $decl->{name} = $v;
3898     }
3899 wakaba 1.4 }
3900    
3901 wakaba 1.18 my $node;
3902 wakaba 1.11 lang:Perl {
3903 wakaba 1.18 $node =
3904 wakaba 1.11 $decl->{node} = $self->{docx}-><M::DocumentXDoctype.createGeneralEntity>
3905     ($decl->{name});
3906     ## TODO: Parameter entity...
3907     }
3908    
3909 wakaba 1.4 ~ (S) { }
3910    
3911     ~ (LIT) {
3912 wakaba 1.6 &_EntityValue ($doc => $doc, $decl => $decl);
3913 wakaba 1.4 } (LITA) {
3914 wakaba 1.6 &_EntityValueA ($doc => $doc, $decl => $decl);
3915 wakaba 1.4 } (Name == 'PUBLIC') {
3916     ~ (S) { }
3917    
3918 wakaba 1.18 &PubidLiteral ($decl => $node);
3919 wakaba 1.4
3920     ~ (S) { }
3921    
3922 wakaba 1.18 &SystemLiteral ($decl => $node);
3923    
3924     lang:Perl {
3925     $decl->{is_external_entity} = true;
3926     }
3927 wakaba 1.4 } (Name == 'SYSTEM') {
3928     ~ (S) { }
3929    
3930 wakaba 1.18 &SystemLiteral ($decl => $node);
3931    
3932     lang:Perl {
3933     $decl->{is_external_entity} = true;
3934     }
3935 wakaba 1.4 }
3936    
3937     ~? (S) {
3938     ~? (Name == 'NDATA') {
3939 wakaba 1.23 if-true ($is_param_entity) {
3940     lang:Perl : has-error {
3941     my $location;
3942     __CODE{xp|get-location-from-token::
3943     $token => {$token},
3944     $result => {$location},
3945     }__;
3946     my $continue = __DOMCore:ERROR{xp|wf-syntax-error::
3947     xp|error-token => {$token},
3948     c|location => {$location},
3949     }__;
3950     unless ($continue) {
3951 wakaba 1.27 __CODE{ParseError}__;
3952 wakaba 1.23 }
3953     }
3954     }
3955 wakaba 1.4
3956     ~ (S) { }
3957    
3958     ~ (Name) {
3959 wakaba 1.26 lang:Perl ($v => $token.value) : has-error {
3960     __CODE{checkNCName:: $name => $v}__;
3961 wakaba 1.6 $decl->{notation} = $v;
3962 wakaba 1.11 $decl->{node}-><AG::x|Entity.notationName> ($v);
3963 wakaba 1.6 }
3964 wakaba 1.4 }
3965    
3966     ~? (S) { }
3967     }
3968     }
3969    
3970 wakaba 1.24 lang:Perl : has-error {
3971 wakaba 1.6 if ($self->{$decl->{is_param_entity} ? 'param_entity' : 'general_entity'}
3972     ->{$decl->{name}}) {
3973 wakaba 1.24 ## Predefined entity
3974     if (not $decl->{is_param_entity} and
3975     {lt => true, gt => true, amp => true,
3976     quot => true, apos => true}->{$decl->{name}}) {
3977     if ($decl->{is_external_entity}) {
3978     my $location;
3979     __CODE{xp|get-location-from-token::
3980     $token => {$token},
3981     $result => {$location},
3982     }__;
3983     my $continue = __c|ERROR{xp|error-internal-predefined-entity::
3984     xp|error-token => {$token},
3985     c|location => {$location},
3986     xp|name => {$decl->{name}},
3987     }__;
3988     unless ($continue) {
3989 wakaba 1.27 __CODE{ParseError}__;
3990 wakaba 1.24 }
3991     } elsif (
3992     not ({gt => true, apos => true, quot => true}->{$decl->{name}} and
3993     ${$decl->{reptxt}} eq {
3994     gt => '>', apos => "'", quot => '"',
3995     }->{$decl->{name}}) and
3996     not (${$decl->{reptxt}} =~ /\A&#0*@{[{
3997     lt => '60', gt => '62', amp => '38',
3998     apos => '39', quot => '34',
3999     }->{$decl->{name}}]};\z/) and
4000     not (${$decl->{reptxt}} =~ /\A&#x0*(?:(?i)@{[{
4001     lt => '3C', gt => '3E', amp => '26',
4002     apos => '27', quot => '22',
4003     }->{$decl->{name}}]});\z/)
4004     ) {
4005     ## NOTE: See "SuikaWiki - Predefined Entities"
4006     ## "http://suika.fam.cx/gate/2005/sw/%E5%AE%9A%E7%BE%A9%E6%B8%88%E5%AE%9F%E4%BD%93".
4007     my $location;
4008     __CODE{xp|get-location-from-token::
4009     $token => {$token},
4010     $result => {$location},
4011     }__;
4012     my $continue = __c|ERROR{xp|error-malformed-predefined-entity::
4013     xp|error-token => {$token},
4014     c|location => {$location},
4015     xp|name => {$decl->{name}},
4016     xp|replacement-text => {${$decl->{reptxt}}},
4017     }__;
4018     unless ($continue) {
4019 wakaba 1.27 __CODE{ParseError}__;
4020 wakaba 1.24 }
4021     }
4022 wakaba 1.25 $self->{dtdecl}->{<H::mn:node>}->{{
4023     lt => <H::d|hasLtDeclaration>,
4024     gt => <H::d|hasGtDeclaration>,
4025     amp => <H::d|hasAmpDeclaration>,
4026     apos => <H::d|hasAposDeclaration>,
4027     quot => <H::d|hasQuotDeclaration>,
4028     }->{$decl->{name}}} = true;
4029 wakaba 1.24 } else { ## Dupulicating declaration
4030     my $location;
4031     __CODE{xp|get-location-from-token::
4032     $token => {$token},
4033     $result => {$location},
4034     }__;
4035     my $continue = __c|ERROR{xp|warning-entity-declaration-ignored::
4036     xp|error-token => {$token},
4037     c|location => {$location},
4038     xp|name => {$decl->{name}},
4039     }__;
4040     unless ($continue) {
4041 wakaba 1.27 __CODE{ParseError}__;
4042 wakaba 1.24 }
4043     }
4044 wakaba 1.25 } elsif ($self->{dont_process} and not $self->{standalone}) {
4045     ## TODO: |standalone| and parameter entities??
4046     my $location;
4047     __CODE{xp|get-location-from-token::
4048     $token => {$token},
4049     $result => {$location},
4050     }__;
4051     my $continue = __c|ERROR{xp|warning-entity-declaration-not-processed::
4052     xp|error-token => {$token},
4053     c|location => {$location},
4054     xp|name => {$decl->{name}},
4055     }__;
4056     unless ($continue) {
4057 wakaba 1.27 __CODE{ParseError}__;
4058 wakaba 1.25 }
4059 wakaba 1.6 } else {
4060     $self->{$decl->{is_param_entity} ? 'param_entity' : 'general_entity'}
4061     ->{$decl->{name}} = $decl;
4062 wakaba 1.11 $self->{dtdef}-><M::DTDef.setGeneralEntityNode> ($decl->{node})
4063     unless $decl->{is_param_entity};
4064 wakaba 1.6 }
4065     }
4066    
4067 wakaba 1.4 ~ (MDC) {
4068     ?lexmode DTD;
4069     } else {
4070     ?lexmode DTD;
4071     }
4072     } // _EntityDeclaration
4073    
4074 wakaba 1.26 /*
4075     Notation Declaration
4076     */
4077     rule _NotationDeclaration {
4078 wakaba 1.4 // ~ (MDO) { }
4079     // ~ (Name == NOTATION) { }
4080    
4081     ~ (S) { }
4082    
4083 wakaba 1.26 my $name;
4084 wakaba 1.4 ~ (Name) {
4085 wakaba 1.26 lang:Perl ($v => $token.value) : has-error {
4086     __CODE{checkNCName:: $name => $v}__;
4087     $name = $v;
4088     }
4089     } else {
4090     lang:Perl {
4091     $name = '#INVALID';
4092     }
4093     }
4094 wakaba 1.4
4095     ~ (S) { }
4096    
4097 wakaba 1.17 lang:Perl {
4098 wakaba 1.26 $decl = $self->{docx}-><M::DocumentXDoctype.createNotation> ($name);
4099 wakaba 1.17 }
4100    
4101 wakaba 1.4 ~ (Name == 'PUBLIC') {
4102     ~ (S) { }
4103    
4104 wakaba 1.17 &PubidLiteral ($decl => $decl);
4105 wakaba 1.4
4106     ~? (S) {
4107     ~? (LIT) {
4108     ?lexmode SystemLiteral;
4109 wakaba 1.17 &_SystemLiteral ($decl => $decl);
4110 wakaba 1.4
4111     ~? (S) { }
4112     } (LITA) {
4113     ?lexmode SystemLiteralA;
4114 wakaba 1.17 &_SystemLiteral ($decl => $decl);
4115 wakaba 1.4
4116     ~? (S) { }
4117     }
4118     }
4119     } (Name == 'SYSTEM') {
4120     ~ (S) { }
4121    
4122 wakaba 1.17 &SystemLiteral ($decl => $decl);
4123 wakaba 1.4
4124     ~? (S) { }
4125     }
4126    
4127 wakaba 1.26 lang:Perl : has-error {
4128     if ($self->{dtdef}-><M::DTDef.getNotationNode> ($name)) {
4129     ## Dupulication
4130     my $location;
4131     __CODE{xp|get-location-from-token::
4132     $token => {$token},
4133     $result => {$location},
4134     }__;
4135     my $continue = __c|ERROR{xp|vc-unique-notation-name::
4136     xp|error-token => {$token},
4137     c|location => {$location},
4138     xp|name => {$name},
4139     }__;
4140     unless ($continue) {
4141 wakaba 1.27 __CODE{ParseError}__;
4142 wakaba 1.26 }
4143     } else {
4144     $self->{dtdef}-><M::DTDef.setNotationNode> ($decl);
4145     }
4146     }
4147    
4148 wakaba 1.4 ~ (MDC) {
4149     ?lexmode DTD;
4150     } else {
4151     ?lexmode DTD;
4152     }
4153     } // _NotationDeclaration
4154    
4155 wakaba 1.11 rule _EntityValue ($decl) {
4156 wakaba 1.4 ?lexmode EntityValue;
4157    
4158     my $vals;
4159 wakaba 1.6 my $reptxt;
4160 wakaba 1.4 lang:Perl {
4161     $vals = [];
4162 wakaba 1.6 $reptxt = '';
4163 wakaba 1.4 }
4164    
4165     ~* (STRING) {
4166 wakaba 1.6 lang:Perl ($v => $token.value) {
4167     $reptxt .= $v;
4168     }
4169 wakaba 1.4 } (PERO) {
4170 wakaba 1.25 ?lexmode EntityReference;
4171 wakaba 1.19
4172     lang:Perl {
4173     $self->{has_xref} = true;
4174 wakaba 1.25 $self->{dont_process} = true;
4175 wakaba 1.19 }
4176 wakaba 1.6
4177     // TODO: Expand or wferror if internal subset
4178 wakaba 1.4
4179     ~ (Name) {
4180    
4181 wakaba 1.25 // Note that external subset and parameter entities are not supported
4182     lang:Perl ($name => $token.value) : has-error {
4183 wakaba 1.26 __CODE{checkNCName:: $name => $name}__;
4184 wakaba 1.25 my $location;
4185     __CODE{xp|get-location-from-token::
4186     $token => {$token},
4187     $result => {$location},
4188     }__;
4189     my $continue = __c|ERROR{xp|wf-pes-in-internal-subset::
4190     xp|error-token => {$token},
4191     c|location => {$location},
4192     xp|name => {$name},
4193     }__;
4194     unless ($continue) {
4195 wakaba 1.27 __CODE{ParseError}__;
4196 wakaba 1.25 }
4197     }
4198 wakaba 1.4 }
4199    
4200     ~ (REFC) {
4201     ?lexmode EntityValue;
4202     } else {
4203     ?lexmode EntityValue;
4204     }
4205     } (HCRO) {
4206 wakaba 1.11 &_HexadecimalCharacterReferenceEV_ ($vals => $vals);
4207 wakaba 1.4
4208 wakaba 1.6 lang:Perl {
4209 wakaba 1.11 $reptxt .= $vals->[-1];
4210 wakaba 1.6 }
4211    
4212 wakaba 1.4 ~ (REFC) {
4213     ?lexmode EntityValue;
4214     } else {
4215     ?lexmode EntityValue;
4216     }
4217     } (CRO) {
4218 wakaba 1.11 &_NumericCharacterReferenceEV_ ($vals => $vals);
4219 wakaba 1.6
4220     lang:Perl {
4221 wakaba 1.11 $reptxt .= $vals->[-1];
4222 wakaba 1.6 }
4223 wakaba 1.4
4224     ~ (REFC) {
4225     ?lexmode EntityValue;
4226     } else {
4227     ?lexmode EntityValue;
4228     }
4229     } (ERO) {
4230 wakaba 1.11 &_GeneralEntityReferenceEV_ ($vals => $vals);
4231 wakaba 1.4
4232 wakaba 1.6 lang:Perl {
4233 wakaba 1.11 $reptxt .= '&' . $vals->[-1] . ';';
4234 wakaba 1.6 }
4235    
4236 wakaba 1.4 ~ (REFC) {
4237     ?lexmode EntityValue;
4238     } else {
4239     ?lexmode EntityValue;
4240     }
4241     }
4242    
4243     ~ (LIT) {
4244     ?lexmode MarkupDeclaration;
4245     } (LITA) {
4246     ?lexmode MarkupDeclaration;
4247     } else {
4248     ?lexmode MarkupDeclaration;
4249     }
4250 wakaba 1.6
4251     lang:Perl {
4252     $decl->{reptxt} = \$reptxt;
4253 wakaba 1.19 $decl->{has_replacement_text} = true;
4254 wakaba 1.6 }
4255 wakaba 1.4 } // _EntityValue
4256    
4257 wakaba 1.11 rule _EntityValueA ($decl) {
4258 wakaba 1.4 ?lexmode EntityValueA;
4259    
4260     my $vals;
4261 wakaba 1.6 my $reptxt;
4262 wakaba 1.4 lang:Perl {
4263     $vals = [];
4264 wakaba 1.6 $reptxt = '';
4265 wakaba 1.4 }
4266    
4267     ~* (STRING) {
4268 wakaba 1.6 lang:Perl ($v => $token.value) {
4269     $reptxt .= $v;
4270     }
4271 wakaba 1.4 } (PERO) {
4272 wakaba 1.25 ?lexmode EntityReference;
4273 wakaba 1.4
4274 wakaba 1.19 lang:Perl {
4275     $self->{has_xref} = true;
4276 wakaba 1.25 $self->{dont_process} = true;
4277 wakaba 1.19 }
4278    
4279 wakaba 1.6 // TODO: implement this
4280 wakaba 1.4 ~ (Name) {
4281    
4282 wakaba 1.25 // Note that external subset and parameter entities are not supported
4283     lang:Perl ($name => $token.value) : has-error {
4284 wakaba 1.26 __CODE{checkNCName:: $name => $name}__;
4285 wakaba 1.25 my $location;
4286     __CODE{xp|get-location-from-token::
4287     $token => {$token},
4288     $result => {$location},
4289     }__;
4290     my $continue = __c|ERROR{xp|wf-pes-in-internal-subset::
4291     xp|error-token => {$token},
4292     c|location => {$location},
4293     xp|name => {$name},
4294     }__;
4295     unless ($continue) {
4296 wakaba 1.27 __CODE{ParseError}__;
4297 wakaba 1.25 }
4298     }
4299 wakaba 1.4 }
4300    
4301     ~ (REFC) {
4302     ?lexmode EntityValueA;
4303     } else {
4304     ?lexmode EntityValueA;
4305     }
4306     } (HCRO) {
4307 wakaba 1.11 &_HexadecimalCharacterReferenceEV_ ($vals => $vals);
4308 wakaba 1.4
4309 wakaba 1.6 lang:Perl {
4310 wakaba 1.11 $reptxt .= $vals->[-1];
4311 wakaba 1.6 }
4312    
4313    
4314 wakaba 1.4 ~ (REFC) {
4315     ?lexmode EntityValueA;
4316     } else {
4317     ?lexmode EntityValueA;
4318     }
4319     } (CRO) {
4320 wakaba 1.11 &_NumericCharacterReferenceEV_ ($vals => $vals);
4321 wakaba 1.4
4322 wakaba 1.6 lang:Perl {
4323 wakaba 1.11 $reptxt .= $vals->[-1];
4324 wakaba 1.6 }
4325    
4326 wakaba 1.4 ~ (REFC) {
4327     ?lexmode EntityValueA;
4328     } else {
4329     ?lexmode EntityValueA;
4330     }
4331     } (ERO) {
4332 wakaba 1.11 &_GeneralEntityReferenceEV_ ($vals => $vals);
4333 wakaba 1.4
4334 wakaba 1.6 lang:Perl {
4335 wakaba 1.11 $reptxt .= '&' . $vals->[-1] . ';';
4336 wakaba 1.6 }
4337    
4338 wakaba 1.4 ~ (REFC) {
4339     ?lexmode EntityValueA;
4340     } else {
4341     ?lexmode EntityValueA;
4342     }
4343     }
4344    
4345     ~ (LITA) {
4346     ?lexmode MarkupDeclaration;
4347     } else {
4348     ?lexmode MarkupDeclaration;
4349     }
4350 wakaba 1.6
4351     lang:Perl {
4352     $decl->{reptxt} = \$reptxt;
4353 wakaba 1.19 $decl->{has_replacement_text} = true;
4354 wakaba 1.6 }
4355 wakaba 1.4 } // _EntityValueA
4356    
4357    
4358     /*
4359     XML Name
4360     */
4361     lexmode NameChar {
4362     $NameStartChar10 := [
4363     '_' ':'
4364     // Letter
4365     // BaseChar
4366     U+0041..U+005A U+0061..U+007A U+00C0..U+00D6
4367     U+00D8..U+00F6 U+00F8..U+00FF U+0100..U+0131
4368     U+0134..U+013E U+0141..U+0148 U+014A..U+017E
4369     U+0180..U+01C3 U+01CD..U+01F0 U+01F4..U+01F5
4370     U+01FA..U+0217 U+0250..U+02A8 U+02BB..U+02C1
4371     U+0386 U+0388..U+038A U+038C U+038E..U+03A1
4372     U+03A3..U+03CE U+03D0..U+03D6 U+03DA U+03DC
4373     U+03DE U+03E0 U+03E2..U+03F3 U+0401..U+040C
4374     U+040E..U+044F U+0451..U+045C U+045E..U+0481
4375     U+0490..U+04C4 U+04C7..U+04C8 U+04CB..U+04CC
4376     U+04D0..U+04EB U+04EE..U+04F5 U+04F8..U+04F9
4377     U+0531..U+0556 U+0559 U+0561..U+0586
4378     U+05D0..U+05EA U+05F0..U+05F2 U+0621..U+063A
4379     U+0641..U+064A U+0671..U+06B7 U+06BA..U+06BE
4380     U+06C0..U+06CE U+06D0..U+06D3 U+06D5
4381     U+06E5..U+06E6 U+0905..U+0939 U+093D
4382     U+0958..U+0961 U+0985..U+098C U+098F..U+0990
4383     U+0993..U+09A8 U+09AA..U+09B0 U+09B2
4384     U+09B6..U+09B9 U+09DC..U+09DD U+09DF..U+09E1
4385     U+09F0..U+09F1 U+0A05..U+0A0A U+0A0F..U+0A10
4386     U+0A13..U+0A28 U+0A2A..U+0A30 U+0A32..U+0A33
4387     U+0A35..U+0A36 U+0A38..U+0A39 U+0A59..U+0A5C
4388     U+0A5E U+0A72..U+0A74 U+0A85..U+0A8B U+0A8D
4389     U+0A8F..U+0A91 U+0A93..U+0AA8 U+0AAA..U+0AB0
4390     U+0AB2..U+0AB3 U+0AB5..U+0AB9 U+0ABD U+0AE0
4391     U+0B05..U+0B0C U+0B0F..U+0B10 U+0B13..U+0B28
4392     U+0B2A..U+0B30 U+0B32..U+0B33 U+0B36..U+0B39
4393     U+0B3D U+0B5C..U+0B5D U+0B5F..U+0B61
4394     U+0B85..U+0B8A U+0B8E..U+0B90 U+0B92..U+0B95
4395     U+0B99..U+0B9A U+0B9C U+0B9E..U+0B9F
4396     U+0BA3..U+0BA4 U+0BA8..U+0BAA U+0BAE..U+0BB5
4397     U+0BB7..U+0BB9 U+0C05..U+0C0C U+0C0E..U+0C10
4398     U+0C12..U+0C28 U+0C2A..U+0C33 U+0C35..U+0C39
4399     U+0C60..U+0C61 U+0C85..U+0C8C U+0C8E..U+0C90
4400     U+0C92..U+0CA8 U+0CAA..U+0CB3 U+0CB5..U+0CB9
4401     U+0CDE U+0CE0..U+0CE1 U+0D05..U+0D0C
4402     U+0D0E..U+0D10 U+0D12..U+0D28 U+0D2A..U+0D39
4403     U+0D60..U+0D61 U+0E01..U+0E2E U+0E30
4404     U+0E32..U+0E33 U+0E40..U+0E45 U+0E81..U+0E82
4405     U+0E84 U+0E87..U+0E88 U+0E8A U+0E8D
4406     U+0E94..U+0E97 U+0E99..U+0E9F U+0EA1..U+0EA3
4407     U+0EA5 U+0EA7 U+0EAA..U+0EAB U+0EAD..U+0EAE
4408     U+0EB0 U+0EB2..U+0EB3 U+0EBD U+0EC0..U+0EC4
4409     U+0F40..U+0F47 U+0F49..U+0F69 U+10A0..U+10C5
4410     U+10D0..U+10F6 U+1100 U+1102..U+1103
4411     U+1105..U+1107 U+1109 U+110B..U+110C
4412     U+110E..U+1112 U+113C U+113E U+1140 U+114C
4413     U+114E U+1150 U+1154..U+1155 U+1159
4414     U+115F..U+1161 U+1163 U+1165 U+1167 U+1169
4415     U+116D..U+116E U+1172..U+1173 U+1175 U+119E
4416     U+11A8 U+11AB U+11AE..U+11AF U+11B7..U+11B8
4417     U+11BA U+11BC..U+11C2 U+11EB U+11F0 U+11F9
4418     U+1E00..U+1E9B U+1EA0..U+1EF9 U+1F00..U+1F15
4419     U+1F18..U+1F1D U+1F20..U+1F45 U+1F48..U+1F4D
4420     U+1F50..U+1F57 U+1F59 U+1F5B U+1F5D
4421     U+1F5F..U+1F7D U+1F80..U+1FB4 U+1FB6..U+1FBC
4422     U+1FBE U+1FC2..U+1FC4 U+1FC6..U+1FCC
4423     U+1FD0..U+1FD3 U+1FD6..U+1FDB U+1FE0..U+1FEC
4424     U+1FF2..U+1FF4 U+1FF6..U+1FFC U+2126
4425     U+212A..U+212B U+212E U+2180..U+2182
4426     U+3041..U+3094 U+30A1..U+30FA U+3105..U+312C
4427     U+AC00..U+D7A3
4428     // Ideographic
4429     U+4E00..U+9FA5 U+3007 U+3021..U+3029
4430     ];
4431     $NameChar10 := [
4432     '.' '-' '_' ':'
4433     // Letter
4434     // BaseChar
4435     U+0041..U+005A U+0061..U+007A U+00C0..U+00D6
4436     U+00D8..U+00F6 U+00F8..U+00FF U+0100..U+0131
4437     U+0134..U+013E U+0141..U+0148 U+014A..U+017E
4438     U+0180..U+01C3 U+01CD..U+01F0 U+01F4..U+01F5
4439     U+01FA..U+0217 U+0250..U+02A8 U+02BB..U+02C1
4440     U+0386 U+0388..U+038A U+038C U+038E..U+03A1
4441     U+03A3..U+03CE U+03D0..U+03D6 U+03DA U+03DC
4442     U+03DE U+03E0 U+03E2..U+03F3 U+0401..U+040C
4443     U+040E..U+044F U+0451..U+045C U+045E..U+0481
4444     U+0490..U+04C4 U+04C7..U+04C8 U+04CB..U+04CC
4445     U+04D0..U+04EB U+04EE..U+04F5 U+04F8..U+04F9
4446     U+0531..U+0556 U+0559 U+0561..U+0586
4447     U+05D0..U+05EA U+05F0..U+05F2 U+0621..U+063A
4448     U+0641..U+064A U+0671..U+06B7 U+06BA..U+06BE
4449     U+06C0..U+06CE U+06D0..U+06D3 U+06D5
4450     U+06E5..U+06E6 U+0905..U+0939 U+093D
4451     U+0958..U+0961 U+0985..U+098C U+098F..U+0990
4452     U+0993..U+09A8 U+09AA..U+09B0 U+09B2
4453     U+09B6..U+09B9 U+09DC..U+09DD U+09DF..U+09E1
4454     U+09F0..U+09F1 U+0A05..U+0A0A U+0A0F..U+0A10
4455     U+0A13..U+0A28 U+0A2A..U+0A30 U+0A32..U+0A33
4456     U+0A35..U+0A36 U+0A38..U+0A39 U+0A59..U+0A5C
4457     U+0A5E U+0A72..U+0A74 U+0A85..U+0A8B U+0A8D
4458     U+0A8F..U+0A91 U+0A93..U+0AA8 U+0AAA..U+0AB0
4459     U+0AB2..U+0AB3 U+0AB5..U+0AB9 U+0ABD U+0AE0
4460     U+0B05..U+0B0C U+0B0F..U+0B10 U+0B13..U+0B28
4461     U+0B2A..U+0B30 U+0B32..U+0B33 U+0B36..U+0B39
4462     U+0B3D U+0B5C..U+0B5D U+0B5F..U+0B61
4463     U+0B85..U+0B8A U+0B8E..U+0B90 U+0B92..U+0B95
4464     U+0B99..U+0B9A U+0B9C U+0B9E..U+0B9F
4465     U+0BA3..U+0BA4 U+0BA8..U+0BAA U+0BAE..U+0BB5
4466     U+0BB7..U+0BB9 U+0C05..U+0C0C U+0C0E..U+0C10
4467     U+0C12..U+0C28 U+0C2A..U+0C33 U+0C35..U+0C39
4468     U+0C60..U+0C61 U+0C85..U+0C8C U+0C8E..U+0C90
4469     U+0C92..U+0CA8 U+0CAA..U+0CB3 U+0CB5..U+0CB9
4470     U+0CDE U+0CE0..U+0CE1 U+0D05..U+0D0C
4471     U+0D0E..U+0D10 U+0D12..U+0D28 U+0D2A..U+0D39
4472     U+0D60..U+0D61 U+0E01..U+0E2E U+0E30
4473     U+0E32..U+0E33 U+0E40..U+0E45 U+0E81..U+0E82
4474     U+0E84 U+0E87..U+0E88 U+0E8A U+0E8D
4475     U+0E94..U+0E97 U+0E99..U+0E9F U+0EA1..U+0EA3
4476     U+0EA5 U+0EA7 U+0EAA..U+0EAB U+0EAD..U+0EAE
4477     U+0EB0 U+0EB2..U+0EB3 U+0EBD U+0EC0..U+0EC4
4478     U+0F40..U+0F47 U+0F49..U+0F69 U+10A0..U+10C5
4479     U+10D0..U+10F6 U+1100 U+1102..U+1103
4480     U+1105..U+1107 U+1109 U+110B..U+110C
4481     U+110E..U+1112 U+113C U+113E U+1140 U+114C
4482     U+114E U+1150 U+1154..U+1155 U+1159
4483     U+115F..U+1161 U+1163 U+1165 U+1167 U+1169
4484     U+116D..U+116E U+1172..U+1173 U+1175 U+119E
4485     U+11A8 U+11AB U+11AE..U+11AF U+11B7..U+11B8
4486     U+11BA U+11BC..U+11C2 U+11EB U+11F0 U+11F9
4487     U+1E00..U+1E9B U+1EA0..U+1EF9 U+1F00..U+1F15
4488     U+1F18..U+1F1D U+1F20..U+1F45 U+1F48..U+1F4D
4489     U+1F50..U+1F57 U+1F59 U+1F5B U+1F5D
4490     U+1F5F..U+1F7D U+1F80..U+1FB4 U+1FB6..U+1FBC
4491     U+1FBE U+1FC2..U+1FC4 U+1FC6..U+1FCC
4492     U+1FD0..U+1FD3 U+1FD6..U+1FDB U+1FE0..U+1FEC
4493     U+1FF2..U+1FF4 U+1FF6..U+1FFC U+2126
4494     U+212A..U+212B U+212E U+2180..U+2182
4495     U+3041..U+3094 U+30A1..U+30FA U+3105..U+312C
4496     U+AC00..U+D7A3
4497     // Ideographic
4498     U+4E00..U+9FA5 U+3007 U+3021..U+3029
4499     // Digit
4500     U+0030..U+0039 U+0660..U+0669 U+06F0..U+06F9
4501     U+0966..U+096F U+09E6..U+09EF U+0A66..U+0A6F
4502     U+0AE6..U+0AEF U+0B66..U+0B6F U+0BE7..U+0BEF
4503     U+0C66..U+0C6F U+0CE6..U+0CEF U+0D66..U+0D6F
4504     U+0E50..U+0E59 U+0ED0..U+0ED9 U+0F20..U+0F29
4505     // CombiningChar
4506     U+0300..U+0345 U+0360..U+0361 U+0483..U+0486
4507     U+0591..U+05A1 U+05A3..U+05B9 U+05BB..U+05BD
4508     U+05BF U+05C1..U+05C2 U+05C4 U+064B..U+0652
4509     U+0670 U+06D6..U+06DC U+06DD..U+06DF
4510     U+06E0..U+06E4 U+06E7..U+06E8 U+06EA..U+06ED
4511     U+0901..U+0903 U+093C U+093E..U+094C U+094D
4512     U+0951..U+0954 U+0962..U+0963 U+0981..U+0983
4513     U+09BC U+09BE U+09BF U+09C0..U+09C4
4514     U+09C7..U+09C8 U+09CB..U+09CD U+09D7
4515     U+09E2..U+09E3 U+0A02 U+0A3C U+0A3E U+0A3F
4516     U+0A40..U+0A42 U+0A47..U+0A48 U+0A4B..U+0A4D
4517     U+0A70..U+0A71 U+0A81..U+0A83 U+0ABC
4518     U+0ABE..U+0AC5 U+0AC7..U+0AC9 U+0ACB..U+0ACD
4519     U+0B01..U+0B03 U+0B3C U+0B3E..U+0B43
4520     U+0B47..U+0B48 U+0B4B..U+0B4D U+0B56..U+0B57
4521     U+0B82..U+0B83 U+0BBE..U+0BC2 U+0BC6..U+0BC8
4522     U+0BCA..U+0BCD U+0BD7 U+0C01..U+0C03
4523     U+0C3E..U+0C44 U+0C46..U+0C48 U+0C4A..U+0C4D
4524     U+0C55..U+0C56 U+0C82..U+0C83 U+0CBE..U+0CC4
4525     U+0CC6..U+0CC8 U+0CCA..U+0CCD U+0CD5..U+0CD6
4526     U+0D02..U+0D03 U+0D3E..U+0D43 U+0D46..U+0D48
4527     U+0D4A..U+0D4D U+0D57 U+0E31 U+0E34..U+0E3A
4528     U+0E47..U+0E4E U+0EB1 U+0EB4..U+0EB9
4529     U+0EBB..U+0EBC U+0EC8..U+0ECD U+0F18..U+0F19
4530     U+0F35 U+0F37 U+0F39 U+0F3E U+0F3F
4531     U+0F71..U+0F84 U+0F86..U+0F8B U+0F90..U+0F95
4532     U+0F97 U+0F99..U+0FAD U+0FB1..U+0FB7 U+0FB9
4533     U+20D0..U+20DC U+20E1 U+302A..U+302F U+3099
4534     U+309A
4535     // Extender
4536     U+00B7 U+02D0 U+02D1 U+0387 U+0640 U+0E46
4537     U+0EC6 U+3005 U+3031..U+3035 U+309D..U+309E
4538     U+30FC..U+30FE
4539     ];
4540 wakaba 1.1
4541     $NameStartChar11 := [
4542     ':' '_'
4543     'A' 'B' 'C' 'D' 'E' 'F' 'G' 'H' 'I' 'J' 'K' 'L' 'M'
4544     'N' 'O' 'P' 'Q' 'R' 'S' 'T' 'U' 'V' 'W' 'X' 'Y' 'Z'
4545     'a' 'b' 'c' 'd' 'e' 'f' 'g' 'h' 'i' 'j' 'k' 'l' 'm'
4546     'n' 'o' 'p' 'q' 'r' 's' 't' 'u' 'v' 'w' 'x' 'y' 'z'
4547     U+00C0..U+00D6 U+00D8..U+00F6 U+00F8..U+02FF
4548     U+0370..U+037D U+037F..U+1FFF U+200C..U+200D
4549     U+2070..U+218F U+2C00..U+2FEF U+3001..U+D7FF
4550     U+F900..U+FDCF U+FDF0..U+FFFD U+10000..U+EFFFF
4551     ];
4552     $NameChar11 := [
4553     '-' '.' '0' '1' '2' '3' '4' '5' '6' '7' '8' '9'
4554     U+00B7 U+0300..U+036F U+203F..U+2040
4555     // NameStartChar
4556     ':' '_'
4557     'A' 'B' 'C' 'D' 'E' 'F' 'G' 'H' 'I' 'J' 'K' 'L' 'M'
4558     'N' 'O' 'P' 'Q' 'R' 'S' 'T' 'U' 'V' 'W' 'X' 'Y' 'Z'
4559     'a' 'b' 'c' 'd' 'e' 'f' 'g' 'h' 'i' 'j' 'k' 'l' 'm'
4560     'n' 'o' 'p' 'q' 'r' 's' 't' 'u' 'v' 'w' 'x' 'y' 'z'
4561     U+00C0..U+00D6 U+00D8..U+00F6 U+00F8..U+02FF
4562     U+0370..U+037D U+037F..U+1FFF U+200C..U+200D
4563     U+2070..U+218F U+2C00..U+2FEF U+3001..U+D7FF
4564     U+F900..U+FDCF U+FDF0..U+FFFD U+10000..U+EFFFF
4565     ];
4566 wakaba 1.4 } // NameChar
4567    
4568     lexmode Name
4569     : extends => 'NameChar'
4570     {
4571 wakaba 1.1 Name : value := $NameStartChar11 $NameChar11*;
4572     } // Name
4573 wakaba 1.4
4574     lexmode Nmtoken
4575     : extends => 'NameChar'
4576     {
4577     Nmtoken : value := $NameChar11*;
4578     } // Nmtoken
4579 wakaba 1.1
4580     /*
4581 wakaba 1.14 S
4582 wakaba 1.1 */
4583     lexmode S {
4584 wakaba 1.14 $s := [U+0009 U+000A U+000D U+0020];
4585     S := $s+;
4586 wakaba 1.1 } // S
4587    
4588     /*
4589     Document end scanning mode
4590     */
4591     lexmode DocumentEnd
4592     : standalone
4593     : extends => 'S'
4594     {
4595     /*
4596     Processing instruction
4597     */
4598     PIO := ['<'] ['?'];
4599    
4600     /*
4601     Comment declaration
4602     */
4603     CDO := ['<'] ['!'] ['-'] ['-'];
4604     } // DocumentEnd
4605    
4606     /*
4607     Document misc scanning mode
4608    
4609     This mode scans |Misc| constructions as well
4610     as document element's start tag.
4611     */
4612     lexmode DocumentMisc
4613     : standalone
4614     : extends => 'DocumentEnd'
4615     {
4616     /*
4617     Document element start tag
4618     */
4619     STAGO := ['<'];
4620     } // DocumentMisc
4621    
4622     /*
4623     Document prolog scanning mode
4624     */
4625     lexmode DocumentProlog
4626     : standalone
4627     : extends => 'DocumentMisc'
4628     {
4629     /*
4630     |DOCTYPE| declaration
4631     */
4632     MDO := ['<'] ['!'];
4633     } // DocumentProlog
4634 wakaba 1.16
4635 wakaba 1.1 /*
4636 wakaba 1.16 Document Start Scanning Mode
4637 wakaba 1.1 */
4638     lexmode DocumentStart
4639     : standalone
4640     : extends => 'DocumentProlog'
4641     {
4642     /*
4643     XML declaration
4644     */
4645 wakaba 1.16 XDO := ['<'] ['?'] ['x'] ['m'] ['l'];
4646 wakaba 1.1 } // DocumentStart
4647    
4648     /*
4649     Comment declaration scanning mode
4650     */
4651     lexmode CommentDeclaration
4652     : standalone
4653     {
4654     /*
4655     Comment close
4656     */
4657     COM := ['-'] ['-'];
4658    
4659     /*
4660     Comment data
4661     */
4662 wakaba 1.15 ?default-token STRING : value;
4663 wakaba 1.1 } // CommentDeclaration
4664    
4665     /*
4666     Processing instruction name and |S| scanning mode
4667     */
4668     lexmode PIName
4669     : standalone
4670     : extends => 'Name'
4671     : extends => 'S'
4672     {
4673     /*
4674     Processing instruction close
4675     */
4676     PIC := ['?'] ['>'];
4677     } // PIName
4678    
4679     /*
4680 wakaba 1.16 Processing instruction name and |S| scanning mode
4681     */
4682     lexmode PINmtoken
4683     : standalone
4684     : extends => 'Nmtoken'
4685     : extends => 'S'
4686     {
4687     /*
4688     Processing instruction close
4689     */
4690     PIC := ['?'] ['>'];
4691     } // PINmtoken
4692    
4693     /*
4694 wakaba 1.1 Processing instruction data scanning mode
4695     */
4696     lexmode PIData
4697     : standalone
4698     {
4699     /*
4700     Processing instruction close
4701     */
4702     PIC := ['?'] ['>'];
4703    
4704     /*
4705     Processing instruction target data
4706     */
4707 wakaba 1.2 ?default-token DATA : value;
4708 wakaba 1.1 } // PIData
4709    
4710     /*
4711     Content of element scanning mode
4712     */
4713     lexmode ElementContent
4714     : standalone
4715     {
4716     /*
4717     Start tag open
4718     */
4719     STAGO := ['<'];
4720    
4721     /*
4722     End tag open
4723     */
4724     ETAGO := ['<'] ['/'];
4725    
4726     /*
4727     Hexadecimal character reference open
4728     */
4729     HCRO := ['&'] ['#'] ['x'];
4730    
4731     /*
4732     Numeric character reference open
4733     */
4734     CRO := ['&'] ['#'];
4735    
4736     /*
4737     General entity reference open
4738     */
4739     ERO := ['&'];
4740    
4741     /*
4742     Comment declaration open
4743     */
4744     CDO := ['<'] ['!'] ['-'] ['-'];
4745    
4746     /*
4747     CDATA section open
4748     */
4749     CDSO := ['<'] ['!'] ['[']
4750     ['C'] ['D'] ['A'] ['T'] ['A'] ['['];
4751    
4752     /*
4753     Processing instruction open
4754     */
4755     PIO := ['<'] ['?'];
4756 wakaba 1.2
4757     /*
4758     Markup section end
4759     */
4760     MSE := [']'] [']'] ['>'];
4761    
4762     /*
4763     Character data
4764     */
4765     /*
4766     Character data and/or |MSE|
4767     */
4768     ?default-token CharData : value;
4769 wakaba 1.1 } // ElementContent
4770    
4771     /*
4772     CDATA section content scanning mode
4773     */
4774     lexmode CDATASectionContent
4775     : standalone
4776     {
4777     /*
4778     Markup section end
4779     */
4780     MSE := [']'] [']'] ['>'];
4781    
4782     /*
4783     Character data
4784 wakaba 1.2 */
4785     ?default-token CData : value;
4786 wakaba 1.1 } // CDATASectionContent
4787    
4788     lexmode EntityReference
4789     : standalone
4790     : extends => 'Name'
4791     {
4792     /*
4793     Reference close
4794     */
4795     REFC := [';'];
4796     } // EntityReference
4797    
4798     lexmode NumericCharacterReference
4799     : standalone
4800     {
4801     /*
4802     Decimal number
4803     */
4804     $digit := ['0' '1' '2' '3' '4' '5' '6' '7' '8' '9'];
4805     NUMBER : value := $digit+;
4806    
4807     /*
4808     Reference close
4809     */
4810     REFC := [';'];
4811     } // NumericCharacterReference
4812    
4813     lexmode HexadecimalCharacterReference
4814     : standalone
4815     {
4816     /*
4817     Hexadecimal number
4818     */
4819     $hexdigit := ['0' '1' '2' '3' '4' '5' '6' '7' '8' '9'
4820     'A' 'B' 'C' 'D' 'E' 'F'
4821     'a' 'b' 'c' 'd' 'e' 'f'];
4822     Hex : value := $hexdigit+;
4823    
4824     /*
4825     Reference close
4826     */
4827     REFC := [';'];
4828     } // HexadecimalCharacterReference
4829    
4830 wakaba 1.16 /*
4831     The XML Declaration and Text Declaration Scanning Mode
4832     */
4833 wakaba 1.3 lexmode XMLDeclaration
4834     : standalone
4835     : extends => 'Name'
4836     : extends => 'S'
4837     {
4838    
4839     /*
4840     Value indicator
4841     */
4842     VI := ['='];
4843    
4844     /*
4845     Literal open
4846     */
4847     LIT := ['"'];
4848     LITA := [U+0027];
4849    
4850     /*
4851     Processing instruction close
4852 wakaba 1.16
4853     The |PIC|, i.e. |?>|, is split into two tokens |PIC1| and |PIC2|
4854     in this scanning mode to set |no_xml11_eol| flag in the
4855     |_XMLDeclaration_| |rule|.
4856 wakaba 1.3 */
4857 wakaba 1.16 PIC1 := ['?'];
4858     PIC2 := ['>'];
4859 wakaba 1.3 } // XMLDeclaration
4860 wakaba 1.16
4861     /*
4862     The XML Declaration or Processing Instruction Scanning Mode
4863    
4864     '<?xml' S ...
4865     (DocumentStart) (XMLDeclarationOrPI) (XMLDeclaration)
4866     '<?xml' '1' S ...
4867     (DocumentStart) (XMLDeclarationOrPI) (PINmtoken)(PIName) (PITarget)
4868     '<?xml' '-' 'stylesheet' S ...
4869     (DocumentStart) (XMLDeclarationOrPI) (PINmtoken) (PIName) (PITarget)
4870     */
4871     lexmode XMLDeclarationOrPI
4872     : standalone
4873     : extends => 'NameChar'
4874     : extends => 'S'
4875     {
4876     NameChar : value := $NameChar11;
4877     } // XMLDeclarationOrPI
4878 wakaba 1.3
4879 wakaba 1.1 lexmode StartTag
4880     : standalone
4881     : extends => 'Name'
4882     : extends => 'S'
4883     {
4884    
4885     /*
4886     Value indicator
4887     */
4888     VI := ['='];
4889    
4890     /*
4891     Literal open
4892     */
4893     LIT := ['"'];
4894     LITA := [U+0027];
4895    
4896     /*
4897     Tag close
4898     */
4899     TAGC := ['>'];
4900    
4901     /*
4902 wakaba 1.6 Null end-tag enabled start-tag close
4903 wakaba 1.1 */
4904 wakaba 1.6 NESTC := ['/'];
4905 wakaba 1.1 } // StartTag
4906    
4907     lexmode EndTag
4908     : standalone
4909     : extends => 'Name'
4910     : extends => 'S'
4911     {
4912     /*
4913     Tag close
4914     */
4915     TAGC := ['>'];
4916     } // EndTag
4917    
4918     lexmode AttributeValueLiteral_ {
4919     ERO := ['&'];
4920     CRO := ['&'] ['#'];
4921     HCRO := ['&'] ['#'] ['x'];
4922     } // AttributeValueLiteral_
4923    
4924     lexmode AttributeValueLiteral
4925     : standalone
4926     : extends => 'AttributeValueLiteral_'
4927     {
4928     LIT := ['"'];
4929 wakaba 1.3 STRING : value := [^'"' '&' '<']+;
4930 wakaba 1.1 } // AttributeValueLiteral
4931    
4932     lexmode AttributeValueLiteralA
4933     : standalone
4934     : extends => 'AttributeValueLiteral_'
4935     {
4936 wakaba 1.4 LITA := [U+0027];
4937 wakaba 1.3 STRING : value := [^U+0027 '&' '<']+;
4938 wakaba 1.1 } // AttributeValueLiteralA
4939 wakaba 1.11
4940     lexmode AttributeValueLiteralE
4941     : standalone
4942     : extends => 'AttributeValueLiteral_'
4943     {
4944     STRING : value := [^'&' '<']+;
4945     } // AttributeValueLiteralE
4946 wakaba 1.4
4947     lexmode EntityValue_ {
4948     PERO := ['%'];
4949     ERO := ['&'];
4950     CRO := ['&'] ['#'];
4951     HCRO := ['&'] ['#'] ['x'];
4952     } // EntityValue_
4953    
4954     lexmode EntityValue
4955     : standalone
4956     : extends => 'EntityValue_'
4957     {
4958     LIT := ['"'];
4959     STRING : value := [^'"' '&' '%']+;
4960     } // EntityValue
4961    
4962     lexmode EntityValueA
4963     : standalone
4964     : extends => 'EntityValue_'
4965     {
4966     LITA := [U+0027];
4967     STRING : value := [^U+0027 '&' '%']+;
4968     } // EntityValueA
4969    
4970     lexmode SystemLiteral
4971     : standalone
4972     {
4973     LIT := ['"'];
4974     ?default-token STRING : value;
4975     } // SystemLiteral
4976    
4977     lexmode SystemLiteralA
4978     : standalone
4979     {
4980     LITA := [U+0027];
4981     ?default-token STRING : value;
4982     } // SystemLiteralA
4983    
4984     lexmode DTD
4985     : standalone
4986     : extends => 'S'
4987     {
4988     /*
4989     Markup declaration open
4990     */
4991     MDO := ['<'] ['!'];
4992    
4993     /*
4994     Comment declaration open
4995     */
4996     CDO := ['<'] ['!'] ['-'] ['-'];
4997    
4998     /*
4999     Processing instruction open
5000     */
5001     PIO := ['<'] ['?'];
5002    
5003     /*
5004     Parameter entity reference open
5005     */
5006     PERO := ['%'];
5007    
5008     /*
5009     Declaration subset close
5010     */
5011     DSC := [']'];
5012    
5013     /*
5014     Contition section open
5015     */
5016     CSO := ['<'] ['!'] ['['];
5017     } // DTD
5018    
5019     /*
5020     Markup declaration scanning mode
5021    
5022     This mode is used to recognize |MDC| that terminates
5023     a comment declaration as well as the base |lexmode|
5024     for e.g. document type declaration scanning mode.
5025     */
5026     lexmode MarkupDeclaration
5027     : standalone
5028     : extends => 'Name'
5029     : extends => 'S'
5030     {
5031     /*
5032     Markup declaration close
5033     */
5034     MDC := ['>'];
5035    
5036     /*
5037     Literal open
5038     */
5039     LIT := ['"'];
5040    
5041     /*
5042     Alternative literal open
5043     */
5044     LITA := [U+0027];
5045    
5046     /*
5047     Parameter entity reference open
5048     */
5049     PERO := ['%'];
5050    
5051     /*
5052     Declaration subset open
5053     */
5054     DSO := ['['];
5055     } // MarkupDeclaration
5056    
5057     lexmode ElementDeclaration
5058     : standalone
5059     : extends => 'MarkupDeclaration'
5060     {
5061     /*
5062     Model group open
5063     */
5064     MGO := ['('];
5065    
5066     /*
5067     Model group close
5068     */
5069     MGC := [')'];
5070    
5071     /*
5072     Reserved name indicator
5073     */
5074     RNI := ['#'];
5075    
5076     /*
5077     Occurence indicators
5078     */
5079     OPT := ['?'];
5080     REP := ['*'];
5081     PLUS := ['+'];
5082    
5083     /*
5084     Connectors
5085     */
5086     OR := ['|'];
5087     SEQ := [','];
5088     } // ElementDeclaration
5089    
5090     lexmode AttlistDeclaration
5091     : standalone
5092     : extends => 'MarkupDeclaration'
5093     {
5094     /*
5095     Enumeration group open
5096     */
5097     EGO := ['('];
5098    
5099     /*
5100     Enumeration group close
5101     */
5102     EGC := [')'];
5103    
5104     /*
5105     Enumeration choice delimiter
5106     */
5107     OR := ['|'];
5108    
5109     /*
5110     Reserved name indicator
5111     */
5112     RNI := ['#'];
5113     } // AttlistDeclaration
5114    
5115     lexmode Enumeration
5116     : standalone
5117     : extends => 'Nmtoken'
5118     : extends => 'S'
5119     {
5120     /*
5121     Enumeration group close
5122     */
5123     EGC := [')'];
5124    
5125     /*
5126     Enumeration choice delimiter
5127     */
5128     OR := ['|'];
5129     } // Enumeration
5130    
5131 wakaba 1.1
5132     token-error default : default {
5133     lang:Perl {
5134 wakaba 1.3 my $location;
5135     __CODE{xp|get-location-from-token::
5136     $token => {$token},
5137     $result => {$location},
5138     }__;
5139     my $continue = __DOMCore:ERROR{xp|wf-syntax-error::
5140 wakaba 1.1 xp|error-token => {$token},
5141     DOMCore|location => {$location},
5142     }__;
5143     unless ($continue) {
5144 wakaba 1.27 __CODE{ParseError}__;
5145 wakaba 1.1 }
5146     }
5147     } // default
5148 wakaba 1.5
5149 wakaba 1.26 @ResourceDef:
5150     @@ForCheck: ManakaiDOM|ForClass
5151 wakaba 1.27 @@QName: ParseError
5152     @@rdf:type: DISPerl|BlockCode
5153     @@PerlDef:
5154     __DEEP{
5155     for (@{$self->{entity}}) {
5156     $_->{close_file}->();
5157     }
5158     }__;
5159     __EXCEPTION{DOMLS|PARSE_ERR}__;
5160    
5161     @ResourceDef:
5162     @@ForCheck: ManakaiDOM|ForClass
5163 wakaba 1.26 @@QName: checkNCName
5164     @@rdf:type: DISPerl|BlockCode
5165     @@PerlDef:
5166     if (($self->{xml_version} eq '1.0' and
5167     not <Code::DOMMain|testXML10Name:: $INPUT = $name>) or
5168     ($self->{xml_version} eq '1.1' and
5169     not <Code::DOMMain|testXML11Name:: $INPUT = $name>)) {
5170     my $__location;
5171     __CODE{xp|get-location-from-token::
5172     $token => {$token},
5173     $result => {$__location},
5174     }__;
5175     my $__continue = __c|ERROR{xp|wf-invalid-character-in-node-name::
5176     xp|error-token => {$token},
5177     c|location => {$__location},
5178     xp|name => {$name},
5179     infoset|version => {$self->{xml_version}},
5180     }__;
5181     unless ($__continue) {
5182 wakaba 1.27 __CODE{ParseError}__;
5183 wakaba 1.26 }
5184     } elsif (index ($name, ':') > -1) {
5185     my $__location;
5186     __CODE{xp|get-location-from-token::
5187     $token => {$token},
5188     $result => {$__location},
5189     }__;
5190     my $__continue = __c|ERROR{xp|nswf-legal-ncname::
5191     xp|error-token => {$token},
5192     c|location => {$__location},
5193     xp|name => {$name},
5194     infoset|version => {$self->{xml_version}},
5195     }__;
5196     unless ($__continue) {
5197 wakaba 1.27 __CODE{ParseError}__;
5198 wakaba 1.26 }
5199     }
5200    
5201     @ResourceDef:
5202     @@ForCheck: ManakaiDOM|ForClass
5203     @@QName: checkQName
5204     @@rdf:type: DISPerl|BlockCode
5205     @@PerlDef:
5206     if (($self->{xml_version} eq '1.0' and
5207     not <Code::DOMMain|testXML10Name:: $INPUT = $name>) or
5208     ($self->{xml_version} eq '1.1' and
5209     not <Code::DOMMain|testXML11Name:: $INPUT = $name>)) {
5210     my $__location;
5211     __CODE{xp|get-location-from-token::
5212     $token => {$token},
5213     $result => {$__location},
5214     }__;
5215     my $__continue = __c|ERROR{xp|wf-invalid-character-in-node-name::
5216     xp|error-token => {$token},
5217     c|location => {$__location},
5218     xp|name => {$name},
5219     infoset|version => {$self->{xml_version}},
5220     }__;
5221     unless ($__continue) {
5222 wakaba 1.27 __CODE{ParseError}__;
5223 wakaba 1.26 }
5224     } elsif (($self->{xml_version} eq '1.0' and
5225     not <Code::DOMMain|testXML10QName:: $INPUT = $name>) or
5226     ($self->{xml_version} eq '1.1' and
5227     not <Code::DOMMain|testXML11QName:: $INPUT = $name>)) {
5228     my $__location;
5229     __CODE{xp|get-location-from-token::
5230     $token => {$token},
5231     $result => {$__location},
5232     }__;
5233     my $__continue = __c|ERROR{xp|nswf-legal-qname::
5234     xp|error-token => {$token},
5235     c|location => {$__location},
5236     xp|name => {$name},
5237     infoset|version => {$self->{xml_version}},
5238     }__;
5239     unless ($__continue) {
5240 wakaba 1.27 __CODE{ParseError}__;
5241 wakaba 1.26 }
5242     }
5243    
5244    
5245 wakaba 1.5 @XMLTests:
5246     @@XMLTest:
5247 wakaba 1.15 @@@QName: xp.char.xml10.test
5248     @@@DEnt:
5249     @@@@test:value:
5250     <?xml version="1.0"?>
5251     <p>$u0009$u000A$u000D$u0020$uD7FF$uE000$uFFFD$U00010000$U0010FFFF</p>
5252     @@@test:domTree:
5253     document {
5254     xml-version: '1.0';
5255     element {
5256     text-content: U+0009 U+000A U+000A U+0020 U+D7FF
5257     U+E000 U+FFFD U+10000 U+10FFFF;
5258     }
5259     }
5260     @@XMLTest:
5261     @@@QName: xp.char.xml11.test
5262     @@@DEnt:
5263     @@@@test:value:
5264     <?xml version="1.1"?>
5265     <p>$u0009$u000A$u000D$u0020$uD7FF$uE000$uFFFD$U00010000$U0010FFFF</p>
5266     @@@test:domTree:
5267     document {
5268     xml-version: '1.1';
5269     element {
5270     text-content: U+0009 U+000A U+000A U+0020 U+D7FF
5271     U+E000 U+FFFD U+10000 U+10FFFF;
5272     }
5273     }
5274     @@XMLTest:
5275     @@@QName: xp.char.xml10.c0.test
5276     @@@DEnt:
5277     @@@@test:value:
5278     <?xml version="1.0"?>
5279     <p>$u0000$u0001$u0002$u0003$u0004$u0005$u0006$u0007$u0008$u000B$
5280     $u000C$u000E$u000F$u0010$u0011$u0012$u0013$u0014$u0015$u0016$
5281     $u0017$u0018$u0019$u001A$u001B$u001C$u001D$u001E$u001F</p>
5282     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 4); } /* U+0000 */
5283     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 5); } /* U+0001 */
5284     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 6); } /* U+0002 */
5285     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 7); } /* U+0003 */
5286     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 8); } /* U+0004 */
5287     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 9); } /* U+0005 */
5288     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 10); } /* U+0006 */
5289     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 11); } /* U+0007 */
5290     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 12); } /* U+0008 */
5291     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 13); } /* U+000B */
5292     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 14); } /* U+000C */
5293     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 15); } /* U+000E */
5294     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 16); } /* U+000F */
5295     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 17); } /* U+0010 */
5296     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 18); } /* U+0011 */
5297     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 19); } /* U+0012 */
5298     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 20); } /* U+0013 */
5299     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 21); } /* U+0014 */
5300     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 22); } /* U+0015 */
5301     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 23); } /* U+0016 */
5302     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 24); } /* U+0017 */
5303     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 25); } /* U+0018 */
5304     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 26); } /* U+0019 */
5305     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 27); } /* U+001A */
5306     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 28); } /* U+001B */
5307     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 29); } /* U+001C */
5308     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 30); } /* U+001D */
5309     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 31); } /* U+001E */
5310     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 32); } /* U+001F */
5311     @@XMLTest:
5312     @@@QName: xp.char.xml11.c0.test
5313     @@@DEnt:
5314     @@@@test:value:
5315     <?xml version="1.1"?>
5316     <p>$u0000$u0001$u0002$u0003$u0004$u0005$u0006$u0007$u0008$u000B$
5317     $u000C$u000E$u000F$u0010$u0011$u0012$u0013$u0014$u0015$u0016$
5318     $u0017$u0018$u0019$u001A$u001B$u001C$u001D$u001E$u001F</p>
5319     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 4); } /* U+0000 */
5320     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 5); } /* U+0001 */
5321     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 6); } /* U+0002 */
5322     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 7); } /* U+0003 */
5323     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 8); } /* U+0004 */
5324     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 9); } /* U+0005 */
5325     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 10); } /* U+0006 */
5326     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 11); } /* U+0007 */
5327     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 12); } /* U+0008 */
5328     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 13); } /* U+000B */
5329     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 14); } /* U+000C */
5330     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 15); } /* U+000E */
5331     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 16); } /* U+000F */
5332     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 17); } /* U+0010 */
5333     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 18); } /* U+0011 */
5334     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 19); } /* U+0012 */
5335     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 20); } /* U+0013 */
5336     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 21); } /* U+0014 */
5337     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 22); } /* U+0015 */
5338     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 23); } /* U+0016 */
5339     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 24); } /* U+0017 */
5340     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 25); } /* U+0018 */
5341     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 26); } /* U+0019 */
5342     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 27); } /* U+001A */
5343     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 28); } /* U+001B */
5344     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 29); } /* U+001C */
5345     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 30); } /* U+001D */
5346     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 31); } /* U+001E */
5347     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 32); } /* U+001F */
5348     @@XMLTest:
5349     @@@QName: xp.char.xml10.c1.test
5350     @@@DEnt:
5351     @@@@test:value:
5352     <?xml version="1.0"?>
5353     <p>$u007F$u0080$u0081$u0082$u0083$u0084$u0086$u0087$u0088$
5354     $u0089$u008A$u008B$u008C$
5355     $u008D$u008E$u008F$u0090$u0091$u0092$u0093$u0094$u0095$u0096$
5356     $u0097$u0098$u0099$u009A$u009B$u009C$u009D$u009E$u009F$u0085</p>
5357     @@@test:domTree:
5358     document {
5359     xml-version: '1.0';
5360     element {
5361     text-content: U+007F U+0080 U+0081 U+0082 U+0083 U+0084 U+0086
5362     U+0087 U+0088 U+0089 U+008A U+008B U+008C U+008D
5363     U+008E U+008F U+0090 U+0091 U+0092 U+0093 U+0094
5364     U+0095 U+0096 U+0097 U+0098 U+0099 U+009A U+009B
5365     U+009C U+009D U+009E U+009F U+0085;
5366     }
5367     }
5368     @@XMLTest:
5369     @@@QName: xp.char.xml11.c1.test
5370     @@@DEnt:
5371     @@@@test:value:
5372     <?xml version="1.1"?>
5373     <p>$u007F$u0080$u0081$u0082$u0083$u0084$u0086$u0087$u0088$
5374     $u0089$u008A$u008B$u008C$
5375     $u008D$u008E$u008F$u0090$u0091$u0092$u0093$u0094$u0095$u0096$
5376     $u0097$u0098$u0099$u009A$u009B$u009C$u009D$u009E$u009F$u0085</p>
5377     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 4); } /* U+007F */
5378     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 5); } /* U+0080 */
5379     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 6); } /* U+0081 */
5380     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 7); } /* U+0082 */
5381     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 8); } /* U+0083 */
5382     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 9); } /* U+0084 */
5383     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 10); } /* U+0086 */
5384     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 11); } /* U+0087 */
5385     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 12); } /* U+0088 */
5386     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 13); } /* U+0089 */
5387     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 14); } /* U+008A */
5388     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 15); } /* U+008B */
5389     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 16); } /* U+008C */
5390     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 17); } /* U+008D */
5391     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 18); } /* U+008E */
5392     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 19); } /* U+008F */
5393     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 20); } /* U+0090 */
5394     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 21); } /* U+0091 */
5395     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 22); } /* U+0092 */
5396     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 23); } /* U+0093 */
5397     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 24); } /* U+0094 */
5398     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 25); } /* U+0095 */
5399     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 26); } /* U+0096 */
5400     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 27); } /* U+0097 */
5401     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 28); } /* U+0098 */
5402     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 29); } /* U+0099 */
5403     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 30); } /* U+009A */
5404     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 31); } /* U+009B */
5405     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 32); } /* U+009C */
5406     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 33); } /* U+009D */
5407     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 34); } /* U+009E */
5408     @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 35); } /* U+009F */
5409    
5410     @@XMLTest:
5411 wakaba 1.27 @@@QName: xp.c0.internal.entity.xml11.1.test
5412     @@@DEnt:
5413     @@@@test:value:
5414     <?xml version="1.1"?>
5415     <!DOCTYPE a [
5416     <!ENTITY e "&#x01;&#x02;&#x03;&#x04;&#x05;&#x06;&#x07;$
5417     &#x08;&#x09;&#x0A;&#x0B;&#x0C;&#x0D;&#x0E;&#x0F;$
5418     &#x10;&#x11;&#x12;&#x13;&#x14;&#x15;&#x16;&#x17;$
5419     &#x18;&#x19;&#x1A;&#x1B;&#x1C;&#x1D;&#x1E;&#x1F;">
5420     ]><a/>
5421     @@@test:domTree:
5422     document {
5423     document-type {
5424     general-entity {
5425     node-name: 'e';
5426     text-content: U+0001 U+0002 U+0003 U+0004 U+0005
5427     U+0006 U+0007 U+0008 U+0009 U+000A U+000B
5428     U+000C U+000D U+000E U+000F
5429     U+0010 U+0011 U+0012 U+0013 U+0014 U+0015
5430     U+0016 U+0017 U+0018 U+0019 U+001A U+001B
5431     U+001C U+001D U+001E U+001F;
5432     }
5433     }
5434     element { }
5435     }
5436     @@XMLTest:
5437     @@@QName: xp.c1.internal.entity.xml11.1.test
5438     @@@DEnt:
5439     @@@@test:value:
5440     <?xml version="1.1"?>
5441     <!DOCTYPE a [
5442     <!ENTITY e "&#x80;&#x81;&#x82;&#x83;&#x84;&#x85;&#x86;&#x87;$
5443     &#x88;&#x89;&#x8A;&#x8B;&#x8C;&#x8D;&#x8E;&#x8F;$
5444     &#x90;&#x91;&#x92;&#x93;&#x94;&#x95;&#x96;&#x97;$
5445     &#x98;&#x99;&#x9A;&#x9B;&#x9C;&#x9D;&#x9E;&#x9F;&#x7F;">
5446     ]><a/>
5447     @@@test:domTree:
5448     document {
5449     document-type {
5450     general-entity {
5451     node-name: 'e';
5452     text-content: U+0080 U+0081 U+0082 U+0083 U+0084 U+0085
5453     U+0086 U+0087 U+0088 U+0089 U+008A U+008B
5454     U+008C U+008D U+008E U+008F
5455     U+0090 U+0091 U+0092 U+0093 U+0094 U+0095
5456     U+0096 U+0097 U+0098 U+0099 U+009A U+009B
5457     U+009C U+009D U+009E U+009F U+007F;
5458     }
5459     }
5460     element { }
5461     }
5462    
5463     @@XMLTest:
5464 wakaba 1.12 @@@QName: xp.syntax.empty.test
5465     @@@DEnt:
5466     @@@@test:value: \
5467     @@@c:erred:
5468     <[[xp:wf-syntax-error]]> { (1, 1); }
5469     @@XMLTest:
5470     @@@QName: xp.syntax.space.test
5471     @@@DEnt:
5472 wakaba 1.13 @@@@test:value: \
5473 wakaba 1.12 @@@c:erred:
5474     <[[xp:wf-syntax-error]]> { (1, 4); }
5475     @@XMLTest:
5476     @@@QName: xp.syntax.newlines.test
5477     @@@DEnt:
5478     @@@@test:value:
5479     \
5480     \
5481     \
5482     @@@c:erred:
5483     <[[xp:wf-syntax-error]]> { (3, 1); }
5484    
5485     @@XMLTest:
5486 wakaba 1.6 @@@QName: xp.only.docel.test
5487 wakaba 1.5 @@@DEnt:
5488     @@@@test:value:
5489     <p></p>
5490     @@@test:domTree:
5491     document {
5492     xml-version: '1.0';
5493 wakaba 1.6 xml-encoding: null;
5494     xml-standalone: false;
5495     element {
5496     namespace-uri: null;
5497     prefix: null;
5498     local-name: 'p';
5499     text-content: '';
5500     }
5501     }
5502     @@XMLTest:
5503     @@@QName: xp.only.docel.emptyelemtag.test
5504     @@@DEnt:
5505     @@@@test:value:
5506     <p/>
5507     @@@test:domTree:
5508     document {
5509     xml-version: '1.0';
5510     xml-encoding: null;
5511     xml-standalone: false;
5512 wakaba 1.5 element {
5513     namespace-uri: null;
5514     prefix: null;
5515     local-name: 'p';
5516     text-content: '';
5517     }
5518     }
5519 wakaba 1.15 @@XMLTest:
5520     @@@QName: xp.root.s.1.test
5521     @@@DEnt:
5522     @@@@test:value:
5523     <?xml version="1.0"?>$u0020$u000D$u000A$u0009
5524     <p></p>
5525     @@@test:domTree:
5526     document {
5527     element { }
5528     }
5529    
5530     @@XMLTest:
5531     @@@QName: xp.Name.1.test
5532     @@@DEnt:
5533     @@@@test:value: <name/>
5534     @@@test:domTree:
5535     document {
5536     element {
5537     node-name: 'name';
5538     }
5539     }
5540     @@XMLTest:
5541     @@@QName: xp.Name.2.test
5542     @@@DEnt:
5543     @@@@test:value: <name0/>
5544     @@@test:domTree:
5545     document {
5546     element {
5547     node-name: 'name0';
5548     }
5549     }
5550     @@enImplNote:
5551     @@@ddid: xml11name
5552     @@@@:
5553     {TODO:: XML 1.1 Name tests required
5554     }
5555    
5556     @@XMLTest:
5557     @@@QName: xp.content.mse.1.test
5558     @@@DEnt:
5559     @@@@test:value:
5560     <p>]]></p>
5561     @@@c:erred:
5562     <[[xp|wf-syntax-error]]> { (1, 4)..(1, 6); }
5563     @@XMLTest:
5564     @@@QName: xp.content.mse.2.test
5565     @@@DEnt:
5566     @@@@test:value:
5567     <p>aaa]]>bbb</p>
5568     @@@c:erred:
5569     <[[xp|wf-syntax-error]]> { (1, 7)..(1, 9); }
5570    
5571     @@XMLTest:
5572     @@@QName: xp.root.comment.1.test
5573     @@@DEnt:
5574     @@@@test:value:
5575     <!--comment data-->
5576     <p/>
5577     @@@test:domTree:
5578     document {
5579     comment {
5580     data: 'comment data';
5581     }
5582     element { }
5583     }
5584     @@XMLTest:
5585     @@@QName: xp.root.comment.2.test
5586     @@@DEnt:
5587     @@@@test:value:
5588     <!---->
5589     <p/>
5590     @@@test:domTree:
5591     document {
5592     comment {
5593     data: '';
5594     }
5595     element { }
5596     }
5597     @@XMLTest:
5598     @@@QName: xp.root.after.pi.comment.1.test
5599     @@@DEnt:
5600     @@@@test:value:
5601     <?pi?>
5602     <!--comment data-->
5603     <p/>
5604     @@@test:domTree:
5605     document {
5606     pi { }
5607     comment {
5608     data: 'comment data';
5609     }
5610     element { }
5611     }
5612     @@XMLTest:
5613     @@@QName: xp.root.after.pi.comment.2.test
5614     @@@DEnt:
5615     @@@@test:value:
5616     <?pi?>
5617     <!---->
5618     <p/>
5619     @@@test:domTree:
5620     document {
5621     pi { }
5622     comment {
5623     data: '';
5624     }
5625     element { }
5626     }
5627     @@XMLTest:
5628     @@@QName: xp.root.after.element.comment.1.test
5629     @@@DEnt:
5630     @@@@test:value:
5631     <p/>
5632     <!--comment data-->
5633     @@@test:domTree:
5634     document {
5635     element { }
5636     comment {
5637     data: 'comment data';
5638     }
5639     }
5640     @@XMLTest:
5641     @@@QName: xp.root.after.element.comment.2.test
5642     @@@DEnt:
5643     @@@@test:value:
5644     <p/>
5645     <!---->
5646     @@@test:domTree:
5647     document {
5648     element { }
5649     comment {
5650     data: '';
5651     }
5652     }
5653     @@XMLTest:
5654     @@@QName: xp.doctype.intsubset.comment.1.test
5655     @@@DEnt:
5656     @@@@test:value:
5657     <!DOCTYPE a [
5658     <!--comment data-->
5659     ]>
5660     <p/>
5661     @@@test:domTree:
5662     document {
5663     document-type { }
5664     element { }
5665     }
5666     @@XMLTest:
5667     @@@QName: xp.doctype.intsubset.comment.2.test
5668     @@@DEnt:
5669     @@@@test:value:
5670     <!DOCTYPE a [
5671     <!---->
5672     ]>
5673     <p/>
5674     @@@test:domTree:
5675     document {
5676     document-type { }
5677     element { }
5678     }
5679     @@XMLTest:
5680     @@@QName: xp.doctype.intsubset.comment.3.test
5681     @@@DEnt:
5682     @@@@test:value:
5683     <!DOCTYPE a [
5684     <?pi?>
5685     <!---->
5686     ]>
5687     <p/>
5688     @@@test:domTree:
5689     document {
5690     document-type {
5691     pi { }
5692     }
5693     element { }
5694     }
5695     @@XMLTest:
5696     @@@QName: xp.content.comment.1.test
5697     @@@DEnt:
5698     @@@@test:value:
5699     <p><!--comment data--></p>
5700     @@@test:domTree:
5701     document {
5702     element {
5703     comment {
5704     data: 'comment data';
5705     }
5706     }
5707     }
5708     @@XMLTest:
5709     @@@QName: xp.content.comment.2.test
5710     @@@DEnt:
5711     @@@@test:value:
5712     <p><!----></p>
5713     @@@test:domTree:
5714     document {
5715     element {
5716     comment {
5717     data: '';
5718     }
5719     }
5720     }
5721     @@XMLTest:
5722     @@@QName: xp.content.comment.3.test
5723     @@@DEnt:
5724     @@@@test:value:
5725     <p>aaaaa<!---->bbbbb</p>
5726     @@@test:domTree:
5727     document {
5728     element {
5729     text {
5730     data: 'aaaaa';
5731     }
5732     comment {
5733     data: '';
5734     }
5735     text {
5736     data: 'bbbbb';
5737     }
5738     }
5739     }
5740     @@XMLTest:
5741     @@@QName: xp.content.comment.--.1.test
5742     @@@DEnt:
5743     @@@@test:value:
5744     <p><!--data--data--></p>
5745     @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 12)..(1, 17); }
5746     @@XMLTest:
5747     @@@QName: xp.content.comment.---gt.test
5748     @@@DEnt:
5749     @@@@test:value:
5750     <p><!--data---></p>
5751     @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 12)..(1, 15); }
5752 wakaba 1.13
5753     @@XMLTest:
5754     @@@QName: xp.xmldecl.version.1.0.test
5755     @@@DEnt:
5756     @@@@test:value:
5757     <?xml version="1.0"?>
5758     <p></p>
5759     @@@test:domTree:
5760     document {
5761     xml-version: '1.0';
5762     xml-encoding: null;
5763     xml-standalone: false;
5764     element { }
5765     }
5766     @@XMLTest:
5767     @@@QName: xp.xmldecl.version.1.0.lita.test
5768     @@@DEnt:
5769     @@@@test:value:
5770     <?xml version='1.0'?>
5771     <p></p>
5772     @@@test:domTree:
5773     document {
5774     xml-version: '1.0';
5775     xml-encoding: null;
5776     xml-standalone: false;
5777     element { }
5778     }
5779     @@XMLTest:
5780     @@@QName: xp.xmldecl.version.1.0.s.test
5781     @@@DEnt:
5782     @@@@test:value:
5783     <?xml version = "1.0" ?>
5784     <p></p>
5785     @@@test:domTree:
5786     document {
5787     xml-version: '1.0';
5788     xml-encoding: null;
5789     xml-standalone: false;
5790     element { }
5791     }
5792     @@XMLTest:
5793     @@@QName: xp.xmldecl.version.1.1.test
5794     @@@DEnt:
5795     @@@@test:value:
5796     <?xml version="1.1"?>
5797     <p></p>
5798     @@@test:domTree:
5799     document {
5800     xml-version: '1.1';
5801     xml-encoding: null;
5802     xml-standalone: false;
5803     element { }
5804     }
5805    
5806     @@XMLTest:
5807     @@@QName: xp.xmldecl.version.1.0.encoding.usascii.test
5808     @@@DEnt:
5809     @@@@test:value:
5810     <?xml version="1.0" encoding="US-ascii"?>
5811     <p></p>
5812     @@@test:domTree:
5813     document {
5814     xml-version: '1.0';
5815     xml-encoding: 'US-ascii';
5816     xml-standalone: false;
5817     element { }
5818     }
5819     @@XMLTest:
5820     @@@QName: xp.xmldecl.version.1.0.encoding.usascii.lita.test
5821     @@@DEnt:
5822     @@@@test:value:
5823     <?xml version="1.0" encoding='US-ascii'?>
5824     <p></p>
5825     @@@test:domTree:
5826     document {
5827     xml-version: '1.0';
5828     xml-encoding: 'US-ascii';
5829     xml-standalone: false;
5830     element { }
5831     }
5832     @@XMLTest:
5833     @@@QName: xp.xmldecl.version.1.0.encoding.usascii.s.test
5834     @@@DEnt:
5835     @@@@test:value:
5836     <?xml version="1.0" encoding = "US-ascii" ?>
5837     <p></p>
5838     @@@test:domTree:
5839     document {
5840     xml-version: '1.0';
5841     xml-encoding: 'US-ascii';
5842     xml-standalone: false;
5843     element { }
5844     }
5845    
5846     @@XMLTest:
5847     @@@QName: xp.xmldecl.version.1.0.encoding.usascii.standalone.yes.test
5848     @@@DEnt:
5849     @@@@test:value:
5850     <?xml version="1.0" encoding="us-ascii" standalone="yes"?>
5851     <p></p>
5852     @@@test:domTree:
5853     document {
5854     xml-version: '1.0';
5855     xml-encoding: 'us-ascii';
5856     xml-standalone: true;
5857     element { }
5858     }
5859     @@XMLTest:
5860     @@@QName: xp.xmldecl.version.1.0.encoding.usascii.standalone.no.test
5861     @@@DEnt:
5862     @@@@test:value:
5863     <?xml version="1.0" encoding="us-ascii" standalone="no"?>
5864     <p></p>
5865     @@@test:domTree:
5866     document {
5867     xml-version: '1.0';
5868     xml-encoding: 'us-ascii';
5869     xml-standalone: false;
5870     element { }
5871     }
5872     @@XMLTest:
5873     @@@QName: xp.xmldecl.version.1.0.encoding.usascii.standalone.yes.lita.test
5874     @@@DEnt:
5875     @@@@test:value:
5876     <?xml version="1.0" encoding="us-ascii" standalone='yes'?>
5877     <p></p>
5878     @@@test:domTree:
5879     document {
5880     xml-version: '1.0';
5881     xml-encoding: 'us-ascii';
5882     xml-standalone: true;
5883     element { }
5884     }
5885     @@XMLTest:
5886     @@@QName: xp.xmldecl.version.1.0.encoding.usascii.standalone.yes.s.test
5887     @@@DEnt:
5888     @@@@test:value:
5889     <?xml version="1.0" encoding="us-ascii" standalone = "yes" ?>
5890     <p></p>
5891     @@@test:domTree:
5892     document {
5893     xml-version: '1.0';
5894     xml-encoding: 'us-ascii';
5895     xml-standalone: true;
5896     element { }
5897     }
5898 wakaba 1.14 @@XMLTest:
5899     @@@QName: xp.xmldecl.no.encoding.but.standalone.attr.test
5900     @@@DEnt:
5901     @@@@test:value:
5902     <?xml version="1.0" standalone="yes"?>
5903     <p></p>
5904     @@@test:domTree:
5905     document {
5906     xml-version: '1.0';
5907     xml-encoding: null;
5908     xml-standalone: true;
5909     element { }
5910     }
5911     @@XMLTest:
5912     @@@QName: xp.xmldecl.encoding.encname.test
5913     @@@DEnt:
5914     @@@@test:value:
5915     <?xml version="1.0" encoding="a-._01-"?>
5916     <p></p>
5917     @@@test:domTree:
5918     document {
5919     xml-version: '1.0';
5920     xml-encoding: 'a-._01-';
5921     xml-standalone: false;
5922     element { }
5923     }
5924    
5925     @@XMLTest:
5926     @@@QName: xp.xmldecl.no.s.no.attr.test
5927     @@@DEnt:
5928     @@@@test:value:
5929     <?xml?>
5930     <p></p>
5931     @@@c:erred:
5932 wakaba 1.16 <[[xp:wf-syntax-error]]> { (1, 1)..(1, 7); }
5933 wakaba 1.14 @@XMLTest:
5934     @@@QName: xp.xmldecl.s.no.attr.test
5935     @@@DEnt:
5936     @@@@test:value:
5937     <?xml ?>
5938     <p></p>
5939     @@@c:erred:
5940     <[[xp:wf-syntax-error]]> { (1, 8)..(1, 9); }
5941     @@XMLTest:
5942     @@@QName: xp.xmldecl.unknown.attr.test
5943     @@@DEnt:
5944     @@@@test:value:
5945     <?xml unknown="value"?>
5946     <p></p>
5947     @@@c:erred:
5948     <[[xp:wf-syntax-error]]> { (1, 8)..(1, 22); }
5949     @@XMLTest:
5950     @@@QName: xp.xmldecl.version.unknown.attr.test
5951     @@@DEnt:
5952     @@@@test:value:
5953     <?xml version="1.0" unknown="value"?>
5954     <p></p>
5955     @@@c:erred:
5956     <[[xp:wf-syntax-error]]> { (1, 21)..(1, 35); }
5957     @@XMLTest:
5958     @@@QName: xp.xmldecl.version.encoding.unknown.attr.test
5959     @@@DEnt:
5960     @@@@test:value:
5961     <?xml version="1.0" encoding="us-ascii" unknown="value"?>
5962     <p></p>
5963     @@@c:erred:
5964     <[[xp:wf-syntax-error]]> { (1, 41)..(1, 55); }
5965     @@XMLTest:
5966     @@@QName: xp.xmldecl.version.encoding.standalone.unknown.attr.test
5967     @@@DEnt:
5968     @@@@test:value:
5969     <?xml version="1.0" encoding="us-ascii" standalone="yes"
5970     unknown="value"?>
5971     <p></p>
5972     @@@c:erred:
5973     <[[xp:wf-syntax-error]]> { (2, 1)..(2, 15); }
5974     @@XMLTest:
5975     @@@QName: xp.xmldecl.no.version.but.encoding.attr.test
5976     @@@DEnt:
5977     @@@@test:value:
5978     <?xml encoding="us-ascii"?>
5979     <p></p>
5980     @@@c:erred:
5981     <[[xp:wf-syntax-error]]> { (1, 7)..(1, 25); }
5982     @@XMLTest:
5983     @@@QName: xp.xmldecl.no.version.but.standalone.attr.test
5984     @@@DEnt:
5985     @@@@test:value:
5986     <?xml standalone="yes"?>
5987     <p></p>
5988     @@@c:erred:
5989     <[[xp:wf-syntax-error]]> { (1, 7)..(1, 24); }
5990     @@XMLTest:
5991     @@@QName: xp.xmldecl.version.unsupported.test
5992     @@@DEnt:
5993     @@@@test:value:
5994     <?xml version="1.2"?>
5995     <p></p>
5996     @@@c:erred:
5997     <[[xp:wf-unsupported-xml-version]]> { (1, 7)..(1, 19); }
5998     @@XMLTest:
5999     @@@QName: xp.xmldecl.version.unsupported.2.test
6000     @@@DEnt:
6001     @@@@test:value:
6002     <?xml version=" 1.0 "?>
6003     <p></p>
6004     @@@c:erred:
6005     <[[xp:wf-unsupported-xml-version]]> { (1, 7)..(1, 21); }
6006     @@XMLTest:
6007     @@@QName: xp.xmldecl.version.unsupported.3.test
6008     @@@DEnt:
6009     @@@@test:value:
6010     <?xml version="01.00"?>
6011     <p></p>
6012     @@@c:erred:
6013     <[[xp:wf-unsupported-xml-version]]> { (1, 7)..(1, 21); }
6014     @@XMLTest:
6015     @@@QName: xp.xmldecl.encoding.malformed.1.test
6016     @@@DEnt:
6017     @@@@test:value:
6018     <?xml version="1.0" encoding="0088"?>
6019     <p></p>
6020     @@@c:erred:
6021     <[[xp:wf-malformed-enc-name]]> { (1, 21)..(1, 35); }
6022     @@XMLTest:
6023     @@@QName: xp.xmldecl.encoding.malformed.2.test
6024     @@@DEnt:
6025     @@@@test:value:
6026     <?xml version="1.0" encoding="D.V.D!"?>
6027     <p></p>
6028     @@@c:erred:
6029     <[[xp:wf-malformed-enc-name]]> { (1, 21)..(1, 38); }
6030     @@XMLTest:
6031     @@@QName: xp.xmldecl.standalone.malformed.1.test
6032     @@@DEnt:
6033     @@@@test:value:
6034     <?xml version="1.0" standalone="true"?>
6035     <p></p>
6036     @@@c:erred:
6037     <[[xp:wf-malformed-xml-standalone]]> { (1, 21)..(1, 38); }
6038     @@XMLTest:
6039     @@@QName: xp.xmldecl.standalone.malformed.2.test
6040     @@@DEnt:
6041     @@@@test:value:
6042     <?xml version="1.0" standalone="YES"?>
6043     <p></p>
6044     @@@c:erred:
6045     <[[xp:wf-malformed-xml-standalone]]> { (1, 21)..(1, 37); }
6046     @@XMLTest:
6047     @@@QName: xp.xmldecl.standalone.malformed.3.test
6048     @@@DEnt:
6049     @@@@test:value:
6050     <?xml version="1.0" standalone="no "?>
6051     <p></p>
6052     @@@c:erred:
6053     <[[xp:wf-malformed-xml-standalone]]> { (1, 21)..(1, 38); }
6054 wakaba 1.6
6055     @@XMLTest:
6056 wakaba 1.14 @@@QName: xp.no-xmldecl.xml...-pi.test
6057     @@@DEnt:
6058     @@@@test:value:
6059     <?xmldeclaration?>
6060     <a></a>
6061     @@@test:domTree:
6062     document {
6063     pi {
6064     node-name: 'xmldeclaration';
6065     node-value: '';
6066     }
6067     element { }
6068     }
6069     @@XMLTest:
6070     @@@QName: xp.no-xmldecl.xml...-pi.after.document.element.test
6071     @@@DEnt:
6072     @@@@test:value:
6073     <a></a>
6074     <?xmldeclaration?>
6075     @@@test:domTree:
6076     document {
6077     element { }
6078     pi {
6079     node-name: 'xmldeclaration';
6080     node-value: '';
6081     }
6082     }
6083     @@XMLTest:
6084     @@@QName: xp.no-xmldecl.xml...-pi.in.document.element.test
6085     @@@DEnt:
6086     @@@@test:value:
6087     <a>
6088     <?xmldeclaration?>
6089     </a>
6090     @@@test:domTree:
6091     document {
6092     element {
6093     text { }
6094     pi {
6095     node-name: 'xmldeclaration';
6096     node-value: '';
6097     }
6098     text { }
6099     }
6100     }
6101     @@XMLTest:
6102     @@@QName: xp.no-xmldecl.xml...-pi.in.doctype.test
6103     @@@DEnt:
6104     @@@@test:value:
6105     <!DOCTYPE a [
6106     <?xmldeclaration?>
6107     ]>
6108     <a></a>
6109     @@@test:domTree:
6110     document {
6111     document-type {
6112     pi {
6113     node-name: 'xmldeclaration';
6114     node-value: '';
6115     }
6116     }
6117     element { }
6118     }
6119    
6120     @@XMLTest:
6121     @@@QName: xp.XMLdecl.test
6122     @@@DEnt:
6123     @@@@test:value:
6124     <?XML version="1.0"?>
6125     <p></p>
6126     @@@c:erred:
6127     <[[xp:wf-pi-target-is-xml]]> { (1, 1)..(1, 5); }
6128     @@XMLTest:
6129     @@@QName: xp.Xmldecl.test
6130     @@@DEnt:
6131     @@@@test:value:
6132     <?Xml version="1.0"?>
6133     <p></p>
6134     @@@c:erred:
6135     <[[xp:wf-pi-target-is-xml]]> { (1, 1)..(1, 5); }
6136     @@XMLTest:
6137     @@@QName: xp.xmldecl.after.document.element.empty.test
6138     @@@DEnt:
6139     @@@@test:value:
6140     <p></p>
6141     <?xml?>
6142     @@@c:erred:
6143     <[[xp:wf-pi-target-is-xml]]> { (2, 1)..(2, 5); }
6144     @@XMLTest:
6145     @@@QName: xp.xmldecl.after.document.element.test
6146     @@@DEnt:
6147     @@@@test:value:
6148     <p></p>
6149     <?xml version="1.0"?>
6150     @@@c:erred:
6151     <[[xp:wf-pi-target-is-xml]]> { (2, 1)..(2, 5); }
6152     @@XMLTest:
6153     @@@QName: xp.xmldecl.in.element.empty.test
6154     @@@DEnt:
6155     @@@@test:value:
6156     <p>
6157     <?xml?>
6158     </p>
6159     @@@c:erred:
6160     <[[xp:wf-pi-target-is-xml]]> { (2, 1)..(2, 5); }
6161     @@XMLTest:
6162     @@@QName: xp.xmldecl.in.element.test
6163     @@@DEnt:
6164     @@@@test:value:
6165     <p>
6166     <?xml version="1.0"?>
6167     </p>
6168     @@@c:erred:
6169     <[[xp:wf-pi-target-is-xml]]> { (2, 1)..(2, 5); }
6170     @@XMLTest:
6171     @@@QName: xp.xmldecl.after.comment.test
6172     @@@DEnt:
6173     @@@@test:value:
6174     <!---->
6175     <?xml version="1.0"?>
6176     <p></p>
6177     @@@c:erred:
6178     <[[xp:wf-pi-target-is-xml]]> { (2, 1)..(2, 5); }
6179     @@XMLTest:
6180     @@@QName: xp.xmldecl.after.comment.empty.test
6181     @@@DEnt:
6182     @@@@test:value:
6183     <!---->
6184     <?xml?>
6185     <p></p>
6186     @@@c:erred:
6187     <[[xp:wf-pi-target-is-xml]]> { (2, 1)..(2, 5); }
6188     @@XMLTest:
6189     @@@QName: xp.xmldecl.after.pi.test
6190     @@@DEnt:
6191     @@@@test:value:
6192     <?xml-declaration?>
6193     <?xml version="1.0"?>
6194     <p></p>
6195     @@@c:erred:
6196     <[[xp:wf-pi-target-is-xml]]> { (2, 1)..(2, 5); }
6197     @@XMLTest:
6198     @@@QName: xp.xmldecl.after.pi.empty.test
6199     @@@DEnt:
6200     @@@@test:value:
6201     <?xml-declaration?>
6202     <?xml?>
6203     <p></p>
6204     @@@c:erred:
6205     <[[xp:wf-pi-target-is-xml]]> { (2, 1)..(2, 5); }
6206     @@XMLTest:
6207 wakaba 1.16 @@@QName: xp.xmldecl.after.pi.2.test
6208     @@@DEnt:
6209     @@@@test:value:
6210     <?declaration?>
6211     <?xml version="1.0"?>
6212     <p></p>
6213     @@@c:erred:
6214     <[[xp:wf-pi-target-is-xml]]> { (2, 1)..(2, 5); }
6215     @@XMLTest:
6216     @@@QName: xp.xmldecl.after.pi.empty.2.test
6217     @@@DEnt:
6218     @@@@test:value:
6219     <?declaration?>
6220     <?xml?>
6221     <p></p>
6222     @@@c:erred:
6223     <[[xp:wf-pi-target-is-xml]]> { (2, 1)..(2, 5); }
6224     @@XMLTest:
6225 wakaba 1.14 @@@QName: xp.xmldecl.after.doctype.test
6226     @@@DEnt:
6227     @@@@test:value:
6228     <!DOCTYPE a>
6229     <?xml version="1.0"?>
6230     <p></p>
6231     @@@c:erred:
6232     <[[xp:wf-pi-target-is-xml]]> { (2, 1)..(2, 5); }
6233     @@XMLTest:
6234     @@@QName: xp.xmldecl.after.doctype.empty.test
6235     @@@DEnt:
6236     @@@@test:value:
6237     <!DOCTYPE a>
6238     <?xml?>
6239     <p></p>
6240     @@@c:erred:
6241     <[[xp:wf-pi-target-is-xml]]> { (2, 1)..(2, 5); }
6242     @@XMLTest:
6243     @@@QName: xp.xmldecl.in.doctype.test
6244     @@@DEnt:
6245     @@@@test:value:
6246     <!DOCTYPE a [
6247     <?xml version="1.0"?>
6248     ]>
6249     <p></p>
6250     @@@c:erred:
6251     <[[xp:wf-pi-target-is-xml]]> { (2, 1)..(2, 5); }
6252     @@XMLTest:
6253     @@@QName: xp.xmldecl.in.doctype.empty.test
6254     @@@DEnt:
6255     @@@@test:value:
6256     <!DOCTYPE a [
6257     <?xml?>
6258     ]>
6259     <p></p>
6260     @@@c:erred:
6261     <[[xp:wf-pi-target-is-xml]]> { (2, 1)..(2, 5); }
6262    
6263     @@XMLTest:
6264     @@@QName: xp.pi.before.element.empty.test
6265     @@@DEnt:
6266     @@@@test:value:
6267     <?target?>
6268     <a></a>
6269     @@@test:domTree:
6270     document {
6271     pi {
6272     node-name: 'target';
6273     node-value: '';
6274     }
6275     element { }
6276     }
6277     @@XMLTest:
6278     @@@QName: xp.pi.before.element.s.test
6279     @@@DEnt:
6280     @@@@test:value:
6281     <?target ?>
6282     <a></a>
6283     @@@test:domTree:
6284     document {
6285     pi {
6286     node-name: 'target';
6287     node-value: '';
6288     }
6289     element { }
6290     }
6291     @@XMLTest:
6292     @@@QName: xp.pi.before.element.string.test
6293     @@@DEnt:
6294     @@@@test:value:
6295     <?target string?>
6296     <a></a>
6297     @@@test:domTree:
6298     document {
6299     pi {
6300     node-name: 'target';
6301     node-value: 'string';
6302     }
6303     element { }
6304     }
6305     @@XMLTest:
6306     @@@QName: xp.pi.before.element.string.s.test
6307     @@@DEnt:
6308     @@@@test:value:
6309     <?target string ?>
6310     <a></a>
6311     @@@test:domTree:
6312     document {
6313     pi {
6314     node-name: 'target';
6315     node-value: 'string ';
6316     }
6317     element { }
6318     }
6319     @@XMLTest:
6320     @@@QName: xp.pi.before.element.gt.test
6321     @@@DEnt:
6322     @@@@test:value:
6323     <?target string>string?>
6324     <a></a>
6325     @@@test:domTree:
6326     document {
6327     pi {
6328     node-name: 'target';
6329     node-value: 'string>string';
6330     }
6331     element { }
6332     }
6333     @@XMLTest:
6334     @@@QName: xp.pi.doctype.empty.test
6335     @@@DEnt:
6336     @@@@test:value:
6337     <!DOCTYPE a [
6338     <?target?>
6339     ]>
6340     <a></a>
6341     @@@test:domTree:
6342     document {
6343     document-type {
6344     pi {
6345     node-name: 'target';
6346     node-value: '';
6347     }
6348     }
6349     element { }
6350     }
6351    
6352     @@XMLTest:
6353     @@@QName: xp.pi.no.target.test
6354     @@@DEnt:
6355     @@@@test:value:
6356     <??>
6357     <p></p>
6358     @@@c:erred:
6359     <[[xp:wf-syntax-error]]> { (1, 3)..(1, 4); }
6360     @@XMLTest:
6361     @@@QName: xp.pi.no.target.2.test
6362     @@@DEnt:
6363     @@@@test:value:
6364     <? ?>
6365     <p></p>
6366     @@@c:erred:
6367     <[[xp:wf-syntax-error]]> { (1, 3)..(1, 4); }
6368     @@XMLTest:
6369     @@@QName: xp.pi.bad.target.1.test
6370     @@@DEnt:
6371     @@@@test:value:
6372     <?target! ?>
6373     <p></p>
6374     @@@c:erred:
6375     <[[xp:wf-syntax-error]]> { (1, 9)..(1, 9); }
6376     @@XMLTest:
6377     @@@QName: xp.pi.bad.target.2.test
6378     @@@DEnt:
6379     @@@@test:value:
6380     <?0target ?>
6381     <p></p>
6382     @@@c:erred:
6383     <[[xp:wf-syntax-error]]> { (1, 3)..(1, 3); }
6384    
6385     @@XMLTest:
6386 wakaba 1.15 @@@QName: xp.cdatasection.empty.1.test
6387     @@@DEnt:
6388     @@@@test:value:
6389     <p><![CDATA[]]></p>
6390     @@@test:domTree:
6391     document {
6392     element {
6393     cdata-section {
6394     data: '';
6395     }
6396     }
6397     }
6398     @@XMLTest:
6399     @@@QName: xp.cdatasection.empty.2.test
6400     @@@DEnt:
6401     @@@@test:value:
6402     <p>aa<![CDATA[]]>bb</p>
6403     @@@test:domTree:
6404     document {
6405     element {
6406     text { data: 'aa'; }
6407     cdata-section {
6408     data: '';
6409     }
6410     text { data: 'bb'; }
6411     }
6412     }
6413     @@XMLTest:
6414     @@@QName: xp.cdatasection.1.test
6415     @@@DEnt:
6416     @@@@test:value:
6417     <p><![CDATA[abcdefg]]></p>
6418     @@@test:domTree:
6419     document {
6420     element {
6421     cdata-section {
6422     data: 'abcdefg';
6423     }
6424     }
6425     }
6426     @@XMLTest:
6427     @@@QName: xp.cdatasection.2.test
6428     @@@DEnt:
6429     @@@@test:value:
6430     <p>aa<![CDATA[abcdefg]]>bb</p>
6431     @@@test:domTree:
6432     document {
6433     element {
6434     text { data: 'aa'; }
6435     cdata-section {
6436     data: 'abcdefg';
6437     }
6438     text { data: 'bb'; }
6439     }
6440     }
6441     @@XMLTest:
6442     @@@QName: xp.cdatasection.ref.1.test
6443     @@@DEnt:
6444     @@@@test:value:
6445     <p><![CDATA[a&amp;&#x32;&#32;%abc;&def;]]&gt;b]]></p>
6446     @@@test:domTree:
6447     document {
6448     element {
6449     cdata-section {
6450     data: 'a&amp;&#x32;&#32;%abc;&def;]]&gt;b';
6451     }
6452     }
6453     }
6454     @@XMLTest:
6455     @@@QName: xp.cdatasection.in.general.entity.test
6456     @@@DEnt:
6457     @@@@test:value:
6458     <!DOCTYPE p [
6459     <!ENTITY cdata "<![CDATA[text]]>">
6460     ]>
6461     <p>&cdata;</p>
6462     @@@test:domTree:
6463     document {
6464     document-type {
6465     general-entity {
6466     node-name: 'cdata';
6467     cdata-section {
6468     data: 'text';
6469     }
6470     }
6471     }
6472     element {
6473     general-entity-reference {
6474 wakaba 1.23 node-name: 'cdata';
6475 wakaba 1.19 is-expanded: true;
6476 wakaba 1.15 cdata-section {
6477     data: 'text';
6478     }
6479     }
6480     }
6481     }
6482     @@XMLTest:
6483     @@@QName: xp.cdatasection.no.mse.test
6484     @@@DEnt:
6485     @@@@test:value:
6486     <p><![CDATA[text</p>
6487     @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 21); }
6488     @@XMLTest:
6489     @@@QName: xp.cdatasection.nest.test
6490     @@@DEnt:
6491     @@@@test:value:
6492     <p><![CDATA[text01<![CDATA[txt2]]>text3]]></p>
6493     @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 40)..(1, 42); }
6494    
6495     @@XMLTest:
6496 wakaba 1.6 @@@QName: xp.doctype.empty.test
6497     @@@DEnt:
6498     @@@@test:value:
6499     <!DOCTYPE a>
6500     <a></a>
6501     @@@test:domTree:
6502     document {
6503     xml-version: '1.0';
6504     xml-encoding: null;
6505     xml-standalone: false;
6506     document-type {
6507     node-name: 'a';
6508 wakaba 1.17 public-id: null;
6509     system-id: null;
6510 wakaba 1.6 }
6511     element {
6512     namespace-uri: null;
6513     prefix: null;
6514     local-name: 'a';
6515     text-content: '';
6516     }
6517     }
6518 wakaba 1.15 @@XMLTest:
6519     @@@QName: xp.doctype.empty.after.document.element.test
6520     @@@DEnt:
6521     @@@@test:value:
6522     <a></a>
6523     <!DOCTYPE a>
6524     @@@c:erred: <[[xp|wf-syntax-error]]> { (2, 1)..(2, 12); }
6525     @@XMLTest:
6526     @@@QName: xp.doctype.empty.in.element.test
6527     @@@DEnt:
6528     @@@@test:value:
6529     <a>
6530     <!DOCTYPE a>
6531     </a>
6532     @@@c:erred: <[[xp|wf-syntax-error]]> { (2, 1)..(2, 12); }
6533     @@XMLTest:
6534     @@@QName: xp.doctype.empty.dup.test
6535     @@@DEnt:
6536     @@@@test:value:
6537     <!DOCTYPE a>
6538     <!DOCTYPE a>
6539     <a></a>
6540     @@@c:erred: <[[xp|wf-syntax-error]]> { (2, 1)..(2, 12); }
6541     @@XMLTest:
6542     @@@QName: xp.doctype.empty.in.intsubset.test
6543     @@@DEnt:
6544     @@@@test:value:
6545     <!DOCTYPE a [
6546     <!DOCTYPE a>
6547     ]>
6548     <a></a>
6549     @@@c:erred: <[[xp|wf-syntax-error]]> { (2, 1)..(2, 12); }
6550 wakaba 1.16 @@XMLTest:
6551     @@@QName: xp.doctype.no.s.no.name.test
6552     @@@DEnt:
6553     @@@@test:value:
6554     <!DOCTYPE>
6555     <a></a>
6556     @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 10); }
6557     @@XMLTest:
6558     @@@QName: xp.doctype.no.name.test
6559     @@@DEnt:
6560     @@@@test:value:
6561     <!DOCTYPE >
6562     <a></a>
6563     @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 11); }
6564     @@XMLTest:
6565     @@@QName: xp.doctype.name.s.test
6566     @@@DEnt:
6567     @@@@test:value:
6568     <!DOCTYPE aa >
6569     <aa></aa>
6570     @@@test:domTree:
6571     document {
6572     document-type {
6573     node-name: 'aa';
6574 wakaba 1.17 public-id: null;
6575     system-id: null;
6576 wakaba 1.16 }
6577     element { }
6578     }
6579     @@XMLTest:
6580     @@@QName: xp.doctype.no.mdc.test
6581     @@@DEnt:
6582     @@@@test:value:
6583     <!DOCTYPE aa
6584     <aa></aa>
6585     @@@c:erred: <[[xp|wf-syntax-error]]> { (2, 1); }
6586 wakaba 1.6
6587     @@XMLTest:
6588 wakaba 1.16 @@@QName: xp.doctype.intsubset.empty.1.test
6589 wakaba 1.6 @@@DEnt:
6590     @@@@test:value:
6591 wakaba 1.16 <!DOCTYPE a []>
6592 wakaba 1.6 <a></a>
6593     @@@test:domTree:
6594     document {
6595     xml-version: '1.0';
6596     xml-encoding: null;
6597     xml-standalone: false;
6598     document-type {
6599     node-name: 'a';
6600 wakaba 1.17 public-id: null;
6601     system-id: null;
6602 wakaba 1.6 }
6603     element {
6604     namespace-uri: null;
6605     prefix: null;
6606     local-name: 'a';
6607     text-content: '';
6608     }
6609     }
6610     @@XMLTest:
6611 wakaba 1.16 @@@QName: xp.doctype.intsubset.empty.2.test
6612 wakaba 1.6 @@@DEnt:
6613     @@@@test:value:
6614     <!DOCTYPE a [
6615 wakaba 1.16
6616 wakaba 1.6 ]>
6617     <a></a>
6618     @@@test:domTree:
6619     document {
6620     xml-version: '1.0';
6621     xml-encoding: null;
6622     xml-standalone: false;
6623     document-type {
6624     node-name: 'a';
6625 wakaba 1.17 public-id: null;
6626     system-id: null;
6627 wakaba 1.6 }
6628     element {
6629     namespace-uri: null;
6630     prefix: null;
6631     local-name: 'a';
6632     text-content: '';
6633     }
6634     }
6635     @@XMLTest:
6636 wakaba 1.16 @@@QName: xp.doctype.intsubset.empty.3.test
6637 wakaba 1.6 @@@DEnt:
6638     @@@@test:value:
6639 wakaba 1.16 <!DOCTYPE a[]>
6640 wakaba 1.6 <a></a>
6641     @@@test:domTree:
6642     document {
6643     document-type {
6644     node-name: 'a';
6645 wakaba 1.17 public-id: null;
6646     system-id: null;
6647 wakaba 1.6 }
6648 wakaba 1.16 element { }
6649     }
6650     @@XMLTest:
6651     @@@QName: xp.doctype.intsubset.empty.4.test
6652     @@@DEnt:
6653     @@@@test:value:
6654     <!DOCTYPE a[] >
6655     <a></a>
6656     @@@test:domTree:
6657     document {
6658     document-type {
6659     node-name: 'a';
6660 wakaba 1.17 public-id: null;
6661     system-id: null;
6662 wakaba 1.6 }
6663 wakaba 1.16 element { }
6664 wakaba 1.6 }
6665     @@XMLTest:
6666 wakaba 1.16 @@@QName: xp.doctype.intsubset.no.dsc.1.test
6667     @@@DEnt:
6668     @@@@test:value:
6669     <!DOCTYPE a [>
6670     <a></a>
6671     @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 14); }
6672     @@XMLTest:
6673     @@@QName: xp.doctype.intsubset.no.dsc.2.test
6674 wakaba 1.6 @@@DEnt:
6675     @@@@test:value:
6676     <!DOCTYPE a [
6677     <a></a>
6678 wakaba 1.16 @@@c:erred: <[[xp|wf-syntax-error]]> { (2, 1); }
6679     @@XMLTest:
6680     @@@QName: xp.doctype.intsubset.no.dsc.3.test
6681     @@@DEnt:
6682     @@@@test:value:
6683     <!DOCTYPE a [
6684     @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 14); }
6685     @@XMLTest:
6686     @@@QName: xp.doctype.intsubset.no.mdc.1.test
6687     @@@DEnt:
6688     @@@@test:value:
6689     <!DOCTYPE a []
6690     <a/>
6691     @@@c:erred: <[[xp|wf-syntax-error]]> { (2, 1); }
6692     @@XMLTest:
6693     @@@QName: xp.doctype.intsubset.no.mdc.2.test
6694     @@@DEnt:
6695     @@@@test:value:
6696     <!DOCTYPE a []]>
6697     <a/>
6698     @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 15); }
6699 wakaba 1.17 @@XMLTest:
6700     @@@QName: xp.doctype.pubid.sysid.1.test
6701     @@@DEnt:
6702     @@@@test:value:
6703     <!DOCTYPE a PUBLIC "pubid" "sysid">
6704     <a/>
6705     @@@test:domTree:
6706     document {
6707     document-type {
6708     node-name: 'a';
6709     public-id: 'pubid';
6710     system-id: 'sysid';
6711     }
6712     element { }
6713     }
6714     @@XMLTest:
6715     @@@QName: xp.doctype.pubid.sysid.2.test
6716     @@@DEnt:
6717     @@@@test:value:
6718     <!DOCTYPE a PUBLIC 'pubid' "sysid">
6719     <a/>
6720     @@@test:domTree:
6721     document {
6722     document-type {
6723     node-name: 'a';
6724     public-id: 'pubid';
6725     system-id: 'sysid';
6726     }
6727     element { }
6728     }
6729     @@XMLTest:
6730     @@@QName: xp.doctype.pubid.sysid.3.test
6731     @@@DEnt:
6732     @@@@test:value:
6733     <!DOCTYPE a PUBLIC "pubid" 'sysid'>
6734     <a/>
6735     @@@test:domTree:
6736     document {
6737     document-type {
6738     node-name: 'a';
6739     public-id: 'pubid';
6740     system-id: 'sysid';
6741     }
6742     element { }
6743     }
6744     @@XMLTest:
6745     @@@QName: xp.doctype.pubid.sysid.4.test
6746     @@@DEnt:
6747     @@@@test:value:
6748     <!DOCTYPE a PUBLIC 'pubid' 'sysid'>
6749     <a/>
6750     @@@test:domTree:
6751     document {
6752     document-type {
6753     node-name: 'a';
6754     public-id: 'pubid';
6755     system-id: 'sysid';
6756     }
6757     element { }
6758     }
6759     @@XMLTest:
6760     @@@QName: xp.doctype.pubid.sysid.5.test
6761     @@@DEnt:
6762     @@@@test:value:
6763     <!DOCTYPE a PUBLIC "pubid" "sysid" >
6764     <a/>
6765     @@@test:domTree:
6766     document {
6767     document-type {
6768     node-name: 'a';
6769     public-id: 'pubid';
6770     system-id: 'sysid';
6771     }
6772     element { }
6773     }
6774     @@XMLTest:
6775     @@@QName: xp.doctype.pubid.sysid.6.test
6776     @@@DEnt:
6777     @@@@test:value:
6778     <!DOCTYPE a PUBLIC 'pubid' 'sysid' >
6779     <a/>
6780     @@@test:domTree:
6781     document {
6782     document-type {
6783     node-name: 'a';
6784     public-id: 'pubid';
6785     system-id: 'sysid';
6786     }
6787     element { }
6788     }
6789     @@XMLTest:
6790     @@@QName: xp.doctype.pubid.sysid.intsubset.1.test
6791     @@@DEnt:
6792     @@@@test:value:
6793     <!DOCTYPE a PUBLIC "pubid" "sysid"[]>
6794     <a/>
6795     @@@test:domTree:
6796     document {
6797     document-type {
6798     node-name: 'a';
6799     public-id: 'pubid';
6800     system-id: 'sysid';
6801     }
6802     element { }
6803     }
6804     @@XMLTest:
6805     @@@QName: xp.doctype.pubid.sysid.intsubset.2.test
6806     @@@DEnt:
6807     @@@@test:value:
6808     <!DOCTYPE a PUBLIC "pubid" "sysid" []>
6809     <a/>
6810     @@@test:domTree:
6811     document {
6812     document-type {
6813     node-name: 'a';
6814     public-id: 'pubid';
6815     system-id: 'sysid';
6816     }
6817     element { }
6818     }
6819     @@XMLTest:
6820     @@@QName: xp.doctype.pubid.sysid.intsubset.3.test
6821     @@@DEnt:
6822     @@@@test:value:
6823     <!DOCTYPE a PUBLIC 'pubid' 'sysid'[]>
6824     <a/>
6825     @@@test:domTree:
6826     document {
6827     document-type {
6828     node-name: 'a';
6829     public-id: 'pubid';
6830     system-id: 'sysid';
6831     }
6832     element { }
6833     }
6834     @@XMLTest:
6835     @@@QName: xp.doctype.pubid.sysid.intsubset.4.test
6836     @@@DEnt:
6837     @@@@test:value:
6838     <!DOCTYPE a PUBLIC 'pubid' 'sysid' []>
6839     <a/>
6840     @@@test:domTree:
6841     document {
6842     document-type {
6843     node-name: 'a';
6844     public-id: 'pubid';
6845     system-id: 'sysid';
6846     }
6847     element { }
6848     }
6849     @@XMLTest:
6850     @@@QName: xp.doctype.sysid.1.test
6851     @@@DEnt:
6852     @@@@test:value:
6853     <!DOCTYPE a SYSTEM "sysid">
6854     <a/>
6855     @@@test:domTree:
6856     document {
6857     document-type {
6858     node-name: 'a';
6859     public-id: null;
6860     system-id: 'sysid';
6861     }
6862     element { }
6863     }
6864     @@XMLTest:
6865     @@@QName: xp.doctype.sysid.2.test
6866     @@@DEnt:
6867     @@@@test:value:
6868     <!DOCTYPE a SYSTEM 'sysid'>
6869     <a/>
6870     @@@test:domTree:
6871     document {
6872     document-type {
6873     node-name: 'a';
6874     public-id: null;
6875     system-id: 'sysid';
6876     }
6877     element { }
6878     }
6879     @@XMLTest:
6880     @@@QName: xp.doctype.sysid.3.test
6881     @@@DEnt:
6882     @@@@test:value:
6883     <!DOCTYPE a SYSTEM "sysid" >
6884     <a/>
6885     @@@test:domTree:
6886     document {
6887     document-type {
6888     node-name: 'a';
6889     public-id: null;
6890     system-id: 'sysid';
6891     }
6892     element { }
6893     }
6894     @@XMLTest:
6895     @@@QName: xp.doctype.sysid.4.test
6896     @@@DEnt:
6897     @@@@test:value:
6898     <!DOCTYPE a SYSTEM 'sysid' >
6899     <a/>
6900     @@@test:domTree:
6901     document {
6902     document-type {
6903     node-name: 'a';
6904     public-id: null;
6905     system-id: 'sysid';
6906     }
6907     element { }
6908     }
6909     @@XMLTest:
6910     @@@QName: xp.doctype.sysid.intsubset.1.test
6911     @@@DEnt:
6912     @@@@test:value:
6913     <!DOCTYPE a SYSTEM "sysid"[]>
6914     <a/>
6915     @@@test:domTree:
6916     document {
6917     document-type {
6918     node-name: 'a';
6919     public-id: null;
6920     system-id: 'sysid';
6921     }
6922     element { }
6923     }
6924     @@XMLTest:
6925     @@@QName: xp.doctype.sysid.intsubset.2.test
6926     @@@DEnt:
6927     @@@@test:value:
6928     <!DOCTYPE a SYSTEM "sysid" []>
6929     <a/>
6930     @@@test:domTree:
6931     document {
6932     document-type {
6933     node-name: 'a';
6934     public-id: null;
6935     system-id: 'sysid';
6936     }
6937     element { }
6938     }
6939     @@XMLTest:
6940     @@@QName: xp.doctype.sysid.intsubset.3.test
6941     @@@DEnt:
6942     @@@@test:value:
6943     <!DOCTYPE a SYSTEM 'sysid'[]>
6944     <a/>
6945     @@@test:domTree:
6946     document {
6947     document-type {
6948     node-name: 'a';
6949     public-id: null;
6950     system-id: 'sysid';
6951     }
6952     element { }
6953     }
6954     @@XMLTest:
6955     @@@QName: xp.doctype.sysid.intsubset.4.test
6956     @@@DEnt:
6957     @@@@test:value:
6958     <!DOCTYPE a SYSTEM 'sysid' []>
6959     <a/>
6960     @@@test:domTree:
6961     document {
6962     document-type {
6963     node-name: 'a';
6964     public-id: null;
6965     system-id: 'sysid';
6966     }
6967     element { }
6968     }
6969     @@XMLTest:
6970     @@@QName: xp.doctype.public.stago.test
6971     @@@DEnt:
6972     @@@@test:value:
6973     <!DOCTYPE a PUBLIC<a/>
6974     @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 19); }
6975     @@XMLTest:
6976     @@@QName: xp.doctype.public.mdc.test
6977     @@@DEnt:
6978     @@@@test:value:
6979     <!DOCTYPE a PUBLIC>
6980     <a/>
6981     @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 19); }
6982     @@XMLTest:
6983     @@@QName: xp.doctype.public.s.stago.test
6984     @@@DEnt:
6985     @@@@test:value:
6986     <!DOCTYPE a PUBLIC <a/>
6987     @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 20); }
6988     @@XMLTest:
6989     @@@QName: xp.doctype.public.s.mdc.test
6990     @@@DEnt:
6991     @@@@test:value:
6992     <!DOCTYPE a PUBLIC >
6993     <a/>
6994     @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 20); }
6995     @@XMLTest:
6996     @@@QName: xp.doctype.public.lit.test
6997     @@@DEnt:
6998     @@@@test:value:
6999     <!DOCTYPE a PUBLIC"p" "s">
7000     <a/>
7001     @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 19); }
7002     @@XMLTest:
7003     @@@QName: xp.doctype.public.lita.test
7004     @@@DEnt:
7005     @@@@test:value:
7006     <!DOCTYPE a PUBLIC'p' "s">
7007     <a/>
7008     @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 19); }
7009     @@XMLTest:
7010     @@@QName: xp.doctype.pubid.lit.lita.unmatched.1.test
7011     @@@DEnt:
7012     @@@@test:value:
7013     <!DOCTYPE a PUBLIC "p' "s">
7014     <a/>
7015     @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 25); }
7016     @@XMLTest:
7017     @@@QName: xp.doctype.pubid.lit.lita.unmatched.2.test
7018     @@@DEnt:
7019     @@@@test:value:
7020     <!DOCTYPE a PUBLIC "p' 's'><a/>
7021     @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 32); }
7022     @@XMLTest:
7023     @@@QName: xp.doctype.pubid.lita.lit.unmatched.1.test
7024     @@@DEnt:
7025     @@@@test:value:
7026     <!DOCTYPE a PUBLIC 'p" "s"><a/>
7027     @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 32); }
7028     @@XMLTest:
7029     @@@QName: xp.doctype.pubid.lita.lit.unmatched.2.test
7030     @@@DEnt:
7031     @@@@test:value:
7032     <!DOCTYPE a PUBLIC 'p" 's'>
7033     <a/>
7034     @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 21)..(1, 25); }
7035     @@XMLTest:
7036     @@@QName: xp.doctype.public.s.lit.mdc.test
7037     @@@DEnt:
7038     @@@@test:value:
7039     <!DOCTYPE a PUBLIC "><a/>
7040     @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 26); }
7041     @@XMLTest:
7042     @@@QName: xp.doctype.public.s.lita.mdc.test
7043     @@@DEnt:
7044     @@@@test:value:
7045     <!DOCTYPE a PUBLIC '><a/>
7046     @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 26); }
7047     @@XMLTest:
7048     @@@QName: xp.doctype.public.lit.pubid.lit.mdc.test
7049     @@@DEnt:
7050     @@@@test:value:
7051     <!DOCTYPE a PUBLIC "p">
7052     <a/>
7053     @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 23); }
7054     @@XMLTest:
7055     @@@QName: xp.doctype.public.lita.pubid.lita.mdc.test
7056     @@@DEnt:
7057     @@@@test:value:
7058     <!DOCTYPE a PUBLIC 'p'>
7059     <a/>
7060     @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 23); }
7061     @@XMLTest:
7062     @@@QName: xp.doctype.public.lit.pubid.lit.s.mdc.test
7063     @@@DEnt:
7064     @@@@test:value:
7065     <!DOCTYPE a PUBLIC "p" >
7066     <a/>
7067     @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 24); }
7068     @@XMLTest:
7069     @@@QName: xp.doctype.public.lita.pubid.lita.s.mdc.test
7070     @@@DEnt:
7071     @@@@test:value:
7072     <!DOCTYPE a PUBLIC 'p' >
7073     <a/>
7074     @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 24); }
7075     @@XMLTest:
7076     @@@QName: xp.doctype.public.lit.pubid.lit.s.lit.mdc.test
7077     @@@DEnt:
7078     @@@@test:value:
7079     <!DOCTYPE a PUBLIC "p" "><a/>
7080     @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 30); }
7081     @@XMLTest:
7082     @@@QName: xp.doctype.public.lit.pubid.lit.s.lita.mdc.test
7083     @@@DEnt:
7084     @@@@test:value:
7085     <!DOCTYPE a PUBLIC "p" '><a/>
7086     @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 30); }
7087     @@XMLTest:
7088     @@@QName: xp.doctype.public.lita.pubid.lita.s.lit.mdc.test
7089     @@@DEnt:
7090     @@@@test:value:
7091     <!DOCTYPE a PUBLIC 'p' "><a/>
7092     @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 30); }
7093     @@XMLTest:
7094     @@@QName: xp.doctype.public.lita.pubid.lita.s.lita.mdc.test
7095     @@@DEnt:
7096     @@@@test:value:
7097     <!DOCTYPE a PUBLIC 'p' '><a/>
7098     @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 30); }
7099     @@XMLTest:
7100     @@@QName: xp.doctype.public.lit.pubid.lit.lit.lita.unmatched.mdc.test
7101     @@@DEnt:
7102     @@@@test:value:
7103     <!DOCTYPE a PUBLIC "p" "s'><a/>
7104     @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 32); }
7105     @@XMLTest:
7106     @@@QName: xp.doctype.public.lita.pubid.lita.lita.lit.unmatched.mdc.test
7107     @@@DEnt:
7108     @@@@test:value:
7109     <!DOCTYPE a PUBLIC 'p' 's"><a/>
7110     @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 32); }
7111     @@XMLTest:
7112     @@@QName: xp.doctype.pubid.sysid.stago.1.test
7113     @@@DEnt:
7114     @@@@test:value:
7115     <!DOCTYPE a PUBLIC "p" "s"<a/>
7116     @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 27); }
7117     @@XMLTest:
7118     @@@QName: xp.doctype.pubid.sysid.stago.2.test
7119     @@@DEnt:
7120     @@@@test:value:
7121     <!DOCTYPE a PUBLIC "p" 's'<a/>
7122     @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 27); }
7123     @@XMLTest:
7124     @@@QName: xp.doctype.pubid.sysid.stago.s.1.test
7125     @@@DEnt:
7126     @@@@test:value:
7127     <!DOCTYPE a PUBLIC "p" "s" <a/>
7128     @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 28); }
7129     @@XMLTest:
7130     @@@QName: xp.doctype.pubid.sysid.stago.s.2.test
7131     @@@DEnt:
7132     @@@@test:value:
7133     <!DOCTYPE a PUBLIC "p" 's' <a/>
7134     @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 28); }
7135 wakaba 1.16
7136     @@XMLTest:
7137     @@@QName: xp.endofline.1.0.crlf.test
7138     @@@DEnt:
7139     @@@@test:value:
7140     <?xml version="1.0"?>
7141     <p>aaa$u000D$u000Abbb</p>
7142 wakaba 1.6 @@@test:domTree:
7143     document {
7144     xml-version: '1.0';
7145 wakaba 1.16 element {
7146     text-content: 'aaa' U+000A 'bbb';
7147 wakaba 1.6 }
7148 wakaba 1.16 }
7149     @@XMLTest:
7150     @@@QName: xp.endofline.1.1.crlf.test
7151     @@@DEnt:
7152     @@@@test:value:
7153     <?xml version="1.1"?>
7154     <p>aaa$u000D$u000Abbb</p>
7155     @@@test:domTree:
7156     document {
7157     xml-version: '1.1';
7158 wakaba 1.6 element {
7159 wakaba 1.16 text-content: 'aaa' U+000A 'bbb';
7160 wakaba 1.6 }
7161     }
7162     @@XMLTest:
7163 wakaba 1.16 @@@QName: xp.endofline.1.0.crnl.test
7164 wakaba 1.6 @@@DEnt:
7165     @@@@test:value:
7166 wakaba 1.16 <?xml version="1.0"?>
7167     <p>aaa$u000D$u0085bbb</p>
7168 wakaba 1.6 @@@test:domTree:
7169     document {
7170     xml-version: '1.0';
7171 wakaba 1.16 element {
7172     text-content: 'aaa' U+000A U+0085 'bbb';
7173 wakaba 1.6 }
7174 wakaba 1.16 }
7175     @@XMLTest:
7176     @@@QName: xp.endofline.1.1.crnl.test
7177     @@@DEnt:
7178     @@@@test:value:
7179     <?xml version="1.1"?>
7180     <p>aaa$u000D$u0085bbb</p>
7181     @@@test:domTree:
7182     document {
7183     xml-version: '1.1';
7184 wakaba 1.6 element {
7185 wakaba 1.16 text-content: 'aaa' U+000A 'bbb';
7186 wakaba 1.6 }
7187     }
7188     @@XMLTest:
7189 wakaba 1.16 @@@QName: xp.endofline.1.0.nl.test
7190 wakaba 1.6 @@@DEnt:
7191     @@@@test:value:
7192 wakaba 1.16 <?xml version="1.0"?>
7193     <p>aaa$u0085bbb</p>
7194 wakaba 1.6 @@@test:domTree:
7195     document {
7196     xml-version: '1.0';
7197     element {
7198 wakaba 1.16 text-content: 'aaa' U+0085 'bbb';
7199 wakaba 1.6 }
7200     }
7201     @@XMLTest:
7202 wakaba 1.16 @@@QName: xp.endofline.1.1.nl.test
7203 wakaba 1.6 @@@DEnt:
7204     @@@@test:value:
7205 wakaba 1.16 <?xml version="1.1"?>
7206     <p>aaa$u0085bbb</p>
7207     @@@test:domTree:
7208     document {
7209     xml-version: '1.1';
7210     element {
7211     text-content: 'aaa' U+000A 'bbb';
7212     }
7213     }
7214     @@XMLTest:
7215     @@@QName: xp.endofline.1.0.ls.test
7216     @@@DEnt:
7217     @@@@test:value:
7218     <?xml version="1.0"?>
7219     <p>aaa$u2028bbb</p>
7220     @@@test:domTree:
7221     document {
7222     xml-version: '1.0';
7223     element {
7224     text-content: 'aaa' U+2028 'bbb';
7225     }
7226     }
7227     @@XMLTest:
7228     @@@QName: xp.endofline.1.1.ls.test
7229     @@@DEnt:
7230     @@@@test:value:
7231     <?xml version="1.1"?>
7232     <p>aaa$u2028bbb</p>
7233     @@@test:domTree:
7234     document {
7235     xml-version: '1.1';
7236     element {
7237     text-content: 'aaa' U+000A 'bbb';
7238     }
7239     }
7240     @@XMLTest:
7241     @@@QName: xp.endofline.1.0.cr.test
7242     @@@DEnt:
7243     @@@@test:value:
7244     <?xml version="1.0"?>
7245     <p>aaa$u000Dbbb</p>
7246     @@@test:domTree:
7247     document {
7248     xml-version: '1.0';
7249     element {
7250     text-content: 'aaa' U+000A 'bbb';
7251     }
7252     }
7253     @@XMLTest:
7254     @@@QName: xp.endofline.1.1.cr.test
7255     @@@DEnt:
7256     @@@@test:value:
7257     <?xml version="1.1"?>
7258     <p>aaa$u000Dbbb</p>
7259     @@@test:domTree:
7260     document {
7261     xml-version: '1.1';
7262     element {
7263     text-content: 'aaa' U+000A 'bbb';
7264     }
7265     }
7266     @@XMLTest:
7267     @@@QName: xp.endofline.1.0.lf.test
7268     @@@DEnt:
7269     @@@@test:value:
7270     <?xml version="1.0"?>
7271     <p>aaa$u000Abbb</p>
7272     @@@test:domTree:
7273     document {
7274     xml-version: '1.0';
7275     element {
7276     text-content: 'aaa' U+000A 'bbb';
7277     }
7278     }
7279     @@XMLTest:
7280     @@@QName: xp.endofline.1.1.lf.test
7281     @@@DEnt:
7282     @@@@test:value:
7283     <?xml version="1.1"?>
7284     <p>aaa$u000Abbb</p>
7285     @@@test:domTree:
7286     document {
7287     xml-version: '1.1';
7288     element {
7289     text-content: 'aaa' U+000A 'bbb';
7290     }
7291     }
7292     @@XMLTest:
7293     @@@QName: xp.xml10.endofline.nl.in.xmldecl.1.test
7294     @@@DEnt:
7295     @@@@test:value:
7296     <?xml$u0085version="1.0"?>
7297     <p/>
7298     @@@c:erred:
7299     <[[xp|fatal-xml11-end-of-line-in-xml-declaration]]> { (1, 6)..(2, 0); }
7300     @@@c:erred: <[[xp|wf-syntax-error]]> { }
7301     @@XMLTest:
7302     @@@QName: xp.xml11.endofline.nl.in.xmldecl.1.test
7303     @@@DEnt:
7304     @@@@test:value:
7305     <?xml$u0085version="1.1"?>
7306     (err)<p/>
7307     @@@c:erred:
7308     <[[xp|fatal-xml11-end-of-line-in-xml-declaration]]> { (1, 6)..(2, 0); }
7309     @@@c:erred: <[[xp|wf-syntax-error]]> { }
7310     @@XMLTest:
7311     @@@QName: xp.xml10.endofline.crnl.in.xmldecl.1.test
7312     @@@DEnt:
7313     @@@@test:value:
7314     <?xml$u000D$u0085version="1.0"?>
7315     <p/>
7316     @@@c:erred:
7317     <[[xp|fatal-xml11-end-of-line-in-xml-declaration]]> { (1, 6)..(2, 0); }
7318     @@@c:erred: <[[xp|wf-syntax-error]]> { }
7319     @@XMLTest:
7320     @@@QName: xp.xml11.endofline.crnl.in.xmldecl.1.test
7321     @@@DEnt:
7322     @@@@test:value:
7323     <?xml$u000D$u0085version="1.1"?>
7324     (err)<p/>
7325     @@@c:erred:
7326     <[[xp|fatal-xml11-end-of-line-in-xml-declaration]]> { (1, 6)..(2, 0); }
7327     @@@c:erred: <[[xp|wf-syntax-error]]> { }
7328     @@XMLTest:
7329     @@@QName: xp.xml10.endofline.ls.in.xmldecl.1.test
7330     @@@DEnt:
7331     @@@@test:value:
7332     <?xml$u2028version="1.0"?>
7333     <p/>
7334     @@@c:erred:
7335     <[[xp|fatal-xml11-end-of-line-in-xml-declaration]]> { (1, 6)..(2, 0); }
7336     @@@c:erred: <[[xp|wf-syntax-error]]> { }
7337     @@XMLTest:
7338     @@@QName: xp.xml11.endofline.ls.in.xmldecl.1.test
7339     @@@DEnt:
7340     @@@@test:value:
7341     <?xml$u2028version="1.1"?>
7342     (err)<p/>
7343     @@@c:erred:
7344     <[[xp|fatal-xml11-end-of-line-in-xml-declaration]]> { (1, 6)..(2, 0); }
7345     @@@c:erred: <[[xp|wf-syntax-error]]> { }
7346     @@XMLTest:
7347     @@@QName: xp.xml10.endofline.nl.in.xmldecl.2.test
7348     @@@DEnt:
7349     @@@@test:value:
7350     <?xml version="1.0"$u0085?>
7351     <p/>
7352     @@@c:erred:
7353     <[[xp|fatal-xml11-end-of-line-in-xml-declaration]]> { (1, 20)..(2, 0); }
7354     @@@c:erred: <[[xp|wf-syntax-error]]> { }
7355     @@XMLTest:
7356     @@@QName: xp.xml11.endofline.nl.in.xmldecl.2.test
7357     @@@DEnt:
7358     @@@@test:value:
7359     <?xml version="1.1"$u0085?>
7360     (err)<p/>
7361     @@@c:erred:
7362     <[[xp|fatal-xml11-end-of-line-in-xml-declaration]]> { (1, 20)..(2, 0); }
7363     @@@c:erred: <[[xp|wf-syntax-error]]> { }
7364     @@XMLTest:
7365     @@@QName: xp.xml10.endofline.crnl.in.xmldecl.2.test
7366     @@@DEnt:
7367     @@@@test:value:
7368     <?xml version="1.0"$u000D$u0085?>
7369     <p/>
7370     @@@c:erred:
7371     <[[xp|fatal-xml11-end-of-line-in-xml-declaration]]> { (1, 20)..(2, 0); }
7372     @@@c:erred: <[[xp|wf-syntax-error]]> { }
7373     @@XMLTest:
7374     @@@QName: xp.xml11.endofline.crnl.in.xmldecl.2.test
7375     @@@DEnt:
7376     @@@@test:value:
7377     <?xml version="1.1"$u000D$u0085?>
7378     (err)<p/>
7379     @@@c:erred:
7380     <[[xp|fatal-xml11-end-of-line-in-xml-declaration]]> { (1, 20)..(2, 0); }
7381     @@@c:erred: <[[xp|wf-syntax-error]]> { }
7382     @@XMLTest:
7383     @@@QName: xp.xml10.endofline.ls.in.xmldecl.2.test
7384     @@@DEnt:
7385     @@@@test:value:
7386     <?xml version="1.0"$u2028?>
7387     <p/>
7388     @@@c:erred:
7389     <[[xp|fatal-xml11-end-of-line-in-xml-declaration]]> { (1, 20)..(2, 0); }
7390     @@@c:erred: <[[xp|wf-syntax-error]]> { }
7391     @@XMLTest:
7392     @@@QName: xp.xml11.endofline.ls.in.xmldecl.2.test
7393     @@@DEnt:
7394     @@@@test:value:
7395     <?xml version="1.1"$u2028?>
7396     (err)<p/>
7397     @@@c:erred:
7398     <[[xp|fatal-xml11-end-of-line-in-xml-declaration]]> { (1, 20)..(2, 0); }
7399     @@@c:erred: <[[xp|wf-syntax-error]]> { }
7400     @@XMLTest:
7401     @@@QName: xp.xml10.endofline.nl.in.xmldecl.3.test
7402     @@@DEnt:
7403     @@@@test:value:
7404     <?xml $u0085version="1.0"?>
7405     <p/>
7406     @@@c:erred:
7407     <[[xp|fatal-xml11-end-of-line-in-xml-declaration]]> { (1, 7)..(2, 0); }
7408     @@@c:erred: <[[xp|wf-syntax-error]]> { }
7409     @@XMLTest:
7410     @@@QName: xp.xml11.endofline.nl.in.xmldecl.3.test
7411     @@@DEnt:
7412     @@@@test:value:
7413     <?xml $u0085version="1.1"?>
7414     (err)<p/>
7415     @@@c:erred:
7416     <[[xp|fatal-xml11-end-of-line-in-xml-declaration]]> { (1, 7)..(2, 0); }
7417     @@@c:erred: <[[xp|wf-syntax-error]]> { }
7418     @@XMLTest:
7419     @@@QName: xp.xml10.endofline.crnl.in.xmldecl.3.test
7420     @@@DEnt:
7421     @@@@test:value:
7422     <?xml $u000D$u0085version="1.0"?>
7423     <p/>
7424     @@@c:erred:
7425     <[[xp|fatal-xml11-end-of-line-in-xml-declaration]]> { (1, 7)..(2, 0); }
7426     @@@c:erred: <[[xp|wf-syntax-error]]> { }
7427     @@XMLTest:
7428     @@@QName: xp.xml11.endofline.crnl.in.xmldecl.3.test
7429     @@@DEnt:
7430     @@@@test:value:
7431     <?xml $u000D$u0085version="1.1"?>
7432     (err)<p/>
7433     @@@c:erred:
7434     <[[xp|fatal-xml11-end-of-line-in-xml-declaration]]> { (1, 7)..(2, 0); }
7435     @@@c:erred: <[[xp|wf-syntax-error]]> { }
7436     @@XMLTest:
7437     @@@QName: xp.xml10.endofline.ls.in.xmldecl.3.test
7438     @@@DEnt:
7439     @@@@test:value:
7440     <?xml $u2028version="1.0"?>
7441     <p/>
7442     @@@c:erred:
7443     <[[xp|fatal-xml11-end-of-line-in-xml-declaration]]> { (1, 7)..(2, 0); }
7444     @@@c:erred: <[[xp|wf-syntax-error]]> { }
7445     @@XMLTest:
7446     @@@QName: xp.xml11.endofline.ls.in.xmldecl.3.test
7447     @@@DEnt:
7448     @@@@test:value:
7449     <?xml $u2028version="1.1"?>
7450     (err)<p/>
7451     @@@c:erred:
7452     <[[xp|fatal-xml11-end-of-line-in-xml-declaration]]> { (1, 7)..(2, 0); }
7453     @@@c:erred: <[[xp|wf-syntax-error]]> { }
7454     @@XMLTest:
7455     @@@QName: xp.xml10implied.endofline.nl.in.pi.1.test
7456     @@@DEnt:
7457     @@@@test:value:
7458     <?xml-$u0085?>
7459     <p/>
7460     @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 7)..(2, 0); }
7461     @@XMLTest:
7462     @@@QName: xp.xml10.endofline.nl.in.pi.1.test
7463     @@@DEnt:
7464     @@@@test:value:
7465     <?xml version="1.0"?>
7466     <?xml-$u0085?>
7467     <p/>
7468     @@@c:erred: <[[xp|wf-syntax-error]]> { (2, 7)..(3, 0); }
7469     @@XMLTest:
7470     @@@QName: xp.xml11.endofline.nl.in.pi.1.test
7471     @@@DEnt:
7472     @@@@test:value:
7473     <?xml version="1.1"?>
7474     <?xml-$u0085?>
7475     <p/>
7476     @@@test:domTree:
7477     document {
7478     xml-version: '1.1';
7479     pi {
7480     node-name: 'xml-';
7481     node-value: '';
7482     }
7483     element { }
7484     }
7485     @@XMLTest:
7486     @@@QName: xp.xml10implied.endofline.crnl.in.pi.1.test
7487     @@@DEnt:
7488     @@@@test:value:
7489     <?xml-$u000D$u0085?>
7490     <p/>
7491     @@@test:domTree:
7492     document {
7493     xml-version: '1.0';
7494     pi {
7495     node-name: 'xml-';
7496     node-value: U+0085;
7497     }
7498     element { }
7499     }
7500     @@XMLTest:
7501     @@@QName: xp.xml10.endofline.crnl.in.pi.1.test
7502     @@@DEnt:
7503     @@@@test:value:
7504     <?xml version="1.0"?>
7505     <?xml-$u000D$u0085?>
7506     <p/>
7507     @@@test:domTree:
7508     document {
7509     xml-version: '1.0';
7510     pi {
7511     node-name: 'xml-';
7512     node-value: U+0085;
7513     }
7514     element { }
7515     }
7516     @@XMLTest:
7517     @@@QName: xp.xml11.endofline.crnl.in.pi.1.test
7518     @@@DEnt:
7519     @@@@test:value:
7520     <?xml version="1.1"?>
7521     <?xml-$u000D$u0085?>
7522     <p/>
7523     @@@test:domTree:
7524     document {
7525     xml-version: '1.1';
7526     pi {
7527     node-name: 'xml-';
7528     node-value: '';
7529     }
7530     element { }
7531     }
7532     @@XMLTest:
7533     @@@QName: xp.xml10implied.endofline.ls.in.pi.1.test
7534     @@@DEnt:
7535     @@@@test:value:
7536     <?xml-$u2028?>
7537     <p/>
7538     @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 7)..(2, 0); }
7539     @@XMLTest:
7540     @@@QName: xp.xml10.endofline.ls.in.pi.1.test
7541     @@@DEnt:
7542     @@@@test:value:
7543     <?xml version="1.0"?>
7544     <?xml-$u2028?>
7545     <p/>
7546     @@@c:erred: <[[xp|wf-syntax-error]]> { (2, 7)..(3, 0); }
7547     @@XMLTest:
7548     @@@QName: xp.xml11.endofline.ls.in.pi.1.test
7549     @@@DEnt:
7550     @@@@test:value:
7551     <?xml version="1.1"?>
7552     <?xml-$u2028?>
7553     <p/>
7554     @@@test:domTree:
7555     document {
7556     xml-version: '1.1';
7557     pi {
7558     node-name: 'xml-';
7559     node-value: '';
7560     }
7561     element { }
7562     }
7563 wakaba 1.27
7564     @@XMLTest:
7565     @@@QName: xp.xml10.endofline.internal.1.test
7566     @@@DEnt:
7567     @@@@test:value:
7568     <?xml version="1.0"?>
7569     <!DOCTYPE a [
7570     <!ENTITY e "&#x000D; &#x000A; &#x0085; &#x000D;&#x000A; $
7571     &#x000D;&#x0085; &#x2028;">
7572     ]><a>&e;</a>
7573     @@@test:domTree:
7574     document {
7575     xml-version: '1.0';
7576     document-type {
7577     general-entity {
7578     node-name: 'e';
7579     text-content: U+000D ' ' U+000A ' ' U+0085 ' '
7580     U+000D U+000A ' ' U+000D U+0085 ' ' U+2028;
7581     }
7582     }
7583     element {
7584     text-content: U+000D ' ' U+000A ' ' U+0085 ' '
7585     U+000D U+000A ' ' U+000D U+0085 ' ' U+2028;
7586     }
7587     }
7588     @@XMLTest:
7589     @@@QName: xp.xml11.endofline.internal.1.test
7590     @@@DEnt:
7591     @@@@test:value:
7592     <?xml version="1.1"?>
7593     <!DOCTYPE a [
7594     <!ENTITY e "&#x000D; &#x000A; &#x0085; &#x000D;&#x000A; $
7595     &#x000D;&#x0085; &#x2028;">
7596     ]><a>&e;</a>
7597     @@@test:domTree:
7598     document {
7599     xml-version: '1.1';
7600     document-type {
7601     general-entity {
7602     node-name: 'e';
7603     text-content: U+000D ' ' U+000A ' ' U+0085 ' '
7604     U+000D U+000A ' ' U+000D U+0085 ' ' U+2028;
7605     }
7606     }
7607     element {
7608     text-content: U+000D ' ' U+000A ' ' U+0085 ' '
7609     U+000D U+000A ' ' U+000D U+0085 ' ' U+2028;
7610     }
7611     }
7612    
7613 wakaba 1.16 @@XMLTest:
7614     @@@QName: xp.noxmldecl.pi.pi.test
7615     @@@DEnt:
7616     @@@@test:value:
7617     <?noxml 1?><?noxml 2?><p/>
7618     @@@test:domTree:
7619     document {
7620     xml-version: '1.0';
7621     pi {
7622     node-name: 'noxml';
7623     node-value: '1';
7624     }
7625     pi {
7626     node-name: 'noxml';
7627     node-value: '2';
7628     }
7629     element { }
7630     }
7631     @@XMLTest:
7632     @@@QName: xp.noxmldecl.pi.pi.2.test
7633     @@@DEnt:
7634     @@@@test:value:
7635     <?xmlno 1?><?xmlno 2?><p/>
7636     @@@test:domTree:
7637     document {
7638     xml-version: '1.0';
7639     pi {
7640     node-name: 'xmlno';
7641     node-value: '1';
7642     }
7643     pi {
7644     node-name: 'xmlno';
7645     node-value: '2';
7646     }
7647     element { }
7648     }
7649     @@XMLTest:
7650     @@@QName: xp.noxmldecl.pi.pi.3.test
7651     @@@DEnt:
7652     @@@@test:value:
7653     <?xmln 1?><?xmln 2?><p/>
7654     @@@test:domTree:
7655     document {
7656     xml-version: '1.0';
7657     pi {
7658     node-name: 'xmln';
7659     node-value: '1';
7660     }
7661     pi {
7662     node-name: 'xmln';
7663     node-value: '2';
7664     }
7665     element { }
7666     }
7667     @@XMLTest:
7668     @@@QName: xp.noxml.s.nl.test
7669     @@@DEnt:
7670     @@@@test:value:
7671     $u0085<p/>
7672     @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 1)..(2, 0); }
7673     @@XMLTest:
7674     @@@QName: xp.noxml.s.crnl.test
7675     @@@DEnt:
7676     @@@@test:value:
7677     $u000D$u0085<p/>
7678     @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 1)..(2, 0); }
7679     @@XMLTest:
7680     @@@QName: xp.noxml.s.ls.test
7681     @@@DEnt:
7682     @@@@test:value:
7683     $u2028<p/>
7684     @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 1)..(2, 0); }
7685     @@XMLTest:
7686     @@@QName: xp.xml10.decl.s.nl.test
7687     @@@DEnt:
7688     @@@@test:value:
7689     <?xml version="1.0"?>$u0085<p/>
7690     @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 22)..(2, 0); }
7691     @@XMLTest:
7692     @@@QName: xp.xml10.decl.s.crnl.test
7693     @@@DEnt:
7694     @@@@test:value:
7695     <?xml version="1.0"?>$u000D$u0085<p/>
7696     @@@c:erred: <[[xp|wf-syntax-error]]> { (2, 0)..(3, 0); }
7697     @@XMLTest:
7698     @@@QName: xp.xml10.decl.s.ls.test
7699     @@@DEnt:
7700     @@@@test:value:
7701     <?xml version="1.0"?>$u2028<p/>
7702     @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 22)..(2, 0); }
7703     @@XMLTest:
7704     @@@QName: xp.xml11.decl.s.nl.test
7705     @@@DEnt:
7706     @@@@test:value:
7707     <?xml version="1.1"?>$u0085<p/>
7708     @@@test:domTree:
7709     document {
7710     xml-version: '1.1';
7711     element { }
7712     }
7713     @@XMLTest:
7714     @@@QName: xp.xml11.decl.s.crnl.test
7715     @@@DEnt:
7716     @@@@test:value:
7717     <?xml version="1.1"?>$u000D$u0085<p/>
7718     @@@test:domTree:
7719     document {
7720     xml-version: '1.1';
7721     element { }
7722     }
7723     @@XMLTest:
7724     @@@QName: xp.xml11.decl.s.ls.test
7725     @@@DEnt:
7726     @@@@test:value:
7727     <?xml version="1.1"?>$u2028<p/>
7728     @@@test:domTree:
7729     document {
7730     xml-version: '1.1';
7731     element { }
7732     }
7733    
7734     @@XMLTest:
7735 wakaba 1.18 @@@QName: xp.element.type.match.1.test
7736     @@@DEnt:
7737     @@@@test:value:
7738     <p></pa>(err)
7739     @@@c:erred: <[[xp|wf-element-type-match]]> { (1, 4)..(1, 8); }
7740     @@@c:erred: <[[xp|wf-syntax-error]]> { }
7741     @@XMLTest:
7742     @@@QName: xp.element.type.match.2.test
7743     @@@DEnt:
7744     @@@@test:value:
7745     <p><pa></pa></pa>(err)
7746     @@@c:erred: <[[xp|wf-element-type-match]]> { (1, 13)..(1, 17); }
7747     @@@c:erred: <[[xp|wf-syntax-error]]> { }
7748     @@XMLTest:
7749     @@@QName: xp.element.type.match.3.test
7750     @@@DEnt:
7751     @@@@test:value:
7752     <p><pa></p></p>(err)
7753     @@@c:erred: <[[xp|wf-element-type-match]]> { (1, 8)..(1, 11); }
7754     @@@c:erred: <[[xp|wf-syntax-error]]> { }
7755     @@XMLTest:
7756     @@@QName: xp.element.type.match.4.test
7757     @@@DEnt:
7758     @@@@test:value:
7759     <a:p xmlns:a="about:1"></p>(err)
7760     @@@c:erred: <[[xp|wf-element-type-match]]> { (1, 24)..(1, 27); }
7761     @@@c:erred: <[[xp|wf-syntax-error]]> { }
7762     @@XMLTest:
7763     @@@QName: xp.element.type.match.5.test
7764     @@@DEnt:
7765     @@@@test:value:
7766     <a:p xmlns:a="about:1" xmlns:b="about:1"></b:p>(err)
7767     @@@c:erred: <[[xp|wf-element-type-match]]> { (1, 42)..(1, 47); }
7768     @@@c:erred: <[[xp|wf-syntax-error]]> { }
7769    
7770     @@XMLTest:
7771     @@@QName: xp.stag.stago.name.etago.test
7772     @@@DEnt:
7773     @@@@test:value:
7774     <a</a>
7775     @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 3); }
7776     @@XMLTest:
7777     @@@QName: xp.stag.stago.name.s.etago.test
7778     @@@DEnt:
7779     @@@@test:value:
7780     <a </a>
7781     @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 4); }
7782     @@XMLTest:
7783     @@@QName: xp.stag.stago.name.s.attr.etago.test
7784     @@@DEnt:
7785     @@@@test:value:
7786     <a a="b"</a>
7787     @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 9); }
7788     @@XMLTest:
7789     @@@QName: xp.stag.stago.name.s.attr.s.attr.etago.test
7790     @@@DEnt:
7791     @@@@test:value:
7792     <a a="b" c="d"</a>
7793     @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 15); }
7794     @@XMLTest:
7795     @@@QName: xp.stag.stago.name.s.attr.s.etago.test
7796     @@@DEnt:
7797     @@@@test:value:
7798     <a a="b" </a>
7799     @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 10); }
7800     @@XMLTest:
7801     @@@QName: xp.stag.etag.1.test
7802 wakaba 1.16 @@@DEnt:
7803     @@@@test:value:
7804 wakaba 1.18 <root><a></a></root>
7805 wakaba 1.16 @@@test:domTree:
7806     document {
7807 wakaba 1.18 element {
7808     element {
7809     node-name: 'a';
7810 wakaba 1.16 }
7811     }
7812 wakaba 1.18 }
7813     @@XMLTest:
7814     @@@QName: xp.stag.etag.2.test
7815     @@@DEnt:
7816     @@@@test:value:
7817     <root><ab></ab></root>
7818     @@@test:domTree:
7819     document {
7820 wakaba 1.16 element {
7821 wakaba 1.18 element {
7822     node-name: 'ab';
7823     }
7824 wakaba 1.16 }
7825 wakaba 1.18 }
7826 wakaba 1.16 @@XMLTest:
7827 wakaba 1.18 @@@QName: xp.stag.etag.s.1.test
7828 wakaba 1.16 @@@DEnt:
7829     @@@@test:value:
7830 wakaba 1.18 <root><a ></a ></root>
7831 wakaba 1.16 @@@test:domTree:
7832     document {
7833 wakaba 1.18 element {
7834     element {
7835     node-name: 'a';
7836 wakaba 1.16 }
7837     }
7838 wakaba 1.18 }
7839     @@XMLTest:
7840     @@@QName: xp.etag.1.test
7841     @@@DEnt:
7842     @@@@test:value:
7843     <root><a/></root>
7844     @@@test:domTree:
7845     document {
7846 wakaba 1.16 element {
7847 wakaba 1.18 element {
7848     node-name: 'a';
7849     }
7850 wakaba 1.16 }
7851 wakaba 1.18 }
7852 wakaba 1.16 @@XMLTest:
7853 wakaba 1.18 @@@QName: xp.etag.2.test
7854 wakaba 1.16 @@@DEnt:
7855     @@@@test:value:
7856 wakaba 1.18 <root><a /></root>
7857 wakaba 1.16 @@@test:domTree:
7858     document {
7859     element {
7860 wakaba 1.18 element {
7861     node-name: 'a';
7862     }
7863 wakaba 1.16 }
7864 wakaba 1.18 }
7865 wakaba 1.16 @@XMLTest:
7866 wakaba 1.18 @@@QName: xp.stag.etag.attr.1.test
7867 wakaba 1.16 @@@DEnt:
7868     @@@@test:value:
7869 wakaba 1.18 <root><a at="v"></a></root>
7870 wakaba 1.16 @@@test:domTree:
7871     document {
7872 wakaba 1.18 element {
7873     element {
7874     node-name: 'a';
7875     attribute {
7876     node-name: 'at';
7877     value: 'v';
7878     }
7879 wakaba 1.16 }
7880     }
7881 wakaba 1.18 }
7882     @@XMLTest:
7883     @@@QName: xp.stag.etag.attr.2.test
7884     @@@DEnt:
7885     @@@@test:value:
7886     <root><a at="v" ></a></root>
7887     @@@test:domTree:
7888     document {
7889 wakaba 1.16 element {
7890 wakaba 1.18 element {
7891     node-name: 'a';
7892     attribute {
7893     node-name: 'at';
7894     value: 'v';
7895 wakaba 1.16 }
7896     }
7897     }
7898 wakaba 1.18 }
7899 wakaba 1.16 @@XMLTest:
7900 wakaba 1.18 @@@QName: xp.stag.etag.attr.3.test
7901 wakaba 1.16 @@@DEnt:
7902     @@@@test:value:
7903 wakaba 1.18 <root><a at ="v"></a></root>
7904 wakaba 1.16 @@@test:domTree:
7905     document {
7906 wakaba 1.18 element {
7907     element {
7908     node-name: 'a';
7909     attribute {
7910     node-name: 'at';
7911     value: 'v';
7912     }
7913 wakaba 1.16 }
7914     }
7915 wakaba 1.18 }
7916     @@XMLTest:
7917     @@@QName: xp.stag.etag.attr.4.test
7918     @@@DEnt:
7919     @@@@test:value:
7920     <root><a at= "v"></a></root>
7921     @@@test:domTree:
7922     document {
7923 wakaba 1.16 element {
7924 wakaba 1.18 element {
7925     node-name: 'a';
7926     attribute {
7927     node-name: 'at';
7928     value: 'v';
7929 wakaba 1.16 }
7930     }
7931 wakaba 1.18 }
7932     }
7933     @@XMLTest:
7934     @@@QName: xp.stag.etag.attr.5.test
7935     @@@DEnt:
7936     @@@@test:value:
7937     <root><a at='v'></a></root>
7938     @@@test:domTree:
7939     document {
7940     element {
7941     element {
7942     node-name: 'a';
7943     attribute {
7944     node-name: 'at';
7945     value: 'v';
7946 wakaba 1.16 }
7947     }
7948     }
7949 wakaba 1.18 }
7950 wakaba 1.16 @@XMLTest:
7951 wakaba 1.18 @@@QName: xp.stag.etag.attr.6.test
7952 wakaba 1.16 @@@DEnt:
7953     @@@@test:value:
7954 wakaba 1.18 <root><a at= 'v' ></a></root>
7955 wakaba 1.6 @@@test:domTree:
7956     document {
7957 wakaba 1.18 element {
7958     element {
7959     node-name: 'a';
7960     attribute {
7961     node-name: 'at';
7962     value: 'v';
7963     }
7964 wakaba 1.11 }
7965 wakaba 1.6 }
7966 wakaba 1.18 }
7967     @@XMLTest:
7968     @@@QName: xp.stag.etag.attr.attr.1.test
7969     @@@DEnt:
7970     @@@@test:value:
7971     <root><a at="v" tr="w"></a></root>
7972     @@@test:domTree:
7973     document {
7974 wakaba 1.6 element {
7975 wakaba 1.18 element {
7976     node-name: 'a';
7977     attribute {
7978     node-name: 'at';
7979     value: 'v';
7980 wakaba 1.6 }
7981 wakaba 1.18 attribute {
7982     node-name: 'tr';
7983     value: 'w';
7984 wakaba 1.6 }
7985     }
7986     }
7987 wakaba 1.18 }
7988 wakaba 1.6 @@XMLTest:
7989 wakaba 1.18 @@@QName: xp.stag.etag.attr.attr.2.test
7990 wakaba 1.6 @@@DEnt:
7991     @@@@test:value:
7992 wakaba 1.18 <root><a tr="w" at="v"></a></root>
7993 wakaba 1.6 @@@test:domTree:
7994     document {
7995 wakaba 1.18 element {
7996     element {
7997     node-name: 'a';
7998     attribute {
7999     node-name: 'at';
8000     value: 'v';
8001     }
8002     attribute {
8003     node-name: 'tr';
8004     value: 'w';
8005 wakaba 1.11 }
8006     }
8007 wakaba 1.6 }
8008 wakaba 1.18 }
8009     @@XMLTest:
8010     @@@QName: xp.stag.etag.attr.no.s.attr.test
8011     @@@DEnt:
8012     @@@@test:value:
8013     <root><a at="v"tr="w"></a></root>
8014     @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 16)..(1, 17); }
8015     @@XMLTest:
8016     @@@QName: xp.etag.attr.1.test
8017     @@@DEnt:
8018     @@@@test:value:
8019     <root><a at="v" tr="w"></a b="c"></root>
8020     @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 28); }
8021     @@XMLTest:
8022     @@@QName: xp.etag.no.etagc.1.test
8023     @@@DEnt:
8024     @@@@test:value:
8025     <root><a at="v" tr="w"></a</root>
8026     @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 27)..(1, 28); }
8027     @@XMLTest:
8028     @@@QName: xp.etag.no.etagc.2.test
8029     @@@DEnt:
8030     @@@@test:value:
8031     <root><a at="v" tr="w"></a </root>
8032     @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 29)..(1, 30); }
8033     @@XMLTest:
8034     @@@QName: xp.mtag.attr.1.test
8035     @@@DEnt:
8036     @@@@test:value:
8037     <root><a b="c"/></root>
8038     @@@test:domTree:
8039     document {
8040 wakaba 1.6 element {
8041 wakaba 1.18 element {
8042     node-name: 'a';
8043     attribute {
8044     node-name: 'b';
8045     value: 'c';
8046 wakaba 1.6 }
8047     }
8048 wakaba 1.8 }
8049 wakaba 1.18 }
8050 wakaba 1.11 @@XMLTest:
8051 wakaba 1.18 @@@QName: xp.mtag.attr.2.test
8052 wakaba 1.11 @@@DEnt:
8053     @@@@test:value:
8054 wakaba 1.18 <root><a b="c" /></root>
8055 wakaba 1.11 @@@test:domTree:
8056     document {
8057 wakaba 1.18 element {
8058     element {
8059     node-name: 'a';
8060     attribute {
8061     node-name: 'b';
8062     value: 'c';
8063     }
8064 wakaba 1.11 }
8065     }
8066 wakaba 1.18 }
8067 wakaba 1.11 @@XMLTest:
8068 wakaba 1.18 @@@QName: xp.mtag.attr.3.test
8069 wakaba 1.11 @@@DEnt:
8070     @@@@test:value:
8071 wakaba 1.18 <root><a b='c'/></root>
8072 wakaba 1.11 @@@test:domTree:
8073     document {
8074     element {
8075 wakaba 1.18 element {
8076     node-name: 'a';
8077     attribute {
8078     node-name: 'b';
8079     value: 'c';
8080     }
8081     }
8082 wakaba 1.11 }
8083 wakaba 1.18 }
8084 wakaba 1.11 @@XMLTest:
8085 wakaba 1.18 @@@QName: xp.mtag.attr.4.test
8086 wakaba 1.11 @@@DEnt:
8087     @@@@test:value:
8088 wakaba 1.18 <root><a b="c" d="e"/></root>
8089 wakaba 1.11 @@@test:domTree:
8090     document {
8091     element {
8092 wakaba 1.18 element {
8093     node-name: 'a';
8094     attribute {
8095     node-name: 'b';
8096     value: 'c';
8097     }
8098     attribute {
8099     node-name: 'd';
8100     value: 'e';
8101     }
8102 wakaba 1.11 }
8103     }
8104 wakaba 1.18 }
8105    
8106     @@XMLTest:
8107     @@@QName: xp.attvalue.lt.1.test
8108     @@@DEnt:
8109     @@@@test:value:
8110     <a b="aa<dd"/>
8111     @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 9); }
8112     @@XMLTest:
8113     @@@QName: xp.attvalue.lt.2.test
8114     @@@DEnt:
8115     @@@@test:value:
8116     <a b='aa<dd'/>
8117     @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 9); }
8118     @@XMLTest:
8119     @@@QName: xp.attvalue.amp.1.test
8120     @@@DEnt:
8121     @@@@test:value:
8122     <a b="aa& dd"/>
8123     @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 9)..(1, 12); }
8124     @@XMLTest:
8125     @@@QName: xp.attvalue.amp.2.test
8126     @@@DEnt:
8127     @@@@test:value:
8128     <a b='aa& dd'/>
8129     @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 9)..(1, 12); }
8130     @@XMLTest:
8131     @@@QName: xp.attvalue.amp.3.test
8132     @@@DEnt:
8133     @@@@test:value:
8134     <a b="aa&# dd"/>
8135     @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 9)..(1, 13); }
8136     @@XMLTest:
8137     @@@QName: xp.attvalue.amp.4.test
8138     @@@DEnt:
8139     @@@@test:value:
8140     <a b="aa&#x dd"/>
8141     @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 9)..(1, 14); }
8142    
8143     @@XMLTest:
8144     @@@QName: xp.unique.att.spec.1.test
8145     @@@DEnt:
8146     @@@@test:value:
8147     <a b="c" b="d"/>
8148     @@@c:erred: <[[xp|wf-unique-att-spec]]> { (1, 4)..(1, 14); }
8149     @@XMLTest:
8150     @@@QName: xp.unique.att.spec.2.test
8151     @@@DEnt:
8152     @@@@test:value:
8153     <a d:b="c" d:b="d" xmlns:d="about:2"/>
8154     @@@c:erred: <[[xp|wf-unique-att-spec]]> { (1, 4)..(1, 18); }
8155    
8156     @@XMLTest:
8157     @@@QName: xp.no.external.entity.references.1.test
8158     @@@DEnt:
8159     @@@@test:value:
8160     <!DOCTYPE a [
8161     <!ENTITY ent SYSTEM "something">
8162     ]>
8163     <a b="c&ent;"/>
8164     @@@c:erred: <[[xp|wf-no-external-entity-references]]> { (4, 8)..(4, 12); }
8165     @@XMLTest:
8166     @@@QName: xp.no.external.entity.references.2.test
8167     @@@DEnt:
8168     @@@@test:value:
8169     <!DOCTYPE a [
8170     <!NOTATION n SYSTEM "notation">
8171     <!ENTITY ent SYSTEM "something" NDATA n>
8172     ]>
8173     <a b="c&ent;"/>
8174     @@@c:erred: <[[xp|wf-no-external-entity-references]]> { (5, 8)..(5, 12); }
8175     @@XMLTest:
8176     @@@QName: xp.no.external.entity.references.3.test
8177     @@@DEnt:
8178     @@@@test:value:
8179     <!DOCTYPE a [
8180     <!ENTITY ent SYSTEM "something">
8181     <!ENTITY ent2 "ddd&ent;">
8182     ]>
8183     <a b="c&ent2;"/>
8184     @@@c:erred: <[[xp|wf-no-external-entity-references]]> { (1, 4)..(1, 8); }
8185     @@XMLTest:
8186     @@@QName: xp.no.external.entity.references.4.test
8187     @@@DEnt:
8188     @@@@test:value:
8189     <!DOCTYPE a [
8190     <!NOTATION n SYSTEM "notation">
8191     <!ENTITY ent SYSTEM "something" NDATA n>
8192     <!ENTITY ent2 "ddd&ent;">
8193     ]>
8194     <a b="c&ent2;"/>
8195     @@@c:erred: <[[xp|wf-no-external-entity-references]]> { (1, 4)..(1, 8); }
8196 wakaba 1.23 @@@c:erred: <[[xp|wf-parsed-entity]]> { }
8197 wakaba 1.18 @@XMLTest:
8198     @@@QName: xp.no.lt.in.attr.value.1.test
8199     @@@DEnt:
8200     @@@@test:value:
8201     <!DOCTYPE a [
8202     <!ENTITY ent "aa<bb">
8203     ]>
8204     <a b="c&ent;"/>
8205     @@@c:erred: <[[xp|wf-no-lt-in-attribute-values]]> { (1, 3); }
8206 wakaba 1.20 @@@c:erred:
8207     @@@@@: <[[xp|wf-syntax-error]]> { (1, 3)..(1, 6); }
8208     @@@@enImplNote: When entity node is created.
8209 wakaba 1.18 @@XMLTest:
8210     @@@QName: xp.no.lt.in.attr.value.2.test
8211     @@@DEnt:
8212     @@@@test:value:
8213     <!DOCTYPE a [
8214     <!ENTITY ent "aa<bb">
8215     <!ENTITY ent2 "ccc&ent;">
8216     ]>
8217     <a b="c&ent2;"/>
8218     @@@c:erred: <[[xp|wf-no-lt-in-attribute-values]]> { (1, 3); }
8219 wakaba 1.20 @@@c:erred:
8220     @@@@@: <[[xp|wf-syntax-error]]> { (1, 3)..(1, 6); }
8221     @@@@enImplNote: When entity node is created.
8222 wakaba 1.18 @@XMLTest:
8223     @@@QName: xp.no.lt.in.attr.value.3.test
8224     @@@DEnt:
8225     @@@@test:value:
8226     <!DOCTYPE a [
8227     <!ENTITY ent "aa&#x3C;bb">
8228     ]>
8229     <a b="c&ent;"/>
8230     @@@c:erred: <[[xp|wf-no-lt-in-attribute-values]]> { (1, 3); }
8231 wakaba 1.20 @@@c:erred:
8232     @@@@@: <[[xp|wf-syntax-error]]> { (1, 3)..(1, 6); }
8233     @@@@enImplNote: When entity node is created.
8234 wakaba 1.18 @@XMLTest:
8235     @@@QName: xp.no.lt.in.attr.value.4.test
8236     @@@DEnt:
8237     @@@@test:value:
8238     <!DOCTYPE a [
8239     <!ENTITY ent "aa&#x3C;bb">
8240     <!ENTITY ent2 "ccc&ent;">
8241     ]>
8242     <a b="c&ent2;"/>
8243     @@@c:erred: <[[xp|wf-no-lt-in-attribute-values]]> { (1, 3); }
8244 wakaba 1.20 @@@c:erred:
8245     @@@@@: <[[xp|wf-syntax-error]]> { (1, 3)..(1, 6); }
8246     @@@@enImplNote: When entity node is created.
8247 wakaba 1.11 @@XMLTest:
8248 wakaba 1.18 @@@QName: xp.ger.lt.in.attr.value.1.test
8249 wakaba 1.11 @@@DEnt:
8250     @@@@test:value:
8251     <!DOCTYPE a [
8252 wakaba 1.18 <!ENTITY ent "aa&lt;bb">
8253 wakaba 1.11 ]>
8254 wakaba 1.18 <a b="c&ent;"/>
8255 wakaba 1.11 @@@test:domTree:
8256     document {
8257     document-type {
8258     general-entity {
8259     node-name: 'ent';
8260 wakaba 1.18 text-content: 'aa<bb';
8261 wakaba 1.11 }
8262     }
8263     element {
8264 wakaba 1.18 attribute {
8265     node-name: 'b';
8266     text { data: 'c'; }
8267     general-entity-reference {
8268 wakaba 1.19 is-expanded: true;
8269 wakaba 1.18 node-name: 'ent';
8270     text-content: 'aa<bb';
8271     }
8272     }
8273 wakaba 1.11 }
8274     }
8275     @@XMLTest:
8276 wakaba 1.18 @@@QName: xp.ger.lt.in.attr.value.2.test
8277 wakaba 1.11 @@@DEnt:
8278     @@@@test:value:
8279     <!DOCTYPE a [
8280 wakaba 1.18 <!ENTITY ent "aa&lt;bb">
8281     <!ENTITY ent2 "ccc&ent;">
8282 wakaba 1.11 ]>
8283 wakaba 1.18 <a b="c&ent2;"/>
8284 wakaba 1.11 @@@test:domTree:
8285     document {
8286     document-type {
8287     general-entity {
8288 wakaba 1.18 node-name: 'ent';
8289     text-content: 'aa<bb';
8290     }
8291     general-entity {
8292     node-name: 'ent2';
8293     text { data: 'ccc'; }
8294     general-entity-reference {
8295     node-name: 'ent';
8296     text-content: 'aa<bb';
8297 wakaba 1.19 is-expanded: true;
8298 wakaba 1.18 }
8299 wakaba 1.11 }
8300     }
8301     element {
8302 wakaba 1.18 attribute {
8303     node-name: 'b';
8304     text { data: 'c'; }
8305     general-entity-reference {
8306     node-name: 'ent2';
8307     text { data: 'ccc'; }
8308     general-entity-reference {
8309     node-name: 'ent';
8310     text-content: 'aa<bb';
8311 wakaba 1.19 is-expanded: true;
8312 wakaba 1.18 }
8313 wakaba 1.19 is-expanded: true;
8314 wakaba 1.18 }
8315     }
8316 wakaba 1.11 }
8317     }
8318    
8319 wakaba 1.8 @@XMLTest:
8320 wakaba 1.18 @@@QName: xp.doctype.intsubset.pi.test
8321 wakaba 1.8 @@@DEnt:
8322     @@@@test:value:
8323     <!DOCTYPE a [
8324 wakaba 1.18 <?pi data ?>
8325 wakaba 1.8 ]>
8326     <a></a>
8327     @@@test:domTree:
8328     document {
8329     xml-version: '1.0';
8330     xml-encoding: null;
8331     xml-standalone: false;
8332     document-type {
8333     node-name: 'a';
8334 wakaba 1.18 pi {
8335     target: 'pi';
8336     data: 'data ';
8337 wakaba 1.8 }
8338     }
8339     element {
8340     namespace-uri: null;
8341 wakaba 1.18 prefix: null;
8342 wakaba 1.8 local-name: 'a';
8343 wakaba 1.18 text-content: '';
8344 wakaba 1.8 }
8345     }
8346 wakaba 1.18 @@@enImplNote:
8347     A DOM PI node in doctype node is a manakai extension.
8348    
8349    
8350 wakaba 1.8 @@XMLTest:
8351 wakaba 1.18 @@@QName: xp.doctype.intsubset.entity.general.internal.test
8352 wakaba 1.8 @@@DEnt:
8353     @@@@test:value:
8354     <!DOCTYPE a [
8355 wakaba 1.18 <!ENTITY entity "entity value">
8356 wakaba 1.8 ]>
8357     <a></a>
8358     @@@test:domTree:
8359     document {
8360     xml-version: '1.0';
8361     xml-encoding: null;
8362     xml-standalone: false;
8363     document-type {
8364     node-name: 'a';
8365 wakaba 1.18 general-entity {
8366     node-name: 'entity';
8367     text-content: 'entity value';
8368     has-replacement-tree: true;
8369 wakaba 1.8 }
8370     }
8371     element {
8372     namespace-uri: null;
8373 wakaba 1.18 prefix: null;
8374 wakaba 1.8 local-name: 'a';
8375 wakaba 1.18 text-content: '';
8376 wakaba 1.8 }
8377     }
8378     @@XMLTest:
8379 wakaba 1.18 @@@QName: xp.doctype.intsubset.entity.parameter.internal.test
8380 wakaba 1.8 @@@DEnt:
8381     @@@@test:value:
8382     <!DOCTYPE a [
8383 wakaba 1.18 <!ENTITY % entity "entity value">
8384 wakaba 1.8 ]>
8385     <a></a>
8386     @@@test:domTree:
8387     document {
8388     xml-version: '1.0';
8389     xml-encoding: null;
8390     xml-standalone: false;
8391     document-type {
8392     node-name: 'a';
8393     }
8394     element {
8395     namespace-uri: null;
8396 wakaba 1.18 prefix: null;
8397 wakaba 1.8 local-name: 'a';
8398 wakaba 1.18 text-content: '';
8399 wakaba 1.8 }
8400     }
8401 wakaba 1.18
8402 wakaba 1.8 @@XMLTest:
8403 wakaba 1.18 @@@QName: xp.doctype.internal.entity.root.element.text.only.test
8404 wakaba 1.8 @@@DEnt:
8405     @@@@test:value:
8406     <!DOCTYPE a [
8407 wakaba 1.18 <!ENTITY entity "entity value">
8408 wakaba 1.8 ]>
8409 wakaba 1.18 <a>&entity;</a>
8410 wakaba 1.8 @@@test:domTree:
8411     document {
8412     xml-version: '1.0';
8413     xml-encoding: null;
8414     xml-standalone: false;
8415     document-type {
8416     node-name: 'a';
8417 wakaba 1.18 general-entity {
8418     node-name: 'entity';
8419     text-content: 'entity value';
8420     has-replacement-tree: true;
8421 wakaba 1.8 }
8422     }
8423     element {
8424     namespace-uri: null;
8425 wakaba 1.18 prefix: null;
8426 wakaba 1.8 local-name: 'a';
8427 wakaba 1.18 general-entity-reference {
8428     node-name: 'entity';
8429     text {
8430     data: 'entity value';
8431     }
8432 wakaba 1.19 is-expanded: true;
8433 wakaba 1.10 }
8434 wakaba 1.9 }
8435     }
8436     @@XMLTest:
8437 wakaba 1.18 @@@QName: xp.doctype.internal.entity.root.element.text.mult.test
8438 wakaba 1.9 @@@DEnt:
8439     @@@@test:value:
8440     <!DOCTYPE a [
8441 wakaba 1.18 <!ENTITY entity "entity value">
8442 wakaba 1.9 ]>
8443 wakaba 1.18 <a>&entity; and &entity;</a>
8444 wakaba 1.9 @@@test:domTree:
8445     document {
8446     xml-version: '1.0';
8447     xml-encoding: null;
8448     xml-standalone: false;
8449     document-type {
8450     node-name: 'a';
8451 wakaba 1.18 general-entity {
8452     node-name: 'entity';
8453     text-content: 'entity value';
8454     has-replacement-tree: true;
8455 wakaba 1.9 }
8456     }
8457     element {
8458     namespace-uri: null;
8459 wakaba 1.18 prefix: null;
8460 wakaba 1.9 local-name: 'a';
8461 wakaba 1.18 general-entity-reference {
8462     node-name: 'entity';
8463     text {
8464     data: 'entity value';
8465     }
8466 wakaba 1.19 is-expanded: true;
8467 wakaba 1.18 }
8468     text { data: ' and '; }
8469     general-entity-reference {
8470     node-name: 'entity';
8471     text {
8472     data: 'entity value';
8473     }
8474 wakaba 1.19 is-expanded: true;
8475 wakaba 1.10 }
8476 wakaba 1.9 }
8477     }
8478     @@XMLTest:
8479 wakaba 1.18 @@@QName: xp.doctype.internal.entity.root.element.text.element.test
8480 wakaba 1.9 @@@DEnt:
8481     @@@@test:value:
8482     <!DOCTYPE a [
8483 wakaba 1.18 <!ENTITY entity "entity <p>value</p> with <e>element</e> ">
8484 wakaba 1.9 ]>
8485 wakaba 1.18 <a>&entity;</a>
8486     @@@test:domTree:
8487     document {
8488     xml-version: '1.0';
8489     xml-encoding: null;
8490     xml-standalone: false;
8491     document-type {
8492     node-name: 'a';
8493     general-entity {
8494     node-name: 'entity';
8495     has-replacement-tree: true;
8496     text { data: 'entity '; }
8497     element {
8498     node-name: 'p';
8499     text-content: 'value';
8500     }
8501     text { data: ' with '; }
8502     element {
8503     node-name: 'e';
8504     text-content: 'element';
8505     }
8506 wakaba 1.20 text { data: ' '; }
8507 wakaba 1.18 }
8508     }
8509     element {
8510     namespace-uri: null;
8511     prefix: null;
8512     local-name: 'a';
8513     general-entity-reference {
8514     node-name: 'entity';
8515 wakaba 1.19 is-expanded: true;
8516 wakaba 1.18 text {
8517     data: 'entity ';
8518     }
8519     element {
8520     namespace-uri: null;
8521     prefix: null;
8522     local-name: 'p';
8523     text {
8524     data: 'value';
8525     }
8526     }
8527     text {
8528     data: ' with ';
8529     }
8530     element {
8531     namespace-uri: null;
8532     prefix: null;
8533     local-name: 'e';
8534     text {
8535     data: 'element';
8536     }
8537     }
8538     text {
8539     data: ' ';
8540     }
8541     }
8542     }
8543     }
8544     @@XMLTest:
8545     @@@QName: xp.doctype.internal.entity.root.element.text.in.ent.test
8546     @@@DEnt:
8547     @@@@test:value:
8548     <!DOCTYPE a [
8549     <!ENTITY entity1 "entity value">
8550     <!ENTITY entity2 "e&entity1;n">
8551     ]>
8552     <a>&entity2;</a>
8553     @@@test:domTree:
8554     document {
8555     xml-version: '1.0';
8556     xml-encoding: null;
8557     xml-standalone: false;
8558     document-type {
8559     node-name: 'a';
8560     general-entity {
8561     node-name: 'entity1';
8562     text-content: 'entity value';
8563     }
8564     general-entity {
8565     node-name: 'entity2';
8566     text { data: 'e'; }
8567     general-entity-reference {
8568     node-name: 'entity1';
8569     text-content: 'entity value';
8570     is-expanded: true;
8571     }
8572     text { data: 'n'; }
8573     }
8574     }
8575     element {
8576     namespace-uri: null;
8577     prefix: null;
8578     local-name: 'a';
8579     general-entity-reference {
8580     node-name: 'entity2';
8581     text { data: 'e'; }
8582 wakaba 1.19 is-expanded: true;
8583 wakaba 1.18 general-entity-reference {
8584     node-name: 'entity1';
8585     text {
8586     data: 'entity value';
8587     }
8588 wakaba 1.19 is-expanded: true;
8589 wakaba 1.18 }
8590     text { data: 'n'; }
8591     }
8592     }
8593     }
8594    
8595     @@XMLTest:
8596     @@@QName: xp.doctype.entity.value.charref.test
8597     @@@DEnt:
8598     @@@@test:value:
8599     <!DOCTYPE a [
8600     <!ENTITY entity1 "entity &#x21;value&#35;">
8601     <!ENTITY entity2 '&#x21;value&#35;'>
8602     ]>
8603     <a></a>
8604     @@@test:domTree:
8605     document {
8606     document-type {
8607     general-entity {
8608     node-name: 'entity1';
8609     text-content: 'entity !value#';
8610     has-replacement-tree: true;
8611     }
8612     general-entity {
8613     node-name: 'entity2';
8614     text-content: '!value#';
8615     has-replacement-tree: true;
8616     }
8617     }
8618     element { }
8619     }
8620    
8621     @@XMLTest:
8622     @@@QName: xp.predefined.in.content.test
8623     @@@DEnt:
8624     @@@@test:value:
8625     <a>_&lt;_&gt;_&quot;_&apos;_&amp;_</a>
8626     @@@test:domTree:
8627     document {
8628     element {
8629     text-content: '_<_>_"_' U+0027 '_&_';
8630     }
8631     }
8632     @@XMLTest:
8633     @@@QName: xp.predefined.in.attr.test
8634     @@@DEnt:
8635     @@@@test:value:
8636     <a at="_&lt;_&gt;_&quot;_&apos;_&amp;_"></a>
8637     @@@test:domTree:
8638     document {
8639     element {
8640     attribute {
8641     node-name: 'at';
8642     text-content: '_<_>_"_' U+0027 '_&_';
8643     }
8644     }
8645     }
8646     @@XMLTest:
8647     @@@QName: xp.predefined.in.content.in.entity.test
8648     @@@DEnt:
8649     @@@@test:value:
8650     <!DOCTYPE a [
8651     <!ENTITY ent "_&lt;_&gt;_&quot;_&apos;_&amp;_">
8652     ]>
8653     <a>&ent;</a>
8654     @@@test:domTree:
8655     document {
8656     document-type {
8657     general-entity {
8658     node-name: 'ent';
8659     text-content: '_<_>_"_' U+0027 '_&_';
8660     }
8661     }
8662     element {
8663     text-content: '_<_>_"_' U+0027 '_&_';
8664     }
8665     }
8666     @@XMLTest:
8667     @@@QName: xp.predefined.decl.ignore.test
8668     @@@DEnt:
8669     @@@@test:value:
8670     <!DOCTYPE a [
8671     <!ENTITY lt "&#x26;#x3C;">
8672     <!ENTITY gt "&#x3E;">
8673     <!ENTITY amp "&#x26;#x26;">
8674     <!ENTITY quot "&#x22;">
8675     <!ENTITY apos "&#x27;">
8676     <!ENTITY other "other">
8677     ]>
8678     <a>_&lt;_&gt;_&quot;_&apos;_&amp;_&other;_</a>
8679     @@@test:domTree:
8680     document {
8681     document-type {
8682     general-entity {
8683     node-name: 'other';
8684     text-content: 'other';
8685     }
8686     }
8687     element {
8688     text-content: '_<_>_"_' U+0027 '_&_other_';
8689     }
8690     }
8691    
8692     @@XMLTest:
8693     @@@QName: xp.doctype.internal.attr.empty.test
8694     @@@DEnt:
8695     @@@@test:value:
8696     <!DOCTYPE a [
8697     <!ATTLIST a>
8698     ]>
8699     <a></a>
8700     @@@test:domTree:
8701     document {
8702     xml-version: '1.0';
8703     xml-encoding: null;
8704     xml-standalone: false;
8705     document-type {
8706     node-name: 'a';
8707     element-type-definition {
8708     node-name: 'a';
8709     }
8710     }
8711     element {
8712     namespace-uri: null;
8713     local-name: 'a';
8714     }
8715     }
8716     @@XMLTest:
8717     @@@QName: xp.doctype.internal.attr.cdata.implied.test
8718     @@@DEnt:
8719     @@@@test:value:
8720     <!DOCTYPE a [
8721     <!ATTLIST a
8722     at CDATA #IMPLIED
8723     >
8724     ]>
8725     <a></a>
8726 wakaba 1.9 @@@test:domTree:
8727     document {
8728     xml-version: '1.0';
8729     xml-encoding: null;
8730     xml-standalone: false;
8731     document-type {
8732     node-name: 'a';
8733     element-type-definition {
8734     node-name: 'a';
8735     attribute-definition {
8736     node-name: 'at';
8737 wakaba 1.18 declared-type: const (CDATA_ATTR);
8738 wakaba 1.9 allowed-tokens: DOMStringList ();
8739 wakaba 1.18 default-type: const (IMPLIED_DEFAULT);
8740     text-content: '';
8741 wakaba 1.9 }
8742     }
8743     }
8744     element {
8745     namespace-uri: null;
8746     local-name: 'a';
8747 wakaba 1.18 }
8748     }
8749     @@XMLTest:
8750     @@@QName: xp.doctype.internal.attr.types.implied.test
8751     @@@DEnt:
8752     @@@@test:value:
8753     <!DOCTYPE a [
8754     <!ATTLIST a
8755     at1 ID #IMPLIED
8756     at2 IDREF #IMPLIED
8757     at3 IDREFS #IMPLIED
8758     at4 ENTITY #IMPLIED
8759     at5 ENTITIES #IMPLIED
8760     at6 NMTOKEN #IMPLIED
8761     at7 NMTOKENS #IMPLIED
8762     at8 NOTATION (n1 | n2|n3) #IMPLIED
8763     at9 (e1| e2| e3 ) #IMPLIED
8764     >
8765     ]>
8766     <a></a>
8767     @@@test:domTree:
8768     document {
8769     xml-version: '1.0';
8770     xml-encoding: null;
8771     xml-standalone: false;
8772     document-type {
8773     node-name: 'a';
8774     element-type-definition {
8775     node-name: 'a';
8776     attribute-definition {
8777     node-name: 'at1';
8778     declared-type: const (ID_ATTR);
8779     allowed-tokens: DOMStringList ();
8780     default-type: const (IMPLIED_DEFAULT);
8781     text-content: '';
8782     }
8783     attribute-definition {
8784     node-name: 'at2';
8785     declared-type: const (IDREF_ATTR);
8786     allowed-tokens: DOMStringList ();
8787     default-type: const (IMPLIED_DEFAULT);
8788     text-content: '';
8789     }
8790     attribute-definition {
8791     node-name: 'at3';
8792     declared-type: const (IDREFS_ATTR);
8793     allowed-tokens: DOMStringList ();
8794     default-type: const (IMPLIED_DEFAULT);
8795     text-content: '';
8796     }
8797     attribute-definition {
8798     node-name: 'at4';
8799     declared-type: const (ENTITY_ATTR);
8800     allowed-tokens: DOMStringList ();
8801     default-type: const (IMPLIED_DEFAULT);
8802     text-content: '';
8803     }
8804     attribute-definition {
8805     node-name: 'at5';
8806     declared-type: const (ENTITIES_ATTR);
8807     allowed-tokens: DOMStringList ();
8808     default-type: const (IMPLIED_DEFAULT);
8809     text-content: '';
8810     }
8811     attribute-definition {
8812     node-name: 'at6';
8813     declared-type: const (NMTOKEN_ATTR);
8814     allowed-tokens: DOMStringList ();
8815     default-type: const (IMPLIED_DEFAULT);
8816     text-content: '';
8817     }
8818     attribute-definition {
8819     node-name: 'at7';
8820     declared-type: const (NMTOKENS_ATTR);
8821     allowed-tokens: DOMStringList ();
8822     default-type: const (IMPLIED_DEFAULT);
8823     text-content: '';
8824     }
8825     attribute-definition {
8826     node-name: 'at8';
8827     declared-type: const (NOTATION_ATTR);
8828     allowed-tokens: DOMStringList ('n1', 'n2', 'n3');
8829     default-type: const (IMPLIED_DEFAULT);
8830     text-content: '';
8831     }
8832     attribute-definition {
8833     node-name: 'at9';
8834     declared-type: const (ENUMERATION_ATTR);
8835     allowed-tokens: DOMStringList ('e1', 'e2', 'e3');
8836     default-type: const (IMPLIED_DEFAULT);
8837     text-content: '';
8838     }
8839     }
8840     }
8841     element {
8842     namespace-uri: null;
8843     local-name: 'a';
8844     }
8845     }
8846     @@XMLTest:
8847     @@@QName: xp.doctype.internal.attr.cdata.defaults.test
8848     @@@DEnt:
8849     @@@@test:value:
8850     <!DOCTYPE a [
8851     <!ATTLIST a
8852     at1 CDATA #IMPLIED
8853     at2 CDATA #REQUIRED
8854     at3 CDATA #FIXED "value3"
8855     at4 CDATA "value4"
8856     at5 CDATA #FIXED 'value5'
8857     at6 CDATA 'value6'
8858     >
8859     ]>
8860     <a></a>
8861     @@@test:domTree:
8862     document {
8863     xml-version: '1.0';
8864     xml-encoding: null;
8865     xml-standalone: false;
8866     document-type {
8867     node-name: 'a';
8868     element-type-definition {
8869     node-name: 'a';
8870     attribute-definition {
8871     node-name: 'at1';
8872     declared-type: const (CDATA_ATTR);
8873     allowed-tokens: DOMStringList ();
8874     default-type: const (IMPLIED_DEFAULT);
8875     text-content: '';
8876     }
8877     attribute-definition {
8878     node-name: 'at2';
8879     declared-type: const (CDATA_ATTR);
8880     allowed-tokens: DOMStringList ();
8881     default-type: const (REQUIRED_DEFAULT);
8882     text-content: '';
8883     }
8884     attribute-definition {
8885     node-name: 'at3';
8886     declared-type: const (CDATA_ATTR);
8887     allowed-tokens: DOMStringList ();
8888     default-type: const (FIXED_DEFAULT);
8889     text-content: 'value3';
8890     }
8891     attribute-definition {
8892     node-name: 'at4';
8893     declared-type: const (CDATA_ATTR);
8894     allowed-tokens: DOMStringList ();
8895     default-type: const (EXPLICIT_DEFAULT);
8896     text-content: 'value4';
8897     }
8898     attribute-definition {
8899     node-name: 'at5';
8900     declared-type: const (CDATA_ATTR);
8901     allowed-tokens: DOMStringList ();
8902     default-type: const (FIXED_DEFAULT);
8903     text-content: 'value5';
8904     }
8905     attribute-definition {
8906     node-name: 'at6';
8907     declared-type: const (CDATA_ATTR);
8908     allowed-tokens: DOMStringList ();
8909     default-type: const (EXPLICIT_DEFAULT);
8910     text-content: 'value6';
8911     }
8912     }
8913     }
8914     element {
8915     namespace-uri: null;
8916     local-name: 'a';
8917     attribute {
8918     node-name: 'at3';
8919     text-content: 'value3';
8920     specified: false;
8921     }
8922     attribute {
8923     node-name: 'at4';
8924     text-content: 'value4';
8925     specified: false;
8926     }
8927     attribute {
8928     node-name: 'at5';
8929     text-content: 'value5';
8930     specified: false;
8931     }
8932     attribute {
8933     node-name: 'at6';
8934     text-content: 'value6';
8935     specified: false;
8936     }
8937     }
8938     }
8939    
8940     @@XMLTest:
8941     @@@QName: xp.doctype.internal.attr.cdata.default.normalize.test
8942     @@@DEnt:
8943     @@@@test:value:
8944     <!DOCTYPE a [
8945     <!ATTLIST a
8946     at CDATA " default &#x0A;value "
8947     >
8948     ]>
8949     <a></a>
8950     @@@test:domTree:
8951     document {
8952     xml-version: '1.0';
8953     xml-encoding: null;
8954     xml-standalone: false;
8955     document-type {
8956     node-name: 'a';
8957     element-type-definition {
8958     node-name: 'a';
8959     attribute-definition {
8960     node-name: 'at';
8961     declared-type: const (CDATA_ATTR);
8962     allowed-tokens: DOMStringList ();
8963     default-type: const (EXPLICIT_DEFAULT);
8964     text-content: ' default ' U+000A 'value ';
8965     }
8966     }
8967     }
8968     element {
8969     namespace-uri: null;
8970     local-name: 'a';
8971     attribute {
8972     node-name: 'at';
8973     text-content: ' default ' U+000A 'value ';
8974     specified: false;
8975     }
8976     }
8977     }
8978     @@XMLTest:
8979     @@@QName: xp.doctype.internal.attr.nmtoken.default.normalize.test
8980     @@@DEnt:
8981     @@@@test:value:
8982     <!DOCTYPE a [
8983     <!ATTLIST a
8984     at NMTOKEN " default &#x0A;value "
8985     >
8986     ]>
8987     <a></a>
8988     @@@test:domTree:
8989     document {
8990     xml-version: '1.0';
8991     xml-encoding: null;
8992     xml-standalone: false;
8993     document-type {
8994     node-name: 'a';
8995     element-type-definition {
8996     node-name: 'a';
8997     attribute-definition {
8998     node-name: 'at';
8999     declared-type: const (NMTOKEN_ATTR);
9000     allowed-tokens: DOMStringList ();
9001     default-type: const (EXPLICIT_DEFAULT);
9002     text-content: ' default ' U+000A 'value ';
9003     }
9004     }
9005     }
9006     element {
9007     namespace-uri: null;
9008     local-name: 'a';
9009     attribute {
9010     node-name: 'at';
9011     text-content: ' default ' U+000A 'value ';
9012     specified: false;
9013     }
9014     }
9015     }
9016    
9017     @@XMLTest:
9018     @@@QName: xp.doctype.attrtype.no-value.test
9019     @@@DEnt:
9020     @@@@test:value:
9021     <!DOCTYPE a>
9022     <a at=" at value "></a>
9023     @@@test:domTree:
9024     document {
9025     xml-version: '1.0';
9026     xml-encoding: null;
9027     xml-standalone: false;
9028     document-type { }
9029     element {
9030     namespace-uri: null;
9031     local-name: 'a';
9032     attribute {
9033     namespace-uri: null;
9034     local-name: 'at';
9035     value: ' at value ';
9036     text {
9037     data: ' at value ';
9038     }
9039     schema-type-info: TypeInfo (null, null);
9040     specified: true;
9041     }
9042     }
9043     }
9044     @@XMLTest:
9045     @@@QName: xp.doctype.attrtype.cdata.test
9046     @@@DEnt:
9047     @@@@test:value:
9048     <!DOCTYPE a [
9049     <!ATTLIST a
9050     at CDATA #IMPLIED
9051     >
9052     ]>
9053     <a at=" at value "></a>
9054     @@@test:domTree:
9055     document {
9056     xml-version: '1.0';
9057     xml-encoding: null;
9058     xml-standalone: false;
9059     document-type { }
9060     element {
9061     namespace-uri: null;
9062     local-name: 'a';
9063     attribute {
9064     namespace-uri: null;
9065     local-name: 'at';
9066     value: ' at value ';
9067     text {
9068     data: ' at value ';
9069     }
9070     schema-type-info:
9071     TypeInfo ('http://www.w3.org/TR/REC-xml', 'CDATA');
9072     specified: true;
9073     }
9074     }
9075     }
9076     @@XMLTest:
9077     @@@QName: xp.doctype.attrtype.nmtoken.test
9078     @@@DEnt:
9079     @@@@test:value:
9080     <!DOCTYPE a [
9081     <!ATTLIST a
9082     at NMTOKEN #IMPLIED
9083     >
9084     ]>
9085     <a at=" at value "></a>
9086     @@@test:domTree:
9087     document {
9088     xml-version: '1.0';
9089     xml-encoding: null;
9090     xml-standalone: false;
9091     document-type { }
9092     element {
9093     namespace-uri: null;
9094     local-name: 'a';
9095     attribute {
9096     namespace-uri: null;
9097     local-name: 'at';
9098     value: 'at value';
9099     text {
9100     data: ' at value ';
9101     }
9102     schema-type-info:
9103     TypeInfo ('http://www.w3.org/TR/REC-xml', 'NMTOKEN');
9104     specified: true;
9105     }
9106     }
9107     }
9108    
9109     @@XMLTest:
9110     @@@QName: xp.doctype.attr.normalization.1.test
9111     @@@DEnt:
9112     @@@@test:value:
9113     <a at=" at &#xA;value "></a>
9114     @@@test:domTree:
9115     document {
9116     element {
9117     attribute {
9118     node-name: 'at';
9119     value: ' at ' U+000A 'value ';
9120     schema-type-info: TypeInfo (null, null);
9121     specified: true;
9122     }
9123     }
9124     }
9125     @@XMLTest:
9126     @@@QName: xp.doctype.attr.normalization.2.test
9127     @@@DEnt:
9128     @@@@test:value:
9129     <a at=" at &#xD;value "></a>
9130     @@@test:domTree:
9131     document {
9132     element {
9133     attribute {
9134     value: ' at ' U+000D 'value ';
9135     schema-type-info: TypeInfo (null, null);
9136     specified: true;
9137     }
9138     }
9139     }
9140     @@XMLTest:
9141     @@@QName: xp.doctype.attr.normalization.3.test
9142     @@@DEnt:
9143     @@@@test:value:
9144     <a at=" at &#x9;value "></a>
9145     @@@test:domTree:
9146     document {
9147     element {
9148     attribute {
9149     node-name: 'at';
9150     value: ' at ' U+0009 'value ';
9151     schema-type-info: TypeInfo (null, null);
9152     specified: true;
9153     }
9154     }
9155     }
9156    
9157     @@XMLTest:
9158     @@@QName: xp.doctype.attr.specified.1.test
9159     @@@DEnt:
9160     @@@@test:value:
9161     <!DOCTYPE a [
9162     <!ATTLIST a
9163     at CDATA "default"
9164     >
9165     ]>
9166     <a></a>
9167     @@@test:domTree:
9168     document {
9169     document-type { }
9170     element {
9171     attribute {
9172     node-name: 'at';
9173     value: 'default';
9174     specified: false;
9175     }
9176     }
9177     }
9178     @@XMLTest:
9179     @@@QName: xp.doctype.attr.specified.2.test
9180     @@@DEnt:
9181     @@@@test:value:
9182     <!DOCTYPE a [
9183     <!ATTLIST a
9184     at CDATA "default"
9185     >
9186     ]>
9187     <a at2="specified"></a>
9188     @@@test:domTree:
9189     document {
9190     document-type { }
9191     element {
9192     attribute {
9193     node-name: 'at';
9194     value: 'default';
9195     specified: false;
9196     }
9197     attribute {
9198     node-name: 'at2';
9199     value: 'specified';
9200     specified: true;
9201     }
9202     }
9203     }
9204     @@XMLTest:
9205     @@@QName: xp.doctype.attr.specified.3.test
9206     @@@DEnt:
9207     @@@@test:value:
9208     <!DOCTYPE a [
9209     <!ATTLIST a
9210     at CDATA "default"
9211     >
9212     ]>
9213     <a at="specified"></a>
9214     @@@test:domTree:
9215     document {
9216     document-type { }
9217     element {
9218     attribute {
9219     node-name: 'at';
9220     value: 'specified';
9221     specified: true;
9222     }
9223     }
9224     }
9225    
9226     @@XMLTest:
9227     @@@QName: xp.attr.literal.charref.test
9228     @@@DEnt:
9229     @@@@test:value:
9230     <a at1 = "value&#33;_&#x25;value"
9231     at2 = 'value&#x25;_&#33;value'></a>
9232     @@@test:domTree:
9233     document {
9234     element {
9235     attribute {
9236     node-name: 'at1';
9237     text-content: 'value!_%value';
9238     }
9239     attribute {
9240     node-name: 'at2';
9241     text-content: 'value%_!value';
9242     }
9243     }
9244     }
9245     @@XMLTest:
9246     @@@QName: xp.attr.literal.entref.test
9247     @@@DEnt:
9248     @@@@test:value:
9249     <!DOCTYPE a [
9250     <!ENTITY ent "entity&#x26;#33;_&#x26;#x29;value">
9251     ]>
9252     <a at1 = "value&ent;value"
9253     at2 = 'value&ent;value'></a>
9254     @@@test:domTree:
9255     document {
9256     document-type {
9257     general-entity {
9258     node-name: 'ent';
9259     text-content: 'entity!_)value';
9260     }
9261     }
9262     element {
9263     attribute {
9264     node-name: 'at1';
9265     text-content: 'valueentity!_)valuevalue';
9266     }
9267     attribute {
9268     node-name: 'at2';
9269     text-content: 'valueentity!_)valuevalue';
9270     }
9271     }
9272     }
9273     @@XMLTest:
9274     @@@QName: xp.attr.literal.entref.nest.test
9275     @@@DEnt:
9276     @@@@test:value:
9277     <!DOCTYPE a [
9278     <!ENTITY ent1 "entity&#x26;#33;_&#x26;#x29;value">
9279     <!ENTITY ent2 "@&ent1;@">
9280     ]>
9281     <a at1 = "value&ent2;value"
9282     at2 = 'value&ent2;value'></a>
9283     @@@test:domTree:
9284     document {
9285     document-type {
9286     general-entity {
9287     node-name: 'ent1';
9288     text-content: 'entity!_)value';
9289     }
9290     general-entity {
9291     node-name: 'ent2';
9292     text-content: '@entity!_)value@';
9293     }
9294     }
9295     element {
9296     attribute {
9297     node-name: 'at1';
9298     text-content: 'value@entity!_)value@value';
9299     }
9300     attribute {
9301     node-name: 'at2';
9302     text-content: 'value@entity!_)value@value';
9303     }
9304     }
9305     }
9306    
9307     @@XMLTest:
9308     @@@QName: xp.element.content.ncr.1.test
9309     @@@DEnt:
9310     @@@@test:value:
9311     <e>&#33;</e>
9312     @@@test:domTree:
9313     document {
9314     element {
9315     text-content: '!';
9316     }
9317     }
9318     @@XMLTest:
9319     @@@QName: xp.element.content.ncr.2.test
9320     @@@DEnt:
9321     @@@@test:value:
9322     <e>aaaa&#33;bbbb</e>
9323     @@@test:domTree:
9324     document {
9325     element {
9326     text-content: 'aaaa!bbbb';
9327 wakaba 1.31 text {
9328     text-content: 'aaaa!bbbb';
9329     }
9330 wakaba 1.18 }
9331     }
9332     @@XMLTest:
9333     @@@QName: xp.attrval.ncr.1.test
9334     @@@DEnt:
9335     @@@@test:value:
9336     <e a="&#33;"/>
9337     @@@test:domTree:
9338     document {
9339     element {
9340     attribute {
9341     node-name: 'a';
9342     text-content: '!';
9343     }
9344     }
9345     }
9346     @@XMLTest:
9347     @@@QName: xp.attrval.ncr.2.test
9348     @@@DEnt:
9349     @@@@test:value:
9350     <e a="aaaaa&#33;bbbbb"/>
9351     @@@test:domTree:
9352     document {
9353     element {
9354     attribute {
9355     node-name: 'a';
9356     text-content: 'aaaaa!bbbbb';
9357 wakaba 1.31 text {
9358     text-content: 'aaaaa!bbbbb';
9359     }
9360 wakaba 1.18 }
9361     }
9362     }
9363     @@XMLTest:
9364     @@@QName: xp.attrval.ncr.3.test
9365     @@@DEnt:
9366     @@@@test:value:
9367     <e a='&#33;'/>
9368     @@@test:domTree:
9369     document {
9370     element {
9371     attribute {
9372     node-name: 'a';
9373     text-content: '!';
9374     }
9375     }
9376     }
9377     @@XMLTest:
9378     @@@QName: xp.attrval.ncr.4.test
9379     @@@DEnt:
9380     @@@@test:value:
9381     <e a='aaaaa&#33;bbbbb'/>
9382     @@@test:domTree:
9383     document {
9384     element {
9385     attribute {
9386     node-name: 'a';
9387     text-content: 'aaaaa!bbbbb';
9388     }
9389     }
9390     }
9391     @@XMLTest:
9392     @@@QName: xp.entval.ncr.1.test
9393     @@@DEnt:
9394     @@@@test:value:
9395     <!DOCTYPE e [
9396     <!ENTITY ent "&#33;">
9397     ]>
9398     <e/>
9399     @@@test:domTree:
9400     document {
9401     document-type {
9402     general-entity {
9403     node-name: 'ent';
9404     text-content: '!';
9405     }
9406     }
9407     element { }
9408     }
9409     @@XMLTest:
9410     @@@QName: xp.entval.ncr.2.test
9411     @@@DEnt:
9412     @@@@test:value:
9413     <!DOCTYPE e [
9414     <!ENTITY ent "aaaaa&#33;bbbbb">
9415     ]>
9416     <e/>
9417     @@@test:domTree:
9418     document {
9419     document-type {
9420     general-entity {
9421     node-name: 'ent';
9422     text-content: 'aaaaa!bbbbb';
9423     }
9424     }
9425     element { }
9426     }
9427     @@XMLTest:
9428     @@@QName: xp.element.content.reptxt.ncr.1.test
9429     @@@DEnt:
9430     @@@@test:value:
9431     <!DOCTYPE e [
9432     <!ENTITY ent "&#38;#33;">
9433     ]>
9434     <e>&ent;</e>
9435     @@@test:domTree:
9436     document {
9437     document-type { }
9438     element {
9439     general-entity-reference {
9440     node-name: 'ent';
9441     text-content: '!';
9442 wakaba 1.19 is-expanded: true;
9443 wakaba 1.18 }
9444     }
9445     }
9446     @@XMLTest:
9447     @@@QName: xp.element.content.reptxt.ncr.2.test
9448     @@@DEnt:
9449     @@@@test:value:
9450     <!DOCTYPE e [
9451     <!ENTITY ent "aaaaa&#38;#33;bbbbb">
9452     ]>
9453     <e>&ent;</e>
9454     @@@test:domTree:
9455     document {
9456     document-type { }
9457     element {
9458     general-entity-reference {
9459     node-name: 'ent';
9460     text-content: 'aaaaa!bbbbb';
9461 wakaba 1.19 is-expanded: true;
9462 wakaba 1.18 }
9463     }
9464     }
9465     @@XMLTest:
9466     @@@QName: xp.element.content.reptxt.reptxt.ncr.1.test
9467     @@@DEnt:
9468     @@@@test:value:
9469     <!DOCTYPE e [
9470     <!ENTITY ent "&#38;#33;">
9471     <!ENTITY ent2 "&ent;">
9472     ]>
9473     <e>&ent2;</e>
9474     @@@test:domTree:
9475     document {
9476     document-type { }
9477     element {
9478     general-entity-reference {
9479     node-name: 'ent2';
9480     general-entity-reference {
9481     node-name: 'ent';
9482     text-content: '!';
9483 wakaba 1.19 is-expanded: true;
9484 wakaba 1.18 }
9485 wakaba 1.19 is-expanded: true;
9486 wakaba 1.18 }
9487     }
9488     }
9489     @@XMLTest:
9490     @@@QName: xp.element.content.reptxt.reptxt.ncr.2.test
9491     @@@DEnt:
9492     @@@@test:value:
9493     <!DOCTYPE e [
9494     <!ENTITY ent "aa&#38;#33;bb">
9495     <!ENTITY ent2 "&ent;">
9496     ]>
9497     <e>&ent2;</e>
9498     @@@test:domTree:
9499     document {
9500     document-type { }
9501     element {
9502     general-entity-reference {
9503     node-name: 'ent2';
9504     general-entity-reference {
9505     node-name: 'ent';
9506     text-content: 'aa!bb';
9507 wakaba 1.19 is-expanded: true;
9508 wakaba 1.31 text {
9509     text-content: 'aa!bb';
9510     }
9511 wakaba 1.18 }
9512 wakaba 1.19 is-expanded: true;
9513 wakaba 1.18 }
9514     }
9515     }
9516     @@XMLTest:
9517     @@@QName: xp.attval.reptxt.ncr.1.test
9518     @@@DEnt:
9519     @@@@test:value:
9520     <!DOCTYPE e [
9521     <!ENTITY ent "&#38;#33;">
9522     ]>
9523     <e a="&ent;"/>
9524     @@@test:domTree:
9525     document {
9526     document-type { }
9527     element {
9528     attribute {
9529     node-name: 'a';
9530     general-entity-reference {
9531     node-name: 'ent';
9532     text-content: '!';
9533 wakaba 1.19 is-expanded: true;
9534 wakaba 1.18 }
9535     }
9536     }
9537     }
9538     @@XMLTest:
9539     @@@QName: xp.attval.reptxt.ncr.2.test
9540     @@@DEnt:
9541     @@@@test:value:
9542     <!DOCTYPE e [
9543     <!ENTITY ent "aaaaa&#38;#33;bbbbb">
9544     ]>
9545     <e a="&ent;"/>
9546     @@@test:domTree:
9547     document {
9548     document-type { }
9549     element {
9550     attribute {
9551     node-name: 'a';
9552     general-entity-reference {
9553     node-name: 'ent';
9554     text-content: 'aaaaa!bbbbb';
9555 wakaba 1.19 is-expanded: true;
9556 wakaba 1.31 text {
9557     text-content: 'aaaaa!bbbbb';
9558     }
9559 wakaba 1.18 }
9560     }
9561     }
9562     }
9563     @@XMLTest:
9564     @@@QName: xp.attval.reptxt.reptxt.ncr.1.test
9565     @@@DEnt:
9566     @@@@test:value:
9567     <!DOCTYPE e [
9568     <!ENTITY ent "&#38;#33;">
9569     <!ENTITY ent2 "&ent;">
9570     ]>
9571     <e a="&ent2;"/>
9572     @@@test:domTree:
9573     document {
9574     document-type { }
9575     element {
9576     attribute {
9577     node-name: 'a';
9578     general-entity-reference {
9579     node-name: 'ent2';
9580 wakaba 1.19 is-expanded: true;
9581 wakaba 1.18 general-entity-reference {
9582     node-name: 'ent';
9583     text-content: '!';
9584 wakaba 1.19 is-expanded: true;
9585 wakaba 1.18 }
9586     }
9587     }
9588     }
9589     }
9590     @@XMLTest:
9591     @@@QName: xp.attval.reptxt.reptxt.ncr.2.test
9592     @@@DEnt:
9593     @@@@test:value:
9594     <!DOCTYPE e [
9595     <!ENTITY ent "aa&#38;#33;bb">
9596     <!ENTITY ent2 "&ent;">
9597     ]>
9598     <e a="&ent2;"/>
9599     @@@test:domTree:
9600     document {
9601     document-type { }
9602     element {
9603     attribute {
9604     node-name: 'a';
9605     general-entity-reference {
9606     node-name: 'ent2';
9607 wakaba 1.19 is-expanded: true;
9608 wakaba 1.18 general-entity-reference {
9609     node-name: 'ent';
9610     text-content: 'aa!bb';
9611 wakaba 1.19 is-expanded: true;
9612 wakaba 1.18 }
9613     }
9614     }
9615     }
9616     }
9617    
9618     @@XMLTest:
9619     @@@QName: xp.element.content.hcr.1.test
9620     @@@DEnt:
9621     @@@@test:value:
9622     <e>&#x21;</e>
9623     @@@test:domTree:
9624     document {
9625     element {
9626     text-content: '!';
9627     }
9628     }
9629     @@XMLTest:
9630     @@@QName: xp.element.content.hcr.2.test
9631     @@@DEnt:
9632     @@@@test:value:
9633     <e>aaaa&#x21;bbbb</e>
9634     @@@test:domTree:
9635     document {
9636     element {
9637     text-content: 'aaaa!bbbb';
9638 wakaba 1.31 text {
9639     text-content: 'aaaa!bbbb';
9640     }
9641 wakaba 1.18 }
9642     }
9643     @@XMLTest:
9644     @@@QName: xp.attrval.hcr.1.test
9645     @@@DEnt:
9646     @@@@test:value:
9647     <e a="&#x21;"/>
9648     @@@test:domTree:
9649     document {
9650     element {
9651     attribute {
9652     node-name: 'a';
9653     text-content: '!';
9654     }
9655     }
9656     }
9657     @@XMLTest:
9658     @@@QName: xp.attrval.hcr.2.test
9659     @@@DEnt:
9660     @@@@test:value:
9661     <e a="aaaaa&#x21;bbbbb"/>
9662     @@@test:domTree:
9663     document {
9664     element {
9665     attribute {
9666     node-name: 'a';
9667     text-content: 'aaaaa!bbbbb';
9668 wakaba 1.31 text {
9669     text-content: 'aaaaa!bbbbb';
9670     }
9671 wakaba 1.18 }
9672     }
9673     }
9674     @@XMLTest:
9675     @@@QName: xp.attrval.hcr.3.test
9676     @@@DEnt:
9677     @@@@test:value:
9678     <e a='&#x21;'/>
9679     @@@test:domTree:
9680     document {
9681     element {
9682     attribute {
9683     node-name: 'a';
9684     text-content: '!';
9685     }
9686     }
9687     }
9688     @@XMLTest:
9689     @@@QName: xp.attrval.hcr.4.test
9690     @@@DEnt:
9691     @@@@test:value:
9692     <e a='aaaaa&#x21;bbbbb'/>
9693     @@@test:domTree:
9694     document {
9695     element {
9696     attribute {
9697     node-name: 'a';
9698     text-content: 'aaaaa!bbbbb';
9699     }
9700     }
9701     }
9702     @@XMLTest:
9703     @@@QName: xp.entval.hcr.1.test
9704     @@@DEnt:
9705     @@@@test:value:
9706     <!DOCTYPE e [
9707     <!ENTITY ent "&#x21;">
9708     ]>
9709     <e/>
9710     @@@test:domTree:
9711     document {
9712     document-type {
9713     general-entity {
9714     node-name: 'ent';
9715     text-content: '!';
9716 wakaba 1.10 }
9717 wakaba 1.9 }
9718 wakaba 1.18 element { }
9719 wakaba 1.9 }
9720     @@XMLTest:
9721 wakaba 1.18 @@@QName: xp.entval.hcr.2.test
9722 wakaba 1.9 @@@DEnt:
9723     @@@@test:value:
9724 wakaba 1.18 <!DOCTYPE e [
9725     <!ENTITY ent "aaaaa&#x21;bbbbb">
9726     ]>
9727     <e/>
9728 wakaba 1.9 @@@test:domTree:
9729     document {
9730 wakaba 1.18 document-type {
9731     general-entity {
9732     node-name: 'ent';
9733     text-content: 'aaaaa!bbbbb';
9734 wakaba 1.31 text {
9735     text-content: 'aaaaa!bbbbb';
9736     }
9737 wakaba 1.9 }
9738     }
9739 wakaba 1.18 element { }
9740 wakaba 1.9 }
9741     @@XMLTest:
9742 wakaba 1.18 @@@QName: xp.element.content.reptxt.hcr.1.test
9743 wakaba 1.9 @@@DEnt:
9744     @@@@test:value:
9745 wakaba 1.18 <!DOCTYPE e [
9746     <!ENTITY ent "&#38;#x21;">
9747 wakaba 1.9 ]>
9748 wakaba 1.18 <e>&ent;</e>
9749 wakaba 1.9 @@@test:domTree:
9750     document {
9751     document-type { }
9752     element {
9753 wakaba 1.18 general-entity-reference {
9754     node-name: 'ent';
9755     text-content: '!';
9756 wakaba 1.19 is-expanded: true;
9757 wakaba 1.9 }
9758     }
9759     }
9760     @@XMLTest:
9761 wakaba 1.18 @@@QName: xp.element.content.reptxt.hcr.2.test
9762 wakaba 1.9 @@@DEnt:
9763     @@@@test:value:
9764 wakaba 1.18 <!DOCTYPE e [
9765     <!ENTITY ent "aaaaa&#38;#x21;bbbbb">
9766 wakaba 1.9 ]>
9767 wakaba 1.18 <e>&ent;</e>
9768 wakaba 1.9 @@@test:domTree:
9769     document {
9770     document-type { }
9771     element {
9772 wakaba 1.18 general-entity-reference {
9773     node-name: 'ent';
9774     text-content: 'aaaaa!bbbbb';
9775 wakaba 1.19 is-expanded: true;
9776 wakaba 1.9 }
9777     }
9778     }
9779     @@XMLTest:
9780 wakaba 1.18 @@@QName: xp.element.content.reptxt.reptxt.hcr.1.test
9781 wakaba 1.9 @@@DEnt:
9782     @@@@test:value:
9783 wakaba 1.18 <!DOCTYPE e [
9784     <!ENTITY ent "&#38;#x21;">
9785     <!ENTITY ent2 "&ent;">
9786     ]>
9787     <e>&ent2;</e>
9788 wakaba 1.9 @@@test:domTree:
9789     document {
9790 wakaba 1.18 document-type { }
9791 wakaba 1.9 element {
9792 wakaba 1.18 general-entity-reference {
9793     node-name: 'ent2';
9794 wakaba 1.19 is-expanded: true;
9795 wakaba 1.18 general-entity-reference {
9796     node-name: 'ent';
9797     text-content: '!';
9798 wakaba 1.19 is-expanded: true;
9799 wakaba 1.18 }
9800 wakaba 1.9 }
9801     }
9802     }
9803     @@XMLTest:
9804 wakaba 1.18 @@@QName: xp.element.content.reptxt.reptxt.hcr.2.test
9805 wakaba 1.9 @@@DEnt:
9806     @@@@test:value:
9807 wakaba 1.18 <!DOCTYPE e [
9808     <!ENTITY ent "aa&#38;#x21;bb">
9809     <!ENTITY ent2 "&ent;">
9810     ]>
9811     <e>&ent2;</e>
9812 wakaba 1.9 @@@test:domTree:
9813     document {
9814 wakaba 1.18 document-type { }
9815 wakaba 1.9 element {
9816 wakaba 1.18 general-entity-reference {
9817     node-name: 'ent2';
9818 wakaba 1.19 is-expanded: true;
9819 wakaba 1.18 general-entity-reference {
9820     node-name: 'ent';
9821 wakaba 1.19 is-expanded: true;
9822 wakaba 1.18 text-content: 'aa!bb';
9823     }
9824 wakaba 1.9 }
9825     }
9826     }
9827     @@XMLTest:
9828 wakaba 1.18 @@@QName: xp.attval.reptxt.hcr.1.test
9829 wakaba 1.9 @@@DEnt:
9830     @@@@test:value:
9831 wakaba 1.18 <!DOCTYPE e [
9832     <!ENTITY ent "&#38;#x21;">
9833     ]>
9834     <e a="&ent;"/>
9835 wakaba 1.9 @@@test:domTree:
9836     document {
9837 wakaba 1.18 document-type { }
9838 wakaba 1.9 element {
9839     attribute {
9840 wakaba 1.18 node-name: 'a';
9841     general-entity-reference {
9842     node-name: 'ent';
9843 wakaba 1.19 is-expanded: true;
9844 wakaba 1.18 text-content: '!';
9845     }
9846 wakaba 1.10 }
9847     }
9848     }
9849     @@XMLTest:
9850 wakaba 1.18 @@@QName: xp.attval.reptxt.hcr.2.test
9851 wakaba 1.10 @@@DEnt:
9852     @@@@test:value:
9853 wakaba 1.18 <!DOCTYPE e [
9854     <!ENTITY ent "aaaaa&#38;#x21;bbbbb">
9855 wakaba 1.10 ]>
9856 wakaba 1.18 <e a="&ent;"/>
9857 wakaba 1.10 @@@test:domTree:
9858     document {
9859     document-type { }
9860     element {
9861     attribute {
9862 wakaba 1.18 node-name: 'a';
9863     general-entity-reference {
9864     node-name: 'ent';
9865 wakaba 1.19 is-expanded: true;
9866 wakaba 1.18 text-content: 'aaaaa!bbbbb';
9867 wakaba 1.31 text {
9868     text-content: 'aaaaa!bbbbb';
9869     }
9870 wakaba 1.18 }
9871 wakaba 1.10 }
9872     }
9873     }
9874     @@XMLTest:
9875 wakaba 1.18 @@@QName: xp.attval.reptxt.reptxt.hcr.1.test
9876 wakaba 1.10 @@@DEnt:
9877     @@@@test:value:
9878 wakaba 1.18 <!DOCTYPE e [
9879     <!ENTITY ent "&#38;#x21;">
9880     <!ENTITY ent2 "&ent;">
9881 wakaba 1.10 ]>
9882 wakaba 1.18 <e a="&ent2;"/>
9883 wakaba 1.10 @@@test:domTree:
9884     document {
9885     document-type { }
9886     element {
9887     attribute {
9888 wakaba 1.18 node-name: 'a';
9889     general-entity-reference {
9890     node-name: 'ent2';
9891 wakaba 1.19 is-expanded: true;
9892 wakaba 1.18 general-entity-reference {
9893     node-name: 'ent';
9894 wakaba 1.19 is-expanded: true;
9895 wakaba 1.18 text-content: '!';
9896     }
9897     }
9898 wakaba 1.10 }
9899     }
9900     }
9901     @@XMLTest:
9902 wakaba 1.18 @@@QName: xp.attval.reptxt.reptxt.hcr.2.test
9903 wakaba 1.10 @@@DEnt:
9904     @@@@test:value:
9905 wakaba 1.18 <!DOCTYPE e [
9906     <!ENTITY ent "aa&#38;#x21;bb">
9907     <!ENTITY ent2 "&ent;">
9908 wakaba 1.10 ]>
9909 wakaba 1.18 <e a="&ent2;"/>
9910 wakaba 1.10 @@@test:domTree:
9911     document {
9912     document-type { }
9913     element {
9914     attribute {
9915 wakaba 1.18 node-name: 'a';
9916     general-entity-reference {
9917     node-name: 'ent2';
9918 wakaba 1.19 is-expanded: true;
9919 wakaba 1.18 general-entity-reference {
9920     node-name: 'ent';
9921 wakaba 1.19 is-expanded: true;
9922 wakaba 1.18 text-content: 'aa!bb';
9923     }
9924     }
9925 wakaba 1.11 }
9926     }
9927     }
9928    
9929     @@XMLTest:
9930 wakaba 1.18 @@@QName: xp.element.content.ncr.legal.char.1.0.1.test
9931     @@@DEnt:
9932     @@@@test:value:
9933     <?xml version="1.0"?>
9934     <e>&#0;</e>
9935     @@@c:erred: <[[xp|wf-legal-character]]> { (2, 4)..(2, 7); }
9936     @@XMLTest:
9937     @@@QName: xp.element.content.ncr.legal.char.1.1.1.test
9938     @@@DEnt:
9939     @@@@test:value:
9940     <?xml version="1.1"?>
9941     <e>&#0;</e>
9942     @@@c:erred: <[[xp|wf-legal-character]]> { (2, 4)..(2, 7); }
9943     @@XMLTest:
9944     @@@QName: xp.element.content.ncr.legal.char.1.0.2.test
9945     @@@DEnt:
9946     @@@@test:value:
9947     <?xml version="1.0"?>
9948     <e>&#1;</e>
9949     @@@c:erred: <[[xp|wf-legal-character]]> { (2, 4)..(2, 7); }
9950     @@XMLTest:
9951     @@@QName: xp.element.content.ncr.legal.char.1.1.2.test
9952 wakaba 1.11 @@@DEnt:
9953     @@@@test:value:
9954 wakaba 1.18 <?xml version="1.1"?>
9955     <e>&#1;</e>
9956 wakaba 1.11 @@@test:domTree:
9957     document {
9958 wakaba 1.18 xml-version: '1.1';
9959 wakaba 1.11 element {
9960 wakaba 1.18 text-content: U+0001;
9961 wakaba 1.11 }
9962     }
9963     @@XMLTest:
9964 wakaba 1.18 @@@QName: xp.element.content.hcr.legal.char.1.0.1.test
9965     @@@DEnt:
9966     @@@@test:value:
9967     <?xml version="1.0"?>
9968     <e>&#x0;</e>
9969     @@@c:erred: <[[xp|wf-legal-character]]> { (2, 4)..(2, 8); }
9970     @@XMLTest:
9971     @@@QName: xp.element.content.hcr.legal.char.1.1.1.test
9972     @@@DEnt:
9973     @@@@test:value:
9974     <?xml version="1.1"?>
9975     <e>&#x0;</e>
9976     @@@c:erred: <[[xp|wf-legal-character]]> { (2, 4)..(2, 8); }
9977     @@XMLTest:
9978     @@@QName: xp.element.content.hcr.legal.char.1.0.2.test
9979 wakaba 1.11 @@@DEnt:
9980     @@@@test:value:
9981 wakaba 1.18 <?xml version="1.0"?>
9982     <e>&#x1;</e>
9983     @@@c:erred: <[[xp|wf-legal-character]]> { (2, 4)..(2, 8); }
9984 wakaba 1.11 @@XMLTest:
9985 wakaba 1.18 @@@QName: xp.element.content.hcr.legal.char.1.1.2.test
9986 wakaba 1.11 @@@DEnt:
9987     @@@@test:value:
9988 wakaba 1.18 <?xml version="1.1"?>
9989     <e>&#x1;</e>
9990 wakaba 1.11 @@@test:domTree:
9991     document {
9992 wakaba 1.18 xml-version: '1.1';
9993 wakaba 1.11 element {
9994 wakaba 1.18 text-content: U+0001;
9995 wakaba 1.6 }
9996     }
9997    
9998 wakaba 1.19 @@XMLTest:
9999     @@@QName: xp.element.content.ger.entity.declared.nodtd.1.test
10000     @@@DEnt:
10001     @@@@test:value:
10002     <p>&entity;</p>
10003     @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 4)..(1, 11); }
10004     @@XMLTest:
10005     @@@QName: xp.element.content.ger.entity.declared.nodtd.2.test
10006     @@@DEnt:
10007     @@@@test:value:
10008     <?xml version="1.0" standalone="yes"?>
10009     <p>&entity;</p>
10010     @@@c:erred: <[[xp|wf-entity-declared]]> { (2, 4)..(2, 11); }
10011     @@XMLTest:
10012     @@@QName: xp.element.content.ger.entity.declared.nodtd.3.test
10013     @@@DEnt:
10014     @@@@test:value:
10015     <?xml version="1.0" standalone="no"?>
10016     <p>&entity;</p>
10017     @@@c:erred: <[[xp|wf-entity-declared]]> { (2, 4)..(2, 11); }
10018     @@XMLTest:
10019     @@@QName: xp.element.content.ger.entity.declared.nodtd.-1.test
10020     @@@DEnt:
10021     @@@@test:value:
10022     <p>&lt;&gt;&amp;&quot;&apos;</p>
10023     @@@test:domTree:
10024     document {
10025     element {
10026     text-content: '<>&"' U+0027;
10027     }
10028     }
10029     @@XMLTest:
10030     @@@QName: xp.element.content.ger.entity.declared.nopref.1.test
10031     @@@DEnt:
10032     @@@@test:value:
10033     <!DOCTYPE p []>
10034     <p>&entity;</p>
10035     @@@c:erred: <[[xp|wf-entity-declared]]> { (2, 4)..(2, 11); }
10036     @@XMLTest:
10037     @@@QName: xp.element.content.ger.entity.declared.nopref.2.test
10038     @@@DEnt:
10039     @@@@test:value:
10040     <!DOCTYPE p [
10041     <!ENTITY other "aa">
10042     <!ENTITY % another "aa">
10043     ]>
10044     <p>&entity;</p>
10045     @@@c:erred: <[[xp|wf-entity-declared]]> { (5, 4)..(5, 11); }
10046     @@XMLTest:
10047     @@@QName: xp.element.content.ger.entity.declared.nopref.3.test
10048     @@@DEnt:
10049     @@@@test:value:
10050     <?xml version="1.0" standalone="yes"?>
10051     <!DOCTYPE p []>
10052     <p>&entity;</p>
10053     @@@c:erred: <[[xp|wf-entity-declared]]> { (3, 4)..(3, 11); }
10054     @@XMLTest:
10055     @@@QName: xp.element.content.ger.entity.declared.nopref.4.test
10056     @@@DEnt:
10057     @@@@test:value:
10058     <?xml version="1.0" standalone="no"?>
10059     <!DOCTYPE p []>
10060     <p>&entity;</p>
10061     @@@c:erred: <[[xp|wf-entity-declared]]> { (3, 4)..(3, 11); }
10062     @@XMLTest:
10063     @@@QName: xp.element.content.ger.entity.declared.nopref.5.test
10064     @@@DEnt:
10065     @@@@test:value:
10066     <?xml version="1.0" standalone="yes"?>
10067     <!DOCTYPE p [
10068     <!ENTITY other "aa">
10069     <!ENTITY % another "aa">
10070     ]>
10071     <p>&entity;</p>
10072     @@@c:erred: <[[xp|wf-entity-declared]]> { (6, 4)..(6, 11); }
10073     @@XMLTest:
10074     @@@QName: xp.element.content.ger.entity.declared.nopref.6.test
10075     @@@DEnt:
10076     @@@@test:value:
10077     <?xml version="1.0" standalone="no"?>
10078     <!DOCTYPE p [
10079     <!ENTITY other "aa">
10080     <!ENTITY % another "aa">
10081     ]>
10082     <p>&entity;</p>
10083     @@@c:erred: <[[xp|wf-entity-declared]]> { (6, 4)..(6, 11); }
10084     @@XMLTest:
10085     @@@QName: xp.element.content.ger.entity.declared.nopref.-1.test
10086     @@@DEnt:
10087     @@@@test:value:
10088     <!DOCTYPE p [
10089     <!ENTITY entity "value">
10090     ]>
10091     <p>&entity;</p>
10092     @@@test:domTree:
10093     document {
10094     document-type {
10095     general-entity {
10096     node-name: 'entity';
10097     text-content: 'value';
10098     }
10099     }
10100     element {
10101 wakaba 1.20 general-entity-reference {
10102 wakaba 1.19 node-name: 'entity';
10103 wakaba 1.20 is-expanded: true;
10104 wakaba 1.19 text-content: 'value';
10105     }
10106     }
10107     }
10108     @@XMLTest:
10109     @@@QName: xp.element.content.ger.entity.declared.nopref.-2.test
10110     @@@DEnt:
10111     @@@@test:value:
10112     <!DOCTYPE p [
10113     <!ENTITY entity "value">
10114     <!ENTITY another SYSTEM "another">
10115     ]>
10116     <p>&entity;</p>
10117     @@@test:domTree:
10118     document {
10119     document-type {
10120     general-entity {
10121     node-name: 'entity';
10122     text-content: 'value';
10123     }
10124 wakaba 1.20 general-entity {
10125     node-name: 'another';
10126     public-id: null;
10127     system-id: 'another';
10128     }
10129 wakaba 1.19 }
10130     element {
10131 wakaba 1.20 general-entity-reference {
10132 wakaba 1.19 node-name: 'entity';
10133 wakaba 1.20 is-expanded: true;
10134 wakaba 1.19 text-content: 'value';
10135     }
10136     }
10137     }
10138     @@XMLTest:
10139     @@@QName: xp.element.content.ger.entity.declared.standalone.1.test
10140     @@@DEnt:
10141     @@@@test:value:
10142     <?xml version="1.0" standalone="yes"?>
10143     <p>&entity;</p>
10144     @@@c:erred: <[[xp|wf-entity-declared]]> { (2, 4)..(2, 11); }
10145     @@XMLTest:
10146     @@@QName: xp.element.content.ger.entity.declared.standalone.2.test
10147     @@@DEnt:
10148     @@@@test:value:
10149     <?xml version="1.0" standalone="yes"?>
10150     <!DOCTYPE p []>
10151     <p>&entity;</p>
10152     @@@c:erred: <[[xp|wf-entity-declared]]> { (3, 4)..(3, 11); }
10153     @@XMLTest:
10154     @@@QName: xp.element.content.ger.entity.declared.standalone.3.test
10155     @@@DEnt:
10156     @@@@test:value:
10157     <?xml version="1.0" standalone="yes"?>
10158     <!DOCTYPE p [
10159     <!ENTITY % para "<!-- -->">
10160     %para;
10161     ]>
10162     <p>&entity;</p>
10163     @@@c:erred: <[[xp|wf-entity-declared]]> { (6, 4)..(6, 11); }
10164     @@XMLTest:
10165     @@@QName: xp.element.content.ger.entity.declared.standalone.-1.test
10166     @@@DEnt:
10167     @@@@test:value:
10168     <?xml version="1.0" standalone="no"?>
10169     <!DOCTYPE p [
10170     <!ENTITY % para "<!-- -->">
10171     %para;
10172     ]>
10173     <p>&entity;</p>
10174     @@@test:domTree:
10175     document {
10176     document-type { }
10177     element {
10178     general-entity-reference {
10179     is-expanded: false;
10180     }
10181     }
10182     }
10183     @@XMLTest:
10184     @@@QName: xp.element.content.ger.entity.declared.standalone.-2.test
10185     @@@DEnt:
10186     @@@@test:value:
10187     <!DOCTYPE p [
10188     <!ENTITY % para "<!-- -->">
10189     %para;
10190     ]>
10191     <p>&entity;</p>
10192     @@@test:domTree:
10193     document {
10194     document-type { }
10195     element {
10196     general-entity-reference {
10197     is-expanded: false;
10198     }
10199     }
10200     }
10201     @@XMLTest:
10202     @@@QName: xp.element.content.ger.entity.declared.standalone.4.test
10203     @@@DEnt:
10204     @@@@test:value:
10205     <?xml version="1.0" standalone="yes"?>
10206     <!DOCTYPE p [
10207     <!ENTITY % para SYSTEM "para">
10208     %para;
10209     ]>
10210     <p>&entity;</p>
10211     @@@c:erred: <[[xp|wf-entity-declared]]> { (6, 4)..(6, 11); }
10212     @@XMLTest:
10213     @@@QName: xp.element.content.ger.entity.declared.standalone.-3.test
10214     @@@DEnt:
10215     @@@@test:value:
10216     <?xml version="1.0" standalone="no"?>
10217     <!DOCTYPE p [
10218     <!ENTITY % para SYSTEM "para">
10219     %para;
10220     ]>
10221     <p>&entity;</p>
10222     @@@test:domTree:
10223     document {
10224     document-type { }
10225     element {
10226     general-entity-reference {
10227     is-expanded: false;
10228     }
10229     }
10230     }
10231     @@XMLTest:
10232     @@@QName: xp.element.content.ger.entity.declared.standalone.-4.test
10233     @@@DEnt:
10234     @@@@test:value:
10235     <!DOCTYPE p [
10236     <!ENTITY % para SYSTEM "para">
10237     %para;
10238     ]>
10239     <p>&entity;</p>
10240     @@@test:domTree:
10241     document {
10242     document-type { }
10243     element {
10244     general-entity-reference {
10245     is-expanded: false;
10246     }
10247     }
10248     }
10249     @@XMLTest:
10250     @@@QName: xp.element.content.ger.entity.declared.standalone.5.test
10251     @@@DEnt:
10252     @@@@test:value:
10253     <?xml version="1.0" standalone="yes"?>
10254     <!DOCTYPE p SYSTEM "dtd">
10255     <p>&entity;</p>
10256     @@@c:erred: <[[xp|wf-entity-declared]]> { (3, 4)..(3, 11); }
10257     @@XMLTest:
10258     @@@QName: xp.element.content.ger.entity.declared.standalone.-5.test
10259     @@@DEnt:
10260     @@@@test:value:
10261     <?xml version="1.0" standalone="no"?>
10262     <!DOCTYPE p SYSTEM "dtd">
10263     <p>&entity;</p>
10264     @@@test:domTree:
10265     document {
10266     document-type { }
10267     element {
10268     general-entity-reference {
10269     is-expanded: false;
10270     }
10271     }
10272     }
10273     @@XMLTest:
10274     @@@QName: xp.element.content.ger.entity.declared.standalone.-6.test
10275     @@@DEnt:
10276     @@@@test:value:
10277     <!DOCTYPE p SYSTEM "dtd">
10278     <p>&entity;</p>
10279     @@@test:domTree:
10280     document {
10281     document-type { }
10282     element {
10283     general-entity-reference {
10284     is-expanded: false;
10285     }
10286     }
10287     }
10288    
10289 wakaba 1.20 @@XMLTest:
10290     @@@QName: xp.reptxt.element.content.ger.entity.declared.nopref.1.test
10291     @@@DEnt:
10292     @@@@test:value:
10293     <!DOCTYPE p [
10294     <!ENTITY c "&entity;">
10295     ]>
10296     <p>&c;</p>
10297     @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
10298     @@XMLTest:
10299     @@@QName: xp.reptxt.element.content.ger.entity.declared.nopref.2.test
10300     @@@DEnt:
10301     @@@@test:value:
10302     <!DOCTYPE p [
10303     <!ENTITY other "aa">
10304     <!ENTITY % another "aa">
10305     <!ENTITY c "&entity;">
10306     ]>
10307     <p>&c;</p>
10308     @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
10309     @@XMLTest:
10310     @@@QName: xp.reptxt.element.content.ger.entity.declared.nopref.3.test
10311     @@@DEnt:
10312     @@@@test:value:
10313     <?xml version="1.0" standalone="yes"?>
10314     <!DOCTYPE p [
10315     <!ENTITY c "&entity;">
10316     ]>
10317     <p>&c;</p>
10318     @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
10319     @@XMLTest:
10320     @@@QName: xp.reptxt.element.content.ger.entity.declared.nopref.4.test
10321     @@@DEnt:
10322     @@@@test:value:
10323     <?xml version="1.0" standalone="no"?>
10324     <!DOCTYPE p [
10325     <!ENTITY c "&entity;">
10326     ]>
10327     <p>&c;</p>
10328     @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
10329     @@XMLTest:
10330     @@@QName: xp.reptxt.element.content.ger.entity.declared.nopref.5.test
10331     @@@DEnt:
10332     @@@@test:value:
10333     <?xml version="1.0" standalone="yes"?>
10334     <!DOCTYPE p [
10335     <!ENTITY other "aa">
10336     <!ENTITY % another "aa">
10337     <!ENTITY c "&entity;">
10338     ]>
10339     <p>&c;</p>
10340     @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
10341     @@XMLTest:
10342     @@@QName: xp.reptxt.element.content.ger.entity.declared.nopref.6.test
10343     @@@DEnt:
10344     @@@@test:value:
10345     <?xml version="1.0" standalone="no"?>
10346     <!DOCTYPE p [
10347     <!ENTITY other "aa">
10348     <!ENTITY % another "aa">
10349     <!ENTITY c "&entity;">
10350     ]>
10351     <p>&c;</p>
10352     @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
10353     @@XMLTest:
10354     @@@QName: xp.reptxt.element.content.ger.entity.declared.nopref.-1.test
10355     @@@DEnt:
10356     @@@@test:value:
10357     <!DOCTYPE p [
10358     <!ENTITY entity "value">
10359     <!ENTITY c "&entity;">
10360     ]>
10361     <p>&c;</p>
10362     @@@test:domTree:
10363     document {
10364     document-type {
10365     general-entity {
10366     node-name: 'entity';
10367     text-content: 'value';
10368     }
10369     general-entity {
10370     node-name: 'c';
10371     general-entity-reference {
10372     node-name: 'entity';
10373     text-content: 'value';
10374     }
10375     }
10376     }
10377     element {
10378     general-entity-reference {
10379     node-name: 'c';
10380     general-entity-reference {
10381     node-name: 'entity';
10382     text-content: 'value';
10383     }
10384     }
10385     }
10386     }
10387     @@XMLTest:
10388     @@@QName: xp.reptxt.element.content.ger.entity.declared.nopref.-2.test
10389     @@@DEnt:
10390     @@@@test:value:
10391     <!DOCTYPE p [
10392     <!ENTITY entity "value">
10393     <!ENTITY another SYSTEM "another">
10394     <!ENTITY c "&entity;">
10395     ]>
10396     <p>&c;</p>
10397     @@@test:domTree:
10398     document {
10399     document-type {
10400     general-entity {
10401     node-name: 'entity';
10402     text-content: 'value';
10403     }
10404     general-entity {
10405     node-name: 'c';
10406     general-entity-reference {
10407     node-name: 'entity';
10408 wakaba 1.23 is-expanded: true;
10409 wakaba 1.20 text-content: 'value';
10410     }
10411     }
10412     general-entity {
10413     node-name: 'another';
10414     public-id: null;
10415     system-id: 'another';
10416     has-replacement-tree: false;
10417     }
10418     }
10419     element {
10420     general-entity-reference {
10421     node-name: 'c';
10422 wakaba 1.23 is-expanded: true;
10423 wakaba 1.20 general-entity-reference {
10424     node-name: 'entity';
10425 wakaba 1.23 is-expanded: true;
10426 wakaba 1.20 text-content: 'value';
10427     }
10428     }
10429     }
10430     }
10431     @@XMLTest:
10432     @@@QName: xp.reptxt.element.content.ger.entity.declared.standalone.2.test
10433     @@@DEnt:
10434     @@@@test:value:
10435     <?xml version="1.0" standalone="yes"?>
10436     <!DOCTYPE p [
10437     <!ENTITY c "&entity;">
10438     ]>
10439     <p>&c;</p>
10440     @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
10441     @@XMLTest:
10442     @@@QName: xp.reptxt.element.content.ger.entity.declared.standalone.3.test
10443     @@@DEnt:
10444     @@@@test:value:
10445     <?xml version="1.0" standalone="yes"?>
10446     <!DOCTYPE p [
10447     <!ENTITY % para "<!-- -->">
10448     %para;
10449     <!ENTITY c "&entity;">
10450     ]>
10451     <p>&c;</p>
10452     @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
10453     @@XMLTest:
10454     @@@QName: xp.reptxt.element.content.ger.entity.declared.standalone.-1.test
10455     @@@DEnt:
10456     @@@@test:value:
10457     <?xml version="1.0" standalone="no"?>
10458     <!DOCTYPE p [
10459     <!ENTITY c "&entity;">
10460     <!ENTITY % para "<!-- -->">
10461     %para;
10462     ]>
10463     <p>&c;</p>
10464     @@@test:domTree:
10465     document {
10466     document-type {
10467     general-entity {
10468     node-name: 'c';
10469     general-entity-reference {
10470     node-name: 'entity';
10471     is-expanded: false;
10472     }
10473     }
10474     }
10475     element {
10476     general-entity-reference {
10477     node-name: 'c';
10478     general-entity-reference {
10479     node-name: 'entity';
10480     is-expanded: false;
10481     }
10482     }
10483     }
10484     }
10485     @@XMLTest:
10486     @@@QName:
10487     xp.reptxt.element.content.ger.entity.declared.standalone.-1.2.test
10488     @@@DEnt:
10489     @@@@test:value:
10490     <?xml version="1.0" standalone="no"?>
10491     <!DOCTYPE p [
10492     <!ENTITY % para "<!-- -->">
10493     %para;
10494     <!ENTITY c "&entity;">
10495     ]>
10496     <p>&c;</p>
10497     @@@test:domTree:
10498     document {
10499     document-type { }
10500     element {
10501     general-entity-reference {
10502     node-name: 'c';
10503     is-expanded: false;
10504     }
10505     }
10506     }
10507     @@XMLTest:
10508     @@@QName: xp.reptxt.element.content.ger.entity.declared.standalone.-2.test
10509     @@@DEnt:
10510     @@@@test:value:
10511     <!DOCTYPE p [
10512     <!ENTITY c "&entity;">
10513     <!ENTITY % para "<!-- -->">
10514     %para;
10515     ]>
10516     <p>&c;</p>
10517     @@@test:domTree:
10518     document {
10519     document-type { }
10520     element {
10521     general-entity-reference {
10522     node-name: 'c';
10523     is-expanded: true;
10524     general-entity-reference {
10525     node-name: 'entity';
10526     is-expanded: false;
10527     }
10528     }
10529     }
10530     }
10531     @@XMLTest:
10532     @@@QName:
10533     xp.reptxt.element.content.ger.entity.declared.standalone.-2.2.test
10534     @@@DEnt:
10535     @@@@test:value:
10536     <!DOCTYPE p [
10537     <!ENTITY % para "<!-- -->">
10538     %para;
10539     <!ENTITY c "&entity;">
10540     ]>
10541     <p>&c;</p>
10542     @@@test:domTree:
10543     document {
10544     document-type { }
10545     element {
10546     general-entity-reference {
10547     node-name: 'c';
10548     is-expanded: false;
10549     }
10550     }
10551     }
10552     @@XMLTest:
10553     @@@QName: xp.reptxt.element.content.ger.entity.declared.standalone.4.test
10554     @@@DEnt:
10555     @@@@test:value:
10556     <?xml version="1.0" standalone="yes"?>
10557     <!DOCTYPE p [
10558     <!ENTITY % para SYSTEM "para">
10559     %para;
10560     <!ENTITY c "&entity;">
10561     ]>
10562     <p>&c;</p>
10563     @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
10564     @@XMLTest:
10565     @@@QName: xp.reptxt.element.content.ger.entity.declared.standalone.-3.test
10566     @@@DEnt:
10567     @@@@test:value:
10568     <?xml version="1.0" standalone="no"?>
10569     <!DOCTYPE p [
10570     <!ENTITY c "&entity;">
10571     <!ENTITY % para SYSTEM "para">
10572     %para;
10573     ]>
10574     <p>&c;</p>
10575     @@@test:domTree:
10576     document {
10577     document-type { }
10578     element {
10579     general-entity-reference {
10580     node-name: 'c';
10581     is-expanded: true;
10582     general-entity-reference {
10583     node-name: 'entity';
10584     is-expanded: false;
10585     }
10586     }
10587     }
10588     }
10589     @@XMLTest:
10590     @@@QName:
10591     xp.reptxt.element.content.ger.entity.declared.standalone.-3.2.test
10592     @@@DEnt:
10593     @@@@test:value:
10594     <?xml version="1.0" standalone="no"?>
10595     <!DOCTYPE p [
10596     <!ENTITY % para SYSTEM "para">
10597     %para;
10598     <!ENTITY c "&entity;">
10599     ]>
10600     <p>&c;</p>
10601     @@@test:domTree:
10602     document {
10603     document-type { }
10604     element {
10605     general-entity-reference {
10606     node-name: 'c';
10607     is-expanded: false;
10608     }
10609     }
10610     }
10611     @@XMLTest:
10612     @@@QName: xp.reptxt.element.content.ger.entity.declared.standalone.-4.test
10613     @@@DEnt:
10614     @@@@test:value:
10615     <!DOCTYPE p [
10616     <!ENTITY c "&entity;">
10617     <!ENTITY % para SYSTEM "para">
10618     %para;
10619     ]>
10620     <p>&c;</p>
10621     @@@test:domTree:
10622     document {
10623     document-type { }
10624     element {
10625     general-entity-reference {
10626     node-name: 'c';
10627     is-expanded: true;
10628     general-entity-reference {
10629     node-name: 'entity';
10630     is-expanded: false;
10631     }
10632     }
10633     }
10634     }
10635     @@XMLTest:
10636     @@@QName:
10637     xp.reptxt.element.content.ger.entity.declared.standalone.-4.2.test
10638     @@@DEnt:
10639     @@@@test:value:
10640     <!DOCTYPE p [
10641     <!ENTITY % para SYSTEM "para">
10642     %para;
10643     <!ENTITY c "&entity;">
10644     ]>
10645     <p>&c;</p>
10646     @@@test:domTree:
10647     document {
10648     document-type { }
10649     element {
10650     general-entity-reference {
10651     node-name: 'c';
10652     is-expanded: false;
10653     }
10654     }
10655     }
10656     @@XMLTest:
10657     @@@QName: xp.reptxt.element.content.ger.entity.declared.standalone.5.test
10658     @@@DEnt:
10659     @@@@test:value:
10660     <?xml version="1.0" standalone="yes"?>
10661     <!DOCTYPE p SYSTEM "dtd" [
10662     <!ENTITY c "&entity;">
10663     ]>
10664     <p>&c;</p>
10665     @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
10666     @@XMLTest:
10667     @@@QName: xp.reptxt.element.content.ger.entity.declared.standalone.-5.test
10668     @@@DEnt:
10669     @@@@test:value:
10670     <?xml version="1.0" standalone="no"?>
10671     <!DOCTYPE p SYSTEM "dtd" [
10672     <!ENTITY c "&entity;">
10673     ]>
10674     <p>&c;</p>
10675     @@@test:domTree:
10676     document {
10677     document-type { }
10678     element {
10679     general-entity-reference {
10680     node-name: 'c';
10681     is-expanded: true;
10682     general-entity-reference {
10683     node-name: 'entity';
10684     is-expanded: false;
10685     }
10686     }
10687     }
10688     }
10689     @@XMLTest:
10690     @@@QName: xp.reptxt.element.content.ger.entity.declared.standalone.-6.test
10691     @@@DEnt:
10692     @@@@test:value:
10693     <!DOCTYPE p SYSTEM "dtd" [<!ENTITY c "&entity;">]>
10694     <p>&c;</p>
10695     @@@test:domTree:
10696     document {
10697     document-type { }
10698     element {
10699     general-entity-reference {
10700     node-name: 'c';
10701     is-expanded: true;
10702     general-entity-reference {
10703     node-name: 'entity';
10704     is-expanded: false;
10705     }
10706     }
10707     }
10708     }
10709    
10710     @@XMLTest:
10711     @@@QName: xp.attval.ger.entity.declared.nodtd.1.test
10712     @@@DEnt:
10713     @@@@test:value:
10714     <p a="&entity;"/>
10715     @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 7)..(1, 14); }
10716     @@XMLTest:
10717     @@@QName: xp.attval.ger.entity.declared.nodtd.2.test
10718     @@@DEnt:
10719     @@@@test:value:
10720     <?xml version="1.0" standalone="yes"?>
10721     <p a="&entity;"/>
10722     @@@c:erred: <[[xp|wf-entity-declared]]> { (2, 7)..(2, 14); }
10723     @@XMLTest:
10724     @@@QName: xp.attval.ger.entity.declared.nodtd.3.test
10725     @@@DEnt:
10726     @@@@test:value:
10727     <?xml version="1.0" standalone="no"?>
10728     <p a="&entity;"/>
10729     @@@c:erred: <[[xp|wf-entity-declared]]> { (2, 7)..(2, 14); }
10730     @@XMLTest:
10731     @@@QName: xp.attval.ger.entity.declared.nodtd.-1.test
10732     @@@DEnt:
10733     @@@@test:value:
10734     <p a="&lt;&gt;&amp;&quot;&apos;"/>
10735     @@@test:domTree:
10736     document {
10737     element {
10738     attribute {
10739     node-name: 'a';
10740     text-content: '<>&"' U+0027;
10741     }
10742     }
10743     }
10744     @@XMLTest:
10745     @@@QName: xp.attval.ger.entity.declared.nopref.1.test
10746     @@@DEnt:
10747     @@@@test:value:
10748     <!DOCTYPE p []>
10749     <p a="&entity;"/>
10750     @@@c:erred: <[[xp|wf-entity-declared]]> { (2, 7)..(2, 14); }
10751     @@XMLTest:
10752     @@@QName: xp.attval.ger.entity.declared.nopref.2.test
10753     @@@DEnt:
10754     @@@@test:value:
10755     <!DOCTYPE p [
10756     <!ENTITY other "aa">
10757     <!ENTITY % another "aa">
10758     ]>
10759     <p a="&entity;"/>
10760     @@@c:erred: <[[xp|wf-entity-declared]]> { (5, 7)..(5, 14); }
10761     @@XMLTest:
10762     @@@QName: xp.attval.ger.entity.declared.nopref.3.test
10763     @@@DEnt:
10764     @@@@test:value:
10765     <?xml version="1.0" standalone="yes"?>
10766     <!DOCTYPE p []>
10767     <p a="&entity;"/>
10768     @@@c:erred: <[[xp|wf-entity-declared]]> { (3, 7)..(3, 14); }
10769     @@XMLTest:
10770     @@@QName: xp.attval.ger.entity.declared.nopref.4.test
10771     @@@DEnt:
10772     @@@@test:value:
10773     <?xml version="1.0" standalone="no"?>
10774     <!DOCTYPE p []>
10775     <p a="&entity;"/>
10776     @@@c:erred: <[[xp|wf-entity-declared]]> { (3, 7)..(3, 14); }
10777     @@XMLTest:
10778     @@@QName: xp.attval.ger.entity.declared.nopref.5.test
10779     @@@DEnt:
10780     @@@@test:value:
10781     <?xml version="1.0" standalone="yes"?>
10782     <!DOCTYPE p [
10783     <!ENTITY other "aa">
10784     <!ENTITY % another "aa">
10785     ]>
10786     <p a="&entity;"/>
10787     @@@c:erred: <[[xp|wf-entity-declared]]> { (6, 7)..(6, 14); }
10788     @@XMLTest:
10789     @@@QName: xp.attval.ger.entity.declared.nopref.6.test
10790     @@@DEnt:
10791     @@@@test:value:
10792     <?xml version="1.0" standalone="no"?>
10793     <!DOCTYPE p [
10794     <!ENTITY other "aa">
10795     <!ENTITY % another "aa">
10796     ]>
10797     <p a="&entity;"/>
10798     @@@c:erred: <[[xp|wf-entity-declared]]> { (6, 7)..(6, 14); }
10799     @@XMLTest:
10800     @@@QName: xp.attval.ger.entity.declared.nopref.-1.test
10801     @@@DEnt:
10802     @@@@test:value:
10803     <!DOCTYPE p [
10804     <!ENTITY entity "value">
10805     ]>
10806     <p a="&entity;"/>
10807     @@@test:domTree:
10808     document {
10809     document-type {
10810     general-entity {
10811     node-name: 'entity';
10812     text-content: 'value';
10813     }
10814     }
10815     element {
10816     attribute {
10817     node-name: 'a';
10818     general-entity-reference {
10819     node-name: 'entity';
10820     is-expanded: true;
10821     text-content: 'value';
10822     }
10823     }
10824     }
10825     }
10826     @@XMLTest:
10827     @@@QName: xp.attval.ger.entity.declared.nopref.-2.test
10828     @@@DEnt:
10829     @@@@test:value:
10830     <!DOCTYPE p [
10831     <!ENTITY entity "value">
10832     <!ENTITY another SYSTEM "another">
10833     ]>
10834     <p a="&entity;"/>
10835     @@@test:domTree:
10836     document {
10837     document-type {
10838     general-entity {
10839     node-name: 'entity';
10840     text-content: 'value';
10841     has-replacement-tree: true;
10842     }
10843     general-entity {
10844     node-name: 'another';
10845     public-id: null;
10846     system-id: 'another';
10847     has-replacement-tree: false;
10848     }
10849     }
10850     element {
10851     attribute {
10852     node-name: 'a';
10853     general-entity-reference {
10854     node-name: 'entity';
10855     is-expanded: true;
10856     text-content: 'value';
10857     }
10858     }
10859     }
10860     }
10861     @@XMLTest:
10862     @@@QName: xp.attval.ger.entity.declared.standalone.1.test
10863     @@@DEnt:
10864     @@@@test:value:
10865     <?xml version="1.0" standalone="yes"?>
10866     <p a="&entity;"/>
10867     @@@c:erred: <[[xp|wf-entity-declared]]> { (2, 7)..(2, 14); }
10868     @@XMLTest:
10869     @@@QName: xp.attval.ger.entity.declared.standalone.2.test
10870     @@@DEnt:
10871     @@@@test:value:
10872     <?xml version="1.0" standalone="yes"?>
10873     <!DOCTYPE p []>
10874     <p a="&entity;"/>
10875     @@@c:erred: <[[xp|wf-entity-declared]]> { (3, 7)..(3, 14); }
10876     @@XMLTest:
10877     @@@QName: xp.attval.ger.entity.declared.standalone.3.test
10878     @@@DEnt:
10879     @@@@test:value:
10880     <?xml version="1.0" standalone="yes"?>
10881     <!DOCTYPE p [
10882     <!ENTITY % para "<!-- -->">
10883     %para;
10884     ]>
10885     <p a="&entity;"/>
10886     @@@c:erred: <[[xp|wf-entity-declared]]> { (6, 7)..(6, 14); }
10887     @@XMLTest:
10888     @@@QName: xp.attval.ger.entity.declared.standalone.-1.test
10889     @@@DEnt:
10890     @@@@test:value:
10891     <?xml version="1.0" standalone="no"?>
10892     <!DOCTYPE p [
10893     <!ENTITY % para "<!-- -->">
10894     %para;
10895     ]>
10896     <p a="&entity;"/>
10897     @@@test:domTree:
10898     document {
10899     document-type { }
10900     element {
10901     attribute {
10902     node-name: 'a';
10903     general-entity-reference {
10904     is-expanded: false;
10905     }
10906     }
10907     }
10908     }
10909     @@XMLTest:
10910     @@@QName: xp.attval.ger.entity.declared.standalone.-2.test
10911     @@@DEnt:
10912     @@@@test:value:
10913     <!DOCTYPE p [
10914     <!ENTITY % para "<!-- -->">
10915     %para;
10916     ]>
10917     <p a="&entity;"/>
10918     @@@test:domTree:
10919     document {
10920     document-type { }
10921     element {
10922     attribute {
10923     node-name: 'a';
10924     general-entity-reference {
10925     is-expanded: false;
10926     }
10927     }
10928     }
10929     }
10930     @@XMLTest:
10931     @@@QName: xp.attval.ger.entity.declared.standalone.4.test
10932     @@@DEnt:
10933     @@@@test:value:
10934     <?xml version="1.0" standalone="yes"?>
10935     <!DOCTYPE p [
10936     <!ENTITY % para SYSTEM "para">
10937     %para;
10938     ]>
10939     <p a="&entity;"/>
10940     @@@c:erred: <[[xp|wf-entity-declared]]> { (6, 7)..(6, 14); }
10941     @@XMLTest:
10942     @@@QName: xp.attval.ger.entity.declared.standalone.-3.test
10943     @@@DEnt:
10944     @@@@test:value:
10945     <?xml version="1.0" standalone="no"?>
10946     <!DOCTYPE p [
10947     <!ENTITY % para SYSTEM "para">
10948     %para;
10949     ]>
10950     <p a="&entity;"/>
10951     @@@test:domTree:
10952     document {
10953     document-type { }
10954     element {
10955     attribute {
10956     node-name: 'a';
10957     general-entity-reference {
10958     is-expanded: false;
10959     }
10960     }
10961     }
10962     }
10963     @@XMLTest:
10964     @@@QName: xp.attval.ger.entity.declared.standalone.-4.test
10965     @@@DEnt:
10966     @@@@test:value:
10967     <!DOCTYPE p [
10968     <!ENTITY % para SYSTEM "para">
10969     %para;
10970     ]>
10971     <p a="&entity;"/>
10972     @@@test:domTree:
10973     document {
10974     document-type { }
10975     element {
10976     attribute {
10977     node-name: 'a';
10978     general-entity-reference {
10979     is-expanded: false;
10980     }
10981     }
10982     }
10983     }
10984     @@XMLTest:
10985     @@@QName: xp.attval.ger.entity.declared.standalone.5.test
10986     @@@DEnt:
10987     @@@@test:value:
10988     <?xml version="1.0" standalone="yes"?>
10989     <!DOCTYPE p SYSTEM "dtd">
10990     <p a="&entity;"/>
10991     @@@c:erred: <[[xp|wf-entity-declared]]> { (3, 7)..(3, 14); }
10992     @@XMLTest:
10993     @@@QName: xp.attval.ger.entity.declared.standalone.-5.test
10994     @@@DEnt:
10995     @@@@test:value:
10996     <?xml version="1.0" standalone="no"?>
10997     <!DOCTYPE p SYSTEM "dtd">
10998     <p a="&entity;"/>
10999     @@@test:domTree:
11000     document {
11001     document-type { }
11002     element {
11003     attribute {
11004     node-name: 'a';
11005     general-entity-reference {
11006     is-expanded: false;
11007     }
11008     }
11009     }
11010     }
11011     @@XMLTest:
11012     @@@QName: xp.attval.ger.entity.declared.standalone.-6.test
11013     @@@DEnt:
11014     @@@@test:value:
11015     <!DOCTYPE p SYSTEM "dtd">
11016     <p a="&entity;"/>
11017     @@@test:domTree:
11018     document {
11019     document-type { }
11020     element {
11021     attribute {
11022     node-name: 'a';
11023     general-entity-reference {
11024     is-expanded: false;
11025     }
11026     }
11027     }
11028     }
11029    
11030 wakaba 1.21 @@XMLTest:
11031 wakaba 1.22 @@@QName: xp.reptxt.attval.ger.entity.declared.nopref.1.test
11032 wakaba 1.21 @@@DEnt:
11033     @@@@test:value:
11034     <!DOCTYPE p [
11035 wakaba 1.22 <!ENTITY c "&entity;">
11036 wakaba 1.21 ]>
11037 wakaba 1.22 <p a="&c;"/>
11038     @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
11039 wakaba 1.21 @@XMLTest:
11040 wakaba 1.22 @@@QName: xp.reptxt.attval.ger.entity.declared.nopref.2.test
11041 wakaba 1.21 @@@DEnt:
11042     @@@@test:value:
11043     <!DOCTYPE p [
11044     <!ENTITY other "aa">
11045     <!ENTITY % another "aa">
11046 wakaba 1.22 <!ENTITY c "&entity;">
11047 wakaba 1.21 ]>
11048 wakaba 1.22 <p a="&c;"/>
11049     @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
11050 wakaba 1.21 @@XMLTest:
11051 wakaba 1.22 @@@QName: xp.reptxt.attval.ger.entity.declared.nopref.3.test
11052 wakaba 1.21 @@@DEnt:
11053     @@@@test:value:
11054     <?xml version="1.0" standalone="yes"?>
11055     <!DOCTYPE p [
11056 wakaba 1.22 <!ENTITY c "&entity;">
11057 wakaba 1.21 ]>
11058 wakaba 1.22 <p a="&c;"/>
11059     @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
11060 wakaba 1.21 @@XMLTest:
11061 wakaba 1.22 @@@QName: xp.reptxt.attval.ger.entity.declared.nopref.4.test
11062 wakaba 1.21 @@@DEnt:
11063     @@@@test:value:
11064     <?xml version="1.0" standalone="no"?>
11065     <!DOCTYPE p [
11066 wakaba 1.22 <!ENTITY c "&entity;">
11067 wakaba 1.21 ]>
11068 wakaba 1.22 <p a="&c;"/>
11069     @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
11070 wakaba 1.21 @@XMLTest:
11071 wakaba 1.22 @@@QName: xp.reptxt.attval.ger.entity.declared.nopref.5.test
11072 wakaba 1.21 @@@DEnt:
11073     @@@@test:value:
11074     <?xml version="1.0" standalone="yes"?>
11075     <!DOCTYPE p [
11076     <!ENTITY other "aa">
11077     <!ENTITY % another "aa">
11078 wakaba 1.22 <!ENTITY c "&entity;">
11079 wakaba 1.21 ]>
11080 wakaba 1.22 <p a="&c;"/>
11081     @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
11082 wakaba 1.21 @@XMLTest:
11083 wakaba 1.22 @@@QName: xp.reptxt.attval.ger.entity.declared.nopref.6.test
11084 wakaba 1.21 @@@DEnt:
11085     @@@@test:value:
11086     <?xml version="1.0" standalone="no"?>
11087     <!DOCTYPE p [
11088     <!ENTITY other "aa">
11089     <!ENTITY % another "aa">
11090 wakaba 1.22 <!ENTITY c "&entity;">
11091 wakaba 1.21 ]>
11092 wakaba 1.22 <p a="&c;"/>
11093     @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
11094 wakaba 1.21 @@XMLTest:
11095 wakaba 1.22 @@@QName: xp.reptxt.attval.ger.entity.declared.nopref.-1.test
11096 wakaba 1.21 @@@DEnt:
11097     @@@@test:value:
11098     <!DOCTYPE p [
11099     <!ENTITY entity "value">
11100 wakaba 1.22 <!ENTITY c "&entity;">
11101 wakaba 1.21 ]>
11102 wakaba 1.22 <p a="&c;"/>
11103 wakaba 1.21 @@@test:domTree:
11104     document {
11105     document-type {
11106     general-entity {
11107     node-name: 'entity';
11108     text-content: 'value';
11109     }
11110 wakaba 1.22 general-entity {
11111     node-name: 'c';
11112     general-entity-reference {
11113     node-name: 'entity';
11114     text-content: 'value';
11115 wakaba 1.21 }
11116     }
11117     }
11118     element {
11119     attribute {
11120     node-name: 'a';
11121     general-entity-reference {
11122 wakaba 1.22 node-name: 'c';
11123     general-entity-reference {
11124     node-name: 'entity';
11125     text-content: 'value';
11126     }
11127 wakaba 1.21 }
11128     }
11129     }
11130     }
11131     @@XMLTest:
11132 wakaba 1.22 @@@QName: xp.reptxt.attval.ger.entity.declared.nopref.-2.test
11133 wakaba 1.21 @@@DEnt:
11134     @@@@test:value:
11135     <!DOCTYPE p [
11136     <!ENTITY entity "value">
11137     <!ENTITY another SYSTEM "another">
11138 wakaba 1.22 <!ENTITY c "&entity;">
11139 wakaba 1.21 ]>
11140 wakaba 1.22 <p a="&c;"/>
11141 wakaba 1.21 @@@test:domTree:
11142     document {
11143     document-type {
11144     general-entity {
11145     node-name: 'entity';
11146     text-content: 'value';
11147 wakaba 1.22 }
11148     general-entity {
11149     node-name: 'c';
11150     general-entity-reference {
11151     node-name: 'entity';
11152     text-content: 'value';
11153     }
11154 wakaba 1.21 }
11155     general-entity {
11156     node-name: 'another';
11157     public-id: null;
11158     system-id: 'another';
11159     has-replacement-tree: false;
11160     }
11161     }
11162     element {
11163     attribute {
11164     node-name: 'a';
11165     general-entity-reference {
11166 wakaba 1.22 node-name: 'c';
11167     general-entity-reference {
11168     node-name: 'entity';
11169     text-content: 'value';
11170     }
11171 wakaba 1.21 }
11172     }
11173     }
11174     }
11175     @@XMLTest:
11176 wakaba 1.22 @@@QName: xp.reptxt.attval.ger.entity.declared.standalone.2.test
11177 wakaba 1.21 @@@DEnt:
11178     @@@@test:value:
11179     <?xml version="1.0" standalone="yes"?>
11180     <!DOCTYPE p [
11181 wakaba 1.22 <!ENTITY c "&entity;">
11182 wakaba 1.21 ]>
11183 wakaba 1.22 <p a="&c;"/>
11184     @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
11185 wakaba 1.21 @@XMLTest:
11186 wakaba 1.22 @@@QName: xp.reptxt.attval.ger.entity.declared.standalone.3.test
11187 wakaba 1.21 @@@DEnt:
11188     @@@@test:value:
11189     <?xml version="1.0" standalone="yes"?>
11190     <!DOCTYPE p [
11191     <!ENTITY % para "<!-- -->">
11192     %para;
11193 wakaba 1.22 <!ENTITY c "&entity;">
11194 wakaba 1.21 ]>
11195 wakaba 1.22 <p a="&c;"/>
11196     @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
11197 wakaba 1.21 @@XMLTest:
11198 wakaba 1.22 @@@QName: xp.reptxt.attval.ger.entity.declared.standalone.-1.test
11199 wakaba 1.21 @@@DEnt:
11200     @@@@test:value:
11201 wakaba 1.22 <?xml version="1.0" standalone="no"?>
11202 wakaba 1.21 <!DOCTYPE p [
11203 wakaba 1.22 <!ENTITY c "&entity;">
11204 wakaba 1.21 <!ENTITY % para "<!-- -->">
11205     %para;
11206     ]>
11207 wakaba 1.22 <p a="&c;"/>
11208     @@@test:domTree:
11209     document {
11210     document-type {
11211     general-entity {
11212     node-name: 'c';
11213     general-entity-reference {
11214     node-name: 'entity';
11215     is-expanded: false;
11216     }
11217     }
11218     }
11219     element {
11220     attribute {
11221     node-name: 'a';
11222     general-entity-reference {
11223     node-name: 'c';
11224     general-entity-reference {
11225     node-name: 'entity';
11226     is-expanded: false;
11227     }
11228     }
11229     }
11230     }
11231     }
11232 wakaba 1.21 @@XMLTest:
11233 wakaba 1.22 @@@QName:
11234     xp.reptxt.attval.ger.entity.declared.standalone.-1.2.test
11235 wakaba 1.21 @@@DEnt:
11236     @@@@test:value:
11237     <?xml version="1.0" standalone="no"?>
11238     <!DOCTYPE p [
11239     <!ENTITY % para "<!-- -->">
11240     %para;
11241 wakaba 1.22 <!ENTITY c "&entity;">
11242 wakaba 1.21 ]>
11243 wakaba 1.22 <p a="&c;"/>
11244     @@@test:domTree:
11245     document {
11246     document-type { }
11247     element {
11248     attribute {
11249     node-name: 'a';
11250     general-entity-reference {
11251     node-name: 'c';
11252     is-expanded: false;
11253     }
11254     }
11255     }
11256     }
11257 wakaba 1.21 @@XMLTest:
11258 wakaba 1.22 @@@QName: xp.reptxt.attval.ger.entity.declared.standalone.-2.test
11259 wakaba 1.21 @@@DEnt:
11260     @@@@test:value:
11261     <!DOCTYPE p [
11262 wakaba 1.22 <!ENTITY c "&entity;">
11263     <!ENTITY % para "<!-- -->">
11264     %para;
11265     ]>
11266     <p a="&c;"/>
11267     @@@test:domTree:
11268     document {
11269     document-type { }
11270     element {
11271     attribute {
11272     node-name: 'a';
11273     general-entity-reference {
11274     node-name: 'c';
11275     is-expanded: true;
11276     general-entity-reference {
11277     node-name: 'entity';
11278     is-expanded: false;
11279     }
11280     }
11281     }
11282     }
11283     }
11284     @@XMLTest:
11285     @@@QName:
11286     xp.reptxt.attval.ger.entity.declared.standalone.-2.2.test
11287     @@@DEnt:
11288     @@@@test:value:
11289     <!DOCTYPE p [
11290     <!ENTITY % para "<!-- -->">
11291     %para;
11292     <!ENTITY c "&entity;">
11293     ]>
11294     <p a="&c;"/>
11295     @@@test:domTree:
11296     document {
11297     document-type { }
11298     element {
11299     attribute {
11300     node-name: 'a';
11301     general-entity-reference {
11302     node-name: 'c';
11303     is-expanded: false;
11304     }
11305     }
11306     }
11307     }
11308     @@XMLTest:
11309     @@@QName: xp.reptxt.attval.ger.entity.declared.standalone.4.test
11310     @@@DEnt:
11311     @@@@test:value:
11312     <?xml version="1.0" standalone="yes"?>
11313     <!DOCTYPE p [
11314     <!ENTITY % para SYSTEM "para">
11315     %para;
11316     <!ENTITY c "&entity;">
11317     ]>
11318     <p a="&c;"/>
11319     @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
11320     @@XMLTest:
11321     @@@QName: xp.reptxt.attval.ger.entity.declared.standalone.-3.test
11322     @@@DEnt:
11323     @@@@test:value:
11324     <?xml version="1.0" standalone="no"?>
11325     <!DOCTYPE p [
11326     <!ENTITY c "&entity;">
11327     <!ENTITY % para SYSTEM "para">
11328     %para;
11329     ]>
11330     <p a="&c;"/>
11331     @@@test:domTree:
11332     document {
11333     document-type { }
11334     element {
11335     attribute {
11336     node-name: 'a';
11337     general-entity-reference {
11338     node-name: 'c';
11339     is-expanded: true;
11340     general-entity-reference {
11341     node-name: 'entity';
11342     is-expanded: false;
11343     }
11344     }
11345     }
11346     }
11347     }
11348     @@XMLTest:
11349     @@@QName:
11350     xp.reptxt.attval.ger.entity.declared.standalone.-3.2.test
11351     @@@DEnt:
11352     @@@@test:value:
11353     <?xml version="1.0" standalone="no"?>
11354     <!DOCTYPE p [
11355     <!ENTITY % para SYSTEM "para">
11356     %para;
11357     <!ENTITY c "&entity;">
11358     ]>
11359     <p a="&c;"/>
11360     @@@test:domTree:
11361     document {
11362     document-type { }
11363     element {
11364     attribute {
11365     node-name: 'a';
11366     general-entity-reference {
11367     node-name: 'c';
11368     is-expanded: false;
11369     }
11370     }
11371     }
11372     }
11373     @@XMLTest:
11374     @@@QName: xp.reptxt.attval.ger.entity.declared.standalone.-4.test
11375     @@@DEnt:
11376     @@@@test:value:
11377     <!DOCTYPE p [
11378     <!ENTITY c "&entity;">
11379     <!ENTITY % para SYSTEM "para">
11380     %para;
11381     ]>
11382     <p a="&c;"/>
11383     @@@test:domTree:
11384     document {
11385     document-type { }
11386     element {
11387     attribute {
11388     node-name: 'a';
11389     general-entity-reference {
11390     node-name: 'c';
11391     is-expanded: true;
11392     general-entity-reference {
11393     node-name: 'entity';
11394     is-expanded: false;
11395     }
11396     }
11397     }
11398     }
11399     }
11400     @@XMLTest:
11401     @@@QName:
11402     xp.reptxt.attval.ger.entity.declared.standalone.-4.2.test
11403     @@@DEnt:
11404     @@@@test:value:
11405     <!DOCTYPE p [
11406     <!ENTITY % para SYSTEM "para">
11407     %para;
11408     <!ENTITY c "&entity;">
11409     ]>
11410     <p a="&c;"/>
11411     @@@test:domTree:
11412     document {
11413     document-type { }
11414     element {
11415     attribute {
11416     node-name: 'a';
11417     general-entity-reference {
11418     node-name: 'c';
11419     is-expanded: false;
11420     }
11421     }
11422     }
11423     }
11424     @@XMLTest:
11425     @@@QName: xp.reptxt.attval.ger.entity.declared.standalone.5.test
11426     @@@DEnt:
11427     @@@@test:value:
11428     <?xml version="1.0" standalone="yes"?>
11429     <!DOCTYPE p SYSTEM "dtd" [
11430     <!ENTITY c "&entity;">
11431     ]>
11432     <p a="&c;"/>
11433     @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
11434     @@XMLTest:
11435     @@@QName: xp.reptxt.attval.ger.entity.declared.standalone.-5.test
11436     @@@DEnt:
11437     @@@@test:value:
11438     <?xml version="1.0" standalone="no"?>
11439     <!DOCTYPE p SYSTEM "dtd" [
11440     <!ENTITY c "&entity;">
11441     ]>
11442     <p a="&c;"/>
11443     @@@test:domTree:
11444     document {
11445     document-type { }
11446     element {
11447     attribute {
11448     node-name: 'a';
11449     general-entity-reference {
11450     node-name: 'c';
11451     is-expanded: true;
11452     general-entity-reference {
11453     node-name: 'entity';
11454     is-expanded: false;
11455     }
11456     }
11457     }
11458     }
11459     }
11460     @@XMLTest:
11461     @@@QName: xp.reptxt.attval.ger.entity.declared.standalone.-6.test
11462     @@@DEnt:
11463     @@@@test:value:
11464     <!DOCTYPE p SYSTEM "dtd" [<!ENTITY c "&entity;">]>
11465     <p a="&c;"/>
11466     @@@test:domTree:
11467     document {
11468     document-type { }
11469     element {
11470     attribute {
11471     node-name: 'a';
11472     general-entity-reference {
11473     node-name: 'c';
11474     is-expanded: true;
11475     general-entity-reference {
11476     node-name: 'entity';
11477     is-expanded: false;
11478     }
11479     }
11480     }
11481     }
11482     }
11483    
11484     @@XMLTest:
11485     @@@QName: xp.attlist.dup.entity.declared.1.test
11486     @@@DEnt:
11487     @@@@test:value:
11488     <!DOCTYPE p [
11489     <!ATTLIST p a CDATA "no-entity">
11490     <!ATTLIST p a CDATA "&entity;">
11491     ]>
11492     <p/>
11493     @@@c:erred: <[[xp|wf-entity-declared]]> { (3, 21)..(3, 29); }
11494     @@XMLTest:
11495     @@@QName: xp.attlist.dup.entity.declared.2.test
11496     @@@DEnt:
11497     @@@@test:value:
11498     <!DOCTYPE p [
11499     <!ATTLIST p a CDATA "no-entity"
11500     a CDATA "&entity;">
11501     ]>
11502     <p/>
11503     @@@c:erred: <[[xp|wf-entity-declared]]> { (3, 21)..(3, 29); }
11504     @@XMLTest:
11505     @@@QName: xp.attlist.unused.entity.declared.1.test
11506     @@@DEnt:
11507     @@@@test:value:
11508     <!DOCTYPE p [
11509     <!ATTLIST q a CDATA "&entity;">
11510     ]>
11511     <p/>
11512     @@@c:erred: <[[xp|wf-entity-declared]]> { (2, 21)..(2, 29); }
11513     @@XMLTest:
11514     @@@QName: xp.attlist.unused.entity.declared.2.test
11515     @@@DEnt:
11516     @@@@test:value:
11517     <!DOCTYPE p [
11518     <!ATTLIST p a CDATA "&entity;">
11519     ]>
11520     <p a="bb"/>
11521     @@@c:erred: <[[xp|wf-entity-declared]]> { (2, 21)..(2, 29); }
11522    
11523     @@XMLTest:
11524     @@@QName: xp.reptxt.attlist.attval.ger.entity.declared.nopref.1.test
11525     @@@DEnt:
11526     @@@@test:value:
11527     <!DOCTYPE p [
11528     <!ENTITY c "&entity;">
11529     <!ATTLIST p a CDATA "&c;">
11530     ]>
11531     <p/>
11532     @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
11533     @@XMLTest:
11534     @@@QName: xp.reptxt.attlist.attval.ger.entity.declared.nopref.2.test
11535     @@@DEnt:
11536     @@@@test:value:
11537     <!DOCTYPE p [
11538     <!ENTITY other "aa">
11539     <!ENTITY % another "aa">
11540     <!ENTITY c "&entity;">
11541     <!ATTLIST p a CDATA "&c;">
11542     ]>
11543     <p/>
11544     @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
11545     @@XMLTest:
11546     @@@QName: xp.reptxt.attlist.attval.ger.entity.declared.nopref.3.test
11547     @@@DEnt:
11548     @@@@test:value:
11549     <?xml version="1.0" standalone="yes"?>
11550     <!DOCTYPE p [
11551     <!ENTITY c "&entity;">
11552     <!ATTLIST p a CDATA "&c;">
11553     ]>
11554     <p/>
11555     @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
11556     @@XMLTest:
11557     @@@QName: xp.reptxt.attlist.attval.ger.entity.declared.nopref.4.test
11558     @@@DEnt:
11559     @@@@test:value:
11560     <?xml version="1.0" standalone="no"?>
11561     <!DOCTYPE p [
11562     <!ENTITY c "&entity;">
11563     <!ATTLIST p a CDATA "&c;">
11564     ]>
11565     <p/>
11566     @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
11567     @@XMLTest:
11568     @@@QName: xp.reptxt.attlist.attval.ger.entity.declared.nopref.5.test
11569     @@@DEnt:
11570     @@@@test:value:
11571     <?xml version="1.0" standalone="yes"?>
11572     <!DOCTYPE p [
11573     <!ENTITY other "aa">
11574     <!ENTITY % another "aa">
11575     <!ENTITY c "&entity;">
11576     <!ATTLIST p a CDATA "&c;">
11577     ]>
11578     <p/>
11579     @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
11580     @@XMLTest:
11581     @@@QName: xp.reptxt.attlist.attval.ger.entity.declared.nopref.6.test
11582     @@@DEnt:
11583     @@@@test:value:
11584     <?xml version="1.0" standalone="no"?>
11585     <!DOCTYPE p [
11586     <!ENTITY other "aa">
11587     <!ENTITY % another "aa">
11588     <!ENTITY c "&entity;">
11589     <!ATTLIST p a CDATA "&c;">
11590     ]>
11591     <p/>
11592     @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
11593     @@XMLTest:
11594     @@@QName: xp.reptxt.attlist.attval.ger.entity.declared.nopref.-1.test
11595     @@@DEnt:
11596     @@@@test:value:
11597     <!DOCTYPE p [
11598     <!ENTITY entity "value">
11599     <!ENTITY c "&entity;">
11600     <!ATTLIST p a CDATA "&c;">
11601     ]>
11602     <p/>
11603     @@@test:domTree:
11604     document {
11605     document-type {
11606     general-entity {
11607     node-name: 'entity';
11608     text-content: 'value';
11609     }
11610     general-entity {
11611     node-name: 'c';
11612     general-entity-reference {
11613     node-name: 'entity';
11614     is-expanded: true;
11615     text-content: 'value';
11616     }
11617     }
11618     element-type-definition {
11619     node-name: 'p';
11620     attribute-definition {
11621     node-name: 'a';
11622     general-entity-reference {
11623     node-name: 'c';
11624     is-expanded: true;
11625     general-entity-reference {
11626     node-name: 'entity';
11627     is-expanded: true;
11628     text-content: 'value';
11629     }
11630     }
11631     }
11632     }
11633     }
11634     element {
11635     attribute {
11636     node-name: 'a';
11637     specified: false;
11638     general-entity-reference {
11639     node-name: 'c';
11640     general-entity-reference {
11641     node-name: 'entity';
11642     text-content: 'value';
11643     }
11644     }
11645     }
11646     }
11647     }
11648     @@XMLTest:
11649     @@@QName: xp.reptxt.attlist.attval.ger.entity.declared.nopref.-2.test
11650     @@@DEnt:
11651     @@@@test:value:
11652     <!DOCTYPE p [
11653     <!ENTITY entity "value">
11654     <!ENTITY another SYSTEM "another">
11655     <!ENTITY c "&entity;">
11656     <!ATTLIST p a CDATA "&c;">
11657     ]>
11658     <p/>
11659     @@@test:domTree:
11660     document {
11661     document-type {
11662     general-entity {
11663     node-name: 'entity';
11664     text-content: 'value';
11665     }
11666     general-entity {
11667     node-name: 'c';
11668     general-entity-reference {
11669     node-name: 'entity';
11670     text-content: 'value';
11671     }
11672     }
11673     general-entity {
11674     node-name: 'another';
11675     public-id: null;
11676     system-id: 'another';
11677     has-replacement-tree: false;
11678     }
11679     element-type-definition {
11680     node-name: 'p';
11681     attribute-definition {
11682     node-name: 'a';
11683     general-entity-reference {
11684     node-name: 'c';
11685     is-expanded: true;
11686     general-entity-reference {
11687     node-name: 'entity';
11688     is-expanded: true;
11689     text-content: 'value';
11690     }
11691     }
11692     }
11693     }
11694     }
11695     element {
11696     attribute {
11697     node-name: 'a';
11698     specified: false;
11699     general-entity-reference {
11700     node-name: 'c';
11701     general-entity-reference {
11702     node-name: 'entity';
11703     text-content: 'value';
11704     }
11705     }
11706     }
11707     }
11708     }
11709     @@XMLTest:
11710     @@@QName: xp.reptxt.attlist.attval.ger.entity.declared.standalone.2.test
11711     @@@DEnt:
11712     @@@@test:value:
11713     <?xml version="1.0" standalone="yes"?>
11714     <!DOCTYPE p [
11715     <!ENTITY c "&entity;">
11716     <!ATTLIST p a CDATA "&c;">
11717     ]>
11718     <p/>
11719     @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
11720     @@XMLTest:
11721     @@@QName: xp.reptxt.attlist.attval.ger.entity.declared.standalone.3.test
11722     @@@DEnt:
11723     @@@@test:value:
11724     <?xml version="1.0" standalone="yes"?>
11725     <!DOCTYPE p [
11726     <!ENTITY % para "<!-- -->">
11727     %para;
11728     <!ENTITY c "&entity;">
11729     <!ATTLIST p a CDATA "&c;">
11730     ]>
11731     <p/>
11732     @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
11733     @@XMLTest:
11734     @@@QName: xp.reptxt.attlist.attval.ger.entity.declared.standalone.-1.test
11735     @@@DEnt:
11736     @@@@test:value:
11737     <?xml version="1.0" standalone="no"?>
11738     <!DOCTYPE p [
11739     <!ENTITY c "&entity;">
11740     <!ATTLIST p a CDATA "&c;">
11741     <!ENTITY % para "<!-- -->">
11742     %para;
11743     ]>
11744     <p/>
11745     @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
11746     @@XMLTest:
11747     @@@QName:
11748     xp.reptxt.attlist.attval.ger.entity.declared.standalone.-1.2.test
11749     @@@DEnt:
11750     @@@@test:value:
11751     <?xml version="1.0" standalone="no"?>
11752     <!DOCTYPE p [
11753     <!ENTITY % para "<!-- -->">
11754     %para;
11755     <!ENTITY c "&entity;">
11756     <!ATTLIST p a CDATA "&c;">
11757     ]>
11758     <p g="h"/>
11759     @@@test:domTree:
11760     document {
11761     document-type { }
11762     element {
11763     attribute {
11764     node-name: 'g';
11765     text-content: 'h';
11766     }
11767     }
11768     }
11769     @@XMLTest:
11770     @@@QName: xp.reptxt.attlist.attval.ger.entity.declared.standalone.-2.test
11771     @@@DEnt:
11772     @@@@test:value:
11773     <!DOCTYPE p [
11774     <!ENTITY c "&entity;">
11775     <!ATTLIST p a CDATA "&c;">
11776     <!ENTITY % para "<!-- -->">
11777     %para;
11778     ]>
11779     <p/>
11780     @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
11781     @@XMLTest:
11782     @@@QName:
11783     xp.reptxt.attlist.attval.ger.entity.declared.standalone.-2.2.test
11784     @@@DEnt:
11785     @@@@test:value:
11786     <!DOCTYPE p [
11787     <!ENTITY % para "<!-- -->">
11788     %para;
11789     <!ENTITY c "&entity;">
11790     <!ATTLIST p a CDATA "&c;">
11791     ]>
11792     <p g="h"/>
11793     @@@test:domTree:
11794     document {
11795     document-type { }
11796     element {
11797     attribute {
11798     node-name: 'g';
11799     text-content: 'h';
11800     }
11801     }
11802     }
11803     @@XMLTest:
11804     @@@QName: xp.reptxt.attlist.attval.ger.entity.declared.standalone.4.test
11805     @@@DEnt:
11806     @@@@test:value:
11807     <?xml version="1.0" standalone="yes"?>
11808     <!DOCTYPE p [
11809     <!ENTITY % para SYSTEM "para">
11810     %para;
11811     <!ENTITY c "&entity;">
11812     <!ATTLIST p a CDATA "&c;">
11813     ]>
11814     <p/>
11815     @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
11816     @@XMLTest:
11817     @@@QName: xp.reptxt.attlist.attval.ger.entity.declared.standalone.-3.test
11818     @@@DEnt:
11819     @@@@test:value:
11820     <?xml version="1.0" standalone="no"?>
11821     <!DOCTYPE p [
11822     <!ENTITY c "&entity;">
11823     <!ATTLIST p a CDATA "&c;">
11824     <!ENTITY % para SYSTEM "para">
11825     %para;
11826     ]>
11827     <p/>
11828     @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
11829     @@XMLTest:
11830     @@@QName:
11831     xp.reptxt.attlist.attval.ger.entity.declared.standalone.-3.2.test
11832     @@@DEnt:
11833     @@@@test:value:
11834     <?xml version="1.0" standalone="no"?>
11835     <!DOCTYPE p [
11836     <!ENTITY % para SYSTEM "para">
11837     %para;
11838     <!ENTITY c "&entity;">
11839     <!ATTLIST p a CDATA "&c;">
11840     ]>
11841     <p g="h"/>
11842     @@@test:domTree:
11843     document {
11844     document-type { }
11845     element {
11846     attribute {
11847     node-name: 'g';
11848     text-content: 'h';
11849     }
11850     }
11851     }
11852     @@XMLTest:
11853     @@@QName: xp.reptxt.attlist.attval.ger.entity.declared.standalone.-4.test
11854     @@@DEnt:
11855     @@@@test:value:
11856     <!DOCTYPE p [
11857     <!ENTITY c "&entity;">
11858     <!ATTLIST p a CDATA "&c;">
11859     <!ENTITY % para SYSTEM "para">
11860     %para;
11861     ]>
11862     <p/>
11863     @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
11864     @@XMLTest:
11865     @@@QName:
11866     xp.reptxt.attlist.attval.ger.entity.declared.standalone.-4.2.test
11867     @@@DEnt:
11868     @@@@test:value:
11869     <!DOCTYPE p [
11870     <!ENTITY % para SYSTEM "para">
11871     %para;
11872     <!ENTITY c "&entity;">
11873     <!ATTLIST p a CDATA "&c;">
11874     ]>
11875     <p g="h"/>
11876     @@@test:domTree:
11877     document {
11878     document-type { }
11879     element {
11880     attribute {
11881     node-name: 'g';
11882     text-content: 'h';
11883     }
11884     }
11885     }
11886     @@XMLTest:
11887     @@@QName: xp.reptxt.attlist.attval.ger.entity.declared.standalone.5.test
11888     @@@DEnt:
11889     @@@@test:value:
11890     <?xml version="1.0" standalone="yes"?>
11891     <!DOCTYPE p SYSTEM "dtd" [
11892     <!ENTITY c "&entity;">
11893     <!ATTLIST p a CDATA "&c;">
11894     ]>
11895     <p/>
11896     @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
11897     @@XMLTest:
11898     @@@QName: xp.reptxt.attlist.attval.ger.entity.declared.standalone.-5.test
11899     @@@DEnt:
11900     @@@@test:value:
11901     <?xml version="1.0" standalone="no"?>
11902     <!DOCTYPE p SYSTEM "dtd" [
11903     <!ENTITY c "&entity;">
11904     <!ATTLIST p a CDATA "&c;">
11905     ]>
11906     <p/>
11907     @@@test:domTree:
11908     document {
11909     document-type { }
11910     element {
11911     attribute {
11912     node-name: 'a';
11913     specified: false;
11914     general-entity-reference {
11915     node-name: 'c';
11916     is-expanded: true;
11917     general-entity-reference {
11918     node-name: 'entity';
11919     is-expanded: false;
11920     }
11921     }
11922     }
11923     }
11924     }
11925     @@XMLTest:
11926     @@@QName: xp.reptxt.attlist.attval.ger.entity.declared.standalone.-6.test
11927     @@@DEnt:
11928     @@@@test:value:
11929     <!DOCTYPE p SYSTEM "dtd" [<!ENTITY c "&entity;">
11930     <!ATTLIST p a CDATA "&c;">
11931     ]>
11932     <p/>
11933     @@@test:domTree:
11934     document {
11935     document-type { }
11936     element {
11937     attribute {
11938     node-name: 'a';
11939     specified: false;
11940     general-entity-reference {
11941     node-name: 'c';
11942     is-expanded: true;
11943     general-entity-reference {
11944     node-name: 'entity';
11945     is-expanded: false;
11946     }
11947     }
11948     }
11949     }
11950     }
11951    
11952     @@XMLTest:
11953     @@@QName: xp.attlist.attval.ger.entity.declared.nopref.1.test
11954     @@@DEnt:
11955     @@@@test:value:
11956     <!DOCTYPE p [
11957     <!ATTLIST p a CDATA "&entity;">
11958     ]>
11959     <p/>
11960     @@@c:erred: <[[xp|wf-entity-declared]]> { (2, 22)..(2, 29); }
11961     @@XMLTest:
11962     @@@QName: xp.attlist.attval.ger.entity.declared.nopref.2.test
11963     @@@DEnt:
11964     @@@@test:value:
11965     <!DOCTYPE p [
11966     <!ENTITY other "aa">
11967     <!ENTITY % another "aa">
11968     <!ATTLIST p a CDATA "&entity;">
11969     ]>
11970     <p/>
11971     @@@c:erred: <[[xp|wf-entity-declared]]> { (4, 22)..(4, 29); }
11972     @@XMLTest:
11973     @@@QName: xp.attlist.attval.ger.entity.declared.nopref.3.test
11974     @@@DEnt:
11975     @@@@test:value:
11976     <?xml version="1.0" standalone="yes"?>
11977     <!DOCTYPE p [
11978     <!ATTLIST p a CDATA "&entity;">
11979     ]>
11980     <p/>
11981     @@@c:erred: <[[xp|wf-entity-declared]]> { (3, 22)..(3, 29); }
11982     @@XMLTest:
11983     @@@QName: xp.attlist.attval.ger.entity.declared.nopref.4.test
11984     @@@DEnt:
11985     @@@@test:value:
11986     <?xml version="1.0" standalone="no"?>
11987     <!DOCTYPE p [
11988     <!ATTLIST p a CDATA "&entity;">
11989     ]>
11990     <p/>
11991     @@@c:erred: <[[xp|wf-entity-declared]]> { (3, 22)..(3, 29); }
11992     @@XMLTest:
11993     @@@QName: xp.attlist.attval.ger.entity.declared.nopref.5.test
11994     @@@DEnt:
11995     @@@@test:value:
11996     <?xml version="1.0" standalone="yes"?>
11997     <!DOCTYPE p [
11998     <!ENTITY other "aa">
11999     <!ENTITY % another "aa">
12000     <!ATTLIST p a CDATA "&entity;">
12001     ]>
12002     <p/>
12003     @@@c:erred: <[[xp|wf-entity-declared]]> { (5, 22)..(5, 29); }
12004     @@XMLTest:
12005     @@@QName: xp.attlist.attval.ger.entity.declared.nopref.6.test
12006     @@@DEnt:
12007     @@@@test:value:
12008     <?xml version="1.0" standalone="no"?>
12009     <!DOCTYPE p [
12010     <!ENTITY other "aa">
12011     <!ENTITY % another "aa">
12012     <!ATTLIST p a CDATA "&entity;">
12013     ]>
12014     <p/>
12015     @@@c:erred: <[[xp|wf-entity-declared]]> { (5, 22)..(5, 29); }
12016     @@XMLTest:
12017     @@@QName: xp.attlist.attval.ger.entity.declared.nopref.-1.test
12018     @@@DEnt:
12019     @@@@test:value:
12020     <!DOCTYPE p [
12021     <!ENTITY entity "value">
12022     <!ATTLIST p a CDATA "&entity;">
12023     ]>
12024     <p/>
12025     @@@test:domTree:
12026     document {
12027     document-type {
12028     general-entity {
12029     node-name: 'entity';
12030     text-content: 'value';
12031     }
12032     element-type-definition {
12033     node-name: 'p';
12034     attribute-definition {
12035     node-name: 'a';
12036     general-entity-reference {
12037     node-name: 'entity';
12038     is-expanded: true;
12039     text-content: 'value';
12040     }
12041     }
12042     }
12043     }
12044     element {
12045     attribute {
12046     node-name: 'a';
12047     specified: false;
12048     general-entity-reference {
12049     node-name: 'entity';
12050     is-expanded: true;
12051     text-content: 'value';
12052     }
12053     }
12054     }
12055     }
12056     @@XMLTest:
12057     @@@QName: xp.attlist.attval.ger.entity.declared.nopref.-1.2.test
12058     @@@DEnt:
12059     @@@@test:value:
12060     <!DOCTYPE p [
12061     <!ATTLIST p a CDATA "&entity;">
12062     <!ENTITY entity "value">
12063     ]>
12064     <p/>
12065     @@@c:erred: <[[xp|wf-entity-declared]]> { (2, 22)..(2, 29); }
12066     @@XMLTest:
12067     @@@QName: xp.attlist.attval.ger.entity.declared.nopref.-2.test
12068     @@@DEnt:
12069     @@@@test:value:
12070     <!DOCTYPE p [
12071     <!ENTITY entity "value">
12072     <!ENTITY another SYSTEM "another">
12073     <!ATTLIST p a CDATA "&entity;">
12074     ]>
12075     <p/>
12076     @@@test:domTree:
12077     document {
12078     document-type {
12079     element-type-definition {
12080     node-name: 'p';
12081     attribute-definition {
12082     node-name: 'a';
12083     general-entity-reference {
12084     node-name: 'entity';
12085     is-expanded: true;
12086     text-content: 'value';
12087     }
12088     }
12089     }
12090     general-entity {
12091     node-name: 'entity';
12092     text-content: 'value';
12093     has-replacement-tree: true;
12094     }
12095     general-entity {
12096     node-name: 'another';
12097     public-id: null;
12098     system-id: 'another';
12099     has-replacement-tree: false;
12100     }
12101     }
12102     element {
12103     attribute {
12104     node-name: 'a';
12105     specified: false;
12106     general-entity-reference {
12107     node-name: 'entity';
12108     is-expanded: true;
12109     text-content: 'value';
12110     }
12111     }
12112     }
12113     }
12114     @@XMLTest:
12115     @@@QName: xp.attlist.attval.ger.entity.declared.nopref.-2.2.test
12116     @@@DEnt:
12117     @@@@test:value:
12118     <!DOCTYPE p [
12119     <!ATTLIST p a CDATA "&entity;">
12120     <!ENTITY entity "value">
12121     <!ENTITY another SYSTEM "another">
12122     ]>
12123     <p/>
12124     @@@c:erred: <[[xp|wf-entity-declared]]> { (2, 22)..(2, 29); }
12125     @@XMLTest:
12126     @@@QName: xp.attlist.attval.ger.entity.declared.standalone.2.test
12127     @@@DEnt:
12128     @@@@test:value:
12129     <?xml version="1.0" standalone="yes"?>
12130     <!DOCTYPE p [
12131     <!ATTLIST p a CDATA "&entity;">
12132     ]>
12133     <p/>
12134     @@@c:erred: <[[xp|wf-entity-declared]]> { (3, 22)..(3, 29); }
12135     @@XMLTest:
12136     @@@QName: xp.attlist.attval.ger.entity.declared.standalone.3.test
12137     @@@DEnt:
12138     @@@@test:value:
12139     <?xml version="1.0" standalone="yes"?>
12140     <!DOCTYPE p [
12141     <!ATTLIST p a CDATA "&entity;">
12142     <!ENTITY % para "<!-- -->">
12143     %para;
12144     ]>
12145     <p/>
12146     @@@c:erred: <[[xp|wf-entity-declared]]> { (3, 22)..(3, 29); }
12147     @@XMLTest:
12148     @@@QName: xp.attlist.attval.ger.entity.declared.standalone.3.2.test
12149     @@@DEnt:
12150     @@@@test:value:
12151     <?xml version="1.0" standalone="yes"?>
12152     <!DOCTYPE p [
12153     <!ENTITY % para "<!-- -->">
12154     %para;
12155     <!ATTLIST p a CDATA "&entity;">
12156     ]>
12157     <p/>
12158     @@@c:erred: <[[xp|wf-entity-declared]]> { (5, 22)..(5, 29); }
12159     @@@enImplNote:
12160     The <XML::ATTLIST> declaration is processed since
12161     it is a <XA::standalone> document.
12162     @@XMLTest:
12163     @@@QName: xp.attlist.attval.ger.entity.declared.standalone.-1.test
12164     @@@DEnt:
12165     @@@@test:value:
12166     <?xml version="1.0" standalone="no"?>
12167     <!DOCTYPE p [
12168     <!ATTLIST p a CDATA "&entity;">
12169     <!ENTITY % para "<!-- -->">
12170     %para;
12171     ]>
12172     <p/>
12173     @@@c:erred: <[[xp|wf-entity-declared]]> { (3, 22)..(3, 29); }
12174     @@XMLTest:
12175     @@@QName: xp.attlist.attval.ger.entity.declared.standalone.-1.2.test
12176     @@@DEnt:
12177     @@@@test:value:
12178     <?xml version="1.0" standalone="no"?>
12179     <!DOCTYPE p [
12180 wakaba 1.25 <!ATTLIST p b CDATA #IMPLIED>
12181 wakaba 1.21 <!ENTITY % para "<!-- -->">
12182     %para;
12183     <!ATTLIST p a CDATA "&entity;">
12184     ]>
12185     <p c="d"/>
12186 wakaba 1.25 @@@c:erred:
12187     <[[xp|warning-attribute-definition-not-processed]]> { (6, 13)..(6, 30); }
12188 wakaba 1.21 @@@test:domTree:
12189     document {
12190     document-type {
12191     element-type-definition {
12192 wakaba 1.25 node-name: 'p';
12193 wakaba 1.21 attribute-definition {
12194     node-name: 'b';
12195     }
12196     }
12197     }
12198     element {
12199     attribute {
12200     node-name: 'c';
12201     text-content: 'd';
12202     }
12203     }
12204     }
12205     @@@enImplNote:
12206     The second <XML::ATTLIST> declaration is read but not processed
12207     and its <XML::&entity;> general entity reference violates
12208     entity declared validty constraint rather than well-formedness
12209     constraint.
12210     @@XMLTest:
12211     @@@QName: xp.attlist.attval.ger.entity.declared.standalone.-2.test
12212     @@@DEnt:
12213     @@@@test:value:
12214     <!DOCTYPE p [
12215     <!ATTLIST p a CDATA "&entity;">
12216     <!ENTITY % para "<!-- -->">
12217     %para;
12218     ]>
12219     <p/>
12220     @@@c:erred: <[[xp|wf-entity-declared]]> { (2, 22)..(2, 29); }
12221     @@XMLTest:
12222     @@@QName: xp.attlist.attval.ger.entity.declared.standalone.-2.2.test
12223     @@@DEnt:
12224     @@@@test:value:
12225     <!DOCTYPE p [
12226 wakaba 1.25 <!ATTLIST p b CDATA #IMPLIED>
12227 wakaba 1.21 <!ENTITY % para "<!-- -->">
12228     %para;
12229     <!ATTLIST p a CDATA "&entity;">
12230     ]>
12231     <p c="d"/>
12232 wakaba 1.25 @@@c:erred:
12233     <[[xp|warning-attribute-definition-not-processed]]> { (5, 13)..(5, 30); }
12234 wakaba 1.21 @@@test:domTree:
12235     document {
12236     document-type {
12237     element-type-definition {
12238 wakaba 1.25 node-name: 'p';
12239 wakaba 1.21 attribute-definition {
12240     node-name: 'b';
12241     }
12242     }
12243     }
12244     element {
12245     attribute {
12246     node-name: 'c';
12247     text-content: 'd';
12248     }
12249     }
12250     }
12251     @@XMLTest:
12252     @@@QName: xp.attlist.attval.ger.entity.declared.standalone.4.test
12253     @@@DEnt:
12254     @@@@test:value:
12255     <?xml version="1.0" standalone="yes"?>
12256     <!DOCTYPE p [
12257     <!ATTLIST p a CDATA "&entity;">
12258     <!ENTITY % para SYSTEM "p">
12259     %para;
12260     ]>
12261     <p/>
12262     @@@c:erred: <[[xp|wf-entity-declared]]> { (3, 22)..(3, 29); }
12263     @@XMLTest:
12264     @@@QName: xp.attlist.attval.ger.entity.declared.standalone.4.2.test
12265     @@@DEnt:
12266     @@@@test:value:
12267     <?xml version="1.0" standalone="yes"?>
12268     <!DOCTYPE p [
12269     <!ENTITY % para SYSTEM "p">
12270     %para;
12271     <!ATTLIST p a CDATA "&entity;">
12272     ]>
12273     <p/>
12274     @@@c:erred: <[[xp|wf-entity-declared]]> { (5, 22)..(5, 29); }
12275     @@@enImplNote:
12276     The <XML::ATTLIST> declaration is processed since
12277     it is a <XA::standalone> document.
12278     @@XMLTest:
12279     @@@QName: xp.attlist.attval.ger.entity.declared.standalone.-3.test
12280     @@@DEnt:
12281     @@@@test:value:
12282     <?xml version="1.0" standalone="no"?>
12283     <!DOCTYPE p [
12284     <!ATTLIST p a CDATA "&entity;">
12285     <!ENTITY % para SYSTEM "p">
12286     %para;
12287     ]>
12288     <p/>
12289     @@@c:erred: <[[xp|wf-entity-declared]]> { (3, 22)..(3, 29); }
12290     @@@enImplNote:
12291     Is this well-formed? It has a parameter entity reference,
12292     therefore, it does not violates Entity Declared WFC, isn't it?
12293    
12294     Note that Firefox 1.5 and Opera 9 TP1 reports that this document has a
12295     fatal error (also note that they does not support unexpanded).
12296    
12297     See also:
12298     <URI::http://suika.fam.cx/gate/2005/sw/%E5%B1%9E%E6%80%A7%E5%80%A4%E8%A1%A8%E8%A8%98#anchor-8>
12299     @@XMLTest:
12300     @@@QName: xp.attlist.attval.ger.entity.declared.standalone.-3.2.test
12301     @@@DEnt:
12302     @@@@test:value:
12303     <?xml version="1.0" standalone="no"?>
12304     <!DOCTYPE p [
12305 wakaba 1.25 <!ATTLIST p b CDATA #IMPLIED>
12306 wakaba 1.21 <!ENTITY % para SYSTEM "p">
12307     %para;
12308     <!ATTLIST p a CDATA "&entity;">
12309     ]>
12310     <p c="d"/>
12311 wakaba 1.25 @@@c:erred:
12312     <[[xp|warning-attribute-definition-not-processed]]> { (6, 13)..(6, 30); }
12313 wakaba 1.21 @@@test:domTree:
12314     document {
12315     document-type {
12316     element-type-definition {
12317 wakaba 1.25 node-name: 'p';
12318 wakaba 1.21 attribute-definition {
12319     node-name: 'b';
12320     }
12321     }
12322     }
12323     element {
12324     attribute {
12325     node-name: 'c';
12326     text-content: 'd';
12327     }
12328     }
12329     }
12330     @@@enImplNote:
12331     The second <XML::ATTLIST> declaration is read but not processed
12332     and its <XML::&entity;> general entity reference violates
12333     entity declared validty constraint rather than well-formedness
12334     constraint.
12335     @@XMLTest:
12336     @@@QName: xp.attlist.attval.ger.entity.declared.standalone.-4.test
12337     @@@DEnt:
12338     @@@@test:value:
12339     <!DOCTYPE p [
12340     <!ATTLIST p a CDATA "&entity;">
12341     <!ENTITY % para SYSTEM "p">
12342     %para;
12343     ]>
12344     <p/>
12345     @@@c:erred: <[[xp|wf-entity-declared]]> { (2, 22)..(2, 29); }
12346     @@XMLTest:
12347     @@@QName: xp.attlist.attval.ger.entity.declared.standalone.-4.2.test
12348     @@@DEnt:
12349     @@@@test:value:
12350     <!DOCTYPE p [
12351 wakaba 1.25 <!ATTLIST p b CDATA #IMPLIED>
12352 wakaba 1.21 <!ENTITY % para SYSTEM "p">
12353     %para;
12354     <!ATTLIST p a CDATA "&entity;">
12355     ]>
12356     <p c="d"/>
12357 wakaba 1.25 @@@c:erred:
12358     <[[xp|warning-attribute-definition-not-processed]]> { (5, 13)..(5, 30); }
12359 wakaba 1.21 @@@test:domTree:
12360     document {
12361     document-type {
12362     element-type-definition {
12363 wakaba 1.25 node-name: 'p';
12364 wakaba 1.21 attribute-definition {
12365     node-name: 'b';
12366     }
12367     }
12368     }
12369     element {
12370     attribute {
12371     node-name: 'c';
12372     text-content: 'd';
12373     }
12374     }
12375     }
12376     @@XMLTest:
12377     @@@QName: xp.attlist.attval.ger.entity.declared.standalone.5.test
12378     @@@DEnt:
12379     @@@@test:value:
12380     <?xml version="1.0" standalone="yes"?>
12381     <!DOCTYPE p SYSTEM "dtd" [
12382     <!ATTLIST p a CDATA "&entity;">
12383     ]>
12384     <p/>
12385     @@@c:erred: <[[xp|wf-entity-declared]]> { (3, 22)..(3, 29); }
12386     @@@enImplNote:
12387     This document has an error - result is implementation dependent.
12388     @@XMLTest:
12389     @@@QName: xp.attlist.attval.ger.entity.declared.standalone.-5.test
12390     @@@DEnt:
12391     @@@@test:value:
12392     <?xml version="1.0" standalone="no"?>
12393     <!DOCTYPE p SYSTEM "dtd" [
12394     <!ATTLIST p a CDATA "&entity;">
12395     ]>
12396     <p/>
12397     @@@test:domTree:
12398     document {
12399     document-type {
12400     element-type-definition {
12401     node-name: 'p';
12402     attribute-definition {
12403     node-name: 'a';
12404     general-entity-reference {
12405     node-name: 'entity';
12406     is-expanded: false;
12407     }
12408     }
12409     }
12410     }
12411     element {
12412     attribute {
12413     node-name: 'a';
12414     specified: false;
12415     general-entity-reference {
12416     node-name: 'entity';
12417     is-expanded: false;
12418     }
12419     }
12420     }
12421     }
12422     @@@enImplNote:
12423     This document has an error - result is implementation dependent.
12424     @@XMLTest:
12425     @@@QName: xp.attlist.attval.ger.entity.declared.standalone.-6.test
12426     @@@DEnt:
12427     @@@@test:value:
12428     <!DOCTYPE p SYSTEM "dtd" [
12429     <!ATTLIST p a CDATA "&entity;">
12430     ]>
12431     <p/>
12432     @@@test:domTree:
12433     document {
12434     document-type {
12435     element-type-definition {
12436     node-name: 'p';
12437     attribute-definition {
12438     node-name: 'a';
12439     general-entity-reference {
12440     node-name: 'entity';
12441     is-expanded: false;
12442     }
12443     }
12444     }
12445     }
12446     element {
12447     attribute {
12448     node-name: 'a';
12449     specified: false;
12450     general-entity-reference {
12451     node-name: 'entity';
12452     is-expanded: false;
12453     }
12454     }
12455     }
12456     }
12457     @@@enImplNote:
12458     This document has an error - result is implementation dependent.
12459    
12460 wakaba 1.19 @@enImplNote:
12461     {TODO:: Entity declared WFC for
12462 wakaba 1.20
12463     - General entity references in entity value??
12464 wakaba 1.19
12465     }
12466    
12467 wakaba 1.23 @@XMLTest:
12468     @@@QName: xp.element.content.parsed.entity.reference.test
12469     @@@DEnt:
12470     @@@@test:value:
12471     <!DOCTYPE p [
12472     <!NOTATION n SYSTEM "notation">
12473     <!ENTITY ext SYSTEM "system" NDATA n>
12474     ]>
12475     <p>&ext;</p>
12476     @@@c:erred: <[[xp|wf-parsed-entity]]> { (5, 4)..(5, 8); }
12477     @@XMLTest:
12478     @@@QName: xp.attval.parsed.entity.reference.test
12479     @@@DEnt:
12480     @@@@test:value:
12481     <!DOCTYPE p [
12482     <!NOTATION n SYSTEM "notation">
12483     <!ENTITY ext SYSTEM "system" NDATA n>
12484     ]>
12485     <p a="&ext;"/>
12486     # @@@c:erred: <[[xp|wf-parsed-entity]]> { (5, 7)..(5, 11); }
12487     @@@c:erred: <[[xp|wf-no-external-entity-references]]> { (5, 7)..(5, 11); }
12488     @@XMLTest:
12489     @@@QName: xp.element.content.reptxt.parsed.entity.reference.test
12490     @@@DEnt:
12491     @@@@test:value:
12492     <!DOCTYPE p [
12493     <!NOTATION n SYSTEM "notation">
12494     <!ENTITY ext SYSTEM "system" NDATA n>
12495     <!ENTITY c "&#x26;ext;">
12496     ]>
12497     <p>&c;</p>
12498     @@@c:erred: <[[xp|wf-parsed-entity]]> { (1, 1)..(1, 5); }
12499     @@XMLTest:
12500     @@@QName: xp.attval.reptxt.parsed.entity.reference.test
12501     @@@DEnt:
12502     @@@@test:value:
12503     <!DOCTYPE p [
12504     <!NOTATION n SYSTEM "notation">
12505     <!ENTITY ext SYSTEM "system" NDATA n>
12506     <!ENTITY c "&#x26;ext;">
12507     ]>
12508     <p a="&c;"/>
12509     @@@c:erred: <[[xp|wf-no-external-entity-references]]> { (1, 1)..(1, 5); }
12510     @@@c:erred:
12511     @@@@@: <[[xp|wf-parsed-entity]]> { }
12512     @@@@enImplNote: During entity node construction.
12513     @@XMLTest:
12514     @@@QName: xp.element.content.entval.parsed.entity.reference.test
12515     @@@DEnt:
12516     @@@@test:value:
12517     <!DOCTYPE p [
12518     <!NOTATION n SYSTEM "notation">
12519     <!ENTITY ext SYSTEM "system" NDATA n>
12520     <!ENTITY c "&ext;">
12521     ]>
12522     <p>&c;</p>
12523     @@@c:erred: <[[xp|wf-parsed-entity]]> { }
12524     @@XMLTest:
12525     @@@QName: xp.attval.entval.parsed.entity.reference.test
12526     @@@DEnt:
12527     @@@@test:value:
12528     <!DOCTYPE p [
12529     <!NOTATION n SYSTEM "notation">
12530     <!ENTITY ext SYSTEM "system" NDATA n>
12531     <!ENTITY c "&ext;">
12532     ]>
12533     <p a="&c;"/>
12534     @@@c:erred: <[[xp|wf-no-external-entity-references]]> { }
12535     @@@c:erred: <[[xp|wf-parsed-entity]]> { }
12536    
12537     @@XMLTest:
12538     @@@QName: xp.element.content.no.recursion.direct.test
12539     @@@DEnt:
12540     @@@@test:value:
12541     <!DOCTYPE p [
12542     <!ENTITY c "&c;">
12543     ]>
12544     <p>&c;</p>
12545     @@@c:erred: <[[xp|wf-no-recursion]]> { (1, 1)..(1, 3); }
12546     @@XMLTest:
12547     @@@QName: xp.element.content.no.recursion.indirect.test
12548     @@@DEnt:
12549     @@@@test:value:
12550     <!DOCTYPE p [
12551     <!ENTITY d "&c;">
12552     <!ENTITY c "&d;">
12553     ]>
12554     <p>&c;</p>
12555     @@@c:erred: <[[xp|wf-no-recursion]]> { /* |d| */ (1, 1)..(1, 3); }
12556     @@XMLTest:
12557     @@@QName: xp.attval.no.recursion.direct.test
12558     @@@DEnt:
12559     @@@@test:value:
12560     <!DOCTYPE p [
12561     <!ENTITY c "&c;">
12562     ]>
12563     <p a="&c;"/>
12564     @@@c:erred: <[[xp|wf-no-recursion]]> { (1, 1)..(1, 3); }
12565     @@XMLTest:
12566     @@@QName: xp.attval.no.recursion.indirect.test
12567     @@@DEnt:
12568     @@@@test:value:
12569     <!DOCTYPE p [
12570     <!ENTITY d "&c;">
12571     <!ENTITY c "&d;">
12572     ]>
12573     <p a="&c;"/>
12574     @@@c:erred: <[[xp|wf-no-recursion]]> { /* |d| */ (1, 1)..(1, 3); }
12575     @@XMLTest:
12576     @@@QName: xp.reptxt.element.content.no.recursion.direct.test
12577     @@@DEnt:
12578     @@@@test:value:
12579     <!DOCTYPE p [
12580     <!ENTITY c "&c;">
12581     <!ENTITY e "&#x26;c;">
12582     ]>
12583     <p>&e;</p>
12584     @@@c:erred: <[[xp|wf-no-recursion]]> { /* |e| */ (1, 1)..(1, 3); }
12585     @@XMLTest:
12586     @@@QName: xp.reptxt.element.content.no.recursion.indirect.test
12587     @@@DEnt:
12588     @@@@test:value:
12589     <!DOCTYPE p [
12590     <!ENTITY d "&c;">
12591     <!ENTITY c "&d;">
12592     <!ENTITY e "&#x26;c;">
12593     ]>
12594     <p>&e;</p>
12595     @@@c:erred: <[[xp|wf-no-recursion]]> { /* |d| */ (1, 1)..(1, 3); }
12596     @@XMLTest:
12597     @@@QName: xp.reptxt.attval.no.recursion.direct.test
12598     @@@DEnt:
12599     @@@@test:value:
12600     <!DOCTYPE p [
12601     <!ENTITY c "&c;">
12602     <!ENTITY e "&#x26;c;">
12603     ]>
12604     <p a="&e;"/>
12605     @@@c:erred: <[[xp|wf-no-recursion]]> { /* |e| */ (1, 1)..(1, 3); }
12606     @@XMLTest:
12607     @@@QName: xp.reptxt.attval.no.recursion.indirect.test
12608     @@@DEnt:
12609     @@@@test:value:
12610     <!DOCTYPE p [
12611     <!ENTITY d "&c;">
12612     <!ENTITY c "&d;">
12613     <!ENTITY e "&#x26;c;">
12614     ]>
12615     <p a="&e;"/>
12616     @@@c:erred: <[[xp|wf-no-recursion]]> { /* |d| */ (1, 1)..(1, 3); }
12617    
12618     @@XMLTest:
12619     @@@QName: xp.ENTITY.system.ndata.name.test
12620     @@@DEnt:
12621     @@@@test:value:
12622     <!DOCTYPE a [
12623     <!NOTATION n SYSTEM "n">
12624     <!ENTITY % e SYSTEM "sys" NDATA n>
12625     ]><a/>
12626     @@@c:erred: <[[xp|wf-syntax-error]]> { (3, 26)..(3, 30); }
12627     @@XMLTest:
12628     @@@QName: xp.ENTITY.public.ndata.name.test
12629     @@@DEnt:
12630     @@@@test:value:
12631     <!DOCTYPE a [
12632     <!NOTATION n SYSTEM "n">
12633     <!ENTITY % e PUBLIC "pub" "sys" NDATA n>
12634     ]><a/>
12635     @@@c:erred: <[[xp|wf-syntax-error]]> { (3, 33)..(3, 37); }
12636     @@XMLTest:
12637     @@@QName: xp.ENTITY.public.ndata.name.-1.test
12638     @@@DEnt:
12639     @@@@test:value:
12640     <!DOCTYPE a [
12641     <!NOTATION n SYSTEM "n">
12642     <!ENTITY % e PUBLIC "pub" "sys" >
12643     ]><a/>
12644     @@@test:domTree:
12645     document { }
12646    
12647     @@XMLTest:
12648     @@@QName: xp.ENTITY.pubid.1.test
12649     @@@DEnt:
12650     @@@@test:value:
12651     <!DOCTYPE a [
12652     <!ENTITY e PUBLIC "p" "s">
12653     ]><a/>
12654     @@@test:domTree:
12655     document {
12656     document-type {
12657     general-entity {
12658     node-name: 'e';
12659     public-id: 'p';
12660     system-id: 's';
12661     }
12662     }
12663     element { }
12664     }
12665     @@XMLTest:
12666     @@@QName: xp.ENTITY.pubid.2.test
12667     @@@DEnt:
12668     @@@@test:value:
12669     <!DOCTYPE a [
12670     <!ENTITY e PUBLIC " p " "s">
12671     ]><a/>
12672     @@@test:domTree:
12673     document {
12674     document-type {
12675     general-entity {
12676     node-name: 'e';
12677     public-id: 'p';
12678     system-id: 's';
12679     }
12680     }
12681     element { }
12682     }
12683     @@XMLTest:
12684     @@@QName: xp.ENTITY.pubid.3.test
12685     @@@DEnt:
12686     @@@@test:value:
12687     <!DOCTYPE a [
12688     <!ENTITY e PUBLIC " p $u000Aq$u000A " "s">
12689     ]><a/>
12690     @@@test:domTree:
12691     document {
12692     document-type {
12693     general-entity {
12694     node-name: 'e';
12695     public-id: 'p q';
12696     system-id: 's';
12697     }
12698     }
12699     element { }
12700     }
12701     @@XMLTest:
12702     @@@QName: xp.ENTITY.pubid.4.test
12703     @@@DEnt:
12704     @@@@test:value:
12705     <!DOCTYPE a [
12706     <!ENTITY e PUBLIC " p $u000D$u000Aq" "s">
12707     ]><a/>
12708     @@@test:domTree:
12709     document {
12710     document-type {
12711     general-entity {
12712     node-name: 'e';
12713     public-id: 'p q';
12714     system-id: 's';
12715     }
12716     }
12717     element { }
12718     }
12719     @@XMLTest:
12720     @@@QName: xp.ENTITY.pubid.5.test
12721     @@@DEnt:
12722     @@@@test:value:
12723     <?xml version="1.1"?>
12724     <!DOCTYPE a [
12725 wakaba 1.27 <!ENTITY e PUBLIC " p $u000D$u0085q" "s">
12726 wakaba 1.23 ]><a/>
12727     @@@test:domTree:
12728     document {
12729     document-type {
12730     general-entity {
12731     node-name: 'e';
12732     public-id: 'p q';
12733     system-id: 's';
12734     }
12735     }
12736     element { }
12737     }
12738    
12739 wakaba 1.24 @@XMLTest:
12740     @@@QName: xp.ENTITY.ignored.test
12741     @@@DEnt:
12742     @@@@test:value:
12743     <!DOCTYPE a [
12744     <!ENTITY e "a">
12745     <!ENTITY e "b">
12746     ]><a/>
12747     @@@test:domTree:
12748     document {
12749     document-type {
12750     general-entity {
12751     node-name: 'e';
12752     text-content: 'a';
12753     }
12754     }
12755     element { }
12756     }
12757     @@@c:erred:
12758     <[[xp|warning-entity-declaration-ignored]]> { (3, 1)..(3, 15); }
12759     @@XMLTest:
12760     @@@QName: xp.ENTITY.ignored.2.test
12761     @@@DEnt:
12762     @@@@test:value:
12763     <!DOCTYPE a [
12764     <!ENTITY % e "a">
12765     <!ENTITY % e "b">
12766     ]><a/>
12767     @@@test:domTree:
12768     document { }
12769     @@@c:erred:
12770     <[[xp|warning-entity-declaration-ignored]]> { (3, 1)..(3, 17); }
12771    
12772     @@XMLTest:
12773     @@@QName: xp.ENTITY.predefined.1.test
12774     @@@DEnt:
12775     @@@@test:value:
12776     <!DOCTYPE a [
12777     <!ENTITY lt "&#38;#60;">
12778     <!ENTITY gt "&#62;">
12779     <!ENTITY amp "&#38;#38;">
12780     <!ENTITY apos "&#39;">
12781     <!ENTITY quot "&#34;">
12782     <!ENTITY e "f">
12783     ]><a>&lt;&gt;&amp;&apos;&quot;</a>
12784     @@@test:domTree:
12785     document {
12786     document-type {
12787     general-entity {
12788     node-name: 'e';
12789     text-content: 'f';
12790     }
12791     }
12792     element {
12793     text-content: '<>&' U+0027 '"';
12794     }
12795     }
12796     @@XMLTest:
12797     @@@QName: xp.ENTITY.predefined.2.test
12798     @@@DEnt:
12799     @@@@test:value:
12800     <!DOCTYPE a [
12801     <!ENTITY lt "&#38;#60;">
12802     <!ENTITY gt "&#x26;#62;">
12803     <!ENTITY amp "&#38;#38;">
12804     <!ENTITY apos "&#x26;#39;">
12805     <!ENTITY quot "&#x26;#34;">
12806     <!ENTITY e "f">
12807     ]><a>&lt;&gt;&amp;&apos;&quot;</a>
12808     @@@test:domTree:
12809     document {
12810     document-type {
12811     general-entity {
12812     node-name: 'e';
12813     text-content: 'f';
12814     }
12815     }
12816     element {
12817     text-content: '<>&' U+0027 '"';
12818     }
12819     }
12820     @@XMLTest:
12821     @@@QName: xp.ENTITY.predefined.3.test
12822     @@@DEnt:
12823     @@@@test:value:
12824     <!DOCTYPE a [
12825     <!ENTITY lt "&#60;">
12826     <!ENTITY gt "&#62;">
12827     <!ENTITY amp "&#38;">
12828     <!ENTITY apos "&#39;">
12829     <!ENTITY quot "&#34;">
12830     <!ENTITY e "f">
12831     ]><a>&lt;&gt;&amp;&apos;&quot;</a>
12832     @@@c:erred: <[[xp|error-malformed-predefined-entity]]> { (2, 1)..(2, 24); }
12833     @@@c:erred: <[[xp|error-malformed-predefined-entity]]> { (4, 1)..(4, 24); }
12834     @@@test:domTree:
12835     document {
12836     document-type {
12837     general-entity {
12838     node-name: 'e';
12839     text-content: 'f';
12840     }
12841     }
12842     element {
12843     text-content: '<>&' U+0027 '"';
12844     }
12845     }
12846     @@XMLTest:
12847     @@@QName: xp.ENTITY.predefined.4.test
12848     @@@DEnt:
12849     @@@@test:value:
12850     <!DOCTYPE a [
12851     <!ENTITY lt "1">
12852     <!ENTITY gt "2">
12853     <!ENTITY amp "3">
12854     <!ENTITY apos "4">
12855     <!ENTITY quot "5">
12856     <!ENTITY e "f">
12857     ]><a>&lt;&gt;&amp;&apos;&quot;</a>
12858     @@@c:erred: <[[xp|error-malformed-predefined-entity]]> { (2, 1)..(2, 24); }
12859     @@@c:erred: <[[xp|error-malformed-predefined-entity]]> { (3, 1)..(3, 24); }
12860     @@@c:erred: <[[xp|error-malformed-predefined-entity]]> { (4, 1)..(4, 24); }
12861     @@@c:erred: <[[xp|error-malformed-predefined-entity]]> { (5, 1)..(5, 24); }
12862     @@@c:erred: <[[xp|error-malformed-predefined-entity]]> { (6, 1)..(6, 24); }
12863     @@@test:domTree:
12864     document {
12865     document-type {
12866     general-entity {
12867     node-name: 'e';
12868     text-content: 'f';
12869     }
12870     }
12871     element {
12872     text-content: '<>&' U+0027 '"';
12873     }
12874     }
12875     @@XMLTest:
12876     @@@QName: xp.ENTITY.predefined.5.test
12877     @@@DEnt:
12878     @@@@test:value:
12879     <!DOCTYPE a [
12880     <!ENTITY lt SYSTEM "1">
12881     <!ENTITY gt SYSTEM "2">
12882     <!ENTITY amp SYSTEM "3">
12883     <!ENTITY apos SYSTEM "4">
12884     <!ENTITY quot SYSTEM "5">
12885     <!ENTITY e "f">
12886     ]><a>&lt;&gt;&amp;&apos;&quot;</a>
12887     @@@c:erred: <[[xp|error-internal-predefined-entity]]> { (2, 1)..(2, 27); }
12888     @@@c:erred: <[[xp|error-internal-predefined-entity]]> { (3, 1)..(3, 27); }
12889     @@@c:erred: <[[xp|error-internal-predefined-entity]]> { (4, 1)..(4, 27); }
12890     @@@c:erred: <[[xp|error-internal-predefined-entity]]> { (5, 1)..(5, 27); }
12891     @@@c:erred: <[[xp|error-internal-predefined-entity]]> { (6, 1)..(6, 27); }
12892     @@@test:domTree:
12893     document {
12894     document-type {
12895     general-entity {
12896     node-name: 'e';
12897     text-content: 'f';
12898     }
12899     }
12900     element {
12901     text-content: '<>&' U+0027 '"';
12902     }
12903     }
12904     @@XMLTest:
12905     @@@QName: xp.ENTITY.predefined.6.test
12906     @@@DEnt:
12907     @@@@test:value:
12908     <!DOCTYPE a [
12909     <!ENTITY % lt SYSTEM "1">
12910     <!ENTITY % gt SYSTEM "2">
12911     <!ENTITY % amp SYSTEM "3">
12912     <!ENTITY % apos SYSTEM "4">
12913     <!ENTITY % quot SYSTEM "5">
12914     <!ENTITY e "f">
12915     ]><a>&lt;&gt;&amp;&apos;&quot;</a>
12916     @@@test:domTree:
12917     document {
12918     document-type {
12919     general-entity {
12920     node-name: 'e';
12921     text-content: 'f';
12922     }
12923     }
12924     element {
12925     text-content: '<>&' U+0027 '"';
12926     }
12927     }
12928     @@XMLTest:
12929     @@@QName: xp.ENTITY.predefined.7.test
12930     @@@DEnt:
12931     @@@@test:value:
12932     <!DOCTYPE a [
12933     <!ENTITY lt "&#38;#x3C;">
12934     <!ENTITY gt "&#x3E;">
12935     <!ENTITY amp "&#38;#x26;">
12936     <!ENTITY apos "&#x27;">
12937     <!ENTITY quot "&#x22;">
12938     <!ENTITY e "f">
12939     ]><a>&lt;&gt;&amp;&apos;&quot;</a>
12940     @@@test:domTree:
12941     document {
12942     document-type {
12943     general-entity {
12944     node-name: 'e';
12945     text-content: 'f';
12946     }
12947     }
12948     element {
12949     text-content: '<>&' U+0027 '"';
12950     }
12951     }
12952     @@XMLTest:
12953     @@@QName: xp.ENTITY.predefined.8.test
12954     @@@DEnt:
12955     @@@@test:value:
12956     <!DOCTYPE a [
12957     <!ENTITY lt "&#38;#x3c;">
12958     <!ENTITY gt "&#x3e;">
12959     <!ENTITY amp "&#38;#x26;">
12960     <!ENTITY apos "&#x27;">
12961     <!ENTITY quot "&#x22;">
12962     <!ENTITY e "f">
12963     ]><a>&lt;&gt;&amp;&apos;&quot;</a>
12964     @@@test:domTree:
12965     document {
12966     document-type {
12967     general-entity {
12968     node-name: 'e';
12969     text-content: 'f';
12970     }
12971     }
12972     element {
12973     text-content: '<>&' U+0027 '"';
12974     }
12975     }
12976     @@XMLTest:
12977     @@@QName: xp.ENTITY.predefined.9.test
12978     @@@DEnt:
12979     @@@@test:value:
12980     <!DOCTYPE a [
12981     <!ENTITY lt "&#38;#x00003C;">
12982     <!ENTITY gt "&#x0003E;">
12983     <!ENTITY amp "&#38;#x026;">
12984     <!ENTITY apos "&#x000027;">
12985     <!ENTITY quot "&#x0022;">
12986     <!ENTITY e "f">
12987     ]><a>&lt;&gt;&amp;&apos;&quot;</a>
12988     @@@test:domTree:
12989     document {
12990     document-type {
12991     general-entity {
12992     node-name: 'e';
12993     text-content: 'f';
12994     }
12995     }
12996     element {
12997     text-content: '<>&' U+0027 '"';
12998     }
12999     }
13000     @@XMLTest:
13001     @@@QName: xp.ENTITY.predefined.10.test
13002     @@@DEnt:
13003     @@@@test:value:
13004     <!DOCTYPE a [
13005     <!ENTITY lt "&#38;#00060;">
13006     <!ENTITY gt "&#062;">
13007     <!ENTITY amp "&#38;#000038;">
13008     <!ENTITY apos "&#0000039;">
13009     <!ENTITY quot "&#0034;">
13010     <!ENTITY e "f">
13011     ]><a>&lt;&gt;&amp;&apos;&quot;</a>
13012     @@@test:domTree:
13013     document {
13014     document-type {
13015     general-entity {
13016     node-name: 'e';
13017     text-content: 'f';
13018     }
13019     }
13020     element {
13021     text-content: '<>&' U+0027 '"';
13022     }
13023     }
13024    
13025 wakaba 1.25 @@XMLTest:
13026     @@@QName: xp.processed.1.test
13027     @@@DEnt:
13028     @@@@test:value:
13029     <a/>
13030     @@@test:domTree:
13031     document {
13032     all-declarations-processed: true;
13033     element { }
13034     }
13035     @@XMLTest:
13036     @@@QName: xp.processed.2.test
13037     @@@DEnt:
13038     @@@@test:value:
13039     <!DOCTYPE a [
13040     <!ENTITY e "f">
13041     <!ATTLIST a b NMTOKEN " c ">
13042     ]><a>&e;</a>
13043     @@@test:domTree:
13044     document {
13045     document-type {
13046     general-entity {
13047     node-name: 'e';
13048     }
13049     element-type-definition {
13050     node-name: 'a';
13051     attribute-definition {
13052     node-name: 'b';
13053     }
13054     }
13055     }
13056     all-declarations-processed: true;
13057     element {
13058     attribute {
13059     node-name: 'b';
13060     node-value: 'c';
13061     }
13062     text-content: 'f';
13063     }
13064     }
13065     @@XMLTest:
13066     @@@QName: xp.processed.3.test
13067     @@@DEnt:
13068     @@@@test:value:
13069     <!DOCTYPE a [
13070     <!ENTITY % p SYSTEM "p">
13071     %p;
13072     <!ENTITY e "f">
13073     <!ATTLIST a b NMTOKEN " c ">
13074     ]><a d="e">&e;</a>
13075     @@@test:domTree:
13076     document {
13077     document-type { }
13078     all-declarations-processed: false;
13079     element {
13080     attribute {
13081     node-name: 'd';
13082     node-value: 'e';
13083     }
13084     general-entity-reference {
13085     node-name: 'e';
13086     is-expanded: false;
13087     }
13088     }
13089     }
13090     @@@c:erred:
13091     <[[xp|warning-entity-declaration-not-processed]]> { (4, 1)..(4, 20); }
13092     @@@c:erred:
13093     <[[xp|warning-attribute-definition-not-processed]]> { (5, 13)..(5, 31); }
13094     @@XMLTest:
13095     @@@QName: xp.processed.4.test
13096     @@@DEnt:
13097     @@@@test:value:
13098     <?xml version="1.1" standalone="yes"?>
13099     <!DOCTYPE a [
13100     <!ENTITY % p SYSTEM "p">
13101     %p;
13102     <!ENTITY e "f">
13103     <!ATTLIST a b NMTOKEN " c ">
13104     ]><a>&e;</a>
13105     @@@test:domTree:
13106     document {
13107     document-type {
13108     general-entity {
13109     node-name: 'e';
13110     }
13111     element-type-definition {
13112     node-name: 'a';
13113     attribute-definition {
13114     node-name: 'b';
13115     }
13116     }
13117     }
13118     all-declarations-processed: false;
13119     element {
13120     attribute {
13121     node-name: 'b';
13122     node-value: 'c';
13123     }
13124     text-content: 'f';
13125     }
13126     }
13127     @@XMLTest:
13128     @@@QName: xp.processed.5.test
13129     @@@DEnt:
13130     @@@@test:value:
13131     <!DOCTYPE a SYSTEM "p" [
13132     <!ENTITY e "f">
13133     <!ATTLIST a b NMTOKEN " c ">
13134     ]><a>&e;</a>
13135     @@@test:domTree:
13136     document {
13137     document-type {
13138     general-entity {
13139     node-name: 'e';
13140     }
13141     element-type-definition {
13142     node-name: 'a';
13143     attribute-definition {
13144     node-name: 'b';
13145     }
13146     }
13147     }
13148     all-declarations-processed: false;
13149     element {
13150     attribute {
13151     node-name: 'b';
13152     node-value: 'c';
13153     }
13154     text-content: 'f';
13155     }
13156     }
13157    
13158     @@XMLTest:
13159     @@@QName: xp.PEs.in.internal.subset.1.test
13160     @@@DEnt:
13161     @@@@test:value:
13162     <!DOCTYPE a [
13163     <!ENTITY % p " ">
13164 wakaba 1.26 <!ENTITY % q "%p;">
13165 wakaba 1.25 ]><a/>
13166     @@@c:erred: <[[xp|wf-pes-in-internal-subset]]> { (3, 15)..(3, 17); }
13167     @@XMLTest:
13168     @@@QName: xp.PEs.in.internal.subset.2.test
13169     @@@DEnt:
13170     @@@@test:value:
13171     <!DOCTYPE a [
13172     <!ENTITY % p " ">
13173 wakaba 1.26 <!ENTITY % q '%p;'>
13174 wakaba 1.25 ]><a/>
13175     @@@c:erred: <[[xp|wf-pes-in-internal-subset]]> { (3, 15)..(3, 17); }
13176    
13177 wakaba 1.26 @@XMLTest:
13178     @@@QName: xp.name.pitarget.content.1.0.2.test
13179     @@@DEnt:
13180     @@@@test:value:
13181     <?xml version="1.0"?>
13182     <p>
13183     <?$u3001$u3002?>
13184     </p>
13185     @@@c:erred: <[[xp|wf-invalid-character-in-node-name]]> { (3, 3)..(3, 4); }
13186     @@XMLTest:
13187     @@@QName: xp.name.pitarget.content.1.1.2.test
13188     @@@DEnt:
13189     @@@@test:value:
13190     <?xml version="1.1"?>
13191     <p>$
13192     <?$u3001$u3002?>$
13193     </p>
13194     @@@test:domTree:
13195     document {
13196     xml-version: '1.1';
13197     element {
13198     pi {
13199     node-name: U+3001 U+3002;
13200 wakaba 1.14 }
13201 wakaba 1.12 }
13202 wakaba 1.26 }
13203     @@XMLTest:
13204     @@@QName: xp.name.pitarget.content.1.0.3.test
13205     @@@DEnt:
13206     @@@@test:value:
13207     <?xml version="1.0"?>
13208     <p>
13209     <?$u3005b?>
13210     </p>
13211     @@@c:erred: <[[xp|wf-invalid-character-in-node-name]]> { (3, 3)..(3, 4); }
13212     @@XMLTest:
13213     @@@QName: xp.name.pitarget.content.1.1.3.test
13214     @@@DEnt:
13215     @@@@test:value:
13216     <?xml version="1.1"?>
13217     <p>$
13218     <?$u3005b?>$
13219     </p>
13220     @@@test:domTree:
13221     document {
13222     xml-version: '1.1';
13223     element {
13224     pi {
13225     node-name: U+3005 'b';
13226 wakaba 1.12 }
13227     }
13228 wakaba 1.26 }
13229     @@XMLTest:
13230     @@@QName: xp.name.pitarget.content.names.1.0.1.test
13231     @@@DEnt:
13232     @@@@test:value:
13233     <?xml version="1.0"?>
13234     <p>
13235     <?a:b?>
13236     </p>
13237     @@@c:erred: <[[xp|nswf-legal-ncname]]> { (3, 3)..(3, 5); }
13238     @@XMLTest:
13239     @@@QName: xp.name.pitarget.content.names.1.1.1.test
13240     @@@DEnt:
13241     @@@@test:value:
13242     <?xml version="1.1"?>
13243     <p>
13244     <?a:b?>
13245     </p>
13246     @@@c:erred: <[[xp|nswf-legal-ncname]]> { (3, 3)..(3, 5); }
13247     @@XMLTest:
13248     @@@QName: xp.name.pitarget.intsubset.1.0.2.test
13249     @@@DEnt:
13250     @@@@test:value:
13251     <?xml version="1.0"?>
13252     <!DOCTYPE p [
13253     <?$u3001$u3002?>
13254     ]><p/>
13255     @@@c:erred: <[[xp|wf-invalid-character-in-node-name]]> { (3, 3)..(3, 4); }
13256     @@XMLTest:
13257     @@@QName: xp.name.pitarget.intsubset.1.1.2.test
13258     @@@DEnt:
13259     @@@@test:value:
13260     <?xml version="1.1"?>
13261     <!DOCTYPE p [
13262     <?$u3001$u3002?>
13263     ]><p/>
13264     @@@test:domTree:
13265     document {
13266     xml-version: '1.1';
13267     document-type {
13268     pi {
13269     node-name: U+3001 U+3002;
13270     }
13271     }
13272     element { }
13273     }
13274     @@XMLTest:
13275     @@@QName: xp.name.pitarget.intsubset.1.0.3.test
13276     @@@DEnt:
13277     @@@@test:value:
13278     <?xml version="1.0"?>
13279     <!DOCTYPE p [
13280     <?$u3005b?>
13281     ]><p/>
13282     @@@c:erred: <[[xp|wf-invalid-character-in-node-name]]> { (3, 3)..(3, 4); }
13283     @@XMLTest:
13284     @@@QName: xp.name.pitarget.intsubset.1.1.3.test
13285     @@@DEnt:
13286     @@@@test:value:
13287     <?xml version="1.1"?>
13288     <!DOCTYPE p [
13289     <?$u3005b?>
13290     ]><p/>
13291     @@@test:domTree:
13292     document {
13293     xml-version: '1.1';
13294     document-type {
13295     pi {
13296     node-name: U+3005 'b';
13297     }
13298     }
13299     element { }
13300     }
13301     @@XMLTest:
13302     @@@QName: xp.name.pitarget.intsubset.names.1.0.1.test
13303     @@@DEnt:
13304     @@@@test:value:
13305     <?xml version="1.0"?>
13306     <!DOCTYPE p [
13307     <?a:b?>
13308     ]><p/>
13309     @@@c:erred: <[[xp|nswf-legal-ncname]]> { (3, 3)..(3, 5); }
13310     @@XMLTest:
13311     @@@QName: xp.name.pitarget.intsubset.names.1.1.1.test
13312     @@@DEnt:
13313     @@@@test:value:
13314     <?xml version="1.1"?>
13315     <!DOCTYPE p [
13316     <?a:b?>
13317     ]><p/>
13318     @@@c:erred: <[[xp|nswf-legal-ncname]]> { (3, 3)..(3, 5); }
13319     @@XMLTest:
13320     @@@QName: xp.name.doctypedecl.stag.etag.1.0.2.test
13321     @@@DEnt:
13322     @@@@test:value:
13323     <?xml version="1.0"?>
13324     <!DOCTYPE $u3001$u3002>
13325     <$u3001$u3002>
13326     </$u3001$u3002>
13327     @@@c:erred: <[[xp|wf-invalid-character-in-node-name]]>{ (2, 11)..(2, 12); }
13328     @@@c:erred: <[[xp|wf-invalid-character-in-node-name]]>{ (3, 2)..(3, 3); }
13329     # @@@c:erred: <[[xp|wf-invalid-character-in-node-name]]>{ (4, 3)..(4, 4); }
13330     @@XMLTest:
13331     @@@QName: xp.name.doctypedecl.stag.etag.1.1.2.test
13332     @@@DEnt:
13333     @@@@test:value:
13334     <?xml version="1.1"?>
13335     <!DOCTYPE $u3001$u3002>
13336     <$u3001$u3002>
13337     </$u3001$u3002>
13338     @@@test:domTree:
13339     document {
13340     xml-version: '1.1';
13341     document-type {
13342     node-name: U+3001 U+3002;
13343     }
13344     element {
13345     node-name: U+3001 U+3002;
13346     }
13347     }
13348     @@XMLTest:
13349     @@@QName: xp.name.doctypedecl.stag.etag.1.0.3.test
13350     @@@DEnt:
13351     @@@@test:value:
13352     <?xml version="1.0"?>
13353     <!DOCTYPE $u3005b>
13354     <$u3005b>
13355     </$u3005b>
13356     @@@c:erred: <[[xp|wf-invalid-character-in-node-name]]>{ (2, 11)..(2, 12); }
13357     @@@c:erred: <[[xp|wf-invalid-character-in-node-name]]>{ (3, 2)..(3, 3); }
13358     # @@@c:erred: <[[xp|wf-invalid-character-in-node-name]]>{ (4, 3)..(4, 4); }
13359     @@XMLTest:
13360     @@@QName: xp.name.doctype.decl.stag.etag.1.1.3.test
13361     @@@DEnt:
13362     @@@@test:value:
13363     <?xml version="1.1"?>
13364     <!DOCTYPE $u3005b>
13365     <$u3005b>
13366     </$u3005b>
13367     @@@test:domTree:
13368     document {
13369     xml-version: '1.1';
13370     document-type {
13371     node-name: U+3005 'b';
13372     }
13373     element {
13374     node-name: U+3005 'b';
13375     }
13376     }
13377     @@XMLTest:
13378     @@@QName: xp.name.doctypedecl.stag.etag.names.1.0.1.test
13379     @@@DEnt:
13380     @@@@test:value:
13381     <?xml version="1.0"?>
13382     <!DOCTYPE a:b>
13383     <a:b xmlns:a="http://a.example/">
13384     </a:b>
13385     @@@test:domTree:
13386     document {
13387     xml-version: '1.0';
13388     document-type {
13389     node-name: 'a:b';
13390     }
13391     element {
13392     prefix: 'a';
13393     local-name: 'b';
13394     namespace-uri: 'http://a.example/';
13395     attribute {
13396     namespace-uri: 'http://www.w3.org/2000/xmlns/';
13397     prefix: 'xmlns';
13398     local-name: 'a';
13399     value: 'http://a.example/';
13400     specified: true;
13401     }
13402     }
13403     }
13404     @@XMLTest:
13405     @@@QName: xp.name.doctypedecl.stag.etag.names.1.1.1.test
13406     @@@DEnt:
13407     @@@@test:value:
13408     <?xml version="1.1"?>
13409     <!DOCTYPE a:b>
13410     <a:b xmlns:a="http://a.example/">
13411     </a:b>
13412     @@@test:domTree:
13413     document {
13414     xml-version: '1.1';
13415     document-type {
13416     node-name: 'a:b';
13417     }
13418     element {
13419     prefix: 'a';
13420     local-name: 'b';
13421     namespace-uri: 'http://a.example/';
13422     attribute {
13423     namespace-uri: 'http://www.w3.org/2000/xmlns/';
13424     prefix: 'xmlns';
13425     local-name: 'a';
13426     specified: true;
13427     }
13428     }
13429     }
13430     @@XMLTest:
13431     @@@QName: xp.name.doctypedecl.stag.etag.names.1.0.2.test
13432     @@@DEnt:
13433     @@@@test:value:
13434     <?xml version="1.0"?>
13435     <!DOCTYPE :ab>
13436     <:ab>
13437     </:ab>
13438     @@@c:erred: <[[xp|nswf-legal-qname]]> { (2, 11)..(2, 13); }
13439     @@@c:erred: <[[xp|nswf-legal-qname]]> { (3, 2)..(3, 4); }
13440     @@@c:erred: <[[xp|nsc-prefix-declared]]> { /* prefix || */ }
13441     @@XMLTest:
13442     @@@QName: xp.name.doctypedecl.stag.etag.names.1.1.2.test
13443     @@@DEnt:
13444     @@@@test:value:
13445     <?xml version="1.1"?>
13446     <!DOCTYPE :ab>
13447     <:ab>
13448     </:ab>
13449     @@@c:erred: <[[xp|nswf-legal-qname]]> { (2, 11)..(2, 13); }
13450     @@@c:erred: <[[xp|nswf-legal-qname]]> { (3, 2)..(3, 4); }
13451     @@@c:erred: <[[xp|nsc-prefix-declared]]> { /* prefix || */ }
13452     @@XMLTest:
13453     @@@QName: xp.name.doctypedecl.stag.etag.names.1.0.3.test
13454     @@@DEnt:
13455     @@@@test:value:
13456     <?xml version="1.0"?>
13457     <!DOCTYPE a:$u3005>
13458     <a:$u3005 xmlns:a="http://a.example/">
13459     </a:$u3005>
13460     @@@c:erred: <[[xp|nswf-legal-qname]]> { (2, 11)..(2, 13); }
13461     @@@c:erred: <[[xp|nswf-legal-qname]]> { (3, 2)..(3, 4); }
13462     @@XMLTest:
13463     @@@QName: xp.name.doctypedecl.stag.etag.names.1.1.3.test
13464     @@@DEnt:
13465     @@@@test:value:
13466     <?xml version="1.1"?>
13467     <!DOCTYPE a:$u3005>
13468     <a:$u3005 xmlns:a="http://a.example/">
13469     </a:$u3005>
13470     @@@test:domTree:
13471     document {
13472     xml-version: '1.1';
13473     document-type {
13474     node-name: 'a:' U+3005;
13475     }
13476     element {
13477     prefix: 'a';
13478     local-name: U+3005;
13479     namespace-uri: 'http://a.example/';
13480     attribute {
13481     namespace-uri: 'http://www.w3.org/2000/xmlns/';
13482     prefix: 'xmlns';
13483     local-name: 'a';
13484     value: 'http://a.example/';
13485     specified: true;
13486     }
13487     }
13488     }
13489     @@XMLTest:
13490     @@@QName: xp.name.doctypedecl.stag.etag.names.1.0.4.test
13491     @@@DEnt:
13492     @@@@test:value:
13493     <?xml version="1.0"?>
13494     <!DOCTYPE a:b>
13495     <a:b>
13496     </a:b>
13497     @@@c:erred: <[[xp|nsc-prefix-declared]]> { (3, 1)..(3, 5); }
13498     @@XMLTest:
13499     @@@QName: xp.name.doctypedecl.stag.etag.names.1.1.4.test
13500     @@@DEnt:
13501     @@@@test:value:
13502     <?xml version="1.1"?>
13503     <!DOCTYPE a:b>
13504     <a:b>
13505     </a:b>
13506     @@@c:erred: <[[xp|nsc-prefix-declared]]> { (3, 1)..(3, 5); }
13507     @@XMLTest:
13508     @@@QName: xp.name.emptyelemtag.1.0.2.test
13509     @@@DEnt:
13510     @@@@test:value:
13511     <?xml version="1.0"?>
13512     <$u3001$u3002/>
13513     @@@c:erred: <[[xp|wf-invalid-character-in-node-name]]>{ (2, 2)..(2, 3); }
13514     @@XMLTest:
13515     @@@QName: xp.name.emptyelemtag.1.1.2.test
13516     @@@DEnt:
13517     @@@@test:value:
13518     <?xml version="1.1"?>
13519     <$u3001$u3002/>
13520     @@@test:domTree:
13521     document {
13522     xml-version: '1.1';
13523     element {
13524     node-name: U+3001 U+3002;
13525     }
13526     }
13527     @@XMLTest:
13528     @@@QName: xp.name.emptyelemtag.1.0.3.test
13529     @@@DEnt:
13530     @@@@test:value:
13531     <?xml version="1.0"?>
13532     <$u3005b/>
13533     @@@c:erred: <[[xp|wf-invalid-character-in-node-name]]>{ (2, 2)..(2, 3); }
13534     @@XMLTest:
13535     @@@QName: xp.name.emptyelemtag.1.1.3.test
13536     @@@DEnt:
13537     @@@@test:value:
13538     <?xml version="1.1"?>
13539     <$u3005b/>
13540     @@@test:domTree:
13541     document {
13542     xml-version: '1.1';
13543     element {
13544     node-name: U+3005 'b';
13545     }
13546     }
13547     @@XMLTest:
13548     @@@QName: xp.name.emptyelemtag.names.1.0.1.test
13549     @@@DEnt:
13550     @@@@test:value:
13551     <?xml version="1.0"?>
13552     <a:b/>
13553     @@@c:erred: <[[xp|nsc-prefix-declared]]>{ (2, 1)..(2, 6); }
13554     @@XMLTest:
13555     @@@QName: xp.name.emptyelemtag.names.1.1.1.test
13556     @@@DEnt:
13557     @@@@test:value:
13558     <?xml version="1.1"?>
13559     <a:b/>
13560     @@@c:erred: <[[xp|nsc-prefix-declared]]>{ (2, 1)..(2, 6); }
13561     @@XMLTest:
13562     @@@QName: xp.name.attr.1.0.2.test
13563     @@@DEnt:
13564     @@@@test:value:
13565     <?xml version="1.0"?>
13566     <a $u3001$u3002=""/>
13567     @@@c:erred: <[[xp|wf-invalid-character-in-node-name]]>{ (2, 4)..(2, 5); }
13568     @@XMLTest:
13569     @@@QName: xp.name.attr.1.1.2.test
13570     @@@DEnt:
13571     @@@@test:value:
13572     <?xml version="1.1"?>
13573     <a $u3001$u3002=""/>
13574     @@@test:domTree:
13575     document {
13576     xml-version: '1.1';
13577     element {
13578     attribute {
13579     node-name: U+3001 U+3002;
13580     }
13581     }
13582     }
13583     @@XMLTest:
13584     @@@QName: xp.name.attr.1.0.3.test
13585     @@@DEnt:
13586     @@@@test:value:
13587     <?xml version="1.0"?>
13588     <a $u3005b=""/>
13589     @@@c:erred: <[[xp|wf-invalid-character-in-node-name]]>{ (2, 4)..(2, 5); }
13590     @@XMLTest:
13591     @@@QName: xp.name.attr.1.1.3.test
13592     @@@DEnt:
13593     @@@@test:value:
13594     <?xml version="1.1"?>
13595     <a $u3005b=""/>
13596     @@@test:domTree:
13597     document {
13598     xml-version: '1.1';
13599     element {
13600     attribute {
13601     node-name: U+3005 'b';
13602     }
13603     }
13604     }
13605     @@XMLTest:
13606     @@@QName: xp.name.attr.names.1.0.1.test
13607     @@@DEnt:
13608     @@@@test:value:
13609     <?xml version="1.0"?>
13610     <a a:b=""/>
13611     @@@c:erred: <[[xp|nsc-prefix-declared]]>{ (2, 1)..(2, 11); }
13612     @@XMLTest:
13613     @@@QName: xp.name.attr.names.1.1.1.test
13614     @@@DEnt:
13615     @@@@test:value:
13616     <?xml version="1.1"?>
13617     <a a:b=""/>
13618     @@@c:erred: <[[xp|nsc-prefix-declared]]>{ (2, 1)..(2, 11); }
13619     @@XMLTest:
13620     @@@QName: xp.name.attr.names.1.0.2.test
13621     @@@DEnt:
13622     @@@@test:value:
13623     <?xml version="1.0"?>
13624     <a :ab=""/>
13625     @@@c:erred: <[[xp|nswf-legal-qname]]>{ (2, 4)..(2, 6); }
13626     @@@c:erred: <[[xp|nsc-prefix-declared]]> { }
13627     @@XMLTest:
13628     @@@QName: xp.name.attr.names.1.1.2.test
13629     @@@DEnt:
13630     @@@@test:value:
13631     <?xml version="1.1"?>
13632     <a :ab=""/>
13633     @@@c:erred: <[[xp|nswf-legal-qname]]>{ (2, 4)..(2, 6); }
13634     @@@c:erred: <[[xp|nsc-prefix-declared]]> { }
13635     @@XMLTest:
13636     @@@QName: xp.name.attlist.1.0.2.test
13637     @@@DEnt:
13638     @@@@test:value:
13639     <?xml version="1.0"?>
13640     <!DOCTYPE p [
13641     <!NOTATION $u3001$u3002 SYSTEM "n">
13642     <!ATTLIST $u3001$u3002
13643     $u3001$u3002
13644     NOTATION
13645     ($u3001$u3002)
13646     #IMPLIED>
13647     ]><p/>
13648     @@@c:erred: <[[xp|wf-invalid-character-in-node-name]]>{ (3, 12)..(3, 13); }
13649     @@@c:erred: <[[xp|wf-invalid-character-in-node-name]]>{ (4, 11)..(4, 12); }
13650     @@@c:erred: <[[xp|wf-invalid-character-in-node-name]]>{ (5, 1)..(5, 2); }
13651     @@@c:erred: <[[xp|wf-invalid-character-in-node-name]]>{ (7, 2)..(7, 3); }
13652     @@XMLTest:
13653     @@@QName: xp.name.attlist.1.1.2.test
13654     @@@DEnt:
13655     @@@@test:value:
13656     <?xml version="1.1"?>
13657     <!DOCTYPE p [
13658     <!NOTATION $u3001$u3002 SYSTEM "n">
13659     <!ATTLIST $u3001$u3002
13660     $u3001$u3002
13661     NOTATION
13662     ($u3001$u3002)
13663     #IMPLIED>
13664     ]><p/>
13665     @@@test:domTree:
13666     document {
13667     xml-version: '1.1';
13668     document-type {
13669     notation {
13670     node-name: U+3001 U+3002;
13671     }
13672     element-type-definition {
13673     node-name: U+3001 U+3002;
13674     attribute-definition {
13675     node-name: U+3001 U+3002;
13676     allowed-tokens: DOMStringList (U+3001 U+3002);
13677     }
13678     }
13679     }
13680     element { }
13681     }
13682     @@XMLTest:
13683     @@@QName: xp.name.attlist.1.0.3.test
13684     @@@DEnt:
13685     @@@@test:value:
13686     <?xml version="1.0"?>
13687     <!DOCTYPE p [
13688     <!NOTATION $u3005b SYSTEM "n">
13689     <!ATTLIST $u3005b
13690     $u3005b
13691     NOTATION
13692     ($u3005b)
13693     #IMPLIED>
13694     ]><p/>
13695     @@@c:erred: <[[xp|wf-invalid-character-in-node-name]]>{ (3, 12)..(3, 13); }
13696     @@@c:erred: <[[xp|wf-invalid-character-in-node-name]]>{ (4, 11)..(4, 12); }
13697     @@@c:erred: <[[xp|wf-invalid-character-in-node-name]]>{ (5, 1)..(5, 2); }
13698     @@@c:erred: <[[xp|wf-invalid-character-in-node-name]]>{ (7, 2)..(7, 3); }
13699     @@XMLTest:
13700     @@@QName: xp.name.attlist.1.1.3.test
13701     @@@DEnt:
13702     @@@@test:value:
13703     <?xml version="1.1"?>
13704     <!DOCTYPE p [
13705     <!NOTATION $u3005b SYSTEM "n">
13706     <!ATTLIST $u3005b
13707     $u3005b
13708     NOTATION
13709     ($u3005b)
13710     #IMPLIED>
13711     ]><p/>
13712     @@@test:domTree:
13713     document {
13714     xml-version: '1.1';
13715     document-type {
13716     notation {
13717     node-name: U+3005 'b';
13718     }
13719     element-type-definition {
13720     node-name: U+3005 'b';
13721     attribute-definition {
13722     node-name: U+3005 'b';
13723     allowed-tokens: DOMStringList (U+3005 'b');
13724     }
13725     }
13726     }
13727     element { }
13728     }
13729     @@XMLTest:
13730     @@@QName: xp.name.attlist.names.1.0.1.test
13731     @@@DEnt:
13732     @@@@test:value:
13733     <?xml version="1.0"?>
13734     <!DOCTYPE p [
13735     <!NOTATION a:b SYSTEM "n">
13736     <!ATTLIST a:b
13737     a:b
13738     NOTATION
13739     (a:b)
13740     #IMPLIED>
13741     ]><p/>
13742     @@@c:erred: <[[xp|nswf-legal-ncname]]>{ (3, 12)..(3, 14); }
13743     @@@c:erred: <[[xp|nswf-legal-ncname]]>{ (7, 2)..(7, 4); }
13744     @@XMLTest:
13745     @@@QName: xp.name.attlist.names.1.1.1.test
13746     @@@DEnt:
13747     @@@@test:value:
13748     <?xml version="1.1"?>
13749     <!DOCTYPE p [
13750     <!NOTATION a:b SYSTEM "n">
13751     <!ATTLIST a:b
13752     a:b
13753     NOTATION
13754     (a:b)
13755     #IMPLIED>
13756     ]><p/>
13757     @@@c:erred: <[[xp|nswf-legal-ncname]]>{ (3, 12)..(3, 14); }
13758     @@@c:erred: <[[xp|nswf-legal-ncname]]>{ (7, 2)..(7, 4); }
13759     @@XMLTest:
13760     @@@QName: xp.name.attlist.names.1.0.2.test
13761     @@@DEnt:
13762     @@@@test:value:
13763     <?xml version="1.0"?>
13764     <!DOCTYPE p [
13765     <!NOTATION :ab SYSTEM "n">
13766     <!ATTLIST :ab
13767     :ab
13768     NOTATION
13769     (:ab)
13770     #IMPLIED>
13771     ]><p/>
13772     @@@c:erred: <[[xp|nswf-legal-ncname]]>{ (3, 12)..(3, 14); }
13773     @@@c:erred: <[[xp|nswf-legal-qname]]>{ (4, 11)..(4, 13); }
13774     @@@c:erred: <[[xp|nswf-legal-qname]]>{ (5, 1)..(5, 3); }
13775     @@@c:erred: <[[xp|nswf-legal-ncname]]>{ (7, 2)..(7, 4); }
13776     @@XMLTest:
13777     @@@QName: xp.name.attlist.names.1.1.2.test
13778     @@@DEnt:
13779     @@@@test:value:
13780     <?xml version="1.1"?>
13781     <!DOCTYPE p [
13782     <!NOTATION :ab SYSTEM "n">
13783     <!ATTLIST :ab
13784     :ab
13785     NOTATION
13786     (:ab)
13787     #IMPLIED>
13788     ]><p/>
13789     @@@c:erred: <[[xp|nswf-legal-ncname]]>{ (3, 12)..(3, 14); }
13790     @@@c:erred: <[[xp|nswf-legal-qname]]>{ (4, 11)..(4, 13); }
13791     @@@c:erred: <[[xp|nswf-legal-qname]]>{ (5, 1)..(5, 3); }
13792     @@@c:erred: <[[xp|nswf-legal-ncname]]>{ (7, 2)..(7, 4); }
13793     @@XMLTest:
13794     @@@QName: xp.name.gent.1.0.2.test
13795     @@@DEnt:
13796     @@@@test:value:
13797     <?xml version="1.0"?>
13798     <!DOCTYPE p [
13799     <!ENTITY $u3001$u3002 "n">
13800     ]>
13801     <p a="&$u3001$u3002;">
13802     &$u3001$u3002;
13803     </p>
13804     @@@c:erred: <[[xp|wf-invalid-character-in-node-name]]>{ (3, 10)..(3, 11); }
13805     @@@c:erred: <[[xp|wf-invalid-character-in-node-name]]>{ (5, 8)..(5, 9); }
13806     @@@c:erred: <[[xp|wf-invalid-character-in-node-name]]>{ (6, 2)..(6, 3); }
13807     @@XMLTest:
13808     @@@QName: xp.name.ger.1.1.2.test
13809     @@@DEnt:
13810     @@@@test:value:
13811     <?xml version="1.1"?>
13812     <!DOCTYPE p [
13813     <!ENTITY $u3001$u3002 "n">
13814     ]>
13815     <p a="&$u3001$u3002;">$
13816     &$u3001$u3002;$
13817     </p>
13818     @@@test:domTree:
13819     document {
13820     xml-version: '1.1';
13821     document-type {
13822     general-entity {
13823     node-name: U+3001 U+3002;
13824     }
13825     }
13826     element {
13827     attribute {
13828     node-name: 'a';
13829     general-entity-reference {
13830     node-name: U+3001 U+3002;
13831     }
13832     }
13833     general-entity-reference {
13834     node-name: U+3001 U+3002;
13835     }
13836     }
13837     }
13838     @@XMLTest:
13839     @@@QName: xp.name.ger.1.0.3.test
13840     @@@DEnt:
13841     @@@@test:value:
13842     <?xml version="1.0"?>
13843     <!DOCTYPE p [
13844     <!ENTITY $u3005b "n">
13845     ]>
13846     <p a="&$u3005b;">
13847     &$u3005b;
13848     </p>
13849     @@@c:erred: <[[xp|wf-invalid-character-in-node-name]]>{ (3, 10)..(3, 11); }
13850     @@@c:erred: <[[xp|wf-invalid-character-in-node-name]]>{ (5, 8)..(5, 9); }
13851     @@@c:erred: <[[xp|wf-invalid-character-in-node-name]]>{ (6, 2)..(6, 3); }
13852     @@XMLTest:
13853     @@@QName: xp.name.ger.1.1.3.test
13854     @@@DEnt:
13855     @@@@test:value:
13856     <?xml version="1.1"?>
13857     <!DOCTYPE p [
13858     <!ENTITY $u3005b "n">
13859     ]>
13860     <p a="&$u3005b;">$
13861     &$u3005b;$
13862     </p>
13863     @@@test:domTree:
13864     document {
13865     xml-version: '1.1';
13866     document-type {
13867     general-entity {
13868     node-name: U+3005 'b';
13869     }
13870     }
13871     element {
13872     attribute {
13873     node-name: 'a';
13874     general-entity-reference {
13875     node-name: U+3005 'b';
13876     }
13877     }
13878     general-entity-reference {
13879     node-name: U+3005 'b';
13880     }
13881     }
13882     }
13883     @@XMLTest:
13884     @@@QName: xp.name.ger.names.1.0.1.test
13885     @@@DEnt:
13886     @@@@test:value:
13887     <?xml version="1.0"?>
13888     <!DOCTYPE p [
13889     <!ENTITY a:b "n">
13890     ]>
13891     <p a="&a:b;">
13892     &a:b;
13893     </p>
13894     @@@c:erred: <[[xp|nswf-legal-ncname]]>{ (3, 10)..(3, 12); }
13895     @@@c:erred: <[[xp|nswf-legal-ncname]]>{ (5, 8)..(5, 10); }
13896     @@@c:erred: <[[xp|nswf-legal-ncname]]>{ (6, 2)..(6, 4); }
13897     @@XMLTest:
13898     @@@QName: xp.name.ger.names.1.1.1.test
13899     @@@DEnt:
13900     @@@@test:value:
13901     <?xml version="1.1"?>
13902     <!DOCTYPE p [
13903     <!ENTITY a:b "n">
13904     ]>
13905     <p a="&a:b;">
13906     &a:b;
13907     </p>
13908     @@@c:erred: <[[xp|nswf-legal-ncname]]>{ (3, 10)..(3, 12); }
13909     @@@c:erred: <[[xp|nswf-legal-ncname]]>{ (5, 8)..(5, 10); }
13910     @@@c:erred: <[[xp|nswf-legal-ncname]]>{ (6, 2)..(6, 4); }
13911     @@XMLTest:
13912     @@@QName: xp.name.ndata.1.0.2.test
13913     @@@DEnt:
13914     @@@@test:value:
13915     <?xml version="1.0"?>
13916     <!DOCTYPE p [
13917     <!NOTATION $u3001$u3002 SYSTEM "n">
13918     <!ENTITY e SYSTEM "s" NDATA $u3001$u3002>
13919     ]><p/>
13920     @@@c:erred: <[[xp|wf-invalid-character-in-node-name]]>{ (3, 12)..(3, 13); }
13921     @@@c:erred: <[[xp|wf-invalid-character-in-node-name]]>{ (4, 29)..(4, 30); }
13922     @@XMLTest:
13923     @@@QName: xp.name.ndata.1.1.2.test
13924     @@@DEnt:
13925     @@@@test:value:
13926     <?xml version="1.1"?>
13927     <!DOCTYPE p [
13928     <!NOTATION $u3001$u3002 SYSTEM "n">
13929     <!ENTITY e SYSTEM "s" NDATA $u3001$u3002>
13930     ]><p/>
13931     @@@test:domTree:
13932     document {
13933     xml-version: '1.1';
13934     document-type {
13935     notation {
13936     node-name: U+3001 U+3002;
13937     }
13938     general-entity {
13939     node-name: 'e';
13940     notation-name: U+3001 U+3002;
13941     }
13942     }
13943     element { }
13944     }
13945     @@XMLTest:
13946     @@@QName: xp.name.ndata.1.0.3.test
13947     @@@DEnt:
13948     @@@@test:value:
13949     <?xml version="1.0"?>
13950     <!DOCTYPE p [
13951     <!NOTATION $u3005b SYSTEM "n">
13952     <!ENTITY e SYSTEM "s" NDATA $u3005b>
13953     ]><p/>
13954     @@@c:erred: <[[xp|wf-invalid-character-in-node-name]]>{ (3, 12)..(3, 13); }
13955     @@@c:erred: <[[xp|wf-invalid-character-in-node-name]]>{ (4, 29)..(4, 30); }
13956     @@XMLTest:
13957     @@@QName: xp.name.ndata.1.1.3.test
13958     @@@DEnt:
13959     @@@@test:value:
13960     <?xml version="1.1"?>
13961     <!DOCTYPE p [
13962     <!NOTATION $u3005b SYSTEM "n">
13963     <!ENTITY e SYSTEM "s" NDATA $u3005b>
13964     ]><p/>
13965     @@@test:domTree:
13966     document {
13967     xml-version: '1.1';
13968     document-type {
13969     notation {
13970     node-name: U+3005 'b';
13971     }
13972     general-entity {
13973     node-name: 'e';
13974     notation-name: U+3005 'b';
13975     }
13976     }
13977     element { }
13978     }
13979     @@XMLTest:
13980     @@@QName: xp.name.ndata.names.1.0.1.test
13981     @@@DEnt:
13982     @@@@test:value:
13983     <?xml version="1.0"?>
13984     <!DOCTYPE p [
13985     <!NOTATION a:b SYSTEM "n">
13986     <!ENTITY e SYSTEM "s" NDATA a:b>
13987     ]><p/>
13988     @@@c:erred: <[[xp|nswf-legal-ncname]]>{ (3, 12)..(3, 14); }
13989     @@@c:erred: <[[xp|nswf-legal-ncname]]>{ (4, 29)..(4, 31); }
13990     @@XMLTest:
13991     @@@QName: xp.name.ndata.names.1.1.1.test
13992     @@@DEnt:
13993     @@@@test:value:
13994     <?xml version="1.1"?>
13995     <!DOCTYPE p [
13996     <!NOTATION a:b SYSTEM "n">
13997     <!ENTITY e SYSTEM "s" NDATA a:b>
13998     ]><p/>
13999     @@@c:erred: <[[xp|nswf-legal-ncname]]>{ (3, 12)..(3, 14); }
14000     @@@c:erred: <[[xp|nswf-legal-ncname]]>{ (4, 29)..(4, 31); }
14001    
14002     @@enImplNote:
14003     @@@ddid: wf-invalid-character-in-node-name
14004     @@@@:
14005     {ISSUE::
14006     {P:: Tests required for:
14007    
14008     - <CODE::Name> in element type declaration
14009    
14010     - <CODE::Name> in model group
14011    
14012     - <CODE::Name> in parameter entity declaration
14013    
14014     - <CODE::Name> in parameter entity reference
14015    
14016     }
14017     }
14018    
14019     @@XMLTest:
14020     @@@QName: xp.NOTATION.1.test
14021     @@@DEnt:
14022     @@@@test:value:
14023     <!DOCTYPE p [
14024     <!NOTATION n SYSTEM "m">
14025     ]><p/>
14026     @@@test:domTree:
14027     document {
14028     document-type {
14029     notation {
14030     node-name: 'n';
14031     public-id: null;
14032     system-id: 'm';
14033     }
14034     }
14035     element { }
14036     }
14037     @@XMLTest:
14038     @@@QName: xp.NOTATION.2.test
14039     @@@DEnt:
14040     @@@@test:value:
14041     <!DOCTYPE p [
14042     <!NOTATION n PUBLIC "m">
14043     ]><p/>
14044     @@@test:domTree:
14045     document {
14046     document-type {
14047     notation {
14048     node-name: 'n';
14049     system-id: null;
14050     public-id: 'm';
14051     }
14052     }
14053     element { }
14054     }
14055     @@XMLTest:
14056     @@@QName: xp.NOTATION.3.test
14057     @@@DEnt:
14058     @@@@test:value:
14059     <!DOCTYPE p [
14060     <!NOTATION n PUBLIC "m" "l">
14061     ]><p/>
14062     @@@test:domTree:
14063     document {
14064     document-type {
14065     notation {
14066     node-name: 'n';
14067     public-id: 'm';
14068     system-id: 'l';
14069     }
14070     }
14071     element { }
14072     }
14073     @@XMLTest:
14074     @@@QName: xp.NOTATION.4.test
14075     @@@DEnt:
14076     @@@@test:value:
14077     <!DOCTYPE p [
14078     <!NOTATION n SYSTEM "m">
14079     <!NOTATION n SYSTEM "l">
14080     ]><p/>
14081     @@@c:erred: <[[xp|vc-unique-notation-name]]> { (3, 1)..(3, 24); }
14082     @@@test:domTree:
14083     document {
14084     document-type {
14085     notation {
14086     node-name: 'n';
14087     system-id: 'm';
14088     }
14089     }
14090     element { }
14091     }
14092    
14093     @@XMLTest:
14094     @@@QName: xp.names.1.test
14095     @@@DEnt:
14096     @@@@test:value:
14097     <p xmlns="http://1.example/" a="b"/>
14098     @@@test:domTree:
14099     document {
14100     element {
14101     prefix: null;
14102     local-name: 'p';
14103     namespace-uri: 'http://1.example/';
14104     attribute {
14105     prefix: null;
14106     local-name: 'xmlns';
14107     namespace-uri: 'http://www.w3.org/2000/xmlns/';
14108     specified: true;
14109     }
14110     attribute {
14111     prefix: null;
14112     local-name: 'a';
14113     specified: true;
14114     }
14115     }
14116     }
14117     @@XMLTest:
14118     @@@QName: xp.names.2.test
14119     @@@DEnt:
14120     @@@@test:value:
14121     <p xmlns:a="http://1.example/" a="b" a:a="c"/>
14122     @@@test:domTree:
14123     document {
14124     element {
14125     prefix: null;
14126     local-name: 'p';
14127     namespace-uri: null;
14128     attribute {
14129     prefix: 'xmlns';
14130     local-name: 'a';
14131     namespace-uri: 'http://www.w3.org/2000/xmlns/';
14132     specified: true;
14133     }
14134     attribute {
14135     prefix: null;
14136     local-name: 'a';
14137     specified: true;
14138     }
14139     attribute {
14140     prefix: 'a';
14141     local-name: 'a';
14142     namespace-uri: 'http://1.example/';
14143     specified: true;
14144     }
14145     }
14146     }
14147     @@XMLTest:
14148     @@@QName: xp.names.3.test
14149     @@@DEnt:
14150     @@@@test:value:
14151     <a:p xmlns:a="http://1.example/" a="b" a:a="c"/>
14152     @@@test:domTree:
14153     document {
14154     element {
14155     prefix: 'a';
14156     local-name: 'p';
14157     namespace-uri: 'http://1.example/';
14158     attribute {
14159     prefix: 'xmlns';
14160     local-name: 'a';
14161     namespace-uri: 'http://www.w3.org/2000/xmlns/';
14162     specified: true;
14163     }
14164     attribute {
14165     prefix: null;
14166     local-name: 'a';
14167     specified: true;
14168     }
14169     attribute {
14170     prefix: 'a';
14171     local-name: 'a';
14172     namespace-uri: 'http://1.example/';
14173     specified: true;
14174     }
14175     }
14176     }
14177     @@XMLTest:
14178     @@@QName: xp.names.5.test
14179     @@@DEnt:
14180     @@@@test:value:
14181     <p xmlns:a="http://1.example/">$
14182     <a:q/>$
14183     </p>
14184     @@@test:domTree:
14185     document {
14186     element {
14187     prefix: null;
14188     local-name: 'p';
14189     namespace-uri: null;
14190     attribute {
14191     prefix: 'xmlns';
14192     local-name: 'a';
14193     namespace-uri: 'http://www.w3.org/2000/xmlns/';
14194     specified: true;
14195     }
14196     element {
14197     prefix: 'a';
14198     local-name: 'q';
14199     namespace-uri: 'http://1.example/';
14200     }
14201     }
14202     }
14203     @@XMLTest:
14204     @@@QName: xp.names.6.test
14205     @@@DEnt:
14206     @@@@test:value:
14207     <p xmlns:a="http://1.example/">$
14208     <q a:b="c"/>$
14209     </p>
14210     @@@test:domTree:
14211     document {
14212     element {
14213     prefix: null;
14214     local-name: 'p';
14215     namespace-uri: null;
14216     attribute {
14217     prefix: 'xmlns';
14218     local-name: 'a';
14219     namespace-uri: 'http://www.w3.org/2000/xmlns/';
14220     specified: true;
14221     }
14222     element {
14223     prefix: null;
14224     local-name: 'q';
14225     namespace-uri: null;
14226     attribute {
14227     prefix: 'a';
14228     local-name: 'b';
14229     namespace-uri: 'http://1.example/';
14230     specified: true;
14231     }
14232     }
14233     }
14234     }
14235     @@XMLTest:
14236     @@@QName: xp.names.7.test
14237     @@@DEnt:
14238     @@@@test:value:
14239     <p xmlns:a="http://1.example/">$
14240     <q a:b="c" xmlns:a="http://2.example/"/>$
14241     </p>
14242     @@@test:domTree:
14243     document {
14244     element {
14245     prefix: null;
14246     local-name: 'p';
14247     namespace-uri: null;
14248     attribute {
14249     prefix: 'xmlns';
14250     local-name: 'a';
14251     namespace-uri: 'http://www.w3.org/2000/xmlns/';
14252     specified: true;
14253     }
14254     element {
14255     prefix: null;
14256     local-name: 'q';
14257     namespace-uri: null;
14258     attribute {
14259     prefix: 'a';
14260     local-name: 'b';
14261     namespace-uri: 'http://2.example/';
14262     specified: true;
14263     }
14264     attribute {
14265     prefix: 'xmlns';
14266     local-name: 'a';
14267     namespace-uri: 'http://www.w3.org/2000/xmlns/';
14268     specified: true;
14269     }
14270     }
14271     }
14272     }
14273    
14274     @@XMLTest:
14275     @@@QName: xp.names.undeclare.1.test
14276     @@@DEnt:
14277     @@@@test:value:
14278     <p xmlns="http://1.example/">$
14279     <q xmlns="">$
14280     <r xmlns="http://2.example/"/>$
14281     </q>$
14282     </p>
14283     @@@test:domTree:
14284     document {
14285     element {
14286     prefix: null;
14287     local-name: 'p';
14288     namespace-uri: 'http://1.example/';
14289     attribute {
14290     prefix: null;
14291     local-name: 'xmlns';
14292     namespace-uri: 'http://www.w3.org/2000/xmlns/';
14293     specified: true;
14294     }
14295     element {
14296     prefix: null;
14297     local-name: 'q';
14298     namespace-uri: null;
14299     attribute {
14300     prefix: null;
14301     local-name: 'xmlns';
14302     namespace-uri: 'http://www.w3.org/2000/xmlns/';
14303     specified: true;
14304     }
14305     element {
14306     prefix: null;
14307     local-name: 'r';
14308     namespace-uri: 'http://2.example/';
14309     attribute {
14310     prefix: null;
14311     local-name: 'xmlns';
14312     namespace-uri: 'http://www.w3.org/2000/xmlns/';
14313     specified: true;
14314     }
14315     }
14316     }
14317     }
14318     }
14319    
14320     @@XMLTest:
14321     @@@QName: xp.names.undeclare.1.0.1.test
14322     @@@DEnt:
14323     @@@@test:value:
14324     <?xml version="1.0"?>
14325     <a:p xmlns:a="http://1.example/">$
14326     <q xmlns:a="">$
14327     <a:r xmlns:a="http://2.example/"/>$
14328     </q>$
14329     </a:p>
14330     @@@c:erred: <[[xp|nswf-empty-namespace-name]]> { (2, 34)..(2, 47); }
14331     @@XMLTest:
14332     @@@QName: xp.names.undeclare.1.1.1.test
14333     @@@DEnt:
14334     @@@@test:value:
14335     <?xml version="1.1"?>
14336     <a:p xmlns:a="http://1.example/">$
14337     <q xmlns:a="">$
14338     <a:r xmlns:a="http://2.example/"/>$
14339     </q>$
14340     </a:p>
14341     @@@test:domTree:
14342     document {
14343     element {
14344     prefix: 'a';
14345     local-name: 'p';
14346     namespace-uri: 'http://1.example/';
14347     attribute {
14348     prefix: 'xmlns';
14349     local-name: 'a';
14350     namespace-uri: 'http://www.w3.org/2000/xmlns/';
14351     specified: true;
14352     }
14353     element {
14354     prefix: null;
14355     local-name: 'q';
14356     namespace-uri: null;
14357     attribute {
14358     prefix: 'xmlns';
14359     local-name: 'a';
14360     namespace-uri: 'http://www.w3.org/2000/xmlns/';
14361     specified: true;
14362     }
14363     element {
14364     prefix: 'a';
14365     local-name: 'r';
14366     namespace-uri: 'http://2.example/';
14367     attribute {
14368     prefix: 'xmlns';
14369     local-name: 'a';
14370     namespace-uri: 'http://www.w3.org/2000/xmlns/';
14371     specified: true;
14372     }
14373     }
14374     }
14375     }
14376     }
14377     @@XMLTest:
14378     @@@QName: xp.names.undeclare.1.1.2.test
14379     @@@DEnt:
14380     @@@@test:value:
14381     <?xml version="1.1"?>
14382     <a:p xmlns:a="http://1.example/">$
14383     <q xmlns:a="">$
14384     <a:r/>$
14385     </q>$
14386     </a:p>
14387     @@@c:erred: <[[xp|nsc-prefix-declared]]> { (2, 48)..(2, 53); }
14388    
14389     @@XMLTest:
14390     @@@QName: xp.names.xml.prefix.1.test
14391     @@@DEnt:
14392     @@@@test:value:
14393     <a xmlns:xml="http://www.w3.org/XML/1998/namespace"/>
14394     @@@test:domTree:
14395     document {
14396     element {
14397     attribute {
14398     prefix: 'xmlns';
14399     local-name: 'xml';
14400     namespace-uri: 'http://www.w3.org/2000/xmlns/';
14401     }
14402     }
14403     }
14404     @@XMLTest:
14405     @@@QName: xp.names.xml.prefix.2.test
14406     @@@DEnt:
14407     @@@@test:value:
14408     <a xmlns:xml="a"/>
14409     @@@c:erred: <[[xp|nsc-reserved-prefix-xml]]> { (1, 1)..(1, 18); }
14410     @@XMLTest:
14411     @@@QName: xp.names.xml.prefix.3.test
14412     @@@DEnt:
14413     @@@@test:value:
14414     <a xmlns:a="http://www.w3.org/XML/1998/namespace"
14415     />
14416     @@@c:erred: <[[xp|nsc-reserved-namespace-name-xml]]> { (1, 1)..(2, 2); }
14417     @@XMLTest:
14418     @@@QName: xp.names.xml.prefix.4.test
14419     @@@DEnt:
14420     @@@@test:value:
14421     <a xml:lang="ja"/>
14422     @@@test:domTree:
14423     document {
14424     element {
14425     attribute {
14426     prefix: 'xml';
14427     local-name: 'lang';
14428     namespace-uri: 'http://www.w3.org/XML/1998/namespace';
14429     }
14430     }
14431     }
14432    
14433     @@XMLTest:
14434     @@@QName: xp.names.prefix.declared.1.test
14435     @@@DEnt:
14436     @@@@test:value:
14437     <!DOCTYPE a [
14438     <!ATTLIST a
14439     b:c CDATA "d"
14440     >
14441     ]>
14442     <a/>
14443     @@@c:erred: <[[xp|nsc-prefix-declared]]> { (6, 1)..(6, 4); }
14444    
14445     @@XMLTest:
14446     @@@QName: xp.names.xmlns.reserved.1.test
14447     @@@DEnt:
14448     @@@@test:value:
14449     <a xmlns:xmlns="http://www.w3.org/2000/xmlns/"
14450     />
14451     @@@c:erred: <[[xp|nsc-reserved-prefix-xmlns]]> { (1, 1)..(2, 2); }
14452     @@@c:erred: <[[xp|nsc-reserved-namespace-name-xmlns]]> { (1, 1)..(2, 2); }
14453     @@XMLTest:
14454     @@@QName: xp.names.xmlns.reserved.2.test
14455     @@@DEnt:
14456     @@@@test:value:
14457     <a xmlns:xmlns="a"
14458     />
14459     @@@c:erred: <[[xp|nsc-reserved-prefix-xmlns]]> { (1, 1)..(2, 2); }
14460     @@XMLTest:
14461     @@@QName: xp.names.xmlns.reserved.3.test
14462     @@@DEnt:
14463     @@@@test:value:
14464     <a xmlns:a="http://www.w3.org/2000/xmlns/"
14465     />
14466     @@@c:erred: <[[xp|nsc-reserved-namespace-name-xmlns]]> { (1, 1)..(2, 2); }
14467    
14468     @@XMLTest:
14469     @@@QName: xp.names.default.1.test
14470     @@@DEnt:
14471     @@@@test:value:
14472     <!DOCTYPE a [
14473     <!ATTLIST a
14474     xmlns CDATA "http://1.example/">
14475     ]>
14476     <a/>
14477     @@@test:domTree:
14478     document {
14479     document-type {
14480     element-type-definition {
14481     node-name: 'a';
14482     attribute-definition {
14483     node-name: 'xmlns';
14484     node-value: 'http://1.example/';
14485     }
14486     }
14487     }
14488     element {
14489     prefix: null;
14490     local-name: 'a';
14491     namespace-uri: 'http://1.example/';
14492     attribute {
14493     prefix: null;
14494     local-name: 'xmlns';
14495     namespace-uri: 'http://www.w3.org/2000/xmlns/';
14496     value: 'http://1.example/';
14497     specified: false;
14498     }
14499     }
14500     }
14501     @@XMLTest:
14502     @@@QName: xp.names.default.2.test
14503     @@@DEnt:
14504     @@@@test:value:
14505     <!DOCTYPE a [
14506     <!ATTLIST a
14507     xmlns CDATA "http://1.example/">
14508     ]>
14509     <a xmlns="http://2.example/"/>
14510     @@@test:domTree:
14511     document {
14512     document-type {
14513     element-type-definition {
14514     node-name: 'a';
14515     attribute-definition {
14516     node-name: 'xmlns';
14517     node-value: 'http://1.example/';
14518     }
14519     }
14520     }
14521     element {
14522     prefix: null;
14523     local-name: 'a';
14524     namespace-uri: 'http://2.example/';
14525     attribute {
14526     prefix: null;
14527     local-name: 'xmlns';
14528     namespace-uri: 'http://www.w3.org/2000/xmlns/';
14529     value: 'http://2.example/';
14530     specified: true;
14531     }
14532     }
14533     }
14534     @@XMLTest:
14535     @@@QName: xp.names.default.3.test
14536     @@@DEnt:
14537     @@@@test:value:
14538     <!DOCTYPE b:a [
14539     <!ATTLIST b:a
14540     xmlns:b CDATA "http://1.example/">
14541     ]>
14542     <b:a/>
14543     @@@test:domTree:
14544     document {
14545     document-type {
14546     element-type-definition {
14547     node-name: 'b:a';
14548     attribute-definition {
14549     node-name: 'xmlns:b';
14550     node-value: 'http://1.example/';
14551     }
14552     }
14553     }
14554     element {
14555     prefix: 'b';
14556     local-name: 'a';
14557     namespace-uri: 'http://1.example/';
14558     attribute {
14559     prefix: 'xmlns';
14560     local-name: 'b';
14561     namespace-uri: 'http://www.w3.org/2000/xmlns/';
14562     value: 'http://1.example/';
14563     specified: false;
14564     }
14565     }
14566     }
14567     @@XMLTest:
14568     @@@QName: xp.names.default.4.test
14569     @@@DEnt:
14570     @@@@test:value:
14571     <!DOCTYPE b:a [
14572     <!ATTLIST b:a
14573     xmlns:b CDATA "http://1.example/">
14574     ]>
14575     <b:a xmlns:b="http://2.example/"/>
14576     @@@test:domTree:
14577     document {
14578     document-type {
14579     element-type-definition {
14580     node-name: 'b:a';
14581     attribute-definition {
14582     node-name: 'xmlns:b';
14583     node-value: 'http://1.example/';
14584     }
14585     }
14586     }
14587     element {
14588     prefix: 'b';
14589     local-name: 'a';
14590     namespace-uri: 'http://2.example/';
14591     attribute {
14592     prefix: 'xmlns';
14593     local-name: 'b';
14594     namespace-uri: 'http://www.w3.org/2000/xmlns/';
14595     value: 'http://2.example/';
14596     specified: true;
14597     }
14598     }
14599     }
14600     @@XMLTest:
14601     @@@QName: xp.names.default.5.test
14602     @@@DEnt:
14603     @@@@test:value:
14604     <!DOCTYPE a [
14605     <!ATTLIST a
14606     xmlns:b CDATA "http://1.example/"
14607     b:c CDATA "http://1.example/">
14608     ]>
14609     <a xmlns:b="http://2.example/"/>
14610     @@@test:domTree:
14611     document {
14612     document-type {
14613     element-type-definition {
14614     node-name: 'a';
14615     attribute-definition {
14616     node-name: 'xmlns:b';
14617     text-content: 'http://1.example/';
14618     }
14619     attribute-definition {
14620     node-name: 'b:c';
14621     text-content: 'http://1.example/';
14622     }
14623     }
14624     }
14625     element {
14626     prefix: null;
14627     local-name: 'a';
14628     namespace-uri: null;
14629     attribute {
14630     prefix: 'xmlns';
14631     local-name: 'b';
14632     namespace-uri: 'http://www.w3.org/2000/xmlns/';
14633     value: 'http://2.example/';
14634     specified: true;
14635     }
14636     attribute {
14637     prefix: 'b';
14638     local-name: 'c';
14639     namespace-uri: 'http://2.example/';
14640     specified: false;
14641     }
14642     }
14643     }
14644    
14645     @@XMLTest:
14646     @@@QName: xp.names.unique.1.test
14647     @@@DEnt:
14648     @@@@test:value:
14649     <a
14650     xmlns:b="http://2.example/"
14651     xmlns:c="http://2.example/"
14652     b:d=""
14653     c:d=""
14654     />
14655     @@@c:erred: <[[xp|nswf-unique-att-spec-expanded-name]]> { (1, 1)..(6, 2); }
14656     @@XMLTest:
14657     @@@QName: xp.names.unique.2.test
14658     @@@DEnt:
14659     @@@@test:value:
14660     <!DOCTYPE a [
14661     <!ATTLIST a
14662     c:d CDATA ""
14663     >
14664     ]>
14665     <a
14666     xmlns:b="http://2.example/"
14667     xmlns:c="http://2.example/"
14668     b:d=""
14669     />
14670     @@@c:erred: <[[xp|nswf-unique-att-spec-expanded-name]]> { (6, 1)..(10, 2);}
14671     @@XMLTest:
14672     @@@QName: xp.names.unique.3.test
14673     @@@DEnt:
14674     @@@@test:value:
14675     <!DOCTYPE a [
14676     <!ATTLIST a
14677     c:d CDATA "value1"
14678     >
14679     ]>
14680     <a
14681     xmlns:c="http://2.example/"
14682     c:d="value2"
14683     />
14684     @@@test:domTree:
14685     document {
14686     document-type { }
14687     element {
14688     attribute {
14689     prefix: 'xmlns';
14690     local-name: 'c';
14691     namespace-uri: 'http://www.w3.org/2000/xmlns/';
14692     specified: true;
14693     }
14694     attribute {
14695     prefix: 'c';
14696     local-name: 'd';
14697     namespace-uri: 'http://2.example/';
14698     value: 'value2';
14699     specified: true;
14700     }
14701     }
14702     }
14703    
14704     @@XMLTest:
14705     @@@QName: xp.names.normalize.1.test
14706     @@@DEnt:
14707     @@@@test:value:
14708     <!DOCTYPE a [
14709     <!ATTLIST a
14710     xmlns NMTOKEN #IMPLIED
14711     >
14712     ]>
14713     <a xmlns=" "/>
14714     @@@test:domTree:
14715     document {
14716     document-type { }
14717     element {
14718     namespace-uri: null;
14719     prefix: null;
14720     local-name: 'a';
14721     }
14722     }
14723     @@XMLTest:
14724     @@@QName: xp.names.normalize.2.test
14725     @@@DEnt:
14726     @@@@test:value:
14727     <!DOCTYPE a [
14728     <!ATTLIST a
14729     xmlns NMTOKEN #IMPLIED
14730     >
14731     ]>
14732     <a xmlns=" about:blank "/>
14733     @@@test:domTree:
14734     document {
14735     document-type { }
14736     element {
14737     namespace-uri: 'about:blank';
14738     prefix: null;
14739     local-name: 'a';
14740     }
14741     }
14742     @@XMLTest:
14743     @@@QName: xp.names.normalize.3.test
14744     @@@DEnt:
14745     @@@@test:value:
14746     <!DOCTYPE a:a [
14747     <!ATTLIST a:a
14748     xmlns:a NMTOKEN #IMPLIED
14749     >
14750     ]>
14751     <a:a xmlns:a=" about:blank "/>
14752     @@@test:domTree:
14753     document {
14754     document-type { }
14755     element {
14756     namespace-uri: 'about:blank';
14757     prefix: 'a';
14758     local-name: 'a';
14759     }
14760     }
14761    
14762 wakaba 1.29 @@XMLTest:
14763     @@@QName: xp.no.baseuri.test
14764     @@@DEnt:
14765     @@@@test:value:
14766     <p/>
14767     @@@test:domTree:
14768     document {
14769     document-uri: null;
14770     base-uri: null;
14771     element {
14772     node-name: 'p';
14773     base-uri: null;
14774     }
14775     }
14776     @@XMLTest:
14777     @@@QName: xp.docuri.no.baseuri.test
14778     @@@DEnt:
14779     @@@@test:uri:
14780     http://www.example.com/
14781     @@@@test:value:
14782     <p/>
14783     @@@test:domTree:
14784     document {
14785     document-uri: 'http://www.example.com/';
14786     base-uri: 'http://www.example.com/';
14787     element {
14788     node-name: 'p';
14789     base-uri: 'http://www.example.com/';
14790     }
14791     }
14792     @@XMLTest:
14793     @@@QName: xp.docuri.baseuri.test
14794     @@@DEnt:
14795     @@@@test:uri:
14796     http://www.example.com/
14797     @@@@test:baseURI:
14798     ftp://ftp.example.com/
14799     @@@@test:value:
14800     <p/>
14801     @@@test:domTree:
14802     document {
14803     document-uri: 'http://www.example.com/';
14804     base-uri: 'ftp://ftp.example.com/';
14805     element {
14806     node-name: 'p';
14807     base-uri: 'ftp://ftp.example.com/';
14808     }
14809     }
14810     @@XMLTest:
14811     @@@QName: xp.doctype.baseuri.test
14812     @@@DEnt:
14813     @@@@test:uri:
14814     http://www.example.com/
14815     @@@@test:baseURI:
14816     ftp://ftp.example.com/
14817     @@@@test:value:
14818     <!DOCTYPE p SYSTEM "sys">
14819     <p/>
14820     @@@test:domTree:
14821     document {
14822     document-uri: 'http://www.example.com/';
14823     base-uri: 'ftp://ftp.example.com/';
14824     document-type {
14825     system-id: 'sys';
14826     manakai-declaration-base-uri: 'ftp://ftp.example.com/';
14827     }
14828     element {
14829     node-name: 'p';
14830     base-uri: 'ftp://ftp.example.com/';
14831     }
14832     }
14833     @@XMLTest:
14834     @@@QName: xp.entdecl.baseuri.test
14835     @@@DEnt:
14836     @@@@test:uri:
14837     http://www.example.com/
14838     @@@@test:baseURI:
14839     ftp://ftp.example.com/
14840     @@@@test:value:
14841     <!DOCTYPE p [
14842     <!ENTITY ent SYSTEM "ent">
14843     ]>
14844     <p/>
14845     @@@test:domTree:
14846     document {
14847     document-uri: 'http://www.example.com/';
14848     base-uri: 'ftp://ftp.example.com/';
14849     document-type {
14850     general-entity {
14851     node-name: 'ent';
14852     manakai-declaration-base-uri: 'ftp://ftp.example.com/';
14853     }
14854     }
14855     element {
14856     node-name: 'p';
14857     base-uri: 'ftp://ftp.example.com/';
14858     }
14859     }
14860     @@XMLTest:
14861     @@@QName: xp.notdecl.baseuri.test
14862     @@@DEnt:
14863     @@@@test:uri:
14864     http://www.example.com/
14865     @@@@test:baseURI:
14866     ftp://ftp.example.com/
14867     @@@@test:value:
14868     <!DOCTYPE p [
14869     <!NOTATION not SYSTEM "not">
14870     ]>
14871     <p/>
14872     @@@test:domTree:
14873     document {
14874     document-uri: 'http://www.example.com/';
14875     base-uri: 'ftp://ftp.example.com/';
14876     document-type {
14877     notation {
14878     node-name: 'not';
14879     manakai-declaration-base-uri: 'ftp://ftp.example.com/';
14880     }
14881     }
14882     element {
14883     node-name: 'p';
14884     base-uri: 'ftp://ftp.example.com/';
14885     }
14886     }
14887     @@XMLTest:
14888     @@@QName: xp.doctype.intsubset.pi.baseuri.test
14889     @@@DEnt:
14890     @@@@test:uri:
14891     http://www.example.com/
14892     @@@@test:baseURI:
14893     ftp://ftp.example.com/
14894     @@@@test:value:
14895     <!DOCTYPE p [
14896     <?pi?>
14897     ]>
14898     <p/>
14899     @@@test:domTree:
14900     document {
14901     document-uri: 'http://www.example.com/';
14902     base-uri: 'ftp://ftp.example.com/';
14903     document-type {
14904     pi {
14905     node-name: 'pi';
14906     base-uri: 'ftp://ftp.example.com/';
14907     }
14908     }
14909     element {
14910     node-name: 'p';
14911     base-uri: 'ftp://ftp.example.com/';
14912     }
14913     }
14914    
14915 wakaba 1.30 @@XMLTest:
14916     @@@QName: xp.xmlid.attr.test
14917     @@@DEnt:
14918     @@@@test:value:
14919     <p xml:id="idv"/>
14920     @@@test:domTree:
14921     document {
14922     element {
14923     attribute {
14924     node-name: 'xml:id';
14925     value: 'idv';
14926     schema-type-info: TypeInfo ('http://www.w3.org/TR/REC-xml',
14927     'ID');
14928     specified: true;
14929     }
14930     }
14931     }
14932     @@XMLTest:
14933     @@@QName: xp.xmlid.attr.norm.test
14934     @@@DEnt:
14935     @@@@test:value:
14936     <p xml:id=" $u000Aidv "/>
14937     @@@test:domTree:
14938     document {
14939     element {
14940     attribute {
14941     node-name: 'xml:id';
14942     value: 'idv';
14943     schema-type-info: TypeInfo ('http://www.w3.org/TR/REC-xml',
14944     'ID');
14945     specified: true;
14946     }
14947     }
14948     }
14949     @@XMLTest:
14950     @@@QName: xp.xmlid.attrdef.test
14951     @@@DEnt:
14952     @@@@test:value:
14953     <!DOCTYPE p [
14954     <!ATTLIST p xml:id ID #IMPLIED>
14955     ]>
14956     <p/>
14957     @@@test:domTree:
14958     document {
14959     document-type {
14960     element-type-definition {
14961     node-name: 'p';
14962     attribute-definition {
14963     node-name: 'xml:id';
14964     declared-type: const (ID_ATTR);
14965     default-type: const (IMPLIED_DEFAULT);
14966     }
14967     }
14968     }
14969     element { }
14970     }
14971     @@XMLTest:
14972     @@@QName: xp.xmlid.attrdef.defaultattr.test
14973     @@@DEnt:
14974     @@@@test:value:
14975     <!DOCTYPE p [
14976     <!ATTLIST p xml:id ID "idv"><!-- invalid -->
14977     ]>
14978     <p/>
14979     @@@test:domTree:
14980     document {
14981     document-type {
14982     element-type-definition {
14983     node-name: 'p';
14984     attribute-definition {
14985     node-name: 'xml:id';
14986     declared-type: const (ID_ATTR);
14987     default-type: const (EXPLICIT_DEFAULT);
14988     node-value: 'idv';
14989     }
14990     }
14991     }
14992     element {
14993     attribute {
14994     node-name: 'xml:id';
14995     schema-type-info: TypeInfo ('http://www.w3.org/TR/REC-xml',
14996     'ID');
14997     value: 'idv';
14998     specified: false;
14999     }
15000     }
15001     }
15002    
15003 wakaba 1.26 @@PerlDef:
15004     my $impl = $Message::DOM::ImplementationRegistry->get_implementation ({
15005     'Core' => '3.0',
15006     'XML' => '3.0',
15007     'XMLVersion' => ['1.0', '1.1'],
15008     });
15009     my $parser = <Class::ManakaiXMLParser>->new ($impl);
15010    
15011     for my $test_data (@$TestData) {
15012     $test->start_new_test ($test_data->{uri});
15013     my $doc_ent = $test_data->{entity}->{$test_data->{root_uri}};
15014     my $not_ok;
15015    
15016     $parser->dom_config->set_parameter ('error-handler' => sub ($$) {
15017     my (undef, $err) = @_;
15018     my $err_type = $err->type;
15019     if ($test_data->{dom_error}->{$err_type}) {
15020     $test->assert_error_equals
15021     (actual_value => $err,
15022     expected_hash => shift @{$test_data->{dom_error}
15023     ->{$err_type}});
15024     } else { # Uncatched error
15025     warn $err;
15026     unless ($err->severity == <C::c|DOMError.SEVERITY_WARNING>) {
15027     $test->failure_comment ('Unexpected error |'.$err->type.'|');
15028     $not_ok = true;
15029     }
15030     }
15031     return true; # continue as far as possible
15032     });
15033    
15034 wakaba 1.27 my $input = {string_data => \$doc_ent->{<Q::test:value>},
15035     system_id => $doc_ent->{<Q::test:uri>},
15036     base_uri => $doc_ent->{<Q::test:baseURI>}};
15037 wakaba 1.26 if ($test_data->{dom_tree}) { # Successful test
15038 wakaba 1.31 my $doc;
15039 wakaba 1.26 try {
15040 wakaba 1.31 $doc = $parser->parse ($input);
15041 wakaba 1.26 $test->assert_dom_tree_equals
15042     (actual_value => $doc,
15043     expected_hash => $test_data->{dom_tree});
15044     for (values %{$test_data->{dom_error}||{}}) {
15045     if (@$_) {
15046     $test->failure_comment
15047     (@$_.' |DOMError|s of type |'.
15048     $_->[0]->{type}->{value}.'| are not reported');
15049     $not_ok = true;
15050     }
15051     }
15052     $not_ok ? $test->not_ok : $test->ok;
15053 wakaba 1.31 undef $doc;
15054 wakaba 1.26 } catch Message::Util::IF::DTException with {
15055 wakaba 1.31 require 'manakai/mndebug.pl';
15056     manakai::mndebug::dump ($doc);
15057 wakaba 1.26 } catch Message::DOM::IF::LSException with {
15058     # not_ok
15059     } otherwise {
15060     my $err = shift;
15061     warn $err;
15062     $test->not_ok;
15063     };
15064     } else {
15065 wakaba 1.31 my $doc;
15066 wakaba 1.26 try {
15067 wakaba 1.31 $doc = $parser->parse ($input);
15068 wakaba 1.26 } catch Message::Util::IF::DTException with {
15069 wakaba 1.31 require 'manakai/mndebug.pl';
15070     manakai::mndebug::dump ($doc);
15071 wakaba 1.26 } catch Message::DOM::IF::LSException with {
15072     #
15073     } otherwise {
15074     my $err = shift;
15075     warn $err;
15076     $test->not_ok;
15077     };
15078     for (values %{$test_data->{dom_error}||{}}) {
15079     if (@$_) {
15080     $test->failure_comment
15081     (@$_.' |DOMError|s of type |'.
15082     $_->[0]->{type}->{value}.'| are not reported');
15083     $not_ok = true;
15084     }
15085     }
15086     $not_ok ? $test->not_ok : $test->ok;
15087 wakaba 1.12 }
15088 wakaba 1.5 }
15089 wakaba 1.6
15090     @ResourceDef:
15091 wakaba 1.19 @@QName: getEmptyEntityState
15092     @@rdf:type: DISPerl|InlineCode
15093     @@ForCheck: ManakaiDOM|ForClass
15094     @@PerlDef:
15095     {reptxt => \'', line => 1, column => 1, pos => 0,
15096 wakaba 1.27 is_externally_declared => true, name => $name,
15097     fh => do {
15098     open my $empty, '<', \'';
15099     $empty;
15100     },
15101     close_file => sub { }}
15102 wakaba 1.19
15103     @ResourceDef:
15104 wakaba 1.6 @@QName: getCopyOfEntityState
15105     @@rdf:type: DISPerl|InlineCode
15106     @@ForCheck: ManakaiDOM|ForClass
15107     @@PerlDef:
15108     {%{$self->{$entity_type}->{$entity_name}},
15109 wakaba 1.27 line => 1, column => 1, pos => 0,
15110     fh => do {
15111     require IO::String;
15112     IO::String->new
15113     (${$self->{$entity_type}->{$entity_name}->{reptxt}});
15114     ## TODO: External entities.
15115     },
15116     close_file => sub { }}
15117 wakaba 1.1 ##ManakaiXMLParser
15118 wakaba 1.5
15119     ElementTypeBinding:
15120 wakaba 1.27 @Name: Test
15121     @ElementType:
15122     dis:ResourceDef
15123     @ShadowContent:
15124     @@ForCheck: ManakaiDOM|ForClass
15125     @@rdf:type: test|StandaloneTest
15126    
15127     ElementTypeBinding:
15128 wakaba 1.5 @Name: XMLTests
15129     @ElementType:
15130     dis:ResourceDef
15131     @ShadowContent:
15132     @@ForCheck: ManakaiDOM|ForClass
15133     @@rdf:type: test|ParserTestSet
15134    
15135     ElementTypeBinding:
15136     @Name: XMLTest
15137     @ElementType:
15138     dis:ResourceDef
15139     @ShadowContent:
15140     @@ForCheck: ManakaiDOM|ForClass
15141     @@rdf:type: test|ParserTest
15142    
15143     ElementTypeBinding:
15144     @Name: DEnt
15145     @ElementType:
15146     dis:ResourceDef
15147     @ShadowContent:
15148     @@rdf:type: test|RootEntity
15149    
15150     ElementTypeBinding:
15151     @Name: Ent
15152     @ElementType:
15153     dis:ResourceDef
15154     @ShadowContent:
15155     @@rdf:type: test|Entity
15156 wakaba 1.1
15157 wakaba 1.3 ResourceDef:
15158     @QName: xp|get-location-from-token
15159     @rdf:type: DISPerl|BlockCode
15160     @enDesc:
15161     Creates a <IF::DOMCore:DOMLocator> object from a token.
15162     @PerlDef:
15163 wakaba 1.14 my $__d = $token->{type} ne '#EOF'
15164     ? $token->{location}->{char_d}
15165     : 0;
15166 wakaba 1.15 $__d -= $token->{location_d} if $token->{location_d};
15167 wakaba 1.3 $result = {
15168 wakaba 1.14 utf32_offset => $token->{location}->{pos} - $__d,
15169     line_number => $token->{location}->{line},
15170     column_number => $token->{location}->{column} - $__d,
15171 wakaba 1.3 };
15172 wakaba 1.14 $result->{utf32_offset} = 0 if $result->{utf32_offset} < 0;
15173     $result->{column_number} = 0 if $result->{column_number} < 0;
15174     ## 0 or 1, which should be?
15175 wakaba 1.3 @For: ManakaiDOM|ManakaiDOM3
15176 wakaba 1.1
15177     ElementTypeBinding:
15178     @Name: RuleDef
15179     @ElementType:
15180     dis:ResourceDef
15181     @ShadowContent:
15182     @@ForCheck: ManakaiDOM|ForClass
15183     @@rdf:type: Muf2003|RuleDefClass
15184    
15185     ElementTypeBinding:
15186     @Name: RuleParam
15187     @ElementType:
15188     dis:ResourceDef
15189     @ShadowContent:
15190     @@rdf:type: Muf2003|RuleParameter
15191    
15192     ElementTypeBinding:
15193     @Name: enImplNote
15194     @ElementType:
15195     dis:ImplNote
15196     @ShadowContent:
15197     @@lang:en
15198    
15199     ElementTypeBinding:
15200 wakaba 1.24 @Name: WFErrDef
15201 wakaba 1.1 @ElementType:
15202     dis:ResourceDef
15203     @ShadowContent:
15204     @@rdf:type: DOMCore|DOMErrorType
15205     @@For: ManakaiDOM|DOM3
15206     @@ecore:textFormatter: ManakaiXMLParserExceptionFormatter
15207 wakaba 1.24 @@c:severity: c|SEVERITY_FATAL_ERROR
15208 wakaba 1.1
15209 wakaba 1.3 ElementTypeBinding:
15210 wakaba 1.24 @Name: FatalErrDef
15211 wakaba 1.3 @ElementType:
15212     dis:ResourceDef
15213     @ShadowContent:
15214     @@rdf:type: DOMCore|DOMErrorType
15215     @@For: ManakaiDOM|DOM3
15216     @@ecore:textFormatter: ManakaiXMLParserExceptionFormatter
15217 wakaba 1.24 @@c:severity: c|SEVERITY_FATAL_ERROR
15218    
15219     ElementTypeBinding:
15220 wakaba 1.26 @Name: NSFatalErrDef
15221     @ElementType:
15222     dis:ResourceDef
15223     @ShadowContent:
15224     @@rdf:type: c|DOMErrorType
15225     @@For: ManakaiDOM|DOM3
15226     @@ecore:textFormatter: ManakaiXMLParserExceptionFormatter
15227     @@c:severity: c|SEVERITY_FATAL_ERROR
15228    
15229     ElementTypeBinding:
15230     @Name: NSCErrDef
15231     @ElementType:
15232     dis:ResourceDef
15233     @ShadowContent:
15234     @@rdf:type: c|DOMErrorType
15235     @@For: ManakaiDOM|DOM3
15236     @@ecore:textFormatter: ManakaiXMLParserExceptionFormatter
15237     @@c:severity: c|SEVERITY_FATAL_ERROR
15238    
15239     ElementTypeBinding:
15240 wakaba 1.24 @Name: VCErrDef
15241     @ElementType:
15242     dis:ResourceDef
15243     @ShadowContent:
15244     @@rdf:type: c|DOMErrorType
15245     @@For: ManakaiDOM|DOM3
15246     @@ecore:textFormatter: ManakaiXMLParserExceptionFormatter
15247     @@c:severity: c|SEVERITY_ERROR
15248    
15249     ElementTypeBinding:
15250     @Name: ErrDef
15251     @ElementType:
15252     dis:ResourceDef
15253     @ShadowContent:
15254     @@rdf:type: c|DOMErrorType
15255     @@For: ManakaiDOM|DOM3
15256     @@ecore:textFormatter: ManakaiXMLParserExceptionFormatter
15257     @@c:severity: c|SEVERITY_ERROR
15258 wakaba 1.3
15259 wakaba 1.16 ElementTypeBinding:
15260 wakaba 1.24 @Name: WarnDef
15261 wakaba 1.16 @ElementType:
15262     dis:ResourceDef
15263     @ShadowContent:
15264 wakaba 1.24 @@rdf:type: c|DOMErrorType
15265 wakaba 1.16 @@For: ManakaiDOM|DOM3
15266     @@ecore:textFormatter: ManakaiXMLParserExceptionFormatter
15267 wakaba 1.24 @@c:severity: c|SEVERITY_WARNING
15268 wakaba 1.16
15269 wakaba 1.3 WFErrDef:
15270     @QName: xp|wf-syntax-error
15271     @enDesc:
15272     The entity does not match to the production rule; it is not
15273     well-formed.
15274     @enMufDef:
15275     |%xp-error-token-type;|%xp-error-token-value
15276     (prefix => { (|}, suffix => {|)}); is not
15277     allowed%xp-error-lines (prefix => { (|}, suffix => {|)});
15278     @ecore:hasParameter:
15279     @@@: xp|error-token
15280     @@enDesc:
15281     The token that is not allowed.
15282    
15283     WFErrDef:
15284     @QName: xp|wf-pi-target-is-xml
15285     @enDesc:
15286     A processing instruction has its <CODE::PITarget> of
15287     <XML::xml> (in any case) which is not allowed.
15288     @enMufDef:
15289     Processing instruction target name cannot be |%p
15290     (name => {<Q::xp|name>});|
15291     @ecore:hasParameter:
15292     @@@: xp|error-token
15293     @@enDesc:
15294     The token that contains the name.
15295     @ecore:hasParameter:
15296     @@@: xp|name
15297     @@enDesc:
15298     A string that is specified as target name of the
15299     processing instruction.
15300     @ecore:hasParameter: xp|parent
15301    
15302     WFErrDef:
15303     @QName: xp|wf-no-end-tag
15304     @enDesc:
15305     An end-tag is not found.
15306     @enMufDef:
15307     End-tag |</%p (name => {<Q::xp|expected-element-type>});>| is required
15308     @ecore:hasParameter: xp|error-token
15309     @ecore:hasParameter:
15310     @@@: xp|node
15311     @@enDesc:
15312     The element node that is not closed.
15313     @ecore:hasParameter:
15314     @@@: xp|expected-element-type
15315     @@enDesc:
15316     The element type name of the element that is not closed.
15317    
15318     WFErrDef:
15319     @QName: xp|wf-unsupported-xml-version
15320     @enDesc:
15321     The XML version specified in the version declaration is not supported.
15322     @enMufDef:
15323     XML version |%p (name => {<Q::infoset|version>});| is not supported
15324     @ecore:hasParameter: xp|bad-token
15325     @ecore:hasParameter:
15326     @@@: xp|parent
15327     @@enDesc:
15328     The document node.
15329     @ecore:hasParameter:
15330     @@@: infoset|version
15331     @@enDesc:
15332     The specified XML version.
15333    
15334     WFErrDef:
15335     @QName: xp|wf-malformed-enc-name
15336     @enDesc:
15337     An <XA::encoding> pseudo-attribute value does not match
15338     to the procduction rule <CODE::EncName>.
15339     @enMufDef:
15340     Encoding name |%p (name => {<Q::xp|name>});| is not allowed
15341     @ecore:hasParameter: xp|error-token
15342     @ecore:hasParameter:
15343     @@@: xp|parent
15344     @@enDesc: The document node.
15345     @ecore:hasParameter:
15346     @@@: xp|name
15347     @@enDesc:
15348     The <XA::encoding> value.
15349    
15350     WFErrDef:
15351     @QName: xp|wf-malformed-xml-standalone
15352     @enDesc:
15353     An <XA::standalone> pseudo-attribute value is neither <XML::yes>
15354     or <XML::no>.
15355     @enMufDef:
15356     |standalone| pseudo-attribute value |%p (name => {<Q::xp|name>});|
15357     is not allowed
15358     @ecore:hasParameter: xp|error-token
15359     @ecore:hasParameter:
15360     @@@: xp|parent
15361     @@enDesc: The document node.
15362     @ecore:hasParameter:
15363     @@@: xp|name
15364     @@enDesc:
15365     The <XA::standalone> value.
15366    
15367     WFErrDef:
15368     @QName: xp|wf-legal-literal-character
15369     @enDesc:
15370     Each character in XML entity must match to the production
15371     rule <CODE::Char - RestrictedChar>.
15372     @enMufDef:
15373     Character %character-code-point
15374     (v => {<Q::xp|character-number>}); is not allowed
15375     @ecore:hasParameter:
15376     @@@: xp|character-number
15377     @@enDesc:
15378     The code position of the character being referred.
15379    
15380     WFErrDef:
15381 wakaba 1.26 @QName: xp|wf-invalid-character-in-node-name
15382     @c:errorType:
15383     @@@: wf-invalid-character-in-node-name
15384     @@ContentType: DISCore|String
15385     @enDesc:
15386     If a name contains a character that is not a name character
15387     in the XML version in use, or if the first character of a name
15388     is not a name start character in the XML version in use.
15389    
15390     {NOTE::
15391     When an invalid character is encountered in an entity
15392     where a <CODE::Name> is expected, what type of error
15393     is issued is implementation dependent: <Q::xp|wf-syntax-error>,
15394     <Q::xp|wf-pi-target-is-xml> or other error might be reported.
15395     }
15396    
15397     {NOTE::
15398     This error type is defined in DOM Level 3 Core and Load and Save
15399     modules and redefined herein for the purpose of XML parser.
15400     }
15401     @enMufDef:
15402     Character %character-code-point
15403     (v => {<Q::xp|character-number>}); is not allowed in name
15404     @ecore:hasParameter: xp|error-token
15405     @ecore:hasParameter:
15406     @@@: xp|character-number
15407     @@enDesc:
15408     The code position of the character being referred.
15409     @ecore:hasParameter:
15410     @@@: infoset|version
15411     @@enDesc:
15412     The version of XML in use.
15413    
15414     WFErrDef:
15415 wakaba 1.25 @QName: xp|wf-pes-in-internal-subset
15416     @enDesc:
15417     In the internal subset of the DTD, parameter entity references
15418     <kwd:MUST-NOT> occur within markup declarations.
15419     @enMufDef:
15420     Parameter entity reference |%percent;%param (name => {<Q::xp|name>});;|
15421     cannot occur within a markup declaration
15422     @ecore:hasParameter: xp|error-token
15423     @ecore:hasParameter:
15424     @@@: xp|name
15425     @@enDesc:
15426     The name of the parameter entity.
15427    
15428     WFErrDef:
15429 wakaba 1.3 @QName: xp|wf-element-type-match
15430 wakaba 1.1 @enDesc:
15431 wakaba 1.3 The <CODE::Name> in an element's end-tag must match the element type
15432     in the start-tag.
15433     @enMufDef:
15434     End-tag |</%p (name => {<Q::xp|actual-element-type>});>| does
15435     not match to start-tag |<%p (name => {<Q::xp|expected-element-type>});>|
15436     @ecore:hasParameter: xp|error-token
15437     @ecore:hasParameter:
15438     @@@: xp|node
15439     @@enDesc:
15440     The current opening element node.
15441     @ecore:hasParameter:
15442     @@@: xp|expected-element-type
15443     @@enDesc:
15444     The element type name of the current element.
15445     @ecore:hasParameter:
15446     @@@: xp|actual-element-type
15447     @@enDesc:
15448     The <CODE::Name> occurs in the end-tag.
15449    
15450     WFErrDef:
15451     @QName: xp|wf-unique-att-spec
15452     @enDesc:
15453     An attribute name <kwd:MUST-NOT> appear more than once in
15454     the same start-tag or empty-element tag.
15455 wakaba 1.1 @enMufDef:
15456 wakaba 1.3 Attribute |%p (name => {<Q::xp|name>});| is specified more
15457     than once in the same tag
15458     @ecore:hasParameter: xp|error-token
15459     @ecore:hasParameter:
15460     @@@: xp|name
15461     @@enDesc:
15462     The name of the attribute.
15463 wakaba 1.18
15464     WFErrDef:
15465     @QName: xp|wf-no-external-entity-references
15466     @enDesc:
15467     Attribute values <kwd:MUST-NOT> contain direct or indirect
15468     entity references to external entities.
15469     @enMufDef:
15470     External entity |%p (name => {<Q::xp|name>});| is referenced
15471     in an attribute value literal
15472     @ecore:hasParameter: xp|error-token
15473     @ecore:hasParameter:
15474     @@@: xp|name
15475     @@enDesc:
15476     The name of the entity.
15477    
15478     WFErrDef:
15479     @QName: xp|wf-no-lt-in-attribute-values
15480     @enDesc:
15481     The replacement text of any entity referred to directly or indirectly
15482     in an attribute value literal <kwd:MUST-NOT> contain a
15483     <CHAR::LESS-THAN SIGN>.
15484     @enMufDef:
15485     Entity replacement text cannot contain a
15486     |LESS-THAN SIGN| since it is referenced from an attribute
15487     value literal
15488     @ecore:hasParameter: xp|error-token
15489 wakaba 1.3
15490 wakaba 1.25 WarnDef:
15491     @QName: xp|warning-attribute-definition-ignored
15492     @enDesc:
15493     An attribute definition is ignored because the same attribute
15494     is declared before.
15495     @enMufDef:
15496     Attribute definition for |%p (name => {<Q::xp|name>});| is ignored
15497     @ecore:hasParameter: xp|error-token
15498     @ecore:hasParameter:
15499     @@@: xp|name
15500     @@enDesc:
15501     The name of the attribute.
15502    
15503 wakaba 1.3 WFErrDef:
15504     @QName: xp|wf-legal-character
15505     @enDesc:
15506     Characters referred to using character references <kwd:MUST>
15507     match the production for <CODE::Char>.
15508     @enMufDef:
15509     Reference to character %character-code-point
15510     (v => {<Q::xp|character-number>}); is not allowed
15511     @ecore:hasParameter: xp|error-token
15512     @ecore:hasParameter:
15513     @@@: xp|character-number
15514     @@enDesc:
15515     The code position of the character being referred.
15516     @ecore:hasParameter:
15517     @@@: xp|parent
15518     @@enDesc:
15519     The parent node in which the character reference has
15520     occurred, if available.
15521 wakaba 1.19
15522     WFErrDef:
15523     @QName: xp|wf-entity-declared
15524     @enDesc:
15525     {P:: In a document
15526    
15527     - without any DTD,
15528    
15529     - with only an internal DTD subset that contains no parameter
15530     entity references, or
15531    
15532     - with <XML::standalone="yes">,
15533    
15534     for an entity reference that does not occur within the external
15535     subset or a parameter entity, the <CODE::Name> given in the
15536     entity reference <kwd:MUST> match the <CODE::Name> does not
15537     occur within the external subset or a parameter entity,
15538     except that five predefined character entities need not
15539     be declared. The declaration of a general entity <kwd:MUST>
15540     precede any reference to it which appears in a default value
15541     in an attribute list declaration.
15542     @enMufDef:
15543     Entity |%p (name => {<Q::xp|name>});| must be declared
15544     in the internal subset
15545 wakaba 1.23 @ecore:hasParameter: xp|error-token
15546     @ecore:hasParameter:
15547     @@@: xp|name
15548     @@enDesc:
15549     The name of the entity.
15550    
15551     WFErrDef:
15552     @QName: xp|wf-parsed-entity
15553     @enDesc:
15554     An entity reference <kwd:MUST-NOT> contain the name of an
15555     unparsed entity.
15556     @enMufDef:
15557     Entity |%p (name => {<Q::xp|name>});| is an unparsed entity
15558     @ecore:hasParameter: xp|error-token
15559     @ecore:hasParameter:
15560     @@@: xp|name
15561     @@enDesc:
15562     The name of the entity.
15563    
15564     WFErrDef:
15565     @QName: xp|wf-no-recursion
15566     @enDesc:
15567     A parsed entity <kwd:MUST-NOT> contain a recursive reference
15568     to itself, either directly or indirectly.
15569     @enMufDef:
15570     Entity |%p (name => {<Q::xp|name>});| is recursively referenced
15571 wakaba 1.19 @ecore:hasParameter: xp|error-token
15572     @ecore:hasParameter:
15573     @@@: xp|name
15574     @@enDesc:
15575     The name of the entity.
15576 wakaba 1.16
15577     FatalErrDef:
15578     @QName: xp|fatal-xml11-end-of-line-in-xml-declaration
15579     @enDesc:
15580     An end-of-line character <CODE::U+0085> or <CODE::U+2028> is appeared
15581     within an XML declaration or text declaration.
15582     @enMufDef:
15583     End-of-line character %character-code-point
15584     (v => {<Q::xp|character-number>}); cannot be used within the
15585     XML or text declaration
15586     @ecore:hasParameter:
15587     @@@: xp|character-number
15588     @@enDesc:
15589     The code position of the end-of-line character.
15590 wakaba 1.24
15591     ErrDef:
15592     @QName: xp|error-internal-predefined-entity
15593     @enDesc:
15594     A general entity declaration whose <CODE::Name> equals to one
15595     of predefined entities <kwd:MUST> declare it as an internal entity.
15596     @enMufDef:
15597     Entity |%p (name => {<Q::xp|name>});| must be declared as an
15598     internal entity
15599     @ecore:hasParameter: xp|error-token
15600     @ecore:hasParameter:
15601     @@@: xp|name
15602     @@enDesc:
15603     The name of the entity.
15604    
15605     ErrDef:
15606     @QName: xp|error-malformed-predefined-entity
15607     @enDesc:
15608     A general entity declaration whose <CODE::Name> equals to one
15609     of predefined entities <kwd:MUST> declare it as a data
15610     character for the entity.
15611     @enMufDef:
15612     Entity declaration for |%p (name => {<Q::xp|name>});|
15613     (replacement text |%p (name => {<Q::xp|replacement-text>});|) is malformed
15614     @ecore:hasParameter: xp|error-token
15615     @ecore:hasParameter:
15616     @@@: xp|name
15617     @@enDesc:
15618     The name of the entity.
15619     @ecore:hasParameter:
15620     @@@: xp|replacement-text
15621     @@enDesc:
15622     The replacement text of the entity declaration.
15623    
15624     WarnDef:
15625     @QName: xp|warning-entity-declaration-ignored
15626     @enDesc:
15627     An entity declaration is ignored because the same entity
15628     is declared before.
15629     @enMufDef:
15630     Entity declaration for |%p (name => {<Q::xp|name>});| is ignored
15631     @ecore:hasParameter: xp|error-token
15632     @ecore:hasParameter:
15633     @@@: xp|name
15634     @@enDesc:
15635     The name of the entity.
15636    
15637     VCErrDef:
15638     @QName: xp|vc-unique-notation-name
15639     @enDesc:
15640     A <CODE::Name> <kwd:MUST-NOT> be declared in more than
15641     one notation declaration.
15642     @enMufDef:
15643     Notation |%p (name => {<Q::xp|name>});| is already declared
15644     @ecore:hasParameter: xp|error-token
15645     @ecore:hasParameter:
15646     @@@: xp|name
15647     @@enDesc:
15648     The name of the notation.
15649 wakaba 1.25
15650     WarnDef:
15651     @QName: xp|warning-entity-declaration-not-processed
15652     @enDesc:
15653     An entity declaration is not processed because there
15654     is a reference to parameter entity before the declaration
15655     and the entity is not read.
15656     @enMufDef:
15657     Entity declaration for |%p (name => {<Q::xp|name>});| is not processed
15658     @ecore:hasParameter: xp|error-token
15659     @ecore:hasParameter:
15660     @@@: xp|name
15661     @@enDesc:
15662     The name of the entity.
15663    
15664     WarnDef:
15665     @QName: xp|warning-attribute-definition-not-processed
15666     @enDesc:
15667     An attribute definition is not processed because there
15668     is a reference to parameter entity before the declaration
15669     and the entity is not read.
15670     @enMufDef:
15671     Attribute definition for |%p (name => {<Q::xp|name>});| is not processed
15672     @ecore:hasParameter: xp|error-token
15673     @ecore:hasParameter:
15674     @@@: xp|name
15675     @@enDesc:
15676     The name of the attribute.
15677 wakaba 1.26
15678     NSFatalErrDef:
15679     @QName: xp|nswf-legal-ncname
15680     @enDesc:
15681     <CODE::Name>s other than element type names and attribute names
15682     <kwd:MUST> be <CODE::NCName>s.
15683     @enMufDef:
15684     <CODE::Name> |%p (name => {<Q::xp|name>});| is not an <CODE::NCName>
15685     @ecore:hasParameter: xp|error-token
15686     @ecore:hasParameter:
15687     @@@: xp|name
15688     @@enDesc:
15689     The name.
15690     @ecore:hasParameter:
15691     @@@: infoset|version
15692     @@enDesc:
15693     The version of XML in use.
15694    
15695     NSFatalErrDef:
15696     @QName: xp|nswf-legal-qname
15697     @enDesc:
15698     An element type name or an attribute name <kwd:MUST> be a
15699     <CODE::QName>.
15700     @enMufDef:
15701     <CODE::Name> |%p (name => {<Q::xp|name>});| is not a <CODE::QName>
15702     @ecore:hasParameter: xp|error-token
15703     @ecore:hasParameter:
15704     @@@: xp|name
15705     @@enDesc:
15706     The name.
15707     @ecore:hasParameter:
15708     @@@: infoset|version
15709     @@enDesc:
15710     The version of XML in use.
15711    
15712     NSCErrDef:
15713     @QName: xp|nsc-reserved-prefix-xml
15714     @enDesc:
15715     The prefix <XML::xml> <kwd:MUST-NOT> be undeclared or bound
15716     to any namespace name other than <URI::http://www.w3.org/XML/1998/namespace>.
15717     @enMufDef:
15718     Namespace prefix |xml| cannot be bound to namespace
15719     name |%p (name => {<Q::infoset|namespaceName>});|
15720     @ecore:hasParameter: xp|error-token
15721     @ecore:hasParameter:
15722     @@@: infoset|prefix
15723     @@enDesc:
15724     The namespace prefix.
15725     @ecore:hasParameter:
15726     @@@: infoset|namespaceName
15727     @@enDesc:
15728     The namespace name bound to or an empty string for undeclaring.
15729    
15730     NSCErrDef:
15731     @QName: xp|nsc-reserved-namespace-name-xml
15732     @enDesc:
15733     Namespace prefixes other than <XML::xml> <kwd:MUST-NOT> be bound
15734     to the namespace name <URI::http://www.w3.org/XML/1998/namespace>.
15735     @enMufDef:
15736     Namespace prefix |%p (name => {<Q::infoset|prefix>});| cannot be
15737     bound to namespace name |http://www.w3.org/XML/1998/namespace|
15738     @enImplNote:
15739     The XMLNames spec does not prohibit the URI bound to
15740     the default namespace (!)
15741     @ecore:hasParameter: xp|error-token
15742     @ecore:hasParameter:
15743     @@@: infoset|prefix
15744     @@enDesc:
15745     The namespace prefix or <DOM::null> for default namespace.
15746     @ecore:hasParameter:
15747     @@@: infoset|namespaceName
15748     @@enDesc:
15749     The namespace name bound to.
15750    
15751     NSCErrDef:
15752     @QName: xp|nsc-reserved-prefix-xmlns
15753     @enDesc:
15754     The prefix <XML::xmlns> <kwd:MUST-NOT> be declared or undeclared.
15755     @enMufDef:
15756     Namespace prefix |xmlns| cannot be declared or undeclared
15757     @ecore:hasParameter: xp|error-token
15758     @ecore:hasParameter:
15759     @@@: infoset|prefix
15760     @@enDesc:
15761     The namespace prefix.
15762     @ecore:hasParameter:
15763     @@@: infoset|namespaceName
15764     @@enDesc:
15765     The namespace name bound to or an empty string for undeclaring.
15766    
15767     NSCErrDef:
15768     @QName: xp|nsc-reserved-namespace-name-xmlns
15769     @enDesc:
15770     Namespace prefixes <kwd:MUST-NOT> be bound
15771     to the namespace name <URI::http://www.w3.org/2000/xmlns/>.
15772     @enMufDef:
15773     Namespace prefix |%p (name => {<Q::infoset|prefix>});| cannot be
15774     bound to namespace name |http://www.w3.org/2000/xmlns/|
15775     @enImplNote:
15776     The XMLNames spec does not prohibit the URI bound to
15777     the default namespace (!)
15778     @ecore:hasParameter: xp|error-token
15779     @ecore:hasParameter:
15780     @@@: infoset|prefix
15781     @@enDesc:
15782     The namespace prefix or <DOM::null> for default namespace.
15783     @ecore:hasParameter:
15784     @@@: infoset|namespaceName
15785     @@enDesc:
15786     The namespace name bound to.
15787    
15788     NSCErrDef:
15789     @QName: xp|nsc-prefix-declared
15790     @enDesc:
15791     A namespace prefix other than <XML::xml> or <XML::xmlns>
15792     <kwd:MUST> have been declared in a namespace declaration
15793     attribute in either the start or empty element tag of the
15794     element where the prefix is used or in an ancestor
15795     element. Furthermore, the attribute value in the innermost
15796     such declaration <kwd:MUST-NOT> be an empty string.
15797     @enMufDef:
15798     Namespace prefix |%p (name => {<Q::infoset|prefix>});| in
15799     qualified name |%p (name => {<Q::xp|name>});| is not declared
15800     @ecore:hasParameter: xp|error-token
15801     @ecore:hasParameter:
15802     @@@: infoset|prefix
15803     @@enDesc:
15804     The namespace prefix.
15805     @ecore:hasParameter:
15806     @@@: xp|name
15807     @@enDesc:
15808     The qualified name.
15809    
15810     NSFatalErrDef:
15811     @QName: xp|nswf-empty-namespace-name
15812     @enDesc:
15813     If the XML version of the document is 1.0 and the
15814     normalized value of the prefixed namespace declaration attribute is empty.
15815     @enMufDef:
15816     Namespace |%p (name => {<Q::infoset|prefix>});| cannot be
15817     undeclared in XML 1.0
15818     @ecore:hasParameter: xp|error-token
15819     @ecore:hasParameter:
15820     @@@: infoset|prefix
15821     @@enDesc:
15822     The namespace prefix.
15823     @ecore:hasParameter:
15824     @@@: infoset|namespaceName
15825     @@enDesc:
15826     An empty string.
15827    
15828     NSFatalErrDef:
15829     @QName: xp|nswf-unique-att-spec-expanded-name
15830     @enDesc:
15831     No element may have two attributes that have qualified name
15832     with the same local part and with namespace prefixes
15833     that have been bound to namespace names that are identical.
15834     @enMufDef:
15835     Attribute |%p (name => {<Q::infoset|localName>});| in
15836     namespace |%p (name => {<Q::infoset|namespaceName>});| is
15837     attached to the same element more than once (as
15838     |%p (name => {<Q::xp|name>});| and
15839     |%p (name => {<Q::xp|another-attribute-name>});|)
15840     @enImplNote:
15841     The XMLNames spec doesn't mention default attributes
15842     for this constraint...
15843     @ecore:hasParameter: xp|error-token
15844     @ecore:hasParameter:
15845     @@@: infoset|localName
15846     @@enDesc:
15847     The local part of the attribute.
15848     @ecore:hasParameter:
15849     @@@: infoset|namespaceName
15850     @@enDesc:
15851     The namespace URI of the attribute.
15852     @ecore:hasParameter:
15853     @@@: xp|name
15854     @@enDesc:
15855     The name, i.e. a qualified name consist of <Q::infoset:localName>
15856     and <Q::infoset:namespaceName> parameter values.
15857     @ecore:hasParameter:
15858     @@@: xp|another-attribute-name
15859     @@enDesc:
15860     Another attribute qualified name expanded to the same expanded name
15861     as <Q::xp|name>.
15862    
15863     XWParam:
15864     @QName: xp|another-attribute-name
15865 wakaba 1.24
15866     XWParam:
15867     @QName: xp|replacement-text
15868     @enDesc:
15869     The replacement text.
15870 wakaba 1.1
15871 wakaba 1.3 XWParam:
15872 wakaba 1.1 @QName: xp|error-token
15873     @enDesc:
15874     The token where the parser found an error.
15875    
15876 wakaba 1.3 XWParam:
15877     @QName: xp|name
15878     @enDesc:
15879     A name.
15880    
15881     XWParam:
15882     @QName: xp|parent
15883     @enDesc:
15884     The parent node in which the error occurs.
15885    
15886     XWParam:
15887     @QName: xp|node
15888     @enDesc:
15889     The current node.
15890    
15891     XWParam:
15892     @QName: xp|actual-element-type
15893     @enDesc:
15894     The actual element type name occured in the source.
15895    
15896     XWParam:
15897     @QName: xp|expected-element-type
15898 wakaba 1.1 @enDesc:
15899 wakaba 1.3 The element type name expected.
15900    
15901     XWParam:
15902     @QName: xp|character-number
15903     @enDesc:
15904     The character code position.
15905    
15906     ElementTypeBinding:
15907     @Name: XWParam
15908     @ElementType:
15909     dis:ResourceDef
15910     @ShadowContent:
15911     @@For: =ManakaiDOM|all
15912     @@rdf:type: ecore|Parameter
15913 wakaba 1.1
15914     ElementTypeBinding:
15915     @Name:enMufDef
15916     @ElementType:
15917     ecore:defaultMessage
15918     @ShadowContent:
15919     @@lang:en
15920     @@ContentType:
15921     lang:muf
15922    
15923     ResourceDef:
15924     @QName: DOMImpl
15925     @AliasFor: DOMCore|DOMImplementation
15926     @For: ManakaiDOM|DOM
15927    
15928 wakaba 1.27 ResourceDef:
15929     @QName: LSInput
15930     @AliasFor: DOMLS|LSInput
15931     @For: ManakaiDOM|DOM
15932    
15933     ResourceDef:
15934     @QName: LSParser
15935     @AliasFor: DOMLS|LSParser
15936     @For: ManakaiDOM|DOM
15937    
15938 wakaba 1.1 ElementTypeBinding:
15939     @Name: Attr
15940     @ElementType:
15941     dis:ResourceDef
15942     @ShadowContent:
15943     @@rdf:type: DISLang|Attribute
15944     @@ForCheck: !=ManakaiDOM|ManakaiDOM
15945    
15946     ElementTypeBinding:
15947     @Name: Get
15948     @ElementType:
15949     dis:ResourceDef
15950     @ShadowContent:
15951     @@rdf:type: DISLang|AttributeGet
15952    
15953     ElementTypeBinding:
15954     @Name: Set
15955     @ElementType:
15956     dis:ResourceDef
15957     @ShadowContent:
15958     @@rdf:type: DISLang|AttributeSet
15959    
15960     ElementTypeBinding:
15961     @Name: enDesc
15962     @ElementType:
15963     dis:Description
15964     @ShadowContent:
15965     @@lang:en
15966    
15967     ElementTypeBinding:
15968     @Name: Method
15969     @ElementType:
15970     dis:ResourceDef
15971     @ShadowContent:
15972     @@rdf:type: DISLang|Method
15973     @@For: !=ManakaiDOM|ManakaiDOM
15974    
15975     ElementTypeBinding:
15976     @Name: Return
15977     @ElementType:
15978     dis:ResourceDef
15979     @ShadowContent:
15980     @@rdf:type: DISLang|MethodReturn
15981    
15982     ElementTypeBinding:
15983     @Name: Param
15984     @ElementType:
15985     dis:ResourceDef
15986     @ShadowContent:
15987     @@rdf:type: DISLang|MethodParameter
15988    
15989     ElementTypeBinding:
15990     @Name: PerlDef
15991     @ElementType:
15992     dis:Def
15993     @ShadowContent:
15994     @@ContentType: lang|Perl
15995    
15996     ElementTypeBinding:
15997 wakaba 1.27 @Name: PerlDefC
15998     @ElementType:
15999     dis:Def
16000     @ShadowContent:
16001     @@ContentType: lang|Perl
16002    
16003     ElementTypeBinding:
16004 wakaba 1.1 @Name: PropDef
16005     @ElementType:
16006     dis:ResourceDef
16007     @ShadowContent:
16008     @@rdf:type: rdf|Property
16009    
16010     ClsDef:
16011     @ClsQName: ManakaiXMLParserExceptionFormatter
16012    
16013     @ClsISA: ecore|MUErrorFormatter||ManakaiDOM|Perl
16014    
16015     @RuleDef:
16016     @@Name: xp-error-token-type
16017     @@enDesc:
16018     The type of the token the parser is encountered.
16019    
16020     @@Method:
16021     @@@Name: after
16022     @@@Param:
16023     @@@@Name: name
16024     @@@@Type: DOMString
16025     @@@@enDesc: The name of the method.
16026     @@@Param:
16027     @@@@Name: p
16028     @@@@Type: DISPerl|HASH
16029     @@@@enDesc: The set of the parameters to the method.
16030     @@@Param:
16031     @@@@Name: o
16032     @@@@Type: DISPerl|HASH
16033     @@@@enDesc: The option value.
16034     @@@Return:
16035     @@@@PerlDef:
16036     $p->{-result} = $o->{<H::xp|error-token>}->{type}
16037     if defined $o->{<H::xp|error-token>}->{type};
16038    
16039     @RuleDef:
16040     @@Name: xp-error-token-value
16041     @@enDesc:
16042     The value of the token the parser is encountered, if any.
16043    
16044     @@Method:
16045     @@@Name: after
16046     @@@Param:
16047     @@@@Name: name
16048     @@@@Type: DOMString
16049     @@@@enDesc: The name of the method.
16050     @@@Param:
16051     @@@@Name: p
16052     @@@@Type: DISPerl|HASH
16053     @@@@enDesc: The set of the parameters to the method.
16054     @@@Param:
16055     @@@@Name: o
16056     @@@@Type: DISPerl|HASH
16057     @@@@enDesc: The option value.
16058     @@@Return:
16059     @@@@PerlDef:
16060     $p->{-result} = $o->{<H::xp|error-token>}->{value}
16061     if defined $o->{<H::xp|error-token>}->{value};
16062    
16063     @RuleDef:
16064     @@Name: xp-error-lines
16065     @@enDesc:
16066     A copy of fragment of the source text that contains the line
16067     where the error occurred, if available.
16068    
16069     @@Method:
16070     @@@Name: after
16071     @@@Param:
16072     @@@@Name: name
16073     @@@@Type: DOMString
16074     @@@@enDesc: The name of the method.
16075     @@@Param:
16076     @@@@Name: p
16077     @@@@Type: DISPerl|HASH
16078     @@@@enDesc: The set of the parameters to the method.
16079     @@@Param:
16080     @@@@Name: o
16081     @@@@Type: DISPerl|HASH
16082     @@@@enDesc: The option value.
16083     @@@Return:
16084     @@@@PerlDef:
16085     my $pos = $o-><AG::DOMCore|DOMError.location>
16086     -><AG::DOMCore|DOMLocator.utf32Offset>;
16087 wakaba 1.27 my $src = $o->{<H::ecore|object>}->{entity}->[-1]->{reptxt};
16088     if (defined $src and $pos > -1) {
16089 wakaba 1.1 my $start = $pos;
16090     $start = rindex ($$src, "\x0A", $start - 1) for 0..2;
16091     $start++;
16092     my $end = $pos;
16093     $end = index ($$src, "\x0A", $end + 1) for 0..2;
16094     $end = length $$src if $end < 0;
16095     $p->{-result} = substr $$src, $start, $end - $start;
16096     }
16097 wakaba 1.3
16098     @RuleDef:
16099     @@Name: character-code-point
16100     @@enDesc:
16101     The character code position, in <CODE::U+<VAR::HHHH>> notation.
16102    
16103     @@Method:
16104     @@@Name: after
16105     @@@Param:
16106     @@@@Name: name
16107     @@@@Type: DOMString
16108     @@@@enDesc: The name of the method.
16109     @@@Param:
16110     @@@@Name: p
16111     @@@@Type: DISPerl|HASH
16112     @@@@enDesc: The set of the parameters to the method.
16113     @@@Param:
16114     @@@@Name: o
16115     @@@@Type: DISPerl|HASH
16116     @@@@enDesc: The option value.
16117     @@@RuleParam:
16118     @@@@Name: v
16119     @@@@Type: DISPerl|Number
16120     @@@@enDesc:
16121     The name of the error parameter that contains the character code.
16122     @@@Return:
16123     @@@@PerlDef:
16124     $p->{-result} = sprintf 'U+%04X', $o->{$p->{v}};
16125 wakaba 1.1 ##XMLParserExceptionFormatter
16126 wakaba 1.27
16127     ElementTypeBinding:
16128     @Name: CParam
16129     @ElementType:
16130     dis:ResourceDef
16131     @ShadowContent:
16132     @@rdf:type:
16133     @@@@: c|DOMConfigurationParameter
16134     @@@For: ManakaiDOM|DOM
16135     @@rdf:type:
16136 wakaba 1.33 @@@@: DISSource|ResourceProperty
16137 wakaba 1.27 @@@For: =ManakaiDOM|all
16138     @@For: ManakaiDOM|DOM3
16139     @@For: =ManakaiDOM|all
16140 wakaba 1.33 @@subsetOf:
16141     @@@@: c|anyDOMConfigurationParameter
16142     @@@For: =ManakaiDOM|all
16143 wakaba 1.27
16144     ElementTypeBinding:
16145     @Name: CParamApp
16146     @ElementType:
16147     dis:ResourceDef
16148     @ShadowContent:
16149     @@rdf:type:
16150     @@@@: c|DOMConfigurationParameterApplication
16151     @@@For: ManakaiDOM|DOM
16152     @@For: ManakaiDOM|DOM3
16153 wakaba 1.30
16154     CParamApp:
16155     @QName: xml-id
16156     @c:domConfigurationParameter: cfg|xml-id
16157     @c:targetType: xp|ManakaiXMLParser
16158 wakaba 1.27
16159     CParamApp:
16160     @QName: error-handler
16161     @c:domConfigurationParameter: c|error-handler
16162     @c:targetType: xp|ManakaiXMLParser
16163    
16164     CParam:
16165     @QName: xp|ls-input-to-input-file
16166     @DOMLS:lsKey:
16167     @@@: i2i
16168     @@For: =ManakaiDOM|all
16169     @Type: ManakaiDOMLSInputToInputFile
16170     @c:targetType: xp|ManakaiXMLParser
16171     @IsSupportRequired: 1
16172     @c:isSupported: 1
16173     @enDesc:
16174     An <IF::LSInput> to Perl filehandle converter.
16175    
16176     @Method:
16177     @@rdf:type: c|DOMConfigurationParameterDefaultGetter
16178     @@Param:
16179     @@@Name: name
16180     @@@Type: DOMString
16181     @@@dis:actualType: c|DOMConfigurationParameterName
16182     @@@enDesc: The parameter name.
16183     @@Return:
16184     @@@Type: ManakaiDOMLSInputToInputFile
16185     @@@enDesc:
16186     The default resolver.
16187     @@@PerlDefC:
16188     $r = sub {
16189     my ($self, $input, $errorHandler) = @_;
16190     ## As defined in DOM Level 3 LS |LSInput| interface
16191    
16192     my $r = {};
16193    
16194     __DEEP{
16195    
16196     FH: {
16197     ## 1. |characterStream|
16198     my $v = $input-><AG::LSInput.characterStream>;
16199     if (defined $v) {
16200     $r->{filehandle} = $v;
16201     last FH;
16202     }
16203    
16204     ## 2. |byteStream|
16205     $v = $input-><AG::LSInput.byteStream>;
16206     if (defined $v) {
16207     ## TODO: Support byte filehandle
16208     ## |encoding|
16209     ## TODO: How to guess?
16210     return null;
16211     }
16212    
16213     ## 3. |stringData|
16214     $v = $input-><AG::LSInput.stringData>;
16215     if (defined $v) {
16216     require IO::String;
16217     $r->{filehandle} = IO::String->new ($v);
16218     last FH;
16219     }
16220    
16221     ## 4. |systemId|
16222     ## TODO:
16223     ## resolve relative URI
16224     ## open
16225     ## set document_uri
16226    
16227     ## 5. |publicId|
16228     ## The default resolver does not support only-|publicId| input.
16229    
16230     return null;
16231     } # FH
16232    
16233     DURI: {
16234     last DURI if defined $r->{document_uri};
16235    
16236     my $v = $input-><AG::LSInput.systemId>;
16237     if (defined $v) {
16238 wakaba 1.29 $r->{base_uri} = $input-><AG::LSInput.baseURI>
16239     unless defined $r->{base_uri};
16240     if (defined $r->{base_uri}) {
16241     $r->{document_uri}
16242     = <ClassM::urigen|ManakaiURIReference.new> (\$v)
16243     -><M::urigen|URIReference.getAbsoluteReference>
16244     ($r->{base_uri})
16245     -><AG::urigen|URIReference.uriReference>;
16246     } else {
16247     $r->{document_uri} = $v;
16248     }
16249 wakaba 1.27 last DURI;
16250     }
16251    
16252     ## TODO: pubid -> pubid URN -> document_uri
16253     } # DURI
16254    
16255     BURI: {
16256     last BURI if defined $r->{base_uri};
16257    
16258     my $v = $input-><AG::LSInput.baseURI>;
16259     if (defined $v) {
16260     $r->{base_uri} = $v;
16261     last BURI;
16262     }
16263    
16264     if (defined $r->{document_uri}) {
16265     $r->{base_uri} = $r->{document_uri};
16266     }
16267     } # BURI
16268    
16269     }__;
16270    
16271     ## ISSUE: Is |certifiedText| required by parsers?
16272    
16273     return $r;
16274     };
16275     @Method:
16276     @@rdf:type: c|DOMConfigurationParameterSetter
16277     @@Param:
16278     @@@Name: name
16279     @@@Type: DOMString
16280     @@@dis:actualType: c|DOMConfigurationParameterName
16281     @@@enDesc: The parameter name.
16282     @@Param:
16283     @@@Name: value
16284     @@@Type: DOMMain|DOMUserData
16285     @@@dis:actualType: ManakaiDOMLSInputToInputFile
16286     @@@enDesc: The new value.
16287     @@Return:
16288     @@@Type: idl|void||ManakaiDOM|all
16289     @@@PerlDefC:
16290     $self->[1]->{<H::xp|ls-input-to-input-file>} = $value;
16291     @@enImplNote:
16292     Implied input processor converts non-blessed code references
16293     into a <Class::ManakaiDOMLSInputToInputFile> object.
16294     @Method:
16295     @@rdf:type: c|DOMConfigurationParameterChecker
16296     @@Param:
16297     @@@Name: name
16298     @@@Type: DOMString
16299     @@@dis:actualType: c|DOMConfigurationParameterName
16300     @@@enDesc: The parameter name.
16301     @@Param:
16302     @@@Name: value
16303     @@@Type: DOMMain|DOMUserData
16304     #@@@dis:actualType: ManakaiDOMLSInputToInputFile
16305     @@@enDesc: The new value.
16306     @@Return:
16307     @@@Type: idl|boolean||ManakaiDOM|all
16308     @@@PerlDefC:
16309     $r = UNIVERSAL::isa ($value, 'CODE') or
16310     UNIVERSAL::isa ($value, <ClassName::ManakaiDOMLSInputToInputFile>);
16311    
16312     @@Test:
16313     @@@QName: cp.ls-input-to-input-file.test
16314     @@@PerlDefC:
16315     my $xp;
16316     __CODE{createParserForTest:: $xp => $xp}__;
16317     my $cfg = $xp-><AG::LSInput.domConfig>;
16318    
16319     my $cp = <Q::xp|ls-input-to-input-file>;
16320    
16321     $test->id ('default');
16322     my $default = $cfg-><M::c|DOMConfiguration.getParameter> ($cp);
16323     $test->assert_isa ($default,
16324     <ClassName::ManakaiDOMLSInputToInputFile>);
16325    
16326     $test->id ('set');
16327     my $sub1 = sub { };
16328     $cfg-><M::c|DOMConfiguration.setParameter> ($cp => $sub1);
16329     my $sub2 = $cfg-><M::c|DOMConfiguration.getParameter> ($cp);
16330     $test->assert_isa ($sub2, <ClassName::ManakaiDOMLSInputToInputFile>);
16331     $test->assert_equals ($sub2, $sub1);
16332    
16333     $test->id ('reset');
16334     $cfg-><M::c|DOMConfiguration.setParameter> ($cp => null);
16335     my $sub3 = $cfg-><M::c|DOMConfiguration.getParameter> ($cp);
16336     $test->assert_isa ($sub3, <ClassName::ManakaiDOMLSInputToInputFile>);
16337     $test->assert_equals ($sub3, $default);
16338 wakaba 1.29
16339     @@Test:
16340     @@@QName: cp.ls-input-to-input-file.default.test
16341     @@@PerlDefC:
16342     my $xp;
16343     __CODE{createParserForTest:: $xp => $xp}__;
16344     my $cfg = $xp-><AG::LSInput.domConfig>;
16345     my $cp = <Q::xp|ls-input-to-input-file>;
16346     my $default = $cfg-><M::c|DOMConfiguration.getParameter> ($cp);
16347    
16348     my $err = sub {}; # dummy error handler
16349    
16350     my $cs = \*STDOUT; # dummy input
16351    
16352     $test->id ('cs.sysid');
16353     my $r1 = $default->resolve_ls_input ({
16354     character_stream => $cs,
16355     system_id => q<http://example.com/sysid>,
16356     }, $err);
16357     $test->assert_equals
16358     ($r1->document_uri, q<http://example.com/sysid>);
16359     $test->assert_equals
16360     ($r1->base_uri, q<http://example.com/sysid>);
16361    
16362     $test->id ('cs.baseuri.sysid');
16363     my $r1 = $default->resolve_ls_input ({
16364     character_stream => $cs,
16365     system_id => q<sysid>,
16366     base_uri => q<http://example.com/>,
16367     }, $err);
16368     $test->assert_equals
16369     ($r1->document_uri, q<http://example.com/sysid>);
16370     $test->assert_equals
16371     ($r1->base_uri, q<http://example.com/>);
16372 wakaba 1.27 ##ls-input-to-input-file
16373    
16374     ClsDef:
16375     @ClsQName: ManakaiDOMLSInputToInputFile
16376     @enDesc:
16377     An <Class::ManakaiDOMLSInputToInputFile> object is used to covert
16378     a <IF::LSInput> object into a Perl filehandle.
16379    
16380     {ISSUE::
16381     In which module this class should be placed?
16382    
16383     Better interface name?
16384     }
16385    
16386     @enDesc:
16387     @@ddid: perl
16388     @@ForCheck: ManakaiDOM|ManakaiDOM
16389     @@@:
16390     For Perl binding, any parameter that accepts
16391     a <Class::ManakaiDOMLSInputToInputFile> would also accept a Perl code
16392     reference (subroutine reference). The code reference
16393     will be blessed as a <Class::ManakaiDOMLSInputToInputFile> whose
16394     <M::ManakaiDOMLSInputToInputFile.resolveLSInput> method invokes the code.
16395    
16396     @ResourceDef:
16397     @@rdf:type: DISLang|InputProcessor
16398     @@rdf:type: DISLang|OutputProcessor
16399     @@PerlDef:
16400     $INPUT = bless $INPUT, <ClassName::ManakaiDOMLSInputToInputFile>
16401     if ref $INPUT eq 'CODE';
16402    
16403     @Method:
16404     @@Name: resolveLSInput
16405     @@enDesc:
16406     Converts a <IF::LSInput> into a Perl filehandle.
16407     @@Param:
16408     @@@Name: input
16409     @@@Type: LSInput
16410     @@@enDesc:
16411     The input.
16412     @@Param:
16413     @@@Name: errorHandler
16414     @@@Type: c|DOMErrorHandler
16415     @@@enDesc:
16416     An error handler. If the method encounters an error
16417     or warning, it <kwd:MAY> notify it to application
16418     via this handler.
16419     @@Return:
16420     @@@Type: ManakaiDOMInputFile
16421     @@@enDesc:
16422     A <Class::ManakaiDOMInputFile> object created from <P::input>.
16423     @@@nullCase:
16424     @@@@enDesc:
16425     If the method was unable to resolve the <P::input>.
16426    
16427     {ISSUE::
16428     Should we allow the method to throw exceptions?
16429     }
16430     @@@PerlDef:
16431     __DEEP{
16432     $r = $self->($self, $input, $errorHandler);
16433     }__;
16434     @@@enImplNote:
16435     Notet that the input / output processor for <CODE::$input>
16436     and return value might or might not be inserted in
16437     the <Perl::$self> code.
16438     ##LSInputToInputFile
16439    
16440     ClsDef:
16441     @ClsQName: ManakaiDOMInputFile
16442     @enDesc:
16443     A set of information on the input, including filehandle.
16444    
16445     @enDesc:
16446     @@ddid: perl
16447     @@ForCheck: ManakaiDOM|ManakaiDOM
16448     @@@:
16449     For Perl binding, any parameter that accepts
16450     a <Class::ManakaiDOMInputFile> would also accept a Perl hash reference.
16451     If a hash reference is given to parameter that expects
16452     a <Class::ManakaiDOMInputFile> object, then it
16453     bless the hash with the class.
16454    
16455     Each attributes defined
16456     in the class is associated to the hash value with the
16457     key equals to the attribut name. Each method defined in
16458     the class will invoke the code reference retrieved
16459     from the hash by the key equals to the method name.
16460    
16461     If there is no value in the hash for an attribute,
16462     then its value is <DOM::null>.
16463    
16464     @ResourceDef:
16465     @@rdf:type: DISLang|InputProcessor
16466     @@rdf:type: DISLang|OutputProcessor
16467     @@PerlDef:
16468     $INPUT = bless $INPUT, <ClassName::ManakaiDOMInputFile>
16469     if ref $INPUT eq 'HASH';
16470    
16471     @Attr:
16472     @@Name: filehandle
16473     @@Type: DISPerl|filehandle||ManakaiDOM|all
16474     @@enDesc:
16475     The input filehandle.
16476    
16477     It <kwd:MUST> be an <Perl::open>ed (and not <Perl::close>d)
16478     filehandle. Note that
16479     it does not have to be associated with an actual file
16480     in the local file system.
16481    
16482     It <kwd:MUST> return a character (rather than byte)
16483     by <Perl::getc>.
16484     @@Get:
16485     @@@PerlDef: $r = $self->{filehandle};
16486     @@Set:
16487     @@@PerlDef: $self->{filehandle} = $given;
16488    
16489     @Attr:
16490     @@Name: baseURI
16491     @@enDesc:
16492     The base URI of the input.
16493    
16494     It <kwd:MUST> be an absolute DOM URI or <DOM::null>.
16495     Otherwise, the result is undefined.
16496     @@Type: DOMString
16497     @@nullCase:
16498     @@@enDesc:
16499     If the base URI is not available.
16500     @@Get:
16501     @@@PerlDef: $r = $self->{base_uri};
16502     @@Set:
16503     @@@PerlDef: $self->{base_uri} = $given;
16504    
16505     @Attr:
16506     @@Name: documentURI
16507     @@enDesc:
16508     The URI of the document.
16509    
16510     It <kwd:MUST> be an absolute DOM URI or <DOM::null>.
16511     Otherwise, the result is undefined.
16512     @@Type: DOMString
16513     @@nullCase:
16514     @@@enDesc:
16515     If the document URI is not available.
16516     @@Get:
16517     @@@PerlDef: $r = $self->{document_uri};
16518     @@Set:
16519     @@@PerlDef: $self->{document_uri} = $given;
16520    
16521     @Method:
16522     @@Name: close
16523     @@enDesc:
16524     Closes the file.
16525    
16526     Since when the Perl's destructor is invoked is unreliable,
16527     this method is explicitly called when the file is no longer
16528     in use.
16529    
16530     If the <Class::ManakaiDOMInputFile> is given as a hash
16531     reference and whose value for <CODE::close> is not defined,
16532     then the statement <Perl::close $filehandle> is done
16533     (where <Perl::$filehandle> is the <A::ManakaiDOMInputFile.filehandle>
16534     value).
16535     @@Return:
16536     @@@PerlDef:
16537     __DEEP{
16538     if ($self->{close}) {
16539     $self->{close}->($self);
16540     } else {
16541     close $self->{filehandle};
16542     }
16543     }__;
16544     ##ManakaiDOMInputFile
16545    
16546    
16547    

admin@suikawiki.org
ViewVC Help
Powered by ViewVC 1.1.24