[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]
Subject: RE: [dita] some index-range-* issues
Chris,
Can you answer the questions I raised in my email
(under "Issues") that is at the bottom of this message?
Some more comments below.
> -----Original Message-----
> From: Chris Wong [mailto:cwong@idiominc.com]
> Sent: Wednesday, 2006 August 09 08:41
> To: Yas Etessam; dita@lists.oasis-open.org
> Subject: RE: [dita] some index-range-* issues
>
> Yas, you are on record as favoring the attribute proposal for
> implementation purposes. I'm wondering why the existing
> proposal is hard
> to implement. They are all XML, after all, so internally you
> would just
> reduce them to some ID.
>
> <indexterm>foo<indexterm>bar<index-range-start/></indexterm></
> indexterm>
>
>
> And
>
> <index-range-start
> subject="foo:bar">foo<indexterm>bar</indexterm></index-range-start>
>
> Both reduce to (inventing my own pseudo-code):
>
> index-range-start(foo:bar)
But the spec currently just talks about "paired" starts and
ends and does not define this. You seem to be imagining a
fairly complex algorithm for how to define "matching pairs"
without specifying it.
Which of the following pairs match and how do we explain
matching to both users and implementors:
<!-- 1 -->
<indexterm>foo
<indexterm>bar<index-range-start/>
<indexterm>baz
</indexterm>
</indexterm>
</indexterm>
<indexterm>foo
<indexterm>bar<index-range-end/>
<indexterm>baz
</indexterm>
</indexterm>
</indexterm>
<!-- 2 -->
<indexterm>foo
<indexterm>bar<index-range-start/>
<indexterm>baz
</indexterm>
</indexterm>
</indexterm>
<indexterm>foo<index-range-end/>
<indexterm>bar
<indexterm>baz
</indexterm>
</indexterm>
</indexterm>
<!-- 3 -->
<indexterm>foo
<indexterm>bar<index-range-start/>
<indexterm>baz
</indexterm>
</indexterm>
</indexterm>
<indexterm>foo
<indexterm>bar<index-range-end/>
<indexterm>baz</indexterm>
</indexterm>
</indexterm>
<!-- 4 Note ö is a numeric reference for the o-umlaut character -->
<indexterm>foö
<indexterm>bar<index-range-start/>
<indexterm>baz
</indexterm>
</indexterm>
</indexterm>
<indexterm>foö
<indexterm>bar<index-range-end/>
<indexterm>baz</indexterm>
</indexterm>
</indexterm>
<!-- 5 -->
<indexterm>foo
<indexterm>bar<index-range-start/>
<indexterm>baz
</indexterm>
</indexterm>
</indexterm>
<indexterm>foo
<indexterm>bar <index-range-end/>
<indexterm>baz</indexterm>
</indexterm>
</indexterm>
<!-- 6 -->
<indexterm>foo
<indexterm>bar<index-range-start/>
<indexterm>baz
</indexterm>
</indexterm>
</indexterm>
<indexterm>foo
<!-- some comment -->
<indexterm>bar<index-range-end/>
<indexterm>baz
</indexterm>
</indexterm>
</indexterm>
<!-- 7 -->
<indexterm>foo
<indexterm>bar<index-range-start/>
<indexterm>baz
</indexterm>
</indexterm>
</indexterm>
<indexterm>foo
<? some PI ?>
<indexterm>bar<index-range-end/>
<indexterm>baz
</indexterm>
</indexterm>
</indexterm>
<!-- 8 -->
<indexterm>foo
<indexterm>bar<index-range-start/>
<indexterm>baz
</indexterm>
</indexterm>
</indexterm>
<indexterm>foo
<indexterm>bar<index-range-end/>
<indexterm>BAZ<index-sort-as>baz</index-sort-as>
</indexterm>
</indexterm>
</indexterm>
<!-- 9 -->
<indexterm>foo
<indexterm>bar<index-range-start/>
<indexterm>baz
</indexterm>
</indexterm>
</indexterm>
<indexterm>foo
<indexterm>bar<index-range-end/>
<indexterm>baz<index-see>qrst</index-see>
</indexterm>
</indexterm>
</indexterm>
>
> The test would be to make sure index-range-end(foo:bar) also
> exists. Why
> is one syntax harder than the other? The FO plugin for the DITA Open
> Toolkit already detects mismatched index page ranges today.
>
> The other issue that both you and Paul G are eminently qualified to
> address is the usability issue. The proposed change to index ranges is
> essentially a switch from element/content-based authoring to an
> element/@attribute approach. You essentially require that the author
> come up with an ID to assign to an attribute. Existing XML authoring
> tools simply don't make attribute editing/viewing easy.
> Everything I've
> heard about user friendly XML authoring says to avoid authoring
> attributes (which are usually invisible), let alone coming up with IDs
> for those invisible attributes, let alone authoring matching pairs of
> those invented IDs for those invisible attributes. Won't this approach
> be unacceptably unfriendly to your users?
I've never considered attributes unfriendly. They are
a basic part of XML.
If the decision is between having to reproduce a potentially
nested, mixed content indexterm construct possibly containing
other markup in such a fashion that it is identical in two
places except for "index-range-start" changed to "index-range-end"
(and stays identical during translation) versus authoring a NMTOKEN
attribute, I'd think the attribute is much more user friendly.
paul
>
> Chris
>
> Grosso, Paul wrote:
>
>
>
> I'm resending this email to the list since it never made it.
> I have deleted some parts that are no longer at issue.
> I hope to follow up with another email with another proposal.
>
> Issues
> ======
>
> The currently proposed index-range-* elements are just
> empty "flags" that get put inside an indexterm element.
> But it is not necessarily clear what this means in the
> case of nested indexterms.
>
> For example, per my best understanding, one way to indicate
> a page range for my "pecorino" example would be markup such
> as the following (where the comments just indicate what pages
> each indexterm falls on):
>
> . . .
> <!-- page 22 -->
> <indexterm>cheese
> <indexterm>sheeps milk cheeses
> <indexterm>pecorino<index-range-start/></indexterm>
> </indexterm>
> </indexterm>
> . . .
> <!-- page 24 -->
> <indexterm>cheese
> <indexterm>sheeps milk cheeses
> <indexterm>pecorino<index-range-end/></indexterm>
> </indexterm>
> </indexterm>
> . . .
>
> But what if the <index-range-start/> is placed elsewhere
> in the first indexterm, such as:
>
> <!-- page 22 -->
> <indexterm>cheese<index-range-start/>
> <indexterm>sheeps milk cheeses
> <indexterm>pecorino</indexterm>
> </indexterm>
> </indexterm>
>
> Is that equivalent, does it mean something else, or is it
> an error? (My best guess is that it should be equivalent.)
>
> What about the following:
>
> <indexterm>cheese<index-range-start/></indexterm>
> . . .
> <indexterm>cheese<index-range-end/>
> <indexterm>sheeps milk cheeses
> </indexterm>
> </indexterm>
>
> Since the first is an index reference for "cheese" and
> the second is one for "cheese;sheeps milk cheeses", my
> best guess is these two do not constitute a matched pair.
>
> What about the following:
>
> <indexterm>cheese<index-range-start/>
> <indexterm>sheeps milk cheeses<index-range-end/>
> </indexterm>
> </indexterm>
> . . .
> <indexterm>cheese<index-range-end/>
> <indexterm>sheeps milk cheeses
> </indexterm>
> </indexterm>
>
> Is the first indexterm a range start or range end
> (or just an error)? If it is a range start, does
> it end immediately, or is its range-end ignored,
> and the range is ended by the subsequent indexterm?
>
> None of this is made clear in the current writeup.
>
> Also, I think this is very confusing and error-prone
> for users.
>
> Potential solution
> ==================
>
> Rather than having empty index-range-* elements that
> magically redefine their parent to have different
> semantics, I think it would be preferable to have a
> specialization of indexterm (or just another element)
> that can be used to indicate the start of a range--so
> we would write something like:
>
> <index-range-start>cheese
> <indexterm>sheeps milk cheeses
> <indexterm>pecorino</indexterm>
> </indexterm>
> </index-range-start>
>
> to start the "cheese--sheeps milk cheeses--pecorino" range.
>
> While in theory we could then have an analagous
> index-range-end element with the identical nested
> indexterm content, I think that is another mistake
> in the current proposal. The idea of creating
> matching pairs by having to have identical content
> has already been pointed out as a translation
> nightmare, but when you start to consider nested
> indexterms, it's an even worse error-prone mess,
> both for the user and the implementors.
>
> Instead, I would add an NMTOKEN attribute to both
> index-range-start and index-range-end, and have
> index-range-end be an empty element that just
> refers back to the start:
>
> <index-range-start subject="pecorino">cheese
> <indexterm>sheeps milk cheeses
> <indexterm>pecorino</indexterm>
> </indexterm>
> </index-range-start>
> . . .
> <index-range-end subject="pecorino"/>
>
> The "subject" attribute would act like a sort of
> id/idref, but I've avoided really using IDs, because
> then if you have two ranges that discuss "pecorino",
> you couldn't reuse the id="pecorino".
>
> paul
>
>
[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]