Hi,

We are having some problems with segfaulting when an XML string fails 
validation within eval block. I tried taking a look at it myself, but I 
lost my way in XML::Xerces::Parser. Anyway, I'm sending attached a small 
script, input file with the offending XML and the dtd. I run it as "cat 
segfault.xml | perl xerces_test.pl".
XML::Xerces version is 1.7.0_1, with corresponding libxerces-c1_7_0.so
 Perl details are:
Summary of my perl5 (revision 5.0 version 6 subversion 1) configuration:
  Platform:
    osname=linux, osvers=2.4.13, archname=i386-linux
    uname='linux duende 2.4.13 #1 wed oct 31 19:18:07 est 2001 i686 
unknown '
    config_args='-Dccflags=-DDEBIAN -Dcccdlflags=-fPIC 
-Darchname=i386-linux -Dprefix=/usr -Dprivlib=/usr/share/perl/5.6.1 
-Darchlib=/usr/lib/perl/5.6.1 -Dvendorprefix=/usr 
-Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/perl5 
-Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.6.1 
-Dsitearch=/usr/local/lib/perl/5.6.1 -Dman1dir=/usr/share/man/man1 
-Dman3dir=/usr/share/man/man3 -Dman1ext=1 -Dman3ext=3perl 
-Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Uusesfio -Duseshrplib 
-Dlibperl=libperl.so.5.6.1 -Dd_dosuid -des'
    hint=recommended, useposix=true, d_sigaction=define
    usethreads=undef use5005threads=undef useithreads=undef 
usemultiplicity=undef
    useperlio=undef d_sfio=undef uselargefiles=define usesocks=undef
    use64bitint=undef use64bitall=undef uselongdouble=undef
  Compiler:
    cc='cc', ccflags ='-DDEBIAN -fno-strict-aliasing 
-I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64',
    optimize='-O2',
    cppflags='-DDEBIAN -fno-strict-aliasing -I/usr/local/include'
    ccversion='', gccversion='2.95.4  (Debian prerelease)', gccosandvers=''
    intsize=4, longsize=4, ptrsize=4, doublesize=8, byteorder=1234
    d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=12
    ivtype='long', ivsize=4, nvtype='double', nvsize=8, Off_t='off_t', 
lseeksize=8
    alignbytes=4, usemymalloc=n, prototype=define
  Linker and Libraries:
    ld='cc', ldflags =' -L/usr/local/lib'
    libpth=/usr/local/lib /lib /usr/lib
    libs=-lgdbm -ldb -ldl -lm -lc -lcrypt
    perllibs=-ldl -lm -lc -lcrypt
    libc=/lib/libc-2.2.4.so, so=so, useshrplib=true, 
libperl=libperl.so.5.6.1
  Dynamic Linking:
    dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags='-rdynamic'
    cccdlflags='-fPIC', lddlflags='-shared -L/usr/local/lib'


Characteristics of this binary (from libperl):
  Compile-time options: USE_LARGE_FILES
  Built under linux
  Compiled at Jan 11 2002 04:09:18
  %ENV:
    
PERL5LIB="/home/srdjan/srs/dev/registrar/lib/perl5:/home/srdjan/srs/dev/lib/perl5"
  @INC:
    /home/srdjan/srs/dev/registrar/lib/perl5
    /home/srdjan/srs/dev/lib/perl5
    /usr/local/lib/perl/5.6.1
    /usr/local/share/perl/5.6.1
    /usr/lib/perl5
    /usr/share/perl5
    /usr/lib/perl/5.6.1
    /usr/share/perl/5.6.1
    /usr/local/lib/site_perl
    /usr/local/share/perl/5.6.0
    .

Thanks,

