OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

 


Help: OASIS Mailing Lists Help | MarkMail Help

docbook-apps message

[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]


Subject: Re: [docbook-apps] Website: Problem using olinks across websites


Following Bob's lead, I've tried to generate a website.database.xml that 
does not contain the offending document elements  - with no luck.

To simplify things, I built the example website that comes with the 
website 2.6 distribution, using the layout and build.xml ant file 
provided. Other than pointing at local resources, I only modified it by 
adding the last argument to this target:

==============================================
<target name="doWebsite">
     <java classname="${xslt.processor.class}"
           fork="yes"
           dir="${in.dir}"
           failonerror="true">
       <classpath refid="xslt.processor.classpath" />
       <arg line="-o ${out.dir}/${website.outfile}"/>
       <arg line="-x org.apache.xml.resolver.tools.ResolvingXMLReader"/>
       <arg line="-y org.apache.xml.resolver.tools.ResolvingXMLReader"/>
       <arg line="-r org.apache.xml.resolver.tools.CatalogResolver"/>
       <arg line="${in.dir}/${autolayout.outfile}"/>
       <arg line="${website.stylesheet}"/>  <!-- tried both 
chunk-tabular and chunk-website)
       <arg line="${param.args.post}"/>
       <arg line="collect.xref.targets='yes'" />
     </java>
  </target>
==============================================

This generates the website.database.xml file, but the file contains 
document elements for each webpage, like this:

==============================================
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<targetset>
    <document targetdoc="home" baseuri="index.html" dir="out/">
       <div element="webpage" href="#home" number="" targetptr="home">
       ...
    </document>

   <document targetdoc="layout" baseuri="layout.html" dir="out/">
     ...
   </document>
</targetset>
==============================================

This structure obviously can't be included in a site map, as Bob points 
out. I'm not sure (not having seen a correct example yet!) but I imagine 
it should look more like the standard DocBook olink database, where a 
book and its chapters are represented by nested divs, not document 
elements.

I suppose I could postprocess the website.database.xml files to get what 
I want, but that would be cheating.

P.S. Just in case Silkpage could give me a clue, I installed it and 
generated a website.database.xml there. Learned nothing new: the file 
has the same structure.

