A question about catalogs with oXygen --

Having trouble installing Oxygen? Got a bug to report? Post it all here.
scaife
Posts: 1
Joined: Sat Sep 13, 2003 12:45 am

A question about catalogs with oXygen --

Post by scaife »

I have the impression that if you type (paste) into a document a public identifier that is in your catalog, oXygen will validate correctly, but NOT support nice interface features like pop-up menus to wrap an element tag around the current selection. :-(

By contrast, if you make a "New document from DTD" using the menus, everything works will, but you get ugly system identifiers alongside the public identifier that may be awkward to take to other systems. (file:/// URLs, for example.)

Do yo know of any workaround to this tiny (but for my work habits irritating) setup?
Dan
Posts: 501
Joined: Mon Feb 03, 2003 10:56 am

Post by Dan »

Hello,

Please post here the document (in fact the header of the document) that makes use of the catalog manager. What systemID do you specify? You can map a systemID pointing to a document located on the web (ex. TEI or Docbook) to a local systemID, using the catalog. In this way you wont get the file// urls but instead some http// urls. I will let you know the best solution as soon as I see the document.

Many regards,
Dan
rfolwell
Posts: 8
Joined: Wed Aug 27, 2003 3:50 pm

"White spaces are required between publicId and systemI

Post by rfolwell »

I think that I have a similar problem. If I use a SYSTEM identifier for the DTD then everything works fine, but if I try to use a catalog entry then the document fails to validate, with the message in the subject.

My catalog entries, using Options/Preferences/XML Catalog are:

file:/home/richard/oxygen/docbook/catalog.xml
file:/home/richard/oxygen/docbook/dtd/catalog.xml

and the beginning of the document looks like this:

<?xml version="1.0" encoding="UTF-8"?>
<!-- <!DOCTYPE article SYSTEM "file:///home/richard/oxygen/docbook/dtd/docbookx.dtd"> -->
<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN">
<article>

(with the SYSTEM entry un-commented, and the PUBLIC entry commented out it works, but not vice-versa).

I have also set this environment variable:

export SGML_CATALOG_FILES=/home/richard/oxygen/docbook/dtd/docbook.cat

Prior to setting this, I got this message on the command line when OxygenXML started up:

null: catalogs not found.

I suspect that using catalogs is the right way to go, but that I have not yet got them quite right. (In practice I would like to be able to work on the same file at my client's premises, using Windows, and in my own office, using Linux. With the SYSTEM identifier this does not seem to be possible, so I think that I have to get the catalog sorted so that I can use the PUBLIC identifier).

BTW, considering the significance of the error message above, something more explanatory would have been helpful.

Any help gratefully received.

Richard
george
Site Admin
Posts: 2095
Joined: Thu Jan 09, 2003 2:58 pm

Post by george »

Hi Richard,

You get a validation error because according with the XML specification you should specify also a system identifier:
http://www.w3.org/TR/REC-xml#sec-external-ent
[75] ExternalID ::= 'SYSTEM' S SystemLiteral
| 'PUBLIC' S PubidLiteral S SystemLiteral
If you will write your article as:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
<article>
<title>Article Title</title>
<sect1>
<title>Section1 Title</title>
<para>Text</para>
</sect1>
</article>
there should be no problems. The above is obtained using the New from templates action and selecting Docbook 4.2 Article (DTD on the Web).

Best Regards,
George
rfolwell
Posts: 8
Joined: Wed Aug 27, 2003 3:50 pm

Post by rfolwell »

Thanks George, that gets me going again.

I had found references saying that XML DocBook required a system identifier, but not that you can combine both the public and system identifiers in the same statement. Neither had I thought about looking at the content of the supplied templates. :-(

Taking this further (and I had hoped to test this out today, but ran out of time), what is the method for handling files that will be updated on systems that both have, and do not have, Internet access? What I was trying to do before was have a common catalog entry, whose target might well be completely different for each system, to resolve the differences between where different systems make their DocBook DTD available -in some cases possibly online resources (as with your example) in other cases local files.

How can I do this? How can I resolve the need for a system identifier with my wish for a DTD identifier that does not rely on the configuration of a particular machine?

Any suggestions gratefully received.

Richard
george
Site Admin
Posts: 2095
Joined: Thu Jan 09, 2003 2:58 pm

Post by george »

Dear Richard,

The catalog maps public identifiers or remote system identifiers to local files. In general the local files are specified relative to the catalog file location thus you can put the catalog and DTDs anyware on your disk and just add the catalog file in the oXygen catalog list.
In your documents you should specify the DOCTYPE declaration as in the example I posted because this allows your file to be portable, that is even if there is no catalog specified the DTD will be accessed from its original location. If a catalog mapping any of the public or system IDs to a local file is specified the local copy will be used instead of accessing the original resource on the web.

Hope that helps,
George
rfolwell
Posts: 8
Joined: Wed Aug 27, 2003 3:50 pm

Seems I was chasing a non-problem

Post by rfolwell »

I just ran the following test:

- installed OxygenXML on a laptop that has an Internet connection
- created a new document, using the template as you suggest
- configure XSL transform to produce HTML
- transform is successfull, network adaptor shows activity during this process, suggesting that the DTD at http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd was being used
- disconnect network connection, repeat
- transform fails, with reported network timeout
- add catalog.xml provided with the OxygenXML installation to the list of catalogs, through Options/Preferences/XML Catalog
- transform fails, because I ignored the clearly displayed warning to re-start the application after making changes to the catalog configuration :?
- re-start OxygenXML
- transform is successful, with network still disconnected

Thanks a lot for your help George, your responses really helped to clarify things for me.

Richard
Post Reply