/[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.24 by wakaba, Wed Feb 15 13:36:21 2006 UTC revision 1.25 by wakaba, Wed Feb 15 15:36:16 2006 UTC
# Line 298  ClsDef: Line 298  ClsDef:
298          $self->{param_entity} = {};          $self->{param_entity} = {};
299          $self->{attr} = {};          $self->{attr} = {};
300            # $self->{attr}->{$element_type_name}->{$attr_name} = $attr_def            # $self->{attr}->{$element_type_name}->{$attr_name} = $attr_def
301            $self->{dont_process} = false;
302            ## Well-formedness constraint Entity Declared takes effect?            ## Don't process |ENTITY| and |ATTLIST| declarations.
303    
304          __DEEP{          __DEEP{
305            $r = $self->{<H::c|implementation>}-><M::DOMImpl.createDocument>;            $r = $self->{<H::c|implementation>}-><M::DOMImpl.createDocument>;
# Line 614  ClsDef: Line 614  ClsDef:
614        } else {        } else {
615          ?lexmode DocumentMisc;          ?lexmode DocumentMisc;
616        }        }
617    
618          lang:Perl {
619            $self->{doc}-><AS::Document.allDeclarationsProcessed> (true)
620              unless $self->{dont_process};
621          }
622                
623        // *Misc        // *Misc
624        ~* (CDO) {        ~* (CDO) {
# Line 2666  ClsDef: Line 2671  ClsDef:
2671                                             (<Q::fe:XDoctypeDeclaration>, '3.0');                                             (<Q::fe:XDoctypeDeclaration>, '3.0');
2672        }        }
2673    
2674          my $has_extid;
2675        ~? (S) {        ~? (S) {
2676          ~? (Name == 'PUBLIC') {          ~? (Name == 'PUBLIC') {
2677            ~ (S) { }            ~ (S) { }
# Line 2680  ClsDef: Line 2686  ClsDef:
2686    
2687            lang:Perl {            lang:Perl {
2688              $self->{has_xref} = true;              $self->{has_xref} = true;
2689                $has_extid = true;
2690            }            }
2691          } (Name == 'SYSTEM') {          } (Name == 'SYSTEM') {
2692            ~ (S) { }            ~ (S) { }
# Line 2690  ClsDef: Line 2697  ClsDef:
2697    
2698            lang:Perl {            lang:Perl {
2699              $self->{has_xref} = true;              $self->{has_xref} = true;
2700                $has_extid = true;
2701            }            }
2702          }          }
2703        }        }
# Line 2715  ClsDef: Line 2723  ClsDef:
2723          ~? (S) { }          ~? (S) { }
2724        }        }
2725    
2726          // TODO: Read and process external subset if any.
2727          lang:Perl {
2728            $self->{dont_process} = true if $has_extid;
2729          }
2730    
2731        // ~ (MDC) { }        // ~ (MDC) { }
2732      } // _DocumentTypeDeclaration_      } // _DocumentTypeDeclaration_
2733    
# Line 2851  ClsDef: Line 2864  ClsDef:
2864    
2865          lang:Perl {          lang:Perl {
2866            $self->{has_xref} = true;            $self->{has_xref} = true;
2867              $self->{dont_process} = true;
2868          }          }
2869    
2870          ~ (Name) {          ~ (Name) {
# Line 3055  ClsDef: Line 3069  ClsDef:
3069    
3070        ~* (Name) {        ~* (Name) {
3071          my $at;          my $at;
3072          lang:Perl ($v => $token.value) {          lang:Perl ($v => $token.value) : has-error {
3073            $docxd ||= $doc-><M::Node.getFeature>            $docxd ||= $doc-><M::Node.getFeature>
3074                               (<Q::fe:XDoctype>, '3.0');                               (<Q::fe:XDoctype>, '3.0');
3075            $at = $docxd-><M::DocumentXDoctype.createAttributeDefinition> ($v);            $at = $docxd-><M::DocumentXDoctype.createAttributeDefinition> ($v);
3076            unless (exists $et-><AG::ETDef.attributeDefinitions>->{$v}) {            if (exists $et-><AG::ETDef.attributeDefinitions>->{$v}) {
3077                my $location;
3078                __CODE{xp|get-location-from-token::
3079                  $token => {$token},
3080                  $result => {$location},
3081                }__;
3082                my $continue = __c|ERROR{xp|warning-attribute-definition-ignored::
3083                  xp|error-token => {$token},
3084                  c|location => {$location},
3085                  xp|name => {$v},
3086                }__;
3087                unless ($continue) {
3088                  __EXCEPTION{DOMLS|PARSE_ERR::
3089                  }__;
3090                }            
3091              } elsif ($self->{dont_process} and not $self->{standalone}) {
3092                my $location;
3093                __CODE{xp|get-location-from-token::
3094                  $token => {$token},
3095                  $result => {$location},
3096                }__;
3097                my $continue = __c|ERROR{
3098                xp|warning-attribute-definition-not-processed::
3099                  xp|error-token => {$token},
3100                  c|location => {$location},
3101                  xp|name => {$v},
3102                }__;
3103                unless ($continue) {
3104                  __EXCEPTION{DOMLS|PARSE_ERR::
3105                  }__;
3106                }            
3107              } else {
3108              $et-><M::ETDef.setAttributeDefinitionNode> ($at);              $et-><M::ETDef.setAttributeDefinitionNode> ($at);
3109              $self->{attr}->{$name}->{$v} = $at;              $self->{attr}->{$name}->{$v} = $at;
3110            }            }
# Line 3411  ClsDef: Line 3456  ClsDef:
3456                  }__;                  }__;
3457                }                }
3458              }              }
3459   ## TODO:              $self->{dtdecl}->{<H::mn:node>}->{{
3460                  lt => <H::d|hasLtDeclaration>,
3461                  gt => <H::d|hasGtDeclaration>,
3462                  amp => <H::d|hasAmpDeclaration>,
3463                  apos => <H::d|hasAposDeclaration>,
3464                  quot => <H::d|hasQuotDeclaration>,
3465                }->{$decl->{name}}} = true;
3466            } else {  ## Dupulicating declaration            } else {  ## Dupulicating declaration
3467              my $location;              my $location;
3468              __CODE{xp|get-location-from-token::              __CODE{xp|get-location-from-token::
# Line 3428  ClsDef: Line 3479  ClsDef:
3479                }__;                }__;
3480              }              }
3481            }            }
3482            } elsif ($self->{dont_process} and not $self->{standalone}) {
3483              ## TODO: |standalone| and parameter entities??
3484              my $location;
3485              __CODE{xp|get-location-from-token::
3486                $token => {$token},
3487                $result => {$location},
3488              }__;
3489              my $continue = __c|ERROR{xp|warning-entity-declaration-not-processed::
3490                xp|error-token => {$token},
3491                c|location => {$location},
3492                xp|name => {$decl->{name}},
3493              }__;
3494              unless ($continue) {
3495                __EXCEPTION{DOMLS|PARSE_ERR::
3496                }__;
3497              }            
3498          } else {          } else {
3499            $self->{$decl->{is_param_entity} ? 'param_entity' : 'general_entity'}            $self->{$decl->{is_param_entity} ? 'param_entity' : 'general_entity'}
3500                 ->{$decl->{name}} = $decl;                 ->{$decl->{name}} = $decl;
# Line 3510  ClsDef: Line 3577  ClsDef:
3577            $reptxt .= $v;            $reptxt .= $v;
3578          }          }
3579        } (PERO) {        } (PERO) {
3580          ?lexmode EntityDeclaration;          ?lexmode EntityReference;
3581    
3582          lang:Perl {          lang:Perl {
3583            $self->{has_xref} = true;            $self->{has_xref} = true;
3584              $self->{dont_process} = true;
3585          }          }
3586            
3587          // TODO: Expand or wferror if internal subset          // TODO: Expand or wferror if internal subset
3588    
3589          ~ (Name) {          ~ (Name) {
3590    
3591              // Note that external subset and parameter entities are not supported
3592              lang:Perl ($name => $token.value) : has-error {
3593                my $location;
3594                __CODE{xp|get-location-from-token::
3595                  $token => {$token},
3596                  $result => {$location},
3597                }__;
3598                my $continue = __c|ERROR{xp|wf-pes-in-internal-subset::
3599                  xp|error-token => {$token},
3600                  c|location => {$location},
3601                  xp|name => {$name},
3602                }__;
3603                unless ($continue) {
3604                  __EXCEPTION{DOMLS|PARSE_ERR::
3605                  }__;
3606                }
3607              }
3608          }          }
3609    
3610          ~ (REFC) {          ~ (REFC) {
# Line 3594  ClsDef: Line 3679  ClsDef:
3679            $reptxt .= $v;            $reptxt .= $v;
3680          }          }
3681        } (PERO) {        } (PERO) {
3682          ?lexmode EntityDeclaration;          ?lexmode EntityReference;
3683    
3684          lang:Perl {          lang:Perl {
3685            $self->{has_xref} = true;            $self->{has_xref} = true;
3686              $self->{dont_process} = true;
3687          }          }
3688    
3689          // TODO: implement this          // TODO: implement this
3690          ~ (Name) {          ~ (Name) {
3691    
3692              // Note that external subset and parameter entities are not supported
3693              lang:Perl ($name => $token.value) : has-error {
3694                my $location;
3695                __CODE{xp|get-location-from-token::
3696                  $token => {$token},
3697                  $result => {$location},
3698                }__;
3699                my $continue = __c|ERROR{xp|wf-pes-in-internal-subset::
3700                  xp|error-token => {$token},
3701                  c|location => {$location},
3702                  xp|name => {$name},
3703                }__;
3704                unless ($continue) {
3705                  __EXCEPTION{DOMLS|PARSE_ERR::
3706                  }__;
3707                }
3708              }
3709          }          }
3710    
3711          ~ (REFC) {          ~ (REFC) {
# Line 11262  ClsDef: Line 11365  ClsDef:
11365          @@@@test:value:          @@@@test:value:
11366            <?xml version="1.0" standalone="no"?>            <?xml version="1.0" standalone="no"?>
11367            <!DOCTYPE p [            <!DOCTYPE p [
11368              <!ATTLIST q b CDATA #IMPLIED>              <!ATTLIST p b CDATA #IMPLIED>
11369              <!ENTITY % para "<!-- -->">              <!ENTITY % para "<!-- -->">
11370              %para;              %para;
11371            <!ATTLIST p a CDATA "&entity;">            <!ATTLIST p a CDATA "&entity;">
11372            ]>            ]>
11373            <p c="d"/>            <p c="d"/>
11374          @@@c:erred:
11375            <[[xp|warning-attribute-definition-not-processed]]> { (6, 13)..(6, 30); }
11376        @@@test:domTree:        @@@test:domTree:
11377          document {          document {
11378            document-type {            document-type {
11379              element-type-definition {              element-type-definition {
11380                node-name: 'q';                node-name: 'p';
11381                attribute-definition {                attribute-definition {
11382                  node-name: 'b';                  node-name: 'b';
11383                }                }
# Line 11306  ClsDef: Line 11411  ClsDef:
11411        @@@DEnt:        @@@DEnt:
11412          @@@@test:value:          @@@@test:value:
11413            <!DOCTYPE p [            <!DOCTYPE p [
11414              <!ATTLIST q b CDATA #IMPLIED>              <!ATTLIST p b CDATA #IMPLIED>
11415              <!ENTITY % para "<!-- -->">              <!ENTITY % para "<!-- -->">
11416              %para;              %para;
11417            <!ATTLIST p a CDATA "&entity;">            <!ATTLIST p a CDATA "&entity;">
11418            ]>            ]>
11419            <p c="d"/>            <p c="d"/>
11420          @@@c:erred:
11421            <[[xp|warning-attribute-definition-not-processed]]> { (5, 13)..(5, 30); }
11422        @@@test:domTree:        @@@test:domTree:
11423          document {          document {
11424            document-type {            document-type {
11425              element-type-definition {              element-type-definition {
11426                node-name: 'q';                node-name: 'p';
11427                attribute-definition {                attribute-definition {
11428                  node-name: 'b';                  node-name: 'b';
11429                }                }
# Line 11383  ClsDef: Line 11490  ClsDef:
11490          @@@@test:value:          @@@@test:value:
11491            <?xml version="1.0" standalone="no"?>            <?xml version="1.0" standalone="no"?>
11492            <!DOCTYPE p [            <!DOCTYPE p [
11493              <!ATTLIST q b CDATA #IMPLIED>              <!ATTLIST p b CDATA #IMPLIED>
11494              <!ENTITY % para SYSTEM "p">              <!ENTITY % para SYSTEM "p">
11495              %para;              %para;
11496            <!ATTLIST p a CDATA "&entity;">            <!ATTLIST p a CDATA "&entity;">
11497            ]>            ]>
11498            <p c="d"/>            <p c="d"/>
11499          @@@c:erred:
11500            <[[xp|warning-attribute-definition-not-processed]]> { (6, 13)..(6, 30); }
11501        @@@test:domTree:        @@@test:domTree:
11502          document {          document {
11503            document-type {            document-type {
11504              element-type-definition {              element-type-definition {
11505                node-name: 'q';                node-name: 'p';
11506                attribute-definition {                attribute-definition {
11507                  node-name: 'b';                  node-name: 'b';
11508                }                }
# Line 11427  ClsDef: Line 11536  ClsDef:
11536        @@@DEnt:        @@@DEnt:
11537          @@@@test:value:          @@@@test:value:
11538            <!DOCTYPE p [            <!DOCTYPE p [
11539              <!ATTLIST q b CDATA #IMPLIED>              <!ATTLIST p b CDATA #IMPLIED>
11540              <!ENTITY % para SYSTEM "p">              <!ENTITY % para SYSTEM "p">
11541              %para;              %para;
11542            <!ATTLIST p a CDATA "&entity;">            <!ATTLIST p a CDATA "&entity;">
11543            ]>            ]>
11544            <p c="d"/>            <p c="d"/>
11545          @@@c:erred:
11546            <[[xp|warning-attribute-definition-not-processed]]> { (5, 13)..(5, 30); }
11547        @@@test:domTree:        @@@test:domTree:
11548          document {          document {
11549            document-type {            document-type {
11550              element-type-definition {              element-type-definition {
11551                node-name: 'q';                node-name: 'p';
11552                attribute-definition {                attribute-definition {
11553                  node-name: 'b';                  node-name: 'b';
11554                }                }
# Line 12099  ClsDef: Line 12210  ClsDef:
12210            }            }
12211          }          }
12212    
12213        @@XMLTest:
12214          @@@QName: xp.processed.1.test
12215          @@@DEnt:
12216            @@@@test:value:
12217              <a/>
12218          @@@test:domTree:
12219            document {
12220              all-declarations-processed: true;
12221              element { }
12222            }
12223        @@XMLTest:
12224          @@@QName: xp.processed.2.test
12225          @@@DEnt:
12226            @@@@test:value:
12227              <!DOCTYPE a [
12228              <!ENTITY e      "f">
12229              <!ATTLIST a b NMTOKEN "  c  ">
12230              ]><a>&e;</a>
12231          @@@test:domTree:
12232            document {
12233              document-type {
12234                general-entity {
12235                  node-name: 'e';
12236                }
12237                element-type-definition {
12238                  node-name: 'a';
12239                  attribute-definition {
12240                    node-name: 'b';
12241                  }
12242                }
12243              }
12244              all-declarations-processed: true;
12245              element {
12246                attribute {
12247                  node-name: 'b';
12248                  node-value: 'c';
12249                }
12250                text-content: 'f';
12251              }
12252            }
12253        @@XMLTest:
12254          @@@QName: xp.processed.3.test
12255          @@@DEnt:
12256            @@@@test:value:
12257              <!DOCTYPE a [
12258              <!ENTITY % p    SYSTEM "p">
12259              %p;
12260              <!ENTITY e      "f">
12261              <!ATTLIST a b NMTOKEN "  c  ">
12262              ]><a d="e">&e;</a>
12263          @@@test:domTree:
12264            document {
12265              document-type { }
12266              all-declarations-processed: false;
12267              element {
12268                attribute {
12269                  node-name: 'd';
12270                  node-value: 'e';
12271                }
12272                general-entity-reference {
12273                  node-name: 'e';
12274                  is-expanded: false;
12275                }
12276              }
12277            }
12278          @@@c:erred:
12279            <[[xp|warning-entity-declaration-not-processed]]> { (4, 1)..(4, 20); }
12280          @@@c:erred:
12281            <[[xp|warning-attribute-definition-not-processed]]> { (5, 13)..(5, 31); }
12282        @@XMLTest:
12283          @@@QName: xp.processed.4.test
12284          @@@DEnt:
12285            @@@@test:value:
12286              <?xml version="1.1" standalone="yes"?>
12287              <!DOCTYPE a [
12288              <!ENTITY % p    SYSTEM "p">
12289              %p;
12290              <!ENTITY e      "f">
12291              <!ATTLIST a b NMTOKEN "  c  ">
12292              ]><a>&e;</a>
12293          @@@test:domTree:
12294            document {
12295              document-type {
12296                general-entity {
12297                  node-name: 'e';
12298                }
12299                element-type-definition {
12300                  node-name: 'a';
12301                  attribute-definition {
12302                    node-name: 'b';
12303                  }
12304                }
12305              }
12306              all-declarations-processed: false;
12307              element {
12308                attribute {
12309                  node-name: 'b';
12310                  node-value: 'c';
12311                }
12312                text-content: 'f';
12313              }
12314            }
12315        @@XMLTest:
12316          @@@QName: xp.processed.5.test
12317          @@@DEnt:
12318            @@@@test:value:
12319              <!DOCTYPE a SYSTEM "p" [
12320              <!ENTITY e      "f">
12321              <!ATTLIST a b NMTOKEN "  c  ">
12322              ]><a>&e;</a>
12323          @@@test:domTree:
12324            document {
12325              document-type {
12326                general-entity {
12327                  node-name: 'e';
12328                }
12329                element-type-definition {
12330                  node-name: 'a';
12331                  attribute-definition {
12332                    node-name: 'b';
12333                  }
12334                }
12335              }
12336              all-declarations-processed: false;
12337              element {
12338                attribute {
12339                  node-name: 'b';
12340                  node-value: 'c';
12341                }
12342                text-content: 'f';
12343              }
12344            }
12345    
12346        @@XMLTest:
12347          @@@QName: xp.PEs.in.internal.subset.1.test
12348          @@@DEnt:
12349            @@@@test:value:
12350              <!DOCTYPE a [
12351              <!ENTITY % p " ">
12352              <!ENTITY % q "%q;">
12353              ]><a/>
12354          @@@c:erred: <[[xp|wf-pes-in-internal-subset]]> { (3, 15)..(3, 17); }
12355        @@XMLTest:
12356          @@@QName: xp.PEs.in.internal.subset.2.test
12357          @@@DEnt:
12358            @@@@test:value:
12359              <!DOCTYPE a [
12360              <!ENTITY % p " ">
12361              <!ENTITY % q '%q;'>
12362              ]><a/>
12363          @@@c:erred: <[[xp|wf-pes-in-internal-subset]]> { (3, 15)..(3, 17); }
12364    
12365      @@PerlDef:      @@PerlDef:
12366        my $impl = $Message::DOM::ImplementationRegistry->get_implementation ({        my $impl = $Message::DOM::ImplementationRegistry->get_implementation ({
12367          'Core' => '3.0',          'Core' => '3.0',
# Line 12429  WFErrDef: Line 12692  WFErrDef:
12692        The code position of the character being referred.        The code position of the character being referred.
12693    
12694  WFErrDef:  WFErrDef:
12695      @QName: xp|wf-pes-in-internal-subset
12696      @enDesc:
12697        In the internal subset of the DTD, parameter entity references
12698        <kwd:MUST-NOT> occur within markup declarations.
12699      @enMufDef:
12700        Parameter entity reference |%percent;%param (name => {<Q::xp|name>});;|
12701        cannot occur within a markup declaration
12702      @ecore:hasParameter: xp|error-token
12703      @ecore:hasParameter:
12704        @@@: xp|name
12705        @@enDesc:
12706          The name of the parameter entity.
12707    
12708    WFErrDef:
12709    @QName: xp|wf-element-type-match    @QName: xp|wf-element-type-match
12710    @enDesc:    @enDesc:
12711      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
# Line 12490  WFErrDef: Line 12767  WFErrDef:
12767      value literal      value literal
12768    @ecore:hasParameter: xp|error-token    @ecore:hasParameter: xp|error-token
12769    
12770    WarnDef:
12771      @QName: xp|warning-attribute-definition-ignored
12772      @enDesc:
12773        An attribute definition is ignored because the same attribute
12774        is declared before.
12775      @enMufDef:
12776        Attribute definition for |%p (name => {<Q::xp|name>});| is ignored
12777      @ecore:hasParameter: xp|error-token
12778      @ecore:hasParameter:
12779        @@@: xp|name
12780        @@enDesc:
12781          The name of the attribute.
12782    
12783  WFErrDef:  WFErrDef:
12784    @QName: xp|wf-legal-character    @QName: xp|wf-legal-character
12785    @enDesc:    @enDesc:
# Line 12637  VCErrDef: Line 12927  VCErrDef:
12927      @@enDesc:      @@enDesc:
12928        The name of the notation.        The name of the notation.
12929    
12930    WarnDef:
12931      @QName: xp|warning-entity-declaration-not-processed
12932      @enDesc:
12933        An entity declaration is not processed because there
12934        is a reference to parameter entity before the declaration
12935        and the entity is not read.
12936      @enMufDef:
12937        Entity declaration for |%p (name => {<Q::xp|name>});| is not processed
12938      @ecore:hasParameter: xp|error-token
12939      @ecore:hasParameter:
12940        @@@: xp|name
12941        @@enDesc:
12942          The name of the entity.
12943    
12944    WarnDef:
12945      @QName: xp|warning-attribute-definition-not-processed
12946      @enDesc:
12947        An attribute definition is not processed because there
12948        is a reference to parameter entity before the declaration
12949        and the entity is not read.
12950      @enMufDef:
12951        Attribute definition for |%p (name => {<Q::xp|name>});| is not processed
12952      @ecore:hasParameter: xp|error-token
12953      @ecore:hasParameter:
12954        @@@: xp|name
12955        @@enDesc:
12956          The name of the attribute.
12957    
12958  XWParam:  XWParam:
12959    @QName: xp|replacement-text    @QName: xp|replacement-text
12960    @enDesc:    @enDesc:

Legend:
Removed from v.1.24  
changed lines
  Added in v.1.25

admin@suikawiki.org
ViewVC Help
Powered by ViewVC 1.1.24