Denis Bradford wrote:
> Sorry, I should have indicated that the first bit was a fragment - I do 
> have a sitemap element.
> 
> I'm confused about your second point: I understand that nested document 
> elements are a problem. But my generated website.database.xml file 
> always has a document element. In fact, it has one for each webpage in 
> my layout. Sounds like I'm really missing a point here here.
> 
> I'll go back to the sample
> 
> 
> 
> Bob Stayton wrote:
>> Hi Denis,
>> A couple of items may fix this:
>>
>>> <targetset>
>>>   <dir name="build">
>>>     <document  targetdoc="homeSite">
>>>       <xi:include href="website.database.xml" />
>>>     </document>
>>>     <dir name="schedule">
>>>       <document  targetdoc="scheduleSite">
>>>         <xi:include href="schedule/website.database.xml" />
>>>       </document>
>>>     </dir>
>>
>> It seems you are missing a sitemap element in your olinkdatabase.
>>
>>> 3. Finally, the olinks themselves. I've tried a couple of forms. For 
>>> example, here's an olink to a homeSite page from within a 
>>> scheduleSite page:
>>>
>>>  <olink targetdoc="about" targetptr="about"/>
>>>  <olink targetdoc="homeSite" targetptr="about"/>
>>>
>>> The first is the recommended form where 'about' is the id of the 
>>> webpage. It does not resolve at all. The second is the conventional 
>>> (non-website) form, but seems doomed because there is no book or any 
>>> document with the id "homeSite". Encouragingly, it finds the title - 
>>> but alas, the wrong url:
>>>
>>>   <a href="../#about" class="olink">About this site</a>
>>
>> The first is recommended when referencing a page within a single 
>> website. The second is for referencing outside of website to another 
>> document (in this case, another website).  The targetdoc values are an 
>> olink feature that exists outside of any document id attributes.  All 
>> that needs to match is a targetdoc value in an olink to a targetdoc 
>> value in a <document> element in a database.
>>
>> The second example is correct and does find the data, as you noticed, 
>> but gives the wrong URI.  I think adding the sitemap should fix the 
>> path problem.
>>
>> One thing I'm not clear about is your website.database.xml file.  It 
>> seems to have a document element with targetdoc attribute.  But then 
>> you put that inside another document element with different targetdoc 
>> in olinkdatabase. The document element should not be nested.  Normally 
>> the target data for a document generated by the stylesheet does not 
>> have a document element.
>>
>> Bob Stayton
>> Sagehill Enterprises
>> bobs@sagehill.net
>>
>>
>> ----- Original Message ----- From: "Denis Bradford" 
>> <denis.bradford@verizon.net>
>> To: <docbook-apps@lists.oasis-open.org>
>> Sent: Monday, March 31, 2008 8:29 PM
>> Subject: [docbook-apps] Website: Problem using olinks across websites
>>
>>
>>> I maintain a web site as a collection of DocBook websites, each with 
>>> its own layout and its own TOC. I want to replace the old ulinks with 
>>> olinks. The olinks are working fine within each website, but olinks 
>>> across websites fail to resolve. Here's how TDG says to do it:
>>>
>>> "Once you have the targets database, you can pass its pathname to the 
>>> XSLT processor using the target.database.document stylesheet 
>>> parameter. This database is in addition to (and separate from) the 
>>> olink database that resolves olinks between webpages in your website. 
>>> The database of internal olinks is identified with the 
>>> website.database.document parameter. When the processor encounters an 
>>> olink, it first checks the website database before consulting the 
>>> offsite database."
>>>
>>> All right, here's how I've been trying to implement it:
>>>
>>> 1. In my ant script, after building the layouts, I transform each 
>>> website in turn. In addition to setting collect.xref.targets='yes' 
>>> and declaring the current docid, I specify both the website.database 
>>> and target.database documents, like this:
>>>
>>>  <target name="doWebsite.home">
>>>     <java ...
>>>       <arg line="collect.xref.targets='yes'" />
>>>       <arg line="current.docid='homeSite'" />
>>>       <arg line="target.database.document='olinksitemap'"/>
>>>       <arg line="website.database.document='website.database.xml'" />
>>>     </java>
>>>  </target>
>>>
>>> It seems the
>>>
>>> 2. Meanwhile, I've created olinksitemap by hand. It includes the 
>>> website.database.document for each website, like this:
>>>
>>> <targetset>
>>>   <dir name="build">
>>>     <document  targetdoc="homeSite">
>>>       <xi:include href="website.database.xml" />
>>>     </document>
>>>     <dir name="schedule">
>>>       <document  targetdoc="scheduleSite">
>>>         <xi:include href="schedule/website.database.xml" />
>>>       </document>
>>>     </dir>
>>>       ...
>>> </targetset>
>>>
>>> 3. Finally, the olinks themselves. I've tried a couple of forms. For 
>>> example, here's an olink to a homeSite page from within a 
>>> scheduleSite page:
>>>
>>>  <olink targetdoc="about" targetptr="about"/>
>>>  <olink targetdoc="homeSite" targetptr="about"/>
>>>
>>> The first is the recommended form where 'about' is the id of the 
>>> webpage. It does not resolve at all. The second is the conventional 
>>> (non-website) form, but seems doomed because there is no book or any 
>>> document with the id "homeSite". Encouragingly, it finds the title - 
>>> but alas, the wrong url:
>>>
>>>   <a href="../#about" class="olink">About this site</a>
>>>
>>> fwiw, here's the corresponding code in the website database:
>>>
>>>    <document targetdoc="about" baseuri="about.html">
>>>       <div element="webpage" href="#about" number="" 
>>> targetptr="about" lang="en">
>>>          <ttl>About this site</ttl>
>>>
>>>
>>> Am I anywhere near the right track, or completely off? Any working 
>>> examples of cross-website olinks?
>>>
>>> TIA,
>>> Denis

>>
> 
> 



[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]