Srdjan Jankovic
CatalystIT Ltd
<!DOCTYPE NZSRSRequest SYSTEM "protocol.dtd"><NZSRSRequest RegistrarId="50" VerMajor="1" VerMinor="0"><DomainUpdate         ActionId=     "s3c4a-1 16.08.02 11.40"                        Delegate=       "0"             RegistrantRef=  "s3c4a"                         Term =          "24"            ><DomainNameFilter>srstestc1.co.nz</DomainNameFilter><AdminContact             Name= "Admin 9.1.3.C4a"       ></AdminContact><TechnicalContact       Email=  "[EMAIL PROTECTED]" >      /></TechnicalContact><NameServers><Server FQDN= "srstests3c4a-1.net.nz"         IP4Addr=        "204.180.64.9"  /><Server FQDN= "srstests3c4a-2.net.nz        "       IP4Addr=        ""      /></NameServers></DomainUpdate></NZSRSRequest>
<!-- nzsrs.dtd:  DTD for NZ Shared Registry System Protocol

     Author:     Ewen McNeill <[EMAIL PROTECTED]>
     Version:    $Id: protocol.dtd,v 1.48 2002/08/15 20:52:08 srdjan Exp $
     Revised:    2002/03/05

     Notes:      This should probably be redone as an XML Schema,
                 where some more of the constraints can be stated.
                 But this is probably best left until the prototype
                 has been completed and the protocol finalised.          -->

<!-- The NZ SRS registrar/registry protocol consists of an (externally)
     signed XML request document containing a series of actions to be
     performed on the register (updating it, or extracting information
     from it), which is answered by an (externally) signed XML response
     document containing answers to each of those actions, or an overall
     error message.

     Each action has its own element to specify that action, and there
     is also a response element which is used to enclose each response
     to an action.

     Each update-type action has an id number which is the registrar's
     identification for the action, which must be unique in all requests
     made to the register by that registrar.  The status of each action
     with an id number can be queried with the "getmsg" action.

     There is a major/minor version number for the nzsrs registrar/
     registry protocol, which is currently fixed at 0.2.  Any change
     to the protocol should increment the verminor attribute.  Any
     change that is not backwards compatible in both directions
     (ie registrar to registry AND registry to registrar) should
     increment the vermajor attribute.

     The registrar internally is the effective registrar of the
     transaction.  This must normally match the registrar UID specified
     externally.  However the registry may set this to a specific
     registrar other than its own "psuedo registrar" to perform actions
     "as if" it was that registrar, eg filter by that registrar.

     It is also included to assist debugging (by allowing network streams
     to be more directly linked to the registrar).                           -->


<!-- == Common entities ==================================================== -->

<!-- Simple data types                                                       -->
<!ENTITY  % Number           "CDATA"                                           >
<!ENTITY  % NumberFilter     "CDATA"                                           >
<!ENTITY  % Dollars          "CDATA"                                           >
<!ENTITY  % True             "1"                                               >
<!ENTITY  % False            "0"                                               >
<!ENTITY  % Boolean          "(%False;|%True;)"                                >
<!-- Valid date                                                              -->
<!ENTITY  % Date             "Year   %Number; #REQUIRED
                              Month  %Number; #REQUIRED
                              Day    %Number; #REQUIRED"                       >
<!-- Valid time                                                              -->
<!ENTITY  % Time             "Hour   %Number; #REQUIRED
                              Minute %Number; #REQUIRED
                              Second %Number; #IMPLIED "                       >
<!ENTITY  % TimeStamp        "%Date; %Time;"                                   >
<!-- Valid domain name                                                       -->
<!ENTITY  % DomainName       "CDATA"                                           >
<!-- Valid unique identifier ?                                               -->
<!ENTITY  % UID              "CDATA"                                           >
<!-- Valid term (in ?)                                                       -->
<!ENTITY  % Term             "%Number;"                                        >
<!ENTITY  % RegistrarId      "%Number;"                                        >

<!-- ENTITY  % RegistrarIdOrOTHERS      %RegistrarId;|"OTHERS"                -->
<!ENTITY  % RegistrarIdOrOTHERS      "CDATA"                                   >

<!-- Complex data types/definitions                                          -->
<!ENTITY  % DomainWriteAction     "DomainCreate|DomainUpdate"                  >
<!ENTITY  % DomainQueryAction     "Whois|DomainDetailsQry|ActionDetailsQry|
                                   UDAIValidQry"                               >
