Function Sets for the Z39.86-2010 Part A Content Selection Feature

Table of Contents

The Target Function Set

The Target Function Set is used to select content based on intended properties of the output.

The canonical URI of this function set is http://www.daisy.org/z3986/2010/auth/features/select/functionSets/#target.

There are two functions in this set, the format(arg) function and the consumer(arg) function:

The format function

The format(arg) function describes the intended physical format of the output. The function takes one argument, arg, which must match:

          arg := 'BRAILLE' | 'LARGE_PRINT' | 'TALKING_BOOK' | 'EBOOK' | 'PRINT' | string
          string := [A-Za-z0-9_]*
      

An explanation of the allowed values follows:

BRAILLE
Specifies that the output format is Braille. This function does not include the ability to specify different varieties (contracted, non-contracted, etc) varieties of Braille.
LARGE_PRINT
TODO
TALKING_BOOK
TODO
EBOOK
TODO
PRINT
Specifies that the output format is regular sized print (compare LARGE_PRINT). This value is typically used when producing content types such as PDF and XPS.

It is recommended to use arguments from the set of predefined values, but the possibility to use any string as an argument allows for more specialized implementations of this function.

Example:

<sel:select xmlns:sel="http://www.daisy.org/z3986/2010/auth/features/select/#">
  <sel:when expr="target:format('BRAILLE')">
    <annotation for="table01" property="republisherAnno"> The table on this page, not represented
      as a table in the braille version, presents information about ..... </annotation>
  </sel:when>
  <sel:when expr="target:format('TALKING_BOOK')">
    <annotation for="table01" property="republisherAnno"> The information presented in the table
      on this page, is in this talking book, presented in the following list of the number of
      persons developing the Basivar-Sumeko Syndrom per year </annotation>
    <ul>
      <li>1950: 23</li>
      <li>2010: 80 (estimated)</li>
    </ul>
  </sel:when>
  <sel:otherwise>
    <table xml:id="table01">
      <caption>Number of persons developing the Basivar-Sumeko Syndrom per year</caption>
      <tr>
        <th>Year</th>
        <th>Number of persons</th>
      </tr>
      <tr>
        <td>1950</td>
        <td>23</td>
      </tr>
      <tr>
        <td>2010</td>
        <td>80 (estimated)</td>
      </tr>
    </table>
  </sel:otherwise>
</sel:select>

The consumer function

The consumer(arg) function describes the intended consumer group of the output. The function takes one argument, arg, which must match:

          arg := 'BLIND' | 'LOW_VISION' | 'DYSLECTIC' | 'DEAF' | 'DEAFBLIND' | 'COGNITIVE' | string
          string := [A-Za-z0-9_]*
      

It is recommended to use arguments from the set of predefined values, but the possibility to use any string as an argument, allows for more specialized implementations of this function.

Example:

<sel:select xmlns:sel="http://www.daisy.org/z3986/2010/auth/features/select/#">
      <sel:when expr="target:consumer('BLIND') or target:consumer('DEAFBLIND')">
            <annotation for="img02" property="republisherAnno">A photo of the Old Town Hall in Leipzig, Germany.</annotation>
      </sel:when>
      <sel:when expr="target:language('en')">
            
      </sel:when>
      <sel:otherwise />
</sel:select>

The language function

The language(arg) function describes the language of the output. The function takes one argument, language, which must match the language datatype as defined in XML Schema Part 2: Datatypes Second Edition.

All descendants of a when element which is using the language(arg) function inherit the language given in the when parent, unless a descendant explicitly overrides this inheritance using the xml:lang attribute. In other words, the language(arg) function has the same semantics as xml:lang in terms of the language inheritance.

Example:

<sel:select xmlns:sel="http://www.daisy.org/z3986/2010/auth/features/select/#">
      <sel:when expr="target:language('es')">
            <p>Considerando también esencial promover el desarrollo 
                  de relaciones amistosas entre las naciones;</p>
      </sel:when>
      <sel:when expr="target:language('en')">
            <p>Whereas it is essential to promote the development 
                  of friendly relations between nations,</p>
      </sel:when>
      <sel:otherwise />
</sel:select>

The Parameter Test Function Set

The Parameter Test Function Set is used to test whether a string, the value argument, is equal to the value of the runtime name parameter.

The canonical URI of this function set is http://www.daisy.org/z3986/2010/auth/features/select/functionSets/#parameterTest.

This function set contains one function, the parameterTest(name, value) function. It takes two arguments, both strings:

Example:

<sel:select xmlns:sel="http://www.daisy.org/z3986/2010/auth/features/select/#">
      <sel:when expr="ptfs:parameterTest('publisher','nlb')">
            <p>Copyright &#169; 2009 Norsk lyd- og blindeskriftbibliotek</p>
      </sel:when>
      <sel:when expr="ptfs:parameterTest('publisher','hks')">
            <p>Copyright &#169; 2009 Huseby kompetansesenter</p>
      </sel:when>
      <sel:otherwise>
            <p>Copyright &#169; 2009</p>
      </sel:otherwise>
</sel:select>

The Feature Supported Function Set

The Feature Supported Function Set is used to test whether a specific ANSI/NISO Z39.86-2010 Feature is supported by the Processing Agent.

There is one function in this set, the featureSupported(uri) function. It takes one argument, uri, which is a string equal to the canonical URI of a ANSI/NISO Z39.86-2010 Feature.

The canonical URI of this function set is http://www.daisy.org/z3986/2010/auth/features/select/functionSets/#featureSupported.

Example:

<sel:select xmlns:sel="http://www.daisy.org/z3986/2010/auth/features/select/#">
    <sel:when
        expr="fsfs:featureSupported('http://www.daisy.org/z3986/2010/auth/features/mathml/0.2/')">        
        <math xmlns="http://www.w3.org/1998/Math/MathML">
            <mrow>
                <mi>a</mi>
                <mo>&InvisibleTimes;</mo>
                <msup>
                    <mi>x</mi>
                    <mn>2</mn>
                </msup>
                <mo>+</mo>
                <mi>b</mi>
                <mo>&InvisibleTimes;</mo>
                <mi>x</mi>
                <mo>+</mo>
                <mi>c</mi>
            </mrow>
        </math>
    </sel:when>
    <sel:when
        expr="fsfs:featureSupported('http://www.daisy.org/z3986/2010/auth/features/ssml/0.2/') and not(fsfs:featureSupported('http://www.daisy.org/z3986/2010/auth/features/mathml/0.2/'))">
        <p>The mathematical expression <ssml:phoneme ph="[eih]" alphabet="ipa">a</ssml:phoneme> times x squared plus b times x plus c</p>
    </sel:when>
    <sel:otherwise>
        <p>The mathematical expression ax²+bx+c</p>
    </sel:otherwise>
</sel:select>

Note that since Feature URIs are versioned, this function can be used to test support for different versions of the same Feature.

TODO featureSupportedFunctionSet: allow unversioned feature identifiers as params?