RE: RE: [xsl] Finding and processing index terms

Subject: RE: RE: [xsl] Finding and processing index terms
From: Dan Vint <dvint@xxxxxxxxx>
Date: Wed, 15 Feb 2006 12:10:25 -0800
Just to complete the fix and issue description, I was using the saxon:group statement to group the indexterns, then within that group, I then needed to group the secondary terms and within there group the tertiary terms. I didn't carry my XPath predicates down to each of these sub-groupings. I was assuming I was working on the nodeset from the higher level groups selection, but I wasn't. Without the predicate ([]) at each of the levels it was going out and finding a new set to process without my restriction.

I kept looking at the top level XPath and testing its results, they came back as expected but when I got the final document I was getting extra values.

Everything is now working with the modified XPath and putting the restriction on each level of sub-grouping.

Thanks for the suggestions and listening to my troubles.

..dan


At 09:21 AM 2/15/2006, Dan Vint wrote:
At 07:46 AM 2/15/2006, cknell@xxxxxxxxxx wrote:
My intention was not to stop anyone from replying, but to have you clarify your requirement.

My requirement is to find the indexterms that do not have ancestor elements of div* or table that that have a publicOnly setting of Yes. I think you missed the statement at the top that indicates my DTD provides a default value of No for the attribute publicOnly.


So here is a very simplified view of the content:

<doc>
       <div1>   <!-- publicOnly=No is the default -->
            <div2>   <!-- publicOnly= No is defaulted -->
                       <indexterm> <!-- I want to find this one -->
                <indexterm> <!-- I want to find this one -->

<table> <!-- publicOnly=No is the default -->
<tr><td>
<indexterm> <!-- I want to find this one -->


<table publicOnly='Yes'>
<tr><td>
<indexterm> <!-- I DON'T want to find this one -->
This XPath returns all 4 hits:


//indexterm[ancestor::*[(starts-with(local-name(),'div') or local-name()='table') and @publicOnly!='Yes']]

I was trying to find other variations of this XPath to see if I could get the results I wanted, they didn't solve the problem. So I'm looking for the correct XPath to find what I have marked above.

In reworking the example to add the defaults, it appears that this one actually solves the problem:

//indexterm[ancestor::*[(starts-with(local-name(),'div') or local-name()='table')][1][ @publicOnly!='Yes']]

In testing in the full document, it appeared as if the Default values were not being read from the DTD I had. I had left a previous test of setting publicOnly=yes on the div2 tag and was not getting the results I was expecting. In looking at the file this morning, I removed that and I'm getting whatI expect.

Sometimes the best debugger is trying to explain the problem to someone else ;-)


Let's parse your XPath expressions, I'll give my understanding of them.:


These were variations on the one in the template that I had, I explained what they found.

Anyway here is a new sample that provides the "defaulted values". In case anyone wants to play with this further.

<doc>
<div1><head>Chapter 1</head>
<div2 membersOnly="Yes" statusCR="Yes" publicOnly='No'>
<indexterm
primaryDesc="Yes"><primary>AboveGroundIndicator
type</primary><secondary>definition MEMBERS
INDEX</secondary>
</indexterm>
<indexterm><primary>base
types</primary><secondary>AboveGroundIndicator type MEMBERS
INDEX</secondary>
</indexterm>
<head id="bAboveGroundIndicator">
<baseclass>AboveGroundIndicator</baseclass>
 </head>
<p>Full name: Above Ground Indicator</p>
<p class="CR">CR STATUS INFORMATION</p>
<div-sub membersOnly="Yes" statusCR="Yes">
<head>  Description</head>
<p>Indicates
whether
the item is above ground.</p>
</div-sub>
<table border="1" id="oTable" membersOnly="Yes" statusCR="Yes"
width="935"  publicOnly='No'>
<thead>
<tr valign="top">
<th colspan="15" >  Tag/Type
</th>
<th >Usage      </th>
<th >   Description
</th>
</tr>
</thead>
<tbody>
<tr membersOnly="Yes" statusCR="Yes" valign="top">
<td class="nest1">
<p>&#xa0;</p>
</td>
<td class="nest1" colspan="16">
<p> <baseclass
ref="bAboveGroundIndicator">AboveGroundIndicator</baseclass>

<indexterm><primary>AboveGroundIndicator type</primary><secondary>use of
MEMBERS INDEX</secondary>
</indexterm>

(CR STATUS) <baseclass></baseclass>,
Usage: Required
                        </p>
</td>
</tr>
<tr membersOnly="Yes" statusCR="Yes" valign="top">
<td class="nest1">
<p>&#xa0;</p>
</td>
<td class="nest1" colspan="16">
<p>End of Type:
<baseclass ref="bAboveGroundIndicator">AboveGroundIndicator</baseclass>
 </p>
</td>
</tr>
</tbody>
</table>


<table border="1" id="oTable" publicOnly="Yes" statusCR="Yes" membersOnly="No" width="935"> <thead> <tr valign="top"> <th colspan="15" onclick="sorter(3,1)" style="cursor:hand;"> Tag/Type <p HelpOnly="Yes">Select to Sort</p> </th> <th onclick="sorter(2,1)" style="cursor:hand;">Usage <p HelpOnly="Yes">Select to Sort</p> </th> <th onclick="sorter(1,1)" style="cursor:hand;"> Description <p HelpOnly="Yes">Select to Sort</p> </th> </tr> </thead> <tbody> <tr membersOnly="Yes" statusCR="Yes" valign="top"> <td class="nest1"> <p>&#xa0;</p> </td> <td class="nest1" colspan="16"> <p> <baseclass ref="bAboveGroundIndicator">AboveGroundIndicator</baseclass>

<indexterm><primary>AboveGroundIndicator type</primary><secondary>use of
PUBLIC INDEX</secondary>
</indexterm>

 (CR STATUS)                    Usage: Required
</p>
</td>
</tr>
<tr membersOnly="Yes" statusCR="Yes" valign="top">
<td class="nest1">
<p>&#xa0;</p>
</td>
<td class="nest1" colspan="16">
<p>End of Type:
<baseclass ref="bAboveGroundIndicator">AboveGroundIndicator</baseclass>
 </p>
</td>
</tr>
</tbody>
</table>
</div2>
</div1>
</doc>
---------------------------------------------------------------------------
Danny Vint

Specializing in Panoramic Images of California and the West
http://www.dvint.com

voice: 510-522-4703

When H.H. Bennett was asked why he preferred to be out
shooting landscapes rather than spending time in his portrait studio:

"It is easier to pose nature and less trouble to please."

http://www.portalwisconsin.org/bennett_feature.cfm


--------------------------------------------------------------------------- Danny Vint

Specializing in Panoramic Images of California and the West
http://www.dvint.com

voice: 510-522-4703

When H.H. Bennett was asked why he preferred to be out
shooting landscapes rather than spending time in his portrait studio:

"It is easier to pose nature and less trouble to please."

http://www.portalwisconsin.org/bennett_feature.cfm

Current Thread