.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.40) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{\ . if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" ======================================================================== .\" .IX Title "DTDDIFF 1p" .TH DTDDIFF 1p "2021-01-09" "perl v5.32.0" "User Contributed Perl Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" dtddiff \- Compare two SGML/XML DTDs .SH "SYNOPSIS" .IX Header "SYNOPSIS" .Vb 1 \& dtddiff [options] .Ve .SH "DESCRIPTION" .IX Header "DESCRIPTION" \&\fBdtddiff\fR compares two \s-1SGML/XML\s0 DTDs based upon the \s-1XML\s0 dumps generated by \fBdtdparse\fR. The following summarizes the typically usage of dtddiff: .PP .Vb 3 \& dtdparse \-\-outfile parsed\-dtd1.xml dtd1.dtd \& dtdparse \-\-outfile parsed\-dtd2.xml dtd2.dtd \& dtddiff parsed\-dtd1.xml parsed\-dtd2.xml > dtd.diff .Ve .PP Since dtddiff processes the \s-1XML\s0 dumps from dtdparse, a full reparse of the DTDs is avoided. .PP dtddiff does a structural-based comparision. Therefore, the order of declarations in the DTDs does not affect the comparison. .PP The output generated by dtddiff is similiar in style to a context-based diff done by the program \fBdiff\fR\|(1). The following is an example of the type of output generated: .PP .Vb 10 \& *** DocBook 4.1 DTD \& \-\-\- DocBook 4.2 DTD \& *************** Elements Added \& \-\-\- DocBook 4.2 DTD \-\-\-\- \& + bibliocoverage \& + biblioid \& + bibliorelation \& + bibliosource \& + blockinfo \& + citebiblioid \& + coref \& + errortext \& + personblurb \& + personname \& + refsection \& + refsectioninfo \& + textdata \& *************** Elements Changed \& ... [snip] ... \& \& *** DocBook 4.1 DTD **** \& \& ! entrytbl ::= \& (colspec*, spanspec*, thead?, tbody) \& \-(entrytbl) \& \& entrytbl Attributes: \& ! charoff NUTOKEN #IMPLIED \& ! colname NMTOKEN #IMPLIED \& ! cols NUMBER #REQUIRED \& ! colsep NUMBER #IMPLIED \& ! nameend NMTOKEN #IMPLIED \& ! namest NMTOKEN #IMPLIED \& ! rowsep NUMBER #IMPLIED \& ! spanname NMTOKEN #IMPLIED \& ! tgroupstyle NMTOKEN #IMPLIED \& \& \-\-\- DocBook 4.2 DTD \-\-\-\- \& \& ! entrytbl ::= \& (colspec*, spanspec*, thead?, tbody) \& \& entrytbl Attributes: \& ! charoff CDATA #IMPLIED \& ! colname CDATA #IMPLIED \& ! cols CDATA #REQUIRED \& ! colsep CDATA #IMPLIED \& ! nameend CDATA #IMPLIED \& ! namest CDATA #IMPLIED \& ! rowsep CDATA #IMPLIED \& ! spanname CDATA #IMPLIED \& ! tgroupstyle CDATA #IMPLIED \& \& ... [snip] ... \& \& *** DocBook 4.1 DTD **** \& \& \& graphic Attributes: \& ! depth NUTOKEN #IMPLIED \& ! format [Enumeration] #IMPLIED \& ! BMP, CGM\-CHAR, CGM\- \& ! BINARY, CGM\-CLEAR, \& ! DITROFF, DVI, EPS, EQN, \& ! FAX, GIF, GIF87a, GIF89a, \& ! JPG, JPEG, IGES, PCX, \& ! PIC, PNG, PS, SGML, TBL, \& ! TEX, TIFF, WMF, WPG, \& ! linespecific \& ! scale NUMBER #IMPLIED \& ! scalefit NUMBER #IMPLIED \& ! width NUTOKEN #IMPLIED \& \& \-\-\- DocBook 4.2 DTD \-\-\-\- \& \& \& graphic Attributes: \& + contentdepth CDATA #IMPLIED \& + contentwidth CDATA #IMPLIED \& + valign [Enumeration] #IMPLIED \& + top, middle, bottom \& ! depth CDATA #IMPLIED \& ! format [Enumeration] #IMPLIED \& ! BMP, CGM\-CHAR, CGM\- \& ! BINARY, CGM\-CLEAR, \& ! DITROFF, DVI, EPS, EQN, \& ! FAX, GIF, GIF87a, GIF89a, \& ! JPG, JPEG, IGES, PCX, \& ! PIC, PNG, PS, SGML, TBL, \& ! TEX, TIFF, WMF, WPG, SVG, \& ! linespecific \& ! scale CDATA #IMPLIED \& ! scalefit CDATA #IMPLIED \& ! width CDATA #IMPLIED \& \& ... [snip] ... .Ve .PP Lines starting with a \f(CW\*(C`\- \*(C'\fR (minus followed by a space) denote items removed. Lines starting with a \f(CW\*(C`+ \*(C'\fR (plus followed by a space) denote items added. Lines starting with a \f(CW\*(C`! \*(C'\fR (explanation point followed by a space) denote items changed. .SH "OPTIONS" .IX Header "OPTIONS" .IP "\-\-attributes" 4 .IX Item "--attributes" .PD 0 .IP "\-\-noattributes" 4 .IX Item "--noattributes" .PD Print, or not, element attribute differences. The default is to print differences. .IP "\-\-content\-model\-expanded" 4 .IX Item "--content-model-expanded" .PD 0 .IP "\-\-nocontent\-model\-expanded" 4 .IX Item "--nocontent-model-expanded" .PD Expand, or not expand, element content models during comparison. Expanded models have all parameter entities resolved. The default is to use expanded content model. .IP "\-\-elements" 4 .IX Item "--elements" .PD 0 .IP "\-\-noelements" 4 .IX Item "--noelements" .PD Print, or not, element content model differences. The default is to print differences. .IP "\-\-general\-ents" 4 .IX Item "--general-ents" .PD 0 .IP "\-\-nogeneral\-ents" 4 .IX Item "--nogeneral-ents" .PD Print, or not, general entity differences. The default is to \fBnot\fR print differences. .IP "\-\-parameter\-ents" 4 .IX Item "--parameter-ents" .PD 0 .IP "\-\-noparameter\-ents" 4 .IX Item "--noparameter-ents" .PD Print, or not, parameter entity differences. The default is to \fBnot\fR print differences. .IP "\-\-dump" 4 .IX Item "--dump" Do a textual dump of a \s-1DTD.\s0 When this option is specified, only a single \s-1DTD\s0 is dumped. This is mainly used for debugging purposes. .IP "\-\-version" 4 .IX Item "--version" Print version and synopsis. .IP "\-\-help" 4 .IX Item "--help" Print synopsis and options available. .IP "\-\-man" 4 .IX Item "--man" Print manual page. .SH "SEE ALSO" .IX Header "SEE ALSO" dtdparse, dtddiff2html .PP See SGML::DTDParse for an overview of the DTDParse package. .SH "PREREQUISITES" .IX Header "PREREQUISITES" \&\fBFile::Basename\fR, \&\fBGetopt::Long\fR, \&\fBXml::Parser\fR .SH "AVAILABILITY" .IX Header "AVAILABILITY" <\fIhttp://dtdparse.sourceforge.net/\fR> .SH "AUTHORS" .IX Header "AUTHORS" Earl Hood, .SH "COPYRIGHT AND LICENSE" .IX Header "COPYRIGHT AND LICENSE" See SGML::DTDParse for copyright and license information.