<!--
Linux Packaging Markup Language version 1.0.
Date: May 3, 2001
Author: Scott Harrison
Linux Packaging Markup Language aims to capture
a source code development tree and effectively map
that to a compilation and installation process for
generating software packages and updating a run-time
system. This language helps handle dependency information,
file globbing, file permissions, file ownerships,
different targets for different linux distributions,
preservation of configuration information, directory
permissions, directory ownerships, compilation commands,
and, ultimately, system software status reports.
-->
<!--
Copyright Michigan State University Board of Trustees
This file is part of the LearningOnline Network with CAPA (LON-CAPA).
LON-CAPA 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.
LON-CAPA 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 LON-CAPA; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
/home/httpd/html/adm/gpl.txt
http://www.lon-capa.org/
-->
<!ENTITY % lpml.Version
"-//TUX//DTD lpml 1.0 Final//EN"
>
<!-- Typical usage: -->
<!-- <!DOCTYPE lpml PUBLIC "-//TUX/DTD LPML 1.0 Final//EN"
"http://lpml.sourceforge.net/DTD/lpml.dtd"> -->
<!-- <lpml> -->
<!-- ... -->
<!-- </lpml> -->
<!ELEMENT categoryname (#PCDATA)>
<!ELEMENT targetroot (#PCDATA)>
<!ELEMENT sourceroot (#PCDATA)>
<!ELEMENT target (#PCDATA)>
<!ATTLIST target
dist CDATA #REQUIRED
>
<!ELEMENT source (#PCDATA)>
<!ELEMENT targetdir (#PCDATA)>
<!ATTLIST targetdir
dist CDATA #REQUIRED
>
<!ELEMENT sourcedir (#PCDATA)>
<!ELEMENT glob (#PCDATA)>
<!ELEMENT build (#PCDATA)>
<!ELEMENT buildlink (#PCDATA)>
<!--
The trigger attribute of the build element is meant
to only have one of two possible values:
"always run", or
"run if dependencies change"
Note that you must type this text exactly in for the
attribute value to be understood and processed correctly
by the lpml "make build" parser.
-->
<!ELEMENT lpml
(targetroot|sourceroot|specialnotices|files|categories|directories|rpm)+>
<!ATTLIST build
trigger CDATA #REQUIRED
>
<!ELEMENT specialnotices (specialnotice)+>
<!ELEMENT categories (category)+>
<!ELEMENT directories (directory)+>
<!ELEMENT files (file|fileglob|link)+>
<!ELEMENT dependencies (#PCDATA)>
<!ELEMENT note (#PCDATA|table|b|br)*>
<!ELEMENT b (#PCDATA)>
<!ELEMENT specialnotice (#PCDATA)>
<!ATTLIST specialnotice
dist CDATA #REQUIRED
>
<!ELEMENT category (chmod,chown,abbreviation)>
<!ATTLIST category
type CDATA #REQUIRED
name CDATA #REQUIRED
>
<!ELEMENT chown (#PCDATA)>
<!ATTLIST chown
dist CDATA #REQUIRED
>
<!ELEMENT chmod (#PCDATA)>
<!ATTLIST chmod
dist CDATA #REQUIRED
>
<!ELEMENT abbreviation (#PCDATA)>
<!ELEMENT br EMPTY>
<!ELEMENT nobr EMPTY>
<!ELEMENT table (#PCDATA|tr)*>
<!ATTLIST table
cellpadding CDATA #IMPLIED
cellspacing CDATA #IMPLIED
border CDATA #IMPLIED
>
<!ELEMENT tr (#PCDATA|td)*>
<!ELEMENT td (#PCDATA|br|ul|tt|nobr)*>
<!ELEMENT description (#PCDATA|br|tt|u)*>
<!ELEMENT ul (#PCDATA|li)*>
<!ELEMENT li (#PCDATA)>
<!ELEMENT tt (#PCDATA)>
<!ELEMENT u (#PCDATA)>
<!ELEMENT status (#PCDATA)>
<!ELEMENT linkto (#PCDATA)>
<!ELEMENT directory (targetdir+,categoryname,description?)>
<!ATTLIST directory
dist CDATA #REQUIRED
>
<!ELEMENT file (source,target+,categoryname,description?,buildlink?,
note?,build?,status?,dependencies?)>
<!ELEMENT link (linkto,target,categoryname,description?,
note?,build?,status?,dependencies?)>
<!ELEMENT fileglob (glob,sourcedir,targetdir,categoryname,
description?,note?,build?,buildlink?,status?,dependencies?,filenames?)>
<!ELEMENT filenames (#PCDATA)>
<!ELEMENT rpm (rpmSummary,rpmName,rpmVersion,rpmRelease,rpmVendor,
rpmBuildRoot,rpmCopyright,rpmGroup,rpmSource,rpmAutoReqProv,
rpmdescription,rpmpre,rpmRequires)>
<!ELEMENT rpmSummary (#PCDATA)>
<!ELEMENT rpmName (#PCDATA)>
<!ELEMENT rpmVersion (#PCDATA)>
<!ELEMENT rpmRelease (#PCDATA)>
<!ELEMENT rpmVendor (#PCDATA)>
<!ELEMENT rpmBuildRoot (#PCDATA)>
<!ELEMENT rpmCopyright (#PCDATA)>
<!ELEMENT rpmGroup (#PCDATA)>
<!ELEMENT rpmSource (#PCDATA)>
<!ELEMENT rpmAutoReqProv (#PCDATA)>
<!ELEMENT rpmdescription (#PCDATA)>
<!ELEMENT rpmpre (#PCDATA)>
<!ELEMENT rpmRequires (item)+>
<!ELEMENT item (#PCDATA)>
<!--
Post Installation Markup Language version 1.0.
Date: January 24, 2002
Author: Scott Harrison
Post Installation Markup Language works to perform
'intelligent' modifications of existing files on
a software system. This allows for the reconfiguring
of existing configuration files without having the
overlap of files between software packages. PIML
also allows you to have file permission/ownership
specifications different than that specified by the
original software package.
For instance, Apache web server configuration files
are a popular target for many different software applications.
A preferred approach is to simply append an 'Include ...'
line to the Apache web server configuration files.
Post Installation Markup Language is meant to be
a natural wrapper to target installations generated
by LPML (Linux Packaging Markup Language).
Usages of Post Installation Markup Language are:
* immediately after installation with LPML
* generating '%post' syntax for RPMs
* generating post-installation syntax for Debian packages.
Dependency checking is supported as a poor man's probing....
There is no point in reconfiguring a file that isn't installed,
or is missing a system component for successful operation.
Another neat use of PIML is to allow for invocation of various
processes after installation.
-->
<!--
Copyright Michigan State University Board of Trustees
This file is part of the LearningOnline Network with CAPA (LON-CAPA).
LON-CAPA 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.
LON-CAPA 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 LON-CAPA; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
/home/httpd/html/adm/gpl.txt
http://www.lon-capa.org/
-->
<!ENTITY % piml.Version
"-//TUX//DTD piml 1.0 Final//EN">
<!-- Typical usage:
<!DOCTYPE piml PUBLIC "-//TUX//DTD PIML 1.0 Final//EN"
"http://lpml.sourceforge.net/DTD/piml.dtd">
<piml>
</piml>
-->
<!ELEMENT categoryname (#PCDATA)>
<!ELEMENT targetroot (#PCDATA)>
<!ELEMENT target (#PCDATA)>
<!ATTLIST target
dist CDATA #REQUIRED
>
<!ELEMENT piml (targetroot|specialnotices|files|categories)+>
<!ELEMENT specialnotices (specialnotice)+>
<!ELEMENT categories (category)+>
<!ELEMENT files (file)+>
<!ELEMENT dependencies (#PCDATA)>
<!ATTLIST dependencies
dist CDATA #REQUIRED
>
<!ELEMENT note (#PCDATA)>
<!ELEMENT specialnotice (#PCDATA)>
<!ELEMENT category (chmod,chown,abbreviation)>
<!ATTLIST category
type CDATA #REQUIRED
name CDATA #REQUIRED
>
<!ELEMENT chown (#PCDATA)>
<!ATTLIST chown
dist CDATA #REQUIRED
>
<!ELEMENT chmod (#PCDATA)>
<!ATTLIST chmod
dist CDATA #REQUIRED
>
<!ELEMENT abbreviation (#PCDATA)>
<!ELEMENT file (target,categoryname?,
note?,status?,dependencies?,perlscript)>
<!ELEMENT TARGET EMPTY>
<!ELEMENT perlscript (#PCDATA|TARGET)*>
<!ATTLIST perlscript
mode CDATA #REQUIRED
>
<!--
XML Filter Markup Language version 1.0.
Date: January 27, 2002
Author: Scott Harrison
XML Filter Markup Language works to extract those sections
of an XML document matching certain conditions. This, in some
respects, relies on functionality similar to that expected
with XSL-type files. (I do not use standard XSL syntax because
I am not convinced that it would be simple and elegant for
this particular task).
This is anticipated to be a very important feature associated
with a larger Makefile-ish type approach involving the XML dtds:
LPML and PIML.
LPML (Linux Packaging Markup Language) can work to install files
on a single computer or a distributed network of computers with
pre-configured ssh accessibility (.ssh/authorized_keys, etc).
PIML (Post Installation Markup Language) works to coordinate the
last little scripts that need to be run after an installation.
With all this make-"power", wouldn't it be nice to only pass through
portions of an LPML specification?
-->
<!--
Copyright Michigan State University Board of Trustees
This file is part of the LearningOnline Network with CAPA (LON-CAPA).
LON-CAPA 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.
LON-CAPA 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 LON-CAPA; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
/home/httpd/html/adm/gpl.txt
http://www.lon-capa.org/
-->
<!-- Note: current status is that choice:include is currently unsupported and
all matching statements REQUIRE two levels of 'when' statements;
not one or more than two... okay.. this will be fixed soon -->
<!ENTITY % xfml.Version
"-//TUX//DTD piml 1.0 Final//EN">
<!-- Typical usage:
<!DOCTYPE xfml PUBLIC "-//TUX//DTD PIML 1.0 Final//EN">
<xfml>
</xfml>
-->
<!ELEMENT choice:include (#PCDATA)>
<!ELEMENT choice:exclude (#PCDATA)>
<!ELEMENT xfml (clause)+>
<!ELEMENT clause (when:cdata|when:name|when:attribute|choice:exclude)+>
<!ELEMENT when:name
(when:cdata|when:name|when:attribute|choice:include|choice:exclude)+>
<!ELEMENT when:attribute
(when:cdata|when:name|when:attribute|choice:include|
choice:exclude)+>
<!ELEMENT when:cdata
(when:cdata|when:name|when:attribute|choice:include|
choice:exclude)+>
<!ATTLIST when:name
match CDATA #REQUIRED>
<!ATTLIST when:attribute
match CDATA #REQUIRED>
<!ATTLIST when:cdata
match CDATA #REQUIRED>
<!ATTLIST choice:include
nodename CDATA #REQUIRED>
<!ATTLIST choice:exclude
nodename CDATA #REQUIRED>