/[suikacvs]/messaging/manakai/lib/Message/DOM/XMLParser.dis
Suika

Diff of /messaging/manakai/lib/Message/DOM/XMLParser.dis

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.10 by wakaba, Sun Jan 29 07:09:25 2006 UTC revision 1.34 by wakaba, Thu Mar 16 08:52:32 2006 UTC
# Line 25  Module: Line 25  Module:
25  Namespace:  Namespace:
26    @c:    @c:
27      http://suika.fam.cx/~wakaba/archive/2004/8/18/dom-core#      http://suika.fam.cx/~wakaba/archive/2004/8/18/dom-core#
28      @cfg:
29        http://suika.fam.cx/www/2006/dom-config/
30    @d:    @d:
31      http://suika.fam.cx/~wakaba/archive/2004/dom/xdt#      http://suika.fam.cx/~wakaba/archive/2004/dom/xdt#
32    @dis:    @dis:
# Line 37  Namespace: Line 39  Namespace:
39      http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/Error/Core/      http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/Error/Core/
40    @f:    @f:
41      http://suika.fam.cx/~wakaba/archive/2004/dom/feature#      http://suika.fam.cx/~wakaba/archive/2004/dom/feature#
42      @fe:
43        http://suika.fam.cx/www/2006/feature/
44      @gls:
45        http://suika.fam.cx/~wakaba/archive/2004/dom/gls#
46    @idl:    @idl:
47      http://suika.fam.cx/~wakaba/archive/2004/dis/IDL#      http://suika.fam.cx/~wakaba/archive/2004/dis/IDL#
48    @infoset:    @infoset:
# Line 55  Namespace: Line 61  Namespace:
61      http://suika.fam.cx/~wakaba/archive/2004/8/18/manakai-dom#ManakaiDOM.      http://suika.fam.cx/~wakaba/archive/2004/8/18/manakai-dom#ManakaiDOM.
62    @MDOMX:    @MDOMX:
63      http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#      http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#
64      @mn:
65        http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/ManakaiNode#
66    @rdf:    @rdf:
67      http://www.w3.org/1999/02/22-rdf-syntax-ns#      http://www.w3.org/1999/02/22-rdf-syntax-ns#
68    @rdfs:    @rdfs:
# Line 63  Namespace: Line 71  Namespace:
71      http://suika.fam.cx/~wakaba/archive/2004/dom/tree#      http://suika.fam.cx/~wakaba/archive/2004/dom/tree#
72    @test:    @test:
73      http://suika.fam.cx/~wakaba/archive/2004/dis/Test#      http://suika.fam.cx/~wakaba/archive/2004/dis/Test#
74      @urigen:
75        http://suika.fam.cx/~wakaba/archive/2005/manakai/URI/Generic/
76    @x:    @x:
77      http://suika.fam.cx/~wakaba/archive/2004/dom/xml#      http://suika.fam.cx/~wakaba/archive/2004/dom/xml#
78    @xml:    @xml:
# Line 179  ElementTypeBinding: Line 189  ElementTypeBinding:
189      @@Value:      @@Value:
190        @@@is-null:1        @@@is-null:1
191    
192    ElementTypeBinding:
193      @Name: TrueCase
194      @ElementType:
195        dis:ResourceDef
196      @ShadowContent:
197        @@rdf:type:
198          ManakaiDOM:InCase
199        @@Value:
200          @@@@: 1
201          @@@ContentType: DISCore|Boolean
202        @@Type: idl|boolean||ManakaiDOM|all
203    
204    ElementTypeBinding:
205      @Name: FalseCase
206      @ElementType:
207        dis:ResourceDef
208      @ShadowContent:
209        @@rdf:type:
210          ManakaiDOM:InCase
211        @@Value:
212          @@@@: 0
213          @@@ContentType: DISCore|Boolean
214        @@Type: idl|boolean||ManakaiDOM|all
215    
216  ResourceDef:  ResourceDef:
217    @QName: LSParser    @QName: LSParser
218    @AliasFor: DOMLS|LSParser    @AliasFor: DOMLS|LSParser
# Line 189  ClsDef: Line 223  ClsDef:
223        
224    @Implement: DOMLS|LSParser    @Implement: DOMLS|LSParser
225    
226    @f:implements:    @f:implements: DOMLS|LSFeature30
227      @@@: DOMLS|LSFeature30    @f:implements: DOMLS|ParseString10
228      @@For: ManakaiDOM|DOM3    @enImplNote:
229        @@ddid: dtdfeature
230        @@@:
231          {TODO::
232            Once DTD validation is implemented, add <Q::f:implements>
233            for XML-DTD-feature.
234          }
235    
236    @DISLang:role: DOMLS|ParserRole    @DISLang:role: gls|ParserRole
237    
238    @enDesc:    @enDesc:
239      Note that the <Class::ManakaiXMLParser> reports any XML errors      Note that the <Class::ManakaiXMLParser> reports any XML errors
# Line 211  ClsDef: Line 251  ClsDef:
251      might be far from the ones obtained when the error would not      might be far from the ones obtained when the error would not
252      be found.      be found.
253    
254      @Test:
255        @@QName: GLSImpl.createGLSParser.LS.test
256        @@enDesc:
257          Since there is at least one implementation of the feature (i.e.
258          this class), the <M::gls|GLSImplementation.createGLSParser>
259          must not throw an exception.
260        @@PerlDef:
261          my $impl;
262          __CODE{DOMLS|createImplForTest:: $impl => $impl}__;
263          
264          my $p = $impl-><M::gls|GLSImplementation.createGLSParser>
265                           ({LS => '3.0'});
266    
267          $test->assert_isa ($p, <IFName::LSParser>);
268      @Test:
269        @@QName: GLSImpl.createGLSParser.ParseXMLString.test
270        @@enDesc:
271          Since there is at least one implementation of the feature (i.e.
272          this class), the <M::gls|GLSImplementation.createGLSParser>
273          must not throw an exception.
274        @@PerlDef:
275          my $impl;
276          __CODE{DOMLS|createImplForTest:: $impl => $impl}__;
277          
278          my $p = $impl-><M::gls|GLSImplementation.createGLSParser>
279                           ({<Q::fe|ParseXMLString> => '1.0'});
280    
281          $test->assert_not_null ($p);
282      @Test:
283        @@QName: GLSImpl.createGLSParser.LS.ParseXMLString.test
284        @@enDesc:
285          Since there is at least one implementation of the feature (i.e.
286          this class), the <M::gls|GLSImplementation.createGLSParser>
287          must not throw an exception.
288        @@PerlDef:
289          my $impl;
290          __CODE{DOMLS|createImplForTest:: $impl => $impl}__;
291          
292          my $p = $impl-><M::gls|GLSImplementation.createGLSParser>
293                           ({LS => '3.0', <Q::fe|ParseXMLString> => '1.0'});
294    
295          $test->assert_isa ($p, <IFName::LSParser>);
296    
297      @Test:
298        @@QName: DOMImplLS.createLSParser.1.test
299        @@enDesc:
300          Since there is at least one implementation of the feature (i.e.
301          this class), the <M::gls|GLSImplementation.createGLSParser>
302          must not throw an exception.
303        @@PerlDef:
304          my $impl;
305          __CODE{DOMLS|createImplForTest:: $impl => $impl}__;
306          
307          my $p = $impl-><M::DOMLS|DOMImplementationLS.createLSParser>
308                           (<C::DOMLS|DOMImplementationLS.MODE_SYNCHRONOUS>);
309          $test->assert_isa ($p, <IFName::LSParser>);
310      @enImplNote:
311        @@ddid: lsparsertext
312        @@@:
313          Future version should add test:
314        @@QName: DOMImplLS.createLSParser.2.test
315        @@enDesc:
316          Since there is at least one implementation of the feature (i.e.
317          this class), the <M::gls|GLSImplementation.createGLSParser>
318          must not throw an exception.
319        @@PerlDef:
320          my $impl;
321          __CODE{DOMLS|createImplForTest:: $impl => $impl}__;
322          
323          my $p = $impl-><M::DOMLS|DOMImplementationLS.createLSParser>
324                           (<C::DOMLS|DOMImplementationLS.MODE_SYNCHRONOUS>,
325                            <Q::xml-dtd:>);
326          $test->assert_isa ($p, <IFName::LSParser>);
327    
328      @Test:
329        @@QName: Perl.open.utf8.strref.1.test
330        @@enDesc:
331          Does PerlIO works as intended?
332        @@PerlDef:
333          my $s = qq<\x{3001}\x0A\x{10001}>;
334          #open my $a, '<'.':utf8', \$s;
335          require IO::String;
336          my $a = IO::String->new ($s);
337          $test->assert_num_equals
338                   (actual_value => ord getc $a,
339                    expected_value => 0x3001);
340          $test->assert_num_equals
341                   (actual_value => ord getc $a,
342                    expected_value => 0x000A);
343          $test->assert_num_equals
344                   (actual_value => ord getc $a,
345                    expected_value => 0x10001);
346          $a->ungetc (0x10001);
347          $test->assert_num_equals
348                   (actual_value => ord getc $a,
349                    expected_value => 0x10001);
350          $test->assert_null (getc $a);
351          close $a;
352      @Test:
353        @@QName: Perl.open.8859.strref.2.test
354        @@enDesc:
355          Does PerlIO works as intended?
356        @@PerlDef:
357          my $s = qq<\x{0080}\x0A\x{00A9}>;
358          #open my $a, '<', \$s;
359          require IO::String;
360          my $a = IO::String->new ($s);
361          $test->assert_num_equals
362                   (actual_value => ord getc $a,
363                    expected_value => 0x0080);
364          $test->assert_num_equals
365                   (actual_value => ord getc $a,
366                    expected_value => 0x000A);
367          $test->assert_num_equals
368                   (actual_value => ord getc $a,
369                    expected_value => 0x00A9);
370          $a->ungetc (0x00A9);
371          $test->assert_num_equals
372                   (actual_value => ord getc $a,
373                    expected_value => 0x00A9);
374          $test->assert_null (getc $a);
375          close $a;
376    
377    @Attr:    @Attr:
378      @@Name: domConfig      @@Name: domConfig
379      @@enDesc:      @@enDesc:
# Line 223  ClsDef: Line 386  ClsDef:
386          __CODE{DOMCore|getConfigObject::          __CODE{DOMCore|getConfigObject::
387            $target => $self,            $target => $self,
388            $targetHash => $self,            $targetHash => $self,
389            $targetType => {<IFName::LSParser>},            $targetType => {<ClassName::xp|ManakaiXMLParser>},
390            $result => $r,            $result => $r,
391          }__;          }__;
392    
393      @Attr:
394        @@ForCheck: ManakaiDOM|ForClass
395        @@Name: async
396        @@enDesc:
397          Whether the parser is asynchronous or not.
398        @@Type: idl|boolean||ManakaiDOM|all
399        @@Get:
400          @@@FalseCase:
401            @@@@enDesc:
402              The parser does not in asynchronous mode.
403          @@@PerlDef: \
404        @@Test:
405          @@@QName: XMLParser.async.test
406          @@@PerlDef:
407            my $xp;
408            __CODE{createParserForTest:: $xp => $xp}__;
409    
410            $test->assert_false ($xp-><AG::DOMLS|LSParser.async>);
411    
412      @Attr:
413        @@ForCheck: ManakaiDOM|ForClass
414        @@Name: busy
415        @@enDesc:
416          Whether the parser is currently busy loading a document or not.
417        @@Type: idl|boolean||ManakaiDOM|all
418        @@Get:
419          @@@TrueCase:
420            @@@@enDesc:
421               The parser is currently busy.
422          @@@FalseCase:
423            @@@@enDesc:
424               The parser is not busy.
425          @@@PerlDef:
426            $r = $self->{<H::DOMLS|busy>};
427    
428      @enImplNote:
429        @@ddid: abort
430        @@@:
431          {ISSUE::
432            LSParser.abort:
433    
434              Is it required to support even in synchronous mode?
435          }
436    
437          {TODO::
438              LSParser.filter
439          }
440    
441      @ResourceDef:
442        @@QName: createParserForTest
443        @@ForCheck: ManakaiDOM|ForClass
444        @@rdf:type: DISPerl|BlockCode
445        @@PerlDef:
446          require Message::DOM::GenericLS;
447          $xp = <Class::ManakaiXMLParser>
448                  ->new (<Class::gls|ManakaiGLSImplementation>->_new, '');
449    
450    @Method:    @Method:
451      @@ManakaiDOM:isForInternal:1      @@ManakaiDOM:isForInternal:1
452      @@ForCheck: ManakaiDOM|ForClass      @@ForCheck: ManakaiDOM|ForClass
# Line 235  ClsDef: Line 455  ClsDef:
455        Creates a new instance of the object.        Creates a new instance of the object.
456      @@Param:      @@Param:
457        @@@Name: impl        @@@Name: impl
458        @@@Type: DOMLS|GLSImplementation        @@@Type: gls|GLSImplementation
459        @@@enDesc:        @@@enDesc:
460          The implementation from which the parser is created.          The implementation from which the parser is created.
461      @@Param:      @@Param:
# Line 255  ClsDef: Line 475  ClsDef:
475          }, $self;          }, $self;
476    
477    @Method:    @Method:
478      @@Name: parseString      @@Name: parseURI
479      @@enImplNote:      @@enDesc:
480        Non-standard - to be removed        Parses an XML document identified by a DOM URI.
481    
482          It is equivalent to <M::.parse> method with its <P::input>
483          parameter set to a <IF::LSInput> object whose
484          <A::LSInput.systemId> set to <P::uri>.
485      @@Param:      @@Param:
486        @@@Name: sourceText        @@@Name: uri
487        @@@Type: DOMString        @@@Type: DOMString
488          @@@enDesc:
489            The DOM URI of the XML document to be read.
490        @@Return:
491          @@@Type: Document
492          @@@enDesc:
493            The newly created and populated <IF::Document> node.
494          @@@dx:raises:
495            @@@@@: ManakaiDOMLS|MDOMLS_BUSY
496            @@@@enDesc:
497              If <A::LSParser.busy> is <DOM::true>.
498          @@@dx:raises:
499            @@@@@: DOMLS|PARSE_ERR
500            @@@@enDesc:
501              If the <IF::LSParser> was unable to load the document.
502          @@@PerlDef:
503            __DEEP{
504              $r = $self-><M::LSParser.parse> ({system_id => $uri});
505            }__;          
506    
507      @Method:
508        @@Name: parse
509        @@enDesc:
510          Parses an XML document from a resource identified
511          by a <IF::LSInput>.
512        @@Param:
513          @@@Name: input
514          @@@Type: LSInput
515          @@@enDesc:
516            The <IF::LSInput> from which the source of the document
517            is to be read.
518      @@Return:      @@Return:
519        @@@Type: Document        @@@Type: Document
520          @@@enDesc:
521            The newly created and populated <IF::Document> node.
522          @@@dx:raises:
523            @@@@@: ManakaiDOMLS|MDOMLS_BUSY
524            @@@@enDesc:
525              If the <A::LSParser.busy> is <DOM::true>.
526          @@@dx:raises:
527            @@@@@: DOMLS|PARSE_ERR
528            @@@@enDesc:
529              If the <IF::LSParser> was unable to load the document.
530        @@@PerlDef:        @@@PerlDef:
531            if ($self->{<H::DOMLS|busy>}) {
532              __EXCEPTION{ManakaiDOMLS|MDOMLS_BUSY}__;
533            }
534            local $self->{<H::DOMLS|busy>} = true;
535    
536            my $in;
537            __DEEP{
538              $self->{parser_cfg} = $self-><AG::LSParser.domConfig>;
539                ## Parser's |domConfig| object.
540              $self->{in_in} = $self->{parser_cfg}
541                                    -><M::c|DOMConfiguration.getParameter>
542                                        (<Q::xp|ls-input-to-input-file>);
543              $in = $self->{in_in}-><M::ManakaiDOMLSInputToInputFile.resolveLSInput>
544                                      ($input,
545                                       $self->{parser_cfg}
546                                            -><M::c|DOMConfiguration.getParameter>
547                                                ('error-handler'));
548            }__;
549            unless (defined $in) {
550              __c|ERROR{DOMLS|no-input-specified::
551                MDOMX:param-name => 'input',
552              }__;
553              __CODE{ParseError}__;
554            }
555    
556            require IO::Handle;
557    
558          $self->{char} = [];          $self->{char} = [];
559          $self->{token} = [];          $self->{token} = [];
560          $self->{entity} = [{          $self->{entity} = [{
561            reptxt => \$sourceText,            fh => $in-><AG::ManakaiDOMInputFile.filehandle>,
562              base_uri => $in-><AG::ManakaiDOMInputFile.baseURI>,
563              doc_uri => $in-><AG::ManakaiDOMInputFile.documentURI>,
564            line => 1,            line => 1,
565            column => 1,            column => 1,
566            pos => 0,            pos => 0,
567              close_file => sub { $in-><M::ManakaiDOMInputFile.close> },
568              reptxt => \'',
569              is_external_entity => true,
570          }];          }];
571              ## Entity stack.
572            $self->{location} = $self->{entity}->[-1];
573              ## Parsing location object as required by DPG.
574              ## It must always be equal to |{entity}->[-1]|.
575          $self->{entity_char} = [];          $self->{entity_char} = [];
576              ## Stack for |{char}| stacks analog to |{entity}| stack.
577          $self->{entity_token} = [];          $self->{entity_token} = [];
578              ## Stack for |{token}| stacks analog to |{entity}| stack.
579          $self->{xml_version} = '1.0';          $self->{xml_version} = '1.0';
580              ## Document XML version: either |1.0| or |1.1|.
581          $self->{standalone} = false;          $self->{standalone} = false;
582          $self->{general_entity} = {};            ## True iff |standalone=yes| is explicitly specified.
583            $self->{has_xref} = false;
584              ## There is an unread external entity.
585            $self->{dont_process} = false;
586              ## So, don't process |ENTITY| and |ATTLIST| declarations.
587            $self->{general_entity} = {
588              lt => {is_predefined => true},
589              gt => {is_predefined => true},
590              amp => {is_predefined => true},
591              quot => {is_predefined => true},
592              apos => {is_predefined => true},
593            };
594              ## Declared general entities.
595          $self->{param_entity} = {};          $self->{param_entity} = {};
596              ## Declared parameter entities.
597          $self->{attr} = {};          $self->{attr} = {};
598            # $self->{attr}->{$element_type_name}->{$attr_name} = $attr_def            # $self->{attr}->{$element_type_name}->{$attr_name} = $attr_def
599          $self->{has_error} = false;            ## Declared attributes.
           ## Well-formedness constraint Entity Declared takes effect?  
600    
601          __DEEP{          __DEEP{
602            $r = $self->_parse_DocumentEntity            $r = $self->{<H::c|implementation>}-><M::DOMImpl.createDocument>;
603                          ($self->{<H::DOMCore:implementation>});            $self->{doc} = $r;
604                ## |Document| object.
605              CORE::delete $self->{docx};
606                ## |DocumentXDoctype| object (if necessary).
607              $self->{doc_cfg} = $r-><AG::Document.domConfig>;
608                ## |Document|'s configuration.
609              CORE::delete $self->{dtdef};
610                ## |DocumentTypeDefinition| object (if created).
611              CORE::delete $self->{dtdecl};
612                ## |DocumentTypeDeclaration| object (if created).
613    
614              $r-><AS::Document.strictErrorChecking> (false);
615                ## NOTE: Any checks such as |Name| validity done by
616                ##       methods on DOM nodes are disabled.  It might result
617                ##       in creating an ill-formed DOM tree when parser
618                ##       errors are traped by |error-handler|.
619              $self->{doc_cfg}-><M::c|DOMConfiguration.setParameter>
620                                  (<Q::cfg|entity-reference-read-only> => false);
621                ## NOTE: Turn this configuration parameter off is required
622                ##       because entity reference subtree is created by
623                ##       the parser rather than |createEntityReference|'s
624                ##       cloning.  Parser's |cfg:entity-reference-read-only|
625                ##       configuration parameter controls whether generated
626                ##       subtree is then marked as read-only or not.
627              $self->{doc_cfg}-><M::c|DOMConfiguration.setParameter>
628                                  (<Q::cfg|clone-entity-reference-subtree> => true);
629                ## NOTE: Turn this configuration parameter on makes
630                ##       entity reference subtrees in attribute default values
631                ##       cloned as is into default attribute node subtrees.
632              $self->{doc_cfg}-><M::c|DOMConfiguration.setParameter>
633                                  (<Q::cfg|dtd-default-attributes> => false);
634                ## NOTE: Don't create DTD default attributes by
635                ##       |createElementNS| method.
636              $self->{doc_cfg}-><M::c|DOMConfiguration.setParameter>
637                                  (<Q::cfg|xml-id> => $self->{parser_cfg}
638                                      -><M::c|DOMConfiguration.getParameter>
639                                          (<Q::cfg|xml-id>));
640              $self->{doc_cfg}-><M::c|DOMConfiguration.setParameter>
641                                  ('error-handler' => sub {
642                                     my (undef, $err) = @_;
643                                     return ($err-><AG::c|DOMError.severity> !=
644                                             <C::c|DOMError.SEVERITY_FATAL_ERROR>);
645                                   })
646                unless $Message::DOM::XMLParser::DEBUG;
647                ## NOTE: The default error handler in manakai |warn|s error
648                ##       description.
649    
650              ## Document entity's URI and base URI
651              $r-><AS::Document.documentURI> ($self->{entity}->[0]->{doc_uri});
652              $r-><AS::Document.manakaiEntityBaseURI>
653                    ($self->{entity}->[0]->{base_uri});
654    
655              ## Document entity -> |Document| node
656              $self->_parse_DocumentEntity;
657    
658              for (@{$self->{entity}}) {
659                $_->{close_file}->();
660                ## NOTE: There should be only the document entity.
661              }
662    
663              ## Replacement tree for general |Entity| nodes
664              if ($self->{parser_cfg}-><M::c|DOMConfiguration.getParameter>
665                                         (<Q::cfg|entity-replacement-tree>)) {
666                my @ent = values %{$self->{general_entity}};
667                for my $ent (@ent) {
668                  if (exists $ent->{has_replacement_text}) {
669                    my $ent_name = $ent->{name};
670                    $self->{entity} = [<Code::getCopyOfEntityState::
671                                                  $entity_type = 'general_entity',
672                                                  $entity_name = $ent_name>];
673                    $self->{location} = $self->{entity}->[-1];
674                    $self->{token} = [];
675                    $self->{char} = [];
676                    local $ent->{is_opened} = true;
677                    ## TODO: External entity support
678                    $self->_parse_InternalGeneralParsedEntity ($ent->{node});
679                    $ent->{node}-><AS::x|Entity.hasReplacementTree> (true);
680                    $self->{entity}->[-1]->{close_file}->();
681                  ## ISSUE: Should errors detected by this phase result
682                  ##        in |DOMLS:PARSE_ERR| exception thrown?
683                }
684                  ## TODO: Read-only if configuration (for all entities)
685                }
686              } # cfg|entity-replacement-tree
687    
688              ## Turns flags to their default value
689              $self->{doc_cfg}-><M::c|DOMConfiguration.setParameter>
690                                  (<Q::cfg|entity-reference-read-only> => null);
691              $self->{doc_cfg}-><M::c|DOMConfiguration.setParameter>
692                                  (<Q::cfg|clone-entity-reference-subtree> => null);
693              $self->{doc_cfg}-><M::c|DOMConfiguration.setParameter>
694                                  (<Q::cfg|dtd-default-attributes> => null);
695              $self->{doc_cfg}-><M::c|DOMConfiguration.setParameter>
696                                  (<Q::cfg|xml-id> => null);
697              $self->{doc_cfg}-><M::c|DOMConfiguration.setParameter>
698                                  ('error-handler' => null);
699              $r-><AS::Document.strictErrorChecking> (true);
700          }__;          }__;
701    
702    @Method:    @Method:
# Line 305  ClsDef: Line 714  ClsDef:
714          if (@{$self->{char}}) {          if (@{$self->{char}}) {
715            $r = shift @{$self->{char}};            $r = shift @{$self->{char}};
716          } else {          } else {
           no warnings 'substr';  
             ## substr outside length warnings at the end of the string  
717            GETCHAR: {            GETCHAR: {
718              my $char = substr (${$self->{entity}->[-1]->{reptxt}},              no warnings 'closed'; # getc() on closed filehandle warning
719                                 $self->{entity}->[-1]->{pos}, 1);              my $ent = $self->{entity}->[-1];
720              $self->{entity}->[-1]->{pos}++;              my $char = $ent->{fh}->getc;
721    
722              if (defined $char and length $char) {              if (defined $char and length $char) {
723                  $ent->{pos}++;
724                $r = ord $char;                $r = ord $char;
725                if ($r == 0x000A) {                if ($r == 0x000A) {
726                  $self->{entity}->[-1]->{line}++;                  $ent->{line}++;
727                  $self->{entity}->[-1]->{column} = 1;                  $ent->{column} = 1;
728                } elsif ($r == 0x000D) {                } elsif ($r == 0x000D) {
729                  my $next_char = substr (${$self->{entity}->[-1]->{reptxt}},                  my $next_char = $ent->{fh}->getc;
                                         $self->{entity}->[-1]->{pos}, 1);  
730                  if ($next_char eq "\x0A") {                  if ($next_char eq "\x0A") {
731                    $self->{entity}->[-1]->{pos}++;                    if ($ent->{is_external_entity}) {
732                    $self->{entity}->[-1]->{column} = 1;                      $ent->{pos}++;
733                        $ent->{line}++;
734                        $ent->{column} = 1;
735                        $r = 0x000A; # ^ U+000D U+000A -> U+000A ^
736                      } else { # Internal entity
737                        $ent->{column}++;
738                        ## Line number will be increased by next |shiftChar|.
739                        $ent->{fh}->ungetc (0x000A);
740                        #$r = 0x000D; # ^ U+000D U+000A -> U+000D ^ U+000A
741                        # no change
742                      }
743                  } elsif ($next_char eq "\x85") {                  } elsif ($next_char eq "\x85") {
744                    if ($self->{xml_version} eq '1.1') {                    if ($self->{xml_version} eq '1.1') {
745                      $self->{entity}->[-1]->{pos}++;                      if ($ent->{is_external_entity}) {
746                      $self->{entity}->[-1]->{column} = 1;                        if ($ent->{no_xml11_eol}) {
747                    } else {                          my $location = {
748                      $self->{entity}->[-1]->{column} = 0;                            utf32_offset => $ent->{pos} - 1,
749                              line_number => $ent->{line},
750                              column_number => $ent->{column},
751                            };
752                            my $continue = __c|ERROR{
753                            xp|fatal-xml11-end-of-line-in-xml-declaration::
754                              c|location => {$location},
755                              xp|character-number => {$r},
756                            }__;
757                            unless ($continue) {
758                              __CODE{ParseError}__;
759                            }
760                          } # no_xml11_eol
761                          $ent->{pos}++;
762                          $ent->{line}++;
763                          $ent->{column} = 1;
764                          $r = 0x000A; # ^ U+000D U+0085 -> U+000A ^
765                        } else { # internal entity
766                          $ent->{column}++;
767                          ## Line number will be increased by next |shiftChar|.
768                          $ent->{fh}->ungetc (0x0085);
769                          #$r = 0x000D; # ^ U+000D U+0085 -> U+000D ^ U+0085
770                          # no change
771                        }
772                      } else { # XML 1.0
773                        ## |no_xml11_eol| will be tested later.
774                        $ent->{column}++;
775                        ## Line number will be increased by next |shiftChar|.
776                        $ent->{fh}->ungetc (0x0085);
777                        $r = 0x000A if $ent->{is_external_entity};
778                          # external: ^ U+000D U+0085 -> U+000A ^ U+0085
779                          # internal: ^ U+000D U+0085 -> U+000D ^ U+0085 (as is)
780                    }                    }
781                  } else {                  } else { # neither U+000A nor U+0085
782                    $self->{entity}->[-1]->{column} = 1;                    $ent->{line}++;
783                      $ent->{column} = 1;
784                      $ent->{fh}->ungetc (ord $next_char);
785                      $r = 0x000A if $ent->{is_external_entity};
786                        # external: ^ U+000D _ -> U+000A ^ _
787                        # internal: ^ U+000D _ -> U+000D ^ _ (as is)
788                  }                  }
789                  $r = 0x000A;                } elsif ($r == 0x0085 or $r == 0x2028) {
790                  $self->{entity}->[-1]->{line}++;                  if ($ent->{no_xml11_eol}) {
791                      my $location = {
792                        utf32_offset => $ent->{pos} - 1,
793                        line_number => $ent->{line},
794                        column_number => $ent->{column},
795                      };
796                      my $continue = __c|ERROR{
797                      xp|fatal-xml11-end-of-line-in-xml-declaration::
798                        c|location => {$location},
799                        xp|character-number => {$r},
800                      }__;
801                      unless ($continue) {
802                        __CODE{ParseError}__;
803                      }
804                    } # no_xml11_eol
805                    $r = 0x000A if $self->{xml_version} eq '1.1' and
806                                   $ent->{is_external_entity};
807                    ## Even in XML 1.0 it increases the line number.
808                    $ent->{line}++;
809                    $ent->{column} = 1;
810                } elsif (                } elsif (
811                  not ((0x0020 <= $r and $r <= 0x007E) or                  not ((0x0020 <= $r and $r <= 0x007E) or
812                       (0x00A0 <= $r and $r <= 0xD7FF) or                       (0x00A0 <= $r and $r <= 0xD7FF) or
813                       (0xE000 <= $r and $r <= 0xFFFD) or                       (0xE000 <= $r and $r <= 0xFFFD) or
814                       (0x10000 <= $r and $r <= 0x10FFFF)) and                       (0x10000 <= $r and $r <= 0x10FFFF)) and
815                  $r != 0x0009 and $r != 0x0085 and                  $r != 0x0009 and
816                  not ($self->{xml_version} eq '1.0' and                  not (($self->{xml_version} eq '1.0' or
817                       (0x007F <= $r and $r <= 0x009F))                        not $ent->{is_external_entity}) and
818                         (0x007F <= $r and $r <= 0x009F)) and
819                    not ($self->{xml_version} eq '1.1' and
820                         not $ent->{is_external_entity} and
821                         0x0001 <= $r and $r <= 0x001F)
822                ) {                ) {
823                  my $location = {                  my $location = {
824                    utf32_offset => $self->{entity}->[-1]->{pos},                    utf32_offset => $ent->{pos} - 1,
825                    line_number => $self->{entity}->[-1]->{line},                    line_number => $ent->{line},
826                    column_number => $self->{entity}->[-1]->{column},                    column_number => $ent->{column},
827                  };                  };
828                  my $continue = __DOMCore:ERROR{xp|wf-legal-literal-character::                  my $continue = __c|ERROR{xp|wf-legal-literal-character::
829                    DOMCore|location => {$location},                    c|location => {$location},
830                    xp|character-number => {$r},                    xp|character-number => {$r},
831                  }__;                  }__;
832                  unless ($continue) {                  unless ($continue) {
833                    __EXCEPTION{DOMLS|PARSE_ERR}__;                    __CODE{ParseError}__;
834                  }                  }
835                  $self->{has_error} = true;                  $ent->{column}++;
836                  $self->{entity}->[-1]->{column}++;                } else { # XML |Char|
837                } elsif ($r == 0x0085 or $r == 0x2028) {                  $ent->{column}++;
                 $r = 0x000A if $self->{xml_version} eq '1.1';  
                 $self->{entity}->[-1]->{line}++;  
                 $self->{entity}->[-1]->{column} = 1;  
               } else {  
                 $self->{entity}->[-1]->{column}++;  
838                }                }
 #            } elsif (@{$self->{entity}} > 1) {  
 #              pop @{$self->{entity}};  
 #              redo GETCHAR;  
 #              ## ISSUE: How cope with delimiter scanning &  
 #              ##        self-containedness constraints??  
839              } else {              } else {
840                $r = -1;                $r = -1;
841              }              }
# Line 424  ClsDef: Line 890  ClsDef:
890          document := prolog element *Misc          document := prolog element *Misc
891                    - *Char RestrictedChar *Char  ;; [1]                    - *Char RestrictedChar *Char  ;; [1]
892      */      */
893      rule DocumentEntity ($impl) : standalone {      rule DocumentEntity : standalone {
       my $doc : return;  
       
       lang:Perl {  
         $doc = $impl-><M::DOMImpl.createDocument>;  
         $doc-><AS::Document.strictErrorChecking> (false);  
       }  
       
894        /*        /*
895          prolog := XMLDecl? *Misc [doctypedecl *Misc]  ;; [22]          prolog := XMLDecl? *Misc [doctypedecl *Misc]  ;; [22]
896        */        */
897        ?lexmode 'DocumentStart';        ?lexmode DocumentStart;
898    
899          my $doc;
900          lang:Perl {
901            $doc = $self->{doc};
902          }
903                
904        ~? (XDO) {        ~? (XDO) {
905          &_XMLDeclaration_ ($doc => $doc);          ?lexmode XMLDeclarationOrPI;
906                    lang:Perl {
907          ~ (PIC) {            $self->{entity}->[-1]->{no_xml11_eol} = true;
908            ?lexmode DocumentProlog;          }
909            ~ (S) {        // XML declaration
910              &_XMLDeclaration_ ($doc => $doc);
911              ~ (PIC2) {
912                ?lexmode DocumentProlog;
913              } else {
914                ?lexmode DocumentProlog;
915              }
916            } (NameChar) {  // Processing instruction whose target begins with |xml|
917              my $target_token;
918              lang:Perl ($v => $token.value) {
919                $target_token = $token;
920                $target_token->{value} = 'xml'.$target_token->{value};
921                $self->{entity}->[-1]->{no_xml11_eol} = false;
922              }
923              ?lexmode PINmtoken;
924              ~? (Nmtoken) {
925                lang:Perl ($v => $token.value) {
926                  $target_token->{value} .= $v;
927                }
928                ?lexmode PIName;
929              }
930              lang:Perl {
931                $target_token->{type} = 'Name';
932                $target_token->{location_d} += 3; # 'xml'
933                unshift @{$self->{token}}, $token;
934                $token = $target_token;
935              }
936              &_ProcessingInstruction_ ($doc => $doc, $parent => $doc);
937              ~ (PIC) {
938                ?lexmode DocumentProlog;
939              } else {
940                ?lexmode DocumentProlog;
941              }
942          } else {          } else {
943            ?lexmode DocumentProlog;            lang:Perl {
944                $self->{entity}->[-1]->{no_xml11_eol} = false;
945              }
946          }          }
947        } else {        } else {
948          ?lexmode 'DocumentProlog';          ?lexmode 'DocumentProlog';
# Line 480  ClsDef: Line 979  ClsDef:
979            ?lexmode DocumentMisc;            ?lexmode DocumentMisc;
980          }          }
981        } else {        } else {
         lang:Perl {  
           $self->{standalone} = true;  
         }  
982          ?lexmode DocumentMisc;          ?lexmode DocumentMisc;
983        }        }
984    
985          lang:Perl {
986            $self->{doc}-><AS::Document.allDeclarationsProcessed> (true)
987              unless $self->{dont_process};
988          }
989                
990        // *Misc        // *Misc
991        ~* (CDO) {        ~* (CDO) {
# Line 541  ClsDef: Line 1042  ClsDef:
1042        }        }
1043                
1044        ~ (#EOF) { }        ~ (#EOF) { }
1045        } // DocumentEntity
1046    
1047        /*
1048          Internal General Parsed Entity
1049    
1050            An internal general parsed entity is well-formed if its
1051            replacement text matches the production labeled |content|.
1052        */
1053        rule InternalGeneralParsedEntity ($ent) : standalone {
1054          ?lexmode ElementContent;
1055    
1056          my $ns;
1057        lang:Perl {        lang:Perl {
1058          if ($self->{has_error}) {          $ns = {
1059            __EXCEPTION{DOMLS|PARSE_ERR::            xml => <Q::xml:>,
1060            }__;            xmlns => <Q::xmlns:>,
1061          }          };
           
         $doc-><AS::Document.strictErrorChecking> (true);  
1062        }        }
1063      } // DocumentEntity  
1064            &content ($parent => $ent, $ns => $ns);
1065    
1066          ~ (#EOF) { }
1067        } // InternalGeneralParsedEntity
1068    
1069      /*      /*
1070        XML Declaration        XML Declaration
1071                
# Line 563  ClsDef: Line 1077  ClsDef:
1077        NOTE: XML declaration is optional in XML 1.0        NOTE: XML declaration is optional in XML 1.0
1078              while it is required in XML 1.1.              while it is required in XML 1.1.
1079      */      */
1080      rule _XMLDeclaration_ ($doc) {      rule _XMLDeclaration_ {
1081          // ~ (XDO) { }
1082        ?lexmode XMLDeclaration;        ?lexmode XMLDeclaration;
1083          //lang:Perl {
1084        ~ (S) { }        //  $self->{entity}->[-1]->{no_xml11_eol} = true;
1085          //}
1086          //~ (S) { }
1087    
1088        ~ (Name == 'version') {        ~ (Name == 'version') {
1089          ~? (S) { }          ~? (S) { }
# Line 613  ClsDef: Line 1130  ClsDef:
1130              }__;              }__;
1131              my $continue = __DOMCore:ERROR{xp|wf-unsupported-xml-version::              my $continue = __DOMCore:ERROR{xp|wf-unsupported-xml-version::
1132                DOMCore|location => {$location},                DOMCore|location => {$location},
1133                xp|parent => {$doc},                xp|parent => {$self->{doc}},
1134                infoset|version => {$ver},                infoset|version => {$ver},
1135                xp|error-token => {$bad_token},                xp|error-token => {$bad_token},
1136              }__;              }__;
1137              unless ($continue) {              unless ($continue) {
1138                __EXCEPTION{DOMLS|PARSE_ERR}__;                __CODE{ParseError}__;
1139              }              }
             $self->{has_error} = true;  
1140            }            }
1141            $doc-><AS::Document.xmlVersion> ($ver);            $self->{doc}-><AS::Document.xmlVersion> ($ver);
1142            $self->{xml_version} = $ver;            $self->{xml_version} = $ver;
1143          }          }
1144    
# Line 674  ClsDef: Line 1190  ClsDef:
1190              }__;              }__;
1191              my $continue = __DOMCore:ERROR{xp|wf-malformed-enc-name::              my $continue = __DOMCore:ERROR{xp|wf-malformed-enc-name::
1192                DOMCore|location => {$location},                DOMCore|location => {$location},
1193                xp|parent => {$doc},                xp|parent => {$self->{doc}},
1194                xp|name => {$ver},                xp|name => {$ver},
1195                xp|error-token => {$bad_token},                xp|error-token => {$bad_token},
1196              }__;              }__;
1197              unless ($continue) {              unless ($continue) {
1198                __EXCEPTION{DOMLS|PARSE_ERR}__;                __CODE{ParseError}__;
1199              }              }
             $self->{has_error} = true;  
1200            }            }
1201            $doc-><AS::Document.xmlEncoding> ($ver);            $self->{doc}-><AS::Document.xmlEncoding> ($ver);
1202          }          }
1203    
1204          ~? (S) { }          ~? (S) { }
# Line 734  ClsDef: Line 1249  ClsDef:
1249              }__;              }__;
1250              my $continue = __DOMCore:ERROR{xp|wf-malformed-xml-standalone::              my $continue = __DOMCore:ERROR{xp|wf-malformed-xml-standalone::
1251                DOMCore|location => {$location},                DOMCore|location => {$location},
1252                xp|parent => {$doc},                xp|parent => {$self->{doc}},
1253                xp|name => {$ver},                xp|name => {$ver},
1254                xp|error-token => {$bad_token},                xp|error-token => {$bad_token},
1255              }__;              }__;
1256              unless ($continue) {              unless ($continue) {
1257                __EXCEPTION{DOMLS|PARSE_ERR}__;                __CODE{ParseError}__;
1258              }              }
             $self->{has_error} = true;  
1259            }            }
1260            $doc-><AS::Document.xmlStandalone> ($ver);            if ($ver eq 'yes') {
1261            $self->{standalone} = true if $ver eq 'yes';              $self->{doc}-><AS::Document.xmlStandalone> (true);
1262                $self->{standalone} = true;
1263              }
1264          }          }
1265    
1266          ~? (S) { }          ~? (S) { }
1267        }        }
1268    
1269        // ~ (PIC) { }        ~ (PIC1) {
1270            lang:Perl {
1271              $self->{entity}->[-1]->{no_xml11_eol} = false;
1272            }
1273          } else {
1274            lang:Perl {
1275              $self->{entity}->[-1]->{no_xml11_eol} = false;
1276            }
1277          }
1278    
1279          // ~ (PIC2) { }
1280      } // _XMLDeclaration_      } // _XMLDeclaration_
1281            
1282      /*      /*
# Line 782  ClsDef: Line 1308  ClsDef:
1308                
1309        // ~ (MDC) { }        // ~ (MDC) { }
1310      } // _CommentDeclaration      } // _CommentDeclaration
1311  _  
1312      rule _CommentDeclarationDTD ($doc) {      rule _CommentDeclarationDTD {
1313        ?lexmode 'CommentDeclaration';        ?lexmode CommentDeclaration;
1314                
1315        ~? (STRING) {        ~? (STRING) {
1316          //          //
# Line 828  _ Line 1354  _
1354                xp|parent => {$parent},                xp|parent => {$parent},
1355              }__;              }__;
1356              unless ($continue) {              unless ($continue) {
1357                __EXCEPTION{DOMLS|PARSE_ERR::                __CODE{ParseError}__;
               }__;  
1358              }              }
             $self->{has_error} = true;  
1359            }            }
1360            ## TODO: Namespace well-formedness            __CODE{checkNCName:: $name => $name}__;
1361              
1362            $pi = $doc-><M::Document.createProcessingInstruction>            $pi = $doc-><M::Document.createProcessingInstruction>
1363                          ($name);                          ($name);
1364          }          }
1365          } else {
1366            lang:Perl {
1367              $pi = $doc-><M::Document.createProcessingInstruction> ('#INVALID');
1368            }
1369        }        }
1370                
1371        ~ (S) {        ~? (S) {
1372          ?lexmode 'PIData';          ?lexmode 'PIData';
1373                    
1374          my $tdata;          my $tdata;
# Line 888  _ Line 1417  _
1417                xp|parent => {$doctype},                xp|parent => {$doctype},
1418              }__;              }__;
1419              unless ($continue) {              unless ($continue) {
1420                __EXCEPTION{DOMLS|PARSE_ERR::                __CODE{ParseError}__;
               }__;  
1421              }              }
             $self->{has_error} = true;  
1422            }            }
1423            ## TODO: Namespace well-formedness            __CODE{checkNCName:: $name => $name}__;
1424              
1425            $pi = $doc-><M::Document.createProcessingInstruction>            $pi = $doc-><M::Document.createProcessingInstruction>
1426                          ($name);                          ($name);
1427              $pi-><AS::x|ProcessingInstruction.manakaiBaseURI>
1428                     ($self->{location}->{base_uri});
1429          }                }      
1430          } else {
1431            lang:Perl {
1432              $pi = $doc-><M::Document.createProcessingInstruction> ('#INVALID');
1433            }
1434        }        }
1435                
1436        ~ (S) {        ~? (S) {
1437          ?lexmode 'PIData';          ?lexmode 'PIData';
1438                    
1439          my $tdata;          my $tdata;
# Line 964  _ Line 1498  _
1498        (CharData) {        (CharData) {
1499          // Character data          // Character data
1500          lang:Perl ($data => $token.value) {          lang:Perl ($data => $token.value) {
1501            $node-><M::Node.appendChild>            $node-><M::Node.manakaiAppendText> (\($data));
             ($doc-><M::Document.createTextNode> ($data));  
1502          }          }
1503        } (STAGO) {        } (STAGO) {
1504          // Start tag or empty element tag          // Start tag or empty element tag
# Line 974  _ Line 1507  _
1507                    
1508          ~ (Name) {          ~ (Name) {
1509            my $attrs;            my $attrs;
1510            lang:Perl ($name => $token.value) {            lang:Perl ($name => $token.value) : has-error {
1511                __CODE{checkQName:: $name => $name}__;
1512              push @{$types}, $type;              push @{$types}, $type;
1513              $type = $name;              $type = $name;
1514              $attrs = {};              $attrs = {};
# Line 1006  _ Line 1540  _
1540            lang:Perl {            lang:Perl {
1541              push @{$nses}, $ns;              push @{$nses}, $ns;
1542              $ns = {%$ns};              $ns = {%$ns};
1543    
1544                ## Default attributes
1545                DA: for my $atqname (%{$self->{attr}->{$type}}) {
1546                  next DA unless $self->{attr}->{$type}->{$atqname};
1547                  next DA if exists $attrs->{$atqname}; # specified
1548                  my $dtype = $self->{attr}->{$type}->{$atqname}
1549                                   -><AG::ATDef.defaultType>;
1550                  next DA unless $dtype == <C::ATDef.EXPLICIT_DEFAULT> or
1551                                 $dtype == <C::ATDef.FIXED_DEFAULT>;
1552                  $attrs->{$atqname} = {is_default => true, nodes => []};
1553                  for (@{$self->{attr}->{$type}->{$atqname}
1554                              -><AG::Node.childNodes>}) {
1555                    push @{$attrs->{$atqname}->{nodes}},
1556                         $_-><M::Node.cloneNode> (true);
1557                  }
1558                }
1559                            
1560              my %gattr;              my %gattr;
1561              my %lattr;              my %lattr;
# Line 1013  _ Line 1563  _
1563                my ($pfx, $lname) = split /:/, $atqname;                my ($pfx, $lname) = split /:/, $atqname;
1564                $attrs->{$atqname}->{def} = $self->{attr}->{$type}->{$atqname};                $attrs->{$atqname}->{def} = $self->{attr}->{$type}->{$atqname};
1565                if (defined $lname) {  ## Global attribute                if (defined $lname) {  ## Global attribute
                 ## TODO: Namespace well-formedness (lname is NCName)  
1566                  if ($pfx eq 'xmlns') {                  if ($pfx eq 'xmlns') {
1567                    my $nsuri = $attrs->{$atqname}->{value};                    my $nsuri = $attrs->{$atqname}->{is_default}
1568                    if ($lname eq 'xml' and                                  ? $attrs->{$atqname}->{def}-><AG::Node.nodeValue>
1569                        $nsuri ne <Q::xml:>) {                                  : $attrs->{$atqname}->{value};
1570                      ## TODO: error                    if (not $attrs->{$atqname}->{is_default} and
1571                    } elsif ($lname eq 'xmlns') {                        $attrs->{$atqname}->{def}) {
                     ## TODO: error  
                   }  
                   if ($nsuri eq '') {  
                     ## TODO: error in XML 1.0  
                   } elsif ($nsuri eq <Q::xml:> and  
                            $lname ne 'xml') {  
                     ## TODO: error  
                   } elsif ($nsuri eq <Q::xmlns:>) {  
                     ## TODO: error  
                   }  
                   $ns->{$lname} = $attrs->{$atqname}->{value};  
                   if ($attrs->{$atqname}->{def}) {  
1572                      my $dt = $attrs->{$atqname}->{def}-><AG::ATDef.declaredType>;                      my $dt = $attrs->{$atqname}->{def}-><AG::ATDef.declaredType>;
1573                      if ({                      if ({
1574                        <C::ATDef.ID_ATTR> => true,                        <C::ATDef.ID_ATTR> => true,
# Line 1045  _ Line 1582  _
1582                        <C::ATDef.ENUMERATION_ATTR> => true,                        <C::ATDef.ENUMERATION_ATTR> => true,
1583                      }->{$dt}) {                      }->{$dt}) {
1584                        ## Tokenization (XML 1 3.3.3)                        ## Tokenization (XML 1 3.3.3)
1585                        for ($ns->{$lname}) {                        for ($nsuri) {
1586                          s/^\x20+//;                          s/^\x20+//;
1587                          s/\x20+\z//;                          s/\x20+\z//;
1588                          s/\x20+/ /g;                          s/\x20+/ /g;
1589                        }                        }
1590                      }                      }
1591                    }                    }
1592                    delete $ns->{$lname} unless length $ns->{$lname};                    if ($lname eq 'xml' and
1593                  } elsif ($pfx eq '') {                        $nsuri ne <Q::xml:>) {
1594                    ## TODO: pfx is not NCName error                      my $location;
1595                  } else {                      __CODE{xp|get-location-from-token::
1596                    if ($gattr{$pfx}->{$lname}) {                        $token => $token,
1597                      ## TODO: Namespace well-formedness error                        $result => $location,
1598                        }__;
1599                        my $continue = __c|ERROR{xp|nsc-reserved-prefix-xml::
1600                          c|location => {$location},
1601                          xp|token => {$token},
1602                          infoset|prefix => {$lname},
1603                          infoset|namespaceName => {$nsuri},
1604                        }__;
1605                        unless ($continue) {
1606                          __CODE{ParseError}__;
1607                        }
1608                      } elsif ($lname eq 'xmlns') {
1609                        my $location;
1610                        __CODE{xp|get-location-from-token::
1611                          $token => $token,
1612                          $result => $location,
1613                        }__;
1614                        my $continue = __c|ERROR{xp|nsc-reserved-prefix-xmlns::
1615                          c|location => {$location},
1616                          xp|token => {$token},
1617                          infoset|prefix => {$lname},
1618                          infoset|namespaceName => {$nsuri},
1619                        }__;
1620                        unless ($continue) {
1621                          __CODE{ParseError}__;
1622                        }
1623                      }
1624                      if ($nsuri eq '') {
1625                        if ($self->{xml_version} eq '1.0') {
1626                          my $location;
1627                          __CODE{xp|get-location-from-token::
1628                            $token => $token,
1629                            $result => $location,
1630                          }__;
1631                          my $continue = __c|ERROR{xp|nswf-empty-namespace-name::
1632                            c|location => {$location},
1633                            xp|token => {$token},
1634                            infoset|namespaceName => {$nsuri},
1635                            infoset|prefix => {$lname},
1636                          }__;
1637                          unless ($continue) {
1638                            __CODE{ParseError}__;
1639                          }
1640                        }
1641                      } elsif ($nsuri eq <Q::xml:> and
1642                               $lname ne 'xml') {
1643                        my $location;
1644                        __CODE{xp|get-location-from-token::
1645                          $token => $token,
1646                          $result => $location,
1647                        }__;
1648                        my $continue = __c|ERROR{
1649                        xp|nsc-reserved-namespace-name-xml::
1650                          c|location => {$location},
1651                          xp|token => {$token},
1652                          infoset|prefix => {$lname},
1653                          infoset|namespaceName => {$nsuri},
1654                        }__;
1655                        unless ($continue) {
1656                          __CODE{ParseError}__;
1657                        }
1658                      } elsif ($nsuri eq <Q::xmlns:>) {
1659                        my $location;
1660                        __CODE{xp|get-location-from-token::
1661                          $token => $token,
1662                          $result => $location,
1663                        }__;
1664                        my $continue = __c|ERROR{
1665                        xp|nsc-reserved-namespace-name-xmlns::
1666                          c|location => {$location},
1667                          xp|token => {$token},
1668                          infoset|prefix => {$lname},
1669                          infoset|namespaceName => {$nsuri},
1670                        }__;
1671                        unless ($continue) {
1672                          __CODE{ParseError}__;
1673                        }
1674                    }                    }
1675                      $ns->{$lname} = $nsuri;
1676                      delete $ns->{$lname} unless length $ns->{$lname};
1677                  }                  }
1678                  $gattr{$pfx}->{$lname} = $attrs->{$atqname};                  $gattr{$pfx}->{$lname} = $attrs->{$atqname};
1679                } else {               ## Local attribute                } else {               ## Local attribute
1680                  if ($pfx eq 'xmlns') {                  if ($pfx eq 'xmlns') {
1681                    $ns->{''} = $attrs->{xmlns}->{value};                    $ns->{''} = $attrs->{xmlns}->{is_default}
1682                    if ($attrs->{$atqname}->{def}) {                                  ? $attrs->{xmlns}->{def}-><AG::Node.nodeValue>
1683                                    : $attrs->{xmlns}->{value};
1684                      if (not $attrs->{$atqname}->{is_default} and
1685                          $attrs->{$atqname}->{def}) {
1686                      my $dt = $attrs->{$atqname}->{def}-><AG::ATDef.declaredType>;                      my $dt = $attrs->{$atqname}->{def}-><AG::ATDef.declaredType>;
1687                      if ({                      if ({
1688                        <C::ATDef.ID_ATTR> => true,                        <C::ATDef.ID_ATTR> => true,
# Line 1085  _ Line 1703  _
1703                        }                        }
1704                      }                      }
1705                    }                    }
1706                    delete $ns->{''} unless length $ns->{''};                    unless ($ns->{''}) {
1707                        delete $ns->{''};
1708                      } elsif ($ns->{''} eq <Q::xml:>) {
1709                        my $location;
1710                        __CODE{xp|get-location-from-token::
1711                          $token => $token,
1712                          $result => $location,
1713                        }__;
1714                        my $continue = __c|ERROR{
1715                        xp|nsc-reserved-namespace-name-xml::
1716                          c|location => {$location},
1717                          xp|token => {$token},
1718                          infoset|prefix => {null},
1719                          infoset|namespaceName => {<Q::xml:>},
1720                        }__;
1721                        unless ($continue) {
1722                          __CODE{ParseError}__;
1723                        }
1724                      } elsif ($ns->{''} eq <Q::xmlns:>) {
1725                        my $location;
1726                        __CODE{xp|get-location-from-token::
1727                          $token => $token,
1728                          $result => $location,
1729                        }__;
1730                        my $continue = __c|ERROR{
1731                        xp|nsc-reserved-namespace-name-xmlns::
1732                          c|location => {$location},
1733                          xp|token => {$token},
1734                          infoset|prefix => {null},
1735                          infoset|namespaceName => {<Q::xmlns:>},
1736                        }__;
1737                        unless ($continue) {
1738                          __CODE{ParseError}__;
1739                        }
1740                      }
1741                  } else {                  } else {
1742                    $lattr{$pfx} = $attrs->{$atqname};                    $lattr{$pfx} = $attrs->{$atqname};
1743                  }                  }
# Line 1094  _ Line 1746  _
1746                            
1747              my ($pfx, $lname) = split /:/, $type;              my ($pfx, $lname) = split /:/, $type;
1748              my $nsuri;              my $nsuri;
             ## TODO: lname is NCName?  
1749              if (defined $lname) {  ## Prefixed namespace              if (defined $lname) {  ## Prefixed namespace
               if ($pfx eq '') {  
                 ## TODO: pfx is not NCName error  
               }  
1750                if (defined $ns->{$pfx}) {                if (defined $ns->{$pfx}) {
1751                  $nsuri = $ns->{$pfx};                  $nsuri = $ns->{$pfx};
1752                } else {                } else {
1753                  ## TODO: namespace ill-formed                  my $location;
1754                    __CODE{xp|get-location-from-token::
1755                      $token => $token,
1756                      $result => $location,
1757                    }__;
1758                    my $continue = __c|ERROR{xp|nsc-prefix-declared::
1759                      c|location => {$location},
1760                      xp|token => {$token},
1761                      infoset|prefix => {$pfx},
1762                      xp|name => {$type},
1763                    }__;
1764                    unless ($continue) {
1765                      __CODE{ParseError}__;
1766                    }
1767                }                }
1768              } else {               ## Default namespace              } else {               ## Default namespace
1769                $nsuri = $ns->{''};                $nsuri = $ns->{''};
# Line 1115  _ Line 1776  _
1776                my $attr = $doc-><M::Document.createAttributeNS>                my $attr = $doc-><M::Document.createAttributeNS>
1777                                   (<Q::xmlns:>, 'xmlns');                                   (<Q::xmlns:>, 'xmlns');
1778                for (@{$attrs->{xmlns}->{nodes}}) {                for (@{$attrs->{xmlns}->{nodes}}) {
1779                  $attr-><M::Node.appendChild> ($_);                  if ($_-><AG::Node.nodeType> == <C::Node.TEXT_NODE>) {
1780                      $attr-><M::Node.manakaiAppendText>
1781                               (\($_-><AG::Node.textContent>));
1782                    } else {
1783                      $attr-><M::Node.appendChild> ($_);
1784                    }
1785                }                }
1786                if ($attrs->{xmlns}->{def}) {                if ($attrs->{xmlns}->{def}) {
1787                  __CODE{t|setAttrType::                  __CODE{t|setAttrType::
# Line 1124  _ Line 1790  _
1790                  }__;                  }__;
1791                }                }
1792                $el-><M::Element.setAttributeNodeNS> ($attr);                $el-><M::Element.setAttributeNodeNS> ($attr);
1793                  $attr-><AS::t|Attr.specified> (false)
1794                    if $attrs->{xmlns}->{is_default};
1795              }              }
1796                            
1797              for my $lname (keys %lattr) {              for my $lname (keys %lattr) {
1798                my $attr = $doc-><M::Document.createAttributeNS>                my $attr = $doc-><M::Document.createAttributeNS>
1799                                   (null, $lname);                                   (null, $lname);
1800                for (@{$lattr{$lname}->{nodes}}) {                for (@{$lattr{$lname}->{nodes}}) {
1801                  $attr-><M::Node.appendChild> ($_);                  if ($_-><AG::Node.nodeType> == <C::Node.TEXT_NODE>) {
1802                      $attr-><M::Node.manakaiAppendText>
1803                               (\($_-><AG::Node.textContent>));
1804                    } else {
1805                      $attr-><M::Node.appendChild> ($_);
1806                    }
1807                }                }
1808                if ($attrs->{$lname}->{def}) {                if ($attrs->{$lname}->{def}) {
1809                  __CODE{t|setAttrType::                  __CODE{t|setAttrType::
# Line 1139  _ Line 1812  _
1812                  }__;                  }__;
1813                }                }
1814                $el-><M::Element.setAttributeNodeNS> ($attr);                $el-><M::Element.setAttributeNodeNS> ($attr);
1815                  $attr-><AS::t|Attr.specified> (false)
1816                    if $attrs->{$lname}->{is_default};
1817              }              }
1818                            
1819              for my $pfx (keys %gattr) {              for my $pfx (keys %gattr) {
1820                for my $lname (keys %{$gattr{$pfx}}) {                LN: for my $lname (keys %{$gattr{$pfx}}) {
1821                  my $attr = $doc-><M::Document.createAttributeNS>                  my $name = $pfx.':'.$lname;
1822                                     ($ns->{$pfx}, $pfx.':'.$lname);                  unless (defined $ns->{$pfx}) {
1823                      my $location;
1824                      __CODE{xp|get-location-from-token::
1825                        $token => $token,
1826                        $result => $location,
1827                      }__;
1828                      my $continue = __c|ERROR{xp|nsc-prefix-declared::
1829                        c|location => {$location},
1830                        xp|token => {$token},
1831                        xp|name => {$name},
1832                        infoset|prefix => {$pfx},
1833                      }__;
1834                      unless ($continue) {
1835                        __CODE{ParseError}__;
1836                      }
1837                    }
1838                    my $attr = $el-><M::Element.getAttributeNodeNS>
1839                                      ($ns->{$pfx}, $lname);
1840                    if ($attr) {
1841                      my $another_name = $attr-><AG::Node.nodeName>;
1842                      if ($name ne $another_name) {
1843                        my $location;
1844                        __CODE{xp|get-location-from-token::
1845                          $token => $token,
1846                          $result => $location,
1847                        }__;
1848                        my $continue = __c|ERROR{
1849                        xp|nswf-unique-att-spec-expanded-name::
1850                          c|location => {$location},
1851                          xp|token => {$token},
1852                          xp|another-attribute-name => {$another_name},
1853                          xp|name => {$name},
1854                          infoset|namespaceName => {$ns->{$pfx}},
1855                          infoset|localName => {$lname},
1856                        }__;
1857                        unless ($continue) {
1858                          __CODE{ParseError}__;
1859                        }
1860                        unless ($attr-><AG::t|Attr.specified>) {
1861                          ## It is a default attribute
1862                          $attr = $doc-><M::Document.createAttributeNS>
1863                                          ($ns->{$pfx}, $name);
1864                        } else {
1865                          ## It is a specified attribute
1866                          next LN;
1867                        }
1868                      } else { ## There is default attribute
1869                        $attr = $doc-><M::Document.createAttributeNS>
1870                                        ($ns->{$pfx}, $name);                    
1871                      }
1872                    } else {
1873                      $attr = $doc-><M::Document.createAttributeNS>
1874                                       ($ns->{$pfx}, $name);
1875                    }
1876                  for (@{$gattr{$pfx}->{$lname}->{nodes}}) {                  for (@{$gattr{$pfx}->{$lname}->{nodes}}) {
1877                    $attr-><M::Node.appendChild> ($_);                    if ($_-><AG::Node.nodeType> == <C::Node.TEXT_NODE>) {
1878                        $attr-><M::Node.manakaiAppendText>
1879                                 (\($_-><AG::Node.textContent>));
1880                      } else {
1881                        $attr-><M::Node.appendChild> ($_);
1882                      }
1883                  }                  }
1884                  if ($attrs->{$pfx}->{$lname}->{def}) {                  if ($gattr{$pfx}->{$lname}->{def}) {
1885                    __CODE{t|setAttrType::                    __CODE{t|setAttrType::
1886                      $attr => $attr,                      $attr => $attr,
1887                      $type => {$attrs->{$pfx}->{$lname}                      $type => {$gattr{$pfx}->{$lname}
1888                                      ->{def}-><AG::ATDef.declaredType>},                                      ->{def}-><AG::ATDef.declaredType>},
1889                    }__;                    }__;
1890                  }                  }
1891                  $el-><M::Element.setAttributeNodeNS> ($attr);                  $el-><M::Element.setAttributeNodeNS> ($attr);
1892                }                  $attr-><AS::t|Attr.specified> (false)
1893                      if $gattr{$pfx}->{$lname}->{is_default};
1894                  } # PFX
1895              }              }
1896    
1897              $node-><M::Node.appendChild> ($el);                          $node-><M::Node.appendChild> ($el);            
# Line 1200  _ Line 1935  _
1935          my $is_docel;          my $is_docel;
1936                    
1937          ~ (Name) {          ~ (Name) {
1938              // No NCName & QName check (it must match to start-tag)
1939            lang:Perl ($name => $token.value) : has-error {            lang:Perl ($name => $token.value) : has-error {
1940              if ($name eq $type) {              if ($name eq $type) {
1941                $type = pop @{$types};                $type = pop @{$types};
# Line 1222  _ Line 1958  _
1958                  xp|node => {$node},                  xp|node => {$node},
1959                }__;                }__;
1960                unless ($continue) {                unless ($continue) {
1961                  __EXCEPTION{DOMLS|PARSE_ERR}__;                  __CODE{ParseError}__;
1962                }                }
               $self->{has_error} = true;  
1963              }              }
1964            }            }
1965          }          }
# Line 1247  _ Line 1982  _
1982                    xp|node => {$node},                    xp|node => {$node},
1983                  }__;                  }__;
1984                  unless ($continue) {                  unless ($continue) {
1985                    __EXCEPTION{DOMLS|PARSE_ERR}__;                    __CODE{ParseError}__;
1986                  }                  }
1987                  $node = shift @{$nodes};                  $node = shift @{$nodes};
1988                }                }
               $self->{has_error} = true;  
1989              }              }
1990            }            }
1991            return;            return;
# Line 1312  _ Line 2046  _
2046    
2047        ~ (#NONE) { }        ~ (#NONE) { }
2048      } // Element_      } // Element_
2049    
2050        /*
2051          content := [CharData]
2052                     *((element / Reference / CDSect / PI / Comment) [CharData])
2053        */
2054        rule content ($parent, $ns) {
2055          // ?lexmode ElementContent;
2056    
2057          my $doc;
2058          lang:Perl {
2059            $doc = $self->{doc};
2060          }
2061    
2062          ~* (CharData) {
2063            lang:Perl ($data => $token.value) {
2064              $parent-><M::Node.manakaiAppendText> (\($data));
2065            }
2066          } (STAGO) {
2067              &Element_ ($doc => $doc, $parent => $parent, $ns => $ns)
2068                : unshift-current-token;
2069              ~ (TAGC) {
2070                ?lexmode ElementContent;
2071              } else {
2072                ?lexmode ElementContent;
2073              }
2074            } (HCRO) {
2075              &_HexadecimalCharacterReference_ ($parent => $parent);
2076    
2077              ~ (REFC) {
2078                ?lexmode 'ElementContent';
2079              } else {
2080                ?lexmode ElementContent;
2081              }
2082            } (CRO) {
2083              &_NumericCharacterReference_ ($parent => $parent);
2084    
2085              ~ (REFC) {
2086                ?lexmode 'ElementContent';
2087              } else {
2088                ?lexmode ElementContent;
2089              }
2090            } (ERO) {
2091              &_GeneralEntityReferenceEC
2092                ($doc => $doc, $parent => $parent, $ns => $ns);
2093            } (CDO) {
2094              &_CommentDeclaration_ ($doc => $doc, $parent => $parent);
2095    
2096              ~ (MDC) {
2097                ?lexmode ElementContent;
2098              } else {
2099                ?lexmode ElementContent;
2100              }
2101            } (CDSO) {
2102              &_CDATASection_ ($doc => $doc, $parent => $parent);
2103    
2104              ~ (MSE) {
2105                ?lexmode 'ElementContent';
2106              } else {
2107                ?lexmode ElementContent;
2108              }
2109            } (PIO) {
2110              &_ProcessingInstruction_ ($doc => $doc, $parent => $parent);
2111    
2112              ~ (PIC) {
2113                ?lexmode 'ElementContent';
2114              } else {
2115                ?lexmode ElementContent;
2116              }
2117            }
2118        } // content
2119            
2120      rule AttributeSpecificationList ($doc, $attrs)      rule AttributeSpecificationList ($doc, $attrs)
2121        : standalone        : standalone
# Line 1325  _ Line 2129  _
2129                
2130        ~* (Name) {        ~* (Name) {
2131          my $atqname;          my $atqname;
2132          lang:Perl ($name => $token.value) {          lang:Perl ($name => $token.value) : has-error {
2133              __CODE{checkQName:: $name => $name}__;
2134            $atqname = $name;            $atqname = $name;
2135          }          }
2136                    
2137          my $vals;          my $vals;
2138          lang:Perl {          lang:Perl : has-error {
2139            if ($attrs->{$atqname}) {            if ($attrs->{$atqname}) {
2140              my $location;              my $location;
2141              __CODE{xp|get-location-from-token::              __CODE{xp|get-location-from-token::
# Line 1343  _ Line 2148  _
2148                xp|name => {$atqname},                xp|name => {$atqname},
2149              }__;              }__;
2150              unless ($continue) {              unless ($continue) {
2151                __EXCEPTION{DOMLS|PARSE_ERR}__;                __CODE{ParseError}__;
2152              }              }
             $self->{has_error} = true;  
2153            }            }
2154                        
2155            $vals = $attrs->{$atqname} = {            $vals = $attrs->{$atqname} = {
# Line 1470  _ Line 2274  _
2274      } // _AttributeValueSpecificationA_      } // _AttributeValueSpecificationA_
2275            
2276      /*      /*
2277          Parsing replacement text of an entity referenced in
2278          an attribute value specification.
2279        */
2280        rule AttributeValueLiteralE_ ($parent, $vals)
2281          : recursive
2282        {
2283          // ?lexmode AttributeValueLiteralE;
2284          
2285          ~* (STRING) {
2286            lang:Perl ($value => $token.value) {
2287              $value =~ s/[\x09\x0A\x0D]/ /g;
2288              $parent-><M::Node.manakaiAppendText> (\($value));
2289              $vals->{value} .= $value;
2290            }
2291          } (HCRO) {
2292            &_HexadecimalCharacterReferenceAE_
2293              ($parent => $parent, $vals => $vals);
2294    
2295            ~ (REFC) {
2296              ?lexmode AttributeValueLiteralE;
2297            } else {
2298              ?lexmode AttributeValueLiteralE;
2299            }
2300          } (CRO) {
2301            &_NumericCharacterReferenceAE_
2302              ($parent => $parent, $vals => $vals);
2303    
2304            ~ (REFC) {
2305              ?lexmode AttributeValueLiteralE;
2306            } else {
2307              ?lexmode AttributeValueLiteralE;
2308            }
2309          } (ERO) {
2310            &_GeneralEntityReferenceAE_ ($parent => $parent, $vals => $vals);
2311    
2312            ~ (REFC) {
2313              ?lexmode AttributeValueLiteralE;
2314            } else {
2315              ?lexmode AttributeValueLiteralE;
2316            }
2317          } (#INVALID == '<') {
2318            lang:Perl : has-error {
2319              my $location;
2320              __CODE{xp|get-location-from-token::
2321                $token => $token,
2322                $result => $location,
2323              }__;
2324              my $continue = __DOMCore:ERROR{xp|wf-no-lt-in-attribute-values::
2325                c|location => {$location},
2326                xp|token => {$token},
2327              }__;
2328              unless ($continue) {
2329                __CODE{ParseError}__;
2330              }
2331    
2332              $parent-><M::Node.manakaiAppendText> ('<');
2333              $vals->{value} .= '<';
2334            }
2335          }
2336          
2337          // ~ (#EOF) { }
2338        } // AttributeValueLiteralE_
2339        
2340        /*
2341        CDATA Section Content Parsing Mode        CDATA Section Content Parsing Mode
2342      */      */
2343      rule _CDATASection_ ($doc, $parent) {      rule _CDATASection_ ($doc, $parent) {
# Line 1496  _ Line 2364  _
2364        // ~ (MSE) { }        // ~ (MSE) { }
2365      } // _CDATASection_      } // _CDATASection_
2366            
2367      rule _NumericCharacterReference_ ($doc, $parent) {      rule _NumericCharacterReference_ ($parent) {
2368        ?lexmode 'NumericCharacterReference';        ?lexmode 'NumericCharacterReference';
2369                
2370        ~ (NUMBER) {        ~ (NUMBER) {
# Line 1525  _ Line 2393  _
2393                xp|parent => {$parent},                xp|parent => {$parent},
2394              }__;              }__;
2395              unless ($continue) {              unless ($continue) {
2396                __EXCEPTION{DOMLS|PARSE_ERR}__;                __CODE{ParseError}__;
2397              }              }
             $self->{has_error} = true;  
2398            }            }
2399            my $ncr = $doc-><M::Document.createTextNode> (chr $num);            $parent-><M::Node.manakaiAppendText> (chr $num);
           $parent-><M::Node.appendChild> ($ncr);  
2400          }          }
2401        }        }
2402                
# Line 1565  _ Line 2431  _
2431                xp|character-number => {$num},                xp|character-number => {$num},
2432              }__;              }__;
2433              unless ($continue) {              unless ($continue) {
2434                __EXCEPTION{DOMLS|PARSE_ERR}__;                __CODE{ParseError}__;
2435              }              }
             $self->{has_error} = true;  
2436            }            }
2437            my $ncr = $doc-><M::Document.createTextNode>            my $ncr = $doc-><M::Document.createTextNode>
2438                              (my $char = chr $num);                              (my $char = chr $num);
# Line 1579  _ Line 2444  _
2444        // ~ (REFC) { }        // ~ (REFC) { }
2445      } // _NumericCharacterReferenceV_      } // _NumericCharacterReferenceV_
2446            
2447      rule _HexadecimalCharacterReference_ ($doc, $parent) {      /*
2448          Numeric character reference in the replacement text
2449          of the entity referenced in an attribute value specification
2450        */
2451        rule _NumericCharacterReferenceAE_ ($parent, $vals)
2452        {
2453          ?lexmode NumericCharacterReference;
2454          
2455          ~ (NUMBER) {
2456            lang:Perl ($num => $token.value) : has-error {
2457              $num += 0;
2458              unless (
2459                ($self->{xml_version} eq '1.0' and
2460                  ((0x0020 <= $num and $num <= 0xD7FF) or
2461                   (0xE000 <= $num and $num <= 0xFFFD) or
2462                   (0x10000 <= $num and $num <= 0x10FFFF) or
2463                   $num == 0x9 or $num == 0xA or $num == 0xD)) or
2464                ($self->{xml_version} eq '1.1' and
2465                  ((0x0001 <= $num and $num <= 0xD7FF) or
2466                   (0xE000 <= $num and $num <= 0xFFFD) or
2467                   (0x10000 <= $num and $num <= 0x10FFFF)))
2468              ) {
2469                my $location;
2470                __CODE{xp|get-location-from-token::
2471                  $token => $token,
2472                  $result => $location,
2473                }__;
2474                my $continue = __DOMCore:ERROR{xp|wf-legal-character::
2475                  DOMCore:location => {$location},
2476                  xp|token => {$token},
2477                  xp|character-number => {$num},
2478                }__;
2479                unless ($continue) {
2480                  __CODE{ParseError}__;
2481                }
2482              }
2483              my $char = chr $num;
2484              $parent-><M::Node.manakaiAppendText> (\$char);
2485              $vals->{value} .= $char;
2486            }
2487          }
2488          
2489          // ~ (REFC) { }
2490        } // _NumericCharacterReferenceAE_
2491        
2492        rule _NumericCharacterReferenceEV_ ($vals)
2493        {
2494          ?lexmode 'NumericCharacterReference';
2495          
2496          ~ (NUMBER) {
2497            lang:Perl ($num => $token.value) : has-error {
2498              $num += 0;
2499              unless (
2500                ($self->{xml_version} eq '1.0' and
2501                  ((0x0020 <= $num and $num <= 0xD7FF) or
2502                   (0xE000 <= $num and $num <= 0xFFFD) or
2503                   (0x10000 <= $num and $num <= 0x10FFFF) or
2504                   $num == 0x9 or $num == 0xA or $num == 0xD)) or
2505                ($self->{xml_version} eq '1.1' and
2506                  ((0x0001 <= $num and $num <= 0xD7FF) or
2507                   (0xE000 <= $num and $num <= 0xFFFD) or
2508                   (0x10000 <= $num and $num <= 0x10FFFF)))
2509              ) {
2510                my $location;
2511                __CODE{xp|get-location-from-token::
2512                  $token => $token,
2513                  $result => $location,
2514                }__;
2515                my $continue = __DOMCore:ERROR{xp|wf-legal-character::
2516                  DOMCore:location => {$location},
2517                  xp|token => {$token},
2518                  xp|character-number => {$num},
2519                }__;
2520                unless ($continue) {
2521                  __CODE{ParseError}__;
2522                }
2523              }
2524              push @{$vals}, chr $num;
2525            }
2526          }
2527          
2528          // ~ (REFC) { }
2529        } // _NumericCharacterReferenceEV_
2530        
2531        rule _HexadecimalCharacterReference_ ($parent) {
2532        ?lexmode 'HexadecimalCharacterReference';        ?lexmode 'HexadecimalCharacterReference';
2533                
2534        ~ (Hex) {        ~ (Hex) {
# Line 1608  _ Line 2557  _
2557                xp|parent => {$parent},                xp|parent => {$parent},
2558              }__;              }__;
2559              unless ($continue) {              unless ($continue) {
2560                __EXCEPTION{DOMLS|PARSE_ERR}__;                __CODE{ParseError}__;
2561              }              }
             $self->{has_error} = true;  
2562            }            }
2563            my $ncr = $doc-><M::Document.createTextNode>            $parent-><M::Node.manakaiAppendText> (chr $num);
                       (chr $num);  
           $parent-><M::Node.appendChild> ($ncr);  
2564          }          }
2565        }        }
2566                
# Line 1649  _ Line 2595  _
2595                xp|character-number => {$num},                xp|character-number => {$num},
2596              }__;              }__;
2597              unless ($continue) {              unless ($continue) {
2598                __EXCEPTION{DOMLS|PARSE_ERR}__;                __CODE{ParseError}__;
2599              }              }
             $self->{has_error} = true;  
2600            }            }
2601            my $ncr = $doc-><M::Document.createTextNode>            my $ncr = $doc-><M::Document.createTextNode>
2602                        (my $char = chr $num);                        (my $char = chr $num);
# Line 1664  _ Line 2609  _
2609      } // _HexadecimalCharacterReferenceV_      } // _HexadecimalCharacterReferenceV_
2610            
2611      /*      /*
2612          Hexadecimal character reference in the replacement text
2613          of the entity referenced in an attribute value literal
2614        */
2615        rule _HexadecimalCharacterReferenceAE_ ($parent, $vals)
2616        {
2617          ?lexmode HexadecimalCharacterReference;
2618          
2619          ~ (Hex) {
2620            lang:Perl ($v => $token.value) : has-error {
2621              my $num = hex $v;
2622              unless (
2623                ($self->{xml_version} eq '1.0' and
2624                  ((0x0020 <= $num and $num <= 0xD7FF) or
2625                   (0xE000 <= $num and $num <= 0xFFFD) or
2626                   (0x10000 <= $num and $num <= 0x10FFFF) or
2627                   $num == 0x9 or $num == 0xA or $num == 0xD)) or
2628                ($self->{xml_version} eq '1.1' and
2629                  ((0x0001 <= $num and $num <= 0xD7FF) or
2630                   (0xE000 <= $num and $num <= 0xFFFD) or
2631                   (0x10000 <= $num and $num <= 0x10FFFF)))
2632              ) {
2633                my $location;
2634                __CODE{xp|get-location-from-token::
2635                  $token => $token,
2636                  $result => $location,
2637                }__;
2638                my $continue = __DOMCore:ERROR{xp|wf-legal-character::
2639                  DOMCore:location => {$location},
2640                  xp|token => {$token},
2641                  xp|character-number => {$num},
2642                }__;
2643                unless ($continue) {
2644                  __CODE{ParseError}__;
2645                }
2646              }
2647              my $char = chr $num;
2648              $parent-><M::Node.manakaiAppendText> (\$char);
2649              $vals->{value} .= $char;
2650            }
2651          }
2652          
2653          // ~ (REFC) { }
2654        } // _HexadecimalCharacterReferenceAE_
2655        
2656        rule _HexadecimalCharacterReferenceEV_ ($vals) {
2657          ?lexmode HexadecimalCharacterReference;
2658          
2659          ~ (Hex) {
2660            lang:Perl ($v => $token.value) : has-error {
2661              my $num = hex $v;
2662              unless (
2663                ($self->{xml_version} eq '1.0' and
2664                  ((0x0020 <= $num and $num <= 0xD7FF) or
2665                   (0xE000 <= $num and $num <= 0xFFFD) or
2666                   (0x10000 <= $num and $num <= 0x10FFFF) or
2667                   $num == 0x9 or $num == 0xA or $num == 0xD)) or
2668                ($self->{xml_version} eq '1.1' and
2669                  ((0x0001 <= $num and $num <= 0xD7FF) or
2670                   (0xE000 <= $num and $num <= 0xFFFD) or
2671                   (0x10000 <= $num and $num <= 0x10FFFF)))
2672              ) {
2673                my $location;
2674                __CODE{xp|get-location-from-token::
2675                  $token => $token,
2676                  $result => $location,
2677                }__;
2678                my $continue = __DOMCore:ERROR{xp|wf-legal-character::
2679                  DOMCore:location => {$location},
2680                  xp|token => {$token},
2681                  xp|character-number => {$num},
2682                }__;
2683                unless ($continue) {
2684                  __CODE{ParseError}__;
2685                }
2686              }
2687              push @{$vals}, chr $num;
2688            }
2689          }
2690          
2691          // ~ (REFC) { }
2692        } // _HexadecimalCharacterReferenceEV_
2693        
2694        /*
2695        General entity reference in element's content        General entity reference in element's content
2696      */      */
2697      rule _GeneralEntityReferenceEC ($doc, $parent, $ns)      rule _GeneralEntityReferenceEC ($doc, $parent, $ns)
# Line 1671  _ Line 2699  _
2699      {      {
2700        ?lexmode 'EntityReference';        ?lexmode 'EntityReference';
2701                
2702        ~ (Name) {        ~ (Name == 'lt') {
2703            lang:Perl {
2704              $parent-><M::Node.manakaiAppendText> ('<');
2705            }
2706          } (Name == 'gt') {
2707            lang:Perl {
2708              $parent-><M::Node.manakaiAppendText> ('>');
2709            }
2710          } (Name == 'amp') {
2711            lang:Perl {
2712              $parent-><M::Node.manakaiAppendText> ('&');
2713            }
2714          } (Name == 'quot') {
2715            lang:Perl {
2716              $parent-><M::Node.manakaiAppendText> ('"');
2717            }
2718          } (Name == 'apos') {
2719            lang:Perl {
2720              $parent-><M::Node.manakaiAppendText> ("'");
2721            }
2722          } (Name) {
2723          my $er;          my $er;
2724          lang:Perl ($name => $token.value) {          lang:Perl ($name => $token.value) : has-error {
2725            ## TODO: Namespace well-formedness            __CODE{checkNCName:: $name => $name}__;
2726            ## TODO: Entity declared constraints            
2727            $er = $doc-><M::Document.createEntityReference>            $er = $doc-><M::Document.createEntityReference>
2728                             ($name);                             ($name);
2729              $er-><AS::Node.textContent> ('');
2730                ## NOTE: When document entity (and entities referenced directly
2731                ##       or indirectly from it) is parsed, no general entity
2732                ##       node have its replacement tree.  During general
2733                ##       entity node collection construction, however,
2734                ##       some entity node has replacement tree.
2735            $parent-><M::Node.appendChild> ($er);            $parent-><M::Node.appendChild> ($er);
2736            push @{$self->{entity}}, <Code::getCopyOfEntityState::  
2737              my $ent = $self->{general_entity}->{$name};
2738              if (not $ent) {  # no entity declaration
2739                if ($self->{standalone} or not $self->{has_xref}) { # WFC error
2740                  my $location;
2741                  __CODE{xp|get-location-from-token::
2742                    $token => {$token},
2743                    $result => {$location},
2744                  }__;
2745                  my $continue = __DOMCore:ERROR{xp|wf-entity-declared::
2746                    xp|error-token => {$token},
2747                    c|location => {$location},
2748                    xp|name => {$name},
2749                  }__;
2750                  unless ($continue) {
2751                    __CODE{ParseError}__;
2752                  }
2753                }                 # Otherwise VC error
2754                push @{$self->{entity}}, <Code::getEmptyEntityState::
2755                                                  $name = $name>;
2756                $er-><AS::x|EntityReference.manakaiExpanded> (false);
2757    
2758              } else {         # there IS entity declaration
2759                if (($self->{standalone} or not $self->{has_xref}) and
2760                    $ent->{is_externally_declared} and
2761                    not $self->{entity}->[-1]->{is_externally_declared}) {
2762                  my $location;
2763                  __CODE{xp|get-location-from-token::
2764                    $token => {$token},
2765                    $result => {$location},
2766                  }__;
2767                  my $continue = __DOMCore:ERROR{xp|wf-entity-declared::
2768                    xp|error-token => {$token},
2769                    c|location => {$location},
2770                    xp|name => {$name},
2771                  }__;
2772                  unless ($continue) {
2773                    __CODE{ParseError}__;
2774                  }
2775                }          
2776                $er-><AS::x|EntityReference.manakaiExpanded>
2777                       ($ent->{has_replacement_text});
2778                push @{$self->{entity}}, <Code::getCopyOfEntityState::
2779                                              $entity_type = 'general_entity',                                              $entity_type = 'general_entity',
2780                                              $entity_name = $name>;                                              $entity_name = $name>;
2781    
2782                if (defined $ent->{notation}) {
2783                  my $location;
2784                  __CODE{xp|get-location-from-token::
2785                    $token => {$token},
2786                    $result => {$location},
2787                  }__;
2788                  my $continue = __c|ERROR{xp|wf-parsed-entity::
2789                    xp|error-token => {$token},
2790                    c|location => {$location},
2791                    xp|name => {$name},
2792                  }__;
2793                  unless ($continue) {  
2794                    __CODE{ParseError}__;
2795                  }
2796                } # if unparsed entity
2797                
2798                if ($ent->{is_opened}) {
2799                  my $location;
2800                  __CODE{xp|get-location-from-token::
2801                    $token => {$token},
2802                    $result => {$location},
2803                  }__;
2804                  my $continue = __c|ERROR{xp|wf-no-recursion::
2805                    xp|error-token => {$token},
2806                    c|location => {$location},
2807                    xp|name => {$name},
2808                  }__;
2809                  unless ($continue) {  
2810                    __CODE{ParseError}__;
2811                  }
2812                  open my $empty, '<', \'';
2813                  $self->{entity}->[-1]->{fh} = $empty;
2814                  $er-><AS::x|EntityReference.manakaiExpanded> (false);
2815                } # recursive
2816                $ent->{is_opened} = true;
2817              } # entity declared
2818              $self->{location} = $self->{entity}->[-1];
2819            push @{$self->{entity_token}}, $self->{token};            push @{$self->{entity_token}}, $self->{token};
2820            $self->{token} = [];            $self->{token} = [];
2821            push @{$self->{entity_char}}, $self->{char};            push @{$self->{entity_char}}, $self->{char};
# Line 1689  _ Line 2823  _
2823          }          }
2824    
2825          ?lexmode ElementContent;          ?lexmode ElementContent;
2826          ~* (CharData) {          &content ($doc => $doc, $parent => $er, $ns => $ns);
           lang:Perl ($data => $token.value) {  
             $er-><M::Node.appendChild>  
               ($doc-><M::Document.createTextNode> ($data));  
           }  
         } (STAGO) {  
           &Element_ ($doc => $doc, $parent => $er, $ns => $ns)  
             : unshift-current-token;  
           ~ (TAGC) {  
             ?lexmode ElementContent;  
           } else {  
             ?lexmode ElementContent;  
           }  
         } (HCRO) {  
           &_HexadecimalCharacterReference_  
             ($doc => $doc, $parent => $er);  
   
           ~ (REFC) {  
             ?lexmode 'ElementContent';  
           } else {  
             ?lexmode ElementContent;  
           }  
         } (CRO) {  
           &_NumericCharacterReference_  
             ($doc => $doc, $parent => $er);  
   
           ~ (REFC) {  
             ?lexmode 'ElementContent';  
           } else {  
             ?lexmode ElementContent;  
           }  
         } (ERO) {  
           &_GeneralEntityReferenceEC  
             ($doc => $doc, $parent => $er, $ns => $ns);  
         } (CDO) {  
           &_CommentDeclaration_ ($doc => $doc, $parent => $er);  
   
           ~ (MDC) {  
             ?lexmode ElementContent;  
           } else {  
             ?lexmode ElementContent;  
           }  
         } (CDSO) {  
           &_CDATASection_ ($doc => $doc, $parent => $er);  
   
           ~ (MSE) {  
             ?lexmode 'ElementContent';  
           } else {  
             ?lexmode ElementContent;  
           }  
         } (PIO) {  
           &_ProcessingInstruction_ ($doc => $doc, $parent => $er);  
   
           ~ (PIC) {  
             ?lexmode 'ElementContent';  
           } else {  
             ?lexmode ElementContent;  
           }  
         }  
   
2827          ~ (#EOF) { }          ~ (#EOF) { }
2828          lang:Perl {          lang:Perl {
2829              $self->{general_entity}->{$self->{entity}->[-1]->{name}}
2830                   ->{is_opened} = false
2831                if $self->{general_entity}->{$self->{entity}->[-1]->{name}};
2832            $self->{token} = pop @{$self->{entity_token}};            $self->{token} = pop @{$self->{entity_token}};
2833            $self->{char} = pop @{$self->{entity_char}};            $self->{char} = pop @{$self->{entity_char}};
2834            pop @{$self->{entity}};            pop (@{$self->{entity}})->{close_file}->();
2835              $self->{location} = $self->{entity}->[-1];
2836          }          }
2837    
2838            // TODO: Set read-only flag
2839    
2840          ?lexmode EntityReference;          ?lexmode EntityReference;
2841          ?requires-next-token;          ?requires-next-token;
2842        }        }
# Line 1767  _ Line 2848  _
2848        }        }
2849      } // _GeneralEntityReferenceEC      } // _GeneralEntityReferenceEC
2850            
2851      rule _GeneralEntityReferenceV_ ($doc, $vals) {      /*
2852        // TODO: Expansion        General entity reference in an attribute value literal
2853        ?lexmode 'EntityReference';      */
2854        rule _GeneralEntityReferenceV_ ($vals) {
2855          ?lexmode EntityReference;
2856                
2857        ~ (Name) {        ~ (Name == 'lt') {
2858          lang:Perl ($name => $token.value) {          lang:Perl {
2859            ## TODO: Namespace well-formedness            push @{$vals->{nodes}}, $self->{doc}-><M::Document.createTextNode>
2860            ## TODO: Entity declared constraints                                                    ('<');
2861            my $er = $doc-><M::Document.createEntityReference>            $vals->{value} .= '<';
2862                             ($name);          }
2863          } (Name == 'gt') {
2864            lang:Perl {
2865              push @{$vals->{nodes}}, $self->{doc}-><M::Document.createTextNode>
2866                                                      ('>');
2867              $vals->{value} .= '>';
2868            }
2869          } (Name == 'amp') {
2870            lang:Perl {
2871              push @{$vals->{nodes}}, $self->{doc}-><M::Document.createTextNode>
2872                                                      ('&');
2873              $vals->{value} .= '&';
2874            }
2875          } (Name == 'quot') {
2876            lang:Perl {
2877              push @{$vals->{nodes}}, $self->{doc}-><M::Document.createTextNode>
2878                                                      ('"');
2879              $vals->{value} .= '"';
2880            }
2881          } (Name == 'apos') {
2882            lang:Perl {
2883              push @{$vals->{nodes}}, $self->{doc}-><M::Document.createTextNode>
2884                                                      ("'");
2885              $vals->{value} .= "'";
2886            }
2887          } (Name) {
2888            my $er;
2889            lang:Perl ($name => $token.value) : has-error {
2890              __CODE{checkNCName:: $name => $name}__;
2891              
2892              $er = $self->{doc}-><M::Document.createEntityReference> ($name);
2893              $er-><AS::Node.textContent> ('');
2894                ## NOTE: When document entity (and entities referenced directly
2895                ##       or indirectly from it) is parsed, no general entity
2896                ##       node have its replacement tree.  During general
2897                ##       entity node collection construction, however,
2898                ##       some entity node has replacement tree.
2899              my $ent = $self->{general_entity}->{$name};
2900              if (not $ent) {  # no entity declaration
2901                if ($self->{standalone} or not $self->{has_xref}) { # WFC error
2902                  my $location;
2903                  __CODE{xp|get-location-from-token::
2904                    $token => {$token},
2905                    $result => {$location},
2906                  }__;
2907                  my $continue = __DOMCore:ERROR{xp|wf-entity-declared::
2908                    xp|error-token => {$token},
2909                    c|location => {$location},
2910                    xp|name => {$name},
2911                  }__;
2912                  unless ($continue) {
2913                    __CODE{ParseError}__;
2914                  }
2915                }                 # Otherwise VC error
2916                push @{$self->{entity}}, <Code::getEmptyEntityState::
2917                                                  $name = $name>;
2918                $er-><AS::x|EntityReference.manakaiExpanded> (false);
2919    
2920              } else {         # there IS entity declaration
2921                if (($self->{standalone} or not $self->{has_xref}) and
2922                    $ent->{is_externally_declared} and
2923                    not $self->{entity}->[-1]->{is_externally_declared}) {
2924                  my $location;
2925                  __CODE{xp|get-location-from-token::
2926                    $token => {$token},
2927                    $result => {$location},
2928                  }__;
2929                  my $continue = __DOMCore:ERROR{xp|wf-entity-declared::
2930                    xp|error-token => {$token},
2931                    c|location => {$location},
2932                    xp|name => {$name},
2933                  }__;
2934                  unless ($continue) {
2935                    __CODE{ParseError}__;
2936                  }
2937                }          
2938    
2939                if ($ent->{is_external_entity}) {
2940                  my $location;
2941                  __CODE{xp|get-location-from-token::
2942                    $token => {$token},
2943                    $result => {$location},
2944                  }__;
2945                  my $continue = __c|ERROR{xp|wf-no-external-entity-references::
2946                    xp|error-token => {$token},
2947                    c|location => {$location},
2948                    xp|name => {$name},
2949                  }__;
2950                  unless ($continue) {  
2951                    __CODE{ParseError}__;
2952                  }
2953                  ## NOTE: |xp:wf-parsed-entity| is not checked
2954                } # if external entity
2955    
2956                $er-><AS::x|EntityReference.manakaiExpanded>
2957                       ($ent->{has_replacement_text});
2958                push @{$self->{entity}}, <Code::getCopyOfEntityState::
2959                                                $entity_type = 'general_entity',
2960                                                $entity_name = $name>;
2961                
2962                if ($ent->{is_opened}) {
2963                  my $location;
2964                  __CODE{xp|get-location-from-token::
2965                    $token => {$token},
2966                    $result => {$location},
2967                  }__;
2968                  my $continue = __c|ERROR{xp|wf-no-recursion::
2969                    xp|error-token => {$token},
2970                    c|location => {$location},
2971                    xp|name => {$name},
2972                  }__;
2973                  unless ($continue) {  
2974                    __CODE{ParseError}__;
2975                  }
2976                  open my $empty, '<', \'';
2977                  $self->{entity}->[-1]->{fh} = $empty;
2978                  $er-><AS::x|EntityReference.manakaiExpanded> (false);
2979                } # recursive
2980                $ent->{is_opened} = true;
2981              }
2982            push @{$vals->{nodes}}, $er;            push @{$vals->{nodes}}, $er;
2983              $self->{location} = $self->{entity}->[-1];
2984              push @{$self->{entity_token}}, $self->{token};
2985              $self->{token} = [];
2986              push @{$self->{entity_char}}, $self->{char};
2987              $self->{char} = [];
2988            }
2989    
2990            ?lexmode AttributeValueLiteralE;
2991            &AttributeValueLiteralE_ ($parent => $er, $vals => $vals);      
2992            ~ (#EOF) { }
2993            lang:Perl {
2994              $self->{general_entity}->{$self->{entity}->[-1]->{name}}
2995                   ->{is_opened} = false
2996                if $self->{general_entity}->{$self->{entity}->[-1]->{name}};
2997              $self->{token} = pop @{$self->{entity_token}};
2998              $self->{char} = pop @{$self->{entity_char}};
2999              pop (@{$self->{entity}})->{close_file}->();
3000              $self->{location} = $self->{entity}->[-1];
3001          }          }
3002    
3003            // TODO: Set read-only flag
3004    
3005            ?lexmode EntityReference;
3006            ?requires-next-token;
3007        }        }
3008                
3009        // ~ (REFC) { }        // ~ (REFC) { }
3010      } // _GeneralEntityReferenceV_      } // _GeneralEntityReferenceV_
3011            
3012      /*      /*
3013        General entity reference in literal entity value        General entity reference in the replacement text
3014          of the entity referenced in an attribute value literal
3015        */
3016        rule _GeneralEntityReferenceAE_ ($parent, $vals)
3017        {
3018          ?lexmode EntityReference;
3019          
3020          ~ (Name == 'lt') {
3021            lang:Perl {
3022              $parent-><M::Node.manakaiAppendText> ('<');
3023              $vals->{value} .= '<';
3024            }
3025          } (Name == 'gt') {
3026            lang:Perl {
3027              $parent-><M::Node.manakaiAppendText> ('>');
3028              $vals->{value} .= '>';
3029            }
3030          } (Name == 'amp') {
3031            lang:Perl {
3032              $parent-><M::Node.manakaiAppendText> ('&');
3033              $vals->{value} .= '&';
3034            }
3035          } (Name == 'quot') {
3036            lang:Perl {
3037              $parent-><M::Node.manakaiAppendText> ('"');
3038              $vals->{value} .= '"';
3039            }
3040          } (Name == 'apos') {
3041            lang:Perl {
3042              $parent-><M::Node.manakaiAppendText> ("'");
3043              $vals->{value} .= "'";
3044            }
3045          } (Name) {
3046            my $er;
3047            lang:Perl ($name => $token.value) : has-error {
3048              __CODE{checkNCName:: $name => $name}__;
3049    
3050              $er = $self->{doc}-><M::Document.createEntityReference> ($name);
3051              $er-><AS::Node.textContent> ('');
3052                ## NOTE: When document entity (and entities referenced directly
3053                ##       or indirectly from it) is parsed, no general entity
3054                ##       node have its replacement tree.  During general
3055                ##       entity node collection construction, however,
3056                ##       some entity node has replacement tree.
3057              my $ent = $self->{general_entity}->{$name};
3058              if (not $ent) {  # no entity declaration
3059                if ($self->{standalone} or not $self->{has_xref}) { # WFC error
3060                  my $location;
3061                  __CODE{xp|get-location-from-token::
3062                    $token => {$token},
3063                    $result => {$location},
3064                  }__;
3065                  my $continue = __DOMCore:ERROR{xp|wf-entity-declared::
3066                    xp|error-token => {$token},
3067                    c|location => {$location},
3068                    xp|name => {$name},
3069                  }__;
3070                  unless ($continue) {
3071                    __CODE{ParseError}__;
3072                  }
3073                }                 # Otherwise VC error
3074                push @{$self->{entity}}, <Code::getEmptyEntityState::
3075                                                  $name = $name>;
3076                $er-><AS::x|EntityReference.manakaiExpanded> (false);
3077    
3078              } else {         # there IS entity declaration
3079                if (($self->{standalone} or not $self->{has_xref}) and
3080                    $ent->{is_externally_declared} and
3081                    not $self->{entity}->[-1]->{is_externally_declared}) {
3082                  my $location;
3083                  __CODE{xp|get-location-from-token::
3084                    $token => {$token},
3085                    $result => {$location},
3086                  }__;
3087                  my $continue = __DOMCore:ERROR{xp|wf-entity-declared::
3088                    xp|error-token => {$token},
3089                    c|location => {$location},
3090                    xp|name => {$name},
3091                  }__;
3092                  unless ($continue) {
3093                    __CODE{ParseError}__;
3094                  }
3095                }          
3096    
3097                if ($ent->{is_external_entity}) {
3098                  my $location;
3099                  __CODE{xp|get-location-from-token::
3100                    $token => {$token},
3101                    $result => {$location},
3102                  }__;
3103                  my $continue = __c|ERROR{xp|wf-no-external-entity-references::
3104                    xp|error-token => {$token},
3105                    c|location => {$location},
3106                    xp|name => {$name},
3107                  }__;
3108                  unless ($continue) {  
3109                    __CODE{ParseError}__;
3110                  }
3111                  ## NOTE: |xp:wf-parsed-entity| is not checked
3112                } # if external entity
3113    
3114                $er-><AS::x|EntityReference.manakaiExpanded>
3115                       ($ent->{has_replacement_text});
3116                push @{$self->{entity}}, <Code::getCopyOfEntityState::
3117                                                $entity_type = 'general_entity',
3118                                                $entity_name = $name>;
3119                
3120                if ($ent->{is_opened}) {
3121                  my $location;
3122                  __CODE{xp|get-location-from-token::
3123                    $token => {$token},
3124                    $result => {$location},
3125                  }__;
3126                  my $continue = __c|ERROR{xp|wf-no-recursion::
3127                    xp|error-token => {$token},
3128                    c|location => {$location},
3129                    xp|name => {$name},
3130                  }__;
3131                  unless ($continue) {  
3132                    __CODE{ParseError}__;
3133                  }
3134                  open my $empty, '<', \'';
3135                  $self->{entity}->[-1]->{fh} = $empty;
3136                  $er-><AS::x|EntityReference.manakaiExpanded> (false);
3137                } # recursive
3138                $ent->{is_opened} = true;
3139              }
3140              $parent-><M::Node.appendChild> ($er);
3141              $self->{location} = $self->{entity}->[-1];
3142              push @{$self->{entity_token}}, $self->{token};
3143              $self->{token} = [];
3144              push @{$self->{entity_char}}, $self->{char};
3145              $self->{char} = [];
3146            }
3147    
3148            ?lexmode AttributeValueLiteralE;
3149            &AttributeValueLiteralE_ ($parent => $er, $vals => $vals);      
3150            ~ (#EOF) { }
3151            lang:Perl {
3152              $self->{general_entity}->{$self->{entity}->[-1]->{name}}
3153                   ->{is_opened} = false
3154                if $self->{general_entity}->{$self->{entity}->[-1]->{name}};
3155              $self->{token} = pop @{$self->{entity_token}};
3156              $self->{char} = pop @{$self->{entity_char}};
3157              pop (@{$self->{entity}})->{close_file}->();
3158              $self->{location} = $self->{entity}->[-1];
3159            }
3160    
3161            // TODO: Set read-only flag
3162    
3163            ?lexmode EntityReference;
3164            ?requires-next-token;
3165          }
3166          
3167          // ~ (REFC) { }
3168        } // _GeneralEntityReferenceAE_
3169        
3170        /*
3171          General Entity Reference in Literal Entity Value in Entity Declaration
3172      */      */
3173      rule _GeneralEntityReferenceEV_ ($doc, $vals) {      rule _GeneralEntityReferenceEV_ ($vals) {
3174        ?lexmode 'EntityReference';        ?lexmode 'EntityReference';
3175                
3176        ~ (Name) {        ~ (Name) {
3177          lang:Perl ($name => $token.value) {          lang:Perl ($name => $token.value) {
3178            ## TODO: Namespace well-formedness            __CODE{checkNCName:: $name => $name}__;
           ## TODO: Entity declared constraints  
3179            push @$vals, $name;            push @$vals, $name;
3180          }          }
3181            /*
3182              WFCs such as Entity Declared are not checked
3183              <http://www.w3.org/TR/xml11/#bypass>
3184    
3185              Note that violation to the Parsed Entity WFC is an error
3186              rather than fatal error here.
3187            */
3188        }        }
3189    
3190          // No expansion
3191                
3192        // ~ (REFC) { }        // ~ (REFC) { }
3193      } // _GeneralEntityReferenceEV_      } // _GeneralEntityReferenceEV_
# Line 1811  _ Line 3202  _
3202                
3203        ~ (S) { }        ~ (S) { }
3204                
       my $node;  
3205        // Document type name        // Document type name
3206        my $name;        my $name;
3207        ~ (Name) {        ~ (Name) {
3208          lang:Perl ($v => $token.value) {          lang:Perl ($v => $token.value) {
3209              __CODE{checkQName:: $name => $v}__;
3210            $name = $v;            $name = $v;
3211          }          }
3212        }        }
3213    
3214          my $node;
3215          my $decl;
3216        lang:Perl {        lang:Perl {
3217          $node = $doc-><M::DocumentXDoctype.createDocumentTypeDefinition> ($name);          $self->{docx} = $self->{doc}
3218          $doc-><M::Node.appendChild> ($node);                               -><M::Node.getFeature> (<Q::fe:XDoctype>, '3.0');
3219          $doc-><AG::Document.domConfig>          $node = $self->{docx}-><M::DocumentXDoctype.createDocumentTypeDefinition>
3220              -><M::c|DOMConfiguration.setParameter>                                   ($name);
3221                  ('schema-type' => <Q::xml-dtd:>);          $decl = $self->{dtdecl} = $node-><M::Node.getFeature>
3222                                               (<Q::fe:XDoctypeDeclaration>, '3.0');
3223        }        }
3224    
3225          my $has_extid;
3226        ~? (S) {        ~? (S) {
3227          ~? (Name == 'PUBLIC') {          ~? (Name == 'PUBLIC') {
3228            ~ (S) { }            ~ (S) { }
3229        
3230            &PubidLiteral ($doc => $doc);            &PubidLiteral ($decl => $decl);
3231        
3232            ~ (S) { }            ~ (S) { }
3233        
3234            &SystemLiteral ($doc => $doc);            &SystemLiteral ($decl => $decl);
3235        
3236            ~? (S) { }            ~? (S) { }
3237    
3238              lang:Perl {
3239                $self->{has_xref} = true;
3240                $has_extid = true;
3241              }
3242          } (Name == 'SYSTEM') {          } (Name == 'SYSTEM') {
3243            ~ (S) { }            ~ (S) { }
3244        
3245            &SystemLiteral ($doc => $doc);            &SystemLiteral ($decl => $decl);
3246        
3247            ~? (S) { }            ~? (S) { }
3248    
3249              lang:Perl {
3250                $self->{has_xref} = true;
3251                $has_extid = true;
3252              }
3253          }          }
3254        }        }
3255    
3256          lang:Perl {
3257            $self->{dtdef} = $node;
3258            $self->{doc}-><M::Node.appendChild> ($node);
3259            $self->{doc_cfg}-><M::c|DOMConfiguration.setParameter>
3260                                ('schema-type' => <Q::xml-dtd:>);
3261            ## ISSUE: Should default schema language information be
3262            ##        preserved by some other flag?
3263          }
3264                
3265        ~? (DSO) {        ~? (DSO) {
3266          &InternalSubset ($doc => $doc, $doctype => $node);          &InternalSubset ($doc => $doc, $doctype => $node);
# Line 1858  _ Line 3273  _
3273    
3274          ~? (S) { }          ~? (S) { }
3275        }        }
3276          
3277        // TODO: set $self->{standalone} true if only internal subset        // TODO: Read and process external subset if any.
3278        //       with no param ref        lang:Perl {
3279            $self->{dont_process} = true if $has_extid;
3280          }
3281    
3282        // ~ (MDC) { }        // ~ (MDC) { }
3283      } // _DocumentTypeDeclaration_      } // _DocumentTypeDeclaration_
3284    
3285      rule PubidLiteral ($doc) {      /*
3286          Public Identifier Literal
3287        */
3288        rule PubidLiteral ($decl) {
3289          my $pubid;
3290          my $pubid_token;
3291        ~ (LIT) {        ~ (LIT) {
3292          ?lexmode SystemLiteral;          ?lexmode SystemLiteral;
3293    
3294          ~? (STRING) {          ~? (STRING) {
3295            // TODO: Charrange check & normalization is required            lang:Perl ($v => $token.value) {
3296                $pubid = $v;
3297                $pubid_token = $token;
3298              }
3299          }          }
3300    
3301          ~ (LIT) {          ~ (LIT) {
# Line 1883  _ Line 3307  _
3307          ?lexmode SystemLiteralA;          ?lexmode SystemLiteralA;
3308    
3309          ~? (STRING) {          ~? (STRING) {
3310            // TODO: Charrange check & normalization is required            lang:Perl ($v => $token.value) {
3311                $pubid = $v;
3312                $pubid_token = $token;
3313              }
3314          }          }
3315    
3316          ~ (LITA) {          ~ (LITA) {
# Line 1893  _ Line 3319  _
3319            ?lexmode MarkupDeclaration;            ?lexmode MarkupDeclaration;
3320          }          }
3321        }        }
3322    
3323          if-true ($pubid_token) {
3324            lang:Perl : has-error {
3325              if ($pubid =~ m{[^\x20\x0D\x0Aa-zA-Z0-9'()+,./:=?;!*#\@\$_%-]}s) {
3326                my $location;
3327                __CODE{xp|get-location-from-token::
3328                  $token => {$pubid_token},
3329                  $result => {$location},
3330                }__;
3331                                      ## Should this be other (new) error type?
3332                my $continue = __DOMCore:ERROR{xp|wf-syntax-error::
3333                  xp|error-token => {$token},
3334                  c|location => {$location},
3335                }__;
3336                unless ($continue) {
3337                  __CODE{ParseError}__;
3338                }
3339              }
3340    
3341              ## NOTE: U+0009 is syntactically illegal.
3342              $pubid =~ s/[\x09\x0A\x0D\x20]+/\x20/gs;
3343              $pubid =~ s/\A\x20//s;
3344              $pubid =~ s/\x20\z//s;
3345                     ## NOTE: Bare attribute name is written.
3346              $decl->public_id ($pubid);
3347            }
3348          }
3349      } // PubidLiteral      } // PubidLiteral
3350    
3351      rule SystemLiteral ($doc) {      /*
3352          System Identifier Literal
3353        */
3354        rule SystemLiteral ($decl) {
3355        ~ (LIT) {        ~ (LIT) {
3356          ?lexmode SystemLiteral;          ?lexmode SystemLiteral;
3357          &_SystemLiteral ($doc => $doc);          &_SystemLiteral ($decl => $decl);
3358        } (LITA) {        } (LITA) {
3359          ?lexmode SystemLiteralA;          ?lexmode SystemLiteralA;
3360          &_SystemLiteral ($doc => $doc);          &_SystemLiteral ($decl => $decl);
3361        }        }
3362      } // SystemLiteral      } // SystemLiteral
3363    
3364      rule _SystemLiteral ($doc) {      /*
3365        ~? (STRING) {        System Identifier Literal Content
3366    
3367            Used in document type declaration, entity declaration,
3368            and notation declaration.
3369        */
3370        rule _SystemLiteral ($decl) {
3371          // LIT or LITA
3372    
3373          ~? (STRING) {
3374            lang:Perl ($v => $token.value) {
3375              $decl-><AS::x|Entity.systemId> ($v);
3376              $decl-><AS::x|Entity.manakaiDeclarationBaseURI>
3377                       ($self->{location}->{base_uri});
3378            }
3379        }        }
3380    
3381        ~ (LIT) {        ~ (LIT) {
# Line 1948  _ Line 3416  _
3416        } (PERO) {        } (PERO) {
3417          ?lexmode EntityReference;          ?lexmode EntityReference;
3418    
3419            lang:Perl {
3420              $self->{has_xref} = true;
3421              $self->{dont_process} = true;
3422            }
3423    
3424          ~ (Name) {          ~ (Name) {
3425              // TODO:             __CODE{checkNCName:: $name => $name}__;
3426    
3427          }          }
3428    
# Line 1968  _ Line 3442  _
3442        ~ (S) { }        ~ (S) { }
3443    
3444        ~ (Name) {        ~ (Name) {
3445            // TODO:             __CODE{checkQName:: $name => $name}__;
3446    
3447        }        }
3448    
# Line 2031  _ Line 3506  _
3506            ~? (S) { }            ~? (S) { }
3507    
3508            ~ (Name) {            ~ (Name) {
3509                // TODO: Name & QName check
3510    
3511            }            }
3512    
# Line 2097  _ Line 3573  _
3573            
3574      rule ContentParticle ($doc) {      rule ContentParticle ($doc) {
3575        ~ (Name) {        ~ (Name) {
3576            // TODO: Name & QName check
3577    
3578        } (MGO) {        } (MGO) {
3579          ~? (S) { }          ~? (S) { }
# Line 2127  _ Line 3604  _
3604        my $name;        my $name;
3605        ~ (Name) {        ~ (Name) {
3606          lang:Perl ($v => $token.value) {          lang:Perl ($v => $token.value) {
3607              __CODE{checkQName:: $name => $v}__;
3608            $name = $v;            $name = $v;
3609          }          }
3610        } else {        } else {
# Line 2138  _ Line 3616  _
3616        lang:Perl {        lang:Perl {
3617          $et = $doctype-><M::DTDef.getElementTypeDefinitionNode> ($name);          $et = $doctype-><M::DTDef.getElementTypeDefinitionNode> ($name);
3618          unless ($et) {          unless ($et) {
3619            $docxd = $doc-><M::Node.getFeature> (<Q::ManakaiDOM:XDoctype>, '3.0');            $docxd = $doc-><M::Node.getFeature> (<Q::fe:XDoctype>, '3.0');
3620            $et = $docxd-><M::DocumentXDoctype.createElementTypeDefinition>            $et = $docxd-><M::DocumentXDoctype.createElementTypeDefinition>
3621                            ($name);                            ($name);
3622            $doctype-><M::DTDef.setElementTypeDefinitionNode> ($et)            $doctype-><M::DTDef.setElementTypeDefinitionNode> ($et)
# Line 2150  _ Line 3628  _
3628    
3629        ~* (Name) {        ~* (Name) {
3630          my $at;          my $at;
3631          lang:Perl ($v => $token.value) {          lang:Perl ($v => $token.value) : has-error {
3632              __CODE{checkQName:: $name => $v}__;
3633            $docxd ||= $doc-><M::Node.getFeature>            $docxd ||= $doc-><M::Node.getFeature>
3634                               (<Q::ManakaiDOM:XDoctype>, '3.0');                               (<Q::fe:XDoctype>, '3.0');
3635            $at = $docxd-><M::DocumentXDoctype.createAttributeDefinition> ($v);            $at = $docxd-><M::DocumentXDoctype.createAttributeDefinition> ($v);
3636            unless (exists $et-><AG::ETDef.attributeDefinitions>->{$v}) {            if (exists $et-><AG::ETDef.attributeDefinitions>->{$v}) {
3637                my $location;
3638                __CODE{xp|get-location-from-token::
3639                  $token => {$token},
3640                  $result => {$location},
3641                }__;
3642                my $continue = __c|ERROR{xp|warning-attribute-definition-ignored::
3643                  xp|error-token => {$token},
3644                  c|location => {$location},
3645                  xp|name => {$v},
3646                }__;
3647                unless ($continue) {
3648                  __CODE{ParseError}__;
3649                }            
3650              } elsif ($self->{dont_process} and not $self->{standalone}) {
3651                my $location;
3652                __CODE{xp|get-location-from-token::
3653                  $token => {$token},
3654                  $result => {$location},
3655                }__;
3656                my $continue = __c|ERROR{
3657                xp|warning-attribute-definition-not-processed::
3658                  xp|error-token => {$token},
3659                  c|location => {$location},
3660                  xp|name => {$v},
3661                }__;
3662                unless ($continue) {
3663                  __CODE{ParseError}__;
3664                }            
3665              } else {
3666              $et-><M::ETDef.setAttributeDefinitionNode> ($at);              $et-><M::ETDef.setAttributeDefinitionNode> ($at);
3667              $self->{attr}->{$name}->{$v} = $at;              $self->{attr}->{$name}->{$v} = $at;
3668            }            }
# Line 2176  _ Line 3684  _
3684              ~? (S) { }              ~? (S) { }
3685    
3686              ~+ (Name) {              ~+ (Name) {
3687                lang:Perl ($v => $token.value) {                lang:Perl ($v => $token.value) : has-error {
3688                    __CODE{checkNCName:: $name => $v}__;
3689                  push @$kwd, $v;                  push @$kwd, $v;
3690                }                }
3691    
# Line 2350  _ Line 3859  _
3859        }        }
3860      } // _AttlistDeclaration      } // _AttlistDeclaration
3861    
3862        /*
3863          Entity Declaration
3864        */
3865      rule _EntityDeclaration ($doc) {      rule _EntityDeclaration ($doc) {
3866        // ~ (MDO) { }        // ~ (MDO) { }
3867        // ~ (Name == ENTITY) { }        // ~ (Name == ENTITY) { }
3868    
3869        ~ (S) { }        ~ (S) { }
3870    
3871          my $is_param_entity;
3872        my $decl;        my $decl;
3873        lang:Perl { $decl = {}; }        lang:Perl {
3874            $decl = {
3875              name => '#ILLEGAL',
3876              reptxt => \'',
3877              is_external_entity => false,
3878              document_uri => $self->{location}->{document_uri},
3879              base_uri => $self->{location}->{base_uri},
3880            };
3881          }
3882    
3883        ~? (PERO) {        ~? (PERO) {
3884          ~ (S) { }          ~ (S) { }
3885          lang:Perl {          lang:Perl {
3886            $decl->{is_param_entity} = true;            $is_param_entity = $decl->{is_param_entity} = true;
3887          }          }
3888        }        }
3889    
3890          /*
3891            TODO: Set |$decl->{is_externally_declared}| flag
3892                  and |Entity.isExternallyDeclared| attribute
3893                  for entity declarations in external subset or
3894                  in parameter entity.
3895          */
3896    
3897        ~ (Name) {        ~ (Name) {
3898          lang:Perl ($v => $token.value) {          lang:Perl ($v => $token.value) {
3899              __CODE{checkNCName:: $name => $v}__;
3900            $decl->{name} = $v;            $decl->{name} = $v;
3901          }          }
3902        }        }
3903    
3904          my $node;
3905          lang:Perl {
3906            $node =
3907            $decl->{node} = $self->{docx}-><M::DocumentXDoctype.createGeneralEntity>
3908                                             ($decl->{name});
3909            ## TODO: Parameter entity...
3910          }
3911    
3912        ~ (S) { }        ~ (S) { }
3913    
3914        ~ (LIT) {        ~ (LIT) {
# Line 2381  _ Line 3918  _
3918        } (Name == 'PUBLIC') {        } (Name == 'PUBLIC') {
3919          ~ (S) { }          ~ (S) { }
3920    
3921          &PubidLiteral ($doc => $doc, $decl => $decl);          &PubidLiteral ($decl => $node);
3922    
3923          ~ (S) { }          ~ (S) { }
3924    
3925          &SystemLiteral ($doc => $doc, $decl => $decl);          &SystemLiteral ($decl => $node);
3926    
3927            lang:Perl {
3928              $decl->{is_external_entity} = true;
3929            }
3930        } (Name == 'SYSTEM') {        } (Name == 'SYSTEM') {
3931          ~ (S) { }          ~ (S) { }
3932    
3933          &SystemLiteral ($doc => $doc, $decl => $decl);          &SystemLiteral ($decl => $node);
3934    
3935            lang:Perl {
3936              $decl->{is_external_entity} = true;
3937            }
3938        }        }
3939    
3940        ~? (S) {        ~? (S) {
3941          ~? (Name == 'NDATA') {          ~? (Name == 'NDATA') {
3942            // TODO: error if parameter entity            if-true ($is_param_entity) {
3943                lang:Perl : has-error {
3944                  my $location;
3945                  __CODE{xp|get-location-from-token::
3946                    $token => {$token},
3947                    $result => {$location},
3948                  }__;
3949                  my $continue = __DOMCore:ERROR{xp|wf-syntax-error::
3950                    xp|error-token => {$token},
3951                    c|location => {$location},
3952                  }__;
3953                  unless ($continue) {
3954                    __CODE{ParseError}__;
3955                  }
3956                }
3957              }
3958    
3959            ~ (S) { }            ~ (S) { }
3960        
3961            ~ (Name) {            ~ (Name) {
3962              lang:Perl ($v => $token.value) {              lang:Perl ($v => $token.value) : has-error {
3963                  __CODE{checkNCName:: $name => $v}__;
3964                $decl->{notation} = $v;                $decl->{notation} = $v;
3965                  $decl->{node}-><AG::x|Entity.notationName> ($v);
3966              }              }
3967            }            }
3968    
# Line 2408  _ Line 3970  _
3970          }          }
3971        }        }
3972    
3973        lang:Perl {        lang:Perl : has-error {
3974          if ($self->{$decl->{is_param_entity} ? 'param_entity' : 'general_entity'}          if ($self->{$decl->{is_param_entity} ? 'param_entity' : 'general_entity'}
3975                   ->{$decl->{name}}) {                   ->{$decl->{name}}) {
3976            ## TODO: error            ## Predefined entity
3977              if (not $decl->{is_param_entity} and
3978                  {lt => true, gt => true, amp => true,
3979                   quot => true, apos => true}->{$decl->{name}}) {
3980                if ($decl->{is_external_entity}) {
3981                  my $location;
3982                  __CODE{xp|get-location-from-token::
3983                    $token => {$token},
3984                    $result => {$location},
3985                  }__;
3986                  my $continue = __c|ERROR{xp|error-internal-predefined-entity::
3987                    xp|error-token => {$token},
3988                    c|location => {$location},
3989                    xp|name => {$decl->{name}},
3990                  }__;
3991                  unless ($continue) {
3992                    __CODE{ParseError}__;
3993                  }              
3994                } elsif (
3995                  not ({gt => true, apos => true, quot => true}->{$decl->{name}} and
3996                       ${$decl->{reptxt}} eq {
3997                         gt => '>', apos => "'", quot => '"',
3998                       }->{$decl->{name}}) and
3999                  not (${$decl->{reptxt}} =~ /\A&#0*@{[{
4000                         lt => '60', gt => '62', amp => '38',
4001                         apos => '39', quot => '34',
4002                       }->{$decl->{name}}]};\z/) and
4003                  not (${$decl->{reptxt}} =~ /\A&#x0*(?:(?i)@{[{
4004                         lt => '3C', gt => '3E', amp => '26',
4005                         apos => '27', quot => '22',
4006                       }->{$decl->{name}}]});\z/)
4007                ) {
4008                  ## NOTE: See "SuikaWiki - Predefined Entities"
4009                  ##       "http://suika.fam.cx/gate/2005/sw/%E5%AE%9A%E7%BE%A9%E6%B8%88%E5%AE%9F%E4%BD%93".
4010                  my $location;
4011                  __CODE{xp|get-location-from-token::
4012                    $token => {$token},
4013                    $result => {$location},
4014                  }__;
4015                  my $continue = __c|ERROR{xp|error-malformed-predefined-entity::
4016                    xp|error-token => {$token},
4017                    c|location => {$location},
4018                    xp|name => {$decl->{name}},
4019                    xp|replacement-text => {${$decl->{reptxt}}},
4020                  }__;
4021                  unless ($continue) {
4022                    __CODE{ParseError}__;
4023                  }
4024                }
4025                $self->{dtdecl}->{<H::mn:node>}->{{
4026                  lt => <H::d|hasLtDeclaration>,
4027                  gt => <H::d|hasGtDeclaration>,
4028                  amp => <H::d|hasAmpDeclaration>,
4029                  apos => <H::d|hasAposDeclaration>,
4030                  quot => <H::d|hasQuotDeclaration>,
4031                }->{$decl->{name}}} = true;
4032              } else {  ## Dupulicating declaration
4033                my $location;
4034                __CODE{xp|get-location-from-token::
4035                  $token => {$token},
4036                  $result => {$location},
4037                }__;
4038                my $continue = __c|ERROR{xp|warning-entity-declaration-ignored::
4039                  xp|error-token => {$token},
4040                  c|location => {$location},
4041                  xp|name => {$decl->{name}},
4042                }__;
4043                unless ($continue) {
4044                  __CODE{ParseError}__;
4045                }
4046              }
4047            } elsif ($self->{dont_process} and not $self->{standalone}) {
4048              ## TODO: |standalone| and parameter entities??
4049              my $location;
4050              __CODE{xp|get-location-from-token::
4051                $token => {$token},
4052                $result => {$location},
4053              }__;
4054              my $continue = __c|ERROR{xp|warning-entity-declaration-not-processed::
4055                xp|error-token => {$token},
4056                c|location => {$location},
4057                xp|name => {$decl->{name}},
4058              }__;
4059              unless ($continue) {
4060                __CODE{ParseError}__;
4061              }            
4062          } else {          } else {
4063            $self->{$decl->{is_param_entity} ? 'param_entity' : 'general_entity'}            $self->{$decl->{is_param_entity} ? 'param_entity' : 'general_entity'}
4064                 ->{$decl->{name}} = $decl;                 ->{$decl->{name}} = $decl;
4065              $self->{dtdef}-><M::DTDef.setGeneralEntityNode> ($decl->{node})
4066                unless $decl->{is_param_entity};
4067          }          }
4068        }        }
4069    
# Line 2425  _ Line 4074  _
4074        }        }
4075      } // _EntityDeclaration      } // _EntityDeclaration
4076    
4077      rule _NotationDeclaration ($doc) {      /*
4078          Notation Declaration
4079        */
4080        rule _NotationDeclaration {
4081        // ~ (MDO) { }        // ~ (MDO) { }
4082        // ~ (Name == NOTATION) { }        // ~ (Name == NOTATION) { }
4083    
4084        ~ (S) { }        ~ (S) { }
4085    
4086          my $name;
4087        ~ (Name) {        ~ (Name) {
4088            lang:Perl ($v => $token.value) : has-error {
4089        }            __CODE{checkNCName:: $name => $v}__;
4090              $name = $v;
4091            }
4092          } else {
4093            lang:Perl {
4094              $name = '#INVALID';
4095            }
4096          }
4097    
4098        ~ (S) { }        ~ (S) { }
4099    
4100          lang:Perl {
4101            $decl = $self->{docx}-><M::DocumentXDoctype.createNotation> ($name);
4102          }
4103    
4104        ~ (Name == 'PUBLIC') {        ~ (Name == 'PUBLIC') {
4105          ~ (S) { }          ~ (S) { }
4106    
4107          &PubidLiteral ($doc => $doc);          &PubidLiteral ($decl => $decl);
4108    
4109          ~? (S) {          ~? (S) {
4110            ~? (LIT) {            ~? (LIT) {
4111              ?lexmode SystemLiteral;              ?lexmode SystemLiteral;
4112              &_SystemLiteral ($doc => $doc);              &_SystemLiteral ($decl => $decl);
4113    
4114              ~? (S) { }              ~? (S) { }
4115            } (LITA) {            } (LITA) {
4116              ?lexmode SystemLiteralA;              ?lexmode SystemLiteralA;
4117              &_SystemLiteral ($doc => $doc);              &_SystemLiteral ($decl => $decl);
4118    
4119              ~? (S) { }              ~? (S) { }
4120            }            }
# Line 2458  _ Line 4122  _
4122        } (Name == 'SYSTEM') {        } (Name == 'SYSTEM') {
4123          ~ (S) { }          ~ (S) { }
4124    
4125          &SystemLiteral ($doc => $doc);          &SystemLiteral ($decl => $decl);
4126    
4127          ~? (S) { }          ~? (S) { }
4128        }        }
4129    
4130          lang:Perl : has-error {
4131            if ($self->{dtdef}-><M::DTDef.getNotationNode> ($name)) {
4132              ## Dupulication
4133              my $location;
4134              __CODE{xp|get-location-from-token::
4135                $token => {$token},
4136                $result => {$location},
4137              }__;
4138              my $continue = __c|ERROR{xp|vc-unique-notation-name::
4139                xp|error-token => {$token},
4140                c|location => {$location},
4141                xp|name => {$name},
4142              }__;
4143              unless ($continue) {
4144                __CODE{ParseError}__;
4145              }
4146            } else {
4147              $self->{dtdef}-><M::DTDef.setNotationNode> ($decl);
4148            }
4149          }
4150    
4151        ~ (MDC) {        ~ (MDC) {
4152          ?lexmode DTD;          ?lexmode DTD;
4153        } else {        } else {
# Line 2470  _ Line 4155  _
4155        }        }
4156      } // _NotationDeclaration      } // _NotationDeclaration
4157    
4158      rule _EntityValue ($doc, $decl) {      rule _EntityValue ($decl) {
4159        ?lexmode EntityValue;        ?lexmode EntityValue;
4160    
4161        my $vals;        my $vals;
# Line 2485  _ Line 4170  _
4170            $reptxt .= $v;            $reptxt .= $v;
4171          }          }
4172        } (PERO) {        } (PERO) {
4173          ?lexmode EntityDeclaration;          ?lexmode EntityReference;
4174    
4175            lang:Perl {
4176              $self->{has_xref} = true;
4177              $self->{dont_process} = true;
4178            }
4179            
4180          // TODO: Expand or wferror if internal subset          // TODO: Expand or wferror if internal subset
4181    
4182          ~ (Name) {          ~ (Name) {
4183    
4184              // Note that external subset and parameter entities are not supported
4185              lang:Perl ($name => $token.value) : has-error {
4186                __CODE{checkNCName:: $name => $name}__;
4187                my $location;
4188                __CODE{xp|get-location-from-token::
4189                  $token => {$token},
4190                  $result => {$location},
4191                }__;
4192                my $continue = __c|ERROR{xp|wf-pes-in-internal-subset::
4193                  xp|error-token => {$token},
4194                  c|location => {$location},
4195                  xp|name => {$name},
4196                }__;
4197                unless ($continue) {
4198                  __CODE{ParseError}__;
4199                }
4200              }
4201          }          }
4202    
4203          ~ (REFC) {          ~ (REFC) {
# Line 2499  _ Line 4206  _
4206            ?lexmode EntityValue;            ?lexmode EntityValue;
4207          }          }
4208        } (HCRO) {        } (HCRO) {
4209          &_HexadecimalCharacterReferenceV_          &_HexadecimalCharacterReferenceEV_ ($vals => $vals);
           ($doc => $doc, $vals => $vals);  
4210    
4211          lang:Perl {          lang:Perl {
4212            $reptxt .= $vals->[0]-><AG::Node.textContent>;            $reptxt .= $vals->[-1];
           $vals = [];  
4213          }          }
4214    
4215          ~ (REFC) {          ~ (REFC) {
# Line 2513  _ Line 4218  _
4218            ?lexmode EntityValue;            ?lexmode EntityValue;
4219          }          }
4220        } (CRO) {        } (CRO) {
4221          &_NumericCharacterReferenceV_          &_NumericCharacterReferenceEV_ ($vals => $vals);
           ($doc => $doc, $vals => $vals);  
4222    
4223          lang:Perl {          lang:Perl {
4224            $reptxt .= $vals->[0]-><AG::Node.textContent>;            $reptxt .= $vals->[-1];
           $vals = [];  
4225          }          }
4226    
4227          ~ (REFC) {          ~ (REFC) {
# Line 2527  _ Line 4230  _
4230            ?lexmode EntityValue;            ?lexmode EntityValue;
4231          }          }
4232        } (ERO) {        } (ERO) {
4233          &_GeneralEntityReferenceEV_          &_GeneralEntityReferenceEV_ ($vals => $vals);
           ($doc => $doc, $vals => $vals);  
4234    
4235          lang:Perl {          lang:Perl {
4236            $reptxt .= '&' . $vals->[0] . ';';            $reptxt .= '&' . $vals->[-1] . ';';
           $vals = [];  
4237          }          }
4238    
4239          ~ (REFC) {          ~ (REFC) {
# Line 2552  _ Line 4253  _
4253    
4254        lang:Perl {        lang:Perl {
4255          $decl->{reptxt} = \$reptxt;          $decl->{reptxt} = \$reptxt;
4256            $decl->{has_replacement_text} = true;
4257        }        }
4258      } // _EntityValue      } // _EntityValue
4259    
4260      rule _EntityValueA ($doc, $decl) {      rule _EntityValueA ($decl) {
4261        ?lexmode EntityValueA;        ?lexmode EntityValueA;
4262    
4263        my $vals;        my $vals;
# Line 2570  _ Line 4272  _
4272            $reptxt .= $v;            $reptxt .= $v;
4273          }          }
4274        } (PERO) {        } (PERO) {
4275          ?lexmode EntityDeclaration;          ?lexmode EntityReference;
4276    
4277            lang:Perl {
4278              $self->{has_xref} = true;
4279              $self->{dont_process} = true;
4280            }
4281    
4282          // TODO: implement this          // TODO: implement this
4283          ~ (Name) {          ~ (Name) {
4284    
4285              // Note that external subset and parameter entities are not supported
4286              lang:Perl ($name => $token.value) : has-error {
4287                __CODE{checkNCName:: $name => $name}__;
4288                my $location;
4289                __CODE{xp|get-location-from-token::
4290                  $token => {$token},
4291                  $result => {$location},
4292                }__;
4293                my $continue = __c|ERROR{xp|wf-pes-in-internal-subset::
4294                  xp|error-token => {$token},
4295                  c|location => {$location},
4296                  xp|name => {$name},
4297                }__;
4298                unless ($continue) {
4299                  __CODE{ParseError}__;
4300                }
4301              }
4302          }          }
4303    
4304          ~ (REFC) {          ~ (REFC) {
# Line 2583  _ Line 4307  _
4307            ?lexmode EntityValueA;            ?lexmode EntityValueA;
4308          }          }
4309        } (HCRO) {        } (HCRO) {
4310          &_HexadecimalCharacterReferenceV_          &_HexadecimalCharacterReferenceEV_ ($vals => $vals);
           ($doc => $doc, $vals => $vals);  
4311    
4312          lang:Perl {          lang:Perl {
4313            $reptxt .= $vals->[0]-><AG::Node.textContent>;            $reptxt .= $vals->[-1];
           $vals = [];  
4314          }          }
4315    
4316    
# Line 2598  _ Line 4320  _
4320            ?lexmode EntityValueA;            ?lexmode EntityValueA;
4321          }          }
4322        } (CRO) {        } (CRO) {
4323          &_NumericCharacterReferenceV_          &_NumericCharacterReferenceEV_ ($vals => $vals);
           ($doc => $doc, $vals => $vals);  
4324    
4325          lang:Perl {          lang:Perl {
4326            $reptxt .= $vals->[0]-><AG::Node.textContent>;            $reptxt .= $vals->[-1];
           $vals = [];  
4327          }          }
4328    
4329          ~ (REFC) {          ~ (REFC) {
# Line 2612  _ Line 4332  _
4332            ?lexmode EntityValueA;            ?lexmode EntityValueA;
4333          }          }
4334        } (ERO) {        } (ERO) {
4335          &_GeneralEntityReferenceEV_          &_GeneralEntityReferenceEV_ ($vals => $vals);
           ($doc => $doc, $vals => $vals);  
4336    
4337          lang:Perl {          lang:Perl {
4338            $reptxt .= '&' . $vals->[0] . ';';            $reptxt .= '&' . $vals->[-1] . ';';
           $vals = [];  
4339          }          }
4340    
4341          ~ (REFC) {          ~ (REFC) {
# Line 2635  _ Line 4353  _
4353    
4354        lang:Perl {        lang:Perl {
4355          $decl->{reptxt} = \$reptxt;          $decl->{reptxt} = \$reptxt;
4356            $decl->{has_replacement_text} = true;
4357        }        }
4358      } // _EntityValueA      } // _EntityValueA
4359    
# Line 2862  _ Line 4581  _
4581      } // Nmtoken      } // Nmtoken
4582            
4583      /*      /*
4584        Space        S
4585      */      */
4586      lexmode S {      lexmode S {
4587        S := [U+0009 U+000A U+000D U+0020]+;        $s := [U+0009 U+000A U+000D U+0020];
4588          S := $s+;
4589      } // S      } // S
4590            
4591      /*      /*
# Line 2914  _ Line 4634  _
4634        */        */
4635        MDO := ['<'] ['!'];        MDO := ['<'] ['!'];
4636      } // DocumentProlog      } // DocumentProlog
4637        
4638      /*      /*
4639        Document start scanning mode        Document Start Scanning Mode
4640      */      */
4641      lexmode DocumentStart      lexmode DocumentStart
       : initial  
4642        : standalone        : standalone
4643        : extends => 'DocumentProlog'        : extends => 'DocumentProlog'
4644      {      {
# Line 2943  _ Line 4662  _
4662        /*        /*
4663          Comment data          Comment data
4664        */        */
4665        $string := ['-']? [^'-'];        ?default-token STRING : value;
       STRING : value := $string+;  
4666      } // CommentDeclaration      } // CommentDeclaration
4667            
4668      /*      /*
# Line 2962  _ Line 4680  _
4680      } // PIName      } // PIName
4681            
4682      /*      /*
4683          Processing instruction name and |S| scanning mode
4684        */
4685        lexmode PINmtoken
4686          : standalone
4687          : extends => 'Nmtoken'
4688          : extends => 'S'
4689        {
4690          /*
4691            Processing instruction close
4692          */
4693          PIC := ['?'] ['>'];
4694        } // PINmtoken
4695        
4696        /*
4697        Processing instruction data scanning mode        Processing instruction data scanning mode
4698      */      */
4699      lexmode PIData      lexmode PIData
# Line 3098  _ Line 4830  _
4830        REFC := [';'];        REFC := [';'];
4831      } // HexadecimalCharacterReference      } // HexadecimalCharacterReference
4832            
4833        /*
4834          The XML Declaration and Text Declaration Scanning Mode
4835        */
4836      lexmode XMLDeclaration      lexmode XMLDeclaration
4837        : standalone        : standalone
4838        : extends => 'Name'        : extends => 'Name'
# Line 3117  _ Line 4852  _
4852                
4853        /*        /*
4854          Processing instruction close          Processing instruction close
4855    
4856              The |PIC|, i.e. |?>|, is split into two tokens |PIC1| and |PIC2|
4857              in this scanning mode to set |no_xml11_eol| flag in the
4858              |_XMLDeclaration_| |rule|.
4859        */        */
4860        PIC := ['?'] ['>'];        PIC1 := ['?'];
4861          PIC2 := ['>'];
4862      } // XMLDeclaration      } // XMLDeclaration
4863    
4864        /*
4865          The XML Declaration or Processing Instruction Scanning Mode
4866    
4867               '<?xml'               S                 ...
4868            (DocumentStart) (XMLDeclarationOrPI) (XMLDeclaration)
4869               '<?xml'              '1'                S                ...
4870            (DocumentStart) (XMLDeclarationOrPI) (PINmtoken)(PIName) (PITarget)
4871               '<?xml'              '-'         'stylesheet'    S       ...
4872            (DocumentStart) (XMLDeclarationOrPI) (PINmtoken) (PIName) (PITarget)
4873        */
4874        lexmode XMLDeclarationOrPI
4875          : standalone
4876          : extends => 'NameChar'
4877          : extends => 'S'
4878        {
4879          NameChar : value := $NameChar11;
4880        } // XMLDeclarationOrPI
4881            
4882      lexmode StartTag      lexmode StartTag
4883        : standalone        : standalone
# Line 3181  _ Line 4939  _
4939        LITA := [U+0027];        LITA := [U+0027];
4940        STRING : value := [^U+0027 '&' '<']+;        STRING : value := [^U+0027 '&' '<']+;
4941      } // AttributeValueLiteralA      } // AttributeValueLiteralA
4942        
4943        lexmode AttributeValueLiteralE
4944          : standalone
4945          : extends => 'AttributeValueLiteral_'
4946        {
4947          STRING : value := [^'&' '<']+;
4948        } // AttributeValueLiteralE
4949    
4950      lexmode EntityValue_ {      lexmode EntityValue_ {
4951        PERO := ['%'];        PERO := ['%'];
# Line 3379  _ Line 5144  _
5144            DOMCore|location => {$location},            DOMCore|location => {$location},
5145          }__;          }__;
5146          unless ($continue) {          unless ($continue) {
5147            __EXCEPTION{DOMLS|PARSE_ERR::            __CODE{ParseError}__;
           }__;  
5148          }          }
         $self->{has_error} = true;  
5149        }        }
5150      } // default      } // default
5151    
5152      @ResourceDef:
5153        @@ForCheck: ManakaiDOM|ForClass
5154        @@QName: ParseError
5155        @@rdf:type: DISPerl|BlockCode
5156        @@PerlDef:
5157          __DEEP{
5158            for (@{$self->{entity}}) {
5159              $_->{close_file}->();
5160            }
5161          }__;
5162          __EXCEPTION{DOMLS|PARSE_ERR}__;
5163    
5164      @ResourceDef:
5165        @@ForCheck: ManakaiDOM|ForClass
5166        @@QName: checkNCName
5167        @@rdf:type: DISPerl|BlockCode
5168        @@PerlDef:
5169          if (($self->{xml_version} eq '1.0' and
5170               not <Code::DOMMain|testXML10Name:: $INPUT = $name>) or
5171              ($self->{xml_version} eq '1.1' and
5172               not <Code::DOMMain|testXML11Name:: $INPUT = $name>)) {
5173            my $__location;
5174            __CODE{xp|get-location-from-token::
5175              $token => {$token},
5176              $result => {$__location},
5177            }__;
5178            my $__continue = __c|ERROR{xp|wf-invalid-character-in-node-name::
5179              xp|error-token => {$token},
5180              c|location => {$__location},
5181              xp|name => {$name},
5182              infoset|version => {$self->{xml_version}},
5183            }__;
5184            unless ($__continue) {
5185              __CODE{ParseError}__;
5186            }
5187          } elsif (index ($name, ':') > -1) {
5188            my $__location;
5189            __CODE{xp|get-location-from-token::
5190              $token => {$token},
5191              $result => {$__location},
5192            }__;
5193            my $__continue = __c|ERROR{xp|nswf-legal-ncname::
5194              xp|error-token => {$token},
5195              c|location => {$__location},
5196              xp|name => {$name},
5197              infoset|version => {$self->{xml_version}},
5198            }__;
5199            unless ($__continue) {
5200              __CODE{ParseError}__;
5201            }            
5202          }
5203    
5204      @ResourceDef:
5205        @@ForCheck: ManakaiDOM|ForClass
5206        @@QName: checkQName
5207        @@rdf:type: DISPerl|BlockCode
5208        @@PerlDef:
5209          if (($self->{xml_version} eq '1.0' and
5210               not <Code::DOMMain|testXML10Name:: $INPUT = $name>) or
5211              ($self->{xml_version} eq '1.1' and
5212               not <Code::DOMMain|testXML11Name:: $INPUT = $name>)) {
5213            my $__location;
5214            __CODE{xp|get-location-from-token::
5215              $token => {$token},
5216              $result => {$__location},
5217            }__;
5218            my $__continue = __c|ERROR{xp|wf-invalid-character-in-node-name::
5219              xp|error-token => {$token},
5220              c|location => {$__location},
5221              xp|name => {$name},
5222              infoset|version => {$self->{xml_version}},
5223            }__;
5224            unless ($__continue) {
5225              __CODE{ParseError}__;
5226            }
5227          } elsif (($self->{xml_version} eq '1.0' and
5228                    not <Code::DOMMain|testXML10QName:: $INPUT = $name>) or
5229                   ($self->{xml_version} eq '1.1' and
5230                    not <Code::DOMMain|testXML11QName:: $INPUT = $name>)) {
5231            my $__location;
5232            __CODE{xp|get-location-from-token::
5233              $token => {$token},
5234              $result => {$__location},
5235            }__;
5236            my $__continue = __c|ERROR{xp|nswf-legal-qname::
5237              xp|error-token => {$token},
5238              c|location => {$__location},
5239              xp|name => {$name},
5240              infoset|version => {$self->{xml_version}},
5241            }__;
5242            unless ($__continue) {
5243              __CODE{ParseError}__;
5244            }            
5245          }
5246    
5247    
5248    @XMLTests:    @XMLTests:
5249      @@XMLTest:      @@XMLTest:
5250          @@@QName: xp.char.xml10.test
5251          @@@DEnt:
5252            @@@@test:value:
5253              <?xml version="1.0"?>
5254              <p>$u0009$u000A$u000D$u0020$uD7FF$uE000$uFFFD$U00010000$U0010FFFF</p>
5255          @@@test:domTree:
5256            document {
5257              xml-version: '1.0';
5258              element {
5259                text-content: U+0009 U+000A U+000A U+0020 U+D7FF
5260                              U+E000 U+FFFD U+10000 U+10FFFF;
5261              }
5262            }
5263        @@XMLTest:
5264          @@@QName: xp.char.xml11.test
5265          @@@DEnt:
5266            @@@@test:value:
5267              <?xml version="1.1"?>
5268              <p>$u0009$u000A$u000D$u0020$uD7FF$uE000$uFFFD$U00010000$U0010FFFF</p>
5269          @@@test:domTree:
5270            document {
5271              xml-version: '1.1';
5272              element {
5273                text-content: U+0009 U+000A U+000A U+0020 U+D7FF
5274                              U+E000 U+FFFD U+10000 U+10FFFF;
5275              }
5276            }
5277        @@XMLTest:
5278          @@@QName: xp.char.xml10.c0.test
5279          @@@DEnt:
5280            @@@@test:value:
5281              <?xml version="1.0"?>
5282              <p>$u0000$u0001$u0002$u0003$u0004$u0005$u0006$u0007$u0008$u000B$
5283              $u000C$u000E$u000F$u0010$u0011$u0012$u0013$u0014$u0015$u0016$
5284              $u0017$u0018$u0019$u001A$u001B$u001C$u001D$u001E$u001F</p>
5285          @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 4); } /* U+0000 */
5286          @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 5); } /* U+0001 */
5287          @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 6); } /* U+0002 */
5288          @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 7); } /* U+0003 */
5289          @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 8); } /* U+0004 */
5290          @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 9); } /* U+0005 */
5291          @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 10); } /* U+0006 */
5292          @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 11); } /* U+0007 */
5293          @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 12); } /* U+0008 */
5294          @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 13); } /* U+000B */
5295          @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 14); } /* U+000C */
5296          @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 15); } /* U+000E */
5297          @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 16); } /* U+000F */
5298          @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 17); } /* U+0010 */
5299          @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 18); } /* U+0011 */
5300          @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 19); } /* U+0012 */
5301          @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 20); } /* U+0013 */
5302          @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 21); } /* U+0014 */
5303          @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 22); } /* U+0015 */
5304          @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 23); } /* U+0016 */
5305          @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 24); } /* U+0017 */
5306          @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 25); } /* U+0018 */
5307          @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 26); } /* U+0019 */
5308          @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 27); } /* U+001A */
5309          @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 28); } /* U+001B */
5310          @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 29); } /* U+001C */
5311          @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 30); } /* U+001D */
5312          @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 31); } /* U+001E */
5313          @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 32); } /* U+001F */
5314        @@XMLTest:
5315          @@@QName: xp.char.xml11.c0.test
5316          @@@DEnt:
5317            @@@@test:value:
5318              <?xml version="1.1"?>
5319              <p>$u0000$u0001$u0002$u0003$u0004$u0005$u0006$u0007$u0008$u000B$
5320              $u000C$u000E$u000F$u0010$u0011$u0012$u0013$u0014$u0015$u0016$
5321              $u0017$u0018$u0019$u001A$u001B$u001C$u001D$u001E$u001F</p>
5322          @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 4); } /* U+0000 */
5323          @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 5); } /* U+0001 */
5324          @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 6); } /* U+0002 */
5325          @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 7); } /* U+0003 */
5326          @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 8); } /* U+0004 */
5327          @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 9); } /* U+0005 */
5328          @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 10); } /* U+0006 */
5329          @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 11); } /* U+0007 */
5330          @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 12); } /* U+0008 */
5331          @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 13); } /* U+000B */
5332          @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 14); } /* U+000C */
5333          @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 15); } /* U+000E */
5334          @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 16); } /* U+000F */
5335          @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 17); } /* U+0010 */
5336          @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 18); } /* U+0011 */
5337          @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 19); } /* U+0012 */
5338          @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 20); } /* U+0013 */
5339          @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 21); } /* U+0014 */
5340          @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 22); } /* U+0015 */
5341          @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 23); } /* U+0016 */
5342          @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 24); } /* U+0017 */
5343          @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 25); } /* U+0018 */
5344          @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 26); } /* U+0019 */
5345          @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 27); } /* U+001A */
5346          @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 28); } /* U+001B */
5347          @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 29); } /* U+001C */
5348          @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 30); } /* U+001D */
5349          @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 31); } /* U+001E */
5350          @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 32); } /* U+001F */
5351        @@XMLTest:
5352          @@@QName: xp.char.xml10.c1.test
5353          @@@DEnt:
5354            @@@@test:value:
5355              <?xml version="1.0"?>
5356              <p>$u007F$u0080$u0081$u0082$u0083$u0084$u0086$u0087$u0088$
5357              $u0089$u008A$u008B$u008C$
5358              $u008D$u008E$u008F$u0090$u0091$u0092$u0093$u0094$u0095$u0096$
5359              $u0097$u0098$u0099$u009A$u009B$u009C$u009D$u009E$u009F$u0085</p>
5360          @@@test:domTree:
5361            document {
5362              xml-version: '1.0';
5363              element {
5364                text-content: U+007F U+0080 U+0081 U+0082 U+0083 U+0084 U+0086
5365                              U+0087 U+0088 U+0089 U+008A U+008B U+008C U+008D
5366                              U+008E U+008F U+0090 U+0091 U+0092 U+0093 U+0094
5367                              U+0095 U+0096 U+0097 U+0098 U+0099 U+009A U+009B
5368                              U+009C U+009D U+009E U+009F U+0085;
5369              }
5370            }
5371        @@XMLTest:
5372          @@@QName: xp.char.xml11.c1.test
5373          @@@DEnt:
5374            @@@@test:value:
5375              <?xml version="1.1"?>
5376              <p>$u007F$u0080$u0081$u0082$u0083$u0084$u0086$u0087$u0088$
5377              $u0089$u008A$u008B$u008C$
5378              $u008D$u008E$u008F$u0090$u0091$u0092$u0093$u0094$u0095$u0096$
5379              $u0097$u0098$u0099$u009A$u009B$u009C$u009D$u009E$u009F$u0085</p>
5380          @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 4); } /* U+007F */
5381          @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 5); } /* U+0080 */
5382          @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 6); } /* U+0081 */
5383          @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 7); } /* U+0082 */
5384          @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 8); } /* U+0083 */
5385          @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 9); } /* U+0084 */
5386          @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 10); } /* U+0086 */
5387          @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 11); } /* U+0087 */
5388          @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 12); } /* U+0088 */
5389          @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 13); } /* U+0089 */
5390          @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 14); } /* U+008A */
5391          @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 15); } /* U+008B */
5392          @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 16); } /* U+008C */
5393          @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 17); } /* U+008D */
5394          @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 18); } /* U+008E */
5395          @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 19); } /* U+008F */
5396          @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 20); } /* U+0090 */
5397          @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 21); } /* U+0091 */
5398          @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 22); } /* U+0092 */
5399          @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 23); } /* U+0093 */
5400          @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 24); } /* U+0094 */
5401          @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 25); } /* U+0095 */
5402          @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 26); } /* U+0096 */
5403          @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 27); } /* U+0097 */
5404          @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 28); } /* U+0098 */
5405          @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 29); } /* U+0099 */
5406          @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 30); } /* U+009A */
5407          @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 31); } /* U+009B */
5408          @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 32); } /* U+009C */
5409          @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 33); } /* U+009D */
5410          @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 34); } /* U+009E */
5411          @@@c:erred: <[[xp|wf-legal-literal-character]]> { (2, 35); } /* U+009F */
5412    
5413        @@XMLTest:
5414          @@@QName: xp.c0.internal.entity.xml11.1.test
5415          @@@DEnt:
5416            @@@@test:value:
5417              <?xml version="1.1"?>
5418              <!DOCTYPE a [
5419              <!ENTITY e "&#x01;&#x02;&#x03;&#x04;&#x05;&#x06;&#x07;$
5420              &#x08;&#x09;&#x0A;&#x0B;&#x0C;&#x0D;&#x0E;&#x0F;$
5421              &#x10;&#x11;&#x12;&#x13;&#x14;&#x15;&#x16;&#x17;$
5422              &#x18;&#x19;&#x1A;&#x1B;&#x1C;&#x1D;&#x1E;&#x1F;">
5423              ]><a/>
5424          @@@cfg:entity-replacement-tree: 1
5425          @@@test:domTree:
5426            document {
5427              document-type {
5428                general-entity {
5429                  node-name: 'e';
5430                  text-content: U+0001 U+0002 U+0003 U+0004 U+0005
5431                                U+0006 U+0007 U+0008 U+0009 U+000A U+000B
5432                                U+000C U+000D U+000E U+000F
5433                                U+0010 U+0011 U+0012 U+0013 U+0014 U+0015
5434                                U+0016 U+0017 U+0018 U+0019 U+001A U+001B
5435                                U+001C U+001D U+001E U+001F;
5436                }
5437              }
5438              element { }
5439            }
5440        @@XMLTest:
5441          @@@QName: xp.c1.internal.entity.xml11.1.test
5442          @@@DEnt:
5443            @@@@test:value:
5444              <?xml version="1.1"?>
5445              <!DOCTYPE a [
5446              <!ENTITY e "&#x80;&#x81;&#x82;&#x83;&#x84;&#x85;&#x86;&#x87;$
5447              &#x88;&#x89;&#x8A;&#x8B;&#x8C;&#x8D;&#x8E;&#x8F;$
5448              &#x90;&#x91;&#x92;&#x93;&#x94;&#x95;&#x96;&#x97;$
5449              &#x98;&#x99;&#x9A;&#x9B;&#x9C;&#x9D;&#x9E;&#x9F;&#x7F;">
5450              ]><a/>
5451          @@@cfg:entity-replacement-tree: 1
5452          @@@test:domTree:
5453            document {
5454              document-type {
5455                general-entity {
5456                  node-name: 'e';
5457                  text-content: U+0080 U+0081 U+0082 U+0083 U+0084 U+0085
5458                                U+0086 U+0087 U+0088 U+0089 U+008A U+008B
5459                                U+008C U+008D U+008E U+008F
5460                                U+0090 U+0091 U+0092 U+0093 U+0094 U+0095
5461                                U+0096 U+0097 U+0098 U+0099 U+009A U+009B
5462                                U+009C U+009D U+009E U+009F U+007F;
5463                }
5464              }
5465              element { }
5466            }
5467    
5468        @@XMLTest:
5469          @@@QName: xp.syntax.empty.test
5470          @@@DEnt:
5471            @@@@test:value: \
5472          @@@c:erred:
5473            <[[xp:wf-syntax-error]]> { (1, 1); }
5474        @@XMLTest:
5475          @@@QName: xp.syntax.space.test
5476          @@@DEnt:
5477            @@@@test:value: \  
5478          @@@c:erred:
5479            <[[xp:wf-syntax-error]]> { (1, 4); }
5480        @@XMLTest:
5481          @@@QName: xp.syntax.newlines.test
5482          @@@DEnt:
5483            @@@@test:value:
5484              \
5485              \
5486              \
5487          @@@c:erred:
5488            <[[xp:wf-syntax-error]]> { (3, 1); }
5489    
5490        @@XMLTest:
5491        @@@QName: xp.only.docel.test        @@@QName: xp.only.docel.test
5492        @@@DEnt:        @@@DEnt:
5493          @@@@test:value:          @@@@test:value:
# Line 3421  _ Line 5521  _
5521              text-content: '';              text-content: '';
5522            }            }
5523          }          }
5524        @@XMLTest:
5525          @@@QName: xp.root.s.1.test
5526          @@@DEnt:
5527            @@@@test:value:
5528              <?xml version="1.0"?>$u0020$u000D$u000A$u0009
5529              <p></p>
5530          @@@test:domTree:
5531            document {
5532              element { }
5533            }
5534    
5535        @@XMLTest:
5536          @@@QName: xp.Name.1.test
5537          @@@DEnt:
5538            @@@@test:value: <name/>
5539          @@@test:domTree:
5540            document {
5541              element {
5542                node-name: 'name';
5543              }
5544            }
5545        @@XMLTest:
5546          @@@QName: xp.Name.2.test
5547          @@@DEnt:
5548            @@@@test:value: <name0/>
5549          @@@test:domTree:
5550            document {
5551              element {
5552                node-name: 'name0';
5553              }
5554            }
5555        @@enImplNote:
5556          @@@ddid: xml11name
5557          @@@@:
5558            {TODO:: XML 1.1 Name tests required
5559            }
5560    
5561        @@XMLTest:
5562          @@@QName: xp.content.mse.1.test
5563          @@@DEnt:
5564            @@@@test:value:
5565              <p>]]></p>
5566          @@@c:erred:
5567            <[[xp|wf-syntax-error]]> { (1, 4)..(1, 6); }
5568        @@XMLTest:
5569          @@@QName: xp.content.mse.2.test
5570          @@@DEnt:
5571            @@@@test:value:
5572              <p>aaa]]>bbb</p>
5573          @@@c:erred:
5574            <[[xp|wf-syntax-error]]> { (1, 7)..(1, 9); }
5575    
5576        @@XMLTest:
5577          @@@QName: xp.root.comment.1.test
5578          @@@DEnt:
5579            @@@@test:value:
5580              <!--comment data-->
5581              <p/>
5582          @@@test:domTree:
5583            document {
5584              comment {
5585                data: 'comment data';
5586              }
5587              element { }
5588            }
5589        @@XMLTest:
5590          @@@QName: xp.root.comment.2.test
5591          @@@DEnt:
5592            @@@@test:value:
5593              <!---->
5594              <p/>
5595          @@@test:domTree:
5596            document {
5597              comment {
5598                data: '';
5599              }
5600              element { }
5601            }
5602        @@XMLTest:
5603          @@@QName: xp.root.after.pi.comment.1.test
5604          @@@DEnt:
5605            @@@@test:value:
5606              <?pi?>
5607              <!--comment data-->
5608              <p/>
5609          @@@test:domTree:
5610            document {
5611              pi { }
5612              comment {
5613                data: 'comment data';
5614              }
5615              element { }
5616            }
5617        @@XMLTest:
5618          @@@QName: xp.root.after.pi.comment.2.test
5619          @@@DEnt:
5620            @@@@test:value:
5621              <?pi?>
5622              <!---->
5623              <p/>
5624          @@@test:domTree:
5625            document {
5626              pi { }
5627              comment {
5628                data: '';
5629              }
5630              element { }
5631            }
5632        @@XMLTest:
5633          @@@QName: xp.root.after.element.comment.1.test
5634          @@@DEnt:
5635            @@@@test:value:
5636              <p/>
5637              <!--comment data-->
5638          @@@test:domTree:
5639            document {
5640              element { }
5641              comment {
5642                data: 'comment data';
5643              }
5644            }
5645        @@XMLTest:
5646          @@@QName: xp.root.after.element.comment.2.test
5647          @@@DEnt:
5648            @@@@test:value:
5649              <p/>
5650              <!---->
5651          @@@test:domTree:
5652            document {
5653              element { }
5654              comment {
5655                data: '';
5656              }
5657            }
5658        @@XMLTest:
5659          @@@QName: xp.doctype.intsubset.comment.1.test
5660          @@@DEnt:
5661            @@@@test:value:
5662              <!DOCTYPE a [
5663              <!--comment data-->
5664              ]>
5665              <p/>
5666          @@@test:domTree:
5667            document {
5668              document-type { }
5669              element { }
5670            }
5671        @@XMLTest:
5672          @@@QName: xp.doctype.intsubset.comment.2.test
5673          @@@DEnt:
5674            @@@@test:value:
5675              <!DOCTYPE a [
5676              <!---->
5677              ]>
5678              <p/>
5679          @@@test:domTree:
5680            document {
5681              document-type { }
5682              element { }
5683            }
5684        @@XMLTest:
5685          @@@QName: xp.doctype.intsubset.comment.3.test
5686          @@@DEnt:
5687            @@@@test:value:
5688              <!DOCTYPE a [
5689              <?pi?>
5690              <!---->
5691              ]>
5692              <p/>
5693          @@@test:domTree:
5694            document {
5695              document-type {
5696                pi { }
5697              }
5698              element { }
5699            }
5700        @@XMLTest:
5701          @@@QName: xp.content.comment.1.test
5702          @@@DEnt:
5703            @@@@test:value:
5704              <p><!--comment data--></p>
5705          @@@test:domTree:
5706            document {
5707              element {
5708                comment {
5709                  data: 'comment data';
5710                }
5711              }
5712            }
5713        @@XMLTest:
5714          @@@QName: xp.content.comment.2.test
5715          @@@DEnt:
5716            @@@@test:value:
5717              <p><!----></p>
5718          @@@test:domTree:
5719            document {
5720              element {
5721                comment {
5722                  data: '';
5723                }
5724              }
5725            }
5726        @@XMLTest:
5727          @@@QName: xp.content.comment.3.test
5728          @@@DEnt:
5729            @@@@test:value:
5730              <p>aaaaa<!---->bbbbb</p>
5731          @@@test:domTree:
5732            document {
5733              element {
5734                text {
5735                  data: 'aaaaa';
5736                }
5737                comment {
5738                  data: '';
5739                }
5740                text {
5741                  data: 'bbbbb';
5742                }
5743              }
5744            }
5745        @@XMLTest:
5746          @@@QName: xp.content.comment.--.1.test
5747          @@@DEnt:
5748            @@@@test:value:
5749              <p><!--data--data--></p>
5750          @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 12)..(1, 17); }
5751        @@XMLTest:
5752          @@@QName: xp.content.comment.---gt.test
5753          @@@DEnt:
5754            @@@@test:value:
5755              <p><!--data---></p>
5756          @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 12)..(1, 15); }
5757    
5758        @@XMLTest:
5759          @@@QName: xp.xmldecl.version.1.0.test
5760          @@@DEnt:
5761            @@@@test:value:
5762              <?xml version="1.0"?>
5763              <p></p>
5764          @@@test:domTree:
5765            document {
5766              xml-version: '1.0';
5767              xml-encoding: null;
5768              xml-standalone: false;
5769              element { }
5770            }
5771        @@XMLTest:
5772          @@@QName: xp.xmldecl.version.1.0.lita.test
5773          @@@DEnt:
5774            @@@@test:value:
5775              <?xml version='1.0'?>
5776              <p></p>
5777          @@@test:domTree:
5778            document {
5779              xml-version: '1.0';
5780              xml-encoding: null;
5781              xml-standalone: false;
5782              element { }
5783            }
5784        @@XMLTest:
5785          @@@QName: xp.xmldecl.version.1.0.s.test
5786          @@@DEnt:
5787            @@@@test:value:
5788              <?xml  version  =  "1.0"  ?>
5789              <p></p>
5790          @@@test:domTree:
5791            document {
5792              xml-version: '1.0';
5793              xml-encoding: null;
5794              xml-standalone: false;
5795              element { }
5796            }
5797        @@XMLTest:
5798          @@@QName: xp.xmldecl.version.1.1.test
5799          @@@DEnt:
5800            @@@@test:value:
5801              <?xml version="1.1"?>
5802              <p></p>
5803          @@@test:domTree:
5804            document {
5805              xml-version: '1.1';
5806              xml-encoding: null;
5807              xml-standalone: false;
5808              element { }
5809            }
5810    
5811        @@XMLTest:
5812          @@@QName: xp.xmldecl.version.1.0.encoding.usascii.test
5813          @@@DEnt:
5814            @@@@test:value:
5815              <?xml version="1.0" encoding="US-ascii"?>
5816              <p></p>
5817          @@@test:domTree:
5818            document {
5819              xml-version: '1.0';
5820              xml-encoding: 'US-ascii';
5821              xml-standalone: false;
5822              element { }
5823            }
5824        @@XMLTest:
5825          @@@QName: xp.xmldecl.version.1.0.encoding.usascii.lita.test
5826          @@@DEnt:
5827            @@@@test:value:
5828              <?xml version="1.0" encoding='US-ascii'?>
5829              <p></p>
5830          @@@test:domTree:
5831            document {
5832              xml-version: '1.0';
5833              xml-encoding: 'US-ascii';
5834              xml-standalone: false;
5835              element { }
5836            }
5837        @@XMLTest:
5838          @@@QName: xp.xmldecl.version.1.0.encoding.usascii.s.test
5839          @@@DEnt:
5840            @@@@test:value:
5841              <?xml version="1.0" encoding  = "US-ascii" ?>
5842              <p></p>
5843          @@@test:domTree:
5844            document {
5845              xml-version: '1.0';
5846              xml-encoding: 'US-ascii';
5847              xml-standalone: false;
5848              element { }
5849            }
5850    
5851        @@XMLTest:
5852          @@@QName: xp.xmldecl.version.1.0.encoding.usascii.standalone.yes.test
5853          @@@DEnt:
5854            @@@@test:value:
5855              <?xml version="1.0" encoding="us-ascii" standalone="yes"?>
5856              <p></p>
5857          @@@test:domTree:
5858            document {
5859              xml-version: '1.0';
5860              xml-encoding: 'us-ascii';
5861              xml-standalone: true;
5862              element { }
5863            }
5864        @@XMLTest:
5865          @@@QName: xp.xmldecl.version.1.0.encoding.usascii.standalone.no.test
5866          @@@DEnt:
5867            @@@@test:value:
5868              <?xml version="1.0" encoding="us-ascii" standalone="no"?>
5869              <p></p>
5870          @@@test:domTree:
5871            document {
5872              xml-version: '1.0';
5873              xml-encoding: 'us-ascii';
5874              xml-standalone: false;
5875              element { }
5876            }
5877        @@XMLTest:
5878          @@@QName: xp.xmldecl.version.1.0.encoding.usascii.standalone.yes.lita.test
5879          @@@DEnt:
5880            @@@@test:value:
5881              <?xml version="1.0" encoding="us-ascii" standalone='yes'?>
5882              <p></p>
5883          @@@test:domTree:
5884            document {
5885              xml-version: '1.0';
5886              xml-encoding: 'us-ascii';
5887              xml-standalone: true;
5888              element { }
5889            }
5890        @@XMLTest:
5891          @@@QName: xp.xmldecl.version.1.0.encoding.usascii.standalone.yes.s.test
5892          @@@DEnt:
5893            @@@@test:value:
5894              <?xml version="1.0" encoding="us-ascii"  standalone  = "yes"  ?>
5895              <p></p>
5896          @@@test:domTree:
5897            document {
5898              xml-version: '1.0';
5899              xml-encoding: 'us-ascii';
5900              xml-standalone: true;
5901              element { }
5902            }
5903        @@XMLTest:
5904          @@@QName: xp.xmldecl.no.encoding.but.standalone.attr.test
5905          @@@DEnt:
5906            @@@@test:value:
5907              <?xml version="1.0" standalone="yes"?>
5908              <p></p>
5909          @@@test:domTree:
5910            document {
5911              xml-version: '1.0';
5912              xml-encoding: null;
5913              xml-standalone: true;
5914              element { }
5915            }
5916        @@XMLTest:
5917          @@@QName: xp.xmldecl.encoding.encname.test
5918          @@@DEnt:
5919            @@@@test:value:
5920              <?xml version="1.0" encoding="a-._01-"?>
5921              <p></p>
5922          @@@test:domTree:
5923            document {
5924              xml-version: '1.0';
5925              xml-encoding: 'a-._01-';
5926              xml-standalone: false;
5927              element { }
5928            }
5929    
5930        @@XMLTest:
5931          @@@QName: xp.xmldecl.no.s.no.attr.test
5932          @@@DEnt:
5933            @@@@test:value:
5934              <?xml?>
5935              <p></p>
5936          @@@c:erred:
5937            <[[xp:wf-syntax-error]]> { (1, 1)..(1, 7); }
5938        @@XMLTest:
5939          @@@QName: xp.xmldecl.s.no.attr.test
5940          @@@DEnt:
5941            @@@@test:value:
5942              <?xml  ?>
5943              <p></p>
5944          @@@c:erred:
5945            <[[xp:wf-syntax-error]]> { (1, 8)..(1, 9); }
5946        @@XMLTest:
5947          @@@QName: xp.xmldecl.unknown.attr.test
5948          @@@DEnt:
5949            @@@@test:value:
5950              <?xml  unknown="value"?>
5951              <p></p>
5952          @@@c:erred:
5953            <[[xp:wf-syntax-error]]> { (1, 8)..(1, 22); }
5954        @@XMLTest:
5955          @@@QName: xp.xmldecl.version.unknown.attr.test
5956          @@@DEnt:
5957            @@@@test:value:
5958              <?xml version="1.0" unknown="value"?>
5959              <p></p>
5960          @@@c:erred:
5961            <[[xp:wf-syntax-error]]> { (1, 21)..(1, 35); }
5962        @@XMLTest:
5963          @@@QName: xp.xmldecl.version.encoding.unknown.attr.test
5964          @@@DEnt:
5965            @@@@test:value:
5966              <?xml version="1.0" encoding="us-ascii" unknown="value"?>
5967              <p></p>
5968          @@@c:erred:
5969            <[[xp:wf-syntax-error]]> { (1, 41)..(1, 55); }
5970        @@XMLTest:
5971          @@@QName: xp.xmldecl.version.encoding.standalone.unknown.attr.test
5972          @@@DEnt:
5973            @@@@test:value:
5974              <?xml version="1.0" encoding="us-ascii" standalone="yes"
5975              unknown="value"?>
5976              <p></p>
5977          @@@c:erred:
5978            <[[xp:wf-syntax-error]]> { (2, 1)..(2, 15); }
5979        @@XMLTest:
5980          @@@QName: xp.xmldecl.no.version.but.encoding.attr.test
5981          @@@DEnt:
5982            @@@@test:value:
5983              <?xml encoding="us-ascii"?>
5984              <p></p>
5985          @@@c:erred:
5986            <[[xp:wf-syntax-error]]> { (1, 7)..(1, 25); }
5987        @@XMLTest:
5988          @@@QName: xp.xmldecl.no.version.but.standalone.attr.test
5989          @@@DEnt:
5990            @@@@test:value:
5991              <?xml standalone="yes"?>
5992              <p></p>
5993          @@@c:erred:
5994            <[[xp:wf-syntax-error]]> { (1, 7)..(1, 24); }
5995        @@XMLTest:
5996          @@@QName: xp.xmldecl.version.unsupported.test
5997          @@@DEnt:
5998            @@@@test:value:
5999              <?xml version="1.2"?>
6000              <p></p>
6001          @@@c:erred:
6002            <[[xp:wf-unsupported-xml-version]]> { (1, 7)..(1, 19); }
6003        @@XMLTest:
6004          @@@QName: xp.xmldecl.version.unsupported.2.test
6005          @@@DEnt:
6006            @@@@test:value:
6007              <?xml version=" 1.0 "?>
6008              <p></p>
6009          @@@c:erred:
6010            <[[xp:wf-unsupported-xml-version]]> { (1, 7)..(1, 21); }
6011        @@XMLTest:
6012          @@@QName: xp.xmldecl.version.unsupported.3.test
6013          @@@DEnt:
6014            @@@@test:value:
6015              <?xml version="01.00"?>
6016              <p></p>
6017          @@@c:erred:
6018            <[[xp:wf-unsupported-xml-version]]> { (1, 7)..(1, 21); }
6019        @@XMLTest:
6020          @@@QName: xp.xmldecl.encoding.malformed.1.test
6021          @@@DEnt:
6022            @@@@test:value:
6023              <?xml version="1.0" encoding="0088"?>
6024              <p></p>
6025          @@@c:erred:
6026            <[[xp:wf-malformed-enc-name]]> { (1, 21)..(1, 35); }
6027        @@XMLTest:
6028          @@@QName: xp.xmldecl.encoding.malformed.2.test
6029          @@@DEnt:
6030            @@@@test:value:
6031              <?xml version="1.0" encoding="D.V.D!"?>
6032              <p></p>
6033          @@@c:erred:
6034            <[[xp:wf-malformed-enc-name]]> { (1, 21)..(1, 38); }
6035        @@XMLTest:
6036          @@@QName: xp.xmldecl.standalone.malformed.1.test
6037          @@@DEnt:
6038            @@@@test:value:
6039              <?xml version="1.0" standalone="true"?>
6040              <p></p>
6041          @@@c:erred:
6042            <[[xp:wf-malformed-xml-standalone]]> { (1, 21)..(1, 38); }
6043        @@XMLTest:
6044          @@@QName: xp.xmldecl.standalone.malformed.2.test
6045          @@@DEnt:
6046            @@@@test:value:
6047              <?xml version="1.0" standalone="YES"?>
6048              <p></p>
6049          @@@c:erred:
6050            <[[xp:wf-malformed-xml-standalone]]> { (1, 21)..(1, 37); }
6051        @@XMLTest:
6052          @@@QName: xp.xmldecl.standalone.malformed.3.test
6053          @@@DEnt:
6054            @@@@test:value:
6055              <?xml version="1.0" standalone="no  "?>
6056              <p></p>
6057          @@@c:erred:
6058            <[[xp:wf-malformed-xml-standalone]]> { (1, 21)..(1, 38); }
6059            
6060      @@XMLTest:      @@XMLTest:
6061          @@@QName: xp.no-xmldecl.xml...-pi.test
6062          @@@DEnt:
6063            @@@@test:value:
6064              <?xmldeclaration?>
6065              <a></a>
6066          @@@test:domTree:
6067            document {
6068              pi {
6069                node-name: 'xmldeclaration';
6070                node-value: '';
6071              }
6072              element { }
6073            }
6074        @@XMLTest:
6075          @@@QName: xp.no-xmldecl.xml...-pi.after.document.element.test
6076          @@@DEnt:
6077            @@@@test:value:
6078              <a></a>
6079              <?xmldeclaration?>
6080          @@@test:domTree:
6081            document {
6082              element { }
6083              pi {
6084                node-name: 'xmldeclaration';
6085                node-value: '';
6086              }
6087            }
6088        @@XMLTest:
6089          @@@QName: xp.no-xmldecl.xml...-pi.in.document.element.test
6090          @@@DEnt:
6091            @@@@test:value:
6092              <a>
6093              <?xmldeclaration?>
6094              </a>
6095          @@@test:domTree:
6096            document {
6097              element {
6098                text { }
6099                pi {
6100                  node-name: 'xmldeclaration';
6101                  node-value: '';
6102                }
6103                text { }
6104              }
6105            }
6106        @@XMLTest:
6107          @@@QName: xp.no-xmldecl.xml...-pi.in.doctype.test
6108          @@@DEnt:
6109            @@@@test:value:
6110              <!DOCTYPE a [
6111              <?xmldeclaration?>
6112              ]>
6113              <a></a>
6114          @@@test:domTree:
6115            document {
6116              document-type {
6117                pi {
6118                  node-name: 'xmldeclaration';
6119                  node-value: '';
6120                }
6121              }
6122              element { }
6123            }
6124    
6125        @@XMLTest:
6126          @@@QName: xp.XMLdecl.test
6127          @@@DEnt:
6128            @@@@test:value:
6129              <?XML version="1.0"?>
6130              <p></p>
6131          @@@c:erred:
6132            <[[xp:wf-pi-target-is-xml]]> { (1, 1)..(1, 5); }
6133        @@XMLTest:
6134          @@@QName: xp.Xmldecl.test
6135          @@@DEnt:
6136            @@@@test:value:
6137              <?Xml version="1.0"?>
6138              <p></p>
6139          @@@c:erred:
6140            <[[xp:wf-pi-target-is-xml]]> { (1, 1)..(1, 5); }
6141        @@XMLTest:
6142          @@@QName: xp.xmldecl.after.document.element.empty.test
6143          @@@DEnt:
6144            @@@@test:value:
6145              <p></p>
6146              <?xml?>
6147          @@@c:erred:
6148            <[[xp:wf-pi-target-is-xml]]> { (2, 1)..(2, 5); }
6149        @@XMLTest:
6150          @@@QName: xp.xmldecl.after.document.element.test
6151          @@@DEnt:
6152            @@@@test:value:
6153              <p></p>
6154              <?xml version="1.0"?>
6155          @@@c:erred:
6156            <[[xp:wf-pi-target-is-xml]]> { (2, 1)..(2, 5); }
6157        @@XMLTest:
6158          @@@QName: xp.xmldecl.in.element.empty.test
6159          @@@DEnt:
6160            @@@@test:value:
6161              <p>
6162              <?xml?>
6163              </p>
6164          @@@c:erred:
6165            <[[xp:wf-pi-target-is-xml]]> { (2, 1)..(2, 5); }
6166        @@XMLTest:
6167          @@@QName: xp.xmldecl.in.element.test
6168          @@@DEnt:
6169            @@@@test:value:
6170              <p>
6171              <?xml version="1.0"?>
6172              </p>
6173          @@@c:erred:
6174            <[[xp:wf-pi-target-is-xml]]> { (2, 1)..(2, 5); }
6175        @@XMLTest:
6176          @@@QName: xp.xmldecl.after.comment.test
6177          @@@DEnt:
6178            @@@@test:value:
6179              <!---->
6180              <?xml version="1.0"?>
6181              <p></p>
6182          @@@c:erred:
6183            <[[xp:wf-pi-target-is-xml]]> { (2, 1)..(2, 5); }
6184        @@XMLTest:
6185          @@@QName: xp.xmldecl.after.comment.empty.test
6186          @@@DEnt:
6187            @@@@test:value:
6188              <!---->
6189              <?xml?>
6190              <p></p>
6191          @@@c:erred:
6192            <[[xp:wf-pi-target-is-xml]]> { (2, 1)..(2, 5); }
6193        @@XMLTest:
6194          @@@QName: xp.xmldecl.after.pi.test
6195          @@@DEnt:
6196            @@@@test:value:
6197              <?xml-declaration?>
6198              <?xml version="1.0"?>
6199              <p></p>
6200          @@@c:erred:
6201            <[[xp:wf-pi-target-is-xml]]> { (2, 1)..(2, 5); }
6202        @@XMLTest:
6203          @@@QName: xp.xmldecl.after.pi.empty.test
6204          @@@DEnt:
6205            @@@@test:value:
6206              <?xml-declaration?>
6207              <?xml?>
6208              <p></p>
6209          @@@c:erred:
6210            <[[xp:wf-pi-target-is-xml]]> { (2, 1)..(2, 5); }
6211        @@XMLTest:
6212          @@@QName: xp.xmldecl.after.pi.2.test
6213          @@@DEnt:
6214            @@@@test:value:
6215              <?declaration?>
6216              <?xml version="1.0"?>
6217              <p></p>
6218          @@@c:erred:
6219            <[[xp:wf-pi-target-is-xml]]> { (2, 1)..(2, 5); }
6220        @@XMLTest:
6221          @@@QName: xp.xmldecl.after.pi.empty.2.test
6222          @@@DEnt:
6223            @@@@test:value:
6224              <?declaration?>
6225              <?xml?>
6226              <p></p>
6227          @@@c:erred:
6228            <[[xp:wf-pi-target-is-xml]]> { (2, 1)..(2, 5); }
6229        @@XMLTest:
6230          @@@QName: xp.xmldecl.after.doctype.test
6231          @@@DEnt:
6232            @@@@test:value:
6233              <!DOCTYPE a>
6234              <?xml version="1.0"?>
6235              <p></p>
6236          @@@c:erred:
6237            <[[xp:wf-pi-target-is-xml]]> { (2, 1)..(2, 5); }
6238        @@XMLTest:
6239          @@@QName: xp.xmldecl.after.doctype.empty.test
6240          @@@DEnt:
6241            @@@@test:value:
6242              <!DOCTYPE a>
6243              <?xml?>
6244              <p></p>
6245          @@@c:erred:
6246            <[[xp:wf-pi-target-is-xml]]> { (2, 1)..(2, 5); }
6247        @@XMLTest:
6248          @@@QName: xp.xmldecl.in.doctype.test
6249          @@@DEnt:
6250            @@@@test:value:
6251              <!DOCTYPE a [
6252              <?xml version="1.0"?>
6253              ]>
6254              <p></p>
6255          @@@c:erred:
6256            <[[xp:wf-pi-target-is-xml]]> { (2, 1)..(2, 5); }
6257        @@XMLTest:
6258          @@@QName: xp.xmldecl.in.doctype.empty.test
6259          @@@DEnt:
6260            @@@@test:value:
6261              <!DOCTYPE a [
6262              <?xml?>
6263              ]>
6264              <p></p>
6265          @@@c:erred:
6266            <[[xp:wf-pi-target-is-xml]]> { (2, 1)..(2, 5); }
6267    
6268        @@XMLTest:
6269          @@@QName: xp.pi.before.element.empty.test
6270          @@@DEnt:
6271            @@@@test:value:
6272              <?target?>
6273              <a></a>
6274          @@@test:domTree:
6275            document {
6276              pi {
6277                node-name: 'target';
6278                node-value: '';
6279              }
6280              element { }
6281            }
6282        @@XMLTest:
6283          @@@QName: xp.pi.before.element.s.test
6284          @@@DEnt:
6285            @@@@test:value:
6286              <?target  ?>
6287              <a></a>
6288          @@@test:domTree:
6289            document {
6290              pi {
6291                node-name: 'target';
6292                node-value: '';
6293              }
6294              element { }
6295            }
6296        @@XMLTest:
6297          @@@QName: xp.pi.before.element.string.test
6298          @@@DEnt:
6299            @@@@test:value:
6300              <?target string?>
6301              <a></a>
6302          @@@test:domTree:
6303            document {
6304              pi {
6305                node-name: 'target';
6306                node-value: 'string';
6307              }
6308              element { }
6309            }
6310        @@XMLTest:
6311          @@@QName: xp.pi.before.element.string.s.test
6312          @@@DEnt:
6313            @@@@test:value:
6314              <?target string  ?>
6315              <a></a>
6316          @@@test:domTree:
6317            document {
6318              pi {
6319                node-name: 'target';
6320                node-value: 'string  ';
6321              }
6322              element { }
6323            }
6324        @@XMLTest:
6325          @@@QName: xp.pi.before.element.gt.test
6326          @@@DEnt:
6327            @@@@test:value:
6328              <?target string>string?>
6329              <a></a>
6330          @@@test:domTree:
6331            document {
6332              pi {
6333                node-name: 'target';
6334                node-value: 'string>string';
6335              }
6336              element { }
6337            }
6338        @@XMLTest:
6339          @@@QName: xp.pi.doctype.empty.test
6340          @@@DEnt:
6341            @@@@test:value:
6342              <!DOCTYPE a [
6343              <?target?>
6344              ]>
6345              <a></a>
6346          @@@test:domTree:
6347            document {
6348              document-type {
6349                pi {
6350                  node-name: 'target';
6351                  node-value: '';
6352                }
6353              }
6354              element { }
6355            }
6356    
6357        @@XMLTest:
6358          @@@QName: xp.pi.no.target.test
6359          @@@DEnt:
6360            @@@@test:value:
6361              <??>
6362              <p></p>
6363          @@@c:erred:
6364            <[[xp:wf-syntax-error]]> { (1, 3)..(1, 4); }
6365        @@XMLTest:
6366          @@@QName: xp.pi.no.target.2.test
6367          @@@DEnt:
6368            @@@@test:value:
6369              <?  ?>
6370              <p></p>
6371          @@@c:erred:
6372            <[[xp:wf-syntax-error]]> { (1, 3)..(1, 4); }
6373        @@XMLTest:
6374          @@@QName: xp.pi.bad.target.1.test
6375          @@@DEnt:
6376            @@@@test:value:
6377              <?target!  ?>
6378              <p></p>
6379          @@@c:erred:
6380            <[[xp:wf-syntax-error]]> { (1, 9)..(1, 9); }
6381        @@XMLTest:
6382          @@@QName: xp.pi.bad.target.2.test
6383          @@@DEnt:
6384            @@@@test:value:
6385              <?0target  ?>
6386              <p></p>
6387          @@@c:erred:
6388            <[[xp:wf-syntax-error]]> { (1, 3)..(1, 3); }
6389    
6390        @@XMLTest:
6391          @@@QName: xp.cdatasection.empty.1.test
6392          @@@DEnt:
6393            @@@@test:value:
6394              <p><![CDATA[]]></p>
6395          @@@test:domTree:
6396            document {
6397              element {
6398                cdata-section {
6399                  data: '';
6400                }
6401              }
6402            }
6403        @@XMLTest:
6404          @@@QName: xp.cdatasection.empty.2.test
6405          @@@DEnt:
6406            @@@@test:value:
6407              <p>aa<![CDATA[]]>bb</p>
6408          @@@test:domTree:
6409            document {
6410              element {
6411                text { data: 'aa'; }
6412                cdata-section {
6413                  data: '';
6414                }
6415                text { data: 'bb'; }
6416              }
6417            }
6418        @@XMLTest:
6419          @@@QName: xp.cdatasection.1.test
6420          @@@DEnt:
6421            @@@@test:value:
6422              <p><![CDATA[abcdefg]]></p>
6423          @@@test:domTree:
6424            document {
6425              element {
6426                cdata-section {
6427                  data: 'abcdefg';
6428                }
6429              }
6430            }
6431        @@XMLTest:
6432          @@@QName: xp.cdatasection.2.test
6433          @@@DEnt:
6434            @@@@test:value:
6435              <p>aa<![CDATA[abcdefg]]>bb</p>
6436          @@@test:domTree:
6437            document {
6438              element {
6439                text { data: 'aa'; }
6440                cdata-section {
6441                  data: 'abcdefg';
6442                }
6443                text { data: 'bb'; }
6444              }
6445            }
6446        @@XMLTest:
6447          @@@QName: xp.cdatasection.ref.1.test
6448          @@@DEnt:
6449            @@@@test:value:
6450              <p><![CDATA[a&amp;&#x32;&#32;%abc;&def;]]&gt;b]]></p>
6451          @@@test:domTree:
6452            document {
6453              element {
6454                cdata-section {
6455                  data: 'a&amp;&#x32;&#32;%abc;&def;]]&gt;b';
6456                }
6457              }
6458            }
6459        @@XMLTest:
6460          @@@QName: xp.cdatasection.in.general.entity.test
6461          @@@DEnt:
6462            @@@@test:value:
6463              <!DOCTYPE p [
6464                <!ENTITY cdata "<![CDATA[text]]>">
6465              ]>
6466              <p>&cdata;</p>
6467          @@@cfg:entity-replacement-tree: 1
6468          @@@test:domTree:
6469            document {
6470              document-type {
6471                general-entity {
6472                  node-name: 'cdata';
6473                  cdata-section {
6474                    data: 'text';
6475                  }
6476                }
6477              }
6478              element {
6479                general-entity-reference {
6480                  node-name: 'cdata';
6481                  manakai-expanded: true;
6482                  cdata-section {
6483                    data: 'text';
6484                  }
6485                }
6486              }
6487            }
6488        @@XMLTest:
6489          @@@QName: xp.cdatasection.no.mse.test
6490          @@@DEnt:
6491            @@@@test:value:
6492              <p><![CDATA[text</p>
6493          @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 21); }
6494        @@XMLTest:
6495          @@@QName: xp.cdatasection.nest.test
6496          @@@DEnt:
6497            @@@@test:value:
6498              <p><![CDATA[text01<![CDATA[txt2]]>text3]]></p>
6499          @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 40)..(1, 42); }
6500    
6501        @@XMLTest:
6502        @@@QName: xp.doctype.empty.test        @@@QName: xp.doctype.empty.test
6503        @@@DEnt:        @@@DEnt:
6504          @@@@test:value:          @@@@test:value:
# Line 3435  _ Line 6511  _
6511            xml-standalone: false;            xml-standalone: false;
6512            document-type {            document-type {
6513              node-name: 'a';              node-name: 'a';
6514                public-id: null;
6515                system-id: null;
6516            }            }
6517            element {            element {
6518              namespace-uri: null;              namespace-uri: null;
# Line 3443  _ Line 6521  _
6521              text-content: '';              text-content: '';
6522            }            }
6523          }          }
6524        @@XMLTest:
6525          @@@QName: xp.doctype.empty.after.document.element.test
6526          @@@DEnt:
6527            @@@@test:value:
6528              <a></a>
6529              <!DOCTYPE a>
6530          @@@c:erred: <[[xp|wf-syntax-error]]> { (2, 1)..(2, 12); }
6531        @@XMLTest:
6532          @@@QName: xp.doctype.empty.in.element.test
6533          @@@DEnt:
6534            @@@@test:value:
6535              <a>
6536              <!DOCTYPE a>
6537              </a>
6538          @@@c:erred: <[[xp|wf-syntax-error]]> { (2, 1)..(2, 12); }
6539        @@XMLTest:
6540          @@@QName: xp.doctype.empty.dup.test
6541          @@@DEnt:
6542            @@@@test:value:
6543              <!DOCTYPE a>
6544              <!DOCTYPE a>
6545              <a></a>
6546          @@@c:erred: <[[xp|wf-syntax-error]]> { (2, 1)..(2, 12); }
6547        @@XMLTest:
6548          @@@QName: xp.doctype.empty.in.intsubset.test
6549          @@@DEnt:
6550            @@@@test:value:
6551              <!DOCTYPE a [
6552              <!DOCTYPE a>
6553              ]>
6554              <a></a>
6555          @@@c:erred: <[[xp|wf-syntax-error]]> { (2, 1)..(2, 12); }
6556        @@XMLTest:
6557          @@@QName: xp.doctype.no.s.no.name.test
6558          @@@DEnt:
6559            @@@@test:value:
6560              <!DOCTYPE>
6561              <a></a>
6562          @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 10); }
6563        @@XMLTest:
6564          @@@QName: xp.doctype.no.name.test
6565          @@@DEnt:
6566            @@@@test:value:
6567              <!DOCTYPE >
6568              <a></a>
6569          @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 11); }
6570        @@XMLTest:
6571          @@@QName: xp.doctype.name.s.test
6572          @@@DEnt:
6573            @@@@test:value:
6574              <!DOCTYPE aa   >
6575              <aa></aa>
6576          @@@test:domTree:
6577            document {
6578              document-type {
6579                node-name: 'aa';
6580                public-id: null;
6581                system-id: null;
6582              }
6583              element { }
6584            }
6585        @@XMLTest:
6586          @@@QName: xp.doctype.no.mdc.test
6587          @@@DEnt:
6588            @@@@test:value:
6589              <!DOCTYPE aa
6590              <aa></aa>
6591          @@@c:erred: <[[xp|wf-syntax-error]]> { (2, 1); }
6592    
6593      @@XMLTest:      @@XMLTest:
6594        @@@QName: xp.doctype.intsubset.empty.test        @@@QName: xp.doctype.intsubset.empty.1.test
6595          @@@DEnt:
6596            @@@@test:value:
6597              <!DOCTYPE a []>
6598              <a></a>
6599          @@@test:domTree:
6600            document {
6601              xml-version: '1.0';
6602              xml-encoding: null;
6603              xml-standalone: false;
6604              document-type {
6605                node-name: 'a';
6606                public-id: null;
6607                system-id: null;
6608              }
6609              element {
6610                namespace-uri: null;
6611                prefix: null;
6612                local-name: 'a';
6613                text-content: '';
6614              }
6615            }
6616        @@XMLTest:
6617          @@@QName: xp.doctype.intsubset.empty.2.test
6618        @@@DEnt:        @@@DEnt:
6619          @@@@test:value:          @@@@test:value:
6620            <!DOCTYPE a [            <!DOCTYPE a [
# Line 3459  _ Line 6628  _
6628            xml-standalone: false;            xml-standalone: false;
6629            document-type {            document-type {
6630              node-name: 'a';              node-name: 'a';
6631                public-id: null;
6632                system-id: null;
6633            }            }
6634            element {            element {
6635              namespace-uri: null;              namespace-uri: null;
# Line 3467  _ Line 6638  _
6638              text-content: '';              text-content: '';
6639            }            }
6640          }          }
6641        @@XMLTest:
6642          @@@QName: xp.doctype.intsubset.empty.3.test
6643          @@@DEnt:
6644            @@@@test:value:
6645              <!DOCTYPE a[]>
6646              <a></a>
6647          @@@test:domTree:
6648            document {
6649              document-type {
6650                node-name: 'a';
6651                public-id: null;
6652                system-id: null;
6653              }
6654              element { }
6655            }
6656        @@XMLTest:
6657          @@@QName: xp.doctype.intsubset.empty.4.test
6658          @@@DEnt:
6659            @@@@test:value:
6660              <!DOCTYPE a[]  >
6661              <a></a>
6662          @@@test:domTree:
6663            document {
6664              document-type {
6665                node-name: 'a';
6666                public-id: null;
6667                system-id: null;
6668              }
6669              element { }
6670            }
6671        @@XMLTest:
6672          @@@QName: xp.doctype.intsubset.no.dsc.1.test
6673          @@@DEnt:
6674            @@@@test:value:
6675              <!DOCTYPE a [>
6676              <a></a>
6677          @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 14); }
6678        @@XMLTest:
6679          @@@QName: xp.doctype.intsubset.no.dsc.2.test
6680          @@@DEnt:
6681            @@@@test:value:
6682              <!DOCTYPE a [
6683              <a></a>
6684          @@@c:erred: <[[xp|wf-syntax-error]]> { (2, 1); }
6685        @@XMLTest:
6686          @@@QName: xp.doctype.intsubset.no.dsc.3.test
6687          @@@DEnt:
6688            @@@@test:value:
6689              <!DOCTYPE a [
6690          @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 14); }
6691        @@XMLTest:
6692          @@@QName: xp.doctype.intsubset.no.mdc.1.test
6693          @@@DEnt:
6694            @@@@test:value:
6695              <!DOCTYPE a []
6696              <a/>
6697          @@@c:erred: <[[xp|wf-syntax-error]]> { (2, 1); }
6698        @@XMLTest:
6699          @@@QName: xp.doctype.intsubset.no.mdc.2.test
6700          @@@DEnt:
6701            @@@@test:value:
6702              <!DOCTYPE a []]>
6703              <a/>
6704          @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 15); }
6705        @@XMLTest:
6706          @@@QName: xp.doctype.pubid.sysid.1.test
6707          @@@DEnt:
6708            @@@@test:value:
6709              <!DOCTYPE a PUBLIC "pubid" "sysid">
6710              <a/>
6711          @@@test:domTree:
6712            document {
6713              document-type {
6714                node-name: 'a';
6715                public-id: 'pubid';
6716                system-id: 'sysid';
6717              }
6718              element { }
6719            }
6720        @@XMLTest:
6721          @@@QName: xp.doctype.pubid.sysid.2.test
6722          @@@DEnt:
6723            @@@@test:value:
6724              <!DOCTYPE a PUBLIC 'pubid' "sysid">
6725              <a/>
6726          @@@test:domTree:
6727            document {
6728              document-type {
6729                node-name: 'a';
6730                public-id: 'pubid';
6731                system-id: 'sysid';
6732              }
6733              element { }
6734            }
6735        @@XMLTest:
6736          @@@QName: xp.doctype.pubid.sysid.3.test
6737          @@@DEnt:
6738            @@@@test:value:
6739              <!DOCTYPE a PUBLIC "pubid" 'sysid'>
6740              <a/>
6741          @@@test:domTree:
6742            document {
6743              document-type {
6744                node-name: 'a';
6745                public-id: 'pubid';
6746                system-id: 'sysid';
6747              }
6748              element { }
6749            }
6750        @@XMLTest:
6751          @@@QName: xp.doctype.pubid.sysid.4.test
6752          @@@DEnt:
6753            @@@@test:value:
6754              <!DOCTYPE a PUBLIC 'pubid' 'sysid'>
6755              <a/>
6756          @@@test:domTree:
6757            document {
6758              document-type {
6759                node-name: 'a';
6760                public-id: 'pubid';
6761                system-id: 'sysid';
6762              }
6763              element { }
6764            }
6765        @@XMLTest:
6766          @@@QName: xp.doctype.pubid.sysid.5.test
6767          @@@DEnt:
6768            @@@@test:value:
6769              <!DOCTYPE a PUBLIC "pubid" "sysid"  >
6770              <a/>
6771          @@@test:domTree:
6772            document {
6773              document-type {
6774                node-name: 'a';
6775                public-id: 'pubid';
6776                system-id: 'sysid';
6777              }
6778              element { }
6779            }
6780        @@XMLTest:
6781          @@@QName: xp.doctype.pubid.sysid.6.test
6782          @@@DEnt:
6783            @@@@test:value:
6784              <!DOCTYPE a PUBLIC 'pubid' 'sysid'  >
6785              <a/>
6786          @@@test:domTree:
6787            document {
6788              document-type {
6789                node-name: 'a';
6790                public-id: 'pubid';
6791                system-id: 'sysid';
6792              }
6793              element { }
6794            }
6795        @@XMLTest:
6796          @@@QName: xp.doctype.pubid.sysid.intsubset.1.test
6797          @@@DEnt:
6798            @@@@test:value:
6799              <!DOCTYPE a PUBLIC "pubid" "sysid"[]>
6800              <a/>
6801          @@@test:domTree:
6802            document {
6803              document-type {
6804                node-name: 'a';
6805                public-id: 'pubid';
6806                system-id: 'sysid';
6807              }
6808              element { }
6809            }
6810        @@XMLTest:
6811          @@@QName: xp.doctype.pubid.sysid.intsubset.2.test
6812          @@@DEnt:
6813            @@@@test:value:
6814              <!DOCTYPE a PUBLIC "pubid" "sysid"  []>
6815              <a/>
6816          @@@test:domTree:
6817            document {
6818              document-type {
6819                node-name: 'a';
6820                public-id: 'pubid';
6821                system-id: 'sysid';
6822              }
6823              element { }
6824            }
6825        @@XMLTest:
6826          @@@QName: xp.doctype.pubid.sysid.intsubset.3.test
6827          @@@DEnt:
6828            @@@@test:value:
6829              <!DOCTYPE a PUBLIC 'pubid' 'sysid'[]>
6830              <a/>
6831          @@@test:domTree:
6832            document {
6833              document-type {
6834                node-name: 'a';
6835                public-id: 'pubid';
6836                system-id: 'sysid';
6837              }
6838              element { }
6839            }
6840        @@XMLTest:
6841          @@@QName: xp.doctype.pubid.sysid.intsubset.4.test
6842          @@@DEnt:
6843            @@@@test:value:
6844              <!DOCTYPE a PUBLIC 'pubid' 'sysid'  []>
6845              <a/>
6846          @@@test:domTree:
6847            document {
6848              document-type {
6849                node-name: 'a';
6850                public-id: 'pubid';
6851                system-id: 'sysid';
6852              }
6853              element { }
6854            }
6855        @@XMLTest:
6856          @@@QName: xp.doctype.sysid.1.test
6857          @@@DEnt:
6858            @@@@test:value:
6859              <!DOCTYPE a SYSTEM "sysid">
6860              <a/>
6861          @@@test:domTree:
6862            document {
6863              document-type {
6864                node-name: 'a';
6865                public-id: null;
6866                system-id: 'sysid';
6867              }
6868              element { }
6869            }
6870        @@XMLTest:
6871          @@@QName: xp.doctype.sysid.2.test
6872          @@@DEnt:
6873            @@@@test:value:
6874              <!DOCTYPE a SYSTEM 'sysid'>
6875              <a/>
6876          @@@test:domTree:
6877            document {
6878              document-type {
6879                node-name: 'a';
6880                public-id: null;
6881                system-id: 'sysid';
6882              }
6883              element { }
6884            }
6885        @@XMLTest:
6886          @@@QName: xp.doctype.sysid.3.test
6887          @@@DEnt:
6888            @@@@test:value:
6889              <!DOCTYPE a SYSTEM "sysid"  >
6890              <a/>
6891          @@@test:domTree:
6892            document {
6893              document-type {
6894                node-name: 'a';
6895                public-id: null;
6896                system-id: 'sysid';
6897              }
6898              element { }
6899            }
6900        @@XMLTest:
6901          @@@QName: xp.doctype.sysid.4.test
6902          @@@DEnt:
6903            @@@@test:value:
6904              <!DOCTYPE a SYSTEM 'sysid'  >
6905              <a/>
6906          @@@test:domTree:
6907            document {
6908              document-type {
6909                node-name: 'a';
6910                public-id: null;
6911                system-id: 'sysid';
6912              }
6913              element { }
6914            }
6915        @@XMLTest:
6916          @@@QName: xp.doctype.sysid.intsubset.1.test
6917          @@@DEnt:
6918            @@@@test:value:
6919              <!DOCTYPE a SYSTEM "sysid"[]>
6920              <a/>
6921          @@@test:domTree:
6922            document {
6923              document-type {
6924                node-name: 'a';
6925                public-id: null;
6926                system-id: 'sysid';
6927              }
6928              element { }
6929            }
6930        @@XMLTest:
6931          @@@QName: xp.doctype.sysid.intsubset.2.test
6932          @@@DEnt:
6933            @@@@test:value:
6934              <!DOCTYPE a SYSTEM "sysid"  []>
6935              <a/>
6936          @@@test:domTree:
6937            document {
6938              document-type {
6939                node-name: 'a';
6940                public-id: null;
6941                system-id: 'sysid';
6942              }
6943              element { }
6944            }
6945        @@XMLTest:
6946          @@@QName: xp.doctype.sysid.intsubset.3.test
6947          @@@DEnt:
6948            @@@@test:value:
6949              <!DOCTYPE a SYSTEM 'sysid'[]>
6950              <a/>
6951          @@@test:domTree:
6952            document {
6953              document-type {
6954                node-name: 'a';
6955                public-id: null;
6956                system-id: 'sysid';
6957              }
6958              element { }
6959            }
6960        @@XMLTest:
6961          @@@QName: xp.doctype.sysid.intsubset.4.test
6962          @@@DEnt:
6963            @@@@test:value:
6964              <!DOCTYPE a SYSTEM 'sysid'   []>
6965              <a/>
6966          @@@test:domTree:
6967            document {
6968              document-type {
6969                node-name: 'a';
6970                public-id: null;
6971                system-id: 'sysid';
6972              }
6973              element { }
6974            }
6975        @@XMLTest:
6976          @@@QName: xp.doctype.public.stago.test
6977          @@@DEnt:
6978            @@@@test:value:
6979              <!DOCTYPE a PUBLIC<a/>
6980          @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 19); }
6981        @@XMLTest:
6982          @@@QName: xp.doctype.public.mdc.test
6983          @@@DEnt:
6984            @@@@test:value:
6985              <!DOCTYPE a PUBLIC>
6986              <a/>
6987          @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 19); }
6988        @@XMLTest:
6989          @@@QName: xp.doctype.public.s.stago.test
6990          @@@DEnt:
6991            @@@@test:value:
6992              <!DOCTYPE a PUBLIC <a/>
6993          @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 20); }
6994        @@XMLTest:
6995          @@@QName: xp.doctype.public.s.mdc.test
6996          @@@DEnt:
6997            @@@@test:value:
6998              <!DOCTYPE a PUBLIC >
6999              <a/>
7000          @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 20); }
7001        @@XMLTest:
7002          @@@QName: xp.doctype.public.lit.test
7003          @@@DEnt:
7004            @@@@test:value:
7005              <!DOCTYPE a PUBLIC"p" "s">
7006              <a/>
7007          @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 19); }
7008        @@XMLTest:
7009          @@@QName: xp.doctype.public.lita.test
7010          @@@DEnt:
7011            @@@@test:value:
7012              <!DOCTYPE a PUBLIC'p' "s">
7013              <a/>
7014          @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 19); }
7015        @@XMLTest:
7016          @@@QName: xp.doctype.pubid.lit.lita.unmatched.1.test
7017          @@@DEnt:
7018            @@@@test:value:
7019              <!DOCTYPE a PUBLIC "p' "s">
7020              <a/>
7021          @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 25); }
7022        @@XMLTest:
7023          @@@QName: xp.doctype.pubid.lit.lita.unmatched.2.test
7024          @@@DEnt:
7025            @@@@test:value:
7026              <!DOCTYPE a PUBLIC "p' 's'><a/>
7027          @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 32); }
7028        @@XMLTest:
7029          @@@QName: xp.doctype.pubid.lita.lit.unmatched.1.test
7030          @@@DEnt:
7031            @@@@test:value:
7032              <!DOCTYPE a PUBLIC 'p" "s"><a/>
7033          @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 32); }
7034        @@XMLTest:
7035          @@@QName: xp.doctype.pubid.lita.lit.unmatched.2.test
7036          @@@DEnt:
7037            @@@@test:value:
7038              <!DOCTYPE a PUBLIC 'p" 's'>
7039              <a/>
7040          @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 21)..(1, 25); }
7041        @@XMLTest:
7042          @@@QName: xp.doctype.public.s.lit.mdc.test
7043          @@@DEnt:
7044            @@@@test:value:
7045              <!DOCTYPE a PUBLIC "><a/>
7046          @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 26); }
7047        @@XMLTest:
7048          @@@QName: xp.doctype.public.s.lita.mdc.test
7049          @@@DEnt:
7050            @@@@test:value:
7051              <!DOCTYPE a PUBLIC '><a/>
7052          @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 26); }
7053        @@XMLTest:
7054          @@@QName: xp.doctype.public.lit.pubid.lit.mdc.test
7055          @@@DEnt:
7056            @@@@test:value:
7057              <!DOCTYPE a PUBLIC "p">
7058              <a/>
7059          @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 23); }
7060        @@XMLTest:
7061          @@@QName: xp.doctype.public.lita.pubid.lita.mdc.test
7062          @@@DEnt:
7063            @@@@test:value:
7064              <!DOCTYPE a PUBLIC 'p'>
7065              <a/>
7066          @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 23); }
7067        @@XMLTest:
7068          @@@QName: xp.doctype.public.lit.pubid.lit.s.mdc.test
7069          @@@DEnt:
7070            @@@@test:value:
7071              <!DOCTYPE a PUBLIC "p" >
7072              <a/>
7073          @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 24); }
7074        @@XMLTest:
7075          @@@QName: xp.doctype.public.lita.pubid.lita.s.mdc.test
7076          @@@DEnt:
7077            @@@@test:value:
7078              <!DOCTYPE a PUBLIC 'p' >
7079              <a/>
7080          @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 24); }
7081        @@XMLTest:
7082          @@@QName: xp.doctype.public.lit.pubid.lit.s.lit.mdc.test
7083          @@@DEnt:
7084            @@@@test:value:
7085              <!DOCTYPE a PUBLIC "p" "><a/>
7086          @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 30); }
7087        @@XMLTest:
7088          @@@QName: xp.doctype.public.lit.pubid.lit.s.lita.mdc.test
7089          @@@DEnt:
7090            @@@@test:value:
7091              <!DOCTYPE a PUBLIC "p" '><a/>
7092          @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 30); }
7093        @@XMLTest:
7094          @@@QName: xp.doctype.public.lita.pubid.lita.s.lit.mdc.test
7095          @@@DEnt:
7096            @@@@test:value:
7097              <!DOCTYPE a PUBLIC 'p' "><a/>
7098          @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 30); }
7099        @@XMLTest:
7100          @@@QName: xp.doctype.public.lita.pubid.lita.s.lita.mdc.test
7101          @@@DEnt:
7102            @@@@test:value:
7103              <!DOCTYPE a PUBLIC 'p' '><a/>
7104          @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 30); }
7105        @@XMLTest:
7106          @@@QName: xp.doctype.public.lit.pubid.lit.lit.lita.unmatched.mdc.test
7107          @@@DEnt:
7108            @@@@test:value:
7109              <!DOCTYPE a PUBLIC "p" "s'><a/>
7110          @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 32); }
7111        @@XMLTest:
7112          @@@QName: xp.doctype.public.lita.pubid.lita.lita.lit.unmatched.mdc.test
7113          @@@DEnt:
7114            @@@@test:value:
7115              <!DOCTYPE a PUBLIC 'p' 's"><a/>
7116          @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 32); }
7117        @@XMLTest:
7118          @@@QName: xp.doctype.pubid.sysid.stago.1.test
7119          @@@DEnt:
7120            @@@@test:value:
7121              <!DOCTYPE a PUBLIC "p" "s"<a/>
7122          @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 27); }
7123        @@XMLTest:
7124          @@@QName: xp.doctype.pubid.sysid.stago.2.test
7125          @@@DEnt:
7126            @@@@test:value:
7127              <!DOCTYPE a PUBLIC "p" 's'<a/>
7128          @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 27); }
7129        @@XMLTest:
7130          @@@QName: xp.doctype.pubid.sysid.stago.s.1.test
7131          @@@DEnt:
7132            @@@@test:value:
7133              <!DOCTYPE a PUBLIC "p" "s" <a/>
7134          @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 28); }
7135        @@XMLTest:
7136          @@@QName: xp.doctype.pubid.sysid.stago.s.2.test
7137          @@@DEnt:
7138            @@@@test:value:
7139              <!DOCTYPE a PUBLIC "p" 's' <a/>
7140          @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 28); }
7141    
7142        @@XMLTest:
7143          @@@QName: xp.endofline.1.0.crlf.test
7144          @@@DEnt:
7145            @@@@test:value:
7146              <?xml version="1.0"?>
7147              <p>aaa$u000D$u000Abbb</p>
7148          @@@test:domTree:
7149            document {
7150              xml-version: '1.0';
7151              element {
7152                text-content: 'aaa' U+000A 'bbb';
7153              }
7154            }
7155        @@XMLTest:
7156          @@@QName: xp.endofline.1.1.crlf.test
7157          @@@DEnt:
7158            @@@@test:value:
7159              <?xml version="1.1"?>
7160              <p>aaa$u000D$u000Abbb</p>
7161          @@@test:domTree:
7162            document {
7163              xml-version: '1.1';
7164              element {
7165                text-content: 'aaa' U+000A 'bbb';
7166              }
7167            }
7168        @@XMLTest:
7169          @@@QName: xp.endofline.1.0.crnl.test
7170          @@@DEnt:
7171            @@@@test:value:
7172              <?xml version="1.0"?>
7173              <p>aaa$u000D$u0085bbb</p>
7174          @@@test:domTree:
7175            document {
7176              xml-version: '1.0';
7177              element {
7178                text-content: 'aaa' U+000A U+0085 'bbb';
7179              }
7180            }
7181        @@XMLTest:
7182          @@@QName: xp.endofline.1.1.crnl.test
7183          @@@DEnt:
7184            @@@@test:value:
7185              <?xml version="1.1"?>
7186              <p>aaa$u000D$u0085bbb</p>
7187          @@@test:domTree:
7188            document {
7189              xml-version: '1.1';
7190              element {
7191                text-content: 'aaa' U+000A 'bbb';
7192              }
7193            }
7194        @@XMLTest:
7195          @@@QName: xp.endofline.1.0.nl.test
7196          @@@DEnt:
7197            @@@@test:value:
7198              <?xml version="1.0"?>
7199              <p>aaa$u0085bbb</p>
7200          @@@test:domTree:
7201            document {
7202              xml-version: '1.0';
7203              element {
7204                text-content: 'aaa' U+0085 'bbb';
7205              }
7206            }
7207        @@XMLTest:
7208          @@@QName: xp.endofline.1.1.nl.test
7209          @@@DEnt:
7210            @@@@test:value:
7211              <?xml version="1.1"?>
7212              <p>aaa$u0085bbb</p>
7213          @@@test:domTree:
7214            document {
7215              xml-version: '1.1';
7216              element {
7217                text-content: 'aaa' U+000A 'bbb';
7218              }
7219            }
7220        @@XMLTest:
7221          @@@QName: xp.endofline.1.0.ls.test
7222          @@@DEnt:
7223            @@@@test:value:
7224              <?xml version="1.0"?>
7225              <p>aaa$u2028bbb</p>
7226          @@@test:domTree:
7227            document {
7228              xml-version: '1.0';
7229              element {
7230                text-content: 'aaa' U+2028 'bbb';
7231              }
7232            }
7233        @@XMLTest:
7234          @@@QName: xp.endofline.1.1.ls.test
7235          @@@DEnt:
7236            @@@@test:value:
7237              <?xml version="1.1"?>
7238              <p>aaa$u2028bbb</p>
7239          @@@test:domTree:
7240            document {
7241              xml-version: '1.1';
7242              element {
7243                text-content: 'aaa' U+000A 'bbb';
7244              }
7245            }
7246        @@XMLTest:
7247          @@@QName: xp.endofline.1.0.cr.test
7248          @@@DEnt:
7249            @@@@test:value:
7250              <?xml version="1.0"?>
7251              <p>aaa$u000Dbbb</p>
7252          @@@test:domTree:
7253            document {
7254              xml-version: '1.0';
7255              element {
7256                text-content: 'aaa' U+000A 'bbb';
7257              }
7258            }
7259        @@XMLTest:
7260          @@@QName: xp.endofline.1.1.cr.test
7261          @@@DEnt:
7262            @@@@test:value:
7263              <?xml version="1.1"?>
7264              <p>aaa$u000Dbbb</p>
7265          @@@test:domTree:
7266            document {
7267              xml-version: '1.1';
7268              element {
7269                text-content: 'aaa' U+000A 'bbb';
7270              }
7271            }
7272        @@XMLTest:
7273          @@@QName: xp.endofline.1.0.lf.test
7274          @@@DEnt:
7275            @@@@test:value:
7276              <?xml version="1.0"?>
7277              <p>aaa$u000Abbb</p>
7278          @@@test:domTree:
7279            document {
7280              xml-version: '1.0';
7281              element {
7282                text-content: 'aaa' U+000A 'bbb';
7283              }
7284            }
7285        @@XMLTest:
7286          @@@QName: xp.endofline.1.1.lf.test
7287          @@@DEnt:
7288            @@@@test:value:
7289              <?xml version="1.1"?>
7290              <p>aaa$u000Abbb</p>
7291          @@@test:domTree:
7292            document {
7293              xml-version: '1.1';
7294              element {
7295                text-content: 'aaa' U+000A 'bbb';
7296              }
7297            }
7298        @@XMLTest:
7299          @@@QName: xp.xml10.endofline.nl.in.xmldecl.1.test
7300          @@@DEnt:
7301            @@@@test:value:
7302              <?xml$u0085version="1.0"?>
7303              <p/>
7304          @@@c:erred:
7305            <[[xp|fatal-xml11-end-of-line-in-xml-declaration]]> { (1, 6)..(2, 0); }
7306          @@@c:erred: <[[xp|wf-syntax-error]]> { }
7307        @@XMLTest:
7308          @@@QName: xp.xml11.endofline.nl.in.xmldecl.1.test
7309          @@@DEnt:
7310            @@@@test:value:
7311              <?xml$u0085version="1.1"?>
7312              (err)<p/>
7313          @@@c:erred:
7314            <[[xp|fatal-xml11-end-of-line-in-xml-declaration]]> { (1, 6)..(2, 0); }
7315          @@@c:erred: <[[xp|wf-syntax-error]]> { }
7316        @@XMLTest:
7317          @@@QName: xp.xml10.endofline.crnl.in.xmldecl.1.test
7318          @@@DEnt:
7319            @@@@test:value:
7320              <?xml$u000D$u0085version="1.0"?>
7321              <p/>
7322          @@@c:erred:
7323            <[[xp|fatal-xml11-end-of-line-in-xml-declaration]]> { (1, 6)..(2, 0); }
7324          @@@c:erred: <[[xp|wf-syntax-error]]> { }
7325        @@XMLTest:
7326          @@@QName: xp.xml11.endofline.crnl.in.xmldecl.1.test
7327          @@@DEnt:
7328            @@@@test:value:
7329              <?xml$u000D$u0085version="1.1"?>
7330              (err)<p/>
7331          @@@c:erred:
7332            <[[xp|fatal-xml11-end-of-line-in-xml-declaration]]> { (1, 6)..(2, 0); }
7333          @@@c:erred: <[[xp|wf-syntax-error]]> { }
7334        @@XMLTest:
7335          @@@QName: xp.xml10.endofline.ls.in.xmldecl.1.test
7336          @@@DEnt:
7337            @@@@test:value:
7338              <?xml$u2028version="1.0"?>
7339              <p/>
7340          @@@c:erred:
7341            <[[xp|fatal-xml11-end-of-line-in-xml-declaration]]> { (1, 6)..(2, 0); }
7342          @@@c:erred: <[[xp|wf-syntax-error]]> { }
7343        @@XMLTest:
7344          @@@QName: xp.xml11.endofline.ls.in.xmldecl.1.test
7345          @@@DEnt:
7346            @@@@test:value:
7347              <?xml$u2028version="1.1"?>
7348              (err)<p/>
7349          @@@c:erred:
7350            <[[xp|fatal-xml11-end-of-line-in-xml-declaration]]> { (1, 6)..(2, 0); }
7351          @@@c:erred: <[[xp|wf-syntax-error]]> { }
7352        @@XMLTest:
7353          @@@QName: xp.xml10.endofline.nl.in.xmldecl.2.test
7354          @@@DEnt:
7355            @@@@test:value:
7356              <?xml version="1.0"$u0085?>
7357              <p/>
7358          @@@c:erred:
7359            <[[xp|fatal-xml11-end-of-line-in-xml-declaration]]> { (1, 20)..(2, 0); }
7360          @@@c:erred: <[[xp|wf-syntax-error]]> { }
7361        @@XMLTest:
7362          @@@QName: xp.xml11.endofline.nl.in.xmldecl.2.test
7363          @@@DEnt:
7364            @@@@test:value:
7365              <?xml version="1.1"$u0085?>
7366              (err)<p/>
7367          @@@c:erred:
7368            <[[xp|fatal-xml11-end-of-line-in-xml-declaration]]> { (1, 20)..(2, 0); }
7369          @@@c:erred: <[[xp|wf-syntax-error]]> { }
7370        @@XMLTest:
7371          @@@QName: xp.xml10.endofline.crnl.in.xmldecl.2.test
7372          @@@DEnt:
7373            @@@@test:value:
7374              <?xml version="1.0"$u000D$u0085?>
7375              <p/>
7376          @@@c:erred:
7377            <[[xp|fatal-xml11-end-of-line-in-xml-declaration]]> { (1, 20)..(2, 0); }
7378          @@@c:erred: <[[xp|wf-syntax-error]]> { }
7379        @@XMLTest:
7380          @@@QName: xp.xml11.endofline.crnl.in.xmldecl.2.test
7381          @@@DEnt:
7382            @@@@test:value:
7383              <?xml version="1.1"$u000D$u0085?>
7384              (err)<p/>
7385          @@@c:erred:
7386            <[[xp|fatal-xml11-end-of-line-in-xml-declaration]]> { (1, 20)..(2, 0); }
7387          @@@c:erred: <[[xp|wf-syntax-error]]> { }
7388        @@XMLTest:
7389          @@@QName: xp.xml10.endofline.ls.in.xmldecl.2.test
7390          @@@DEnt:
7391            @@@@test:value:
7392              <?xml version="1.0"$u2028?>
7393              <p/>
7394          @@@c:erred:
7395            <[[xp|fatal-xml11-end-of-line-in-xml-declaration]]> { (1, 20)..(2, 0); }
7396          @@@c:erred: <[[xp|wf-syntax-error]]> { }
7397        @@XMLTest:
7398          @@@QName: xp.xml11.endofline.ls.in.xmldecl.2.test
7399          @@@DEnt:
7400            @@@@test:value:
7401              <?xml version="1.1"$u2028?>
7402              (err)<p/>
7403          @@@c:erred:
7404            <[[xp|fatal-xml11-end-of-line-in-xml-declaration]]> { (1, 20)..(2, 0); }
7405          @@@c:erred: <[[xp|wf-syntax-error]]> { }
7406        @@XMLTest:
7407          @@@QName: xp.xml10.endofline.nl.in.xmldecl.3.test
7408          @@@DEnt:
7409            @@@@test:value:
7410              <?xml $u0085version="1.0"?>
7411              <p/>
7412          @@@c:erred:
7413            <[[xp|fatal-xml11-end-of-line-in-xml-declaration]]> { (1, 7)..(2, 0); }
7414          @@@c:erred: <[[xp|wf-syntax-error]]> { }
7415        @@XMLTest:
7416          @@@QName: xp.xml11.endofline.nl.in.xmldecl.3.test
7417          @@@DEnt:
7418            @@@@test:value:
7419              <?xml $u0085version="1.1"?>
7420              (err)<p/>
7421          @@@c:erred:
7422            <[[xp|fatal-xml11-end-of-line-in-xml-declaration]]> { (1, 7)..(2, 0); }
7423          @@@c:erred: <[[xp|wf-syntax-error]]> { }
7424        @@XMLTest:
7425          @@@QName: xp.xml10.endofline.crnl.in.xmldecl.3.test
7426          @@@DEnt:
7427            @@@@test:value:
7428              <?xml $u000D$u0085version="1.0"?>
7429              <p/>
7430          @@@c:erred:
7431            <[[xp|fatal-xml11-end-of-line-in-xml-declaration]]> { (1, 7)..(2, 0); }
7432          @@@c:erred: <[[xp|wf-syntax-error]]> { }
7433        @@XMLTest:
7434          @@@QName: xp.xml11.endofline.crnl.in.xmldecl.3.test
7435          @@@DEnt:
7436            @@@@test:value:
7437              <?xml $u000D$u0085version="1.1"?>
7438              (err)<p/>
7439          @@@c:erred:
7440            <[[xp|fatal-xml11-end-of-line-in-xml-declaration]]> { (1, 7)..(2, 0); }
7441          @@@c:erred: <[[xp|wf-syntax-error]]> { }
7442        @@XMLTest:
7443          @@@QName: xp.xml10.endofline.ls.in.xmldecl.3.test
7444          @@@DEnt:
7445            @@@@test:value:
7446              <?xml $u2028version="1.0"?>
7447              <p/>
7448          @@@c:erred:
7449            <[[xp|fatal-xml11-end-of-line-in-xml-declaration]]> { (1, 7)..(2, 0); }
7450          @@@c:erred: <[[xp|wf-syntax-error]]> { }
7451        @@XMLTest:
7452          @@@QName: xp.xml11.endofline.ls.in.xmldecl.3.test
7453          @@@DEnt:
7454            @@@@test:value:
7455              <?xml $u2028version="1.1"?>
7456              (err)<p/>
7457          @@@c:erred:
7458            <[[xp|fatal-xml11-end-of-line-in-xml-declaration]]> { (1, 7)..(2, 0); }
7459          @@@c:erred: <[[xp|wf-syntax-error]]> { }
7460        @@XMLTest:
7461          @@@QName: xp.xml10implied.endofline.nl.in.pi.1.test
7462          @@@DEnt:
7463            @@@@test:value:
7464              <?xml-$u0085?>
7465              <p/>
7466          @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 7)..(2, 0); }
7467        @@XMLTest:
7468          @@@QName: xp.xml10.endofline.nl.in.pi.1.test
7469          @@@DEnt:
7470            @@@@test:value:
7471              <?xml version="1.0"?>
7472              <?xml-$u0085?>
7473              <p/>
7474          @@@c:erred: <[[xp|wf-syntax-error]]> { (2, 7)..(3, 0); }
7475        @@XMLTest:
7476          @@@QName: xp.xml11.endofline.nl.in.pi.1.test
7477          @@@DEnt:
7478            @@@@test:value:
7479              <?xml version="1.1"?>
7480              <?xml-$u0085?>
7481              <p/>
7482          @@@test:domTree:
7483            document {
7484              xml-version: '1.1';
7485              pi {
7486                node-name: 'xml-';
7487                node-value: '';
7488              }
7489              element { }
7490            }
7491        @@XMLTest:
7492          @@@QName: xp.xml10implied.endofline.crnl.in.pi.1.test
7493          @@@DEnt:
7494            @@@@test:value:
7495              <?xml-$u000D$u0085?>
7496              <p/>
7497          @@@test:domTree:
7498            document {
7499              xml-version: '1.0';
7500              pi {
7501                node-name: 'xml-';
7502                node-value: U+0085;
7503              }
7504              element { }
7505            }
7506        @@XMLTest:
7507          @@@QName: xp.xml10.endofline.crnl.in.pi.1.test
7508          @@@DEnt:
7509            @@@@test:value:
7510              <?xml version="1.0"?>
7511              <?xml-$u000D$u0085?>
7512              <p/>
7513          @@@test:domTree:
7514            document {
7515              xml-version: '1.0';
7516              pi {
7517                node-name: 'xml-';
7518                node-value: U+0085;
7519              }
7520              element { }
7521            }
7522        @@XMLTest:
7523          @@@QName: xp.xml11.endofline.crnl.in.pi.1.test
7524          @@@DEnt:
7525            @@@@test:value:
7526              <?xml version="1.1"?>
7527              <?xml-$u000D$u0085?>
7528              <p/>
7529          @@@test:domTree:
7530            document {
7531              xml-version: '1.1';
7532              pi {
7533                node-name: 'xml-';
7534                node-value: '';
7535              }
7536              element { }
7537            }
7538        @@XMLTest:
7539          @@@QName: xp.xml10implied.endofline.ls.in.pi.1.test
7540          @@@DEnt:
7541            @@@@test:value:
7542              <?xml-$u2028?>
7543              <p/>
7544          @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 7)..(2, 0); }
7545        @@XMLTest:
7546          @@@QName: xp.xml10.endofline.ls.in.pi.1.test
7547          @@@DEnt:
7548            @@@@test:value:
7549              <?xml version="1.0"?>
7550              <?xml-$u2028?>
7551              <p/>
7552          @@@c:erred: <[[xp|wf-syntax-error]]> { (2, 7)..(3, 0); }
7553        @@XMLTest:
7554          @@@QName: xp.xml11.endofline.ls.in.pi.1.test
7555          @@@DEnt:
7556            @@@@test:value:
7557              <?xml version="1.1"?>
7558              <?xml-$u2028?>
7559              <p/>
7560          @@@test:domTree:
7561            document {
7562              xml-version: '1.1';
7563              pi {
7564                node-name: 'xml-';
7565                node-value: '';
7566              }
7567              element { }
7568            }
7569        
7570        @@XMLTest:
7571          @@@QName: xp.xml10.endofline.internal.1.test
7572          @@@DEnt:
7573            @@@@test:value:
7574              <?xml version="1.0"?>
7575              <!DOCTYPE a [
7576              <!ENTITY e "&#x000D; &#x000A; &#x0085; &#x000D;&#x000A; $
7577              &#x000D;&#x0085; &#x2028;">
7578              ]><a>&e;</a>
7579          @@@cfg:entity-replacement-tree: 1
7580          @@@test:domTree:
7581            document {
7582              xml-version: '1.0';
7583              document-type {
7584                general-entity {
7585                  node-name: 'e';
7586                  text-content: U+000D ' ' U+000A ' ' U+0085 ' '
7587                                U+000D U+000A ' ' U+000D U+0085 ' ' U+2028;
7588                }
7589              }
7590              element {
7591                text-content: U+000D ' ' U+000A ' ' U+0085 ' '
7592                              U+000D U+000A ' ' U+000D U+0085 ' ' U+2028;
7593              }
7594            }
7595        @@XMLTest:
7596          @@@QName: xp.xml11.endofline.internal.1.test
7597          @@@DEnt:
7598            @@@@test:value:
7599              <?xml version="1.1"?>
7600              <!DOCTYPE a [
7601              <!ENTITY e "&#x000D; &#x000A; &#x0085; &#x000D;&#x000A; $
7602              &#x000D;&#x0085; &#x2028;">
7603              ]><a>&e;</a>
7604          @@@cfg:entity-replacement-tree: 1
7605          @@@test:domTree:
7606            document {
7607              xml-version: '1.1';
7608              document-type {
7609                general-entity {
7610                  node-name: 'e';
7611                  text-content: U+000D ' ' U+000A ' ' U+0085 ' '
7612                                U+000D U+000A ' ' U+000D U+0085 ' ' U+2028;
7613                }
7614              }
7615              element {
7616                text-content: U+000D ' ' U+000A ' ' U+0085 ' '
7617                              U+000D U+000A ' ' U+000D U+0085 ' ' U+2028;
7618              }
7619            }
7620    
7621        @@XMLTest:
7622          @@@QName: xp.noxmldecl.pi.pi.test
7623          @@@DEnt:
7624            @@@@test:value:
7625              <?noxml 1?><?noxml 2?><p/>
7626          @@@test:domTree:
7627            document {
7628              xml-version: '1.0';
7629              pi {
7630                node-name: 'noxml';
7631                node-value: '1';
7632              }
7633              pi {
7634                node-name: 'noxml';
7635                node-value: '2';
7636              }
7637              element { }
7638            }
7639        @@XMLTest:
7640          @@@QName: xp.noxmldecl.pi.pi.2.test
7641          @@@DEnt:
7642            @@@@test:value:
7643              <?xmlno 1?><?xmlno 2?><p/>
7644          @@@test:domTree:
7645            document {
7646              xml-version: '1.0';
7647              pi {
7648                node-name: 'xmlno';
7649                node-value: '1';
7650              }
7651              pi {
7652                node-name: 'xmlno';
7653                node-value: '2';
7654              }
7655              element { }
7656            }
7657        @@XMLTest:
7658          @@@QName: xp.noxmldecl.pi.pi.3.test
7659          @@@DEnt:
7660            @@@@test:value:
7661              <?xmln 1?><?xmln 2?><p/>
7662          @@@test:domTree:
7663            document {
7664              xml-version: '1.0';
7665              pi {
7666                node-name: 'xmln';
7667                node-value: '1';
7668              }
7669              pi {
7670                node-name: 'xmln';
7671                node-value: '2';
7672              }
7673              element { }
7674            }
7675        @@XMLTest:
7676          @@@QName: xp.noxml.s.nl.test
7677          @@@DEnt:
7678            @@@@test:value:
7679              $u0085<p/>
7680          @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 1)..(2, 0); }
7681        @@XMLTest:
7682          @@@QName: xp.noxml.s.crnl.test
7683          @@@DEnt:
7684            @@@@test:value:
7685              $u000D$u0085<p/>
7686          @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 1)..(2, 0); }
7687        @@XMLTest:
7688          @@@QName: xp.noxml.s.ls.test
7689          @@@DEnt:
7690            @@@@test:value:
7691              $u2028<p/>
7692          @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 1)..(2, 0); }
7693        @@XMLTest:
7694          @@@QName: xp.xml10.decl.s.nl.test
7695          @@@DEnt:
7696            @@@@test:value:
7697              <?xml version="1.0"?>$u0085<p/>
7698          @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 22)..(2, 0); }
7699        @@XMLTest:
7700          @@@QName: xp.xml10.decl.s.crnl.test
7701          @@@DEnt:
7702            @@@@test:value:
7703              <?xml version="1.0"?>$u000D$u0085<p/>
7704          @@@c:erred: <[[xp|wf-syntax-error]]> { (2, 0)..(3, 0); }
7705        @@XMLTest:
7706          @@@QName: xp.xml10.decl.s.ls.test
7707          @@@DEnt:
7708            @@@@test:value:
7709              <?xml version="1.0"?>$u2028<p/>
7710          @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 22)..(2, 0); }
7711        @@XMLTest:
7712          @@@QName: xp.xml11.decl.s.nl.test
7713          @@@DEnt:
7714            @@@@test:value:
7715              <?xml version="1.1"?>$u0085<p/>
7716          @@@test:domTree:
7717            document {
7718              xml-version: '1.1';
7719              element { }
7720            }
7721        @@XMLTest:
7722          @@@QName: xp.xml11.decl.s.crnl.test
7723          @@@DEnt:
7724            @@@@test:value:
7725              <?xml version="1.1"?>$u000D$u0085<p/>
7726          @@@test:domTree:
7727            document {
7728              xml-version: '1.1';
7729              element { }
7730            }
7731        @@XMLTest:
7732          @@@QName: xp.xml11.decl.s.ls.test
7733          @@@DEnt:
7734            @@@@test:value:
7735              <?xml version="1.1"?>$u2028<p/>
7736          @@@test:domTree:
7737            document {
7738              xml-version: '1.1';
7739              element { }
7740            }
7741    
7742        @@XMLTest:
7743          @@@QName: xp.element.type.match.1.test
7744          @@@DEnt:
7745            @@@@test:value:
7746              <p></pa>(err)
7747          @@@c:erred: <[[xp|wf-element-type-match]]> { (1, 4)..(1, 8); }
7748          @@@c:erred: <[[xp|wf-syntax-error]]> { }
7749        @@XMLTest:
7750          @@@QName: xp.element.type.match.2.test
7751          @@@DEnt:
7752            @@@@test:value:
7753              <p><pa></pa></pa>(err)
7754          @@@c:erred: <[[xp|wf-element-type-match]]> { (1, 13)..(1, 17); }
7755          @@@c:erred: <[[xp|wf-syntax-error]]> { }
7756        @@XMLTest:
7757          @@@QName: xp.element.type.match.3.test
7758          @@@DEnt:
7759            @@@@test:value:
7760              <p><pa></p></p>(err)
7761          @@@c:erred: <[[xp|wf-element-type-match]]> { (1, 8)..(1, 11); }
7762          @@@c:erred: <[[xp|wf-syntax-error]]> { }
7763        @@XMLTest:
7764          @@@QName: xp.element.type.match.4.test
7765          @@@DEnt:
7766            @@@@test:value:
7767              <a:p xmlns:a="about:1"></p>(err)
7768          @@@c:erred: <[[xp|wf-element-type-match]]> { (1, 24)..(1, 27); }
7769          @@@c:erred: <[[xp|wf-syntax-error]]> { }
7770        @@XMLTest:
7771          @@@QName: xp.element.type.match.5.test
7772          @@@DEnt:
7773            @@@@test:value:
7774              <a:p xmlns:a="about:1" xmlns:b="about:1"></b:p>(err)
7775          @@@c:erred: <[[xp|wf-element-type-match]]> { (1, 42)..(1, 47); }
7776          @@@c:erred: <[[xp|wf-syntax-error]]> { }
7777    
7778        @@XMLTest:
7779          @@@QName: xp.stag.stago.name.etago.test
7780          @@@DEnt:
7781            @@@@test:value:
7782              <a</a>
7783          @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 3); }
7784        @@XMLTest:
7785          @@@QName: xp.stag.stago.name.s.etago.test
7786          @@@DEnt:
7787            @@@@test:value:
7788              <a </a>
7789          @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 4); }
7790        @@XMLTest:
7791          @@@QName: xp.stag.stago.name.s.attr.etago.test
7792          @@@DEnt:
7793            @@@@test:value:
7794              <a a="b"</a>
7795          @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 9); }
7796        @@XMLTest:
7797          @@@QName: xp.stag.stago.name.s.attr.s.attr.etago.test
7798          @@@DEnt:
7799            @@@@test:value:
7800              <a a="b" c="d"</a>
7801          @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 15); }
7802        @@XMLTest:
7803          @@@QName: xp.stag.stago.name.s.attr.s.etago.test
7804          @@@DEnt:
7805            @@@@test:value:
7806              <a a="b" </a>
7807          @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 10); }
7808        @@XMLTest:
7809          @@@QName: xp.stag.etag.1.test
7810          @@@DEnt:
7811            @@@@test:value:
7812              <root><a></a></root>
7813          @@@test:domTree:
7814            document {
7815              element {
7816                element {
7817                  node-name: 'a';
7818                }
7819              }
7820            }      
7821        @@XMLTest:
7822          @@@QName: xp.stag.etag.2.test
7823          @@@DEnt:
7824            @@@@test:value:
7825              <root><ab></ab></root>
7826          @@@test:domTree:
7827            document {
7828              element {
7829                element {
7830                  node-name: 'ab';
7831                }
7832              }
7833            }      
7834        @@XMLTest:
7835          @@@QName: xp.stag.etag.s.1.test
7836          @@@DEnt:
7837            @@@@test:value:
7838              <root><a  ></a  ></root>
7839          @@@test:domTree:
7840            document {
7841              element {
7842                element {
7843                  node-name: 'a';
7844                }
7845              }
7846            }      
7847        @@XMLTest:
7848          @@@QName: xp.etag.1.test
7849          @@@DEnt:
7850            @@@@test:value:
7851              <root><a/></root>
7852          @@@test:domTree:
7853            document {
7854              element {
7855                element {
7856                  node-name: 'a';
7857                }
7858              }
7859            }      
7860        @@XMLTest:
7861          @@@QName: xp.etag.2.test
7862          @@@DEnt:
7863            @@@@test:value:
7864              <root><a    /></root>
7865          @@@test:domTree:
7866            document {
7867              element {
7868                element {
7869                  node-name: 'a';
7870                }
7871              }
7872            }      
7873        @@XMLTest:
7874          @@@QName: xp.stag.etag.attr.1.test
7875          @@@DEnt:
7876            @@@@test:value:
7877              <root><a at="v"></a></root>
7878          @@@test:domTree:
7879            document {
7880              element {
7881                element {
7882                  node-name: 'a';
7883                  attribute {
7884                    node-name: 'at';
7885                    value: 'v';
7886                  }
7887                }
7888              }
7889            }      
7890        @@XMLTest:
7891          @@@QName: xp.stag.etag.attr.2.test
7892          @@@DEnt:
7893            @@@@test:value:
7894              <root><a at="v"  ></a></root>
7895          @@@test:domTree:
7896            document {
7897              element {
7898                element {
7899                  node-name: 'a';
7900                  attribute {
7901                    node-name: 'at';
7902                    value: 'v';
7903                  }
7904                }
7905              }
7906            }      
7907        @@XMLTest:
7908          @@@QName: xp.stag.etag.attr.3.test
7909          @@@DEnt:
7910            @@@@test:value:
7911              <root><a at     ="v"></a></root>
7912          @@@test:domTree:
7913            document {
7914              element {
7915                element {
7916                  node-name: 'a';
7917                  attribute {
7918                    node-name: 'at';
7919                    value: 'v';
7920                  }
7921                }
7922              }
7923            }      
7924        @@XMLTest:
7925          @@@QName: xp.stag.etag.attr.4.test
7926          @@@DEnt:
7927            @@@@test:value:
7928              <root><a at=   "v"></a></root>
7929          @@@test:domTree:
7930            document {
7931              element {
7932                element {
7933                  node-name: 'a';
7934                  attribute {
7935                    node-name: 'at';
7936                    value: 'v';
7937                  }
7938                }
7939              }
7940            }      
7941        @@XMLTest:
7942          @@@QName: xp.stag.etag.attr.5.test
7943          @@@DEnt:
7944            @@@@test:value:
7945              <root><a at='v'></a></root>
7946          @@@test:domTree:
7947            document {
7948              element {
7949                element {
7950                  node-name: 'a';
7951                  attribute {
7952                    node-name: 'at';
7953                    value: 'v';
7954                  }
7955                }
7956              }
7957            }      
7958        @@XMLTest:
7959          @@@QName: xp.stag.etag.attr.6.test
7960          @@@DEnt:
7961            @@@@test:value:
7962              <root><a at=   'v'  ></a></root>
7963          @@@test:domTree:
7964            document {
7965              element {
7966                element {
7967                  node-name: 'a';
7968                  attribute {
7969                    node-name: 'at';
7970                    value: 'v';
7971                  }
7972                }
7973              }
7974            }      
7975        @@XMLTest:
7976          @@@QName: xp.stag.etag.attr.attr.1.test
7977          @@@DEnt:
7978            @@@@test:value:
7979              <root><a at="v"  tr="w"></a></root>
7980          @@@test:domTree:
7981            document {
7982              element {
7983                element {
7984                  node-name: 'a';
7985                  attribute {
7986                    node-name: 'at';
7987                    value: 'v';
7988                  }
7989                  attribute {
7990                    node-name: 'tr';
7991                    value: 'w';
7992                  }
7993                }
7994              }
7995            }      
7996        @@XMLTest:
7997          @@@QName: xp.stag.etag.attr.attr.2.test
7998          @@@DEnt:
7999            @@@@test:value:
8000              <root><a tr="w" at="v"></a></root>
8001          @@@test:domTree:
8002            document {
8003              element {
8004                element {
8005                  node-name: 'a';
8006                  attribute {
8007                    node-name: 'at';
8008                    value: 'v';
8009                  }
8010                  attribute {
8011                    node-name: 'tr';
8012                    value: 'w';
8013                  }
8014                }
8015              }
8016            }      
8017        @@XMLTest:
8018          @@@QName: xp.stag.etag.attr.no.s.attr.test
8019          @@@DEnt:
8020            @@@@test:value:
8021              <root><a at="v"tr="w"></a></root>
8022          @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 16)..(1, 17); }
8023        @@XMLTest:
8024          @@@QName: xp.etag.attr.1.test
8025          @@@DEnt:
8026            @@@@test:value:
8027              <root><a at="v" tr="w"></a b="c"></root>
8028          @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 28); }
8029        @@XMLTest:
8030          @@@QName: xp.etag.no.etagc.1.test
8031          @@@DEnt:
8032            @@@@test:value:
8033              <root><a at="v" tr="w"></a</root>
8034          @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 27)..(1, 28); }
8035        @@XMLTest:
8036          @@@QName: xp.etag.no.etagc.2.test
8037          @@@DEnt:
8038            @@@@test:value:
8039              <root><a at="v" tr="w"></a  </root>
8040          @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 29)..(1, 30); }
8041        @@XMLTest:
8042          @@@QName: xp.mtag.attr.1.test
8043          @@@DEnt:
8044            @@@@test:value:
8045              <root><a  b="c"/></root>
8046          @@@test:domTree:
8047            document {
8048              element {
8049                element {
8050                  node-name: 'a';
8051                  attribute {
8052                    node-name: 'b';
8053                    value: 'c';
8054                  }
8055                }
8056              }
8057            }      
8058        @@XMLTest:
8059          @@@QName: xp.mtag.attr.2.test
8060          @@@DEnt:
8061            @@@@test:value:
8062              <root><a  b="c"  /></root>
8063          @@@test:domTree:
8064            document {
8065              element {
8066                element {
8067                  node-name: 'a';
8068                  attribute {
8069                    node-name: 'b';
8070                    value: 'c';
8071                  }
8072                }
8073              }
8074            }      
8075        @@XMLTest:
8076          @@@QName: xp.mtag.attr.3.test
8077          @@@DEnt:
8078            @@@@test:value:
8079              <root><a  b='c'/></root>
8080          @@@test:domTree:
8081            document {
8082              element {
8083                element {
8084                  node-name: 'a';
8085                  attribute {
8086                    node-name: 'b';
8087                    value: 'c';
8088                  }
8089                }
8090              }
8091            }      
8092        @@XMLTest:
8093          @@@QName: xp.mtag.attr.4.test
8094          @@@DEnt:
8095            @@@@test:value:
8096              <root><a  b="c" d="e"/></root>
8097          @@@test:domTree:
8098            document {
8099              element {
8100                element {
8101                  node-name: 'a';
8102                  attribute {
8103                    node-name: 'b';
8104                    value: 'c';
8105                  }
8106                  attribute {
8107                    node-name: 'd';
8108                    value: 'e';
8109                  }
8110                }
8111              }
8112            }      
8113    
8114        @@XMLTest:
8115          @@@QName: xp.attvalue.lt.1.test
8116          @@@DEnt:
8117            @@@@test:value:
8118              <a b="aa<dd"/>
8119          @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 9); }
8120        @@XMLTest:
8121          @@@QName: xp.attvalue.lt.2.test
8122          @@@DEnt:
8123            @@@@test:value:
8124              <a b='aa<dd'/>
8125          @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 9); }
8126        @@XMLTest:
8127          @@@QName: xp.attvalue.amp.1.test
8128          @@@DEnt:
8129            @@@@test:value:
8130              <a b="aa& dd"/>
8131          @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 9)..(1, 12); }
8132        @@XMLTest:
8133          @@@QName: xp.attvalue.amp.2.test
8134          @@@DEnt:
8135            @@@@test:value:
8136              <a b='aa& dd'/>
8137          @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 9)..(1, 12); }
8138        @@XMLTest:
8139          @@@QName: xp.attvalue.amp.3.test
8140          @@@DEnt:
8141            @@@@test:value:
8142              <a b="aa&# dd"/>
8143          @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 9)..(1, 13); }
8144        @@XMLTest:
8145          @@@QName: xp.attvalue.amp.4.test
8146          @@@DEnt:
8147            @@@@test:value:
8148              <a b="aa&#x dd"/>
8149          @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 9)..(1, 14); }
8150    
8151        @@XMLTest:
8152          @@@QName: xp.unique.att.spec.1.test
8153          @@@DEnt:
8154            @@@@test:value:
8155              <a b="c" b="d"/>
8156          @@@c:erred: <[[xp|wf-unique-att-spec]]> { (1, 4)..(1, 14); }
8157        @@XMLTest:
8158          @@@QName: xp.unique.att.spec.2.test
8159          @@@DEnt:
8160            @@@@test:value:
8161              <a d:b="c" d:b="d" xmlns:d="about:2"/>
8162          @@@c:erred: <[[xp|wf-unique-att-spec]]> { (1, 4)..(1, 18); }
8163    
8164        @@XMLTest:
8165          @@@QName: xp.no.external.entity.references.1.test
8166          @@@DEnt:
8167            @@@@test:value:
8168              <!DOCTYPE a [
8169                <!ENTITY ent SYSTEM "something">
8170              ]>
8171              <a b="c&ent;"/>
8172          @@@c:erred: <[[xp|wf-no-external-entity-references]]> { (4, 8)..(4, 12); }
8173        @@XMLTest:
8174          @@@QName: xp.no.external.entity.references.2.test
8175          @@@DEnt:
8176            @@@@test:value:
8177              <!DOCTYPE a [
8178                <!NOTATION n SYSTEM "notation">
8179                <!ENTITY ent SYSTEM "something" NDATA n>
8180              ]>
8181              <a b="c&ent;"/>
8182          @@@c:erred: <[[xp|wf-no-external-entity-references]]> { (5, 8)..(5, 12); }
8183        @@XMLTest:
8184          @@@QName: xp.no.external.entity.references.3.test
8185          @@@DEnt:
8186            @@@@test:value:
8187              <!DOCTYPE a [
8188                <!ENTITY ent SYSTEM "something">
8189                <!ENTITY ent2 "ddd&ent;">
8190              ]>
8191              <a b="c&ent2;"/>
8192          @@@c:erred: <[[xp|wf-no-external-entity-references]]> { (1, 4)..(1, 8); }
8193        @@XMLTest:
8194          @@@QName: xp.no.external.entity.references.4.test
8195          @@@DEnt:
8196            @@@@test:value:
8197              <!DOCTYPE a [
8198                <!NOTATION n SYSTEM "notation">
8199                <!ENTITY ent SYSTEM "something" NDATA n>
8200                <!ENTITY ent2 "ddd&ent;">
8201              ]>
8202              <a b="c&ent2;"/>
8203          @@@cfg:entity-replacement-tree: 1
8204          @@@c:erred: <[[xp|wf-no-external-entity-references]]> { (1, 4)..(1, 8); }
8205          @@@c:erred: <[[xp|wf-parsed-entity]]> { }
8206        @@XMLTest:
8207          @@@QName: xp.no.lt.in.attr.value.1.test
8208          @@@DEnt:
8209            @@@@test:value:
8210              <!DOCTYPE a [
8211              <!ENTITY ent "aa<bb">
8212              ]>
8213              <a b="c&ent;"/>
8214          @@@cfg:entity-replacement-tree: 1
8215          @@@c:erred: <[[xp|wf-no-lt-in-attribute-values]]> { (1, 3); }
8216          @@@c:erred:
8217            @@@@@: <[[xp|wf-syntax-error]]> { (1, 3)..(1, 6); }
8218            @@@@enImplNote: When entity node is created.
8219        @@XMLTest:
8220          @@@QName: xp.no.lt.in.attr.value.1.2.test
8221          @@@DEnt:
8222            @@@@test:value:
8223              <!DOCTYPE a [
8224              <!ENTITY ent "aa<bb">
8225              ]>
8226              <a b="c&ent;"/>
8227          @@@cfg:entity-replacement-tree: 0
8228          @@@c:erred: <[[xp|wf-no-lt-in-attribute-values]]> { (1, 3); }
8229        @@XMLTest:
8230          @@@QName: xp.no.lt.in.attr.value.2.test
8231          @@@DEnt:
8232            @@@@test:value:
8233              <!DOCTYPE a [
8234              <!ENTITY ent "aa<bb">
8235              <!ENTITY ent2 "ccc&ent;">
8236              ]>
8237              <a b="c&ent2;"/>
8238          @@@cfg:entity-replacement-tree: 1
8239          @@@c:erred: <[[xp|wf-no-lt-in-attribute-values]]> { (1, 3); }
8240          @@@c:erred:
8241            @@@@@: <[[xp|wf-syntax-error]]> { (1, 3)..(1, 6); }
8242            @@@@enImplNote: When entity node is created.
8243        @@XMLTest:
8244          @@@QName: xp.no.lt.in.attr.value.3.test
8245          @@@DEnt:
8246            @@@@test:value:
8247              <!DOCTYPE a [
8248              <!ENTITY ent "aa&#x3C;bb">
8249              ]>
8250              <a b="c&ent;"/>
8251          @@@cfg:entity-replacement-tree: 1
8252          @@@c:erred: <[[xp|wf-no-lt-in-attribute-values]]> { (1, 3); }
8253          @@@c:erred:
8254            @@@@@: <[[xp|wf-syntax-error]]> { (1, 3)..(1, 6); }
8255            @@@@enImplNote: When entity node is created.
8256        @@XMLTest:
8257          @@@QName: xp.no.lt.in.attr.value.4.test
8258          @@@DEnt:
8259            @@@@test:value:
8260              <!DOCTYPE a [
8261              <!ENTITY ent "aa&#x3C;bb">
8262              <!ENTITY ent2 "ccc&ent;">
8263              ]>
8264              <a b="c&ent2;"/>
8265          @@@cfg:entity-replacement-tree: 1
8266          @@@c:erred: <[[xp|wf-no-lt-in-attribute-values]]> { (1, 3); }
8267          @@@c:erred:
8268            @@@@@: <[[xp|wf-syntax-error]]> { (1, 3)..(1, 6); }
8269            @@@@enImplNote: When entity node is created.
8270        @@XMLTest:
8271          @@@QName: xp.ger.lt.in.attr.value.1.test
8272          @@@DEnt:
8273            @@@@test:value:
8274              <!DOCTYPE a [
8275              <!ENTITY ent "aa&lt;bb">
8276              ]>
8277              <a b="c&ent;"/>
8278          @@@cfg:entity-replacement-tree: 1
8279          @@@test:domTree:
8280            document {
8281              document-type {
8282                general-entity {
8283                  node-name: 'ent';
8284                  text-content: 'aa<bb';
8285                }
8286              }
8287              element {
8288                attribute {
8289                  node-name: 'b';
8290                  text { data: 'c'; }
8291                  general-entity-reference {
8292                    manakai-expanded: true;
8293                    node-name: 'ent';
8294                    text-content: 'aa<bb';
8295                  }
8296                }
8297              }
8298            }
8299        @@XMLTest:
8300          @@@QName: xp.ger.lt.in.attr.value.2.test
8301          @@@DEnt:
8302            @@@@test:value:
8303              <!DOCTYPE a [
8304              <!ENTITY ent "aa&lt;bb">
8305              <!ENTITY ent2 "ccc&ent;">
8306              ]>
8307              <a b="c&ent2;"/>
8308          @@@cfg:entity-replacement-tree: 1
8309          @@@test:domTree:
8310            document {
8311              document-type {
8312                general-entity {
8313                  node-name: 'ent';
8314                  text-content: 'aa<bb';
8315                }
8316                general-entity {
8317                  node-name: 'ent2';
8318                  text { data: 'ccc'; }
8319                  general-entity-reference {
8320                    node-name: 'ent';
8321                    text-content: 'aa<bb';
8322                    manakai-expanded: true;
8323                  }
8324                }
8325              }
8326              element {
8327                attribute {
8328                  node-name: 'b';
8329                  text { data: 'c'; }
8330                  general-entity-reference {
8331                    node-name: 'ent2';
8332                    text { data: 'ccc'; }
8333                    general-entity-reference {
8334                      node-name: 'ent';
8335                      text-content: 'aa<bb';
8336                      manakai-expanded: true;
8337                    }
8338                    manakai-expanded: true;
8339                  }
8340                }
8341              }
8342            }
8343    
8344      @@XMLTest:      @@XMLTest:
8345        @@@QName: xp.doctype.intsubset.pi.test        @@@QName: xp.doctype.intsubset.pi.test
# Line 3507  _ Line 8380  _
8380              <!ENTITY entity "entity value">              <!ENTITY entity "entity value">
8381            ]>            ]>
8382            <a></a>            <a></a>
8383          @@@cfg:entity-replacement-tree: 1
8384        @@@test:domTree:        @@@test:domTree:
8385          document {          document {
8386            xml-version: '1.0';            xml-version: '1.0';
# Line 3514  _ Line 8388  _
8388            xml-standalone: false;            xml-standalone: false;
8389            document-type {            document-type {
8390              node-name: 'a';              node-name: 'a';
8391                general-entity {
8392                  node-name: 'entity';
8393                  text-content: 'entity value';
8394                  has-replacement-tree: true;
8395                }
8396            }            }
8397            element {            element {
8398              namespace-uri: null;              namespace-uri: null;
# Line 3554  _ Line 8433  _
8433              <!ENTITY entity "entity value">              <!ENTITY entity "entity value">
8434            ]>            ]>
8435            <a>&entity;</a>            <a>&entity;</a>
8436          @@@cfg:entity-replacement-tree: 1
8437        @@@test:domTree:        @@@test:domTree:
8438          document {          document {
8439            xml-version: '1.0';            xml-version: '1.0';
# Line 3561  _ Line 8441  _
8441            xml-standalone: false;            xml-standalone: false;
8442            document-type {            document-type {
8443              node-name: 'a';              node-name: 'a';
8444                general-entity {
8445                  node-name: 'entity';
8446                  text-content: 'entity value';
8447                  has-replacement-tree: true;
8448                }
8449            }            }
8450            element {            element {
8451              namespace-uri: null;              namespace-uri: null;
# Line 3571  _ Line 8456  _
8456                text {                text {
8457                  data: 'entity value';                  data: 'entity value';
8458                }                }
8459                  manakai-expanded: true;
8460              }              }
8461            }            }
8462          }          }
# Line 3582  _ Line 8468  _
8468              <!ENTITY entity "entity value">              <!ENTITY entity "entity value">
8469            ]>            ]>
8470            <a>&entity; and &entity;</a>            <a>&entity; and &entity;</a>
8471          @@@cfg:entity-replacement-tree: 1
8472        @@@test:domTree:        @@@test:domTree:
8473          document {          document {
8474            xml-version: '1.0';            xml-version: '1.0';
# Line 3589  _ Line 8476  _
8476            xml-standalone: false;            xml-standalone: false;
8477            document-type {            document-type {
8478              node-name: 'a';              node-name: 'a';
8479                general-entity {
8480                  node-name: 'entity';
8481                  text-content: 'entity value';
8482                  has-replacement-tree: true;
8483                }
8484            }            }
8485            element {            element {
8486              namespace-uri: null;              namespace-uri: null;
# Line 3599  _ Line 8491  _
8491                text {                text {
8492                  data: 'entity value';                  data: 'entity value';
8493                }                }
8494                  manakai-expanded: true;
8495              }              }
8496              text { data: ' and '; }              text { data: ' and '; }
8497              general-entity-reference {              general-entity-reference {
# Line 3606  _ Line 8499  _
8499                text {                text {
8500                  data: 'entity value';                  data: 'entity value';
8501                }                }
8502                  manakai-expanded: true;
8503              }              }
8504            }            }
8505          }          }
# Line 3617  _ Line 8511  _
8511              <!ENTITY entity "entity <p>value</p> with <e>element</e> ">              <!ENTITY entity "entity <p>value</p> with <e>element</e> ">
8512            ]>            ]>
8513            <a>&entity;</a>            <a>&entity;</a>
8514          @@@cfg:entity-replacement-tree: 1
8515        @@@test:domTree:        @@@test:domTree:
8516          document {          document {
8517            xml-version: '1.0';            xml-version: '1.0';
# Line 3624  _ Line 8519  _
8519            xml-standalone: false;            xml-standalone: false;
8520            document-type {            document-type {
8521              node-name: 'a';              node-name: 'a';
8522                general-entity {
8523                  node-name: 'entity';
8524                  has-replacement-tree: true;
8525                  text { data: 'entity '; }
8526                  element {
8527                    node-name: 'p';
8528                    text-content: 'value';
8529                  }
8530                  text { data: ' with '; }
8531                  element {
8532                    node-name: 'e';
8533                    text-content: 'element';
8534                  }
8535                  text { data: ' '; }
8536                }
8537            }            }
8538            element {            element {
8539              namespace-uri: null;              namespace-uri: null;
# Line 3631  _ Line 8541  _
8541              local-name: 'a';              local-name: 'a';
8542              general-entity-reference {              general-entity-reference {
8543                node-name: 'entity';                node-name: 'entity';
8544                  manakai-expanded: true;
8545                text {                text {
8546                  data: 'entity ';                  data: 'entity ';
8547                }                }
# Line 3668  _ Line 8579  _
8579              <!ENTITY entity2 "e&entity1;n">              <!ENTITY entity2 "e&entity1;n">
8580            ]>            ]>
8581            <a>&entity2;</a>            <a>&entity2;</a>
8582          @@@cfg:entity-replacement-tree: 1
8583        @@@test:domTree:        @@@test:domTree:
8584          document {          document {
8585            xml-version: '1.0';            xml-version: '1.0';
# Line 3675  _ Line 8587  _
8587            xml-standalone: false;            xml-standalone: false;
8588            document-type {            document-type {
8589              node-name: 'a';              node-name: 'a';
8590                general-entity {
8591                  node-name: 'entity1';
8592                  text-content: 'entity value';
8593                }
8594                general-entity {
8595                  node-name: 'entity2';
8596                  text { data: 'e'; }
8597                  general-entity-reference {
8598                    node-name: 'entity1';
8599                    text-content: 'entity value';
8600                    manakai-expanded: true;
8601                  }
8602                  text { data: 'n'; }
8603                }
8604            }            }
8605            element {            element {
8606              namespace-uri: null;              namespace-uri: null;
# Line 3683  _ Line 8609  _
8609              general-entity-reference {              general-entity-reference {
8610                node-name: 'entity2';                node-name: 'entity2';
8611                text { data: 'e'; }                text { data: 'e'; }
8612                  manakai-expanded: true;
8613                general-entity-reference {                general-entity-reference {
8614                  node-name: 'entity1';                  node-name: 'entity1';
8615                  text {                  text {
8616                    data: 'entity value';                    data: 'entity value';
8617                  }                  }
8618                    manakai-expanded: true;
8619                }                }
8620                text { data: 'n'; }                text { data: 'n'; }
8621              }              }
8622            }            }
8623          }          }
8624    
8625        @@XMLTest:
8626          @@@QName: xp.doctype.entity.value.charref.test
8627          @@@DEnt:
8628            @@@@test:value:
8629              <!DOCTYPE a [
8630                <!ENTITY entity1 "entity &#x21;value&#35;">
8631                <!ENTITY entity2 '&#x21;value&#35;'>
8632              ]>
8633              <a></a>
8634          @@@cfg:entity-replacement-tree: 1
8635          @@@test:domTree:
8636            document {
8637              document-type {
8638                general-entity {
8639                  node-name: 'entity1';
8640                  text-content: 'entity !value#';
8641                  has-replacement-tree: true;
8642                }
8643                general-entity {
8644                  node-name: 'entity2';
8645                  text-content: '!value#';
8646                  has-replacement-tree: true;
8647                }
8648              }
8649              element { }
8650            }
8651    
8652        @@XMLTest:
8653          @@@QName: xp.predefined.in.content.test
8654          @@@DEnt:
8655            @@@@test:value:
8656              <a>_&lt;_&gt;_&quot;_&apos;_&amp;_</a>
8657          @@@test:domTree:
8658            document {
8659              element {
8660                text-content: '_<_>_"_' U+0027 '_&_';
8661              }
8662            }
8663        @@XMLTest:
8664          @@@QName: xp.predefined.in.attr.test
8665          @@@DEnt:
8666            @@@@test:value:
8667              <a at="_&lt;_&gt;_&quot;_&apos;_&amp;_"></a>
8668          @@@test:domTree:
8669            document {
8670              element {
8671                attribute {
8672                  node-name: 'at';
8673                  text-content: '_<_>_"_' U+0027 '_&_';
8674                }
8675              }
8676            }
8677        @@XMLTest:
8678          @@@QName: xp.predefined.in.content.in.entity.test
8679          @@@DEnt:
8680            @@@@test:value:
8681              <!DOCTYPE a [
8682                <!ENTITY ent "_&lt;_&gt;_&quot;_&apos;_&amp;_">
8683              ]>
8684              <a>&ent;</a>
8685          @@@cfg:entity-replacement-tree: 1
8686          @@@test:domTree:
8687            document {
8688              document-type {
8689                general-entity {
8690                  node-name: 'ent';
8691                  text-content: '_<_>_"_' U+0027 '_&_';
8692                }
8693              }
8694              element {
8695                text-content: '_<_>_"_' U+0027 '_&_';
8696              }
8697            }
8698        @@XMLTest:
8699          @@@QName: xp.predefined.decl.ignore.test
8700          @@@DEnt:
8701            @@@@test:value:
8702              <!DOCTYPE a [
8703                <!ENTITY lt "&#x26;#x3C;">
8704                <!ENTITY gt "&#x3E;">
8705                <!ENTITY amp "&#x26;#x26;">
8706                <!ENTITY quot "&#x22;">
8707                <!ENTITY apos "&#x27;">
8708                <!ENTITY other "other">
8709              ]>
8710              <a>_&lt;_&gt;_&quot;_&apos;_&amp;_&other;_</a>
8711          @@@cfg:entity-replacement-tree: 1
8712          @@@test:domTree:
8713            document {
8714              document-type {
8715                general-entity {
8716                  node-name: 'other';
8717                  text-content: 'other';
8718                }
8719              }
8720              element {
8721                text-content: '_<_>_"_' U+0027 '_&_other_';
8722              }
8723            }
8724    
8725      @@XMLTest:      @@XMLTest:
8726        @@@QName: xp.doctype.internal.attr.empty.test        @@@QName: xp.doctype.internal.attr.empty.test
8727        @@@DEnt:        @@@DEnt:
# Line 4227  _ Line 9256  _
9256            }            }
9257          }          }
9258    
9259        @@XMLTest:
9260          @@@QName: xp.attr.literal.charref.test
9261          @@@DEnt:
9262            @@@@test:value:
9263              <a at1 = "value&#33;_&#x25;value"
9264                 at2 = 'value&#x25;_&#33;value'></a>
9265          @@@test:domTree:
9266            document {
9267              element {
9268                attribute {
9269                  node-name: 'at1';
9270                  text-content: 'value!_%value';
9271                }
9272                attribute {
9273                  node-name: 'at2';
9274                  text-content: 'value%_!value';
9275                }
9276              }
9277            }
9278        @@XMLTest:
9279          @@@QName: xp.attr.literal.entref.test
9280          @@@DEnt:
9281            @@@@test:value:
9282              <!DOCTYPE a [
9283                <!ENTITY ent "entity&#x26;#33;_&#x26;#x29;value">
9284              ]>
9285              <a at1 = "value&ent;value"
9286                 at2 = 'value&ent;value'></a>
9287          @@@cfg:entity-replacement-tree: 1
9288          @@@test:domTree:
9289            document {
9290              document-type {
9291                general-entity {
9292                  node-name: 'ent';
9293                  text-content: 'entity!_)value';
9294                }
9295              }
9296              element {
9297                attribute {
9298                  node-name: 'at1';
9299                  text-content: 'valueentity!_)valuevalue';
9300                }
9301                attribute {
9302                  node-name: 'at2';
9303                  text-content: 'valueentity!_)valuevalue';
9304                }
9305              }
9306            }
9307        @@XMLTest:
9308          @@@QName: xp.attr.literal.entref.nest.test
9309          @@@DEnt:
9310            @@@@test:value:
9311              <!DOCTYPE a [
9312                <!ENTITY ent1 "entity&#x26;#33;_&#x26;#x29;value">
9313                <!ENTITY ent2 "@&ent1;@">
9314              ]>
9315              <a at1 = "value&ent2;value"
9316                 at2 = 'value&ent2;value'></a>
9317          @@@cfg:entity-replacement-tree: 1
9318          @@@test:domTree:
9319            document {
9320              document-type {
9321                general-entity {
9322                  node-name: 'ent1';
9323                  text-content: 'entity!_)value';
9324                }
9325                general-entity {
9326                  node-name: 'ent2';
9327                  text-content: '@entity!_)value@';
9328                }
9329              }
9330              element {
9331                attribute {
9332                  node-name: 'at1';
9333                  text-content: 'value@entity!_)value@value';
9334                }
9335                attribute {
9336                  node-name: 'at2';
9337                  text-content: 'value@entity!_)value@value';
9338                }
9339              }
9340            }
9341    
9342        @@XMLTest:
9343          @@@QName: xp.element.content.ncr.1.test
9344          @@@DEnt:
9345            @@@@test:value:
9346              <e>&#33;</e>
9347          @@@test:domTree:
9348            document {
9349              element {
9350                text-content: '!';
9351              }
9352            }
9353        @@XMLTest:
9354          @@@QName: xp.element.content.ncr.2.test
9355          @@@DEnt:
9356            @@@@test:value:
9357              <e>aaaa&#33;bbbb</e>
9358          @@@test:domTree:
9359            document {
9360              element {
9361                text-content: 'aaaa!bbbb';
9362                text {
9363                  text-content: 'aaaa!bbbb';
9364                }
9365              }
9366            }
9367        @@XMLTest:
9368          @@@QName: xp.attrval.ncr.1.test
9369          @@@DEnt:
9370            @@@@test:value:
9371              <e a="&#33;"/>
9372          @@@test:domTree:
9373            document {
9374              element {
9375                attribute {
9376                  node-name: 'a';
9377                  text-content: '!';
9378                }
9379              }
9380            }
9381        @@XMLTest:
9382          @@@QName: xp.attrval.ncr.2.test
9383          @@@DEnt:
9384            @@@@test:value:
9385              <e a="aaaaa&#33;bbbbb"/>
9386          @@@test:domTree:
9387            document {
9388              element {
9389                attribute {
9390                  node-name: 'a';
9391                  text-content: 'aaaaa!bbbbb';
9392                  text {
9393                    text-content: 'aaaaa!bbbbb';
9394                  }
9395                }
9396              }
9397            }
9398        @@XMLTest:
9399          @@@QName: xp.attrval.ncr.3.test
9400          @@@DEnt:
9401            @@@@test:value:
9402              <e a='&#33;'/>
9403          @@@test:domTree:
9404            document {
9405              element {
9406                attribute {
9407                  node-name: 'a';
9408                  text-content: '!';
9409                }
9410              }
9411            }
9412        @@XMLTest:
9413          @@@QName: xp.attrval.ncr.4.test
9414          @@@DEnt:
9415            @@@@test:value:
9416              <e a='aaaaa&#33;bbbbb'/>
9417          @@@test:domTree:
9418            document {
9419              element {
9420                attribute {
9421                  node-name: 'a';
9422                  text-content: 'aaaaa!bbbbb';
9423                }
9424              }
9425            }
9426        @@XMLTest:
9427          @@@QName: xp.entval.ncr.1.test
9428          @@@DEnt:
9429            @@@@test:value:
9430              <!DOCTYPE e [
9431                <!ENTITY ent "&#33;">
9432              ]>
9433              <e/>
9434          @@@cfg:entity-replacement-tree: 1
9435          @@@test:domTree:
9436            document {
9437              document-type {
9438                general-entity {
9439                  node-name: 'ent';
9440                  text-content: '!';
9441                }
9442              }
9443              element { }
9444            }
9445        @@XMLTest:
9446          @@@QName: xp.entval.ncr.2.test
9447          @@@DEnt:
9448            @@@@test:value:
9449              <!DOCTYPE e [
9450                <!ENTITY ent "aaaaa&#33;bbbbb">
9451              ]>
9452              <e/>
9453          @@@cfg:entity-replacement-tree: 1
9454          @@@test:domTree:
9455            document {
9456              document-type {
9457                general-entity {
9458                  node-name: 'ent';
9459                  text-content: 'aaaaa!bbbbb';
9460                }
9461              }
9462              element { }
9463            }
9464        @@XMLTest:
9465          @@@QName: xp.element.content.reptxt.ncr.1.test
9466          @@@DEnt:
9467            @@@@test:value:
9468              <!DOCTYPE e [
9469                <!ENTITY ent "&#38;#33;">
9470              ]>
9471              <e>&ent;</e>
9472          @@@test:domTree:
9473            document {
9474              document-type { }
9475              element {
9476                general-entity-reference {
9477                  node-name: 'ent';
9478                  text-content: '!';
9479                  manakai-expanded: true;
9480                }
9481              }
9482            }
9483        @@XMLTest:
9484          @@@QName: xp.element.content.reptxt.ncr.2.test
9485          @@@DEnt:
9486            @@@@test:value:
9487              <!DOCTYPE e [
9488                <!ENTITY ent "aaaaa&#38;#33;bbbbb">
9489              ]>
9490              <e>&ent;</e>
9491          @@@test:domTree:
9492            document {
9493              document-type { }
9494              element {
9495                general-entity-reference {
9496                  node-name: 'ent';
9497                  text-content: 'aaaaa!bbbbb';
9498                  manakai-expanded: true;
9499                }
9500              }
9501            }
9502        @@XMLTest:
9503          @@@QName: xp.element.content.reptxt.reptxt.ncr.1.test
9504          @@@DEnt:
9505            @@@@test:value:
9506              <!DOCTYPE e [
9507                <!ENTITY ent "&#38;#33;">
9508                <!ENTITY ent2 "&ent;">
9509              ]>
9510              <e>&ent2;</e>
9511          @@@test:domTree:
9512            document {
9513              document-type { }
9514              element {
9515                general-entity-reference {
9516                  node-name: 'ent2';
9517                  general-entity-reference {
9518                    node-name: 'ent';
9519                    text-content: '!';
9520                    manakai-expanded: true;
9521                  }
9522                  manakai-expanded: true;
9523                }
9524              }
9525            }
9526        @@XMLTest:
9527          @@@QName: xp.element.content.reptxt.reptxt.ncr.2.test
9528          @@@DEnt:
9529            @@@@test:value:
9530              <!DOCTYPE e [
9531                <!ENTITY ent "aa&#38;#33;bb">
9532                <!ENTITY ent2 "&ent;">
9533              ]>
9534              <e>&ent2;</e>
9535          @@@test:domTree:
9536            document {
9537              document-type { }
9538              element {
9539                general-entity-reference {
9540                  node-name: 'ent2';
9541                  general-entity-reference {
9542                    node-name: 'ent';
9543                    text-content: 'aa!bb';
9544                    manakai-expanded: true;
9545                    text {
9546                      text-content: 'aa!bb';
9547                    }
9548                  }
9549                  manakai-expanded: true;
9550                }
9551              }
9552            }
9553        @@XMLTest:
9554          @@@QName: xp.attval.reptxt.ncr.1.test
9555          @@@DEnt:
9556            @@@@test:value:
9557              <!DOCTYPE e [
9558                <!ENTITY ent "&#38;#33;">
9559              ]>
9560              <e a="&ent;"/>
9561          @@@test:domTree:
9562            document {
9563              document-type { }
9564              element {
9565                attribute {
9566                  node-name: 'a';
9567                  general-entity-reference {
9568                    node-name: 'ent';
9569                    text-content: '!';
9570                    manakai-expanded: true;
9571                  }
9572                }
9573              }
9574            }
9575        @@XMLTest:
9576          @@@QName: xp.attval.reptxt.ncr.2.test
9577          @@@DEnt:
9578            @@@@test:value:
9579              <!DOCTYPE e [
9580                <!ENTITY ent "aaaaa&#38;#33;bbbbb">
9581              ]>
9582              <e a="&ent;"/>
9583          @@@test:domTree:
9584            document {
9585              document-type { }
9586              element {
9587                attribute {
9588                  node-name: 'a';
9589                  general-entity-reference {
9590                    node-name: 'ent';
9591                    text-content: 'aaaaa!bbbbb';
9592                    manakai-expanded: true;
9593                    text {
9594                      text-content: 'aaaaa!bbbbb';
9595                    }
9596                  }
9597                }
9598              }
9599            }
9600        @@XMLTest:
9601          @@@QName: xp.attval.reptxt.reptxt.ncr.1.test
9602          @@@DEnt:
9603            @@@@test:value:
9604              <!DOCTYPE e [
9605                <!ENTITY ent "&#38;#33;">
9606                <!ENTITY ent2 "&ent;">
9607              ]>
9608              <e a="&ent2;"/>
9609          @@@test:domTree:
9610            document {
9611              document-type { }
9612              element {
9613                attribute {
9614                  node-name: 'a';
9615                  general-entity-reference {
9616                    node-name: 'ent2';
9617                    manakai-expanded: true;
9618                    general-entity-reference {
9619                      node-name: 'ent';
9620                      text-content: '!';
9621                      manakai-expanded: true;
9622                    }
9623                  }
9624                }
9625              }
9626            }
9627        @@XMLTest:
9628          @@@QName: xp.attval.reptxt.reptxt.ncr.2.test
9629          @@@DEnt:
9630            @@@@test:value:
9631              <!DOCTYPE e [
9632                <!ENTITY ent "aa&#38;#33;bb">
9633                <!ENTITY ent2 "&ent;">
9634              ]>
9635              <e a="&ent2;"/>
9636          @@@test:domTree:
9637            document {
9638              document-type { }
9639              element {
9640                attribute {
9641                  node-name: 'a';
9642                  general-entity-reference {
9643                    node-name: 'ent2';
9644                    manakai-expanded: true;
9645                    general-entity-reference {
9646                      node-name: 'ent';
9647                      text-content: 'aa!bb';
9648                      manakai-expanded: true;
9649                    }
9650                  }
9651                }
9652              }
9653            }
9654    
9655        @@XMLTest:
9656          @@@QName: xp.element.content.hcr.1.test
9657          @@@DEnt:
9658            @@@@test:value:
9659              <e>&#x21;</e>
9660          @@@test:domTree:
9661            document {
9662              element {
9663                text-content: '!';
9664              }
9665            }
9666        @@XMLTest:
9667          @@@QName: xp.element.content.hcr.2.test
9668          @@@DEnt:
9669            @@@@test:value:
9670              <e>aaaa&#x21;bbbb</e>
9671          @@@test:domTree:
9672            document {
9673              element {
9674                text-content: 'aaaa!bbbb';
9675                text {
9676                  text-content: 'aaaa!bbbb';
9677                }
9678              }
9679            }
9680        @@XMLTest:
9681          @@@QName: xp.attrval.hcr.1.test
9682          @@@DEnt:
9683            @@@@test:value:
9684              <e a="&#x21;"/>
9685          @@@test:domTree:
9686            document {
9687              element {
9688                attribute {
9689                  node-name: 'a';
9690                  text-content: '!';
9691                }
9692              }
9693            }
9694        @@XMLTest:
9695          @@@QName: xp.attrval.hcr.2.test
9696          @@@DEnt:
9697            @@@@test:value:
9698              <e a="aaaaa&#x21;bbbbb"/>
9699          @@@test:domTree:
9700            document {
9701              element {
9702                attribute {
9703                  node-name: 'a';
9704                  text-content: 'aaaaa!bbbbb';
9705                  text {
9706                    text-content: 'aaaaa!bbbbb';
9707                  }
9708                }
9709              }
9710            }
9711        @@XMLTest:
9712          @@@QName: xp.attrval.hcr.3.test
9713          @@@DEnt:
9714            @@@@test:value:
9715              <e a='&#x21;'/>
9716          @@@test:domTree:
9717            document {
9718              element {
9719                attribute {
9720                  node-name: 'a';
9721                  text-content: '!';
9722                }
9723              }
9724            }
9725        @@XMLTest:
9726          @@@QName: xp.attrval.hcr.4.test
9727          @@@DEnt:
9728            @@@@test:value:
9729              <e a='aaaaa&#x21;bbbbb'/>
9730          @@@test:domTree:
9731            document {
9732              element {
9733                attribute {
9734                  node-name: 'a';
9735                  text-content: 'aaaaa!bbbbb';
9736                }
9737              }
9738            }
9739        @@XMLTest:
9740          @@@QName: xp.entval.hcr.1.test
9741          @@@DEnt:
9742            @@@@test:value:
9743              <!DOCTYPE e [
9744                <!ENTITY ent "&#x21;">
9745              ]>
9746              <e/>
9747          @@@cfg:entity-replacement-tree: 1
9748          @@@test:domTree:
9749            document {
9750              document-type {
9751                general-entity {
9752                  node-name: 'ent';
9753                  text-content: '!';
9754                }
9755              }
9756              element { }
9757            }
9758        @@XMLTest:
9759          @@@QName: xp.entval.hcr.2.test
9760          @@@DEnt:
9761            @@@@test:value:
9762              <!DOCTYPE e [
9763                <!ENTITY ent "aaaaa&#x21;bbbbb">
9764              ]>
9765              <e/>
9766          @@@cfg:entity-replacement-tree: 1
9767          @@@test:domTree:
9768            document {
9769              document-type {
9770                general-entity {
9771                  node-name: 'ent';
9772                  text-content: 'aaaaa!bbbbb';
9773                  text {
9774                    text-content: 'aaaaa!bbbbb';
9775                  }
9776                }
9777              }
9778              element { }
9779            }
9780        @@XMLTest:
9781          @@@QName: xp.element.content.reptxt.hcr.1.test
9782          @@@DEnt:
9783            @@@@test:value:
9784              <!DOCTYPE e [
9785                <!ENTITY ent "&#38;#x21;">
9786              ]>
9787              <e>&ent;</e>
9788          @@@test:domTree:
9789            document {
9790              document-type { }
9791              element {
9792                general-entity-reference {
9793                  node-name: 'ent';
9794                  text-content: '!';
9795                  manakai-expanded: true;
9796                }
9797              }
9798            }
9799        @@XMLTest:
9800          @@@QName: xp.element.content.reptxt.hcr.2.test
9801          @@@DEnt:
9802            @@@@test:value:
9803              <!DOCTYPE e [
9804                <!ENTITY ent "aaaaa&#38;#x21;bbbbb">
9805              ]>
9806              <e>&ent;</e>
9807          @@@test:domTree:
9808            document {
9809              document-type { }
9810              element {
9811                general-entity-reference {
9812                  node-name: 'ent';
9813                  text-content: 'aaaaa!bbbbb';
9814                  manakai-expanded: true;
9815                }
9816              }
9817            }
9818        @@XMLTest:
9819          @@@QName: xp.element.content.reptxt.reptxt.hcr.1.test
9820          @@@DEnt:
9821            @@@@test:value:
9822              <!DOCTYPE e [
9823                <!ENTITY ent "&#38;#x21;">
9824                <!ENTITY ent2 "&ent;">
9825              ]>
9826              <e>&ent2;</e>
9827          @@@test:domTree:
9828            document {
9829              document-type { }
9830              element {
9831                general-entity-reference {
9832                  node-name: 'ent2';
9833                  manakai-expanded: true;
9834                  general-entity-reference {
9835                    node-name: 'ent';
9836                    text-content: '!';
9837                    manakai-expanded: true;
9838                  }
9839                }
9840              }
9841            }
9842        @@XMLTest:
9843          @@@QName: xp.element.content.reptxt.reptxt.hcr.2.test
9844          @@@DEnt:
9845            @@@@test:value:
9846              <!DOCTYPE e [
9847                <!ENTITY ent "aa&#38;#x21;bb">
9848                <!ENTITY ent2 "&ent;">
9849              ]>
9850              <e>&ent2;</e>
9851          @@@test:domTree:
9852            document {
9853              document-type { }
9854              element {
9855                general-entity-reference {
9856                  node-name: 'ent2';
9857                  manakai-expanded: true;
9858                  general-entity-reference {
9859                    node-name: 'ent';
9860                    manakai-expanded: true;
9861                    text-content: 'aa!bb';
9862                  }
9863                }
9864              }
9865            }
9866        @@XMLTest:
9867          @@@QName: xp.attval.reptxt.hcr.1.test
9868          @@@DEnt:
9869            @@@@test:value:
9870              <!DOCTYPE e [
9871                <!ENTITY ent "&#38;#x21;">
9872              ]>
9873              <e a="&ent;"/>
9874          @@@test:domTree:
9875            document {
9876              document-type { }
9877              element {
9878                attribute {
9879                  node-name: 'a';
9880                  general-entity-reference {
9881                    node-name: 'ent';
9882                    manakai-expanded: true;
9883                    text-content: '!';
9884                  }
9885                }
9886              }
9887            }
9888        @@XMLTest:
9889          @@@QName: xp.attval.reptxt.hcr.2.test
9890          @@@DEnt:
9891            @@@@test:value:
9892              <!DOCTYPE e [
9893                <!ENTITY ent "aaaaa&#38;#x21;bbbbb">
9894              ]>
9895              <e a="&ent;"/>
9896          @@@test:domTree:
9897            document {
9898              document-type { }
9899              element {
9900                attribute {
9901                  node-name: 'a';
9902                  general-entity-reference {
9903                    node-name: 'ent';
9904                    manakai-expanded: true;
9905                    text-content: 'aaaaa!bbbbb';
9906                    text {
9907                      text-content: 'aaaaa!bbbbb';
9908                    }
9909                  }
9910                }
9911              }
9912            }
9913        @@XMLTest:
9914          @@@QName: xp.attval.reptxt.reptxt.hcr.1.test
9915          @@@DEnt:
9916            @@@@test:value:
9917              <!DOCTYPE e [
9918                <!ENTITY ent "&#38;#x21;">
9919                <!ENTITY ent2 "&ent;">
9920              ]>
9921              <e a="&ent2;"/>
9922          @@@test:domTree:
9923            document {
9924              document-type { }
9925              element {
9926                attribute {
9927                  node-name: 'a';
9928                  general-entity-reference {
9929                    node-name: 'ent2';
9930                    manakai-expanded: true;
9931                    general-entity-reference {
9932                      node-name: 'ent';
9933                      manakai-expanded: true;
9934                      text-content: '!';
9935                    }
9936                  }
9937                }
9938              }
9939            }
9940        @@XMLTest:
9941          @@@QName: xp.attval.reptxt.reptxt.hcr.2.test
9942          @@@DEnt:
9943            @@@@test:value:
9944              <!DOCTYPE e [
9945                <!ENTITY ent "aa&#38;#x21;bb">
9946                <!ENTITY ent2 "&ent;">
9947              ]>
9948              <e a="&ent2;"/>
9949          @@@test:domTree:
9950            document {
9951              document-type { }
9952              element {
9953                attribute {
9954                  node-name: 'a';
9955                  general-entity-reference {
9956                    node-name: 'ent2';
9957                    manakai-expanded: true;
9958                    general-entity-reference {
9959                      node-name: 'ent';
9960                      manakai-expanded: true;
9961                      text-content: 'aa!bb';
9962                    }
9963                  }
9964                }
9965              }
9966            }
9967    
9968        @@XMLTest:
9969          @@@QName: xp.element.content.ncr.legal.char.1.0.1.test
9970          @@@DEnt:
9971            @@@@test:value:
9972              <?xml version="1.0"?>
9973              <e>&#0;</e>
9974          @@@c:erred: <[[xp|wf-legal-character]]> { (2, 4)..(2, 7); }
9975        @@XMLTest:
9976          @@@QName: xp.element.content.ncr.legal.char.1.1.1.test
9977          @@@DEnt:
9978            @@@@test:value:
9979              <?xml version="1.1"?>
9980              <e>&#0;</e>
9981          @@@c:erred: <[[xp|wf-legal-character]]> { (2, 4)..(2, 7); }
9982        @@XMLTest:
9983          @@@QName: xp.element.content.ncr.legal.char.1.0.2.test
9984          @@@DEnt:
9985            @@@@test:value:
9986              <?xml version="1.0"?>
9987              <e>&#1;</e>
9988          @@@c:erred: <[[xp|wf-legal-character]]> { (2, 4)..(2, 7); }
9989        @@XMLTest:
9990          @@@QName: xp.element.content.ncr.legal.char.1.1.2.test
9991          @@@DEnt:
9992            @@@@test:value:
9993              <?xml version="1.1"?>
9994              <e>&#1;</e>
9995          @@@test:domTree:
9996            document {
9997              xml-version: '1.1';
9998              element {
9999                text-content: U+0001;
10000              }
10001            }
10002        @@XMLTest:
10003          @@@QName: xp.element.content.hcr.legal.char.1.0.1.test
10004          @@@DEnt:
10005            @@@@test:value:
10006              <?xml version="1.0"?>
10007              <e>&#x0;</e>
10008          @@@c:erred: <[[xp|wf-legal-character]]> { (2, 4)..(2, 8); }
10009        @@XMLTest:
10010          @@@QName: xp.element.content.hcr.legal.char.1.1.1.test
10011          @@@DEnt:
10012            @@@@test:value:
10013              <?xml version="1.1"?>
10014              <e>&#x0;</e>
10015          @@@c:erred: <[[xp|wf-legal-character]]> { (2, 4)..(2, 8); }
10016        @@XMLTest:
10017          @@@QName: xp.element.content.hcr.legal.char.1.0.2.test
10018          @@@DEnt:
10019            @@@@test:value:
10020              <?xml version="1.0"?>
10021              <e>&#x1;</e>
10022          @@@c:erred: <[[xp|wf-legal-character]]> { (2, 4)..(2, 8); }
10023        @@XMLTest:
10024          @@@QName: xp.element.content.hcr.legal.char.1.1.2.test
10025          @@@DEnt:
10026            @@@@test:value:
10027              <?xml version="1.1"?>
10028              <e>&#x1;</e>
10029          @@@test:domTree:
10030            document {
10031              xml-version: '1.1';
10032              element {
10033                text-content: U+0001;
10034              }
10035            }
10036    
10037        @@XMLTest:
10038          @@@QName: xp.element.content.ger.entity.declared.nodtd.1.test
10039          @@@DEnt:
10040            @@@@test:value:
10041              <p>&entity;</p>
10042          @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 4)..(1, 11); }
10043        @@XMLTest:
10044          @@@QName: xp.element.content.ger.entity.declared.nodtd.2.test
10045          @@@DEnt:
10046            @@@@test:value:
10047              <?xml version="1.0" standalone="yes"?>
10048              <p>&entity;</p>
10049          @@@c:erred: <[[xp|wf-entity-declared]]> { (2, 4)..(2, 11); }
10050        @@XMLTest:
10051          @@@QName: xp.element.content.ger.entity.declared.nodtd.3.test
10052          @@@DEnt:
10053            @@@@test:value:
10054              <?xml version="1.0" standalone="no"?>
10055              <p>&entity;</p>
10056          @@@c:erred: <[[xp|wf-entity-declared]]> { (2, 4)..(2, 11); }
10057        @@XMLTest:
10058          @@@QName: xp.element.content.ger.entity.declared.nodtd.-1.test
10059          @@@DEnt:
10060            @@@@test:value:
10061              <p>&lt;&gt;&amp;&quot;&apos;</p>
10062          @@@test:domTree:
10063            document {
10064              element {
10065                text-content: '<>&"' U+0027;
10066              }
10067            }
10068        @@XMLTest:
10069          @@@QName: xp.element.content.ger.entity.declared.nopref.1.test
10070          @@@DEnt:
10071            @@@@test:value:
10072              <!DOCTYPE p []>
10073              <p>&entity;</p>
10074          @@@c:erred: <[[xp|wf-entity-declared]]> { (2, 4)..(2, 11); }
10075        @@XMLTest:
10076          @@@QName: xp.element.content.ger.entity.declared.nopref.2.test
10077          @@@DEnt:
10078            @@@@test:value:
10079              <!DOCTYPE p [
10080                <!ENTITY other "aa">
10081                <!ENTITY % another "aa">
10082              ]>
10083              <p>&entity;</p>
10084          @@@c:erred: <[[xp|wf-entity-declared]]> { (5, 4)..(5, 11); }
10085        @@XMLTest:
10086          @@@QName: xp.element.content.ger.entity.declared.nopref.3.test
10087          @@@DEnt:
10088            @@@@test:value:
10089              <?xml version="1.0" standalone="yes"?>
10090              <!DOCTYPE p []>
10091              <p>&entity;</p>
10092          @@@c:erred: <[[xp|wf-entity-declared]]> { (3, 4)..(3, 11); }
10093        @@XMLTest:
10094          @@@QName: xp.element.content.ger.entity.declared.nopref.4.test
10095          @@@DEnt:
10096            @@@@test:value:
10097              <?xml version="1.0" standalone="no"?>
10098              <!DOCTYPE p []>
10099              <p>&entity;</p>
10100          @@@c:erred: <[[xp|wf-entity-declared]]> { (3, 4)..(3, 11); }
10101        @@XMLTest:
10102          @@@QName: xp.element.content.ger.entity.declared.nopref.5.test
10103          @@@DEnt:
10104            @@@@test:value:
10105              <?xml version="1.0" standalone="yes"?>
10106              <!DOCTYPE p [
10107                <!ENTITY other "aa">
10108                <!ENTITY % another "aa">
10109              ]>
10110              <p>&entity;</p>
10111          @@@c:erred: <[[xp|wf-entity-declared]]> { (6, 4)..(6, 11); }
10112        @@XMLTest:
10113          @@@QName: xp.element.content.ger.entity.declared.nopref.6.test
10114          @@@DEnt:
10115            @@@@test:value:
10116              <?xml version="1.0" standalone="no"?>
10117              <!DOCTYPE p [
10118                <!ENTITY other "aa">
10119                <!ENTITY % another "aa">
10120              ]>
10121              <p>&entity;</p>
10122          @@@c:erred: <[[xp|wf-entity-declared]]> { (6, 4)..(6, 11); }
10123        @@XMLTest:
10124          @@@QName: xp.element.content.ger.entity.declared.nopref.-1.test
10125          @@@DEnt:
10126            @@@@test:value:
10127              <!DOCTYPE p [
10128                <!ENTITY entity "value">
10129              ]>
10130              <p>&entity;</p>
10131          @@@cfg:entity-replacement-tree: 1
10132          @@@test:domTree:
10133            document {
10134              document-type {
10135                general-entity {
10136                  node-name: 'entity';
10137                  text-content: 'value';
10138                }
10139              }
10140              element {
10141                general-entity-reference {
10142                  node-name: 'entity';
10143                  manakai-expanded: true;
10144                  text-content: 'value';
10145                }
10146              }
10147            }
10148        @@XMLTest:
10149          @@@QName: xp.element.content.ger.entity.declared.nopref.-2.test
10150          @@@DEnt:
10151            @@@@test:value:
10152              <!DOCTYPE p [
10153                <!ENTITY entity "value">
10154                <!ENTITY another SYSTEM "another">
10155              ]>
10156              <p>&entity;</p>
10157          @@@cfg:entity-replacement-tree: 1
10158          @@@test:domTree:
10159            document {
10160              document-type {
10161                general-entity {
10162                  node-name: 'entity';
10163                  text-content: 'value';
10164                }
10165                general-entity {
10166                  node-name: 'another';
10167                  public-id: null;
10168                  system-id: 'another';
10169                }
10170              }
10171              element {
10172                general-entity-reference {
10173                  node-name: 'entity';
10174                  manakai-expanded: true;
10175                  text-content: 'value';
10176                }
10177              }
10178            }
10179        @@XMLTest:
10180          @@@QName: xp.element.content.ger.entity.declared.standalone.1.test
10181          @@@DEnt:
10182            @@@@test:value:
10183              <?xml version="1.0" standalone="yes"?>
10184              <p>&entity;</p>
10185          @@@c:erred: <[[xp|wf-entity-declared]]> { (2, 4)..(2, 11); }
10186        @@XMLTest:
10187          @@@QName: xp.element.content.ger.entity.declared.standalone.2.test
10188          @@@DEnt:
10189            @@@@test:value:
10190              <?xml version="1.0" standalone="yes"?>
10191              <!DOCTYPE p []>
10192              <p>&entity;</p>
10193          @@@c:erred: <[[xp|wf-entity-declared]]> { (3, 4)..(3, 11); }
10194        @@XMLTest:
10195          @@@QName: xp.element.content.ger.entity.declared.standalone.3.test
10196          @@@DEnt:
10197            @@@@test:value:
10198              <?xml version="1.0" standalone="yes"?>
10199              <!DOCTYPE p [
10200                <!ENTITY % para "<!-- -->">
10201                %para;
10202              ]>
10203              <p>&entity;</p>
10204          @@@c:erred: <[[xp|wf-entity-declared]]> { (6, 4)..(6, 11); }
10205        @@XMLTest:
10206          @@@QName: xp.element.content.ger.entity.declared.standalone.-1.test
10207          @@@DEnt:
10208            @@@@test:value:
10209              <?xml version="1.0" standalone="no"?>
10210              <!DOCTYPE p [
10211                <!ENTITY % para "<!-- -->">
10212                %para;
10213              ]>
10214              <p>&entity;</p>
10215          @@@test:domTree:
10216            document {
10217              document-type { }
10218              element {
10219                general-entity-reference {
10220                  manakai-expanded: false;
10221                }
10222              }
10223            }
10224        @@XMLTest:
10225          @@@QName: xp.element.content.ger.entity.declared.standalone.-2.test
10226          @@@DEnt:
10227            @@@@test:value:
10228              <!DOCTYPE p [
10229                <!ENTITY % para "<!-- -->">
10230                %para;
10231              ]>
10232              <p>&entity;</p>
10233          @@@test:domTree:
10234            document {
10235              document-type { }
10236              element {
10237                general-entity-reference {
10238                  manakai-expanded: false;
10239                }
10240              }
10241            }
10242        @@XMLTest:
10243          @@@QName: xp.element.content.ger.entity.declared.standalone.4.test
10244          @@@DEnt:
10245            @@@@test:value:
10246              <?xml version="1.0" standalone="yes"?>
10247              <!DOCTYPE p [
10248                <!ENTITY % para SYSTEM "para">
10249                %para;
10250              ]>
10251              <p>&entity;</p>
10252          @@@c:erred: <[[xp|wf-entity-declared]]> { (6, 4)..(6, 11); }
10253        @@XMLTest:
10254          @@@QName: xp.element.content.ger.entity.declared.standalone.-3.test
10255          @@@DEnt:
10256            @@@@test:value:
10257              <?xml version="1.0" standalone="no"?>
10258              <!DOCTYPE p [
10259                <!ENTITY % para SYSTEM "para">
10260                %para;
10261              ]>
10262              <p>&entity;</p>
10263          @@@test:domTree:
10264            document {
10265              document-type { }
10266              element {
10267                general-entity-reference {
10268                  manakai-expanded: false;
10269                }
10270              }
10271            }
10272        @@XMLTest:
10273          @@@QName: xp.element.content.ger.entity.declared.standalone.-4.test
10274          @@@DEnt:
10275            @@@@test:value:
10276              <!DOCTYPE p [
10277                <!ENTITY % para SYSTEM "para">
10278                %para;
10279              ]>
10280              <p>&entity;</p>
10281          @@@test:domTree:
10282            document {
10283              document-type { }
10284              element {
10285                general-entity-reference {
10286                  manakai-expanded: false;
10287                }
10288              }
10289            }
10290        @@XMLTest:
10291          @@@QName: xp.element.content.ger.entity.declared.standalone.5.test
10292          @@@DEnt:
10293            @@@@test:value:
10294              <?xml version="1.0" standalone="yes"?>
10295              <!DOCTYPE p SYSTEM "dtd">
10296              <p>&entity;</p>
10297          @@@c:erred: <[[xp|wf-entity-declared]]> { (3, 4)..(3, 11); }
10298        @@XMLTest:
10299          @@@QName: xp.element.content.ger.entity.declared.standalone.-5.test
10300          @@@DEnt:
10301            @@@@test:value:
10302              <?xml version="1.0" standalone="no"?>
10303              <!DOCTYPE p SYSTEM "dtd">
10304              <p>&entity;</p>
10305          @@@test:domTree:
10306            document {
10307              document-type { }
10308              element {
10309                general-entity-reference {
10310                  manakai-expanded: false;
10311                }
10312              }
10313            }
10314        @@XMLTest:
10315          @@@QName: xp.element.content.ger.entity.declared.standalone.-6.test
10316          @@@DEnt:
10317            @@@@test:value:
10318              <!DOCTYPE p SYSTEM "dtd">
10319              <p>&entity;</p>
10320          @@@test:domTree:
10321            document {
10322              document-type { }
10323              element {
10324                general-entity-reference {
10325                  manakai-expanded: false;
10326                }
10327              }
10328            }
10329    
10330        @@XMLTest:
10331          @@@QName: xp.reptxt.element.content.ger.entity.declared.nopref.1.test
10332          @@@DEnt:
10333            @@@@test:value:
10334              <!DOCTYPE p [
10335              <!ENTITY c "&entity;">
10336              ]>
10337              <p>&c;</p>
10338          @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
10339        @@XMLTest:
10340          @@@QName: xp.reptxt.element.content.ger.entity.declared.nopref.2.test
10341          @@@DEnt:
10342            @@@@test:value:
10343              <!DOCTYPE p [
10344                <!ENTITY other "aa">
10345                <!ENTITY % another "aa">
10346              <!ENTITY c "&entity;">
10347              ]>
10348              <p>&c;</p>
10349          @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
10350        @@XMLTest:
10351          @@@QName: xp.reptxt.element.content.ger.entity.declared.nopref.3.test
10352          @@@DEnt:
10353            @@@@test:value:
10354              <?xml version="1.0" standalone="yes"?>
10355              <!DOCTYPE p [
10356              <!ENTITY c "&entity;">
10357              ]>
10358              <p>&c;</p>
10359          @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
10360        @@XMLTest:
10361          @@@QName: xp.reptxt.element.content.ger.entity.declared.nopref.4.test
10362          @@@DEnt:
10363            @@@@test:value:
10364              <?xml version="1.0" standalone="no"?>
10365              <!DOCTYPE p [
10366              <!ENTITY c "&entity;">
10367              ]>
10368              <p>&c;</p>
10369          @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
10370        @@XMLTest:
10371          @@@QName: xp.reptxt.element.content.ger.entity.declared.nopref.5.test
10372          @@@DEnt:
10373            @@@@test:value:
10374              <?xml version="1.0" standalone="yes"?>
10375              <!DOCTYPE p [
10376                <!ENTITY other "aa">
10377                <!ENTITY % another "aa">
10378              <!ENTITY c "&entity;">
10379              ]>
10380              <p>&c;</p>
10381          @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
10382        @@XMLTest:
10383          @@@QName: xp.reptxt.element.content.ger.entity.declared.nopref.6.test
10384          @@@DEnt:
10385            @@@@test:value:
10386              <?xml version="1.0" standalone="no"?>
10387              <!DOCTYPE p [
10388                <!ENTITY other "aa">
10389                <!ENTITY % another "aa">
10390              <!ENTITY c "&entity;">
10391              ]>
10392              <p>&c;</p>
10393          @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
10394        @@XMLTest:
10395          @@@QName: xp.reptxt.element.content.ger.entity.declared.nopref.-1.test
10396          @@@DEnt:
10397            @@@@test:value:
10398              <!DOCTYPE p [
10399                <!ENTITY entity "value">
10400              <!ENTITY c "&entity;">
10401              ]>
10402              <p>&c;</p>
10403          @@@cfg:entity-replacement-tree: 1
10404          @@@test:domTree:
10405            document {
10406              document-type {
10407                general-entity {
10408                  node-name: 'entity';
10409                  text-content: 'value';
10410                }
10411                general-entity {
10412                  node-name: 'c';
10413                  general-entity-reference {
10414                    node-name: 'entity';
10415                    text-content: 'value';
10416                  }
10417                }
10418              }
10419              element {
10420                general-entity-reference {
10421                  node-name: 'c';
10422                  general-entity-reference {
10423                    node-name: 'entity';
10424                    text-content: 'value';
10425                  }
10426                }
10427              }
10428            }
10429        @@XMLTest:
10430          @@@QName: xp.reptxt.element.content.ger.entity.declared.nopref.-2.test
10431          @@@DEnt:
10432            @@@@test:value:
10433              <!DOCTYPE p [
10434                <!ENTITY entity "value">
10435                <!ENTITY another SYSTEM "another">
10436              <!ENTITY c "&entity;">
10437              ]>
10438              <p>&c;</p>
10439          @@@cfg:entity-replacement-tree: 1
10440          @@@test:domTree:
10441            document {
10442              document-type {
10443                general-entity {
10444                  node-name: 'entity';
10445                  text-content: 'value';
10446                }
10447                general-entity {
10448                  node-name: 'c';
10449                  general-entity-reference {
10450                    node-name: 'entity';
10451                    manakai-expanded: true;
10452                    text-content: 'value';
10453                  }
10454                }
10455                general-entity {
10456                  node-name: 'another';
10457                  public-id: null;
10458                  system-id: 'another';
10459                  has-replacement-tree: false;
10460                }
10461              }
10462              element {
10463                general-entity-reference {
10464                  node-name: 'c';
10465                  manakai-expanded: true;
10466                  general-entity-reference {
10467                    node-name: 'entity';
10468                    manakai-expanded: true;
10469                    text-content: 'value';
10470                  }
10471                }
10472              }
10473            }
10474        @@XMLTest:
10475          @@@QName: xp.reptxt.element.content.ger.entity.declared.standalone.2.test
10476          @@@DEnt:
10477            @@@@test:value:
10478              <?xml version="1.0" standalone="yes"?>
10479              <!DOCTYPE p [
10480              <!ENTITY c "&entity;">
10481              ]>
10482              <p>&c;</p>
10483          @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
10484        @@XMLTest:
10485          @@@QName: xp.reptxt.element.content.ger.entity.declared.standalone.3.test
10486          @@@DEnt:
10487            @@@@test:value:
10488              <?xml version="1.0" standalone="yes"?>
10489              <!DOCTYPE p [
10490                <!ENTITY % para "<!-- -->">
10491                %para;
10492              <!ENTITY c "&entity;">
10493              ]>
10494              <p>&c;</p>
10495          @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
10496        @@XMLTest:
10497          @@@QName: xp.reptxt.element.content.ger.entity.declared.standalone.-1.test
10498          @@@DEnt:
10499            @@@@test:value:
10500              <?xml version="1.0" standalone="no"?>
10501              <!DOCTYPE p [
10502              <!ENTITY c "&entity;">
10503                <!ENTITY % para "<!-- -->">
10504                %para;
10505              ]>
10506              <p>&c;</p>
10507          @@@cfg:entity-replacement-tree: 1
10508          @@@test:domTree:
10509            document {
10510              document-type {
10511                general-entity {
10512                  node-name: 'c';
10513                  general-entity-reference {
10514                    node-name: 'entity';
10515                    manakai-expanded: false;
10516                  }
10517                }
10518              }
10519              element {
10520                general-entity-reference {
10521                  node-name: 'c';
10522                  general-entity-reference {
10523                    node-name: 'entity';
10524                    manakai-expanded: false;
10525                  }
10526                }
10527              }
10528            }
10529        @@XMLTest:
10530          @@@QName:
10531            xp.reptxt.element.content.ger.entity.declared.standalone.-1.2.test
10532          @@@DEnt:
10533            @@@@test:value:
10534              <?xml version="1.0" standalone="no"?>
10535              <!DOCTYPE p [
10536                <!ENTITY % para "<!-- -->">
10537                %para;
10538              <!ENTITY c "&entity;">
10539              ]>
10540              <p>&c;</p>
10541          @@@test:domTree:
10542            document {
10543              document-type { }
10544              element {
10545                general-entity-reference {
10546                  node-name: 'c';
10547                  manakai-expanded: false;
10548                }
10549              }
10550            }
10551        @@XMLTest:
10552          @@@QName: xp.reptxt.element.content.ger.entity.declared.standalone.-2.test
10553          @@@DEnt:
10554            @@@@test:value:
10555              <!DOCTYPE p [
10556              <!ENTITY c "&entity;">
10557                <!ENTITY % para "<!-- -->">
10558                %para;
10559              ]>
10560              <p>&c;</p>
10561          @@@test:domTree:
10562            document {
10563              document-type { }
10564              element {
10565                general-entity-reference {
10566                  node-name: 'c';
10567                  manakai-expanded: true;
10568                  general-entity-reference {
10569                    node-name: 'entity';
10570                    manakai-expanded: false;
10571                  }
10572                }
10573              }
10574            }
10575        @@XMLTest:
10576          @@@QName:
10577            xp.reptxt.element.content.ger.entity.declared.standalone.-2.2.test
10578          @@@DEnt:
10579            @@@@test:value:
10580              <!DOCTYPE p [
10581                <!ENTITY % para "<!-- -->">
10582                %para;
10583              <!ENTITY c "&entity;">
10584              ]>
10585              <p>&c;</p>
10586          @@@test:domTree:
10587            document {
10588              document-type { }
10589              element {
10590                general-entity-reference {
10591                  node-name: 'c';
10592                  manakai-expanded: false;
10593                }
10594              }
10595            }
10596        @@XMLTest:
10597          @@@QName: xp.reptxt.element.content.ger.entity.declared.standalone.4.test
10598          @@@DEnt:
10599            @@@@test:value:
10600              <?xml version="1.0" standalone="yes"?>
10601              <!DOCTYPE p [
10602                <!ENTITY % para SYSTEM "para">
10603                %para;
10604              <!ENTITY c "&entity;">
10605              ]>
10606              <p>&c;</p>
10607          @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
10608        @@XMLTest:
10609          @@@QName: xp.reptxt.element.content.ger.entity.declared.standalone.-3.test
10610          @@@DEnt:
10611            @@@@test:value:
10612              <?xml version="1.0" standalone="no"?>
10613              <!DOCTYPE p [
10614              <!ENTITY c "&entity;">
10615                <!ENTITY % para SYSTEM "para">
10616                %para;
10617              ]>
10618              <p>&c;</p>
10619          @@@test:domTree:
10620            document {
10621              document-type { }
10622              element {
10623                general-entity-reference {
10624                  node-name: 'c';
10625                  manakai-expanded: true;
10626                  general-entity-reference {
10627                    node-name: 'entity';
10628                    manakai-expanded: false;
10629                  }
10630                }
10631              }
10632            }
10633        @@XMLTest:
10634          @@@QName:
10635            xp.reptxt.element.content.ger.entity.declared.standalone.-3.2.test
10636          @@@DEnt:
10637            @@@@test:value:
10638              <?xml version="1.0" standalone="no"?>
10639              <!DOCTYPE p [
10640                <!ENTITY % para SYSTEM "para">
10641                %para;
10642              <!ENTITY c "&entity;">
10643              ]>
10644              <p>&c;</p>
10645          @@@test:domTree:
10646            document {
10647              document-type { }
10648              element {
10649                general-entity-reference {
10650                  node-name: 'c';
10651                  manakai-expanded: false;
10652                }
10653              }
10654            }
10655        @@XMLTest:
10656          @@@QName: xp.reptxt.element.content.ger.entity.declared.standalone.-4.test
10657          @@@DEnt:
10658            @@@@test:value:
10659              <!DOCTYPE p [
10660              <!ENTITY c "&entity;">
10661                <!ENTITY % para SYSTEM "para">
10662                %para;
10663              ]>
10664              <p>&c;</p>
10665          @@@test:domTree:
10666            document {
10667              document-type { }
10668              element {
10669                general-entity-reference {
10670                  node-name: 'c';
10671                  manakai-expanded: true;
10672                  general-entity-reference {
10673                    node-name: 'entity';
10674                    manakai-expanded: false;
10675                  }
10676                }
10677              }
10678            }
10679        @@XMLTest:
10680          @@@QName:
10681            xp.reptxt.element.content.ger.entity.declared.standalone.-4.2.test
10682          @@@DEnt:
10683            @@@@test:value:
10684              <!DOCTYPE p [
10685                <!ENTITY % para SYSTEM "para">
10686                %para;
10687              <!ENTITY c "&entity;">
10688              ]>
10689              <p>&c;</p>
10690          @@@test:domTree:
10691            document {
10692              document-type { }
10693              element {
10694                general-entity-reference {
10695                  node-name: 'c';
10696                  manakai-expanded: false;
10697                }
10698              }
10699            }
10700        @@XMLTest:
10701          @@@QName: xp.reptxt.element.content.ger.entity.declared.standalone.5.test
10702          @@@DEnt:
10703            @@@@test:value:
10704              <?xml version="1.0" standalone="yes"?>
10705              <!DOCTYPE p SYSTEM "dtd" [
10706              <!ENTITY c "&entity;">
10707              ]>
10708              <p>&c;</p>
10709          @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
10710        @@XMLTest:
10711          @@@QName: xp.reptxt.element.content.ger.entity.declared.standalone.-5.test
10712          @@@DEnt:
10713            @@@@test:value:
10714              <?xml version="1.0" standalone="no"?>
10715              <!DOCTYPE p SYSTEM "dtd" [
10716              <!ENTITY c "&entity;">
10717              ]>
10718              <p>&c;</p>
10719          @@@test:domTree:
10720            document {
10721              document-type { }
10722              element {
10723                general-entity-reference {
10724                  node-name: 'c';
10725                  manakai-expanded: true;
10726                  general-entity-reference {
10727                    node-name: 'entity';
10728                    manakai-expanded: false;
10729                  }
10730                }
10731              }
10732            }
10733        @@XMLTest:
10734          @@@QName: xp.reptxt.element.content.ger.entity.declared.standalone.-6.test
10735          @@@DEnt:
10736            @@@@test:value:
10737              <!DOCTYPE p SYSTEM "dtd" [<!ENTITY c "&entity;">]>
10738              <p>&c;</p>
10739          @@@test:domTree:
10740            document {
10741              document-type { }
10742              element {
10743                general-entity-reference {
10744                  node-name: 'c';
10745                  manakai-expanded: true;
10746                  general-entity-reference {
10747                    node-name: 'entity';
10748                    manakai-expanded: false;
10749                  }
10750                }
10751              }
10752            }
10753    
10754        @@XMLTest:
10755          @@@QName: xp.attval.ger.entity.declared.nodtd.1.test
10756          @@@DEnt:
10757            @@@@test:value:
10758              <p a="&entity;"/>
10759          @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 7)..(1, 14); }
10760        @@XMLTest:
10761          @@@QName: xp.attval.ger.entity.declared.nodtd.2.test
10762          @@@DEnt:
10763            @@@@test:value:
10764              <?xml version="1.0" standalone="yes"?>
10765              <p a="&entity;"/>
10766          @@@c:erred: <[[xp|wf-entity-declared]]> { (2, 7)..(2, 14); }
10767        @@XMLTest:
10768          @@@QName: xp.attval.ger.entity.declared.nodtd.3.test
10769          @@@DEnt:
10770            @@@@test:value:
10771              <?xml version="1.0" standalone="no"?>
10772              <p a="&entity;"/>
10773          @@@c:erred: <[[xp|wf-entity-declared]]> { (2, 7)..(2, 14); }
10774        @@XMLTest:
10775          @@@QName: xp.attval.ger.entity.declared.nodtd.-1.test
10776          @@@DEnt:
10777            @@@@test:value:
10778              <p a="&lt;&gt;&amp;&quot;&apos;"/>
10779          @@@test:domTree:
10780            document {
10781              element {
10782                attribute {
10783                  node-name: 'a';
10784                  text-content: '<>&"' U+0027;
10785                }
10786              }
10787            }
10788        @@XMLTest:
10789          @@@QName: xp.attval.ger.entity.declared.nopref.1.test
10790          @@@DEnt:
10791            @@@@test:value:
10792              <!DOCTYPE p []>
10793              <p a="&entity;"/>
10794          @@@c:erred: <[[xp|wf-entity-declared]]> { (2, 7)..(2, 14); }
10795        @@XMLTest:
10796          @@@QName: xp.attval.ger.entity.declared.nopref.2.test
10797          @@@DEnt:
10798            @@@@test:value:
10799              <!DOCTYPE p [
10800                <!ENTITY other "aa">
10801                <!ENTITY % another "aa">
10802              ]>
10803              <p a="&entity;"/>
10804          @@@c:erred: <[[xp|wf-entity-declared]]> { (5, 7)..(5, 14); }
10805        @@XMLTest:
10806          @@@QName: xp.attval.ger.entity.declared.nopref.3.test
10807          @@@DEnt:
10808            @@@@test:value:
10809              <?xml version="1.0" standalone="yes"?>
10810              <!DOCTYPE p []>
10811              <p a="&entity;"/>
10812          @@@c:erred: <[[xp|wf-entity-declared]]> { (3, 7)..(3, 14); }
10813        @@XMLTest:
10814          @@@QName: xp.attval.ger.entity.declared.nopref.4.test
10815          @@@DEnt:
10816            @@@@test:value:
10817              <?xml version="1.0" standalone="no"?>
10818              <!DOCTYPE p []>
10819              <p a="&entity;"/>
10820          @@@c:erred: <[[xp|wf-entity-declared]]> { (3, 7)..(3, 14); }
10821        @@XMLTest:
10822          @@@QName: xp.attval.ger.entity.declared.nopref.5.test
10823          @@@DEnt:
10824            @@@@test:value:
10825              <?xml version="1.0" standalone="yes"?>
10826              <!DOCTYPE p [
10827                <!ENTITY other "aa">
10828                <!ENTITY % another "aa">
10829              ]>
10830              <p a="&entity;"/>
10831          @@@c:erred: <[[xp|wf-entity-declared]]> { (6, 7)..(6, 14); }
10832        @@XMLTest:
10833          @@@QName: xp.attval.ger.entity.declared.nopref.6.test
10834          @@@DEnt:
10835            @@@@test:value:
10836              <?xml version="1.0" standalone="no"?>
10837              <!DOCTYPE p [
10838                <!ENTITY other "aa">
10839                <!ENTITY % another "aa">
10840              ]>
10841              <p a="&entity;"/>
10842          @@@c:erred: <[[xp|wf-entity-declared]]> { (6, 7)..(6, 14); }
10843        @@XMLTest:
10844          @@@QName: xp.attval.ger.entity.declared.nopref.-1.test
10845          @@@DEnt:
10846            @@@@test:value:
10847              <!DOCTYPE p [
10848                <!ENTITY entity "value">
10849              ]>
10850              <p a="&entity;"/>
10851          @@@cfg:entity-replacement-tree: 1
10852          @@@test:domTree:
10853            document {
10854              document-type {
10855                general-entity {
10856                  node-name: 'entity';
10857                  text-content: 'value';
10858                }
10859              }
10860              element {
10861                attribute {
10862                  node-name: 'a';
10863                  general-entity-reference {
10864                    node-name: 'entity';
10865                    manakai-expanded: true;
10866                    text-content: 'value';
10867                  }
10868                }
10869              }
10870            }
10871        @@XMLTest:
10872          @@@QName: xp.attval.ger.entity.declared.nopref.-2.test
10873          @@@DEnt:
10874            @@@@test:value:
10875              <!DOCTYPE p [
10876                <!ENTITY entity "value">
10877                <!ENTITY another SYSTEM "another">
10878              ]>
10879              <p a="&entity;"/>
10880          @@@cfg:entity-replacement-tree: 1
10881          @@@test:domTree:
10882            document {
10883              document-type {
10884                general-entity {
10885                  node-name: 'entity';
10886                  text-content: 'value';
10887                  has-replacement-tree: true;
10888                }
10889                general-entity {
10890                  node-name: 'another';
10891                  public-id: null;
10892                  system-id: 'another';
10893                  has-replacement-tree: false;
10894                }
10895              }
10896              element {
10897                attribute {
10898                  node-name: 'a';
10899                  general-entity-reference {
10900                    node-name: 'entity';
10901                    manakai-expanded: true;
10902                    text-content: 'value';
10903                  }
10904                }
10905              }
10906            }
10907        @@XMLTest:
10908          @@@QName: xp.attval.ger.entity.declared.standalone.1.test
10909          @@@DEnt:
10910            @@@@test:value:
10911              <?xml version="1.0" standalone="yes"?>
10912              <p a="&entity;"/>
10913          @@@c:erred: <[[xp|wf-entity-declared]]> { (2, 7)..(2, 14); }
10914        @@XMLTest:
10915          @@@QName: xp.attval.ger.entity.declared.standalone.2.test
10916          @@@DEnt:
10917            @@@@test:value:
10918              <?xml version="1.0" standalone="yes"?>
10919              <!DOCTYPE p []>
10920              <p a="&entity;"/>
10921          @@@c:erred: <[[xp|wf-entity-declared]]> { (3, 7)..(3, 14); }
10922        @@XMLTest:
10923          @@@QName: xp.attval.ger.entity.declared.standalone.3.test
10924          @@@DEnt:
10925            @@@@test:value:
10926              <?xml version="1.0" standalone="yes"?>
10927              <!DOCTYPE p [
10928                <!ENTITY % para "<!-- -->">
10929                %para;
10930              ]>
10931              <p a="&entity;"/>
10932          @@@c:erred: <[[xp|wf-entity-declared]]> { (6, 7)..(6, 14); }
10933        @@XMLTest:
10934          @@@QName: xp.attval.ger.entity.declared.standalone.-1.test
10935          @@@DEnt:
10936            @@@@test:value:
10937              <?xml version="1.0" standalone="no"?>
10938              <!DOCTYPE p [
10939                <!ENTITY % para "<!-- -->">
10940                %para;
10941              ]>
10942              <p a="&entity;"/>
10943          @@@test:domTree:
10944            document {
10945              document-type { }
10946              element {
10947                attribute {
10948                  node-name: 'a';
10949                  general-entity-reference {
10950                    manakai-expanded: false;
10951                  }
10952                }
10953              }
10954            }
10955        @@XMLTest:
10956          @@@QName: xp.attval.ger.entity.declared.standalone.-2.test
10957          @@@DEnt:
10958            @@@@test:value:
10959              <!DOCTYPE p [
10960                <!ENTITY % para "<!-- -->">
10961                %para;
10962              ]>
10963              <p a="&entity;"/>
10964          @@@test:domTree:
10965            document {
10966              document-type { }
10967              element {
10968                attribute {
10969                  node-name: 'a';
10970                  general-entity-reference {
10971                    manakai-expanded: false;
10972                  }
10973                }
10974              }
10975            }
10976        @@XMLTest:
10977          @@@QName: xp.attval.ger.entity.declared.standalone.4.test
10978          @@@DEnt:
10979            @@@@test:value:
10980              <?xml version="1.0" standalone="yes"?>
10981              <!DOCTYPE p [
10982                <!ENTITY % para SYSTEM "para">
10983                %para;
10984              ]>
10985              <p a="&entity;"/>
10986          @@@c:erred: <[[xp|wf-entity-declared]]> { (6, 7)..(6, 14); }
10987        @@XMLTest:
10988          @@@QName: xp.attval.ger.entity.declared.standalone.-3.test
10989          @@@DEnt:
10990            @@@@test:value:
10991              <?xml version="1.0" standalone="no"?>
10992              <!DOCTYPE p [
10993                <!ENTITY % para SYSTEM "para">
10994                %para;
10995              ]>
10996              <p a="&entity;"/>
10997          @@@test:domTree:
10998            document {
10999              document-type { }
11000              element {
11001                attribute {
11002                  node-name: 'a';
11003                  general-entity-reference {
11004                    manakai-expanded: false;
11005                  }
11006                }
11007              }
11008            }
11009        @@XMLTest:
11010          @@@QName: xp.attval.ger.entity.declared.standalone.-4.test
11011          @@@DEnt:
11012            @@@@test:value:
11013              <!DOCTYPE p [
11014                <!ENTITY % para SYSTEM "para">
11015                %para;
11016              ]>
11017              <p a="&entity;"/>
11018          @@@test:domTree:
11019            document {
11020              document-type { }
11021              element {
11022                attribute {
11023                  node-name: 'a';
11024                  general-entity-reference {
11025                    manakai-expanded: false;
11026                  }
11027                }
11028              }
11029            }
11030        @@XMLTest:
11031          @@@QName: xp.attval.ger.entity.declared.standalone.5.test
11032          @@@DEnt:
11033            @@@@test:value:
11034              <?xml version="1.0" standalone="yes"?>
11035              <!DOCTYPE p SYSTEM "dtd">
11036              <p a="&entity;"/>
11037          @@@c:erred: <[[xp|wf-entity-declared]]> { (3, 7)..(3, 14); }
11038        @@XMLTest:
11039          @@@QName: xp.attval.ger.entity.declared.standalone.-5.test
11040          @@@DEnt:
11041            @@@@test:value:
11042              <?xml version="1.0" standalone="no"?>
11043              <!DOCTYPE p SYSTEM "dtd">
11044              <p a="&entity;"/>
11045          @@@test:domTree:
11046            document {
11047              document-type { }
11048              element {
11049                attribute {
11050                  node-name: 'a';
11051                  general-entity-reference {
11052                    manakai-expanded: false;
11053                  }
11054                }
11055              }
11056            }
11057        @@XMLTest:
11058          @@@QName: xp.attval.ger.entity.declared.standalone.-6.test
11059          @@@DEnt:
11060            @@@@test:value:
11061              <!DOCTYPE p SYSTEM "dtd">
11062              <p a="&entity;"/>
11063          @@@test:domTree:
11064            document {
11065              document-type { }
11066              element {
11067                attribute {
11068                  node-name: 'a';
11069                  general-entity-reference {
11070                    manakai-expanded: false;
11071                  }
11072                }
11073              }
11074            }
11075    
11076        @@XMLTest:
11077          @@@QName: xp.reptxt.attval.ger.entity.declared.nopref.1.test
11078          @@@DEnt:
11079            @@@@test:value:
11080              <!DOCTYPE p [
11081              <!ENTITY c "&entity;">
11082              ]>
11083              <p a="&c;"/>
11084          @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
11085        @@XMLTest:
11086          @@@QName: xp.reptxt.attval.ger.entity.declared.nopref.2.test
11087          @@@DEnt:
11088            @@@@test:value:
11089              <!DOCTYPE p [
11090                <!ENTITY other "aa">
11091                <!ENTITY % another "aa">
11092              <!ENTITY c "&entity;">
11093              ]>
11094              <p a="&c;"/>
11095          @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
11096        @@XMLTest:
11097          @@@QName: xp.reptxt.attval.ger.entity.declared.nopref.3.test
11098          @@@DEnt:
11099            @@@@test:value:
11100              <?xml version="1.0" standalone="yes"?>
11101              <!DOCTYPE p [
11102              <!ENTITY c "&entity;">
11103              ]>
11104              <p a="&c;"/>
11105          @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
11106        @@XMLTest:
11107          @@@QName: xp.reptxt.attval.ger.entity.declared.nopref.4.test
11108          @@@DEnt:
11109            @@@@test:value:
11110              <?xml version="1.0" standalone="no"?>
11111              <!DOCTYPE p [
11112              <!ENTITY c "&entity;">
11113              ]>
11114              <p a="&c;"/>
11115          @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
11116        @@XMLTest:
11117          @@@QName: xp.reptxt.attval.ger.entity.declared.nopref.5.test
11118          @@@DEnt:
11119            @@@@test:value:
11120              <?xml version="1.0" standalone="yes"?>
11121              <!DOCTYPE p [
11122                <!ENTITY other "aa">
11123                <!ENTITY % another "aa">
11124              <!ENTITY c "&entity;">
11125              ]>
11126              <p a="&c;"/>
11127          @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
11128        @@XMLTest:
11129          @@@QName: xp.reptxt.attval.ger.entity.declared.nopref.6.test
11130          @@@DEnt:
11131            @@@@test:value:
11132              <?xml version="1.0" standalone="no"?>
11133              <!DOCTYPE p [
11134                <!ENTITY other "aa">
11135                <!ENTITY % another "aa">
11136              <!ENTITY c "&entity;">
11137              ]>
11138              <p a="&c;"/>
11139          @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
11140        @@XMLTest:
11141          @@@QName: xp.reptxt.attval.ger.entity.declared.nopref.-1.test
11142          @@@DEnt:
11143            @@@@test:value:
11144              <!DOCTYPE p [
11145                <!ENTITY entity "value">
11146              <!ENTITY c "&entity;">
11147              ]>
11148              <p a="&c;"/>
11149          @@@cfg:entity-replacement-tree: 1
11150          @@@test:domTree:
11151            document {
11152              document-type {
11153                general-entity {
11154                  node-name: 'entity';
11155                  text-content: 'value';
11156                }
11157                general-entity {
11158                  node-name: 'c';
11159                  general-entity-reference {
11160                    node-name: 'entity';
11161                    text-content: 'value';
11162                  }
11163                }
11164              }
11165              element {
11166                attribute {
11167                  node-name: 'a';
11168                  general-entity-reference {
11169                    node-name: 'c';
11170                    general-entity-reference {
11171                      node-name: 'entity';
11172                      text-content: 'value';
11173                    }
11174                  }
11175                }
11176              }
11177            }
11178        @@XMLTest:
11179          @@@QName: xp.reptxt.attval.ger.entity.declared.nopref.-2.test
11180          @@@DEnt:
11181            @@@@test:value:
11182              <!DOCTYPE p [
11183                <!ENTITY entity "value">
11184                <!ENTITY another SYSTEM "another">
11185              <!ENTITY c "&entity;">
11186              ]>
11187              <p a="&c;"/>
11188          @@@cfg:entity-replacement-tree: 1
11189          @@@test:domTree:
11190            document {
11191              document-type {
11192                general-entity {
11193                  node-name: 'entity';
11194                  text-content: 'value';
11195                }
11196                general-entity {
11197                  node-name: 'c';
11198                  general-entity-reference {
11199                    node-name: 'entity';
11200                    text-content: 'value';
11201                  }
11202                }
11203                general-entity {
11204                  node-name: 'another';
11205                  public-id: null;
11206                  system-id: 'another';
11207                  has-replacement-tree: false;
11208                }
11209              }
11210              element {
11211                attribute {
11212                  node-name: 'a';
11213                  general-entity-reference {
11214                    node-name: 'c';
11215                    general-entity-reference {
11216                      node-name: 'entity';
11217                      text-content: 'value';
11218                    }
11219                  }
11220                }
11221              }
11222            }
11223        @@XMLTest:
11224          @@@QName: xp.reptxt.attval.ger.entity.declared.standalone.2.test
11225          @@@DEnt:
11226            @@@@test:value:
11227              <?xml version="1.0" standalone="yes"?>
11228              <!DOCTYPE p [
11229              <!ENTITY c "&entity;">
11230              ]>
11231              <p a="&c;"/>
11232          @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
11233        @@XMLTest:
11234          @@@QName: xp.reptxt.attval.ger.entity.declared.standalone.3.test
11235          @@@DEnt:
11236            @@@@test:value:
11237              <?xml version="1.0" standalone="yes"?>
11238              <!DOCTYPE p [
11239                <!ENTITY % para "<!-- -->">
11240                %para;
11241              <!ENTITY c "&entity;">
11242              ]>
11243              <p a="&c;"/>
11244          @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
11245        @@XMLTest:
11246          @@@QName: xp.reptxt.attval.ger.entity.declared.standalone.-1.test
11247          @@@DEnt:
11248            @@@@test:value:
11249              <?xml version="1.0" standalone="no"?>
11250              <!DOCTYPE p [
11251              <!ENTITY c "&entity;">
11252                <!ENTITY % para "<!-- -->">
11253                %para;
11254              ]>
11255              <p a="&c;"/>
11256          @@@cfg:entity-replacement-tree: 1
11257          @@@test:domTree:
11258            document {
11259              document-type {
11260                general-entity {
11261                  node-name: 'c';
11262                  general-entity-reference {
11263                    node-name: 'entity';
11264                    manakai-expanded: false;
11265                  }
11266                }
11267              }
11268              element {
11269                attribute {
11270                  node-name: 'a';
11271                  general-entity-reference {
11272                    node-name: 'c';
11273                    general-entity-reference {
11274                      node-name: 'entity';
11275                      manakai-expanded: false;
11276                    }
11277                  }
11278                }
11279              }
11280            }
11281        @@XMLTest:
11282          @@@QName:
11283            xp.reptxt.attval.ger.entity.declared.standalone.-1.2.test
11284          @@@DEnt:
11285            @@@@test:value:
11286              <?xml version="1.0" standalone="no"?>
11287              <!DOCTYPE p [
11288                <!ENTITY % para "<!-- -->">
11289                %para;
11290              <!ENTITY c "&entity;">
11291              ]>
11292              <p a="&c;"/>
11293          @@@test:domTree:
11294            document {
11295              document-type { }
11296              element {
11297                attribute {
11298                  node-name: 'a';
11299                  general-entity-reference {
11300                    node-name: 'c';
11301                    manakai-expanded: false;
11302                  }
11303                }
11304              }
11305            }
11306        @@XMLTest:
11307          @@@QName: xp.reptxt.attval.ger.entity.declared.standalone.-2.test
11308          @@@DEnt:
11309            @@@@test:value:
11310              <!DOCTYPE p [
11311              <!ENTITY c "&entity;">
11312                <!ENTITY % para "<!-- -->">
11313                %para;
11314              ]>
11315              <p a="&c;"/>
11316          @@@test:domTree:
11317            document {
11318              document-type { }
11319              element {
11320                attribute {
11321                  node-name: 'a';
11322                  general-entity-reference {
11323                    node-name: 'c';
11324                    manakai-expanded: true;
11325                    general-entity-reference {
11326                      node-name: 'entity';
11327                      manakai-expanded: false;
11328                    }
11329                  }
11330                }
11331              }
11332            }
11333        @@XMLTest:
11334          @@@QName:
11335            xp.reptxt.attval.ger.entity.declared.standalone.-2.2.test
11336          @@@DEnt:
11337            @@@@test:value:
11338              <!DOCTYPE p [
11339                <!ENTITY % para "<!-- -->">
11340                %para;
11341              <!ENTITY c "&entity;">
11342              ]>
11343              <p a="&c;"/>
11344          @@@test:domTree:
11345            document {
11346              document-type { }
11347              element {
11348                attribute {
11349                  node-name: 'a';
11350                  general-entity-reference {
11351                    node-name: 'c';
11352                    manakai-expanded: false;
11353                  }
11354                }
11355              }
11356            }
11357        @@XMLTest:
11358          @@@QName: xp.reptxt.attval.ger.entity.declared.standalone.4.test
11359          @@@DEnt:
11360            @@@@test:value:
11361              <?xml version="1.0" standalone="yes"?>
11362              <!DOCTYPE p [
11363                <!ENTITY % para SYSTEM "para">
11364                %para;
11365              <!ENTITY c "&entity;">
11366              ]>
11367              <p a="&c;"/>
11368          @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
11369        @@XMLTest:
11370          @@@QName: xp.reptxt.attval.ger.entity.declared.standalone.-3.test
11371          @@@DEnt:
11372            @@@@test:value:
11373              <?xml version="1.0" standalone="no"?>
11374              <!DOCTYPE p [
11375              <!ENTITY c "&entity;">
11376                <!ENTITY % para SYSTEM "para">
11377                %para;
11378              ]>
11379              <p a="&c;"/>
11380          @@@test:domTree:
11381            document {
11382              document-type { }
11383              element {
11384                attribute {
11385                  node-name: 'a';
11386                  general-entity-reference {
11387                    node-name: 'c';
11388                    manakai-expanded: true;
11389                    general-entity-reference {
11390                      node-name: 'entity';
11391                      manakai-expanded: false;
11392                    }
11393                  }
11394                }
11395              }
11396            }
11397        @@XMLTest:
11398          @@@QName:
11399            xp.reptxt.attval.ger.entity.declared.standalone.-3.2.test
11400          @@@DEnt:
11401            @@@@test:value:
11402              <?xml version="1.0" standalone="no"?>
11403              <!DOCTYPE p [
11404                <!ENTITY % para SYSTEM "para">
11405                %para;
11406              <!ENTITY c "&entity;">
11407              ]>
11408              <p a="&c;"/>
11409          @@@test:domTree:
11410            document {
11411              document-type { }
11412              element {
11413                attribute {
11414                  node-name: 'a';
11415                  general-entity-reference {
11416                    node-name: 'c';
11417                    manakai-expanded: false;
11418                  }
11419                }
11420              }
11421            }
11422        @@XMLTest:
11423          @@@QName: xp.reptxt.attval.ger.entity.declared.standalone.-4.test
11424          @@@DEnt:
11425            @@@@test:value:
11426              <!DOCTYPE p [
11427              <!ENTITY c "&entity;">
11428                <!ENTITY % para SYSTEM "para">
11429                %para;
11430              ]>
11431              <p a="&c;"/>
11432          @@@test:domTree:
11433            document {
11434              document-type { }
11435              element {
11436                attribute {
11437                  node-name: 'a';
11438                  general-entity-reference {
11439                    node-name: 'c';
11440                    manakai-expanded: true;
11441                    general-entity-reference {
11442                      node-name: 'entity';
11443                      manakai-expanded: false;
11444                    }
11445                  }
11446                }
11447              }
11448            }
11449        @@XMLTest:
11450          @@@QName:
11451            xp.reptxt.attval.ger.entity.declared.standalone.-4.2.test
11452          @@@DEnt:
11453            @@@@test:value:
11454              <!DOCTYPE p [
11455                <!ENTITY % para SYSTEM "para">
11456                %para;
11457              <!ENTITY c "&entity;">
11458              ]>
11459              <p a="&c;"/>
11460          @@@test:domTree:
11461            document {
11462              document-type { }
11463              element {
11464                attribute {
11465                  node-name: 'a';
11466                  general-entity-reference {
11467                    node-name: 'c';
11468                    manakai-expanded: false;
11469                  }
11470                }
11471              }
11472            }
11473        @@XMLTest:
11474          @@@QName: xp.reptxt.attval.ger.entity.declared.standalone.5.test
11475          @@@DEnt:
11476            @@@@test:value:
11477              <?xml version="1.0" standalone="yes"?>
11478              <!DOCTYPE p SYSTEM "dtd" [
11479              <!ENTITY c "&entity;">
11480              ]>
11481              <p a="&c;"/>
11482          @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
11483        @@XMLTest:
11484          @@@QName: xp.reptxt.attval.ger.entity.declared.standalone.-5.test
11485          @@@DEnt:
11486            @@@@test:value:
11487              <?xml version="1.0" standalone="no"?>
11488              <!DOCTYPE p SYSTEM "dtd" [
11489              <!ENTITY c "&entity;">
11490              ]>
11491              <p a="&c;"/>
11492          @@@test:domTree:
11493            document {
11494              document-type { }
11495              element {
11496                attribute {
11497                  node-name: 'a';
11498                  general-entity-reference {
11499                    node-name: 'c';
11500                    manakai-expanded: true;
11501                    general-entity-reference {
11502                      node-name: 'entity';
11503                      manakai-expanded: false;
11504                    }
11505                  }
11506                }
11507              }
11508            }
11509        @@XMLTest:
11510          @@@QName: xp.reptxt.attval.ger.entity.declared.standalone.-6.test
11511          @@@DEnt:
11512            @@@@test:value:
11513              <!DOCTYPE p SYSTEM "dtd" [<!ENTITY c "&entity;">]>
11514              <p a="&c;"/>
11515          @@@test:domTree:
11516            document {
11517              document-type { }
11518              element {
11519                attribute {
11520                  node-name: 'a';
11521                  general-entity-reference {
11522                    node-name: 'c';
11523                    manakai-expanded: true;
11524                    general-entity-reference {
11525                      node-name: 'entity';
11526                      manakai-expanded: false;
11527                    }
11528                  }
11529                }
11530              }
11531            }
11532    
11533        @@XMLTest:
11534          @@@QName: xp.attlist.dup.entity.declared.1.test
11535          @@@DEnt:
11536            @@@@test:value:
11537              <!DOCTYPE p [
11538              <!ATTLIST p a CDATA "no-entity">
11539              <!ATTLIST p a CDATA "&entity;">
11540              ]>
11541              <p/>
11542          @@@c:erred: <[[xp|wf-entity-declared]]> { (3, 21)..(3, 29); }
11543        @@XMLTest:
11544          @@@QName: xp.attlist.dup.entity.declared.2.test
11545          @@@DEnt:
11546            @@@@test:value:
11547              <!DOCTYPE p [
11548              <!ATTLIST p a CDATA "no-entity"
11549                          a CDATA "&entity;">
11550              ]>
11551              <p/>
11552          @@@c:erred: <[[xp|wf-entity-declared]]> { (3, 21)..(3, 29); }
11553        @@XMLTest:
11554          @@@QName: xp.attlist.unused.entity.declared.1.test
11555          @@@DEnt:
11556            @@@@test:value:
11557              <!DOCTYPE p [
11558              <!ATTLIST q a CDATA "&entity;">
11559              ]>
11560              <p/>
11561          @@@c:erred: <[[xp|wf-entity-declared]]> { (2, 21)..(2, 29); }
11562        @@XMLTest:
11563          @@@QName: xp.attlist.unused.entity.declared.2.test
11564          @@@DEnt:
11565            @@@@test:value:
11566              <!DOCTYPE p [
11567              <!ATTLIST p a CDATA "&entity;">
11568              ]>
11569              <p a="bb"/>
11570          @@@c:erred: <[[xp|wf-entity-declared]]> { (2, 21)..(2, 29); }
11571    
11572        @@XMLTest:
11573          @@@QName: xp.reptxt.attlist.attval.ger.entity.declared.nopref.1.test
11574          @@@DEnt:
11575            @@@@test:value:
11576              <!DOCTYPE p [
11577              <!ENTITY c "&entity;">
11578              <!ATTLIST p a CDATA "&c;">
11579              ]>
11580              <p/>
11581          @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
11582        @@XMLTest:
11583          @@@QName: xp.reptxt.attlist.attval.ger.entity.declared.nopref.2.test
11584          @@@DEnt:
11585            @@@@test:value:
11586              <!DOCTYPE p [
11587                <!ENTITY other "aa">
11588                <!ENTITY % another "aa">
11589              <!ENTITY c "&entity;">
11590              <!ATTLIST p a CDATA "&c;">
11591              ]>
11592              <p/>
11593          @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
11594        @@XMLTest:
11595          @@@QName: xp.reptxt.attlist.attval.ger.entity.declared.nopref.3.test
11596          @@@DEnt:
11597            @@@@test:value:
11598              <?xml version="1.0" standalone="yes"?>
11599              <!DOCTYPE p [
11600              <!ENTITY c "&entity;">
11601              <!ATTLIST p a CDATA "&c;">
11602              ]>
11603              <p/>
11604          @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
11605        @@XMLTest:
11606          @@@QName: xp.reptxt.attlist.attval.ger.entity.declared.nopref.4.test
11607          @@@DEnt:
11608            @@@@test:value:
11609              <?xml version="1.0" standalone="no"?>
11610              <!DOCTYPE p [
11611              <!ENTITY c "&entity;">
11612              <!ATTLIST p a CDATA "&c;">
11613              ]>
11614              <p/>
11615          @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
11616        @@XMLTest:
11617          @@@QName: xp.reptxt.attlist.attval.ger.entity.declared.nopref.5.test
11618          @@@DEnt:
11619            @@@@test:value:
11620              <?xml version="1.0" standalone="yes"?>
11621              <!DOCTYPE p [
11622                <!ENTITY other "aa">
11623                <!ENTITY % another "aa">
11624              <!ENTITY c "&entity;">
11625              <!ATTLIST p a CDATA "&c;">
11626              ]>
11627              <p/>
11628          @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
11629        @@XMLTest:
11630          @@@QName: xp.reptxt.attlist.attval.ger.entity.declared.nopref.6.test
11631          @@@DEnt:
11632            @@@@test:value:
11633              <?xml version="1.0" standalone="no"?>
11634              <!DOCTYPE p [
11635                <!ENTITY other "aa">
11636                <!ENTITY % another "aa">
11637              <!ENTITY c "&entity;">
11638              <!ATTLIST p a CDATA "&c;">
11639              ]>
11640              <p/>
11641          @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
11642        @@XMLTest:
11643          @@@QName: xp.reptxt.attlist.attval.ger.entity.declared.nopref.-1.test
11644          @@@DEnt:
11645            @@@@test:value:
11646              <!DOCTYPE p [
11647                <!ENTITY entity "value">
11648              <!ENTITY c "&entity;">
11649              <!ATTLIST p a CDATA "&c;">
11650              ]>
11651              <p/>
11652          @@@cfg:entity-replacement-tree: 1
11653          @@@test:domTree:
11654            document {
11655              document-type {
11656                general-entity {
11657                  node-name: 'entity';
11658                  text-content: 'value';
11659                }
11660                general-entity {
11661                  node-name: 'c';
11662                  general-entity-reference {
11663                    node-name: 'entity';
11664                    manakai-expanded: true;
11665                    text-content: 'value';
11666                  }
11667                }
11668                element-type-definition {
11669                  node-name: 'p';
11670                  attribute-definition {
11671                    node-name: 'a';
11672                    general-entity-reference {
11673                      node-name: 'c';
11674                      manakai-expanded: true;
11675                      general-entity-reference {
11676                        node-name: 'entity';
11677                        manakai-expanded: true;
11678                        text-content: 'value';
11679                      }
11680                    }
11681                  }
11682                }
11683              }
11684              element {
11685                attribute {
11686                  node-name: 'a';
11687                  specified: false;
11688                  general-entity-reference {
11689                    node-name: 'c';
11690                    general-entity-reference {
11691                      node-name: 'entity';
11692                      text-content: 'value';
11693                    }
11694                  }
11695                }
11696              }
11697            }
11698        @@XMLTest:
11699          @@@QName: xp.reptxt.attlist.attval.ger.entity.declared.nopref.-2.test
11700          @@@DEnt:
11701            @@@@test:value:
11702              <!DOCTYPE p [
11703                <!ENTITY entity "value">
11704                <!ENTITY another SYSTEM "another">
11705              <!ENTITY c "&entity;">
11706              <!ATTLIST p a CDATA "&c;">
11707              ]>
11708              <p/>
11709          @@@cfg:entity-replacement-tree: 1
11710          @@@test:domTree:
11711            document {
11712              document-type {
11713                general-entity {
11714                  node-name: 'entity';
11715                  text-content: 'value';
11716                }
11717                general-entity {
11718                  node-name: 'c';
11719                  general-entity-reference {
11720                    node-name: 'entity';
11721                    text-content: 'value';
11722                  }
11723                }
11724                general-entity {
11725                  node-name: 'another';
11726                  public-id: null;
11727                  system-id: 'another';
11728                  has-replacement-tree: false;
11729                }
11730                element-type-definition {
11731                  node-name: 'p';
11732                  attribute-definition {
11733                    node-name: 'a';
11734                    general-entity-reference {
11735                      node-name: 'c';
11736                      manakai-expanded: true;
11737                      general-entity-reference {
11738                        node-name: 'entity';
11739                        manakai-expanded: true;
11740                        text-content: 'value';
11741                      }
11742                    }
11743                  }
11744                }
11745              }
11746              element {
11747                attribute {
11748                  node-name: 'a';
11749                  specified: false;
11750                  general-entity-reference {
11751                    node-name: 'c';
11752                    general-entity-reference {
11753                      node-name: 'entity';
11754                      text-content: 'value';
11755                    }
11756                  }
11757                }
11758              }
11759            }
11760        @@XMLTest:
11761          @@@QName: xp.reptxt.attlist.attval.ger.entity.declared.standalone.2.test
11762          @@@DEnt:
11763            @@@@test:value:
11764              <?xml version="1.0" standalone="yes"?>
11765              <!DOCTYPE p [
11766              <!ENTITY c "&entity;">
11767              <!ATTLIST p a CDATA "&c;">
11768              ]>
11769              <p/>
11770          @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
11771        @@XMLTest:
11772          @@@QName: xp.reptxt.attlist.attval.ger.entity.declared.standalone.3.test
11773          @@@DEnt:
11774            @@@@test:value:
11775              <?xml version="1.0" standalone="yes"?>
11776              <!DOCTYPE p [
11777                <!ENTITY % para "<!-- -->">
11778                %para;
11779              <!ENTITY c "&entity;">
11780              <!ATTLIST p a CDATA "&c;">
11781              ]>
11782              <p/>
11783          @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
11784        @@XMLTest:
11785          @@@QName: xp.reptxt.attlist.attval.ger.entity.declared.standalone.-1.test
11786          @@@DEnt:
11787            @@@@test:value:
11788              <?xml version="1.0" standalone="no"?>
11789              <!DOCTYPE p [
11790              <!ENTITY c "&entity;">
11791              <!ATTLIST p a CDATA "&c;">
11792                <!ENTITY % para "<!-- -->">
11793                %para;
11794              ]>
11795              <p/>
11796          @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
11797        @@XMLTest:
11798          @@@QName:
11799            xp.reptxt.attlist.attval.ger.entity.declared.standalone.-1.2.test
11800          @@@DEnt:
11801            @@@@test:value:
11802              <?xml version="1.0" standalone="no"?>
11803              <!DOCTYPE p [
11804                <!ENTITY % para "<!-- -->">
11805                %para;
11806              <!ENTITY c "&entity;">
11807              <!ATTLIST p a CDATA "&c;">
11808              ]>
11809              <p g="h"/>
11810          @@@test:domTree:
11811            document {
11812              document-type { }
11813              element {
11814                attribute {
11815                  node-name: 'g';
11816                  text-content: 'h';
11817                }
11818              }
11819            }
11820        @@XMLTest:
11821          @@@QName: xp.reptxt.attlist.attval.ger.entity.declared.standalone.-2.test
11822          @@@DEnt:
11823            @@@@test:value:
11824              <!DOCTYPE p [
11825              <!ENTITY c "&entity;">
11826              <!ATTLIST p a CDATA "&c;">
11827                <!ENTITY % para "<!-- -->">
11828                %para;
11829              ]>
11830              <p/>
11831          @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
11832        @@XMLTest:
11833          @@@QName:
11834            xp.reptxt.attlist.attval.ger.entity.declared.standalone.-2.2.test
11835          @@@DEnt:
11836            @@@@test:value:
11837              <!DOCTYPE p [
11838                <!ENTITY % para "<!-- -->">
11839                %para;
11840              <!ENTITY c "&entity;">
11841              <!ATTLIST p a CDATA "&c;">
11842              ]>
11843              <p g="h"/>
11844          @@@test:domTree:
11845            document {
11846              document-type { }
11847              element {
11848                attribute {
11849                  node-name: 'g';
11850                  text-content: 'h';
11851                }
11852              }
11853            }
11854        @@XMLTest:
11855          @@@QName: xp.reptxt.attlist.attval.ger.entity.declared.standalone.4.test
11856          @@@DEnt:
11857            @@@@test:value:
11858              <?xml version="1.0" standalone="yes"?>
11859              <!DOCTYPE p [
11860                <!ENTITY % para SYSTEM "para">
11861                %para;
11862              <!ENTITY c "&entity;">
11863              <!ATTLIST p a CDATA "&c;">
11864              ]>
11865              <p/>
11866          @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
11867        @@XMLTest:
11868          @@@QName: xp.reptxt.attlist.attval.ger.entity.declared.standalone.-3.test
11869          @@@DEnt:
11870            @@@@test:value:
11871              <?xml version="1.0" standalone="no"?>
11872              <!DOCTYPE p [
11873              <!ENTITY c "&entity;">
11874              <!ATTLIST p a CDATA "&c;">
11875                <!ENTITY % para SYSTEM "para">
11876                %para;
11877              ]>
11878              <p/>
11879          @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
11880        @@XMLTest:
11881          @@@QName:
11882            xp.reptxt.attlist.attval.ger.entity.declared.standalone.-3.2.test
11883          @@@DEnt:
11884            @@@@test:value:
11885              <?xml version="1.0" standalone="no"?>
11886              <!DOCTYPE p [
11887                <!ENTITY % para SYSTEM "para">
11888                %para;
11889              <!ENTITY c "&entity;">
11890              <!ATTLIST p a CDATA "&c;">
11891              ]>
11892              <p g="h"/>
11893          @@@test:domTree:
11894            document {
11895              document-type { }
11896              element {
11897                attribute {
11898                  node-name: 'g';
11899                  text-content: 'h';
11900                }
11901              }
11902            }
11903        @@XMLTest:
11904          @@@QName: xp.reptxt.attlist.attval.ger.entity.declared.standalone.-4.test
11905          @@@DEnt:
11906            @@@@test:value:
11907              <!DOCTYPE p [
11908              <!ENTITY c "&entity;">
11909              <!ATTLIST p a CDATA "&c;">
11910                <!ENTITY % para SYSTEM "para">
11911                %para;
11912              ]>
11913              <p/>
11914          @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
11915        @@XMLTest:
11916          @@@QName:
11917            xp.reptxt.attlist.attval.ger.entity.declared.standalone.-4.2.test
11918          @@@DEnt:
11919            @@@@test:value:
11920              <!DOCTYPE p [
11921                <!ENTITY % para SYSTEM "para">
11922                %para;
11923              <!ENTITY c "&entity;">
11924              <!ATTLIST p a CDATA "&c;">
11925              ]>
11926              <p g="h"/>
11927          @@@test:domTree:
11928            document {
11929              document-type { }
11930              element {
11931                attribute {
11932                  node-name: 'g';
11933                  text-content: 'h';
11934                }
11935              }
11936            }
11937        @@XMLTest:
11938          @@@QName: xp.reptxt.attlist.attval.ger.entity.declared.standalone.5.test
11939          @@@DEnt:
11940            @@@@test:value:
11941              <?xml version="1.0" standalone="yes"?>
11942              <!DOCTYPE p SYSTEM "dtd" [
11943              <!ENTITY c "&entity;">
11944              <!ATTLIST p a CDATA "&c;">
11945              ]>
11946              <p/>
11947          @@@c:erred: <[[xp|wf-entity-declared]]> { (1, 1)..(1, 8); }
11948        @@XMLTest:
11949          @@@QName: xp.reptxt.attlist.attval.ger.entity.declared.standalone.-5.test
11950          @@@DEnt:
11951            @@@@test:value:
11952              <?xml version="1.0" standalone="no"?>
11953              <!DOCTYPE p SYSTEM "dtd" [
11954              <!ENTITY c "&entity;">
11955              <!ATTLIST p a CDATA "&c;">
11956              ]>
11957              <p/>
11958          @@@test:domTree:
11959            document {
11960              document-type { }
11961              element {
11962                attribute {
11963                  node-name: 'a';
11964                  specified: false;
11965                  general-entity-reference {
11966                    node-name: 'c';
11967                    manakai-expanded: true;
11968                    general-entity-reference {
11969                      node-name: 'entity';
11970                      manakai-expanded: false;
11971                    }
11972                  }
11973                }
11974              }
11975            }
11976        @@XMLTest:
11977          @@@QName: xp.reptxt.attlist.attval.ger.entity.declared.standalone.-6.test
11978          @@@DEnt:
11979            @@@@test:value:
11980              <!DOCTYPE p SYSTEM "dtd" [<!ENTITY c "&entity;">
11981              <!ATTLIST p a CDATA "&c;">
11982              ]>
11983              <p/>
11984          @@@test:domTree:
11985            document {
11986              document-type { }
11987              element {
11988                attribute {
11989                  node-name: 'a';
11990                  specified: false;
11991                  general-entity-reference {
11992                    node-name: 'c';
11993                    manakai-expanded: true;
11994                    general-entity-reference {
11995                      node-name: 'entity';
11996                      manakai-expanded: false;
11997                    }
11998                  }
11999                }
12000              }
12001            }
12002    
12003        @@XMLTest:
12004          @@@QName: xp.attlist.attval.ger.entity.declared.nopref.1.test
12005          @@@DEnt:
12006            @@@@test:value:
12007              <!DOCTYPE p [
12008              <!ATTLIST p a CDATA "&entity;">
12009              ]>
12010              <p/>
12011          @@@c:erred: <[[xp|wf-entity-declared]]> { (2, 22)..(2, 29); }
12012        @@XMLTest:
12013          @@@QName: xp.attlist.attval.ger.entity.declared.nopref.2.test
12014          @@@DEnt:
12015            @@@@test:value:
12016              <!DOCTYPE p [
12017                <!ENTITY other "aa">
12018                <!ENTITY % another "aa">
12019              <!ATTLIST p a CDATA "&entity;">
12020              ]>
12021              <p/>
12022          @@@c:erred: <[[xp|wf-entity-declared]]> { (4, 22)..(4, 29); }
12023        @@XMLTest:
12024          @@@QName: xp.attlist.attval.ger.entity.declared.nopref.3.test
12025          @@@DEnt:
12026            @@@@test:value:
12027              <?xml version="1.0" standalone="yes"?>
12028              <!DOCTYPE p [
12029              <!ATTLIST p a CDATA "&entity;">
12030              ]>
12031              <p/>
12032          @@@c:erred: <[[xp|wf-entity-declared]]> { (3, 22)..(3, 29); }
12033        @@XMLTest:
12034          @@@QName: xp.attlist.attval.ger.entity.declared.nopref.4.test
12035          @@@DEnt:
12036            @@@@test:value:
12037              <?xml version="1.0" standalone="no"?>
12038              <!DOCTYPE p [
12039              <!ATTLIST p a CDATA "&entity;">
12040              ]>
12041              <p/>
12042          @@@c:erred: <[[xp|wf-entity-declared]]> { (3, 22)..(3, 29); }
12043        @@XMLTest:
12044          @@@QName: xp.attlist.attval.ger.entity.declared.nopref.5.test
12045          @@@DEnt:
12046            @@@@test:value:
12047              <?xml version="1.0" standalone="yes"?>
12048              <!DOCTYPE p [
12049                <!ENTITY other "aa">
12050                <!ENTITY % another "aa">
12051              <!ATTLIST p a CDATA "&entity;">
12052              ]>
12053              <p/>
12054          @@@c:erred: <[[xp|wf-entity-declared]]> { (5, 22)..(5, 29); }
12055        @@XMLTest:
12056          @@@QName: xp.attlist.attval.ger.entity.declared.nopref.6.test
12057          @@@DEnt:
12058            @@@@test:value:
12059              <?xml version="1.0" standalone="no"?>
12060              <!DOCTYPE p [
12061                <!ENTITY other "aa">
12062                <!ENTITY % another "aa">
12063              <!ATTLIST p a CDATA "&entity;">
12064              ]>
12065              <p/>
12066          @@@c:erred: <[[xp|wf-entity-declared]]> { (5, 22)..(5, 29); }
12067        @@XMLTest:
12068          @@@QName: xp.attlist.attval.ger.entity.declared.nopref.-1.test
12069          @@@DEnt:
12070            @@@@test:value:
12071              <!DOCTYPE p [
12072                <!ENTITY entity "value">
12073              <!ATTLIST p a CDATA "&entity;">
12074              ]>
12075              <p/>
12076          @@@cfg:entity-replacement-tree: 1
12077          @@@test:domTree:
12078            document {
12079              document-type {
12080                general-entity {
12081                  node-name: 'entity';
12082                  text-content: 'value';
12083                }
12084                element-type-definition {
12085                  node-name: 'p';
12086                  attribute-definition {
12087                    node-name: 'a';
12088                    general-entity-reference {
12089                      node-name: 'entity';
12090                      manakai-expanded: true;
12091                      text-content: 'value';
12092                    }
12093                  }
12094                }
12095              }
12096              element {
12097                attribute {
12098                  node-name: 'a';
12099                  specified: false;
12100                  general-entity-reference {
12101                    node-name: 'entity';
12102                    manakai-expanded: true;
12103                    text-content: 'value';
12104                  }
12105                }
12106              }
12107            }
12108        @@XMLTest:
12109          @@@QName: xp.attlist.attval.ger.entity.declared.nopref.-1.2.test
12110          @@@DEnt:
12111            @@@@test:value:
12112              <!DOCTYPE p [
12113              <!ATTLIST p a CDATA "&entity;">
12114                <!ENTITY entity "value">
12115              ]>
12116              <p/>
12117          @@@c:erred: <[[xp|wf-entity-declared]]> { (2, 22)..(2, 29); }
12118        @@XMLTest:
12119          @@@QName: xp.attlist.attval.ger.entity.declared.nopref.-2.test
12120          @@@DEnt:
12121            @@@@test:value:
12122              <!DOCTYPE p [
12123                <!ENTITY entity "value">
12124                <!ENTITY another SYSTEM "another">
12125              <!ATTLIST p a CDATA "&entity;">
12126              ]>
12127              <p/>
12128          @@@cfg:entity-replacement-tree: 1
12129          @@@test:domTree:
12130            document {
12131              document-type {
12132                element-type-definition {
12133                  node-name: 'p';
12134                  attribute-definition {
12135                    node-name: 'a';
12136                    general-entity-reference {
12137                      node-name: 'entity';
12138                      manakai-expanded: true;
12139                      text-content: 'value';
12140                    }
12141                  }
12142                }
12143                general-entity {
12144                  node-name: 'entity';
12145                  text-content: 'value';
12146                  has-replacement-tree: true;
12147                }
12148                general-entity {
12149                  node-name: 'another';
12150                  public-id: null;
12151                  system-id: 'another';
12152                  has-replacement-tree: false;
12153                }
12154              }
12155              element {
12156                attribute {
12157                  node-name: 'a';
12158                  specified: false;
12159                  general-entity-reference {
12160                    node-name: 'entity';
12161                    manakai-expanded: true;
12162                    text-content: 'value';
12163                  }
12164                }
12165              }
12166            }
12167        @@XMLTest:
12168          @@@QName: xp.attlist.attval.ger.entity.declared.nopref.-2.2.test
12169          @@@DEnt:
12170            @@@@test:value:
12171              <!DOCTYPE p [
12172              <!ATTLIST p a CDATA "&entity;">
12173                <!ENTITY entity "value">
12174                <!ENTITY another SYSTEM "another">
12175              ]>
12176              <p/>
12177          @@@c:erred: <[[xp|wf-entity-declared]]> { (2, 22)..(2, 29); }
12178        @@XMLTest:
12179          @@@QName: xp.attlist.attval.ger.entity.declared.standalone.2.test
12180          @@@DEnt:
12181            @@@@test:value:
12182              <?xml version="1.0" standalone="yes"?>
12183              <!DOCTYPE p [
12184              <!ATTLIST p a CDATA "&entity;">
12185              ]>
12186              <p/>
12187          @@@c:erred: <[[xp|wf-entity-declared]]> { (3, 22)..(3, 29); }
12188        @@XMLTest:
12189          @@@QName: xp.attlist.attval.ger.entity.declared.standalone.3.test
12190          @@@DEnt:
12191            @@@@test:value:
12192              <?xml version="1.0" standalone="yes"?>
12193              <!DOCTYPE p [
12194              <!ATTLIST p a CDATA "&entity;">
12195                <!ENTITY % para "<!-- -->">
12196                %para;
12197              ]>
12198              <p/>
12199          @@@c:erred: <[[xp|wf-entity-declared]]> { (3, 22)..(3, 29); }
12200        @@XMLTest:
12201          @@@QName: xp.attlist.attval.ger.entity.declared.standalone.3.2.test
12202          @@@DEnt:
12203            @@@@test:value:
12204              <?xml version="1.0" standalone="yes"?>
12205              <!DOCTYPE p [
12206                <!ENTITY % para "<!-- -->">
12207                %para;
12208              <!ATTLIST p a CDATA "&entity;">
12209              ]>
12210              <p/>
12211          @@@c:erred: <[[xp|wf-entity-declared]]> { (5, 22)..(5, 29); }
12212          @@@enImplNote:
12213            The <XML::ATTLIST> declaration is processed since
12214            it is a <XA::standalone> document.
12215        @@XMLTest:
12216          @@@QName: xp.attlist.attval.ger.entity.declared.standalone.-1.test
12217          @@@DEnt:
12218            @@@@test:value:
12219              <?xml version="1.0" standalone="no"?>
12220              <!DOCTYPE p [
12221              <!ATTLIST p a CDATA "&entity;">
12222                <!ENTITY % para "<!-- -->">
12223                %para;
12224              ]>
12225              <p/>
12226          @@@c:erred: <[[xp|wf-entity-declared]]> { (3, 22)..(3, 29); }
12227        @@XMLTest:
12228          @@@QName: xp.attlist.attval.ger.entity.declared.standalone.-1.2.test
12229          @@@DEnt:
12230            @@@@test:value:
12231              <?xml version="1.0" standalone="no"?>
12232              <!DOCTYPE p [
12233                <!ATTLIST p b CDATA #IMPLIED>
12234                <!ENTITY % para "<!-- -->">
12235                %para;
12236              <!ATTLIST p a CDATA "&entity;">
12237              ]>
12238              <p c="d"/>
12239          @@@c:erred:
12240            <[[xp|warning-attribute-definition-not-processed]]> { (6, 13)..(6, 30); }
12241          @@@test:domTree:
12242            document {
12243              document-type {
12244                element-type-definition {
12245                  node-name: 'p';
12246                  attribute-definition {
12247                    node-name: 'b';
12248                  }
12249                }
12250              }
12251              element {
12252                attribute {
12253                  node-name: 'c';
12254                  text-content: 'd';
12255                }
12256              }
12257            }
12258          @@@enImplNote:
12259            The second <XML::ATTLIST> declaration is read but not processed
12260            and its <XML::&entity;> general entity reference violates
12261            entity declared validty constraint rather than well-formedness
12262            constraint.
12263        @@XMLTest:
12264          @@@QName: xp.attlist.attval.ger.entity.declared.standalone.-2.test
12265          @@@DEnt:
12266            @@@@test:value:
12267              <!DOCTYPE p [
12268              <!ATTLIST p a CDATA "&entity;">
12269                <!ENTITY % para "<!-- -->">
12270                %para;
12271              ]>
12272              <p/>
12273          @@@c:erred: <[[xp|wf-entity-declared]]> { (2, 22)..(2, 29); }
12274        @@XMLTest:
12275          @@@QName: xp.attlist.attval.ger.entity.declared.standalone.-2.2.test
12276          @@@DEnt:
12277            @@@@test:value:
12278              <!DOCTYPE p [
12279                <!ATTLIST p b CDATA #IMPLIED>
12280                <!ENTITY % para "<!-- -->">
12281                %para;
12282              <!ATTLIST p a CDATA "&entity;">
12283              ]>
12284              <p c="d"/>
12285          @@@c:erred:
12286            <[[xp|warning-attribute-definition-not-processed]]> { (5, 13)..(5, 30); }
12287          @@@test:domTree:
12288            document {
12289              document-type {
12290                element-type-definition {
12291                  node-name: 'p';
12292                  attribute-definition {
12293                    node-name: 'b';
12294                  }
12295                }
12296              }
12297              element {
12298                attribute {
12299                  node-name: 'c';
12300                  text-content: 'd';
12301                }
12302              }
12303            }
12304        @@XMLTest:
12305          @@@QName: xp.attlist.attval.ger.entity.declared.standalone.4.test
12306          @@@DEnt:
12307            @@@@test:value:
12308              <?xml version="1.0" standalone="yes"?>
12309              <!DOCTYPE p [
12310              <!ATTLIST p a CDATA "&entity;">
12311                <!ENTITY % para SYSTEM "p">
12312                %para;
12313              ]>
12314              <p/>
12315          @@@c:erred: <[[xp|wf-entity-declared]]> { (3, 22)..(3, 29); }
12316        @@XMLTest:
12317          @@@QName: xp.attlist.attval.ger.entity.declared.standalone.4.2.test
12318          @@@DEnt:
12319            @@@@test:value:
12320              <?xml version="1.0" standalone="yes"?>
12321              <!DOCTYPE p [
12322                <!ENTITY % para SYSTEM "p">
12323                %para;
12324              <!ATTLIST p a CDATA "&entity;">
12325              ]>
12326              <p/>
12327          @@@c:erred: <[[xp|wf-entity-declared]]> { (5, 22)..(5, 29); }
12328          @@@enImplNote:
12329            The <XML::ATTLIST> declaration is processed since
12330            it is a <XA::standalone> document.
12331        @@XMLTest:
12332          @@@QName: xp.attlist.attval.ger.entity.declared.standalone.-3.test
12333          @@@DEnt:
12334            @@@@test:value:
12335              <?xml version="1.0" standalone="no"?>
12336              <!DOCTYPE p [
12337              <!ATTLIST p a CDATA "&entity;">
12338                <!ENTITY % para SYSTEM "p">
12339                %para;
12340              ]>
12341              <p/>
12342          @@@c:erred: <[[xp|wf-entity-declared]]> { (3, 22)..(3, 29); }
12343          @@@enImplNote:
12344            Is this well-formed?  It has a parameter entity reference,
12345            therefore, it does not violates Entity Declared WFC, isn't it?
12346    
12347            Note that Firefox 1.5 and Opera 9 TP1 reports that this document has a
12348            fatal error (also note that they does not support unexpanded).
12349    
12350            See also:
12351            <URI::http://suika.fam.cx/gate/2005/sw/%E5%B1%9E%E6%80%A7%E5%80%A4%E8%A1%A8%E8%A8%98#anchor-8>
12352        @@XMLTest:
12353          @@@QName: xp.attlist.attval.ger.entity.declared.standalone.-3.2.test
12354          @@@DEnt:
12355            @@@@test:value:
12356              <?xml version="1.0" standalone="no"?>
12357              <!DOCTYPE p [
12358                <!ATTLIST p b CDATA #IMPLIED>
12359                <!ENTITY % para SYSTEM "p">
12360                %para;
12361              <!ATTLIST p a CDATA "&entity;">
12362              ]>
12363              <p c="d"/>
12364          @@@c:erred:
12365            <[[xp|warning-attribute-definition-not-processed]]> { (6, 13)..(6, 30); }
12366          @@@test:domTree:
12367            document {
12368              document-type {
12369                element-type-definition {
12370                  node-name: 'p';
12371                  attribute-definition {
12372                    node-name: 'b';
12373                  }
12374                }
12375              }
12376              element {
12377                attribute {
12378                  node-name: 'c';
12379                  text-content: 'd';
12380                }
12381              }
12382            }
12383          @@@enImplNote:
12384            The second <XML::ATTLIST> declaration is read but not processed
12385            and its <XML::&entity;> general entity reference violates
12386            entity declared validty constraint rather than well-formedness
12387            constraint.
12388        @@XMLTest:
12389          @@@QName: xp.attlist.attval.ger.entity.declared.standalone.-4.test
12390          @@@DEnt:
12391            @@@@test:value:
12392              <!DOCTYPE p [
12393              <!ATTLIST p a CDATA "&entity;">
12394                <!ENTITY % para SYSTEM "p">
12395                %para;
12396              ]>
12397              <p/>
12398          @@@c:erred: <[[xp|wf-entity-declared]]> { (2, 22)..(2, 29); }
12399        @@XMLTest:
12400          @@@QName: xp.attlist.attval.ger.entity.declared.standalone.-4.2.test
12401          @@@DEnt:
12402            @@@@test:value:
12403              <!DOCTYPE p [
12404                <!ATTLIST p b CDATA #IMPLIED>
12405                <!ENTITY % para SYSTEM "p">
12406                %para;
12407              <!ATTLIST p a CDATA "&entity;">
12408              ]>
12409              <p c="d"/>
12410          @@@c:erred:
12411            <[[xp|warning-attribute-definition-not-processed]]> { (5, 13)..(5, 30); }
12412          @@@test:domTree:
12413            document {
12414              document-type {
12415                element-type-definition {
12416                  node-name: 'p';
12417                  attribute-definition {
12418                    node-name: 'b';
12419                  }
12420                }
12421              }
12422              element {
12423                attribute {
12424                  node-name: 'c';
12425                  text-content: 'd';
12426                }
12427              }
12428            }
12429        @@XMLTest:
12430          @@@QName: xp.attlist.attval.ger.entity.declared.standalone.5.test
12431          @@@DEnt:
12432            @@@@test:value:
12433              <?xml version="1.0" standalone="yes"?>
12434              <!DOCTYPE p SYSTEM "dtd" [
12435              <!ATTLIST p a CDATA "&entity;">
12436              ]>
12437              <p/>
12438          @@@c:erred: <[[xp|wf-entity-declared]]> { (3, 22)..(3, 29); }
12439          @@@enImplNote:
12440            This document has an error - result is implementation dependent.
12441        @@XMLTest:
12442          @@@QName: xp.attlist.attval.ger.entity.declared.standalone.-5.test
12443          @@@DEnt:
12444            @@@@test:value:
12445              <?xml version="1.0" standalone="no"?>
12446              <!DOCTYPE p SYSTEM "dtd" [
12447              <!ATTLIST p a CDATA "&entity;">
12448              ]>
12449              <p/>
12450          @@@test:domTree:
12451            document {
12452              document-type {
12453                element-type-definition {
12454                  node-name: 'p';
12455                  attribute-definition {
12456                    node-name: 'a';
12457                    general-entity-reference {
12458                      node-name: 'entity';
12459                      manakai-expanded: false;
12460                    }
12461                  }
12462                }
12463              }
12464              element {
12465                attribute {
12466                  node-name: 'a';
12467                  specified: false;
12468                  general-entity-reference {
12469                    node-name: 'entity';
12470                    manakai-expanded: false;
12471                  }
12472                }
12473              }
12474            }
12475          @@@enImplNote:
12476            This document has an error - result is implementation dependent.
12477        @@XMLTest:
12478          @@@QName: xp.attlist.attval.ger.entity.declared.standalone.-6.test
12479          @@@DEnt:
12480            @@@@test:value:
12481              <!DOCTYPE p SYSTEM "dtd" [
12482              <!ATTLIST p a CDATA "&entity;">
12483              ]>
12484              <p/>
12485          @@@test:domTree:
12486            document {
12487              document-type {
12488                element-type-definition {
12489                  node-name: 'p';
12490                  attribute-definition {
12491                    node-name: 'a';
12492                    general-entity-reference {
12493                      node-name: 'entity';
12494                      manakai-expanded: false;
12495                    }
12496                  }
12497                }
12498              }
12499              element {
12500                attribute {
12501                  node-name: 'a';
12502                  specified: false;
12503                  general-entity-reference {
12504                    node-name: 'entity';
12505                    manakai-expanded: false;
12506                  }
12507                }
12508              }
12509            }
12510          @@@enImplNote:
12511            This document has an error - result is implementation dependent.
12512    
12513        @@enImplNote:
12514          {TODO:: Entity declared WFC for
12515    
12516             - General entity references in entity value??
12517    
12518          }
12519    
12520        @@XMLTest:
12521          @@@QName: xp.element.content.parsed.entity.reference.test
12522          @@@DEnt:
12523            @@@@test:value:
12524              <!DOCTYPE p [
12525              <!NOTATION n SYSTEM "notation">
12526              <!ENTITY ext SYSTEM "system" NDATA n>
12527              ]>
12528              <p>&ext;</p>
12529          @@@c:erred: <[[xp|wf-parsed-entity]]> { (5, 4)..(5, 8); }
12530        @@XMLTest:
12531          @@@QName: xp.attval.parsed.entity.reference.test
12532          @@@DEnt:
12533            @@@@test:value:
12534              <!DOCTYPE p [
12535              <!NOTATION n SYSTEM "notation">
12536              <!ENTITY ext SYSTEM "system" NDATA n>
12537              ]>
12538              <p a="&ext;"/>
12539    #      @@@c:erred: <[[xp|wf-parsed-entity]]> { (5, 7)..(5, 11); }
12540          @@@c:erred: <[[xp|wf-no-external-entity-references]]> { (5, 7)..(5, 11); }
12541        @@XMLTest:
12542          @@@QName: xp.element.content.reptxt.parsed.entity.reference.test
12543          @@@DEnt:
12544            @@@@test:value:
12545              <!DOCTYPE p [
12546              <!NOTATION n SYSTEM "notation">
12547              <!ENTITY ext SYSTEM "system" NDATA n>
12548              <!ENTITY c "&#x26;ext;">
12549              ]>
12550              <p>&c;</p>
12551          @@@c:erred: <[[xp|wf-parsed-entity]]> { (1, 1)..(1, 5); }
12552        @@XMLTest:
12553          @@@QName: xp.attval.reptxt.parsed.entity.reference.test
12554          @@@DEnt:
12555            @@@@test:value:
12556              <!DOCTYPE p [
12557              <!NOTATION n SYSTEM "notation">
12558              <!ENTITY ext SYSTEM "system" NDATA n>
12559              <!ENTITY c "&#x26;ext;">
12560              ]>
12561              <p a="&c;"/>
12562          @@@cfg:entity-replacement-tree: 0
12563          @@@c:erred: <[[xp|wf-no-external-entity-references]]> { (1, 1)..(1, 5); }
12564        @@XMLTest:
12565          @@@QName: xp.attval.reptxt.parsed.entity.reference.2.test
12566          @@@DEnt:
12567            @@@@test:value:
12568              <!DOCTYPE p [
12569              <!NOTATION n SYSTEM "notation">
12570              <!ENTITY ext SYSTEM "system" NDATA n>
12571              <!ENTITY c "&#x26;ext;">
12572              ]>
12573              <p a="&c;"/>
12574          @@@cfg:entity-replacement-tree: 1
12575          @@@c:erred: <[[xp|wf-no-external-entity-references]]> { (1, 1)..(1, 5); }
12576          @@@c:erred:
12577            @@@@@: <[[xp|wf-parsed-entity]]> { }
12578            @@@@enImplNote: During entity node construction.
12579        @@XMLTest:
12580          @@@QName: xp.element.content.entval.parsed.entity.reference.test
12581          @@@DEnt:
12582            @@@@test:value:
12583              <!DOCTYPE p [
12584              <!NOTATION n SYSTEM "notation">
12585              <!ENTITY ext SYSTEM "system" NDATA n>
12586              <!ENTITY c "&ext;">
12587              ]>
12588              <p>&c;</p>
12589          @@@c:erred: <[[xp|wf-parsed-entity]]> { }
12590        @@XMLTest:
12591          @@@QName: xp.attval.entval.parsed.entity.reference.test
12592          @@@DEnt:
12593            @@@@test:value:
12594              <!DOCTYPE p [
12595              <!NOTATION n SYSTEM "notation">
12596              <!ENTITY ext SYSTEM "system" NDATA n>
12597              <!ENTITY c "&ext;">
12598              ]>
12599              <p a="&c;"/>
12600          @@@cfg:entity-replacement-tree: 0
12601          @@@c:erred: <[[xp|wf-no-external-entity-references]]> { }
12602        @@XMLTest:
12603          @@@QName: xp.attval.entval.parsed.entity.reference.2.test
12604          @@@DEnt:
12605            @@@@test:value:
12606              <!DOCTYPE p [
12607              <!NOTATION n SYSTEM "notation">
12608              <!ENTITY ext SYSTEM "system" NDATA n>
12609              <!ENTITY c "&ext;">
12610              ]>
12611              <p a="&c;"/>
12612          @@@cfg:entity-replacement-tree: 1
12613          @@@c:erred: <[[xp|wf-no-external-entity-references]]> { }
12614          @@@c:erred: <[[xp|wf-parsed-entity]]> { }
12615    
12616        @@XMLTest:
12617          @@@QName: xp.element.content.no.recursion.direct.test
12618          @@@DEnt:
12619            @@@@test:value:
12620              <!DOCTYPE p [
12621              <!ENTITY c "&c;">
12622              ]>
12623              <p>&c;</p>
12624          @@@c:erred: <[[xp|wf-no-recursion]]> { (1, 1)..(1, 3); }
12625        @@XMLTest:
12626          @@@QName: xp.element.content.no.recursion.indirect.test
12627          @@@DEnt:
12628            @@@@test:value:
12629              <!DOCTYPE p [
12630              <!ENTITY d "&c;">
12631              <!ENTITY c "&d;">
12632              ]>
12633              <p>&c;</p>
12634          @@@c:erred: <[[xp|wf-no-recursion]]> { /* |d| */ (1, 1)..(1, 3); }
12635        @@XMLTest:
12636          @@@QName: xp.attval.no.recursion.direct.test
12637          @@@DEnt:
12638            @@@@test:value:
12639              <!DOCTYPE p [
12640              <!ENTITY c "&c;">
12641              ]>
12642              <p a="&c;"/>
12643          @@@c:erred: <[[xp|wf-no-recursion]]> { (1, 1)..(1, 3); }
12644        @@XMLTest:
12645          @@@QName: xp.attval.no.recursion.indirect.test
12646          @@@DEnt:
12647            @@@@test:value:
12648              <!DOCTYPE p [
12649              <!ENTITY d "&c;">
12650              <!ENTITY c "&d;">
12651              ]>
12652              <p a="&c;"/>
12653          @@@c:erred: <[[xp|wf-no-recursion]]> { /* |d| */ (1, 1)..(1, 3); }
12654        @@XMLTest:
12655          @@@QName: xp.reptxt.element.content.no.recursion.direct.test
12656          @@@DEnt:
12657            @@@@test:value:
12658              <!DOCTYPE p [
12659              <!ENTITY c "&c;">
12660              <!ENTITY e "&#x26;c;">
12661              ]>
12662              <p>&e;</p>
12663          @@@c:erred: <[[xp|wf-no-recursion]]> { /* |e| */ (1, 1)..(1, 3); }
12664        @@XMLTest:
12665          @@@QName: xp.reptxt.element.content.no.recursion.indirect.test
12666          @@@DEnt:
12667            @@@@test:value:
12668              <!DOCTYPE p [
12669              <!ENTITY d "&c;">
12670              <!ENTITY c "&d;">
12671              <!ENTITY e "&#x26;c;">
12672              ]>
12673              <p>&e;</p>
12674          @@@c:erred: <[[xp|wf-no-recursion]]> { /* |d| */ (1, 1)..(1, 3); }
12675        @@XMLTest:
12676          @@@QName: xp.reptxt.attval.no.recursion.direct.test
12677          @@@DEnt:
12678            @@@@test:value:
12679              <!DOCTYPE p [
12680              <!ENTITY c "&c;">
12681              <!ENTITY e "&#x26;c;">
12682              ]>
12683              <p a="&e;"/>
12684          @@@c:erred: <[[xp|wf-no-recursion]]> { /* |e| */ (1, 1)..(1, 3); }
12685        @@XMLTest:
12686          @@@QName: xp.reptxt.attval.no.recursion.indirect.test
12687          @@@DEnt:
12688            @@@@test:value:
12689              <!DOCTYPE p [
12690              <!ENTITY d "&c;">
12691              <!ENTITY c "&d;">
12692              <!ENTITY e "&#x26;c;">
12693              ]>
12694              <p a="&e;"/>
12695          @@@c:erred: <[[xp|wf-no-recursion]]> { /* |d| */ (1, 1)..(1, 3); }
12696    
12697        @@XMLTest:
12698          @@@QName: xp.ENTITY.system.ndata.name.test
12699          @@@DEnt:
12700            @@@@test:value:
12701              <!DOCTYPE a [
12702              <!NOTATION n SYSTEM "n">
12703              <!ENTITY % e SYSTEM "sys" NDATA n>
12704              ]><a/>
12705          @@@c:erred: <[[xp|wf-syntax-error]]> { (3, 26)..(3, 30); }
12706        @@XMLTest:
12707          @@@QName: xp.ENTITY.public.ndata.name.test
12708          @@@DEnt:
12709            @@@@test:value:
12710              <!DOCTYPE a [
12711              <!NOTATION n SYSTEM "n">
12712              <!ENTITY % e PUBLIC "pub" "sys" NDATA n>
12713              ]><a/>
12714          @@@c:erred: <[[xp|wf-syntax-error]]> { (3, 33)..(3, 37); }
12715        @@XMLTest:
12716          @@@QName: xp.ENTITY.public.ndata.name.-1.test
12717          @@@DEnt:
12718            @@@@test:value:
12719              <!DOCTYPE a [
12720              <!NOTATION n SYSTEM "n">
12721              <!ENTITY % e PUBLIC "pub" "sys" >
12722              ]><a/>
12723          @@@test:domTree:
12724            document { }
12725    
12726        @@XMLTest:
12727          @@@QName: xp.ENTITY.pubid.1.test
12728          @@@DEnt:
12729            @@@@test:value:
12730              <!DOCTYPE a [
12731              <!ENTITY e PUBLIC "p" "s">
12732              ]><a/>
12733          @@@test:domTree:
12734            document {
12735              document-type {
12736                general-entity {
12737                  node-name: 'e';
12738                  public-id: 'p';
12739                  system-id: 's';
12740                }
12741              }
12742              element { }
12743            }
12744        @@XMLTest:
12745          @@@QName: xp.ENTITY.pubid.2.test
12746          @@@DEnt:
12747            @@@@test:value:
12748              <!DOCTYPE a [
12749              <!ENTITY e PUBLIC "  p  " "s">
12750              ]><a/>
12751          @@@test:domTree:
12752            document {
12753              document-type {
12754                general-entity {
12755                  node-name: 'e';
12756                  public-id: 'p';
12757                  system-id: 's';
12758                }
12759              }
12760              element { }
12761            }
12762        @@XMLTest:
12763          @@@QName: xp.ENTITY.pubid.3.test
12764          @@@DEnt:
12765            @@@@test:value:
12766              <!DOCTYPE a [
12767              <!ENTITY e PUBLIC "  p  $u000Aq$u000A " "s">
12768              ]><a/>
12769          @@@test:domTree:
12770            document {
12771              document-type {
12772                general-entity {
12773                  node-name: 'e';
12774                  public-id: 'p q';
12775                  system-id: 's';
12776                }
12777              }
12778              element { }
12779            }
12780        @@XMLTest:
12781          @@@QName: xp.ENTITY.pubid.4.test
12782          @@@DEnt:
12783            @@@@test:value:
12784              <!DOCTYPE a [
12785              <!ENTITY e PUBLIC "  p  $u000D$u000Aq" "s">
12786              ]><a/>
12787          @@@test:domTree:
12788            document {
12789              document-type {
12790                general-entity {
12791                  node-name: 'e';
12792                  public-id: 'p q';
12793                  system-id: 's';
12794                }
12795              }
12796              element { }
12797            }
12798        @@XMLTest:
12799          @@@QName: xp.ENTITY.pubid.5.test
12800          @@@DEnt:
12801            @@@@test:value:
12802              <?xml version="1.1"?>
12803              <!DOCTYPE a [
12804              <!ENTITY e PUBLIC "  p  $u000D$u0085q" "s">
12805              ]><a/>
12806          @@@test:domTree:
12807            document {
12808              document-type {
12809                general-entity {
12810                  node-name: 'e';
12811                  public-id: 'p q';
12812                  system-id: 's';
12813                }
12814              }
12815              element { }
12816            }
12817    
12818        @@XMLTest:
12819          @@@QName: xp.ENTITY.ignored.test
12820          @@@DEnt:
12821            @@@@test:value:
12822              <!DOCTYPE a [
12823              <!ENTITY e "a">
12824              <!ENTITY e "b">
12825              ]><a/>
12826          @@@cfg:entity-replacement-tree: 1
12827          @@@test:domTree:
12828            document {
12829              document-type {
12830                general-entity {
12831                  node-name: 'e';
12832                  text-content: 'a';
12833                }
12834              }
12835              element { }
12836            }
12837          @@@c:erred:
12838            <[[xp|warning-entity-declaration-ignored]]> { (3, 1)..(3, 15); }
12839        @@XMLTest:
12840          @@@QName: xp.ENTITY.ignored.2.test
12841          @@@DEnt:
12842            @@@@test:value:
12843              <!DOCTYPE a [
12844              <!ENTITY % e "a">
12845              <!ENTITY % e "b">
12846              ]><a/>
12847          @@@test:domTree:
12848            document { }
12849          @@@c:erred:
12850            <[[xp|warning-entity-declaration-ignored]]> { (3, 1)..(3, 17); }
12851    
12852        @@XMLTest:
12853          @@@QName: xp.ENTITY.predefined.1.test
12854          @@@DEnt:
12855            @@@@test:value:
12856              <!DOCTYPE a [
12857              <!ENTITY lt     "&#38;#60;">
12858              <!ENTITY gt     "&#62;">
12859              <!ENTITY amp    "&#38;#38;">
12860              <!ENTITY apos   "&#39;">
12861              <!ENTITY quot   "&#34;">
12862              <!ENTITY e      "f">
12863              ]><a>&lt;&gt;&amp;&apos;&quot;</a>
12864          @@@cfg:entity-replacement-tree: 1
12865          @@@test:domTree:
12866            document {
12867              document-type {
12868                general-entity {
12869                  node-name: 'e';
12870                  text-content: 'f';
12871                }
12872              }
12873              element {
12874                text-content: '<>&' U+0027 '"';
12875              }
12876            }
12877        @@XMLTest:
12878          @@@QName: xp.ENTITY.predefined.2.test
12879          @@@DEnt:
12880            @@@@test:value:
12881              <!DOCTYPE a [
12882              <!ENTITY lt     "&#38;#60;">
12883              <!ENTITY gt     "&#x26;#62;">
12884              <!ENTITY amp    "&#38;#38;">
12885              <!ENTITY apos   "&#x26;#39;">
12886              <!ENTITY quot   "&#x26;#34;">
12887              <!ENTITY e      "f">
12888              ]><a>&lt;&gt;&amp;&apos;&quot;</a>
12889          @@@cfg:entity-replacement-tree: 1
12890          @@@test:domTree:
12891            document {
12892              document-type {
12893                general-entity {
12894                  node-name: 'e';
12895                  text-content: 'f';
12896                }
12897              }
12898              element {
12899                text-content: '<>&' U+0027 '"';
12900              }
12901            }
12902        @@XMLTest:
12903          @@@QName: xp.ENTITY.predefined.3.test
12904          @@@DEnt:
12905            @@@@test:value:
12906              <!DOCTYPE a [
12907              <!ENTITY lt     "&#60;">
12908              <!ENTITY gt     "&#62;">
12909              <!ENTITY amp    "&#38;">
12910              <!ENTITY apos   "&#39;">
12911              <!ENTITY quot   "&#34;">
12912              <!ENTITY e      "f">
12913              ]><a>&lt;&gt;&amp;&apos;&quot;</a>
12914          @@@cfg:entity-replacement-tree: 1
12915          @@@c:erred: <[[xp|error-malformed-predefined-entity]]> { (2, 1)..(2, 24); }
12916          @@@c:erred: <[[xp|error-malformed-predefined-entity]]> { (4, 1)..(4, 24); }
12917          @@@test:domTree:
12918            document {
12919              document-type {
12920                general-entity {
12921                  node-name: 'e';
12922                  text-content: 'f';
12923                }
12924              }
12925              element {
12926                text-content: '<>&' U+0027 '"';
12927              }
12928            }
12929        @@XMLTest:
12930          @@@QName: xp.ENTITY.predefined.4.test
12931          @@@DEnt:
12932            @@@@test:value:
12933              <!DOCTYPE a [
12934              <!ENTITY lt     "1">
12935              <!ENTITY gt     "2">
12936              <!ENTITY amp    "3">
12937              <!ENTITY apos   "4">
12938              <!ENTITY quot   "5">
12939              <!ENTITY e      "f">
12940              ]><a>&lt;&gt;&amp;&apos;&quot;</a>
12941          @@@cfg:entity-replacement-tree: 1
12942          @@@c:erred: <[[xp|error-malformed-predefined-entity]]> { (2, 1)..(2, 24); }
12943          @@@c:erred: <[[xp|error-malformed-predefined-entity]]> { (3, 1)..(3, 24); }
12944          @@@c:erred: <[[xp|error-malformed-predefined-entity]]> { (4, 1)..(4, 24); }
12945          @@@c:erred: <[[xp|error-malformed-predefined-entity]]> { (5, 1)..(5, 24); }
12946          @@@c:erred: <[[xp|error-malformed-predefined-entity]]> { (6, 1)..(6, 24); }
12947          @@@test:domTree:
12948            document {
12949              document-type {
12950                general-entity {
12951                  node-name: 'e';
12952                  text-content: 'f';
12953                }
12954              }
12955              element {
12956                text-content: '<>&' U+0027 '"';
12957              }
12958            }
12959        @@XMLTest:
12960          @@@QName: xp.ENTITY.predefined.5.test
12961          @@@DEnt:
12962            @@@@test:value:
12963              <!DOCTYPE a [
12964              <!ENTITY lt     SYSTEM "1">
12965              <!ENTITY gt     SYSTEM "2">
12966              <!ENTITY amp    SYSTEM "3">
12967              <!ENTITY apos   SYSTEM "4">
12968              <!ENTITY quot   SYSTEM "5">
12969              <!ENTITY e      "f">
12970              ]><a>&lt;&gt;&amp;&apos;&quot;</a>
12971          @@@cfg:entity-replacement-tree: 1
12972          @@@c:erred: <[[xp|error-internal-predefined-entity]]> { (2, 1)..(2, 27); }
12973          @@@c:erred: <[[xp|error-internal-predefined-entity]]> { (3, 1)..(3, 27); }
12974          @@@c:erred: <[[xp|error-internal-predefined-entity]]> { (4, 1)..(4, 27); }
12975          @@@c:erred: <[[xp|error-internal-predefined-entity]]> { (5, 1)..(5, 27); }
12976          @@@c:erred: <[[xp|error-internal-predefined-entity]]> { (6, 1)..(6, 27); }
12977          @@@test:domTree:
12978            document {
12979              document-type {
12980                general-entity {
12981                  node-name: 'e';
12982                  text-content: 'f';
12983                }
12984              }
12985              element {
12986                text-content: '<>&' U+0027 '"';
12987              }
12988            }
12989        @@XMLTest:
12990          @@@QName: xp.ENTITY.predefined.6.test
12991          @@@DEnt:
12992            @@@@test:value:
12993              <!DOCTYPE a [
12994              <!ENTITY % lt     SYSTEM "1">
12995              <!ENTITY % gt     SYSTEM "2">
12996              <!ENTITY % amp    SYSTEM "3">
12997              <!ENTITY % apos   SYSTEM "4">
12998              <!ENTITY % quot   SYSTEM "5">
12999              <!ENTITY e      "f">
13000              ]><a>&lt;&gt;&amp;&apos;&quot;</a>
13001          @@@cfg:entity-replacement-tree: 1
13002          @@@test:domTree:
13003            document {
13004              document-type {
13005                general-entity {
13006                  node-name: 'e';
13007                  text-content: 'f';
13008                }
13009              }
13010              element {
13011                text-content: '<>&' U+0027 '"';
13012              }
13013            }
13014        @@XMLTest:
13015          @@@QName: xp.ENTITY.predefined.7.test
13016          @@@DEnt:
13017            @@@@test:value:
13018              <!DOCTYPE a [
13019              <!ENTITY lt     "&#38;#x3C;">
13020              <!ENTITY gt     "&#x3E;">
13021              <!ENTITY amp    "&#38;#x26;">
13022              <!ENTITY apos   "&#x27;">
13023              <!ENTITY quot   "&#x22;">
13024              <!ENTITY e      "f">
13025              ]><a>&lt;&gt;&amp;&apos;&quot;</a>
13026          @@@cfg:entity-replacement-tree: 1
13027          @@@test:domTree:
13028            document {
13029              document-type {
13030                general-entity {
13031                  node-name: 'e';
13032                  text-content: 'f';
13033                }
13034              }
13035              element {
13036                text-content: '<>&' U+0027 '"';
13037              }
13038            }
13039        @@XMLTest:
13040          @@@QName: xp.ENTITY.predefined.8.test
13041          @@@DEnt:
13042            @@@@test:value:
13043              <!DOCTYPE a [
13044              <!ENTITY lt     "&#38;#x3c;">
13045              <!ENTITY gt     "&#x3e;">
13046              <!ENTITY amp    "&#38;#x26;">
13047              <!ENTITY apos   "&#x27;">
13048              <!ENTITY quot   "&#x22;">
13049              <!ENTITY e      "f">
13050              ]><a>&lt;&gt;&amp;&apos;&quot;</a>
13051          @@@cfg:entity-replacement-tree: 1
13052          @@@test:domTree:
13053            document {
13054              document-type {
13055                general-entity {
13056                  node-name: 'e';
13057                  text-content: 'f';
13058                }
13059              }
13060              element {
13061                text-content: '<>&' U+0027 '"';
13062              }
13063            }
13064        @@XMLTest:
13065          @@@QName: xp.ENTITY.predefined.9.test
13066          @@@DEnt:
13067            @@@@test:value:
13068              <!DOCTYPE a [
13069              <!ENTITY lt     "&#38;#x00003C;">
13070              <!ENTITY gt     "&#x0003E;">
13071              <!ENTITY amp    "&#38;#x026;">
13072              <!ENTITY apos   "&#x000027;">
13073              <!ENTITY quot   "&#x0022;">
13074              <!ENTITY e      "f">
13075              ]><a>&lt;&gt;&amp;&apos;&quot;</a>
13076          @@@cfg:entity-replacement-tree: 1
13077          @@@test:domTree:
13078            document {
13079              document-type {
13080                general-entity {
13081                  node-name: 'e';
13082                  text-content: 'f';
13083                }
13084              }
13085              element {
13086                text-content: '<>&' U+0027 '"';
13087              }
13088            }
13089        @@XMLTest:
13090          @@@QName: xp.ENTITY.predefined.10.test
13091          @@@DEnt:
13092            @@@@test:value:
13093              <!DOCTYPE a [
13094              <!ENTITY lt     "&#38;#00060;">
13095              <!ENTITY gt     "&#062;">
13096              <!ENTITY amp    "&#38;#000038;">
13097              <!ENTITY apos   "&#0000039;">
13098              <!ENTITY quot   "&#0034;">
13099              <!ENTITY e      "f">
13100              ]><a>&lt;&gt;&amp;&apos;&quot;</a>
13101          @@@cfg:entity-replacement-tree: 1  
13102          @@@test:domTree:
13103            document {
13104              document-type {
13105                general-entity {
13106                  node-name: 'e';
13107                  text-content: 'f';
13108                }
13109              }
13110              element {
13111                text-content: '<>&' U+0027 '"';
13112              }
13113            }
13114    
13115        @@XMLTest:
13116          @@@QName: xp.processed.1.test
13117          @@@DEnt:
13118            @@@@test:value:
13119              <a/>
13120          @@@test:domTree:
13121            document {
13122              all-declarations-processed: true;
13123              element { }
13124            }
13125        @@XMLTest:
13126          @@@QName: xp.processed.2.test
13127          @@@DEnt:
13128            @@@@test:value:
13129              <!DOCTYPE a [
13130              <!ENTITY e      "f">
13131              <!ATTLIST a b NMTOKEN "  c  ">
13132              ]><a>&e;</a>
13133          @@@test:domTree:
13134            document {
13135              document-type {
13136                general-entity {
13137                  node-name: 'e';
13138                }
13139                element-type-definition {
13140                  node-name: 'a';
13141                  attribute-definition {
13142                    node-name: 'b';
13143                  }
13144                }
13145              }
13146              all-declarations-processed: true;
13147              element {
13148                attribute {
13149                  node-name: 'b';
13150                  node-value: 'c';
13151                }
13152                text-content: 'f';
13153              }
13154            }
13155        @@XMLTest:
13156          @@@QName: xp.processed.3.test
13157          @@@DEnt:
13158            @@@@test:value:
13159              <!DOCTYPE a [
13160              <!ENTITY % p    SYSTEM "p">
13161              %p;
13162              <!ENTITY e      "f">
13163              <!ATTLIST a b NMTOKEN "  c  ">
13164              ]><a d="e">&e;</a>
13165          @@@test:domTree:
13166            document {
13167              document-type { }
13168              all-declarations-processed: false;
13169              element {
13170                attribute {
13171                  node-name: 'd';
13172                  node-value: 'e';
13173                }
13174                general-entity-reference {
13175                  node-name: 'e';
13176                  manakai-expanded: false;
13177                }
13178              }
13179            }
13180          @@@c:erred:
13181            <[[xp|warning-entity-declaration-not-processed]]> { (4, 1)..(4, 20); }
13182          @@@c:erred:
13183            <[[xp|warning-attribute-definition-not-processed]]> { (5, 13)..(5, 31); }
13184        @@XMLTest:
13185          @@@QName: xp.processed.4.test
13186          @@@DEnt:
13187            @@@@test:value:
13188              <?xml version="1.1" standalone="yes"?>
13189              <!DOCTYPE a [
13190              <!ENTITY % p    SYSTEM "p">
13191              %p;
13192              <!ENTITY e      "f">
13193              <!ATTLIST a b NMTOKEN "  c  ">
13194              ]><a>&e;</a>
13195          @@@test:domTree:
13196            document {
13197              document-type {
13198                general-entity {
13199                  node-name: 'e';
13200                }
13201                element-type-definition {
13202                  node-name: 'a';
13203                  attribute-definition {
13204                    node-name: 'b';
13205                  }
13206                }
13207              }
13208              all-declarations-processed: false;
13209              element {
13210                attribute {
13211                  node-name: 'b';
13212                  node-value: 'c';
13213                }
13214                text-content: 'f';
13215              }
13216            }
13217        @@XMLTest:
13218          @@@QName: xp.processed.5.test
13219          @@@DEnt:
13220            @@@@test:value:
13221              <!DOCTYPE a SYSTEM "p" [
13222              <!ENTITY e      "f">
13223              <!ATTLIST a b NMTOKEN "  c  ">
13224              ]><a>&e;</a>
13225          @@@test:domTree:
13226            document {
13227              document-type {
13228                general-entity {
13229                  node-name: 'e';
13230                }
13231                element-type-definition {
13232                  node-name: 'a';
13233                  attribute-definition {
13234                    node-name: 'b';
13235                  }
13236                }
13237              }
13238              all-declarations-processed: false;
13239              element {
13240                attribute {
13241                  node-name: 'b';
13242                  node-value: 'c';
13243                }
13244                text-content: 'f';
13245              }
13246            }
13247    
13248        @@XMLTest:
13249          @@@QName: xp.PEs.in.internal.subset.1.test
13250          @@@DEnt:
13251            @@@@test:value:
13252              <!DOCTYPE a [
13253              <!ENTITY % p " ">
13254              <!ENTITY % q "%p;">
13255              ]><a/>
13256          @@@c:erred: <[[xp|wf-pes-in-internal-subset]]> { (3, 15)..(3, 17); }
13257        @@XMLTest:
13258          @@@QName: xp.PEs.in.internal.subset.2.test
13259          @@@DEnt:
13260            @@@@test:value:
13261              <!DOCTYPE a [
13262              <!ENTITY % p " ">
13263              <!ENTITY % q '%p;'>
13264              ]><a/>
13265          @@@c:erred: <[[xp|wf-pes-in-internal-subset]]> { (3, 15)..(3, 17); }
13266    
13267        @@XMLTest:
13268          @@@QName: xp.name.pitarget.content.1.0.2.test
13269          @@@DEnt:
13270            @@@@test:value:
13271              <?xml version="1.0"?>
13272              <p>
13273              <?$u3001$u3002?>
13274              </p>
13275          @@@c:erred: <[[xp|wf-invalid-character-in-node-name]]> { (3, 3)..(3, 4); }
13276        @@XMLTest:
13277          @@@QName: xp.name.pitarget.content.1.1.2.test
13278          @@@DEnt:
13279            @@@@test:value:
13280              <?xml version="1.1"?>
13281              <p>$
13282              <?$u3001$u3002?>$
13283              </p>
13284          @@@test:domTree:
13285            document {
13286              xml-version: '1.1';
13287              element {
13288                pi {
13289                  node-name: U+3001 U+3002;
13290                }
13291              }
13292            }
13293        @@XMLTest:
13294          @@@QName: xp.name.pitarget.content.1.0.3.test
13295          @@@DEnt:
13296            @@@@test:value:
13297              <?xml version="1.0"?>
13298              <p>
13299              <?$u3005b?>
13300              </p>
13301          @@@c:erred: <[[xp|wf-invalid-character-in-node-name]]> { (3, 3)..(3, 4); }
13302        @@XMLTest:
13303          @@@QName: xp.name.pitarget.content.1.1.3.test
13304          @@@DEnt:
13305            @@@@test:value:
13306              <?xml version="1.1"?>
13307              <p>$
13308              <?$u3005b?>$
13309              </p>
13310          @@@test:domTree:
13311            document {
13312              xml-version: '1.1';
13313              element {
13314                pi {
13315                  node-name: U+3005 'b';
13316                }
13317              }
13318            }
13319        @@XMLTest:
13320          @@@QName: xp.name.pitarget.content.names.1.0.1.test
13321          @@@DEnt:
13322            @@@@test:value:
13323              <?xml version="1.0"?>
13324              <p>
13325              <?a:b?>
13326              </p>
13327          @@@c:erred: <[[xp|nswf-legal-ncname]]> { (3, 3)..(3, 5); }
13328        @@XMLTest:
13329          @@@QName: xp.name.pitarget.content.names.1.1.1.test
13330          @@@DEnt:
13331            @@@@test:value:
13332              <?xml version="1.1"?>
13333              <p>
13334              <?a:b?>
13335              </p>
13336          @@@c:erred: <[[xp|nswf-legal-ncname]]> { (3, 3)..(3, 5); }
13337        @@XMLTest:
13338          @@@QName: xp.name.pitarget.intsubset.1.0.2.test
13339          @@@DEnt:
13340            @@@@test:value:
13341              <?xml version="1.0"?>
13342              <!DOCTYPE p [
13343              <?$u3001$u3002?>
13344              ]><p/>
13345          @@@c:erred: <[[xp|wf-invalid-character-in-node-name]]> { (3, 3)..(3, 4); }
13346        @@XMLTest:
13347          @@@QName: xp.name.pitarget.intsubset.1.1.2.test
13348          @@@DEnt:
13349            @@@@test:value:
13350              <?xml version="1.1"?>
13351              <!DOCTYPE p [
13352              <?$u3001$u3002?>
13353              ]><p/>
13354          @@@test:domTree:
13355            document {
13356              xml-version: '1.1';
13357              document-type {
13358                pi {
13359                  node-name: U+3001 U+3002;
13360                }
13361              }
13362              element { }
13363            }
13364        @@XMLTest:
13365          @@@QName: xp.name.pitarget.intsubset.1.0.3.test
13366          @@@DEnt:
13367            @@@@test:value:
13368              <?xml version="1.0"?>
13369              <!DOCTYPE p [
13370              <?$u3005b?>
13371              ]><p/>
13372          @@@c:erred: <[[xp|wf-invalid-character-in-node-name]]> { (3, 3)..(3, 4); }
13373        @@XMLTest:
13374          @@@QName: xp.name.pitarget.intsubset.1.1.3.test
13375          @@@DEnt:
13376            @@@@test:value:
13377              <?xml version="1.1"?>
13378              <!DOCTYPE p [
13379              <?$u3005b?>
13380              ]><p/>
13381          @@@test:domTree:
13382            document {
13383              xml-version: '1.1';
13384              document-type {
13385                pi {
13386                  node-name: U+3005 'b';
13387                }
13388              }
13389              element { }
13390            }
13391        @@XMLTest:
13392          @@@QName: xp.name.pitarget.intsubset.names.1.0.1.test
13393          @@@DEnt:
13394            @@@@test:value:
13395              <?xml version="1.0"?>
13396              <!DOCTYPE p [
13397              <?a:b?>
13398              ]><p/>
13399          @@@c:erred: <[[xp|nswf-legal-ncname]]> { (3, 3)..(3, 5); }
13400        @@XMLTest:
13401          @@@QName: xp.name.pitarget.intsubset.names.1.1.1.test
13402          @@@DEnt:
13403            @@@@test:value:
13404              <?xml version="1.1"?>
13405              <!DOCTYPE p [
13406              <?a:b?>
13407              ]><p/>
13408          @@@c:erred: <[[xp|nswf-legal-ncname]]> { (3, 3)..(3, 5); }
13409        @@XMLTest:
13410          @@@QName: xp.name.doctypedecl.stag.etag.1.0.2.test
13411          @@@DEnt:
13412            @@@@test:value:
13413              <?xml version="1.0"?>
13414              <!DOCTYPE $u3001$u3002>
13415              <$u3001$u3002>
13416              </$u3001$u3002>
13417          @@@c:erred: <[[xp|wf-invalid-character-in-node-name]]>{ (2, 11)..(2, 12); }
13418          @@@c:erred: <[[xp|wf-invalid-character-in-node-name]]>{ (3, 2)..(3, 3); }
13419    #      @@@c:erred: <[[xp|wf-invalid-character-in-node-name]]>{ (4, 3)..(4, 4); }
13420        @@XMLTest:
13421          @@@QName: xp.name.doctypedecl.stag.etag.1.1.2.test
13422          @@@DEnt:
13423            @@@@test:value:
13424              <?xml version="1.1"?>
13425              <!DOCTYPE $u3001$u3002>
13426              <$u3001$u3002>
13427              </$u3001$u3002>
13428          @@@test:domTree:
13429            document {
13430              xml-version: '1.1';
13431              document-type {
13432                node-name: U+3001 U+3002;
13433              }
13434              element {
13435                node-name: U+3001 U+3002;
13436              }
13437            }
13438        @@XMLTest:
13439          @@@QName: xp.name.doctypedecl.stag.etag.1.0.3.test
13440          @@@DEnt:
13441            @@@@test:value:
13442              <?xml version="1.0"?>
13443              <!DOCTYPE $u3005b>
13444              <$u3005b>
13445              </$u3005b>
13446          @@@c:erred: <[[xp|wf-invalid-character-in-node-name]]>{ (2, 11)..(2, 12); }
13447          @@@c:erred: <[[xp|wf-invalid-character-in-node-name]]>{ (3, 2)..(3, 3); }
13448    #      @@@c:erred: <[[xp|wf-invalid-character-in-node-name]]>{ (4, 3)..(4, 4); }
13449        @@XMLTest:
13450          @@@QName: xp.name.doctype.decl.stag.etag.1.1.3.test
13451          @@@DEnt:
13452            @@@@test:value:
13453              <?xml version="1.1"?>
13454              <!DOCTYPE $u3005b>
13455              <$u3005b>
13456              </$u3005b>
13457          @@@test:domTree:
13458            document {
13459              xml-version: '1.1';
13460              document-type {
13461                node-name: U+3005 'b';
13462              }
13463              element {
13464                node-name: U+3005 'b';
13465              }
13466            }
13467        @@XMLTest:
13468          @@@QName: xp.name.doctypedecl.stag.etag.names.1.0.1.test
13469          @@@DEnt:
13470            @@@@test:value:
13471              <?xml version="1.0"?>
13472              <!DOCTYPE a:b>
13473              <a:b xmlns:a="http://a.example/">
13474              </a:b>
13475          @@@test:domTree:
13476            document {
13477              xml-version: '1.0';
13478              document-type {
13479                node-name: 'a:b';
13480              }
13481              element {
13482                prefix: 'a';
13483                local-name: 'b';
13484                namespace-uri: 'http://a.example/';
13485                attribute {
13486                  namespace-uri: 'http://www.w3.org/2000/xmlns/';
13487                  prefix: 'xmlns';
13488                  local-name: 'a';
13489                  value: 'http://a.example/';
13490                  specified: true;
13491                }
13492              }
13493            }
13494        @@XMLTest:
13495          @@@QName: xp.name.doctypedecl.stag.etag.names.1.1.1.test
13496          @@@DEnt:
13497            @@@@test:value:
13498              <?xml version="1.1"?>
13499              <!DOCTYPE a:b>
13500              <a:b xmlns:a="http://a.example/">
13501              </a:b>
13502          @@@test:domTree:
13503            document {
13504              xml-version: '1.1';
13505              document-type {
13506                node-name: 'a:b';
13507              }
13508              element {
13509                prefix: 'a';
13510                local-name: 'b';
13511                namespace-uri: 'http://a.example/';
13512                attribute {
13513                  namespace-uri: 'http://www.w3.org/2000/xmlns/';
13514                  prefix: 'xmlns';
13515                  local-name: 'a';
13516                  specified: true;
13517                }
13518              }
13519            }
13520        @@XMLTest:
13521          @@@QName: xp.name.doctypedecl.stag.etag.names.1.0.2.test
13522          @@@DEnt:
13523            @@@@test:value:
13524              <?xml version="1.0"?>
13525              <!DOCTYPE :ab>
13526              <:ab>
13527              </:ab>
13528          @@@c:erred: <[[xp|nswf-legal-qname]]> { (2, 11)..(2, 13); }
13529          @@@c:erred: <[[xp|nswf-legal-qname]]> { (3, 2)..(3, 4); }
13530          @@@c:erred: <[[xp|nsc-prefix-declared]]> { /* prefix || */ }
13531        @@XMLTest:
13532          @@@QName: xp.name.doctypedecl.stag.etag.names.1.1.2.test
13533          @@@DEnt:
13534            @@@@test:value:
13535              <?xml version="1.1"?>
13536              <!DOCTYPE :ab>
13537              <:ab>
13538              </:ab>
13539          @@@c:erred: <[[xp|nswf-legal-qname]]> { (2, 11)..(2, 13); }
13540          @@@c:erred: <[[xp|nswf-legal-qname]]> { (3, 2)..(3, 4); }
13541          @@@c:erred: <[[xp|nsc-prefix-declared]]> { /* prefix || */ }
13542        @@XMLTest:
13543          @@@QName: xp.name.doctypedecl.stag.etag.names.1.0.3.test
13544          @@@DEnt:
13545            @@@@test:value:
13546              <?xml version="1.0"?>
13547              <!DOCTYPE a:$u3005>
13548              <a:$u3005 xmlns:a="http://a.example/">
13549              </a:$u3005>
13550          @@@c:erred: <[[xp|nswf-legal-qname]]> { (2, 11)..(2, 13); }
13551          @@@c:erred: <[[xp|nswf-legal-qname]]> { (3, 2)..(3, 4); }
13552        @@XMLTest:
13553          @@@QName: xp.name.doctypedecl.stag.etag.names.1.1.3.test
13554          @@@DEnt:
13555            @@@@test:value:
13556              <?xml version="1.1"?>
13557              <!DOCTYPE a:$u3005>
13558              <a:$u3005 xmlns:a="http://a.example/">
13559              </a:$u3005>
13560          @@@test:domTree:
13561            document {
13562              xml-version: '1.1';
13563              document-type {
13564                node-name: 'a:' U+3005;
13565              }
13566              element {
13567                prefix: 'a';
13568                local-name: U+3005;
13569                namespace-uri: 'http://a.example/';
13570                attribute {
13571                  namespace-uri: 'http://www.w3.org/2000/xmlns/';
13572                  prefix: 'xmlns';
13573                  local-name: 'a';
13574                  value: 'http://a.example/';
13575                  specified: true;
13576                }
13577              }
13578            }
13579        @@XMLTest:
13580          @@@QName: xp.name.doctypedecl.stag.etag.names.1.0.4.test
13581          @@@DEnt:
13582            @@@@test:value:
13583              <?xml version="1.0"?>
13584              <!DOCTYPE a:b>
13585              <a:b>
13586              </a:b>
13587          @@@c:erred: <[[xp|nsc-prefix-declared]]> { (3, 1)..(3, 5); }
13588        @@XMLTest:
13589          @@@QName: xp.name.doctypedecl.stag.etag.names.1.1.4.test
13590          @@@DEnt:
13591            @@@@test:value:
13592              <?xml version="1.1"?>
13593              <!DOCTYPE a:b>
13594              <a:b>
13595              </a:b>
13596          @@@c:erred: <[[xp|nsc-prefix-declared]]> { (3, 1)..(3, 5); }
13597        @@XMLTest:
13598          @@@QName: xp.name.emptyelemtag.1.0.2.test
13599          @@@DEnt:
13600            @@@@test:value:
13601              <?xml version="1.0"?>
13602              <$u3001$u3002/>
13603          @@@c:erred: <[[xp|wf-invalid-character-in-node-name]]>{ (2, 2)..(2, 3); }
13604        @@XMLTest:
13605          @@@QName: xp.name.emptyelemtag.1.1.2.test
13606          @@@DEnt:
13607            @@@@test:value:
13608              <?xml version="1.1"?>
13609              <$u3001$u3002/>
13610          @@@test:domTree:
13611            document {
13612              xml-version: '1.1';
13613              element {
13614                node-name: U+3001 U+3002;
13615              }
13616            }
13617        @@XMLTest:
13618          @@@QName: xp.name.emptyelemtag.1.0.3.test
13619          @@@DEnt:
13620            @@@@test:value:
13621              <?xml version="1.0"?>
13622              <$u3005b/>
13623          @@@c:erred: <[[xp|wf-invalid-character-in-node-name]]>{ (2, 2)..(2, 3); }
13624        @@XMLTest:
13625          @@@QName: xp.name.emptyelemtag.1.1.3.test
13626          @@@DEnt:
13627            @@@@test:value:
13628              <?xml version="1.1"?>
13629              <$u3005b/>
13630          @@@test:domTree:
13631            document {
13632              xml-version: '1.1';
13633              element {
13634                node-name: U+3005 'b';
13635              }
13636            }
13637        @@XMLTest:
13638          @@@QName: xp.name.emptyelemtag.names.1.0.1.test
13639          @@@DEnt:
13640            @@@@test:value:
13641              <?xml version="1.0"?>
13642              <a:b/>
13643          @@@c:erred: <[[xp|nsc-prefix-declared]]>{ (2, 1)..(2, 6); }
13644        @@XMLTest:
13645          @@@QName: xp.name.emptyelemtag.names.1.1.1.test
13646          @@@DEnt:
13647            @@@@test:value:
13648              <?xml version="1.1"?>
13649              <a:b/>
13650          @@@c:erred: <[[xp|nsc-prefix-declared]]>{ (2, 1)..(2, 6); }
13651        @@XMLTest:
13652          @@@QName: xp.name.attr.1.0.2.test
13653          @@@DEnt:
13654            @@@@test:value:
13655              <?xml version="1.0"?>
13656              <a $u3001$u3002=""/>
13657          @@@c:erred: <[[xp|wf-invalid-character-in-node-name]]>{ (2, 4)..(2, 5); }
13658        @@XMLTest:
13659          @@@QName: xp.name.attr.1.1.2.test
13660          @@@DEnt:
13661            @@@@test:value:
13662              <?xml version="1.1"?>
13663              <a $u3001$u3002=""/>
13664          @@@test:domTree:
13665            document {
13666              xml-version: '1.1';
13667              element {
13668                attribute {
13669                  node-name: U+3001 U+3002;
13670                }
13671              }
13672            }
13673        @@XMLTest:
13674          @@@QName: xp.name.attr.1.0.3.test
13675          @@@DEnt:
13676            @@@@test:value:
13677              <?xml version="1.0"?>
13678              <a $u3005b=""/>
13679          @@@c:erred: <[[xp|wf-invalid-character-in-node-name]]>{ (2, 4)..(2, 5); }
13680        @@XMLTest:
13681          @@@QName: xp.name.attr.1.1.3.test
13682          @@@DEnt:
13683            @@@@test:value:
13684              <?xml version="1.1"?>
13685              <a $u3005b=""/>
13686          @@@test:domTree:
13687            document {
13688              xml-version: '1.1';
13689              element {
13690                attribute {
13691                  node-name: U+3005 'b';
13692                }
13693              }
13694            }
13695        @@XMLTest:
13696          @@@QName: xp.name.attr.names.1.0.1.test
13697          @@@DEnt:
13698            @@@@test:value:
13699              <?xml version="1.0"?>
13700              <a a:b=""/>
13701          @@@c:erred: <[[xp|nsc-prefix-declared]]>{ (2, 1)..(2, 11); }
13702        @@XMLTest:
13703          @@@QName: xp.name.attr.names.1.1.1.test
13704          @@@DEnt:
13705            @@@@test:value:
13706              <?xml version="1.1"?>
13707              <a a:b=""/>
13708          @@@c:erred: <[[xp|nsc-prefix-declared]]>{ (2, 1)..(2, 11); }
13709        @@XMLTest:
13710          @@@QName: xp.name.attr.names.1.0.2.test
13711          @@@DEnt:
13712            @@@@test:value:
13713              <?xml version="1.0"?>
13714              <a :ab=""/>
13715          @@@c:erred: <[[xp|nswf-legal-qname]]>{ (2, 4)..(2, 6); }
13716          @@@c:erred: <[[xp|nsc-prefix-declared]]> { }
13717        @@XMLTest:
13718          @@@QName: xp.name.attr.names.1.1.2.test
13719          @@@DEnt:
13720            @@@@test:value:
13721              <?xml version="1.1"?>
13722              <a :ab=""/>
13723          @@@c:erred: <[[xp|nswf-legal-qname]]>{ (2, 4)..(2, 6); }
13724          @@@c:erred: <[[xp|nsc-prefix-declared]]> { }
13725        @@XMLTest:
13726          @@@QName: xp.name.attlist.1.0.2.test
13727          @@@DEnt:
13728            @@@@test:value:
13729              <?xml version="1.0"?>
13730              <!DOCTYPE p [
13731              <!NOTATION $u3001$u3002 SYSTEM "n">
13732              <!ATTLIST $u3001$u3002
13733              $u3001$u3002
13734              NOTATION
13735              ($u3001$u3002)
13736              #IMPLIED>
13737              ]><p/>
13738          @@@c:erred: <[[xp|wf-invalid-character-in-node-name]]>{ (3, 12)..(3, 13); }
13739          @@@c:erred: <[[xp|wf-invalid-character-in-node-name]]>{ (4, 11)..(4, 12); }
13740          @@@c:erred: <[[xp|wf-invalid-character-in-node-name]]>{ (5, 1)..(5, 2); }
13741          @@@c:erred: <[[xp|wf-invalid-character-in-node-name]]>{ (7, 2)..(7, 3); }
13742        @@XMLTest:
13743          @@@QName: xp.name.attlist.1.1.2.test
13744          @@@DEnt:
13745            @@@@test:value:
13746              <?xml version="1.1"?>
13747              <!DOCTYPE p [
13748              <!NOTATION $u3001$u3002 SYSTEM "n">
13749              <!ATTLIST $u3001$u3002
13750              $u3001$u3002
13751              NOTATION
13752              ($u3001$u3002)
13753              #IMPLIED>
13754              ]><p/>
13755          @@@test:domTree:
13756            document {
13757              xml-version: '1.1';
13758              document-type {
13759                notation {
13760                  node-name: U+3001 U+3002;
13761                }
13762                element-type-definition {
13763                  node-name: U+3001 U+3002;
13764                  attribute-definition {
13765                    node-name: U+3001 U+3002;
13766                    allowed-tokens: DOMStringList (U+3001 U+3002);
13767                  }
13768                }
13769              }
13770              element { }
13771            }
13772        @@XMLTest:
13773          @@@QName: xp.name.attlist.1.0.3.test
13774          @@@DEnt:
13775            @@@@test:value:
13776              <?xml version="1.0"?>
13777              <!DOCTYPE p [
13778              <!NOTATION $u3005b SYSTEM "n">
13779              <!ATTLIST $u3005b
13780              $u3005b
13781              NOTATION
13782              ($u3005b)
13783              #IMPLIED>
13784              ]><p/>
13785          @@@c:erred: <[[xp|wf-invalid-character-in-node-name]]>{ (3, 12)..(3, 13); }
13786          @@@c:erred: <[[xp|wf-invalid-character-in-node-name]]>{ (4, 11)..(4, 12); }
13787          @@@c:erred: <[[xp|wf-invalid-character-in-node-name]]>{ (5, 1)..(5, 2); }
13788          @@@c:erred: <[[xp|wf-invalid-character-in-node-name]]>{ (7, 2)..(7, 3); }
13789        @@XMLTest:
13790          @@@QName: xp.name.attlist.1.1.3.test
13791          @@@DEnt:
13792            @@@@test:value:
13793              <?xml version="1.1"?>
13794              <!DOCTYPE p [
13795              <!NOTATION $u3005b SYSTEM "n">
13796              <!ATTLIST $u3005b
13797              $u3005b
13798              NOTATION
13799              ($u3005b)
13800              #IMPLIED>
13801              ]><p/>
13802          @@@test:domTree:
13803            document {
13804              xml-version: '1.1';
13805              document-type {
13806                notation {
13807                  node-name: U+3005 'b';
13808                }
13809                element-type-definition {
13810                  node-name: U+3005 'b';
13811                  attribute-definition {
13812                    node-name: U+3005 'b';
13813                    allowed-tokens: DOMStringList (U+3005 'b');
13814                  }
13815                }
13816              }
13817              element { }
13818            }
13819        @@XMLTest:
13820          @@@QName: xp.name.attlist.names.1.0.1.test
13821          @@@DEnt:
13822            @@@@test:value:
13823              <?xml version="1.0"?>
13824              <!DOCTYPE p [
13825              <!NOTATION a:b SYSTEM "n">
13826              <!ATTLIST a:b
13827              a:b
13828              NOTATION
13829              (a:b)
13830              #IMPLIED>
13831              ]><p/>
13832          @@@c:erred: <[[xp|nswf-legal-ncname]]>{ (3, 12)..(3, 14); }
13833          @@@c:erred: <[[xp|nswf-legal-ncname]]>{ (7, 2)..(7, 4); }
13834        @@XMLTest:
13835          @@@QName: xp.name.attlist.names.1.1.1.test
13836          @@@DEnt:
13837            @@@@test:value:
13838              <?xml version="1.1"?>
13839              <!DOCTYPE p [
13840              <!NOTATION a:b SYSTEM "n">
13841              <!ATTLIST a:b
13842              a:b
13843              NOTATION
13844              (a:b)
13845              #IMPLIED>
13846              ]><p/>
13847          @@@c:erred: <[[xp|nswf-legal-ncname]]>{ (3, 12)..(3, 14); }
13848          @@@c:erred: <[[xp|nswf-legal-ncname]]>{ (7, 2)..(7, 4); }
13849        @@XMLTest:
13850          @@@QName: xp.name.attlist.names.1.0.2.test
13851          @@@DEnt:
13852            @@@@test:value:
13853              <?xml version="1.0"?>
13854              <!DOCTYPE p [
13855              <!NOTATION :ab SYSTEM "n">
13856              <!ATTLIST :ab
13857              :ab
13858              NOTATION
13859              (:ab)
13860              #IMPLIED>
13861              ]><p/>
13862          @@@c:erred: <[[xp|nswf-legal-ncname]]>{ (3, 12)..(3, 14); }
13863          @@@c:erred: <[[xp|nswf-legal-qname]]>{ (4, 11)..(4, 13); }
13864          @@@c:erred: <[[xp|nswf-legal-qname]]>{ (5, 1)..(5, 3); }
13865          @@@c:erred: <[[xp|nswf-legal-ncname]]>{ (7, 2)..(7, 4); }
13866        @@XMLTest:
13867          @@@QName: xp.name.attlist.names.1.1.2.test
13868          @@@DEnt:
13869            @@@@test:value:
13870              <?xml version="1.1"?>
13871              <!DOCTYPE p [
13872              <!NOTATION :ab SYSTEM "n">
13873              <!ATTLIST :ab
13874              :ab
13875              NOTATION
13876              (:ab)
13877              #IMPLIED>
13878              ]><p/>
13879          @@@c:erred: <[[xp|nswf-legal-ncname]]>{ (3, 12)..(3, 14); }
13880          @@@c:erred: <[[xp|nswf-legal-qname]]>{ (4, 11)..(4, 13); }
13881          @@@c:erred: <[[xp|nswf-legal-qname]]>{ (5, 1)..(5, 3); }
13882          @@@c:erred: <[[xp|nswf-legal-ncname]]>{ (7, 2)..(7, 4); }
13883        @@XMLTest:
13884          @@@QName: xp.name.gent.1.0.2.test
13885          @@@DEnt:
13886            @@@@test:value:
13887              <?xml version="1.0"?>
13888              <!DOCTYPE p [
13889              <!ENTITY $u3001$u3002 "n">
13890              ]>
13891              <p a="&$u3001$u3002;">
13892              &$u3001$u3002;
13893              </p>
13894          @@@c:erred: <[[xp|wf-invalid-character-in-node-name]]>{ (3, 10)..(3, 11); }
13895          @@@c:erred: <[[xp|wf-invalid-character-in-node-name]]>{ (5, 8)..(5, 9); }
13896          @@@c:erred: <[[xp|wf-invalid-character-in-node-name]]>{ (6, 2)..(6, 3); }
13897        @@XMLTest:
13898          @@@QName: xp.name.ger.1.1.2.test
13899          @@@DEnt:
13900            @@@@test:value:
13901              <?xml version="1.1"?>
13902              <!DOCTYPE p [
13903              <!ENTITY $u3001$u3002 "n">
13904              ]>
13905              <p a="&$u3001$u3002;">$
13906              &$u3001$u3002;$
13907              </p>
13908          @@@test:domTree:
13909            document {
13910              xml-version: '1.1';
13911              document-type {
13912                general-entity {
13913                  node-name: U+3001 U+3002;
13914                }
13915              }
13916              element {
13917                attribute {
13918                  node-name: 'a';
13919                  general-entity-reference {
13920                    node-name: U+3001 U+3002;
13921                  }
13922                }
13923                general-entity-reference {
13924                  node-name: U+3001 U+3002;
13925                }
13926              }
13927            }
13928        @@XMLTest:
13929          @@@QName: xp.name.ger.1.0.3.test
13930          @@@DEnt:
13931            @@@@test:value:
13932              <?xml version="1.0"?>
13933              <!DOCTYPE p [
13934              <!ENTITY $u3005b "n">
13935              ]>
13936              <p a="&$u3005b;">
13937              &$u3005b;
13938              </p>
13939          @@@c:erred: <[[xp|wf-invalid-character-in-node-name]]>{ (3, 10)..(3, 11); }
13940          @@@c:erred: <[[xp|wf-invalid-character-in-node-name]]>{ (5, 8)..(5, 9); }
13941          @@@c:erred: <[[xp|wf-invalid-character-in-node-name]]>{ (6, 2)..(6, 3); }
13942        @@XMLTest:
13943          @@@QName: xp.name.ger.1.1.3.test
13944          @@@DEnt:
13945            @@@@test:value:
13946              <?xml version="1.1"?>
13947              <!DOCTYPE p [
13948              <!ENTITY $u3005b "n">
13949              ]>
13950              <p a="&$u3005b;">$
13951              &$u3005b;$
13952              </p>
13953          @@@test:domTree:
13954            document {
13955              xml-version: '1.1';
13956              document-type {
13957                general-entity {
13958                  node-name: U+3005 'b';
13959                }
13960              }
13961              element {
13962                attribute {
13963                  node-name: 'a';
13964                  general-entity-reference {
13965                    node-name: U+3005 'b';
13966                  }
13967                }
13968                general-entity-reference {
13969                  node-name: U+3005 'b';
13970                }
13971              }
13972            }
13973        @@XMLTest:
13974          @@@QName: xp.name.ger.names.1.0.1.test
13975          @@@DEnt:
13976            @@@@test:value:
13977              <?xml version="1.0"?>
13978              <!DOCTYPE p [
13979              <!ENTITY a:b "n">
13980              ]>
13981              <p a="&a:b;">
13982              &a:b;
13983              </p>
13984          @@@c:erred: <[[xp|nswf-legal-ncname]]>{ (3, 10)..(3, 12); }
13985          @@@c:erred: <[[xp|nswf-legal-ncname]]>{ (5, 8)..(5, 10); }
13986          @@@c:erred: <[[xp|nswf-legal-ncname]]>{ (6, 2)..(6, 4); }
13987        @@XMLTest:
13988          @@@QName: xp.name.ger.names.1.1.1.test
13989          @@@DEnt:
13990            @@@@test:value:
13991              <?xml version="1.1"?>
13992              <!DOCTYPE p [
13993              <!ENTITY a:b "n">
13994              ]>
13995              <p a="&a:b;">
13996              &a:b;
13997              </p>
13998          @@@c:erred: <[[xp|nswf-legal-ncname]]>{ (3, 10)..(3, 12); }
13999          @@@c:erred: <[[xp|nswf-legal-ncname]]>{ (5, 8)..(5, 10); }
14000          @@@c:erred: <[[xp|nswf-legal-ncname]]>{ (6, 2)..(6, 4); }
14001        @@XMLTest:
14002          @@@QName: xp.name.ndata.1.0.2.test
14003          @@@DEnt:
14004            @@@@test:value:
14005              <?xml version="1.0"?>
14006              <!DOCTYPE p [
14007              <!NOTATION $u3001$u3002 SYSTEM "n">
14008              <!ENTITY e SYSTEM "s" NDATA $u3001$u3002>
14009              ]><p/>
14010          @@@c:erred: <[[xp|wf-invalid-character-in-node-name]]>{ (3, 12)..(3, 13); }
14011          @@@c:erred: <[[xp|wf-invalid-character-in-node-name]]>{ (4, 29)..(4, 30); }
14012        @@XMLTest:
14013          @@@QName: xp.name.ndata.1.1.2.test
14014          @@@DEnt:
14015            @@@@test:value:
14016              <?xml version="1.1"?>
14017              <!DOCTYPE p [
14018              <!NOTATION $u3001$u3002 SYSTEM "n">
14019              <!ENTITY e SYSTEM "s" NDATA $u3001$u3002>
14020              ]><p/>
14021          @@@test:domTree:
14022            document {
14023              xml-version: '1.1';
14024              document-type {
14025                notation {
14026                  node-name: U+3001 U+3002;
14027                }
14028                general-entity {
14029                  node-name: 'e';
14030                  notation-name: U+3001 U+3002;
14031                }
14032              }
14033              element { }
14034            }
14035        @@XMLTest:
14036          @@@QName: xp.name.ndata.1.0.3.test
14037          @@@DEnt:
14038            @@@@test:value:
14039              <?xml version="1.0"?>
14040              <!DOCTYPE p [
14041              <!NOTATION $u3005b SYSTEM "n">
14042              <!ENTITY e SYSTEM "s" NDATA $u3005b>
14043              ]><p/>
14044          @@@c:erred: <[[xp|wf-invalid-character-in-node-name]]>{ (3, 12)..(3, 13); }
14045          @@@c:erred: <[[xp|wf-invalid-character-in-node-name]]>{ (4, 29)..(4, 30); }
14046        @@XMLTest:
14047          @@@QName: xp.name.ndata.1.1.3.test
14048          @@@DEnt:
14049            @@@@test:value:
14050              <?xml version="1.1"?>
14051              <!DOCTYPE p [
14052              <!NOTATION $u3005b SYSTEM "n">
14053              <!ENTITY e SYSTEM "s" NDATA $u3005b>
14054              ]><p/>
14055          @@@test:domTree:
14056            document {
14057              xml-version: '1.1';
14058              document-type {
14059                notation {
14060                  node-name: U+3005 'b';
14061                }
14062                general-entity {
14063                  node-name: 'e';
14064                  notation-name: U+3005 'b';
14065                }
14066              }
14067              element { }
14068            }
14069        @@XMLTest:
14070          @@@QName: xp.name.ndata.names.1.0.1.test
14071          @@@DEnt:
14072            @@@@test:value:
14073              <?xml version="1.0"?>
14074              <!DOCTYPE p [
14075              <!NOTATION a:b SYSTEM "n">
14076              <!ENTITY e SYSTEM "s" NDATA a:b>
14077              ]><p/>
14078          @@@c:erred: <[[xp|nswf-legal-ncname]]>{ (3, 12)..(3, 14); }
14079          @@@c:erred: <[[xp|nswf-legal-ncname]]>{ (4, 29)..(4, 31); }
14080        @@XMLTest:
14081          @@@QName: xp.name.ndata.names.1.1.1.test
14082          @@@DEnt:
14083            @@@@test:value:
14084              <?xml version="1.1"?>
14085              <!DOCTYPE p [
14086              <!NOTATION a:b SYSTEM "n">
14087              <!ENTITY e SYSTEM "s" NDATA a:b>
14088              ]><p/>
14089          @@@c:erred: <[[xp|nswf-legal-ncname]]>{ (3, 12)..(3, 14); }
14090          @@@c:erred: <[[xp|nswf-legal-ncname]]>{ (4, 29)..(4, 31); }
14091    
14092        @@enImplNote:
14093          @@@ddid: wf-invalid-character-in-node-name
14094          @@@@:
14095            {ISSUE::
14096              {P:: Tests required for:
14097    
14098                - <CODE::Name> in element type declaration
14099    
14100                - <CODE::Name> in model group
14101    
14102                - <CODE::Name> in parameter entity declaration
14103    
14104                - <CODE::Name> in parameter entity reference
14105    
14106              }
14107            }
14108    
14109        @@XMLTest:
14110          @@@QName: xp.NOTATION.1.test
14111          @@@DEnt:
14112            @@@@test:value:
14113              <!DOCTYPE p [
14114              <!NOTATION n SYSTEM "m">
14115              ]><p/>
14116          @@@test:domTree:
14117            document {
14118              document-type {
14119                notation {
14120                  node-name: 'n';
14121                  public-id: null;
14122                  system-id: 'm';
14123                }
14124              }
14125              element { }
14126            }
14127        @@XMLTest:
14128          @@@QName: xp.NOTATION.2.test
14129          @@@DEnt:
14130            @@@@test:value:
14131              <!DOCTYPE p [
14132              <!NOTATION n PUBLIC "m">
14133              ]><p/>
14134          @@@test:domTree:
14135            document {
14136              document-type {
14137                notation {
14138                  node-name: 'n';
14139                  system-id: null;
14140                  public-id: 'm';
14141                }
14142              }
14143              element { }
14144            }
14145        @@XMLTest:
14146          @@@QName: xp.NOTATION.3.test
14147          @@@DEnt:
14148            @@@@test:value:
14149              <!DOCTYPE p [
14150              <!NOTATION n PUBLIC "m" "l">
14151              ]><p/>
14152          @@@test:domTree:
14153            document {
14154              document-type {
14155                notation {
14156                  node-name: 'n';
14157                  public-id: 'm';
14158                  system-id: 'l';
14159                }
14160              }
14161              element { }
14162            }
14163        @@XMLTest:
14164          @@@QName: xp.NOTATION.4.test
14165          @@@DEnt:
14166            @@@@test:value:
14167              <!DOCTYPE p [
14168              <!NOTATION n SYSTEM "m">
14169              <!NOTATION n SYSTEM "l">
14170              ]><p/>
14171          @@@c:erred: <[[xp|vc-unique-notation-name]]> { (3, 1)..(3, 24); }
14172          @@@test:domTree:
14173            document {
14174              document-type {
14175                notation {
14176                  node-name: 'n';
14177                  system-id: 'm';
14178                }
14179              }
14180              element { }
14181            }
14182    
14183        @@XMLTest:
14184          @@@QName: xp.names.1.test
14185          @@@DEnt:
14186            @@@@test:value:
14187              <p xmlns="http://1.example/" a="b"/>
14188          @@@test:domTree:
14189            document {
14190              element {
14191                prefix: null;
14192                local-name: 'p';
14193                namespace-uri: 'http://1.example/';
14194                attribute {
14195                  prefix: null;
14196                  local-name: 'xmlns';
14197                  namespace-uri: 'http://www.w3.org/2000/xmlns/';
14198                  specified: true;
14199                }
14200                attribute {
14201                  prefix: null;
14202                  local-name: 'a';
14203                  specified: true;
14204                }
14205              }
14206            }
14207        @@XMLTest:
14208          @@@QName: xp.names.2.test
14209          @@@DEnt:
14210            @@@@test:value:
14211              <p xmlns:a="http://1.example/" a="b" a:a="c"/>
14212          @@@test:domTree:
14213            document {
14214              element {
14215                prefix: null;
14216                local-name: 'p';
14217                namespace-uri: null;
14218                attribute {
14219                  prefix: 'xmlns';
14220                  local-name: 'a';
14221                  namespace-uri: 'http://www.w3.org/2000/xmlns/';
14222                  specified: true;
14223                }
14224                attribute {
14225                  prefix: null;
14226                  local-name: 'a';
14227                  specified: true;
14228                }
14229                attribute {
14230                  prefix: 'a';
14231                  local-name: 'a';
14232                  namespace-uri: 'http://1.example/';
14233                  specified: true;
14234                }
14235              }
14236            }
14237        @@XMLTest:
14238          @@@QName: xp.names.3.test
14239          @@@DEnt:
14240            @@@@test:value:
14241              <a:p xmlns:a="http://1.example/" a="b" a:a="c"/>
14242          @@@test:domTree:
14243            document {
14244              element {
14245                prefix: 'a';
14246                local-name: 'p';
14247                namespace-uri: 'http://1.example/';
14248                attribute {
14249                  prefix: 'xmlns';
14250                  local-name: 'a';
14251                  namespace-uri: 'http://www.w3.org/2000/xmlns/';
14252                  specified: true;
14253                }
14254                attribute {
14255                  prefix: null;
14256                  local-name: 'a';
14257                  specified: true;
14258                }
14259                attribute {
14260                  prefix: 'a';
14261                  local-name: 'a';
14262                  namespace-uri: 'http://1.example/';
14263                  specified: true;
14264                }
14265              }
14266            }
14267        @@XMLTest:
14268          @@@QName: xp.names.5.test
14269          @@@DEnt:
14270            @@@@test:value:
14271              <p xmlns:a="http://1.example/">$
14272              <a:q/>$
14273              </p>
14274          @@@test:domTree:
14275            document {
14276              element {
14277                prefix: null;
14278                local-name: 'p';
14279                namespace-uri: null;
14280                attribute {
14281                  prefix: 'xmlns';
14282                  local-name: 'a';
14283                  namespace-uri: 'http://www.w3.org/2000/xmlns/';
14284                  specified: true;
14285                }
14286                element {
14287                  prefix: 'a';
14288                  local-name: 'q';
14289                  namespace-uri: 'http://1.example/';
14290                }
14291              }
14292            }
14293        @@XMLTest:
14294          @@@QName: xp.names.6.test
14295          @@@DEnt:
14296            @@@@test:value:
14297              <p xmlns:a="http://1.example/">$
14298              <q a:b="c"/>$
14299              </p>
14300          @@@test:domTree:
14301            document {
14302              element {
14303                prefix: null;
14304                local-name: 'p';
14305                namespace-uri: null;
14306                attribute {
14307                  prefix: 'xmlns';
14308                  local-name: 'a';
14309                  namespace-uri: 'http://www.w3.org/2000/xmlns/';
14310                  specified: true;
14311                }
14312                element {
14313                  prefix: null;
14314                  local-name: 'q';
14315                  namespace-uri: null;
14316                  attribute {
14317                    prefix: 'a';
14318                    local-name: 'b';
14319                    namespace-uri: 'http://1.example/';
14320                    specified: true;
14321                  }
14322                }
14323              }
14324            }
14325        @@XMLTest:
14326          @@@QName: xp.names.7.test
14327          @@@DEnt:
14328            @@@@test:value:
14329              <p xmlns:a="http://1.example/">$
14330              <q a:b="c" xmlns:a="http://2.example/"/>$
14331              </p>
14332          @@@test:domTree:
14333            document {
14334              element {
14335                prefix: null;
14336                local-name: 'p';
14337                namespace-uri: null;
14338                attribute {
14339                  prefix: 'xmlns';
14340                  local-name: 'a';
14341                  namespace-uri: 'http://www.w3.org/2000/xmlns/';
14342                  specified: true;
14343                }
14344                element {
14345                  prefix: null;
14346                  local-name: 'q';
14347                  namespace-uri: null;
14348                  attribute {
14349                    prefix: 'a';
14350                    local-name: 'b';
14351                    namespace-uri: 'http://2.example/';
14352                    specified: true;
14353                  }
14354                  attribute {
14355                    prefix: 'xmlns';
14356                    local-name: 'a';
14357                    namespace-uri: 'http://www.w3.org/2000/xmlns/';
14358                    specified: true;
14359                  }
14360                }
14361              }
14362            }
14363    
14364        @@XMLTest:
14365          @@@QName: xp.names.undeclare.1.test
14366          @@@DEnt:
14367            @@@@test:value:
14368              <p xmlns="http://1.example/">$
14369              <q xmlns="">$
14370              <r xmlns="http://2.example/"/>$
14371              </q>$
14372              </p>
14373          @@@test:domTree:
14374            document {
14375              element {
14376                prefix: null;
14377                local-name: 'p';
14378                namespace-uri: 'http://1.example/';
14379                attribute {
14380                  prefix: null;
14381                  local-name: 'xmlns';
14382                  namespace-uri: 'http://www.w3.org/2000/xmlns/';
14383                  specified: true;
14384                }
14385                element {
14386                  prefix: null;
14387                  local-name: 'q';
14388                  namespace-uri: null;
14389                  attribute {
14390                    prefix: null;
14391                    local-name: 'xmlns';
14392                    namespace-uri: 'http://www.w3.org/2000/xmlns/';
14393                    specified: true;
14394                  }
14395                  element {
14396                    prefix: null;
14397                    local-name: 'r';
14398                    namespace-uri: 'http://2.example/';
14399                    attribute {
14400                      prefix: null;
14401                      local-name: 'xmlns';
14402                      namespace-uri: 'http://www.w3.org/2000/xmlns/';
14403                      specified: true;
14404                    }
14405                  }
14406                }
14407              }
14408            }
14409    
14410        @@XMLTest:
14411          @@@QName: xp.names.undeclare.1.0.1.test
14412          @@@DEnt:
14413            @@@@test:value:
14414              <?xml version="1.0"?>
14415              <a:p xmlns:a="http://1.example/">$
14416              <q xmlns:a="">$
14417              <a:r xmlns:a="http://2.example/"/>$
14418              </q>$
14419              </a:p>
14420          @@@c:erred: <[[xp|nswf-empty-namespace-name]]> { (2, 34)..(2, 47); }
14421        @@XMLTest:
14422          @@@QName: xp.names.undeclare.1.1.1.test
14423          @@@DEnt:
14424            @@@@test:value:
14425              <?xml version="1.1"?>
14426              <a:p xmlns:a="http://1.example/">$
14427              <q xmlns:a="">$
14428              <a:r xmlns:a="http://2.example/"/>$
14429              </q>$
14430              </a:p>
14431          @@@test:domTree:
14432            document {
14433              element {
14434                prefix: 'a';
14435                local-name: 'p';
14436                namespace-uri: 'http://1.example/';
14437                attribute {
14438                  prefix: 'xmlns';
14439                  local-name: 'a';
14440                  namespace-uri: 'http://www.w3.org/2000/xmlns/';
14441                  specified: true;
14442                }
14443                element {
14444                  prefix: null;
14445                  local-name: 'q';
14446                  namespace-uri: null;
14447                  attribute {
14448                    prefix: 'xmlns';
14449                    local-name: 'a';
14450                    namespace-uri: 'http://www.w3.org/2000/xmlns/';
14451                    specified: true;
14452                  }
14453                  element {
14454                    prefix: 'a';
14455                    local-name: 'r';
14456                    namespace-uri: 'http://2.example/';
14457                    attribute {
14458                      prefix: 'xmlns';
14459                      local-name: 'a';
14460                      namespace-uri: 'http://www.w3.org/2000/xmlns/';
14461                      specified: true;
14462                    }
14463                  }
14464                }
14465              }
14466            }
14467        @@XMLTest:
14468          @@@QName: xp.names.undeclare.1.1.2.test
14469          @@@DEnt:
14470            @@@@test:value:
14471              <?xml version="1.1"?>
14472              <a:p xmlns:a="http://1.example/">$
14473              <q xmlns:a="">$
14474              <a:r/>$
14475              </q>$
14476              </a:p>
14477          @@@c:erred: <[[xp|nsc-prefix-declared]]> { (2, 48)..(2, 53); }
14478    
14479        @@XMLTest:
14480          @@@QName: xp.names.xml.prefix.1.test
14481          @@@DEnt:
14482            @@@@test:value:
14483              <a xmlns:xml="http://www.w3.org/XML/1998/namespace"/>
14484          @@@test:domTree:
14485            document {
14486              element {
14487                attribute {
14488                  prefix: 'xmlns';
14489                  local-name: 'xml';
14490                  namespace-uri: 'http://www.w3.org/2000/xmlns/';
14491                }
14492              }
14493            }
14494        @@XMLTest:
14495          @@@QName: xp.names.xml.prefix.2.test
14496          @@@DEnt:
14497            @@@@test:value:
14498              <a xmlns:xml="a"/>
14499          @@@c:erred: <[[xp|nsc-reserved-prefix-xml]]> { (1, 1)..(1, 18); }
14500        @@XMLTest:
14501          @@@QName: xp.names.xml.prefix.3.test
14502          @@@DEnt:
14503            @@@@test:value:
14504              <a xmlns:a="http://www.w3.org/XML/1998/namespace"
14505              />
14506          @@@c:erred: <[[xp|nsc-reserved-namespace-name-xml]]> { (1, 1)..(2, 2); }
14507        @@XMLTest:
14508          @@@QName: xp.names.xml.prefix.4.test
14509          @@@DEnt:
14510            @@@@test:value:
14511              <a xml:lang="ja"/>
14512          @@@test:domTree:
14513            document {
14514              element {
14515                attribute {
14516                  prefix: 'xml';
14517                  local-name: 'lang';
14518                  namespace-uri: 'http://www.w3.org/XML/1998/namespace';
14519                }
14520              }
14521            }
14522    
14523        @@XMLTest:
14524          @@@QName: xp.names.prefix.declared.1.test
14525          @@@DEnt:
14526            @@@@test:value:
14527              <!DOCTYPE a [
14528              <!ATTLIST a
14529              b:c CDATA "d"
14530              >
14531              ]>
14532              <a/>
14533          @@@c:erred: <[[xp|nsc-prefix-declared]]> { (6, 1)..(6, 4); }
14534    
14535        @@XMLTest:
14536          @@@QName: xp.names.xmlns.reserved.1.test
14537          @@@DEnt:
14538            @@@@test:value:
14539              <a xmlns:xmlns="http://www.w3.org/2000/xmlns/"
14540              />
14541          @@@c:erred: <[[xp|nsc-reserved-prefix-xmlns]]> { (1, 1)..(2, 2); }
14542          @@@c:erred: <[[xp|nsc-reserved-namespace-name-xmlns]]> { (1, 1)..(2, 2); }
14543        @@XMLTest:
14544          @@@QName: xp.names.xmlns.reserved.2.test
14545          @@@DEnt:
14546            @@@@test:value:
14547              <a xmlns:xmlns="a"
14548              />
14549          @@@c:erred: <[[xp|nsc-reserved-prefix-xmlns]]> { (1, 1)..(2, 2); }
14550        @@XMLTest:
14551          @@@QName: xp.names.xmlns.reserved.3.test
14552          @@@DEnt:
14553            @@@@test:value:
14554              <a xmlns:a="http://www.w3.org/2000/xmlns/"
14555              />
14556          @@@c:erred: <[[xp|nsc-reserved-namespace-name-xmlns]]> { (1, 1)..(2, 2); }
14557    
14558        @@XMLTest:
14559          @@@QName: xp.names.default.1.test
14560          @@@DEnt:
14561            @@@@test:value:
14562              <!DOCTYPE a [
14563              <!ATTLIST a
14564              xmlns CDATA "http://1.example/">
14565              ]>
14566              <a/>
14567          @@@test:domTree:
14568            document {
14569              document-type {
14570                element-type-definition {
14571                  node-name: 'a';
14572                  attribute-definition {
14573                    node-name: 'xmlns';
14574                    node-value: 'http://1.example/';
14575                  }
14576                }
14577              }
14578              element {
14579                prefix: null;
14580                local-name: 'a';
14581                namespace-uri: 'http://1.example/';
14582                attribute {
14583                  prefix: null;
14584                  local-name: 'xmlns';
14585                  namespace-uri: 'http://www.w3.org/2000/xmlns/';
14586                  value: 'http://1.example/';
14587                  specified: false;
14588                }
14589              }
14590            }
14591        @@XMLTest:
14592          @@@QName: xp.names.default.2.test
14593          @@@DEnt:
14594            @@@@test:value:
14595              <!DOCTYPE a [
14596              <!ATTLIST a
14597              xmlns CDATA "http://1.example/">
14598              ]>
14599              <a xmlns="http://2.example/"/>
14600          @@@test:domTree:
14601            document {
14602              document-type {
14603                element-type-definition {
14604                  node-name: 'a';
14605                  attribute-definition {
14606                    node-name: 'xmlns';
14607                    node-value: 'http://1.example/';
14608                  }
14609                }
14610              }
14611              element {
14612                prefix: null;
14613                local-name: 'a';
14614                namespace-uri: 'http://2.example/';
14615                attribute {
14616                  prefix: null;
14617                  local-name: 'xmlns';
14618                  namespace-uri: 'http://www.w3.org/2000/xmlns/';
14619                  value: 'http://2.example/';
14620                  specified: true;
14621                }
14622              }
14623            }
14624        @@XMLTest:
14625          @@@QName: xp.names.default.3.test
14626          @@@DEnt:
14627            @@@@test:value:
14628              <!DOCTYPE b:a [
14629              <!ATTLIST b:a
14630              xmlns:b CDATA "http://1.example/">
14631              ]>
14632              <b:a/>
14633          @@@test:domTree:
14634            document {
14635              document-type {
14636                element-type-definition {
14637                  node-name: 'b:a';
14638                  attribute-definition {
14639                    node-name: 'xmlns:b';
14640                    node-value: 'http://1.example/';
14641                  }
14642                }
14643              }
14644              element {
14645                prefix: 'b';
14646                local-name: 'a';
14647                namespace-uri: 'http://1.example/';
14648                attribute {
14649                  prefix: 'xmlns';
14650                  local-name: 'b';
14651                  namespace-uri: 'http://www.w3.org/2000/xmlns/';
14652                  value: 'http://1.example/';
14653                  specified: false;
14654                }
14655              }
14656            }
14657        @@XMLTest:
14658          @@@QName: xp.names.default.4.test
14659          @@@DEnt:
14660            @@@@test:value:
14661              <!DOCTYPE b:a [
14662              <!ATTLIST b:a
14663              xmlns:b CDATA "http://1.example/">
14664              ]>
14665              <b:a xmlns:b="http://2.example/"/>
14666          @@@test:domTree:
14667            document {
14668              document-type {
14669                element-type-definition {
14670                  node-name: 'b:a';
14671                  attribute-definition {
14672                    node-name: 'xmlns:b';
14673                    node-value: 'http://1.example/';
14674                  }
14675                }
14676              }
14677              element {
14678                prefix: 'b';
14679                local-name: 'a';
14680                namespace-uri: 'http://2.example/';
14681                attribute {
14682                  prefix: 'xmlns';
14683                  local-name: 'b';
14684                  namespace-uri: 'http://www.w3.org/2000/xmlns/';
14685                  value: 'http://2.example/';
14686                  specified: true;
14687                }
14688              }
14689            }
14690        @@XMLTest:
14691          @@@QName: xp.names.default.5.test
14692          @@@DEnt:
14693            @@@@test:value:
14694              <!DOCTYPE a [
14695              <!ATTLIST a
14696              xmlns:b CDATA "http://1.example/"
14697              b:c CDATA "http://1.example/">
14698              ]>
14699              <a xmlns:b="http://2.example/"/>
14700          @@@test:domTree:
14701            document {
14702              document-type {
14703                element-type-definition {
14704                  node-name: 'a';
14705                  attribute-definition {
14706                    node-name: 'xmlns:b';
14707                    text-content: 'http://1.example/';
14708                  }
14709                  attribute-definition {
14710                    node-name: 'b:c';
14711                    text-content: 'http://1.example/';
14712                  }
14713                }
14714              }
14715              element {
14716                prefix: null;
14717                local-name: 'a';
14718                namespace-uri: null;
14719                attribute {
14720                  prefix: 'xmlns';
14721                  local-name: 'b';
14722                  namespace-uri: 'http://www.w3.org/2000/xmlns/';
14723                  value: 'http://2.example/';
14724                  specified: true;
14725                }
14726                attribute {
14727                  prefix: 'b';
14728                  local-name: 'c';
14729                  namespace-uri: 'http://2.example/';
14730                  specified: false;
14731                }
14732              }
14733            }
14734    
14735        @@XMLTest:
14736          @@@QName: xp.names.unique.1.test
14737          @@@DEnt:
14738            @@@@test:value:
14739              <a
14740              xmlns:b="http://2.example/"
14741              xmlns:c="http://2.example/"
14742              b:d=""
14743              c:d=""
14744              />
14745          @@@c:erred: <[[xp|nswf-unique-att-spec-expanded-name]]> { (1, 1)..(6, 2); }
14746        @@XMLTest:
14747          @@@QName: xp.names.unique.2.test
14748          @@@DEnt:
14749            @@@@test:value:
14750              <!DOCTYPE a [
14751              <!ATTLIST a
14752              c:d CDATA ""
14753              >
14754              ]>
14755              <a
14756              xmlns:b="http://2.example/"
14757              xmlns:c="http://2.example/"
14758              b:d=""
14759              />
14760          @@@c:erred: <[[xp|nswf-unique-att-spec-expanded-name]]> { (6, 1)..(10, 2);}
14761        @@XMLTest:
14762          @@@QName: xp.names.unique.3.test
14763          @@@DEnt:
14764            @@@@test:value:
14765              <!DOCTYPE a [
14766              <!ATTLIST a
14767              c:d CDATA "value1"
14768              >
14769              ]>
14770              <a
14771              xmlns:c="http://2.example/"
14772              c:d="value2"
14773              />
14774          @@@test:domTree:
14775            document {
14776              document-type { }
14777              element {
14778                attribute {
14779                  prefix: 'xmlns';
14780                  local-name: 'c';
14781                  namespace-uri: 'http://www.w3.org/2000/xmlns/';
14782                  specified: true;
14783                }
14784                attribute {
14785                  prefix: 'c';
14786                  local-name: 'd';
14787                  namespace-uri: 'http://2.example/';
14788                  value: 'value2';
14789                  specified: true;
14790                }
14791              }
14792            }
14793    
14794        @@XMLTest:
14795          @@@QName: xp.names.normalize.1.test
14796          @@@DEnt:
14797            @@@@test:value:
14798              <!DOCTYPE a [
14799              <!ATTLIST a
14800              xmlns NMTOKEN #IMPLIED
14801              >
14802              ]>
14803              <a xmlns="  "/>
14804          @@@test:domTree:
14805            document {
14806              document-type { }
14807              element {
14808                namespace-uri: null;
14809                prefix: null;
14810                local-name: 'a';
14811              }
14812            }
14813        @@XMLTest:
14814          @@@QName: xp.names.normalize.2.test
14815          @@@DEnt:
14816            @@@@test:value:
14817              <!DOCTYPE a [
14818              <!ATTLIST a
14819              xmlns NMTOKEN #IMPLIED
14820              >
14821              ]>
14822              <a xmlns="  about:blank  "/>
14823          @@@test:domTree:
14824            document {
14825              document-type { }
14826              element {
14827                namespace-uri: 'about:blank';
14828                prefix: null;
14829                local-name: 'a';
14830              }
14831            }
14832        @@XMLTest:
14833          @@@QName: xp.names.normalize.3.test
14834          @@@DEnt:
14835            @@@@test:value:
14836              <!DOCTYPE a:a [
14837              <!ATTLIST a:a
14838              xmlns:a NMTOKEN #IMPLIED
14839              >
14840              ]>
14841              <a:a xmlns:a=" about:blank  "/>
14842          @@@test:domTree:
14843            document {
14844              document-type { }
14845              element {
14846                namespace-uri: 'about:blank';
14847                prefix: 'a';
14848                local-name: 'a';
14849              }
14850            }
14851    
14852        @@XMLTest:
14853          @@@QName: xp.no.baseuri.test
14854          @@@DEnt:
14855            @@@@test:value:
14856              <p/>
14857          @@@test:domTree:
14858            document {
14859              document-uri: null;
14860              base-uri: null;
14861              element {
14862                node-name: 'p';
14863                base-uri: null;
14864              }
14865            }
14866        @@XMLTest:
14867          @@@QName: xp.docuri.no.baseuri.test
14868          @@@DEnt:
14869            @@@@test:uri:
14870              http://www.example.com/
14871            @@@@test:value:
14872              <p/>
14873          @@@test:domTree:
14874            document {
14875              document-uri: 'http://www.example.com/';
14876              base-uri: 'http://www.example.com/';
14877              element {
14878                node-name: 'p';
14879                base-uri: 'http://www.example.com/';
14880              }
14881            }
14882        @@XMLTest:
14883          @@@QName: xp.docuri.baseuri.test
14884          @@@DEnt:
14885            @@@@test:uri:
14886              http://www.example.com/
14887            @@@@test:baseURI:
14888              ftp://ftp.example.com/
14889            @@@@test:value:
14890              <p/>
14891          @@@test:domTree:
14892            document {
14893              document-uri: 'http://www.example.com/';
14894              base-uri: 'ftp://ftp.example.com/';
14895              element {
14896                node-name: 'p';
14897                base-uri: 'ftp://ftp.example.com/';
14898              }
14899            }
14900        @@XMLTest:
14901          @@@QName: xp.doctype.baseuri.test
14902          @@@DEnt:
14903            @@@@test:uri:
14904              http://www.example.com/
14905            @@@@test:baseURI:
14906              ftp://ftp.example.com/
14907            @@@@test:value:
14908              <!DOCTYPE p SYSTEM "sys">
14909              <p/>
14910          @@@test:domTree:
14911            document {
14912              document-uri: 'http://www.example.com/';
14913              base-uri: 'ftp://ftp.example.com/';
14914              document-type {
14915                system-id: 'sys';
14916                manakai-declaration-base-uri: 'ftp://ftp.example.com/';
14917              }
14918              element {
14919                node-name: 'p';
14920                base-uri: 'ftp://ftp.example.com/';
14921              }
14922            }
14923        @@XMLTest:
14924          @@@QName: xp.entdecl.baseuri.test
14925          @@@DEnt:
14926            @@@@test:uri:
14927              http://www.example.com/
14928            @@@@test:baseURI:
14929              ftp://ftp.example.com/
14930            @@@@test:value:
14931              <!DOCTYPE p [
14932                <!ENTITY ent SYSTEM "ent">
14933              ]>
14934              <p/>
14935          @@@test:domTree:
14936            document {
14937              document-uri: 'http://www.example.com/';
14938              base-uri: 'ftp://ftp.example.com/';
14939              document-type {
14940                general-entity {
14941                  node-name: 'ent';
14942                  manakai-declaration-base-uri: 'ftp://ftp.example.com/';
14943                }
14944              }
14945              element {
14946                node-name: 'p';
14947                base-uri: 'ftp://ftp.example.com/';
14948              }
14949            }
14950        @@XMLTest:
14951          @@@QName: xp.notdecl.baseuri.test
14952          @@@DEnt:
14953            @@@@test:uri:
14954              http://www.example.com/
14955            @@@@test:baseURI:
14956              ftp://ftp.example.com/
14957            @@@@test:value:
14958              <!DOCTYPE p [
14959                <!NOTATION not SYSTEM "not">
14960              ]>
14961              <p/>
14962          @@@test:domTree:
14963            document {
14964              document-uri: 'http://www.example.com/';
14965              base-uri: 'ftp://ftp.example.com/';
14966              document-type {
14967                notation {
14968                  node-name: 'not';
14969                  manakai-declaration-base-uri: 'ftp://ftp.example.com/';
14970                }
14971              }
14972              element {
14973                node-name: 'p';
14974                base-uri: 'ftp://ftp.example.com/';
14975              }
14976            }
14977        @@XMLTest:
14978          @@@QName: xp.doctype.intsubset.pi.baseuri.test
14979          @@@DEnt:
14980            @@@@test:uri:
14981              http://www.example.com/
14982            @@@@test:baseURI:
14983              ftp://ftp.example.com/
14984            @@@@test:value:
14985              <!DOCTYPE p [
14986                <?pi?>
14987              ]>
14988              <p/>
14989          @@@test:domTree:
14990            document {
14991              document-uri: 'http://www.example.com/';
14992              base-uri: 'ftp://ftp.example.com/';
14993              document-type {
14994                pi {
14995                  node-name: 'pi';
14996                  base-uri: 'ftp://ftp.example.com/';
14997                }
14998              }
14999              element {
15000                node-name: 'p';
15001                base-uri: 'ftp://ftp.example.com/';
15002              }
15003            }
15004    
15005        @@XMLTest:
15006          @@@QName: xp.xmlid.attr.test
15007          @@@DEnt:
15008            @@@@test:value:
15009              <p xml:id="idv"/>
15010          @@@cfg:xml-id: 1
15011          @@@test:domTree:
15012            document {
15013              element {
15014                attribute {
15015                  node-name: 'xml:id';
15016                  value: 'idv';
15017                  schema-type-info: TypeInfo ('http://www.w3.org/TR/REC-xml',
15018                                              'ID');
15019                  specified: true;
15020                }
15021              }
15022            }
15023        @@XMLTest:
15024          @@@QName: xp.xmlid.attr.disabled.test
15025          @@@DEnt:
15026            @@@@test:value:
15027              <p xml:id="idv"/>
15028          @@@cfg:xml-id: 0
15029          @@@test:domTree:
15030            document {
15031              element {
15032                attribute {
15033                  node-name: 'xml:id';
15034                  value: 'idv';
15035                  schema-type-info: TypeInfo (null, null);
15036                  specified: true;
15037                }
15038              }
15039            }
15040        @@XMLTest:
15041          @@@QName: xp.xmlid.attr.norm.test
15042          @@@DEnt:
15043            @@@@test:value:
15044              <p xml:id=" $u000Aidv  "/>
15045          @@@cfg:xml-id: 1
15046          @@@test:domTree:
15047            document {
15048              element {
15049                attribute {
15050                  node-name: 'xml:id';
15051                  value: 'idv';
15052                  schema-type-info: TypeInfo ('http://www.w3.org/TR/REC-xml',
15053                                              'ID');
15054                  specified: true;
15055                }
15056              }
15057            }
15058        @@XMLTest:
15059          @@@QName: xp.xmlid.attr.norm.disabled.test
15060          @@@DEnt:
15061            @@@@test:value:
15062              <p xml:id=" $u000Aidv  "/>
15063          @@@cfg:xml-id: 0
15064          @@@test:domTree:
15065            document {
15066              element {
15067                attribute {
15068                  node-name: 'xml:id';
15069                  value: '  idv  ';
15070                  schema-type-info: TypeInfo (null, null);
15071                  specified: true;
15072                }
15073              }
15074            }
15075        @@XMLTest:
15076          @@@QName: xp.xmlid.attrdef.test
15077          @@@DEnt:
15078            @@@@test:value:
15079              <!DOCTYPE p [
15080                <!ATTLIST p xml:id ID #IMPLIED>
15081              ]>
15082              <p/>
15083          @@@cfg:xml-id: 1
15084          @@@test:domTree:
15085            document {
15086              document-type {
15087                element-type-definition {
15088                  node-name: 'p';
15089                  attribute-definition {
15090                    node-name: 'xml:id';
15091                    declared-type: const (ID_ATTR);
15092                    default-type: const (IMPLIED_DEFAULT);
15093                  }
15094                }
15095              }
15096              element { }
15097            }
15098        @@XMLTest:
15099          @@@QName: xp.xmlid.attrdef.disabled.test
15100          @@@DEnt:
15101            @@@@test:value:
15102              <!DOCTYPE p [
15103                <!ATTLIST p xml:id ID #IMPLIED>
15104              ]>
15105              <p/>
15106          @@@cfg:xml-id: 0
15107          @@@test:domTree:
15108            document {
15109              document-type {
15110                element-type-definition {
15111                  node-name: 'p';
15112                  attribute-definition {
15113                    node-name: 'xml:id';
15114                    declared-type: const (ID_ATTR);
15115                    default-type: const (IMPLIED_DEFAULT);
15116                  }
15117                }
15118              }
15119              element { }
15120            }
15121        @@XMLTest:
15122          @@@QName: xp.xmlid.attrdef.defaultattr.test
15123          @@@DEnt:
15124            @@@@test:value:
15125              <!DOCTYPE p [
15126                <!ATTLIST p xml:id ID "idv"><!-- invalid -->
15127              ]>
15128              <p/>
15129          @@@cfg:xml-id: 1
15130          @@@test:domTree:
15131            document {
15132              document-type {
15133                element-type-definition {
15134                  node-name: 'p';
15135                  attribute-definition {
15136                    node-name: 'xml:id';
15137                    declared-type: const (ID_ATTR);
15138                    default-type: const (EXPLICIT_DEFAULT);
15139                    node-value: 'idv';
15140                  }
15141                }
15142              }
15143              element {
15144                attribute {
15145                  node-name: 'xml:id';
15146                  schema-type-info: TypeInfo ('http://www.w3.org/TR/REC-xml',
15147                                              'ID');
15148                  value: 'idv';
15149                  specified: false;
15150                }
15151              }
15152            }
15153        @@XMLTest:
15154          @@@QName: xp.xmlid.attrdef.defaultattr.disabled.test
15155          @@@DEnt:
15156            @@@@test:value:
15157              <!DOCTYPE p [
15158                <!ATTLIST p xml:id ID "idv"><!-- invalid -->
15159              ]>
15160              <p/>
15161          @@@cfg:xml-id: 0
15162          @@@test:domTree:
15163            document {
15164              document-type {
15165                element-type-definition {
15166                  node-name: 'p';
15167                  attribute-definition {
15168                    node-name: 'xml:id';
15169                    declared-type: const (ID_ATTR);
15170                    default-type: const (EXPLICIT_DEFAULT);
15171                    node-value: 'idv';
15172                  }
15173                }
15174              }
15175              element {
15176                attribute {
15177                  node-name: 'xml:id';
15178                  schema-type-info: TypeInfo ('http://www.w3.org/TR/REC-xml',
15179                                              'ID');
15180                  value: 'idv';
15181                  specified: false;
15182                }
15183              }
15184            }
15185    
15186        @@XMLTest:
15187          @@@QName: xp.general.entity.unused.1.test
15188          @@@DEnt:
15189            @@@@test:value:
15190              <!DOCTYPE p [
15191                <!ENTITY mylt "<">
15192              ]>
15193              <p/>
15194          @@@cfg:entity-replacement-tree: 0
15195          @@@test:domTree:
15196            document {
15197              document-type {
15198                general-entity {
15199                  node-name: 'mylt';
15200                }
15201              }
15202              element { }
15203            }
15204        @@XMLTest:
15205          @@@QName: xp.general.entity.unused.2.test
15206          @@@DEnt:
15207            @@@@test:value:
15208              <!DOCTYPE p [
15209                <!ENTITY mylt "<">
15210              ]>
15211              <p/>
15212          @@@cfg:entity-replacement-tree: 1
15213          @@@c:erred: <[[xp|wf-syntax-error]]> { (1, 1)..(1, 2); }
15214    
15215      @@PerlDef:      @@PerlDef:
15216        my $impl = $Message::DOM::ImplementationRegistry->get_implementation ({        my $impl = $Message::DOM::ImplementationRegistry->get_implementation ({
15217          'Core' => '3.0',          'Core' => '3.0',
15218          'XML' => '3.0',          'XML' => '3.0',
15219          'XMLVersion' => ['1.0', '1.1'],          'XMLVersion' => ['1.0', '1.1'],
15220        });        });
       my $parser = <Class::ManakaiXMLParser>->new ($impl);  
15221    
15222        for my $test_data (@$TestData) {        for my $test_data (@$TestData) {
15223            my $parser = <Class::ManakaiXMLParser>->new ($impl);
15224    
15225          $test->start_new_test ($test_data->{uri});          $test->start_new_test ($test_data->{uri});
15226          my $doc_ent = $test_data->{entity}->{$test_data->{root_uri}};          my $doc_ent = $test_data->{entity}->{$test_data->{root_uri}};
15227          my $doc = $parser->parse_string ($doc_ent->{<H::test:value>});          my $not_ok;
15228          try {  
15229            $test->assert_dom_tree_equals          ## -- DOM Configuration Parameters
15230                     (actual_value => $doc,  
15231                      expected_hash => $test_data->{dom_tree});          my $pcfg = $parser->dom_config;
15232            $test->ok;          for (keys %{$test_data->{dom_config}}) {
15233          } catch Message::Util::IF::DTException with { };            $pcfg->set_parameter ($_ => $test_data->{dom_config}->{$_});
15234            }
15235    
15236            $pcfg->set_parameter ('error-handler' => sub ($$) {
15237              my (undef, $err) = @_;
15238              my $err_type = $err->type;
15239              if ($test_data->{dom_error}->{$err_type}) {
15240                $test->assert_error_equals
15241                         (actual_value => $err,
15242                          expected_hash => shift @{$test_data->{dom_error}
15243                                                             ->{$err_type}});
15244              } else { # Uncatched error
15245                warn $err;
15246                unless ($err->severity == <C::c|DOMError.SEVERITY_WARNING>) {
15247                  $test->failure_comment ('Unexpected error |'.$err->type.'|');
15248                  $not_ok = true;
15249                }
15250              }
15251              return true; # continue as far as possible
15252            });
15253    
15254            ## -- Input Data
15255    
15256            my $input = {string_data => \$doc_ent->{<Q::test:value>},
15257                         system_id => $doc_ent->{<Q::test:uri>},
15258                         base_uri => $doc_ent->{<Q::test:baseURI>}};
15259    
15260            ## -- Test and Result
15261    
15262            if ($test_data->{dom_tree}) { # Successful test
15263              my $doc;
15264              try {
15265                $doc = $parser->parse ($input);
15266                $test->assert_dom_tree_equals
15267                         (actual_value => $doc,
15268                          expected_hash => $test_data->{dom_tree});
15269                for (values %{$test_data->{dom_error}||{}}) {
15270                  if (@$_) {
15271                    $test->failure_comment
15272                             (@$_.' |DOMError|s of type |'.
15273                              $_->[0]->{type}->{value}.'| are not reported');
15274                    $not_ok = true;
15275                  }
15276                }
15277                $not_ok ? $test->not_ok : $test->ok;
15278                undef $doc;
15279              } catch Message::Util::IF::DTException with {
15280                require 'manakai/mndebug.pl';
15281                manakai::mndebug::dump ($doc);
15282              } catch Message::DOM::IF::LSException with {
15283                # not_ok
15284              } otherwise {
15285                my $err = shift;
15286                warn $err;
15287                $test->not_ok;
15288              };
15289            } else {
15290              my $doc;
15291              try {
15292                $doc = $parser->parse ($input);
15293              } catch Message::Util::IF::DTException with {
15294                require 'manakai/mndebug.pl';
15295                manakai::mndebug::dump ($doc);
15296              } catch Message::DOM::IF::LSException with {
15297                #
15298              } otherwise {
15299                my $err = shift;
15300                warn $err;
15301                $test->not_ok;
15302              };
15303              for (values %{$test_data->{dom_error}||{}}) {
15304                if (@$_) {
15305                  $test->failure_comment
15306                           (@$_.' |DOMError|s of type |'.
15307                            $_->[0]->{type}->{value}.'| are not reported');
15308                  $not_ok = true;
15309                }
15310              }
15311              $not_ok ? $test->not_ok : $test->ok;
15312            }
15313        }        }
15314    
15315    @ResourceDef:    @ResourceDef:
15316        @@QName: getEmptyEntityState
15317        @@rdf:type: DISPerl|InlineCode
15318        @@ForCheck: ManakaiDOM|ForClass
15319        @@PerlDef:
15320          {reptxt => \'', line => 1, column => 1, pos => 0,
15321           is_externally_declared => true, name => $name,
15322           fh => do {
15323                   open my $empty, '<', \'';
15324                   $empty;
15325                 },
15326           close_file => sub { }}
15327    
15328      @ResourceDef:
15329      @@QName: getCopyOfEntityState      @@QName: getCopyOfEntityState
15330      @@rdf:type: DISPerl|InlineCode      @@rdf:type: DISPerl|InlineCode
15331      @@ForCheck: ManakaiDOM|ForClass      @@ForCheck: ManakaiDOM|ForClass
15332      @@PerlDef:      @@PerlDef:
15333        {%{$self->{$entity_type}->{$entity_name}},        {%{$self->{$entity_type}->{$entity_name}},
15334         line => 1, column => 1, pos => 0}         line => 1, column => 1, pos => 0,
15335           fh => do {
15336                   require IO::String;
15337                   IO::String->new
15338                                (${$self->{$entity_type}->{$entity_name}->{reptxt}});
15339                   ## TODO: External entities.
15340                 },
15341           close_file => sub { }}
15342  ##ManakaiXMLParser  ##ManakaiXMLParser
15343    
15344  ElementTypeBinding:  ElementTypeBinding:
15345      @Name: Test
15346      @ElementType:
15347        dis:ResourceDef
15348      @ShadowContent:
15349        @@ForCheck: ManakaiDOM|ForClass
15350        @@rdf:type: test|StandaloneTest
15351    
15352    ElementTypeBinding:
15353    @Name: XMLTests    @Name: XMLTests
15354    @ElementType:    @ElementType:
15355      dis:ResourceDef      dis:ResourceDef
# Line 4292  ResourceDef: Line 15385  ResourceDef:
15385    @enDesc:    @enDesc:
15386      Creates a <IF::DOMCore:DOMLocator> object from a token.      Creates a <IF::DOMCore:DOMLocator> object from a token.
15387    @PerlDef:    @PerlDef:
15388        my $__d = $token->{type} ne '#EOF'
15389                    ? $token->{location}->{char_d}
15390                    : 0;
15391        $__d -= $token->{location_d} if $token->{location_d};
15392      $result = {      $result = {
15393        utf32_offset => $self->{entity}->[-1]->{pos},        utf32_offset => $token->{location}->{pos} - $__d,
15394          line_number => $token->{location}->{line},
15395          column_number => $token->{location}->{column} - $__d,
15396      };      };
15397        $result->{utf32_offset} = 0 if $result->{utf32_offset} < 0;
15398        $result->{column_number} = 0 if $result->{column_number} < 0;
15399                                ## 0 or 1, which should be?
15400    @For: ManakaiDOM|ManakaiDOM3    @For: ManakaiDOM|ManakaiDOM3
15401    
15402  ElementTypeBinding:  ElementTypeBinding:
# Line 4320  ElementTypeBinding: Line 15422  ElementTypeBinding:
15422      @@lang:en      @@lang:en
15423    
15424  ElementTypeBinding:  ElementTypeBinding:
15425    @Name: ErrDef    @Name: WFErrDef
15426    @ElementType:    @ElementType:
15427      dis:ResourceDef      dis:ResourceDef
15428    @ShadowContent:    @ShadowContent:
15429      @@rdf:type: DOMCore|DOMErrorType      @@rdf:type: DOMCore|DOMErrorType
15430      @@For: ManakaiDOM|DOM3      @@For: ManakaiDOM|DOM3
15431      @@ecore:textFormatter: ManakaiXMLParserExceptionFormatter      @@ecore:textFormatter: ManakaiXMLParserExceptionFormatter
15432        @@c:severity: c|SEVERITY_FATAL_ERROR
15433    
15434  ElementTypeBinding:  ElementTypeBinding:
15435    @Name: WFErrDef    @Name: FatalErrDef
15436    @ElementType:    @ElementType:
15437      dis:ResourceDef      dis:ResourceDef
15438    @ShadowContent:    @ShadowContent:
15439      @@rdf:type: DOMCore|DOMErrorType      @@rdf:type: DOMCore|DOMErrorType
15440      @@For: ManakaiDOM|DOM3      @@For: ManakaiDOM|DOM3
15441      @@ecore:textFormatter: ManakaiXMLParserExceptionFormatter      @@ecore:textFormatter: ManakaiXMLParserExceptionFormatter
15442        @@c:severity: c|SEVERITY_FATAL_ERROR
15443    
15444    ElementTypeBinding:
15445      @Name: NSFatalErrDef
15446      @ElementType:
15447        dis:ResourceDef
15448      @ShadowContent:
15449        @@rdf:type: c|DOMErrorType
15450        @@For: ManakaiDOM|DOM3
15451        @@ecore:textFormatter: ManakaiXMLParserExceptionFormatter
15452        @@c:severity: c|SEVERITY_FATAL_ERROR
15453    
15454    ElementTypeBinding:
15455      @Name: NSCErrDef
15456      @ElementType:
15457        dis:ResourceDef
15458      @ShadowContent:
15459        @@rdf:type: c|DOMErrorType
15460        @@For: ManakaiDOM|DOM3
15461        @@ecore:textFormatter: ManakaiXMLParserExceptionFormatter
15462        @@c:severity: c|SEVERITY_FATAL_ERROR
15463    
15464    ElementTypeBinding:
15465      @Name: VCErrDef
15466      @ElementType:
15467        dis:ResourceDef
15468      @ShadowContent:
15469        @@rdf:type: c|DOMErrorType
15470        @@For: ManakaiDOM|DOM3
15471        @@ecore:textFormatter: ManakaiXMLParserExceptionFormatter
15472        @@c:severity: c|SEVERITY_ERROR
15473    
15474    ElementTypeBinding:
15475      @Name: ErrDef
15476      @ElementType:
15477        dis:ResourceDef
15478      @ShadowContent:
15479        @@rdf:type: c|DOMErrorType
15480        @@For: ManakaiDOM|DOM3
15481        @@ecore:textFormatter: ManakaiXMLParserExceptionFormatter
15482        @@c:severity: c|SEVERITY_ERROR
15483    
15484    ElementTypeBinding:
15485      @Name: WarnDef
15486      @ElementType:
15487        dis:ResourceDef
15488      @ShadowContent:
15489        @@rdf:type: c|DOMErrorType
15490        @@For: ManakaiDOM|DOM3
15491        @@ecore:textFormatter: ManakaiXMLParserExceptionFormatter
15492        @@c:severity: c|SEVERITY_WARNING
15493    
15494  WFErrDef:  WFErrDef:
15495    @QName: xp|wf-syntax-error    @QName: xp|wf-syntax-error
15496    @enDesc:    @enDesc:
15497      The entity does not match to the production rule; it is not      The entity does not match to the production rule; it is not
15498      well-formed.      well-formed.
   @DOMCore:severity: DOMCore|SEVERITY_FATAL_ERROR  
15499    @enMufDef:    @enMufDef:
15500      |%xp-error-token-type;|%xp-error-token-value      |%xp-error-token-type;|%xp-error-token-value
15501      (prefix => { (|}, suffix => {|)}); is not      (prefix => { (|}, suffix => {|)}); is not
# Line 4357  WFErrDef: Line 15510  WFErrDef:
15510    @enDesc:    @enDesc:
15511      A processing instruction has its <CODE::PITarget> of      A processing instruction has its <CODE::PITarget> of
15512      <XML::xml> (in any case) which is not allowed.      <XML::xml> (in any case) which is not allowed.
   @DOMCore:severity: DOMCore|SEVERITY_ERROR  
15513    @enMufDef:    @enMufDef:
15514      Processing instruction target name cannot be |%p      Processing instruction target name cannot be |%p
15515      (name => {<Q::xp|name>});|      (name => {<Q::xp|name>});|
# Line 4374  WFErrDef: Line 15526  WFErrDef:
15526    
15527  WFErrDef:  WFErrDef:
15528    @QName: xp|wf-no-end-tag    @QName: xp|wf-no-end-tag
   @DOMCore:severity: DOMCore|SEVERITY_ERROR  
15529    @enDesc:    @enDesc:
15530      An end-tag is not found.      An end-tag is not found.
15531    @enMufDef:    @enMufDef:
# Line 4391  WFErrDef: Line 15542  WFErrDef:
15542    
15543  WFErrDef:  WFErrDef:
15544    @QName: xp|wf-unsupported-xml-version    @QName: xp|wf-unsupported-xml-version
   @DOMCore:severity: DOMCore|SEVERITY_ERROR  
15545    @enDesc:    @enDesc:
15546      The XML version specified in the version declaration is not supported.      The XML version specified in the version declaration is not supported.
15547    @enMufDef:    @enMufDef:
# Line 4408  WFErrDef: Line 15558  WFErrDef:
15558    
15559  WFErrDef:  WFErrDef:
15560    @QName: xp|wf-malformed-enc-name    @QName: xp|wf-malformed-enc-name
   @DOMCore:severity: DOMCore|SEVERITY_ERROR  
15561    @enDesc:    @enDesc:
15562      An <XA::encoding> pseudo-attribute value does not match      An <XA::encoding> pseudo-attribute value does not match
15563      to the procduction rule <CODE::EncName>.      to the procduction rule <CODE::EncName>.
# Line 4425  WFErrDef: Line 15574  WFErrDef:
15574    
15575  WFErrDef:  WFErrDef:
15576    @QName: xp|wf-malformed-xml-standalone    @QName: xp|wf-malformed-xml-standalone
   @DOMCore:severity: DOMCore|SEVERITY_ERROR  
15577    @enDesc:    @enDesc:
15578      An <XA::standalone> pseudo-attribute value is neither <XML::yes>      An <XA::standalone> pseudo-attribute value is neither <XML::yes>
15579      or <XML::no>.      or <XML::no>.
# Line 4443  WFErrDef: Line 15591  WFErrDef:
15591    
15592  WFErrDef:  WFErrDef:
15593    @QName: xp|wf-legal-literal-character    @QName: xp|wf-legal-literal-character
   @DOMCore:severity: DOMCore|SEVERITY_ERROR  
15594    @enDesc:    @enDesc:
15595      Each character in XML entity must match to the production      Each character in XML entity must match to the production
15596      rule <CODE::Char - RestrictedChar>.      rule <CODE::Char - RestrictedChar>.
# Line 4456  WFErrDef: Line 15603  WFErrDef:
15603        The code position of the character being referred.        The code position of the character being referred.
15604    
15605  WFErrDef:  WFErrDef:
15606      @QName: xp|wf-invalid-character-in-node-name
15607      @c:errorType:
15608        @@@: wf-invalid-character-in-node-name
15609        @@ContentType: DISCore|String
15610      @enDesc:
15611        If a name contains a character that is not a name character
15612        in the XML version in use, or if the first character of a name
15613        is not a name start character in the XML version in use.
15614    
15615          {NOTE::
15616            When an invalid character is encountered in an entity
15617            where a <CODE::Name> is expected, what type of error
15618            is issued is implementation dependent: <Q::xp|wf-syntax-error>,
15619            <Q::xp|wf-pi-target-is-xml> or other error might be reported.
15620          }
15621    
15622          {NOTE::
15623            This error type is defined in DOM Level 3 Core and Load and Save
15624            modules and redefined herein for the purpose of XML parser.
15625          }
15626      @enMufDef:
15627        Character %character-code-point
15628        (v => {<Q::xp|character-number>}); is not allowed in name
15629      @ecore:hasParameter: xp|error-token
15630      @ecore:hasParameter:
15631        @@@: xp|character-number
15632        @@enDesc:
15633          The code position of the character being referred.
15634      @ecore:hasParameter:
15635        @@@: infoset|version
15636        @@enDesc:
15637          The version of XML in use.
15638    
15639    WFErrDef:
15640      @QName: xp|wf-pes-in-internal-subset
15641      @enDesc:
15642        In the internal subset of the DTD, parameter entity references
15643        <kwd:MUST-NOT> occur within markup declarations.
15644      @enMufDef:
15645        Parameter entity reference |%percent;%param (name => {<Q::xp|name>});;|
15646        cannot occur within a markup declaration
15647      @ecore:hasParameter: xp|error-token
15648      @ecore:hasParameter:
15649        @@@: xp|name
15650        @@enDesc:
15651          The name of the parameter entity.
15652    
15653    WFErrDef:
15654    @QName: xp|wf-element-type-match    @QName: xp|wf-element-type-match
   @DOMCore:severity: DOMCore|SEVERITY_FATAL_ERROR  
15655    @enDesc:    @enDesc:
15656      The <CODE::Name> in an element's end-tag must match the element type      The <CODE::Name> in an element's end-tag must match the element type
15657      in the start-tag.      in the start-tag.
# Line 4480  WFErrDef: Line 15674  WFErrDef:
15674    
15675  WFErrDef:  WFErrDef:
15676    @QName: xp|wf-unique-att-spec    @QName: xp|wf-unique-att-spec
   @DOMCore:severity: DOMCore|SEVERITY_ERROR  
15677    @enDesc:    @enDesc:
15678      An attribute name <kwd:MUST-NOT> appear more than once in      An attribute name <kwd:MUST-NOT> appear more than once in
15679      the same start-tag or empty-element tag.      the same start-tag or empty-element tag.
# Line 4494  WFErrDef: Line 15687  WFErrDef:
15687        The name of the attribute.        The name of the attribute.
15688    
15689  WFErrDef:  WFErrDef:
15690      @QName: xp|wf-no-external-entity-references
15691      @enDesc:
15692        Attribute values <kwd:MUST-NOT> contain direct or indirect
15693        entity references to external entities.
15694      @enMufDef:
15695        External entity |%p (name => {<Q::xp|name>});| is referenced
15696        in an attribute value literal
15697      @ecore:hasParameter: xp|error-token
15698      @ecore:hasParameter:
15699        @@@: xp|name
15700        @@enDesc:
15701          The name of the entity.
15702    
15703    WFErrDef:
15704      @QName: xp|wf-no-lt-in-attribute-values
15705      @enDesc:
15706        The replacement text of any entity referred to directly or indirectly
15707        in an attribute value literal <kwd:MUST-NOT> contain a
15708        <CHAR::LESS-THAN SIGN>.
15709      @enMufDef:
15710        Entity replacement text cannot contain a
15711        |LESS-THAN SIGN| since it is referenced from an attribute
15712        value literal
15713      @ecore:hasParameter: xp|error-token
15714    
15715    WarnDef:
15716      @QName: xp|warning-attribute-definition-ignored
15717      @enDesc:
15718        An attribute definition is ignored because the same attribute
15719        is declared before.
15720      @enMufDef:
15721        Attribute definition for |%p (name => {<Q::xp|name>});| is ignored
15722      @ecore:hasParameter: xp|error-token
15723      @ecore:hasParameter:
15724        @@@: xp|name
15725        @@enDesc:
15726          The name of the attribute.
15727    
15728    WFErrDef:
15729    @QName: xp|wf-legal-character    @QName: xp|wf-legal-character
   @DOMCore:severity: DOMCore|SEVERITY_ERROR  
15730    @enDesc:    @enDesc:
15731      Characters referred to using character references <kwd:MUST>      Characters referred to using character references <kwd:MUST>
15732      match the production for <CODE::Char>.      match the production for <CODE::Char>.
# Line 4513  WFErrDef: Line 15744  WFErrDef:
15744        The parent node in which the character reference has        The parent node in which the character reference has
15745        occurred, if available.        occurred, if available.
15746    
15747    WFErrDef:
15748      @QName: xp|wf-entity-declared
15749      @enDesc:
15750        {P:: In a document
15751    
15752           - without any DTD,
15753    
15754           - with only an internal DTD subset that contains no parameter
15755             entity references, or
15756    
15757           - with <XML::standalone="yes">,
15758    
15759        for an entity reference that does not occur within the external
15760        subset or a parameter entity, the <CODE::Name> given in the
15761        entity reference <kwd:MUST> match the <CODE::Name> does not
15762        occur within the external subset or a parameter entity,
15763        except that five predefined character entities need not
15764        be declared.  The declaration of a general entity <kwd:MUST>
15765        precede any reference to it which appears in a default value
15766        in an attribute list declaration.
15767      @enMufDef:
15768        Entity |%p (name => {<Q::xp|name>});| must be declared
15769        in the internal subset
15770      @ecore:hasParameter: xp|error-token
15771      @ecore:hasParameter:
15772        @@@: xp|name
15773        @@enDesc:
15774          The name of the entity.
15775    
15776    WFErrDef:
15777      @QName: xp|wf-parsed-entity
15778      @enDesc:
15779        An entity reference <kwd:MUST-NOT> contain the name of an
15780        unparsed entity.
15781      @enMufDef:
15782        Entity |%p (name => {<Q::xp|name>});| is an unparsed entity
15783      @ecore:hasParameter: xp|error-token
15784      @ecore:hasParameter:
15785        @@@: xp|name
15786        @@enDesc:
15787          The name of the entity.
15788    
15789    WFErrDef:
15790      @QName: xp|wf-no-recursion
15791      @enDesc:
15792        A parsed entity <kwd:MUST-NOT> contain a recursive reference
15793        to itself, either directly or indirectly.
15794      @enMufDef:
15795        Entity |%p (name => {<Q::xp|name>});| is recursively referenced
15796      @ecore:hasParameter: xp|error-token
15797      @ecore:hasParameter:
15798        @@@: xp|name
15799        @@enDesc:
15800          The name of the entity.
15801    
15802    FatalErrDef:
15803      @QName: xp|fatal-xml11-end-of-line-in-xml-declaration
15804      @enDesc:
15805        An end-of-line character <CODE::U+0085> or <CODE::U+2028> is appeared
15806        within an XML declaration or text declaration.
15807      @enMufDef:
15808        End-of-line character %character-code-point
15809        (v => {<Q::xp|character-number>}); cannot be used within the
15810        XML or text declaration
15811      @ecore:hasParameter:
15812        @@@: xp|character-number
15813        @@enDesc:
15814          The code position of the end-of-line character.
15815    
15816    ErrDef:
15817      @QName: xp|error-internal-predefined-entity
15818      @enDesc:
15819        A general entity declaration whose <CODE::Name> equals to one
15820        of predefined entities <kwd:MUST> declare it as an internal entity.
15821      @enMufDef:
15822        Entity |%p (name => {<Q::xp|name>});| must be declared as an
15823        internal entity
15824      @ecore:hasParameter: xp|error-token
15825      @ecore:hasParameter:
15826        @@@: xp|name
15827        @@enDesc:
15828          The name of the entity.
15829    
15830    ErrDef:
15831      @QName: xp|error-malformed-predefined-entity
15832      @enDesc:
15833        A general entity declaration whose <CODE::Name> equals to one
15834        of predefined entities <kwd:MUST> declare it as a data
15835        character for the entity.
15836      @enMufDef:
15837        Entity declaration for |%p (name => {<Q::xp|name>});|
15838        (replacement text |%p (name => {<Q::xp|replacement-text>});|) is malformed
15839      @ecore:hasParameter: xp|error-token
15840      @ecore:hasParameter:
15841        @@@: xp|name
15842        @@enDesc:
15843          The name of the entity.
15844      @ecore:hasParameter:
15845        @@@: xp|replacement-text
15846        @@enDesc:
15847          The replacement text of the entity declaration.
15848    
15849    WarnDef:
15850      @QName: xp|warning-entity-declaration-ignored
15851      @enDesc:
15852        An entity declaration is ignored because the same entity
15853        is declared before.
15854      @enMufDef:
15855        Entity declaration for |%p (name => {<Q::xp|name>});| is ignored
15856      @ecore:hasParameter: xp|error-token
15857      @ecore:hasParameter:
15858        @@@: xp|name
15859        @@enDesc:
15860          The name of the entity.
15861    
15862    VCErrDef:
15863      @QName: xp|vc-unique-notation-name
15864      @enDesc:
15865        A <CODE::Name> <kwd:MUST-NOT> be declared in more than
15866        one notation declaration.
15867      @enMufDef:
15868        Notation |%p (name => {<Q::xp|name>});| is already declared
15869      @ecore:hasParameter: xp|error-token
15870      @ecore:hasParameter:
15871        @@@: xp|name
15872        @@enDesc:
15873          The name of the notation.
15874    
15875    WarnDef:
15876      @QName: xp|warning-entity-declaration-not-processed
15877      @enDesc:
15878        An entity declaration is not processed because there
15879        is a reference to parameter entity before the declaration
15880        and the entity is not read.
15881      @enMufDef:
15882        Entity declaration for |%p (name => {<Q::xp|name>});| is not processed
15883      @ecore:hasParameter: xp|error-token
15884      @ecore:hasParameter:
15885        @@@: xp|name
15886        @@enDesc:
15887          The name of the entity.
15888    
15889    WarnDef:
15890      @QName: xp|warning-attribute-definition-not-processed
15891      @enDesc:
15892        An attribute definition is not processed because there
15893        is a reference to parameter entity before the declaration
15894        and the entity is not read.
15895      @enMufDef:
15896        Attribute definition for |%p (name => {<Q::xp|name>});| is not processed
15897      @ecore:hasParameter: xp|error-token
15898      @ecore:hasParameter:
15899        @@@: xp|name
15900        @@enDesc:
15901          The name of the attribute.
15902    
15903    NSFatalErrDef:
15904      @QName: xp|nswf-legal-ncname
15905      @enDesc:
15906        <CODE::Name>s other than element type names and attribute names
15907        <kwd:MUST> be <CODE::NCName>s.
15908      @enMufDef:
15909        <CODE::Name> |%p (name => {<Q::xp|name>});| is not an <CODE::NCName>
15910      @ecore:hasParameter: xp|error-token
15911      @ecore:hasParameter:
15912        @@@: xp|name
15913        @@enDesc:
15914          The name.
15915      @ecore:hasParameter:
15916        @@@: infoset|version
15917        @@enDesc:
15918          The version of XML in use.
15919    
15920    NSFatalErrDef:
15921      @QName: xp|nswf-legal-qname
15922      @enDesc:
15923        An element type name or an attribute name <kwd:MUST> be a
15924        <CODE::QName>.
15925      @enMufDef:
15926        <CODE::Name> |%p (name => {<Q::xp|name>});| is not a <CODE::QName>
15927      @ecore:hasParameter: xp|error-token
15928      @ecore:hasParameter:
15929        @@@: xp|name
15930        @@enDesc:
15931          The name.
15932      @ecore:hasParameter:
15933        @@@: infoset|version
15934        @@enDesc:
15935          The version of XML in use.
15936    
15937    NSCErrDef:
15938      @QName: xp|nsc-reserved-prefix-xml
15939      @enDesc:
15940        The prefix <XML::xml> <kwd:MUST-NOT> be undeclared or bound
15941        to any namespace name other than <URI::http://www.w3.org/XML/1998/namespace>.
15942      @enMufDef:
15943        Namespace prefix |xml| cannot be bound to namespace
15944        name |%p (name => {<Q::infoset|namespaceName>});|
15945      @ecore:hasParameter: xp|error-token
15946      @ecore:hasParameter:
15947        @@@: infoset|prefix
15948        @@enDesc:
15949          The namespace prefix.
15950      @ecore:hasParameter:
15951        @@@: infoset|namespaceName
15952        @@enDesc:
15953          The namespace name bound to or an empty string for undeclaring.
15954    
15955    NSCErrDef:
15956      @QName: xp|nsc-reserved-namespace-name-xml
15957      @enDesc:
15958        Namespace prefixes other than <XML::xml> <kwd:MUST-NOT> be bound
15959        to the namespace name <URI::http://www.w3.org/XML/1998/namespace>.
15960      @enMufDef:
15961        Namespace prefix |%p (name => {<Q::infoset|prefix>});| cannot be
15962        bound to namespace name |http://www.w3.org/XML/1998/namespace|
15963      @enImplNote:
15964        The XMLNames spec does not prohibit the URI bound to
15965        the default namespace (!)
15966      @ecore:hasParameter: xp|error-token
15967      @ecore:hasParameter:
15968        @@@: infoset|prefix
15969        @@enDesc:
15970          The namespace prefix or <DOM::null> for default namespace.
15971      @ecore:hasParameter:
15972        @@@: infoset|namespaceName
15973        @@enDesc:
15974          The namespace name bound to.
15975    
15976    NSCErrDef:
15977      @QName: xp|nsc-reserved-prefix-xmlns
15978      @enDesc:
15979        The prefix <XML::xmlns> <kwd:MUST-NOT> be declared or undeclared.
15980      @enMufDef:
15981        Namespace prefix |xmlns| cannot be declared or undeclared
15982      @ecore:hasParameter: xp|error-token
15983      @ecore:hasParameter:
15984        @@@: infoset|prefix
15985        @@enDesc:
15986          The namespace prefix.
15987      @ecore:hasParameter:
15988        @@@: infoset|namespaceName
15989        @@enDesc:
15990          The namespace name bound to or an empty string for undeclaring.
15991    
15992    NSCErrDef:
15993      @QName: xp|nsc-reserved-namespace-name-xmlns
15994      @enDesc:
15995        Namespace prefixes <kwd:MUST-NOT> be bound
15996        to the namespace name <URI::http://www.w3.org/2000/xmlns/>.
15997      @enMufDef:
15998        Namespace prefix |%p (name => {<Q::infoset|prefix>});| cannot be
15999        bound to namespace name |http://www.w3.org/2000/xmlns/|
16000      @enImplNote:
16001        The XMLNames spec does not prohibit the URI bound to
16002        the default namespace (!)
16003      @ecore:hasParameter: xp|error-token
16004      @ecore:hasParameter:
16005        @@@: infoset|prefix
16006        @@enDesc:
16007          The namespace prefix or <DOM::null> for default namespace.
16008      @ecore:hasParameter:
16009        @@@: infoset|namespaceName
16010        @@enDesc:
16011          The namespace name bound to.
16012    
16013    NSCErrDef:
16014      @QName: xp|nsc-prefix-declared
16015      @enDesc:
16016        A namespace prefix other than <XML::xml> or <XML::xmlns>
16017        <kwd:MUST> have been declared in a namespace declaration
16018        attribute in either the start or empty element tag of the
16019        element where the prefix is used or in an ancestor
16020        element.  Furthermore, the attribute value in the innermost
16021        such declaration <kwd:MUST-NOT> be an empty string.
16022      @enMufDef:
16023        Namespace prefix |%p (name => {<Q::infoset|prefix>});| in
16024        qualified name |%p (name => {<Q::xp|name>});| is not declared
16025      @ecore:hasParameter: xp|error-token
16026      @ecore:hasParameter:
16027        @@@: infoset|prefix
16028        @@enDesc:
16029          The namespace prefix.
16030      @ecore:hasParameter:
16031        @@@: xp|name
16032        @@enDesc:
16033          The qualified name.
16034    
16035    NSFatalErrDef:
16036      @QName: xp|nswf-empty-namespace-name
16037      @enDesc:
16038        If the XML version of the document is 1.0 and the
16039        normalized value of the prefixed namespace declaration attribute is empty.
16040      @enMufDef:
16041        Namespace |%p (name => {<Q::infoset|prefix>});| cannot be
16042        undeclared in XML 1.0
16043      @ecore:hasParameter: xp|error-token
16044      @ecore:hasParameter:
16045        @@@: infoset|prefix
16046        @@enDesc:
16047          The namespace prefix.
16048      @ecore:hasParameter:
16049        @@@: infoset|namespaceName
16050        @@enDesc:
16051          An empty string.
16052    
16053    NSFatalErrDef:
16054      @QName: xp|nswf-unique-att-spec-expanded-name
16055      @enDesc:
16056        No element may have two attributes that have qualified name
16057        with the same local part and with namespace prefixes
16058        that have been bound to namespace names that are identical.
16059      @enMufDef:
16060        Attribute |%p (name => {<Q::infoset|localName>});| in
16061        namespace |%p (name => {<Q::infoset|namespaceName>});| is
16062        attached to the same element more than once (as
16063        |%p (name => {<Q::xp|name>});| and
16064        |%p (name => {<Q::xp|another-attribute-name>});|)
16065      @enImplNote:
16066        The XMLNames spec doesn't mention default attributes
16067        for this constraint...
16068      @ecore:hasParameter: xp|error-token
16069      @ecore:hasParameter:
16070        @@@: infoset|localName
16071        @@enDesc:
16072          The local part of the attribute.
16073      @ecore:hasParameter:
16074        @@@: infoset|namespaceName
16075        @@enDesc:
16076          The namespace URI of the attribute.
16077      @ecore:hasParameter:
16078        @@@: xp|name
16079        @@enDesc:
16080          The name, i.e. a qualified name consist of <Q::infoset:localName>
16081          and <Q::infoset:namespaceName> parameter values.
16082      @ecore:hasParameter:
16083        @@@: xp|another-attribute-name
16084        @@enDesc:
16085          Another attribute qualified name expanded to the same expanded name
16086          as <Q::xp|name>.
16087    
16088    XWParam:
16089      @QName: xp|another-attribute-name
16090    
16091    XWParam:
16092      @QName: xp|replacement-text
16093      @enDesc:
16094        The replacement text.
16095    
16096  XWParam:  XWParam:
16097    @QName: xp|error-token    @QName: xp|error-token
16098    @enDesc:    @enDesc:
# Line 4570  ResourceDef: Line 16150  ResourceDef:
16150    @AliasFor: DOMCore|DOMImplementation    @AliasFor: DOMCore|DOMImplementation
16151    @For: ManakaiDOM|DOM    @For: ManakaiDOM|DOM
16152    
16153    ResourceDef:
16154      @QName: LSInput
16155      @AliasFor: DOMLS|LSInput
16156      @For: ManakaiDOM|DOM
16157    
16158    ResourceDef:
16159      @QName: LSParser
16160      @AliasFor: DOMLS|LSParser
16161      @For: ManakaiDOM|DOM
16162    
16163  ElementTypeBinding:  ElementTypeBinding:
16164    @Name: Attr    @Name: Attr
16165    @ElementType:    @ElementType:
# Line 4629  ElementTypeBinding: Line 16219  ElementTypeBinding:
16219      @@ContentType: lang|Perl      @@ContentType: lang|Perl
16220    
16221  ElementTypeBinding:  ElementTypeBinding:
16222      @Name: PerlDefC
16223      @ElementType:
16224        dis:Def
16225      @ShadowContent:
16226        @@ContentType: lang|Perl
16227    
16228    ElementTypeBinding:
16229    @Name: PropDef    @Name: PropDef
16230    @ElementType:    @ElementType:
16231      dis:ResourceDef      dis:ResourceDef
# Line 4712  ClsDef: Line 16309  ClsDef:
16309          @@@@PerlDef:          @@@@PerlDef:
16310            my $pos = $o-><AG::DOMCore|DOMError.location>            my $pos = $o-><AG::DOMCore|DOMError.location>
16311                        -><AG::DOMCore|DOMLocator.utf32Offset>;                        -><AG::DOMCore|DOMLocator.utf32Offset>;
16312            if ($pos > -1) {            my $src = $o->{<H::ecore|object>}->{entity}->[-1]->{reptxt};
16313              my $src = $o->{<H::ecore|object>}->{entity}->[-1]->{reptxt};            if (defined $src and $pos > -1) {
16314              my $start = $pos;              my $start = $pos;
16315              $start = rindex ($$src, "\x0A", $start - 1) for 0..2;              $start = rindex ($$src, "\x0A", $start - 1) for 0..2;
16316              $start++;              $start++;
# Line 4751  ClsDef: Line 16348  ClsDef:
16348          @@@@PerlDef:          @@@@PerlDef:
16349            $p->{-result} = sprintf 'U+%04X', $o->{$p->{v}};            $p->{-result} = sprintf 'U+%04X', $o->{$p->{v}};
16350  ##XMLParserExceptionFormatter  ##XMLParserExceptionFormatter
16351    
16352    ElementTypeBinding:
16353      @Name: CParam
16354      @ElementType:
16355        dis:ResourceDef
16356      @ShadowContent:
16357        @@rdf:type:
16358          @@@@: c|DOMConfigurationParameter
16359          @@@For: ManakaiDOM|DOM
16360        @@rdf:type:
16361          @@@@: DISSource|ResourceProperty
16362          @@@For: =ManakaiDOM|all
16363        @@For: ManakaiDOM|DOM3
16364        @@For: =ManakaiDOM|all
16365        @@subsetOf:
16366          @@@@: c|anyDOMConfigurationParameter
16367          @@@For: =ManakaiDOM|all
16368        @@multipleProperties:
16369          @@@@: DISCore|Single
16370          @@@For: =ManakaiDOM|all
16371    
16372    ElementTypeBinding:
16373      @Name: CParamApp
16374      @ElementType:
16375        dis:ResourceDef
16376      @ShadowContent:
16377        @@rdf:type:
16378          @@@@: c|DOMConfigurationParameterApplication
16379          @@@For: ManakaiDOM|DOM
16380        @@For: ManakaiDOM|DOM3
16381    
16382    ElementTypeBinding:
16383      @Name: boolCParam
16384      @ElementType:
16385        dis:ResourceDef
16386      @ShadowContent:
16387        @@DISCore:resourceType:
16388          @@@@: c|DOMConfigurationParameter
16389          @@@For: ManakaiDOM|DOM
16390        @@DISCore:resourceType:
16391          @@@@: DISSource|ResourceProperty
16392          @@@For: =ManakaiDOM|all
16393        @@For: ManakaiDOM|DOM3
16394        @@For: =ManakaiDOM|all
16395        @@Type: idl|boolean||ManakaiDOM|all
16396        @@subsetOf:
16397          @@@@: c|anyDOMConfigurationParameter
16398          @@@For: =ManakaiDOM|all
16399        @@multipleProperties:
16400          @@@@: DISCore|Single
16401          @@@For: =ManakaiDOM|all
16402        @@dataType:
16403          @@@@: DISCore|Boolean
16404          @@@For: =ManakaiDOM|all
16405    
16406    CParamApp:
16407      @QName: xml-id
16408      @c:domConfigurationParameter: cfg|xml-id
16409      @c:targetType: xp|ManakaiXMLParser
16410      @TrueCase:
16411        @@c:isSupported: 1
16412      @FalseCase:
16413        @@c:isSupported: 1
16414    
16415    CParamApp:
16416      @QName: error-handler
16417      @c:domConfigurationParameter: c|error-handler
16418      @c:targetType: xp|ManakaiXMLParser
16419    
16420    boolCParam:
16421      @QName: cfg|entity-replacement-tree
16422      @DOMLS:lsKey:
16423        @@@: erep
16424        @@For: =ManakaiDOM|all
16425      @Type: idl|boolean||ManakaiDOM|all
16426      @c:targetType: xp|ManakaiXMLParser
16427      @IsSupportRequired: 1
16428      @c:isSupported: 1
16429      @TrueCase:
16430        @@c:isSupported: 1
16431        @@enDesc:
16432          The parser <kwd:MUST> cnstruct the replacement subtree of
16433          a general parsed <IF::x|Entity> node if the replacement text
16434          for the node is available.
16435    
16436          If this value is set to the parameter, then a fatal error
16437          might be reported even if the entire document is well-formed
16438          in case a general parsed entity has replacement text that is
16439          not well-formed when evaluated as if it has been referenced
16440          in the content of an element, except that undeclared namespace prefixes
16441          do not result in namespace well-formedness error.
16442      @FalseCase:
16443        @@IsDefault: 1
16444        @@c:isSupported: 1
16445        @@IsSupportRequired: 1
16446        @@enDesc:
16447          The parser don't have to construct <IF::x|Entity> replacement
16448          subtrees.
16449    
16450      @Test:
16451        @@QName: cfg.entity-replacement-tree.test
16452        @@PerlDef:
16453          my $xp;
16454          __CODE{createParserForTest:: $xp => $xp}__;
16455          my $cfg = $xp-><AG::LSInput.domConfig>;
16456    
16457          my $pname = <Q::cfg|entity-replacement-tree>;
16458    
16459          $test->id ('default.false');
16460          $test->assert_false ($cfg-><M::c|DOMConfiguration.getParameter> ($pname));
16461      
16462          $test->id ('false.to.true');
16463          $cfg-><M::c|DOMConfiguration.setParameter> ($pname => true);
16464          $test->assert_false ($cfg-><M::c|DOMConfiguration.getParameter> ($pname));
16465          
16466          $test->id ('true.to.false');
16467          $cfg-><M::c|DOMConfiguration.setParameter> ($pname => false);
16468          $test->assert_false ($cfg-><M::c|DOMConfiguration.getParameter> ($pname));
16469    
16470          $test->id ('reset');
16471          $cfg-><M::c|DOMConfiguration.setParameter> ($pname => true);
16472          $cfg-><M::c|DOMConfiguration.setParameter> ($pname => null);
16473          $test->assert_false ($cfg-><M::c|DOMConfiguration.getParameter> ($pname));
16474    
16475    CParam:
16476      @QName: xp|ls-input-to-input-file
16477      @DOMLS:lsKey:
16478        @@@: i2i
16479        @@For: =ManakaiDOM|all
16480      @Type: ManakaiDOMLSInputToInputFile
16481      @c:targetType: xp|ManakaiXMLParser
16482      @IsSupportRequired: 1
16483      @c:isSupported: 1
16484      @enDesc:
16485        An <IF::LSInput> to Perl filehandle converter.
16486    
16487      @Method:
16488        @@rdf:type: c|DOMConfigurationParameterDefaultGetter
16489        @@Param:
16490          @@@Name: name
16491          @@@Type: DOMString
16492          @@@dis:actualType: c|DOMConfigurationParameterName
16493          @@@enDesc: The parameter name.
16494        @@Return:
16495          @@@Type: ManakaiDOMLSInputToInputFile
16496          @@@enDesc:
16497            The default resolver.
16498          @@@PerlDefC:
16499            $r = sub {
16500              my ($self, $input, $errorHandler) = @_;
16501              ## As defined in DOM Level 3 LS |LSInput| interface
16502    
16503              my $r = {};
16504    
16505              __DEEP{
16506    
16507                FH: {
16508                  ## 1. |characterStream|
16509                  my $v = $input-><AG::LSInput.characterStream>;
16510                  if (defined $v) {
16511                    $r->{filehandle} = $v;
16512                    last FH;
16513                  }
16514    
16515                  ## 2. |byteStream|
16516                  $v = $input-><AG::LSInput.byteStream>;
16517                  if (defined $v) {
16518                    ## TODO: Support byte filehandle
16519                      ## |encoding|
16520                      ## TODO: How to guess?
16521                    return null;
16522                  }
16523    
16524                  ## 3. |stringData|
16525                  $v = $input-><AG::LSInput.stringData>;
16526                  if (defined $v) {
16527                    require IO::String;
16528                    $r->{filehandle} = IO::String->new ($v);
16529                    last FH;
16530                  }
16531    
16532                  ## 4. |systemId|
16533                    ## TODO:
16534                      ## resolve relative URI
16535                      ## open
16536                      ## set document_uri
16537                  
16538                  ## 5. |publicId|
16539                  ##   The default resolver does not support only-|publicId| input.
16540    
16541                  return null;
16542                } # FH
16543    
16544                DURI: {
16545                  last DURI if defined $r->{document_uri};
16546                  
16547                  my $v = $input-><AG::LSInput.systemId>;
16548                  if (defined $v) {
16549                    $r->{base_uri} = $input-><AG::LSInput.baseURI>
16550                      unless defined $r->{base_uri};
16551                    if (defined $r->{base_uri}) {
16552                      $r->{document_uri}
16553                        = <ClassM::urigen|ManakaiURIReference.new> (\$v)
16554                            -><M::urigen|URIReference.getAbsoluteReference>
16555                                ($r->{base_uri})
16556                            -><AG::urigen|URIReference.uriReference>;
16557                    } else {
16558                      $r->{document_uri} = $v;
16559                    }
16560                    last DURI;
16561                  }
16562    
16563                  ## TODO: pubid -> pubid URN -> document_uri
16564                } # DURI
16565    
16566                BURI: {
16567                  last BURI if defined $r->{base_uri};
16568    
16569                  my $v = $input-><AG::LSInput.baseURI>;
16570                  if (defined $v) {
16571                    $r->{base_uri} = $v;
16572                    last BURI;
16573                  }
16574    
16575                  if (defined $r->{document_uri}) {
16576                    $r->{base_uri} = $r->{document_uri};
16577                  }
16578                } # BURI
16579    
16580              }__;
16581    
16582              ## ISSUE: Is |certifiedText| required by parsers?
16583    
16584              return $r;
16585            };
16586      @Method:
16587        @@rdf:type: c|DOMConfigurationParameterSetter
16588        @@Param:
16589          @@@Name: name
16590          @@@Type: DOMString
16591          @@@dis:actualType: c|DOMConfigurationParameterName
16592          @@@enDesc: The parameter name.
16593        @@Param:
16594          @@@Name: value
16595          @@@Type: DOMMain|DOMUserData
16596          @@@dis:actualType: ManakaiDOMLSInputToInputFile
16597          @@@enDesc: The new value.
16598        @@Return:
16599          @@@Type: idl|void||ManakaiDOM|all
16600          @@@PerlDefC:
16601            $self->[1]->{<H::xp|ls-input-to-input-file>} = $value;
16602        @@enImplNote:
16603          Implied input processor converts non-blessed code references
16604          into a <Class::ManakaiDOMLSInputToInputFile> object.
16605      @Method:
16606        @@rdf:type: c|DOMConfigurationParameterChecker
16607        @@Param:
16608          @@@Name: name
16609          @@@Type: DOMString
16610          @@@dis:actualType: c|DOMConfigurationParameterName
16611          @@@enDesc: The parameter name.
16612        @@Param:
16613          @@@Name: value
16614          @@@Type: DOMMain|DOMUserData
16615          #@@@dis:actualType: ManakaiDOMLSInputToInputFile
16616          @@@enDesc: The new value.
16617        @@Return:
16618          @@@Type: idl|boolean||ManakaiDOM|all
16619          @@@PerlDefC:
16620            $r = UNIVERSAL::isa ($value, 'CODE') or
16621                 UNIVERSAL::isa ($value, <ClassName::ManakaiDOMLSInputToInputFile>);
16622    
16623        @@Test:
16624          @@@QName: cp.ls-input-to-input-file.test
16625          @@@PerlDefC:
16626            my $xp;
16627            __CODE{createParserForTest:: $xp => $xp}__;
16628            my $cfg = $xp-><AG::LSInput.domConfig>;
16629    
16630            my $cp = <Q::xp|ls-input-to-input-file>;
16631            
16632            $test->id ('default');
16633            my $default = $cfg-><M::c|DOMConfiguration.getParameter> ($cp);
16634            $test->assert_isa ($default,
16635                               <ClassName::ManakaiDOMLSInputToInputFile>);
16636    
16637            $test->id ('set');
16638            my $sub1 = sub { };
16639            $cfg-><M::c|DOMConfiguration.setParameter> ($cp => $sub1);
16640            my $sub2 = $cfg-><M::c|DOMConfiguration.getParameter> ($cp);
16641            $test->assert_isa ($sub2, <ClassName::ManakaiDOMLSInputToInputFile>);
16642            $test->assert_equals ($sub2, $sub1);
16643    
16644            $test->id ('reset');
16645            $cfg-><M::c|DOMConfiguration.setParameter> ($cp => null);
16646            my $sub3 = $cfg-><M::c|DOMConfiguration.getParameter> ($cp);
16647            $test->assert_isa ($sub3, <ClassName::ManakaiDOMLSInputToInputFile>);
16648            $test->assert_equals ($sub3, $default);
16649    
16650        @@Test:
16651          @@@QName: cp.ls-input-to-input-file.default.test
16652          @@@PerlDefC:
16653            my $xp;
16654            __CODE{createParserForTest:: $xp => $xp}__;
16655            my $cfg = $xp-><AG::LSInput.domConfig>;
16656            my $cp = <Q::xp|ls-input-to-input-file>;
16657            my $default = $cfg-><M::c|DOMConfiguration.getParameter> ($cp);
16658    
16659            my $err = sub {}; # dummy error handler
16660    
16661            my $cs = \*STDOUT; # dummy input
16662    
16663            $test->id ('cs.sysid');
16664            my $r1 = $default->resolve_ls_input ({
16665                       character_stream => $cs,
16666                       system_id => q<http://example.com/sysid>,
16667                     }, $err);
16668            $test->assert_equals
16669                     ($r1->document_uri, q<http://example.com/sysid>);
16670            $test->assert_equals
16671                     ($r1->base_uri, q<http://example.com/sysid>);
16672    
16673            $test->id ('cs.baseuri.sysid');
16674            my $r1 = $default->resolve_ls_input ({
16675                       character_stream => $cs,
16676                       system_id => q<sysid>,
16677                       base_uri => q<http://example.com/>,
16678                     }, $err);
16679            $test->assert_equals
16680                     ($r1->document_uri, q<http://example.com/sysid>);
16681            $test->assert_equals
16682                     ($r1->base_uri, q<http://example.com/>);
16683    ##ls-input-to-input-file
16684    
16685    ClsDef:
16686      @ClsQName: ManakaiDOMLSInputToInputFile
16687      @enDesc:
16688        An <Class::ManakaiDOMLSInputToInputFile> object is used to covert
16689        a <IF::LSInput> object into a Perl filehandle.
16690    
16691        {ISSUE::
16692          In which module this class should be placed?
16693    
16694          Better interface name?
16695        }
16696    
16697      @enDesc:
16698        @@ddid: perl
16699        @@ForCheck: ManakaiDOM|ManakaiDOM
16700        @@@:
16701          For Perl binding, any parameter that accepts
16702          a <Class::ManakaiDOMLSInputToInputFile> would also accept a Perl code
16703          reference (subroutine reference).  The code reference
16704          will be blessed as a <Class::ManakaiDOMLSInputToInputFile> whose
16705          <M::ManakaiDOMLSInputToInputFile.resolveLSInput> method invokes the code.
16706    
16707      @ResourceDef:
16708        @@rdf:type: DISLang|InputProcessor
16709        @@rdf:type: DISLang|OutputProcessor
16710        @@PerlDef:
16711          $INPUT = bless $INPUT, <ClassName::ManakaiDOMLSInputToInputFile>
16712            if ref $INPUT eq 'CODE';
16713    
16714      @Method:
16715        @@Name: resolveLSInput
16716        @@enDesc:
16717          Converts a <IF::LSInput> into a Perl filehandle.
16718        @@Param:
16719          @@@Name: input
16720          @@@Type: LSInput
16721          @@@enDesc:
16722            The input.
16723        @@Param:
16724          @@@Name: errorHandler
16725          @@@Type: c|DOMErrorHandler
16726          @@@enDesc:
16727            An error handler.  If the method encounters an error
16728            or warning, it <kwd:MAY> notify it to application
16729            via this handler.
16730        @@Return:
16731          @@@Type: ManakaiDOMInputFile
16732          @@@enDesc:
16733            A <Class::ManakaiDOMInputFile> object created from <P::input>.
16734          @@@nullCase:
16735            @@@@enDesc:
16736              If the method was unable to resolve the <P::input>.
16737    
16738              {ISSUE::
16739                Should we allow the method to throw exceptions?
16740              }
16741          @@@PerlDef:
16742            __DEEP{
16743              $r = $self->($self, $input, $errorHandler);
16744            }__;
16745          @@@enImplNote:
16746            Notet that the input / output processor for <CODE::$input>
16747            and return value might or might not be inserted in
16748            the <Perl::$self> code.
16749    ##LSInputToInputFile
16750    
16751    ClsDef:
16752      @ClsQName: ManakaiDOMInputFile
16753      @enDesc:
16754        A set of information on the input, including filehandle.
16755    
16756      @enDesc:
16757        @@ddid: perl
16758        @@ForCheck: ManakaiDOM|ManakaiDOM
16759        @@@:
16760          For Perl binding, any parameter that accepts
16761          a <Class::ManakaiDOMInputFile> would also accept a Perl hash reference.
16762          If a hash reference is given to parameter that expects
16763          a <Class::ManakaiDOMInputFile> object, then it
16764          bless the hash with the class.
16765    
16766          Each attributes defined
16767          in the class is associated to the hash value with the
16768          key equals to the attribut name.  Each method defined in
16769          the class will invoke the code reference retrieved
16770          from the hash by the key equals to the method name.
16771    
16772          If there is no value in the hash for an attribute,
16773          then its value is <DOM::null>.
16774    
16775      @ResourceDef:
16776        @@rdf:type: DISLang|InputProcessor
16777        @@rdf:type: DISLang|OutputProcessor
16778        @@PerlDef:
16779          $INPUT = bless $INPUT, <ClassName::ManakaiDOMInputFile>
16780            if ref $INPUT eq 'HASH';
16781    
16782      @Attr:
16783        @@Name: filehandle
16784        @@Type: DISPerl|filehandle||ManakaiDOM|all
16785        @@enDesc:
16786          The input filehandle.
16787    
16788          It <kwd:MUST> be an <Perl::open>ed (and not <Perl::close>d)
16789          filehandle.  Note that
16790          it does not have to be associated with an actual file
16791          in the local file system.
16792    
16793          It <kwd:MUST> return a character (rather than byte)
16794          by <Perl::getc>.
16795        @@Get:
16796          @@@PerlDef: $r = $self->{filehandle};
16797        @@Set:
16798          @@@PerlDef: $self->{filehandle} = $given;
16799    
16800      @Attr:
16801        @@Name: baseURI
16802        @@enDesc:
16803          The base URI of the input.
16804    
16805          It <kwd:MUST> be an absolute DOM URI or <DOM::null>.
16806          Otherwise, the result is undefined.
16807        @@Type: DOMString
16808        @@nullCase:
16809          @@@enDesc:
16810            If the base URI is not available.
16811        @@Get:
16812          @@@PerlDef: $r = $self->{base_uri};
16813        @@Set:
16814          @@@PerlDef: $self->{base_uri} = $given;
16815    
16816      @Attr:
16817        @@Name: documentURI
16818        @@enDesc:
16819          The URI of the document.
16820    
16821          It <kwd:MUST> be an absolute DOM URI or <DOM::null>.
16822          Otherwise, the result is undefined.
16823        @@Type: DOMString
16824        @@nullCase:
16825          @@@enDesc:
16826            If the document URI is not available.
16827        @@Get:
16828          @@@PerlDef: $r = $self->{document_uri};
16829        @@Set:
16830          @@@PerlDef: $self->{document_uri} = $given;
16831    
16832      @Method:
16833        @@Name: close
16834        @@enDesc:
16835          Closes the file.
16836    
16837          Since when the Perl's destructor is invoked is unreliable,
16838          this method is explicitly called when the file is no longer
16839          in use.
16840    
16841          If the <Class::ManakaiDOMInputFile> is given as a hash
16842          reference and whose value for <CODE::close> is not defined,
16843          then the statement <Perl::close $filehandle> is done
16844          (where <Perl::$filehandle> is the <A::ManakaiDOMInputFile.filehandle>
16845          value).
16846        @@Return:
16847          @@@PerlDef:
16848            __DEEP{
16849              if ($self->{close}) {
16850                $self->{close}->($self);
16851              } else {
16852                close $self->{filehandle};
16853              }
16854            }__;
16855    ##ManakaiDOMInputFile
16856    
16857    
16858    

Legend:
Removed from v.1.10  
changed lines
  Added in v.1.34

[email protected]
ViewVC Help
Powered by ViewVC 1.1.24