<!ENTITY  % RegistrarWriteAction  "RegistrarCreate|RegistrarUpdate"            >
<!ENTITY  % RegistrarQueryAction  "RegistrarDetailsQry|RegistrarAccountQry|
                                   GetMessages"                                >
<!ENTITY  % RegistryAction        "SysParamsUpdate|SysParamsQry|
                                   RunLogCreate|RunLogQry|
                                   ScheduleCreate|ScheduleCancel|
                                   ScheduleQry"                                >
<!ENTITY  % Action           "%DomainWriteAction;|%DomainQueryAction;|
                              %RegistrarWriteAction;|%RegistrarQueryAction;|
                              %RegistryAction;|DomainTransfer"                 >
<!ENTITY  % ActionResponse   "Error|Domain*|UDAIValid|DomainTransfer|
                              BillingTrans*|
                              Registrar*|SysParam*|RunLog*|Schedule"           >
<!ENTITY  % RegDomainStatus  "Active|PendingRelease"                           >
<!ENTITY  % DomainStatus     "%RegDomainStatus;|Available"                     >
<!ENTITY  % BillStatus       "PendingConfirmation|Confirmed"                   >
<!ENTITY  % Contact          "PostalAddress?,Phone?,Fax?"                      >
<!ENTITY  % ContactAttr      "Name      CDATA    #IMPLIED
                              Email     CDATA    #IMPLIED "                    >
<!ENTITY  % PhoneAttr        "CountryCode %NumberFilter;    #IMPLIED
                              AreaCode    %NumberFilter;    #IMPLIED
                              LocalNumber %NumberFilter;    #IMPLIED "                 
   >
<!ENTITY  % Roles            "Registrar|Registry|Whois|Query|
                              CreateDomain|UpdateDomain|TransferDomain|
                              CancelDomain|UncancelDomain|
                              UpdateRegistrar|Administer|Supervisor|Connect"   >
<!ENTITY  % DateRange        "From|To|(From,To)"                               >


<!-- == Root element ======================================================= -->


<!ELEMENT   NZSRSRequest     ((%Action;)+)                                     >
<!ATTLIST   NZSRSRequest
              VerMajor       (1)                                    #REQUIRED
              VerMinor       (0)                                    #REQUIRED
              RegistrarId    %RegistrarId;                          #IMPLIED   >

<!ELEMENT   NZSRSResponse         (Response+|Error)                            >
<!ATTLIST   NZSRSResponse
              VerMajor       (1)                                    #REQUIRED
              VerMinor       (0)                                    #REQUIRED
              RegistrarId    %RegistrarId;                          #IMPLIED   >


<!-- == Request actions ==================================================== -->


<!-- ++ Domain details update actions ++++++++++++++++++++++++++++++++++++++ -->

<!-- Create new domain name (record)
     ActionResponse: (Domain|Error)                                          -->
<!ELEMENT   DomainCreate     (RegistrantContact,AdminContact?,TechnicalContact?,
                              NameServers?,AuditText?)                         >
<!ATTLIST   DomainCreate
              ActionId       %UID;                                  #REQUIRED
              DomainName     %DomainName;                           #REQUIRED
              RegistrantRef  %UID;                                  #IMPLIED
              Term           %Term;                                 #REQUIRED
              Delegate       %Boolean;                             "1"         >

<!-- Update domain record
     Usage:
       - update all domain records that match DomainNameFilter
         pattern (? replaces a single character, * replaces a group of characters);
         not all updates are possible (sensible)
       Following actions are invoked by setting corresponding attribute
       to %True; or opposite actions when set to %False; - ommition of
       the attribute means no action:
       - newUDAI - force a new authentication UID to be generated
       - renew
       - cancel
       - lock
       Transfer to another registrar is an implied operation - if non-owner
       registrar is doing an update, the domain is transferred to the new
       registrar. For this operation UDAI is required, and the
       DomainNameFilter must be a simple domain name (no wildcards!)
     ActionResponse: (Domain+|Error)                                         -->
