summaryrefslogtreecommitdiff
path: root/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-doc/doc/english/latex-web-companion/xmlstyle')
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/README.ch7124
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/SGMLS.pm893
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/SGMLS/Output.pm225
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/SGMLS/Refs.pm216
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/SGMLS/SGMLS.pm893
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/catalog5
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/catalog.dsssl4
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/catalog.xml2
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/dsssl.cat3
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/dsssl.dtd134
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/empty.dsl8
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/empty.xsl2
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/emptyexample.xml15
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/entable-alt.xml243
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/entable.xml2639
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/fot.dtd507
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/frisotab1exa1.xsl17
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/frisotab1exa2.xsl48
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/inv1html.pl61
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/inv2css.html.save44
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/inv2html.pl61
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/inv2lat.pl76
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/inv3.xml21
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invcss.html.save44
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invfo1.fo4
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invfo1.xsl118
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invfop.pdf247
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invhtml.dsl90
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invhtml2.xsl42
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invit.css31
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invitation.dsl66
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invitation.dtd12
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invitation.sty30
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invitation.tex.save27
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invitation.xml24
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invitation1.tex22
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invitation2.dtd15
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invitation2.html39
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invitation2.xml21
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invitationfr.sty49
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invlat1.xsl66
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invptex.pdfbin0 -> 4618 bytes
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invtab1.dsl82
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invtab2.dsl75
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/isotab1to2-bis.xsl22
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/isotab1to2.xsl42
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/isotabexa1.xsl20
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/isotabexa2.xsl73
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/sectionexa.xml22
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/sectionexa.xsl73
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/sgmlspl.pl317
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/skel.pl178
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/style-sheet.dtd41
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/templatest.xml3
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/templatest.xsl41
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/templatestnok.xsl41
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/templatestok.xsl31
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/test-SGMLS.pl13
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/writefiles.xml9
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/wrong.xml15
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/xml.dcl179
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/xslexa1.xsl20
62 files changed, 8485 insertions, 0 deletions
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/README.ch7 b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/README.ch7
new file mode 100644
index 00000000000..ddbdea5091c
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/README.ch7
@@ -0,0 +1,124 @@
+Examples in Chapter 7 of the LaTeX Web Companion
+
+Section 7.3
+===========
+
+To run the examples in this section you have to install nsgmls
+(as for chapter 6) and Megginson's SGMLSpm. You also have to
+set the environment variable SGML_CATALOG_FILES as follows:
+
+Bourne shell
+
+SGML_CATALOG_FILES=catalog.xml
+export SGML_CATALOG_FILES
+
+C shell
+
+setenv SGML_CATALOG_FILES catalog.xml
+
+Then you can type:
+
+nsgmls invitation.xml | perl sgmlspl.pl inv2lat.pl > invitation.tex
+
+Section 7.4
+===========
+
+With similar settings for the environment variable SGML_CATALOG_FILES
+we can generate HTML files using invitation.xml and invitation2.xml.
+
+We type the command (Section 7.4.4)
+
+nsgmls invitation.xml | perl sgmlspl.pl inv1html.pl > invcss.html
+
+and (Section 7.4.5)
+
+nsgmls invitation2.xml | perl sgmlspl.pl inv2html.pl > inv2css.html
+
+Together with the file invit.css, shown in Section 7.4.4, you will
+obtain with a browser, which correctly understands how to include CSS
+files, a view as the one shown in Figure 7.2 (some browsers might need
+you to include the content of invit.css inside a <STYLE> tag pair
+inside the HTML file). Browsers can treat empty lines differently, so
+you might observe more or less white space between paragraphs
+depending on the browser used.
+
+Section 7.5
+===========
+
+To run jade (and DSSSL style-sheets) we need a different catalog
+file, so we redefine SGML_CATALOG_FILES=catalog.dsssl (or the
+equivalent in C-like shells).
+
+Then we run as shown on page 320 (copying element content through)
+
+jade -t xml -d empty.dsl invitation.xml
+
+Then you can run
+
+jade -d invitation.dsl invitation.xml
+
+
+Files in this directory:
+========================
+
+Section 7.3
++++++++++++
+
+invitation.xml XML source introduced in Section 6.4.2.2
+invitation.dtd DTD source introduced in Section 6.4.3
+invitation.tex.save result of Perl run of Section 7.3.2
+invitation.sty package file for invitation examples (Section 7.3.2)
+catalog.xml catalog file for nsgmls to define XML declaration
+
+inv1html.pl Perl file to run example of Section 7.4.4
+inv2lat.pl Perl file to run example of Section 7.3.2
+sgmlspl.pl Perl files distributed with the SGMLSpl package
+skel.pl " "
+SGMLS.pm " "
+SGMLS/Output.pm " "
+SGMLS/Refs.pm " "
+
+Section 7.4
++++++++++++
+
+invitation2.xml XML source introduced in Section 7.4.5
+invitation2.dtd DTD source introduced in Section 7.4.5
+invit.css CSS style sheet introduced in Section 7.4.4
+invcss.html.save result HTML output for Section 7.4.4
+inv2css.html.save result HTML output for Section 7.4.6
+
+Section 7.5
++++++++++++
+
+catalog.dsssl catalog file for jade to define DSSSL style-sheet
+empty.dsl trivial DSSSL style-sheet copying element content
+ through to the output
+invitation.dsl used in Section 7.5.3.1
+invtab1.dsl used in Section 7.5.3.2
+invtab2.dsl used in Section 7.5.3.3
+invhtml.dsl used in Section 7.5.5
+
+Section 7.6
++++++++++++
+
+xslexa1.xsl formatting object example (Section 7.6.1)
+
+empty.xsl trivial XSL style-sheet (Section 7.6.3)
+
+sectionexa.xml example XML source
+sextionexa.xsl ... and XSL style-sheet (Section 7.6.5.7)
+
+writefiles.xml example XML source
+writefile.xsl ... and XSL style-sheet (Section 7.6.8.2)
+
+makesum.xml example XML source
+makesum.xsl ... and XSL style-sheet (Section 7.6.8.2)
+
+invlat1.xsl XSL style-sheet for Section 7.6.9
+invhtml2.xsl " "
+invfo1.xsl XSL style-sheet for Section 7.6.10
+ (was modified to retain August 1998 syntax for
+ fo's since fop is not yet updated)
+
+invfo1.fop intermediate output for fop (contains fo's)
+invfo1.pdf generated PDF output \ No newline at end of file
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/SGMLS.pm b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/SGMLS.pm
new file mode 100644
index 00000000000..b29395eed36
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/SGMLS.pm
@@ -0,0 +1,893 @@
+package SGMLS;
+use Carp;
+
+$version = '$Revision: 1.14 $';
+
+=head1 NAME
+
+SGMLS - class for postprocessing the output from the B<sgmls> and
+B<nsgmls> parsers.
+
+=head1 SYNOPSIS
+
+ use SGMLS;
+
+ my $parse = new SGMLS(STDIN);
+
+ my $event = $parse->next_event;
+ while ($event) {
+
+ SWITCH: {
+
+ ($event->type eq 'start_element') && do {
+ my $element = $event->data; # An object of class SGMLS_Element
+ [[your code for the beginning of an element]]
+ last SWITCH;
+ };
+
+ ($event->type eq 'end_element') && do {
+ my $element = $event->data; # An object of class SGMLS_Element
+ [[your code for the end of an element]]
+ last SWITCH;
+ };
+
+ ($event->type eq 'cdata') && do {
+ my $cdata = $event->data; # A string
+ [[your code for character data]]
+ last SWITCH;
+ };
+
+ ($event->type eq 'sdata') && do {
+ my $sdata = $event->data; # A string
+ [[your code for system data]]
+ last SWITCH;
+ };
+
+ ($event->type eq 're') && do {
+ [[your code for a record end]]
+ last SWITCH;
+ };
+
+ ($event->type eq 'pi') && do {
+ my $pi = $event->data; # A string
+ [[your code for a processing instruction]]
+ last SWITCH;
+ };
+
+ ($event->type eq 'entity') && do {
+ my $entity = $event->data; # An object of class SGMLS_Entity
+ [[your code for an external entity]]
+ last SWITCH;
+ };
+
+ ($event->type eq 'start_subdoc') && do {
+ my $entity = $event->data; # An object of class SGMLS_Entity
+ [[your code for the beginning of a subdoc entity]]
+ last SWITCH;
+ };
+
+ ($event->type eq 'end_subdoc') && do {
+ my $entity = $event->data; # An object of class SGMLS_Entity
+ [[your code for the end of a subdoc entity]]
+ last SWITCH;
+ };
+
+ ($event->type eq 'conforming') && do {
+ [[your code for a conforming document]]
+ last SWITCH;
+ };
+
+ die "Internal error: unknown event type " . $event->type . "\n";
+ }
+
+ $event = $parse->next_event;
+ }
+
+=head1 DESCRIPTION
+
+The B<SGMLS> package consists of several related classes: see
+L<"SGMLS">, L<"SGMLS_Event">, L<"SGMLS_Element">,
+L<"SGMLS_Attribute">, L<"SGMLS_Notation">, and L<"SGMLS_Entity">. All
+of these classes are available when you specify
+
+ use SGMLS;
+
+Generally, the only object which you will create explicitly will
+belong to the C<SGMLS> class; all of the others will then be created
+automatically for you over the course of the parse. Much fuller
+documentation is available in the C<.sgml> files in the C<DOC/>
+directory of the C<SGMLS.pm> distribution.
+
+=head2 The C<SGMLS> class
+
+This class holds a single parse. When you create an instance of it,
+you specify a file handle as an argument (if you are reading the
+output of B<sgmls> or B<nsgmls> from a pipe, the file handle will
+ordinarily be C<STDIN>):
+
+ my $parse = new SGMLS(STDIN);
+
+The most important method for this class is C<next_event>, which reads
+and returns the next major event from the input stream. It is
+important to note that the C<SGMLS> class deals with most B<ESIS>
+events itself: attributes and entity definitions, for example, are
+collected and stored automatically and invisibly to the user. The
+following list contains all of the methods for the C<SGMLS> class:
+
+=item C<next_event()>: Return an C<SGMLS_Event> object containing the
+next major event from the SGML parse.
+
+=item C<element()>: Return an C<SGMLS_Element> object containing the
+current element in the document.
+
+=item C<file()>: Return a string containing the name of the current
+SGML source file (this will work only if the C<-l> option was given to
+B<sgmls> or B<nsgmls>).
+
+=item C<line()>: Return a string containing the current line number
+from the source file (this will work only if the C<-l> option was
+given to B<sgmls> or B<nsgmls>).
+
+=item C<appinfo()>: Return a string containing the C<APPINFO>
+parameter (if any) from the SGML declaration.
+
+=item C<notation(NNAME)>: Return an C<SGMLS_Notation> object
+representing the notation named C<NNAME>. With newer versions of
+B<nsgmls>, all notations are available; otherwise, only the notations
+which are actually used will be available.
+
+=item C<entity(ENAME)>: Return an C<SGMLS_Entity> object representing
+the entity named C<ENAME>. With newer versions of B<nsgmls>, all
+entities are available; otherwise, only external data entities and
+internal entities used as attribute values will be available.
+
+=item C<ext()>: Return a reference to an associative array for
+user-defined extensions.
+
+
+=head2 The C<SGMLS_Event> class
+
+This class holds a single major event, as generated by the
+C<next_event> method in the C<SGMLS> class. It uses the following
+methods:
+
+=item C<type()>: Return a string describing the type of event:
+"start_element", "end_element", "cdata", "sdata", "re", "pi",
+"entity", "start_subdoc", "end_subdoc", and "conforming". See
+L<"SYNOPSIS">, above, for the values associated with each of these.
+
+=item C<data()>: Return the data associated with the current event (if
+any). For "start_element" and "end_element", returns an
+C<SGMLS_ELement> object; for "entity", "start_subdoc", and
+"end_subdoc", returns an C<SGMLS_Entity> object; for "cdata", "sdata",
+and "pi", returns a string; and for "re" and "conforming", returns the
+empty string. See L<"SYNOPSIS">, above, for an example of this
+method's use.
+
+=item C<key()>: Return a string key to the event, such as an element
+or entity name (otherwise, the same as C<data()>).
+
+=item C<file()>: Return the current file name, as in the C<SGMLS>
+class.
+
+=item C<line()>: Return the current line number, as in the C<SGMLS>
+class.
+
+=item C<element()>: Return the current element, as in the C<SGMLS>
+class.
+
+=item C<parse()>: Return the C<SGMLS> object which generated the
+event.
+
+=item C<entity(ENAME)>: Look up an entity, as in the C<SGMLS> class.
+
+=item C<notation(ENAME)>: Look up a notation, as in the C<SGMLS>
+class.
+
+=item C<ext()>: Return a reference to an associative array for
+user-defined extensions.
+
+
+=head2 The C<SGMLS_Element> class
+
+This class is used for elements, and contains all associated
+information (such as the element's attributes). It recognises the
+following methods:
+
+=item C<name()>: Return a string containing the name, or Generic
+Identifier, of the element, in upper case.
+
+=item C<parent()>: Return the C<SGMLS_Element> object for the
+element's parent (if any).
+
+=item C<parse()>: Return the C<SGMLS> object for the current parse.
+
+=item C<attributes()>: Return a reference to an associative array of
+attribute names and C<SGMLS_Attribute> structures. Attribute names
+will be all in upper case.
+
+=item C<attribute_names()>: Return an array of strings containing the
+names of all attributes defined for the current element, in upper
+case.
+
+=item C<attribute(ANAME)>: Return the C<SGMLS_Attribute> structure for
+the attribute C<ANAME>.
+
+=item C<set_attribute(ATTRIB)>: Add the C<SGMLS_Attribute> object
+C<ATTRIB> to the current element, replacing any other attribute
+structure with the same name.
+
+=item C<in(GI)>: Return C<true> (ie. 1) if the string C<GI> is the
+name of the current element's parent, or C<false> (ie. 0) if it is
+not.
+
+=item C<within(GI)>: Return C<true> (ie. 1) if the string C<GI> is the
+name of any of the ancestors of the current element, or C<false>
+(ie. 0) if it is not.
+
+=item C<ext()>: Return a reference to an associative array for
+user-defined extensions.
+
+
+=head2 The C<SGMLS_Attribute> class
+
+Each instance of an attribute for each C<SGMLS_Element> is an object
+belonging to this class, which recognises the following methods:
+
+=item C<name()>: Return a string containing the name of the current
+attribute, all in upper case.
+
+=item C<type()>: Return a string containing the type of the current
+attribute, all in upper case. Available types are "IMPLIED", "CDATA",
+"NOTATION", "ENTITY", and "TOKEN".
+
+=item C<value()>: Return the value of the current attribute, if any.
+This will be an empty string if the type is "IMPLIED", a string of
+some sort if the type is "CDATA" or "TOKEN" (if it is "TOKEN", you may
+want to split the string into a series of separate tokens), an
+C<SGMLS_Notation> object if the type is "NOTATION", or an
+C<SGMLS_Entity> object if the type is "ENTITY". Note that if the
+value is "CDATA", it will I<not> have escape sequences for 8-bit
+characters, record ends, or SDATA processed -- that will be your
+responsibility.
+
+=item C<is_implied()>: Return C<true> (ie. 1) if the value of the
+attribute is implied, or C<false> (ie. 0) if it is specified in the
+document.
+
+=item C<set_type(TYPE)>: Change the type of the attribute to the
+string C<TYPE> (which should be all in upper case). Available types
+are "IMPLIED", "CDATA", "NOTATION", "ENTITY", and "TOKEN".
+
+=item C<set_value(VALUE)>: Change the value of the attribute to
+C<VALUE>, which may be a string, an C<SGMLS_Entity> object, or an
+C<SGMLS_Notation> subject, depending on the attribute's type.
+
+=item C<ext()>: Return a reference to an associative array available
+for user-defined extensions.
+
+
+=head2 The C<SGMLS_Notation> class
+
+All declared notations appear as objects belonging to this class,
+which recognises the following methods:
+
+=item C<name()>: Return a string containing the name of the notation.
+
+=item C<sysid()>: Return a string containing the system identifier of
+the notation, if any.
+
+=item C<pubid()>: Return a string containing the public identifier of
+the notation, if any.
+
+=item C<ext()>: Return a reference to an associative array available
+for user-defined extensions.
+
+
+=head2 The C<SGMLS_Entity> class
+
+All declared entities appear as objects belonging to this class, which
+recognises the following methods:
+
+=item C<name()>: Return a string containing the name of the entity, in
+mixed case.
+
+=item C<type()>: Return a string containing the type of the entity, in
+upper case. Available types are "CDATA", "SDATA", "NDATA" (external
+entities only), "SUBDOC", "PI" (newer versions of B<nsgmls> only), or
+"TEXT" (newer versions of B<nsgmls> only).
+
+=item C<value()>: Return a string containing the value of the entity,
+if it is internal.
+
+=item C<sysid()>: Return a string containing the system identifier of
+the entity (if any), if it is external.
+
+=item C<pubid()>: Return a string containing the public identifier of
+the entity (if any), if it is external.
+
+=item C<filenames()>: Return an array of strings containing any file
+names generated from the identifiers, if the entity is external.
+
+=item C<notation()>: Return the C<SGMLS_Notation> object associated
+with the entity, if it is external.
+
+=item C<data_attributes()>: Return a reference to an associative array
+of data attribute names (in upper case) and the associated
+C<SGMLS_Attribute> objects for the current entity.
+
+=item C<data_attribute_names()>: Return an array of data attribute
+names (in upper case) for the current entity.
+
+=item C<data_attribute(ANAME)>: Return the C<SGMLS_Attribute> object
+for the data attribute named C<ANAME> for the current entity.
+
+=item C<set_data_attribute(ATTRIB)>: Add the C<SGMLS_Attribute> object
+C<ATTRIB> to the current entity, replacing any other data attribute
+with the same name.
+
+=item C<ext()>: Return a reference to an associative array for
+user-defined extensions.
+
+
+=head1 AUTHOR AND COPYRIGHT
+
+Copyright 1994 and 1995 by David Megginson,
+C<dmeggins@aix1.uottawa.ca>. Distributed under the terms of the Gnu
+General Public License (version 2, 1991) -- see the file C<COPYING>
+which is included in the B<SGMLS.pm> distribution.
+
+
+=head1 SEE ALSO:
+
+L<SGMLS::Output> and L<SGMLS::Refs>.
+
+=cut
+
+#
+# Data class for a single SGMLS ESIS output event. The object will
+# keep information about its own current element and, if available,
+# the source file and line where the event appeared.
+#
+# Event types are as follow:
+# Event Data
+# -------------------------------------------------------
+# 'start_element' SGMLS_Element
+# 'end_element' SGMLS_Element
+# 'cdata' string
+# 'sdata' string
+# 're' [none]
+# 'pi' string
+# 'entity' SGMLS_Entity
+# 'start_subdoc' SGMLS_Entity
+# 'end_subdoc' SGMLS_Entity
+# 'conforming' [none]
+#
+package SGMLS_Event;
+use Carp;
+ # Constructor.
+sub new {
+ my ($class,$type,$data,$parse) = @_;
+ return bless [$type,
+ $data,
+ $parse->file,
+ $parse->line,
+ $parse->element,
+ $parse,
+ {}
+ ];
+}
+ # Accessors.
+sub type { return $_[0]->[0]; }
+sub data { return $_[0]->[1]; }
+sub file { return $_[0]->[2]; }
+sub line { return $_[0]->[3]; }
+sub element { return $_[0]->[4]; }
+sub parse { return $_[0]->[5]; }
+sub ext { return $_[0]->[6]; }
+ # Generate a key for the event.
+sub key {
+ my $self = shift;
+ if (ref($self->data) eq SGMLS_Element ||
+ ref($self->data) eq SGMLS_Entity) {
+ return $self->data->name;
+ } else {
+ return $self->data;
+ }
+}
+ # Look up an entity in the parse.
+sub entity {
+ my ($self,$ename) = (@_);
+ return $self->parse->entity($ename);
+}
+ # Look up a notation in the parse.
+sub notation {
+ my ($self,$nname) = (@_);
+ return $self->parse->notation($nname);
+}
+
+
+#
+# Data class for a single SGML attribute. The object will know its
+# type, and will keep a value unless the type is 'IMPLIED', in which
+# case no meaningful value is available.
+#
+# Attribute types are as follow:
+# Type Value
+# ---------------------------------------
+# IMPLIED [none]
+# CDATA string
+# NOTATION SGMLS_Notation
+# ENTITY SGMLS_Entity
+# TOKEN string
+#
+package SGMLS_Attribute;
+use Carp;
+ # Constructor.
+sub new {
+ my ($class,$name,$type,$value) = @_;
+ return bless [$name,$type,$value,{}];
+}
+ # Accessors.
+sub name { return $_[0]->[0]; }
+sub type { return $_[0]->[1]; }
+sub value { return $_[0]->[2]; }
+sub ext { return $_[0]->[3]; }
+ # Return 1 if the value is implied.
+sub is_implied {
+ my $self = shift;
+ return ($self->type eq 'IMPLIED');
+}
+ # Set the attribute's type.
+sub set_type {
+ my ($self,$type) = @_;
+ $self->[1] = $type;
+}
+
+ # Set the attribute's value.
+sub set_value {
+ my ($self,$value) = @_;
+ $self->[2] = $value;
+}
+
+
+#
+# Data class for a single element of an SGML document. The object will not
+# know about its children (data or other elements), but it keeps track of its
+# parent and its attributes.
+#
+package SGMLS_Element;
+use Carp;
+ # Constructor.
+sub new {
+ my ($class,$name,$parent,$attributes,$parse) = @_;
+ return bless [$name,$parent,$attributes,$parse,{}];
+}
+ # Accessors.
+sub name { return $_[0]->[0]; }
+sub parent { return $_[0]->[1]; }
+sub parse { return $_[0]->[3]; }
+sub ext { return $_[0]->[4]; }
+
+ # Return the associative array of
+ # attributes, parsing it the first
+ # time through.
+sub attributes {
+ my $self = shift;
+ if (ref($self->[2]) eq 'ARRAY') {
+ my $new = {};
+ foreach (@{$self->[2]}) {
+ /^(\S+) (IMPLIED|CDATA|NOTATION|ENTITY|TOKEN)( (.*))?$/
+ || croak "Bad attribute event data: $_";
+ my ($name,$type,$value) = ($1,$2,$4);
+ if ($type eq 'NOTATION') {
+ $value = $self->parse->notation($value);
+ } elsif ($type eq 'ENTITY') {
+ $value = $self->parse->entity($value);
+ }
+ $new->{$name} =
+ new SGMLS_Attribute($name,$type,$value);
+ }
+ $self->[2] = $new;
+ }
+ return $self->[2];
+}
+ # Return a list of attribute names.
+sub attribute_names {
+ my $self = shift;
+ return keys(%{$self->attributes});
+}
+ # Find an attribute by name.
+sub attribute {
+ my ($self,$aname) = @_;
+ return $self->attributes->{$aname};
+}
+ # Add a new attribute.
+sub set_attribute {
+ my ($self,$attribute) = @_;
+ $self->attributes->{$attribute->name} = $attribute;
+}
+ # Check parent by name.
+sub in {
+ my ($self,$name) = @_;
+ if ($self->parent && $self->parent->name eq $name) {
+ return $self->parent;
+ } else {
+ return '';
+ }
+}
+ # Check ancestors by name.
+sub within {
+ my ($self,$name) = @_;
+ for ($self = $self->parent; $self; $self = $self->parent) {
+ return $self if ($self->name eq $name);
+ }
+ return '';
+}
+
+
+#
+# Data class for an SGML notation. The only information available
+# will be the name, the sysid, and the pubid -- the rest is up to the
+# processing application.
+#
+package SGMLS_Notation;
+use Carp;
+ # Constructor.
+sub new {
+ my ($class,$name,$sysid,$pubid) = @_;
+ return bless [$name,$sysid,$pubid,{}];
+}
+ # Accessors.
+sub name { return $_[0]->[0]; }
+sub sysid { return $_[0]->[1]; }
+sub pubid { return $_[0]->[2]; }
+sub ext { return $_[0]->[3]; }
+
+#
+# Data class for a single SGML entity. All entities will have a name
+# and a type. Internal entities will be of type CDATA or SDATA only,
+# and will have a value rather than a notation and sysid/pubid. External
+# CDATA, NDATA, and SDATA entities will always have notations attached,
+# and SUBDOC entities are always external (and will be parsed by SGMLS).
+#
+# Entity types are as follow:
+# Type Internal External
+# -----------------------------------------------------------
+# CDATA x x
+# NDATA x
+# SDATA x x
+# SUBDOC x
+# (newer versions of NSGMLS only:)
+# PI x
+# TEXT x x
+#
+package SGMLS_Entity;
+use Carp;
+ # Constructor.
+sub new {
+ my ($class,$name,$type,$value,$sysid,$pubid,$filenames,$notation) = @_;
+ return bless [$name,$type,$value,{},$sysid,$pubid,$filenames,$notation,{}];
+}
+ # Accessors.
+sub name { return $_[0]->[0]; }
+sub type { return $_[0]->[1]; }
+sub value { return $_[0]->[2]; }
+sub data_attributes { return $_[0]->[3]; }
+sub sysid { return $_[0]->[4]; }
+sub pubid { return $_[0]->[5]; }
+sub filenames { return $_[0]->[6]; }
+sub notation { return $_[0]->[7]; }
+sub ext { return $_[0]->[8]; }
+ # Return a list of data-attribute names.
+sub data_attribute_names {
+ my $self = shift;
+ return keys(%{$self->data_attributes});
+}
+ # Find a data attribute by name.
+sub data_attribute {
+ my ($self,$aname) = @_;
+ return $self->data_attributes->{$aname};
+}
+ # Add a new data attribute.
+sub set_data_attribute {
+ my ($self,$data_attribute) = @_;
+ $self->data_attributes()->{$data_attribute->name} = $data_attribute;
+}
+
+
+
+#
+# Data class for a single SGMLS parse. The constructor takes a single
+# argument, a file handle from which the SGMLS ESIS events will be read
+# (it may be a pipe, a fifo, a file, a socket, etc.). It is essential
+# that no two SGMLS objects have the same handle.
+#
+package SGMLS;
+ # Constructor.
+sub new {
+ my ($class,$handle) = @_;
+
+ # Force unqualified filehandles into caller's package
+ my ($package) = caller;
+ $handle =~ s/^[^':]+$/$package\:\:$&/;
+
+ return bless {
+ 'handle' => $handle,
+ 'event_stack' => [],
+ 'current_element' => '',
+ 'current_attributes' => [],
+ 'current_entities' => {},
+ 'entity_stack' => [],
+ 'current_notations' => {},
+ 'notation_stack' => [],
+ 'current_sysid' => '',
+ 'current_pubid' => '',
+ 'current_filenames' => [],
+ 'current_file' => '',
+ 'current_line' => '',
+ 'appinfo' => '',
+ 'ext' => {}
+ };
+}
+ # Accessors.
+sub element { return $_[0]->{'current_element'}; }
+sub file { return $_[0]->{'current_file'}; }
+sub line { return $_[0]->{'current_line'}; }
+sub appinfo { return $_[0]->{'appinfo'}; }
+sub ext { return $_[0]->{'ext'}; }
+
+ # Given its name, look up a notation.
+sub notation {
+ my ($self,$nname) = @_;
+ return $self->{'current_notations'}->{$nname};
+}
+ # Given its name, look up an entity.
+sub entity {
+ my ($self,$ename) = @_;
+ return $self->{'current_entities'}->{$ename};
+}
+
+ # Return the next SGMLS_Event, or ''
+ # if the document has finished.
+sub next_event {
+ my $self = shift;
+ my $handle = $self->{'handle'};
+
+ # If there are any queued up events,
+ # grab them first.
+ if ($#{$self->{event_stack}} >= 0) {
+ return pop @{$self->{event_stack}};
+ }
+
+ dispatch: while (!eof($handle)) {
+
+ my $c = getc($handle);
+ my $data = <$handle>;
+ chop $data;
+
+ ($c eq '(') && do { # start an element
+ $self->{'current_element'} =
+ new SGMLS_Element($data,
+ $self->{'current_element'},
+ $self->{'current_attributes'},
+ $self);
+ $self->{'current_attributes'} = [];
+ return new SGMLS_Event('start_element',
+ $self->{'current_element'},
+ $self);
+ };
+
+ ($c eq ')') && do { # end an element
+ my $old = $self->{'current_element'};
+ $self->{'current_element'} = $self->{'current_element'}->parent;
+ return new SGMLS_Event('end_element',$old,$self);
+ };
+
+ ($c eq '-') && do { # some data
+ my $sdata_flag = 0;
+ my $out = '';
+ while ($data =~ /\\(\\|n|\||[0-7]{1,3})/) {
+ $out .= $`;
+ $data = $';
+ # beginning or end of SDATA
+ if ($1 eq '|') {
+ if ("$out" ne '') {
+ unshift(@{$self->{'event_stack'}},
+ new SGMLS_Event($sdata_flag?'sdata':'cdata',
+ $out,
+ $self));
+ $out = '';
+ }
+ $sdata_flag = !$sdata_flag;
+ # record end
+ } elsif ($1 eq 'n') {
+ if ("$out" ne '') {
+ unshift(@{$self->{'event_stack'}},
+ new SGMLS_Event($sdata_flag?'sdata':'cdata',
+ $out,
+ $self));
+ $out = '';
+ }
+ unshift(@{$self->{'event_stack'}},
+ new SGMLS_Event('re','',$self));
+ } elsif ($1 eq '\\') {
+ $out .= '\\';
+ } else {
+ $out .= chr(oct($1));
+ }
+ }
+ $out .= $data;
+ if ("$out" ne '') {
+ unshift(@{$self->{'event_stack'}},
+ new SGMLS_Event($sdata_flag?'sdata':'cdata',
+ $out,
+ $self));
+ }
+ return $self->next_event;
+ };
+
+ ($c eq '&') && do { # external entity reference
+ return new SGMLS_Event('entity',
+ ($self->{'current_entities'}->{$data}
+ || croak "Unknown external entity: $data\n"),
+ $self);
+ };
+
+ ($c eq '?') && do { # processing instruction
+ return new SGMLS_Event('pi',
+ $data,
+ $self);
+ };
+
+ ($c eq 'A') && do { # attribute declaration
+ # (will parse only on demand)
+ push @{$self->{'current_attributes'}}, $data;
+ next dispatch;
+ };
+
+ ($c eq 'a') && do { # link attribute declaration
+ # NOT YET IMPLEMENTED!
+ next dispatch;
+ };
+
+ ($c eq 'D') && do { # data attribute declaration
+ $data =~ /^(\S+) (\S+) (\S+)( (.*))?$/
+ || croak "Bad data-attribute event data: $data";
+ my ($ename,$aname,$type,$value) = ($1,$2,$3,$5);
+ my $entity = $self->{'current_entities'}->{$ename};
+ my $attribute = new SGMLS_Attribute($aname,$type,$value);
+ $entity->set_data_attribute($attribute);
+ next dispatch;
+ };
+
+ ($c eq 'N') && do { # notation declaration
+ $self->{'current_notations'}->{$data} =
+ new SGMLS_Notation($data,
+ $self->{'current_sysid'},
+ $self->{'current_pubid'});
+ $self->{'current_sysid'} = '';
+ $self->{'current_pubid'} = '';
+ next dispatch;
+ };
+
+ ($c eq 'E') && do { # external entity declaration
+ $data =~ /^(\S+) (\S+) (\S+)$/
+ || croak "Bad external entity event data: $data";
+ my ($name,$type,$nname) = ($1,$2,$3);
+ my $notation = $self->{'current_notations'}->{$nname} if $nname;
+ $self->{'current_entities'}->{$name} =
+ new SGMLS_Entity($name,
+ $type,
+ '',
+ $self->{'current_sysid'},
+ $self->{'current_pubid'},
+ $self->{'current_filenames'},
+ $notation);
+ $self->{'current_sysid'} = '';
+ $self->{'current_pubid'} = '';
+ $self->{'current_filenames'} = [];
+ next dispatch;
+ };
+
+ ($c eq 'I') && do { # internal entity declaration
+ $data =~ /^(\S+) (\S+) (.*)$/
+ || croak "Bad external entity event data: $data";
+ my ($name,$type,$value) = ($1,$2,$3);
+ $self->{'current_entities'}->{$name} =
+ new SGMLS_Entity($name, $type, $value);
+ next dispatch;
+ };
+
+ ($c eq 'T') && do { # external text entity declaration
+ $self->{'current_entities'}->{$data} =
+ new SGMLS_Entity($data,
+ 'TEXT',
+ '',
+ $self->{'current_sysid'},
+ $self->{'current_pubid'},
+ $self->{'current_filenames'},
+ '');
+ $self->{'current_sysid'} = '';
+ $self->{'current_pubid'} = '';
+ $self->{'current_filenames'} = [];
+ next dispatch;
+ };
+
+ ($c eq 'S') && do { # subdocument entity declaration
+ $self->{'current_entities'}->{$data} =
+ new SGMLS_Entity($data,
+ 'SUBDOC',
+ '',
+ $self->{'current_sysid'},
+ $self->{'current_pubid'},
+ $self->{'current_filenames'},
+ '');
+ $self->{'current_sysid'} = '';
+ $self->{'current_pubid'} = '';
+ $self->{'current_filenames'} = [];
+ next dispatch;
+ };
+
+ ($c eq 's') && do { # system id
+ $self->{'current_sysid'} = $data;
+ next dispatch;
+ };
+
+ ($c eq 'p') && do { # public id
+ $self->{'current_pubid'} = $data;
+ next dispatch;
+ };
+
+ ($c eq 'f') && do { # generated filename
+ push @{$self->{'current_filenames'}}, $data;
+ next dispatch;
+ };
+
+ ($c eq '{') && do { # begin subdocument entity
+ my $subdoc = ($self->{'current_entities'}->{$data}||
+ croak "Unknown SUBDOC entity $data\n");
+ push @{$self->{'notation_stack'}}, $self->{'current_notations'};
+ push @{$self->{'entity_stack'}}, $self->{'current_entities'};
+ $self->{'current_notations'} = {};
+ $self->{'current_entities'} = {};
+ return new SGMLS_Event('start_subdoc',
+ $subdoc,
+ $self);
+ };
+
+ ($c eq '}') && do { # end subdocument entity
+ $self->{'current_notations'} = pop @{$self->{'notation_stack'}};
+ $self->{'current_entities'} = pop @{$self->{'entity_stack'}};
+ return new SGMLS_Event('end_subdoc',
+ ($self->{'current_entities'}->{$data} ||
+ croak "Unknown SUBDOC entity $data\n"),
+ $self);
+ };
+
+ ($c eq 'L') && do { # line number (and file name)
+ $data =~ /^(\d+)( (.*))?$/;
+ $self->{'current_line'} = $1;
+ $self->{'current_file'} = $3 if $3;
+ next dispatch;
+ };
+
+ ($c eq '#') && do { # APPINFO parameter
+ $self->{'appinfo'} = $data;
+ next dispatch;
+ };
+
+ ($c eq 'C') && do { # document is conforming
+ return new SGMLS_Event('conforming','',$self);
+ };
+ }
+ return '';
+}
+
+1;
+
+########################################################################
+# Local Variables:
+# mode: perl
+# End:
+########################################################################
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/SGMLS/Output.pm b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/SGMLS/Output.pm
new file mode 100644
index 00000000000..4758bfa80fd
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/SGMLS/Output.pm
@@ -0,0 +1,225 @@
+package SGMLS::Output;
+use Carp;
+
+use Exporter;
+@ISA = Exporter;
+@EXPORT = qw(output push_output pop_output);
+
+$version = '$Id: Output.pm,v 1.6 1995/12/05 12:21:51 david Exp $';
+
+=head1 NAME
+
+SGMLS::Output - Stack-based Output Procedures
+
+=head1 SYNOPSIS
+
+ use SGMLS::Output;
+
+To print a string to the current output destination:
+
+ output($data);
+
+To push a new output level to the filehandle DATA:
+
+ push_output('handle',DATA);
+
+To push a new output level to the file "foo.data" (which will be
+opened and closed automatically):
+
+ push_output('file','foo.data');
+
+To push a new output level to a pipe to the shell command "sort":
+
+ push_output('pipe','sort');
+
+To push a new output level I<appending> to the file "foo.data":
+
+ push_output('append','foo.data');
+
+To push a new output level to an empty string:
+
+ push_output('string');
+
+To push a new output level appending to the string "David is ":
+
+ push_output('string',"David is ");
+
+To push a new output level to The Great Beyond:
+
+ push_output('nul');
+
+To revert to the previous output level:
+
+ pop_output();
+
+To revert to the previous output level, returning the contents of an
+output string:
+
+ $data = pop_output();
+
+=head1 DESCRIPTION
+
+This library allows redirectable, stack-based output to files, pipes,
+handles, strings, or nul. It is especially useful for packages like
+L<SGMLS>, since handlers for individual B<SGML> elements can
+temporarily change and restore the default output destination. It is
+also particularly useful for capturing the contents of an element (and
+its sub-elements) in a string.
+
+Example:
+
+ sgmls('<title>', sub{ push_output('string'); });
+ sgmls('</title>', sub{ $title = pop_output(); });
+
+In between, anything sent to B<output> (such as CDATA) will be
+accumulated in the string returned from B<pop_output()>.
+
+Example:
+
+ sgmls('<tei.header>', sub { push_output('nul'); });
+ sgmls('</tei.header>', sub { pop_output(); });
+
+All output will be ignored until the header has finished.
+
+
+=head1 AUTHOR AND COPYRIGHT
+
+Copyright 1994 and 1995 by David Megginson,
+C<dmeggins@aix1.uottawa.ca>. Distributed under the terms of the Gnu
+General Public License (version 2, 1991) -- see the file C<COPYING>
+which is included in the B<SGMLS.pm> distribution.
+
+
+=head1 SEE ALSO:
+
+L<SGMLS>.
+
+=cut
+
+#
+# Anonymous subroutines for handling different types of references.
+#
+$output_handle_sub = sub {
+ print $current_output_data @_;
+};
+
+$output_file_sub = sub {
+ print $current_output_data @_;
+};
+
+$output_string_sub = sub {
+ $current_output_data .= shift;
+ foreach (@_) {
+ $current_output_data .= $, . $_;
+ }
+ $current_output_data .= $\;
+};
+
+$output_nul_sub = sub {};
+
+#
+# Status variables
+#
+$current_output_type = 'handle';
+$current_output_data = STDOUT;
+$current_output_sub = $output_handle_sub;
+@output_stack = qw();
+
+#
+# Externally-visible functions
+#
+
+ # Send data to the output.
+sub output {
+ &{$current_output_sub}(@_);
+}
+
+ # Push a new output destination.
+sub push_output {
+ my ($type,$data) = @_;
+ push @output_stack, [$current_output_type,$current_output_data,
+ $current_output_sub];
+ SWITCH: {
+ $type eq 'handle' && do {
+ # Force unqualified filehandles into caller's package
+ my ($package) = caller;
+ $data =~ s/^[^':]+$/$package\:\:$&/;
+
+ $current_output_sub = $output_handle_sub;
+ $current_output_type = 'handle';
+ $current_output_data = $data;
+ last SWITCH;
+ };
+ $type eq 'file' && do {
+ $current_output_sub = $output_file_sub;
+ my $handle = new_handle();
+ open($handle,">$data") || croak "Cannot create file $data.\n";
+ $current_output_type = 'file';
+ $current_output_data = $handle;
+ last SWITCH;
+ };
+ $type eq 'pipe' && do {
+ $current_output_sub = $output_file_sub;
+ my $handle = new_handle();
+ open($handle,"|$data") || croak "Cannot open pipe to $data.\n";
+ $current_output_type = 'file';
+ $current_output_data = $handle;
+ last SWITCH;
+ };
+ $type eq 'append' && do {
+ $current_output_sub = $output_file_sub;
+ my $handle = new_handle();
+ open($handle,">>$data") || croak "Cannot append to file $data.\n";
+ $current_output_type = 'file';
+ $current_output_data = $handle;
+ last SWITCH;
+ };
+ $type eq 'string' && do {
+ $current_output_sub = $output_string_sub;
+ $current_output_type = 'string';
+ $current_output_data = $data;
+ last SWITCH;
+ };
+ $type eq 'nul' && do {
+ $current_output_sub = $output_nul_sub;
+ $current_output_type = 'nul';
+ $current_output_data = '';
+ last SWITCH;
+ };
+ croak "Unknown output type: $type.\n";
+ }
+}
+
+ # Pop the current output destination.
+sub pop_output {
+ my ($old_type,$old_data) = ($current_output_type,$current_output_data);
+ ($current_output_type,$current_output_data,$current_output_sub) =
+ @{pop @output_stack};
+ SWITCH: {
+ $old_type eq 'handle' && do {
+ return $old_data;
+ };
+ $old_type eq 'file' && do {
+ close($old_data);
+ return '';
+ };
+ $old_type eq 'string' && do {
+ return $old_data;
+ };
+ $old_type eq 'nul' && do {
+ return '';
+ };
+ croak "Unknown output type: $type.\n";
+ }
+}
+
+#
+# Local Utility functions.
+#
+$new_handle_counter = 1;
+
+sub new_handle {
+ return "IOHandle" . $new_handle_counter++;
+}
+
+1;
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/SGMLS/Refs.pm b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/SGMLS/Refs.pm
new file mode 100644
index 00000000000..3e3f563770c
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/SGMLS/Refs.pm
@@ -0,0 +1,216 @@
+package SGMLS::Refs;
+
+use Carp;
+
+$version = '$Id: Refs.pm,v 1.5 1995/12/03 21:28:36 david Exp $';
+
+=head1 NAME
+
+SGMLS::Refs
+
+=head1 SYNOPSIS
+
+ use SGMLS::Refs;
+
+To create a new reference-manager object using the file "foo.refs":
+
+ my $refs = new SGMLS::Refs("foo.refs");
+
+To create a new reference-manager object using the file "foo.refs" and
+logging changes to the file "foo.log":
+
+ my $refs = new SGMLS::Refs("foo.refs","foo.log");
+
+To record a reference:
+
+ $refs->put("document title",$title);
+
+To retrieve a reference:
+
+ $title = $refs->get("document title");
+
+To return the number of references changed since the last run:
+
+ $num = $refs->changed;
+
+To print a LaTeX-like warning if any references have changed:
+
+ $refs->warn;
+
+=head1 DESCRIPTION
+
+This library can be used together with the B<SGMLS> package to keep
+track of forward references from one run to another, like the B<LaTeX>
+C<.aux> files. Each reference manager is an object which reads and
+then rewrites a file of perl source, with the file name provided by
+the caller.
+
+Example:
+
+ # Start up the reference manager before the parse.
+ sgml('start', sub { $refs = new SGMLS::Refs("foo.refs"); });
+
+ # Warn about any changed references at the end.
+ sgml('end', sub { $refs->warn; });
+
+ # Look up the title from the last parse, if available.
+ sgml('<div>', sub {
+ my $element = shift;
+ my $id = $element->attribute(ID)->value;
+ my $title = $refs->get("title:$id") || "[no title available]";
+
+ $current_div_id = $id;
+
+ output "\\section{$title}\n\n";
+ });
+
+
+ # Save the title for the next parse.
+ sgml('<head>', sub { push_output('string'); });
+ sgml('</head>', sub {
+ my $title = pop_output();
+ my $id = $current_div_id;
+
+ $refs->put("title:$id",$title);
+ });
+
+
+=head1 AUTHOR AND COPYRIGHT
+
+Copyright 1994 and 1995 by David Megginson,
+C<dmeggins@aix1.uottawa.ca>. Distributed under the terms of the Gnu
+General Public License (version 2, 1991) -- see the file C<COPYING>
+which is included in the B<SGMLS.pm> distribution.
+
+
+=head1 SEE ALSO:
+
+L<SGMLS>, L<SGMLS::Output>.
+
+=cut
+
+#
+# Create a new instance of a reference manager. The first argument is
+# the filename for the database, and the second (if present) is a
+# filename for logging changes.
+#
+sub new {
+ my ($class,$filename,$logname) = (@_);
+ my $self = {};
+ my $handle = generate_handle();
+ my $loghandle = generate_handle() if $logname;
+ my $oldRS = $/; # Save old record separator.
+
+ # Read the current contents of the reference file (if any).
+ if (open($handle,"<$filename")) {
+ $/ = 0777;
+ $self->{'refs'} = eval <$handle> || {};
+ close $handle;
+ } else {
+ $self->{'refs'} = {};
+ }
+
+ # Open the reference file.
+ open($handle,">$filename") || croak $@;
+
+ # Open the log file, if any.
+ if ($logname) {
+ open($loghandle,">$logname") || croak $@;
+ }
+
+ # Note pertinent information.
+ $self->{'change_count'} = 0;
+ $self->{'handle'} = $handle;
+ $self->{'loghandle'} = $loghandle;
+ $self->{'filename'} = $filename;
+ $self->{'logname'} = $logname;
+
+ $/ = $oldRS; # Restore old record separator.
+ return bless $self;
+}
+
+#
+# Set a reference's value. If the value is unchanged, don't do anything;
+# otherwise, note the change by counting it and (optionally) logging it
+# to the file handle provided when the object was created.
+#
+sub put {
+ my ($self,$key,$value) = (@_);
+ my $loghandle = $self->{'loghandle'};
+ my $oldvalue = $self->{'refs'}->{$key};
+
+ if ($oldvalue ne $value) {
+ $self->{'change_count'}++;
+ if ($loghandle) {
+ print $loghandle "\"$key\" changed from " .
+
+ "\"$oldvalue\" to \"$value\".\n";
+ }
+ $self->{'refs'}->{$key} = $value;
+ }
+
+ return $oldvalue;
+}
+
+#
+# Grab the value of a reference.
+#
+sub get {
+ my ($self,$key) = (@_);
+
+ return $self->{'refs'}->{$key};
+}
+
+#
+# Return the number of changed references.
+#
+sub changed {
+ my $self = shift;
+ return $self->{'changed_count'};
+}
+
+#
+# Print a warning if any references have
+# changed (a la LaTeX -- so that the user knows that another pass is
+# necessary). Return 1 if a warning has been printed, or 0 if it
+# was unnecessary.
+#
+sub warn {
+ my $self = shift;
+ my $count = $self->{'change_count'};
+ my $filename = $self->{'filename'};
+ my $plural = "references have";
+
+ $plural = "reference has" if $count == 1;
+ if ($count > 0) {
+ warn "SGMLS::Refs ($filename): $count $plural changed.\n";
+ return 1;
+ }
+ return 0;
+}
+
+sub DESTROY {
+ my $self = shift;
+ my $handle = $self->{'handle'};
+
+ close $self->{'loghandle'};
+
+ print $handle "{\n";
+ foreach $key (keys %{$self->{'refs'}}) {
+ my $value = $self->{'refs'}->{$key};
+ $key =~ s/\\/\\\\/g;
+ $key =~ s/'/\\'/g;
+ $value =~ s/\\/\\\\/g;
+ $value =~ s/'/\\'/g;
+ print $handle " '$key' => '$value',\n";
+ }
+ print $handle " '' => ''\n}\n";
+}
+
+$handle_counter = 1;
+sub generate_handle {
+ return "Handle" . $handle_counter++;
+}
+
+1;
+
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/SGMLS/SGMLS.pm b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/SGMLS/SGMLS.pm
new file mode 100644
index 00000000000..b29395eed36
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/SGMLS/SGMLS.pm
@@ -0,0 +1,893 @@
+package SGMLS;
+use Carp;
+
+$version = '$Revision: 1.14 $';
+
+=head1 NAME
+
+SGMLS - class for postprocessing the output from the B<sgmls> and
+B<nsgmls> parsers.
+
+=head1 SYNOPSIS
+
+ use SGMLS;
+
+ my $parse = new SGMLS(STDIN);
+
+ my $event = $parse->next_event;
+ while ($event) {
+
+ SWITCH: {
+
+ ($event->type eq 'start_element') && do {
+ my $element = $event->data; # An object of class SGMLS_Element
+ [[your code for the beginning of an element]]
+ last SWITCH;
+ };
+
+ ($event->type eq 'end_element') && do {
+ my $element = $event->data; # An object of class SGMLS_Element
+ [[your code for the end of an element]]
+ last SWITCH;
+ };
+
+ ($event->type eq 'cdata') && do {
+ my $cdata = $event->data; # A string
+ [[your code for character data]]
+ last SWITCH;
+ };
+
+ ($event->type eq 'sdata') && do {
+ my $sdata = $event->data; # A string
+ [[your code for system data]]
+ last SWITCH;
+ };
+
+ ($event->type eq 're') && do {
+ [[your code for a record end]]
+ last SWITCH;
+ };
+
+ ($event->type eq 'pi') && do {
+ my $pi = $event->data; # A string
+ [[your code for a processing instruction]]
+ last SWITCH;
+ };
+
+ ($event->type eq 'entity') && do {
+ my $entity = $event->data; # An object of class SGMLS_Entity
+ [[your code for an external entity]]
+ last SWITCH;
+ };
+
+ ($event->type eq 'start_subdoc') && do {
+ my $entity = $event->data; # An object of class SGMLS_Entity
+ [[your code for the beginning of a subdoc entity]]
+ last SWITCH;
+ };
+
+ ($event->type eq 'end_subdoc') && do {
+ my $entity = $event->data; # An object of class SGMLS_Entity
+ [[your code for the end of a subdoc entity]]
+ last SWITCH;
+ };
+
+ ($event->type eq 'conforming') && do {
+ [[your code for a conforming document]]
+ last SWITCH;
+ };
+
+ die "Internal error: unknown event type " . $event->type . "\n";
+ }
+
+ $event = $parse->next_event;
+ }
+
+=head1 DESCRIPTION
+
+The B<SGMLS> package consists of several related classes: see
+L<"SGMLS">, L<"SGMLS_Event">, L<"SGMLS_Element">,
+L<"SGMLS_Attribute">, L<"SGMLS_Notation">, and L<"SGMLS_Entity">. All
+of these classes are available when you specify
+
+ use SGMLS;
+
+Generally, the only object which you will create explicitly will
+belong to the C<SGMLS> class; all of the others will then be created
+automatically for you over the course of the parse. Much fuller
+documentation is available in the C<.sgml> files in the C<DOC/>
+directory of the C<SGMLS.pm> distribution.
+
+=head2 The C<SGMLS> class
+
+This class holds a single parse. When you create an instance of it,
+you specify a file handle as an argument (if you are reading the
+output of B<sgmls> or B<nsgmls> from a pipe, the file handle will
+ordinarily be C<STDIN>):
+
+ my $parse = new SGMLS(STDIN);
+
+The most important method for this class is C<next_event>, which reads
+and returns the next major event from the input stream. It is
+important to note that the C<SGMLS> class deals with most B<ESIS>
+events itself: attributes and entity definitions, for example, are
+collected and stored automatically and invisibly to the user. The
+following list contains all of the methods for the C<SGMLS> class:
+
+=item C<next_event()>: Return an C<SGMLS_Event> object containing the
+next major event from the SGML parse.
+
+=item C<element()>: Return an C<SGMLS_Element> object containing the
+current element in the document.
+
+=item C<file()>: Return a string containing the name of the current
+SGML source file (this will work only if the C<-l> option was given to
+B<sgmls> or B<nsgmls>).
+
+=item C<line()>: Return a string containing the current line number
+from the source file (this will work only if the C<-l> option was
+given to B<sgmls> or B<nsgmls>).
+
+=item C<appinfo()>: Return a string containing the C<APPINFO>
+parameter (if any) from the SGML declaration.
+
+=item C<notation(NNAME)>: Return an C<SGMLS_Notation> object
+representing the notation named C<NNAME>. With newer versions of
+B<nsgmls>, all notations are available; otherwise, only the notations
+which are actually used will be available.
+
+=item C<entity(ENAME)>: Return an C<SGMLS_Entity> object representing
+the entity named C<ENAME>. With newer versions of B<nsgmls>, all
+entities are available; otherwise, only external data entities and
+internal entities used as attribute values will be available.
+
+=item C<ext()>: Return a reference to an associative array for
+user-defined extensions.
+
+
+=head2 The C<SGMLS_Event> class
+
+This class holds a single major event, as generated by the
+C<next_event> method in the C<SGMLS> class. It uses the following
+methods:
+
+=item C<type()>: Return a string describing the type of event:
+"start_element", "end_element", "cdata", "sdata", "re", "pi",
+"entity", "start_subdoc", "end_subdoc", and "conforming". See
+L<"SYNOPSIS">, above, for the values associated with each of these.
+
+=item C<data()>: Return the data associated with the current event (if
+any). For "start_element" and "end_element", returns an
+C<SGMLS_ELement> object; for "entity", "start_subdoc", and
+"end_subdoc", returns an C<SGMLS_Entity> object; for "cdata", "sdata",
+and "pi", returns a string; and for "re" and "conforming", returns the
+empty string. See L<"SYNOPSIS">, above, for an example of this
+method's use.
+
+=item C<key()>: Return a string key to the event, such as an element
+or entity name (otherwise, the same as C<data()>).
+
+=item C<file()>: Return the current file name, as in the C<SGMLS>
+class.
+
+=item C<line()>: Return the current line number, as in the C<SGMLS>
+class.
+
+=item C<element()>: Return the current element, as in the C<SGMLS>
+class.
+
+=item C<parse()>: Return the C<SGMLS> object which generated the
+event.
+
+=item C<entity(ENAME)>: Look up an entity, as in the C<SGMLS> class.
+
+=item C<notation(ENAME)>: Look up a notation, as in the C<SGMLS>
+class.
+
+=item C<ext()>: Return a reference to an associative array for
+user-defined extensions.
+
+
+=head2 The C<SGMLS_Element> class
+
+This class is used for elements, and contains all associated
+information (such as the element's attributes). It recognises the
+following methods:
+
+=item C<name()>: Return a string containing the name, or Generic
+Identifier, of the element, in upper case.
+
+=item C<parent()>: Return the C<SGMLS_Element> object for the
+element's parent (if any).
+
+=item C<parse()>: Return the C<SGMLS> object for the current parse.
+
+=item C<attributes()>: Return a reference to an associative array of
+attribute names and C<SGMLS_Attribute> structures. Attribute names
+will be all in upper case.
+
+=item C<attribute_names()>: Return an array of strings containing the
+names of all attributes defined for the current element, in upper
+case.
+
+=item C<attribute(ANAME)>: Return the C<SGMLS_Attribute> structure for
+the attribute C<ANAME>.
+
+=item C<set_attribute(ATTRIB)>: Add the C<SGMLS_Attribute> object
+C<ATTRIB> to the current element, replacing any other attribute
+structure with the same name.
+
+=item C<in(GI)>: Return C<true> (ie. 1) if the string C<GI> is the
+name of the current element's parent, or C<false> (ie. 0) if it is
+not.
+
+=item C<within(GI)>: Return C<true> (ie. 1) if the string C<GI> is the
+name of any of the ancestors of the current element, or C<false>
+(ie. 0) if it is not.
+
+=item C<ext()>: Return a reference to an associative array for
+user-defined extensions.
+
+
+=head2 The C<SGMLS_Attribute> class
+
+Each instance of an attribute for each C<SGMLS_Element> is an object
+belonging to this class, which recognises the following methods:
+
+=item C<name()>: Return a string containing the name of the current
+attribute, all in upper case.
+
+=item C<type()>: Return a string containing the type of the current
+attribute, all in upper case. Available types are "IMPLIED", "CDATA",
+"NOTATION", "ENTITY", and "TOKEN".
+
+=item C<value()>: Return the value of the current attribute, if any.
+This will be an empty string if the type is "IMPLIED", a string of
+some sort if the type is "CDATA" or "TOKEN" (if it is "TOKEN", you may
+want to split the string into a series of separate tokens), an
+C<SGMLS_Notation> object if the type is "NOTATION", or an
+C<SGMLS_Entity> object if the type is "ENTITY". Note that if the
+value is "CDATA", it will I<not> have escape sequences for 8-bit
+characters, record ends, or SDATA processed -- that will be your
+responsibility.
+
+=item C<is_implied()>: Return C<true> (ie. 1) if the value of the
+attribute is implied, or C<false> (ie. 0) if it is specified in the
+document.
+
+=item C<set_type(TYPE)>: Change the type of the attribute to the
+string C<TYPE> (which should be all in upper case). Available types
+are "IMPLIED", "CDATA", "NOTATION", "ENTITY", and "TOKEN".
+
+=item C<set_value(VALUE)>: Change the value of the attribute to
+C<VALUE>, which may be a string, an C<SGMLS_Entity> object, or an
+C<SGMLS_Notation> subject, depending on the attribute's type.
+
+=item C<ext()>: Return a reference to an associative array available
+for user-defined extensions.
+
+
+=head2 The C<SGMLS_Notation> class
+
+All declared notations appear as objects belonging to this class,
+which recognises the following methods:
+
+=item C<name()>: Return a string containing the name of the notation.
+
+=item C<sysid()>: Return a string containing the system identifier of
+the notation, if any.
+
+=item C<pubid()>: Return a string containing the public identifier of
+the notation, if any.
+
+=item C<ext()>: Return a reference to an associative array available
+for user-defined extensions.
+
+
+=head2 The C<SGMLS_Entity> class
+
+All declared entities appear as objects belonging to this class, which
+recognises the following methods:
+
+=item C<name()>: Return a string containing the name of the entity, in
+mixed case.
+
+=item C<type()>: Return a string containing the type of the entity, in
+upper case. Available types are "CDATA", "SDATA", "NDATA" (external
+entities only), "SUBDOC", "PI" (newer versions of B<nsgmls> only), or
+"TEXT" (newer versions of B<nsgmls> only).
+
+=item C<value()>: Return a string containing the value of the entity,
+if it is internal.
+
+=item C<sysid()>: Return a string containing the system identifier of
+the entity (if any), if it is external.
+
+=item C<pubid()>: Return a string containing the public identifier of
+the entity (if any), if it is external.
+
+=item C<filenames()>: Return an array of strings containing any file
+names generated from the identifiers, if the entity is external.
+
+=item C<notation()>: Return the C<SGMLS_Notation> object associated
+with the entity, if it is external.
+
+=item C<data_attributes()>: Return a reference to an associative array
+of data attribute names (in upper case) and the associated
+C<SGMLS_Attribute> objects for the current entity.
+
+=item C<data_attribute_names()>: Return an array of data attribute
+names (in upper case) for the current entity.
+
+=item C<data_attribute(ANAME)>: Return the C<SGMLS_Attribute> object
+for the data attribute named C<ANAME> for the current entity.
+
+=item C<set_data_attribute(ATTRIB)>: Add the C<SGMLS_Attribute> object
+C<ATTRIB> to the current entity, replacing any other data attribute
+with the same name.
+
+=item C<ext()>: Return a reference to an associative array for
+user-defined extensions.
+
+
+=head1 AUTHOR AND COPYRIGHT
+
+Copyright 1994 and 1995 by David Megginson,
+C<dmeggins@aix1.uottawa.ca>. Distributed under the terms of the Gnu
+General Public License (version 2, 1991) -- see the file C<COPYING>
+which is included in the B<SGMLS.pm> distribution.
+
+
+=head1 SEE ALSO:
+
+L<SGMLS::Output> and L<SGMLS::Refs>.
+
+=cut
+
+#
+# Data class for a single SGMLS ESIS output event. The object will
+# keep information about its own current element and, if available,
+# the source file and line where the event appeared.
+#
+# Event types are as follow:
+# Event Data
+# -------------------------------------------------------
+# 'start_element' SGMLS_Element
+# 'end_element' SGMLS_Element
+# 'cdata' string
+# 'sdata' string
+# 're' [none]
+# 'pi' string
+# 'entity' SGMLS_Entity
+# 'start_subdoc' SGMLS_Entity
+# 'end_subdoc' SGMLS_Entity
+# 'conforming' [none]
+#
+package SGMLS_Event;
+use Carp;
+ # Constructor.
+sub new {
+ my ($class,$type,$data,$parse) = @_;
+ return bless [$type,
+ $data,
+ $parse->file,
+ $parse->line,
+ $parse->element,
+ $parse,
+ {}
+ ];
+}
+ # Accessors.
+sub type { return $_[0]->[0]; }
+sub data { return $_[0]->[1]; }
+sub file { return $_[0]->[2]; }
+sub line { return $_[0]->[3]; }
+sub element { return $_[0]->[4]; }
+sub parse { return $_[0]->[5]; }
+sub ext { return $_[0]->[6]; }
+ # Generate a key for the event.
+sub key {
+ my $self = shift;
+ if (ref($self->data) eq SGMLS_Element ||
+ ref($self->data) eq SGMLS_Entity) {
+ return $self->data->name;
+ } else {
+ return $self->data;
+ }
+}
+ # Look up an entity in the parse.
+sub entity {
+ my ($self,$ename) = (@_);
+ return $self->parse->entity($ename);
+}
+ # Look up a notation in the parse.
+sub notation {
+ my ($self,$nname) = (@_);
+ return $self->parse->notation($nname);
+}
+
+
+#
+# Data class for a single SGML attribute. The object will know its
+# type, and will keep a value unless the type is 'IMPLIED', in which
+# case no meaningful value is available.
+#
+# Attribute types are as follow:
+# Type Value
+# ---------------------------------------
+# IMPLIED [none]
+# CDATA string
+# NOTATION SGMLS_Notation
+# ENTITY SGMLS_Entity
+# TOKEN string
+#
+package SGMLS_Attribute;
+use Carp;
+ # Constructor.
+sub new {
+ my ($class,$name,$type,$value) = @_;
+ return bless [$name,$type,$value,{}];
+}
+ # Accessors.
+sub name { return $_[0]->[0]; }
+sub type { return $_[0]->[1]; }
+sub value { return $_[0]->[2]; }
+sub ext { return $_[0]->[3]; }
+ # Return 1 if the value is implied.
+sub is_implied {
+ my $self = shift;
+ return ($self->type eq 'IMPLIED');
+}
+ # Set the attribute's type.
+sub set_type {
+ my ($self,$type) = @_;
+ $self->[1] = $type;
+}
+
+ # Set the attribute's value.
+sub set_value {
+ my ($self,$value) = @_;
+ $self->[2] = $value;
+}
+
+
+#
+# Data class for a single element of an SGML document. The object will not
+# know about its children (data or other elements), but it keeps track of its
+# parent and its attributes.
+#
+package SGMLS_Element;
+use Carp;
+ # Constructor.
+sub new {
+ my ($class,$name,$parent,$attributes,$parse) = @_;
+ return bless [$name,$parent,$attributes,$parse,{}];
+}
+ # Accessors.
+sub name { return $_[0]->[0]; }
+sub parent { return $_[0]->[1]; }
+sub parse { return $_[0]->[3]; }
+sub ext { return $_[0]->[4]; }
+
+ # Return the associative array of
+ # attributes, parsing it the first
+ # time through.
+sub attributes {
+ my $self = shift;
+ if (ref($self->[2]) eq 'ARRAY') {
+ my $new = {};
+ foreach (@{$self->[2]}) {
+ /^(\S+) (IMPLIED|CDATA|NOTATION|ENTITY|TOKEN)( (.*))?$/
+ || croak "Bad attribute event data: $_";
+ my ($name,$type,$value) = ($1,$2,$4);
+ if ($type eq 'NOTATION') {
+ $value = $self->parse->notation($value);
+ } elsif ($type eq 'ENTITY') {
+ $value = $self->parse->entity($value);
+ }
+ $new->{$name} =
+ new SGMLS_Attribute($name,$type,$value);
+ }
+ $self->[2] = $new;
+ }
+ return $self->[2];
+}
+ # Return a list of attribute names.
+sub attribute_names {
+ my $self = shift;
+ return keys(%{$self->attributes});
+}
+ # Find an attribute by name.
+sub attribute {
+ my ($self,$aname) = @_;
+ return $self->attributes->{$aname};
+}
+ # Add a new attribute.
+sub set_attribute {
+ my ($self,$attribute) = @_;
+ $self->attributes->{$attribute->name} = $attribute;
+}
+ # Check parent by name.
+sub in {
+ my ($self,$name) = @_;
+ if ($self->parent && $self->parent->name eq $name) {
+ return $self->parent;
+ } else {
+ return '';
+ }
+}
+ # Check ancestors by name.
+sub within {
+ my ($self,$name) = @_;
+ for ($self = $self->parent; $self; $self = $self->parent) {
+ return $self if ($self->name eq $name);
+ }
+ return '';
+}
+
+
+#
+# Data class for an SGML notation. The only information available
+# will be the name, the sysid, and the pubid -- the rest is up to the
+# processing application.
+#
+package SGMLS_Notation;
+use Carp;
+ # Constructor.
+sub new {
+ my ($class,$name,$sysid,$pubid) = @_;
+ return bless [$name,$sysid,$pubid,{}];
+}
+ # Accessors.
+sub name { return $_[0]->[0]; }
+sub sysid { return $_[0]->[1]; }
+sub pubid { return $_[0]->[2]; }
+sub ext { return $_[0]->[3]; }
+
+#
+# Data class for a single SGML entity. All entities will have a name
+# and a type. Internal entities will be of type CDATA or SDATA only,
+# and will have a value rather than a notation and sysid/pubid. External
+# CDATA, NDATA, and SDATA entities will always have notations attached,
+# and SUBDOC entities are always external (and will be parsed by SGMLS).
+#
+# Entity types are as follow:
+# Type Internal External
+# -----------------------------------------------------------
+# CDATA x x
+# NDATA x
+# SDATA x x
+# SUBDOC x
+# (newer versions of NSGMLS only:)
+# PI x
+# TEXT x x
+#
+package SGMLS_Entity;
+use Carp;
+ # Constructor.
+sub new {
+ my ($class,$name,$type,$value,$sysid,$pubid,$filenames,$notation) = @_;
+ return bless [$name,$type,$value,{},$sysid,$pubid,$filenames,$notation,{}];
+}
+ # Accessors.
+sub name { return $_[0]->[0]; }
+sub type { return $_[0]->[1]; }
+sub value { return $_[0]->[2]; }
+sub data_attributes { return $_[0]->[3]; }
+sub sysid { return $_[0]->[4]; }
+sub pubid { return $_[0]->[5]; }
+sub filenames { return $_[0]->[6]; }
+sub notation { return $_[0]->[7]; }
+sub ext { return $_[0]->[8]; }
+ # Return a list of data-attribute names.
+sub data_attribute_names {
+ my $self = shift;
+ return keys(%{$self->data_attributes});
+}
+ # Find a data attribute by name.
+sub data_attribute {
+ my ($self,$aname) = @_;
+ return $self->data_attributes->{$aname};
+}
+ # Add a new data attribute.
+sub set_data_attribute {
+ my ($self,$data_attribute) = @_;
+ $self->data_attributes()->{$data_attribute->name} = $data_attribute;
+}
+
+
+
+#
+# Data class for a single SGMLS parse. The constructor takes a single
+# argument, a file handle from which the SGMLS ESIS events will be read
+# (it may be a pipe, a fifo, a file, a socket, etc.). It is essential
+# that no two SGMLS objects have the same handle.
+#
+package SGMLS;
+ # Constructor.
+sub new {
+ my ($class,$handle) = @_;
+
+ # Force unqualified filehandles into caller's package
+ my ($package) = caller;
+ $handle =~ s/^[^':]+$/$package\:\:$&/;
+
+ return bless {
+ 'handle' => $handle,
+ 'event_stack' => [],
+ 'current_element' => '',
+ 'current_attributes' => [],
+ 'current_entities' => {},
+ 'entity_stack' => [],
+ 'current_notations' => {},
+ 'notation_stack' => [],
+ 'current_sysid' => '',
+ 'current_pubid' => '',
+ 'current_filenames' => [],
+ 'current_file' => '',
+ 'current_line' => '',
+ 'appinfo' => '',
+ 'ext' => {}
+ };
+}
+ # Accessors.
+sub element { return $_[0]->{'current_element'}; }
+sub file { return $_[0]->{'current_file'}; }
+sub line { return $_[0]->{'current_line'}; }
+sub appinfo { return $_[0]->{'appinfo'}; }
+sub ext { return $_[0]->{'ext'}; }
+
+ # Given its name, look up a notation.
+sub notation {
+ my ($self,$nname) = @_;
+ return $self->{'current_notations'}->{$nname};
+}
+ # Given its name, look up an entity.
+sub entity {
+ my ($self,$ename) = @_;
+ return $self->{'current_entities'}->{$ename};
+}
+
+ # Return the next SGMLS_Event, or ''
+ # if the document has finished.
+sub next_event {
+ my $self = shift;
+ my $handle = $self->{'handle'};
+
+ # If there are any queued up events,
+ # grab them first.
+ if ($#{$self->{event_stack}} >= 0) {
+ return pop @{$self->{event_stack}};
+ }
+
+ dispatch: while (!eof($handle)) {
+
+ my $c = getc($handle);
+ my $data = <$handle>;
+ chop $data;
+
+ ($c eq '(') && do { # start an element
+ $self->{'current_element'} =
+ new SGMLS_Element($data,
+ $self->{'current_element'},
+ $self->{'current_attributes'},
+ $self);
+ $self->{'current_attributes'} = [];
+ return new SGMLS_Event('start_element',
+ $self->{'current_element'},
+ $self);
+ };
+
+ ($c eq ')') && do { # end an element
+ my $old = $self->{'current_element'};
+ $self->{'current_element'} = $self->{'current_element'}->parent;
+ return new SGMLS_Event('end_element',$old,$self);
+ };
+
+ ($c eq '-') && do { # some data
+ my $sdata_flag = 0;
+ my $out = '';
+ while ($data =~ /\\(\\|n|\||[0-7]{1,3})/) {
+ $out .= $`;
+ $data = $';
+ # beginning or end of SDATA
+ if ($1 eq '|') {
+ if ("$out" ne '') {
+ unshift(@{$self->{'event_stack'}},
+ new SGMLS_Event($sdata_flag?'sdata':'cdata',
+ $out,
+ $self));
+ $out = '';
+ }
+ $sdata_flag = !$sdata_flag;
+ # record end
+ } elsif ($1 eq 'n') {
+ if ("$out" ne '') {
+ unshift(@{$self->{'event_stack'}},
+ new SGMLS_Event($sdata_flag?'sdata':'cdata',
+ $out,
+ $self));
+ $out = '';
+ }
+ unshift(@{$self->{'event_stack'}},
+ new SGMLS_Event('re','',$self));
+ } elsif ($1 eq '\\') {
+ $out .= '\\';
+ } else {
+ $out .= chr(oct($1));
+ }
+ }
+ $out .= $data;
+ if ("$out" ne '') {
+ unshift(@{$self->{'event_stack'}},
+ new SGMLS_Event($sdata_flag?'sdata':'cdata',
+ $out,
+ $self));
+ }
+ return $self->next_event;
+ };
+
+ ($c eq '&') && do { # external entity reference
+ return new SGMLS_Event('entity',
+ ($self->{'current_entities'}->{$data}
+ || croak "Unknown external entity: $data\n"),
+ $self);
+ };
+
+ ($c eq '?') && do { # processing instruction
+ return new SGMLS_Event('pi',
+ $data,
+ $self);
+ };
+
+ ($c eq 'A') && do { # attribute declaration
+ # (will parse only on demand)
+ push @{$self->{'current_attributes'}}, $data;
+ next dispatch;
+ };
+
+ ($c eq 'a') && do { # link attribute declaration
+ # NOT YET IMPLEMENTED!
+ next dispatch;
+ };
+
+ ($c eq 'D') && do { # data attribute declaration
+ $data =~ /^(\S+) (\S+) (\S+)( (.*))?$/
+ || croak "Bad data-attribute event data: $data";
+ my ($ename,$aname,$type,$value) = ($1,$2,$3,$5);
+ my $entity = $self->{'current_entities'}->{$ename};
+ my $attribute = new SGMLS_Attribute($aname,$type,$value);
+ $entity->set_data_attribute($attribute);
+ next dispatch;
+ };
+
+ ($c eq 'N') && do { # notation declaration
+ $self->{'current_notations'}->{$data} =
+ new SGMLS_Notation($data,
+ $self->{'current_sysid'},
+ $self->{'current_pubid'});
+ $self->{'current_sysid'} = '';
+ $self->{'current_pubid'} = '';
+ next dispatch;
+ };
+
+ ($c eq 'E') && do { # external entity declaration
+ $data =~ /^(\S+) (\S+) (\S+)$/
+ || croak "Bad external entity event data: $data";
+ my ($name,$type,$nname) = ($1,$2,$3);
+ my $notation = $self->{'current_notations'}->{$nname} if $nname;
+ $self->{'current_entities'}->{$name} =
+ new SGMLS_Entity($name,
+ $type,
+ '',
+ $self->{'current_sysid'},
+ $self->{'current_pubid'},
+ $self->{'current_filenames'},
+ $notation);
+ $self->{'current_sysid'} = '';
+ $self->{'current_pubid'} = '';
+ $self->{'current_filenames'} = [];
+ next dispatch;
+ };
+
+ ($c eq 'I') && do { # internal entity declaration
+ $data =~ /^(\S+) (\S+) (.*)$/
+ || croak "Bad external entity event data: $data";
+ my ($name,$type,$value) = ($1,$2,$3);
+ $self->{'current_entities'}->{$name} =
+ new SGMLS_Entity($name, $type, $value);
+ next dispatch;
+ };
+
+ ($c eq 'T') && do { # external text entity declaration
+ $self->{'current_entities'}->{$data} =
+ new SGMLS_Entity($data,
+ 'TEXT',
+ '',
+ $self->{'current_sysid'},
+ $self->{'current_pubid'},
+ $self->{'current_filenames'},
+ '');
+ $self->{'current_sysid'} = '';
+ $self->{'current_pubid'} = '';
+ $self->{'current_filenames'} = [];
+ next dispatch;
+ };
+
+ ($c eq 'S') && do { # subdocument entity declaration
+ $self->{'current_entities'}->{$data} =
+ new SGMLS_Entity($data,
+ 'SUBDOC',
+ '',
+ $self->{'current_sysid'},
+ $self->{'current_pubid'},
+ $self->{'current_filenames'},
+ '');
+ $self->{'current_sysid'} = '';
+ $self->{'current_pubid'} = '';
+ $self->{'current_filenames'} = [];
+ next dispatch;
+ };
+
+ ($c eq 's') && do { # system id
+ $self->{'current_sysid'} = $data;
+ next dispatch;
+ };
+
+ ($c eq 'p') && do { # public id
+ $self->{'current_pubid'} = $data;
+ next dispatch;
+ };
+
+ ($c eq 'f') && do { # generated filename
+ push @{$self->{'current_filenames'}}, $data;
+ next dispatch;
+ };
+
+ ($c eq '{') && do { # begin subdocument entity
+ my $subdoc = ($self->{'current_entities'}->{$data}||
+ croak "Unknown SUBDOC entity $data\n");
+ push @{$self->{'notation_stack'}}, $self->{'current_notations'};
+ push @{$self->{'entity_stack'}}, $self->{'current_entities'};
+ $self->{'current_notations'} = {};
+ $self->{'current_entities'} = {};
+ return new SGMLS_Event('start_subdoc',
+ $subdoc,
+ $self);
+ };
+
+ ($c eq '}') && do { # end subdocument entity
+ $self->{'current_notations'} = pop @{$self->{'notation_stack'}};
+ $self->{'current_entities'} = pop @{$self->{'entity_stack'}};
+ return new SGMLS_Event('end_subdoc',
+ ($self->{'current_entities'}->{$data} ||
+ croak "Unknown SUBDOC entity $data\n"),
+ $self);
+ };
+
+ ($c eq 'L') && do { # line number (and file name)
+ $data =~ /^(\d+)( (.*))?$/;
+ $self->{'current_line'} = $1;
+ $self->{'current_file'} = $3 if $3;
+ next dispatch;
+ };
+
+ ($c eq '#') && do { # APPINFO parameter
+ $self->{'appinfo'} = $data;
+ next dispatch;
+ };
+
+ ($c eq 'C') && do { # document is conforming
+ return new SGMLS_Event('conforming','',$self);
+ };
+ }
+ return '';
+}
+
+1;
+
+########################################################################
+# Local Variables:
+# mode: perl
+# End:
+########################################################################
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/catalog b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/catalog
new file mode 100644
index 00000000000..f2393cb97ad
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/catalog
@@ -0,0 +1,5 @@
+SGMLDECL "xml.dcl"
+PUBLIC "-//W3C//DTD Specification::19971229//EN" "xmlspec.dtd"
+PUBLIC "-//James Clark//DTD DSSSL Flow Object Tree//EN" "fot.dtd"
+PUBLIC "-//James Clark//DTD DSSSL Style-Sheet//EN" "style-sheet.dtd"
+PUBLIC "ISO/IEC 10179:1996//DTD DSSSL Architecture//EN" "dsssl.dtd"
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/catalog.dsssl b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/catalog.dsssl
new file mode 100644
index 00000000000..11bc0425afe
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/catalog.dsssl
@@ -0,0 +1,4 @@
+PUBLIC "-//James Clark//DTD DSSSL Flow Object Tree//EN" "fot.dtd"
+PUBLIC "ISO/IEC 10179:1996//DTD DSSSL Architecture//EN" "dsssl.dtd"
+PUBLIC "-//James Clark//DTD DSSSL Style Sheet//EN" "style-sheet.dtd"
+PUBLIC "-//OpenJade//DTD DSSSL Style Sheet//EN" "style-sheet.dtd"
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/catalog.xml b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/catalog.xml
new file mode 100644
index 00000000000..bd4f2aa939f
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/catalog.xml
@@ -0,0 +1,2 @@
+SGMLDECL "xml.dcl"
+PUBLIC "-//W3C//DTD Specification::19971229//EN" "xmlspec.dtd"
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/dsssl.cat b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/dsssl.cat
new file mode 100644
index 00000000000..76a78096b11
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/dsssl.cat
@@ -0,0 +1,3 @@
+PUBLIC "-//James Clark//DTD DSSSL Flow Object Tree//EN" "fot.dtd"
+PUBLIC "ISO/IEC 10179:1996//DTD DSSSL Architecture//EN" "dsssl.dtd"
+PUBLIC "-//James Clark//DTD DSSSL Style Sheet//EN" "style-sheet.dtd"
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/dsssl.dtd b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/dsssl.dtd
new file mode 100644
index 00000000000..50f66baa676
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/dsssl.dtd
@@ -0,0 +1,134 @@
+<!-- DSSSL Architectural Forms -->
+
+<!ENTITY % declarations
+ "features | baseset-encoding | literal-described-char | add-name-chars
+ | add-separator-chars | standard-chars | other-chars
+ | combine-char | map-sdata-entity | char-repertoire"
+>
+
+<!element dsssl-specification - O
+ ((%declarations;)*,
+ (style-specification | transformation-specification
+ | external-specification)+)>
+<!attlist dsssl-specification
+ version CDATA #FIXED "ISO/IEC 10179:1996"
+>
+
+<!element transformation-specification - O
+ ((%declarations;)*, transformation-specification-body*)>
+<!attlist transformation-specification
+ id ID #IMPLIED
+ desc CDATA #IMPLIED
+ -- human readable description of specification --
+ partial (partial | complete) complete
+ -- is the specification complete is or is it just a fragment
+ to be used in other specifications? --
+ use -- reftype(transformation-specification|external-specification) --
+ IDREFS #IMPLIED -- Default: none --
+ entities
+ -- entities available to be specified as DTD for validation
+ of result document --
+ ENTITIES #IMPLIED -- Default: none --
+>
+
+<!element style-specification - O
+ ((%declarations;)*, style-specification-body*)>
+<!attlist style-specification
+ id ID #IMPLIED
+ desc CDATA #IMPLIED
+ -- human readable description of specification --
+ partial (partial | complete) complete
+ -- is the specification complete is or is it just a fragment
+ to be used in other specifications? --
+ use -- reftype(style-specification|external-specification) --
+ IDREFS #IMPLIED -- Default: none --
+>
+
+<!-- Assign a local ID to a specification in another document. -->
+<!element external-specification - O EMPTY>
+<!attlist external-specification
+ id ID #REQUIRED
+ document -- document containing spec --
+ ENTITY #REQUIRED
+ specid -- id of spec in document --
+ NAME #IMPLIED -- Default: first spec in document --
+>
+
+<!-- Declares features used by specification. -->
+<!element features - O (#PCDATA)
+ -- dlextype(featurename*) -->
+
+<!-- Map character numbers in a base character set to character names;
+not needed when system knows a character set, and all characters
+in character set have universal code. -->
+<!element baseset-encoding - O (#PCDATA)
+ -- dlextype((number, charname)*) -->
+<!attlist baseset-encoding
+ name CDATA #REQUIRED -- public identifier of baseset --
+>
+
+<!-- Map a character described in the SGML declaration with a minimum literal
+to a character name. -->
+<!element literal-described-char - O (#PCDATA)
+ -- dlextype(charname) -->
+<!attlist literal-described-char
+ desc CDATA #REQUIRED -- the literal description --
+>
+
+<!-- Declare additional characters allowed in name within DSSSL notation. -->
+<!element add-name-chars - O (#PCDATA)
+ -- dlextype(charname*) -->
+
+<!-- Declare additional characters allowed as separators within
+DSSSL notation. -->
+<!element add-separator-chars - O (#PCDATA)
+ -- dlextype(charname*) -->
+
+<!-- Define characters associating names with universal codes. -->
+
+<!element standard-chars - O (#PCDATA)
+ -- dlextype((charname, number))*) -->
+
+<!-- Define characters with no universal codes. -->
+
+<!element other-chars - O (#PCDATA)
+ -- dlextype(charname*) -->
+
+<!-- Map an SDATA entity onto a character. -->
+
+<!element map-sdata-entity - O (#PCDATA)
+ -- dlextype(charname) -->
+<!attlist map-sdata-entity
+ name CDATA #IMPLIED -- Default: mapping uses replacement text only --
+ text CDATA #IMPLIED -- Default: mapping uses name only --
+>
+
+<!-- Declare character combining. -->
+
+<!element combine-char - O (#PCDATA)
+ -- dlextype(charname, charname, charname+) -->
+
+<!-- Declare a character repertoire. -->
+<!element char-repertoire - O EMPTY>
+<!attlist char-repertoire
+ name -- public identifier for repertoire --
+ CDATA #REQUIRED
+>
+
+<!element style-specification-body - - CDATA
+ -- content uses notation of DSSSL style language -->
+<!attlist style-specification-body
+ content ENTITY #CONREF -- Default: syntactic content --
+>
+
+<!element transformation-specification-body - - CDATA
+ -- content uses notation of DSSSL transformation language -->
+<!attlist transformation-specification-body
+ content ENTITY #CONREF -- Default: syntactic content --
+>
+
+<!-- This notation is intended for use as the value of the ArcDataF
+ architectural form support attribute. -->
+
+<!NOTATION dsssl-specification PUBLIC
+ "ISO/IEC 10179:1996//NOTATION DSSSL Specification//EN">
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/empty.dsl b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/empty.dsl
new file mode 100644
index 00000000000..9b49481f1e3
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/empty.dsl
@@ -0,0 +1,8 @@
+<!-- empty.dsl -->
+<!DOCTYPE style-sheet PUBLIC "-//James Clark//DTD DSSSL Style Sheet//EN">
+<style-sheet>
+ <style-specification>
+ <style-specification-body>
+ </style-specification-body>
+ </style-specification>
+</style-sheet>
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/empty.xsl b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/empty.xsl
new file mode 100644
index 00000000000..b419996c59c
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/empty.xsl
@@ -0,0 +1,2 @@
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+</xsl:stylesheet>
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/emptyexample.xml b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/emptyexample.xml
new file mode 100644
index 00000000000..957a6041065
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/emptyexample.xml
@@ -0,0 +1,15 @@
+<!DOCTYPE emptyexample [
+<!ELEMENT emptyexample (par*)>
+<!ELEMENT par (#PCDATA|image|imref)*>
+<!ELEMENT image EMPTY>
+<!ATTLIST image name ID #IMPLIED
+ address CDATA #REQUIRED>
+<!ELEMENT imref EMPTY>
+<!ATTLIST imref name IDREF #REQUIRED>
+<!ENTITY logo-uri "http://www.ucc.ie/xml/xml.gif">
+]>
+<emptyexample>
+<par>The XML logo is shown in the image <imref name="xml-logo"/>.</par>
+<par>The image shows an alternative syntax for an empty element
+<image name="xml-logo" address="&logo-uri;"></image></par>
+</emptyexample>
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/entable-alt.xml b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/entable-alt.xml
new file mode 100644
index 00000000000..a295e611d88
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/entable-alt.xml
@@ -0,0 +1,243 @@
+<?xml version='1.0' encoding="ISO-8859-1"?>
+<countries>
+<country shortname="Afghanistan" fullname="Islamic State of Afghanistan" isocountry="AF" capital="Kabul" citizen="Afghan" adjective="Afghan" currency="afghani" isocurrency="AFA" currensubunit="pul"/>
+<country shortname="Albania" fullname="Republic of Albania" isocountry="AL" capital="Tirana" citizen="Albanian" adjective="Albanian" currency="lek" isocurrency="ALL" currensubunit="quindar (pl.quindarka)"/>
+<country shortname="Algeria" fullname="People's Democratic Republic of Algeria" isocountry="DZ" capital="Algiers" citizen="Algerian" adjective="Algerian" currency="Algerian dinar" isocurrency="DZD" currensubunit="centime"/>
+<country shortname="American Samoa" fullname="Territory of American Samoa" isocountry="AS" capital="Pago Pago" citizen="Samoan" adjective="Samoan" currency="US dollar" isocurrency="USD" currensubunit="cent"/>
+<country shortname="Andorra" fullname="Principality of Andorra" isocountry="AD" capital="Andorra la Vella" citizen="Andorran" adjective="Andorran" currency="Spanish peseta; French franc" isocurrency="ESP; FRF" currensubunit="céntimo; centime"/>
+<country shortname="Angola" fullname="Republic of Angola" isocountry="AO" capital="Luanda" citizen="Angolan" adjective="Angolan" currency="readjusted kwanza" isocurrency="AOR" currensubunit="lwei (inv.)"/>
+<country shortname="Anguilla" fullname="Anguilla" isocountry="AI" capital="The Valley" citizen="Anguillan" adjective="Anguillan" currency="Eastern Caribbean dollar" isocurrency="XCD" currensubunit="cent"/>
+<country shortname="Antarctica" fullname="Antarctica" isocountry="AQ" capital="-" citizen="-" adjective="Antarctic" currency="-" isocurrency=" " currensubunit=" "/>
+<country shortname="Antigua and Barbuda" fullname="Antigua and Barbuda" isocountry="AG" capital="St John's" citizen="Antiguan; Barbudian" adjective="Antiguan; Barbudian; of Antigua and Barbuda" currency="Eastern Caribbean dollar" isocurrency="XCD" currensubunit="cent"/>
+<country shortname="Argentina" fullname="Argentine Republic" isocountry="AR" capital="Buenos Aires" citizen="Argentinian" adjective="Argentine" currency="Argentine peso" isocurrency="ARS" currensubunit="centavo"/>
+<country shortname="Armenia" fullname="Republic of Armenia" isocountry="AM" capital="Yerevan" citizen="Armenian" adjective="Armenian" currency="dram (inv.)" isocurrency="AMD" currensubunit="luma"/>
+<country shortname="Aruba" fullname="Aruba" isocountry="AW" capital="Oranjestad" citizen="Aruban" adjective="Aruban" currency="Aruban guilder" isocurrency="AWG" currensubunit="cent"/>
+<country shortname="Australia" fullname="Commonwealth of Australia" isocountry="AU" capital="Canberra" citizen="Australian" adjective="Australian" currency="Australian dollar" isocurrency="AUD" currensubunit="cent"/>
+<country shortname="Austria" fullname="Republic of Austria" isocountry="AT " capital="Vienna" citizen="Austrian" adjective="Austrian" currency="Austrian schilling" isocurrency="ATS" currensubunit="groschen (inv.)"/>
+<country shortname="Azerbaijan" fullname="Azerbaijani Republic" isocountry="AZ" capital="Baku" citizen="Azeri" adjective="Azerbaijani" currency="Azerbaijani manat" isocurrency="AZM" currensubunit="kepik (inv.)"/>
+<country shortname="Bahrain" fullname="State of Bahrain" isocountry="BH" capital="Manama" citizen="Bahraini" adjective="Bahraini" currency="Bahraini dinar" isocurrency="BHD" currensubunit="fils (inv.)"/>
+<country shortname="Bangladesh" fullname="People's Republic of Bangladesh" isocountry="BD" capital="Dhaka" citizen="Bangladeshi" adjective="of Bangladesh" currency="taka (inv.)" isocurrency="BDT" currensubunit="poisha (inv.)"/>
+<country shortname="Barbados" fullname="Barbados" isocountry="BB" capital="Bridgetown" citizen="Barbadian" adjective="Barbadian" currency="Barbados dollar" isocurrency="BBD" currensubunit="cent"/>
+<country shortname="Belarus" fullname="Republic of Belarus" isocountry="BY" capital="Minsk" citizen="Belarusian" adjective="Belarusian" currency="Belarusian rouble" isocurrency="BYB" currensubunit="kopek"/>
+<country shortname="Belgium" fullname="Kingdom of Belgium" isocountry="BE " capital="Brussels" citizen="Belgian" adjective="Belgian" currency="Belgian franc" isocurrency="BEF" currensubunit="centime"/>
+<country shortname="Belize" fullname="Belize" isocountry="BZ" capital="Belmopan" citizen="Belizean" adjective="Belizean" currency="Belize dollar" isocurrency="BZD" currensubunit="cent"/>
+<country shortname="Benin" fullname="Republic of Benin" isocountry="BJ" capital="Porto Novo" citizen="Beninese" adjective="Beninese" currency="CFA franc" isocurrency="XOF" currensubunit="centime"/>
+<country shortname="Bermuda" fullname="Bermuda" isocountry="BM" capital="Hamilton" citizen="Bermudian" adjective="Bermudian" currency="Bermuda dollar" isocurrency="BMD" currensubunit="cent"/>
+<country shortname="Bhutan" fullname="Kingdom of Bhutan" isocountry="BT" capital="Thimphu" citizen="Bhutanese" adjective="Bhutanese" currency="ngultrum (inv.)" isocurrency="BTN" currensubunit="chhetrum (inv.)"/>
+<country shortname="Bolivia" fullname="Republic of Bolivia" isocountry="BO" capital="Sucre" citizen="Bolivian" adjective="Bolivian" currency="boliviano" isocurrency="BOB" currensubunit="centavo"/>
+<country shortname="Bosnia and Herzegovina" fullname="Bosnia and Herzegovina" isocountry="BA" capital="Sarajevo" citizen="Bosnian; Herzegovinian" adjective="Bosnian; Herzegovinian" currency="Bosnian dinar; Bosnian convertible mark" isocurrency="BAM" currensubunit="fening"/>
+<country shortname="Botswana" fullname="Republic of Botswana" isocountry="BW" capital="Gaborone" citizen="Botswanan" adjective="Botswanan; of Botswana" currency="pula (inv.)" isocurrency="BWP" currensubunit="thebe (inv.)"/>
+<country shortname="Bouvet Island" fullname="Bouvet Island" isocountry="BV" capital="-" citizen="-" adjective="of Bouvet Island" currency=" " isocurrency=" " currensubunit=" "/>
+<country shortname="Brazil" fullname="Federative Republic of Brazil" isocountry="BR" capital="Brasilia" citizen="Brazilian" adjective="Brazilian" currency="Brazilian real (pl. reais)" isocurrency="BRL" currensubunit="centavo"/>
+<country shortname="British Indian Ocean Territory" fullname="British Indian Ocean Territory" isocountry="IO" capital="-" citizen="-" adjective="of the British Indian Ocean Territory" currency=" " isocurrency=" " currensubunit=" "/>
+<country shortname="British Virgin Islands" fullname="British Virgin Islands" isocountry="VG" capital="Road Town" citizen="British Virgin Islander; BVIslander" adjective="of the British Virgin Islands" currency="US dollar" isocurrency="USD" currensubunit="cent"/>
+<country shortname="Brunei" fullname="Negara Brunei Darussalam" isocountry="BN" capital="Bandar Seri Begawan" citizen="Bruneian" adjective="Bruneian; of Brunei" currency="Brunei dollar" isocurrency="BND" currensubunit="sen (inv.)"/>
+<country shortname="Bulgaria" fullname="Republic of Bulgaria" isocountry="BG" capital="Sofia" citizen="Bulgarian" adjective="Bulgarian" currency="lev (pl. leva)" isocurrency="BGL" currensubunit="stotinka (pl. stotinki)"/>
+<country shortname="Burkina Faso" fullname="Burkina Faso" isocountry="BF" capital="Ouagadougou" citizen="Burkinabe" adjective="Burkinabe; of Burkina Faso" currency="CFA franc" isocurrency="XOF" currensubunit="centime"/>
+<country shortname="Burundi" fullname="Republic of Burundi" isocountry="BI" capital="Bujumbura" citizen="Burundian" adjective="Burundian; of Burundi" currency="Burundi franc" isocurrency="BIF" currensubunit="centime"/>
+<country shortname="Cambodia" fullname="Kingdom of Cambodia" isocountry="KH" capital="Phnom Penh" citizen="Cambodian" adjective="Cambodian" currency="riel" isocurrency="KHR" currensubunit="sen (inv.)"/>
+<country shortname="Cameroon" fullname="Republic of Cameroon" isocountry="CM" capital="Yaoundé" citizen="Cameroonian" adjective="Cameroonian" currency="CFA franc" isocurrency="XAF" currensubunit="centime"/>
+<country shortname="Canada" fullname="Canada" isocountry="CA" capital="Ottawa" citizen="Canadian" adjective="Canadian" currency="Canadian dollar" isocurrency="CAD" currensubunit="cent"/>
+<country shortname="Cape Verde" fullname="Republic of Cape Verde" isocountry="CV" capital="Praia" citizen="Cape Verdean" adjective="Cape Verdean" currency="Cape Verde escudo" isocurrency="CVE" currensubunit="centavo"/>
+<country shortname="Cayman Islands" fullname="Cayman Islands" isocountry="KY" capital="George Town" citizen="Caymanian" adjective="Caymanian; of the Cayman Islands" currency="Cayman Islands dollar" isocurrency="KYD" currensubunit="cent"/>
+<country shortname="Central African Republic" fullname="Central African Republic" isocountry="CF" capital="Bangui" citizen="Central African" adjective="Central African; of the Central African&#10;Republic" currency="CFA franc" isocurrency="XAF" currensubunit="centime"/>
+<country shortname="Chad" fullname="Republic of Chad" isocountry="TD" capital="N'Djamena" citizen="Chadian" adjective="Chadian; of Chad" currency="CFA franc" isocurrency="XAF" currensubunit="centime"/>
+<country shortname="Chile" fullname="Republic of Chile" isocountry="CL" capital="Santiago" citizen="Chilean" adjective="Chilean" currency="Chilean peso" isocurrency="CLP" currensubunit="centavo"/>
+<country shortname="China" fullname="People's Republic of China" isocountry="CN" capital="Beijing" citizen="Chinese" adjective="Chinese" currency="renminbi-yuan (inv.)" isocurrency="CNY" currensubunit="fen (inv.)"/>
+<country shortname="Christmas Island" fullname="Christmas Island Territory" isocountry="CX" capital="Flying Fish Cove" citizen="Christmas Islander" adjective="of Christmas Island" currency="Australian dollar" isocurrency="AUD" currensubunit="cent"/>
+<country shortname="Cocos (Keeling) Islands" fullname="Territory of Cocos (Keeling) Islands" isocountry="CC" capital="Bantam" citizen="Cocos Islander" adjective="of the Cocos (Keeling) Islands" currency="Australian dollar" isocurrency="AUD" currensubunit="cent"/>
+<country shortname="Colombia" fullname="Republic of Colombia" isocountry="CO" capital="Santa Fe de Bogotá" citizen="Colombian" adjective="Colombian" currency="Colombian peso" isocurrency="COP" currensubunit="centavo"/>
+<country shortname="Congo" fullname="Republic of the Congo" isocountry="CG" capital="Brazzaville" citizen="Congolese" adjective="Congolese" currency="CFA franc" isocurrency="XAF" currensubunit="centime"/>
+<country shortname="Cook Islands" fullname="Cook Islands" isocountry="CK" capital="Avarua" citizen="Cook Islander" adjective="of the Cook Islands" currency="New Zealand dollar" isocurrency="NZD" currensubunit="cent"/>
+<country shortname="Costa Rica" fullname="Republic of Costa Rica" isocountry="CR" capital="San José" citizen="Costa Rican" adjective="Costa Rican" currency="Costa Rican colón (pl.colones)" isocurrency="CRC" currensubunit="céntimo"/>
+<country shortname="Côte d'Ivoire" fullname="Republic of Côte d'Ivoire" isocountry="CI" capital="Yamoussoukro" citizen="Ivorian" adjective="Ivorian" currency="CFA franc" isocurrency="XOF" currensubunit="centime"/>
+<country shortname="Croatia" fullname="Republic of Croatia" isocountry="HR" capital="Zagreb" citizen="Croat" adjective="Croatian" currency="kuna (inv.)" isocurrency="HRK" currensubunit="lipa (inv.)"/>
+<country shortname="Cuba" fullname="Republic of Cuba" isocountry="CU" capital="Havana" citizen="Cuban" adjective="Cuban" currency="Cuban peso" isocurrency="CUP" currensubunit="centavo"/>
+<country shortname="Cyprus" fullname="Republic of Cyprus" isocountry="CY" capital="Nicosia" citizen="Cypriot" adjective="Cypriot" currency="Cyprus pound" isocurrency="CYP" currensubunit="mil"/>
+<country shortname="Czech Republic" fullname="Czech Republic" isocountry="CZ" capital="Prague" citizen="Czech" adjective="Czech" currency="Czech koruna (pl.koruny)" isocurrency="CZK" currensubunit="halér (pl. halére)"/>
+<country shortname="Democratic Republic of the Congo" fullname="Democratic Republic of the Congo" isocountry="CD" capital="Kinshasa" citizen="Congolese" adjective="Congolese; of the Democratic Republic of the&#10;Congo" currency="new zaire" isocurrency="CDF" currensubunit="centime"/>
+<country shortname="Denmark" fullname="Kingdom of Denmark" isocountry="DK " capital="Copenhagen" citizen="Dane" adjective="Danish" currency="Danish krone (pl.kroner)&#10;" isocurrency="DKK" currensubunit="øre (inv.)"/>
+<country shortname="Djibouti" fullname="Republic of Djibouti" isocountry="DJ" capital="Djibouti" citizen="Djiboutian" adjective="of Djibouti" currency="Djibouti franc" isocurrency="DJF" currensubunit="centime"/>
+<country shortname="Dominica" fullname="Commonwealth of Dominica" isocountry="DM" capital="Roseau" citizen="Dominican" adjective="of Dominica" currency="Eastern Caribbean dollar" isocurrency="XCD" currensubunit="cent"/>
+<country shortname="Dominican Republic" fullname="Dominican Republic" isocountry="DO" capital="Santo Domingo" citizen="Dominican" adjective="Dominican" currency="Dominican peso" isocurrency="DOP" currensubunit="centavo"/>
+<country shortname="East Timor" fullname="East Timor" isocountry="TP" capital="Dili" citizen="East Timorese" adjective="East Timorese" currency="Indonesian rupiah" isocurrency="IDR" currensubunit="-"/>
+<country shortname="Ecuador" fullname="Republic of Ecuador" isocountry="EC" capital="Quito" citizen="Ecuadorian" adjective="Ecuadorian" currency="sucre" isocurrency="ECS" currensubunit="centavo"/>
+<country shortname="Egypt" fullname="Arab Republic of Egypt" isocountry="EG" capital="Cairo" citizen="Egyptian" adjective="Egyptian" currency="Egyptian pound" isocurrency="EGP" currensubunit="piastre"/>
+<country shortname="El Salvador" fullname="Republic of El Salvador" isocountry="SV" capital="San Salvador" citizen="Salvadorian; Salvadoran" adjective="Salvadorian; Salvadoran" currency="El Salvador colón (pl.colones)" isocurrency="SVC" currensubunit="centavo"/>
+<country shortname="Equatorial Guinea" fullname="Republic of Equatorial Guinea" isocountry="GQ" capital="Malabo" citizen="Equatorial Guinean" adjective="of Equatorial Guinea" currency="CFA franc" isocurrency="XAF" currensubunit="centime"/>
+<country shortname="Eritrea" fullname="State of Eritrea" isocountry="ER" capital="Asmara" citizen="Eritrean" adjective="Eritrean" currency="nakfa (inv.)" isocurrency="ERN" currensubunit="centime"/>
+<country shortname="Estonia" fullname="Republic of Estonia" isocountry="EE" capital="Tallinn" citizen="Estonian" adjective="Estonian" currency="Estonian kroon (pl.krooni)" isocurrency="EEK" currensubunit="sent (pl. senti)"/>
+<country shortname="Ethiopia" fullname="Federal Democratic Republic of Ethiopia" isocountry="ET" capital="Addis Ababa" citizen="Ethiopian" adjective="Ethiopian" currency="Ethiopian birr (inv.)" isocurrency="ETB" currensubunit="cent"/>
+<country shortname="Faeroe Islands" fullname="Faeroe Islands" isocountry="FO" capital="Thorshavn" citizen="Faeroese" adjective="Faeroese" currency="Danish krone (pl.kroner)" isocurrency="DKK" currensubunit="øre (inv.)"/>
+<country shortname="Falkland Islands" fullname="Falkland Islands" isocountry="FK" capital="Stanley" citizen="Falkland Islander" adjective="of the Falkland Islands" currency="Falkland Islands pound" isocurrency="FKP" currensubunit="new penny (pl. pence)"/>
+<country shortname="Fiji" fullname="Republic of Fiji" isocountry="FJ" capital="Suva" citizen="Fijian" adjective="Fijian; of Fiji" currency="Fiji dollar" isocurrency="FJD" currensubunit="cent"/>
+<country shortname="Finland" fullname="Republic of Finland" isocountry="FI " capital="Helsinki" citizen="Finn" adjective="Finnish" currency="Finnish markka (pl.markkaa)" isocurrency="FIM" currensubunit="penni (pl. penniä)"/>
+<country shortname="France" fullname="French Republic" isocountry="FR " capital="Paris" citizen="Frenchman; Frenchwoman" adjective="French" currency="French franc" isocurrency="FRF" currensubunit="centime"/>
+<country shortname="French Guiana" fullname="Department of French Guiana" isocountry="GF" capital="Cayenne" citizen="Guianese" adjective="Guianese" currency="French franc" isocurrency="FRF" currensubunit="centime"/>
+<country shortname="French Polynesia" fullname="Territory of French Polynesia" isocountry="PF" capital="Papeete" citizen="Polynesian" adjective="Polynesian" currency="CFP franc" isocurrency="XPF" currensubunit="centime"/>
+<country shortname="French Southern and Antarctic Lands"
+fullname="Territory of the French Southern and Antarctic&#10;Lands"
+isocountry="TF" capital=" " citizen="-" adjective="of the French Southern and Antarctic Lands" currency="-" isocurrency="-" currensubunit="-"/>
+<country shortname="Gabon" fullname="Gabonese Republic" isocountry="GA" capital="Libreville" citizen="Gabonese" adjective="Gabonese" currency="CFA franc" isocurrency="XAF" currensubunit="centime"/>
+<country shortname="Georgia" fullname="Georgia" isocountry="GE" capital="Tbilisi" citizen="Georgian" adjective="Georgian" currency="lari" isocurrency="GEL" currensubunit="tetri (inv.)"/>
+<country shortname="Germany" fullname="Federal Republic of Germany" isocountry="DE " capital="Berlin" citizen="German" adjective="German" currency="German mark" isocurrency="DEM" currensubunit="pfennig"/>
+<country shortname="Ghana" fullname="Republic of Ghana" isocountry="GH" capital="Accra" citizen="Ghanaian" adjective="Ghanaian" currency="cedi" isocurrency="GHC" currensubunit="pesewa"/>
+<country shortname="Gibraltar" fullname="Gibraltar" isocountry="GI" capital="Gibraltar" citizen="Gibraltarian" adjective="Gibraltarian; of Gibraltar" currency="Gibraltar pound" isocurrency="GIP" currensubunit="penny (pl. pence)"/>
+<country shortname="Greece" fullname="Hellenic Republic" isocountry="GR " capital="Athens" citizen="Greek" adjective="Greek" currency="Greek drachma (pl.drachmae)" isocurrency="GRD" currensubunit="lepton (pl.lepta)"/>
+<country shortname="Greenland" fullname="Greenland" isocountry="GL" capital="Nuuk" citizen="Greenlander" adjective="Greenlandic; of Greenland" currency="Danish krone (pl.kroner)" isocurrency="DKK" currensubunit="øre (inv.)"/>
+<country shortname="Grenada" fullname="Grenada" isocountry="GD" capital="St George's" citizen="Grenadian" adjective="Grenadian" currency="Eastern Caribbean dollar" isocurrency="XCD" currensubunit="cent"/>
+<country shortname="Guadeloupe" fullname="Department of Guadeloupe" isocountry="GP" capital="Basse Terre" citizen="Guadeloupean" adjective="of Guadeloupe; Guadeloupean" currency="French franc" isocurrency="FRF" currensubunit="centime"/>
+<country shortname="Guam" fullname="Territory of Guam" isocountry="GU" capital="Hagåtña" citizen="Guamanian" adjective="Guamanian; of Guam" currency="US dollar" isocurrency="USD" currensubunit="cent"/>
+<country shortname="Guatemala" fullname="Republic of Guatemala" isocountry="GT" capital="Guatemala City" citizen="Guatemalan" adjective="Guatemalan" currency="Guatemalan quetzal (pl.quetzales)" isocurrency="GTQ" currensubunit="centavo"/>
+<country shortname="Guinea" fullname="Republic of Guinea" isocountry="GN" capital="Conakry" citizen="Guinean" adjective="Guinean" currency="Guinean franc" isocurrency="GNF" currensubunit="-"/>
+<country shortname="Guinea-Bissau" fullname="Republic of Guinea-Bissau" isocountry="GW" capital="Bissau" citizen="Guinea-Bissau national; Guinean" adjective="of Guinea-Bissau" currency="CFA franc" isocurrency="XOF" currensubunit="centime"/>
+<country shortname="Guyana" fullname="Cooperative Republic of Guyana" isocountry="GY" capital="Georgetown" citizen="Guyanese" adjective="Guyanese" currency="Guyanese dollar" isocurrency="GYD" currensubunit="cent"/>
+<country shortname="Haiti" fullname="Republic of Haiti" isocountry="HT" capital="Port-au-Prince" citizen="Haitian" adjective="Haitian" currency="gourde" isocurrency="HTG" currensubunit="centime"/>
+<country shortname="Heard Island&#10;&#10;and McDonald Islands" fullname="Territory of Heard Island and McDonald&#10;Islands" isocountry="HM" capital="-" citizen="-" adjective="of Heard Island and McDonald Islands" currency=" " isocurrency=" " currensubunit=" "/>
+<country shortname="Honduras" fullname="Republic of Honduras" isocountry="HN" capital="Tegucigalpa" citizen="Honduran" adjective="Honduran" currency="lempira" isocurrency="HNL" currensubunit="centavo"/>
+<country shortname="Hong Kong" fullname="Hong Kong Special Administrative Region (HKSAR)" isocountry="HK" capital="Victoria" citizen="Hong Kong Chinese" adjective="Hong Kong Chinese" currency="Hong Kong dollar" isocurrency="HKD" currensubunit="cent"/>
+<country shortname="Hungary" fullname="Republic of Hungary" isocountry="HU" capital="Budapest" citizen="Hungarian" adjective="Hungarian" currency="forint (inv.)" isocurrency="HUF" currensubunit="fillér (inv.)"/>
+<country shortname="Iceland" fullname="Republic of Iceland" isocountry="IS" capital="Reykjavik" citizen="Icelander" adjective="Icelandic" currency="Icelandic króna (pl.krónur)" isocurrency="ISK" currensubunit="eyrir (pl.aurar)"/>
+<country shortname="India" fullname="Republic of India" isocountry="IN" capital="New Delhi" citizen="Indian" adjective="Indian" currency="Indian rupee" isocurrency="INR" currensubunit="paisa (pl.paise)"/>
+<country shortname="Indonesia" fullname="Republic of Indonesia" isocountry="ID" capital="Jakarta" citizen="Indonesian" adjective="Indonesian" currency="Indonesian rupiah (inv.)" isocurrency="IDR" currensubunit="sen (inv.)"/>
+<country shortname="Iran" fullname="Islamic Republic of Iran" isocountry="IR" capital="Tehran" citizen="Iranian" adjective="Iranian" currency="Iranian rial" isocurrency="IRR" currensubunit="-"/>
+<country shortname="Iraq" fullname="Republic of Iraq" isocountry="IQ" capital="Baghdad" citizen="Iraqi" adjective="Iraqi" currency="Iraqi dinar" isocurrency="IQD" currensubunit="fils (inv.)"/>
+<country shortname="Ireland" fullname="Ireland" isocountry="IE " capital="Dublin" citizen="Irishman; Irishwoman" adjective="Irish" currency="Irish pound" isocurrency="IEP" currensubunit="penny (pl.pence)"/>
+<country shortname="Israel" fullname="State of Israel" isocountry="IL" capital="Jerusalem" citizen="Israeli" adjective="Israeli" currency="new shekel" isocurrency="ILS" currensubunit="agora (pl.agorot)"/>
+<country shortname="Italy" fullname="Italian Republic" isocountry="IT " capital="Rome" citizen="Italian" adjective="Italian" currency="Italian lira (pl. lire)" isocurrency="ITL" currensubunit=" "/>
+<country shortname="Jamaica" fullname="Jamaica" isocountry="JM" capital="Kingston" citizen="Jamaican" adjective="Jamaican" currency="Jamaica dollar" isocurrency="JMD" currensubunit="cent"/>
+<country shortname="Japan" fullname="Japan" isocountry="JP" capital="Tokyo" citizen="Japanese" adjective="Japanese" currency="yen (inv.)" isocurrency="JPY" currensubunit="sen (inv.)"/>
+<country shortname="Jordan" fullname="Hashemite Kingdom of Jordan" isocountry="JO" capital="Amman" citizen="Jordanian" adjective="Jordanian" currency="Jordanian dinar" isocurrency="JOD" currensubunit="fils (inv.)"/>
+<country shortname="Kazakhstan" fullname="Republic of Kazakhstan" isocountry="KZ" capital="Astana" citizen="Kazakh" adjective="Kazakh" currency="tenge (inv.)" isocurrency="KZT" currensubunit="tiyn"/>
+<country shortname="Kenya" fullname="Republic of Kenya" isocountry="KE" capital="Nairobi" citizen="Kenyan" adjective="Kenyan" currency="Kenyan shilling" isocurrency="KES" currensubunit="cent"/>
+<country shortname="Kiribati" fullname="Republic of Kiribati" isocountry="KI" capital="Bairiki" citizen="Kiribatian" adjective="of Kiribati; Kiribatian" currency="Australian dollar" isocurrency="AUD" currensubunit="cent"/>
+<country shortname="Kuwait" fullname="State of Kuwait" isocountry="KW" capital="Kuwait City" citizen="Kuwaiti" adjective="Kuwaiti" currency="Kuwaiti dinar" isocurrency="KWD" currensubunit="fils (inv.)"/>
+<country shortname="Kyrgyzstan" fullname="Kyrgyz Republic" isocountry="KG" capital="Bishkek" citizen="Kyrgyz" adjective="Kyrgyz" currency="som" isocurrency="KGS" currensubunit="tyiyn"/>
+<country shortname="Laos" fullname="Lao People's Democratic Republic" isocountry="LA" capital="Vientiane" citizen="Lao" adjective="Lao" currency="kip (inv.)" isocurrency="LAK" currensubunit="at (inv.)"/>
+<country shortname="Latvia" fullname="Republic of Latvia" isocountry="LV" capital="Riga" citizen="Latvian" adjective="Latvian" currency="lats (pl. lati)" isocurrency="LVL" currensubunit="santims (pl. santimi)"/>
+<country shortname="Lebanon" fullname="Lebanese Republic" isocountry="LB" capital="Beirut" citizen="Lebanese" adjective="Lebanese" currency="Lebanese pound" isocurrency="LBP" currensubunit="piastre"/>
+<country shortname="Lesotho" fullname="Kingdom of Lesotho" isocountry="LS" capital="Maseru" citizen="Basotho" adjective="of Lesotho" currency="loti (pl. maloti)" isocurrency="LSL" currensubunit="sente (pl. lisente)"/>
+<country shortname="Liberia" fullname="Republic of Liberia" isocountry="LR" capital="Monrovia" citizen="Liberian" adjective="Liberian" currency="Liberian dollar" isocurrency="LRD" currensubunit="cent"/>
+<country shortname="Libya" fullname="Socialist People's Libyan Arab Jamahiriya" isocountry="LY" capital="Tripoli" citizen="Libyan" adjective="Libyan" currency="Libyan dinar" isocurrency="LYD" currensubunit="dirham"/>
+<country shortname="Liechtenstein" fullname="Principality of Liechtenstein" isocountry="LI" capital="Vaduz" citizen="Liechtensteiner" adjective="of Liechtenstein" currency="Swiss franc" isocurrency="CHF" currensubunit="centime"/>
+<country shortname="Lithuania" fullname="Republic of Lithuania" isocountry="LT" capital="Vilnius" citizen="Lithuanian" adjective="Lithuanian" currency="litas (pl. litai)" isocurrency="LTL" currensubunit="centas (pl. centai)"/>
+<country shortname="Luxembourg" fullname="Grand Duchy of Luxembourg" isocountry="LU " capital="Luxembourg" citizen="Luxembourger" adjective="Luxembourgish; of Luxembourg" currency="Luxembourg franc" isocurrency="LUF" currensubunit="centime"/>
+<country shortname="Macao" fullname="Macao" isocountry="MO" capital="Macao" citizen="Macanese" adjective="Macanese; of Macao" currency="pataca" isocurrency="MOP" currensubunit="avo"/>
+<country shortname="-" fullname="Former Yugoslav Republic of Macedonia" isocountry="MK" capital="Skopje" citizen="Macedonian" adjective="Macedonian" currency="denar (inv.)" isocurrency="MKD" currensubunit="deni (inv.)"/>
+<country shortname="Madagascar" fullname="Republic of Madagascar" isocountry="MG" capital="Antananarivo" citizen="Malagasy" adjective="Malagasy" currency="Malagasy franc" isocurrency="MGF" currensubunit="centime"/>
+<country shortname="Malawi" fullname="Republic of Malawi" isocountry="MW" capital="Lilongwe" citizen="Malawian" adjective="Malawian" currency="Malawi kwacha (inv.)" isocurrency="MWK" currensubunit="tambala (inv.)"/>
+<country shortname="Malaysia" fullname="Malaysia" isocountry="MY" capital="Kuala Lumpur" citizen="Malaysian" adjective="Malaysian" currency="Malaysian ringgit (inv.)" isocurrency="MYR" currensubunit="sen (inv.)"/>
+<country shortname="Maldives" fullname="Republic of Maldives" isocountry="MV" capital="Malé" citizen="Maldivian" adjective="Maldivian" currency="rufiyaa" isocurrency="MVR" currensubunit="laari (inv.)"/>
+<country shortname="Mali" fullname="Republic of Mali" isocountry="ML" capital="Bamako" citizen="Malian" adjective="Malian" currency="CFA franc" isocurrency="XOF" currensubunit="centime"/>
+<country shortname="Malta" fullname="Republic of Malta" isocountry="MT" capital="Valletta" citizen="Maltese" adjective="Maltese" currency="Maltese lira" isocurrency="MTL" currensubunit="cent"/>
+<country shortname="Marshall Islands" fullname="Republic of the Marshall Islands" isocountry="MH" capital="Majuro" citizen="Marshallese" adjective="Marshallese; of the Marshall Islands" currency="US dollar" isocurrency="USD" currensubunit="cent"/>
+<country shortname="Martinique" fullname="Department of Martinique" isocountry="MQ" capital="Fort-de-France" citizen="Martinican" adjective="Martinican; of Martinique" currency="French franc" isocurrency="FRF" currensubunit="centime"/>
+<country shortname="Mauritania" fullname="Islamic Republic of Mauritania" isocountry="MR" capital="Nouakchott" citizen="Mauritanian" adjective="Mauritanian" currency="Mauritanian ouguiya" isocurrency="MRO" currensubunit="khoum"/>
+<country shortname="Mauritius" fullname="Republic of Mauritius" isocountry="MU" capital="Port Louis" citizen="Mauritian" adjective="Mauritian" currency="Mauritian rupee" isocurrency="MUR" currensubunit="cent"/>
+<country shortname="Mayotte" fullname="Territorial collectivity of Mayotte" isocountry="YT" capital="Mamoudzou" citizen="Mahorais" adjective="Mahoran" currency="French franc" isocurrency="FRF" currensubunit="centime"/>
+<country shortname="Mexico" fullname="United Mexican States" isocountry="MX" capital="Mexico City" citizen="Mexican" adjective="Mexican" currency="Mexican peso" isocurrency="MXN" currensubunit="centavo"/>
+<country shortname="Micronesia" fullname="Federated States of Micronesia" isocountry="FM" capital="Palikir" citizen="Micronesian" adjective="of Micronesia" currency="US dollar" isocurrency="USD" currensubunit="cent"/>
+<country shortname="Moldova" fullname="Republic of Moldova" isocountry="MD" capital="Chisinau" citizen="Moldovan" adjective="Moldovan" currency="Moldovan leu (pl. lei)" isocurrency="MDL" currensubunit="ban (pl. bani)"/>
+<country shortname="Monaco" fullname="Principality of Monaco" isocountry="MC" capital="Monaco" citizen="Monegasque" adjective="Monegasque" currency="French franc" isocurrency="FRF" currensubunit="centime"/>
+<country shortname="Mongolia" fullname="Mongolia" isocountry="MN" capital="Ulan Bator" citizen="Mongolian" adjective="Mongolian" currency="tugrik" isocurrency="MNT" currensubunit="möngö (inv.)"/>
+<country shortname="Montserrat" fullname="Montserrat" isocountry="MS" capital="Plymouth" citizen="Montserratian" adjective="of Montserrat; Montserratian" currency="Eastern Caribbean dollar" isocurrency="XCD" currensubunit="cent"/>
+<country shortname="Morocco" fullname="Kingdom of Morocco" isocountry="MA" capital="Rabat" citizen="Moroccan" adjective="Moroccan" currency="Moroccan dirham" isocurrency="MAD" currensubunit="centime"/>
+<country shortname="Mozambique" fullname="Republic of Mozambique" isocountry="MZ" capital="Maputo" citizen="Mozambican" adjective="Mozambican" currency="metical (pl. meticais)" isocurrency="MZM" currensubunit="centavo"/>
+<country shortname="Myanmar" fullname="Union of Myanmar" isocountry="MM" capital="Yangon" citizen="Burmese" adjective="Burmese; of Myanmar" currency="kyat" isocurrency="MMK" currensubunit="pya"/>
+<country shortname="Namibia" fullname="Republic of Namibia" isocountry="NA" capital="Windhoek" citizen="Namibian" adjective="Namibian" currency="Namibian dollar" isocurrency="NAD" currensubunit="cent"/>
+<country shortname="Nauru" fullname="Republic of Nauru" isocountry="NR" capital="Yaren" citizen="Nauruan" adjective="Nauruan" currency="Australian dollar" isocurrency="AUD" currensubunit="cent"/>
+<country shortname="Nepal" fullname="Kingdom of Nepal" isocountry="NP" capital="Kathmandu" citizen="Nepalese" adjective="Nepalese" currency="Nepalese rupee" isocurrency="NPR" currensubunit="paisa (inv.)"/>
+<country shortname="Netherlands" fullname="Kingdom of the Netherlands" isocountry="NL " capital="Amsterdam" citizen="Dutchman; Netherlander" adjective="Netherlands; Dutch" currency="Dutch guilder" isocurrency="NLG" currensubunit="cent"/>
+<country shortname="Netherlands Antilles" fullname="Netherlands Antilles" isocountry="AN" capital="Willemstad" citizen="Antillean" adjective="of the Netherlands Antilles" currency="Netherlands Antillean guilder" isocurrency="ANG" currensubunit="cent"/>
+<country shortname="New Caledonia" fullname="Territory of New Caledonia and Dependencies" isocountry="NC" capital="Nouméa" citizen="New Caledonian" adjective="New Caledonian" currency="CFP franc" isocurrency="XPF" currensubunit="centime"/>
+<country shortname="New Zealand" fullname="New Zealand" isocountry="NZ" capital="Wellington" citizen="New Zealander" adjective="of New Zealand" currency="New Zealand dollar" isocurrency="NZD" currensubunit="cent"/>
+<country shortname="Nicaragua" fullname="Republic of Nicaragua" isocountry="NI" capital="Managua" citizen="Nicaraguan" adjective="Nicaraguan" currency="córdoba" isocurrency="NIO" currensubunit="centavo"/>
+<country shortname="Niger" fullname="Republic of Niger" isocountry="NE" capital="Niamey" citizen="Nigerien" adjective="Nigerien; of Niger" currency="CFA franc" isocurrency="XOF" currensubunit="centime"/>
+<country shortname="Nigeria" fullname="Federal Republic of Nigeria" isocountry="NG" capital="Abuja" citizen="Nigerian" adjective="Nigerian" currency="naira (inv.)" isocurrency="NGN" currensubunit="kobo (inv.)"/>
+<country shortname="Niue" fullname="Niue" isocountry="NU" capital="Alofi" citizen="Niuean" adjective="of Niue; Niuean" currency="New Zealand dollar" isocurrency="NZD" currensubunit="cent"/>
+<country shortname="Norfolk Island" fullname="Territory of Norfolk Island" isocountry="NF" capital="Kingston" citizen="Norfolk Islander" adjective="of Norfolk Island" currency="Australian dollar" isocurrency="AUD" currensubunit="cent"/>
+<country shortname="North Korea" fullname="Democratic People's Republic of Korea" isocountry="KP" capital="Pyongyang" citizen="North Korean" adjective="North Korean" currency="North Korean won (inv.)&#10;" isocurrency="KPW" currensubunit="chun (inv.)"/>
+<country shortname="Northern Marianas" fullname="Commonwealth of the Northern Mariana&#10;Islands" isocountry="MP" capital="Saipan" citizen="Northern Mariana Islander" adjective="of the Northern Mariana Islands" currency="US dollar" isocurrency="USD" currensubunit="cent"/>
+<country shortname="Norway" fullname="Kingdom of Norway" isocountry="NO" capital="Oslo" citizen="Norwegian" adjective="Norwegian" currency="Norwegian krone (pl.kroner)" isocurrency="NOK" currensubunit="øre (inv.)"/>
+<country shortname="Oman" fullname="Sultanate of Oman" isocountry="OM" capital="Muscat" citizen="Omani" adjective="Omani" currency="Omani rial" isocurrency="OMR" currensubunit="baiza"/>
+<country shortname="Pakistan" fullname="Islamic Republic of Pakistan" isocountry="PK" capital="Islamabad" citizen="Pakistani" adjective="Pakistani; of Pakistan" currency="Pakistani rupee" isocurrency="PKR" currensubunit="paisa"/>
+<country shortname="Palau" fullname="Republic of Palau" isocountry="PW" capital="Koror" citizen="Palauan" adjective="of Palau; Palauan" currency="US dollar" isocurrency="USD" currensubunit="cent"/>
+<country shortname="Panama" fullname="Republic of Panama" isocountry="PA" capital="Panama City" citizen="Panamanian" adjective="Panamanian" currency="balboa" isocurrency="PAB" currensubunit="centésimo"/>
+<country shortname="Papua New Guinea" fullname="Independent State of Papua New Guinea" isocountry="PG" capital="Port Moresby" citizen="Papua New Guinean" adjective="of Papua New Guinea" currency="kina (inv.)" isocurrency="PGK" currensubunit="toea (inv.)"/>
+<country shortname="Paraguay" fullname="Republic of Paraguay" isocountry="PY" capital="Asunción" citizen="Paraguayan" adjective="Paraguayan" currency="guaraní (pl.guaraníes)" isocurrency="PYG" currensubunit="céntimo"/>
+<country shortname="Peru" fullname="Republic of Peru" isocountry="PE" capital="Lima" citizen="Peruvian" adjective="Peruvian" currency="new sol" isocurrency="PEN" currensubunit="céntimo"/>
+<country shortname="Philippines" fullname="Republic of the Philippines" isocountry="PH" capital="Manila" citizen="Filipino" adjective="Philippine" currency="Philippine peso" isocurrency="PHP" currensubunit="centavo"/>
+<country shortname="Pitcairn Islands" fullname="Pitcairn Islands" isocountry="PN" capital="Adamstown" citizen="Pitcairner" adjective="Pitcairner; of Pitcairn" currency="New Zealand dollar" isocurrency="NZD" currensubunit="cent"/>
+<country shortname="Poland" fullname="Republic of Poland" isocountry="PL" capital="Warsaw" citizen="Pole" adjective="Polish" currency="zloty" isocurrency="PLN" currensubunit="grosz (pl.groszy)"/>
+<country shortname="Portugal" fullname="Portuguese Republic" isocountry="PT " capital="Lisbon" citizen="Portuguese" adjective="Portuguese" currency="Portuguese escudo" isocurrency="PTE" currensubunit="centavo"/>
+<country shortname="Puerto Rico" fullname="Commonwealth of Puerto Rico" isocountry="PR" capital="San Juan" citizen="Puerto Rican" adjective="Puerto Rican" currency="US dollar" isocurrency="USD" currensubunit="cent"/>
+<country shortname="Qatar" fullname="State of Qatar" isocountry="QA" capital="Doha" citizen="Qatari" adjective="Qatari" currency="Qatari riyal" isocurrency="QAR" currensubunit="dirham"/>
+<country shortname="Réunion" fullname="Department of Réunion" isocountry="RE" capital="Saint-Denis" citizen="Reunionese" adjective="of Réunion; Reunionese" currency="French franc" isocurrency="FRF" currensubunit="centime"/>
+<country shortname="Romania" fullname="Romania" isocountry="RO" capital="Bucharest" citizen="Romanian" adjective="Romanian" currency="Romanian leu (pl. lei)" isocurrency="ROL" currensubunit="ban (pl. bani)"/>
+<country shortname="Russia" fullname="Russian Federation" isocountry="RU" capital="Moscow" citizen="Russian" adjective="Russian" currency="new rouble" isocurrency="RUR" currensubunit="kopek"/>
+<country shortname="Rwanda" fullname="Rwandese Republic" isocountry="RW" capital="Kigali" citizen="Rwandan; Rwandese" adjective="Rwandan; Rwandese" currency="Rwandese franc" isocurrency="RWF" currensubunit="centime"/>
+<country shortname="Saint Helena" fullname="Saint Helena and Dependencies" isocountry="SH" capital="Jamestown" citizen="Saint Helenian; Saint" adjective="Saint Helenian; of Saint Helena" currency="Saint Helena pound" isocurrency="SHP" currensubunit="penny (pl.pence)"/>
+<country shortname="Saint Kitts and Nevis" fullname="Federation of Saint Kitts and Nevis" isocountry="KN" capital="Basseterre" citizen="Kittsian; Nevisian" adjective="of Saint Kitts and Nevis" currency="Eastern Caribbean dollar" isocurrency="XCD" currensubunit="cent"/>
+<country shortname="Saint Lucia" fullname="Saint Lucia" isocountry="LC" capital="Castries" citizen="Saint Lucian" adjective="Saint Lucian" currency="Eastern Caribbean dollar" isocurrency="XCD" currensubunit="cent"/>
+<country shortname="Saint Pierre and Miquelon" fullname="Territorial collectivity of Saint Pierre and&#10;Miquelon" isocountry="PM" capital="Saint-Pierre" citizen="St-Pierrais; Miquelonnais" adjective="of Saint Pierre and Miquelon" currency="French franc" isocurrency="FRF" currensubunit="centime"/>
+<country shortname="Saint Vincent and the Grenadines" fullname="Saint Vincent and the Grenadines" isocountry="VC" capital="Kingstown" citizen="Vincentian" adjective="Vincentian; of Saint Vincent and the&#10;Grenadines" currency="Eastern Caribbean dollar" isocurrency="XCD" currensubunit="cent"/>
+<country shortname="Samoa" fullname="Independent State of Samoa" isocountry="WS" capital="Apia" citizen="Samoan" adjective="Samoan" currency="tala (inv.)" isocurrency="WST" currensubunit="sene (inv.)"/>
+<country shortname="San Marino" fullname="Republic of San Marino" isocountry="SM" capital="San Marino" citizen="San Marinese" adjective="of San Marino" currency="Italian lira" isocurrency="ITL" currensubunit=" "/>
+<country shortname="São Tomé and Príncipe" fullname="Democratic Republic of São Tomé and&#10;Príncipe" isocountry="ST" capital="São Tomé" citizen="São Toméan" adjective="of São Tomé and Príncipe; São Toméan" currency="dobra" isocurrency="STD" currensubunit="centavo"/>
+<country shortname="Saudi Arabia" fullname="Kingdom of Saudi Arabia" isocountry="SA" capital="Riyadh" citizen="Saudi Arabian" adjective="Saudi Arabian" currency="Saudi riyal" isocurrency="SAR" currensubunit="halala"/>
+<country shortname="Senegal" fullname="Republic of Senegal" isocountry="SN" capital="Dakar" citizen="Senegalese" adjective="Senegalese" currency="CFA franc" isocurrency="XOF" currensubunit="centime"/>
+<country shortname="Seychelles" fullname="Republic of Seychelles" isocountry="SC" capital="Victoria" citizen="Seychellois" adjective="of Seychelles" currency="Seychelles rupee" isocurrency="SCR" currensubunit="cent"/>
+<country shortname="Sierra Leone" fullname="Republic of Sierra Leone" isocountry="SL" capital="Freetown" citizen="Sierra Leonean" adjective="Sierra Leonean" currency="leone" isocurrency="SLL" currensubunit="cent"/>
+<country shortname="Singapore" fullname="Republic of Singapore" isocountry="SG" capital="Singapore" citizen="Singaporean" adjective="Singaporean" currency="Singapore dollar" isocurrency="SGD" currensubunit="cent"/>
+<country shortname="Slovakia" fullname="Slovak Republic" isocountry="SK" capital="Bratislava" citizen="Slovak" adjective="Slovak" currency="Slovak koruna (pl.koruny)" isocurrency="SKK" currensubunit="halier (pl.haliere)"/>
+<country shortname="Slovenia" fullname="Republic of Slovenia" isocountry="SI" capital="Ljubljana" citizen="Slovene" adjective="Slovene; Slovenian" currency="tolar" isocurrency="SIT" currensubunit="stotin"/>
+<country shortname="Solomon Islands" fullname="Solomon Islands" isocountry="SB" capital="Honiara" citizen="Solomon Islander" adjective="of the Solomon Islands" currency="Solomon Islands dollar" isocurrency="SBD" currensubunit="cent"/>
+<country shortname="Somalia" fullname="Somali Democratic Republic" isocountry="SO" capital="Mogadishu" citizen="Somali" adjective="Somali" currency="Somali shilling" isocurrency="SOS" currensubunit="cent"/>
+<country shortname="South Africa" fullname="Republic of South Africa" isocountry="ZA" capital="Pretoria" citizen="South African" adjective="South African" currency="rand" isocurrency="ZAR" currensubunit="cent"/>
+<country shortname="South Georgia and the South Sandwich Islands" fullname="South Georgia and the South Sandwich&#10;Islands" isocountry="GS" capital="-" citizen="-" adjective="of South Georgia and the South Sandwich&#10;Islands" currency=" " isocurrency=" " currensubunit=" "/>
+<country shortname="South Korea" fullname="Republic of Korea" isocountry="KR" capital="Seoul" citizen="South Korean" adjective="South Korean" currency="South Korean won (inv.)" isocurrency="KRW" currensubunit="chun (inv.)"/>
+<country shortname="Spain" fullname="Kingdom of Spain" isocountry="ES " capital="Madrid" citizen="Spaniard" adjective="Spanish" currency="Spanish peseta" isocurrency="ESP" currensubunit="céntimo"/>
+<country shortname="Sri Lanka" fullname="Democratic Socialist Republic of Sri Lanka" isocountry="LK" capital="Colombo" citizen="Sri Lankan" adjective="Sri Lankan; of Sri Lanka" currency="Sri Lanka rupee" isocurrency="LKR" currensubunit="cent"/>
+<country shortname="Sudan" fullname="Republic of Sudan" isocountry="SD" capital="Khartoum" citizen="Sudanese" adjective="Sudanese" currency="Sudanese pound" isocurrency="SDD" currensubunit="piastre"/>
+<country shortname="Suriname" fullname="Republic of Suriname" isocountry="SR" capital="Paramaribo" citizen="Surinamese" adjective="Surinamese" currency="Suriname guilder" isocurrency="SRG" currensubunit="cent"/>
+<country shortname="Svalbard and Jan Mayen" fullname="Svalbard and Jan Mayen Islands" isocountry="SJ" capital="Longyearbyen (on Spitsbergen, Svalbard)" citizen="-" adjective="of Svalbard; of Jan Mayen" currency="Norwegian krone (pl.kroner)" isocurrency="NOK" currensubunit="øre (inv.)"/>
+<country shortname="Swaziland" fullname="Kingdom of Swaziland" isocountry="SZ" capital="Mbabane" citizen="Swazi" adjective="Swazi" currency="lilangeni (pl.emalangeni)" isocurrency="SZL" currensubunit="cent"/>
+<country shortname="Sweden" fullname="Kingdom of Sweden" isocountry="SE " capital="Stockholm" citizen="Swede" adjective="Swedish" currency="Swedish krona (pl.kronor)" isocurrency="SEK" currensubunit="öre (inv.)"/>
+<country shortname="Switzerland" fullname="Swiss Confederation" isocountry="CH" capital="Berne" citizen="Swiss" adjective="Swiss" currency="Swiss franc" isocurrency="CHF" currensubunit="centime"/>
+<country shortname="Syria" fullname="Syrian Arab Republic" isocountry="SY" capital="Damascus" citizen="Syrian" adjective="Syrian" currency="Syrian pound" isocurrency="SYP" currensubunit="piastre"/>
+<country shortname="Taiwan" fullname="Republic of China" isocountry="TW" capital="Taipei" citizen="Taiwanese" adjective="Taiwanese; of Taiwan" currency="new Taiwan dollar" isocurrency="TWD" currensubunit="fen (inv.)"/>
+<country shortname="Tajikistan" fullname="Republic of Tajikistan" isocountry="TJ" capital="Dushanbe" citizen="Tajik" adjective="Tajik" currency="Tajik rouble" isocurrency="TJR" currensubunit="kopek"/>
+<country shortname="Tanzania" fullname="United Republic of Tanzania" isocountry="TZ" capital="Dodoma" citizen="Tanzanian" adjective="Tanzanian" currency="Tanzanian shilling" isocurrency="TZS" currensubunit="cent"/>
+<country shortname="Thailand" fullname="Kingdom of Thailand" isocountry="TH" capital="Bangkok" citizen="Thai" adjective="Thai" currency="baht (inv.)" isocurrency="THB" currensubunit="satang (inv.)"/>
+<country shortname="The Bahamas" fullname="Commonwealth of The Bahamas" isocountry="BS" capital="Nassau" citizen="Bahamian" adjective="Bahamian" currency="Bahamian dollar" isocurrency="BSD" currensubunit="cent"/>
+<country shortname="The Comoros" fullname="Islamic Federal Republic of The Comoros" isocountry="KM" capital="Moroni" citizen="Comorian" adjective="Comorian" currency="Comorian franc" isocurrency="KMF" currensubunit="centime"/>
+<country shortname="The Gambia" fullname="Republic of The Gambia" isocountry="GM" capital="Banjul" citizen="Gambian" adjective="Gambian" currency="dalasi (inv.)" isocurrency="GMD" currensubunit="butut"/>
+<country shortname="Togo" fullname="Togolese Republic" isocountry="TG" capital="Lomé" citizen="Togolese" adjective="Togolese" currency="CFA franc" isocurrency="XOF" currensubunit="centime"/>
+<country shortname="Tokelau" fullname="Tokelau" isocountry="TK" capital="Fakaofo" citizen="Tokelauan" adjective="of Tokelau; Tokelauan" currency="New Zealand dollar" isocurrency="NZD" currensubunit="cent"/>
+<country shortname="Tonga" fullname="Kingdom of Tonga" isocountry="TO" capital="Nuku'alofa" citizen="Tongan" adjective="Tongan" currency="pa'anga (inv.)" isocurrency="TOP" currensubunit="seniti (inv.)"/>
+<country shortname="Trinidad and Tobago" fullname="Republic of Trinidad and Tobago" isocountry="TT" capital="Port of Spain" citizen="Trinidadian; Tobagonian" adjective="of Trinidad and Tobago" currency="Trinidad and Tobago dollar" isocurrency="TTD" currensubunit="cent"/>
+<country shortname="Tunisia" fullname="Republic of Tunisia" isocountry="TN" capital="Tunis" citizen="Tunisian" adjective="Tunisian" currency="Tunisian dinar" isocurrency="TND" currensubunit="millime"/>
+<country shortname="Turkey" fullname="Republic of Turkey" isocountry="TR" capital="Ankara" citizen="Turk" adjective="Turkish" currency="Turkish lira" isocurrency="TRL" currensubunit="kurus (inv.)"/>
+<country shortname="Turkmenistan" fullname="Turkmenistan" isocountry="TM" capital="Ashkhabad" citizen="Turkmen" adjective="Turkmen" currency="Turkmen manat (inv.)" isocurrency="TMM" currensubunit="tenge (inv.)"/>
+<country shortname="Turks and Caicos Islands" fullname="Turks and Caicos Islands" isocountry="TC" capital="Cockburn Town" citizen="Turks and Caicos Islander" adjective="of the Turks and Caicos Islands&#10;" currency="US dollar" isocurrency="USD" currensubunit="cent"/>
+<country shortname="Tuvalu" fullname="Tuvalu" isocountry="TV" capital="Fongafale" citizen="Tuvaluan" adjective="Tuvaluan" currency="Australian dollar" isocurrency="AUD" currensubunit="cent"/>
+<country shortname="Uganda" fullname="Republic of Uganda" isocountry="UG" capital="Kampala" citizen="Ugandan" adjective="Ugandan" currency="Uganda shilling" isocurrency="UGX" currensubunit="cent"/>
+<country shortname="Ukraine" fullname="Ukraine" isocountry="UA" capital="Kiev" citizen="Ukrainian" adjective="Ukrainian" currency="hryvnia" isocurrency="UAH" currensubunit="kopiyka"/>
+<country shortname="United Arab Emirates" fullname="United Arab Emirates" isocountry="AE" capital="Abu Dhabi" citizen="UAE national" adjective="of the United Arab Emirates" currency="UAE dirham" isocurrency="AED" currensubunit="fils (inv.)"/>
+<country shortname="United Kingdom" fullname="United Kingdom of Great Britain and Northern&#10;Ireland" isocountry="GB " capital="London" citizen="Briton" adjective="British; of the United Kingdom" currency="pound sterling" isocurrency="GBP" currensubunit="penny (pl. pence.)"/>
+<country shortname="United States" fullname="United States of America" isocountry="US" capital="Washington DC" citizen="American; US citizen" adjective="American; of the United States" currency="US dollar" isocurrency="USD" currensubunit="cent"/>
+<country shortname="United States Minor Outlying Islands" fullname="United States Minor Outlying Islands" isocountry="UM" capital="-" citizen="-" adjective="-" currency="US dollar" isocurrency="USD" currensubunit="cent"/>
+<country shortname="Uruguay" fullname="Eastern Republic of Uruguay" isocountry="UY" capital="Montevideo" citizen="Uruguayan" adjective="Uruguayan" currency="Uruguayan peso" isocurrency="UYU" currensubunit="centésimo"/>
+<country shortname="US Virgin Islands" fullname="Virgin Islands of the United States" isocountry="VI" capital="Charlotte Amalie" citizen="US Virgin Islander" adjective="of the US Virgin Islands" currency="US dollar" isocurrency="USD" currensubunit="cent"/>
+<country shortname="Uzbekistan" fullname="Republic of Uzbekistan" isocountry="UZ" capital="Tashkent" citizen="Uzbek" adjective="Uzbek" currency="sum (inv.)&#10;" isocurrency="UZS" currensubunit="tiyin (inv.)"/>
+<country shortname="Vanuatu" fullname="Republic of Vanuatu" isocountry="VU" capital="Port Vila" citizen="Vanuatuan" adjective="of Vanuatu; Vanuatuan" currency="vatu (inv.)" isocurrency="VUV" currensubunit="-"/>
+<country shortname="the Vatican" fullname="The Holy see" isocountry="VA" capital="Vatican City" citizen="-" adjective="Vatican; of the Vatican" currency="Italian lira" isocurrency="ITL" currensubunit="-"/>
+<country shortname="Venezuela" fullname="Republic of Venezuela" isocountry="VE" capital="Caracas" citizen="Venezuelan" adjective="Venezuelan" currency="bolívar (pl:bolívares)" isocurrency="VEB" currensubunit="centavo"/>
+<country shortname="Vietnam" fullname="Socialist Republic of Viet Nam" isocountry="VN" capital="Hanoi" citizen="Vietnamese" adjective="Vietnamese" currency="dong" isocurrency="VND" currensubunit="-"/>
+<country shortname="Wallis and Futuna" fullname="Territory of the Wallis and Futuna Islands" isocountry="WF" capital="Mata-Utu" citizen="Wallisian; Futunan; Wallis and Futuna&#10;Islander" adjective="of the Wallis and Futuna Islands" currency="CFP franc" isocurrency="XPF" currensubunit="centime"/>
+<country shortname="Western Sahara" fullname="-" isocountry="EH" capital="Al aaiun" citizen="Sahrawi" adjective="Sahrawi" currency="Moroccan dirham" isocurrency="MAD" currensubunit="centime"/>
+<country shortname="Yemen" fullname="Republic of Yemen" isocountry="YE" capital="San'a" citizen="Yemenite" adjective="Yemeni" currency="Yemeni rial" isocurrency="YER" currensubunit="fils (inv.)"/>
+<country shortname="Yugoslavia" fullname="Federal Republic of Yugoslavia" isocountry="YU" capital="Belgrade" citizen="Yugoslav" adjective="Yugoslav" currency="Yugoslav dinar" isocurrency="YUM" currensubunit="para (inv.)"/>
+<country shortname="Zambia" fullname="Republic of Zambia" isocountry="ZM" capital="Lusaka" citizen="Zambian" adjective="Zambian" currency="Zambian kwacha (inv.)" isocurrency="ZMK" currensubunit="ngwee (inv.)"/>
+<country shortname="Zimbabwe" fullname="Republic of Zimbabwe" isocountry="ZW" capital="Harare" citizen="Zimbabwean" adjective="Zimbabwean" currency="Zimbabwe dollar" isocurrency="ZWD" currensubunit="cent"/>
+</countries>
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/entable.xml b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/entable.xml
new file mode 100644
index 00000000000..7efc506f232
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/entable.xml
@@ -0,0 +1,2639 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<countries>
+<country>
+<shortname>Afghanistan</shortname>
+<fullname>Islamic State of Afghanistan</fullname>
+<isocountry>AF</isocountry>
+<capital>Kabul</capital>
+<citizen>Afghan</citizen>
+<adjective>Afghan</adjective>
+<currency>afghani</currency>
+<isocurrency>AFA</isocurrency>
+<currensubunit>pul</currensubunit>
+</country>
+<country>
+<shortname>Albania</shortname>
+<fullname>Republic of Albania</fullname>
+<isocountry>AL</isocountry>
+<capital>Tirana</capital>
+<citizen>Albanian</citizen>
+<adjective>Albanian</adjective>
+<currency>lek</currency>
+<isocurrency>ALL</isocurrency>
+<currensubunit>quindar (pl.quindarka)</currensubunit>
+</country>
+<country>
+<shortname>Algeria</shortname>
+<fullname>People's Democratic Republic of Algeria</fullname>
+<isocountry>DZ</isocountry>
+<capital>Algiers</capital>
+<citizen>Algerian</citizen>
+<adjective>Algerian</adjective>
+<currency>Algerian dinar</currency>
+<isocurrency>DZD</isocurrency>
+<currensubunit>centime</currensubunit>
+</country>
+<country>
+<shortname>American Samoa</shortname>
+<fullname>Territory of American Samoa</fullname>
+<isocountry>AS</isocountry>
+<capital>Pago Pago</capital>
+<citizen>Samoan</citizen>
+<adjective>Samoan</adjective>
+<currency>US dollar</currency>
+<isocurrency>USD</isocurrency>
+<currensubunit>cent</currensubunit>
+</country>
+<country>
+<shortname>Andorra</shortname>
+<fullname>Principality of Andorra</fullname>
+<isocountry>AD</isocountry>
+<capital>Andorra la Vella</capital>
+<citizen>Andorran</citizen>
+<adjective>Andorran</adjective>
+<currency>Spanish peseta; French franc</currency>
+<isocurrency>ESP; FRF</isocurrency>
+<currensubunit>céntimo; centime</currensubunit>
+</country>
+<country>
+<shortname>Angola</shortname>
+<fullname>Republic of Angola</fullname>
+<isocountry>AO</isocountry>
+<capital>Luanda</capital>
+<citizen>Angolan</citizen>
+<adjective>Angolan</adjective>
+<currency>readjusted kwanza</currency>
+<isocurrency>AOR</isocurrency>
+<currensubunit>lwei (inv.)</currensubunit>
+</country>
+<country>
+<shortname>Anguilla</shortname>
+<fullname>Anguilla</fullname>
+<isocountry>AI</isocountry>
+<capital>The Valley</capital>
+<citizen>Anguillan</citizen>
+<adjective>Anguillan</adjective>
+<currency>Eastern Caribbean dollar</currency>
+<isocurrency>XCD</isocurrency>
+<currensubunit>cent</currensubunit>
+</country>
+<country>
+<shortname>Antarctica</shortname>
+<fullname>Antarctica</fullname>
+<isocountry>AQ</isocountry>
+<capital>-</capital>
+<citizen>-</citizen>
+<adjective>Antarctic</adjective>
+<currency>-</currency>
+<isocurrency> </isocurrency>
+<currensubunit> </currensubunit>
+</country>
+<country>
+<shortname>Antigua and Barbuda</shortname>
+<fullname>Antigua and Barbuda</fullname>
+<isocountry>AG</isocountry>
+<capital>St John's</capital>
+<citizen>Antiguan; Barbudian</citizen>
+<adjective>Antiguan; Barbudian; of Antigua and Barbuda</adjective>
+<currency>Eastern Caribbean dollar</currency>
+<isocurrency>XCD</isocurrency>
+<currensubunit>cent</currensubunit>
+</country>
+<country>
+<shortname>Argentina</shortname>
+<fullname>Argentine Republic</fullname>
+<isocountry>AR</isocountry>
+<capital>Buenos Aires</capital>
+<citizen>Argentinian</citizen>
+<adjective>Argentine</adjective>
+<currency>Argentine peso</currency>
+<isocurrency>ARS</isocurrency>
+<currensubunit>centavo</currensubunit>
+</country>
+<country>
+<shortname>Armenia</shortname>
+<fullname>Republic of Armenia</fullname>
+<isocountry>AM</isocountry>
+<capital>Yerevan</capital>
+<citizen>Armenian</citizen>
+<adjective>Armenian</adjective>
+<currency>dram (inv.)</currency>
+<isocurrency>AMD</isocurrency>
+<currensubunit>luma</currensubunit>
+</country>
+<country>
+<shortname>Aruba</shortname>
+<fullname>Aruba</fullname>
+<isocountry>AW</isocountry>
+<capital>Oranjestad</capital>
+<citizen>Aruban</citizen>
+<adjective>Aruban</adjective>
+<currency>Aruban guilder</currency>
+<isocurrency>AWG</isocurrency>
+<currensubunit>cent</currensubunit>
+</country>
+<country>
+<shortname>Australia</shortname>
+<fullname>Commonwealth of Australia</fullname>
+<isocountry>AU</isocountry>
+<capital>Canberra</capital>
+<citizen>Australian</citizen>
+<adjective>Australian</adjective>
+<currency>Australian dollar</currency>
+<isocurrency>AUD</isocurrency>
+<currensubunit>cent</currensubunit>
+</country>
+<country>
+<shortname>Austria</shortname>
+<fullname>Republic of Austria</fullname>
+<isocountry>AT </isocountry>
+<capital>Vienna</capital>
+<citizen>Austrian</citizen>
+<adjective>Austrian</adjective>
+<currency>Austrian schilling</currency>
+<isocurrency>ATS</isocurrency>
+<currensubunit>groschen (inv.)</currensubunit>
+</country>
+<country>
+<shortname>Azerbaijan</shortname>
+<fullname>Azerbaijani Republic</fullname>
+<isocountry>AZ</isocountry>
+<capital>Baku</capital>
+<citizen>Azeri</citizen>
+<adjective>Azerbaijani</adjective>
+<currency>Azerbaijani manat</currency>
+<isocurrency>AZM</isocurrency>
+<currensubunit>kepik (inv.)</currensubunit>
+</country>
+<country>
+<shortname>Bahrain</shortname>
+<fullname>State of Bahrain</fullname>
+<isocountry>BH</isocountry>
+<capital>Manama</capital>
+<citizen>Bahraini</citizen>
+<adjective>Bahraini</adjective>
+<currency>Bahraini dinar</currency>
+<isocurrency>BHD</isocurrency>
+<currensubunit>fils (inv.)</currensubunit>
+</country>
+<country>
+<shortname>Bangladesh</shortname>
+<fullname>People's Republic of Bangladesh</fullname>
+<isocountry>BD</isocountry>
+<capital>Dhaka</capital>
+<citizen>Bangladeshi</citizen>
+<adjective>of Bangladesh</adjective>
+<currency>taka (inv.)</currency>
+<isocurrency>BDT</isocurrency>
+<currensubunit>poisha (inv.)</currensubunit>
+</country>
+<country>
+<shortname>Barbados</shortname>
+<fullname>Barbados</fullname>
+<isocountry>BB</isocountry>
+<capital>Bridgetown</capital>
+<citizen>Barbadian</citizen>
+<adjective>Barbadian</adjective>
+<currency>Barbados dollar</currency>
+<isocurrency>BBD</isocurrency>
+<currensubunit>cent</currensubunit>
+</country>
+<country>
+<shortname>Belarus</shortname>
+<fullname>Republic of Belarus</fullname>
+<isocountry>BY</isocountry>
+<capital>Minsk</capital>
+<citizen>Belarusian</citizen>
+<adjective>Belarusian</adjective>
+<currency>Belarusian rouble</currency>
+<isocurrency>BYB</isocurrency>
+<currensubunit>kopek</currensubunit>
+</country>
+<country>
+<shortname>Belgium</shortname>
+<fullname>Kingdom of Belgium</fullname>
+<isocountry>BE </isocountry>
+<capital>Brussels</capital>
+<citizen>Belgian</citizen>
+<adjective>Belgian</adjective>
+<currency>Belgian franc</currency>
+<isocurrency>BEF</isocurrency>
+<currensubunit>centime</currensubunit>
+</country>
+<country>
+<shortname>Belize</shortname>
+<fullname>Belize</fullname>
+<isocountry>BZ</isocountry>
+<capital>Belmopan</capital>
+<citizen>Belizean</citizen>
+<adjective>Belizean</adjective>
+<currency>Belize dollar</currency>
+<isocurrency>BZD</isocurrency>
+<currensubunit>cent</currensubunit>
+</country>
+<country>
+<shortname>Benin</shortname>
+<fullname>Republic of Benin</fullname>
+<isocountry>BJ</isocountry>
+<capital>Porto Novo</capital>
+<citizen>Beninese</citizen>
+<adjective>Beninese</adjective>
+<currency>CFA franc</currency>
+<isocurrency>XOF</isocurrency>
+<currensubunit>centime</currensubunit>
+</country>
+<country>
+<shortname>Bermuda</shortname>
+<fullname>Bermuda</fullname>
+<isocountry>BM</isocountry>
+<capital>Hamilton</capital>
+<citizen>Bermudian</citizen>
+<adjective>Bermudian</adjective>
+<currency>Bermuda dollar</currency>
+<isocurrency>BMD</isocurrency>
+<currensubunit>cent</currensubunit>
+</country>
+<country>
+<shortname>Bhutan</shortname>
+<fullname>Kingdom of Bhutan</fullname>
+<isocountry>BT</isocountry>
+<capital>Thimphu</capital>
+<citizen>Bhutanese</citizen>
+<adjective>Bhutanese</adjective>
+<currency>ngultrum (inv.)</currency>
+<isocurrency>BTN</isocurrency>
+<currensubunit>chhetrum (inv.)</currensubunit>
+</country>
+<country>
+<shortname>Bolivia</shortname>
+<fullname>Republic of Bolivia</fullname>
+<isocountry>BO</isocountry>
+<capital>Sucre</capital>
+<citizen>Bolivian</citizen>
+<adjective>Bolivian</adjective>
+<currency>boliviano</currency>
+<isocurrency>BOB</isocurrency>
+<currensubunit>centavo</currensubunit>
+</country>
+<country>
+<shortname>Bosnia and Herzegovina</shortname>
+<fullname>Bosnia and Herzegovina</fullname>
+<isocountry>BA</isocountry>
+<capital>Sarajevo</capital>
+<citizen>Bosnian; Herzegovinian</citizen>
+<adjective>Bosnian; Herzegovinian</adjective>
+<currency>Bosnian dinar; Bosnian convertible mark</currency>
+<isocurrency>BAM</isocurrency>
+<currensubunit>fening</currensubunit>
+</country>
+<country>
+<shortname>Botswana</shortname>
+<fullname>Republic of Botswana</fullname>
+<isocountry>BW</isocountry>
+<capital>Gaborone</capital>
+<citizen>Botswanan</citizen>
+<adjective>Botswanan; of Botswana</adjective>
+<currency>pula (inv.)</currency>
+<isocurrency>BWP</isocurrency>
+<currensubunit>thebe (inv.)</currensubunit>
+</country>
+<country>
+<shortname>Bouvet Island</shortname>
+<fullname>Bouvet Island</fullname>
+<isocountry>BV</isocountry>
+<capital>-</capital>
+<citizen>-</citizen>
+<adjective>of Bouvet Island</adjective>
+<currency> </currency>
+<isocurrency> </isocurrency>
+<currensubunit> </currensubunit>
+</country>
+<country>
+<shortname>Brazil</shortname>
+<fullname>Federative Republic of Brazil</fullname>
+<isocountry>BR</isocountry>
+<capital>Brasilia</capital>
+<citizen>Brazilian</citizen>
+<adjective>Brazilian</adjective>
+<currency>Brazilian real (pl. reais)</currency>
+<isocurrency>BRL</isocurrency>
+<currensubunit>centavo</currensubunit>
+</country>
+<country>
+<shortname>British Indian Ocean Territory</shortname>
+<fullname>British Indian Ocean Territory</fullname>
+<isocountry>IO</isocountry>
+<capital>-</capital>
+<citizen>-</citizen>
+<adjective>of the British Indian Ocean Territory</adjective>
+<currency> </currency>
+<isocurrency> </isocurrency>
+<currensubunit> </currensubunit>
+</country>
+<country>
+<shortname>British Virgin Islands</shortname>
+<fullname>British Virgin Islands</fullname>
+<isocountry>VG</isocountry>
+<capital>Road Town</capital>
+<citizen>British Virgin Islander; BVIslander</citizen>
+<adjective>of the British Virgin Islands</adjective>
+<currency>US dollar</currency>
+<isocurrency>USD</isocurrency>
+<currensubunit>cent</currensubunit>
+</country>
+<country>
+<shortname>Brunei</shortname>
+<fullname>Negara Brunei Darussalam</fullname>
+<isocountry>BN</isocountry>
+<capital>Bandar Seri Begawan</capital>
+<citizen>Bruneian</citizen>
+<adjective>Bruneian; of Brunei</adjective>
+<currency>Brunei dollar</currency>
+<isocurrency>BND</isocurrency>
+<currensubunit>sen (inv.)</currensubunit>
+</country>
+<country>
+<shortname>Bulgaria</shortname>
+<fullname>Republic of Bulgaria</fullname>
+<isocountry>BG</isocountry>
+<capital>Sofia</capital>
+<citizen>Bulgarian</citizen>
+<adjective>Bulgarian</adjective>
+<currency>lev (pl. leva)</currency>
+<isocurrency>BGL</isocurrency>
+<currensubunit>stotinka (pl. stotinki)</currensubunit>
+</country>
+<country>
+<shortname>Burkina Faso</shortname>
+<fullname>Burkina Faso</fullname>
+<isocountry>BF</isocountry>
+<capital>Ouagadougou</capital>
+<citizen>Burkinabe</citizen>
+<adjective>Burkinabe; of Burkina Faso</adjective>
+<currency>CFA franc</currency>
+<isocurrency>XOF</isocurrency>
+<currensubunit>centime</currensubunit>
+</country>
+<country>
+<shortname>Burundi</shortname>
+<fullname>Republic of Burundi</fullname>
+<isocountry>BI</isocountry>
+<capital>Bujumbura</capital>
+<citizen>Burundian</citizen>
+<adjective>Burundian; of Burundi</adjective>
+<currency>Burundi franc</currency>
+<isocurrency>BIF</isocurrency>
+<currensubunit>centime</currensubunit>
+</country>
+<country>
+<shortname>Cambodia</shortname>
+<fullname>Kingdom of Cambodia</fullname>
+<isocountry>KH</isocountry>
+<capital>Phnom Penh</capital>
+<citizen>Cambodian</citizen>
+<adjective>Cambodian</adjective>
+<currency>riel</currency>
+<isocurrency>KHR</isocurrency>
+<currensubunit>sen (inv.)</currensubunit>
+</country>
+<country>
+<shortname>Cameroon</shortname>
+<fullname>Republic of Cameroon</fullname>
+<isocountry>CM</isocountry>
+<capital>Yaoundé</capital>
+<citizen>Cameroonian</citizen>
+<adjective>Cameroonian</adjective>
+<currency>CFA franc</currency>
+<isocurrency>XAF</isocurrency>
+<currensubunit>centime</currensubunit>
+</country>
+<country>
+<shortname>Canada</shortname>
+<fullname>Canada</fullname>
+<isocountry>CA</isocountry>
+<capital>Ottawa</capital>
+<citizen>Canadian</citizen>
+<adjective>Canadian</adjective>
+<currency>Canadian dollar</currency>
+<isocurrency>CAD</isocurrency>
+<currensubunit>cent</currensubunit>
+</country>
+<country>
+<shortname>Cape Verde</shortname>
+<fullname>Republic of Cape Verde</fullname>
+<isocountry>CV</isocountry>
+<capital>Praia</capital>
+<citizen>Cape Verdean</citizen>
+<adjective>Cape Verdean</adjective>
+<currency>Cape Verde escudo</currency>
+<isocurrency>CVE</isocurrency>
+<currensubunit>centavo</currensubunit>
+</country>
+<country>
+<shortname>Cayman Islands</shortname>
+<fullname>Cayman Islands</fullname>
+<isocountry>KY</isocountry>
+<capital>George Town</capital>
+<citizen>Caymanian</citizen>
+<adjective>Caymanian; of the Cayman Islands</adjective>
+<currency>Cayman Islands dollar</currency>
+<isocurrency>KYD</isocurrency>
+<currensubunit>cent</currensubunit>
+</country>
+<country>
+<shortname>Central African Republic</shortname>
+<fullname>Central African Republic</fullname>
+<isocountry>CF</isocountry>
+<capital>Bangui</capital>
+<citizen>Central African</citizen>
+<adjective>Central African; of the Central African
+Republic</adjective>
+<currency>CFA franc</currency>
+<isocurrency>XAF</isocurrency>
+<currensubunit>centime</currensubunit>
+</country>
+<country>
+<shortname>Chad</shortname>
+<fullname>Republic of Chad</fullname>
+<isocountry>TD</isocountry>
+<capital>N'Djamena</capital>
+<citizen>Chadian</citizen>
+<adjective>Chadian; of Chad</adjective>
+<currency>CFA franc</currency>
+<isocurrency>XAF</isocurrency>
+<currensubunit>centime</currensubunit>
+</country>
+<country>
+<shortname>Chile</shortname>
+<fullname>Republic of Chile</fullname>
+<isocountry>CL</isocountry>
+<capital>Santiago</capital>
+<citizen>Chilean</citizen>
+<adjective>Chilean</adjective>
+<currency>Chilean peso</currency>
+<isocurrency>CLP</isocurrency>
+<currensubunit>centavo</currensubunit>
+</country>
+<country>
+<shortname>China</shortname>
+<fullname>People's Republic of China</fullname>
+<isocountry>CN</isocountry>
+<capital>Beijing</capital>
+<citizen>Chinese</citizen>
+<adjective>Chinese</adjective>
+<currency>renminbi-yuan (inv.)</currency>
+<isocurrency>CNY</isocurrency>
+<currensubunit>fen (inv.)</currensubunit>
+</country>
+<country>
+<shortname>Christmas Island</shortname>
+<fullname>Christmas Island Territory</fullname>
+<isocountry>CX</isocountry>
+<capital>Flying Fish Cove</capital>
+<citizen>Christmas Islander</citizen>
+<adjective>of Christmas Island</adjective>
+<currency>Australian dollar</currency>
+<isocurrency>AUD</isocurrency>
+<currensubunit>cent</currensubunit>
+</country>
+<country>
+<shortname>Cocos (Keeling) Islands</shortname>
+<fullname>Territory of Cocos (Keeling) Islands</fullname>
+<isocountry>CC</isocountry>
+<capital>Bantam</capital>
+<citizen>Cocos Islander</citizen>
+<adjective>of the Cocos (Keeling) Islands</adjective>
+<currency>Australian dollar</currency>
+<isocurrency>AUD</isocurrency>
+<currensubunit>cent</currensubunit>
+</country>
+<country>
+<shortname>Colombia</shortname>
+<fullname>Republic of Colombia</fullname>
+<isocountry>CO</isocountry>
+<capital>Santa Fe de Bogotá</capital>
+<citizen>Colombian</citizen>
+<adjective>Colombian</adjective>
+<currency>Colombian peso</currency>
+<isocurrency>COP</isocurrency>
+<currensubunit>centavo</currensubunit>
+</country>
+<country>
+<shortname>Congo</shortname>
+<fullname>Republic of the Congo</fullname>
+<isocountry>CG</isocountry>
+<capital>Brazzaville</capital>
+<citizen>Congolese</citizen>
+<adjective>Congolese</adjective>
+<currency>CFA franc</currency>
+<isocurrency>XAF</isocurrency>
+<currensubunit>centime</currensubunit>
+</country>
+<country>
+<shortname>Cook Islands</shortname>
+<fullname>Cook Islands</fullname>
+<isocountry>CK</isocountry>
+<capital>Avarua</capital>
+<citizen>Cook Islander</citizen>
+<adjective>of the Cook Islands</adjective>
+<currency>New Zealand dollar</currency>
+<isocurrency>NZD</isocurrency>
+<currensubunit>cent</currensubunit>
+</country>
+<country>
+<shortname>Costa Rica</shortname>
+<fullname>Republic of Costa Rica</fullname>
+<isocountry>CR</isocountry>
+<capital>San José</capital>
+<citizen>Costa Rican</citizen>
+<adjective>Costa Rican</adjective>
+<currency>Costa Rican colón (pl.colones)</currency>
+<isocurrency>CRC</isocurrency>
+<currensubunit>céntimo</currensubunit>
+</country>
+<country>
+<shortname>Côte d'Ivoire</shortname>
+<fullname>Republic of Côte d'Ivoire</fullname>
+<isocountry>CI</isocountry>
+<capital>Yamoussoukro</capital>
+<citizen>Ivorian</citizen>
+<adjective>Ivorian</adjective>
+<currency>CFA franc</currency>
+<isocurrency>XOF</isocurrency>
+<currensubunit>centime</currensubunit>
+</country>
+<country>
+<shortname>Croatia</shortname>
+<fullname>Republic of Croatia</fullname>
+<isocountry>HR</isocountry>
+<capital>Zagreb</capital>
+<citizen>Croat</citizen>
+<adjective>Croatian</adjective>
+<currency>kuna (inv.)</currency>
+<isocurrency>HRK</isocurrency>
+<currensubunit>lipa (inv.)</currensubunit>
+</country>
+<country>
+<shortname>Cuba</shortname>
+<fullname>Republic of Cuba</fullname>
+<isocountry>CU</isocountry>
+<capital>Havana</capital>
+<citizen>Cuban</citizen>
+<adjective>Cuban</adjective>
+<currency>Cuban peso</currency>
+<isocurrency>CUP</isocurrency>
+<currensubunit>centavo</currensubunit>
+</country>
+<country>
+<shortname>Cyprus</shortname>
+<fullname>Republic of Cyprus</fullname>
+<isocountry>CY</isocountry>
+<capital>Nicosia</capital>
+<citizen>Cypriot</citizen>
+<adjective>Cypriot</adjective>
+<currency>Cyprus pound</currency>
+<isocurrency>CYP</isocurrency>
+<currensubunit>mil</currensubunit>
+</country>
+<country>
+<shortname>Czech Republic</shortname>
+<fullname>Czech Republic</fullname>
+<isocountry>CZ</isocountry>
+<capital>Prague</capital>
+<citizen>Czech</citizen>
+<adjective>Czech</adjective>
+<currency>Czech koruna (pl.koruny)</currency>
+<isocurrency>CZK</isocurrency>
+<currensubunit>halér (pl. halére)</currensubunit>
+</country>
+<country>
+<shortname>Democratic Republic of the Congo</shortname>
+<fullname>Democratic Republic of the Congo</fullname>
+<isocountry>CD</isocountry>
+<capital>Kinshasa</capital>
+<citizen>Congolese</citizen>
+<adjective>Congolese; of the Democratic Republic of the
+Congo</adjective>
+<currency>new zaire</currency>
+<isocurrency>CDF</isocurrency>
+<currensubunit>centime</currensubunit>
+</country>
+<country>
+<shortname>Denmark</shortname>
+<fullname>Kingdom of Denmark</fullname>
+<isocountry>DK </isocountry>
+<capital>Copenhagen</capital>
+<citizen>Dane</citizen>
+<adjective>Danish</adjective>
+<currency>Danish krone (pl.kroner)
+</currency>
+<isocurrency>DKK</isocurrency>
+<currensubunit>øre (inv.)</currensubunit>
+</country>
+<country>
+<shortname>Djibouti</shortname>
+<fullname>Republic of Djibouti</fullname>
+<isocountry>DJ</isocountry>
+<capital>Djibouti</capital>
+<citizen>Djiboutian</citizen>
+<adjective>of Djibouti</adjective>
+<currency>Djibouti franc</currency>
+<isocurrency>DJF</isocurrency>
+<currensubunit>centime</currensubunit>
+</country>
+<country>
+<shortname>Dominica</shortname>
+<fullname>Commonwealth of Dominica</fullname>
+<isocountry>DM</isocountry>
+<capital>Roseau</capital>
+<citizen>Dominican</citizen>
+<adjective>of Dominica</adjective>
+<currency>Eastern Caribbean dollar</currency>
+<isocurrency>XCD</isocurrency>
+<currensubunit>cent</currensubunit>
+</country>
+<country>
+<shortname>Dominican Republic</shortname>
+<fullname>Dominican Republic</fullname>
+<isocountry>DO</isocountry>
+<capital>Santo Domingo</capital>
+<citizen>Dominican</citizen>
+<adjective>Dominican</adjective>
+<currency>Dominican peso</currency>
+<isocurrency>DOP</isocurrency>
+<currensubunit>centavo</currensubunit>
+</country>
+<country>
+<shortname>East Timor</shortname>
+<fullname>East Timor</fullname>
+<isocountry>TP</isocountry>
+<capital>Dili</capital>
+<citizen>East Timorese</citizen>
+<adjective>East Timorese</adjective>
+<currency>Indonesian rupiah</currency>
+<isocurrency>IDR</isocurrency>
+<currensubunit>-</currensubunit>
+</country>
+<country>
+<shortname>Ecuador</shortname>
+<fullname>Republic of Ecuador</fullname>
+<isocountry>EC</isocountry>
+<capital>Quito</capital>
+<citizen>Ecuadorian</citizen>
+<adjective>Ecuadorian</adjective>
+<currency>sucre</currency>
+<isocurrency>ECS</isocurrency>
+<currensubunit>centavo</currensubunit>
+</country>
+<country>
+<shortname>Egypt</shortname>
+<fullname>Arab Republic of Egypt</fullname>
+<isocountry>EG</isocountry>
+<capital>Cairo</capital>
+<citizen>Egyptian</citizen>
+<adjective>Egyptian</adjective>
+<currency>Egyptian pound</currency>
+<isocurrency>EGP</isocurrency>
+<currensubunit>piastre</currensubunit>
+</country>
+<country>
+<shortname>El Salvador</shortname>
+<fullname>Republic of El Salvador</fullname>
+<isocountry>SV</isocountry>
+<capital>San Salvador</capital>
+<citizen>Salvadorian; Salvadoran</citizen>
+<adjective>Salvadorian; Salvadoran</adjective>
+<currency>El Salvador colón (pl.colones)</currency>
+<isocurrency>SVC</isocurrency>
+<currensubunit>centavo</currensubunit>
+</country>
+<country>
+<shortname>Equatorial Guinea</shortname>
+<fullname>Republic of Equatorial Guinea</fullname>
+<isocountry>GQ</isocountry>
+<capital>Malabo</capital>
+<citizen>Equatorial Guinean</citizen>
+<adjective>of Equatorial Guinea</adjective>
+<currency>CFA franc</currency>
+<isocurrency>XAF</isocurrency>
+<currensubunit>centime</currensubunit>
+</country>
+<country>
+<shortname>Eritrea</shortname>
+<fullname>State of Eritrea</fullname>
+<isocountry>ER</isocountry>
+<capital>Asmara</capital>
+<citizen>Eritrean</citizen>
+<adjective>Eritrean</adjective>
+<currency>nakfa (inv.)</currency>
+<isocurrency>ERN</isocurrency>
+<currensubunit>centime</currensubunit>
+</country>
+<country>
+<shortname>Estonia</shortname>
+<fullname>Republic of Estonia</fullname>
+<isocountry>EE</isocountry>
+<capital>Tallinn</capital>
+<citizen>Estonian</citizen>
+<adjective>Estonian</adjective>
+<currency>Estonian kroon (pl.krooni)</currency>
+<isocurrency>EEK</isocurrency>
+<currensubunit>sent (pl. senti)</currensubunit>
+</country>
+<country>
+<shortname>Ethiopia</shortname>
+<fullname>Federal Democratic Republic of Ethiopia</fullname>
+<isocountry>ET</isocountry>
+<capital>Addis Ababa</capital>
+<citizen>Ethiopian</citizen>
+<adjective>Ethiopian</adjective>
+<currency>Ethiopian birr (inv.)</currency>
+<isocurrency>ETB</isocurrency>
+<currensubunit>cent</currensubunit>
+</country>
+<country>
+<shortname>Faeroe Islands</shortname>
+<fullname>Faeroe Islands</fullname>
+<isocountry>FO</isocountry>
+<capital>Thorshavn</capital>
+<citizen>Faeroese</citizen>
+<adjective>Faeroese</adjective>
+<currency>Danish krone (pl.kroner)</currency>
+<isocurrency>DKK</isocurrency>
+<currensubunit>øre (inv.)</currensubunit>
+</country>
+<country>
+<shortname>Falkland Islands</shortname>
+<fullname>Falkland Islands</fullname>
+<isocountry>FK</isocountry>
+<capital>Stanley</capital>
+<citizen>Falkland Islander</citizen>
+<adjective>of the Falkland Islands</adjective>
+<currency>Falkland Islands pound</currency>
+<isocurrency>FKP</isocurrency>
+<currensubunit>new penny (pl. pence)</currensubunit>
+</country>
+<country>
+<shortname>Fiji</shortname>
+<fullname>Republic of Fiji</fullname>
+<isocountry>FJ</isocountry>
+<capital>Suva</capital>
+<citizen>Fijian</citizen>
+<adjective>Fijian; of Fiji</adjective>
+<currency>Fiji dollar</currency>
+<isocurrency>FJD</isocurrency>
+<currensubunit>cent</currensubunit>
+</country>
+<country>
+<shortname>Finland</shortname>
+<fullname>Republic of Finland</fullname>
+<isocountry>FI </isocountry>
+<capital>Helsinki</capital>
+<citizen>Finn</citizen>
+<adjective>Finnish</adjective>
+<currency>Finnish markka (pl.markkaa)</currency>
+<isocurrency>FIM</isocurrency>
+<currensubunit>penni (pl. penniä)</currensubunit>
+</country>
+<country>
+<shortname>France</shortname>
+<fullname>French Republic</fullname>
+<isocountry>FR </isocountry>
+<capital>Paris</capital>
+<citizen>Frenchman; Frenchwoman</citizen>
+<adjective>French</adjective>
+<currency>French franc</currency>
+<isocurrency>FRF</isocurrency>
+<currensubunit>centime</currensubunit>
+</country>
+<country>
+<shortname>French Guiana</shortname>
+<fullname>Department of French Guiana</fullname>
+<isocountry>GF</isocountry>
+<capital>Cayenne</capital>
+<citizen>Guianese</citizen>
+<adjective>Guianese</adjective>
+<currency>French franc</currency>
+<isocurrency>FRF</isocurrency>
+<currensubunit>centime</currensubunit>
+</country>
+<country>
+<shortname>French Polynesia</shortname>
+<fullname>Territory of French Polynesia</fullname>
+<isocountry>PF</isocountry>
+<capital>Papeete</capital>
+<citizen>Polynesian</citizen>
+<adjective>Polynesian</adjective>
+<currency>CFP franc</currency>
+<isocurrency>XPF</isocurrency>
+<currensubunit>centime</currensubunit>
+</country>
+<country>
+<shortname>French Southern and Antarctic Lands</shortname>
+<fullname>Territory of the French Southern and Antarctic
+Lands</fullname>
+<isocountry>TF</isocountry>
+<capital> </capital>
+<citizen>-</citizen>
+<adjective>of the French Southern and Antarctic Lands</adjective>
+<currency>-</currency>
+<isocurrency>-</isocurrency>
+<currensubunit>-</currensubunit>
+</country>
+<country>
+<shortname>Gabon</shortname>
+<fullname>Gabonese Republic</fullname>
+<isocountry>GA</isocountry>
+<capital>Libreville</capital>
+<citizen>Gabonese</citizen>
+<adjective>Gabonese</adjective>
+<currency>CFA franc</currency>
+<isocurrency>XAF</isocurrency>
+<currensubunit>centime</currensubunit>
+</country>
+<country>
+<shortname>Georgia</shortname>
+<fullname>Georgia</fullname>
+<isocountry>GE</isocountry>
+<capital>Tbilisi</capital>
+<citizen>Georgian</citizen>
+<adjective>Georgian</adjective>
+<currency>lari</currency>
+<isocurrency>GEL</isocurrency>
+<currensubunit>tetri (inv.)</currensubunit>
+</country>
+<country>
+<shortname>Germany</shortname>
+<fullname>Federal Republic of Germany</fullname>
+<isocountry>DE </isocountry>
+<capital>Berlin</capital>
+<citizen>German</citizen>
+<adjective>German</adjective>
+<currency>German mark</currency>
+<isocurrency>DEM</isocurrency>
+<currensubunit>pfennig</currensubunit>
+</country>
+<country>
+<shortname>Ghana</shortname>
+<fullname>Republic of Ghana</fullname>
+<isocountry>GH</isocountry>
+<capital>Accra</capital>
+<citizen>Ghanaian</citizen>
+<adjective>Ghanaian</adjective>
+<currency>cedi</currency>
+<isocurrency>GHC</isocurrency>
+<currensubunit>pesewa</currensubunit>
+</country>
+<country>
+<shortname>Gibraltar</shortname>
+<fullname>Gibraltar</fullname>
+<isocountry>GI</isocountry>
+<capital>Gibraltar</capital>
+<citizen>Gibraltarian</citizen>
+<adjective>Gibraltarian; of Gibraltar</adjective>
+<currency>Gibraltar pound</currency>
+<isocurrency>GIP</isocurrency>
+<currensubunit>penny (pl. pence)</currensubunit>
+</country>
+<country>
+<shortname>Greece</shortname>
+<fullname>Hellenic Republic</fullname>
+<isocountry>GR </isocountry>
+<capital>Athens</capital>
+<citizen>Greek</citizen>
+<adjective>Greek</adjective>
+<currency>Greek drachma (pl.drachmae)</currency>
+<isocurrency>GRD</isocurrency>
+<currensubunit>lepton (pl.lepta)</currensubunit>
+</country>
+<country>
+<shortname>Greenland</shortname>
+<fullname>Greenland</fullname>
+<isocountry>GL</isocountry>
+<capital>Nuuk</capital>
+<citizen>Greenlander</citizen>
+<adjective>Greenlandic; of Greenland</adjective>
+<currency>Danish krone (pl.kroner)</currency>
+<isocurrency>DKK</isocurrency>
+<currensubunit>øre (inv.)</currensubunit>
+</country>
+<country>
+<shortname>Grenada</shortname>
+<fullname>Grenada</fullname>
+<isocountry>GD</isocountry>
+<capital>St George's</capital>
+<citizen>Grenadian</citizen>
+<adjective>Grenadian</adjective>
+<currency>Eastern Caribbean dollar</currency>
+<isocurrency>XCD</isocurrency>
+<currensubunit>cent</currensubunit>
+</country>
+<country>
+<shortname>Guadeloupe</shortname>
+<fullname>Department of Guadeloupe</fullname>
+<isocountry>GP</isocountry>
+<capital>Basse Terre</capital>
+<citizen>Guadeloupean</citizen>
+<adjective>of Guadeloupe; Guadeloupean</adjective>
+<currency>French franc</currency>
+<isocurrency>FRF</isocurrency>
+<currensubunit>centime</currensubunit>
+</country>
+<country>
+<shortname>Guam</shortname>
+<fullname>Territory of Guam</fullname>
+<isocountry>GU</isocountry>
+<capital>Hagåtña</capital>
+<citizen>Guamanian</citizen>
+<adjective>Guamanian; of Guam</adjective>
+<currency>US dollar</currency>
+<isocurrency>USD</isocurrency>
+<currensubunit>cent</currensubunit>
+</country>
+<country>
+<shortname>Guatemala</shortname>
+<fullname>Republic of Guatemala</fullname>
+<isocountry>GT</isocountry>
+<capital>Guatemala City</capital>
+<citizen>Guatemalan</citizen>
+<adjective>Guatemalan</adjective>
+<currency>Guatemalan quetzal (pl.quetzales)</currency>
+<isocurrency>GTQ</isocurrency>
+<currensubunit>centavo</currensubunit>
+</country>
+<country>
+<shortname>Guinea</shortname>
+<fullname>Republic of Guinea</fullname>
+<isocountry>GN</isocountry>
+<capital>Conakry</capital>
+<citizen>Guinean</citizen>
+<adjective>Guinean</adjective>
+<currency>Guinean franc</currency>
+<isocurrency>GNF</isocurrency>
+<currensubunit>-</currensubunit>
+</country>
+<country>
+<shortname>Guinea-Bissau</shortname>
+<fullname>Republic of Guinea-Bissau</fullname>
+<isocountry>GW</isocountry>
+<capital>Bissau</capital>
+<citizen>Guinea-Bissau national; Guinean</citizen>
+<adjective>of Guinea-Bissau</adjective>
+<currency>CFA franc</currency>
+<isocurrency>XOF</isocurrency>
+<currensubunit>centime</currensubunit>
+</country>
+<country>
+<shortname>Guyana</shortname>
+<fullname>Cooperative Republic of Guyana</fullname>
+<isocountry>GY</isocountry>
+<capital>Georgetown</capital>
+<citizen>Guyanese</citizen>
+<adjective>Guyanese</adjective>
+<currency>Guyanese dollar</currency>
+<isocurrency>GYD</isocurrency>
+<currensubunit>cent</currensubunit>
+</country>
+<country>
+<shortname>Haiti</shortname>
+<fullname>Republic of Haiti</fullname>
+<isocountry>HT</isocountry>
+<capital>Port-au-Prince</capital>
+<citizen>Haitian</citizen>
+<adjective>Haitian</adjective>
+<currency>gourde</currency>
+<isocurrency>HTG</isocurrency>
+<currensubunit>centime</currensubunit>
+</country>
+<country>
+<shortname>Heard Island
+
+and McDonald Islands</shortname>
+<fullname>Territory of Heard Island and McDonald
+Islands</fullname>
+<isocountry>HM</isocountry>
+<capital>-</capital>
+<citizen>-</citizen>
+<adjective>of Heard Island and McDonald Islands</adjective>
+<currency> </currency>
+<isocurrency> </isocurrency>
+<currensubunit> </currensubunit>
+</country>
+<country>
+<shortname>Honduras</shortname>
+<fullname>Republic of Honduras</fullname>
+<isocountry>HN</isocountry>
+<capital>Tegucigalpa</capital>
+<citizen>Honduran</citizen>
+<adjective>Honduran</adjective>
+<currency>lempira</currency>
+<isocurrency>HNL</isocurrency>
+<currensubunit>centavo</currensubunit>
+</country>
+<country>
+<shortname>Hong Kong</shortname>
+<fullname>Hong Kong Special Administrative Region (HKSAR)</fullname>
+<isocountry>HK</isocountry>
+<capital>Victoria</capital>
+<citizen>Hong Kong Chinese</citizen>
+<adjective>Hong Kong Chinese</adjective>
+<currency>Hong Kong dollar</currency>
+<isocurrency>HKD</isocurrency>
+<currensubunit>cent</currensubunit>
+</country>
+<country>
+<shortname>Hungary</shortname>
+<fullname>Republic of Hungary</fullname>
+<isocountry>HU</isocountry>
+<capital>Budapest</capital>
+<citizen>Hungarian</citizen>
+<adjective>Hungarian</adjective>
+<currency>forint (inv.)</currency>
+<isocurrency>HUF</isocurrency>
+<currensubunit>fillér (inv.)</currensubunit>
+</country>
+<country>
+<shortname>Iceland</shortname>
+<fullname>Republic of Iceland</fullname>
+<isocountry>IS</isocountry>
+<capital>Reykjavik</capital>
+<citizen>Icelander</citizen>
+<adjective>Icelandic</adjective>
+<currency>Icelandic króna (pl.krónur)</currency>
+<isocurrency>ISK</isocurrency>
+<currensubunit>eyrir (pl.aurar)</currensubunit>
+</country>
+<country>
+<shortname>India</shortname>
+<fullname>Republic of India</fullname>
+<isocountry>IN</isocountry>
+<capital>New Delhi</capital>
+<citizen>Indian</citizen>
+<adjective>Indian</adjective>
+<currency>Indian rupee</currency>
+<isocurrency>INR</isocurrency>
+<currensubunit>paisa (pl.paise)</currensubunit>
+</country>
+<country>
+<shortname>Indonesia</shortname>
+<fullname>Republic of Indonesia</fullname>
+<isocountry>ID</isocountry>
+<capital>Jakarta</capital>
+<citizen>Indonesian</citizen>
+<adjective>Indonesian</adjective>
+<currency>Indonesian rupiah (inv.)</currency>
+<isocurrency>IDR</isocurrency>
+<currensubunit>sen (inv.)</currensubunit>
+</country>
+<country>
+<shortname>Iran</shortname>
+<fullname>Islamic Republic of Iran</fullname>
+<isocountry>IR</isocountry>
+<capital>Tehran</capital>
+<citizen>Iranian</citizen>
+<adjective>Iranian</adjective>
+<currency>Iranian rial</currency>
+<isocurrency>IRR</isocurrency>
+<currensubunit>-</currensubunit>
+</country>
+<country>
+<shortname>Iraq</shortname>
+<fullname>Republic of Iraq</fullname>
+<isocountry>IQ</isocountry>
+<capital>Baghdad</capital>
+<citizen>Iraqi</citizen>
+<adjective>Iraqi</adjective>
+<currency>Iraqi dinar</currency>
+<isocurrency>IQD</isocurrency>
+<currensubunit>fils (inv.)</currensubunit>
+</country>
+<country>
+<shortname>Ireland</shortname>
+<fullname>Ireland</fullname>
+<isocountry>IE </isocountry>
+<capital>Dublin</capital>
+<citizen>Irishman; Irishwoman</citizen>
+<adjective>Irish</adjective>
+<currency>Irish pound</currency>
+<isocurrency>IEP</isocurrency>
+<currensubunit>penny (pl.pence)</currensubunit>
+</country>
+<country>
+<shortname>Israel</shortname>
+<fullname>State of Israel</fullname>
+<isocountry>IL</isocountry>
+<capital>Jerusalem</capital>
+<citizen>Israeli</citizen>
+<adjective>Israeli</adjective>
+<currency>new shekel</currency>
+<isocurrency>ILS</isocurrency>
+<currensubunit>agora (pl.agorot)</currensubunit>
+</country>
+<country>
+<shortname>Italy</shortname>
+<fullname>Italian Republic</fullname>
+<isocountry>IT </isocountry>
+<capital>Rome</capital>
+<citizen>Italian</citizen>
+<adjective>Italian</adjective>
+<currency>Italian lira (pl. lire)</currency>
+<isocurrency>ITL</isocurrency>
+<currensubunit> </currensubunit>
+</country>
+<country>
+<shortname>Jamaica</shortname>
+<fullname>Jamaica</fullname>
+<isocountry>JM</isocountry>
+<capital>Kingston</capital>
+<citizen>Jamaican</citizen>
+<adjective>Jamaican</adjective>
+<currency>Jamaica dollar</currency>
+<isocurrency>JMD</isocurrency>
+<currensubunit>cent</currensubunit>
+</country>
+<country>
+<shortname>Japan</shortname>
+<fullname>Japan</fullname>
+<isocountry>JP</isocountry>
+<capital>Tokyo</capital>
+<citizen>Japanese</citizen>
+<adjective>Japanese</adjective>
+<currency>yen (inv.)</currency>
+<isocurrency>JPY</isocurrency>
+<currensubunit>sen (inv.)</currensubunit>
+</country>
+<country>
+<shortname>Jordan</shortname>
+<fullname>Hashemite Kingdom of Jordan</fullname>
+<isocountry>JO</isocountry>
+<capital>Amman</capital>
+<citizen>Jordanian</citizen>
+<adjective>Jordanian</adjective>
+<currency>Jordanian dinar</currency>
+<isocurrency>JOD</isocurrency>
+<currensubunit>fils (inv.)</currensubunit>
+</country>
+<country>
+<shortname>Kazakhstan</shortname>
+<fullname>Republic of Kazakhstan</fullname>
+<isocountry>KZ</isocountry>
+<capital>Astana</capital>
+<citizen>Kazakh</citizen>
+<adjective>Kazakh</adjective>
+<currency>tenge (inv.)</currency>
+<isocurrency>KZT</isocurrency>
+<currensubunit>tiyn</currensubunit>
+</country>
+<country>
+<shortname>Kenya</shortname>
+<fullname>Republic of Kenya</fullname>
+<isocountry>KE</isocountry>
+<capital>Nairobi</capital>
+<citizen>Kenyan</citizen>
+<adjective>Kenyan</adjective>
+<currency>Kenyan shilling</currency>
+<isocurrency>KES</isocurrency>
+<currensubunit>cent</currensubunit>
+</country>
+<country>
+<shortname>Kiribati</shortname>
+<fullname>Republic of Kiribati</fullname>
+<isocountry>KI</isocountry>
+<capital>Bairiki</capital>
+<citizen>Kiribatian</citizen>
+<adjective>of Kiribati; Kiribatian</adjective>
+<currency>Australian dollar</currency>
+<isocurrency>AUD</isocurrency>
+<currensubunit>cent</currensubunit>
+</country>
+<country>
+<shortname>Kuwait</shortname>
+<fullname>State of Kuwait</fullname>
+<isocountry>KW</isocountry>
+<capital>Kuwait City</capital>
+<citizen>Kuwaiti</citizen>
+<adjective>Kuwaiti</adjective>
+<currency>Kuwaiti dinar</currency>
+<isocurrency>KWD</isocurrency>
+<currensubunit>fils (inv.)</currensubunit>
+</country>
+<country>
+<shortname>Kyrgyzstan</shortname>
+<fullname>Kyrgyz Republic</fullname>
+<isocountry>KG</isocountry>
+<capital>Bishkek</capital>
+<citizen>Kyrgyz</citizen>
+<adjective>Kyrgyz</adjective>
+<currency>som</currency>
+<isocurrency>KGS</isocurrency>
+<currensubunit>tyiyn</currensubunit>
+</country>
+<country>
+<shortname>Laos</shortname>
+<fullname>Lao People's Democratic Republic</fullname>
+<isocountry>LA</isocountry>
+<capital>Vientiane</capital>
+<citizen>Lao</citizen>
+<adjective>Lao</adjective>
+<currency>kip (inv.)</currency>
+<isocurrency>LAK</isocurrency>
+<currensubunit>at (inv.)</currensubunit>
+</country>
+<country>
+<shortname>Latvia</shortname>
+<fullname>Republic of Latvia</fullname>
+<isocountry>LV</isocountry>
+<capital>Riga</capital>
+<citizen>Latvian</citizen>
+<adjective>Latvian</adjective>
+<currency>lats (pl. lati)</currency>
+<isocurrency>LVL</isocurrency>
+<currensubunit>santims (pl. santimi)</currensubunit>
+</country>
+<country>
+<shortname>Lebanon</shortname>
+<fullname>Lebanese Republic</fullname>
+<isocountry>LB</isocountry>
+<capital>Beirut</capital>
+<citizen>Lebanese</citizen>
+<adjective>Lebanese</adjective>
+<currency>Lebanese pound</currency>
+<isocurrency>LBP</isocurrency>
+<currensubunit>piastre</currensubunit>
+</country>
+<country>
+<shortname>Lesotho</shortname>
+<fullname>Kingdom of Lesotho</fullname>
+<isocountry>LS</isocountry>
+<capital>Maseru</capital>
+<citizen>Basotho</citizen>
+<adjective>of Lesotho</adjective>
+<currency>loti (pl. maloti)</currency>
+<isocurrency>LSL</isocurrency>
+<currensubunit>sente (pl. lisente)</currensubunit>
+</country>
+<country>
+<shortname>Liberia</shortname>
+<fullname>Republic of Liberia</fullname>
+<isocountry>LR</isocountry>
+<capital>Monrovia</capital>
+<citizen>Liberian</citizen>
+<adjective>Liberian</adjective>
+<currency>Liberian dollar</currency>
+<isocurrency>LRD</isocurrency>
+<currensubunit>cent</currensubunit>
+</country>
+<country>
+<shortname>Libya</shortname>
+<fullname>Socialist People's Libyan Arab Jamahiriya</fullname>
+<isocountry>LY</isocountry>
+<capital>Tripoli</capital>
+<citizen>Libyan</citizen>
+<adjective>Libyan</adjective>
+<currency>Libyan dinar</currency>
+<isocurrency>LYD</isocurrency>
+<currensubunit>dirham</currensubunit>
+</country>
+<country>
+<shortname>Liechtenstein</shortname>
+<fullname>Principality of Liechtenstein</fullname>
+<isocountry>LI</isocountry>
+<capital>Vaduz</capital>
+<citizen>Liechtensteiner</citizen>
+<adjective>of Liechtenstein</adjective>
+<currency>Swiss franc</currency>
+<isocurrency>CHF</isocurrency>
+<currensubunit>centime</currensubunit>
+</country>
+<country>
+<shortname>Lithuania</shortname>
+<fullname>Republic of Lithuania</fullname>
+<isocountry>LT</isocountry>
+<capital>Vilnius</capital>
+<citizen>Lithuanian</citizen>
+<adjective>Lithuanian</adjective>
+<currency>litas (pl. litai)</currency>
+<isocurrency>LTL</isocurrency>
+<currensubunit>centas (pl. centai)</currensubunit>
+</country>
+<country>
+<shortname>Luxembourg</shortname>
+<fullname>Grand Duchy of Luxembourg</fullname>
+<isocountry>LU </isocountry>
+<capital>Luxembourg</capital>
+<citizen>Luxembourger</citizen>
+<adjective>Luxembourgish; of Luxembourg</adjective>
+<currency>Luxembourg franc</currency>
+<isocurrency>LUF</isocurrency>
+<currensubunit>centime</currensubunit>
+</country>
+<country>
+<shortname>Macao</shortname>
+<fullname>Macao</fullname>
+<isocountry>MO</isocountry>
+<capital>Macao</capital>
+<citizen>Macanese</citizen>
+<adjective>Macanese; of Macao</adjective>
+<currency>pataca</currency>
+<isocurrency>MOP</isocurrency>
+<currensubunit>avo</currensubunit>
+</country>
+<country>
+<shortname>-</shortname>
+<fullname>Former Yugoslav Republic of Macedonia</fullname>
+<isocountry>MK</isocountry>
+<capital>Skopje</capital>
+<citizen>Macedonian</citizen>
+<adjective>Macedonian</adjective>
+<currency>denar (inv.)</currency>
+<isocurrency>MKD</isocurrency>
+<currensubunit>deni (inv.)</currensubunit>
+</country>
+<country>
+<shortname>Madagascar</shortname>
+<fullname>Republic of Madagascar</fullname>
+<isocountry>MG</isocountry>
+<capital>Antananarivo</capital>
+<citizen>Malagasy</citizen>
+<adjective>Malagasy</adjective>
+<currency>Malagasy franc</currency>
+<isocurrency>MGF</isocurrency>
+<currensubunit>centime</currensubunit>
+</country>
+<country>
+<shortname>Malawi</shortname>
+<fullname>Republic of Malawi</fullname>
+<isocountry>MW</isocountry>
+<capital>Lilongwe</capital>
+<citizen>Malawian</citizen>
+<adjective>Malawian</adjective>
+<currency>Malawi kwacha (inv.)</currency>
+<isocurrency>MWK</isocurrency>
+<currensubunit>tambala (inv.)</currensubunit>
+</country>
+<country>
+<shortname>Malaysia</shortname>
+<fullname>Malaysia</fullname>
+<isocountry>MY</isocountry>
+<capital>Kuala Lumpur</capital>
+<citizen>Malaysian</citizen>
+<adjective>Malaysian</adjective>
+<currency>Malaysian ringgit (inv.)</currency>
+<isocurrency>MYR</isocurrency>
+<currensubunit>sen (inv.)</currensubunit>
+</country>
+<country>
+<shortname>Maldives</shortname>
+<fullname>Republic of Maldives</fullname>
+<isocountry>MV</isocountry>
+<capital>Malé</capital>
+<citizen>Maldivian</citizen>
+<adjective>Maldivian</adjective>
+<currency>rufiyaa</currency>
+<isocurrency>MVR</isocurrency>
+<currensubunit>laari (inv.)</currensubunit>
+</country>
+<country>
+<shortname>Mali</shortname>
+<fullname>Republic of Mali</fullname>
+<isocountry>ML</isocountry>
+<capital>Bamako</capital>
+<citizen>Malian</citizen>
+<adjective>Malian</adjective>
+<currency>CFA franc</currency>
+<isocurrency>XOF</isocurrency>
+<currensubunit>centime</currensubunit>
+</country>
+<country>
+<shortname>Malta</shortname>
+<fullname>Republic of Malta</fullname>
+<isocountry>MT</isocountry>
+<capital>Valletta</capital>
+<citizen>Maltese</citizen>
+<adjective>Maltese</adjective>
+<currency>Maltese lira</currency>
+<isocurrency>MTL</isocurrency>
+<currensubunit>cent</currensubunit>
+</country>
+<country>
+<shortname>Marshall Islands</shortname>
+<fullname>Republic of the Marshall Islands</fullname>
+<isocountry>MH</isocountry>
+<capital>Majuro</capital>
+<citizen>Marshallese</citizen>
+<adjective>Marshallese; of the Marshall Islands</adjective>
+<currency>US dollar</currency>
+<isocurrency>USD</isocurrency>
+<currensubunit>cent</currensubunit>
+</country>
+<country>
+<shortname>Martinique</shortname>
+<fullname>Department of Martinique</fullname>
+<isocountry>MQ</isocountry>
+<capital>Fort-de-France</capital>
+<citizen>Martinican</citizen>
+<adjective>Martinican; of Martinique</adjective>
+<currency>French franc</currency>
+<isocurrency>FRF</isocurrency>
+<currensubunit>centime</currensubunit>
+</country>
+<country>
+<shortname>Mauritania</shortname>
+<fullname>Islamic Republic of Mauritania</fullname>
+<isocountry>MR</isocountry>
+<capital>Nouakchott</capital>
+<citizen>Mauritanian</citizen>
+<adjective>Mauritanian</adjective>
+<currency>Mauritanian ouguiya</currency>
+<isocurrency>MRO</isocurrency>
+<currensubunit>khoum</currensubunit>
+</country>
+<country>
+<shortname>Mauritius</shortname>
+<fullname>Republic of Mauritius</fullname>
+<isocountry>MU</isocountry>
+<capital>Port Louis</capital>
+<citizen>Mauritian</citizen>
+<adjective>Mauritian</adjective>
+<currency>Mauritian rupee</currency>
+<isocurrency>MUR</isocurrency>
+<currensubunit>cent</currensubunit>
+</country>
+<country>
+<shortname>Mayotte</shortname>
+<fullname>Territorial collectivity of Mayotte</fullname>
+<isocountry>YT</isocountry>
+<capital>Mamoudzou</capital>
+<citizen>Mahorais</citizen>
+<adjective>Mahoran</adjective>
+<currency>French franc</currency>
+<isocurrency>FRF</isocurrency>
+<currensubunit>centime</currensubunit>
+</country>
+<country>
+<shortname>Mexico</shortname>
+<fullname>United Mexican States</fullname>
+<isocountry>MX</isocountry>
+<capital>Mexico City</capital>
+<citizen>Mexican</citizen>
+<adjective>Mexican</adjective>
+<currency>Mexican peso</currency>
+<isocurrency>MXN</isocurrency>
+<currensubunit>centavo</currensubunit>
+</country>
+<country>
+<shortname>Micronesia</shortname>
+<fullname>Federated States of Micronesia</fullname>
+<isocountry>FM</isocountry>
+<capital>Palikir</capital>
+<citizen>Micronesian</citizen>
+<adjective>of Micronesia</adjective>
+<currency>US dollar</currency>
+<isocurrency>USD</isocurrency>
+<currensubunit>cent</currensubunit>
+</country>
+<country>
+<shortname>Moldova</shortname>
+<fullname>Republic of Moldova</fullname>
+<isocountry>MD</isocountry>
+<capital>Chisinau</capital>
+<citizen>Moldovan</citizen>
+<adjective>Moldovan</adjective>
+<currency>Moldovan leu (pl. lei)</currency>
+<isocurrency>MDL</isocurrency>
+<currensubunit>ban (pl. bani)</currensubunit>
+</country>
+<country>
+<shortname>Monaco</shortname>
+<fullname>Principality of Monaco</fullname>
+<isocountry>MC</isocountry>
+<capital>Monaco</capital>
+<citizen>Monegasque</citizen>
+<adjective>Monegasque</adjective>
+<currency>French franc</currency>
+<isocurrency>FRF</isocurrency>
+<currensubunit>centime</currensubunit>
+</country>
+<country>
+<shortname>Mongolia</shortname>
+<fullname>Mongolia</fullname>
+<isocountry>MN</isocountry>
+<capital>Ulan Bator</capital>
+<citizen>Mongolian</citizen>
+<adjective>Mongolian</adjective>
+<currency>tugrik</currency>
+<isocurrency>MNT</isocurrency>
+<currensubunit>möngö (inv.)</currensubunit>
+</country>
+<country>
+<shortname>Montserrat</shortname>
+<fullname>Montserrat</fullname>
+<isocountry>MS</isocountry>
+<capital>Plymouth</capital>
+<citizen>Montserratian</citizen>
+<adjective>of Montserrat; Montserratian</adjective>
+<currency>Eastern Caribbean dollar</currency>
+<isocurrency>XCD</isocurrency>
+<currensubunit>cent</currensubunit>
+</country>
+<country>
+<shortname>Morocco</shortname>
+<fullname>Kingdom of Morocco</fullname>
+<isocountry>MA</isocountry>
+<capital>Rabat</capital>
+<citizen>Moroccan</citizen>
+<adjective>Moroccan</adjective>
+<currency>Moroccan dirham</currency>
+<isocurrency>MAD</isocurrency>
+<currensubunit>centime</currensubunit>
+</country>
+<country>
+<shortname>Mozambique</shortname>
+<fullname>Republic of Mozambique</fullname>
+<isocountry>MZ</isocountry>
+<capital>Maputo</capital>
+<citizen>Mozambican</citizen>
+<adjective>Mozambican</adjective>
+<currency>metical (pl. meticais)</currency>
+<isocurrency>MZM</isocurrency>
+<currensubunit>centavo</currensubunit>
+</country>
+<country>
+<shortname>Myanmar</shortname>
+<fullname>Union of Myanmar</fullname>
+<isocountry>MM</isocountry>
+<capital>Yangon</capital>
+<citizen>Burmese</citizen>
+<adjective>Burmese; of Myanmar</adjective>
+<currency>kyat</currency>
+<isocurrency>MMK</isocurrency>
+<currensubunit>pya</currensubunit>
+</country>
+<country>
+<shortname>Namibia</shortname>
+<fullname>Republic of Namibia</fullname>
+<isocountry>NA</isocountry>
+<capital>Windhoek</capital>
+<citizen>Namibian</citizen>
+<adjective>Namibian</adjective>
+<currency>Namibian dollar</currency>
+<isocurrency>NAD</isocurrency>
+<currensubunit>cent</currensubunit>
+</country>
+<country>
+<shortname>Nauru</shortname>
+<fullname>Republic of Nauru</fullname>
+<isocountry>NR</isocountry>
+<capital>Yaren</capital>
+<citizen>Nauruan</citizen>
+<adjective>Nauruan</adjective>
+<currency>Australian dollar</currency>
+<isocurrency>AUD</isocurrency>
+<currensubunit>cent</currensubunit>
+</country>
+<country>
+<shortname>Nepal</shortname>
+<fullname>Kingdom of Nepal</fullname>
+<isocountry>NP</isocountry>
+<capital>Kathmandu</capital>
+<citizen>Nepalese</citizen>
+<adjective>Nepalese</adjective>
+<currency>Nepalese rupee</currency>
+<isocurrency>NPR</isocurrency>
+<currensubunit>paisa (inv.)</currensubunit>
+</country>
+<country>
+<shortname>Netherlands</shortname>
+<fullname>Kingdom of the Netherlands</fullname>
+<isocountry>NL </isocountry>
+<capital>Amsterdam</capital>
+<citizen>Dutchman; Netherlander</citizen>
+<adjective>Netherlands; Dutch</adjective>
+<currency>Dutch guilder</currency>
+<isocurrency>NLG</isocurrency>
+<currensubunit>cent</currensubunit>
+</country>
+<country>
+<shortname>Netherlands Antilles</shortname>
+<fullname>Netherlands Antilles</fullname>
+<isocountry>AN</isocountry>
+<capital>Willemstad</capital>
+<citizen>Antillean</citizen>
+<adjective>of the Netherlands Antilles</adjective>
+<currency>Netherlands Antillean guilder</currency>
+<isocurrency>ANG</isocurrency>
+<currensubunit>cent</currensubunit>
+</country>
+<country>
+<shortname>New Caledonia</shortname>
+<fullname>Territory of New Caledonia and Dependencies</fullname>
+<isocountry>NC</isocountry>
+<capital>Nouméa</capital>
+<citizen>New Caledonian</citizen>
+<adjective>New Caledonian</adjective>
+<currency>CFP franc</currency>
+<isocurrency>XPF</isocurrency>
+<currensubunit>centime</currensubunit>
+</country>
+<country>
+<shortname>New Zealand</shortname>
+<fullname>New Zealand</fullname>
+<isocountry>NZ</isocountry>
+<capital>Wellington</capital>
+<citizen>New Zealander</citizen>
+<adjective>of New Zealand</adjective>
+<currency>New Zealand dollar</currency>
+<isocurrency>NZD</isocurrency>
+<currensubunit>cent</currensubunit>
+</country>
+<country>
+<shortname>Nicaragua</shortname>
+<fullname>Republic of Nicaragua</fullname>
+<isocountry>NI</isocountry>
+<capital>Managua</capital>
+<citizen>Nicaraguan</citizen>
+<adjective>Nicaraguan</adjective>
+<currency>córdoba</currency>
+<isocurrency>NIO</isocurrency>
+<currensubunit>centavo</currensubunit>
+</country>
+<country>
+<shortname>Niger</shortname>
+<fullname>Republic of Niger</fullname>
+<isocountry>NE</isocountry>
+<capital>Niamey</capital>
+<citizen>Nigerien</citizen>
+<adjective>Nigerien; of Niger</adjective>
+<currency>CFA franc</currency>
+<isocurrency>XOF</isocurrency>
+<currensubunit>centime</currensubunit>
+</country>
+<country>
+<shortname>Nigeria</shortname>
+<fullname>Federal Republic of Nigeria</fullname>
+<isocountry>NG</isocountry>
+<capital>Abuja</capital>
+<citizen>Nigerian</citizen>
+<adjective>Nigerian</adjective>
+<currency>naira (inv.)</currency>
+<isocurrency>NGN</isocurrency>
+<currensubunit>kobo (inv.)</currensubunit>
+</country>
+<country>
+<shortname>Niue</shortname>
+<fullname>Niue</fullname>
+<isocountry>NU</isocountry>
+<capital>Alofi</capital>
+<citizen>Niuean</citizen>
+<adjective>of Niue; Niuean</adjective>
+<currency>New Zealand dollar</currency>
+<isocurrency>NZD</isocurrency>
+<currensubunit>cent</currensubunit>
+</country>
+<country>
+<shortname>Norfolk Island</shortname>
+<fullname>Territory of Norfolk Island</fullname>
+<isocountry>NF</isocountry>
+<capital>Kingston</capital>
+<citizen>Norfolk Islander</citizen>
+<adjective>of Norfolk Island</adjective>
+<currency>Australian dollar</currency>
+<isocurrency>AUD</isocurrency>
+<currensubunit>cent</currensubunit>
+</country>
+<country>
+<shortname>North Korea</shortname>
+<fullname>Democratic People's Republic of Korea</fullname>
+<isocountry>KP</isocountry>
+<capital>Pyongyang</capital>
+<citizen>North Korean</citizen>
+<adjective>North Korean</adjective>
+<currency>North Korean won (inv.)
+</currency>
+<isocurrency>KPW</isocurrency>
+<currensubunit>chun (inv.)</currensubunit>
+</country>
+<country>
+<shortname>Northern Marianas</shortname>
+<fullname>Commonwealth of the Northern Mariana
+Islands</fullname>
+<isocountry>MP</isocountry>
+<capital>Saipan</capital>
+<citizen>Northern Mariana Islander</citizen>
+<adjective>of the Northern Mariana Islands</adjective>
+<currency>US dollar</currency>
+<isocurrency>USD</isocurrency>
+<currensubunit>cent</currensubunit>
+</country>
+<country>
+<shortname>Norway</shortname>
+<fullname>Kingdom of Norway</fullname>
+<isocountry>NO</isocountry>
+<capital>Oslo</capital>
+<citizen>Norwegian</citizen>
+<adjective>Norwegian</adjective>
+<currency>Norwegian krone (pl.kroner)</currency>
+<isocurrency>NOK</isocurrency>
+<currensubunit>øre (inv.)</currensubunit>
+</country>
+<country>
+<shortname>Oman</shortname>
+<fullname>Sultanate of Oman</fullname>
+<isocountry>OM</isocountry>
+<capital>Muscat</capital>
+<citizen>Omani</citizen>
+<adjective>Omani</adjective>
+<currency>Omani rial</currency>
+<isocurrency>OMR</isocurrency>
+<currensubunit>baiza</currensubunit>
+</country>
+<country>
+<shortname>Pakistan</shortname>
+<fullname>Islamic Republic of Pakistan</fullname>
+<isocountry>PK</isocountry>
+<capital>Islamabad</capital>
+<citizen>Pakistani</citizen>
+<adjective>Pakistani; of Pakistan</adjective>
+<currency>Pakistani rupee</currency>
+<isocurrency>PKR</isocurrency>
+<currensubunit>paisa</currensubunit>
+</country>
+<country>
+<shortname>Palau</shortname>
+<fullname>Republic of Palau</fullname>
+<isocountry>PW</isocountry>
+<capital>Koror</capital>
+<citizen>Palauan</citizen>
+<adjective>of Palau; Palauan</adjective>
+<currency>US dollar</currency>
+<isocurrency>USD</isocurrency>
+<currensubunit>cent</currensubunit>
+</country>
+<country>
+<shortname>Panama</shortname>
+<fullname>Republic of Panama</fullname>
+<isocountry>PA</isocountry>
+<capital>Panama City</capital>
+<citizen>Panamanian</citizen>
+<adjective>Panamanian</adjective>
+<currency>balboa</currency>
+<isocurrency>PAB</isocurrency>
+<currensubunit>centésimo</currensubunit>
+</country>
+<country>
+<shortname>Papua New Guinea</shortname>
+<fullname>Independent State of Papua New Guinea</fullname>
+<isocountry>PG</isocountry>
+<capital>Port Moresby</capital>
+<citizen>Papua New Guinean</citizen>
+<adjective>of Papua New Guinea</adjective>
+<currency>kina (inv.)</currency>
+<isocurrency>PGK</isocurrency>
+<currensubunit>toea (inv.)</currensubunit>
+</country>
+<country>
+<shortname>Paraguay</shortname>
+<fullname>Republic of Paraguay</fullname>
+<isocountry>PY</isocountry>
+<capital>Asunción</capital>
+<citizen>Paraguayan</citizen>
+<adjective>Paraguayan</adjective>
+<currency>guaraní (pl.guaraníes)</currency>
+<isocurrency>PYG</isocurrency>
+<currensubunit>céntimo</currensubunit>
+</country>
+<country>
+<shortname>Peru</shortname>
+<fullname>Republic of Peru</fullname>
+<isocountry>PE</isocountry>
+<capital>Lima</capital>
+<citizen>Peruvian</citizen>
+<adjective>Peruvian</adjective>
+<currency>new sol</currency>
+<isocurrency>PEN</isocurrency>
+<currensubunit>céntimo</currensubunit>
+</country>
+<country>
+<shortname>Philippines</shortname>
+<fullname>Republic of the Philippines</fullname>
+<isocountry>PH</isocountry>
+<capital>Manila</capital>
+<citizen>Filipino</citizen>
+<adjective>Philippine</adjective>
+<currency>Philippine peso</currency>
+<isocurrency>PHP</isocurrency>
+<currensubunit>centavo</currensubunit>
+</country>
+<country>
+<shortname>Pitcairn Islands</shortname>
+<fullname>Pitcairn Islands</fullname>
+<isocountry>PN</isocountry>
+<capital>Adamstown</capital>
+<citizen>Pitcairner</citizen>
+<adjective>Pitcairner; of Pitcairn</adjective>
+<currency>New Zealand dollar</currency>
+<isocurrency>NZD</isocurrency>
+<currensubunit>cent</currensubunit>
+</country>
+<country>
+<shortname>Poland</shortname>
+<fullname>Republic of Poland</fullname>
+<isocountry>PL</isocountry>
+<capital>Warsaw</capital>
+<citizen>Pole</citizen>
+<adjective>Polish</adjective>
+<currency>zloty</currency>
+<isocurrency>PLN</isocurrency>
+<currensubunit>grosz (pl.groszy)</currensubunit>
+</country>
+<country>
+<shortname>Portugal</shortname>
+<fullname>Portuguese Republic</fullname>
+<isocountry>PT </isocountry>
+<capital>Lisbon</capital>
+<citizen>Portuguese</citizen>
+<adjective>Portuguese</adjective>
+<currency>Portuguese escudo</currency>
+<isocurrency>PTE</isocurrency>
+<currensubunit>centavo</currensubunit>
+</country>
+<country>
+<shortname>Puerto Rico</shortname>
+<fullname>Commonwealth of Puerto Rico</fullname>
+<isocountry>PR</isocountry>
+<capital>San Juan</capital>
+<citizen>Puerto Rican</citizen>
+<adjective>Puerto Rican</adjective>
+<currency>US dollar</currency>
+<isocurrency>USD</isocurrency>
+<currensubunit>cent</currensubunit>
+</country>
+<country>
+<shortname>Qatar</shortname>
+<fullname>State of Qatar</fullname>
+<isocountry>QA</isocountry>
+<capital>Doha</capital>
+<citizen>Qatari</citizen>
+<adjective>Qatari</adjective>
+<currency>Qatari riyal</currency>
+<isocurrency>QAR</isocurrency>
+<currensubunit>dirham</currensubunit>
+</country>
+<country>
+<shortname>Réunion</shortname>
+<fullname>Department of Réunion</fullname>
+<isocountry>RE</isocountry>
+<capital>Saint-Denis</capital>
+<citizen>Reunionese</citizen>
+<adjective>of Réunion; Reunionese</adjective>
+<currency>French franc</currency>
+<isocurrency>FRF</isocurrency>
+<currensubunit>centime</currensubunit>
+</country>
+<country>
+<shortname>Romania</shortname>
+<fullname>Romania</fullname>
+<isocountry>RO</isocountry>
+<capital>Bucharest</capital>
+<citizen>Romanian</citizen>
+<adjective>Romanian</adjective>
+<currency>Romanian leu (pl. lei)</currency>
+<isocurrency>ROL</isocurrency>
+<currensubunit>ban (pl. bani)</currensubunit>
+</country>
+<country>
+<shortname>Russia</shortname>
+<fullname>Russian Federation</fullname>
+<isocountry>RU</isocountry>
+<capital>Moscow</capital>
+<citizen>Russian</citizen>
+<adjective>Russian</adjective>
+<currency>new rouble</currency>
+<isocurrency>RUR</isocurrency>
+<currensubunit>kopek</currensubunit>
+</country>
+<country>
+<shortname>Rwanda</shortname>
+<fullname>Rwandese Republic</fullname>
+<isocountry>RW</isocountry>
+<capital>Kigali</capital>
+<citizen>Rwandan; Rwandese</citizen>
+<adjective>Rwandan; Rwandese</adjective>
+<currency>Rwandese franc</currency>
+<isocurrency>RWF</isocurrency>
+<currensubunit>centime</currensubunit>
+</country>
+<country>
+<shortname>Saint Helena</shortname>
+<fullname>Saint Helena and Dependencies</fullname>
+<isocountry>SH</isocountry>
+<capital>Jamestown</capital>
+<citizen>Saint Helenian; Saint</citizen>
+<adjective>Saint Helenian; of Saint Helena</adjective>
+<currency>Saint Helena pound</currency>
+<isocurrency>SHP</isocurrency>
+<currensubunit>penny (pl.pence)</currensubunit>
+</country>
+<country>
+<shortname>Saint Kitts and Nevis</shortname>
+<fullname>Federation of Saint Kitts and Nevis</fullname>
+<isocountry>KN</isocountry>
+<capital>Basseterre</capital>
+<citizen>Kittsian; Nevisian</citizen>
+<adjective>of Saint Kitts and Nevis</adjective>
+<currency>Eastern Caribbean dollar</currency>
+<isocurrency>XCD</isocurrency>
+<currensubunit>cent</currensubunit>
+</country>
+<country>
+<shortname>Saint Lucia</shortname>
+<fullname>Saint Lucia</fullname>
+<isocountry>LC</isocountry>
+<capital>Castries</capital>
+<citizen>Saint Lucian</citizen>
+<adjective>Saint Lucian</adjective>
+<currency>Eastern Caribbean dollar</currency>
+<isocurrency>XCD</isocurrency>
+<currensubunit>cent</currensubunit>
+</country>
+<country>
+<shortname>Saint Pierre and Miquelon</shortname>
+<fullname>Territorial collectivity of Saint Pierre and
+Miquelon</fullname>
+<isocountry>PM</isocountry>
+<capital>Saint-Pierre</capital>
+<citizen>St-Pierrais; Miquelonnais</citizen>
+<adjective>of Saint Pierre and Miquelon</adjective>
+<currency>French franc</currency>
+<isocurrency>FRF</isocurrency>
+<currensubunit>centime</currensubunit>
+</country>
+<country>
+<shortname>Saint Vincent and the Grenadines</shortname>
+<fullname>Saint Vincent and the Grenadines</fullname>
+<isocountry>VC</isocountry>
+<capital>Kingstown</capital>
+<citizen>Vincentian</citizen>
+<adjective>Vincentian; of Saint Vincent and the
+Grenadines</adjective>
+<currency>Eastern Caribbean dollar</currency>
+<isocurrency>XCD</isocurrency>
+<currensubunit>cent</currensubunit>
+</country>
+<country>
+<shortname>Samoa</shortname>
+<fullname>Independent State of Samoa</fullname>
+<isocountry>WS</isocountry>
+<capital>Apia</capital>
+<citizen>Samoan</citizen>
+<adjective>Samoan</adjective>
+<currency>tala (inv.)</currency>
+<isocurrency>WST</isocurrency>
+<currensubunit>sene (inv.)</currensubunit>
+</country>
+<country>
+<shortname>San Marino</shortname>
+<fullname>Republic of San Marino</fullname>
+<isocountry>SM</isocountry>
+<capital>San Marino</capital>
+<citizen>San Marinese</citizen>
+<adjective>of San Marino</adjective>
+<currency>Italian lira</currency>
+<isocurrency>ITL</isocurrency>
+<currensubunit> </currensubunit>
+</country>
+<country>
+<shortname>São Tomé and Príncipe</shortname>
+<fullname>Democratic Republic of São Tomé and
+Príncipe</fullname>
+<isocountry>ST</isocountry>
+<capital>São Tomé</capital>
+<citizen>São Toméan</citizen>
+<adjective>of São Tomé and Príncipe; São Toméan</adjective>
+<currency>dobra</currency>
+<isocurrency>STD</isocurrency>
+<currensubunit>centavo</currensubunit>
+</country>
+<country>
+<shortname>Saudi Arabia</shortname>
+<fullname>Kingdom of Saudi Arabia</fullname>
+<isocountry>SA</isocountry>
+<capital>Riyadh</capital>
+<citizen>Saudi Arabian</citizen>
+<adjective>Saudi Arabian</adjective>
+<currency>Saudi riyal</currency>
+<isocurrency>SAR</isocurrency>
+<currensubunit>halala</currensubunit>
+</country>
+<country>
+<shortname>Senegal</shortname>
+<fullname>Republic of Senegal</fullname>
+<isocountry>SN</isocountry>
+<capital>Dakar</capital>
+<citizen>Senegalese</citizen>
+<adjective>Senegalese</adjective>
+<currency>CFA franc</currency>
+<isocurrency>XOF</isocurrency>
+<currensubunit>centime</currensubunit>
+</country>
+<country>
+<shortname>Seychelles</shortname>
+<fullname>Republic of Seychelles</fullname>
+<isocountry>SC</isocountry>
+<capital>Victoria</capital>
+<citizen>Seychellois</citizen>
+<adjective>of Seychelles</adjective>
+<currency>Seychelles rupee</currency>
+<isocurrency>SCR</isocurrency>
+<currensubunit>cent</currensubunit>
+</country>
+<country>
+<shortname>Sierra Leone</shortname>
+<fullname>Republic of Sierra Leone</fullname>
+<isocountry>SL</isocountry>
+<capital>Freetown</capital>
+<citizen>Sierra Leonean</citizen>
+<adjective>Sierra Leonean</adjective>
+<currency>leone</currency>
+<isocurrency>SLL</isocurrency>
+<currensubunit>cent</currensubunit>
+</country>
+<country>
+<shortname>Singapore</shortname>
+<fullname>Republic of Singapore</fullname>
+<isocountry>SG</isocountry>
+<capital>Singapore</capital>
+<citizen>Singaporean</citizen>
+<adjective>Singaporean</adjective>
+<currency>Singapore dollar</currency>
+<isocurrency>SGD</isocurrency>
+<currensubunit>cent</currensubunit>
+</country>
+<country>
+<shortname>Slovakia</shortname>
+<fullname>Slovak Republic</fullname>
+<isocountry>SK</isocountry>
+<capital>Bratislava</capital>
+<citizen>Slovak</citizen>
+<adjective>Slovak</adjective>
+<currency>Slovak koruna (pl.koruny)</currency>
+<isocurrency>SKK</isocurrency>
+<currensubunit>halier (pl.haliere)</currensubunit>
+</country>
+<country>
+<shortname>Slovenia</shortname>
+<fullname>Republic of Slovenia</fullname>
+<isocountry>SI</isocountry>
+<capital>Ljubljana</capital>
+<citizen>Slovene</citizen>
+<adjective>Slovene; Slovenian</adjective>
+<currency>tolar</currency>
+<isocurrency>SIT</isocurrency>
+<currensubunit>stotin</currensubunit>
+</country>
+<country>
+<shortname>Solomon Islands</shortname>
+<fullname>Solomon Islands</fullname>
+<isocountry>SB</isocountry>
+<capital>Honiara</capital>
+<citizen>Solomon Islander</citizen>
+<adjective>of the Solomon Islands</adjective>
+<currency>Solomon Islands dollar</currency>
+<isocurrency>SBD</isocurrency>
+<currensubunit>cent</currensubunit>
+</country>
+<country>
+<shortname>Somalia</shortname>
+<fullname>Somali Democratic Republic</fullname>
+<isocountry>SO</isocountry>
+<capital>Mogadishu</capital>
+<citizen>Somali</citizen>
+<adjective>Somali</adjective>
+<currency>Somali shilling</currency>
+<isocurrency>SOS</isocurrency>
+<currensubunit>cent</currensubunit>
+</country>
+<country>
+<shortname>South Africa</shortname>
+<fullname>Republic of South Africa</fullname>
+<isocountry>ZA</isocountry>
+<capital>Pretoria</capital>
+<citizen>South African</citizen>
+<adjective>South African</adjective>
+<currency>rand</currency>
+<isocurrency>ZAR</isocurrency>
+<currensubunit>cent</currensubunit>
+</country>
+<country>
+<shortname>South Georgia and the South Sandwich Islands</shortname>
+<fullname>South Georgia and the South Sandwich
+Islands</fullname>
+<isocountry>GS</isocountry>
+<capital>-</capital>
+<citizen>-</citizen>
+<adjective>of South Georgia and the South Sandwich
+Islands</adjective>
+<currency> </currency>
+<isocurrency> </isocurrency>
+<currensubunit> </currensubunit>
+</country>
+<country>
+<shortname>South Korea</shortname>
+<fullname>Republic of Korea</fullname>
+<isocountry>KR</isocountry>
+<capital>Seoul</capital>
+<citizen>South Korean</citizen>
+<adjective>South Korean</adjective>
+<currency>South Korean won (inv.)</currency>
+<isocurrency>KRW</isocurrency>
+<currensubunit>chun (inv.)</currensubunit>
+</country>
+<country>
+<shortname>Spain</shortname>
+<fullname>Kingdom of Spain</fullname>
+<isocountry>ES </isocountry>
+<capital>Madrid</capital>
+<citizen>Spaniard</citizen>
+<adjective>Spanish</adjective>
+<currency>Spanish peseta</currency>
+<isocurrency>ESP</isocurrency>
+<currensubunit>céntimo</currensubunit>
+</country>
+<country>
+<shortname>Sri Lanka</shortname>
+<fullname>Democratic Socialist Republic of Sri Lanka</fullname>
+<isocountry>LK</isocountry>
+<capital>Colombo</capital>
+<citizen>Sri Lankan</citizen>
+<adjective>Sri Lankan; of Sri Lanka</adjective>
+<currency>Sri Lanka rupee</currency>
+<isocurrency>LKR</isocurrency>
+<currensubunit>cent</currensubunit>
+</country>
+<country>
+<shortname>Sudan</shortname>
+<fullname>Republic of Sudan</fullname>
+<isocountry>SD</isocountry>
+<capital>Khartoum</capital>
+<citizen>Sudanese</citizen>
+<adjective>Sudanese</adjective>
+<currency>Sudanese pound</currency>
+<isocurrency>SDD</isocurrency>
+<currensubunit>piastre</currensubunit>
+</country>
+<country>
+<shortname>Suriname</shortname>
+<fullname>Republic of Suriname</fullname>
+<isocountry>SR</isocountry>
+<capital>Paramaribo</capital>
+<citizen>Surinamese</citizen>
+<adjective>Surinamese</adjective>
+<currency>Suriname guilder</currency>
+<isocurrency>SRG</isocurrency>
+<currensubunit>cent</currensubunit>
+</country>
+<country>
+<shortname>Svalbard and Jan Mayen</shortname>
+<fullname>Svalbard and Jan Mayen Islands</fullname>
+<isocountry>SJ</isocountry>
+<capital>Longyearbyen (on Spitsbergen, Svalbard)</capital>
+<citizen>-</citizen>
+<adjective>of Svalbard; of Jan Mayen</adjective>
+<currency>Norwegian krone (pl.kroner)</currency>
+<isocurrency>NOK</isocurrency>
+<currensubunit>øre (inv.)</currensubunit>
+</country>
+<country>
+<shortname>Swaziland</shortname>
+<fullname>Kingdom of Swaziland</fullname>
+<isocountry>SZ</isocountry>
+<capital>Mbabane</capital>
+<citizen>Swazi</citizen>
+<adjective>Swazi</adjective>
+<currency>lilangeni (pl.emalangeni)</currency>
+<isocurrency>SZL</isocurrency>
+<currensubunit>cent</currensubunit>
+</country>
+<country>
+<shortname>Sweden</shortname>
+<fullname>Kingdom of Sweden</fullname>
+<isocountry>SE </isocountry>
+<capital>Stockholm</capital>
+<citizen>Swede</citizen>
+<adjective>Swedish</adjective>
+<currency>Swedish krona (pl.kronor)</currency>
+<isocurrency>SEK</isocurrency>
+<currensubunit>öre (inv.)</currensubunit>
+</country>
+<country>
+<shortname>Switzerland</shortname>
+<fullname>Swiss Confederation</fullname>
+<isocountry>CH</isocountry>
+<capital>Berne</capital>
+<citizen>Swiss</citizen>
+<adjective>Swiss</adjective>
+<currency>Swiss franc</currency>
+<isocurrency>CHF</isocurrency>
+<currensubunit>centime</currensubunit>
+</country>
+<country>
+<shortname>Syria</shortname>
+<fullname>Syrian Arab Republic</fullname>
+<isocountry>SY</isocountry>
+<capital>Damascus</capital>
+<citizen>Syrian</citizen>
+<adjective>Syrian</adjective>
+<currency>Syrian pound</currency>
+<isocurrency>SYP</isocurrency>
+<currensubunit>piastre</currensubunit>
+</country>
+<country>
+<shortname>Taiwan</shortname>
+<fullname>Republic of China</fullname>
+<isocountry>TW</isocountry>
+<capital>Taipei</capital>
+<citizen>Taiwanese</citizen>
+<adjective>Taiwanese; of Taiwan</adjective>
+<currency>new Taiwan dollar</currency>
+<isocurrency>TWD</isocurrency>
+<currensubunit>fen (inv.)</currensubunit>
+</country>
+<country>
+<shortname>Tajikistan</shortname>
+<fullname>Republic of Tajikistan</fullname>
+<isocountry>TJ</isocountry>
+<capital>Dushanbe</capital>
+<citizen>Tajik</citizen>
+<adjective>Tajik</adjective>
+<currency>Tajik rouble</currency>
+<isocurrency>TJR</isocurrency>
+<currensubunit>kopek</currensubunit>
+</country>
+<country>
+<shortname>Tanzania</shortname>
+<fullname>United Republic of Tanzania</fullname>
+<isocountry>TZ</isocountry>
+<capital>Dodoma</capital>
+<citizen>Tanzanian</citizen>
+<adjective>Tanzanian</adjective>
+<currency>Tanzanian shilling</currency>
+<isocurrency>TZS</isocurrency>
+<currensubunit>cent</currensubunit>
+</country>
+<country>
+<shortname>Thailand</shortname>
+<fullname>Kingdom of Thailand</fullname>
+<isocountry>TH</isocountry>
+<capital>Bangkok</capital>
+<citizen>Thai</citizen>
+<adjective>Thai</adjective>
+<currency>baht (inv.)</currency>
+<isocurrency>THB</isocurrency>
+<currensubunit>satang (inv.)</currensubunit>
+</country>
+<country>
+<shortname>The Bahamas</shortname>
+<fullname>Commonwealth of The Bahamas</fullname>
+<isocountry>BS</isocountry>
+<capital>Nassau</capital>
+<citizen>Bahamian</citizen>
+<adjective>Bahamian</adjective>
+<currency>Bahamian dollar</currency>
+<isocurrency>BSD</isocurrency>
+<currensubunit>cent</currensubunit>
+</country>
+<country>
+<shortname>The Comoros</shortname>
+<fullname>Islamic Federal Republic of The Comoros</fullname>
+<isocountry>KM</isocountry>
+<capital>Moroni</capital>
+<citizen>Comorian</citizen>
+<adjective>Comorian</adjective>
+<currency>Comorian franc</currency>
+<isocurrency>KMF</isocurrency>
+<currensubunit>centime</currensubunit>
+</country>
+<country>
+<shortname>The Gambia</shortname>
+<fullname>Republic of The Gambia</fullname>
+<isocountry>GM</isocountry>
+<capital>Banjul</capital>
+<citizen>Gambian</citizen>
+<adjective>Gambian</adjective>
+<currency>dalasi (inv.)</currency>
+<isocurrency>GMD</isocurrency>
+<currensubunit>butut</currensubunit>
+</country>
+<country>
+<shortname>Togo</shortname>
+<fullname>Togolese Republic</fullname>
+<isocountry>TG</isocountry>
+<capital>Lomé</capital>
+<citizen>Togolese</citizen>
+<adjective>Togolese</adjective>
+<currency>CFA franc</currency>
+<isocurrency>XOF</isocurrency>
+<currensubunit>centime</currensubunit>
+</country>
+<country>
+<shortname>Tokelau</shortname>
+<fullname>Tokelau</fullname>
+<isocountry>TK</isocountry>
+<capital>Fakaofo</capital>
+<citizen>Tokelauan</citizen>
+<adjective>of Tokelau; Tokelauan</adjective>
+<currency>New Zealand dollar</currency>
+<isocurrency>NZD</isocurrency>
+<currensubunit>cent</currensubunit>
+</country>
+<country>
+<shortname>Tonga</shortname>
+<fullname>Kingdom of Tonga</fullname>
+<isocountry>TO</isocountry>
+<capital>Nuku'alofa</capital>
+<citizen>Tongan</citizen>
+<adjective>Tongan</adjective>
+<currency>pa'anga (inv.)</currency>
+<isocurrency>TOP</isocurrency>
+<currensubunit>seniti (inv.)</currensubunit>
+</country>
+<country>
+<shortname>Trinidad and Tobago</shortname>
+<fullname>Republic of Trinidad and Tobago</fullname>
+<isocountry>TT</isocountry>
+<capital>Port of Spain</capital>
+<citizen>Trinidadian; Tobagonian</citizen>
+<adjective>of Trinidad and Tobago</adjective>
+<currency>Trinidad and Tobago dollar</currency>
+<isocurrency>TTD</isocurrency>
+<currensubunit>cent</currensubunit>
+</country>
+<country>
+<shortname>Tunisia</shortname>
+<fullname>Republic of Tunisia</fullname>
+<isocountry>TN</isocountry>
+<capital>Tunis</capital>
+<citizen>Tunisian</citizen>
+<adjective>Tunisian</adjective>
+<currency>Tunisian dinar</currency>
+<isocurrency>TND</isocurrency>
+<currensubunit>millime</currensubunit>
+</country>
+<country>
+<shortname>Turkey</shortname>
+<fullname>Republic of Turkey</fullname>
+<isocountry>TR</isocountry>
+<capital>Ankara</capital>
+<citizen>Turk</citizen>
+<adjective>Turkish</adjective>
+<currency>Turkish lira</currency>
+<isocurrency>TRL</isocurrency>
+<currensubunit>kurus (inv.)</currensubunit>
+</country>
+<country>
+<shortname>Turkmenistan</shortname>
+<fullname>Turkmenistan</fullname>
+<isocountry>TM</isocountry>
+<capital>Ashkhabad</capital>
+<citizen>Turkmen</citizen>
+<adjective>Turkmen</adjective>
+<currency>Turkmen manat (inv.)</currency>
+<isocurrency>TMM</isocurrency>
+<currensubunit>tenge (inv.)</currensubunit>
+</country>
+<country>
+<shortname>Turks and Caicos Islands</shortname>
+<fullname>Turks and Caicos Islands</fullname>
+<isocountry>TC</isocountry>
+<capital>Cockburn Town</capital>
+<citizen>Turks and Caicos Islander</citizen>
+<adjective>of the Turks and Caicos Islands
+</adjective>
+<currency>US dollar</currency>
+<isocurrency>USD</isocurrency>
+<currensubunit>cent</currensubunit>
+</country>
+<country>
+<shortname>Tuvalu</shortname>
+<fullname>Tuvalu</fullname>
+<isocountry>TV</isocountry>
+<capital>Fongafale</capital>
+<citizen>Tuvaluan</citizen>
+<adjective>Tuvaluan</adjective>
+<currency>Australian dollar</currency>
+<isocurrency>AUD</isocurrency>
+<currensubunit>cent</currensubunit>
+</country>
+<country>
+<shortname>Uganda</shortname>
+<fullname>Republic of Uganda</fullname>
+<isocountry>UG</isocountry>
+<capital>Kampala</capital>
+<citizen>Ugandan</citizen>
+<adjective>Ugandan</adjective>
+<currency>Uganda shilling</currency>
+<isocurrency>UGX</isocurrency>
+<currensubunit>cent</currensubunit>
+</country>
+<country>
+<shortname>Ukraine</shortname>
+<fullname>Ukraine</fullname>
+<isocountry>UA</isocountry>
+<capital>Kiev</capital>
+<citizen>Ukrainian</citizen>
+<adjective>Ukrainian</adjective>
+<currency>hryvnia</currency>
+<isocurrency>UAH</isocurrency>
+<currensubunit>kopiyka</currensubunit>
+</country>
+<country>
+<shortname>United Arab Emirates</shortname>
+<fullname>United Arab Emirates</fullname>
+<isocountry>AE</isocountry>
+<capital>Abu Dhabi</capital>
+<citizen>UAE national</citizen>
+<adjective>of the United Arab Emirates</adjective>
+<currency>UAE dirham</currency>
+<isocurrency>AED</isocurrency>
+<currensubunit>fils (inv.)</currensubunit>
+</country>
+<country>
+<shortname>United Kingdom</shortname>
+<fullname>United Kingdom of Great Britain and Northern
+Ireland</fullname>
+<isocountry>GB </isocountry>
+<capital>London</capital>
+<citizen>Briton</citizen>
+<adjective>British; of the United Kingdom</adjective>
+<currency>pound sterling</currency>
+<isocurrency>GBP</isocurrency>
+<currensubunit>penny (pl. pence.)</currensubunit>
+</country>
+<country>
+<shortname>United States</shortname>
+<fullname>United States of America</fullname>
+<isocountry>US</isocountry>
+<capital>Washington DC</capital>
+<citizen>American; US citizen</citizen>
+<adjective>American; of the United States</adjective>
+<currency>US dollar</currency>
+<isocurrency>USD</isocurrency>
+<currensubunit>cent</currensubunit>
+</country>
+<country>
+<shortname>United States Minor Outlying Islands</shortname>
+<fullname>United States Minor Outlying Islands</fullname>
+<isocountry>UM</isocountry>
+<capital>-</capital>
+<citizen>-</citizen>
+<adjective>-</adjective>
+<currency>US dollar</currency>
+<isocurrency>USD</isocurrency>
+<currensubunit>cent</currensubunit>
+</country>
+<country>
+<shortname>Uruguay</shortname>
+<fullname>Eastern Republic of Uruguay</fullname>
+<isocountry>UY</isocountry>
+<capital>Montevideo</capital>
+<citizen>Uruguayan</citizen>
+<adjective>Uruguayan</adjective>
+<currency>Uruguayan peso</currency>
+<isocurrency>UYU</isocurrency>
+<currensubunit>centésimo</currensubunit>
+</country>
+<country>
+<shortname>US Virgin Islands</shortname>
+<fullname>Virgin Islands of the United States</fullname>
+<isocountry>VI</isocountry>
+<capital>Charlotte Amalie</capital>
+<citizen>US Virgin Islander</citizen>
+<adjective>of the US Virgin Islands</adjective>
+<currency>US dollar</currency>
+<isocurrency>USD</isocurrency>
+<currensubunit>cent</currensubunit>
+</country>
+<country>
+<shortname>Uzbekistan</shortname>
+<fullname>Republic of Uzbekistan</fullname>
+<isocountry>UZ</isocountry>
+<capital>Tashkent</capital>
+<citizen>Uzbek</citizen>
+<adjective>Uzbek</adjective>
+<currency>sum (inv.)
+</currency>
+<isocurrency>UZS</isocurrency>
+<currensubunit>tiyin (inv.)</currensubunit>
+</country>
+<country>
+<shortname>Vanuatu</shortname>
+<fullname>Republic of Vanuatu</fullname>
+<isocountry>VU</isocountry>
+<capital>Port Vila</capital>
+<citizen>Vanuatuan</citizen>
+<adjective>of Vanuatu; Vanuatuan</adjective>
+<currency>vatu (inv.)</currency>
+<isocurrency>VUV</isocurrency>
+<currensubunit>-</currensubunit>
+</country>
+<country>
+<shortname>the Vatican</shortname>
+<fullname>The Holy see</fullname>
+<isocountry>VA</isocountry>
+<capital>Vatican City</capital>
+<citizen>-</citizen>
+<adjective>Vatican; of the Vatican</adjective>
+<currency>Italian lira</currency>
+<isocurrency>ITL</isocurrency>
+<currensubunit>-</currensubunit>
+</country>
+<country>
+<shortname>Venezuela</shortname>
+<fullname>Republic of Venezuela</fullname>
+<isocountry>VE</isocountry>
+<capital>Caracas</capital>
+<citizen>Venezuelan</citizen>
+<adjective>Venezuelan</adjective>
+<currency>bolívar (pl:bolívares)</currency>
+<isocurrency>VEB</isocurrency>
+<currensubunit>centavo</currensubunit>
+</country>
+<country>
+<shortname>Vietnam</shortname>
+<fullname>Socialist Republic of Viet Nam</fullname>
+<isocountry>VN</isocountry>
+<capital>Hanoi</capital>
+<citizen>Vietnamese</citizen>
+<adjective>Vietnamese</adjective>
+<currency>dong</currency>
+<isocurrency>VND</isocurrency>
+<currensubunit>-</currensubunit>
+</country>
+<country>
+<shortname>Wallis and Futuna</shortname>
+<fullname>Territory of the Wallis and Futuna Islands</fullname>
+<isocountry>WF</isocountry>
+<capital>Mata-Utu</capital>
+<citizen>Wallisian; Futunan; Wallis and Futuna
+Islander</citizen>
+<adjective>of the Wallis and Futuna Islands</adjective>
+<currency>CFP franc</currency>
+<isocurrency>XPF</isocurrency>
+<currensubunit>centime</currensubunit>
+</country>
+<country>
+<shortname>Western Sahara</shortname>
+<fullname>-</fullname>
+<isocountry>EH</isocountry>
+<capital>Al aaiun</capital>
+<citizen>Sahrawi</citizen>
+<adjective>Sahrawi</adjective>
+<currency>Moroccan dirham</currency>
+<isocurrency>MAD</isocurrency>
+<currensubunit>centime</currensubunit>
+</country>
+<country>
+<shortname>Yemen</shortname>
+<fullname>Republic of Yemen</fullname>
+<isocountry>YE</isocountry>
+<capital>San'a</capital>
+<citizen>Yemenite</citizen>
+<adjective>Yemeni</adjective>
+<currency>Yemeni rial</currency>
+<isocurrency>YER</isocurrency>
+<currensubunit>fils (inv.)</currensubunit>
+</country>
+<country>
+<shortname>Yugoslavia</shortname>
+<fullname>Federal Republic of Yugoslavia</fullname>
+<isocountry>YU</isocountry>
+<capital>Belgrade</capital>
+<citizen>Yugoslav</citizen>
+<adjective>Yugoslav</adjective>
+<currency>Yugoslav dinar</currency>
+<isocurrency>YUM</isocurrency>
+<currensubunit>para (inv.)</currensubunit>
+</country>
+<country>
+<shortname>Zambia</shortname>
+<fullname>Republic of Zambia</fullname>
+<isocountry>ZM</isocountry>
+<capital>Lusaka</capital>
+<citizen>Zambian</citizen>
+<adjective>Zambian</adjective>
+<currency>Zambian kwacha (inv.)</currency>
+<isocurrency>ZMK</isocurrency>
+<currensubunit>ngwee (inv.)</currensubunit>
+</country>
+<country>
+<shortname>Zimbabwe</shortname>
+<fullname>Republic of Zimbabwe</fullname>
+<isocountry>ZW</isocountry>
+<capital>Harare</capital>
+<citizen>Zimbabwean</citizen>
+<adjective>Zimbabwean</adjective>
+<currency>Zimbabwe dollar</currency>
+<isocurrency>ZWD</isocurrency>
+<currensubunit>cent</currensubunit>
+</country>
+</countries> \ No newline at end of file
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/fot.dtd b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/fot.dtd
new file mode 100644
index 00000000000..afe3576dc59
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/fot.dtd
@@ -0,0 +1,507 @@
+<!-- Typical use:
+
+<!DOCTYPE fot PUBLIC "-//James Clark//DTD DSSSL Flow Object Tree//EN" "fot.dtd">
+
+-->
+<!ENTITY % length-spec "CDATA">
+<!-- represents length-spec or #f; #f is represented by empty value -->
+<!ENTITY % opt-length-spec "CDATA">
+<!ENTITY % length "NMTOKEN">
+<!ENTITY % enum "NMTOKEN">
+<!ENTITY % enum-or-boolean "NMTOKEN">
+<!ENTITY % boolean "(true|false)">
+
+<!ENTITY % flow "
+(paragraph
+|sequence
+|display-group
+|line-field
+|link
+|scroll
+|marginalia
+|leader
+|sideline
+|box
+|score
+|table-row
+|math-sequence
+|unmath
+|subscript
+|superscript
+|grid
+|grid-cell
+|paragraph-break
+|external-graphic
+|rule
+|alignment-point
+|table-column
+|character
+|simple-page-sequence
+|fraction
+|script
+|mark
+|fence
+|radical
+|math-operator
+|table
+|table-part
+|table-cell
+|multi-mode
+|page-number
+|text
+|sdata
+|a
+|define-glyph-subst-table)*">
+
+<!ELEMENT fot %flow;>
+<!ELEMENT text (#PCDATA)>
+<!ELEMENT sdata EMPTY>
+<!ATTLIST sdata name CDATA #REQUIRED text CDATA #REQUIRED>
+
+<!ELEMENT paragraph %flow;>
+<!ELEMENT sequence %flow;>
+<!ELEMENT display-group %flow;>
+<!ELEMENT line-field %flow;>
+<!ELEMENT link %flow;>
+<!ELEMENT scroll %flow;>
+<!ELEMENT marginalia %flow;>
+<!ELEMENT leader %flow;>
+<!ELEMENT sideline %flow;>
+<!ELEMENT box %flow;>
+<!ELEMENT score %flow;>
+<!ELEMENT table-row %flow;>
+<!ELEMENT math-sequence %flow;>
+<!ELEMENT unmath %flow;>
+<!ELEMENT subscript %flow;>
+<!ELEMENT superscript %flow;>
+<!ELEMENT grid %flow;>
+<!ELEMENT grid-cell %flow;>
+<!ELEMENT paragraph-break EMPTY>
+<!ELEMENT external-graphic EMPTY>
+<!ELEMENT rule EMPTY>
+<!ELEMENT alignment-point EMPTY>
+<!ELEMENT table-column EMPTY>
+<!ELEMENT character EMPTY>
+
+<!ELEMENT page-number EMPTY>
+<!ATTLIST page-number ref CDATA #IMPLIED>
+
+<!ELEMENT define-glyph-subst-table (glyph-subst*)>
+<!ATTLIST define-glyph-subst-table id ID #REQUIRED>
+
+<!ELEMENT glyph-subst EMPTY>
+<!ATTLIST glyph-subst old CDATA #REQUIRED new CDATA #REQUIRED>
+
+<!ELEMENT a EMPTY>
+<!ATTLIST a
+ name CDATA #REQUIRED
+>
+
+<!ELEMENT simple-page-sequence
+ ((simple-page-sequence.right-header
+ |simple-page-sequence.center-header
+ |simple-page-sequence.left-header
+ |simple-page-sequence.right-footer
+ |simple-page-sequence.center-footer
+ |simple-page-sequence.left-footer)*,
+ %flow;)
+>
+
+<!ELEMENT simple-page-sequence.left-header %flow;>
+<!ELEMENT simple-page-sequence.right-header %flow;>
+<!ELEMENT simple-page-sequence.center-header %flow;>
+<!ELEMENT simple-page-sequence.left-footer %flow;>
+<!ELEMENT simple-page-sequence.right-footer %flow;>
+<!ELEMENT simple-page-sequence.center-footer %flow;>
+
+<!ENTITY % hf "
+ front %boolean; #IMPLIED
+ first %boolean; #IMPLIED
+">
+
+<!ATTLIST simple-page-sequence.right-header %hf;>
+<!ATTLIST simple-page-sequence.center-header %hf;>
+<!ATTLIST simple-page-sequence.left-footer %hf;>
+<!ATTLIST simple-page-sequence.right-footer %hf;>
+<!ATTLIST simple-page-sequence.center-footer %hf;>
+
+<!ELEMENT table
+(table.before-row-border, table.after-row-border,
+ table.before-column-border, table.after-column-border,
+ %flow;)>
+
+<!ELEMENT table.before-row-border EMPTY>
+<!ELEMENT table.after-row-border EMPTY>
+<!ELEMENT table.before-column-border EMPTY>
+<!ELEMENT table.after-column-border EMPTY>
+
+<!ELEMENT table-part
+ (table-part.principal, table-part.header, table-part.footer)
+>
+
+<!ELEMENT table-part.header %flow;>
+<!ELEMENT table-part.footer %flow;>
+<!ELEMENT table-part.principal %flow;>
+
+<!ELEMENT table-cell
+(table-cell.before-row-border, table-cell.after-row-border,
+ table-cell.before-column-border, table-cell.after-column-border,
+ %flow;)>
+
+<!ELEMENT table-cell.before-row-border EMPTY>
+<!ELEMENT table-cell.after-row-border EMPTY>
+<!ELEMENT table-cell.before-column-border EMPTY>
+<!ELEMENT table-cell.after-column-border EMPTY>
+
+<!ELEMENT fraction
+ (fraction.fraction-bar, fraction.numerator, fraction.denominator)>
+<!ELEMENT fraction.numerator %flow;>
+<!ELEMENT fraction.denominator %flow;>
+<!ELEMENT fraction.fraction-bar EMPTY>
+
+<!ELEMENT script (script.principal,
+ script.pre-sup, script.pre-sub,
+ script.post-sup, script.post-sub,
+ script.mid-sup, script.mid-sub)>
+
+<!ELEMENT script.principal %flow;>
+<!ELEMENT script.pre-sup %flow;>
+<!ELEMENT script.pre-sub %flow;>
+<!ELEMENT script.post-sup %flow;>
+<!ELEMENT script.post-sub %flow;>
+<!ELEMENT script.mid-sup %flow;>
+<!ELEMENT script.mid-sub %flow;>
+
+<!ELEMENT mark (mark.principal, mark.over-mark, mark.under-mark)>
+<!ELEMENT mark.principal %flow;>
+<!ELEMENT mark.over-mark %flow;>
+<!ELEMENT mark.under-mark %flow;>
+
+<!ELEMENT fence (fence.principal, fence.open, fence.close)>
+<!ELEMENT fence.principal %flow;>
+<!ELEMENT fence.open %flow;>
+<!ELEMENT fence.close %flow;>
+
+<!ELEMENT radical (radical.radical?, radical.principal, radical.degree)>
+<!ELEMENT radical.principal %flow;>
+<!ELEMENT radical.degree %flow;>
+<!ELEMENT radical.radical EMPTY>
+
+<!ELEMENT math-operator (math-operator.principal, math-operator.operator,
+ math-operator.lower-limit, math-operator.upper-limit)>
+<!ELEMENT math-operator.principal %flow;>
+<!ELEMENT math-operator.operator %flow;>
+<!ELEMENT math-operator.lower-limit %flow;>
+<!ELEMENT math-operator.upper-limit %flow;>
+
+<!ELEMENT multi-mode (multi-mode.mode, multi-mode.mode+)>
+<!ELEMENT multi-mode.mode %flow;>
+<!ATTLIST multi-mode.mode
+ name CDATA #IMPLIED
+ desc CDATA #IMPLIED
+>
+
+<!ENTITY % inherited-characteristics "
+font-size %length; #IMPLIED
+font-family-name CDATA #IMPLIED
+font-weight %enum-or-boolean; #IMPLIED
+font-posture %enum-or-boolean; #IMPLIED
+start-indent %length-spec; #IMPLIED
+end-indent %length-spec; #IMPLIED
+first-line-start-indent %length-spec; #IMPLIED
+last-line-end-indent %length-spec; #IMPLIED
+line-spacing %length-spec; #IMPLIED
+min-pre-line-spacing %opt-length-spec; #IMPLIED
+min-post-line-spacing %opt-length-spec; #IMPLIED
+min-leading %opt-length-spec; #IMPLIED
+field-width %length-spec; #IMPLIED
+lines %enum; #IMPLIED
+quadding %enum; #IMPLIED
+display-alignment %enum; #IMPLIED
+field-align %enum; #IMPLIED
+marginalia-side %enum; #IMPLIED
+principal-mode-simultaneous %boolean; #IMPLIED
+marginalia-sep %length-spec; #IMPLIED
+marginalia-keep-with-previous %boolean; #IMPLIED
+grid-equidistant-rows %boolean; #IMPLIED
+grid-equidistant-columns %boolean; #IMPLIED
+color CDATA #IMPLIED
+background-color CDATA #IMPLIED
+page-width %length; #IMPLIED
+page-height %length; #IMPLIED
+left-margin %length; #IMPLIED
+right-margin %length; #IMPLIED
+top-margin %length; #IMPLIED
+bottom-margin %length; #IMPLIED
+header-margin %length; #IMPLIED
+footer-margin %length; #IMPLIED
+border-present %boolean; #IMPLIED
+hyphenate %boolean; #IMPLIED
+kern %boolean; #IMPLIED
+ligature %boolean; #IMPLIED
+score-spaces %boolean; #IMPLIED
+float-out-marginalia %boolean; #IMPLIED
+float-out-sidelines %boolean; #IMPLIED
+float-out-line-numbers %boolean; #IMPLIED
+cell-background %boolean; #IMPLIED
+span-weak %boolean; #IMPLIED
+ignore-record-end %boolean; #IMPLIED
+numbered-lines %boolean; #IMPLIED
+hanging-punct %boolean; #IMPLIED
+box-open-end %boolean; #IMPLIED
+truncate-leader %boolean; #IMPLIED
+align-leader %boolean; #IMPLIED
+table-part-omit-middle-header %boolean; #IMPLIED
+table-part-omit-middle-footer %boolean; #IMPLIED
+border-omit-at-break %boolean; #IMPLIED
+line-join %enum; #IMPLIED
+line-cap %enum; #IMPLIED
+line-number-side %enum; #IMPLIED
+kern-mode %enum; #IMPLIED
+input-whitespace-treatment %enum; #IMPLIED
+filling-direction %enum; #IMPLIED
+writing-mode %enum; #IMPLIED
+last-line-quadding %enum; #IMPLIED
+math-display-mode %enum; #IMPLIED
+script-pre-align %enum; #IMPLIED
+script-post-align %enum; #IMPLIED
+script-mid-sup-align %enum; #IMPLIED
+script-mid-sub-align %enum; #IMPLIED
+numerator-align %enum; #IMPLIED
+denominator-align %enum; #IMPLIED
+grid-position-cell-type %enum; #IMPLIED
+grid-column-alignment %enum; #IMPLIED
+grid-row-Alignment %enum; #IMPLIED
+box-type %enum; #IMPLIED
+glyph-alignment-mode %enum; #IMPLIED
+box-border-alignment %enum; #IMPLIED
+cell-row-alignment %enum; #IMPLIED
+border-alignment %enum; #IMPLIED
+sideline-side %enum; #IMPLIED
+hyphenation-keep %enum-or-boolean; #IMPLIED
+font-structure %enum-or-boolean; #IMPLIED
+font-proportionate-width %enum-or-boolean; #IMPLIED
+cell-crossed %enum-or-boolean; #IMPLIED
+position-point-shift %length-spec; #IMPLIED
+start-margin %length-spec; #IMPLIED
+end-margin %length-spec; #IMPLIED
+sideline-sep %length-spec; #IMPLIED
+asis-wrap-indent %length-spec; #IMPLIED
+line-number-sep %length-spec; #IMPLIED
+last-line-justify-limit %length-spec; #IMPLIED
+justify-glyph-space-max-add %length-spec; #IMPLIED
+justify-glyph-space-max-remove %length-spec; #IMPLIED
+table-corner-radius %length-spec; #IMPLIED
+box-corner-radius %length-spec; #IMPLIED
+line-thickness %length; #IMPLIED
+cell-before-row-margin %length; #IMPLIED
+cell-after-row-margin %length; #IMPLIED
+cell-before-column-margin %length; #IMPLIED
+cell-after-column-margin %length; #IMPLIED
+line-sep %length; #IMPLIED
+box-size-before %length; #IMPLIED
+box-size-after %length; #IMPLIED
+country NMTOKEN #IMPLIED
+language NMTOKEN #IMPLIED
+expand-tabs NMTOKEN #IMPLIED
+hyphenation-ladder-count NMTOKEN #IMPLIED
+layer NMTOKEN #IMPLIED
+background-layer NMTOKEN #IMPLIED
+border-priority NMTOKEN #IMPLIED
+line-repeat NMTOKEN #IMPLIED
+span NMTOKEN #IMPLIED
+min-leader-repeat NMTOKEN #IMPLIED
+hyphenation-remain-char-count NMTOKEN #IMPLIED
+hyphenation-push-char-count NMTOKEN #IMPLIED
+widow-count NMTOKEN #IMPLIED
+orphan-count NMTOKEN #IMPLIED
+background-tile CDATA #IMPLIED
+line-breaking-method CDATA #IMPLIED
+line-composition-method CDATA #IMPLIED
+implicit-bidi-method CDATA #IMPLIED
+glyph-subst-method CDATA #IMPLIED
+glyph-reorder-method CDATA #IMPLIED
+hyphenation-method CDATA #IMPLIED
+table-auto-width-method CDATA #IMPLIED
+font-name CDATA #IMPLIED
+escapement-space-before CDATA #IMPLIED
+escapement-space-after CDATA #IMPLIED
+glyph-subst-table NMTOKENS #IMPLIED
+">
+
+<!ENTITY % display-nic "
+ position-preference %enum-or-boolean; #IMPLIED
+ keep-with-next %boolean; 'false'
+ keep-with-previous %boolean; 'false'
+ may-violate-keep-before %boolean; 'false'
+ may-violate-keep-after %boolean; 'false'
+ keep %enum-or-boolean; #IMPLIED
+ break-before %enum-or-boolean; #IMPLIED
+ break-after %enum-or-boolean; #IMPLIED
+ space-before CDATA #IMPLIED
+ space-before-conditional %boolean; #IMPLIED
+ space-before-priority NMTOKEN #IMPLIED
+ space-after CDATA #IMPLIED
+ space-after-conditional %boolean; #IMPLIED
+ space-after-priority NMTOKEN #IMPLIED
+">
+
+<!ENTITY % inline-nic "
+ break-before-priority NMTOKEN #IMPLIED
+ break-after-priority NMTOKEN #IMPLIED
+">
+
+<!ATTLIST sequence %inherited-characteristics;>
+<!ATTLIST line-field %inherited-characteristics;>
+<!ATTLIST simple-page-sequence %inherited-characteristics;>
+<!ATTLIST fraction %inherited-characteristics;>
+<!ATTLIST fraction.fraction-bar %inherited-characteristics;>
+<!ATTLIST math-sequence %inherited-characteristics;>
+<!ATTLIST unmath %inherited-characteristics;>
+<!ATTLIST subscript %inherited-characteristics;>
+<!ATTLIST superscript %inherited-characteristics;>
+<!ATTLIST script %inherited-characteristics;>
+<!ATTLIST mark %inherited-characteristics;>
+<!ATTLIST fence %inherited-characteristics;>
+<!ATTLIST radical %inherited-characteristics;>
+<!ATTLIST math-operator %inherited-characteristics;>
+<!ATTLIST sideline %inherited-characteristics;>
+<!ATTLIST scroll %inherited-characteristics;>
+<!ATTLIST marginalia %inherited-characteristics;>
+<!ATTLIST multi-mode %inherited-characteristics;>
+<!ATTLIST table-row %inherited-characteristics;>
+<!ATTLIST table.before-row-border %inherited-characteristics;>
+<!ATTLIST table.after-row-border %inherited-characteristics;>
+<!ATTLIST table.before-column-border %inherited-characteristics;>
+<!ATTLIST table.after-column-border %inherited-characteristics;>
+<!ATTLIST table-cell.before-row-border %inherited-characteristics;>
+<!ATTLIST table-cell.after-row-border %inherited-characteristics;>
+<!ATTLIST table-cell.before-column-border %inherited-characteristics;>
+<!ATTLIST table-cell.after-column-border %inherited-characteristics;>
+
+<!ATTLIST table-column
+ column-number NMTOKEN #REQUIRED
+ n-columns-spanned NMTOKEN #IMPLIED
+ width %length-spec; #IMPLIED
+ %inherited-characteristics;
+>
+
+<!ATTLIST table
+ width %length-spec; #IMPLIED
+ minimum-width %boolean; "false"
+ %display-nic;
+ %inherited-characteristics;
+>
+
+<!-- column-number of 0 has a special meaning: it identifies a dummy cell that
+ can be used to fill out the row if it later proves necessary to do so -->
+<!ATTLIST table-cell
+ column-number NMTOKEN #REQUIRED
+ n-columns-spanned NMTOKEN #IMPLIED
+ n-rows-spanned NMTOKEN #IMPLIED
+ %inherited-characteristics;
+>
+
+<!ATTLIST link
+ destination CDATA #IMPLIED
+ %inherited-characteristics;
+>
+
+<!ATTLIST box
+ display %boolean; "false"
+ %display-nic;
+ %inline-nic;
+ %inherited-characteristics;
+>
+
+<!ATTLIST score
+ type (before|through|after|char) #IMPLIED
+ type.length-spec %length-spec; #IMPLIED
+ char CDATA #IMPLIED
+ %inherited-characteristics;
+>
+
+<!ATTLIST leader
+ length %length-spec; #IMPLIED
+ %inherited-characteristics;
+ %inline-nic;
+>
+
+<!ATTLIST rule
+ orientation (horizontal|vertical|escapement|line-progression)
+ #REQUIRED
+ length %length-spec; #IMPLIED
+ %display-nic;
+ %inline-nic;
+ %inherited-characteristics;
+>
+
+<!ATTLIST external-graphic
+ display %boolean; "false"
+ scale %enum; #IMPLIED
+ scale-x NMTOKEN #IMPLIED
+ scale-y NMTOKEN #IMPLIED
+ max-width %length-spec; #IMPLIED
+ max-height %length-spec; #IMPLIED
+ entity-system-id CDATA #REQUIRED
+ notation-system-id CDATA #REQUIRED
+ escapement-direction %enum; #IMPLIED
+ position-point-x %length-spec; #IMPLIED
+ position-point-y %length-spec; #IMPLIED
+ %inline-nic;
+ %display-nic;
+ %inherited-characteristics;
+>
+
+<!ATTLIST display-group
+ coalesce-id CDATA #IMPLIED
+ %display-nic;
+ %inherited-characteristics;
+>
+
+<!ATTLIST paragraph
+ %display-nic;
+ %inherited-characteristics;
+>
+
+<!ATTLIST paragraph-break
+ %display-nic;
+ %inherited-characteristics;
+>
+
+<!ATTLIST table-part
+ %display-nic;
+ %inherited-characteristics;
+>
+
+<!ENTITY % character-c "
+ char CDATA #IMPLIED
+ glyph-id CDATA #IMPLIED
+ drop-after-line-break %boolean; #IMPLIED
+ drop-unless-before-line-break %boolean; #IMPLIED
+ punct %boolean; #IMPLIED
+ space %boolean; #IMPLIED
+ input-tab %boolean; #IMPLIED
+ input-whitespace %boolean; #IMPLIED
+ record-end %boolean; #IMPLIED
+ break-before-priority NMTOKEN #IMPLIED
+ break-after-priority NMTOKEN #IMPLIED
+ math-font-posture %enum-or-boolean; #IMPLIED
+ math-class %enum; #IMPLIED
+ script CDATA #IMPLIED
+ %inherited-characteristics;">
+
+<!ATTLIST character %character-c;>
+<!ATTLIST radical.radical %character-c;>
+
+<!ATTLIST grid
+ grid-n-columns NMTOKEN #IMPLIED
+ grid-n-rows NMTOKEN #IMPLIED
+ %inherited-characteristics;
+>
+
+<!ATTLIST grid-cell
+ column-number NMTOKEN #IMPLIED
+ row-number NMTOKEN #IMPLIED
+ %inherited-characteristics;
+>
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/frisotab1exa1.xsl b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/frisotab1exa1.xsl
new file mode 100644
index 00000000000..672b36e5a42
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/frisotab1exa1.xsl
@@ -0,0 +1,17 @@
+<?xml version='1.0' encoding="ISO-8859-1"?>
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+
+<xsl:output method="text" encoding="ISO-8859-1"/>
+
+<xsl:template match="/listeDesPays">
+<xsl:for-each select="pays">
+<xsl:value-of select="nomComplet"/>
+<xsl:text> (</xsl:text>
+<xsl:value-of select="nomISO"/>
+<xsl:text>) et la capitale </xsl:text>
+<xsl:value-of select="capitale"/>
+<xsl:text>.&#xA;</xsl:text><!-- retour à la ligne -->
+</xsl:for-each>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/frisotab1exa2.xsl b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/frisotab1exa2.xsl
new file mode 100644
index 00000000000..cafaad4ca96
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/frisotab1exa2.xsl
@@ -0,0 +1,48 @@
+<?xml version='1.0' encoding="ISO-8859-1"?>
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+
+<xsl:output method="text" encoding="ISO-8859-1"/>
+
+<xsl:template match="/listeDesPays">
+<xsl:for-each select="pays">
+ <xsl:sort select="capitale"/>
+ <xsl:if test="string(capitale) != '-'">
+ <xsl:value-of select="capitale"/>
+ <xsl:variable name="Nom" select="string(nomComplet)"/>
+ <xsl:choose>
+ <xsl:when test="substring($Nom,1,3) = 'les'">
+ <xsl:text> est la capitale des </xsl:text>
+ <xsl:value-of select="substring-after($Nom,' ')"/>
+ </xsl:when>
+ <xsl:when test="substring($Nom,1,3) = 'le '">
+ <xsl:text> est la capitale du </xsl:text>
+ <xsl:value-of select="substring-after($Nom,' ')"/>
+ </xsl:when>
+ <xsl:when test="substring($Nom,1,3) = 'la '">
+ <xsl:text> est la capitale de </xsl:text>
+ <xsl:value-of select="$Nom"/>
+ </xsl:when>
+ <xsl:when test='substring($Nom,1,2) = "l&#39;"'>
+ <xsl:text> est la capitale de </xsl:text>
+ <xsl:value-of select="$Nom"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:variable name="L1" select="substring($Nom,1,1)"/>
+ <xsl:choose>
+ <xsl:when test="$L1 = 'A' or $L1 = 'E' or $L1 = 'I' or
+ $L1 = 'O' or $L1 = 'U' or $L1 = 'Y'">
+ <xsl:text> est la capitale de l'</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text> est la capitale de </xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:value-of select="$Nom"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:text>.&#xA;</xsl:text><!-- retour à la ligne -->
+ </xsl:if>
+</xsl:for-each>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/inv1html.pl b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/inv1html.pl
new file mode 100644
index 00000000000..0f1e0d4e380
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/inv1html.pl
@@ -0,0 +1,61 @@
+########################################################################
+# SGMLSPL script produced automatically by the script sgmlspl.pl
+#
+# Document Type: inv1html.pl (for HTML/CSS formatting)
+# Edited by: mg (24 Aug 98)
+########################################################################
+
+use SGMLS; # Use the SGMLS package.
+use SGMLS::Output; # Use stack-based output.
+
+#
+# Document Handlers.
+#
+sgml('start', "<HTML>\n<HEAD>\n" .
+ "<TITLE> Invitation (sgmlpl/CSS formatting) </TITLE>\n" .
+ "<LINK href=\"invit.css\" rel=\"style-sheet\" type=\"text/css\">\n" .
+ "<!-- 24 August 1998 mg -->\n" .
+ "</HEAD>\n");
+sgml('end', "</HTML>");
+
+#
+# Element Handlers.
+#
+
+sgml('<invitation>', "<BODY>\n<H1>INVITATION</H1>\n");
+sgml('</invitation>', "</BODY>\n");
+
+sgml('<front>', "<P><TABLE>\n<TBODY>\n");
+sgml('</front>', "</TBODY>\n</TABLE>\n");
+
+sgml('<to>', "<TR><TD class=\"front\">To: </TD>\n<TD>");
+sgml('</to>', "</TD></TR>\n");
+
+sgml('<date>', "<TR><TD class=\"front\">When: </TD>\n<TD>");
+sgml('</date>', "</TD></TR>\n");
+
+sgml('<where>', "<TR><TD class=\"front\">Venue: </TD>\n<TD>");
+sgml('</where>', "</TD></TR>\n");
+
+sgml('<why>', "<TR><TD class=\"front\">Occasion: </TD>\n<TD>");
+sgml('</why>', "</TD></TR>\n");
+
+sgml('<body>', "");
+sgml('</body>', "");
+
+sgml('<par>', "<P>");
+sgml('</par>', "</P>\n");
+
+sgml('<emph>', "<EM>");
+sgml('</emph>', "</EM>");
+
+sgml('<back>', "");
+sgml('</back>', "");
+
+sgml('<signature>', "<P CLASS=\"signature\">");
+sgml('</signature>', "</P>\n");
+
+sgml('start_element',sub { die "Unknown element: " . $_[0]->name; });
+sgml('cdata',sub { output $_[0]; });
+
+1;
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/inv2css.html.save b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/inv2css.html.save
new file mode 100644
index 00000000000..9615cdb76cb
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/inv2css.html.save
@@ -0,0 +1,44 @@
+<HTML>
+<HEAD>
+<TITLE> Invitation (sgmlpl/CSS formatting) </TITLE>
+<LINK href="invit.css" rel="style-sheet" type="text/css">
+<!-- 24 August 1998 mg -->
+</HEAD>
+<BODY>
+<H1>INVITATION</H1>
+<P><TABLE>
+<TBODY>
+<TR><TD class="front">To: </TD>
+<TD>Anna, Bernard, Didier, Johanna</TD></TR>
+<TR><TD class="front">When: </TD>
+<TD>Next Friday Evening at 8 pm</TD></TR>
+<TR><TD class="front">Venue: </TD>
+<TD>The Web Cafe</TD></TR>
+<TR><TD class="front">Occasion: </TD>
+<TD>My first XML baby</TD></TR>
+</TBODY>
+</TABLE>
+<P>
+
+I would like to invite you all to celebrate
+
+the birth of <EM>Invitation</EM>, my
+
+first XML document child.
+
+</P>
+<P>
+
+Please do your best to come and join me next Friday
+
+evening. And, do not forget to bring your friends.
+
+</P>
+<P>
+
+I <EM>really</EM> look forward to see you soon!
+
+</P>
+<P CLASS="signature">Michel</P>
+</BODY>
+</HTML> \ No newline at end of file
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/inv2html.pl b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/inv2html.pl
new file mode 100644
index 00000000000..42637a1276c
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/inv2html.pl
@@ -0,0 +1,61 @@
+########################################################################
+# SGMLSPL script produced automatically by the script sgmlspl.pl
+#
+# Document Type: inv2html.pl (for HTML/CSS formatting)
+# Edited by: mg (25 Aug 1998)
+########################################################################
+
+use SGMLS; # Use the SGMLS package.
+use SGMLS::Output; # Use stack-based output.
+
+#
+# Document Handlers.
+#
+sgml('start', sub {
+ output "<HTML>\n<HEAD>\n";
+ output "<TITLE> Invitation (sgmlpl/CSS formatting) </TITLE>\n";
+ output "<LINK href=\"invit.css\" rel=\"style-sheet\" type=\"text/css\">\n";
+ output "<!-- 24 August 1998 mg -->\n";
+ output "</HEAD>\n";
+});
+sgml('end', "</HTML>");
+
+#
+# Element Handlers.
+#
+
+# Element: invitation
+sgml('<invitation>', sub {
+ my ($element,$event) = @_;
+ # First save the information for further use
+ # Local variables
+ my $date = $element->attribute('date')->value;
+ my $to = $element->attribute('to')->value;
+ my $where = $element->attribute('where')->value;
+ my $why = $element->attribute('why')->value;
+ # Global variable (saved for end of document)
+ $main::GLsig = $element->attribute('signature')->value;
+ # Output the HTML commands needed for the front matter
+ output "<BODY>\n<H1>INVITATION</H1>\n";
+ output "<P><TABLE>\n<TBODY>\n";
+ output "<TR><TD class=\"front\">To: </TD>\n<TD>$to</TD></TR>\n";
+ output "<TR><TD class=\"front\">When: </TD>\n<TD>$date</TD></TR>\n";
+ output "<TR><TD class=\"front\">Venue: </TD>\n<TD>$where</TD></TR>\n";
+ output "<TR><TD class=\"front\">Occasion: </TD>\n<TD>$why</TD></TR>\n";
+ output "</TBODY>\n</TABLE>\n";
+});
+
+sgml('</invitation>', sub{ # signature and end of document
+ output "<P CLASS=\"signature\">$main::GLsig</P>\n";
+ output "</BODY>\n";
+});
+
+# Elements: par and emph
+sgml('<par>', "<P>");
+sgml('</par>', "</P>\n");
+
+sgml('<emph>', "<EM>");
+sgml('</emph>', "</EM>");
+
+sgml('cdata',sub { output $_[0]; });
+1;
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/inv2lat.pl b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/inv2lat.pl
new file mode 100644
index 00000000000..89e2f42015f
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/inv2lat.pl
@@ -0,0 +1,76 @@
+########################################################################
+# SGMLSPL script produced automatically by the script sgmlspl.pl
+#
+# Document Type: invitation --> customization for LaTeX
+# Edited by: mg (August 14th 1998)
+########################################################################
+
+use SGMLS; # Use the SGMLS package.
+use SGMLS::Output; # Use stack-based output.
+
+#
+# Document Handlers.
+#
+sgml('start', sub {});
+sgml('end', sub {});
+
+#
+# Element Handlers.
+#
+
+# Element: invitation
+sgml('<invitation>', "\\documentclass[]{article}\n" .
+ "\\usepackage{invitation}\n" .
+ "\\begin{document}\n");
+sgml('</invitation>', "\\end{document}\n");
+
+# Element: front
+sgml('<front>', "\\begin{Front}\n");
+sgml('</front>', "\\end{Front}\n");
+
+# Element: to
+sgml('<to>', "\\To{");
+sgml('</to>', "}\n");
+
+# Element: date
+sgml('<date>', "\\Date{");
+sgml('</date>', "}\n");
+
+# Element: where
+sgml('<where>', "\\Where{");
+sgml('</where>', "}\n");
+
+# Element: why
+sgml('<why>', "\\Why{");
+sgml('</why>', "}\n");
+
+# Element: body
+sgml('<body>', "\\begin{Body}\n");
+sgml('</body>', "\\end{Body}\n");
+
+# Element: par
+sgml('<par>', "\\par ");
+sgml('</par>', "\n");
+
+# Element: emph
+sgml('<emph>', "\\emph{");
+sgml('</emph>', "}");
+
+# Element: back
+sgml('<back>', "\\begin{Back}\n");
+sgml('</back>', "\\end{Back}\n");
+
+# Element: signature
+sgml('<signature>', "\\Signature{");
+sgml('</signature>', "}\n");
+#
+# Default handlers
+#
+sgml('start_element',sub { die "Unknown element: " . $_[0]->name; });
+sgml('cdata',sub { output $_[0]; });
+sgml('re'," ");
+sgml('pi',sub { die "Unknown processing instruction: " . $_[0]; });
+sgml('entity',sub { die "Unknown external entity: " . $_[0]->name; });
+sgml('conforming','');
+
+1;
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/inv3.xml b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/inv3.xml
new file mode 100644
index 00000000000..2080967a5da
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/inv3.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0"?>
+<!DOCTYPE invitation SYSTEM "invitation2.dtd">
+<invitation to="Anna, Bernard, Didier, Johanna"
+ date="Next Friday Evening at 8 pm"
+ where="The <emph>Web</emph> Cafe"
+ why="My first XML baby"
+ signature="Michel"
+>
+<par>
+I would like to invite you all to celebrate
+the birth of <emph>Invitation</emph>, my
+first XML document child.
+</par>
+<par>
+Please do your best to come and join me next Friday
+evening. And, do not forget to bring your friends.
+</par>
+<par>
+I <emph>really</emph> look forward to see you soon!
+</par>
+</invitation>
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invcss.html.save b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invcss.html.save
new file mode 100644
index 00000000000..9615cdb76cb
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invcss.html.save
@@ -0,0 +1,44 @@
+<HTML>
+<HEAD>
+<TITLE> Invitation (sgmlpl/CSS formatting) </TITLE>
+<LINK href="invit.css" rel="style-sheet" type="text/css">
+<!-- 24 August 1998 mg -->
+</HEAD>
+<BODY>
+<H1>INVITATION</H1>
+<P><TABLE>
+<TBODY>
+<TR><TD class="front">To: </TD>
+<TD>Anna, Bernard, Didier, Johanna</TD></TR>
+<TR><TD class="front">When: </TD>
+<TD>Next Friday Evening at 8 pm</TD></TR>
+<TR><TD class="front">Venue: </TD>
+<TD>The Web Cafe</TD></TR>
+<TR><TD class="front">Occasion: </TD>
+<TD>My first XML baby</TD></TR>
+</TBODY>
+</TABLE>
+<P>
+
+I would like to invite you all to celebrate
+
+the birth of <EM>Invitation</EM>, my
+
+first XML document child.
+
+</P>
+<P>
+
+Please do your best to come and join me next Friday
+
+evening. And, do not forget to bring your friends.
+
+</P>
+<P>
+
+I <EM>really</EM> look forward to see you soon!
+
+</P>
+<P CLASS="signature">Michel</P>
+</BODY>
+</HTML> \ No newline at end of file
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invfo1.fo b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invfo1.fo
new file mode 100644
index 00000000000..5093f5ee464
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invfo1.fo
@@ -0,0 +1,4 @@
+<fo:root xmlns:fo="http://www.w3.org/XSL/Format/1.0"><fo:layout-master-set><fo:simple-page-master page-master-name="allpages" margin-top="75pt" margin-bottom="125pt" margin-left="80pt" margin-right="150pt"><fo:region-body margin-bottom="100pt"/><fo:region-after extent="25pt"/></fo:simple-page-master></fo:layout-master-set><fo:page-sequence><fo:sequence-specification><fo:sequence-specifier-repeating page-master-first="allpages" page-master-repeating="allpages"/></fo:sequence-specification><fo:flow font-family="serif"><fo:block font-family="sans-serif" font-size="24pt" font-weight="bold" text-align-last="centered" space-after.optimum="24pt" xmlns:fo="http://www.w3.org/1999/XSL/Format">INVITATION</fo:block><fo:list-block provisional-distance-between-starts="2cm" provisional-label-separation="6pt" xmlns:fo="http://www.w3.org/1999/XSL/Format"><fo:list-item id="listto"><fo:list-item-label font-style="italic"><fo:block>To:</fo:block></fo:list-item-label><fo:list-item-body><fo:block>Anna, Bernard, Didier, Johanna</fo:block></fo:list-item-body></fo:list-item><fo:list-item id="listdate"><fo:list-item-label font-style="italic"><fo:block>When:</fo:block></fo:list-item-label><fo:list-item-body><fo:block>Next Friday Evening at 8 pm</fo:block></fo:list-item-body></fo:list-item><fo:list-item id="listwhere"><fo:list-item-label font-style="italic"><fo:block>Venue:</fo:block></fo:list-item-label><fo:list-item-body><fo:block>The Web Cafe</fo:block></fo:list-item-body></fo:list-item><fo:list-item id="listwhy"><fo:list-item-label font-style="italic"><fo:block>Occasion:</fo:block></fo:list-item-label><fo:list-item-body><fo:block>My first XML baby</fo:block></fo:list-item-body></fo:list-item></fo:list-block><fo:block space-before.optimum="12pt" xmlns:fo="http://www.w3.org/1999/XSL/Format">I would like to invite you all to celebrate
+the birth of <fo:inline-sequence font-style="italic">Invitation</fo:inline-sequence>, my
+first XML document child.</fo:block><fo:block space-before.optimum="12pt" xmlns:fo="http://www.w3.org/1999/XSL/Format">Please do your best to come and join me next Friday
+evening. And, do not forget to bring your friends.</fo:block><fo:block space-before.optimum="12pt" xmlns:fo="http://www.w3.org/1999/XSL/Format">I <fo:inline-sequence font-style="italic">really</fo:inline-sequence> look forward to see you soon!</fo:block><fo:block space-before.optimum="12pt" font-weight="bold" text-align-last="end" xmlns:fo="http://www.w3.org/1999/XSL/Format">From: Michel</fo:block></fo:flow></fo:page-sequence></fo:root> \ No newline at end of file
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invfo1.xsl b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invfo1.xsl
new file mode 100644
index 00000000000..2653e9296b1
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invfo1.xsl
@@ -0,0 +1,118 @@
+<?xml version='1.0'?>
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:fo="http://www.w3.org/1999/XSL/Format">
+
+<xsl:strip-space elements="*"/>
+
+<!-- Parameterizations -->
+
+<xsl:variable name="PageMarginTop">75pt</xsl:variable>
+<xsl:variable name="PageMarginBottom">125pt</xsl:variable>
+<xsl:variable name="PageMarginLeft">80pt</xsl:variable>
+<xsl:variable name="PageMarginRight">150pt</xsl:variable>
+<xsl:variable name="BodyFont">Times-Roman</xsl:variable>
+<xsl:variable name="BodySize">12pt</xsl:variable>
+<xsl:variable name="TypeWriterFont">Computer-Modern-Typewriter</xsl:variable>
+<xsl:variable name="SansFont">Helvetica</xsl:variable>
+<xsl:variable name="ListRightMargin">12pt</xsl:variable>
+<xsl:variable name="ListAbove">12pt</xsl:variable>
+<xsl:variable name="ListBelow">12pt</xsl:variable>
+<xsl:variable name="ListNormalIndent">15pt</xsl:variable>
+<xsl:variable name="BulletOne">&#x2022;</xsl:variable>
+
+<xsl:template name="listitem">
+ <xsl:param name="labeltext">labeltext</xsl:param>
+ <xsl:param name="itemid">itemid</xsl:param>
+ <xsl:param name="itemtext">itemtext</xsl:param>
+ <fo:list-item id="{$itemid}">
+ <fo:list-item-label font-style="italic">
+ <fo:block>
+ <xsl:value-of select="$labeltext"/>
+ <xsl:text>:</xsl:text>
+ </fo:block>
+ </fo:list-item-label>
+ <fo:list-item-body>
+ <fo:block><xsl:value-of select="$itemtext"/></fo:block>
+ </fo:list-item-body>
+ </fo:list-item>
+</xsl:template>
+
+<xsl:template match='/'>
+ <fo:root>
+ <fo:layout-master-set>
+ <fo:simple-page-master
+ page-master-name="allpages"
+ margin-top="{$PageMarginTop}"
+ margin-bottom="{$PageMarginBottom}"
+ margin-left="{$PageMarginLeft}"
+ margin-right="{$PageMarginRight}">
+ <fo:region-body margin-bottom="100pt"/>
+ <fo:region-after extent="25pt"/>
+ </fo:simple-page-master>
+ </fo:layout-master-set>
+ <fo:page-sequence>
+ <fo:sequence-specification>
+ <fo:sequence-specifier-repeating
+ page-master-first="allpages"
+ page-master-repeating="allpages"/>
+ </fo:sequence-specification>
+ <fo:flow font-family="serif">
+ <xsl:apply-templates/>
+ </fo:flow>
+ </fo:page-sequence>
+ </fo:root>
+</xsl:template>
+
+<xsl:template match="invitation/front">
+<fo:block font-family="sans-serif" font-size="24pt"
+ font-weight="bold" text-align-last="centered"
+ space-after.optimum="24pt">
+ <xsl:text>INVITATION</xsl:text>
+</fo:block>
+
+<fo:list-block provisional-distance-between-starts="2cm"
+ provisional-label-separation="6pt">
+ <xsl:call-template name="listitem">
+ <xsl:with-param name="labeltext">To</xsl:with-param>
+ <xsl:with-param name="itemid">listto</xsl:with-param>
+ <xsl:with-param name="itemtext"><xsl:value-of select="to"/></xsl:with-param>
+ </xsl:call-template>
+ <xsl:call-template name="listitem">
+ <xsl:with-param name="labeltext">When</xsl:with-param>
+ <xsl:with-param name="itemid">listdate</xsl:with-param>
+ <xsl:with-param name="itemtext"><xsl:value-of select="date"/></xsl:with-param>
+ </xsl:call-template>
+ <xsl:call-template name="listitem">
+ <xsl:with-param name="labeltext">Venue</xsl:with-param>
+ <xsl:with-param name="itemid">listwhere</xsl:with-param>
+ <xsl:with-param name="itemtext" select="where"/>
+ </xsl:call-template>
+ <xsl:call-template name="listitem">
+ <xsl:with-param name="labeltext">Occasion</xsl:with-param>
+ <xsl:with-param name="itemid">listwhy</xsl:with-param>
+ <xsl:with-param name="itemtext"><xsl:value-of select="why"/></xsl:with-param>
+ </xsl:call-template>
+</fo:list-block>
+</xsl:template>
+
+<xsl:template match="invitation/body/par">
+ <fo:block space-before.optimum="{$BodySize}">
+ <xsl:apply-templates/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="invitation/body/par/emph">
+ <fo:inline-sequence font-style="italic">
+ <xsl:apply-templates/>
+ </fo:inline-sequence>
+</xsl:template>
+
+<xsl:template match="invitation/back">
+<fo:block space-before.optimum="{$BodySize}"
+ font-weight="bold" text-align-last="end">
+ <xsl:text>From: </xsl:text>
+ <xsl:value-of select="signature"/>
+</fo:block>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invfop.pdf b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invfop.pdf
new file mode 100644
index 00000000000..fa0c64df7ed
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invfop.pdf
@@ -0,0 +1,247 @@
+%PDF-1.2
+1 0 obj
+<< /Type /Catalog
+/Pages 2 0 R >>
+endobj
+2 0 obj
+<< /Type /Pages
+/Count 1
+/Kids [ 18 0 R ] >>
+endobj
+3 0 obj
+<< /Type /Info
+/Producer (FOP 0.10.0) >>
+endobj
+4 0 obj
+<< /Font << /F3 5 0 R
+/F2 6 0 R
+/F1 7 0 R
+/F12 8 0 R
+/F11 9 0 R
+/F10 10 0 R
+/F9 11 0 R
+/F8 12 0 R
+/F7 13 0 R
+/F6 14 0 R
+/F5 15 0 R
+/F4 16 0 R
+>>
+/ProcSet [ /PDF /Text ] >>
+endobj
+5 0 obj
+<< /Type /Font
+/Subtype /Type1
+/Name /F3
+/BaseFont /Helvetica-Bold
+/Encoding /WinAnsiEncoding >>
+endobj
+6 0 obj
+<< /Type /Font
+/Subtype /Type1
+/Name /F2
+/BaseFont /Helvetica-Oblique
+/Encoding /WinAnsiEncoding >>
+endobj
+7 0 obj
+<< /Type /Font
+/Subtype /Type1
+/Name /F1
+/BaseFont /Helvetica
+/Encoding /WinAnsiEncoding >>
+endobj
+8 0 obj
+<< /Type /Font
+/Subtype /Type1
+/Name /F12
+/BaseFont /Courier-BoldOblique
+/Encoding /WinAnsiEncoding >>
+endobj
+9 0 obj
+<< /Type /Font
+/Subtype /Type1
+/Name /F11
+/BaseFont /Courier-Bold
+/Encoding /WinAnsiEncoding >>
+endobj
+10 0 obj
+<< /Type /Font
+/Subtype /Type1
+/Name /F10
+/BaseFont /Courier-Oblique
+/Encoding /WinAnsiEncoding >>
+endobj
+11 0 obj
+<< /Type /Font
+/Subtype /Type1
+/Name /F9
+/BaseFont /Courier
+/Encoding /WinAnsiEncoding >>
+endobj
+12 0 obj
+<< /Type /Font
+/Subtype /Type1
+/Name /F8
+/BaseFont /Times-BoldItalic
+/Encoding /WinAnsiEncoding >>
+endobj
+13 0 obj
+<< /Type /Font
+/Subtype /Type1
+/Name /F7
+/BaseFont /Times-Bold
+/Encoding /WinAnsiEncoding >>
+endobj
+14 0 obj
+<< /Type /Font
+/Subtype /Type1
+/Name /F6
+/BaseFont /Times-Italic
+/Encoding /WinAnsiEncoding >>
+endobj
+15 0 obj
+<< /Type /Font
+/Subtype /Type1
+/Name /F5
+/BaseFont /Times-Roman
+/Encoding /WinAnsiEncoding >>
+endobj
+16 0 obj
+<< /Type /Font
+/Subtype /Type1
+/Name /F4
+/BaseFont /Helvetica-BoldOblique
+/Encoding /WinAnsiEncoding >>
+endobj
+17 0 obj
+<< /Length 2828 >>
+stream
+BT
+1 0 0 1 80.0 717.0 Tm
+/F3 24 Tf
+1 0 0 1 184.996 704.568 Tm (INVITATION) Tj
+/F6 12 Tf
+1 0 0 1 80.0 671.004 Tm (To:) Tj
+/F5 12 Tf
+1 0 0 1 136.7 671.004 Tm (Anna,) Tj
+1 0 0 1 168.692 671.004 Tm (Bernard,) Tj
+1 0 0 1 213.344 671.004 Tm (Didier,) Tj
+1 0 0 1 250.004 671.004 Tm (Johanna) Tj
+/F6 12 Tf
+1 0 0 1 80.0 657.804 Tm (When:) Tj
+/F5 12 Tf
+1 0 0 1 136.7 657.804 Tm (Next) Tj
+1 0 0 1 163.028 657.804 Tm (Friday) Tj
+1 0 0 1 197.36 657.804 Tm (Evening) Tj
+1 0 0 1 240.356 657.804 Tm (at) Tj
+1 0 0 1 252.02 657.804 Tm (8) Tj
+1 0 0 1 261.02 657.804 Tm (pm) Tj
+/F6 12 Tf
+1 0 0 1 80.0 644.604 Tm (Venue:) Tj
+/F5 12 Tf
+1 0 0 1 136.7 644.604 Tm (The) Tj
+1 0 0 1 158.36 644.604 Tm (Web) Tj
+1 0 0 1 184.016 644.604 Tm (Cafe) Tj
+/F6 12 Tf
+1 0 0 1 80.0 631.404 Tm (Occasion:) Tj
+/F5 12 Tf
+1 0 0 1 136.7 631.404 Tm (My) Tj
+1 0 0 1 156.368 631.404 Tm (first) Tj
+1 0 0 1 178.7 631.404 Tm (XML) Tj
+1 0 0 1 208.364 631.404 Tm (baby) Tj
+1 0 0 1 80.0 606.204 Tm (I) Tj
+1 0 0 1 86.996 606.204 Tm (would) Tj
+1 0 0 1 119.996 606.204 Tm (like) Tj
+1 0 0 1 140.996 606.204 Tm (to) Tj
+1 0 0 1 153.332 606.204 Tm (invite) Tj
+1 0 0 1 183.668 606.204 Tm (you) Tj
+1 0 0 1 204.668 606.204 Tm (all) Tj
+1 0 0 1 219.668 606.204 Tm (to) Tj
+1 0 0 1 232.004 606.204 Tm (celebrate) Tj
+1 0 0 1 278.312 606.204 Tm (the) Tj
+1 0 0 1 295.976 606.204 Tm (birth) Tj
+1 0 0 1 321.644 606.204 Tm (of) Tj
+/F6 12 Tf
+1 0 0 1 334.64 606.204 Tm (Invitation) Tj
+/F5 12 Tf
+1 0 0 1 381.308 606.204 Tm (,) Tj
+1 0 0 1 387.308 606.204 Tm (my) Tj
+1 0 0 1 405.644 606.204 Tm (first) Tj
+1 0 0 1 80.0 593.004 Tm (XML) Tj
+1 0 0 1 109.664 593.004 Tm (document) Tj
+1 0 0 1 159.992 593.004 Tm (child.) Tj
+1 0 0 1 80.0 567.804 Tm (Please) Tj
+1 0 0 1 113.66 567.804 Tm (do) Tj
+1 0 0 1 128.66 567.804 Tm (your) Tj
+1 0 0 1 153.656 567.804 Tm (best) Tj
+1 0 0 1 175.988 567.804 Tm (to) Tj
+1 0 0 1 188.324 567.804 Tm (come) Tj
+1 0 0 1 217.316 567.804 Tm (and) Tj
+1 0 0 1 237.644 567.804 Tm (join) Tj
+1 0 0 1 259.316 567.804 Tm (me) Tj
+1 0 0 1 276.98 567.804 Tm (next) Tj
+1 0 0 1 300.644 567.804 Tm (Friday) Tj
+1 0 0 1 334.976 567.804 Tm (evening.) Tj
+1 0 0 1 378.968 567.804 Tm (And,) Tj
+1 0 0 1 405.632 567.804 Tm (do) Tj
+1 0 0 1 80.0 554.604 Tm (not) Tj
+1 0 0 1 98.336 554.604 Tm (forget) Tj
+1 0 0 1 129.992 554.604 Tm (to) Tj
+1 0 0 1 142.328 554.604 Tm (bring) Tj
+1 0 0 1 170.66 554.604 Tm (your) Tj
+1 0 0 1 195.656 554.604 Tm (friends.) Tj
+1 0 0 1 80.0 529.404 Tm (I) Tj
+/F6 12 Tf
+1 0 0 1 86.996 529.404 Tm (really) Tj
+/F5 12 Tf
+1 0 0 1 114.992 529.404 Tm () Tj
+1 0 0 1 117.992 529.404 Tm (look) Tj
+1 0 0 1 142.328 529.404 Tm (forward) Tj
+1 0 0 1 183.308 529.404 Tm (to) Tj
+1 0 0 1 195.644 529.404 Tm (see) Tj
+1 0 0 1 213.968 529.404 Tm (you) Tj
+1 0 0 1 234.968 529.404 Tm (soon!) Tj
+/F7 12 Tf
+1 0 0 1 355.02 504.288 Tm (From:) Tj
+1 0 0 1 390.672 504.288 Tm (Michel) Tj
+1 0 0 1 80.0 150.0 Tm
+ET
+
+endstream
+endobj
+18 0 obj
+<< /Type /Page
+/Parent 2 0 R
+/MediaBox [ 0 0 576 792 ]
+/Resources 4 0 R
+/Contents 17 0 R >>
+endobj
+xref
+0 19
+0000000000 65535 f
+0000000009 00000 n
+0000000058 00000 n
+0000000118 00000 n
+0000000174 00000 n
+0000000361 00000 n
+0000000473 00000 n
+0000000588 00000 n
+0000000695 00000 n
+0000000813 00000 n
+0000000924 00000 n
+0000001039 00000 n
+0000001145 00000 n
+0000001260 00000 n
+0000001369 00000 n
+0000001480 00000 n
+0000001590 00000 n
+0000001710 00000 n
+0000004590 00000 n
+trailer
+<<
+/Size 19
+/Root 1 0 R
+/Info 3 0 R
+>>
+startxref
+4698
+%%EOF
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invhtml.dsl b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invhtml.dsl
new file mode 100644
index 00000000000..6f4b7ac5b48
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invhtml.dsl
@@ -0,0 +1,90 @@
+<!DOCTYPE style-sheet PUBLIC "-//James Clark//DTD DSSSL Style-Sheet//EN">
+<style-sheet>
+<style-specification>
+<style-specification-body>
+(declare-flow-object-class element
+ "UNREGISTERED::James Clark//Flow Object Class::element")
+(declare-flow-object-class empty-element
+ "UNREGISTERED::James Clark//Flow Object Class::empty-element")
+(declare-flow-object-class document-type
+ "UNREGISTERED::James Clark//Flow Object Class::document-type")
+
+(define FontSize 12pt)
+(root
+ (make simple-page-sequence
+ left-margin: 25mm
+ page-width: 205mm
+ right-margin: 25mm
+ (make sequence
+ font-size: FontSize
+ line-spacing: FontSize
+ (make document-type
+ name: "HTML"
+ public-id: "-//W3C//DTD HTML 3.2//EN")
+ (make element gi: "HEAD"
+ (make element gi: "TITLE"
+ (literal "Invitation (XML to HTML transformation)"))
+ (make empty-element gi: "LINK"
+ attributes: (list (list "href" "invit.css")
+ (list "rel" "stylesheet")
+ (list "type" "text/css"))))
+ (make element gi: "BODY"
+ (make sequence
+ (make element gi: "H1"
+ (literal "INVITATION"))
+ (process-children))))))
+
+(element (front)
+ (make element gi: "TABLE"
+ attributes: (list (list "border" "5")
+ (list "frame" "hsides")
+ (list "rules" "none")
+ (list "width" "100%"))
+ (process-children)))
+(element (front date)
+ (make element gi: "TR"
+ (make sequence
+ (make element gi: "TD"
+ attributes: (list (list "class" "front"))
+ (literal "When: "))
+ (make element gi: "TD"
+ (process-children)))))
+(element (front to)
+ (make element gi: "TR"
+ (make sequence
+ (make element gi: "TD"
+ attributes: (list (list "class" "front"))
+ (literal "To: "))
+ (make element gi: "TD"
+ (process-children)))))
+(element (front where)
+ (make element gi: "TR"
+ (make sequence
+ (make element gi: "TD"
+ attributes: (list (list "class" "front"))
+ (literal "Venue: "))
+ (make element gi: "TD"
+ (process-children)))))
+(element (front why)
+ (make element gi: "TR"
+ (make sequence
+ (make element gi: "TD"
+ attributes: (list (list "class" "front"))
+ (literal "Occasion: "))
+ (make element gi: "TD"
+ (process-children)))))
+(element (body par)
+ (make element gi: "P"
+ (process-children)))
+(element emph
+ (make element gi: "EM"
+ (process-children)))
+(element (back signature)
+ (make element gi: "P"
+ attributes: (list (list "class" "signature"))
+ (make sequence
+ (literal "From: ")
+ (process-children))))
+</style-specification-body>
+</style-specification>
+</style-sheet>
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invhtml2.xsl b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invhtml2.xsl
new file mode 100644
index 00000000000..f2be578fc5d
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invhtml2.xsl
@@ -0,0 +1,42 @@
+<?xml version='1.0'?>
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+
+<xsl:output method="html"/>
+<xsl:preserve-space elements="*"/>
+
+<xsl:template match="invitation">
+<html>
+<head>
+<title> Invitation (XSL/CSS formatting) </title>
+<link href="invit.css" rel="stylesheet" type="text/css"/>
+<!-- 12 November 1998 mg -->
+</head>
+<body>
+<h1>INVITATION</h1>
+<table>
+<tbody>
+<tr><td class="front">To: </td>
+<td><xsl:value-of select="@to"/></td></tr>
+<tr><td class="front">When: </td>
+<td><xsl:value-of select="@date"/></td></tr>
+<tr><td class="front">Venue: </td>
+<td><xsl:value-of select="@where"/></td></tr>
+<tr><td class="front">Occasion: </td>
+<td><xsl:value-of select="@why"/></td></tr>
+</tbody>
+</table>
+<xsl:apply-templates/>
+<p class="signature"><xsl:value-of select="@signature"/></p>
+</body>
+</html>
+</xsl:template>
+
+<xsl:template match="par">
+<p><xsl:apply-templates/></p>
+</xsl:template>
+
+<xsl:template match="emph">
+<em><xsl:apply-templates/></em>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invit.css b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invit.css
new file mode 100644
index 00000000000..e28eb44d060
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invit.css
@@ -0,0 +1,31 @@
+/* CSS stylesheet for invitation1 in HTML */
+BODY {margin-top: 1em; /* global page parameters */
+ margin-bottom: 1em;
+ margin-left: 1em;
+ margin-right: 1em;
+ font-family: serif;
+ line-height: 1.1;
+ color: black;
+}
+H1 {text-align: center; /* for global title */
+ font-size: x-large;
+}
+P {text-align: justify; /* paragraphs in body */
+ margin-top: 1em;
+}
+TABLE { border-width: 0pt }
+TBODY { border-width: 0pt }
+TD[class="front"] { /* table data in front matter */
+ text-align: left;
+ font-weight: bold;
+}
+TD.front { /* table data in front matter */
+ text-align: left;
+ font-weight: bold;
+}
+EM {font-style: italic; /* emphasis in body */
+}
+P.signature { /* signature */
+ text-align: right;
+ font-weight: bold;
+}
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invitation.dsl b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invitation.dsl
new file mode 100644
index 00000000000..fb1da6b1647
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invitation.dsl
@@ -0,0 +1,66 @@
+<!DOCTYPE style-sheet PUBLIC "-//James Clark//DTD DSSSL Style-Sheet//EN">
+<style-sheet>
+<style-specification>
+<style-specification-body>
+(define FontSize 12pt)
+(root
+ (make simple-page-sequence
+ left-margin: 25mm
+ page-width: 205mm
+ right-margin: 25mm
+ (make scroll
+ font-size: FontSize
+ line-spacing: FontSize
+ (process-children)
+ )
+ )
+)
+(element (front date)
+ (make paragraph
+ (literal "When: ")
+ (process-children)
+ )
+)
+(element (front to)
+ (make paragraph
+ (literal "To: ")
+ (process-children)
+ )
+)
+(element (front where)
+ (make paragraph
+ (literal "Venue: ")
+ (process-children)
+ )
+)
+(element (front why)
+ (make paragraph
+ (literal "Occasion: ")
+ (process-children)
+ )
+)
+(element (body par)
+ (make paragraph
+ quadding: 'justify
+ font-size: FontSize
+ space-before: FontSize
+ (process-children)
+ )
+)
+(element emph
+ (make sequence
+ font-posture: 'italic
+ (process-children)
+ )
+)
+(element (back signature)
+ (make paragraph
+ quadding: 'justify
+ space-before: FontSize
+ (literal "From: ")
+ (process-children)
+ )
+)
+</style-specification-body>
+</style-specification>
+</style-sheet>
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invitation.dtd b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invitation.dtd
new file mode 100644
index 00000000000..ec74933693d
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invitation.dtd
@@ -0,0 +1,12 @@
+<!-- invitation DTD -->
+<!ELEMENT invitation (front, body, back) >
+<!ELEMENT front (to, date, where, why?) >
+<!ELEMENT date (#PCDATA) >
+<!ELEMENT to (#PCDATA) >
+<!ELEMENT where (#PCDATA) >
+<!ELEMENT why (#PCDATA) >
+<!ELEMENT body (par+) >
+<!ELEMENT par (#PCDATA|emph)* >
+<!ELEMENT emph (#PCDATA) >
+<!ELEMENT back (signature) >
+<!ELEMENT signature (#PCDATA) >
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invitation.sty b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invitation.sty
new file mode 100644
index 00000000000..d01bf822bc3
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invitation.sty
@@ -0,0 +1,30 @@
+% invitation.sty
+% Package to format invitation.xml
+\setlength{\parskip}{1ex}
+\setlength{\parindent}{0pt}
+\pagestyle{empty}%% Turn off page numbering
+\RequirePackage{array}
+\newenvironment{Front}%
+ {\begin{center}\huge \sffamily Memorandum\end{center}
+ \begin{flushleft}
+ \begin{tabular}{@{}>{\bfseries}p{.2\linewidth}@{}p{.8\linewidth}@{}}\hline
+ }
+ {To whom: & \@To \\
+ Occasion: & \@Why \\
+ Venue: & \@Where \\
+ When: & \@Date \\\hline
+ \end{tabular}
+ \end{flushleft}
+ }
+\newenvironment{Body}{\vspace*{\parskip}}{\vspace*{\parskip}}
+\newenvironment{Back}
+ {\begin{flushleft}}
+ {\hspace*{.5\linewidth}\fbox{\emph{\@Sig}}
+ \end{flushleft}
+ }
+\newcommand{\To}[1]{\gdef\@To{#1}}
+\newcommand{\Date}[1]{\gdef\@Date{#1}}
+\newcommand{\Where}[1]{\gdef\@Where{#1}}
+\newcommand{\Why}[1]{\gdef\@Why{#1}}
+\newcommand{\Signature}[1]{\gdef\@Sig{#1}}
+\endinput \ No newline at end of file
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invitation.tex.save b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invitation.tex.save
new file mode 100644
index 00000000000..12ae67767f5
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invitation.tex.save
@@ -0,0 +1,27 @@
+\documentclass[]{article}
+\usepackage{invitation}
+\begin{document}
+\begin{Front}
+\To{Anna, Bernard, Didier, Johanna}
+\Date{Next Friday Evening at 8 pm}
+\Where{The Web Cafe}
+\Why{My first XML baby}
+\end{Front}
+\begin{Body}
+\par
+I would like to invite you all to celebrate
+the birth of \emph{Invitation}, my
+first XML document child.
+
+\par
+Please do your best to come and join me next Friday
+evening. And, do not forget to bring your friends.
+
+\par
+I \emph{really} look forward to see you soon!
+
+\end{Body}
+\begin{Back}
+\Signature{Michel}
+\end{Back}
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invitation.xml b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invitation.xml
new file mode 100644
index 00000000000..2153fc3dc82
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invitation.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0"?>
+<!DOCTYPE invitation SYSTEM "invitation.dtd">
+<invitation>
+<!-- ++++ The header part of the document ++++ -->
+<front>
+<to>Anna, Bernard, Didier, Johanna</to>
+<date>Next Friday Evening at 8 pm</date>
+<where>The Web Cafe</where>
+<why>My first XML baby</why>
+</front>
+<!-- +++++ The main part of the document +++++ -->
+<body>
+<par>I would like to invite you all to celebrate
+the birth of <emph>Invitation</emph>, my
+first XML document child.</par>
+<par>Please do your best to come and join me next Friday
+evening. And, do not forget to bring your friends.</par>
+<par>I <emph>really</emph> look forward to see you soon!</par>
+</body>
+<!-- +++ The closing part of the document ++++ -->
+<back>
+<signature>Michel</signature>
+</back>
+</invitation>
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invitation1.tex b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invitation1.tex
new file mode 100644
index 00000000000..a59c337cf54
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invitation1.tex
@@ -0,0 +1,22 @@
+\documentclass[12pt]{article}
+\usepackage{invitation}
+\begin{document}
+\begin{Front}
+\To{Anna, Bernard, Didier, Johanna}
+\Date{Next Friday Evening at 8 pm}
+\Where{The Web Cafe}
+\Why{My first XML baby}
+\end{Front}
+\begin{Body}
+
+\par I would like to invite you all to celebrate
+the birth of \emph{Invitation}, my
+first XML document child.
+\par Please do your best to come and join me next Friday
+evening. And, do not forget to bring your friends.
+\par I \emph{really} look forward to see you soon!
+\end{Body}
+\begin{Back}
+\Signature{Michel}
+\end{Back}
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invitation2.dtd b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invitation2.dtd
new file mode 100644
index 00000000000..c9a136de64c
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invitation2.dtd
@@ -0,0 +1,15 @@
+<!-- invitation2 DTD -->
+<!-- August 14th 1998 mg -->
+<!ENTITY % i18n "xml:lang NMTOKEN #IMPLIED">
+<!ELEMENT invitation (par+)>
+<!ATTLIST invitation
+ %i18n;
+ date CDATA #REQUIRED
+ to CDATA #REQUIRED
+ signature CDATA #REQUIRED
+ where CDATA #REQUIRED
+ why CDATA #IMPLIED
+>
+<!ELEMENT par (#PCDATA|emph)*>
+<!ELEMENT emph (#PCDATA)>
+
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invitation2.html b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invitation2.html
new file mode 100644
index 00000000000..ba38c18495f
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invitation2.html
@@ -0,0 +1,39 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html>
+<head>
+<title> Invitation (XSL/CSS formatting) </title>
+<link href="invit.css" rel="stylesheet" type="text/css">
+</head>
+<body>
+<h1>INVITATION</h1>
+<table>
+<tbody>
+<tr>
+<td class="front">To: </td><td>Anna, Bernard, Didier, Johanna</td>
+</tr>
+<tr>
+<td class="front">When: </td><td>Next Friday Evening at 8 pm</td>
+</tr>
+<tr>
+<td class="front">Venue: </td><td>The Web Cafe</td>
+</tr>
+<tr>
+<td class="front">Occasion: </td><td>My first XML baby</td>
+</tr>
+</tbody>
+</table>
+<p>
+I would like to invite you all to celebrate
+the birth of <em>Invitation</em>, my
+first XML document child.
+</p>
+<p>
+Please do your best to come and join me next Friday
+evening. And, do not forget to bring your friends.
+</p>
+<p>
+I <em>really</em> look forward to see you soon!
+</p>
+<p class="signature">Michel</p>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invitation2.xml b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invitation2.xml
new file mode 100644
index 00000000000..1057637e730
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invitation2.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0"?>
+<!DOCTYPE invitation SYSTEM "invitation2.dtd">
+<invitation to="Anna, Bernard, Didier, Johanna"
+ date="Next Friday Evening at 8 pm"
+ where="The Web Cafe"
+ why="My first XML baby"
+ signature="Michel"
+>
+<par>
+I would like to invite you all to celebrate
+the birth of <emph>Invitation</emph>, my
+first XML document child.
+</par>
+<par>
+Please do your best to come and join me next Friday
+evening. And, do not forget to bring your friends.
+</par>
+<par>
+I <emph>really</emph> look forward to see you soon!
+</par>
+</invitation>
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invitationfr.sty b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invitationfr.sty
new file mode 100644
index 00000000000..e401c6b3ed5
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invitationfr.sty
@@ -0,0 +1,49 @@
+% invitation.sty
+% Package to format invitation.xml
+\setlength{\textwidth}{22pc}
+\setlength{\parskip}{1ex}
+\setlength{\parindent}{0pt}
+\pagestyle{empty}%% Turn off page numbering
+\RequirePackage{array,calc}
+\newcommand{\ToTitle}{To whom}
+\newcommand{\WhyTitle}{Occasion}
+\newcommand{\WhereTitle}{Venue}
+\newcommand{\DateTitle}{When}
+\newcommand{\SignatureTitle}{From}
+\DeclareOption{francais}{% French text for fixed texts
+ \renewcommand{\ToTitle}{À}
+ \renewcommand{\WhyTitle}{À l'occasion de}
+ \renewcommand{\WhereTitle}{Où}
+ \renewcommand{\DateTitle}{Quand}
+ \renewcommand{\SignatureTitle}{De la part de}}
+\newenvironment{Front}%
+ {\begin{center}
+ \Huge\sffamily INVITATION
+ \end{center}
+ }
+ {\begin{flushleft}
+ \rule{\linewidth}{1pt}\\[2mm]
+ \begin{tabular}{@{}>{\bfseries}ll@{}}
+ \ToTitle: & \@To \\
+ \WhyTitle: & \@Why \\
+ \WhereTitle: & \@Where \\
+ \DateTitle: & \@Date
+ \end{tabular}\\[2mm]
+ \rule{\linewidth}{1pt}
+ \end{flushleft}
+ }
+\newenvironment{Body}{\vspace*{\parskip}}{\vspace*{\parskip}}
+\newenvironment{Back}
+ {\begin{flushleft}}
+ {\hspace*{.5\linewidth}\fbox{\SignatureTitle: \emph{\@Sig}}
+ \end{flushleft}
+ }
+\newcommand{\To}[1]{\gdef\@To{#1}}
+\newcommand{\Date}[1]{\gdef\@Date{#1}}
+\newcommand{\Where}[1]{\gdef\@Where{#1}}
+\newcommand{\Why}[1]{\gdef\@Why{#1}}
+\newcommand{\Signature}[1]{\gdef\@Sig{#1}}
+
+\ProcessOptions
+
+\endinput
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invlat1.xsl b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invlat1.xsl
new file mode 100644
index 00000000000..e9d548faac2
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invlat1.xsl
@@ -0,0 +1,66 @@
+<?xml version='1.0'?>
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+
+<xsl:output method="text" indent="no" encoding="ISO-8859-1"/>
+
+<xsl:strip-space elements="*"/>
+
+<xsl:template match="invitation">
+<xsl:text>\documentclass[12pt]{article}
+\usepackage{invitation}
+\begin{document}
+</xsl:text>
+<xsl:apply-templates/>
+<xsl:text>\end{document}
+</xsl:text>
+</xsl:template>
+
+<xsl:template match="front">
+<xsl:text>\begin{Front}
+\To{</xsl:text>
+<xsl:value-of select="to"/>
+<xsl:text>}
+\Date{</xsl:text>
+<xsl:value-of select="date"/>
+<xsl:text>}
+\Where{</xsl:text>
+<xsl:value-of select="where"/>
+<xsl:text>}
+\Why{</xsl:text>
+<xsl:value-of select="why"/>
+<xsl:text>}
+\end{Front}
+</xsl:text>
+</xsl:template>
+
+<xsl:template match="body">
+<xsl:text>\begin{Body}
+</xsl:text>
+ <xsl:apply-templates/>
+<xsl:text>
+\end{Body}
+</xsl:text>
+</xsl:template>
+
+<xsl:template match="par">
+<xsl:text>
+\par </xsl:text>
+<xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="emph">
+<xsl:text>\emph{</xsl:text>
+<xsl:apply-templates/>
+<xsl:text>}</xsl:text>
+</xsl:template>
+
+<xsl:template match="back">
+<xsl:text>\begin{Back}
+\Signature{</xsl:text>
+<xsl:value-of select="signature"/>
+<xsl:text>}
+\end{Back}
+</xsl:text>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invptex.pdf b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invptex.pdf
new file mode 100644
index 00000000000..f4df36f840c
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invptex.pdf
Binary files differ
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invtab1.dsl b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invtab1.dsl
new file mode 100644
index 00000000000..3d7afc7d5ba
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invtab1.dsl
@@ -0,0 +1,82 @@
+<!DOCTYPE style-sheet PUBLIC "-//James Clark//DTD DSSSL Style-Sheet//EN">
+<style-sheet>
+<style-specification>
+<style-specification-body>
+
+(define FontSize 12pt)
+
+(root
+ (make simple-page-sequence
+ left-margin: 2cm
+ page-width: 15cm
+ right-margin: 2cm
+ (make scroll
+ font-size: FontSize
+ (process-children))))
+
+(element front
+ (make sequence
+ (make paragraph
+ quadding: 'center
+ space-before: 20pt
+ font-weight: 'bold
+ font-size: 24pt
+ (literal "INVITATION"))
+ (make table
+ table-border: #f ; no border
+ display-alignment: 'start
+ space-before: 20pt
+ (make table-part
+ (make table-column width: 25mm)
+ (make table-column width: 10cm)
+ (process-children)))))
+(element (front date)
+ (make table-row
+ (make table-cell
+ (make paragraph quadding: 'start
+ (literal "When:")))
+ (make table-cell
+ (process-children))))
+(element (front to)
+ (make table-row
+ (make table-cell
+ (make paragraph quadding: 'start
+ (literal "To:")))
+ (make table-cell
+ (process-children))))
+(element (front where)
+ (make table-row
+ (make table-cell
+ (make paragraph quadding: 'start
+ (literal "Venue:")))
+ (make table-cell
+ (process-children))))
+(element (front why)
+ (make table-row
+ (make table-cell
+ (make paragraph quadding: 'start
+ (literal "Occasion:")))
+ (make table-cell
+ (process-children))))
+
+(element (body par)
+ (make paragraph
+ quadding: 'justify
+ font-size: FontSize
+ space-before: FontSize
+ (process-children)))
+(element emph
+ (make sequence
+ font-posture: 'italic
+ (process-children)))
+
+(element (back signature)
+ (make paragraph
+ quadding: 'end
+ space-before: FontSize
+ (literal "From: ")
+ (process-children)))
+
+</style-specification-body>
+</style-specification>
+</style-sheet>
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invtab2.dsl b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invtab2.dsl
new file mode 100644
index 00000000000..eac8c01392e
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invtab2.dsl
@@ -0,0 +1,75 @@
+<!DOCTYPE style-sheet PUBLIC "-//James Clark//DTD DSSSL Style-Sheet//EN">
+<style-sheet>
+<style-specification>
+<style-specification-body>
+(define FontSize 12pt)
+(root
+ (make simple-page-sequence
+ left-margin: 1cm
+ page-width: 10cm
+ right-margin: 1cm
+ (make scroll
+ font-size: FontSize
+ (process-children))))
+(element invitation
+ (make sequence
+ (make paragraph
+ quadding: 'center
+ space-before: 20pt
+ font-weight: 'bold
+ font-size: 24pt
+ (literal "INVITATION"))
+ (make table
+ table-border: #f ; no border
+ display-alignment: 'start
+ space-before: 20pt
+ (make table-part
+ (make table-column width: 25mm)
+ (make table-column width: 10cm)
+ (make table-row
+ (make table-cell
+ (make paragraph quadding: 'start
+ (literal "When:")))
+ (make table-cell
+ (make paragraph quadding: 'start
+ (literal (attribute-string "date")))))
+ (make table-row
+ (make table-cell
+ (make paragraph quadding: 'start
+ (literal "To:")))
+ (make table-cell
+ (make paragraph quadding: 'start
+ (literal (attribute-string "to")))))
+ (make table-row
+ (make table-cell
+ (make paragraph quadding: 'start
+ (literal "Venue:")))
+ (make table-cell
+ (make paragraph quadding: 'start
+ (literal (attribute-string "where")))))
+ (make table-row
+ (make table-cell
+ (make paragraph quadding: 'start
+ (literal "Occasion:")))
+ (make table-cell
+ (make paragraph quadding: 'start
+ (literal (attribute-string "why")))))))
+ (process-children)
+ (make paragraph
+ quadding: 'end
+ space-before: FontSize
+ (literal "From: "
+ (attribute-string "signature")))))
+(element par
+ (make paragraph
+ quadding: 'justify
+ font-size: FontSize
+ space-before: FontSize
+ (process-children-trim)))
+(element emph
+ (make sequence
+ font-posture: 'italic
+ (process-children-trim)))
+</style-specification-body>
+</style-specification>
+</style-sheet>
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/isotab1to2-bis.xsl b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/isotab1to2-bis.xsl
new file mode 100644
index 00000000000..b014c04a326
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/isotab1to2-bis.xsl
@@ -0,0 +1,22 @@
+<?xml version='1.0' encoding="ISO-8859-1"?>
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+
+<xsl:output method="xml" encoding="ISO-8859-1"/>
+
+<xsl:template match="countries">
+ <xsl:copy>
+ <xsl:apply-templates/>
+ </xsl:copy><xsl:text>&#xa;</xsl:text>
+</xsl:template>
+
+<xsl:template match="country">
+ <xsl:copy>
+ <xsl:for-each select="*">
+ <xsl:attribute name="{name(.)}">
+ <xsl:value-of select="."/>
+ </xsl:attribute>
+ </xsl:for-each>
+ </xsl:copy>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/isotab1to2.xsl b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/isotab1to2.xsl
new file mode 100644
index 00000000000..4ecc4150d66
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/isotab1to2.xsl
@@ -0,0 +1,42 @@
+<?xml version='1.0' encoding="ISO-8859-1"?>
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+
+<xsl:output method="xml" encoding="ISO-8859-1"/>
+
+<xsl:template match="/">
+ <xsl:element name="countries"><xsl:text>&#xA;</xsl:text>
+ <xsl:for-each select="countries/country">
+ <xsl:element name="country">
+ <xsl:attribute name="shortname">
+ <xsl:value-of select="shortname"/>
+ </xsl:attribute>
+ <xsl:attribute name="fullname">
+ <xsl:value-of select="fullname"/>
+ </xsl:attribute>
+ <xsl:attribute name="isocountry">
+ <xsl:value-of select="isocountry"/>
+ </xsl:attribute>
+ <xsl:attribute name="capital">
+ <xsl:value-of select="capital"/>
+ </xsl:attribute>
+ <xsl:attribute name="citizen">
+ <xsl:value-of select="citizen"/>
+ </xsl:attribute>
+ <xsl:attribute name="adjective">
+ <xsl:value-of select="adjective"/>
+ </xsl:attribute>
+ <xsl:attribute name="currency">
+ <xsl:value-of select="currency"/>
+ </xsl:attribute>
+ <xsl:attribute name="isocurrency">
+ <xsl:value-of select="isocurrency"/>
+ </xsl:attribute>
+ <xsl:attribute name="currensubunit">
+ <xsl:value-of select="currensubunit"/>
+ </xsl:attribute>
+ </xsl:element><xsl:text>&#xA;</xsl:text>
+ </xsl:for-each>
+ </xsl:element><xsl:text>&#xA;</xsl:text>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/isotabexa1.xsl b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/isotabexa1.xsl
new file mode 100644
index 00000000000..57e2152ba22
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/isotabexa1.xsl
@@ -0,0 +1,20 @@
+<?xml version='1.0' encoding="ISO-8859-1"?>
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+
+<xsl:output method="text" encoding="ISO-8859-1"/>
+
+<xsl:template match="/countries">
+ <xsl:for-each select="country">
+ <xsl:sort select="@capital"/>
+ <xsl:if test="(@capital != '-') and (@capital != ' ')">
+ <xsl:value-of select="@capital"/>
+ <xsl:text> is the capital of </xsl:text>
+ <xsl:value-of select="@shortname"/>
+ <xsl:text> (ISO-code </xsl:text>
+ <xsl:value-of select="@isocountry"/>
+ <xsl:text>)&#xA;</xsl:text><!-- new line -->
+ </xsl:if>
+ </xsl:for-each>
+</xsl:template>
+
+</xsl:stylesheet> \ No newline at end of file
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/isotabexa2.xsl b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/isotabexa2.xsl
new file mode 100644
index 00000000000..38ad5aa33e0
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/isotabexa2.xsl
@@ -0,0 +1,73 @@
+<?xml version='1.0' encoding="ISO-8859-1"?>
+<xsl:stylesheet version="1.0"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:date="http://www.jclark.com/xt/java/java.util.Date"
+ xmlns:xt="http://www.jclark.com/xt"
+ extension-element-prefixes="xt">
+
+<xsl:template match="/">
+ <xsl:call-template name="newfile">
+ <xsl:with-param name="abc" select="'ABCDEFGHIJKLMNOPQRSTUVWXYZ'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template name="newfile">
+ <xsl:param name="abc" />
+ <xsl:variable name="letter" select="substring($abc,1,1)" />
+ <xsl:variable name="file" select="concat($letter,'-currency.txt')"/>
+ <xt:document method="text" href="{$file}" encoding="ISO-8859-1">
+ <xsl:for-each select="//country[starts-with(isocurrency, $letter)]">
+ <xsl:sort select="shortname"/>
+ <xsl:sort select="currency"/>
+ <xsl:variable name="Currency" select="normalize-space(string(currency))"/>
+ <xsl:if test="($Currency != '-') and ($Currency != '')">
+ <xsl:text>The </xsl:text>
+ <xsl:value-of select="currency"/>
+ <xsl:text> is used by </xsl:text>
+ <xsl:variable name="L1" select="substring(citizen,1,1)"/>
+ <xsl:choose>
+ <xsl:when test="$L1 = 'A' or $L1 = 'E' or $L1 = 'I' or
+ $L1 = 'O' or $L1 = 'U'">
+ <xsl:text>an </xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>a </xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:value-of select="citizen"/>
+ <xsl:text> living in </xsl:text>
+ <xsl:value-of select="shortname"/>
+ <xsl:text>.&#xA;</xsl:text><!-- new line -->
+ </xsl:if>
+ </xsl:for-each>
+ <xsl:call-template name="footer"/>
+ </xt:document>
+
+ <xsl:if test="string-length($abc) != 1">
+ <xsl:call-template name="newfile">
+ <xsl:with-param name="abc" select="substring($abc, 2)" />
+ </xsl:call-template>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template name="footer">
+ <xsl:text>Last modification : Michel Goossens, </xsl:text>
+ <xsl:choose>
+ <xsl:when test="function-available('date:to-string') and
+ function-available('date:new')">
+ <!-- date format : Fri Dec 31 23:59:59 PDT 1999 -->
+ <!-- 1234567890123456789012345678 -->
+ <xsl:variable name="datetemp" select="date:to-string(date:new())"/>
+ <xsl:variable name="month" select="substring($datetemp,5,3)"/>
+ <xsl:variable name="day" select="substring($datetemp,9,2)"/>
+ <xsl:variable name="year" select="substring($datetemp,string-length($datetemp)-3,4)"/>
+ <xsl:variable name="Date" select="concat($day,' ',$month,'. ',$year)"/>
+ <xsl:value-of select="$Date"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>11 Nov. 1999</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/sectionexa.xml b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/sectionexa.xml
new file mode 100644
index 00000000000..9d73bc1793a
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/sectionexa.xml
@@ -0,0 +1,22 @@
+<article>
+ <title>This is the article's title</title>
+ <author>Michel Goossens</author>
+ <author>Sebastian Rahtz</author>
+ <abstract>A <emph>short</emph> description of the contents</abstract>
+ <section sectid="S1">
+ <stitle>First section title</stitle>
+ <par ident="first">The first paragraph for this section.</par>
+ <par ident="normal">A normal paragraph with <emph>emphasised</emph> text.</par>
+ <par>Here we have <emph>no</emph> attribute.</par>
+ <par ident="last">This is the end of the section.</par>
+ </section>
+ <section sectid="S2">
+ <stitle>Second section title</stitle>
+ <par ident="first">The first paragraph for this section.</par>
+ <par>Here we <emph>also</emph> have <emph>no</emph> attribute.</par>
+ <par ident="normal" id="special">A normal paragraph with
+ <emph>emphasised</emph> text.</par>
+ <par>Another attribute-less paragraph.</par>
+ <par ident="last">This is the end of the section.</par>
+ </section>
+</article>
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/sectionexa.xsl b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/sectionexa.xsl
new file mode 100644
index 00000000000..e9029d4aa0a
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/sectionexa.xsl
@@ -0,0 +1,73 @@
+<?xml version='1.0'?>
+<xsl:stylesheet
+ version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ result-ns="">
+<xsl:template match="/">
+ <xsl:text>(*root*)</xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>(/*root*)</xsl:text>
+</xsl:template>
+<xsl:template match="*" priority="-1">
+ <xsl:text>(*)</xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>(/*)</xsl:text>
+</xsl:template>
+<xsl:template match="par">
+ <xsl:text>(T1)</xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>(/T1)</xsl:text>
+</xsl:template>
+<xsl:template match="par[@ident]" priority="1">
+ <xsl:text>(T2)</xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>(/T2)</xsl:text>
+</xsl:template>
+<xsl:template match="par[@ident='first']" priority="2">
+ <xsl:text>(T3)</xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>(/T3)</xsl:text>
+</xsl:template>
+<xsl:template match="section[@sectid='S2']
+ /par[@ident='normal' and @id='special']" priority="3">
+ <xsl:text>(T4)</xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>(/T4)</xsl:text>
+</xsl:template>
+<xsl:template match="section[position()=last()]">
+ <xsl:text>(P1)</xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>(/P1)</xsl:text>
+</xsl:template>
+<xsl:template match="section[position()>1]/par[position()=1]" priority="3">
+ <xsl:text>(P2)</xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>(/P2)</xsl:text>
+</xsl:template>
+<xsl:template match="author">
+ <xsl:text>(A1)</xsl:text>
+ <xsl:text>author 1: </xsl:text>
+ <xsl:text>(/A1)</xsl:text>
+ <xsl:apply-templates/>
+</xsl:template>
+<xsl:template match="author[position()=last()]" priority="1">
+ <xsl:text>(A2)</xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>(/A2)</xsl:text>
+</xsl:template>
+<xsl:template
+ match="stitle[contains(text(),'First')]" priority="1">
+ <xsl:text>(WD)</xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>(/WD)</xsl:text>
+</xsl:template>
+<xsl:template match="emph[position()=1 and position()=last()]" priority="2">
+ <xsl:text>(E1)</xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>(/E1)</xsl:text>
+</xsl:template>
+<xsl:template match="emph[not(position()=1 and position()=last())]" priority="2">
+ <xsl:text>(E2)</xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>(/E2)</xsl:text>
+</xsl:template>
+</xsl:stylesheet>
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/sgmlspl.pl b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/sgmlspl.pl
new file mode 100644
index 00000000000..c91a6cb004f
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/sgmlspl.pl
@@ -0,0 +1,317 @@
+#!/usr/bin/perl
+########################################################################
+# sgmlspl: a simple SGML postprocesser for the SGMLS and NSGMLS
+# parsers (requires SGMLS.pm library).
+#
+# Copyright (c) 1995 by David Megginson <dmeggins@aix1.uottawa.ca>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+#
+# $Log: sgmlspl.pl,v $
+# Revision 1.8 1995/12/03 21:46:31 david
+# Eliminated all use of the SGMLS_Event::key method.
+#
+# Revision 1.7 1995/11/15 20:22:24 david
+# Changed "use Output" to "use SGMLS::Output". Qualified the STDIN
+# filehandle for the SGMLS object with the main:: package name.
+#
+# Revision 1.6 1995/08/12 16:15:14 david
+# Revised version for 1.01 distribution.
+#
+# Revision 1.5 1995/04/27 11:52:25 david
+# Changed 'print' to 'main::output' for re handler; empty string
+# translates into an empty sub {} rather than a sub printing an empty
+# string; instead of evaluating every argument as a perl script, take
+# only the first as a perl script and the rest as its arguments; allow
+# empty scripts or scripts which do not end with '1;'; pass the event
+# itself as the second argument to each handler, after the event data.
+#
+# Revision 1.4 1995/04/23 14:44:58 david
+# Use the Output package. Fixed the $version variable.
+#
+# Revision 1.3 1995/04/22 21:02:49 david
+# Added some missing 'last SWITCH;' statements in the sgmls function.
+#
+# Revision 1.2 1995/04/22 20:58:48 david
+# Added $SGMLS_PL::version variable and changed SDATA notation from
+# [SDATA] to |SDATA|.
+#
+# Revision 1.1 1995/04/22 14:40:50 david
+# Initial revision
+#
+########################################################################
+
+use SGMLS::Output;
+
+package SGMLS_PL;
+use SGMLS;
+
+$version = '$Id: sgmlspl.pl,v 1.8 1995/12/03 21:46:31 david Exp $';
+
+#
+# Set up handler defaults.
+#
+$start_document_handler = sub {};
+$end_document_handler = sub {};
+$start_element_handlers = { '' => sub {} };
+$end_element_handlers = { '' => sub {} };
+$cdata_handler = sub { main::output($_[0]); };
+$sdata_handlers = { '' => sub { main::output($_[0]);} };
+$re_handler = sub { main::output("\n"); };
+$pi_handler = sub { '' => sub {} };
+$entity_handlers = { '' => sub {} };
+$start_subdoc_handlers = { '' => sub {} };
+$end_subdoc_handlers = { '' => sub {} };
+$conforming_handler = sub {};
+
+#
+# Main access point: declare handlers for different SGML events.
+#
+# Usage: sgml(event, handler);
+#
+# The event may be one of the following strings, or a special pattern.
+# The generic events are as follow:
+#
+# 'start' The beginning of the document.
+# 'end' The end of the document.
+# 'start_element' The beginning of an element.
+# 'end_element' The end of an element.
+# 'cdata' Regular character data.
+# 'sdata' Special system-specific data.
+# 're' A record-end.
+# 'pi' A processing instruction.
+# 'entity' An external-entity reference.
+# 'start_subdoc' The beginning of a subdocument entity.
+# 'end_subdoc' The end of a subdocument entity.
+# 'conforming' The document is conforming.
+#
+# In addition to these generic events, it is possible to handlers
+# for certain specific, named events, as follow:
+#
+# '<GI>' The beginning of element GI.
+# '</GI>' The end of element GI.
+# '[SDATA]' The system-specific data SDATA.
+# '&ENAME;' A reference to the external entity ENAME.
+# '{ENAME}' The beginning of the subdocument-entity ENAME.
+# '{/ENAME}' The end of the subdocument-entity ENAME.
+#
+#
+# The handler may be a string, which will simply be printed when the
+# event occurs (this is usually useful only for the specific, named
+# events), or a reference to an anonymous subroutine, which will
+# receive two arguments: the event data and the event itself. For
+# example,
+#
+# sgml('<FOO>', "\n\\begin{foo}\n");
+#
+# and
+#
+# sgml('<FOO>', sub { output("\n\\begin{foo}\n"); });
+#
+# will have identical results.
+#
+sub main::sgml {
+ my ($spec,$handler) = (@_);
+ if (ref($handler) ne 'CODE') {
+ $handler =~ s/\\/\\\\/g;
+ $handler =~ s/'/\\'/g;
+ if ($handler eq '') {
+ $handler = sub {};
+ } else {
+ $handler = eval "sub { main::output('$handler'); };";
+ }
+ }
+ SWITCH: {
+ # start-document handler
+ $spec eq 'start' && do {
+ $start_document_handler = $handler;
+ last SWITCH;
+ };
+ # end-document handler
+ $spec eq 'end' && do {
+ $end_document_handler = $handler;
+ last SWITCH;
+ };
+ # start-element handler
+ $spec =~ /^<([^\/].*|)>$/ && do {
+ $start_element_handlers->{$1} = $handler;
+ last SWITCH;
+ };
+ # generic start-element handler
+ $spec eq 'start_element' && do {
+ $start_element_handlers->{''} = $handler;
+ last SWITCH;
+ };
+ # end-element handler
+ $spec =~ /^<\/(.*)>$/ && do {
+ $end_element_handlers->{$1} = $handler;
+ last SWITCH;
+ };
+ # generic end-element handler
+ $spec =~ 'end_element' && do {
+ $end_element_handlers->{''} = $handler;
+ last SWITCH;
+ };
+ # cdata handler
+ $spec eq 'cdata' && do {
+ $cdata_handler = $handler;
+ last SWITCH;
+ };
+ # sdata handler
+ $spec =~ /^\|(.*)\|$/ && do {
+ $sdata_handlers->{$1} = $handler;
+ last SWITCH;
+ };
+ # generic sdata handler
+ $spec eq 'sdata' && do {
+ $sdata_handlers->{''} = $handler;
+ last SWITCH;
+ };
+ # record-end handler
+ $spec eq 're' && do {
+ $re_handler = $handler;
+ last SWITCH;
+ };
+ # processing-instruction handler
+ $spec eq 'pi' && do {
+ $pi_handler = $handler;
+ last SWITCH;
+ };
+ # entity-reference handler
+ $spec =~ /^\&(.*);$/ && do {
+ $entity_handlers->{$1} = $handler;
+ last SWITCH;
+ };
+ # generic entity-reference handler
+ $spec eq 'entity' && do {
+ $entity_handlers->{''} = $handler;
+ last SWITCH;
+ };
+ # start-subdoc handler
+ $spec =~ /^\{([^\/].*|)\}$/ && do {
+ $start_subdoc_handlers->{$1} = $handler;
+ last SWITCH;
+ };
+ # generic start-subdoc handler
+ $spec eq 'start_subdoc' && do {
+ $start_subdoc_handlers->{''} = $handler;
+ last SWITCH;
+ };
+ # end-subdoc handler
+ $spec =~ /^\{\/(.*)\}$/ && do {
+ $end_subdoc_handlers->{$1} = $handler;
+ last SWITCH;
+ };
+ # generic end-subdoc handler
+ $spec eq 'end_subdoc' && do {
+ $end_subdoc_handlers->{''} = $handler;
+ last SWITCH;
+ };
+ # conforming handler
+ $spec eq 'conforming' && do {
+ $conforming_handler = $handler;
+ last SWITCH;
+ };
+
+ die "Bad SGML handler pattern: $spec\n";
+ }
+}
+
+
+#
+# The first argument on the command line is a perl module which will be
+# read here and evaluated in the 'main' package -- everything else will
+# be an argument to it.
+#
+package main;
+
+$ARGV = shift;
+unless ($ARGV eq '' || do $ARGV) {
+ if (!-e $ARGV) {
+ die "FATAL: $ARGV does not exist.\n";
+ } elsif (!-r $ARGV) {
+ die "FATAL: $ARGV exists but is read-protected.\n";
+ } elsif ($@) {
+ die "FATAL: $@\n";
+ }
+}
+
+
+#
+# Do the actual work, using the SGMLS package.
+#
+package SGMLS_PL;
+
+$parse = new SGMLS(main::STDIN); # a new parse object
+
+&{$start_document_handler}(); # run the start handler.
+
+ # run the appropriate handler for each
+ # event
+while ($event = $parse->next_event) {
+ my $type = $event->type;
+ SWITCH: {
+ $type eq 'start_element' && do {
+ &{($start_element_handlers->{$event->data->name}||
+ $start_element_handlers->{''} || sub {})}($event->data,$event);
+ last SWITCH;
+ };
+ $type eq 'end_element' && do {
+ &{($end_element_handlers->{$event->data->name}||
+ $end_element_handlers->{''} || sub {})}($event->data,$event);
+ last SWITCH;
+ };
+ $type eq 'cdata' && do {
+ &{$cdata_handler}($event->data,$event);
+ last SWITCH;
+ };
+ $type eq 'sdata' && do {
+ &{($sdata_handlers->{$event->data}||
+ $sdata_handlers->{''} || sub {})}($event->data,$event);
+ last SWITCH;
+ };
+ $type eq 're' && do {
+ &{$re_handler}($event->data,$event);
+ last SWITCH;
+ };
+ $type eq 'pi' && do {
+ &{$pi_handler}($event->data,$event);
+ last SWITCH;
+ };
+ $type eq 'entity' && do {
+ &{($entity_handlers->{$event->data->name}||
+ $entity_handlers->{''} || sub {})}($event->data,$event);
+ last SWITCH;
+ };
+ $type eq 'start_subdoc' && do {
+ &{($start_subdoc_handlers->{$event->data->name}||
+ $start_subdoc_handlers->{''} || sub {})}($event->data,$event);
+ last SWITCH;
+ };
+ $type eq 'end_subdoc' && do {
+ &{($end_subdoc_handlers->{$event->data->name}||
+ $end_subdoc_handlers->{''} || sub {})}($event->data,$event);
+ last SWITCH;
+ };
+ $type eq 'conforming' && do {
+ &{$conforming_handler}($event->data,$event);
+ last SWITCH;
+ };
+
+ die "Unknown SGML event type: $type\n";
+ }
+}
+
+&{$end_document_handler}(); # run the end handler
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/skel.pl b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/skel.pl
new file mode 100644
index 00000000000..f10c1ff3f85
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/skel.pl
@@ -0,0 +1,178 @@
+########################################################################
+# skel.pl: an SGMLSPL script for producing scripts (!!).
+#
+# Copyright (c) 1995 by David Megginson <dmeggins@aix1.uottawa.ca>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+#
+#
+# Changes:
+#
+# $Log: skel.pl,v $
+# Revision 1.4 1995/11/15 20:21:07 david
+# Changed "use Output" to "use SGMLS::Output".
+#
+# Revision 1.3 1995/08/24 15:04:38 david
+# Fixed commented-out 're' handler.
+#
+# Revision 1.2 1995/08/12 16:16:42 david
+# Revised version for 1.01 distribution.
+#
+# Revision 1.1 1995/04/23 14:49:35 david
+# Initial revision
+#
+########################################################################
+
+use SGMLS;
+use SGMLS::Output;
+
+$version = '$Id: skel.pl,v 1.4 1995/11/15 20:21:07 david Exp $';
+
+%subdocs = (); # Subdocument entities seen so far.
+%entities = (); # External data entities seen so far.
+%sdata = (); # SDATA strings seen so far.
+%elements = (); # Elements seen so far.
+$pi = 0; # Any processing instructions?
+
+$intro = 0; # Have we printed the banner yet?
+
+$| = 1;
+
+sgml('end_element', ''); # Ignore the ends of elements.
+sgml('end_subdoc', ''); # Ignore the ends of subdocument entities.
+sgml('cdata', ''); # Ignore CDATA.
+sgml('re', ''); # Ignore Record Ends.
+
+ # Note any processing instructions.
+sgml('pi', sub { $pi = 1; });
+
+ # Keep track of all subdocument entities.
+sgml('start_subdoc', sub {
+ my $entity = shift;
+ $entities{$entity->name} = 1;
+});
+ # Keep track of all external data entities.
+sgml('entity', sub {
+ my $entity = shift;
+ $entities{$entity->name} = 1;
+});
+ # Keep track of all SDATA strings
+sgml('sdata', sub {
+ my $sdata = shift;
+ $sdata{$sdata} = 1;
+});
+
+ # Display element handlers as they appear.
+sgml('start_element', sub {
+ my $element = shift;
+ unless ($intro) {
+ $intro = 1;
+ do_intro($element->name);
+ }
+ if (!$elements{$element->name}) {
+ output "# Element: " . $element->name . "\n";
+ output "sgml('<" . $element->name . ">', \"\");\n";
+ output "sgml('</" . $element->name . ">', \"\");\n\n";
+ $elements{$element->name} = 1;
+ }
+});
+
+sgml('end', sub {
+ # generate subdoc handlers
+ my @keys = keys(%subdocs);
+ if ($#keys > 0) {
+ output "#\n# Subdocument Entity Handlers\n#\n\n";
+ foreach (@keys) {
+ output "# Subdocument Entity: $_\n";
+ output "sgml('{" . $_ . "}', \"\");\n";
+ output "sgml('{/" . $_ . "}', \"\");\n\n";
+ }
+ }
+ # generate entity handlers
+ my @keys = keys(%entities);
+ if ($#keys > 0) {
+ output "#\n# External Data Entity Handlers\n#\n\n";
+ foreach (@keys) {
+ output "sgml('&" . $_ . ";', \"\");\n";
+ }
+ }
+ # generate sdata handlers
+ my @keys = keys(%sdata);
+ if ($#keys > 0) {
+ output "#\n# SDATA Handlers\n#\n\n";
+ foreach (@keys) {
+ output "sgml('|" . $_ . "|', \"\");\n";
+ }
+ }
+
+ if ($pi) {
+ output "#\n# Processing-Instruction Handler\n#\n";
+ output "sgml('pi', sub {});\n\n";
+ }
+
+ output <<END;
+#
+# Default handlers (uncomment these if needed). Right now, these are set
+# up to gag on any unrecognised elements, sdata, processing-instructions,
+# or entities.
+#
+# sgml('start_element',sub { die "Unknown element: " . \$_[0]->name; });
+# sgml('end_element','');
+# sgml('cdata',sub { output \$_[0]; });
+# sgml('sdata',sub { die "Unknown SDATA: " . \$_[0]; });
+# sgml('re',"\\n");
+# sgml('pi',sub { die "Unknown processing instruction: " . \$_[0]; });
+# sgml('entity',sub { die "Unknown external entity: " . \$_[0]->name; });
+# sgml('start_subdoc',sub { die "Unknown subdoc entity: " . \$_[0]->name; });
+# sgml('end_subdoc','');
+# sgml('conforming','');
+
+1;
+END
+});
+
+
+
+ # Function to print the banner.
+sub do_intro {
+ my $doctype = shift;
+ output <<END;
+########################################################################
+# SGMLSPL script produced automatically by the script sgmlspl.pl
+#
+# Document Type: $doctype
+# Edited by:
+########################################################################
+
+use SGMLS; # Use the SGMLS package.
+use SGMLS::Output; # Use stack-based output.
+
+#
+# Document Handlers.
+#
+sgml('start', sub {});
+sgml('end', sub {});
+
+#
+# Element Handlers.
+#
+
+END
+}
+
+1;
+
+
+
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/style-sheet.dtd b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/style-sheet.dtd
new file mode 100644
index 00000000000..0ee4e674d37
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/style-sheet.dtd
@@ -0,0 +1,41 @@
+<!-- A DTD for DSSSL Style Sheets. The public identifier for this is
+
+ "-//James Clark//DTD DSSSL Style Sheet//EN"
+-->
+
+<!element style-sheet o o (style-specification,
+ (external-specification|style-specification)*)>
+<!element style-specification o o (style-specification-body)>
+<!attlist style-specification
+ id id #implied
+ use idrefs #implied
+>
+<!element style-specification-body o o (#pcdata)>
+<!attlist style-specification-body
+ content entity #conref
+>
+<!element external-specification - o empty>
+<!attlist external-specification
+ id id #required
+ document entity #required
+ specid name #implied
+>
+<?IS10744 ArcBase DSSSL>
+<!NOTATION DSSSL PUBLIC "ISO/IEC 10179:1996//NOTATION
+ DSSSL Architecture Definition Document//EN"
+ -- A document architecture conforming to the
+ Architectural Form Definition Requirements of
+ ISO/IEC 10744. --
+>
+
+<!ATTLIST #NOTATION DSSSL
+ -- Support attributes for all architectures --
+ ArcQuant CDATA #FIXED "NAMELEN 64"
+ ArcDTD CDATA #FIXED "%DSSSLDTD"
+ ArcDocF NAME #FIXED dsssl-specification
+ ArcDataF NAME #FIXED dsssl-specification
+>
+
+<!ENTITY % DSSSLDTD PUBLIC
+ "ISO/IEC 10179:1996//DTD DSSSL Architecture//EN"
+>
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/templatest.xml b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/templatest.xml
new file mode 100644
index 00000000000..be664cb09e1
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/templatest.xml
@@ -0,0 +1,3 @@
+<invitation>
+<to>Anna, Bernard, Didier, Johanna</to>
+</invitation>
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/templatest.xsl b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/templatest.xsl
new file mode 100644
index 00000000000..da5d52f2030
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/templatest.xsl
@@ -0,0 +1,41 @@
+<?xml version='1.0'?>
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:fo="http://www.w3.org/XSL/Format/1.0"
+ result-ns="fo"
+ default-space="">
+<xsl:template name="listitem">
+ <xsl:param-variable name="labeltext">labeltext</xsl:param-variable>
+ <xsl:param-variable name="itemid">itemid</xsl:param-variable>
+ <xsl:param-variable name="itemtext">itemtext</xsl:param-variable>
+ <fo:list-item id="{$itemid}">
+ <fo:list-item-label font-style="italic">
+ $labeltext<xsl:text>:</xsl:text>
+ </fo:list-item-label>
+ <fo:list-item-body>
+ <xsl:value-of select="$itemtext"/>
+ </fo:list-item-body>
+ </fo:list-item>
+</xsl:template>
+
+<xsl:template match='/'>
+ <fo:page-sequence>
+ <xsl:apply-templates/>
+ </fo:page-sequence>
+</xsl:template>
+
+<xsl:template match="invitation">
+<fo:list-block>
+ <xsl:call-template name="listitem">
+ <xsl:param name="labeltext">To</xsl:param>
+ <xsl:param name="itemid">listto</xsl:param>
+ <xsl:param name="itemtext">to</xsl:param>
+ </xsl:call-template>
+</fo:list-block>
+</xsl:template>
+
+</xsl:stylesheet>
+
+
+
+
+
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/templatestnok.xsl b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/templatestnok.xsl
new file mode 100644
index 00000000000..da5d52f2030
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/templatestnok.xsl
@@ -0,0 +1,41 @@
+<?xml version='1.0'?>
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:fo="http://www.w3.org/XSL/Format/1.0"
+ result-ns="fo"
+ default-space="">
+<xsl:template name="listitem">
+ <xsl:param-variable name="labeltext">labeltext</xsl:param-variable>
+ <xsl:param-variable name="itemid">itemid</xsl:param-variable>
+ <xsl:param-variable name="itemtext">itemtext</xsl:param-variable>
+ <fo:list-item id="{$itemid}">
+ <fo:list-item-label font-style="italic">
+ $labeltext<xsl:text>:</xsl:text>
+ </fo:list-item-label>
+ <fo:list-item-body>
+ <xsl:value-of select="$itemtext"/>
+ </fo:list-item-body>
+ </fo:list-item>
+</xsl:template>
+
+<xsl:template match='/'>
+ <fo:page-sequence>
+ <xsl:apply-templates/>
+ </fo:page-sequence>
+</xsl:template>
+
+<xsl:template match="invitation">
+<fo:list-block>
+ <xsl:call-template name="listitem">
+ <xsl:param name="labeltext">To</xsl:param>
+ <xsl:param name="itemid">listto</xsl:param>
+ <xsl:param name="itemtext">to</xsl:param>
+ </xsl:call-template>
+</fo:list-block>
+</xsl:template>
+
+</xsl:stylesheet>
+
+
+
+
+
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/templatestok.xsl b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/templatestok.xsl
new file mode 100644
index 00000000000..01daaaa4c32
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/templatestok.xsl
@@ -0,0 +1,31 @@
+<?xml version='1.0'?>
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:fo="http://www.w3.org/XSL/Format/1.0"
+ result-ns="fo"
+ default-space="">
+
+<xsl:template match='/'>
+ <fo:page-sequence>
+ <xsl:apply-templates/>
+ </fo:page-sequence>
+</xsl:template>
+
+<xsl:template match="invitation">
+<fo:list-block>
+ <fo:list-item id="listto">
+ <fo:list-item-label font-style="italic">
+ <xsl:text>To:</xsl:text>
+ </fo:list-item-label>
+ <fo:list-item-body>
+ <xsl:value-of select="to"/>
+ </fo:list-item-body>
+ </fo:list-item>
+</fo:list-block>
+</xsl:template>
+
+</xsl:stylesheet>
+
+
+
+
+
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/test-SGMLS.pl b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/test-SGMLS.pl
new file mode 100644
index 00000000000..f18f972832e
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/test-SGMLS.pl
@@ -0,0 +1,13 @@
+use SGMLS;
+
+$\ = "\n";
+
+$parse = new SGMLS(STDIN);
+
+while ($event = $parse->next_event) {
+ print "Event type: " . $event->type;
+ print "Data: " . $event->data;
+ print "File: " . $event->file || "[unavailable]";
+ print "Line: " . $event->line || "[unavailable]";
+ print "";
+}
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/writefiles.xml b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/writefiles.xml
new file mode 100644
index 00000000000..0f1db9648a5
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/writefiles.xml
@@ -0,0 +1,9 @@
+<outputfiles>
+<file filename="filea.out">
+10 &lt; 20
+</file>
+<file filename="fileb.out">
+43 &gt; 34
+An ampersand character: &amp;.
+</file>
+</outputfiles>
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/wrong.xml b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/wrong.xml
new file mode 100644
index 00000000000..4f3827b7adc
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/wrong.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0"?>
+<!DOCTYPE wrong [
+<!ELEMENT wrong (par*)>
+<!ELEMENT par (#PCDATA|emph)*>
+<!ELEMENT emph (#PCDATA)*>
+]>
+<wrong>
+<par>This part has wrong entity syntax &lt;par&gt.</par>
+<emph>Emph text outside scope.</emph>
+<par>Here comes another error <par>a second level
+paragraph</par>.</par>
+<par>A wrongly nested <emph>construct</par></emph>.
+Some more text outside valid scope
+<par>Reserved characters "&" "<" ">" ";" .</par>
+</wrong>
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/xml.dcl b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/xml.dcl
new file mode 100644
index 00000000000..fed21030921
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/xml.dcl
@@ -0,0 +1,179 @@
+<!SGML -- SGML Declaration for valid XML documents --
+ "ISO 8879:1986 (WWW)"
+
+ CHARSET
+ BASESET
+ "ISO Registration Number 176//CHARSET
+ ISO/IEC 10646-1:1993 UCS-4 with implementation
+ level 3//ESC 2/5 2/15 4/6"
+ DESCSET
+ 0 9 UNUSED
+ 9 2 9
+ 11 2 UNUSED
+ 13 1 13
+ 14 18 UNUSED
+ 32 95 32
+ 127 1 UNUSED
+ 128 32 UNUSED
+ -- use this instead of the official declaration because SP only
+ supports 16-bit characters --
+ 160 65374 160
+ 65534 2 UNUSED
+ -- 55296 2048 UNUSED
+ 57344 8190 57344
+ 65534 2 UNUSED
+ 65536 1048576 65536 --
+ CAPACITY NONE
+
+ SCOPE DOCUMENT
+
+ SYNTAX
+ SHUNCHAR NONE
+ BASESET "ISO Registration Number 176//CHARSET
+ ISO/IEC 10646-1:1993 UCS-4 with implementation
+ level 3//ESC 2/5 2/15 4/6"
+ DESCSET
+ 0 1114112 0
+ FUNCTION
+ RE 13
+ RS 10
+ SPACE 32
+ TAB SEPCHAR 9
+
+ NAMING
+ LCNMSTRT ""
+ UCNMSTRT ""
+ NAMESTRT
+ 58 95 192-214 216-246 248-305 308-318 321-328
+ 330-382 384-451 461-496 500-501 506-535 592-680
+ 699-705 902 904-906 908 910-929 931-974 976-982
+ 986 988 990 992 994-1011 1025-1036 1038-1103
+ 1105-1116 1118-1153 1168-1220 1223-1224
+ 1227-1228 1232-1259 1262-1269 1272-1273
+ 1329-1366 1369 1377-1414 1488-1514 1520-1522
+ 1569-1594 1601-1610 1649-1719 1722-1726
+ 1728-1742 1744-1747 1749 1765-1766 2309-2361
+ 2365 2392-2401 2437-2444 2447-2448 2451-2472
+ 2474-2480 2482 2486-2489 2524-2525 2527-2529
+ 2544-2545 2565-2570 2575-2576 2579-2600
+ 2602-2608 2610-2611 2613-2614 2616-2617
+ 2649-2652 2654 2674-2676 2693-2699 2701
+ 2703-2705 2707-2728 2730-2736 2738-2739
+ 2741-2745 2749 2784 2821-2828 2831-2832
+ 2835-2856 2858-2864 2866-2867 2870-2873 2877
+ 2908-2909 2911-2913 2949-2954 2958-2960
+ 2962-2965 2969-2970 2972 2974-2975 2979-2980
+ 2984-2986 2990-2997 2999-3001 3077-3084
+ 3086-3088 3090-3112 3114-3123 3125-3129
+ 3168-3169 3205-3212 3214-3216 3218-3240
+ 3242-3251 3253-3257 3294 3296-3297 3333-3340
+ 3342-3344 3346-3368 3370-3385 3424-3425
+ 3585-3630 3632 3634-3635 3648-3653 3713-3714
+ 3716 3719-3720 3722 3725 3732-3735 3737-3743
+ 3745-3747 3749 3751 3754-3755 3757-3758 3760
+ 3762-3763 3773 3776-3780 3904-3911 3913-3945
+ 4256-4293 4304-4342 4352 4354-4355 4357-4359
+ 4361 4363-4364 4366-4370 4412 4414 4416 4428
+ 4430 4432 4436-4437 4441 4447-4449 4451 4453
+ 4455 4457 4461-4462 4466-4467 4469 4510 4520
+ 4523 4526-4527 4535-4536 4538 4540-4546 4587
+ 4592 4601 7680-7835 7840-7929 7936-7957
+ 7960-7965 7968-8005 8008-8013 8016-8023 8025
+ 8027 8029 8031-8061 8064-8116 8118-8124 8126
+ 8130-8132 8134-8140 8144-8147 8150-8155
+ 8160-8172 8178-8180 8182-8188 8486 8490-8491
+ 8494 8576-8578 12295 12321-12329 12353-12436
+ 12449-12538 12549-12588 19968-40869 44032-55203
+
+ LCNMCHAR ""
+ UCNMCHAR ""
+ NAMECHAR
+ 45-46 183 720-721 768-837 864-865 903 1155-1158
+ 1425-1441 1443-1465 1467-1469 1471 1473-1474
+ 1476 1600 1611-1618 1632-1641 1648 1750-1764
+ 1767-1768 1770-1773 1776-1785 2305-2307 2364
+ 2366-2381 2385-2388 2402-2403 2406-2415
+ 2433-2435 2492 2494-2500 2503-2504 2507-2509
+ 2519 2530-2531 2534-2543 2562 2620 2622-2626
+ 2631-2632 2635-2637 2662-2673 2689-2691 2748
+ 2750-2757 2759-2761 2763-2765 2790-2799
+ 2817-2819 2876 2878-2883 2887-2888 2891-2893
+ 2902-2903 2918-2927 2946-2947 3006-3010
+ 3014-3016 3018-3021 3031 3047-3055 3073-3075
+ 3134-3140 3142-3144 3146-3149 3157-3158
+ 3174-3183 3202-3203 3262-3268 3270-3272
+ 3274-3277 3285-3286 3302-3311 3330-3331
+ 3390-3395 3398-3400 3402-3405 3415 3430-3439
+ 3633 3636-3642 3654-3662 3664-3673 3761
+ 3764-3769 3771-3772 3782 3784-3789 3792-3801
+ 3864-3865 3872-3881 3893 3895 3897 3902-3903
+ 3953-3972 3974-3979 3984-3989 3991 3993-4013
+ 4017-4023 4025 8400-8412 8417 12293 12330-12335
+ 12337-12341 12441-12442 12445-12446 12540-12542
+
+ NAMECASE
+ GENERAL NO
+ ENTITY NO
+
+ DELIM
+ GENERAL SGMLREF
+ HCRO "&#38;#x" -- 38 is the number for ampersand --
+ NESTC "/"
+ NET ">"
+ PIC "?>"
+ SHORTREF NONE
+
+ NAMES
+ SGMLREF
+
+ QUANTITY NONE
+
+ ENTITIES
+ "amp" 38
+ "lt" 60
+ "gt" 62
+ "quot" 34
+ "apos" 39
+
+ FEATURES
+ MINIMIZE
+ DATATAG NO
+ OMITTAG NO
+ RANK NO
+ SHORTTAG
+ STARTTAG
+ EMPTY NO
+ UNCLOSED NO
+ NETENABL IMMEDNET
+ ENDTAG
+ EMPTY NO
+ UNCLOSED NO
+ ATTRIB
+ DEFAULT YES
+ OMITNAME NO
+ VALUE NO
+ EMPTYNRM YES
+ IMPLYDEF
+ ATTLIST NO
+ DOCTYPE NO
+ ELEMENT NO
+ ENTITY NO
+ NOTATION NO
+ LINK
+ SIMPLE NO
+ IMPLICIT NO
+ EXPLICIT NO
+ OTHER
+ CONCUR NO
+ SUBDOC NO
+ FORMAL NO
+ URN NO
+ KEEPRSRE YES
+ VALIDITY TYPE
+ ENTITIES
+ REF ANY
+ INTEGRAL YES
+ APPINFO NONE
+ SEEALSO "ISO 8879:1986//NOTATION
+ Extensible Markup Language (XML) 1.0//EN"
+>
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/xslexa1.xsl b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/xslexa1.xsl
new file mode 100644
index 00000000000..9a9338b86c9
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/xslexa1.xsl
@@ -0,0 +1,20 @@
+<?xml version='1.0'?>
+<xsl:stylesheet version="1.0"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:fo="http://www.w3.org/XSL/Format/1.0">
+ <xsl:template match="/">
+ <fo:basic-page-sequence font-family="Helvetica" font-size="10pt" >
+ <xsl:apply-templates/>
+ </fo:basic-page-sequence>
+ </xsl:template>
+ <xsl:template match="par">
+ <fo:block indent-start="10pt" space-before="12pt">
+ <xsl:apply-templates/>
+ </fo:block>
+ </xsl:template>
+ <xsl:template match="emph">
+ <fo:inline-sequence font-style="italic">
+ <xsl:apply-templates/>
+ </fo:inline-sequence>
+ </xsl:template>
+</xsl:stylesheet>