<?oxygen RNGSchema="../resources/schemas/page.rng" type="xml"?>
<?oxygen SCHSchema="../resources/schemas/page.rng"?>
<page:page __file="25d9e34651a528f0599ed749b35701fc" __status="-1">......</page:page>
<page:page __file="25d9e34651a528f0599ed749b35701fc" __status="-1" xmlns:paloose="http://www.paloose.org/schemas/Paloose/1.0" xmlns:link="http://www.hsfr.org.uk/Schema/Link" xmlns:list="http://www.hsfr.org.uk/Schema/List" xmlns:graphic="http://www.hsfr.org.uk/Schema/Graphic" xmlns:page="http://www.hsfr.org.uk/Schema/Page" xmlns:t="http://www.hsfr.org.uk/Schema/Text" xmlns:i18n="http://apache.org/cocoon/i18n/2.1" xmlns:xi="http://www.w3.org/2001/XInclude">
<page:meta>......</page:meta>
<page:meta>
<page:title>Paloose — FAQ</page:title>
<page:copyright>Copyright 2006 – 2017 Hugh Field-Richards. All Rights Reserved.</page:copyright>
</page:meta>
<page:content>......</page:content>
<page:content>
<t:heading level="1">Frequently Asked Questions</t:heading>
<t:group label="faqEntry">......</t:group>
<t:group label="faqEntry">
<t:heading level="2" id="about">About the author</t:heading>
<t:p>......</t:p>
<t:p>
The Paloose project is currently run by me,
<link:link type="uri" ref="http://www.linkedin.com/pub/5/118/525" target="linkedin">Hugh Field-Richards</link:link>
. I recently retired after a (too) long career designing (amongst other things) computer hardware and software; I am now a professional music engraver, something I did as a hobby during my working life. I started Paloose to keep myself amused and to support my other interest,
<link:link type="uri" ref="http://www.hopvine-music.com/" target="hop-vine">Hop Vine Music</link:link>
.
</t:p>
</t:group>
<t:group label="faqEntry">......</t:group>
<t:group label="faqEntry">
<t:heading level="2" id="antweave">What other software projects do you author?</t:heading>
<t:p>......</t:p>
<t:p>
<t:emph degree="normal">AntWeave</t:emph>
</t:p>
<t:p>......</t:p>
<t:p>
I have always been interested in literate programming ever since Donald Knuth created the first weave/tangle WEB system for producing TeX and Metafont. AntWeave is an implementation of the NoWeb literate-programming tool originally designed by Norman Ramsey. I have used NoWeb on many projects in the past to great success and recently wanted to revive my use of the system. Rather than use a standalone program (as the original one NoWeb does) it is based on a Java and XML/XSL approach and runs as a Task within the Ant build system. By using this approach it is completely universal on any system that supports Ant (and by implication Java and Java-XML). It removes the necessity to build system specific version of the original
<t:code type="var">noweave</t:code>
and
<t:code type="var">notangle</t:code>
processors; which can be a tricky process when starting from scratch without the required binaries.
</t:p>
<t:p>......</t:p>
<t:p>
The main AntWeave site is
<link:link target="antweave" type="uri" ref="http://antweave.hsfr.org.uk/home.html">here</link:link>
where you can
<link:link type="uri" ref="http://www.antweave.hsfr.org.uk/downloads/antweave-latest.tgz"> download the latest version</link:link>
.
</t:p>
<t:p>......</t:p>
<t:p>
It can be also downloaded from
<link:link target="bitbucket" type="uri" ref="https://bitbucket.org/hsfr/antweave">a BitBucket repository</link:link>
. Feel free to contribute — please contact me if you want to.
</t:p>
<t:p>And no ... Paloose wasn't written using NoWeb format source file; there were (historical) reasons — I wrote Paloose first and I am not going to rewrite nearly 50,000 lines of code using literate programming.</t:p>
</t:group>
<t:group label="faqEntry">......</t:group>
<t:group label="faqEntry">
<t:heading level="2" id="palooseName">What's with the name?</t:heading>
<t:p>......</t:p>
<t:p>
The original name I chose was "Papoose"; in the UK this is defined as "
<t:emph degree="weak">... a type of bag used to carry a child on the back</t:emph>
". Unfortunately it does not seem have this meaning in the US, indeed, with some people, it is a derogatory term. However, it occurred to me that a simple change of letter would give "Paloose", which is another term for the Appaloosa horse.
</t:p>
<t:p>......</t:p>
<t:p>
This is something dear to my heart as, until recently, I was privileged to have one of my own ('Zitty') who I rode until she reached the grand old age of 29 and then became a "house pet" until she died aged 33. I now have a fine American Quarter Horse named "Fred" (born 2005, his dad is
<link:link type="uri" ref="http://okharlanhorses.com/Double-Tough-Harlan.php">Double Tough Harlan</link:link>
from Pawnee, Oklahoma) who is coming along nicely as a promising Western horse.
</t:p>
<t:group id="horses">......</t:group>
<t:group id="horses">
<graphic:graphic ref="resources/images/zitty.png" id="zitty" label="Zitty" name="'Zitty'">'Zitty'</graphic:graphic>
<graphic:graphic ref="resources/images/fred.png" id="fred" label="Fred" name="Harlan Breeze 'Fred'">Harlan Breeze 'Fred'</graphic:graphic>
</t:group>
</t:group>
<t:group label="faqEntry">......</t:group>
<t:group label="faqEntry">
<t:heading level="2" id="palooseFuture">What future for Paloose?</t:heading>
<t:p>......</t:p>
<t:p>
Paloose is released under the GPL-3. If anyone wishes to get involved then please
<link:link type="email" ref="hsfr@hsfr.org.uk">EMAIL</link:link>
me. I intend to use it for all my small sites and will continue to do so until
<t:index entry="Cocoon"/>
Cocoon is supported by the smaller ISPs that I use. It is also interesting (and slightly depressing) that the latest
<t:index entry="Cocoon"/>
Cocoon does not seem to be as easy to use as
<t:index entry="Cocoon"/>
Cocoon Version 2.1.x. I use this latter version on my local servers and have no plans (yet) to upgrade to
<t:index entry="Cocoon"/>
Cocoon Version 2.2 or later. While I am prepared to admit that this is my problem, I know others who have had the same experience. As a result perhaps Paloose will fulfil the requirements of those who want a quick
<t:index entry="Cocoon"/>
Cocoon-like engine for their small Web sites.
</t:p>
</t:group>
<t:group label="faqEntry">......</t:group>
<t:group label="faqEntry">
<t:heading level="2" id="editor">What editor/IDE do you use to develop Paloose?</t:heading>
<t:p>From the start of Paloose I have always used the oXygen XML editor and IDE. I used it as part of my work before I retired and started Paloose. I had been involved with SGML and XML for many years and oXygen had always been the editor I turned to. When I wanted a suitable system to develop Paloose the choice became a "no-brainer" and I obtained a suitable licence. Whenever I have XML/XSL to develop it is the one I turn to. Having it syntax aware of PHP, CSS and other languages is a real bonus.</t:p>
<link:link type="uri" ref="http://www.oxygenxml.com" label="Oxygen XML Editor">......</link:link>
<link:link type="uri" ref="http://www.oxygenxml.com" label="Oxygen XML Editor">
<graphic:graphic ref="http://www.oxygenxml.com/img/resources/oxygen190x62.png" width="190" label="Oxygen XML Editor"/>
</link:link>
</t:group>
<t:group label="faqEntry">......</t:group>
<t:group label="faqEntry">
<t:heading level="2" id="licence">What Licence is Paloose issued under?</t:heading>
<t:index entry="licence"/>
<t:index entry="Paloose!licence"/>
<t:p>Paloose 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 3 of the License, or (at your option) any later version. </t:p>
<t:p>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. </t:p>
<t:p>......</t:p>
<t:p>
You should have received a copy of the GNU General Public License along with Paloose when you downloaded it. If not, see
<link:link type="uri" ref="http://www.gnu.org/licenses/">http://www.gnu.org/licenses/</link:link>
</t:p>
</t:group>
<t:group label="faqEntry">......</t:group>
<t:group label="faqEntry">
<t:heading level="2" id="palooseToDo">What facilities do you intend to add to Paloose?</t:heading>
<t:p>......</t:p>
<t:p>
This is quite a difficult question as I have limited time and am not trying to do a complete
<t:index entry="Cocoon"/>
Cocoon implementation in PHP5 — a pointless exercise anyway. Now that I have added a simple (limited) data caching scheme to the pipeline all of what I intended to add is complete. I am gradually refining the code and improving the documentation and comments.
</t:p>
<t:p>Just for fun I am making a CMS system based on Paloose. It is about 50% finished and I only work on it when I am not doing else so it may take some time. As part of this I am adding extra transformers to support the functionality of PCMS — these extra transformers are generally not supported by Cocoon.</t:p>
</t:group>
<t:group label="faqEntry">......</t:group>
<t:group label="faqEntry">
<t:heading level="2" id="palooseLogo">Can I use the Paloose logo on my site?</t:heading>
<t:p>......</t:p>
<t:p>
Yes please. I suggest the following
<link:link type="uri" ref="documentation/poweredByPaloose.png">"Powered by Paloose" logo</link:link>
or the
<link:link type="uri" ref="documentation/poweredByPaloose-small.png">smaller version</link:link>
. Scale it as you feel fit.
</t:p>
</t:group>
<t:group label="faqEntry">......</t:group>
<t:group label="faqEntry">
<t:index entry="PDF generation"/>
<t:index entry="FOP transformer"/>
<t:index entry="LaTeX@\LaTeX"/>
<t:heading level="2" id="fopSupport">Do you intend to add PDF support via FOP?</t:heading>
<t:p>The short answer to this is: no. It would mean writing a complete XSL-fo system in PHP5 which is something I really do not have the time (or inclination) to do. If you really want to produce PDF output then I suggest that you write a suitable XML to LaTeX transformer and then run that to get PDF.</t:p>
<t:p>I wrote a transformer (XML to LaTeX) to produce a paper PDF copy of this Paloose documentation Web site which runs within an Ant build file. It is not particularly difficult to generate XML to LaTeX transformers, although obviously it requires a knowledge of LaTeX. I would be happy to help anyone who has a problem.</t:p>
</t:group>
<t:group label="faqEntry">......</t:group>
<t:group label="faqEntry">
<t:heading level="2" id="systems">What systems will it run on?</t:heading>
<t:p>Basically any system that will run PHP5. Currently the list is Mac OS-X, Linux, and other similar Unix systems. I also know of a system based on Apache 2.0/PHP5 on Windows Server 2003.</t:p>
</t:group>
<t:group label="faqEntry">......</t:group>
<t:group label="faqEntry">
<t:heading level="2" id="SAXvDOM">......</t:heading>
<t:heading level="2" id="SAXvDOM">
Why don't you use SAX, like
<t:index entry="Cocoon"/>
Cocoon, instead of DOM?
</t:heading>
<t:p>......</t:p>
<t:p>
I thought about this quite hard initially. I concluded that using a DOM approach was far simpler. It has the penalty of being slower but Paloose is only intended for small volume/traffic sites and ultimate performance is not such an issue. I have seen no reason to revise this decision in the light of typical site usage. Changing to a SAX approach would mean a major code change and I really do not have the time at present as my Music Publishing venture (
<link:link type="uri" ref="http://www.hopvine-music.com/" target="hvm">Hop Vine Music</link:link>
) and my horses have more call on my time.
</t:p>
</t:group>
<t:group label="faqEntry">......</t:group>
<t:group label="faqEntry">
<t:heading level="2" id="performance">How can I improve the performance of Paloose?</t:heading>
<t:p>......</t:p>
<t:p>
Assuming that you are already using the caching system and want more speed, it is possible, but at the expense of a little effort (and possible obscurity), to tailor the Paloose code and your own sitemaps and XSL. The implications and method are described on a
<link:link type="uri" ref="/pp/documentation/performance-1.html">separate page of the documentation</link:link>
in more detail.
</t:p>
</t:group>
<t:group label="faqEntry">......</t:group>
<t:group label="faqEntry">
<t:index entry="caching!configure"/>
<t:heading level="2" id="caching">What about caching in Paloose?</t:heading>
<t:p>......</t:p>
<t:p>
I have done considerable work on various ways of caching within Paloose and versions after 1.3.0 use pipeline data caching on certain generators and transformers. I confess that I am in a quandry over this as the gains from using a cache seem to be minimal and not really worth the effort except in some key cases — see
<link:link type="uri" ref="/pp/documentation/caching.html">my caching discussion</link:link>
for more on this. It is not the end of the story, but more performance increases will probably come from elsewhere.
</t:p>
</t:group>
<t:group label="faqEntry">......</t:group>
<t:group label="faqEntry">
<t:index entry="CForms"/>
<t:index entry="Javascript"/>
<t:index entry="flows"/>
<t:index entry="forms"/>
<t:heading level="2" id="formsBackground">Why did you not use CForms and JavaScript for flows?</t:heading>
<t:p>......</t:p>
<t:p>
It is useful to provide some background to some of the decisions that I made for flows and forms. This is where Paloose diverges from
<t:index entry="Cocoon"/>
Cocoon most. The latter is based on Java and Javascript which was not available to me (conceptually, not practically, as Paloose is based solely on PHP5). Thus I had to base what I did on a pure PHP approach while including the concepts of
<t:index entry="Cocoon"/>
Cocoon flows and forms. I made several false starts which arose from several design problems:
</t:p>
<list:list type="unordered">......</list:list>
<list:list type="unordered">
<list:item>How to store the information at each point of the flow?</list:item>
<list:item>Which form template to use (CForms, XForms etc.)?</list:item>
<list:item>How to allow forward and back (continuations) in the forms?</list:item>
</list:list>
<t:index entry="Paloose!forms"/>
<t:index entry="PForms"/>
<t:p>......</t:p>
<t:p>
All of these problems seemed intractable at first with decisions made about one influencing, detrimentally, a decision made elsewhere. Mirroring the
<t:index entry="Cocoon"/>
Cocoon forms template,
<link:link type="uri" ref="http://cocoon.apache.org/2.1/userdocs/basics/index.html" target="cforms">CForms</link:link>
was initially desirable for commonality with
<t:index entry="Cocoon"/>
Cocoon. But it soon became apparent that this was going to make the whole approach far too complicated for what I wanted. Much code was wasted in exploring this but I believe it was the right decision. In the end I based the Paloose forms (
<link:link type="uri" ref="pforms.html">PForms</link:link>
) on the JXForms that older version of
<t:index entry="Cocoon"/>
Cocoon used. (I had produced some sites with this in the past so I was reasonably familiar with it).
<link:link type="uri" ref="pforms.html">PForms</link:link>
is not radically different from JXForms but it does not slavishly follow the latter. I believe that
<link:link type="uri" ref="pforms.html">PForms</link:link>
is suitable for the restrictions I had set on Paloose and, as I have said elsewhere, if you have a site that requires all the facilities of
<link:link type="uri" ref="http://cocoon.apache.org/2.1/userdocs/basics/index.html" target="cforms">CForms</link:link>
then you should probably be using
<t:index entry="Cocoon"/>
Cocoon anyway.
</t:p>
<t:p>......</t:p>
<t:p>
Once I had settled on
<link:link type="uri" ref="pforms.html">PForms</link:link>
there was the problem of how to implement the flow script, which in
<t:index entry="Cocoon"/>
Cocoon uses Javascript. The
<t:index entry="Cocoon"/>
Cocoon approach is to take a "snapshot" of the Javascript engine (a simplistic way of describing it) in order to maintain continuity between client requests. I was unable to find a sensible way of doing this with PHP5 (which does not mean to say that one does not exist). So I had to find a means of providing the user with a simple method of continuations based solely on a PHP5 approach. I believe I have
<link:link type="uri" ref="/pp/documentation/flows.html">achieved this</link:link>
while keeping to the spirit of
<t:index entry="Cocoon"/>
Cocoon.
</t:p>
<t:p>......</t:p>
<t:p>
All these solutions, however successful, have made me diverge from the strict
<t:index entry="Cocoon"/>
Cocoon approach so please read the documentation very carefully.
</t:p>
</t:group>
<t:group label="faqEntry">......</t:group>
<t:group label="faqEntry">
<t:heading level="2" id="siteDesigns">Who designs your own sites that use Paloose?</t:heading>
<t:p>......</t:p>
<t:p>
These have been done by my son
<link:link type="uri" ref="http://zilla774.deviantart.com/" target="ian">Ian Field-Richards</link:link>
who is the GUI art director for
<link:link type="uri" ref="http://www.deviantart.com/" target="da">DeviantArt</link:link>
and I am very grateful to him for the help he has given me in their design. However I have to take the blame for the Paloose site: any good points are due to him, the bad ones are all mine.
</t:p>
</t:group>
<t:group label="faqEntry">......</t:group>
<t:group label="faqEntry">
<t:index entry="PForms! and SQL"/>
<t:heading level="2" id="paloose2Cocoon">How do I generate multiple selection lists in PForms from SQL entries?</t:heading>
<t:p>......</t:p>
<t:p>
The addition of a simple transformer is all that is necessary; it is explained in more detail on
<link:link type="uri" ref="/pp/examples/sqlSelectLists.html">this How-to</link:link>
.
</t:p>
</t:group>
<t:group label="faqEntry">......</t:group>
<t:group label="faqEntry">
<t:index entry="Paloose!porting to Cocoon"/>
<t:heading level="2" id="paloose2Cocoon">......</t:heading>
<t:heading level="2" id="paloose2Cocoon">
How do I port Paloose Sites to
<t:index entry="Cocoon"/>
Cocoon?
</t:heading>
<t:p>This is very easy with the only major change being the sitemap components. But beware, the Password, Gallery and PageHit transformers will not work unless you write your own in Java.</t:p>
</t:group>
<t:group label="faqEntry">......</t:group>
<t:group label="faqEntry">
<t:index entry="Cocoon!porting to Paloose"/>
<t:heading level="2" id="cocoon2Paloose">......</t:heading>
<t:heading level="2" id="cocoon2Paloose">
How do I port
<t:index entry="Cocoon"/>
Cocoon Sites to Paloose?
</t:heading>
<t:p>......</t:p>
<t:p>
This is really just the reverse of the above. The only issue might be one of performance so it is worth bearing in mind that Paloose is obviously slower than
<t:index entry="Cocoon"/>
Cocoon.
</t:p>
</t:group>
<t:group label="faqEntry">......</t:group>
<t:group label="faqEntry">
<t:index entry="writing components"/>
<t:heading level="2" id="writeComponents">How do I write Components for Paloose?</t:heading>
<t:p>......</t:p>
<t:p>
I have written an example component
<link:link type="uri" ref="/pp/downloads/ComponentTemplate.tgz">here (tgz)</link:link>
that is a "template" for writing generator, transformer and serializer components; also included is an example exceptions class used by the template. Current releases of Paloose include it in the folder
<t:code type="dir">resources/templates/</t:code>
. Also have a look at the various existing components that make up Paloose.
</t:p>
</t:group>
<t:group label="faqEntry">......</t:group>
<t:group label="faqEntry">
<t:index entry="iPhone"/>
<t:heading level="2" id="iPhhoneSupport">Do you have any support for iPhone?</t:heading>
<t:p>......</t:p>
<t:p>
Yes. The
<link:link type="uri" ref="selectors.html">browser selector</link:link>
can detect the iPhone to allow separate pipelines to be run.
</t:p>
</t:group>
<t:group label="faqEntry">......</t:group>
<t:group label="faqEntry">
<t:index entry="errors!page not found \dots"/>
<t:index entry="RewriteRule"/>
<t:heading level="2" id="htaccessProblem">Help! I have tried everything but I am still getting page not found.</t:heading>
<t:p>......</t:p>
<t:p>
The usual problem here that you have not set up the
<t:index entry=".htaccess"/>
<t:code type="dir">.htaccess</t:code>
file up correctly. Remember that Apache will serve all your requests, including ones that are destined for Paloose unless you tell it otherwise. For example if you want requests for, say,
<t:code type="dir">http://<hostname>/<site-path>/file.asm</t:code>
, to be processed by Paloose then you would have to add the following line into your
<t:index entry=".htaccess"/>
<t:code type="dir">.htaccess</t:code>
file:
</t:p>
<t:verbatim> RewriteRule (.+)\.asm paloose.php?url=$1.asm [L,qsappend]</t:verbatim>
<t:p>Remember though that the one type of file extension that this method does not handle is PHP, so putting</t:p>
<t:verbatim> RewriteRule (.+)\.php paloose.php?url=$1.php [L,qsappend]</t:verbatim>
<t:p>......</t:p>
<t:p>
in the
<t:index entry=".htaccess"/>
<t:code type="dir">.htaccess</t:code>
file will cause an infinite loop.
</t:p>
</t:group>
<t:group label="faqEntry">......</t:group>
<t:group label="faqEntry">
<t:index entry="errors!Class 'XsltProcessor' not found"/>
<t:heading level="2" id="XsltProcessorNotFound">Help! Why am I getting "Class 'XsltProcessor' not found" errors</t:heading>
<t:p>99% of the time this shows that you are running PHP5 without the XML/XSL support that there should be. Try recompiling PHP5 with the following configuration parameters included </t:p>
<t:verbatim>--with-xml --with-libxml-dir=<dir path> --with-xsl</t:verbatim>
</t:group>
<t:group label="faqEntry">......</t:group>
<t:group label="faqEntry">
<t:index entry="errors!Parse error: syntax error, unexpected '=', \dots"/>
<t:index entry="PHP4"/>
<t:heading level="2" id="noPHP5">Help! Why am I getting "Parse error: syntax error, unexpected '=', expecting '(' in /../../paloose/lib/Paloose.php on line xx" errors</t:heading>
<t:p>......</t:p>
<t:p>
This means you are still running PHP4. You need to run PHP5. Speak to your ISP to provide PHP5. The other reason may be that your
<t:index entry=".htaccess"/>
<t:code type="dir">.htaccess</t:code>
file has not been set properly to use PHP5.
</t:p>
</t:group>
<t:group label="faqEntry">......</t:group>
<t:group label="faqEntry">
<t:index entry="errors!Input file not found"/>
<t:heading level="2" id="noHtaccess">Help! Why am I getting "Input file not found" as the only browser output?</t:heading>
<t:p>......</t:p>
<t:p>
See
<link:link type="ref" ref="htaccessProblem">......</link:link>
<link:link type="ref" ref="htaccessProblem">
FAQ entry about the
<t:index entry=".htaccess"/>
<t:code type="dir">.htaccess</t:code>
file
</link:link>
, this is the usual problem. Also make sure that you do not overwrite a system
<t:index entry=".htaccess"/>
<t:code type="dir">.htaccess</t:code>
that is required. That is why it is best to have your site in a separate folder.
</t:p>
</t:group>
<t:group label="faqEntry">......</t:group>
<t:group label="faqEntry">
<t:index entry="documentation schemas"/>
<t:heading level="2" id="ppSchemas">Are there schemas for the XML used in this site?</t:heading>
<t:p>......</t:p>
<t:p>
Yes the basic schema is written in
<link:link ref="http://www.relaxng.org/" target="RELAX-NG" type="uri">RELAX NG</link:link>
. They are not an essential to running Paloose or understanding, they are merely given out of interest; although I would urge the use of schemas to reduce errors in your XML files.
</t:p>
<list:list type="unordered">......</list:list>
<list:list type="unordered">
<list:item>......</list:item>
<list:item>
The primary page schema is
<link:link target="schema" type="uri" ref="page.rng">page.rng</link:link>
.
</list:item>
</list:list>
<t:p>......</t:p>
<t:p>
They are pretty versions of the raw RELAX NG which are easier to read. If anyone would like a copy of the transforms necessary to produce the pretty-printed version please
<link:link type="email" ref="hsf@hsfr.org.uk">EMAIL me</link:link>
and I will consider putting them up as a download.
</t:p>
</t:group>
<t:group label="faqEntry">......</t:group>
<t:group label="faqEntry">
<t:index entry="sitemap!schemas"/>
<t:heading level="2" id="sitemapSchemas">Why do you not use schemas for the sitemaps?</t:heading>
<t:p>......</t:p>
<t:p>
This is a fairly contentious subject. Sitemaps are built in such expandable form that producing a schema in something like
<link:link ref="http://www.relaxng.org/" target="RELAX-NG" type="uri">RELAX NG</link:link>
or
<link:link ref="http://www.w3.org/XML/Schema" type="uri" target="XML-Schema">XML-Schema</link:link>
is very difficult — they simply do not have a rich enough structure to do what I think is necessary without having to use Schematron additions. The closest that I got to producing one used
<link:link target="DSD-2" type="uri" ref="http://www.brics.dk/DSD/">DSD-2</link:link>
. I wrote an extensible set of schemas which worked fine, but are now sadly out of date. I also produced schemas for Dublin Core, Jakarta Ant and RDF (although RDF is a major problem because it is impossible to write a universal validating XML schema for it — it ain't the right sort of grammar and the current 2004 specification for RDF is flawed), all of which can be found on the
<link:link target="DSD-2" type="uri" ref="http://www.brics.dk/DSD/">DSD-2</link:link>
home page. DSD-2 is the best schema language we never had, sad ....
</t:p>
</t:group>
<t:group label="faqEntry">......</t:group>
<t:group label="faqEntry">
<t:heading level="2" id="techTrivia">Technical Trivia</t:heading>
<t:p>The code that builds Paloose is a little rough and ready in places. This is my first PHP program (other than the odd embedded line within HTML) and it shows. I am more used to program in strongly typed languages having had a lifetime using Algol, Coral66, Algol68, Pascal, Java at al; as well as more obscure offerings such as OmniMark, ELLA, Abel, TeX. I have programmed in Perl for many years and so PHP was not a wholly new experience. I am sure that I have used 10 lines in places where PHP5 would let me use one; never mind — it suffices, the future will refine the code. </t:p>
</t:group>
</page:content>
</page:page>