<!ELEMENT   DomainUpdate     (DomainNameFilter+,RegistrantContact?,AdminContact?,
                              TechnicalContact?,
                              NameServers?,AuditText?)                         >
<!ATTLIST   DomainUpdate
              ActionId       %UID;                                  #REQUIRED
              UDAI           %UID;                                  #IMPLIED
              NewUDAI        %Boolean;                              #IMPLIED
              RegistrantRef  %UID;                                  #IMPLIED
              Term           %Term;                                 #IMPLIED
              Delegate       %Boolean;                              #IMPLIED
              Renew          %Boolean;                              #IMPLIED
              Lock           %Boolean;                              #IMPLIED
              Cancel         %Boolean;                              #IMPLIED
              Release        %Boolean;                              #IMPLIED   >
<!ELEMENT   DomainNameFilter     (#PCDATA)                                     >

<!-- ++ Domain details query actions  ++++++++++++++++++++++++++++++++++++++ -->

<!-- Whois  (retrieve details of DomainName)
     ActionResponse: (Domain|Error)                                          -->
<!ELEMENT   Whois            EMPTY                                             >
<!ATTLIST   Whois
              DomainName     %DomainName;                           #REQUIRED  >

<!-- UDAIValidQry - enquire if the UDAI for a domain is correct
     ActionResponse: (UDAIValid)                                             -->
<!ELEMENT   UDAIValidQry     EMPTY                                             >
<!ATTLIST   UDAIValidQry
              DomainName     %DomainName;                           #REQUIRED
              UDAI           %UID;                                  #REQUIRED  >

<!-- General register query
     ActionResponse: (Domain*|Error)                                         -->
<!ELEMENT   DomainDetailsQry (DomainNameFilter*,NameServers?,
                              RegistrantContact?,
                              AdminContact?,TechnicalContact?,
                              ResultDateRange?,SearchDateRange?,
                              RegisteredDateRange?,LockedDateRange?,
                              CancelledDateRange?,BilledUntilDateRange?,
                              FieldList?)                                      >
<!ATTLIST   DomainDetailsQry
              Status         (%RegDomainStatus;)                    #IMPLIED
              Delegate       %Boolean;                              #IMPLIED
              Term           %Term;                                 #IMPLIED
              RegistrantRef  %UID;                                  #IMPLIED
              MaxResults     %Number;                               #IMPLIED
              SkipResults    %Number;                               #IMPLIED   >

<!-- Query request - returns request-response pair
     ActionResponse: ((RawRequest,RawResponse)|Error)                        -->
<!ELEMENT   ActionDetailsQry EMPTY                                             >
<!ATTLIST   ActionDetailsQry
              ActionId       %UID;                                  #REQUIRED  >

<!-- ++ Registar details update actions ++++++++++++++++++++++++++++++++++++
     ActionResponse: (Registrar|Error)                                       -->

<!ELEMENT   RegistrarCreate     (RegistrarPublicContact,RegistrarSRSContact,
                                 DefaultTechnicalContact,EncryptKey,
                                 Allowed2LDs?,Roles?,AuditText?)               >
<!ATTLIST   RegistrarCreate
              ActionId     %UID;                                   #REQUIRED
              Name         CDATA                                   #REQUIRED
              AccRef       CDATA                                   #REQUIRED
              URL          CDATA                                   #IMPLIED    >
<!ELEMENT   RegistrarUpdate     (RegistrarPublicContact?,RegistrarSRSContact?,
                                 DefaultTechnicalContact?,EncryptKey?,
                                 Allowed2LDs?,Roles?,AuditText?)               >
<!ATTLIST   RegistrarUpdate
              RegistrarId  %RegistrarId;                           #REQUIRED
              ActionId     %UID;                                   #REQUIRED
              Name         CDATA                                   #IMPLIED
              AccRef       CDATA                                   #IMPLIED
              URL          CDATA                                   #IMPLIED    >

<!-- ++ Registar details query actions +++++++++++++++++++++++++++++++++++++ -->

<!-- ActionResponse: (Registrar*|Error)                                            -->
<!ELEMENT   RegistrarDetailsQry (ResultDateRange?)                          >
<!ATTLIST   RegistrarDetailsQry
              RegistrarId    %RegistrarId;                          #IMPLIED
              NameFilter     CDATA                                  #IMPLIED   >

<!-- Billinfo (obtain billing information relating to an invoice)
     ActionResponse: (BillingTrans*|Error)                                         -->
<!ELEMENT   RegistrarAccountQry (TransDateRange?,InvoiceDateRange?)            >
<!ATTLIST   RegistrarAccountQry
              RegistrantRef     %UID;                               #IMPLIED
              DomainName        %DomainName;                        #IMPLIED
              InvoiceId         %UID;                               #IMPLIED
              MaxResults        %Number;                            #IMPLIED
              SkipResults       %Number;                            #IMPLIED   >

<!-- ++ Query date ranges ++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<!ELEMENT   ResultDateRange       (%DateRange;)                                >
<!ELEMENT   SearchDateRange       (%DateRange;)                                >
<!ELEMENT   RegisteredDateRange   (%DateRange;)                                >
<!ELEMENT   CancelledDateRange    (%DateRange;)                                >
<!ELEMENT   LockedDateRange       (%DateRange;)                                >
<!ELEMENT   BilledUntilDateRange  (%DateRange;)                                >
<!ELEMENT   InvoiceDateRange      (%DateRange;)                                >
<!ELEMENT   TransDateRange        (%DateRange;)                                >

<!-- ++ Query field list +++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<!ELEMENT   FieldList             EMPTY                                        >
<!ATTLIST   FieldList
        DomainName          %Boolean;                              #IMPLIED
        Status              %Boolean;                              #IMPLIED
        NameServers         %Boolean;                              #IMPLIED
        RegistrantContact   %Boolean;                              #IMPLIED
        RegisteredDate      %Boolean;                              #IMPLIED
        AdminContact        %Boolean;                              #IMPLIED
        TechnicalContact    %Boolean;                              #IMPLIED
        LockedDate          %Boolean;                              #IMPLIED
        Delegate            %Boolean;                              #IMPLIED
        RegistrarId         %Boolean;                              #IMPLIED
        RegistrarName       %Boolean;                              #IMPLIED
        RegistrantRef       %Boolean;                              #IMPLIED
        LastActionId        %Boolean;                              #IMPLIED
        ChangedByRegistrarId %Boolean;                              #IMPLIED
        Term                %Boolean;                              #IMPLIED
        BilledUntil         %Boolean;                              #IMPLIED
        CancelledDate       %Boolean;                              #IMPLIED
        AuditText           %Boolean;                              #IMPLIED
        EffectiveFrom       %Boolean;                              #IMPLIED
        EffectiveTo         %Boolean;                              #IMPLIED    >

<!-- ++ Registry actions +++++++++++++++++++++++++++++++++++++++++++++++++++ -->

<!-- ActionResponse: (SysParam*|Error)                                       -->
<!ELEMENT   SysParamsUpdate       (SysParam+,AuditText?)                       >
<!ATTLIST   SysParamsUpdate
              ActionId     %UID;                                    #REQUIRED  >

<!ELEMENT   SysParamsQry          EMPTY                                        >

<!-- ActionResponse: (RunLog|Error)                                                -->
<!ELEMENT   RunLogCreate          (RunLog)                                     >
<!ATTLIST   RunLogCreate
              ActionId     %UID;                                    #REQUIRED  >

<!-- ActionResponse: (RunLog*|Error)                                               -->
<!ELEMENT   RunLogQry             (LogDateRange?)                              >
<!ATTLIST   RunLogQry
              ProcessName         CDATA                             #IMPLIED   >
<!ELEMENT   LogDateRange          (%DateRange;)                                >

<!-- ActionResponse: (Schedule|Error)                                              -->
<!ELEMENT   ScheduleCreate        (Schedule)                                   >

<!ELEMENT   ScheduleCancel        (FinalRunDate,AuditText?)                    >
<!ATTLIST   ScheduleCancel
              ActionId            %UID;                             #REQUIRED
              ProcessName         CDATA                             #REQUIRED  >
<!ELEMENT   FinalRunDate     EMPTY                                             >
<!ATTLIST   FinalRunDate     %TimeStamp;                                       >

<!ELEMENT   ScheduleQry           (ActiveOn?)                                  >
<!ATTLIST   ScheduleQry
              ProcessName         CDATA                             #IMPLIED   >
<!ELEMENT   ActiveOn              EMPTY                                        >
<!ATTLIST   ActiveOn              %TimeStamp;                                  >


<!-- == GetMessages ======================================================== -->

<!-- Get message by UID, or messages since date/time for the Effectife registrar
     Non-DTD enforced compliance:
       - either UID or date range must be supplied
     ActionResponses: (Response|Error)                                             -->
<!ELEMENT   GetMessages           (TransDateRange?)                            >
<!ATTLIST   GetMessages
              OriginatingRegistrarId  %RegistrarIdOrOTHERS;          #IMPLIED
              ActionId                %UID;                          #IMPLIED
              EffectiveRegistrarId    %RegistrarId;                  #IMPLIED  >

<!-- == ActionResponse =========================================================== -->


<!-- ++ Response +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
     This is a "one size fits all" response, which
     can contain any type of response.  Errors to individual actions
     can be specified within the response (errors in parsing the total
     request are handled by the error ELEMENT).  The response may
     contain multiple domain records (eg, for queries), and may contain
     a complete history of the domain.
     The registrar and id will match those passed in for most requests,
     but will be present to uniquely identify a getmsg response.
     Most requests will result in a single response; but getmsg requests
     for messages since a date/time will result in one response per
     response found.
     The DomainTransfer differs from the rest in that it is not a direct
     response to an action, but a message for the registrar generated by
     an action of another registrar. It may be returned in response to a
     GetMessages action.                                                     -->
<!ELEMENT   Response       (Response*|%ActionResponse;|(RawRequest,RawResponse))       
        >
<!ATTLIST   Response
              Action             (%Action;|UnknownTransaction)  #REQUIRED
              ActionId           %UID;                          #IMPLIED
              Rows               %Number;                       #IMPLIED
              MoreRowsAvailable  %Boolean;                      #IMPLIED       >

<!-- ++ Error ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
     Errors can be either specific to a requested action, or generic
     to the whole request.  A globally unique errorid identifies the
     error that occured, and a human-readable string describing the
     error is enclosed.
     The errorids are assigned like HTTP, where there are three digits
     to identify the error.  The first digit indicates approximately
     the status (success, failure, etc); the second is a subcategory of
     that, and the third is used for fine detail indications.
     The exact list of errors is in SRS::Error module.                       -->
<!ELEMENT   Error           (Description, ErrorDetails?)                               
           >
<!ATTLIST   Error
               ErrorId      %UID;                                   #REQUIRED
               Severity     %Number;                                #REQUIRED
               Hint         %UID;                                   #REQUIRED  >
<!ELEMENT   Description     (#PCDATA)                                          >
<!ELEMENT   ErrorDetails    (#PCDATA)                                          >


<!-- == Lower level elements =============================================== -->


<!-- Zone information: fields held in the register, that can be obtained
     through the registrar/registry protocol.
     and/or maintainable through the registry protocol.                      -->

<!-- ++ Domain details +++++++++++++++++++++++++++++++++++++++++++++++++++++
     NOTE: the domain authid (UDAI) is sent ONLY if it has been newly
     generated; otherwise it is assumed that the registrar has the
     previous value cached.                                                  -->
<!ELEMENT   Domain         (NameServers?,RegistrantContact?,
                            RegistrarPublicContact?,
                            AdminContact?,TechnicalContact?,EncryptedUDAI?,
                            BilledUntil?,RegisteredDate?,CancelledDate?,
                            LockedDate?,AuditDetails?)                         >
<!ATTLIST   Domain
              DomainName             %DomainName;                    #REQUIRED
              RegistrantName         CDATA                           #IMPLIED
              RegistrantRef          %UID;                           #IMPLIED
              RegistrarName          CDATA                           #IMPLIED
              Status                 (%DomainStatus;)                #IMPLIED
              Delegate               %Boolean;                       #IMPLIED
              Term                   %Term;                          #IMPLIED
              RegistrarId            %RegistrarId;                   #IMPLIED  >

<!ELEMENT   EncryptedUDAI  (#PCDATA)                                           >

<!ELEMENT   BilledUntil    EMPTY                                               >
<!ATTLIST   BilledUntil    %TimeStamp;                                         >

<!ELEMENT   LockedDate     EMPTY                                               >
<!ATTLIST   LockedDate     %TimeStamp;                                         >

<!ELEMENT   RegisteredDate EMPTY                                               >
<!ATTLIST   RegisteredDate %TimeStamp;                                         >

<!ELEMENT   CancelledDate  EMPTY                                               >
<!ATTLIST   CancelledDate  %TimeStamp;                                         >

<!ELEMENT   DomainTransfer EMPTY                                               >
<!ATTLIST   DomainTransfer
              DomainName   %DomainName;                            #REQUIRED
              RegistrarName CDATA                                  #REQUIRED
              %TimeStamp;                                                      >

<!ELEMENT   UDAIValid      EMPTY                                               >
<!ATTLIST   UDAIValid
              Valid        %Boolean;                               #REQUIRED   >

<!-- Name servers
     The IP address should be included if and only if the fqdn is within
     the zone that it is associated with                                     -->
<!ELEMENT   NameServers    (Server+)                                           >

<!ELEMENT   Server         EMPTY                                               >
<!ATTLIST   Server
              FQDN         CDATA                               #REQUIRED
              IP4Addr      CDATA                               #IMPLIED        >

<!-- ++ Registrar details ++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<!ELEMENT   Registrar      (RegistrarPublicContact,RegistrarSRSContact,
                            DefaultTechnicalContact,EncryptKey,Allowed2LDs?,
                            Roles?,AuditDetails?)                              >
<!ATTLIST   Registrar
              RegistrarId  %RegistrarId;                           #REQUIRED
              Name         CDATA                                   #REQUIRED
              AccRef       CDATA                                   #REQUIRED
              URL          CDATA                                   #IMPLIED    >

<!ELEMENT   Allowed2LDs    (SecondLD+)                                         >

<!ELEMENT   SecondLD       EMPTY                                               >
<!ATTLIST   SecondLD
              DomainName   %DomainName;                            #REQUIRED   >

<!ELEMENT   Roles          (Role*)                                             >

<!ELEMENT   Role           EMPTY                                               >
<!ATTLIST   Role
              RoleName     (%Roles;)                               #REQUIRED   >

<!ELEMENT   EncryptKey     (#PCDATA)                                           >

<!-- ++ Billing transaction ++++++++++++++++++++++++++++++++++++++++++++++++ -->
<!ELEMENT   BillingTrans     (InvoiceDate?, TransDate)                         >
<!ATTLIST   BillingTrans
              RegistrarId    %RegistrarId;                          #REQUIRED
              Type           CDATA                                  #REQUIRED
              TransStatus    (%BillStatus;)                         #REQUIRED
              DomainName     %DomainName;                           #REQUIRED
              RegistrantRef  %UID;                                  #IMPLIED
              BillingTerm    %Term;                                 #REQUIRED
              InvoiceId      %UID;                                  #IMPLIED
              Amount         %Dollars;                              #REQUIRED  >

<!ELEMENT   InvoiceDate      EMPTY                                             >
<!ATTLIST   InvoiceDate      %TimeStamp;                                      >
<!ELEMENT   TransDate        EMPTY                                             >
<!ATTLIST   TransDate        %TimeStamp;                                        >

<!-- ++ Contact information: for registrant, admin, technical ++++++++++++++ -->
<!ELEMENT   RegistrantContact       (%Contact;)                                >
<!ATTLIST   RegistrantContact       %ContactAttr;                              >
<!ELEMENT   AdminContact            (%Contact;)                                >
<!ATTLIST   AdminContact            %ContactAttr;                              >
<!ELEMENT   TechnicalContact        (%Contact;)                                >
<!ATTLIST   TechnicalContact        %ContactAttr;                              >
<!ELEMENT   RegistrarPublicContact  (%Contact;)                                >
<!ATTLIST   RegistrarPublicContact  %ContactAttr;                              >
<!ELEMENT   DefaultTechnicalContact (%Contact;)                                >
<!ATTLIST   DefaultTechnicalContact %ContactAttr;                              >
<!ELEMENT   RegistrarSRSContact     (%Contact;)                                >
<!ATTLIST   RegistrarSRSContact     %ContactAttr;                              >

<!-- Country is an ISO 3166-1 country code                                   -->
<!ELEMENT   PostalAddress    EMPTY                                             >
<!ATTLIST   PostalAddress
              Address1       CDATA                             #IMPLIED
              Address2       CDATA                             #IMPLIED
              City           CDATA                             #IMPLIED
              Province       CDATA                             #IMPLIED
              CountryCode    CDATA                             #IMPLIED
              PostalCode     CDATA                             #IMPLIED        >

<!ELEMENT   Phone            EMPTY                                             >
<!ATTLIST   Phone            %PhoneAttr;                                       >
<!ELEMENT   Fax              EMPTY                                             >
<!ATTLIST   Fax              %PhoneAttr;                                       >

<!-- ++ Raw responses ++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<!ELEMENT   RawRequest      (XML,Signature)                                    >

<!ELEMENT   RawResponse     (XML,Signature)                                    >

<!ELEMENT   XML             (#PCDATA)                                          >
<!ELEMENT   Signature       (#PCDATA)                                          >

<!-- ++ System Parameters ++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<!ELEMENT   SysParam         (ParamValue, AuditText?)                          >
<!ATTLIST   SysParam
              Name           CDATA                                  #REQUIRED
              ActionId        %UID;                                 #IMPLIED   >
<!ELEMENT   ParamValue       (#PCDATA)                                         >

<!-- ++ Run Log ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<!ELEMENT   RunLog           (RunLogTimeStamp, Details?)                       >
<!ATTLIST   RunLog
              ProcessName    CDATA                                  #REQUIRED
              ActionStatus   CDATA                                  #REQUIRED
              Control        CDATA                                  #IMPLIED   >
<!ELEMENT   Details       (#PCDATA)                                            >

<!ELEMENT   RunLogTimeStamp     EMPTY                                          >
<!ATTLIST   RunLogTimeStamp     %TimeStamp;                                    >

<!-- ++ Schedule +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<!-- Frequency in ? -->
<!ELEMENT   Schedule         (FirstRunDate,FinalRunDate?,
                              CreateDetails, CancelDetails?)                   >
<!ATTLIST   Schedule
              ProcessName    CDATA                                  #REQUIRED
              Frequency      CDATA                                  #REQUIRED
              Parameters     CDATA                                  #IMPLIED   >

<!ELEMENT   FirstRunDate     EMPTY                                             >
<!ATTLIST   FirstRunDate     %TimeStamp;                                       >

<!ELEMENT   CreateDetails    (AuditDetails)                                    >
<!ELEMENT   CancelDetails    (AuditDetails)                                    >

<!-- ++ Audit details ++++++++++++++++++++++++++++++++++++++++++ -->
<!ELEMENT   AuditDetails    (AuditTime?,AuditText?)                            >
<!ATTLIST   AuditDetails
              RegistrarId   CDATA                                   #IMPLIED
              ActionId      %UID;                                   #IMPLIED   >
<!ELEMENT   AuditTime       (%DateRange;)                                      >
<!ELEMENT   AuditText       (#PCDATA)                                          >


<!-- == Various ============================================================ -->

<!ELEMENT   From             EMPTY                                             >
<!ATTLIST   From             %TimeStamp;                                            >

<!ELEMENT   To               EMPTY                                             >
<!ATTLIST   To               %TimeStamp;                                            >

Attachment: xerces_test.pl
Description: Perl program

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to